From dad8434d6ff5da10959672726dc9b397296d380b Mon Sep 17 00:00:00 2001 From: Caio Ariede Date: Sat, 8 Aug 2015 09:44:27 -0300 Subject: Fixed #25180 -- Prevented varchar_patterns_ops and text_patterns_ops indexes for ArrayField. --- tests/postgres_tests/test_array.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'tests/postgres_tests/test_array.py') diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py index 626a879b77..09ae4e8546 100644 --- a/tests/postgres_tests/test_array.py +++ b/tests/postgres_tests/test_array.py @@ -312,6 +312,33 @@ class TestMigrations(TransactionTestCase): with connection.cursor() as cursor: self.assertNotIn(table_name, connection.introspection.table_names(cursor)) + @override_settings(MIGRATION_MODULES={ + "postgres_tests": "postgres_tests.array_index_migrations", + }) + def test_adding_arrayfield_with_index(self): + """ + ArrayField shouldn't have varchar_patterns_ops or text_patterns_ops indexes. + """ + table_name = 'postgres_tests_chartextarrayindexmodel' + call_command('migrate', 'postgres_tests', verbosity=0) + with connection.cursor() as cursor: + like_constraint_field_names = [ + c.rsplit('_', 2)[0][len(table_name) + 1:] + for c in connection.introspection.get_constraints(cursor, table_name) + if c.endswith('_like') + ] + # Only the CharField should have a LIKE index. + self.assertEqual(like_constraint_field_names, ['char2']) + with connection.cursor() as cursor: + indexes = connection.introspection.get_indexes(cursor, table_name) + # All fields should have regular indexes. + self.assertIn('char', indexes) + self.assertIn('char2', indexes) + self.assertIn('text', indexes) + call_command('migrate', 'postgres_tests', 'zero', verbosity=0) + with connection.cursor() as cursor: + self.assertNotIn(table_name, connection.introspection.table_names(cursor)) + class TestSerialization(PostgreSQLTestCase): test_data = '[{"fields": {"field": "[\\"1\\", \\"2\\"]"}, "model": "postgres_tests.integerarraymodel", "pk": null}]' -- cgit v1.3