| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
| Subject: | pgsql: Fix "wrong varnullingrels" for subquery nestloop parameters. |
| Date: | 2023-06-12 14:01:35 |
| Message-ID: | E1q8i6x-001PwK-3z@gemulon.postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-committers |
Fix "wrong varnullingrels" for subquery nestloop parameters.
If we apply outer join identity 3 when relation C is a subquery
having lateral references to relation B, then the lateral references
within C continue to bear the original syntactically-correct
varnullingrels marks, but that won't match what is available from
the outer side of the nestloop. Compensate for that in
process_subquery_nestloop_params(). This is a slightly hacky fix,
but we certainly don't want to re-plan C in toto for each possible
outer join order, so there's not a lot of better alternatives.
Richard Guo and Tom Lane, per report from Markus Winand
Discussion: https://postgr.es/m/DFBB2D25-DE97-49CA-A60E-07C881EA59A7@winand.at
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/bfd332b3fda5c73e28c05b7ba0aac6cf053cdf00
Modified Files
--------------
src/backend/optimizer/plan/setrefs.c | 8 ++++---
src/backend/optimizer/util/paramassign.c | 36 +++++++++++++++++++++++++-------
src/test/regress/expected/join.out | 18 ++++++++++++++++
src/test/regress/sql/join.sql | 7 +++++++
4 files changed, 59 insertions(+), 10 deletions(-)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Noah Misch | 2023-06-12 14:44:23 | pgsql: src/tools/msvc/clean.bat: Reconcile with PostgreSQL 16 work. |
| Previous Message | Heikki Linnakangas | 2023-06-12 13:26:29 | pgsql: Remove a few unused global variables and declarations. |