mirror of
https://github.com/django/django.git
synced 2025-08-03 18:38:50 +00:00
Fixed #31615 -- Made migrations skip extension operations if not needed.
- Don't try to create an existing extension. - Don't try to drop a nonexistent extension.
This commit is contained in:
parent
f3ed42c8ad
commit
d693a086de
4 changed files with 54 additions and 6 deletions
|
@ -12,7 +12,8 @@ from . import PostgreSQLTestCase
|
|||
|
||||
try:
|
||||
from django.contrib.postgres.operations import (
|
||||
AddIndexConcurrently, CreateExtension, RemoveIndexConcurrently,
|
||||
AddIndexConcurrently, BloomExtension, CreateExtension,
|
||||
RemoveIndexConcurrently,
|
||||
)
|
||||
from django.contrib.postgres.indexes import BrinIndex, BTreeIndex
|
||||
except ImportError:
|
||||
|
@ -180,9 +181,33 @@ class CreateExtensionTests(PostgreSQLTestCase):
|
|||
with CaptureQueriesContext(connection) as captured_queries:
|
||||
with connection.schema_editor(atomic=False) as editor:
|
||||
operation.database_forwards(self.app_label, editor, project_state, new_state)
|
||||
self.assertIn('CREATE EXTENSION', captured_queries[0]['sql'])
|
||||
self.assertEqual(len(captured_queries), 4)
|
||||
self.assertIn('CREATE EXTENSION', captured_queries[1]['sql'])
|
||||
# Reversal.
|
||||
with CaptureQueriesContext(connection) as captured_queries:
|
||||
with connection.schema_editor(atomic=False) as editor:
|
||||
operation.database_backwards(self.app_label, editor, new_state, project_state)
|
||||
self.assertIn('DROP EXTENSION', captured_queries[0]['sql'])
|
||||
self.assertEqual(len(captured_queries), 2)
|
||||
self.assertIn('DROP EXTENSION', captured_queries[1]['sql'])
|
||||
|
||||
def test_create_existing_extension(self):
|
||||
operation = BloomExtension()
|
||||
project_state = ProjectState()
|
||||
new_state = project_state.clone()
|
||||
# Don't create an existing extension.
|
||||
with CaptureQueriesContext(connection) as captured_queries:
|
||||
with connection.schema_editor(atomic=False) as editor:
|
||||
operation.database_forwards(self.app_label, editor, project_state, new_state)
|
||||
self.assertEqual(len(captured_queries), 3)
|
||||
self.assertIn('SELECT', captured_queries[0]['sql'])
|
||||
|
||||
def test_drop_nonexistent_extension(self):
|
||||
operation = CreateExtension('tablefunc')
|
||||
project_state = ProjectState()
|
||||
new_state = project_state.clone()
|
||||
# Don't drop a nonexistent extension.
|
||||
with CaptureQueriesContext(connection) as captured_queries:
|
||||
with connection.schema_editor(atomic=False) as editor:
|
||||
operation.database_backwards(self.app_label, editor, project_state, new_state)
|
||||
self.assertEqual(len(captured_queries), 1)
|
||||
self.assertIn('SELECT', captured_queries[0]['sql'])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue