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.
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)
'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