#31217: QuerySet.values()/values_list() with ordering by annotations with
related
fields and aggregations crashes.
-------------------------------------+-------------------------------------
Reporter: felixxm | Owner: nobody
Type: Bug | Status: new
Component: Database | Version: 3.0
layer (models, ORM) |
Severity: Release | Keywords:
blocker |
Triage Stage: Accepted | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
`QuerySet.values()`/`values_list()` with ordering by annotations with
related fields and aggregations crashes, e.g.
{{{
def test_aggregation_ordered_by_related_annotation_values(self):
from django.db.models.functions import Coalesce
self.assertEqual(
list(Book.objects.annotate(
max_age=Count('authors__age'),
).annotate(
max_related_age=Coalesce('max_age', 'contact__age'),
).order_by('max_related_age').values_list('pk', flat=True)),
[self.b6.pk, self.b3.pk, self.b2.pk, self.b1.pk, self.b5.pk,
self.b4.pk],
)
}}}
crashes with:
{{{
django.db.utils.ProgrammingError: column "t4.age" must appear in the GROUP
BY clause or be used in an aggregate function
LINE 1: ...ER BY COALESCE(COUNT("aggregation_author"."age"), T4."age") ...
}}}
Regression in 59b4e99dd00b9c36d56055b889f96885995e4240.
Thanks Jon Dufresne for the report.
--
Ticket URL: <https://code.djangoproject.com/ticket/31217>
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.ed548d02c9ab613074d5ae45699af0fb%40djangoproject.com.