mirror of https://github.com/django/django.git
Fixed #34554 -- Fixed Reverse(Value(…)) crash on Oracle.
This commit is contained in:
parent
c494c6974d
commit
6e32d1fa1d
|
@ -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):
|
||||
|
|
|
@ -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,
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in New Issue