Would someone on the interface list look for a fix to this? Thanks. ---------------------------------------------------------------------------
Michael Fuhr wrote: > ECPG ignores SAVEPOINT if it's the first statement of a transaction: > > % cat foo.pgc > int > main(void) > { > EXEC SQL WHENEVER SQLERROR SQLPRINT; > EXEC SQL WHENEVER SQLWARNING SQLPRINT; > > EXEC SQL CONNECT TO test; > > EXEC SQL SAVEPOINT foo; > EXEC SQL DROP TABLE nosuch_1; > EXEC SQL ROLLBACK TO foo; > EXEC SQL DROP TABLE nosuch_2; > > EXEC SQL COMMIT; > EXEC SQL DISCONNECT; > > return 0; > } > > % ./foo > sql error 'table "nosuch_1" does not exist' in line 10. > sql error 'current transaction is aborted, commands ignored until end of > transa > > The SAVEPOINT code is generated but apparently ECPGtrans() doesn't > execute it. A sniff of the connection doesn't show it, and the > sniff shows the ROLLBACK TO failing with "no such savepoint." > > If I execute a command before the SAVEPOINT then I get the following, > which is what I was expecting: > > % ./foo > sql error 'table "nosuch_1" does not exist' in line 11. > sql error 'table "nosuch_2" does not exist' in line 13. > > A sniff of this connection shows both the SAVEPOINT and ROLLBACK TO > being executed and succeeding. > > -- > Michael Fuhr > http://www.fuhr.org/~mfuhr/ > > ---------------------------(end of broadcast)--------------------------- > TIP 6: explain analyze is your friend > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings