Opened 5 years ago

Last modified 5 years ago

#31217 closed Bug

QuerySet.values()/values_list() with ordering by annotations with related fields and aggregations crashes. — at Version 2

Reported by: Mariusz Felisiak Owned by: Mariusz Felisiak
Component: Database layer (models, ORM) Version: 3.0
Severity: Release blocker Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Mariusz Felisiak)

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(
                min_age=Min('authors__age'),
            ).annotate(
                min_related_age=Coalesce('min_age', 'contact__age'),
            ).order_by('min_related_age').values_list('pk', flat=True)),
            [self.b4.pk, self.b3.pk, self.b1.pk, self.b2.pk, self.b5.pk, self.b6.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.

Change History (2)

comment:1 by Mariusz Felisiak, 5 years ago

Owner: changed from nobody to Mariusz Felisiak
Status: newassigned

comment:2 by Mariusz Felisiak, 5 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top