ECPG ignores SAVEPOINT if first statement of a transaction
От | Michael Fuhr |
---|---|
Тема | ECPG ignores SAVEPOINT if first statement of a transaction |
Дата | |
Msg-id | 20050803153223.GA17861@winnie.fuhr.org обсуждение исходный текст |
Список | pgsql-hackers |
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/
В списке pgsql-hackers по дате отправления: