summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2018-09-16 12:45:34 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2018-09-16 12:49:24 +0200
commit430966c2fc23eeca038b0268c995a894c4b8b154 (patch)
tree9e3285750982b7d5d6f7728b256bf840927b7543
parent4c5a8c6f50577daa8b8aaef28a8f32ab34185e80 (diff)
[2.1.x] Fixed #29759 -- Fixed crash on Oracle when fetching a returned insert id with cx_Oracle 7.
Backport of da92ec79621fc0bba671d8afa52b7f6884962fe5 from master
-rw-r--r--django/db/backends/oracle/operations.py4
-rw-r--r--docs/releases/2.1.2.txt2
2 files changed, 5 insertions, 1 deletions
diff --git a/django/db/backends/oracle/operations.py b/django/db/backends/oracle/operations.py
index 923b5d118d..1211b5398f 100644
--- a/django/db/backends/oracle/operations.py
+++ b/django/db/backends/oracle/operations.py
@@ -222,7 +222,9 @@ END;
def fetch_returned_insert_id(self, cursor):
try:
- return int(cursor._insert_id_var.getvalue())
+ value = cursor._insert_id_var.getvalue()
+ # cx_Oracle < 7 returns value, >= 7 returns list with single value.
+ return int(value[0] if isinstance(value, list) else value)
except (IndexError, TypeError):
# cx_Oracle < 6.3 returns None, >= 6.3 raises IndexError.
raise DatabaseError(
diff --git a/docs/releases/2.1.2.txt b/docs/releases/2.1.2.txt
index bcaa47555e..3118df77ae 100644
--- a/docs/releases/2.1.2.txt
+++ b/docs/releases/2.1.2.txt
@@ -17,3 +17,5 @@ Bugfixes
* Made migrations detect changes to ``Meta.default_related_name``
(:ticket:`29755`).
+
+* Added compatibility for ``cx_Oracle`` 7 (:ticket:`29759`).