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 |
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 |