/* * Test DECLARE ... SELECT ... INTO ... * with "string" * Does make ecpg segfault when run with -C INFORMIX */ #include #include EXEC SQL BEGIN DECLARE SECTION; EXEC SQL include test28.h; EXEC SQL END DECLARE SECTION; EXEC SQL BEGIN DECLARE SECTION; int *myvar1; EXEC SQL END DECLARE SECTION; 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; } int main(int argc, char **argv) { EXEC SQL WHENEVER SQLWARNING SQLPRINT; EXEC SQL WHENEVER SQLERROR SQLPRINT; EXEC SQL connect to test; if (sqlca.sqlcode) { printf ("connect error = %ld\n", sqlca.sqlcode); exit (sqlca.sqlcode); } EXEC SQL CREATE TABLE a1 (id int, t text, d2 numeric, c text); EXEC SQL INSERT INTO a1 values(1, 'text1', 14.7, 'text2'); myvar1 = get_var(); EXEC SQL OPEN mycur; EXEC SQL WHENEVER NOT FOUND GOTO out; EXEC SQL FETCH FROM mycur; printf("id = %d\n", *myvar1); out: EXEC SQL CLOSE mycur2; EXEC SQL CLOSE mycur; EXEC SQL DISCONNECT; return 0; }