From 3109038992321e471944bd8ee36670c9e6b8ff0c Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Tue, 18 Jul 2023 14:08:47 +0200 Subject: [PATCH] Refs #33201 -- Avoided unnecessary queries when renaming models with db_table on SpatiaLite. --- django/contrib/gis/db/backends/spatialite/schema.py | 5 +++++ tests/migrations/test_operations.py | 9 +++++++++ 2 files changed, 14 insertions(+) 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"