]> granicus.if.org Git - postgresql/commitdiff
Do not use the variable name when defining a varchar structure in ecpg.
authorMichael Meskes <meskes@postgresql.org>
Mon, 13 Feb 2012 12:19:57 +0000 (13:19 +0100)
committerMichael Meskes <meskes@postgresql.org>
Mon, 13 Feb 2012 14:48:49 +0000 (15:48 +0100)
With a unique counter being added anyway, there is no need anymore to have the variable name listed, too.

src/interfaces/ecpg/preproc/ecpg.trailer
src/interfaces/ecpg/preproc/type.c
src/interfaces/ecpg/preproc/type.h
src/interfaces/ecpg/test/expected/preproc-array_of_struct.c
src/interfaces/ecpg/test/expected/preproc-cursor.c
src/interfaces/ecpg/test/expected/preproc-type.c
src/interfaces/ecpg/test/expected/preproc-variable.c
src/interfaces/ecpg/test/preproc/type.pgc

index 4e0c52caae21f5e87c3e6c46187f30cacdae929d..430983f5fa8933d0d0249938037f114fd7792042 100644 (file)
@@ -872,8 +872,8 @@ variable: opt_pointer ECPGColLabel opt_array_bounds opt_bit_field opt_initialize
                                                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 */
-                                       vcn = (char *) mm_alloc(strlen($2) + sizeof(int) * CHAR_BIT * 10 / 3);
-                                       sprintf(vcn, "%s_%d", $2, varchar_counter);
+                                       vcn = (char *) mm_alloc(sizeof(int) * CHAR_BIT * 10 / 3);
+                                       sprintf(vcn, "%d", varchar_counter);
                                        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);
                                        else
