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. # FIXME: Pull this out to make life easier for Oracle et al.
if with_limits: if with_limits:
if self.high_mark: if self.high_mark is not None:
result.append('LIMIT %d' % (self.high_mark - self.low_mark)) result.append('LIMIT %d' % (self.high_mark - self.low_mark))
if self.low_mark: if self.low_mark is not None:
if not self.high_mark: if self.high_mark is None:
val = self.connection.ops.no_limit_value() val = self.connection.ops.no_limit_value()
if val: if val:
result.append('LIMIT %d' % 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 constraints. So low is added to the current low value and both will be
clamped to any existing high value. clamped to any existing high value.
""" """
if high: if high is not None:
if self.high_mark: if self.high_mark:
self.high_mark = min(self.high_mark, self.low_mark + high) self.high_mark = min(self.high_mark, self.low_mark + high)
else: else:
self.high_mark = self.low_mark + high self.high_mark = self.low_mark + high
if low: if low is not None:
if self.high_mark: if self.high_mark:
self.low_mark = min(self.high_mark, self.low_mark + low) self.low_mark = min(self.high_mark, self.low_mark + low)
else: else:

View File

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