From e5a92d400acb4ca6a8e1375d1ab8121f2c7220be Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Wed, 1 Dec 2021 00:43:39 -0500 Subject: Fixed #33282 -- Fixed a crash when OR'ing subquery and aggregation lookups. As a QuerySet resolves to Query the outer column references grouping logic should be defined on the latter and proxied from Subquery for the cases where get_group_by_cols is called on unresolved expressions. Thanks Antonio Terceiro for the report and initial patch. --- django/db/models/sql/query.py | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'django/db/models/sql/query.py') diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index faca57da56..96f25830f0 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -1053,6 +1053,14 @@ class Query(BaseExpression): if col.alias in self.external_aliases ] + def get_group_by_cols(self, alias=None): + if alias: + return [Ref(alias, self)] + external_cols = self.get_external_cols() + if any(col.possibly_multivalued for col in external_cols): + return [self] + return external_cols + def as_sql(self, compiler, connection): # Some backends (e.g. Oracle) raise an error when a subquery contains # unnecessary ORDER BY clause. -- cgit v1.3