diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2014-03-21 18:48:57 +0100 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2014-03-21 21:29:51 +0100 |
| commit | 753a22a6352638b7df55176584795ac8c5d4232c (patch) | |
| tree | f022c8693a3d594a6d63e96d08b5078da84bac3a | |
| parent | 0f9560855e5ed203b8c911c23237826e28a62a38 (diff) | |
Fixed transaction handling in two management commands.
Previously, when createcachetable and flush operated on non-default
databases, they weren't atomic.
| -rw-r--r-- | django/core/management/commands/createcachetable.py | 2 | ||||
| -rw-r--r-- | django/core/management/commands/flush.py | 2 | ||||
| -rw-r--r-- | tests/cache/tests.py | 8 |
3 files changed, 7 insertions, 5 deletions
diff --git a/django/core/management/commands/createcachetable.py b/django/core/management/commands/createcachetable.py index d170ee64c9..8a9d0829c5 100644 --- a/django/core/management/commands/createcachetable.py +++ b/django/core/management/commands/createcachetable.py @@ -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)) diff --git a/django/core/management/commands/flush.py b/django/core/management/commands/flush.py index 0d13b35052..8e75b8e84c 100644 --- a/django/core/management/commands/flush.py +++ b/django/core/management/commands/flush.py @@ -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) diff --git a/tests/cache/tests.py b/tests/cache/tests.py index 288af6e437..285bcfa4ed 100644 --- a/tests/cache/tests.py +++ b/tests/cache/tests.py @@ -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) |
