Skip to content

Commit d09ac67

Browse files
committed
Move EmptyResultSet handle to process_lhs
1 parent cfaa026 commit d09ac67

File tree

2 files changed

+4
-13
lines changed

2 files changed

+4
-13
lines changed

django_mongodb_backend/aggregates.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from django.core.exceptions import EmptyResultSet, FullResultSet
21
from django.db import NotSupportedError
32
from django.db.models.aggregates import (
43
Aggregate,
@@ -30,12 +29,6 @@ def aggregate(self, compiler, connection, operator=None, resolve_inner_expressio
3029
# Skip rows that don't meet the criteria.
3130
default=Remove(),
3231
)
33-
except FullResultSet:
34-
# TODO: CHECK UNIT TEST REACH HERE.
35-
pass
36-
except EmptyResultSet:
37-
# TODO: CHECK UNIT TEST REACH HERE.
38-
agg_expression = Remove()
3932
if lhs_mql is None:
4033
lhs_mql = agg_expression.as_mql(compiler, connection, as_expr=True)
4134
if resolve_inner_expression:
@@ -63,11 +56,7 @@ def count(self, compiler, connection, resolve_inner_expression=False):
6356
WhereNode(conditions),
6457
then=agg_expression if self.distinct else Value(1),
6558
)
66-
inner_expression = Case(condition)
67-
except FullResultSet:
68-
inner_expression = agg_expression if self.distinct else Value(1)
69-
except EmptyResultSet:
70-
inner_expression = Remove() if self.distinct else Value(0)
59+
inner_expression = Case(condition, default=Remove())
7160
else:
7261
inner_expression = Case(
7362
When(WhereNode(conditions), then=agg_expression if self.distinct else Value(1)),

django_mongodb_backend/query_utils.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from django.core.exceptions import FullResultSet
1+
from django.core.exceptions import EmptyResultSet, FullResultSet
22
from django.db.models import F
33
from django.db.models.expressions import CombinedExpression, Func, Value
44
from django.db.models.sql.query import Query
@@ -19,6 +19,8 @@ def process_lhs(node, compiler, connection, as_expr=False):
1919
result.append(expr.as_mql(compiler, connection, as_expr=as_expr))
2020
except FullResultSet:
2121
result.append(Value(True).as_mql(compiler, connection, as_expr=as_expr))
22+
except EmptyResultSet:
23+
result.append(Value(None).as_mql(compiler, connection, as_expr=as_expr))
2224
return result
2325
# node is a Transform with just one source expression, aliased as "lhs".
2426
if is_direct_value(node.lhs):

0 commit comments

Comments
 (0)