From 573877b4bc4fabcdae8b22e5257fc80de478a507 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 26 Sep 2014 21:41:15 -0400 Subject: [PATCH] - repair autorollback for branches --- lib/sqlalchemy/engine/base.py | 4 ++-- test/engine/test_transaction.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index 05bb1f4e59..e5feda1387 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 fbaf01db7b..b3b17e75a1 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: -- 2.47.3