Opened 15 years ago

Last modified 13 years ago

#11082 closed

exclude subquery executed twice — at Initial Version

Reported by: handrews Owned by: nobody
Component: Database layer (models, ORM) Version: dev
Severity: Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

When excluding using a subquery, I'm seeing the subquery being

executed first as its own query, then seeing the correct query being
run, including the subquery. Using filter instead of exclude, this
does not happen.

Here's what I mean (Select fields edited out of the MySQL log for
readability- connection 374 is from the Python prompt, 332 is me
poking at the mysql command line in another window to make sure I
don't confuse which queries go with which python statements). Version
and platform info follows:

baz=Publisher.objects.all()
for s in Series.objects.filter(publisherin=baz):

... pass
...

for s in Series.objects.exclude(publisherin=baz):

... pass
...

090509 19:30:22 332 Query select count(*) from core_issue
090509 19:30:28 374 Query SELECT * FROM core_series WHERE
core_series.publisher_id IN (SELECT U0.id FROM core_publisher
U0) ORDER BY core_series.name ASC, core_series.year_began ASC
090509 19:30:41 332 Query select count(*) from core_issue
090509 19:30:54 374 Query SELECT * FROM core_publisher
ORDER BY core_publisher.name ASC
090509 19:30:55 374 Query SELECT * FROM core_series WHERE
NOT (core_series.publisher_id IN (SELECT U0.id FROM
core_publisher U0)) ORDER BY core_series.name ASC,
core_series.year_began ASC
Version stuff:
Django 1.1 beta 1
Mac OS X 10.4.11
MySQL 5.0.45
Python 2.4.4
MySQLdb 1.2.1_p2

I checked on django-users first, where Alex Gaynor suggested that the issue is here:
http://code.djangoproject.com/browser/django/trunk/django/db/models/sql/query.py#L1622

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top