Proper way to keep count of statements executed within current transaction

Поиск
Список
Период
Сортировка
От Podrigal, Aron
Тема Proper way to keep count of statements executed within current transaction
Дата
Msg-id CANJp-yjQ0G+ww_fMeWdNwYcprwZLQTxSvG8wTu8LKek26MTayQ@mail.gmail.com
обсуждение исходный текст
Ответы Re: Proper way to keep count of statements executed within currenttransaction  (Christophe Pettus <xof@thebuild.com>)
Список psycopg
Hi

I've seen many libraries using psycopg2 wrapping execution of statements and in case of connection failure, it reconnects and submits the query again.
Doing so in every case can lead to unexpected results when the connection was reset after the first statement within a transaction. 

Consider the following:

BEGIN; -- or autocommit = False
SELECT balance FROM accounts WHERE id = 1 FOR UPDATE;

-- User code does some processing with the returned value.
-- At this point the the server was restarted and connection is closed
-- The users code submits 
UPDATE  accounts SET balance = x WHERE id = 1;
-- The UPDATE query fails due to lost connection, so the library code which wraps the statement  reconnects and submits the query again.

My question is, what is the correct way to detect whether any statements were executed successfully prior to the connection being lost. And decide whether it is safe to automatically reconnect and resubmit the query ?
 

--

-
Aron Podrigal

В списке psycopg по дате отправления:

Предыдущее
От: Thomas Güttler
Дата:
Сообщение: Re: Log Stacktrace of current Python Interpreter via PostgreSQLtrigger
Следующее
От: Christophe Pettus
Дата:
Сообщение: Re: Proper way to keep count of statements executed within currenttransaction