diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-12-22 09:43:45 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-22 09:43:45 +0100 |
| commit | 6c08dba5176606e8a62dd108bb6c9467d678d2f4 (patch) | |
| tree | a0feebc97946f4148a4cb93f988fe1595dc2aaa0 | |
| parent | 2bf46c3825ad4ec170324791d6f3a329316ae2d4 (diff) | |
Fixed #35054 -- Fixed crash on Oracle when fetching JSONFields with oracledb 2.0.0.
| -rw-r--r-- | django/db/backends/oracle/base.py | 6 | ||||
| -rw-r--r-- | docs/releases/5.0.1.txt | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py index a5e7f97df0..2d91468d25 100644 --- a/django/db/backends/oracle/base.py +++ b/django/db/backends/oracle/base.py @@ -453,7 +453,7 @@ class FormatStylePlaceholderCursor: def _output_type_handler(cursor, name, defaultType, length, precision, scale): """ Called for each db column fetched from cursors. Return numbers as the - appropriate Python type. + appropriate Python type, and NCLOB with JSON as strings. """ if defaultType == Database.NUMBER: if scale == -127: @@ -483,6 +483,10 @@ class FormatStylePlaceholderCursor: arraysize=cursor.arraysize, outconverter=outconverter, ) + # oracledb 2.0.0+ returns NLOB columns with IS JSON constraints as + # dicts. Use a no-op converter to avoid this. + elif defaultType == Database.DB_TYPE_NCLOB: + return cursor.var(Database.DB_TYPE_NCLOB, arraysize=cursor.arraysize) def _format_params(self, params): try: diff --git a/docs/releases/5.0.1.txt b/docs/releases/5.0.1.txt index 79fbf9a0a1..592454e893 100644 --- a/docs/releases/5.0.1.txt +++ b/docs/releases/5.0.1.txt @@ -27,3 +27,5 @@ Bugfixes * Fixed a regression in Django 5.0 where admin fields on the same line could overflow the page and become non-interactive (:ticket:`35012`). + +* Added compatibility for ``oracledb`` 2.0.0 (:ticket:`35054`). |
