From ffac97bf63ea803a6196d2097b4186e0865d9091 Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Wed, 17 Sep 2025 01:56:40 -0400 Subject: [6.0.x] Fixed #36612 -- Fixed a KeyTextTransform crash on MySQL against annotations. MySQL only supports the ->> when used directly against columns, this can be inferred by the presence of lhs.output_field.model as model bounds fields are directly tied to columns. Purposely don't systematically switch to using JSON_QUOTE(JSON_EXTRACT(...)) as there might be functional indices out there that rely on the SQL remaining stable between versions. Thanks Jacob Tavener for the report. Backport of af84cfba5970fda8306860b650937701c7c03c6f from main. --- tests/model_fields/test_jsonfield.py | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'tests/model_fields') diff --git a/tests/model_fields/test_jsonfield.py b/tests/model_fields/test_jsonfield.py index 16ab8887a9..b16499d198 100644 --- a/tests/model_fields/test_jsonfield.py +++ b/tests/model_fields/test_jsonfield.py @@ -1160,6 +1160,12 @@ class TestQuerying(TestCase): True, ) + def test_cast_with_key_text_transform(self): + obj = NullableJSONModel.objects.annotate( + json_data=Cast(Value({"foo": "bar"}, JSONField()), JSONField()) + ).get(pk=self.objs[0].pk, json_data__foo__icontains="bar") + self.assertEqual(obj, self.objs[0]) + @skipUnlessDBFeature("supports_json_field_contains") def test_contains_contained_by_with_key_transform(self): tests = [ -- cgit v1.3