#28477: Strip unused annotations from count queries
-------------------------------------+-------------------------------------
Reporter: Tom Forbes | Owner: Simon
Type: | Charette
Cleanup/optimization | Status: closed
Component: Database layer | Version: dev
(models, ORM) |
Severity: Normal | Resolution: fixed
Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Simon Charette):
Dustin, [https://forum.djangoproject.com/t/django-4-2-behavior-change-
when-using-arrayagg-on-unnested-arrayfield-postgresql-specific/21547/2 I
think this answer is your way out].
Basically the optimization should be disabled for any set-returning
function but since Django only has single native one,`Subquery`, so the
optimization is only disabled when the `subquery = True` attribute is set.
In order to truly solve this issue I think we should introduce a new
documented `Expression.set_returning: bool` (better name welcome!) flag
that defaults to `False` but is set to `True` for `Subquery`.
The root of this problem is that the ORM simply doesn't support functions
that return rows in a generic way. Instead it branches out using
`getattr(expr, "subquery", False)` in all cases that it makes the most
sense to support them (e.g. `__in` looups).
--
Ticket URL: <https://code.djangoproject.com/ticket/28477#comment:23>
Django <https://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 unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/01070189294c5e6f-1f144466-4c38-48cd-8ca3-a9da2e693ca8-000000%40eu-central-1.amazonses.com.