Fixed #7698 -- Handle '0' correctly when used as the upper bound of a slice.

Based on a patch from enoksrd.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@7885 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2008-07-11 12:43:27 +00:00
parent 88c17b5821
commit 2b193f6100
2 changed files with 9 additions and 5 deletions

View File

@ -285,10 +285,10 @@ class Query(object):
# FIXME: Pull this out to make life easier for Oracle et al.
if with_limits:
if self.high_mark:
if self.high_mark is not None:
result.append('LIMIT %d' % (self.high_mark - self.low_mark))
if self.low_mark:
if not self.high_mark:
if self.low_mark is not None:
if self.high_mark is None:
val = self.connection.ops.no_limit_value()
if val:
result.append('LIMIT %d' % val)
@ -1381,12 +1381,12 @@ class Query(object):
constraints. So low is added to the current low value and both will be
clamped to any existing high value.
"""
if high:
if high is not None:
if self.high_mark:
self.high_mark = min(self.high_mark, self.low_mark + high)
else:
self.high_mark = self.low_mark + high
if low:
if low is not None:
if self.high_mark:
self.low_mark = min(self.high_mark, self.low_mark + low)
else:

View File

@ -810,5 +810,9 @@ used in lookups.
>>> Item.objects.filter(created__in=[time1, time2])
[<Item: one>, <Item: two>]
Bug #7698 -- People like to slice with '0' as the high-water mark.
>>> Item.objects.all()[0:0]
[]
"""}