Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

[1.2.X] 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. Backport of [13859] from trunk.

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@13860 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit a63bea3e3baf1d354667cfd8d5ddad09516c24ab 1 parent d443d16
Ian Kelly ikelly authored
Showing with 20 additions and 0 deletions.
  1. +20 −0 tests/regressiontests/queries/models.py
20 tests/regressiontests/queries/models.py
View
@@ -1339,3 +1339,23 @@ def __unicode__(self):
[]
"""
+
+# 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
+
+"""
Please sign in to comment.
Something went wrong with that request. Please try again.