1
- /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.205 2002/12/13 20:29:07 momjian Exp $ */
1
+ /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.206 2003/01/21 20:01:12 meskes Exp $ */
2
2
3
3
/* Copyright comment */
4
4
%{
@@ -290,7 +290,7 @@ make_name(void)
290
290
%type <str> comment_text ConstraintDeferrabilitySpec TableElementList
291
291
%type <str> key_match ColLabel SpecialRuleRelation ColId columnDef
292
292
%type <str> ColConstraint ColConstraintElem drop_type Bconst
293
- %type <str> TableConstraint OptTableElementList Xconst
293
+ %type <str> TableConstraint OptTableElementList Xconst opt_transaction
294
294
%type <str> ConstraintElem key_actions ColQualList type_name
295
295
%type <str> target_list target_el update_target_list alias_clause
296
296
%type <str> update_target_el opt_id qualified_name database_name
@@ -303,7 +303,7 @@ make_name(void)
303
303
%type <str> Typename SimpleTypename Numeric opt_float opt_numeric
304
304
%type <str> opt_decimal Character character opt_varying opt_charset
305
305
%type <str> opt_collate opt_timezone opt_interval table_ref
306
- %type <str> row_descriptor ConstDatetime trans_options
306
+ %type <str> row_descriptor ConstDatetime AlterDomainStmt
307
307
%type <str> SelectStmt into_clause OptTemp ConstraintAttributeSpec
308
308
%type <str> opt_table opt_all sort_clause sortby_list ConstraintAttr
309
309
%type <str> sortby OptUseOp qualified_name_list name_list ColId_or_Sconst
@@ -329,7 +329,7 @@ make_name(void)
329
329
%type <str> RemoveOperStmt RenameStmt all_Op opt_Trusted opt_lancompiler
330
330
%type <str> VariableSetStmt var_value zone_value VariableShowStmt
331
331
%type <str> VariableResetStmt AlterTableStmt from_list overlay_list
332
- %type <str> opt_trans user_list OptUserList OptUserElem relation_name
332
+ %type <str> user_list OptUserList OptUserElem relation_name
333
333
%type <str> CreateUserStmt AlterUserStmt CreateSeqStmt OptSeqList
334
334
%type <str> OptSeqElem TriggerForSpec TriggerForOpt TriggerForType
335
335
%type <str> DropTrigStmt TriggerOneEvent TriggerEvents RuleActionStmt
@@ -339,6 +339,7 @@ make_name(void)
339
339
%type <str> createdb_opt_list opt_encoding OptInherit opt_equal
340
340
%type <str> AlterUserSetStmt privilege_list privilege privilege_target
341
341
%type <str> opt_grant_grant_option opt_revoke_grant_option
342
+ %type <str> transaction_mode_list_or_empty transaction_mode_list
342
343
%type <str> function_with_argtypes_list function_with_argtypes
343
344
%type <str> DropdbStmt ClusterStmt grantee RevokeStmt Bit DropOpClassStmt
344
345
%type <str> GrantStmt privileges PosAllConst constraints_set_list
@@ -361,14 +362,14 @@ make_name(void)
361
362
%type <str> insert_target_list insert_column_item DropRuleStmt
362
363
%type <str> createfunc_opt_item set_rest var_list_or_default
363
364
%type <str> CreateFunctionStmt createfunc_opt_list func_table
364
- %type <str> DropUserStmt copy_from copy_opt_list opt_mode copy_opt_item
365
+ %type <str> DropUserStmt copy_from copy_opt_list copy_opt_item
365
366
%type <str> opt_oids TableLikeClause key_action opt_definition
366
367
%type <str> cast_context row r_expr qual_Op qual_all_Op opt_default
367
368
%type <str> CreateConversionStmt any_operator opclass_item_list
368
369
%type <str> iso_level type_list CharacterWithLength ConstCharacter
369
370
%type <str> CharacterWithoutLength BitWithLength BitWithoutLength
370
371
%type <str> ConstBit GenericType TableFuncElementList
371
- %type <str> opt_sort_clause
372
+ %type <str> opt_sort_clause transaction_access_mode
372
373
373
374
%type <str> ECPGWhenever ECPGConnect connection_target ECPGOpen
374
375
%type <str> indicator ECPGExecute ECPGPrepare opt_ecpg_using ecpg_into
@@ -435,6 +436,7 @@ opt_at: AT connection_target
435
436
};
436
437
437
438
stmt : AlterDatabaseSetStmt { output_statement($1 , 0 , connection); }
439
+ | AlterDomainStmt { output_statement($1 , 0 , connection); }
438
440
| AlterGroupStmt { output_statement($1 , 0 , connection); }
439
441
| AlterTableStmt { output_statement($1 , 0 , connection); }
440
442
| AlterUserStmt { output_statement($1 , 0 , connection); }
@@ -842,10 +844,10 @@ set_rest: ColId TO var_list_or_default
842
844
{ $$ = cat_str(3 , $1 , make_str(" =" ), $3 ); }
843
845
| TIME ZONE zone_value
844
846
{ $$ = cat2_str(make_str(" time zone" ), $3 ); }
845
- | TRANSACTION ISOLATION LEVEL iso_level opt_mode
846
- { $$ = cat_str( 3 , make_str(" transaction isolation level " ), $4 , $5 ); }
847
- | SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL iso_level
848
- { $$ = cat2_str(make_str(" session characteristics as transaction isolation level " ), $7 ); }
847
+ | TRANSACTION transaction_mode_list
848
+ { $$ = cat2_str( make_str(" transaction" ), $2 ); }
849
+ | SESSION CHARACTERISTICS AS TRANSACTION transaction_mode_list
850
+ { $$ = cat2_str(make_str(" session characteristics as transaction" ), $5 ); }
849
851
| NAMES opt_encoding
850
852
{ $$ = cat2_str(make_str(" names" ), $2 ); }
851
853
| SESSION AUTHORIZATION ColId_or_Sconst
@@ -870,12 +872,6 @@ iso_level: READ COMMITTED { $$ = make_str("read committed"); }
870
872
| SERIALIZABLE { $$ = make_str(" serializable" ); }
871
873
;
872
874
873
- opt_mode : READ WRITE { $$ = make_str(" read write" ); }
874
- | READ ONLY { mmerror(PARSE_ERROR, ET_ERROR, " SET TRANSACTION/READ ONLY is not yet supported" );
875
- $$ = make_str(" read only" ); }
876
- | /* EMPTY */ { $$ = EMPTY; }
877
- ;
878
-
879
875
var_value : opt_boolean { $$ = $1 ; }
880
876
| AllConst { $$ = $1 ; }
881
877
| ColId { $$ = $1 ; }
@@ -1657,12 +1653,7 @@ TruncateStmt: TRUNCATE opt_table qualified_name
1657
1653
*****************************************************************************/
1658
1654
1659
1655
FetchStmt : FETCH direction fetch_how_many from_in name ecpg_into
1660
- {
1661
- if (strcmp($2 , " relative" ) == 0 && atol($3 ) == 0L )
1662
- mmerror (PARSE_ERROR, ET_ERROR, " FETCH/RELATIVE at current position is not supported" );
1663
-
1664
- $$ = cat_str(5 , make_str(" fetch" ), $2 , $3 , $4 , $5 );
1665
- }
1656
+ { $$ = cat_str(5 , make_str(" fetch" ), $2 , $3 , $4 , $5 ); }
1666
1657
| FETCH fetch_how_many from_in name ecpg_into
1667
1658
{ $$ = cat_str(4 , make_str(" fetch" ), $2 , $3 , $4 ); }
1668
1659
| FETCH direction from_in name ecpg_into
@@ -1758,8 +1749,14 @@ GrantStmt: GRANT privileges ON privilege_target TO grantee_list opt_grant_grant_
1758
1749
{ $$ = cat_str(7 , make_str(" grant" ), $2 , make_str(" on" ), $4 , make_str(" to" ), $6 , $7 ); }
1759
1750
;
1760
1751
1761
- RevokeStmt : REVOKE opt_revoke_grant_option privileges ON privilege_target FROM grantee_list
1762
- { $$ = cat_str(8 , make_str(" revoke" ), $2 , $3 , make_str(" on" ), $5 , make_str(" from" ), $7 ); }
1752
+ RevokeStmt : REVOKE opt_revoke_grant_option privileges ON privilege_target FROM grantee_list opt_drop_behavior
1753
+ {
1754
+ if (strcmp($8 , " drop cascade" ) == 0 )
1755
+ mmerror (PARSE_ERROR, ET_WARNING, " Not implemented REVOKE ... CASCADE will be send to backend" );
1756
+
1757
+ $$ = cat_str(9 , make_str(" revoke" ), $2 , $3 , make_str(" on" ), $5 , make_str(" from" ), $7 , $8 );
1758
+ }
1759
+
1763
1760
;
1764
1761
1765
1762
privileges : ALL PRIVILEGES { $$ = make_str(" all privileges" ); }
@@ -2178,22 +2175,40 @@ UnlistenStmt: UNLISTEN qualified_name
2178
2175
* (also older versions END / ABORT)
2179
2176
*
2180
2177
*****************************************************************************/
2181
- TransactionStmt : ABORT_TRANS opt_trans { $$ = make_str(" rollback" ); }
2182
- | BEGIN_TRANS opt_trans { $$ = make_str(" begin transaction" ); }
2183
- | START TRANSACTION trans_options { $$ = cat2_str(make_str(" start transaction" ), $3 ); }
2184
- | COMMIT opt_trans { $$ = make_str(" commit" ); }
2185
- | END_TRANS opt_trans { $$ = make_str(" commit" ); }
2186
- | ROLLBACK opt_trans { $$ = make_str(" rollback" ); }
2187
- ;
2188
-
2189
- trans_options : ISOLATION LEVEL iso_level { $$ = cat2_str(make_str(" isolation level" ), $3 ); }
2178
+ TransactionStmt : ABORT_TRANS opt_transaction { $$ = make_str(" rollback" ); }
2179
+ | BEGIN_TRANS opt_transaction { $$ = make_str(" begin transaction" ); }
2180
+ | START TRANSACTION transaction_mode_list_or_empty { $$ = cat2_str(make_str(" start transaction" ), $3 ); }
2181
+ | COMMIT opt_transaction { $$ = make_str(" commit" ); }
2182
+ | END_TRANS opt_transaction { $$ = make_str(" commit" ); }
2183
+ | ROLLBACK opt_transaction { $$ = make_str(" rollback" ); }
2190
2184
;
2191
2185
2192
- opt_trans : WORK { $$ = EMPTY; }
2186
+ opt_transaction : WORK { $$ = EMPTY; }
2193
2187
| TRANSACTION { $$ = EMPTY; }
2194
2188
| /* EMPTY*/ { $$ = EMPTY; }
2195
2189
;
2196
2190
2191
+ transaction_mode_list :
2192
+ ISOLATION LEVEL iso_level
2193
+ { $$ = cat2_str(make_str(" isolation level" ), $3 ); }
2194
+ | transaction_access_mode
2195
+ { $$ = $1 ; }
2196
+ | ISOLATION LEVEL iso_level transaction_access_mode
2197
+ { $$ = cat_str(3 , make_str(" isolation level" ), $3 , $4 ); }
2198
+ | transaction_access_mode ISOLATION LEVEL iso_level
2199
+ { $$ = cat_str(3 , $1 , make_str(" isolation level" ), $4 ); }
2200
+ ;
2201
+
2202
+ transaction_mode_list_or_empty :
2203
+ transaction_mode_list { $$ = $1 ; }
2204
+ | /* EMPTY */ { $$ = EMPTY; }
2205
+ ;
2206
+
2207
+ transaction_access_mode :
2208
+ READ ONLY { $$ = make_str(" read only" ); }
2209
+ | READ WRITE { $$ = make_str(" read write" ); }
2210
+ ;
2211
+
2197
2212
/* ****************************************************************************
2198
2213
*
2199
2214
* QUERY:
@@ -2297,6 +2312,21 @@ CreateDomainStmt: CREATE DOMAIN_P any_name opt_as Typename ColQualList opt_coll
2297
2312
}
2298
2313
;
2299
2314
2315
+ AlterDomainStmt :
2316
+ ALTER DOMAIN_P any_name alter_column_default
2317
+ { $$ = cat_str(3 , make_str(" alter domain" ), $3 , $4 ); }
2318
+ | ALTER DOMAIN_P any_name DROP NOT NULL_P
2319
+ { $$ = cat_str(3 , make_str(" alter domain" ), $3 , make_str(" drop not null" )); }
2320
+ | ALTER DOMAIN_P any_name SET NOT NULL_P
2321
+ { $$ = cat_str(3 , make_str(" alter domain" ), $3 , make_str(" set not null" )); }
2322
+ | ALTER DOMAIN_P any_name ADD TableConstraint
2323
+ { $$ = cat_str(4 , make_str(" alter domain" ), $3 , make_str(" add" ), $5 ); }
2324
+ | ALTER DOMAIN_P any_name DROP CONSTRAINT name opt_drop_behavior
2325
+ { $$ = cat_str(5 , make_str(" alter domain" ), $3 , make_str(" drop constraint" ), $6 , $7 ); }
2326
+ | ALTER DOMAIN_P any_name OWNER TO UserId
2327
+ { $$ = cat_str(4 , make_str(" alter domain" ), $3 , make_str(" owner to" ), $6 ); }
2328
+ ;
2329
+
2300
2330
opt_as : AS {$$ = make_str(" as" ); }
2301
2331
| /* EMPTY */ {$$ = EMPTY; }
2302
2332
;
@@ -5169,8 +5199,8 @@ unreserved_keyword:
5169
5199
| INSTEAD { $$ = make_str(" instead" ); }
5170
5200
| ISOLATION { $$ = make_str(" isolation" ); }
5171
5201
| KEY { $$ = make_str(" key" ); }
5172
- | LANGUAGE { $$ = make_str(" language" ); }
5173
5202
| LANCOMPILER { $$ = make_str(" lancompiler" ); }
5203
+ | LANGUAGE { $$ = make_str(" language" ); }
5174
5204
| LAST { $$ = make_str(" last" ); }
5175
5205
| LEVEL { $$ = make_str(" level" ); }
5176
5206
| LISTEN { $$ = make_str(" listen" ); }
@@ -5422,7 +5452,6 @@ reserved_keyword:
5422
5452
| UNIQUE { $$ = make_str(" unique" ); }
5423
5453
| USER { $$ = make_str(" user" ); }
5424
5454
| USING { $$ = make_str(" using" ); }
5425
- | VALUE { $$ = make_str(" value" ); }
5426
5455
| WHEN { $$ = make_str(" when" ); }
5427
5456
| WHERE { $$ = make_str(" where" ); }
5428
5457
;
0 commit comments