Do not use the variable name when defining a varchar structure in ecpg.

With a unique counter being added anyway, there is no need anymore to have the variable name listed, too.
This commit is contained in:
Michael Meskes 2012-02-10 03:58:57 +01:00
parent 21320763a3
commit 9a4880a0dd
8 changed files with 29 additions and 37 deletions

View File

@ -877,8 +877,8 @@ variable: opt_pointer ECPGColLabel opt_array_bounds opt_bit_field opt_initialize
mmerror(PARSE_ERROR, ET_ERROR, "pointers to varchar are not implemented"); mmerror(PARSE_ERROR, ET_ERROR, "pointers to varchar are not implemented");
/* make sure varchar struct name is unique by adding a unique counter to its definition */ /* make sure varchar struct name is unique by adding a unique counter to its definition */
vcn = (char *) mm_alloc(strlen($2) + sizeof(int) * CHAR_BIT * 10 / 3); vcn = (char *) mm_alloc(sizeof(int) * CHAR_BIT * 10 / 3);
sprintf(vcn, "%s_%d", $2, varchar_counter); sprintf(vcn, "%d", varchar_counter);
if (strcmp(dimension, "0") == 0) if (strcmp(dimension, "0") == 0)
$$ = cat_str(7, make2_str(mm_strdup(" struct varchar_"), vcn), mm_strdup(" { int len; char arr["), mm_strdup(length), mm_strdup("]; } *"), mm_strdup($2), $4, $5); $$ = cat_str(7, make2_str(mm_strdup(" struct varchar_"), vcn), mm_strdup(" { int len; char arr["), mm_strdup(length), mm_strdup("]; } *"), mm_strdup($2), $4, $5);
else else

View File

