From 19c4e862d41f9d520652d0b0e7ae595a85b5f90b Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Mon, 17 May 1999 18:22:19 +0000 Subject: Skip junk nodes when comparing UNION target list lengths. --- src/backend/parser/parse_clause.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/backend/parser') diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c index 507ebc2e719..a3eafab36cb 100644 --- a/src/backend/parser/parse_clause.c +++ b/src/backend/parser/parse_clause.c @@ -7,7 +7,7 @@ * * * 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) Query *query = (Query *) lfirst(qlist_item); List *prev_target = targetlist; 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"); foreach(next_target, query->targetList) -- cgit v1.2.3