mirror of
https://github.com/django/django.git
synced 2025-03-10 09:22:46 +00:00
[5.0.x] Fixed #35054 -- Fixed crash on Oracle when fetching JSONFields with oracledb 2.0.0.
Backport of 6c08dba5176606e8a62dd108bb6c9467d678d2f4 from main
This commit is contained in:
parent
bc60b1e292
commit
42c31f867f
@ -453,7 +453,7 @@ class FormatStylePlaceholderCursor:
|
|||||||
def _output_type_handler(cursor, name, defaultType, length, precision, scale):
|
def _output_type_handler(cursor, name, defaultType, length, precision, scale):
|
||||||
"""
|
"""
|
||||||
Called for each db column fetched from cursors. Return numbers as the
|
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 defaultType == Database.NUMBER:
|
||||||
if scale == -127:
|
if scale == -127:
|
||||||
@ -483,6 +483,10 @@ class FormatStylePlaceholderCursor:
|
|||||||
arraysize=cursor.arraysize,
|
arraysize=cursor.arraysize,
|
||||||
outconverter=outconverter,
|
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):
|
def _format_params(self, params):
|
||||||
try:
|
try:
|
||||||
|
@ -27,3 +27,5 @@ Bugfixes
|
|||||||
|
|
||||||
* Fixed a regression in Django 5.0 where admin fields on the same line could
|
* Fixed a regression in Django 5.0 where admin fields on the same line could
|
||||||
overflow the page and become non-interactive (:ticket:`35012`).
|
overflow the page and become non-interactive (:ticket:`35012`).
|
||||||
|
|
||||||
|
* Added compatibility for ``oracledb`` 2.0.0 (:ticket:`35054`).
|
||||||
|
Loading…
x
Reference in New Issue
Block a user