pgsql: Fix thinkos in have_unsafe_outer_join_ref; reduce to Assert chec

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix thinkos in have_unsafe_outer_join_ref; reduce to Assert chec
Date: 2023-02-13 16:45:45
Message-ID: E1pRbxY-000xNu-B4@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix thinkos in have_unsafe_outer_join_ref; reduce to Assert check.

Late in the development of commit 2489d76c4, I (tgl) incorrectly
concluded that the new function have_unsafe_outer_join_ref couldn't
ever reach its inner loop. That should be the case if the inner
rel's parameterization is based on just one Var, but it could be
based on Vars from several relations, and then not only is the
inner loop reachable but it's wrongly coded.

Despite those errors, it still appears that the whole thing is
redundant given previous join_is_legal checks, so let's arrange
to only run it in assert-enabled builds.

Diagnosis and patch by Richard Guo, per fuzz testing by Justin Pryzby.

Discussion: https://postgr.es/m/20230212235823.GW1653@telsasoft.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/f50f029c497da35927491f16964f7aa993ecbae5

Modified Files
--------------
src/backend/optimizer/path/joinpath.c | 29 ++++++++++++++---------------
src/test/regress/expected/join.out | 26 ++++++++++++++++++++++++++
src/test/regress/sql/join.sql | 17 +++++++++++++++++
3 files changed, 57 insertions(+), 15 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2023-02-13 17:20:02 pgsql: Fix buggy recursion in flatten_rtes_walker().
Previous Message Andrew Dunstan 2023-02-13 13:26:35 pgsql: Remove obsolete pgindent options --code-base and --build