mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	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:
		| @@ -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: | ||||||
|   | |||||||
| @@ -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] | ||||||
|  | [] | ||||||
|  |  | ||||||
| """} | """} | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user