]> granicus.if.org Git - postgresql/commitdiff
Add checks for UNION target fields, and add optional TABLE to LOCK
authorBruce Momjian <bruce@momjian.us>
Wed, 18 Mar 1998 15:49:08 +0000 (15:49 +0000)
committerBruce Momjian <bruce@momjian.us>
Wed, 18 Mar 1998 15:49:08 +0000 (15:49 +0000)
and SELECT manual pages and psql help.

src/backend/parser/parse_clause.c
src/bin/psql/psqlHelp.h
src/man/lock.l
src/man/select.l

index ad38817a0bb4dfa8bb53e2316edfd51739f17bb1..9bd664c4ee37fd0bd910ae55ed73f8d00b5767f9 100644 (file)
@@ -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
index 4990a241508c242d6961808c773c6ac322fc146d..9c444f490c74975f89d55eb43eab59f878e5e67c 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: psqlHelp.h,v 1.40 1998/02/03 19:27:00 momjian Exp $
+ * $Id: psqlHelp.h,v 1.41 1998/03/18 15:48:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -252,7 +252,7 @@ static struct _helpStruct QL_HELP[] = {
        "load <filename>;"},
        {"lock",
                "exclusive lock a table inside a transaction",
-       "lock <class_name>;"},
+       "lock [table] <class_name>;"},
        {"move",
                "move an cursor position",
        "move [forward|backward] [<number>|all] [in <cursorname>];"},
@@ -273,7 +273,7 @@ static struct _helpStruct QL_HELP[] = {
        {"select",
                "retrieve tuples",
        "select [distinct on <attr>] <expr1> [as <attr1>], ... <exprN> [as <attrN>]\n\
-\t[into table <class_name>]\n\
+\t[into [table] <class_name>]\n\
 \t[from <from_list>]\n\
 \t[where <qual>]\n\
 \t[group by <group_list>]\n\
index 0572923e854520fe1b6459ab6ae3996cb4e85ad1..b0b053377ba085e2e679c829da884696b1bc37fa 100644 (file)
@@ -1,12 +1,12 @@
 .\" This is -*-nroff-*-
 .\" XXX standard disclaimer belongs here....
-.\" $Header: /cvsroot/pgsql/src/man/Attic/lock.l,v 1.3 1998/01/28 20:44:42 momjian Exp $
+.\" $Header: /cvsroot/pgsql/src/man/Attic/lock.l,v 1.4 1998/03/18 15:48:57 momjian Exp $
 .TH FETCH SQL 01/23/93 PostgreSQL PostgreSQL
 .SH NAME
 lock - exclusive lock a table
 .SH SYNOPSIS
 .nf
-\fBlock\fR classname
+\fBlock\fR [\fBtable\fR] classname
 .fi
 .SH DESCRIPTION
 .BR lock
@@ -31,7 +31,7 @@ aquisitions and requests to not form a deadlock.
 --  Proper locking to prevent deadlock
 --
 begin work;
-lock mytable;
+lock table mytable;
 select * from mytable;
 update mytable set (x = 100);
 end work;
index d2b54d36386539b95f18551849d585bc8b77039e..739e23c13d0bec04ba5cdd9c02856bec0b455645 100644 (file)
@@ -1,6 +1,6 @@
 .\" This is -*-nroff-*-
 .\" XXX standard disclaimer belongs here....
-.\" $Header: /cvsroot/pgsql/src/man/Attic/select.l,v 1.4 1998/01/11 22:17:58 momjian Exp $
+.\" $Header: /cvsroot/pgsql/src/man/Attic/select.l,v 1.5 1998/03/18 15:49:08 momjian Exp $
 .TH SELECT SQL 11/05/95 PostgreSQL PostgreSQL
 .SH NAME
 select - retrieve instances from a class
@@ -9,7 +9,7 @@ select - retrieve instances from a class
 \fBselect\fR [distinct]
     expression1 [\fBas\fR attr_name-1]
     {, expression-1 [\fBas\fR attr_name-i]}
-    [\fBinto\fR \fBtable\fR classname]
+    [\fBinto\fR [\fBtable\fR] classname]
     [\fBfrom\fR from-list]
     [\fBwhere\fR where-clause]    
     [\fBgroup by\fR attr_name1 {, attr_name-i....}]