Commit 9432b6dd authored by Tom Lane's avatar Tom Lane

Do not assign output columns to junk attributes created from

GROUP BY or ORDER BY expressions in INSERT ... SELECT.
parent 505b5185
......@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.38 1999/05/22 04:12:28 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.39 1999/05/23 21:42:09 tgl Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -32,16 +32,12 @@
static List *ExpandAllTables(ParseState *pstate);
char *FigureColname(Node *expr, Node *resval);
static char *FigureColname(Node *expr, Node *resval);
static Node *SizeTargetExpr(ParseState *pstate,
Node *expr,
Oid attrtype,
int32 attrtypmod);
static TargetEntry *
MakeTargetEntryCase(ParseState *pstate,
ResTarget *res);
/* MakeTargetEntryIdent()
* Transforms an Ident Node to a Target Entry
......@@ -66,8 +62,13 @@ MakeTargetEntryIdent(ParseState *pstate,
Oid attrtype_target;
TargetEntry *tent = makeNode(TargetEntry);
if (pstate->p_is_insert)
if (pstate->p_is_insert && !resjunk)
{
/* Assign column name of destination column to the new TLE.
* XXX this is probably WRONG in INSERT ... SELECT case,
* since handling of GROUP BY and so forth probably should use
* the source table's names not the destination's names.
*/
if (pstate->p_insert_columns != NIL)
{
Ident *id = lfirst(pstate->p_insert_columns);
......@@ -79,7 +80,7 @@ MakeTargetEntryIdent(ParseState *pstate,
elog(ERROR, "INSERT has more expressions than target columns");
}
if (pstate->p_is_insert || pstate->p_is_update)
if ((pstate->p_is_insert || pstate->p_is_update) && !resjunk)
{
Oid attrtype_id;
int resdomno_id,
......@@ -208,7 +209,7 @@ MakeTargetEntryExpr(ParseState *pstate,
type_mod = -1;
/* Process target columns that will be receiving results */
if (pstate->p_is_insert || pstate->p_is_update)
if ((pstate->p_is_insert || pstate->p_is_update) && !resjunk)
{
/*
......@@ -870,7 +871,7 @@ ExpandAllTables(ParseState *pstate)
* list, we have to guess.
*
*/
char *
static char *
FigureColname(Node *expr, Node *resval)
{
switch (nodeTag(expr))
......
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