1111 *
1212 *
1313 * IDENTIFICATION
14- * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.691 2009/11/1119:25:40 alvherre Exp $
14+ * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.692 2009/11/1120:31:26 alvherre Exp $
1515 *
1616 * HISTORY
1717 * AUTHORDATEMAJOR EVENT
@@ -251,7 +251,7 @@ static TypeName *TableFuncTypeName(List *columns);
251251
252252%type <str> copy_file_name
253253database_name access_method_clause access_method attr_name
254- index_name name file_name cluster_index_specification
254+ index_name name cursor_name file_name cluster_index_specification
255255
256256%type <list> func_name handler_name qual_Op qual_all_Op subquery_Op
257257opt_class opt_inline_handler opt_validator validator_clause
@@ -1941,7 +1941,7 @@ reloption_elem:
19411941 *****************************************************************************/
19421942
19431943ClosePortalStmt :
1944- CLOSE name
1944+ CLOSE cursor_name
19451945{
19461946ClosePortalStmt *n = makeNode(ClosePortalStmt);
19471947n->portalname =$2 ;
@@ -4194,127 +4194,127 @@ FetchStmt:FETCH fetch_args
41944194}
41954195;
41964196
4197- fetch_args:name
4197+ fetch_args:cursor_name
41984198{
41994199FetchStmt *n = makeNode(FetchStmt);
42004200n->portalname =$1 ;
42014201n->direction = FETCH_FORWARD;
42024202n->howMany =1 ;
42034203$$ = (Node *)n;
42044204}
4205- | from_inname
4205+ | from_incursor_name
42064206{
42074207FetchStmt *n = makeNode(FetchStmt);
42084208n->portalname =$2 ;
42094209n->direction = FETCH_FORWARD;
42104210n->howMany =1 ;
42114211$$ = (Node *)n;
42124212}
4213- | NEXT opt_from_inname
4213+ | NEXT opt_from_incursor_name
42144214{
42154215FetchStmt *n = makeNode(FetchStmt);
42164216n->portalname =$3 ;
42174217n->direction = FETCH_FORWARD;
42184218n->howMany =1 ;
42194219$$ = (Node *)n;
42204220}
4221- | PRIOR opt_from_inname
4221+ | PRIOR opt_from_incursor_name
42224222{
42234223FetchStmt *n = makeNode(FetchStmt);
42244224n->portalname =$3 ;
42254225n->direction = FETCH_BACKWARD;
42264226n->howMany =1 ;
42274227$$ = (Node *)n;
42284228}
4229- | FIRST_P opt_from_inname
4229+ | FIRST_P opt_from_incursor_name
42304230{
42314231FetchStmt *n = makeNode(FetchStmt);
42324232n->portalname =$3 ;
42334233n->direction = FETCH_ABSOLUTE;
42344234n->howMany =1 ;
42354235$$ = (Node *)n;
42364236}
4237- | LAST_P opt_from_inname
4237+ | LAST_P opt_from_incursor_name
42384238{
42394239FetchStmt *n = makeNode(FetchStmt);
42404240n->portalname =$3 ;
42414241n->direction = FETCH_ABSOLUTE;
42424242n->howMany = -1 ;
42434243$$ = (Node *)n;
42444244}
4245- | ABSOLUTE_P SignedIconst opt_from_inname
4245+ | ABSOLUTE_P SignedIconst opt_from_incursor_name
42464246{
42474247FetchStmt *n = makeNode(FetchStmt);
42484248n->portalname =$4 ;
42494249n->direction = FETCH_ABSOLUTE;
42504250n->howMany =$2 ;
42514251$$ = (Node *)n;
42524252}
4253- | RELATIVE_P SignedIconst opt_from_inname
4253+ | RELATIVE_P SignedIconst opt_from_incursor_name
42544254{
42554255FetchStmt *n = makeNode(FetchStmt);
42564256n->portalname =$4 ;
42574257n->direction = FETCH_RELATIVE;
42584258n->howMany =$2 ;
42594259$$ = (Node *)n;
42604260}
4261- | SignedIconst opt_from_inname
4261+ | SignedIconst opt_from_incursor_name
42624262{
42634263FetchStmt *n = makeNode(FetchStmt);
42644264n->portalname =$3 ;
42654265n->direction = FETCH_FORWARD;
42664266n->howMany =$1 ;
42674267$$ = (Node *)n;
42684268}
4269- | ALL opt_from_inname
4269+ | ALL opt_from_incursor_name
42704270{
42714271FetchStmt *n = makeNode(FetchStmt);
42724272n->portalname =$3 ;
42734273n->direction = FETCH_FORWARD;
42744274n->howMany = FETCH_ALL;
42754275$$ = (Node *)n;
42764276}
4277- | FORWARD opt_from_inname
4277+ | FORWARD opt_from_incursor_name
42784278{
42794279FetchStmt *n = makeNode(FetchStmt);
42804280n->portalname =$3 ;
42814281n->direction = FETCH_FORWARD;
42824282n->howMany =1 ;
42834283$$ = (Node *)n;
42844284}
4285- | FORWARD SignedIconst opt_from_inname
4285+ | FORWARD SignedIconst opt_from_incursor_name
42864286{
42874287FetchStmt *n = makeNode(FetchStmt);
42884288n->portalname =$4 ;
42894289n->direction = FETCH_FORWARD;
42904290n->howMany =$2 ;
42914291$$ = (Node *)n;
42924292}
4293- | FORWARD ALL opt_from_inname
4293+ | FORWARD ALL opt_from_incursor_name
42944294{
42954295FetchStmt *n = makeNode(FetchStmt);
42964296n->portalname =$4 ;
42974297n->direction = FETCH_FORWARD;
42984298n->howMany = FETCH_ALL;
42994299$$ = (Node *)n;
43004300}
4301- | BACKWARD opt_from_inname
4301+ | BACKWARD opt_from_incursor_name
43024302{
43034303FetchStmt *n = makeNode(FetchStmt);
43044304n->portalname =$3 ;
43054305n->direction = FETCH_BACKWARD;
43064306n->howMany =1 ;
43074307$$ = (Node *)n;
43084308}
4309- | BACKWARD SignedIconst opt_from_inname
4309+ | BACKWARD SignedIconst opt_from_incursor_name
43104310{
43114311FetchStmt *n = makeNode(FetchStmt);
43124312n->portalname =$4 ;
43134313n->direction = FETCH_BACKWARD;
43144314n->howMany =$2 ;
43154315$$ = (Node *)n;
43164316}
4317- | BACKWARD ALL opt_from_inname
4317+ | BACKWARD ALL opt_from_incursor_name
43184318{
43194319FetchStmt *n = makeNode(FetchStmt);
43204320n->portalname =$4 ;
@@ -7108,7 +7108,7 @@ set_target_list:
71087108 *CURSOR STATEMENTS
71097109 *
71107110 *****************************************************************************/
7111- DeclareCursorStmt: DECLAREname cursor_options CURSOR opt_hold FOR SelectStmt
7111+ DeclareCursorStmt: DECLAREcursor_name cursor_options CURSOR opt_hold FOR SelectStmt
71127112{
71137113DeclareCursorStmt *n = makeNode(DeclareCursorStmt);
71147114n->portalname =$2 ;
@@ -7119,6 +7119,9 @@ DeclareCursorStmt: DECLARE name cursor_options CURSOR opt_hold FOR SelectStmt
71197119}
71207120;
71217121
7122+ cursor_name:name{$$ =$1 ; }
7123+ ;
7124+
71227125cursor_options:/* EMPTY*/ {$$ =0 ; }
71237126| cursor_options NO SCROLL{$$ =$1 | CURSOR_OPT_NO_SCROLL; }
71247127| cursor_options SCROLL{$$ =$1 | CURSOR_OPT_SCROLL; }