From 320c46999c44efdc31be9cc80d3a2d1bf5186f18 Mon Sep 17 00:00:00 2001 From: Ian Kelly Date: Thu, 16 Sep 2010 19:53:41 +0000 Subject: Fixed #14244: Allow lists of more than 1000 items to be used with the 'in' lookup in Oracle, by breaking them up into groups of 1000 items and ORing them together. Thanks to rlynch for the report and initial patch. git-svn-id: http://code.djangoproject.com/svn/django/trunk@13859 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/regressiontests/queries/models.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'tests') diff --git a/tests/regressiontests/queries/models.py b/tests/regressiontests/queries/models.py index f3f0ad8857..f22cfb3af3 100644 --- a/tests/regressiontests/queries/models.py +++ b/tests/regressiontests/queries/models.py @@ -1339,3 +1339,23 @@ Using an empty generator expression as the rvalue for an "__in" lookup is legal [] """ + +# Sqlite 3 does not support passing in more than 1000 parameters except by +# changing a parameter at compilation time. +if settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE'] != "django.db.backends.sqlite3": + __test__["API_TESTS"] += """ +Bug #14244: Test that the "in" lookup works with lists of 1000 items or more. +>>> Number.objects.all().delete() +>>> numbers = range(2500) +>>> for num in numbers: +... _ = Number.objects.create(num=num) +>>> Number.objects.filter(num__in=numbers[:1000]).count() +1000 +>>> Number.objects.filter(num__in=numbers[:1001]).count() +1001 +>>> Number.objects.filter(num__in=numbers[:2000]).count() +2000 +>>> Number.objects.filter(num__in=numbers).count() +2500 + +""" -- cgit v1.3