diff options
author | Michael Meskes <meskes@postgresql.org> | 2013-11-26 17:12:39 +0100 |
---|---|---|
committer | Michael Meskes <meskes@postgresql.org> | 2013-11-26 17:30:24 +0100 |
commit | 3b41a7c74a7c449b0fc18d8e77b8f6ac9965c54a (patch) | |
tree | 108bc868c776a7b59d14d0272f337551d0ac8c45 /src | |
parent | f142c27a324992feb554c58e9b29bc4ef0c47861 (diff) | |
download | postgresql-3b41a7c74a7c449b0fc18d8e77b8f6ac9965c54a.tar.gz postgresql-3b41a7c74a7c449b0fc18d8e77b8f6ac9965c54a.zip |
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>
Conflicts:
src/interfaces/ecpg/preproc/ecpg.trailer
Diffstat (limited to 'src')
-rw-r--r-- | src/interfaces/ecpg/preproc/ecpg.trailer | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/interfaces/ecpg/preproc/ecpg.trailer b/src/interfaces/ecpg/preproc/ecpg.trailer index f30a303e5fd..029912ae815 100644 --- a/src/interfaces/ecpg/preproc/ecpg.trailer +++ b/src/interfaces/ecpg/preproc/ecpg.trailer @@ -799,7 +799,12 @@ opt_signed: SQL_SIGNED variable_list: variable { $$ = $1; } | variable_list ',' variable - { $$ = cat_str(3, $1, make_str(","), $3); } + { + if (actual_type[struct_level].type_enum == ECPGt_varchar) + $$ = cat_str(3, $1, make_str(";"), $3); + else + $$ = cat_str(3, $1, make_str(","), $3); + } ; variable: opt_pointer ECPGColLabel opt_array_bounds opt_bit_field opt_initializer |