From c530fbfb2fa4177103a44147315a3217c6527dd6 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Wed, 18 Mar 1998 15:49:08 +0000 Subject: [PATCH] Add checks for UNION target fields, and add optional TABLE to LOCK and SELECT manual pages and psql help. --- src/backend/parser/parse_clause.c | 19 +++++++++++++++++-- src/bin/psql/psqlHelp.h | 6 +++--- src/man/lock.l | 6 +++--- src/man/select.l | 4 ++-- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c index ad38817a0b..9bd664c4ee 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 diff --git a/src/bin/psql/psqlHelp.h b/src/bin/psql/psqlHelp.h index 4990a24150..9c444f490c 100644 --- a/src/bin/psql/psqlHelp.h +++ b/src/bin/psql/psqlHelp.h @@ -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 ;"}, {"lock", "exclusive lock a table inside a transaction", - "lock ;"}, + "lock [table] ;"}, {"move", "move an cursor position", "move [forward|backward] [|all] [in ];"}, @@ -273,7 +273,7 @@ static struct _helpStruct QL_HELP[] = { {"select", "retrieve tuples", "select [distinct on ] [as ], ... [as ]\n\ -\t[into table ]\n\ +\t[into [table] ]\n\ \t[from ]\n\ \t[where ]\n\ \t[group by ]\n\ diff --git a/src/man/lock.l b/src/man/lock.l index 0572923e85..b0b053377b 100644 --- a/src/man/lock.l +++ b/src/man/lock.l @@ -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; diff --git a/src/man/select.l b/src/man/select.l index d2b54d3638..739e23c13d 100644 --- a/src/man/select.l +++ b/src/man/select.l @@ -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....}] -- 2.40.0