*
*
* 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
%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
*
*****************************************************************************/
/***S*I***/
-CursorStmt: DECLARE name opt_cursor CURSOR FOR SelectStmt cursor_clause
+CursorStmt: DECLARE name opt_cursor CURSOR FOR SelectStmt
{
SelectStmt *n;
n->portalname = $2;
n->binary = $3;
+ if (n->forUpdate != NULL)
+ elog(ERROR,"DECLARE/UPDATE not supported;"
+ " Cursors must be READ ONLY.");
$$ = (Node *)n;
}
;
| /*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:
;
for_update_clause: FOR UPDATE update_list { $$ = $3; }
+ | FOR READ ONLY { $$ = NULL; }
| /* EMPTY */ { $$ = NULL; }
;