#30683: QuerySet.count() crashes when window functions and conditional
expressions
are both used
-------------------------------------+-------------------------------------
Reporter: adamsol | Owner: nobody
Type: Bug | Status: new
Component: Database | Version: 2.2
layer (models, ORM) |
Severity: Normal | Keywords:
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
Any `count()` query with window functions inside conditional expressions,
like:
{{{Model.objects.annotate(rank=Case(When(condition=~Q(pk=None),
then=Window(Rank(), order_by=F('pk'))))).count()}}}
throws an error:
{{{django.db.utils.ProgrammingError: window functions are not allowed in
GROUP BY}}}
The query works after adding `.values('pk')` to it or when conditional
expressions are not used.
There is a similar inconsistency when we call e.g. `.filter(rank__gt=0)`
instead of `.count()`. It doesn't work anyway (#28333), but there are two
different errors depending on whether conditionals are used:
`django.db.utils.ProgrammingError: window functions are not allowed in
WHERE` or `django.db.utils.NotSupportedError: Window is disallowed in the
filter clause.`.
--
Ticket URL: <https://code.djangoproject.com/ticket/30683>
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/050.908f017a591fe24382702bec8a7a1deb%40djangoproject.com.