From: Alexander Korotkov <akorotkov@postgresql.org>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: Disallow removing placeholders during Self-Join Elimination.
Date: Sun, 27 Apr 2025 22:42:20 +0000
Message-ID: <E1u9AhY-00261K-0Q@gemulon.postgresql.org> (raw)
Disallow removing placeholders during Self-Join Elimination.
fc069a3a6319 implements Self-Join Elimination (SJE), which can remove base
relations when appropriate. However, regressions tests for SJE only cover
the case when placeholder variables (PHVs) are evaluated and needed only
in a single base rel. If this baserel is removed due to SJE, its clauses,
including PHVs, will be transferred to the keeping relation. Removing these
PHVs may trigger an error on plan creation -- thanks to the b3ff6c742f6c for
detecting that.
This commit skips removal of PHVs during SJE. This might also happen that
we skip the removal of some PHVs that could be removed. However, the overhead
of extra PHVs is small compared to the complexity of analysis needed to remove
them.
Reported-by: Alexander Lakhin <exclusion@gmail.com>
Author: Alena Rybakina <a.rybakina@postgrespro.ru>
Author: Andrei Lepikhov <lepihov@gmail.com>
Reviewed-by: Alexander Korotkov <aekorotkov@gmail.com>
Reviewed-by: Richard Guo <guofenglinux@gmail.com>
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/1aa7cf9eb85972aaf2969306e84f5fc794fbef7f
Modified Files
--------------
src/backend/optimizer/plan/analyzejoins.c | 17 +++++++++++++---
src/test/regress/expected/join.out | 34 ++++++++++++++++++++++++++++++-
src/test/regress/sql/join.sql | 23 ++++++++++++++++++++-
3 files changed, 69 insertions(+), 5 deletions(-)
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: akorotkov@postgresql.org, pgsql-committers@lists.postgresql.org
Subject: Re: pgsql: Disallow removing placeholders during Self-Join Elimination.
In-Reply-To: <E1u9AhY-00261K-0Q@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 DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox