mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-28 11:55:03 +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:
		| @@ -837,7 +837,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