@ -375,8 +375,6 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
{ {
char *variable = (char *) mm_alloc(strlen(name) + ((prefix == NULL) ? 0 : strlen(prefix)) + 4); char *variable = (char *) mm_alloc(strlen(name) + ((prefix == NULL) ? 0 : strlen(prefix)) + 4);
char *offset = (char *) mm_alloc(strlen(name) + strlen("sizeof(struct varchar_)") + 1 + strlen(varcharsize) + sizeof(int) * CHAR_BIT * 10 / 3); char *offset = (char *) mm_alloc(strlen(name) + strlen("sizeof(struct varchar_)") + 1 + strlen(varcharsize) + sizeof(int) * CHAR_BIT * 10 / 3);
char *var_name,
*ptr;
switch (type) switch (type)
{ {
@ -398,16 +396,11 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
else else
sprintf(variable, "&(%s%s)", prefix ? prefix : "", name); sprintf(variable, "&(%s%s)", prefix ? prefix : "", name);
/* remove trailing [] is name is array element */ /* If we created a varchar structure atomatically, counter is greater than 0. */
var_name = mm_strdup(name);
ptr = strchr(var_name, '[');
if (ptr)
*ptr = '\0';
if (counter) if (counter)
sprintf(offset, "sizeof(struct varchar_%s_%d)", var_name, counter); sprintf(offset, "sizeof(struct varchar_%d)", counter);
else else
sprintf(offset, "sizeof(struct varchar_%s)", var_name); sprintf(offset, "sizeof(struct varchar)");
free(var_name);
break; break;
case ECPGt_char: case ECPGt_char:
case ECPGt_unsigned_char: case ECPGt_unsigned_char:

View File

@ -36,7 +36,6 @@ struct ECPGtype
/* Everything is malloced. */ /* Everything is malloced. */
void ECPGmake_struct_member(char *, struct ECPGtype *, struct ECPGstruct_member **); void ECPGmake_struct_member(char *, struct ECPGtype *, struct ECPGstruct_member **);
struct ECPGtype *ECPGmake_simple_type(enum ECPGttype, char *, int); struct ECPGtype *ECPGmake_simple_type(enum ECPGttype, char *, int);
struct ECPGtype *ECPGmake_varchar_type(enum ECPGttype, long);
struct ECPGtype *ECPGmake_array_type(struct ECPGtype *, char *); struct ECPGtype *ECPGmake_array_type(struct ECPGtype *, char *);
struct ECPGtype *ECPGmake_struct_type(struct ECPGstruct_member *, enum ECPGttype, char *, char *); struct ECPGtype *ECPGmake_struct_type(struct ECPGstruct_member *, enum ECPGttype, char *, char *);
struct ECPGstruct_member *ECPGstruct_member_dup(struct ECPGstruct_member *); struct ECPGstruct_member *ECPGstruct_member_dup(struct ECPGstruct_member *);

View File

@ -32,7 +32,7 @@
typedef struct { typedef struct {
#line 12 "array_of_struct.pgc" #line 12 "array_of_struct.pgc"
struct varchar_name_1 { int len; char arr[ 50 ]; } name ; struct varchar_1 { int len; char arr[ 50 ]; } name ;
#line 13 "array_of_struct.pgc" #line 13 "array_of_struct.pgc"
int phone ; int phone ;
@ -61,7 +61,7 @@ int main()
typedef struct { typedef struct {
#line 30 "array_of_struct.pgc" #line 30 "array_of_struct.pgc"
struct varchar_name_2 { int len; char arr[ 50 ]; } name ; struct varchar_2 { int len; char arr[ 50 ]; } name ;
#line 31 "array_of_struct.pgc" #line 31 "array_of_struct.pgc"
int phone ; int phone ;
@ -95,7 +95,7 @@ int main()
#line 38 "array_of_struct.pgc" #line 38 "array_of_struct.pgc"
struct customer3 { struct customer3 {
#line 36 "array_of_struct.pgc" #line 36 "array_of_struct.pgc"
struct varchar_name_3 { int len; char arr[ 50 ]; } name ; struct varchar_3 { int len; char arr[ 50 ]; } name ;
#line 37 "array_of_struct.pgc" #line 37 "array_of_struct.pgc"
int phone ; int phone ;
@ -104,7 +104,7 @@ int main()
#line 43 "array_of_struct.pgc" #line 43 "array_of_struct.pgc"
struct customer4 { struct customer4 {
#line 41 "array_of_struct.pgc" #line 41 "array_of_struct.pgc"
struct varchar_name_4 { int len; char arr[ 50 ]; } name ; struct varchar_4 { int len; char arr[ 50 ]; } name ;
#line 42 "array_of_struct.pgc" #line 42 "array_of_struct.pgc"
int phone ; int phone ;
@ -114,7 +114,7 @@ int main()
int r ; int r ;
#line 45 "array_of_struct.pgc" #line 45 "array_of_struct.pgc"
struct varchar_onlyname_5 { int len; char arr[ 50 ]; } onlyname [ 2 ] ; struct varchar_5 { int len; char arr[ 50 ]; } onlyname [ 2 ] ;
/* exec sql end declare section */ /* exec sql end declare section */
#line 46 "array_of_struct.pgc" #line 46 "array_of_struct.pgc"
@ -235,7 +235,7 @@ if (sqlca.sqlcode < 0) sqlprint();}
} }
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select * from customers limit 1", ECPGt_EOIT, { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select * from customers limit 1", ECPGt_EOIT,
ECPGt_varchar,&(custs4.name),(long)50,(long)1,sizeof(struct varchar_name_4), ECPGt_varchar,&(custs4.name),(long)50,(long)1,sizeof(struct varchar_4),
ECPGt_short,&(inds[0].name_ind),(long)1,(long)1,sizeof(short), ECPGt_short,&(inds[0].name_ind),(long)1,(long)1,sizeof(short),
ECPGt_int,&(custs4.phone),(long)1,(long)1,sizeof(int), ECPGt_int,&(custs4.phone),(long)1,(long)1,sizeof(int),
ECPGt_short,&(inds[0].phone_ind),(long)1,(long)1,sizeof(short), ECPGt_EORT); ECPGt_short,&(inds[0].phone_ind),(long)1,(long)1,sizeof(short), ECPGt_EORT);
@ -255,7 +255,7 @@ if (sqlca.sqlcode < 0) sqlprint();}
printf( "phone - %d\n", custs4.phone ); printf( "phone - %d\n", custs4.phone );
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select c from customers limit 2", ECPGt_EOIT, { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select c from customers limit 2", ECPGt_EOIT,
ECPGt_varchar,(onlyname),(long)50,(long)2,sizeof(struct varchar_onlyname_5), ECPGt_varchar,(onlyname),(long)50,(long)2,sizeof(struct varchar_5),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
#line 85 "array_of_struct.pgc" #line 85 "array_of_struct.pgc"

View File

@ -75,7 +75,7 @@ main (void)
char * curname3 = CURNAME ; char * curname3 = CURNAME ;
#line 27 "cursor.pgc" #line 27 "cursor.pgc"
struct varchar_curname4_1 { int len; char arr[ 50 ]; } curname4 ; struct varchar_1 { int len; char arr[ 50 ]; } curname4 ;
#line 28 "cursor.pgc" #line 28 "cursor.pgc"
char * curname5 = CURNAME ; char * curname5 = CURNAME ;
@ -664,7 +664,7 @@ if (sqlca.sqlcode < 0) exit (1);}
strcpy(msg, "open"); strcpy(msg, "open");
{ ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "declare $0 cursor for $1", { ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "declare $0 cursor for $1",
ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
ECPGt_char_variable,(ECPGprepared_statement("test1", "st_id2", __LINE__)),(long)1,(long)1,(1)*sizeof(char), ECPGt_char_variable,(ECPGprepared_statement("test1", "st_id2", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
@ -676,7 +676,7 @@ if (sqlca.sqlcode < 0) exit (1);}
strcpy(msg, "fetch from"); strcpy(msg, "fetch from");
{ ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "fetch from $0", { ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "fetch from $0",
ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
ECPGt_int,&(id),(long)1,(long)1,sizeof(int), ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
@ -691,7 +691,7 @@ if (sqlca.sqlcode < 0) exit (1);}
strcpy(msg, "fetch"); strcpy(msg, "fetch");
{ ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "fetch $0", { ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "fetch $0",
ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
ECPGt_int,&(id),(long)1,(long)1,sizeof(int), ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
@ -706,7 +706,7 @@ if (sqlca.sqlcode < 0) exit (1);}
strcpy(msg, "fetch 1 from"); strcpy(msg, "fetch 1 from");
{ ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "fetch 1 from $0", { ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "fetch 1 from $0",
ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
ECPGt_int,&(id),(long)1,(long)1,sizeof(int), ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
@ -724,7 +724,7 @@ if (sqlca.sqlcode < 0) exit (1);}
{ ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "fetch $0 from $0", { ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "fetch $0 from $0",
ECPGt_int,&(count),(long)1,(long)1,sizeof(int), ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
ECPGt_int,&(id),(long)1,(long)1,sizeof(int), ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
@ -739,7 +739,7 @@ if (sqlca.sqlcode < 0) exit (1);}
strcpy(msg, "move"); strcpy(msg, "move");
{ ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "move absolute 0 $0", { ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "move absolute 0 $0",
ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
#line 226 "cursor.pgc" #line 226 "cursor.pgc"
@ -749,7 +749,7 @@ if (sqlca.sqlcode < 0) exit (1);}
strcpy(msg, "fetch 1"); strcpy(msg, "fetch 1");
{ ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "fetch 1 $0", { ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "fetch 1 $0",
ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
ECPGt_int,&(id),(long)1,(long)1,sizeof(int), ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
@ -767,7 +767,7 @@ if (sqlca.sqlcode < 0) exit (1);}
{ ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "fetch $0 $0", { ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "fetch $0 $0",
ECPGt_int,&(count),(long)1,(long)1,sizeof(int), ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
ECPGt_int,&(id),(long)1,(long)1,sizeof(int), ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
@ -782,7 +782,7 @@ if (sqlca.sqlcode < 0) exit (1);}
strcpy(msg, "close"); strcpy(msg, "close");
{ ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "close $0", { ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "close $0",
ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
#line 238 "cursor.pgc" #line 238 "cursor.pgc"

View File

@ -93,7 +93,7 @@ main (void)
c ptr = NULL ; c ptr = NULL ;
#line 36 "type.pgc" #line 36 "type.pgc"
struct varchar_vc { struct varchar {
#line 34 "type.pgc" #line 34 "type.pgc"
int len ; int len ;
@ -150,7 +150,7 @@ main (void)
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
ECPGt_char,&(ptr),(long)0,(long)1,(1)*sizeof(char), ECPGt_char,&(ptr),(long)0,(long)1,(1)*sizeof(char),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
ECPGt_varchar,&(vc),(long)10,(long)1,sizeof(struct varchar_vc), ECPGt_varchar,&(vc),(long)10,(long)1,sizeof(struct varchar),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);} ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
#line 68 "type.pgc" #line 68 "type.pgc"

View File

@ -75,7 +75,7 @@ main (void)
#line 27 "variable.pgc" #line 27 "variable.pgc"
struct personal_struct { struct personal_struct {
#line 25 "variable.pgc" #line 25 "variable.pgc"
struct varchar_name_1 { int len; char arr[ BUFFERSIZ ]; } name ; struct varchar_1 { int len; char arr[ BUFFERSIZ ]; } name ;
#line 26 "variable.pgc" #line 26 "variable.pgc"
struct birthinfo birth ; struct birthinfo birth ;
@ -94,10 +94,10 @@ main (void)
ind ind_children ; ind ind_children ;
struct t1 { struct t1 {
#line 32 "variable.pgc" #line 32 "variable.pgc"
struct varchar_name_2 { int len; char arr[ BUFFERSIZ ]; } name ; struct varchar_2 { int len; char arr[ BUFFERSIZ ]; } name ;
} ; struct t2 { } ; struct t2 {
#line 32 "variable.pgc" #line 32 "variable.pgc"
struct varchar_name_3 { int len; char arr[ BUFFERSIZ ]; } name ; struct varchar_3 { int len; char arr[ BUFFERSIZ ]; } name ;
} ;/* exec sql end declare section */ } ;/* exec sql end declare section */
#line 33 "variable.pgc" #line 33 "variable.pgc"
@ -207,7 +207,7 @@ if (sqlca.sqlcode < 0) exit (1);}
while (1) { while (1) {
strcpy(msg, "fetch"); strcpy(msg, "fetch");
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cur", ECPGt_EOIT, { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cur", ECPGt_EOIT,
ECPGt_varchar,&(p->name),(long)BUFFERSIZ,(long)1,sizeof(struct varchar_name_1), ECPGt_varchar,&(p->name),(long)BUFFERSIZ,(long)1,sizeof(struct varchar_1),
ECPGt_int,&(i->ind_name),(long)1,(long)1,sizeof(int), ECPGt_int,&(i->ind_name),(long)1,(long)1,sizeof(int),
ECPGt_long,&(p->birth.born),(long)1,(long)1,sizeof(long), ECPGt_long,&(p->birth.born),(long)1,(long)1,sizeof(long),
ECPGt_long,&(i->ind_birth.born),(long)1,(long)1,sizeof(long), ECPGt_long,&(i->ind_birth.born),(long)1,(long)1,sizeof(long),

View File

@ -29,7 +29,7 @@ main (void)
struct TBempl empl; struct TBempl empl;
string str; string str;
c ptr = NULL; c ptr = NULL;
struct varchar_vc struct varchar
{ {
int len; int len;
char text[10]; char text[10];