summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2022-06-24 07:29:58 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-06-27 06:21:31 +0200
commit44ffd8d06fabc07d8333f31439e8dd39ea87329b (patch)
tree5e43183077ab0fe592ba7012435cb4301f055d31 /tests
parent6f63e0ce8e36fbdb2d0c4dfd77ed3cf02e467f49 (diff)
Fixed #33796 -- Fixed ordered combined queryset crash when used in subquery on PostgreSQL and MySQL.
Thanks Shai Berger for the report. Regression in 30a01441347d5a2146af2944b29778fa0834d4be.
Diffstat (limited to 'tests')
-rw-r--r--tests/queries/test_qs_combinators.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/queries/test_qs_combinators.py b/tests/queries/test_qs_combinators.py
index 445e862adc..3cd19d5f31 100644
--- a/tests/queries/test_qs_combinators.py
+++ b/tests/queries/test_qs_combinators.py
@@ -321,6 +321,28 @@ class QuerySetSetOperationTests(TestCase):
# Combined queries don't mutate.
self.assertCountEqual(qs, ["a1", "a2"])
+ @skipUnlessDBFeature("supports_slicing_ordering_in_compound")
+ def test_union_in_with_ordering(self):
+ qs1 = Number.objects.filter(num__gt=7).order_by("num")
+ qs2 = Number.objects.filter(num__lt=2).order_by("num")
+ self.assertNumbersEqual(
+ Number.objects.exclude(id__in=qs1.union(qs2).values("id")),
+ [2, 3, 4, 5, 6, 7],
+ ordered=False,
+ )
+
+ @skipUnlessDBFeature(
+ "supports_slicing_ordering_in_compound", "allow_sliced_subqueries_with_in"
+ )
+ def test_union_in_with_ordering_and_slice(self):
+ qs1 = Number.objects.filter(num__gt=7).order_by("num")[:1]
+ qs2 = Number.objects.filter(num__lt=2).order_by("-num")[:1]
+ self.assertNumbersEqual(
+ Number.objects.exclude(id__in=qs1.union(qs2).values("id")),
+ [0, 2, 3, 4, 5, 6, 7, 9],
+ ordered=False,
+ )
+
def test_count_union(self):
qs1 = Number.objects.filter(num__lte=1).values("num")
qs2 = Number.objects.filter(num__gte=2, num__lte=3).values("num")