Opened 10 years ago
Closed 3 years ago
#24296 closed Cleanup/optimization (fixed)
clear select fields for `.exists()` of distinct, non-sliced querysets
Reported by: | Martin Chase | Owned by: | Marcelo Galigniana |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 1.7 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Ready for checkin | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
The fix (93cc6dcdac6fc3e506640fa38dd1798c3cd61cff) for bug #18414 introduced an inefficiency in .exists()
on distinct querysets in that now all distinct querysets are selecting all their fields. I propose the fields should be left on the queryset only if (q.distinct and (q.high_mark is not None or q.low_mark is not None))
.
As I started writing the test for this, I realized I would have to inspect the query itself, which seems... like a bad idea for a test. Would this be reasonable to submit the (one-line-change) patch without a test, or does someone have a suggestion for a way to make the test that's less brittle?
Change History (5)
comment:1 by , 10 years ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:2 by , 3 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:4 by , 3 years ago
Has patch: | set |
---|---|
Triage Stage: | Accepted → Ready for checkin |
A test that inspects the query is likely fine. See if you can find an existing test that does something similar.