summaryrefslogtreecommitdiff
path: root/tests/schema
diff options
context:
space:
mode:
authorPetter Friberg <petter_friberg@hotmail.com>2023-04-20 15:19:44 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-04-21 10:31:22 +0200
commit8ed25d65ea7546fafd808086fa07e7e5bb5428fc (patch)
tree5aec8063817656e30c13f70d026ad36c11e35834 /tests/schema
parent765b96734c374ae8612720a6f71c0094430e6cf7 (diff)
downloaddjango-8ed25d65ea7546fafd808086fa07e7e5bb5428fc.tar.gz
Fixed #34505 -- Skipped varchar_pattern_ops/text_pattern_ops index creation when db_collation is set in related field.
Diffstat (limited to 'tests/schema')
-rw-r--r--tests/schema/tests.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/schema/tests.py b/tests/schema/tests.py
index 58c87904f7..d81a01b41d 100644
--- a/tests/schema/tests.py
+++ b/tests/schema/tests.py
@@ -1371,6 +1371,42 @@ class SchemaTests(TransactionTestCase):
)
self.assertIn("field", self.get_uniques(CiCharModel._meta.db_table))
+ @isolate_apps("schema")
+ @unittest.skipUnless(connection.vendor == "postgresql", "PostgreSQL specific")
+ @skipUnlessDBFeature(
+ "supports_collation_on_charfield",
+ "supports_non_deterministic_collations",
+ )
+ def test_relation_to_collation_charfield(self):
+ ci_collation = self._add_ci_collation()
+
+ class CiCharModel(Model):
+ field = CharField(max_length=16, db_collation=ci_collation, unique=True)
+
+ class Meta:
+ app_label = "schema"
+
+ class RelationModel(Model):
+ field = OneToOneField(CiCharModel, CASCADE, to_field="field")
+
+ class Meta:
+ app_label = "schema"
+
+ # Create the table.
+ with connection.schema_editor() as editor:
+ editor.create_model(CiCharModel)
+ editor.create_model(RelationModel)
+ self.isolated_local_models = [CiCharModel, RelationModel]
+ self.assertEqual(
+ self.get_column_collation(RelationModel._meta.db_table, "field_id"),
+ ci_collation,
+ )
+ self.assertEqual(
+ self.get_column_collation(CiCharModel._meta.db_table, "field"),
+ ci_collation,
+ )
+ self.assertIn("field_id", self.get_uniques(RelationModel._meta.db_table))
+
def test_alter_textfield_to_null(self):
"""
#24307 - Should skip an alter statement on databases with