aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser
diff options
context:
space:
mode:
authorJan Wieck <JanWieck@Yahoo.com>1999-05-20 12:12:55 +0000
committerJan Wieck <JanWieck@Yahoo.com>1999-05-20 12:12:55 +0000
commit443c08a110b72ca67e056d1d1a184cf5a21b55ec (patch)
tree130e055c1ebe2db5bfc447448459196156f8fc93 /src/backend/parser
parent1f82f1de33ebc316e325bc51a11b897d83585847 (diff)
downloadpostgresql-443c08a110b72ca67e056d1d1a184cf5a21b55ec.tar.gz
postgresql-443c08a110b72ca67e056d1d1a184cf5a21b55ec.zip
Fixed shift/reduce conflict
SelectStmt and CursorStmt tried to parse FOR UPDATE ... / FOR READ ONLY. Cursor now checks that it is read only by looking at forUpdate of Query. SelectStmt handles FOR READ ONLY too. Jan
Diffstat (limited to 'src/backend/parser')
-rw-r--r--src/backend/parser/gram.y28
1 files changed, 7 insertions, 21 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index e6bdd6f3678..557deb645fe 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.78 1999/05/19 17:53:10 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.79 1999/05/20 12:12:55 wieck Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@@ -196,7 +196,7 @@ Oid param_type(int t); /* used in parse_expr.c */
%type <boolean> opt_inh_star, opt_binary, opt_instead, opt_with_copy,
index_opt_unique, opt_verbose, opt_analyze
-%type <boolean> cursor_clause, opt_cursor, opt_readonly, opt_of
+%type <boolean> opt_cursor
%type <ival> copy_dirn, def_type, opt_direction, remove_type,
opt_column, event
@@ -2646,7 +2646,7 @@ UpdateStmt: UPDATE relation_name
*
*****************************************************************************/
/***S*I***/
-CursorStmt: DECLARE name opt_cursor CURSOR FOR SelectStmt cursor_clause
+CursorStmt: DECLARE name opt_cursor CURSOR FOR SelectStmt
{
SelectStmt *n;
@@ -2664,6 +2664,9 @@ CursorStmt: DECLARE name opt_cursor CURSOR FOR SelectStmt cursor_clause
n->portalname = $2;
n->binary = $3;
+ if (n->forUpdate != NULL)
+ elog(ERROR,"DECLARE/UPDATE not supported;"
+ " Cursors must be READ ONLY.");
$$ = (Node *)n;
}
;
@@ -2675,24 +2678,6 @@ opt_cursor: BINARY { $$ = TRUE; }
| /*EMPTY*/ { $$ = FALSE; }
;
-cursor_clause: FOR opt_readonly { $$ = $2; }
- | /*EMPTY*/ { $$ = FALSE; }
- ;
-
-opt_readonly: READ ONLY { $$ = TRUE; }
- | UPDATE opt_of
- {
- elog(ERROR,"DECLARE/UPDATE not supported;"
- " Cursors must be READ ONLY.");
- $$ = FALSE;
- }
- ;
-
-opt_of: OF columnList
- {
- $$ = FALSE;
- }
-
/*****************************************************************************
*
* QUERY:
@@ -3007,6 +2992,7 @@ having_clause: HAVING a_expr
;
for_update_clause: FOR UPDATE update_list { $$ = $3; }
+ | FOR READ ONLY { $$ = NULL; }
| /* EMPTY */ { $$ = NULL; }
;