Re: Making Vars outer-join aware

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Richard Guo <guofenglinux(at)gmail(dot)com>
Cc: Pg Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, "Finnerty, Jim" <jfinnert(at)amazon(dot)com>
Subject: Re: Making Vars outer-join aware
Date: 2022-11-01 00:19:02
Message-ID: 1035990.1667261942@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Richard Guo <guofenglinux(at)gmail(dot)com> writes:
> I wonder why this is not noticed by regression tests. So I did some
> search and it seems we do not have any test cases covering the
> transformation we apply to reduce outer joins. I think maybe we should
> add such cases in regression tests.

Right, done at 0043aa6b8. The actual fix is in 0010 below (it would
have been earlier, except I'd forgotten about this issue).

I've been working away at this patch series, and here is an up-to-date
version. I've mostly fixed the inability to check in setrefs.c that
varnullingrels match up at different join levels, and I've found a
solution that I feel reasonably happy about for variant join quals
depending on application of outer-join identity 3. There's certainly
bits of this that could be done in other ways, but overall I'm pleased
with the state of these patches.

I think that the next step is to change things so that the "push
a constant through outer-join quals" hacks are replaced by
EquivalenceClass-based logic. That turns out to be harder than
I'd supposed initially, because labeling Vars with nullingrels
fixes only part of the problem there. The other part is that
deductions we make from an outer-join qual can only be applied
below the nullable side of that join --- we can't use them to
remove rows from the non-nullable side. I have an idea how to
make that work, but it's not passing regression tests yet :-(.

Anyway, there's much more to do, but here's what I've got today.

regards, tom lane

Attachment Content-Type Size
v5-0000-add-overview-documentation.patch text/x-diff 25.3 KB
v5-0001-add-nullingrels-fields.patch text/x-diff 16.9 KB
v5-0002-label-Var-nullability-in-parser.patch text/x-diff 22.0 KB
v5-0003-cope-with-nullability-in-planner.patch text/x-diff 198.1 KB
v5-0004-add-rinfo-serial-numbers.patch text/x-diff 26.8 KB
v5-0005-fix-flatten_join_alias_vars.patch text/x-diff 14.4 KB
v5-0006-fix-FDWs.patch text/x-diff 10.1 KB
v5-0007-avoid-using-nullable_relids.patch text/x-diff 9.8 KB
v5-0008-remove-nullable_relids.patch text/x-diff 40.9 KB
v5-0009-simplify-dummy-join-clauses.patch text/x-diff 13.6 KB
v5-0010-fix-antijoin-recognition.patch text/x-diff 23.3 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2022-11-01 00:19:34 Re: heavily contended lwlocks with long wait queues scale badly
Previous Message Zhihong Yu 2022-11-01 00:17:03 Re: heavily contended lwlocks with long wait queues scale badly