Commit da573fbb authored by Anssi Kääriäinen's avatar Anssi Kääriäinen
Browse files

Fixed some locations to work with autocommit=True

 - backends: supports_transactions()
 - select_for_update tests
parent bd283aa8
Loading
Loading
Loading
Loading
+18 −9
Original line number Diff line number Diff line
@@ -417,6 +417,12 @@ class BaseDatabaseFeatures(object):
    @cached_property
    def supports_transactions(self):
        "Confirm support for transactions"
        try:
            # Make sure to run inside a managed transaction block,
            # otherwise autocommit will cause the confimation to
            # fail.
            self.connection.enter_transaction_management()
            self.connection.managed(True)
            cursor = self.connection.cursor()
            cursor.execute('CREATE TABLE ROLLBACK_TEST (X INT)')
            self.connection._commit()
@@ -426,6 +432,9 @@ class BaseDatabaseFeatures(object):
            count, = cursor.fetchone()
            cursor.execute('DROP TABLE ROLLBACK_TEST')
            self.connection._commit()
            self.connection._dirty = False
        finally:
            self.connection.leave_transaction_management()
        return count == 0

    @cached_property
+4 −1
Original line number Diff line number Diff line
@@ -36,6 +36,8 @@ class SelectForUpdateTests(TransactionTestCase):
        # issuing a SELECT ... FOR UPDATE will block.
        new_connections = ConnectionHandler(settings.DATABASES)
        self.new_connection = new_connections[DEFAULT_DB_ALIAS]
        self.new_connection.enter_transaction_management()
        self.new_connection.managed(True)

        # We need to set settings.DEBUG to True so we can capture
        # the output SQL to examine.
@@ -48,6 +50,7 @@ class SelectForUpdateTests(TransactionTestCase):
            # this in the course of their run.
            transaction.managed(False)
            transaction.leave_transaction_management()
            self.new_connection.leave_transaction_management()
        except transaction.TransactionManagementError:
            pass
        self.new_connection.close()
@@ -66,7 +69,7 @@ class SelectForUpdateTests(TransactionTestCase):
            'for_update': self.new_connection.ops.for_update_sql(),
            }
        self.cursor.execute(sql, ())
        result = self.cursor.fetchone()
        self.cursor.fetchone()

    def end_blocking_transaction(self):
        # Roll back the blocking transaction.