Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0c2eb98

Browse files
author
Michael Meskes
committed
Several fixes to array handling in ecpg.
Patches by Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>Conflicts:src/interfaces/ecpg/test/expected/preproc-outofscope.c
1 parentd034e9b commit0c2eb98

File tree

5 files changed

+46
-37
lines changed

5 files changed

+46
-37
lines changed

‎src/interfaces/ecpg/preproc/type.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,8 @@ ECPGdump_a_type(FILE *o, const char *name, struct ECPGtype * type, const int bra
303303

304304
ECPGdump_a_simple(o,name,
305305
type->u.element->type,
306-
type->u.element->size,type->size,NULL,prefix,type->u.element->counter);
306+
type->u.element->size,type->size,struct_sizeof ?struct_sizeof :NULL,
307+
prefix,type->u.element->counter);
307308

308309
if (ind_type!=NULL)
309310
{
@@ -478,11 +479,19 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
478479
sprintf(offset,"sizeof(%s)",ecpg_type_name(type));
479480
break;
480481
}
481-
482-
if (atoi(arrsize)<0)
482+
483+
/*
484+
* Array size would be -1 for addresses of members within structure,
485+
* when pointer to structure is being dumped.
486+
*/
487+
if (atoi(arrsize)<0&& !siz)
483488
strcpy(arrsize,"1");
484489

485-
if (siz==NULL||strlen(siz)==0||strcmp(arrsize,"0")==0||strcmp(arrsize,"1")==0)
490+
/*
491+
* If siz i.e. the size of structure of which this variable is part of,
492+
* that gives the offset to the next element, if required
493+
*/
494+
if (siz==NULL||strlen(siz)==0)
486495
fprintf(o,"\n\t%s,%s,(long)%s,(long)%s,%s, ",get_type(type),variable,varcharsize,arrsize,offset);
487496
else
488497
fprintf(o,"\n\t%s,%s,(long)%s,(long)%s,%s, ",get_type(type),variable,varcharsize,arrsize,siz);

‎src/interfaces/ecpg/test/expected/preproc-array_of_struct.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -235,10 +235,10 @@ if (sqlca.sqlcode < 0) sqlprint();}
235235
}
236236

237237
{ECPGdo(__LINE__,0,1,NULL,0,ECPGst_normal,"select * from customers limit 1",ECPGt_EOIT,
238-
ECPGt_varchar,&(custs4.name),(long)50,(long)1,sizeof(structvarchar_4),
239-
ECPGt_short,&(inds[0].name_ind),(long)1,(long)1,sizeof(short),
240-
ECPGt_int,&(custs4.phone),(long)1,(long)1,sizeof(int),
241-
ECPGt_short,&(inds[0].phone_ind),(long)1,(long)1,sizeof(short),ECPGt_EORT);
238+
ECPGt_varchar,&(custs4.name),(long)50,(long)1,sizeof(structcustomer4),
239+
ECPGt_short,&(inds[0].name_ind),(long)1,(long)1,sizeof(structind),
240+
ECPGt_int,&(custs4.phone),(long)1,(long)1,sizeof(structcustomer4),
241+
ECPGt_short,&(inds[0].phone_ind),(long)1,(long)1,sizeof(structind),ECPGt_EORT);
242242
#line 80 "array_of_struct.pgc"
243243

244244
if (sqlca.sqlcode==ECPG_NOT_FOUND)sqlprint();

‎src/interfaces/ecpg/test/expected/preproc-outofscope.c

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -203,16 +203,16 @@ static void
203203
open_cur1(void)
204204
{
205205
{ECPGdo(__LINE__,0,1,NULL,0,ECPGst_normal,"declare mycur cursor for select * from a1",ECPGt_EOIT,
206-
ECPGt_int,&((*(MYTYPE*)(ECPGget_var(0))).id),(long)1,(long)1,sizeof(int),
207-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).id),(long)1,(long)1,sizeof(int),
208-
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).t),(long)64,(long)1,(64)*sizeof(char),
209-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).t),(long)1,(long)1,sizeof(int),
210-
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d1),(long)1,(long)1,sizeof(double),
211-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d1),(long)1,(long)1,sizeof(int),
212-
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d2),(long)1,(long)1,sizeof(double),
213-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d2),(long)1,(long)1,sizeof(int),
214-
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).c),(long)30,(long)1,(30)*sizeof(char),
215-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).c),(long)1,(long)1,sizeof(int),ECPGt_EORT);
206+
ECPGt_int,&((*(MYTYPE*)(ECPGget_var(0))).id),(long)1,(long)1,sizeof(structmytype),
207+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).id),(long)1,(long)1,sizeof(structmynulltype),
208+
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).t),(long)64,(long)1,sizeof(structmytype),
209+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).t),(long)1,(long)1,sizeof(structmynulltype),
210+
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d1),(long)1,(long)1,sizeof(structmytype),
211+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d1),(long)1,(long)1,sizeof(structmynulltype),
212+
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d2),(long)1,(long)1,sizeof(structmytype),
213+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d2),(long)1,(long)1,sizeof(structmynulltype),
214+
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).c),(long)30,(long)1,sizeof(structmytype),
215+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).c),(long)1,(long)1,sizeof(structmynulltype),ECPGt_EORT);
216216
#line 40 "outofscope.pgc"
217217

