summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2017-08-16 18:39:58 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2017-08-16 18:42:41 +0200
commit07e34f8bca83704e4c3d50830574a839354d9bcc (patch)
treeeff0446ecfccc8520d82111f5412a1e9020b1477
parent1214e7c1b1248a7e51dfbdaaaed5bca56956f218 (diff)
[1.11.x] Fixed #28498 -- Fixed test database creation with cx_Oracle 6.
Backport of 6784383e93d582f43f8cb5f7647a05645cbb339b from master
-rw-r--r--django/db/backends/oracle/creation.py4
-rw-r--r--docs/releases/1.11.5.txt2
-rw-r--r--tests/select_for_update/tests.py6
3 files changed, 11 insertions, 1 deletions
diff --git a/django/db/backends/oracle/creation.py b/django/db/backends/oracle/creation.py
index d34f2a2d50..911f19b50e 100644
--- a/django/db/backends/oracle/creation.py
+++ b/django/db/backends/oracle/creation.py
@@ -96,6 +96,8 @@ class DatabaseCreation(BaseDatabaseCreation):
print("Tests cancelled.")
sys.exit(1)
+ # Cursor must be closed before closing connection.
+ cursor.close()
self._maindb_connection.close() # done with main user -- test user and tablespaces created
self._switch_to_test_user(parameters)
return self.connection.settings_dict['NAME']
@@ -180,6 +182,8 @@ class DatabaseCreation(BaseDatabaseCreation):
if verbosity >= 1:
print('Destroying test database tables...')
self._execute_test_db_destruction(cursor, parameters, verbosity)
+ # Cursor must be closed before closing connection.
+ cursor.close()
self._maindb_connection.close()
def _execute_test_db_creation(self, cursor, parameters, verbosity, keepdb=False):
diff --git a/docs/releases/1.11.5.txt b/docs/releases/1.11.5.txt
index 55fa0eda7e..556cc73793 100644
--- a/docs/releases/1.11.5.txt
+++ b/docs/releases/1.11.5.txt
@@ -11,3 +11,5 @@ Bugfixes
* Fixed GEOS version parsing if the version has a commit hash at the end (new
in GEOS 3.6.2) (:ticket:`28441`).
+
+* Fixed test database creation with ``cx_Oracle`` 6 (:ticket:`28498`).
diff --git a/tests/select_for_update/tests.py b/tests/select_for_update/tests.py
index 9e5ee598b0..3344e3dcf3 100644
--- a/tests/select_for_update/tests.py
+++ b/tests/select_for_update/tests.py
@@ -51,6 +51,7 @@ class SelectForUpdateTests(TransactionTestCase):
def end_blocking_transaction(self):
# Roll back the blocking transaction.
+ self.cursor.close()
self.new_connection.rollback()
self.new_connection.set_autocommit(True)
@@ -274,7 +275,10 @@ class SelectForUpdateTests(TransactionTestCase):
finally:
# This method is run in a separate thread. It uses its own
# database connection. Close it without waiting for the GC.
- connection.close()
+ # Connection cannot be closed on Oracle because cursor is still
+ # open.
+ if connection.vendor != 'oracle':
+ connection.close()
status = []
thread = threading.Thread(target=raw, kwargs={'status': status})