aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Meskes <meskes@postgresql.org>2013-11-26 17:12:39 +0100
committerMichael Meskes <meskes@postgresql.org>2013-11-26 17:30:24 +0100
commit3b41a7c74a7c449b0fc18d8e77b8f6ac9965c54a (patch)
tree108bc868c776a7b59d14d0272f337551d0ac8c45 /src
parentf142c27a324992feb554c58e9b29bc4ef0c47861 (diff)
downloadpostgresql-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.trailer7
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