On Tue, Sep 12, 2017 at 2:17 PM, Amit Langote <langote_amit...@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. Thoughts? -- Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers