summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-09-26 21:41:15 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2014-09-26 21:41:15 -0400
commit573877b4bc4fabcdae8b22e5257fc80de478a507 (patch)
tree37a34ce51538b6732a063ded94856397d527d215
parentb89523f0b75e8d39bcbd8a5c07015e9df4ef5e2f (diff)
downloadsqlalchemy-573877b4bc4fabcdae8b22e5257fc80de478a507.tar.gz
- repair autorollback for branches
-rw-r--r--lib/sqlalchemy/engine/base.py4
-rw-r--r--test/engine/test_transaction.py12
2 files changed, 14 insertions, 2 deletions
diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py
index 05bb1f4e5..e5feda138 100644
--- a/lib/sqlalchemy/engine/base.py
+++ b/lib/sqlalchemy/engine/base.py
@@ -673,8 +673,8 @@ class Connection(Connectable):
self.__transaction = None
def _autorollback(self):
- if not self.in_transaction():
- self._rollback_impl()
+ if not self._root.in_transaction():
+ self._root._rollback_impl()
def close(self):
"""Close this :class:`.Connection`.
diff --git a/test/engine/test_transaction.py b/test/engine/test_transaction.py
index fbaf01db7..b3b17e75a 100644
--- a/test/engine/test_transaction.py
+++ b/test/engine/test_transaction.py
@@ -149,6 +149,18 @@ class TransactionTest(fixtures.TestBase):
finally:
connection.close()
+ def test_branch_autorollback(self):
+ connection = testing.db.connect()
+ try:
+ branched = connection.connect()
+ branched.execute(users.insert(), user_id=1, user_name='user1')
+ try:
+ branched.execute(users.insert(), user_id=1, user_name='user1')
+ except exc.DBAPIError:
+ pass
+ finally:
+ connection.close()
+
def test_branch_orig_rollback(self):
connection = testing.db.connect()
try: