Commit 753a22a6 authored by Aymeric Augustin's avatar Aymeric Augustin
Browse files

Fixed transaction handling in two management commands.

Previously, when createcachetable and flush operated on non-default
databases, they weren't atomic.
parent 0f956085
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ class Command(BaseCommand):
        for i, line in enumerate(table_output):
            full_statement.append('    %s%s' % (line, ',' if i < len(table_output) - 1 else ''))
        full_statement.append(');')
        with transaction.atomic():
        with transaction.atomic(using=database):
            with connection.cursor() as curs:
                try:
                    curs.execute("\n".join(full_statement))
+1 −1
Original line number Diff line number Diff line
@@ -63,7 +63,7 @@ Are you sure you want to do this?

        if confirm == 'yes':
            try:
                with transaction.atomic():
                with transaction.atomic(using=db):
                    with connection.cursor() as cursor:
                        for sql in sql_list:
                            cursor.execute(sql)
+5 −3
Original line number Diff line number Diff line
@@ -981,9 +981,11 @@ class CreateCacheTableForDBCacheTests(TestCase):
            # cache table should be created on 'other'
            # Queries:
            #   1: check table doesn't already exist
            #   2: create the table
            #   3: create the index
            with self.assertNumQueries(3, using='other'):
            #   2: create savepoint
            #   3: create the table
            #   4: create the index
            #   5: release savepoint
            with self.assertNumQueries(5, using='other'):
                management.call_command('createcachetable',
                                        database='other',
                                        verbosity=0, interactive=False)