diff options
| author | Simon Charette <charette.s@gmail.com> | 2024-06-25 23:39:23 -0400 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2024-07-19 08:54:47 +0200 |
| commit | 9cb8baa0c4fa2c10789c5c8b65f4465932d4d172 (patch) | |
| tree | cff2ffe8caebbd9456230edf86949d850ad8da44 /tests/queries | |
| parent | 6b3f55446fdc62bd277903fd188a1781e4d92d29 (diff) | |
Fixed #35559 -- Avoided unnecessary query on sliced union of empty queries.
While refs #34125 focused on the SQL correctness of slicing of union of
potentially empty queries it missed an optimization opportunity to avoid
performing a query at all when all queries are empty.
Thanks Lucidiot for the report.
Diffstat (limited to 'tests/queries')
| -rw-r--r-- | tests/queries/test_qs_combinators.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/tests/queries/test_qs_combinators.py b/tests/queries/test_qs_combinators.py index eac1533803..ad1017c8af 100644 --- a/tests/queries/test_qs_combinators.py +++ b/tests/queries/test_qs_combinators.py @@ -76,6 +76,12 @@ class QuerySetSetOperationTests(TestCase): qs3 = qs1.union(qs2) self.assertNumbersEqual(qs3[:1], [0]) + def test_union_all_none_slice(self): + qs = Number.objects.filter(id__in=[]) + with self.assertNumQueries(0): + self.assertSequenceEqual(qs.union(qs), []) + self.assertSequenceEqual(qs.union(qs)[0:0], []) + def test_union_empty_filter_slice(self): qs1 = Number.objects.filter(num__lte=0) qs2 = Number.objects.filter(pk__in=[]) |
