summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2017-03-24 18:37:03 +0100
committerGitHub <noreply@github.com>2017-03-24 18:37:03 +0100
commitf42c7cc87baa83000624fadc1e434c44efc1fba8 (patch)
treeac6d05f418b4b580df218a724e84a47ac3625123 /tests
parent1b1ea63f6a4784e213c059c69beccaea20bc1a92 (diff)
Refs #21160 -- Replaced DatabaseFeatures.supports_1000_query_parameters by a DatabaseFeatures.max_query_params.
Diffstat (limited to 'tests')
-rw-r--r--tests/queries/tests.py29
1 files changed, 7 insertions, 22 deletions
diff --git a/tests/queries/tests.py b/tests/queries/tests.py
index 19ef508eb1..576abc8e24 100644
--- a/tests/queries/tests.py
+++ b/tests/queries/tests.py
@@ -2523,32 +2523,17 @@ class ConditionalTests(TestCase):
self.assertEqual(sql.find(fragment, pos + 1), -1)
self.assertEqual(sql.find("NULL", pos + len(fragment)), pos + len(fragment))
- # Sqlite 3 does not support passing in more than 1000 parameters except by
- # changing a parameter at compilation time.
- @skipUnlessDBFeature('supports_1000_query_parameters')
- def test_ticket14244(self):
+ def test_in_list_limit(self):
# The "in" lookup works with lists of 1000 items or more.
# The numbers amount is picked to force three different IN batches
# for Oracle, yet to be less than 2100 parameter limit for MSSQL.
numbers = list(range(2050))
- Number.objects.all().delete()
- Number.objects.bulk_create(Number(num=num) for num in numbers)
- self.assertEqual(
- Number.objects.filter(num__in=numbers[:1000]).count(),
- 1000
- )
- self.assertEqual(
- Number.objects.filter(num__in=numbers[:1001]).count(),
- 1001
- )
- self.assertEqual(
- Number.objects.filter(num__in=numbers[:2000]).count(),
- 2000
- )
- self.assertEqual(
- Number.objects.filter(num__in=numbers).count(),
- len(numbers)
- )
+ max_query_params = connection.features.max_query_params
+ if max_query_params is None or max_query_params >= len(numbers):
+ Number.objects.bulk_create(Number(num=num) for num in numbers)
+ for number in [1000, 1001, 2000, len(numbers)]:
+ with self.subTest(number=number):
+ self.assertEqual(Number.objects.filter(num__in=numbers[:number]).count(), number)
class UnionTests(unittest.TestCase):