summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDavid-Wobrock <david.wobrock@gmail.com>2020-11-11 23:16:32 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-11-16 20:29:13 +0100
commitba42569d5c01b58b2999e393f097b530e538ec41 (patch)
tree7bdcbc103ef4d5cd26a5e83b552e382e4928d5a8 /tests
parent7b42d346465abb560d1b774bdf17d094fad75571 (diff)
Fixed #31507 -- Added QuerySet.exists() optimizations to compound queries.
Diffstat (limited to 'tests')
-rw-r--r--tests/queries/test_qs_combinators.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/tests/queries/test_qs_combinators.py b/tests/queries/test_qs_combinators.py
index b12277d34c..81c7b2e3a3 100644
--- a/tests/queries/test_qs_combinators.py
+++ b/tests/queries/test_qs_combinators.py
@@ -3,6 +3,7 @@ import operator
from django.db import DatabaseError, NotSupportedError, connection
from django.db.models import Exists, F, IntegerField, OuterRef, Value
from django.test import TestCase, skipIfDBFeature, skipUnlessDBFeature
+from django.test.utils import CaptureQueriesContext
from .models import Number, ReservedName
@@ -257,7 +258,19 @@ class QuerySetSetOperationTests(TestCase):
def test_exists_union(self):
qs1 = Number.objects.filter(num__gte=5)
qs2 = Number.objects.filter(num__lte=5)
- self.assertIs(qs1.union(qs2).exists(), True)
+ with CaptureQueriesContext(connection) as context:
+ self.assertIs(qs1.union(qs2).exists(), True)
+ captured_queries = context.captured_queries
+ self.assertEqual(len(captured_queries), 1)
+ captured_sql = captured_queries[0]['sql']
+ self.assertNotIn(
+ connection.ops.quote_name(Number._meta.pk.column),
+ captured_sql,
+ )
+ self.assertEqual(
+ captured_sql.count(connection.ops.limit_offset_sql(None, 1)),
+ 3 if connection.features.supports_slicing_ordering_in_compound else 1
+ )
def test_exists_union_empty_result(self):
qs = Number.objects.filter(pk__in=[])