summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2024-06-21 17:51:56 -0400
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-07-11 08:19:04 +0200
commitb2fec1f08df316e26ff2c756ff23a9605746a864 (patch)
treeda8d88428a1f23f37bd89f0fe79e361e47028675
parent7264d7f7509f875d2676e40924092c71b5c5b411 (diff)
Optimized Case.as_sql() default compilation.
Moving compiler.compile(self.default) to the else clause avoids the call when it's unneeded in the FullResultSet case.
-rw-r--r--django/db/models/expressions.py3
1 files changed, 2 insertions, 1 deletions
diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py
index 4ee22420d9..dcba973ff4 100644
--- a/django/db/models/expressions.py
+++ b/django/db/models/expressions.py
@@ -1613,7 +1613,6 @@ class Case(SQLiteNumericMixin, Expression):
template_params = {**self.extra, **extra_context}
case_parts = []
sql_params = []
- default_sql, default_params = compiler.compile(self.default)
for case in self.cases:
try:
case_sql, case_params = compiler.compile(case)
@@ -1624,6 +1623,8 @@ class Case(SQLiteNumericMixin, Expression):
break
case_parts.append(case_sql)
sql_params.extend(case_params)
+ else:
+ default_sql, default_params = compiler.compile(self.default)
if not case_parts:
return default_sql, default_params
case_joiner = case_joiner or self.case_joiner