On 11.01.2011 20:08, Florian Pflug wrote:
Unfortunately, it seems that doing things this way will undermine the guarantee that retrying a failed SSI transaction won't fail due to the same conflict as it did originally. ConsiderT1> BEGIN TRANSACTION ISOLATION SERIALIZABLE T1> SELECT * FROM T T1> UPDATE T ... T1> PREPARE TRANSACTION T2> BEGIN TRANSACTION ISOLATION SERIALIZABLE T2> SELECT * FROM T T2> UPDATE T ... -> Serialization Error Retrying T2 won't help as long as T1 isn't COMMITTED.
T2 should block until T1 commits. I would be very surprised if it doesn't behave like that already. In general, a prepared transaction should be treated like an in-progress transaction - it might still abort too.
-- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
