aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2003-10-30 17:18:55 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2003-10-30 17:18:55 +0000
commit3108b5db28a61b681479dc5c61b52d6de3637e70 (patch)
treed5f5da5d26e35465ccb8e92c941ed5e43b819e38 /src
parentf4b4d7ce60d9e688c598ba17db53dd9e26fa3944 (diff)
downloadpostgresql-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.y12
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: