diff options
| author | Gastón Avila <avila.gas@gmail.com> | 2024-09-04 17:32:40 -0300 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2024-09-11 14:40:48 +0200 |
| commit | 590f5e09f001736aa1fe3f7f086f8a5ab5e4bfdb (patch) | |
| tree | e05950ceef0e8eb89cc80aec6e9b2aa8b464e8ab /tests/postgres_tests | |
| parent | bf45f0676951243894e3686a80c3ebaa2c1cf107 (diff) | |
[5.1.x] Fixed #35732 -- Wrapped ConcatPair expression in parentheses to ensure operator precedence.
When ConcatPair was updated to use || this lost the implicit wrapping from CONCAT(...).
This broke the WHERE clauses when used in combination with PostgreSQL trigram similarity.
Regression in 6364b6ee1071381eb3a23ba6b821fc0d6f0fce75.
Backport of c3ca6075cc0ad425bcf905fe14062f38eb9fbcbf from main.
Co-authored-by: Emiliano Cuenca <106986074+emicuencac@users.noreply.github.com>
Diffstat (limited to 'tests/postgres_tests')
| -rw-r--r-- | tests/postgres_tests/test_trigram.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/postgres_tests/test_trigram.py b/tests/postgres_tests/test_trigram.py index 812403a324..b6c88c38a6 100644 --- a/tests/postgres_tests/test_trigram.py +++ b/tests/postgres_tests/test_trigram.py @@ -1,3 +1,6 @@ +from django.db.models import F, Value +from django.db.models.functions import Concat + from . import PostgreSQLTestCase from .models import CharFieldModel, TextFieldModel @@ -149,6 +152,21 @@ class TrigramTest(PostgreSQLTestCase): ], ) + def test_trigram_concat_precedence(self): + search_term = "im matthew" + self.assertSequenceEqual( + self.Model.objects.annotate( + concat_result=Concat( + Value("I'm "), + F("field"), + output_field=self.Model._meta.get_field("field"), + ), + ) + .filter(concat_result__trigram_similar=search_term) + .values("field"), + [{"field": "Matthew"}], + ) + class TrigramTextFieldTest(TrigramTest): """ |