index f467a7f9c908fcf8c7389de6c6f1d797bdac2dbc..ed5b707b16fe019c94fb9c5be50e17810ddb75ac 100644 (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       *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)
                {
@@ -398,16 +396,11 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
                                else
                                        sprintf(variable, "&(%s%s)", prefix ? prefix : "", name);
 
-                               /* remove trailing [] is name is array element */
-                               var_name = mm_strdup(name);
-                               ptr = strchr(var_name, '[');
-                               if (ptr)
-                                       *ptr = '\0';
+                               /* If we created a varchar structure atomatically, counter is greater than 0. */
                                if (counter)
-                                       sprintf(offset, "sizeof(struct varchar_%s_%d)", var_name, counter);
+                                       sprintf(offset, "sizeof(struct varchar_%d)", counter);
                                else
-                                       sprintf(offset, "sizeof(struct varchar_%s)", var_name);
-                               free(var_name);
+                                       sprintf(offset, "sizeof(struct varchar)");
                                break;
                        case ECPGt_char:
                        case ECPGt_unsigned_char:
index 68e0d1aa2021515670fcd9d90eff292da770305d..b7768fd66146e16547f385d30272e2a42e4d6832 100644 (file)
@@ -36,7 +36,6 @@ struct ECPGtype
 /* Everything is malloced. */
 void           ECPGmake_struct_member(char *, struct ECPGtype *, struct ECPGstruct_member **);
 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_struct_type(struct ECPGstruct_member *, enum ECPGttype, char *, char *);
 struct ECPGstruct_member *ECPGstruct_member_dup(struct ECPGstruct_member *);
index 5579ed4132ed709d9c4803885889b4da88a60db4..9bb09cc38f46bc38dc741100909cab80d5fb6655 100644 (file)
@@ -32,7 +32,7 @@
 
 typedef  struct { 
 #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"
  int phone ;
@@ -61,7 +61,7 @@ int main()
              
        typedef struct { 
 #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"
  int phone ;
@@ -95,7 +95,7 @@ int main()
 #line 38 "array_of_struct.pgc"
  struct customer3 { 
 #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"
  int phone ;
@@ -104,7 +104,7 @@ int main()
 #line 43 "array_of_struct.pgc"
  struct customer4 { 
 #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"
  int phone ;
@@ -114,7 +114,7 @@ int main()
  int r ;
  
 #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 */
 #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, 
-       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_int,&(custs4.phone),(long)1,(long)1,sizeof(int), 
        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 );
 
     { 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);
 #line 85 "array_of_struct.pgc"
 
index 794e7e264378ffa6733e222645f49549db2d44ae..1d92d6c492e19c9dcacffeafc1f324c8ab0104ee 100644 (file)
@@ -74,7 +74,7 @@ main (void)
  char * curname3 = CURNAME ;
  
 #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"
  int count ;
@@ -602,7 +602,7 @@ if (sqlca.sqlcode < 0) exit (1);}
 
        strcpy(msg, "open");
        { ECPGdo(__LINE__, 0, 1, NULL, 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_char_variable,(ECPGprepared_statement(NULL, "st_id2", __LINE__)),(long)1,(long)1,(1)*sizeof(char), 
        ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
@@ -614,7 +614,7 @@ if (sqlca.sqlcode < 0) exit (1);}
 
        strcpy(msg, "fetch from");
        { ECPGdo(__LINE__, 0, 1, NULL, 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_int,&(id),(long)1,(long)1,sizeof(int), 
        ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
@@ -629,7 +629,7 @@ if (sqlca.sqlcode < 0) exit (1);}
 
        strcpy(msg, "fetch");
        { ECPGdo(__LINE__, 0, 1, NULL, 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_int,&(id),(long)1,(long)1,sizeof(int), 
        ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
@@ -644,7 +644,7 @@ if (sqlca.sqlcode < 0) exit (1);}
 
        strcpy(msg, "fetch 1 from");
        { ECPGdo(__LINE__, 0, 1, NULL, 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_int,&(id),(long)1,(long)1,sizeof(int), 
        ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
@@ -662,7 +662,7 @@ if (sqlca.sqlcode < 0) exit (1);}
        { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch $0 from $0", 
        ECPGt_int,&(count),(long)1,(long)1,sizeof(int), 
        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_int,&(id),(long)1,(long)1,sizeof(int), 
        ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
@@ -677,7 +677,7 @@ if (sqlca.sqlcode < 0) exit (1);}
 
        strcpy(msg, "move");
        { ECPGdo(__LINE__, 0, 1, NULL, 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);
 #line 216 "cursor.pgc"
 
@@ -687,7 +687,7 @@ if (sqlca.sqlcode < 0) exit (1);}
 
        strcpy(msg, "fetch 1");
        { ECPGdo(__LINE__, 0, 1, NULL, 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_int,&(id),(long)1,(long)1,sizeof(int), 
        ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
@@ -705,7 +705,7 @@ if (sqlca.sqlcode < 0) exit (1);}
        { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch $0 $0", 
        ECPGt_int,&(count),(long)1,(long)1,sizeof(int), 
        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_int,&(id),(long)1,(long)1,sizeof(int), 
        ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
@@ -720,7 +720,7 @@ if (sqlca.sqlcode < 0) exit (1);}
 
        strcpy(msg, "close");
        { ECPGdo(__LINE__, 0, 1, NULL, 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);
 #line 228 "cursor.pgc"
 
index c18cfd675b4ff14e357895d74ce51284179551c5..f913158ff92d7af1b59d10f36adf82e85cff1667 100644 (file)
@@ -93,7 +93,7 @@ main (void)
  c ptr = NULL ;
  
 #line 36 "type.pgc"
- struct varchar_vc { 
+ struct varchar { 
 #line 34 "type.pgc"
  int len ;
  
@@ -150,7 +150,7 @@ main (void)
        ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
        ECPGt_char,&(ptr),(long)0,(long)1,(1)*sizeof(char), 
        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);}
 #line 68 "type.pgc"
 
index ca3032faca7df8341c1ef454bd562b66e25ea26b..32e9778ee686a7d5a5d3516e2b494f47fd32f4e6 100644 (file)
@@ -75,7 +75,7 @@ main (void)
 #line 27 "variable.pgc"
  struct personal_struct { 
 #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"
  struct birthinfo birth ;
@@ -94,10 +94,10 @@ main (void)
  ind ind_children ;
  struct t1 { 
 #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 { 
 #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 */
 #line 33 "variable.pgc"
 
@@ -207,7 +207,7 @@ if (sqlca.sqlcode < 0) exit (1);}
        while (1) {
                strcpy(msg, "fetch");
                { 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_long,&(p->birth.born),(long)1,(long)1,sizeof(long), 
        ECPGt_long,&(i->ind_birth.born),(long)1,(long)1,sizeof(long), 
index 461401c8ee83f5df7b3f22b7baa0a1673fb47780..359a7f49a0cc2bd33f7ce5c9ba51b1b545b841e0 100644 (file)
@@ -29,7 +29,7 @@ main (void)
   struct TBempl empl;
   string str;
   c ptr = NULL;
-  struct varchar_vc
+  struct varchar
   {
        int len;
        char text[10];