summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2017-08-16 18:39:58 +0200
committerGitHub <noreply@github.com>2017-08-16 18:39:58 +0200
commit6784383e93d582f43f8cb5f7647a05645cbb339b (patch)
treec1acb12139023af9e0962751b0d7470e318f3af9
parenta4934243527c18775c70e998bec2fd87235853ac (diff)
Fixed #28498 -- Fixed test database creation with cx_Oracle 6.
-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 aa8b1f26ee..fe053c54f7 100644
--- a/django/db/backends/oracle/creation.py
+++ b/django/db/backends/oracle/creation.py
@@ -97,6 +97,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']
@@ -182,6 +184,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 eaedd506de..707fa0e9ba 100644
--- a/tests/select_for_update/tests.py
+++ b/tests/select_for_update/tests.py
@@ -56,6 +56,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)
@@ -370,7 +371,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})