aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/parse_clause.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1998-03-18 15:49:08 +0000
committerBruce Momjian <bruce@momjian.us>1998-03-18 15:49:08 +0000
commitc530fbfb2fa4177103a44147315a3217c6527dd6 (patch)
tree708adca73b428d3fa16b9b57f266e86898a08da4 /src/backend/parser/parse_clause.c
parent94abcc16653a2ac82f2bf52c8669aa675dbebffe (diff)
downloadpostgresql-c530fbfb2fa4177103a44147315a3217c6527dd6.tar.gz
postgresql-c530fbfb2fa4177103a44147315a3217c6527dd6.zip
Add checks for UNION target fields, and add optional TABLE to LOCK
and SELECT manual pages and psql help.
Diffstat (limited to 'src/backend/parser/parse_clause.c')
-rw-r--r--src/backend/parser/parse_clause.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c
index ad38817a0bb..9bd664c4ee3 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.13 1998/02/26 04:33:29 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.14 1998/03/18 15:47:51 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -382,11 +382,26 @@ transformUnionClause(List *unionClause, List *targetlist)
if (unionClause)
{
+ /* recursion */
qlist = parse_analyze(unionClause, NULL);
for (i = 0; i < qlist->len; i++)
+ {
+ List *prev_target = targetlist;
+ List *next_target;
+
+ if (length(targetlist) != length(qlist->qtrees[i]->targetList))
+ elog(ERROR,"Each UNION query must have the same number of columns.");
+
+ foreach(next_target, qlist->qtrees[i]->targetList)
+ {
+ if (((TargetEntry *)lfirst(prev_target))->resdom->restype !=
+ ((TargetEntry *)lfirst(next_target))->resdom->restype)
+ elog(ERROR,"Each UNION query must have identical target types.");
+ prev_target = lnext(prev_target);
+ }
union_list = lappend(union_list, qlist->qtrees[i]);
- /* we need to check return types are consistent here */
+ }
return union_list;
}
else