diff options
| author | David-Wobrock <david.wobrock@gmail.com> | 2020-11-11 23:16:32 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-11-16 20:29:13 +0100 |
| commit | ba42569d5c01b58b2999e393f097b530e538ec41 (patch) | |
| tree | 7bdcbc103ef4d5cd26a5e83b552e382e4928d5a8 /tests | |
| parent | 7b42d346465abb560d1b774bdf17d094fad75571 (diff) | |
Fixed #31507 -- Added QuerySet.exists() optimizations to compound queries.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/queries/test_qs_combinators.py | 15 |
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=[]) |
