mirror of
https://github.com/postgres/postgres.git
synced 2025-05-17 06:41:24 +03:00
Several fixes to array handling in ecpg.
Patches by Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
This commit is contained in:
parent
601c01e08d
commit
3b8fda6763
@ -303,7 +303,8 @@ ECPGdump_a_type(FILE *o, const char *name, struct ECPGtype * type, const int bra
|
|||||||
|
|
||||||
ECPGdump_a_simple(o, name,
|
ECPGdump_a_simple(o, name,
|
||||||
type->u.element->type,
|
type->u.element->type,
|
||||||
type->u.element->size, type->size, NULL, prefix, type->u.element->counter);
|
type->u.element->size, type->size, struct_sizeof ? struct_sizeof : NULL,
|
||||||
|
prefix, type->u.element->counter);
|
||||||
|
|
||||||
if (ind_type != NULL)
|
if (ind_type != NULL)
|
||||||
{
|
{
|
||||||
@ -481,11 +482,19 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
|
|||||||
sprintf(offset, "sizeof(%s)", ecpg_type_name(type));
|
sprintf(offset, "sizeof(%s)", ecpg_type_name(type));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (atoi(arrsize) < 0)
|
/*
|
||||||
|
* Array size would be -1 for addresses of members within structure,
|
||||||
|
* when pointer to structure is being dumped.
|
||||||
|
*/
|
||||||
|
if (atoi(arrsize) < 0 && !siz)
|
||||||
strcpy(arrsize, "1");
|
strcpy(arrsize, "1");
|
||||||
|
|
||||||
if (siz == NULL || strlen(siz) == 0 || strcmp(arrsize, "0") == 0 || strcmp(arrsize, "1") == 0)
|
/*
|
||||||
|
* If siz i.e. the size of structure of which this variable is part of,
|
||||||
|
* that gives the offset to the next element, if required
|
||||||
|
*/
|
||||||
|
if (siz == NULL || strlen(siz) == 0)
|
||||||
fprintf(o, "\n\t%s,%s,(long)%s,(long)%s,%s, ", get_type(type), variable, varcharsize, arrsize, offset);
|
fprintf(o, "\n\t%s,%s,(long)%s,(long)%s,%s, ", get_type(type), variable, varcharsize, arrsize, offset);
|
||||||
else
|
else
|
||||||
fprintf(o, "\n\t%s,%s,(long)%s,(long)%s,%s, ", get_type(type), variable, varcharsize, arrsize, siz);
|
fprintf(o, "\n\t%s,%s,(long)%s,(long)%s,%s, ", get_type(type), variable, varcharsize, arrsize, siz);
|
||||||
|
@ -235,10 +235,10 @@ 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_4),
|
ECPGt_varchar,&(custs4.name),(long)50,(long)1,sizeof( struct customer4 ),
|
||||||
ECPGt_short,&(inds[0].name_ind),(long)1,(long)1,sizeof(short),
|
ECPGt_short,&(inds[0].name_ind),(long)1,(long)1,sizeof( struct ind ),
|
||||||
ECPGt_int,&(custs4.phone),(long)1,(long)1,sizeof(int),
|
ECPGt_int,&(custs4.phone),(long)1,(long)1,sizeof( struct customer4 ),
|
||||||
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( struct ind ), ECPGt_EORT);
|
||||||
#line 80 "array_of_struct.pgc"
|
#line 80 "array_of_struct.pgc"
|
||||||
|
|
||||||
if (sqlca.sqlcode == ECPG_NOT_FOUND) sqlprint();
|
if (sqlca.sqlcode == ECPG_NOT_FOUND) sqlprint();
|
||||||
|
@ -202,16 +202,16 @@ static void
|
|||||||
open_cur1(void)
|
open_cur1(void)
|
||||||
{
|
{
|
||||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare mycur cursor for select * from a1", ECPGt_EOIT,
|
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare mycur cursor for select * from a1", ECPGt_EOIT,
|
||||||
ECPGt_int,&((*( MYTYPE *)(ECPGget_var( 0)) ).id),(long)1,(long)1,sizeof(int),
|
ECPGt_int,&((*( MYTYPE *)(ECPGget_var( 0)) ).id),(long)1,(long)1,sizeof( struct mytype ),
|
||||||
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).id),(long)1,(long)1,sizeof(int),
|
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).id),(long)1,(long)1,sizeof( struct mynulltype ),
|
||||||
ECPGt_char,&((*( MYTYPE *)(ECPGget_var( 0)) ).t),(long)64,(long)1,(64)*sizeof(char),
|
ECPGt_char,&((*( MYTYPE *)(ECPGget_var( 0)) ).t),(long)64,(long)1,sizeof( struct mytype ),
|
||||||
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).t),(long)1,(long)1,sizeof(int),
|
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).t),(long)1,(long)1,sizeof( struct mynulltype ),
|
||||||
ECPGt_double,&((*( MYTYPE *)(ECPGget_var( 0)) ).d1),(long)1,(long)1,sizeof(double),
|
ECPGt_double,&((*( MYTYPE *)(ECPGget_var( 0)) ).d1),(long)1,(long)1,sizeof( struct mytype ),
|
||||||
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).d1),(long)1,(long)1,sizeof(int),
|
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).d1),(long)1,(long)1,sizeof( struct mynulltype ),
|
||||||
ECPGt_double,&((*( MYTYPE *)(ECPGget_var( 0)) ).d2),(long)1,(long)1,sizeof(double),
|
ECPGt_double,&((*( MYTYPE *)(ECPGget_var( 0)) ).d2),(long)1,(long)1,sizeof( struct mytype ),
|
||||||
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).d2),(long)1,(long)1,sizeof(int),
|
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).d2),(long)1,(long)1,sizeof( struct mynulltype ),
|
||||||
ECPGt_char,&((*( MYTYPE *)(ECPGget_var( 0)) ).c),(long)30,(long)1,(30)*sizeof(char),
|
ECPGt_char,&((*( MYTYPE *)(ECPGget_var( 0)) ).c),(long)30,(long)1,sizeof( struct mytype ),
|
||||||
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).c),(long)1,(long)1,sizeof(int), ECPGt_EORT);
|
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).c),(long)1,(long)1,sizeof( struct mynulltype ), ECPGt_EORT);
|
||||||
#line 40 "outofscope.pgc"
|
#line 40 "outofscope.pgc"
|
||||||
|
|
||||||
if (sqlca.sqlcode < 0) exit (1);}
|
if (sqlca.sqlcode < 0) exit (1);}
|
||||||
@ -226,16 +226,16 @@ static void
|
|||||||
get_record1(void)
|
get_record1(void)
|
||||||
{
|
{
|
||||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch mycur", ECPGt_EOIT,
|
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch mycur", ECPGt_EOIT,
|
||||||
ECPGt_int,&((*( MYTYPE *)(ECPGget_var( 0)) ).id),(long)1,(long)1,sizeof(int),
|
ECPGt_int,&((*( MYTYPE *)(ECPGget_var( 0)) ).id),(long)1,(long)1,sizeof( struct mytype ),
|
||||||
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).id),(long)1,(long)1,sizeof(int),
|
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).id),(long)1,(long)1,sizeof( struct mynulltype ),
|
||||||
ECPGt_char,&((*( MYTYPE *)(ECPGget_var( 0)) ).t),(long)64,(long)1,(64)*sizeof(char),
|
ECPGt_char,&((*( MYTYPE *)(ECPGget_var( 0)) ).t),(long)64,(long)1,sizeof( struct mytype ),
|
||||||
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).t),(long)1,(long)1,sizeof(int),
|
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).t),(long)1,(long)1,sizeof( struct mynulltype ),
|
||||||
ECPGt_double,&((*( MYTYPE *)(ECPGget_var( 0)) ).d1),(long)1,(long)1,sizeof(double),
|
ECPGt_double,&((*( MYTYPE *)(ECPGget_var( 0)) ).d1),(long)1,(long)1,sizeof( struct mytype ),
|
||||||
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).d1),(long)1,(long)1,sizeof(int),
|
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).d1),(long)1,(long)1,sizeof( struct mynulltype ),
|
||||||
ECPGt_double,&((*( MYTYPE *)(ECPGget_var( 0)) ).d2),(long)1,(long)1,sizeof(double),
|
ECPGt_double,&((*( MYTYPE *)(ECPGget_var( 0)) ).d2),(long)1,(long)1,sizeof( struct mytype ),
|
||||||
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).d2),(long)1,(long)1,sizeof(int),
|
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).d2),(long)1,(long)1,sizeof( struct mynulltype ),
|
||||||
ECPGt_char,&((*( MYTYPE *)(ECPGget_var( 0)) ).c),(long)30,(long)1,(30)*sizeof(char),
|
ECPGt_char,&((*( MYTYPE *)(ECPGget_var( 0)) ).c),(long)30,(long)1,sizeof( struct mytype ),
|
||||||
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).c),(long)1,(long)1,sizeof(int), ECPGt_EORT);
|
ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).c),(long)1,(long)1,sizeof( struct mynulltype ), ECPGt_EORT);
|
||||||
#line 49 "outofscope.pgc"
|
#line 49 "outofscope.pgc"
|
||||||
|
|
||||||
if (sqlca.sqlcode < 0) exit (1);}
|
if (sqlca.sqlcode < 0) exit (1);}
|
||||||
|
@ -140,11 +140,11 @@ main (void)
|
|||||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select idnum , name , accs , string1 , string2 , string3 from empl where idnum = $1 ",
|
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select idnum , name , accs , string1 , string2 , string3 from empl where idnum = $1 ",
|
||||||
ECPGt_long,&(empl.idnum),(long)1,(long)1,sizeof(long),
|
ECPGt_long,&(empl.idnum),(long)1,(long)1,sizeof(long),
|
||||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
|
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
|
||||||
ECPGt_long,&(empl.idnum),(long)1,(long)1,sizeof(long),
|
ECPGt_long,&(empl.idnum),(long)1,(long)1,sizeof( struct TBempl ),
|
||||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||||
ECPGt_char,&(empl.name),(long)21,(long)1,(21)*sizeof(char),
|
ECPGt_char,&(empl.name),(long)21,(long)1,sizeof( struct TBempl ),
|
||||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||||
ECPGt_short,&(empl.accs),(long)1,(long)1,sizeof(short),
|
ECPGt_short,&(empl.accs),(long)1,(long)1,sizeof( struct TBempl ),
|
||||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||||
ECPGt_char,(str),(long)11,(long)1,(11)*sizeof(char),
|
ECPGt_char,(str),(long)11,(long)1,(11)*sizeof(char),
|
||||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||||
|
@ -207,12 +207,12 @@ 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_1),
|
ECPGt_varchar,&(p->name),(long)BUFFERSIZ,(long)-1,sizeof( struct birthinfo ),
|
||||||
ECPGt_int,&(i->ind_name),(long)1,(long)1,sizeof(int),
|
ECPGt_int,&(i->ind_name),(long)1,(long)-1,sizeof( struct birthinfo ),
|
||||||
ECPGt_long,&(p->birth.born),(long)1,(long)1,sizeof(long),
|
ECPGt_long,&(p->birth.born),(long)1,(long)1,sizeof( struct birthinfo ),
|
||||||
ECPGt_long,&(i->ind_birth.born),(long)1,(long)1,sizeof(long),
|
ECPGt_long,&(i->ind_birth.born),(long)1,(long)1,sizeof( struct birthinfo ),
|
||||||
ECPGt_short,&(p->birth.age),(long)1,(long)1,sizeof(short),
|
ECPGt_short,&(p->birth.age),(long)1,(long)1,sizeof( struct birthinfo ),
|
||||||
ECPGt_short,&(i->ind_birth.age),(long)1,(long)1,sizeof(short),
|
ECPGt_short,&(i->ind_birth.age),(long)1,(long)1,sizeof( struct birthinfo ),
|
||||||
ECPGt_char,&(married),(long)0,(long)1,(1)*sizeof(char),
|
ECPGt_char,&(married),(long)0,(long)1,(1)*sizeof(char),
|
||||||
ECPGt_long,&(ind_married),(long)1,(long)1,sizeof(long),
|
ECPGt_long,&(ind_married),(long)1,(long)1,sizeof(long),
|
||||||
ECPGt_int,&(children.integer),(long)1,(long)1,sizeof(int),
|
ECPGt_int,&(children.integer),(long)1,(long)1,sizeof(int),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user