Skip to content
Snippets Groups Projects
Commit 19c4e862 authored by Bruce Momjian's avatar Bruce Momjian
Browse files

Skip junk nodes when comparing UNION target list lengths.

parent 585c9677
No related branches found
No related tags found
No related merge requests found
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.33 1999/05/17 17:03:32 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.34 1999/05/17 18:22:18 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -767,8 +767,17 @@ transformUnionClause(List *unionClause, List *targetlist) ...@@ -767,8 +767,17 @@ transformUnionClause(List *unionClause, List *targetlist)
Query *query = (Query *) lfirst(qlist_item); Query *query = (Query *) lfirst(qlist_item);
List *prev_target = targetlist; List *prev_target = targetlist;
List *next_target; List *next_target;
int prev_len = 0, next_len = 0;
if (length(targetlist) != length(query->targetList)) foreach(prev_target, targetlist)
if (!((TargetEntry *) lfirst(prev_target))->resdom->resjunk)
prev_len++;
foreach(next_target, query->targetList)
if (!((TargetEntry *) lfirst(next_target))->resdom->resjunk)
next_len++;
if (prev_len != next_len)
elog(ERROR, "Each UNION clause must have the same number of columns"); elog(ERROR, "Each UNION clause must have the same number of columns");
foreach(next_target, query->targetList) foreach(next_target, query->targetList)
... ...
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.42 1999/05/17 17:03:38 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.43 1999/05/17 18:22:19 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -2762,11 +2762,20 @@ QueryRewrite(Query *parsetree) ...@@ -2762,11 +2762,20 @@ QueryRewrite(Query *parsetree)
* attributes and the types are compatible */ * attributes and the types are compatible */
void check_targetlists_are_compatible(List *prev_target, List *current_target) void check_targetlists_are_compatible(List *prev_target, List *current_target)
{ {
List *next_target; List *tl, *next_target;
int prev_len = 0, next_len = 0;
if (length(prev_target) != foreach(tl, prev_target)
length(current_target)) if (!((TargetEntry *) lfirst(tl))->resdom->resjunk)
prev_len++;
foreach(next_target, current_target)
if (!((TargetEntry *) lfirst(next_target))->resdom->resjunk)
next_len++;
if (prev_len != next_len)
elog(ERROR,"Each UNION | EXCEPT | INTERSECT query must have the same number of columns."); elog(ERROR,"Each UNION | EXCEPT | INTERSECT query must have the same number of columns.");
foreach(next_target, current_target) foreach(next_target, current_target)
{ {
Oid itype; Oid itype;
... ...
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment