diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-09-26 21:41:15 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-09-26 21:41:15 -0400 |
| commit | 573877b4bc4fabcdae8b22e5257fc80de478a507 (patch) | |
| tree | 37a34ce51538b6732a063ded94856397d527d215 | |
| parent | b89523f0b75e8d39bcbd8a5c07015e9df4ef5e2f (diff) | |
| download | sqlalchemy-573877b4bc4fabcdae8b22e5257fc80de478a507.tar.gz | |
- repair autorollback for branches
| -rw-r--r-- | lib/sqlalchemy/engine/base.py | 4 | ||||
| -rw-r--r-- | 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 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: |
