|From:||Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp>|
|To:||Pg Hackers <pgsql-hackers(at)postgresql(dot)org>|
|Subject:||Re: moving some partitioning code to executor|
|Views:||Raw Message | Whole Thread | Download mbox|
On 2017/09/14 16:13, Amit Langote wrote:
> It seems to me that some of the code in partition.c is better placed
> somewhere under the executor directory. There was even a suggestion
> recently  to introduce a execPartition.c to house some code around
> IMO, catalog/partition.c should present an interface for handling
> operations on a *single* partitioned table and avoid pretending to support
> any operations on the whole partition tree. For example, the
> PartitionDispatch structure embeds some knowledge about the partition tree
> it's part of, which is useful when used for tuple-routing, because of the
> way it works now (lock and form ResultRelInfos of *all* leaf partitions
> before the first input row is processed).
> So, let's move that structure, along with the code that creates and
> manipulates the same, out of partition.c/h and to execPartition.c/h.
> Attached patch attempts to do that.
> While doing the same, I didn't move *all* of get_partition_for_tuple() out
> to execPartition.c, instead modified its signature as shown below:
> -extern int get_partition_for_tuple(PartitionDispatch *pd,
> - TupleTableSlot *slot,
> - EState *estate,
> - PartitionDispatchData **failed_at,
> - TupleTableSlot **failed_slot);
> +extern int get_partition_for_tuple(Relation relation, Datum *values,
> + bool *isnull);
> That way, we keep the core partition bound comparison logic inside
> partition.c and move rest of the stuff to its caller ExecFindPartition(),
> which includes navigating the enveloping PartitionDispatch's.
> PS: 0001 of the attached is the patch from  which is here to be applied
> on HEAD before applying the main patch (0002) itself
Since that 0001 patch was committed , here is the rebased patch. Will
add this to the November commit-fest.
|Next Message||Alvaro Hernandez||2017-09-26 05:42:53||Re: Built-in plugin for logical decoding output|
|Previous Message||Abhinav Singh||2017-09-26 04:11:07||Logical Replication - test_decoding - unchanged-toast-datum|