diff options
| author | Tim Graham <timograham@gmail.com> | 2024-06-21 17:51:56 -0400 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2024-07-11 08:19:04 +0200 |
| commit | b2fec1f08df316e26ff2c756ff23a9605746a864 (patch) | |
| tree | da8d88428a1f23f37bd89f0fe79e361e47028675 | |
| parent | 7264d7f7509f875d2676e40924092c71b5c5b411 (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.py | 3 |
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 |
