summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbert Defler <alnw@interia.eu>2024-02-17 12:22:53 +0000
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2024-02-19 08:28:42 +0100
commit26aae5614487f58ddb1df5726224393887373ecd (patch)
tree75679c920ec9c53174b9c23eb3ad658dd12d735d
parentf25d84f61a039d538bc742861f36579c704a310b (diff)
Refs #34060 -- Fixed JSONField __exact lookup for primitivies on Oracle 21c+.
Regression in c991602ce5798385261381025c06698d7fd30dc5. Co-Authored-By: Mariusz Felisiak <felisiak.mariusz@gmail.com>
-rw-r--r--django/db/models/fields/json.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/django/db/models/fields/json.py b/django/db/models/fields/json.py
index 5a9c02e032..1b219e620c 100644
--- a/django/db/models/fields/json.py
+++ b/django/db/models/fields/json.py
@@ -313,7 +313,10 @@ class JSONExact(lookups.Exact):
def as_oracle(self, compiler, connection):
lhs, lhs_params = self.process_lhs(compiler, connection)
rhs, rhs_params = self.process_rhs(compiler, connection)
- return f"JSON_EQUAL({lhs}, {rhs})", (*lhs_params, *rhs_params)
+ if connection.features.supports_primitives_in_json_field:
+ lhs = f"JSON({lhs})"
+ rhs = f"JSON({rhs})"
+ return f"JSON_EQUAL({lhs}, {rhs} ERROR ON ERROR)", (*lhs_params, *rhs_params)
class JSONIContains(CaseInsensitiveMixin, lookups.IContains):