diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2003-10-30 17:18:55 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2003-10-30 17:18:55 +0000 |
commit | 3108b5db28a61b681479dc5c61b52d6de3637e70 (patch) | |
tree | d5f5da5d26e35465ccb8e92c941ed5e43b819e38 /src | |
parent | f4b4d7ce60d9e688c598ba17db53dd9e26fa3944 (diff) | |
download | postgresql-3108b5db28a61b681479dc5c61b52d6de3637e70.tar.gz postgresql-3108b5db28a61b681479dc5c61b52d6de3637e70.zip |
Allow the query for a plpgsql cursor to begin with '(' as well as 'SELECT'.
Per example from Kumar, 30-Oct-03.
Diffstat (limited to 'src')
-rw-r--r-- | src/pl/plpgsql/src/gram.y | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/pl/plpgsql/src/gram.y b/src/pl/plpgsql/src/gram.y index a1408ab92ec..22bd1ef8fd7 100644 --- a/src/pl/plpgsql/src/gram.y +++ b/src/pl/plpgsql/src/gram.y @@ -4,7 +4,7 @@ * procedural language * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v 1.47 2003/09/25 23:02:12 tgl Exp $ + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v 1.48 2003/10/30 17:18:55 tgl Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -393,7 +393,7 @@ decl_statement : decl_varname decl_const decl_datatype decl_notnull decl_defval } | decl_varname K_CURSOR { plpgsql_ns_push(NULL); } - decl_cursor_args decl_is_from K_SELECT decl_cursor_query + decl_cursor_args decl_is_from decl_cursor_query { PLpgSQL_var *new; PLpgSQL_expr *curname_def; @@ -430,7 +430,7 @@ decl_statement : decl_varname decl_const decl_datatype decl_notnull decl_defval new->datatype = plpgsql_parse_datatype("refcursor"); - new->cursor_explicit_expr = $7; + new->cursor_explicit_expr = $6; if ($4 == NULL) new->cursor_explicit_argrow = -1; else @@ -447,7 +447,7 @@ decl_cursor_query : PLpgSQL_expr *query; plpgsql_ns_setlocal(false); - query = read_sql_stmt("SELECT "); + query = read_sql_stmt(""); plpgsql_ns_setlocal(true); $$ = query; @@ -1396,7 +1396,9 @@ stmt_open : K_OPEN lno cursor_varptr switch (tok) { case K_SELECT: - new->query = read_sql_stmt("SELECT "); + case '(': + plpgsql_push_back_token(tok); + new->query = read_sql_stmt(""); break; case K_EXECUTE: |