218218
if (sqlca.sqlcode<0)exit (1);}
@@ -227,16 +227,16 @@ static void
227227
get_record1(void)
228228
{
229229
{ECPGdo(__LINE__,0,1,NULL,0,ECPGst_normal,"fetch mycur",ECPGt_EOIT,
230-
ECPGt_int,&((*(MYTYPE*)(ECPGget_var(0))).id),(long)1,(long)1,sizeof(int),
231-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).id),(long)1,(long)1,sizeof(int),
232-
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).t),(long)64,(long)1,(64)*sizeof(char),
233-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).t),(long)1,(long)1,sizeof(int),
234-
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d1),(long)1,(long)1,sizeof(double),
235-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d1),(long)1,(long)1,sizeof(int),
236-
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d2),(long)1,(long)1,sizeof(double),
237-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d2),(long)1,(long)1,sizeof(int),
238-
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).c),(long)30,(long)1,(30)*sizeof(char),
239-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).c),(long)1,(long)1,sizeof(int),ECPGt_EORT);
230+
ECPGt_int,&((*(MYTYPE*)(ECPGget_var(0))).id),(long)1,(long)1,sizeof(structmytype),
231+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).id),(long)1,(long)1,sizeof(structmynulltype),
232+
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).t),(long)64,(long)1,sizeof(structmytype),
233+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).t),(long)1,(long)1,sizeof(structmynulltype),
234+
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d1),(long)1,(long)1,sizeof(structmytype),
235+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d1),(long)1,(long)1,sizeof(structmynulltype),
236+
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d2),(long)1,(long)1,sizeof(structmytype),
237+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d2),(long)1,(long)1,sizeof(structmynulltype),
238+
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).c),(long)30,(long)1,sizeof(structmytype),
239+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).c),(long)1,(long)1,sizeof(structmynulltype),ECPGt_EORT);
240240
#line 49 "outofscope.pgc"
241241

242242
if (sqlca.sqlcode<0)exit (1);}

‎src/interfaces/ecpg/test/expected/preproc-type.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,11 +140,11 @@ main (void)
140140
{ECPGdo(__LINE__,0,1,NULL,0,ECPGst_normal,"select idnum , name , accs , string1 , string2 , string3 from empl where idnum = $1 ",
141141
ECPGt_long,&(empl.idnum),(long)1,(long)1,sizeof(long),
142142
ECPGt_NO_INDICATOR,NULL ,0L,0L,0L,ECPGt_EOIT,
143-
ECPGt_long,&(empl.idnum),(long)1,(long)1,sizeof(long),
143+
ECPGt_long,&(empl.idnum),(long)1,(long)1,sizeof(structTBempl),
144144
ECPGt_NO_INDICATOR,NULL ,0L,0L,0L,
145-
ECPGt_char,&(empl.name),(long)21,(long)1,(21)*sizeof(char),
145+
ECPGt_char,&(empl.name),(long)21,(long)1,sizeof(structTBempl),
146146
ECPGt_NO_INDICATOR,NULL ,0L,0L,0L,
147-
ECPGt_short,&(empl.accs),(long)1,(long)1,sizeof(short),
147+
ECPGt_short,&(empl.accs),(long)1,(long)1,sizeof(structTBempl),
148148
ECPGt_NO_INDICATOR,NULL ,0L,0L,0L,
149149
ECPGt_char,(str),(long)11,(long)1,(11)*sizeof(char),
150150
ECPGt_NO_INDICATOR,NULL ,0L,0L,0L,

‎src/interfaces/ecpg/test/expected/preproc-variable.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -207,12 +207,12 @@ if (sqlca.sqlcode < 0) exit (1);}
207207
while (1) {
208208
strcpy(msg,"fetch");
209209
{ECPGdo(__LINE__,0,1,NULL,0,ECPGst_normal,"fetch cur",ECPGt_EOIT,
210-
ECPGt_varchar,&(p->name),(long)BUFFERSIZ,(long)1,sizeof(structvarchar_1),
211-
ECPGt_int,&(i->ind_name),(long)1,(long)1,sizeof(int),
212-
ECPGt_long,&(p->birth.born),(long)1,(long)1,sizeof(long),
213-
ECPGt_long,&(i->ind_birth.born),(long)1,(long)1,sizeof(long),
214-
ECPGt_short,&(p->birth.age),(long)1,(long)1,sizeof(short),
215-
ECPGt_short,&(i->ind_birth.age),(long)1,(long)1,sizeof(short),
210+
ECPGt_varchar,&(p->name),(long)BUFFERSIZ,(long)-1,sizeof(structbirthinfo),
211+
ECPGt_int,&(i->ind_name),(long)1,(long)-1,sizeof(structbirthinfo),
212+
ECPGt_long,&(p->birth.born),(long)1,(long)1,sizeof(structbirthinfo),
213+
ECPGt_long,&(i->ind_birth.born),(long)1,(long)1,sizeof(structbirthinfo),
214+
ECPGt_short,&(p->birth.age),(long)1,(long)1,sizeof(structbirthinfo),
215+
ECPGt_short,&(i->ind_birth.age),(long)1,(long)1,sizeof(structbirthinfo),
216216
ECPGt_char,&(married),(long)0,(long)1,(1)*sizeof(char),
217217
ECPGt_long,&(ind_married),(long)1,(long)1,sizeof(long),
218218
ECPGt_int,&(children.integer),(long)1,(long)1,sizeof(int),

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp