]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- repair autorollback for branches
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 27 Sep 2014 01:41:15 +0000 (21:41 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 27 Sep 2014 01:41:15 +0000 (21:41 -0400)
lib/sqlalchemy/engine/base.py
test/engine/test_transaction.py

index 05bb1f4e593eaae965bee71426f75a590271802a..e5feda138742abdd041457b92f4eccfea874f28d 100644 (file)
@@ -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`.
index fbaf01db7bb4a426f09576e892870fe4d32313e2..b3b17e75a1542995aa4e9abad8cb2454d87b0e90 100644 (file)
@@ -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: