Boszormenyi Zoltan írta: > Michael Meskes írta: > >> On Wed, Aug 05, 2009 at 11:08:26AM +0200, Boszormenyi Zoltan wrote: >> >> >>> I have looked at it. The code seems to be invalid. >>> >>> >> Yes, it is, I was too lazy to make it valid. If you just allocate the memory >> for the variable in get_var() it becomes valid. >> >> > > If you meant like this below, then ECPG segfaults on this too: > > int * > get_var(void) > { > EXEC SQL BEGIN DECLARE SECTION; > int *myvar; > EXEC SQL END DECLARE SECTION; > > myvar = malloc(sizeof(int)); > EXEC SQL DECLARE mycur CURSOR FOR SELECT id INTO :myvar FROM a1 > WHERE id = 1; > return myvar; > } >
And another problem that we have run into already. ECPG is a one-stage preprocessor, instead of a two-stage one. If the above function is located later in the source file than the "OPEN mycur" or "FETCH mycur", then ECPG complains about an unknown cursor. Not a big annoyance, but ESQL/C supports that. > ecpg_type_name() aborts, ECPGt_array is unhandled > besides struct and union, it's called at the same place > in adjust_informix() as ECPGt_struct. > > Attached is my modified test28.pgc. Compiling it > *without* -C INFORMIX makes it unusable, the variable > or the address where the data should be fetched into > doesn't even gets emitted in neither the DECLARE/OPEN > nor the FETCH callsites. I think this code should be valid > even in non-Informix-compatible mode. > > >> ... Just look at >> test/compat_informix/test_informix.pgc for a real and working example. >> >> > > The example there is the other way around. > The variable, the DECLARE and FETCH commands > are in the outer main() function, and it calls a function called > openit() where the OPEN command is emitted, so that > example doesn't help here too much. > > Best regards, > Zoltán Böszörményi > > > ------------------------------------------------------------------------ > > -- Bible has answers for everything. Proof: "But let your communication be, Yea, yea; Nay, nay: for whatsoever is more than these cometh of evil." (Matthew 5:37) - basics of digital technology. "May your kingdom come" - superficial description of plate tectonics ---------------------------------- Zoltán Böszörményi Cybertec Schönig & Schönig GmbH http://www.postgresql.at/ -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers