From: Tony Locke Date: Sat, 26 Jul 2014 19:10:36 +0000 (+0100) Subject: two_phase_recover, COMMIT PREPARED in transaction X-Git-Tag: rel_1_0_0b1~216^2~9^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed1bbbed272d6413561a2b5a29873f1021890c0d;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git two_phase_recover, COMMIT PREPARED in transaction In test/engine/test_transaction/test_two_phase_recover(), a COMMIT PREPARED is issued while in a transaction. This causes an error, and a prepared transaction is left hanging around which causes the subsequent test to hang. I've altered the test to execute the offending query with autocommit=true, then when it gets to the COMMIT PRPARED it can go ahead. There's another complication for pg8000 because its tpc_recover() method started a transaction if one wasn't already in progress. I've decided that this is incorrect behaviour and so from pg8000-1.9.13 this method never starts or stops a transaction. --- diff --git a/test/engine/test_transaction.py b/test/engine/test_transaction.py index f9744444d2..8a53036422 100644 --- a/test/engine/test_transaction.py +++ b/test/engine/test_transaction.py @@ -347,9 +347,10 @@ class TransactionTest(fixtures.TestBase): connection.invalidate() connection2 = testing.db.connect() - eq_(connection2.execute(select([users.c.user_id]). - order_by(users.c.user_id)).fetchall(), - []) + eq_( + connection2.execution_options(autocommit=True). + execute(select([users.c.user_id]). + order_by(users.c.user_id)).fetchall(), []) recoverables = connection2.recover_twophase() assert transaction.xid in recoverables connection2.commit_prepared(transaction.xid, recover=True) diff --git a/test/requirements.py b/test/requirements.py index bf9b8f5263..7eeabef2b4 100644 --- a/test/requirements.py +++ b/test/requirements.py @@ -363,7 +363,6 @@ class DefaultRequirements(SuiteRequirements): 'need separate XA implementation'), exclude('mysql', '<', (5, 0, 3), 'two-phase xact not supported by database'), - no_support("postgresql+pg8000", "not supported and/or hangs") ]) @property