diff options
| author | Alexandru Mărășteanu <alexei@users.noreply.github.com> | 2022-04-15 23:00:28 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-15 22:00:28 +0200 |
| commit | a1e4e86f923dc8387b0a9c3025bdd5d096a6ebb8 (patch) | |
| tree | 11b0b3bedfddd640c461d9222cdba4133ec1fe16 | |
| parent | c72f6f36c13a21f6db3d4f85d2d3cec87bad45e6 (diff) | |
Fixed #33607 -- Made PostgresIndex.create_sql() respect the "using" argument.
| -rw-r--r-- | django/contrib/postgres/indexes.py | 2 | ||||
| -rw-r--r-- | tests/postgres_tests/test_indexes.py | 16 |
2 files changed, 17 insertions, 1 deletions
diff --git a/django/contrib/postgres/indexes.py b/django/contrib/postgres/indexes.py index a0c03681b2..97377d8cb1 100644 --- a/django/contrib/postgres/indexes.py +++ b/django/contrib/postgres/indexes.py @@ -25,7 +25,7 @@ class PostgresIndex(Index): def create_sql(self, model, schema_editor, using="", **kwargs): self.check_supported(schema_editor) statement = super().create_sql( - model, schema_editor, using=" USING %s" % self.suffix, **kwargs + model, schema_editor, using=" USING %s" % (using or self.suffix), **kwargs ) with_params = self.get_with_params() if with_params: diff --git a/tests/postgres_tests/test_indexes.py b/tests/postgres_tests/test_indexes.py index 2f74203e8b..9da2f33ae8 100644 --- a/tests/postgres_tests/test_indexes.py +++ b/tests/postgres_tests/test_indexes.py @@ -8,6 +8,7 @@ from django.contrib.postgres.indexes import ( GistIndex, HashIndex, OpClass, + PostgresIndex, SpGistIndex, ) from django.db import NotSupportedError, connection @@ -646,6 +647,21 @@ class SchemaTests(PostgreSQLTestCase): editor.add_index(Scene, index) self.assertNotIn(index_name, self.get_constraints(Scene._meta.db_table)) + def test_custom_suffix(self): + class CustomSuffixIndex(PostgresIndex): + suffix = "sfx" + + def create_sql(self, model, schema_editor, using="gin", **kwargs): + return super().create_sql(model, schema_editor, using=using, **kwargs) + + index = CustomSuffixIndex(fields=["field"], name="custom_suffix_idx") + self.assertEqual(index.suffix, "sfx") + with connection.schema_editor() as editor: + self.assertIn( + " USING gin ", + str(index.create_sql(CharFieldModel, editor)), + ) + def test_op_class(self): index_name = "test_op_class" index = Index( |
