diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2017-03-24 18:37:03 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-03-24 18:37:03 +0100 |
| commit | f42c7cc87baa83000624fadc1e434c44efc1fba8 (patch) | |
| tree | ac6d05f418b4b580df218a724e84a47ac3625123 /tests | |
| parent | 1b1ea63f6a4784e213c059c69beccaea20bc1a92 (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.py | 29 |
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): |
