diff --git a/django/db/models/functions/text.py b/django/db/models/functions/text.py index 34421eb15d..fba2840c4b 100644 --- a/django/db/models/functions/text.py +++ b/django/db/models/functions/text.py @@ -257,7 +257,7 @@ class Reverse(Transform): def as_oracle(self, compiler, connection, **extra_context): # REVERSE in Oracle is undocumented and doesn't support multi-byte # strings. Use a special subquery instead. - return super().as_sql( + sql, params = super().as_sql( compiler, connection, template=( @@ -268,6 +268,7 @@ class Reverse(Transform): ), **extra_context, ) + return sql, params * 3 class Right(Left): diff --git a/tests/db_functions/text/test_reverse.py b/tests/db_functions/text/test_reverse.py index 62d769d80c..3e94c111be 100644 --- a/tests/db_functions/text/test_reverse.py +++ b/tests/db_functions/text/test_reverse.py @@ -1,5 +1,5 @@ from django.db import connection -from django.db.models import CharField +from django.db.models import CharField, Value from django.db.models.functions import Length, Reverse, Trim from django.test import TestCase from django.test.utils import register_lookup @@ -24,15 +24,18 @@ class ReverseTests(TestCase): ) def test_basic(self): - authors = Author.objects.annotate(backward=Reverse("name")) + authors = Author.objects.annotate( + backward=Reverse("name"), + constant=Reverse(Value("static string")), + ) self.assertQuerySetEqual( authors, [ - ("John Smith", "htimS nhoJ"), - ("Élena Jordan", "nadroJ anelÉ"), - ("パイソン", "ンソイパ"), + ("John Smith", "htimS nhoJ", "gnirts citats"), + ("Élena Jordan", "nadroJ anelÉ", "gnirts citats"), + ("パイソン", "ンソイパ", "gnirts citats"), ], - lambda a: (a.name, a.backward), + lambda a: (a.name, a.backward, a.constant), ordered=False, )