Commit 59c325bb authored by Tom Lane's avatar Tom Lane

Repair for bug #691 --- CREATE TABLE AS column aliases fail to be

applied when the select is a UNION (or other set-operation).

An alternative route to a fix would be to leave analyze.c alone and
change plan_set_operations in prepunion.c to take column names from
the topmost targetlist.  But I am not sure that would work in all
cases.  This patch seems the minimum-risk fix.
parent 2ed878d3
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.235 2002/05/28 22:15:42 tgl Exp $ * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.236 2002/06/13 02:04:46 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -2212,8 +2212,16 @@ transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt) ...@@ -2212,8 +2212,16 @@ transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt)
qry->isBinary = FALSE; qry->isBinary = FALSE;
} }
/*
* Any column names from CREATE TABLE AS need to be attached to both the
* top level and the leftmost subquery. We do not do this earlier
* because we do *not* want the targetnames list to be affected.
*/
if (intoColNames) if (intoColNames)
{
applyColumnNames(qry->targetList, intoColNames); applyColumnNames(qry->targetList, intoColNames);
applyColumnNames(leftmostQuery->targetList, intoColNames);
}
/* /*
* As a first step towards supporting sort clauses that are * As a first step towards supporting sort clauses that are
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment