Re: [HACKERS] Partition-wise join for join between (declaratively)partitioned tables
От | Amit Langote |
---|---|
Тема | Re: [HACKERS] Partition-wise join for join between (declaratively)partitioned tables |
Дата | |
Msg-id | 7ebdbe52-1918-49dc-4ca2-5785c4aab26a@lab.ntt.co.jp обсуждение исходный текст |
Ответ на | Re: [HACKERS] Partition-wise join for join between (declaratively)partitioned tables (Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>) |
Список | pgsql-hackers |
On 2017/09/12 18:49, Ashutosh Bapat wrote: > On Tue, Sep 12, 2017 at 2:17 PM, Amit Langote > <Langote_Amit_f8@lab.ntt.co.jp> wrote: >> >> That said, I noticed that we might need to be careful about what the value >> of the root parent's PlanRowMark's allMarkType field gets set to. We need >> to make sure that it reflects markType of all partitions in the tree, >> including those that are not root parent's direct children. Is that true >> with the proposed implementation? > > Yes. We include child's allMarkTypes into parent's allMarkTypes. So, > top parent's PlanRowMarks should have all descendant's allMarkTypes, > which is not happening in the patch right now. There are two ways to > fix that. > > 1. Pass top parent's PlanRowMark all the way down to the leaf > partitions, so that current expand_single_inheritance_child() collects > allMarkTypes of all children correctly. But this way, PlanRowMarks of > intermediate parent does not reflect allMarkTypes of its children, > only top root records that. > 2. Pass immediate parent's PlanRowMark to > expand_single_inheritance_child(), so that it records allMarkTypes of > its children. In expand_partitioned_rtentry() have following sequence > > expand_single_inheritance_child(root, parentrte, parentRTindex, > parentrel, parentrc, childrel, > appinfos, &childrte, &childRTindex, > &childrc); > > /* If this child is itself partitioned, recurse */ > if (childrel->rd_rel->relkind == RELKIND_PARTITIONED_TABLE) > { > expand_partitioned_rtentry(root, childrte, childRTindex, > childrel, childrc, lockmode, appinfos, > partitioned_child_rels); > > /* Include child's rowmark type in parent's allMarkTypes */ > parentrc->allMarkTypes |= childrc->allMarkTypes; > } > so that we push allMarkTypes up the hierarchy. > > I like the second way, since every intermediate parent records > allMarkTypes of its descendants. I like the second way, too. Thanks, Amit -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
В списке pgsql-hackers по дате отправления: