ecpg mapping struct members for indicators incorrectly?

From: Shelby Cain <alyandon(at)yahoo(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Subject: ecpg mapping struct members for indicators incorrectly?
Date: 2004-02-19 19:57:33
Message-ID: 20040219195733.45089.qmail@web41610.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

I'm coming from a Pro*C background so I'm not entirely
certain whether what I am attempting is simply not
allowed in ecpg or not.

ecpg --version
ecpg (PostgreSQL 7.4.1) 3.1.0

showbug.pgc
------------------------------------------
#define HOSTSIZE 100

exec sql begin declare section;

typedef struct _my_host_t {
char field1[HOSTSIZE][20];
int field2[HOSTSIZE];
} _my_host_ary_t;

typedef struct _my_host_ind_t {
int field1_ind[HOSTSIZE];
int field2_ind[HOSTSIZE];
} _my_host_ind_ary_t;

exec sql end declare section;

exec sql declare my_cur cursor for select field1,
field2 from sometable;

int main()
{
exec sql begin declare section;

_my_host_ary_t *mydata;
_my_host_ind_ary_t *myind;
int fetchsize;

exec sql end declare section;

fetchsize = HOSTSIZE;

exec sql fetch :fetchsize from my_cur into :mydata
INDICATOR :myind;

}
------------------------------------------

After running ecpg -o showbug.c showbug.pgc the
section of interest in the generated .c file is:

showbug.c
------------------------------------------
/* Processed by ecpg (3.1.0) */

[...]

int main()
{
/* exec sql begin declare section */

[...]

{ ECPGdo(__LINE__, 0, 1, NULL, "fetch ? from
my_cur",

ECPGt_int,&(vArySize),(long)1,(long)1,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
ECPGt_EOIT,

ECPGt_char,(mydata->field1),(long)20,(long)HOSTSIZE,20*sizeof(char),

ECPGt_int,(mydata->field1_ind),(long)1,(long)HOSTSIZE,sizeof(int),

ECPGt_int,(mydata->field2),(long)1,(long)HOSTSIZE,sizeof(int),


ECPGt_int,(mydata->field2_ind),(long)1,(long)HOSTSIZE,sizeof(int),
ECPGt_EORT);}

[...]

}

You can see that ecpg incorrectly mapped the indicator
fields field1_ind and field2_ind to the mydata struct
instead of myind which will cause a compile error.

Regards,

Shelby Cain

__________________________________
Do you Yahoo!?
Yahoo! Mail SpamGuard - Read only the mail you want.
http://antispam.yahoo.com/tools

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message wade 2004-02-20 00:23:30
Previous Message Roopali Sharma 2004-02-19 18:26:06 pg_restore problems