summaryrefslogtreecommitdiff
path: root/tests/queries
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2024-06-25 23:39:23 -0400
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-07-19 08:54:47 +0200
commit9cb8baa0c4fa2c10789c5c8b65f4465932d4d172 (patch)
treecff2ffe8caebbd9456230edf86949d850ad8da44 /tests/queries
parent6b3f55446fdc62bd277903fd188a1781e4d92d29 (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.py6
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=[])