1
- /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.190.2.4 2002/08/20 12:23:36 meskes Exp $ */
1
+ /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.190.2.5 2002/09/01 09:31:58 meskes Exp $ */
2
2
3
3
/* Copyright comment */
4
4
%{
@@ -191,8 +191,9 @@ make_name(void)
191
191
CREATE CREATEDB CREATEUSER CROSS CURRENT_DATE CURRENT_TIME
192
192
CURRENT_TIMESTAMP CURRENT_USER CURSOR CYCLE
193
193
194
- DATABASE DAY_P DEC DECIMAL DECLARE DEFAULT DEFERRABLE DEFERRED
195
- DEFINER DELETE_P DELIMITER DELIMITERS DESC DISTINCT DO DOMAIN_P DOUBLE DROP
194
+ DATABASE DAY_P DEALLOCATE DEC DECIMAL DECLARE DEFAULT
195
+ DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS
196
+ DESC DISTINCT DO DOMAIN_P DOUBLE DROP
196
197
A935
EACH ELSE ENCODING ENCRYPTED END_TRANS ESCAPE EXCEPT EXCLUSIVE
197
198
EXECUTE EXISTS EXPLAIN EXTERNAL EXTRACT
198
199
@@ -221,8 +222,8 @@ make_name(void)
221
222
OF OFF OFFSET OIDS OLD ON ONLY OPERATOR OPTION OR ORDER
222
223
OUT_P OUTER_P OVERLAPS OVERLAY OWNER
223
224
224
- PARTIAL PASSWORD PATH_P PENDANT PLACING POSITION PRECISION PRIMARY
225
- PRIOR PRIVILEGES PROCEDURE PROCEDURAL
225
+ PARTIAL PASSWORD PATH_P PENDANT PLACING POSITION PRECISION PREPARE
226
+ PRIMARY PRIOR PRIVILEGES PROCEDURE PROCEDURAL
226
227
227
228
READ REAL RECHECK REFERENCES REINDEX RELATIVE RENAME REPLACE
228
229
RESET RESTRICT RETURNS REVOKE RIGHT ROLLBACK ROW RULE
@@ -287,9 +288,9 @@ make_name(void)
287
288
%type <str> CreateAsElement OptCreateAs CreateAsList CreateAsStmt
288
289
%type <str> comment_text ConstraintDeferrabilitySpec TableElementList
289
290
%type <str> key_match ColLabel SpecialRuleRelation ColId columnDef
290
- %type <str> ColConstraint ColConstraintElem drop_type Bconst
291
- %type <str> TableConstraint OptTableElementList Xconst
292
- %type <str> ConstraintElem key_actions ColQualList type_name
291
+ %type <str> ColConstraint ColConstraintElem drop_type Bconst
292
+ %type <str> TableConstraint OptTableElementList Xconst prep_type_clause
293
+ %type <str> ConstraintElem key_actions ColQualList type_name PrepareStmt
293
294
%type <str> target_list target_el update_target_list alias_clause
294
295
%type <str> update_target_el opt_id qualified_name database_name
295
296
%type <str> access_method attr_name index_name name func_name
@@ -300,7 +301,7 @@ make_name(void)
300
301
%type <str> trim_list in_expr substr_for attrs TableFuncElement
301
302
%type <str> Typename SimpleTypename Numeric opt_float opt_numeric
302
303
%type <str> opt_decimal Character character opt_varying opt_charset
303
- %type <str> opt_collate opt_timezone opt_interval table_ref
304
+ %type <str> opt_collate opt_timezone opt_interval table_ref DeallocateStmt
304
305
%type <str> row_descriptor row_list ConstDatetime trans_options
305
306
%type <str> SelectStmt into_clause OptTemp ConstraintAttributeSpec
306
307
%type <str> opt_table opt_all sort_clause sortby_list ConstraintAttr
@@ -321,7 +322,7 @@ make_name(void)
321
322
%type <str> def_elem def_list definition DefineStmt select_with_parens
322
323
%type <str> opt_instead event RuleActionList opt_using CreateAssertStmt
323
324
%type <str> RuleActionStmtOrEmpty RuleActionMulti func_as reindex_type
324
- %type <str> RuleStmt opt_column opt_name oper_argtypes NumConst
325
+ %type <str> RuleStmt opt_column opt_name oper_argtypes NumConst ExecuteStmt
325
326
%type <str> MathOp RemoveFuncStmt aggr_argtype for_update_clause
326
327
%type <str> RemoveAggrStmt opt_procedural select_no_parens CreateCastStmt
327
328
%type <str> RemoveOperStmt RenameStmt all_Op opt_Trusted opt_lancompiler
@@ -363,10 +364,11 @@ make_name(void)
363
364
%type <str> opt_oids TableLikeClause key_action opt_definition
364
365
%type <str> opt_assignment row r_expr qual_Op qual_all_Op opt_default
365
366
%type <str> CreateConversionStmt any_operator opclass_item_list
366
- %type <str> iso_level OptTableFuncElementList convert_list
367
+ %type <str> iso_level convert_list prep_type_list
367
368
%type <str> convert_args type_list CharacterWithLength ConstCharacter
368
369
%type <str> CharacterWithoutLength BitWithLength BitWithoutLength
369
- %type <str> ConstBit GenericType TableFuncElementList
370
+ %type <str> ConstBit GenericType TableFuncElementList execute_param_clause
371
+ %type <str> execute_param_list opt_sort_clause
370
372
371
373
%type <str> ECPGWhenever ECPGConnect connection_target ECPGOpen
372
374
%type <str> indicator ECPGExecute ECPGPrepare ecpg_using ecpg_into
@@ -454,6 +456,7 @@ stmt: AlterDatabaseSetStmt { output_statement($1, 0, connection); }
454
456
| CreateTrigStmt { output_statement($1 , 0 , connection); }
455
457
| CreateUserStmt { output_statement($1 , 0 , connection); }
456
458
| ClusterStmt { output_statement($1 , 0 , connection); }
459
+ | DeallocateStmt { output_statement($1 , 0 , connection); }
457
460
| DefineStmt { output_statement($1 , 0 , connection); }
458
461
| DropStmt { output_statement($1 , 0 , connection); }
459
462
| TruncateStmt { output_statement($1 , 0 , connection); }
@@ -466,13 +469,15 @@ stmt: AlterDatabaseSetStmt { output_statement($1, 0, connection); }
466
469
| DropRuleStmt { output_statement($1 , 0 , connection); }
467
470
| DropUserStmt { output_statement($1 , 0 , connection); }
468
471
| ExplainStmt { output_statement($1 , 0 , connection); }
472
+ | ExecuteStmt { output_statement($1 , 0 , connection); }
469
473
| FetchStmt { output_statement($1 , 1 , connection); }
470
474
| GrantStmt { output_statement($1 , 0 , connection); }
471
475
| IndexStmt { output_statement($1 , 0 , connection); }
472
476
| ListenStmt { output_statement($1 , 0 , connection); }
473
477
| UnlistenStmt { output_statement($1 , 0 , connection); }
474
478
| LockStmt { output_statement($1 , 0 , connection); }
475
479
| NotifyStmt { output_statement($1 , 0 , connection); }
480
+ | PrepareStmt { output_statement($1 , 0 , connection); }
476
481
| ReindexStmt { output_statement($1 , 0 , connection); }
477
482
| RemoveAggrStmt { output_statement($1 , 0 , connection); }
478
483
| RemoveOperStmt { output_statement($1 , 0 , connection); }
@@ -1122,10 +1127,10 @@ OptTableElementList: TableElementList
1122
1127
| /* EMPTY*/
1123
1128
{ $$ = EMPTY; }
1124
1129
;
1125
- TableElementList : TableElementList ' ,' TableElement
1126
- { $$ = cat_str(3 , $1 , make_str(" ," ), $3 ); }
1127
- | TableElement
1130
+ TableElementList : TableElement
1128
1131
{ $$ = $1 ; }
1132
+ | TableElementList ' ,' TableElement
1133
+ { $$ = cat_str(3 , $1 , make_str(" ," ), $3 ); }
1129
1134
;
1130
1135
1131
1136
TableElement : columnDef { $$ = $1 ; }
@@ -2358,6 +2363,54 @@ ExplainStmt: EXPLAIN opt_verbose OptimizableStmt
2358
2363
{ $$ = cat_str(4 , make_str(" explain" ), $2 , $3 , $4 ); }
2359
2364
;
2360
2365
2366
+ /* ****************************************************************************
2367
+ *
2368
+ * QUERY:
2369
+ * PREPARE <plan_name> [(args, ...)] AS <query>
2370
+ *
2371
+ *****************************************************************************/
2372
+
2373
+ PrepareStmt : PREPARE name prep_type_clause AS OptimizableStmt
2374
+ { $$ = cat_str(5 , make_str(" prepare" ), $2 , $3 , make_str(" as" ), $5 ); }
2375
+ ;
2376
+
2377
+ prep_type_clause : ' (' prep_type_list ' )' { $$ = cat_str(3 , make_str(" (" ), $2 , make_str(" )" )); }
2378
+ | /* EMPTY */ { $$ = EMPTY; }
2379
+ ;
2380
+
2381
+ prep_type_list : Typename { $$ = $1 ; }
2382
+ | prep_type_list ' ,' Typename { $$ = cat_str(3 , $1 , make_str(" ," ), $3 ); }
2383
+ ;
2384
+
2385
+ /* ****************************************************************************
2386
+ *
2387
+ * QUERY:
2388
+ * EXECUTE <plan_name> [(params, ...)] [INTO ...]
2389
+ *
2390
+ *****************************************************************************/
2391
+
2392
+ ExecuteStmt : EXECUTE name execute_param_clause into_clause
2393
+ { $$ = cat_str(4 , make_str(" execute" ), $2 , $3 , $4 ); }
2394
+ ;
2395
+
2396
+ execute_param_clause : ' (' execute_param_list ' )' { $$ = cat_str(3 , make_str(" (" ), $2 , make_str(" )" )); }
2397
+ | /* EMPTY */ { $$ = EMPTY; }
2398
+ ;
2399
+
2400
+ execute_param_list : a_expr { $$ = $1 ; }
2401
+ | execute_param_list ' ,' a_expr { $$ = cat_str(3 , $1 , make_str(" ," ), $3 ); }
2402
+ ;
2403
+
2404
+ /* ****************************************************************************
2405
+ *
2406
+ * QUERY:
2407
+ * DEALLOCATE [PREPARE] <plan_name>
2408
+ *
2409
+ *****************************************************************************/
2410
+
2411
+ DeallocateStmt : DEALLOCATE name { $$ = cat2_str(make_str(" deallocate" ), $2 ); }
2412
+ | DEALLOCATE PREPARE name { $$ = cat2_str(make_str(" deallocate prepare" ), $3 ); }
2413
+ ;
2361
2414
2362
2415
/* ****************************************************************************
2363
2416
* *
@@ -2523,12 +2576,12 @@ select_with_parens: '(' select_no_parens ')'
2523
2576
2524
2577
select_no_parens : simple_select
2525
2578
{ $$ = $1 ; }
2526
- | select_clause sort_clause opt_for_update_clause opt_select_limit
2527
- { $$ = cat_str(4 , $1 , $2 , $3 , $4 ); }
2528
- | select_clause for_update_clause opt_select_limit
2529
- { $$ = cat_str(3 , $1 , $2 , $3 ); }
2530
- | select_clause select_limit
2579
+ | select_clause sort_clause
2531
2580
{ $$ = cat2_str($1 , $2 ); }
2581
+ | select_clause opt_sort_clause for_update_clause opt_select_limit
2582
+ { $$ = cat_str(4 , $1 , $2 , $3 , $4 ); }
2583
+ | select_clause opt_sort_clause select_limit opt_for_update_clause
2584
+ { $$ = cat_str(4 , $1 , $2 , $3 , $4 ); }
2532
2585
;
2533
2586
2534
2587
select_clause : simple_select { $$ = $1 ; }
@@ -2605,6 +2658,10 @@ opt_distinct: DISTINCT
2605
2658
{ $$ = EMPTY; }
2606
2659
;
2607
2660
2661
+ opt_sort_clause : sort_clause { $$ = $1 ; }
2662
+ | /* EMPTY */ { $$ = EMPTY; }
2663
+ ;
2664
+
2608
2665
sort_clause : ORDER BY sortby_list
2609
2666
{ $$ = cat2_str(make_str(" order by" ), $3 ); }
2610
2667
;
@@ -2720,14 +2777,14 @@ table_ref: relation_expr
2720
2777
{ $$ = cat2_str($1 , $2 ); }
2721
2778
| func_table
2722
2779
{ $$ = $1 ; }
2723
- | func_table AS ' (' OptTableFuncElementList ' )'
2780
+ | func_table alias_clause
2781
+ { $$ = cat2_str($1 , $2 ); }
2782
+ | func_table AS ' (' TableFuncElementList ' )'
2724
2783
{ $$ =cat_str(4 , $1 , make_str(" as (" ), $4 , make_str(" )" )); }
2725
- | func_table AS ColId ' (' OptTableFuncElementList ' )'
2784
+ | func_table AS ColId ' (' TableFuncElementList ' )'
2726
2785
{ $$ =cat_str(6 , $1 , make_str(" as" ), $3 , make_str(" (" ), $5 , make_str(" )" )); }
2727
- | func_table ColId ' (' OptTableFuncElementList ' )'
2786
+ | func_table ColId ' (' TableFuncElementList ' )'
2728
2787
{ $$ =cat_str(5 , $1 , $2 , make_str(" (" ), $4 , make_str(" )" )); }
2729
- | func_table alias_clause
2730
- { $$ = cat2_str($1 , $2 ); }
2731
2788
| select_with_parens
2732
2789
{mmerror(PARSE_ERROR, ET_ERROR, " sub-SELECT in FROM must have an alias" );}
2733
2790
| select_with_parens alias_clause
@@ -2825,14 +2882,10 @@ where_clause: WHERE a_expr { $$ = cat2_str(make_str("where"), $2); }
2825
2882
| /* EMPTY*/ { $$ = EMPTY; /* no qualifiers */ }
2826
2883
;
2827
2884
2828
- OptTableFuncElementList : TableFuncElementList { $$ = $1 ; }
2829
- | /* EMPTY */ { $$ = EMPTY; }
2830
- ;
2831
-
2832
- TableFuncElementList : TableFuncElementList ' ,' TableFuncElement
2885
+ TableFuncElementList : TableFuncElement
2886
+ { $$ = $1 ; }
2887
+ | TableFuncElementList ' ,' TableFuncElement
2833
2888
{ $$ = cat_str(3 , $1 , ' ,' , $3 ); }
2834
- | TableFuncElement
2835
- { $$ = $1 ; }
2836
2889
;
2837
2890
2838
2891
TableFuncElement : ColId Typename { $$ = cat2_str($1 , $2 ); }
@@ -5102,6 +5155,7 @@ unreserved_keyword:
5102
5155
| CYCLE { $$ = make_str(" cycle" ); }
5103
5156
| DATABASE { $$ = make_str(" database" ); }
5104
5157
| DAY_P { $$ = make_str(" day" ); }
5158
+ | DEALLOCATE { $$ = make_str(" deallocate" ); }
5105
5159
| DECLARE { $$ = make_str(" declare" ); }
5106
5160
| DEFERRED { $$ = make_str(" deferred" ); }
5107
5161
| DELETE_P { $$ = make_str(" delete" ); }
@@ -5169,6 +5223,7 @@ unreserved_keyword:
5169
5223
| PATH_P { $$ = make_str(" path" ); }
5170
5224
| PENDANT { $$ = make_str(" pendant" ); }
5171
5225
| PRECISION { $$ = make_str(" precision" ); }
5226
+ | PREPARE { $$ = make_str(" prepare" ); }
5172
5227
| PRIOR { $$ = make_str(" prior" ); }
5173
5228
| PRIVILEGES { $$ = make_str(" privileges" ); }
5174
5229
| PROCEDURAL { $$ = make_str(" procedural" ); }
0 commit comments