pgsql: Fix "failed to find plan for subquery/CTE" errors in EXPLAIN.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix "failed to find plan for subquery/CTE" errors in EXPLAIN.
Date: 2024-08-09 15:22:04
Message-ID: E1scRRM-003Rau-Vt@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

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_17_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/81a12a4477533d7722bd6b6dac88b0e798f8e85b

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(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2024-08-09 15:22:05 pgsql: Fix "failed to find plan for subquery/CTE" errors in EXPLAIN.
Previous Message Peter Eisentraut 2024-08-09 13:08:58 Re: pgsql: Fix more holes with SLRU code in need of int64 for segment numbe