1
- /* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.367 2008/06/04 12:23:34 meskes Exp $*/
1
+ /* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.368 2008/06/26 08:04:05 meskes Exp $*/
2
2
3
3
/* Copyright comment*/
4
4
%{
@@ -556,15 +556,15 @@ add_typedef(char *name, char * dimension, char * length, enum ECPGttype type_enu
556
556
%type <str> target_list target_el alias_clause type_func_name_keyword
557
557
%type <str> qualified_name database_name alter_using type_function_name
558
558
%type <str> access_method attr_name index_name name func_name opt_restart_seqs
559
- %type <str> file_name AexprConst c_expr ConstTypename var_list
559
+ %type <str> file_name AexprConst c_expr ConstTypename var_list
560
560
%type <str> a_expr b_expr TruncateStmt CommentStmt OnCommitOption opt_by
561
- %type <str> opt_indirection expr_list extract_list extract_arg
561
+ %type <str> opt_indirection expr_list extract_list extract_arg OptSeqOptList
562
562
%type <str> position_list substr_list substr_from alter_column_default
563
563
%type <str> trim_list in_expr substr_for attrs TableFuncElement
564
564
%type <str> Typename SimpleTypename Numeric opt_float DiscardStmt
565
565
%type <str> Character character opt_varying opt_charset enum_val_list
566
566
%type <str> opt_timezone opt_interval table_ref fetch_direction
567
- %type <str> ConstDatetime AlterDomainStmt AlterSeqStmt alter_rel_cmds
567
+ %type <str> ConstDatetime AlterDomainStmt AlterSeqStmt
568
568
%type <str> SelectStmt into_clause OptTemp ConstraintAttributeSpec
569
569
%type <str> opt_table opt_all sort_clause sortby_list ConstraintAttr
570
570
%type <str> sortby qualified_name_list name_list ColId_or_Sconst
@@ -591,8 +591,8 @@ add_typedef(char *name, char * dimension, char * length, enum ECPGttype type_enu
591
591
%type <str> VariableSetStmt var_value zone_value VariableShowStmt
592
592
%type <str> VariableResetStmt AlterTableStmt from_list overlay_list
593
593
%type <str> relation_name OptTableSpace LockStmt opt_lock
594
- %type <str> CreateUserStmt AlterUserStmt CreateSeqStmt OptSeqList
595
- %type <str> OptSeqElem TriggerForSpec TriggerForOpt TriggerForType
594
+ %type <str> CreateUserStmt AlterUserStmt CreateSeqStmt SeqOptList
595
+ %type <str> SeqOptElem TriggerForSpec TriggerForOpt TriggerForType
596
596
%type <str> DropTrigStmt TriggerOneEvent TriggerEvents RuleActionStmt
597
597
%type <str> TriggerActionTime CreateTrigStmt DropPLangStmt DropCastStmt
598
598
%type <str> CreatePLangStmt TriggerFuncArgs TriggerFuncArg simple_select
@@ -621,7 +621,7 @@ add_typedef(char *name, char * dimension, char * length, enum ECPGttype type_enu
621
621
%type <str> handler_name any_name_list any_name opt_as insert_column_list
622
622
%type <str> columnref values_clause AllConstVar prep_type_clause ExecuteStmt
623
623
%type <str> insert_column_item DropRuleStmt ctext_expr execute_param_clause
624
- %type <str> createfunc_opt_item set_rest alter_rel_cmd
624
+ %type <str> createfunc_opt_item set_rest
625
625
%type <str> CreateFunctionStmt createfunc_opt_list func_table
626
626
%type <str> DropUserStmt copy_from copy_opt_list copy_opt_item
627
627
%type <str> opt_oids TableLikeClause key_action opt_definition
@@ -1347,55 +1347,58 @@ DiscardStmt:
1347
1347
1348
1348
/* ****************************************************************************
1349
1349
*
1350
- *ALTER [ TABLE | INDEX ] variations
1350
+ *ALTER [ TABLE | INDEX| SEQUENCE | VIEW ] variations
1351
1351
*
1352
1352
*****************************************************************************/
1353
1353
1354
1354
AlterTableStmt :
1355
1355
ALTER TABLE relation_expr alter_table_cmds
1356
1356
{$$ = cat_str(3 , make_str(" alter table" ),$3 ,$4 ); }
1357
- | ALTER INDEX relation_expr alter_rel_cmds
1358
- {$$ = cat_str(3 , make_str(" alter table" ),$3 ,$4 ); }
1357
+ | ALTER INDEX relation_expr alter_table_cmds
1358
+ {$$ = cat_str(3 , make_str(" alter index" ),$3 ,$4 ); }
1359
+ | ALTER SEQUENCE relation_expr alter_table_cmds
1360
+ {$$ = cat_str(3 , make_str(" alter sequence" ),$3 ,$4 ); }
1361
+ | ALTER VIEW relation_expr alter_table_cmds
1362
+ {$$ = cat_str(3 , make_str(" alter view" ),$3 ,$4 ); }
1359
1363
;
1360
1364
1361
- /* Subcommands that are for ALTER TABLE only*/
1362
1365
alter_table_cmds :
1363
1366
alter_table_cmd {$$ =$1 ; }
1364
1367
| alter_table_cmds ' ,' alter_table_cmd {$$ = cat_str(3 ,$1 , make_str(" ," ),$3 ); }
1365
1368
;
1366
1369
1367
1370
alter_table_cmd :
1371
+ /* ALTER TABLE <name> ADD [COLUMN] <coldef>*/
1368
1372
ADD_P opt_column columnDef
1369
- /* ALTER TABLE <relation> ADD [COLUMN] <coldef>*/
1370
1373
{$$ = cat_str(3 , make_str(" add" ),$2 ,$3 ); }
1371
- /* ALTER TABLE <relation > ALTER [COLUMN] <colname> {SET DEFAULT <expr>|DROP DEFAULT}*/
1374
+ /* ALTER TABLE <name > ALTER [COLUMN] <colname> {SET DEFAULT <expr>|DROP DEFAULT}*/
1372
1375
| ALTER opt_column ColId alter_column_default
1373
1376
{$$ = cat_str(4 , make_str(" alter" ),$2 ,$3 ,$4 ); }
1374
- /* ALTER TABLE <relation > ALTER [COLUMN] <colname> DROP NOT NULL*/
1377
+ /* ALTER TABLE <name > ALTER [COLUMN] <colname> DROP NOT NULL*/
1375
1378
| ALTER opt_column ColId DROP NOT NULL_P
1376
1379
{$$ = cat_str(4 , make_str(" alter" ),$2 ,$3 , make_str(" drop not null" )); }
1377
- /* ALTER TABLE <relation > ALTER [COLUMN] <colname> SET NOT NULL*/
1380
+ /* ALTER TABLE <name > ALTER [COLUMN] <colname> SET NOT NULL*/
1378
1381
| ALTER opt_column ColId SET NOT NULL_P
1379
1382
{$$ = cat_str(4 , make_str(" alter" ),$2 ,$3 , make_str(" set not null" )); }
1380
- /* ALTER TABLE <relation > ALTER [COLUMN] <colname> SET STATISTICS <IntegerOnly>*/
1383
+ /* ALTER TABLE <name > ALTER [COLUMN] <colname> SET STATISTICS <IntegerOnly>*/
1381
1384
| ALTER opt_column ColId SET STATISTICS PosIntConst
1382
1385
{$$ = cat_str(5 , make_str(" alter" ),$2 ,$3 , make_str(" set statistics" ),$6 ); }
1383
- /* ALTER TABLE <relation > ALTER [COLUMN] <colname> SET STORAGE <storagemode>*/
1386
+ /* ALTER TABLE <name > ALTER [COLUMN] <colname> SET STORAGE <storagemode>*/
1384
1387
| ALTER opt_column ColId SET STORAGE ColId
1385
1388
{$$ = cat_str(5 , make_str(" alter" ),$2 ,$3 , make_str(" set storage" ),$6 ); }
1386
- /* ALTER TABLE <relation > DROP [COLUMN] <colname> {RESTRICT|CASCADE}*/
1389
+ /* ALTER TABLE <name > DROP [COLUMN] <colname> {RESTRICT|CASCADE}*/
1387
1390
| DROP opt_column ColId opt_drop_behavior
1388
1391
{$$ = cat_str(4 , make_str(" drop" ),$2 ,$3 ,$4 ); }
1389
- /* ALTER TABLE <relation > ALTER [COLUMN] <colname> TYPE <typename> [ USING <expression> ]*/
1392
+ /* ALTER TABLE <name > ALTER [COLUMN] <colname> TYPE <typename> [ USING <expression> ]*/
1390
1393
| ALTER opt_column ColId TYPE_P Typename alter_using
1391
1394
{$$ = cat_str(6 , make_str(" alter" ),$2 ,$3 , make_str(" type" ),$5 ,$6 ); }
1392
- /* ALTER TABLE <relation > ADD CONSTRAINT ...*/
1395
+ /* ALTER TABLE <name > ADD CONSTRAINT ...*/
1393
1396
| ADD_P TableConstraint
1394
1397
{$$ = cat_str(2 , make_str(" add" ),$2 ); }
1395
- /* ALTER TABLE <relation > DROP CONSTRAINT ...*/
1398
+ /* ALTER TABLE <name > DROP CONSTRAINT ...*/
1396
1399
| DROP CONSTRAINT name opt_drop_behavior
1397
1400
{$$ = cat_str(3 , make_str(" drop constraint" ),$3 ,$4 ); }
1398
- /* ALTER TABLE <relation > SET WITHOUT OIDS*/
1401
+ /* ALTER TABLE <name > SET WITHOUT OIDS*/
1399
1402
| SET WITHOUT OIDS
1400
1403
{$$ = make_str(" set without oids" ); }
1401
1404
/* ALTER TABLE <name> CLUSTER ON <indexname>*/
@@ -1446,20 +1449,10 @@ alter_table_cmd:
1446
1449
/* ALTER TABLE <name> NO INHERITS <parent>*/
1447
1450
| NO INHERIT qualified_name
1448
1451
{$$ = cat2_str(make_str(" no inherit" ),$3 ); }
1449
- | alter_rel_cmd
1450
- {$$ =$1 ; }
1451
- ;
1452
-
1453
- alter_rel_cmds :alter_rel_cmd {$$ =$1 ; }
1454
- | alter_rel_cmds ' ,' alter_rel_cmd {$$ = cat_str(3 ,$1 , make_str(" ," ),$3 ); }
1455
- ;
1456
-
1457
- /* Subcommands that are for ALTER TABLE or ALTER INDEX*/
1458
- alter_rel_cmd :
1459
- /* ALTER [TABLE|INDEX] <name> OWNER TO RoleId*/
1460
- OWNER TO RoleId
1452
+ /* ALTER <name> OWNER TO RoleId*/
1453
+ | OWNER TO RoleId
1461
1454
{$$ = cat2_str(make_str(" owner to" ),$3 ); }
1462
- /* ALTER[TABLE|INDEX] <name> SET TABLESPACE <tablespacename>*/
1455
+ /* ALTER <name> SET TABLESPACE <tablespacename>*/
1463
1456
| SET TABLESPACE name
1464
1457
{$$ = cat2_str(make_str(" set tablespace" ),$3 ); }
1465
1458
| SET definition
@@ -1830,19 +1823,23 @@ CreateAsElement: ColId { $$ = $1; }
1830
1823
*
1831
1824
*****************************************************************************/
1832
1825
1833
- CreateSeqStmt :CREATE OptTemp SEQUENCE qualified_name OptSeqList
1826
+ CreateSeqStmt :CREATE OptTemp SEQUENCE qualified_name OptSeqOptList
1834
1827
{$$ = cat_str(5 , make_str(" create" ),$2 , make_str(" sequence" ),$4 ,$5 ); }
1835
1828
;
1836
1829
1837
- AlterSeqStmt :ALTER SEQUENCE qualified_name OptSeqList
1830
+ AlterSeqStmt :ALTER SEQUENCE relation_expr SeqOptList
1838
1831
{$$ = cat_str(3 ,make_str(" alter sequence" ),$3 ,$4 ); }
1839
1832
;
1840
1833
1841
- OptSeqList :OptSeqList OptSeqElem {$$ = cat2_str($1 ,$2 ); }
1842
- | /* EMPTY*/ {$$ = EMPTY; }
1834
+ OptSeqOptList :SeqOptList {$$ =$1 ; }
1835
+ | /* EMPTY*/ {$$ = EMPTY; }
1836
+ ;
1837
+
1838
+ SeqOptList :SeqOptElem {$$ =$1 ; }
1839
+ | SeqOptList SeqOptElem {$$ = cat2_str($1 ,$2 ); }
1843
1840
;
1844
1841
1845
- OptSeqElem :CACHE NumConst
1842
+ SeqOptElem :CACHE NumConst
1846
1843
{$$ = cat2_str(make_str(" cache" ),$2 ); }
1847
1844
| CYCLE
1848
1845
{$$ = make_str(" cycle" ); }
@@ -2841,6 +2838,8 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name
2841
2838
{$$ = cat_str(4 , make_str(" alter schema" ),$3 , make_str(" rename to" ),$6 ); }
2842
2839
| ALTER TABLE relation_expr RENAME TO name
2843
2840
{$$ = cat_str(4 , make_str(" alter table" ),$3 , make_str(" rename to" ),$6 ); }
2841
+ | ALTER TABLE relation_expr SET SCHEMA name
2842
+ {$$ = cat_str(4 , make_str(" alter table" ),$3 , make_str(" set schema" ),$6 ); }
2844
2843
| ALTER SEQUENCE relation_expr RENAME TO name
2845
2844
{$$ = cat_str(4 , make_str(" alter sequence" ),$3 , make_str(" rename to" ),$6 ); }
2846
2845
| ALTER VIEW relation_expr RENAME TO name
@@ -2886,7 +2885,7 @@ AlterObjectSchemaStmt:
2886
2885
{$$ = cat_str(4 , make_str(" alter function" ),$3 , make_str(" set schema" ),$6 ); }
2887
2886
| ALTER SEQUENCE relation_expr SET SCHEMA name
2888
2887
{$$ = cat_str(4 , make_str(" alter sequence" ),$3 , make_str(" set schema" ),$6 ); }
2889
- | ALTER TABLE relation_expr SET SCHEMA name
2888
+ | ALTER VIEW relation_expr SET SCHEMA name
2890
2889
{$$ = cat_str(4 , make_str(" alter sequence" ),$3 , make_str(" set schema" ),$6 ); }
2891
2890
| ALTER TYPE_P any_name SET SCHEMA name
2892
2891
{$$ = cat_str(4 , make_str(" alter type" ),$3 , make_str(" set schema" ),$6 ); }