1- /* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.288 2004/06/20 10:45:47 meskes Exp $*/
1+ /* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.289 2004/06/27 12:28:42 meskes Exp $*/
22
33/* Copyright comment*/
44%{
@@ -542,7 +542,7 @@ add_additional_variables(char *name, bool insert)
542542%type <str> inf_val_list inf_col_list using_descriptor into_descriptor
543543%type <str> ecpg_into_using prepared_name struct_union_type_with_symbol
544544%type <str> ECPGunreserved ECPGunreserved_interval cvariable
545- %type <str> AlterDbOwnerStmt OptTableSpaceOwner CreateTableSpaceStmt
545+ %type <str> AlterOwnerStmt OptTableSpaceOwner CreateTableSpaceStmt
546546%type <str> DropTableSpaceStmt indirection indirection_el
547547
548548%type <struct_union> s_struct_union_symbol
@@ -578,7 +578,7 @@ statement: ecpgstart opt_at stmt ';'{ connection = NULL; }
578578| c_thing { fprintf(yyout," %s" ,$1 ); free($1 ); }
579579| CPP_LINE { fprintf(yyout," %s" ,$1 ); free($1 ); }
580580| ' {' { braces_open++; fputs(" {" , yyout); }
581- | ' }' { remove_variables(braces_open--); fputs(" }" , yyout); }
581+ | ' }' {remove_typedefs(braces_open); remove_variables(braces_open--); fputs(" }" , yyout); }
582582;
583583
584584opt_at :AT connection_target
@@ -594,9 +594,9 @@ opt_at: AT connection_target
594594};
595595
596596stmt :AlterDatabaseSetStmt { output_statement($1 ,0 , connection); }
597- | AlterDbOwnerStmt { output_statement($1 ,0 , connection); }
598597| AlterDomainStmt { output_statement($1 ,0 , connection); }
599598| AlterGroupStmt { output_statement($1 ,0 , connection); }
599+ | AlterOwnerStmt { output_statement($1 ,0 , connection); }
600600| AlterSeqStmt { output_statement($1 ,0 , connection); }
601601| AlterTableStmt { output_statement($1 ,0 , connection); }
602602| AlterUserSetStmt { output_statement($1 ,0 , connection); }
@@ -2385,12 +2385,42 @@ RenameStmt: ALTER AGGREGATE func_name '(' aggr_argtype ')' RENAME TO name
23852385{$$ = cat_str(6 , make_str(" alter trigger" ),$3 , make_str(" on" ),$5 , make_str(" rename to" ),$8 ); }
23862386| ALTER USER UserId RENAME TO UserId
23872387{$$ = cat_str(4 , make_str(" alter user" ),$3 , make_str(" rename to" ),$6 ); }
2388+ | ALTER TABLESPACE name RENAME TO name
2389+ {$$ = cat_str(4 , make_str(" alter tablespace" ),$3 , make_str(" rename to" ),$6 ); }
23882390;
23892391
23902392opt_column :COLUMN {$$ = make_str(" column" ); }
23912393| /* EMPTY*/ {$$ = EMPTY; }
23922394;
23932395
2396+ /* ****************************************************************************
2397+ *
2398+ * ALTER THING name OWNER TO newname.
2399+ *
2400+ *****************************************************************************/
2401+
2402+ AlterOwnerStmt :ALTER AGGREGATE func_name ' (' aggr_argtype ' )' OWNER TO UserId
2403+ {$$ = cat_str(6 , make_str(" alter aggregate" ),$3 , make_str(" (" ),$5 , make_str(" ) owner to" ),$9 ); }
2404+ | ALTER CONVERSION_P any_name OWNER TO UserId
2405+ {$$ = cat_str(4 , make_str(" alter conversion" ),$3 , make_str(" owner to" ),$6 ); }
2406+ | ALTER DATABASE database_name OWNER TO UserId
2407+ {$$ = cat_str(4 , make_str(" alter database" ),$3 , make_str(" owner to" ),$6 ); }
2408+ | ALTER DOMAIN_P database_name OWNER TO UserId
2409+ {$$ = cat_str(4 , make_str(" alter domain" ),$3 , make_str(" owner to" ),$6 ); }
2410+ | ALTER FUNCTION func_name func_args OWNER TO UserId
2411+ {$$ = cat_str(5 , make_str(" alter function" ),$3 ,$4 , make_str(" owner to" ),$7 ); }
2412+ | ALTER OPERATOR any_operator ' (' oper_argtypes ' )' OWNER TO UserId
2413+ {$$ = cat_str(6 , make_str(" alter operator" ),$3 , make_str(" (" ),$5 , make_str(" ) owner to" ),$9 ); }
2414+ | ALTER OPERATOR CLASS any_name USING access_method OWNER TO UserId
2415+ {$$ = cat_str(6 , make_str(" alter operator class" ),$4 , make_str(" using" ),$6 , make_str(" owner to" ),$9 ); }
2416+ | ALTER SCHEMA name OWNER TO UserId
2417+ {$$ = cat_str(4 , make_str(" alter schema" ),$3 , make_str(" owner to" ),$6 ); }
2418+ | ALTER TYPE_P any_name OWNER TO UserId
2419+ {$$ = cat_str(4 , make_str(" alter type" ),$3 , make_str(" owner to" ),$6 ); }
2420+ | ALTER TABLESPACE name OWNER TO UserId
2421+ {$$ = cat_str(4 , make_str(" alter tablespace" ),$3 , make_str(" owner to" ),$6 ); }
2422+ ;
2423+
23942424
23952425/* ****************************************************************************
23962426 *
@@ -2589,8 +2619,6 @@ opt_equal: '='{ $$ = make_str("="); }
25892619 *
25902620 *****************************************************************************/
25912621
2592- AlterDbOwnerStmt :ALTER DATABASE database_name OWNER TO UserId
2593- {$$ = cat_str(4 , make_str(" alter database" ),$3 , make_str(" owner to" ),$6 ); }
25942622AlterDatabaseSetStmt :ALTER DATABASE database_name SET set_rest
25952623{$$ = cat_str(4 , make_str(" alter database" ),$3 , make_str(" set" ),$5 ); }
25962624| ALTER DATABASE database_name VariableResetStmt
@@ -2632,8 +2660,6 @@ AlterDomainStmt:
26322660{$$ = cat_str(4 , make_str(" alter domain" ),$3 , make_str(" add" ),$5 ); }
26332661| ALTER DOMAIN_P any_name DROP CONSTRAINT name opt_drop_behavior
26342662{$$ = cat_str(5 , make_str(" alter domain" ),$3 , make_str(" drop constraint" ),$6 ,$7 ); }
2635- | ALTER DOMAIN_P any_name OWNER TO UserId
2636- {$$ = cat_str(4 , make_str(" alter domain" ),$3 , make_str(" owner to" ),$6 ); }
26372663;
26382664
26392665opt_as :AS {$$ = make_str(" as" ); }
@@ -4582,6 +4608,7 @@ type_declaration: S_TYPEDEF
45824608/* initial definition*/
45834609this ->next = types;
45844610this ->name =$5 ;
4611+ this ->brace_level = braces_open;
45854612this ->type = (struct this_type *) mm_alloc(sizeof (struct this_type ));
45864613this ->type->type_enum =$3 .type_enum;
45874614this ->type->type_str = mm_strdup($5 );
@@ -4897,6 +4924,7 @@ struct_union_type_with_symbol: s_struct_union_symbol
48974924/* initial definition*/
48984925this ->next = types;
48994926this ->name = mm_strdup(su_type.type_str);
4927+ this ->brace_level = braces_open;
49004928this ->type = (struct this_type *) mm_alloc(sizeof (struct this_type ));
49014929this ->type->type_enum = su_type.type_enum;
49024930this ->type->type_str = mm_strdup(su_type.type_str);
@@ -5417,6 +5445,7 @@ ECPGTypedef: TYPE_P
54175445/* initial definition*/
54185446this ->next = types;
54195447this ->name =$3 ;
5448+ this ->brace_level = braces_open;
54205449this ->type = (struct this_type *) mm_alloc(sizeof (struct this_type ));
54215450this ->type->type_enum =$5 .type_enum;
54225451this ->type->type_str = mm_strdup($3 );