Fixed #32858 -- Fixed ExclusionConstraint crash with index transforms in expressions.

This commit is contained in:
Lucidiot 2021-06-17 21:54:08 +02:00 committed by Mariusz Felisiak
parent 501a371411
commit b69b0c3fe8
3 changed files with 20 additions and 1 deletions

View file

@ -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))