summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2022-08-10 12:28:39 +0200
committerGitHub <noreply@github.com>2022-08-10 12:28:39 +0200
commit721706f4c40f4970f57647368d45f49e20028628 (patch)
tree4a4df9fd7f97d0a2be7e63105b87cc140edd5d5f
parent9e7cb27a5b7363239d1db02d29fe12efdf25b899 (diff)
Refs #33895 -- Fixed Case() crash with filters that match everything in When() on Oracle.
Follow up to 036bb2b74afb50a71e7a945e8dd83499b603ac3a.
-rw-r--r--django/db/models/expressions.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py
index ba836024e5..6f635f565a 100644
--- a/django/db/models/expressions.py
+++ b/django/db/models/expressions.py
@@ -1303,14 +1303,19 @@ class When(Expression):
# WHERE clause, but in a CASE WHEN expression they must use a predicate
# that's always True.
if condition_sql == "":
- condition_sql, condition_params = compiler.compile(Value(True))
+ if connection.features.supports_boolean_expr_in_select_clause:
+ condition_sql, condition_params = compiler.compile(Value(True))
+ else:
+ condition_sql, condition_params = "1=1", ()
template_params["condition"] = condition_sql
- sql_params.extend(condition_params)
result_sql, result_params = compiler.compile(self.result)
template_params["result"] = result_sql
- sql_params.extend(result_params)
template = template or self.template
- return template % template_params, sql_params
+ return template % template_params, (
+ *sql_params,
+ *condition_params,
+ *result_params,
+ )
def get_group_by_cols(self, alias=None):
# This is not a complete expression and cannot be used in GROUP BY.