aboutsummaryrefslogtreecommitdiff
path: root/src/backend/rewrite/rewriteHandler.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/rewrite/rewriteHandler.c')
-rw-r--r--src/backend/rewrite/rewriteHandler.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index b2b8c051f60..26626d0bb8a 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -6,7 +6,7 @@
*
*
* 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)
* attributes and the types are compatible */
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;
+
+ foreach(tl, prev_target)
+ if (!((TargetEntry *) lfirst(tl))->resdom->resjunk)
+ prev_len++;
+
+ foreach(next_target, current_target)
+ if (!((TargetEntry *) lfirst(next_target))->resdom->resjunk)
+ next_len++;
- if (length(prev_target) !=
- length(current_target))
- elog(ERROR,"Each UNION | EXCEPT | INTERSECT query must have the same number of columns.");
+ if (prev_len != next_len)
+ elog(ERROR,"Each UNION | EXCEPT | INTERSECT query must have the same number of columns.");
+
foreach(next_target, current_target)
{
Oid itype;