From: Mike Bayer Date: Sat, 27 Sep 2014 01:41:15 +0000 (-0400) Subject: - repair autorollback for branches X-Git-Tag: rel_1_0_0b1~70^2~58 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=573877b4bc4fabcdae8b22e5257fc80de478a507;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - repair autorollback for branches --- 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: