mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-06-03 06:19:59 -04:00
- 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:
@@ -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]
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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."""
|
||||
|
||||
Reference in New Issue
Block a user