- Threadlocal engine methods rollback(), commit(),

prepare() won't raise if no transaction is in progress;
this was a regression introduced in 0.6.  [ticket:1998]
This commit is contained in:
Mike Bayer
2010-12-08 13:46:29 -05:00
parent 1c67cf5caf
commit 8df4dc4385
3 changed files with 23 additions and 1 deletions
+4
View File
@@ -77,6 +77,10 @@ CHANGES
"collections.Sequence" registration for RowProxy.
[ticket:1871]
- Threadlocal engine methods rollback(), commit(),
prepare() won't raise if no transaction is in progress;
this was a regression introduced in 0.6. [ticket:1998]
- postgresql
- Single element tuple expressions inside an IN clause
parenthesize correctly, also from [ticket:1984]
+7 -1
View File
@@ -77,16 +77,22 @@ class TLEngine(base.Engine):
self._connections.trans.append(self.contextual_connect().begin())
def prepare(self):
if not self._connections.trans:
return
self._connections.trans[-1].prepare()
def commit(self):
if not self._connections.trans:
return
trans = self._connections.trans.pop(-1)
trans.commit()
def rollback(self):
if not self._connections.trans:
return
trans = self._connections.trans.pop(-1)
trans.rollback()
def dispose(self):
self._connections = util.threading.local()
super(TLEngine, self).dispose()
+12
View File
@@ -541,7 +541,19 @@ class TLTransactionTest(TestBase):
# ensure tests start with engine closed
tlengine.close()
def test_rollback_no_trans(self):
# shouldn't fail
tlengine.rollback()
def test_commit_no_trans(self):
# shouldn't fail
tlengine.commit()
def test_prepare_no_trans(self):
# shouldn't fail
tlengine.prepare()
def test_connection_close(self):
"""test that when connections are closed for real, transactions
are rolled back and disposed."""