mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Fixed #31109 -- Disabled grouping by aliases on QuerySet.exists().
Clearing the SELECT clause in Query.has_results was orphaning GROUP BY
references to it.
Thanks Thierry Bastian for the report and Baptiste Mispelon for the
bisect.
Regression in fb3f034f1c.
This commit is contained in:
committed by
Mariusz Felisiak
parent
cebd41e416
commit
720de4d044
@@ -526,7 +526,9 @@ class Query(BaseExpression):
|
||||
if not q.distinct:
|
||||
if q.group_by is True:
|
||||
q.add_fields((f.attname for f in self.model._meta.concrete_fields), False)
|
||||
q.set_group_by()
|
||||
# Disable GROUP BY aliases to avoid orphaning references to the
|
||||
# SELECT clause which is about to be cleared.
|
||||
q.set_group_by(allow_aliases=False)
|
||||
q.clear_select_clause()
|
||||
q.clear_ordering(True)
|
||||
q.set_limits(high=1)
|
||||
@@ -1916,7 +1918,7 @@ class Query(BaseExpression):
|
||||
if force_empty:
|
||||
self.default_ordering = False
|
||||
|
||||
def set_group_by(self):
|
||||
def set_group_by(self, allow_aliases=True):
|
||||
"""
|
||||
Expand the GROUP BY clause required by the query.
|
||||
|
||||
@@ -1938,6 +1940,8 @@ class Query(BaseExpression):
|
||||
warnings.warn(msg, category=RemovedInDjango40Warning)
|
||||
group_by_cols = annotation.get_group_by_cols()
|
||||
else:
|
||||
if not allow_aliases:
|
||||
alias = None
|
||||
group_by_cols = annotation.get_group_by_cols(alias=alias)
|
||||
group_by.extend(group_by_cols)
|
||||
self.group_by = tuple(group_by)
|
||||
|
||||
Reference in New Issue
Block a user