#12258: QuerySet 'get' method should clear ordering before executing query
---------------------------------------------------+------------------------
Reporter: [email protected] | Owner: nobody
Status: new | Milestone:
Component: Database layer (models, ORM) | Version: 1.1
Resolution: | Keywords: ordering,
database, queryset
Stage: Unreviewed | Has_patch: 1
Needs_docs: 0 | Needs_tests: 0
Needs_better_patch: 0 |
---------------------------------------------------+------------------------
Comment (by lukeplant):
Replying to [comment:1 nbv4]:
> I'm not 100% positive, but I'm pretty sure SQL databases internally
optimize queries so that "LIMIT 1" automatically "cancels out" any
ordering clause so that it doesn't execute the ordering code on that
query.
If they did, they would produce wrong results. `.get()` does not do a
LIMIT 1 anyway — the only reason we can remove the ORDER BY here is
because we retrieve all results and throw an exception if there isn't
exactly one i.e. we do the limiting to one after the database has returned
results, and excess rows cause '''no''' data to be returned.
--
Ticket URL: <http://code.djangoproject.com/ticket/12258#comment:2>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en.