#33655: Unnecessary column in a GROUP BY clause with QuerySet.exists() -------------------------------------+------------------------------------- Reporter: Marc Perrin | Owner: nobody Type: | Status: new Cleanup/optimization | Component: Database layer | Version: 4.0 (models, ORM) | Severity: Normal | Resolution: Keywords: exists group by | Triage Stage: Accepted Has patch: 0 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 -------------------------------------+------------------------------------- Changes (by Mariusz Felisiak):
* cc: Simon Charette (added) * type: Uncategorized => Cleanup/optimization * stage: Unreviewed => Accepted Comment: Thanks for the report. I agree that `(1)` is unnecessary in the `GROUP BY` clause unfortunately we cannot always remove constants from it because folks can use them as an alias for n-th column (as you already noticed). Maybe we could select only the first column from the `GROUP BY` clause instead: {{{#!diff diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index 64e7927f7a..940d3141d1 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -582,8 +582,11 @@ class Query(BaseExpression): q.clear_ordering(force=True) if limit: q.set_limits(high=1) - q.add_extra({"a": 1}, None, None, None, None, None) - q.set_extra_mask(["a"]) + if q.group_by and not q.select: + q.add_select_col(q.group_by[0], "a") + else: + q.add_extra({"a": 1}, None , None, None, None, None) + q.set_extra_mask(["a"]) return q def has_results(self, using): }}} Tentatively accepted for future investigation. -- Ticket URL: <https://code.djangoproject.com/ticket/33655#comment:1> 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 django-updates+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/010701804aec58f5-ab4ac646-e561-4385-9505-48229bf38243-000000%40eu-central-1.amazonses.com.