Don't generate fake "*SELECT*" or "*SELECT* %d" subquery aliases.
authorRobert Haas <rhaas@postgresql.org>
Mon, 8 Sep 2025 15:50:33 +0000 (11:50 -0400)
committerRobert Haas <rhaas@postgresql.org>
Mon, 8 Sep 2025 15:50:33 +0000 (11:50 -0400)
commit585e31fcb6dfcb1d88cfee2371f565574db24869
treee86ab7395df6b65b6be336a7304f3ef0e7a706ac
parent3399c265543ec3cdbeff2fa2900e03b326705f63
Don't generate fake "*SELECT*" or "*SELECT* %d" subquery aliases.

rte->alias should point only to a user-written alias, but in these
cases that principle was violated. Fixing this causes some regression
test output changes: wherever rte->alias previously had a value and
is now NULL, rte->eref is now set to a generated name rather than to
rte->alias; and the scheme used to generate eref names differs from
what we were doing for aliases.

The upshot is that instead of "*SELECT*" or "*SELECT* %d",
EXPLAIN will now emit "unnamed_subquery" or "unnamed_subquery_%d".
But that's a reasonable descriptor, and we were already producing
that in yet other cases, so this seems not too objectionable.

Author: Tom Lane <tgl@sss.pgh.pa.us>
Co-authored-by: Robert Haas <rhaas@postgresql.org>
Discussion: https://postgr.es/m/CA+TgmoYSYmDA2GvanzPMci084n+mVucv0bJ0HPbs6uhmMN6HMg@mail.gmail.com
contrib/postgres_fdw/expected/postgres_fdw.out
src/backend/executor/functions.c
src/backend/parser/analyze.c
src/test/regress/expected/partition_prune.out
src/test/regress/expected/rangefuncs.out
src/test/regress/expected/union.out