agora inbox for pgsql-committers@postgresql.org
help / color / mirror / Atom feedFrom: Richard Guo <rguo@postgresql.org>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: Remove quals made redundant by reducing outer joins to antijoins
Date: Wed, 02 Sep 2026 04:40:47 +0000
Message-ID: <E1x1cmE-000000037xk-0Lx4@gemulon.postgresql.org> (raw)
Remove quals made redundant by reducing outer joins to antijoins
When reduce_outer_joins reduces an outer join to an antijoin, any IS
NULL qual on a Var from the antijoin's nullable side is necessarily
true. Previously, such quals were discarded later in
distribute_qual_to_rels, mainly to avoid bogus selectivity estimates.
But that discard was incomplete: the qual remained in the jointree,
while its Vars were not counted in attr_needed. Since commit
2ebf25e7d, join removal edits the jointree and expects it to contain
no other references to a removed rel, so it could remove a rel that
such a discarded qual still references, and then trip an assertion on
the qual's stale Var.
To fix, move this processing to an earlier phase: such quals are now
removed from the jointree by reduce_outer_joins itself. This way
later phases see a consistent query tree, and
check_redundant_nullability_qual is no longer needed, so remove it.
Back-patch to v16, as with commit 2ebf25e7d.
Reported-by: Tender Wang <tndrwang@gmail.com>
Author: Richard Guo <guofenglinux@gmail.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/CAHewXNk8b0TsSy4dL=CO7FXL2W3WBm0BcdP-zwNJePa-Qj4HzA@mail.gmail.com
Backpatch-through: 16
Branch
------
REL_17_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/197a41aa6ee9f9e1467eaee43c04cf52a8367067
Modified Files
--------------
src/backend/optimizer/plan/initsplan.c | 61 ---------------------
src/backend/optimizer/prep/prepjointree.c | 91 ++++++++++++++++++++++++++++---
src/backend/optimizer/util/clauses.c | 11 ++--
src/test/regress/expected/join.out | 40 ++++++++++++++
src/test/regress/sql/join.sql | 25 +++++++++
5 files changed, 155 insertions(+), 73 deletions(-)
view thread (5+ messages) latest in thread
Message-ID: <E1x1cmE-000000037xk-0Lx4@gemulon.postgresql.org>
Permalink: ../E1x1cmE-000000037xk-0Lx4@gemulon.postgresql.org/
Also on: postgresql.org/message-id/E1x1cmE-000000037xk-0Lx4@gemulon.postgresql.org
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-committers@postgresql.org
Cc: rguo@postgresql.org, pgsql-committers@lists.postgresql.org
Subject: Re: pgsql: Remove quals made redundant by reducing outer joins to antijoins
In-Reply-To: <E1x1cmE-000000037xk-0Lx4@gemulon.postgresql.org>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox