mirror of
https://github.com/postgres/postgres.git
synced 2025-11-18 02:02:55 +03:00
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
This commit is contained in:
@@ -777,7 +777,7 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt)
|
||||
*/
|
||||
nsitem = addRangeTableEntryForSubquery(pstate,
|
||||
selectQuery,
|
||||
makeAlias("*SELECT*", NIL),
|
||||
NULL,
|
||||
false,
|
||||
false);
|
||||
addNSItemToQuery(pstate, nsitem, true, false, false);
|
||||
@@ -2100,7 +2100,6 @@ transformSetOperationTree(ParseState *pstate, SelectStmt *stmt,
|
||||
{
|
||||
/* Process leaf SELECT */
|
||||
Query *selectQuery;
|
||||
char selectName[32];
|
||||
ParseNamespaceItem *nsitem;
|
||||
RangeTblRef *rtr;
|
||||
ListCell *tl;
|
||||
@@ -2156,11 +2155,9 @@ transformSetOperationTree(ParseState *pstate, SelectStmt *stmt,
|
||||
/*
|
||||
* Make the leaf query be a subquery in the top-level rangetable.
|
||||
*/
|
||||
snprintf(selectName, sizeof(selectName), "*SELECT* %d",
|
||||
list_length(pstate->p_rtable) + 1);
|
||||
nsitem = addRangeTableEntryForSubquery(pstate,
|
||||
selectQuery,
|
||||
makeAlias(selectName, NIL),
|
||||
NULL,
|
||||
false,
|
||||
false);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user