diff options
| author | Simon Charette <charette.s@gmail.com> | 2023-11-14 09:30:14 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-11-14 10:56:20 +0100 |
| commit | 6364b6ee1071381eb3a23ba6b821fc0d6f0fce75 (patch) | |
| tree | 1d00b3c415814012ae05b246d553b0fcf449b0d5 /tests/db_functions | |
| parent | bdf30b952c66701075bb7cbbbd3467d3e908fe62 (diff) | |
Fixed #34955 -- Made Concat() use || operator on PostgreSQL.
This also avoids casting string based expressions in Concat() on
PostgreSQL.
Diffstat (limited to 'tests/db_functions')
| -rw-r--r-- | tests/db_functions/text/test_concat.py | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/tests/db_functions/text/test_concat.py b/tests/db_functions/text/test_concat.py index 1441e31e97..6e4cb91d3a 100644 --- a/tests/db_functions/text/test_concat.py +++ b/tests/db_functions/text/test_concat.py @@ -75,7 +75,10 @@ class ConcatTests(TestCase): expected = article.title + " - " + article.text self.assertEqual(expected.upper(), article.title_text) - @skipUnless(connection.vendor == "sqlite", "sqlite specific implementation detail.") + @skipUnless( + connection.vendor in ("sqlite", "postgresql"), + "SQLite and PostgreSQL specific implementation detail.", + ) def test_coalesce_idempotent(self): pair = ConcatPair(V("a"), V("b")) # Check nodes counts @@ -89,3 +92,18 @@ class ConcatTests(TestCase): qs = Article.objects.annotate(description=Concat("title", V(": "), "summary")) # Multiple compilations should not alter the generated query. self.assertEqual(str(qs.query), str(qs.all().query)) + + def test_concat_non_str(self): + Author.objects.create(name="The Name", age=42) + with self.assertNumQueries(1) as ctx: + author = Author.objects.annotate( + name_text=Concat( + "name", V(":"), "alias", V(":"), "age", output_field=TextField() + ), + ).get() + self.assertEqual(author.name_text, "The Name::42") + # Only non-string columns are casted on PostgreSQL. + self.assertEqual( + ctx.captured_queries[0]["sql"].count("::text"), + 1 if connection.vendor == "postgresql" else 0, + ) |
