diff options
author | Petter Friberg <petter_friberg@hotmail.com> | 2023-04-20 15:19:44 +0200 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-04-21 10:31:22 +0200 |
commit | 8ed25d65ea7546fafd808086fa07e7e5bb5428fc (patch) | |
tree | 5aec8063817656e30c13f70d026ad36c11e35834 /tests/schema | |
parent | 765b96734c374ae8612720a6f71c0094430e6cf7 (diff) | |
download | django-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.py | 36 |
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 |