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

Reply via email to