From b69b0c3fe871167a0ca01bb439508e335143801f Mon Sep 17 00:00:00 2001 From: Lucidiot Date: Thu, 17 Jun 2021 21:54:08 +0200 Subject: Fixed #32858 -- Fixed ExclusionConstraint crash with index transforms in expressions. --- tests/postgres_tests/test_constraints.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'tests/postgres_tests') diff --git a/tests/postgres_tests/test_constraints.py b/tests/postgres_tests/test_constraints.py index 7915bb226e..65402bd429 100644 --- a/tests/postgres_tests/test_constraints.py +++ b/tests/postgres_tests/test_constraints.py @@ -14,7 +14,9 @@ from django.test import modify_settings, skipUnlessDBFeature from django.utils import timezone from . import PostgreSQLTestCase -from .models import HotelReservation, RangesModel, Room, Scene +from .models import ( + HotelReservation, IntegerArrayModel, RangesModel, Room, Scene, +) try: from psycopg2.extras import DateRange, NumericRange @@ -670,6 +672,19 @@ class ExclusionConstraintTests(PostgreSQLTestCase): self.get_constraints(HotelReservation._meta.db_table), ) + def test_index_transform(self): + constraint_name = 'first_index_equal' + constraint = ExclusionConstraint( + name=constraint_name, + expressions=[('field__0', RangeOperators.EQUAL)], + ) + with connection.schema_editor() as editor: + editor.add_constraint(IntegerArrayModel, constraint) + self.assertIn( + constraint_name, + self.get_constraints(IntegerArrayModel._meta.db_table), + ) + def test_range_adjacent_initially_deferred(self): constraint_name = 'ints_adjacent_deferred' self.assertNotIn(constraint_name, self.get_constraints(RangesModel._meta.db_table)) -- cgit v1.3