1
0
mirror of https://github.com/django/django.git synced 2025-10-24 14:16:09 +00:00

Fixed #34060 -- Fixed migrations crash when adding check constraints with JSONField __exact lookup on Oracle.

This commit is contained in:
Albert Defler
2024-02-14 17:34:00 +00:00
committed by Mariusz Felisiak
parent 22285d366c
commit c991602ce5
5 changed files with 64 additions and 3 deletions

View File

@@ -2803,6 +2803,40 @@ class SchemaTests(TransactionTestCase):
DurationModel.objects.create(duration=datetime.timedelta(minutes=4))
DurationModel.objects.create(duration=datetime.timedelta(minutes=10))
@skipUnlessDBFeature(
"supports_column_check_constraints",
"can_introspect_check_constraints",
"supports_json_field",
)
@isolate_apps("schema")
def test_check_constraint_exact_jsonfield(self):
class JSONConstraintModel(Model):
data = JSONField()
class Meta:
app_label = "schema"
with connection.schema_editor() as editor:
editor.create_model(JSONConstraintModel)
self.isolated_local_models = [JSONConstraintModel]
constraint_name = "check_only_stable_version"
constraint = CheckConstraint(
check=Q(data__version="stable"),
name=constraint_name,
)
JSONConstraintModel._meta.constraints = [constraint]
with connection.schema_editor() as editor:
editor.add_constraint(JSONConstraintModel, constraint)
constraints = self.get_constraints(JSONConstraintModel._meta.db_table)
self.assertIn(constraint_name, constraints)
with self.assertRaises(IntegrityError), atomic():
JSONConstraintModel.objects.create(
data={"release": "5.0.2dev", "version": "dev"}
)
JSONConstraintModel.objects.create(
data={"release": "5.0.3", "version": "stable"}
)
@skipUnlessDBFeature(
"supports_column_check_constraints", "can_introspect_check_constraints"
)