On Wed, 6 Mar 2019 at 04:11, David Rowley <david.row...@2ndquadrant.com>
wrote:

> Hi Jim,
>
> Thanks for replying here.
>
> On Wed, 6 Mar 2019 at 16:37, Jim Finnerty <jfinn...@amazon.com> wrote:
> >
> > Actually, we're working hard to integrate the two approaches.  I haven't
> had
> > time since I returned to review your patch, but I understand that you
> were
> > checking for strict predicates as part of the nullness checking criteria,
> > and we definitely must have that.  Zheng tells me that he has combined
> your
> > patch with ours, but before we put out a new patch, we're trying to
> figure
> > out how to preserve the existing NOT IN execution plan in the case where
> the
> > materialized subplan fits in memory.  This (good) plan is effectively an
> > in-memory hash anti-join.
> >
> > This is tricky to do because the NOT IN Subplan to anti-join
> transformation
> > currently happens early in the planning process, whereas the decision to
> > materialize is made much later, when the best path is being converted
> into a
> > Plan.
>
> I guess you're still going with the OR ... IS NULL in your patch then?
> otherwise, you'd likely find that the transformation (when NULLs are
> not possible) is always a win since it'll allow hash anti-joins. (see
> #2 in the original email on this thread)  FWIW I mentioned in [1] and
> Tom confirmed in [2] that we both think hacking the join condition to
> add an OR .. IS NULL is a bad idea. I guess you're not deterred by
> that?
>

Surely we want both?

1. Transform when we can
2. Else apply some other approach if the cost can be reduced by doing it

-- 
Simon Riggs                http://www.2ndQuadrant.com/
<http://www.2ndquadrant.com/>
PostgreSQL Solutions for the Enterprise

Reply via email to