1
- /* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.342 2007/03/27 03:25:28 tgl Exp $ */
1
+ /* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.343 2007/05/10 09:53:17 meskes Exp $ */
2
2
3
3
/* Copyright comment */
4
4
%{
@@ -349,7 +349,7 @@ add_additional_variables(char *name, bool insert)
349
349
SQL_CONTINUE SQL_COUNT SQL_CURRENT SQL_DATA
350
350
SQL_DATETIME_INTERVAL_CODE
351
351
SQL_DATETIME_INTERVAL_PRECISION SQL_DESCRIBE
352
- SQL_DESCRIPTOR SQL_DISCONNECT SQL_ENUM SQL_FOUND
352
+ SQL_DESCRIPTOR SQL_DISCONNECT SQL_FOUND
353
353
SQL_FREE SQL_GO SQL_GOTO SQL_IDENTIFIED
354
354
SQL_INDICATOR SQL_KEY_MEMBER SQL_LENGTH
355
355
SQL_LONG SQL_NULLABLE SQL_OCTET_LENGTH
@@ -371,7 +371,7 @@ add_additional_variables(char *name, bool insert)
371
371
372
372
/* ordinary key words in alphabetical order */
373
373
%token <keyword> ABORT_P ABSOLUTE_P ACCESS ACTION ADD_P ADMIN AFTER
374
- AGGREGATE ALL ALSO ALTER ANALYSE ANALYZE AND ANY ARRAY AS ASC
374
+ AGGREGATE ALL ALSO ALTER ALWAYS ANALYSE ANALYZE AND ANY ARRAY AS ASC
375
375
ASSERTION ASSIGNMENT ASYMMETRIC AT AUTHORIZATION
376
376
377
377
BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT
@@ -387,9 +387,9 @@ add_additional_variables(char *name, bool insert)
387
387
388
388
DATABASE DAY_P DEALLOCATE DEC DECIMAL_P DECLARE DEFAULT DEFAULTS
389
389
DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS
390
- DESC DISABLE_P DISTINCT DO DOCUMENT_P DOMAIN_P DOUBLE_P DROP
390
+ DESC DISABLE_P DISCARD DISTINCT DO DOCUMENT_P DOMAIN_P DOUBLE_P DROP
391
391
392
- EACH ELSE ENABLE_P ENCODING ENCRYPTED END_P ESCAPE EXCEPT EXCLUSIVE EXCLUDING
392
+ EACH ELSE ENABLE_P ENCODING ENCRYPTED END_P ENUM_P ESCAPE EXCEPT EXCLUSIVE EXCLUDING
393
393
EXECUTE EXISTS EXPLAIN EXTERNAL EXTRACT
394
394
395
395
FALSE_P FAMILY FETCH FIRST_P FLOAT_P FOR FORCE FOREIGN FORWARD FREEZE FROM
@@ -421,15 +421,15 @@ add_additional_variables(char *name, bool insert)
421
421
OBJECT_P OF OFF OFFSET OIDS OLD ON ONLY OPERATOR OPTION OR ORDER
422
422
OUT_P OUTER_P OVERLAPS OVERLAY OWNED OWNER
423
423
424
- PARTIAL PASSWORD PLACING POSITION
424
+ PARTIAL PASSWORD PLACING PLANS POSITION
425
425
PRECISION PRESERVE PREPARE PREPARED PRIMARY
426
426
PRIOR PRIVILEGES PROCEDURAL PROCEDURE
427
427
428
428
QUOTE
429
429
430
430
READ REAL REASSIGN RECHECK REFERENCES REINDEX RELATIVE_P RELEASE RENAME
431
- REPEATABLE REPLACE RESET RESTART RESTRICT RETURNING RETURNS REVOKE RIGHT
432
- ROLE ROLLBACK ROW ROWS RULE
431
+ REPEATABLE REPLACE REPLICA RESET RESTART RESTRICT RETURNING RETURNS REVOKE
432
+ RIGHT ROLE ROLLBACK ROW ROWS RULE
433
433
434
434
SAVEPOINT SCHEMA SCROLL SECOND_P SECURITY SELECT SEQUENCE
435
435
SERIALIZABLE SESSION SESSION_USER SET SETOF SHARE
@@ -504,7 +504,7 @@ add_additional_variables(char *name, bool insert)
504
504
%type <str> key_match ColLabel SpecialRuleRelation ColId columnDef
505
505
%type <str> ColConstraint ColConstraintElem drop_type Bconst Iresult
506
506
%type <str> TableConstraint OptTableElementList Xconst opt_transaction
507
- %type <str> ConstraintElem key_actions ColQualList
507
+ %type <str> ConstraintElem key_actions ColQualList cluster_index_specification
508
508
%type <str> target_list target_el alias_clause type_func_name_keyword
509
509
%type <str> qualified_name database_name alter_using type_function_name
510
510
%type <str> access_method attr_name index_name name func_name
@@ -513,8 +513,8 @@ add_additional_variables(char *name, bool insert)
513
513
%type <str> opt_indirection expr_list extract_list extract_arg
514
514
%type <str> position_list substr_list substr_from alter_column_default
515
515
%type <str> trim_list in_expr substr_for attrs TableFuncElement
516
- %type <str> Typename SimpleTypename Numeric opt_float
517
- %type <str> Character character opt_varying opt_charset
516
+ %type <str> Typename SimpleTypename Numeric opt_float DiscardStmt
517
+ %type <str> Character character opt_varying opt_charset enum_val_list
518
518
%type <str> opt_timezone opt_interval table_ref fetch_direction
519
519
%type <str> ConstDatetime AlterDomainStmt AlterSeqStmt alter_rel_cmds
520
520
%type <str> SelectStmt into_clause OptTemp ConstraintAttributeSpec
@@ -736,6 +736,7 @@ stmt: AlterDatabaseStmt { output_statement($1, 0, connection); }
736
736
| DeclareCursorStmt { output_simple_statement($1 ); }
737
737
| DefineStmt { output_statement($1 , 0 , connection); }
738
738
| DeleteStmt { output_statement($1 , 1 , connection); }
739
+ | DiscardStmt { output_statement($1 , 1 , connection); }
739
740
| DropAssertStmt { output_statement($1 , 0 , connection); }
740
741
| DropCastStmt { output_statement($1 , 0 , connection); }
741
742
| DropGroupStmt { output_statement($1 , 0 , connection); }
@@ -1278,6 +1279,12 @@ constraints_set_mode: DEFERRED { $$ = make_str("deferred"); }
1278
1279
CheckPointStmt : CHECKPOINT { $$ = make_str(" checkpoint" ); }
1279
1280
;
1280
1281
1282
+ DiscardStmt :
1283
+ DISCARD ALL { $$ = make_str(" discard all" ); }
1284
+ | DISCARD TEMP { $$ = make_str(" discard temp" ); }
1285
+ | DISCARD TEMPORARY { $$ = make_str(" discard temporary" ); }
1286
+ | DISCARD PLANS { $$ = make_str(" discard plans" ); }
1287
+ ;
1281
1288
1282
1289
/* ****************************************************************************
1283
1290
*
@@ -1341,6 +1348,12 @@ alter_table_cmd:
1341
1348
/* ALTER TABLE <name> ENABLE TRIGGER <trig> */
1342
1349
| ENABLE_P TRIGGER name
1343
1350
{ $$ = cat2_str(make_str(" enable trigger" ), $3 ); }
1351
+ /* ALTER TABLE <name> ENABLE ALWAYS TRIGGER <trig> */
1352
+ | ENABLE_P ALWAYS TRIGGER name
1353
+ { $$ = cat2_str(make_str(" enable always trigger" ), $4 ); }
1354
+ /* ALTER TABLE <name> ENABLE REPLICA TRIGGER <trig> */
1355
+ | ENABLE_P REPLICA TRIGGER name
1356
+ { $$ = cat2_str(make_str(" enable replica trigger" ), $4 ); }
1344
1357
/* ALTER TABLE <name> ENABLE TRIGGER ALL */
1345
1358
| ENABLE_P TRIGGER ALL
1346
1359
{ $$ = make_str(" enable trigger all" ); }
@@ -1356,6 +1369,18 @@ alter_table_cmd:
1356
1369
/* ALTER TABLE <name> DISABLE TRIGGER USER */
1357
1370
| DISABLE_P TRIGGER USER
1358
1371
{ $$ = make_str(" disable trigger user" ); }
1372
+ /* ALTER TABLE <name> ENABLE RULE <rule> */
1373
+ | ENABLE_P RULE name
1374
+ { $$ = cat2_str(make_str(" enable rule" ), $3 ); }
1375
+ /* ALTER TABLE <name> ENABLE ALWAYS RULE <rule> */
1376
+ | ENABLE_P ALWAYS RULE name
1377
+ { $$ = cat2_str(make_str(" enable always rule" ), $4 ); }
1378
+ /* ALTER TABLE <name> ENABLE REPLICA RULE <rule> */
1379
+ | ENABLE_P REPLICA RULE name
1380
+ { $$ = cat2_str(make_str(" enable replica rule" ), $4 ); }
1381
+ /* ALTER TABLE <name> DISABLE RULE <rule> */
1382
+ | DISABLE_P RULE name
1383
+ { $$ = cat2_str(make_str(" disable rule" ), $3 ); }
1359
1384
/* ALTER TABLE <name> ALTER INHERITS ADD <parent> */
1360
1385
| INHERIT qualified_name
1361
1386
{ $$ = cat2_str(make_str(" inherit" ), $2 ); }
@@ -1407,6 +1432,8 @@ alter_using: USING a_expr { $$ = cat2_str(make_str("using"), $2); }
1407
1432
1408
1433
ClosePortalStmt : CLOSE name
1409
1434
{ $$ = cat2_str(make_str(" close" ), $2 ); }
1435
+ | CLOSE ALL
1436
+ { $$ = make_str(" close all" ); }
1410
1437
;
1411
1438
1412
1439
CopyStmt : COPY opt_binary qualified_name opt_oids copy_from
@@ -2009,6 +2036,8 @@ DefineStmt: CREATE AGGREGATE func_name aggr_args definition
2009
2036
{ $$ = cat2_str(make_str(" create type" ), $3 ); }
2010
2037
| CREATE TYPE_P any_name AS ' (' TableFuncElementList ' )'
2011
2038
{ $$ = cat_str(5 , make_str(" create type" ), $3 , make_str(" as (" ), $6 , make_str(" )" )); }
2039
+ | CREATE TYPE_P any_name AS ENUM_P ' (' enum_val_list ' )'
2040
+ { $$ = cat_str(5 , make_str(" create type" ), $3 , make_str(" as enum (" ), $7 , make_str(" )" )); }
2012
2041
;
2013
2042
2014
2043
definition : ' (' def_list ' )'
@@ -2044,6 +2073,9 @@ old_aggr_list: old_aggr_elem { $$ = $1; }
2044
2073
old_aggr_elem : ident ' =' def_arg { $$ = cat_str(3 , $1 , make_str(" =" ), $3 ); }
2045
2074
;
2046
2075
2076
+ enum_val_list : StringConst { $$ = $1 ; }
2077
+ | enum_val_list ' ,' StringConst { $$ = cat_str(3 , $1 , make_str(" ," ), $3 );}
2078
+ ;
2047
2079
2048
2080
CreateOpClassStmt : CREATE OPERATOR CLASS any_name opt_default FOR TYPE_P Typename
2049
2081
USING access_method opt_opfamily AS opclass_item_list
@@ -2688,8 +2720,8 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name
2688
2720
{ $$ = cat_str(5 , make_str(" alter function" ), $3 , $4 , make_str(" rename to" ), $7 ); }
2689
2721
| ALTER GROUP_P RoleId RENAME TO RoleId
2690
2722
{ $$ = cat_str(4 , make_str(" alter group" ), $3 , make_str(" rename to" ), $6 ); }
2691
- | ALTER LANGUAGE name RENAME TO name
2692
- { $$ = cat_str(4 , make_str(" alter language" ), $3 , make_str(" rename to" ), $6 ); }
2723
+ | ALTER opt_procedural LANGUAGE name RENAME TO name
2724
+ { $$ = cat_str(6 , make_str(" alter" ), $2 , make_str( " language" ), $4 , make_str(" rename to" ), $7 ); }
2693
2725
| ALTER OPERATOR CLASS any_name USING access_method RENAME TO name
2694
2726
{ $$ = cat_str(6 , make_str(" alter operator class" ), $4 , make_str(" using" ), $6 , make_str(" rename to" ), $9 ); }
2695
2727
| ALTER OPERATOR FAMILY any_name USING access_method RENAME TO name
@@ -2751,6 +2783,8 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId
2751
2783
{ $$ = cat_str(4 , make_str(" alter domain" ), $3 , make_str(" owner to" ), $6 ); }
2752
2784
| ALTER FUNCTION func_name func_args OWNER TO RoleId
2753
2785
{ $$ = cat_str(5 , make_str(" alter function" ), $3 , $4 , make_str(" owner to" ), $7 ); }
2786
+ | ALTER opt_procedural LANGUAGE name OWNER TO RoleId
2787
+ { $$ = cat_str(6 , make_str(" alter" ), $2 , make_str(" language" ), $4 , make_str(" owner to" ), $7 ); }
2754
2788
| ALTER OPERATOR any_operator ' (' oper_argtypes ' )' OWNER TO RoleId
2755
2789
{ $$ = cat_str(6 , make_str(" alter operator" ), $3 , make_str(" (" ), $5 , make_str(" ) owner to" ), $9 ); }
2756
2790
| ALTER OPERATOR CLASS any_name USING access_method OWNER TO RoleId
@@ -2831,15 +2865,15 @@ DropRuleStmt: DROP RULE name ON qualified_name opt_drop_behavior
2831
2865
*
2832
2866
*****************************************************************************/
2833
2867
2834
- NotifyStmt : NOTIFY qualified_name
2868
+ NotifyStmt : NOTIFY ColId
2835
2869
{ $$ = cat2_str(make_str(" notify" ), $2 ); }
2836
2870
;
2837
2871
2838
- ListenStmt : LISTEN qualified_name
2872
+ ListenStmt : LISTEN ColId
2839
2873
{ $$ = cat2_str(make_str(" listen" ), $2 ); }
2840
2874
;
2841
2875
2842
- UnlistenStmt : UNLISTEN qualified_name
2876
+ UnlistenStmt : UNLISTEN ColId
2843
2877
{ $$ = cat2_str(make_str(" unlisten" ), $2 ); }
2844
2878
| UNLISTEN ' *'
2845
2879
{ $$ = make_str(" unlisten *" ); }
@@ -3075,14 +3109,18 @@ CreateConversionStmt:
3075
3109
*
3076
3110
*****************************************************************************/
3077
3111
3078
- ClusterStmt : CLUSTER index_name ON qualified_name
3079
- { $$ = cat_str(4 , make_str(" cluster" ), $2 , make_str(" on" ), $4 ); }
3080
- | CLUSTER qualified_name
3081
- { $$ = cat2_str(make_str(" cluster" ), $2 ); }
3112
+ ClusterStmt : CLUSTER qualified_name cluster_index_specification
3113
+ { $$ = cat_str(3 ,make_str(" cluster" ), $2 , $3 ); }
3082
3114
| CLUSTER
3083
3115
{ $$ = make_str(" cluster" ); }
3116
+ | CLUSTER qualified_name ON qualified_name
3117
+ { $$ = cat_str(4 , make_str(" cluster" ), $2 , make_str(" on" ), $4 ); }
3084
3118
;
3085
3119
3120
+ cluster_index_specification :
3121
+ USING index_name { $$ = cat2_str(make_str(" using" ), $2 ); }
3122
+ | /* EMPTY*/ { $$ = EMPTY; }
3123
+ ;
3086
3124
3087
3125
/* ****************************************************************************
3088
3126
*
@@ -3185,6 +3223,8 @@ execute_param_clause: '(' expr_list ')' { $$ = cat_str(3, make_str("("), $2, mak
3185
3223
3186
3224
DeallocateStmt: DEALLOCATE name { $$ = cat2_str(make_str("deallocate"), $2); }
3187
3225
| DEALLOCATE PREPARE name { $$ = cat2_str(make_str("deallocate prepare"), $3); }
3226
+ | DEALLOCATE ALL { $$ = make_str("deallocate all"); }
3227
+ | DEALLOCATE PREPARE ALL { $$ = make_str("deallocate prepare all"); }
3188
3228
;
3189
3229
*/
3190
3230
@@ -5401,11 +5441,11 @@ var_type: simple_type
5401
5441
}
5402
5442
;
5403
5443
5404
- enum_type : SQL_ENUM symbol enum_definition
5444
+ enum_type : ENUM_P symbol enum_definition
5405
5445
{ $$ = cat_str(3 , make_str(" enum" ), $2 , $3 ); }
5406
- | SQL_ENUM enum_definition
5446
+ | ENUM_P enum_definition
5407
5447
{ $$ = cat2_str(make_str(" enum" ), $2 ); }
5408
- | SQL_ENUM symbol
5448
+ | ENUM_P symbol
5409
5449
{ $$ = cat2_str(make_str(" enum" ), $2 ); }
5410
5450
;
5411
5451
@@ -6367,6 +6407,7 @@ ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); }
6367
6407
| AGGREGATE { $$ = make_str(" aggregate" ); }
6368
6408
| ALSO { $$ = make_str(" also" ); }
6369
6409
| ALTER { $$ = make_str(" alter" ); }
6410
+ | ALWAYS { $$ = make_str(" always" ); }
6370
6411
| ASSERTION { $$ = make_str(" assertion" ); }
6371
6412
| ASSIGNMENT { $$ = make_str(" assignment" ); }
6372
6413
| AT { $$ = make_str(" at" ); }
@@ -6409,6 +6450,7 @@ ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); }
6409
6450
| DELIMITER { $$ = make_str(" delimiter" ); }
6410
6451
| DELIMITERS { $$ = make_str(" delimiters" ); }
6411
6452
| DISABLE_P { $$ = make_str(" disable" ); }
6453
+ | DISCARD { $$ = make_str(" discard" ); }
6412
6454
| DOCUMENT_P { $$ = make_str(" document" ); }
6413
6455
| DOMAIN_P { $$ = make_str(" domain" ); }
6414
6456
| DOUBLE_P { $$ = make_str(" double" ); }
@@ -6417,6 +6459,7 @@ ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); }
6417
6459
| ENABLE_P { $$ = make_str(" enable" ); }
6418
6460
| ENCODING { $$ = make_str(" encoding" ); }
6419
6461
| ENCRYPTED { $$ = make_str(" encrypted" ); }
6462
+ /* | ENUM_P { $$ = make_str("enum"); }*/
6420
6463
| ESCAPE { $$ = make_str(" escape" ); }
6421
6464
| EXCLUDING { $$ = make_str(" excluding" ); }
6422
6465
| EXCLUSIVE { $$ = make_str(" exclusive" ); }
@@ -6491,6 +6534,7 @@ ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); }
6491
6534
| OWNER { $$ = make_str(" owner" ); }
6492
6535
| PARTIAL { $$ = make_str(" partial" ); }
6493
6536
| PASSWORD { $$ = make_str(" password" ); }
6537
+ | PLANS { $$ = make_str(" plans" ); }
6494
6538
| PREPARE { $$ = make_str(" prepare" ); }
6495
6539
| PREPARED { $$ = make_str(" prepared" ); }
6496
6540
| PRESERVE { $$ = make_str(" preserver" ); }
@@ -6508,6 +6552,7 @@ ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); }
6508
6552
| RENAME { $$ = make_str(" rename" ); }
6509
6553
| REPEATABLE { $$ = make_str(" repeatable" ); }
6510
6554
| REPLACE { $$ = make_str(" replace" ); }
6555
+ | REPLICA { $$ = make_str(" replica" ); }
6511
6556
| RESET { $$ = make_str(" reset" ); }
6512
6557
| RESTART { $$ = make_str(" restart" ); }
6513
6558
| RESTRICT { $$ = make_str(" restrict" ); }
@@ -6903,7 +6948,7 @@ c_anything: IDENT { $$ = $1; }
6903
6948
| S_TYPEDEF { $$ = make_str(" typedef" ); }
6904
6949
| S_VOLATILE { $$ = make_str(" volatile" ); }
6905
6950
| SQL_BOOL { $$ = make_str(" bool" ); }
6906
- | SQL_ENUM { $$ = make_str(" enum" ); }
6951
+ | ENUM_P { $$ = make_str(" enum" ); }
6907
6952
| HOUR_P { $$ = make_str(" hour" ); }
6908
6953
| INT_P { $$ = make_str(" int" ); }
6909
6954
| SQL_LONG { $$ = make_str(" long" ); }
0 commit comments