mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #34554 -- Fixed Reverse(Value(…)) crash on Oracle.
This commit is contained in:
		| @@ -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, | ||||
|         ) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user