#30771: Filtering on query result overrides GROUP BY of internal query
-------------------------------------+-------------------------------------
               Reporter:  Aur Saraf  |          Owner:  nobody
                   Type:  Bug        |         Status:  new
              Component:  Database   |        Version:  2.2
  layer (models, ORM)                |       Keywords:  annotate,
               Severity:  Normal     |  annotation, filter, groupby,
           Triage Stage:             |  aggregate, aggregation
  Unreviewed                         |      Has patch:  0
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 {{{#!python
 from django.contrib.auth import models

 a =
 
models.User.objects.filter(email__isnull=True).values('email').annotate(m=Max('id')).values('m')
 print(a.query) # good
 # SELECT MAX("auth_user"."id") AS "m" FROM "auth_user" WHERE
 "auth_user"."email" IS NULL GROUP BY "auth_user"."email"
 print(a[:1].query) # good
 # SELECT MAX("auth_user"."id") AS "m" FROM "auth_user" WHERE
 "auth_user"."email" IS NULL GROUP BY "auth_user"."email"  LIMIT 1
 b = models.User.objects.filter(id=a[:1])
 print(b.query) # GROUP BY U0."id" should be GROUP BY U0."email"
 # SELECT ... FROM "auth_user" WHERE "auth_user"."id" = (SELECT U0."id"
 FROM "auth_user" U0 WHERE U0."email" IS NULL GROUP BY U0."id"  LIMIT 1)
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/30771>
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/053.e0be5780086543c97548ce306e31c7c7%40djangoproject.com.

Reply via email to