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 по дате отправления:

Предыдущее
От: Andrew Dunstan
Дата:
Сообщение: openbsd, plpython, missing threading symbols
Следующее
От: Tom Lane
Дата:
Сообщение: Re: openbsd, plpython, missing threading symbols