From: Tom Lane <tgl@sss.pgh.pa.us>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: Fix "failed to find plan for subquery/CTE" errors in EXPLAIN.
Date: Fri, 09 Aug 2024 15:22:05 +0000
Message-ID: <E1scRRN-003Raz-0Z@gemulon.postgresql.org> (raw)
Fix "failed to find plan for subquery/CTE" errors in EXPLAIN.
To deparse a reference to a field of a RECORD-type output of a
subquery, EXPLAIN normally digs down into the subquery's plan to try
to discover exactly which anonymous RECORD type is meant. However,
this can fail if the subquery has been optimized out of the plan
altogether on the grounds that no rows could pass the WHERE quals,
which has been possible at least since 3fc6e2d7f. There isn't
anything remaining in the plan tree that would help us, so fall back
to printing the field name as "fN" for the N'th column of the record.
(This will actually be the right thing some of the time, since it
matches the column names we assign to RowExprs.)
In passing, fix a comment typo in create_projection_plan, which
I noticed while experimenting with an alternative fix for this.
Per bug #18576 from Vasya B. Back-patch to all supported branches.
Richard Guo and Tom Lane
Discussion: https://postgr.es/m/18576-9feac34e132fea9e@postgresql.org
Branch
------
REL_15_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/12010f4146156ae276e5e606400ed9ce39a83e0b
Modified Files
--------------
src/backend/optimizer/plan/createplan.c | 2 +-
src/backend/utils/adt/ruleutils.c | 50 ++++++++++++++++++++++--------
src/test/regress/expected/rowtypes.out | 54 +++++++++++++++++++++++++++++++++
src/test/regress/sql/rowtypes.sql | 21 +++++++++++++
4 files changed, 113 insertions(+), 14 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: tgl@sss.pgh.pa.us, pgsql-committers@lists.postgresql.org
Subject: Re: pgsql: Fix "failed to find plan for subquery/CTE" errors in EXPLAIN.
In-Reply-To: <E1scRRN-003Raz-0Z@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