summaryrefslogtreecommitdiff
path: root/django/db/models/fields/generated.py
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2023-12-12 05:39:11 +0100
committerGitHub <noreply@github.com>2023-12-12 05:39:11 +0100
commitfcf95e592774a6ededec35481a2061474d467a2b (patch)
treea29be963a35061170cb18d18bcd68dc194fe5728 /django/db/models/fields/generated.py
parentb287af5dc954628d4b336aefc5027b2edceee64b (diff)
Fixed #35018 -- Fixed migrations crash on GeneratedField with BooleanField as output_field on Oracle < 23c.
Thanks Václav Řehák for the report. Regression in f333e3513e8bdf5ffeb6eeb63021c230082e6f95.
Diffstat (limited to 'django/db/models/fields/generated.py')
-rw-r--r--django/db/models/fields/generated.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/django/db/models/fields/generated.py b/django/db/models/fields/generated.py
index 95d19582de..257feeeba2 100644
--- a/django/db/models/fields/generated.py
+++ b/django/db/models/fields/generated.py
@@ -58,7 +58,13 @@ class GeneratedField(Field):
resolved_expression = self.expression.resolve_expression(
self._query, allow_joins=False
)
- return compiler.compile(resolved_expression)
+ sql, params = compiler.compile(resolved_expression)
+ if (
+ getattr(self.expression, "conditional", False)
+ and not connection.features.supports_boolean_expr_in_select_clause
+ ):
+ sql = f"CASE WHEN {sql} THEN 1 ELSE 0 END"
+ return sql, params
def check(self, **kwargs):
databases = kwargs.get("databases") or []