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 $*/
22
33/* Copyright comment*/
44%{
@@ -556,15 +556,15 @@ add_typedef(char *name, char * dimension, char * length, enum ECPGttype type_enu
556556%type <str> target_list target_el alias_clause type_func_name_keyword
557557%type <str> qualified_name database_name alter_using type_function_name
558558%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
560560%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
562562%type <str> position_list substr_list substr_from alter_column_default
563563%type <str> trim_list in_expr substr_for attrs TableFuncElement
564564%type <str> Typename SimpleTypename Numeric opt_float DiscardStmt
565565%type <str> Character character opt_varying opt_charset enum_val_list
566566%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
568568%type <str> SelectStmt into_clause OptTemp ConstraintAttributeSpec
569569%type <str> opt_table opt_all sort_clause sortby_list ConstraintAttr
570570%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
591591%type <str> VariableSetStmt var_value zone_value VariableShowStmt
592592%type <str> VariableResetStmt AlterTableStmt from_list overlay_list
593593%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
596596%type <str> DropTrigStmt TriggerOneEvent TriggerEvents RuleActionStmt
597597%type <str> TriggerActionTime CreateTrigStmt DropPLangStmt DropCastStmt
598598%type <str> CreatePLangStmt TriggerFuncArgs TriggerFuncArg simple_select
@@ -621,7 +621,7 @@ add_typedef(char *name, char * dimension, char * length, enum ECPGttype type_enu
621621%type <str> handler_name any_name_list any_name opt_as insert_column_list
622622%type <str> columnref values_clause AllConstVar prep_type_clause ExecuteStmt
623623%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
625625%type <str> CreateFunctionStmt createfunc_opt_list func_table
626626%type <str> DropUserStmt copy_from copy_opt_list copy_opt_item
627627%type <str> opt_oids TableLikeClause key_action opt_definition
@@ -1347,55 +1347,58 @@ DiscardStmt:
13471347
13481348/* ****************************************************************************
13491349 *
1350- *ALTER [ TABLE | INDEX ] variations
1350+ *ALTER [ TABLE | INDEX| SEQUENCE | VIEW ] variations
13511351 *
13521352 *****************************************************************************/
13531353
13541354AlterTableStmt :
13551355ALTER TABLE relation_expr alter_table_cmds
13561356{$$ = 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 ); }
13591363;
13601364
1361- /* Subcommands that are for ALTER TABLE only*/
13621365alter_table_cmds :
13631366alter_table_cmd {$$ =$1 ; }
13641367| alter_table_cmds ' ,' alter_table_cmd {$$ = cat_str(3 ,$1 , make_str(" ," ),$3 ); }
13651368;
13661369
13671370alter_table_cmd :
1371+ /* ALTER TABLE <name> ADD [COLUMN] <coldef>*/
13681372ADD_P opt_column columnDef
1369- /* ALTER TABLE <relation> ADD [COLUMN] <coldef>*/
13701373{$$ = 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}*/
13721375| ALTER opt_column ColId alter_column_default
13731376{$$ = 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*/
13751378| ALTER opt_column ColId DROP NOT NULL_P
13761379{$$ = 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*/
13781381| ALTER opt_column ColId SET NOT NULL_P
13791382{$$ = 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>*/
13811384| ALTER opt_column ColId SET STATISTICS PosIntConst
13821385{$$ = 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>*/
13841387| ALTER opt_column ColId SET STORAGE ColId
13851388{$$ = 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}*/
13871390| DROP opt_column ColId opt_drop_behavior
13881391{$$ = 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> ]*/
13901393| ALTER opt_column ColId TYPE_P Typename alter_using
13911394{$$ = 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 ...*/
13931396| ADD_P TableConstraint
13941397{$$ = cat_str(2 , make_str(" add" ),$2 ); }
1395- /* ALTER TABLE <relation > DROP CONSTRAINT ...*/
1398+ /* ALTER TABLE <name > DROP CONSTRAINT ...*/
13961399| DROP CONSTRAINT name opt_drop_behavior
13971400{$$ = cat_str(3 , make_str(" drop constraint" ),$3 ,$4 ); }
1398- /* ALTER TABLE <relation > SET WITHOUT OIDS*/
1401+ /* ALTER TABLE <name > SET WITHOUT OIDS*/
13991402| SET WITHOUT OIDS
14001403{$$ = make_str(" set without oids" ); }
14011404/* ALTER TABLE <name> CLUSTER ON <indexname>*/
@@ -1446,20 +1449,10 @@ alter_table_cmd:
14461449/* ALTER TABLE <name> NO INHERITS <parent>*/
14471450| NO INHERIT qualified_name
14481451{$$ = 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
14611454{$$ = cat2_str(make_str(" owner to" ),$3 ); }
1462- /* ALTER[TABLE|INDEX] <name> SET TABLESPACE <tablespacename>*/
1455+ /* ALTER <name> SET TABLESPACE <tablespacename>*/
14631456| SET TABLESPACE name
14641457{$$ = cat2_str(make_str(" set tablespace" ),$3 ); }
14651458| SET definition
@@ -1830,19 +1823,23 @@ CreateAsElement: ColId { $$ = $1; }
18301823 *
18311824 *****************************************************************************/
18321825
1833- CreateSeqStmt :CREATE OptTemp SEQUENCE qualified_name OptSeqList
1826+ CreateSeqStmt :CREATE OptTemp SEQUENCE qualified_name OptSeqOptList
18341827{$$ = cat_str(5 , make_str(" create" ),$2 , make_str(" sequence" ),$4 ,$5 ); }
18351828;
18361829
1837- AlterSeqStmt :ALTER SEQUENCE qualified_name OptSeqList
1830+ AlterSeqStmt :ALTER SEQUENCE relation_expr SeqOptList
18381831{$$ = cat_str(3 ,make_str(" alter sequence" ),$3 ,$4 ); }
18391832;
18401833
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 ); }
18431840;
18441841
1845- OptSeqElem :CACHE NumConst
1842+ SeqOptElem :CACHE NumConst
18461843{$$ = cat2_str(make_str(" cache" ),$2 ); }
18471844| CYCLE
18481845{$$ = make_str(" cycle" ); }
@@ -2841,6 +2838,8 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name
28412838{$$ = cat_str(4 , make_str(" alter schema" ),$3 , make_str(" rename to" ),$6 ); }
28422839| ALTER TABLE relation_expr RENAME TO name
28432840{$$ = 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 ); }
28442843| ALTER SEQUENCE relation_expr RENAME TO name
28452844{$$ = cat_str(4 , make_str(" alter sequence" ),$3 , make_str(" rename to" ),$6 ); }
28462845| ALTER VIEW relation_expr RENAME TO name
@@ -2886,7 +2885,7 @@ AlterObjectSchemaStmt:
28862885{$$ = cat_str(4 , make_str(" alter function" ),$3 , make_str(" set schema" ),$6 ); }
28872886| ALTER SEQUENCE relation_expr SET SCHEMA name
28882887{$$ = 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
28902889{$$ = cat_str(4 , make_str(" alter sequence" ),$3 , make_str(" set schema" ),$6 ); }
28912890| ALTER TYPE_P any_name SET SCHEMA name
28922891{$$ = cat_str(4 , make_str(" alter type" ),$3 , make_str(" set schema" ),$6 ); }