diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2017-08-16 18:39:58 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2017-08-16 18:42:41 +0200 |
| commit | 07e34f8bca83704e4c3d50830574a839354d9bcc (patch) | |
| tree | eff0446ecfccc8520d82111f5412a1e9020b1477 | |
| parent | 1214e7c1b1248a7e51dfbdaaaed5bca56956f218 (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.py | 4 | ||||
| -rw-r--r-- | docs/releases/1.11.5.txt | 2 | ||||
| -rw-r--r-- | tests/select_for_update/tests.py | 6 |
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}) |
