1
- /* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.278 2004/04/29 14:08:10 meskes Exp $ */
1
+ /* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.279 2004/05/05 15:03:04 meskes Exp $ */
2
2
3
3
/* Copyright comment */
4
4
%{
@@ -211,7 +211,7 @@ adjust_informix(struct arguments *list)
211
211
212
212
if (atoi (ptr->variable ->type ->size ) > 1 )
213
213
{
214
- ptr->variable = new_variable (cat_str (4 , make_str (" (" ), mm_strdup (ECPGtype_name (ptr->variable ->type ->type )), make_str (" *)(ECPG_informix_get_var(" ), mm_strdup (temp)), ECPGmake_simple_type (ptr->variable ->type ->type , ptr->variable ->type ->size ), 0 );
214
+ ptr->variable = new_variable (cat_str (4 , make_str (" (" ), mm_strdup (ECPGtype_name (ptr->variable ->type ->u . element -> type )), make_str (" *)(ECPG_informix_get_var(" ), mm_strdup (temp)), ECPGmake_array_type ( ECPGmake_simple_type (ptr->variable ->type ->u . element -> type , make_str ( " 1 " )) , ptr->variable ->type ->size ), 0 );
215
215
sprintf (temp, " %d, (" , ecpg_informix_var++);
216
216
}
217
217
else
@@ -442,7 +442,7 @@ add_additional_variables(char *name, bool insert)
442
442
%type <str> TableConstraint OptTableElementList Xconst opt_transaction
443
443
%type <str> ConstraintElem key_actions ColQualList type_name
444
444
%type <str> target_list target_el update_target_list alias_clause
445
- %type <str> update_target_el qualified_name database_name
445
+ %type <str> update_target_el qualified_name database_name alter_using
446
446
%type <str> access_method attr_name index_name name func_name
447
447
%type <str> file_name AexprConst c_expr ConstTypename var_list
448
448
%type <str> a_expr b_expr TruncateStmt CommentStmt OnCommitOption opt_by
@@ -464,15 +464,15 @@ add_additional_variables(char *name, bool insert)
464
464
%type <str> copy_delimiter ListenStmt CopyStmt copy_file_name opt_binary
465
465
%type <str> FetchStmt from_in CreateOpClassStmt like_including_defaults
466
466
%type <str> ClosePortalStmt DropStmt VacuumStmt AnalyzeStmt opt_verbose
467
- %type <str> opt_full func_arg OptWithOids opt_freeze
467
+ %type <str> opt_full func_arg OptWithOids opt_freeze alter_table_cmd
468
468
%type <str> analyze_keyword opt_name_list ExplainStmt index_params
469
- %type <str> index_elem opt_class access_method_clause
469
+ %type <str> index_elem opt_class access_method_clause alter_table_cmds
470
470
%type <str> index_opt_unique IndexStmt func_return ConstInterval
471
471
%type <str> func_args_list func_args opt_with def_arg overlay_placing
472
472
%type <str> def_elem def_list definition DefineStmt select_with_parens
473
473
%type <str> opt_instead event RuleActionList opt_using CreateAssertStmt
474
474
%type <str> RuleActionStmtOrEmpty RuleActionMulti func_as reindex_type
475
- %type <str> RuleStmt opt_column opt_name oper_argtypes NumConst
475
+ %type <str> RuleStmt opt_column oper_argtypes NumConst
476
476
%type <str> MathOp RemoveFuncStmt aggr_argtype for_update_clause
477
477
%type <str> RemoveAggrStmt opt_procedural select_no_parens CreateCastStmt
478
478
%type <str> RemoveOperStmt RenameStmt all_Op opt_Trusted opt_lancompiler
@@ -1140,45 +1140,58 @@ CheckPointStmt: CHECKPOINT { $$= make_str("checkpoint"); }
1140
1140
*****************************************************************************/
1141
1141
1142
1142
AlterTableStmt :
1143
+ ALTER TABLE relation_expr alter_table_cmds
1144
+ { $$ = cat_str(3 , make_str(" alter table" ), $3 , $4 ); }
1145
+ ;
1146
+
1147
+ alter_table_cmds :
1148
+ alter_table_cmd { $$ = $1 ; }
1149
+ | alter_table_cmds ' ,' alter_table_cmd { $$ = cat_str(3 , $1 , make_str(" ," ), $3 ); }
1150
+ ;
1151
+
1152
+ alter_table_cmd :
1153
+ ADD opt_column columnDef
1143
1154
/* ALTER TABLE <relation> ADD [COLUMN] <coldef> */
1144
- ALTER TABLE relation_expr ADD opt_column columnDef
1145
- { $$ = cat_str(5 , make_str(" alter table" ), $3 , make_str(" add" ), $5 , $6 ); }
1155
+ { $$ = cat_str(3 , make_str(" add" ), $2 , $3 ); }
1146
1156
/* ALTER TABLE <relation> ALTER [COLUMN] <colname> {SET DEFAULT <expr>|DROP DEFAULT} */
1147
- | ALTER TABLE relation_expr ALTER opt_column ColId alter_column_default
1148
- { $$ = cat_str(6 , make_str(" alter table " ), $3 , make_str( " alter " ), $5 , $6 , $7 ); }
1157
+ | ALTER opt_column ColId alter_column_default
1158
+ { $$ = cat_str(4 , make_str(" alter" ), $2 , $3 , $4 ); }
1149
1159
/* ALTER TABLE <relation> ALTER [COLUMN] <colname> DROP NOT NULL */
1150
- | ALTER TABLE relation_expr ALTER opt_column ColId DROP NOT NULL_P
1151
- { $$ = cat_str(6 , make_str(" alter table " ), $3 , make_str( " alter " ), $5 , $6 , make_str(" drop not null" )); }
1160
+ | ALTER opt_column ColId DROP NOT NULL_P
1161
+ { $$ = cat_str(4 , make_str(" alter" ), $2 , $3 , make_str(" drop not null" )); }
1152
1162
/* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET NOT NULL */
1153
- | ALTER TABLE relation_expr ALTER opt_column ColId SET NOT NULL_P
1154
- { $$ = cat_str(6 , make_str(" alter table " ), $3 , make_str( " alter " ), $5 , $6 , make_str(" set not null" )); }
1163
+ | ALTER opt_column ColId SET NOT NULL_P
1164
+ { $$ = cat_str(4 , make_str(" alter" ), $2 , $3 , make_str(" set not null" )); }
1155
1165
/* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET STATISTICS <IntegerOnly> */
1156
- | ALTER TABLE relation_expr ALTER opt_column ColId SET STATISTICS PosIntConst
1157
- { $$ = cat_str(7 , make_str(" alter table " ), $3 , make_str( " alter " ), $5 , $6 , make_str(" set statistics" ), $9 ); }
1166
+ | ALTER opt_column ColId SET STATISTICS PosIntConst
1167
+ { $$ = cat_str(5 , make_str(" alter" ), $2 , $3 , make_str(" set statistics" ), $6 ); }
1158
1168
/* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET STORAGE <storagemode> */
1159
- | ALTER TABLE relation_expr ALTER opt_column ColId SET STORAGE ColId
1160
- { $$ = cat_str(7 , make_str(" alter table " ), $3 , make_str( " alter " ), $5 , $6 , make_str(" set storage" ), $9 ); }
1169
+ | ALTER opt_column ColId SET STORAGE ColId
1170
+ { $$ = cat_str(5 , make_str(" alter" ), $2 , $3 , make_str(" set storage" ), $6 ); }
1161
1171
/* ALTER TABLE <relation> DROP [COLUMN] <colname> {RESTRICT|CASCADE} */
1162
- | ALTER TABLE relation_expr DROP opt_column ColId opt_drop_behavior
1163
- { $$ = cat_str(6 , make_str(" alter table" ), $3 , make_str(" drop" ), $5 , $6 , $7 ); }
1172
+ | DROP opt_column ColId opt_drop_behavior
1173
+ { $$ = cat_str(4 , make_str(" drop" ), $2 , $3 , $4 ); }
1174
+ /* ALTER TABLE <relation> ALTER [COLUMN] <colname> TYPE <typename> [ USING <expression> ] */
1175
+ | ALTER opt_column ColId TYPE_P Typename alter_using
1176
+ { $$ = cat_str(6 , make_str(" alter" ), $2 , $3 , make_str(" type" ), $5 , $6 ); }
1164
1177
/* ALTER TABLE <relation> ADD CONSTRAINT ... */
1165
- | ALTER TABLE relation_expr ADD TableConstraint
1166
- { $$ = cat_str(4 , make_str(" alter table " ), $3 , make_str( " add" ), $5 ); }
1178
+ | ADD TableConstraint
1179
+ { $$ = cat_str(2 , make_str(" add" ), $2 ); }
1167
1180
/* ALTER TABLE <relation> DROP CONSTRAINT ... */
1168
- | ALTER TABLE relation_expr DROP CONSTRAINT name opt_drop_behavior
1169
- { $$ = cat_str(5 , make_str( " alter table " ), $ 3 , make_str(" drop constraint" ), $6 , $7 ); }
1181
+ | DROP CONSTRAINT name opt_drop_behavior
1182
+ { $$ = cat_str(3 , make_str(" drop constraint" ), $3 , $4 ); }
1170
1183
/* ALTER TABLE <relation> SET WITHOUT OIDS */
1171
- | ALTER TABLE relation_expr SET WITHOUT OIDS
1172
- { $$ = cat_str( 3 , make_str(" alter table " ), $3 , make_str( " set without oids" ) ); }
1184
+ | SET WITHOUT OIDS
1185
+ { $$ = make_str(" set without oids" ); }
1173
1186
/* ALTER TABLE <name> CREATE TOAST TABLE */
1174
- | ALTER TABLE qualified_name CREATE TOAST TABLE
1175
- { $$ = cat_str( 3 , make_str(" alter table " ), $3 , make_str( " create toast table" ) ); }
1187
+ | CREATE TOAST TABLE
1188
+ { $$ = make_str(" create toast table" ); }
1176
1189
/* ALTER TABLE <name> OWNER TO UserId */
1177
- | ALTER TABLE qualified_name OWNER TO UserId
1178
- { $$ = cat_str(4 , make_str(" alter table " ), $3 , make_str( " owner to" ), $6 ); }
1190
+ | OWNER TO UserId
1191
+ { $$ = cat_str(2 , make_str(" owner to" ), $3 ); }
1179
1192
/* ALTER TABLE <name> CLUSTER ON <indexname> */
1180
- | ALTER TABLE qualified_name CLUSTER ON name
1181
- { $$ = cat_str(4 , make_str(" alter table " ), $3 , make_str( " cluster on" ), $6 ); }
1193
+ | CLUSTER ON name
1194
+ { $$ = cat_str(2 , make_str(" cluster on" ), $3 ); }
1182
1195
;
1183
1196
1184
1197
alter_column_default :
@@ -1191,6 +1204,10 @@ opt_drop_behavior: CASCADE { $$ = make_str("cascade"); }
1191
1204
| /* EMPTY */ { $$ = EMPTY; }
1192
1205
;
1193
1206
1207
+ alter_using : USING a_expr { $$ = cat2_str(make_str(" using" ), $2 ); }
1208
+ | /* EMPTY */ { $$ = EMPTY; }
1209
+ ;
1210
+
1194
1211
/* ****************************************************************************
1195
1212
*
1196
1213
* QUERY :
@@ -2310,18 +2327,16 @@ RenameStmt: ALTER AGGREGATE func_name '(' aggr_argtype ')' RENAME TO name
2310
2327
{ $$ = cat_str(6 , make_str(" alter operator class" ), $4 , make_str(" using" ), $6 , make_str(" rename to" ), $9 ); }
2311
2328
| ALTER SCHEMA name RENAME TO name
2312
2329
{ $$ = cat_str(4 , make_str(" alter schema" ), $3 , make_str(" rename to" ), $6 ); }
2313
- | ALTER TABLE relation_expr RENAME opt_column opt_name TO name
2330
+ | ALTER TABLE relation_expr RENAME TO name
2331
+ { $$ = cat_str(4 , make_str(" alter table" ), $3 , make_str(" rename to" ), $6 ); }
2332
+ | ALTER TABLE relation_expr RENAME opt_column name TO name
2314
2333
{ $$ = cat_str(7 , make_str(" alter table" ), $3 , make_str(" rename" ), $5 , $6 , make_str(" to" ), $8 ); }
2315
2334
| ALTER TRIGGER name ON relation_expr RENAME TO name
2316
2335
{ $$ = cat_str(6 , make_str(" alter trigger" ), $3 , make_str(" on" ), $5 , make_str(" rename to" ), $8 ); }
2317
2336
| ALTER USER UserId RENAME TO UserId
2318
2337
{ $$ = cat_str(4 , make_str(" alter user" ), $3 , make_str(" rename to" ), $6 ); }
2319
2338
;
2320
2339
2321
- opt_name : name { $$ = $1 ; }
2322
- | /* EMPTY*/ { $$ = EMPTY; }
2323
- ;
2324
-
2325
2340
opt_column : COLUMN { $$ = make_str(" column" ); }
2326
2341
| /* EMPTY*/ { $$ = EMPTY; }
2327
2342
;
0 commit comments