Django

Code

Ticket #7698 (closed: fixed)

Opened 5 months ago

Last modified 5 months ago

QuerySet slices broken in corner case: QuerySet[0:0] => QuerySet[0:]

Reported by: enoksrd Assigned to: nobody
Milestone: Component: Database layer (models, ORM)
Version: SVN Keywords: QuerySet, slice
Cc: Triage Stage: Accepted
Has patch: 1 Needs documentation: 0
Needs tests: 0 Patch needs improvement: 0

Description

If you have a QuerySet? and slice with an upper bound ("end") of 0 it's treated like no upper bound at all. See attached svn diff for a fix. To reproduce: let q be a QuerySet?, the q[0:0] is *all* the objects in the set. Problem due to 0 being false in Python.

Attachments

query.py.diff (1.4 kB) - added by enoksrd on 07/10/08 00:09:06.
svn diff of my fix against django/db/models/sql/query.py r7602
7698-no-offset-zero.patch (0.6 kB) - added by adamv on 07/11/08 15:12:57.
Patched not to emit "OFFSET 0".

Change History

07/10/08 00:09:06 changed by enoksrd

  • attachment query.py.diff added.

svn diff of my fix against django/db/models/sql/query.py r7602

07/11/08 07:43:28 changed by mtredinnick

  • status changed from new to closed.
  • resolution set to fixed.

(In [7885]) Fixed #7698 -- Handle '0' correctly when used as the upper bound of a slice. Based on a patch from enoksrd.

07/11/08 14:56:28 changed by adamv

  • status changed from closed to reopened.
  • needs_better_patch changed.
  • resolution deleted.
  • needs_tests changed.
  • needs_docs changed.

This fix appears to be adding extraneous "OFFSET 0" to the ends of non-sliced queries:

sql:

'SELECT [django_session].[session_key], [django_session].[session_data], [django_session].[expire_date] FROM [django_session] WHERE ([django_session].[session_key] = %s AND [django_session].[expire_date] > %s ) OFFSET 0'

07/11/08 15:12:57 changed by adamv

  • attachment 7698-no-offset-zero.patch added.

Patched not to emit "OFFSET 0".

07/12/08 03:00:20 changed by serialx

  • stage changed from Unreviewed to Accepted.

07/12/08 06:01:57 changed by mtredinnick

  • status changed from reopened to closed.
  • resolution set to fixed.

(In [7901]) Fixed a bozo bug from [7885]. Fixed #7698.


Add/Change #7698 (QuerySet slices broken in corner case: QuerySet[0:0] => QuerySet[0:])




Change Properties
Action