diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-07-18 14:08:47 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-18 14:08:47 +0200 |
| commit | 3109038992321e471944bd8ee36670c9e6b8ff0c (patch) | |
| tree | 634546c3ee6e252a66d332bb9756d14c5dcaf425 | |
| parent | 6ad2738a8f32b94cbae742f212080fadf2dee421 (diff) | |
Refs #33201 -- Avoided unnecessary queries when renaming models with db_table on SpatiaLite.
| -rw-r--r-- | django/contrib/gis/db/backends/spatialite/schema.py | 5 | ||||
| -rw-r--r-- | tests/migrations/test_operations.py | 9 |
2 files changed, 14 insertions, 0 deletions
diff --git a/django/contrib/gis/db/backends/spatialite/schema.py b/django/contrib/gis/db/backends/spatialite/schema.py index d37632edf8..d75d7671e5 100644 --- a/django/contrib/gis/db/backends/spatialite/schema.py +++ b/django/contrib/gis/db/backends/spatialite/schema.py @@ -139,6 +139,11 @@ class SpatialiteSchemaEditor(DatabaseSchemaEditor): ): from django.contrib.gis.db.models import GeometryField + if old_db_table == new_db_table or ( + self.connection.features.ignores_table_name_case + and old_db_table.lower() == new_db_table.lower() + ): + return # Remove geometry-ness from temp table for field in model._meta.local_fields: if isinstance(field, GeometryField): diff --git a/tests/migrations/test_operations.py b/tests/migrations/test_operations.py index e377e4ca64..a8fcb057ce 100644 --- a/tests/migrations/test_operations.py +++ b/tests/migrations/test_operations.py @@ -988,6 +988,15 @@ class OperationTests(OperationTestBase): "test_rmwsc_rider", ["pony_id"], ("test_rmwsc_littlehorse", "id") ) + def test_rename_model_no_relations_with_db_table_noop(self): + app_label = "test_rmwdbtnoop" + project_state = self.set_up_test_model(app_label, db_table="my_pony") + operation = migrations.RenameModel("Pony", "LittleHorse") + new_state = project_state.clone() + operation.state_forwards(app_label, new_state) + with connection.schema_editor() as editor, self.assertNumQueries(0): + operation.database_forwards(app_label, editor, project_state, new_state) + def test_rename_model_with_self_referential_m2m(self): app_label = "test_rename_model_with_self_referential_m2m" |
