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:31:39 +0100 | 
| commit | 7bee2e3e55f4503eec65783bd6d16f8291537c25 (patch) | |
| tree | 6934229fb05e3014cb7bdb3fcaeac39afaae0118 /src | |
| parent | cd5316f67d5f6e110205d47d27b11eb644720e4b (diff) | |
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 508e7eee4af..757984fd67f 100644 --- a/src/interfaces/ecpg/preproc/ecpg.trailer +++ b/src/interfaces/ecpg/preproc/ecpg.trailer @@ -831,7 +831,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 | 
