diff options
author | Jan Wieck <JanWieck@Yahoo.com> | 1999-05-20 12:12:55 +0000 |
---|---|---|
committer | Jan Wieck <JanWieck@Yahoo.com> | 1999-05-20 12:12:55 +0000 |
commit | 443c08a110b72ca67e056d1d1a184cf5a21b55ec (patch) | |
tree | 130e055c1ebe2db5bfc447448459196156f8fc93 /src/backend/parser | |
parent | 1f82f1de33ebc316e325bc51a11b897d83585847 (diff) | |
download | postgresql-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.y | 28 |
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; } ; |