From 2b193f6100c571d4b5bc87815c7569179db27030 Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Fri, 11 Jul 2008 12:43:27 +0000 Subject: [PATCH] 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 --- django/db/models/sql/query.py | 10 +++++----- tests/regressiontests/queries/models.py | 4 ++++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index 7944d0358fa..0cacb7f3ed3 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -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: diff --git a/tests/regressiontests/queries/models.py b/tests/regressiontests/queries/models.py index 272e28ff840..fe378a57b2c 100644 --- a/tests/regressiontests/queries/models.py +++ b/tests/regressiontests/queries/models.py @@ -810,5 +810,9 @@ used in lookups. >>> Item.objects.filter(created__in=[time1, time2]) [, ] +Bug #7698 -- People like to slice with '0' as the high-water mark. +>>> Item.objects.all()[0:0] +[] + """}