Re: ON CONFLICT DO UPDATE for partitioned tables
Pavan Deolasee <pavan.deolasee@gmail.com>
From: Pavan Deolasee <pavan.deolasee@gmail.com>
To: Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>,
Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2018-03-16T11:59:36Z
Lists: pgsql-hackers
On Fri, Mar 16, 2018 at 5:13 PM, Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp> wrote: > (2018/03/16 19:43), Pavan Deolasee wrote: > >> On Fri, Mar 2, 2018 at 9:06 PM, Alvaro Herrera <alvherre@2ndquadrant.com >> <mailto:alvherre@2ndquadrant.com>> wrote: >> > > @@ -106,6 +120,9 @@ typedef struct PartitionTupleRouting >> int num_subplan_partition_offsets; >> TupleTableSlot *partition_tuple_slot; >> TupleTableSlot *root_tuple_slot; >> + List **partition_arbiter_indexes; >> + TupleTableSlot **partition_conflproj_slots; >> + TupleTableSlot **partition_existing_slots; >> } PartitionTupleRouting; >> > > I am curious why you decided to add these members to >> PartitionTupleRouting structure. Wouldn't ResultRelationInfo be a better >> place to track these or is there some rule that we follow? >> > > I just started reviewing the patch, so maybe I'm missing something, but I > think it would be a good idea to have these in that structure, not in > ResultRelInfo, because these would be required only for partitions chosen > via tuple routing. > Hmm, yeah, probably you're right. The reason I got confused is because the patch uses ri_onConflictSetProj/ri_onConflictSetWhere to store the converted projection info/where clause for a given partition in its ResultRelationInfo. So I was wondering if we can move mt_arbiterindexes, mt_existing and mt_conflproj to ResultRelInfo and then just use that per-partition structures too. Thanks, Pavan -- Pavan Deolasee http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Commits
-
Remove quick path in ExecInitPartitionInfo for equal tupdescs
- 79b2e52615fa 11.0 landed
-
Ignore whole-rows in INSERT/CONFLICT with partitioned tables
- 158b7bc6d779 11.0 landed
-
Handle INSERT .. ON CONFLICT with partitioned tables
- 555ee77a9668 11.0 landed
-
Remove unnecessary members from ModifyTableState and ExecInsert
- ee0a1fc84eb2 11.0 landed