Re: [HACKERS] Partition-wise join for join between (declaratively)partitioned tables - Mailing list pgsql-hackers

From Ashutosh Bapat
Subject Re: [HACKERS] Partition-wise join for join between (declaratively)partitioned tables
Date
Msg-id CAFjFpRf7COj1buQbn2f=9+0nHaQP3DmMipTK2CXQ6iZOrcdFPQ@mail.gmail.com
Whole thread Raw
In response to Re: [HACKERS] Partition-wise join for join between (declaratively)partitioned tables  (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>)
Responses Re: [HACKERS] Partition-wise join for join between (declaratively)partitioned tables  (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>)
List pgsql-hackers
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.

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

pgsql-hackers by date:

Previous
From: Jeevan Ladhe
Date:
Subject: [HACKERS] Optimise default partition scanning while adding new partition
Next
From: Rajkumar Raghuwanshi
Date:
Subject: Re: [HACKERS] Partition-wise aggregation/grouping