From 721706f4c40f4970f57647368d45f49e20028628 Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Wed, 10 Aug 2022 12:28:39 +0200 Subject: [PATCH] Refs #33895 -- Fixed Case() crash with filters that match everything in When() on Oracle. Follow up to 036bb2b74afb50a71e7a945e8dd83499b603ac3a. --- django/db/models/expressions.py | 13 +++++++++---- 1 file 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.