On Thu, Dec 6, 2018 at 1:27 PM Alvaro Herrera <alvhe...@2ndquadrant.com>
wrote:

> On 2018-Dec-06, Amit Langote wrote:
>
> > The partitionwise join related
> > changes in PG 11 moved the add_child_rel_equivalences call in
> > set_append_rel_size such that child EC members would be added even before
> > checking if the child rel is dummy, but for a reason named in the comment
> > above the call:
> >
> >    ... Even if this child is
> >  * deemed dummy, it may fall on nullable side in a child-join, which
> >  * in turn may participate in a MergeAppend, where we will need the
> >  * EquivalenceClass data structures.
> >
> > However, I think we can skip adding the dummy child EC members here  and
> > instead make it a responsibility of partitionwise join code in joinrels.c
> > to add the needed EC members.  Attached a patch to show what I mean,
> which
> > passes the tests and gives this planning time:
>
> Robert, Ashutosh, any comments on this?  I'm unfamiliar with the
> partitionwise join code.
>

As the comment says it has to do with the equivalence classes being used
during merge append. EC's are used to create pathkeys used for sorting.
Creating a sort node which has column on the nullable side of an OUTER join
will fail if it doesn't find corresponding equivalence class. You may not
notice this if both the partitions being joined are pruned for some reason.
Amit's idea to make partition-wise join code do this may work, but will add
a similar overhead esp. in N-way partition-wise join once those equivalence
classes are added.

--
Best Wishes,
Ashutosh Bapat

Reply via email to