diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-06-24 07:29:58 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-06-27 06:21:31 +0200 |
| commit | 44ffd8d06fabc07d8333f31439e8dd39ea87329b (patch) | |
| tree | 5e43183077ab0fe592ba7012435cb4301f055d31 /tests | |
| parent | 6f63e0ce8e36fbdb2d0c4dfd77ed3cf02e467f49 (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.py | 22 |
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") |
