From 775ce5165e8d15799e20b15e04b9b61e8390145f Mon Sep 17 00:00:00 2001 From: Christopher Jones Date: Tue, 31 May 2022 08:27:18 -0400 Subject: [PATCH] Handle dead-connection errors for users of python-oracledb Added two new error codes for Oracle disconnect handling to support early testing of the new "python-oracledb" driver released by Oracle. Fixes: #8066 Closes: #8065 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/8065 Pull-request-sha: d630b8457a1d29b7a1354ccc6d5e2956eea865f6 Change-Id: Ib14dbb888597b1087b1bb7c505ccad59df226177 (cherry picked from commit 2bf00472bfafd8fd0cca5b4fe55ff4faf1a1279e) (cherry picked from commit 8564e2abf97795819f655a70b19b3bc820729c79) --- doc/build/changelog/unreleased_14/8066.rst | 6 ++++++ lib/sqlalchemy/dialects/oracle/cx_oracle.py | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 doc/build/changelog/unreleased_14/8066.rst diff --git a/doc/build/changelog/unreleased_14/8066.rst b/doc/build/changelog/unreleased_14/8066.rst new file mode 100644 index 0000000000..5f814ab3ab --- /dev/null +++ b/doc/build/changelog/unreleased_14/8066.rst @@ -0,0 +1,6 @@ +.. change:: + :tags: usecase, oracle + :tickets: 8066 + + Added two new error codes for Oracle disconnect handling to support early + testing of the new "python-oracledb" driver released by Oracle. diff --git a/lib/sqlalchemy/dialects/oracle/cx_oracle.py b/lib/sqlalchemy/dialects/oracle/cx_oracle.py index c88feae1a7..290789f321 100644 --- a/lib/sqlalchemy/dialects/oracle/cx_oracle.py +++ b/lib/sqlalchemy/dialects/oracle/cx_oracle.py @@ -1249,9 +1249,12 @@ class OracleDialect_cx_oracle(OracleDialect): # TODO: Others ? return True - if re.match(r"^(?:DPI-1010|DPI-1080)", str(e)): + if re.match(r"^(?:DPI-1010|DPI-1080|DPY-1001|DPY-4011)", str(e)): # DPI-1010: not connected # DPI-1080: connection was closed by ORA-3113 + # python-oracledb's DPY-1001: not connected to database + # python-oracledb's DPY-4011: the database or network closed the + # connection # TODO: others? return True -- 2.47.2