mirror of
https://github.com/postgres/postgres.git
synced 2025-10-24 01:29:19 +03:00
ECPG: Make the preprocessor emit ';' if the variable type for a list of
variables is varchar. This fixes this test case:
int main(void)
{
exec sql begin declare section;
varchar a[50], b[50];
exec sql end declare section;
return 0;
}
Since varchars are internally turned into custom structs and
the type name is emitted for these variable declarations,
the preprocessed code previously had:
struct varchar_1 { ... } a _,_ struct varchar_2 { ... } b ;
The comma in the generated C file was a syntax error.
There are no regression test changes since it's not exercised.
Patch by Boszormenyi Zoltan <zb@cybertec.at>
This commit is contained in:
@@ -832,7 +832,12 @@ opt_signed: SQL_SIGNED
|
|||||||
variable_list: variable
|
variable_list: variable
|
||||||
{ $$ = $1; }
|
{ $$ = $1; }
|
||||||
| variable_list ',' variable
|
| variable_list ',' variable
|
||||||
{ $$ = cat_str(3, $1, mm_strdup(","), $3); }
|
{
|
||||||
|
if (actual_type[struct_level].type_enum == ECPGt_varchar)
|
||||||
|
$$ = cat_str(3, $1, mm_strdup(";"), $3);
|
||||||
|
else
|
||||||
|
$$ = cat_str(3, $1, mm_strdup(","), $3);
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
variable: opt_pointer ECPGColLabel opt_array_bounds opt_bit_field opt_initializer
|
variable: opt_pointer ECPGColLabel opt_array_bounds opt_bit_field opt_initializer
|
||||||
|
|||||||
Reference in New Issue
Block a user