Add Oracle 11g (11.1/11.2) thin-mode support#1
Merged
Conversation
Lowers the protocol floor to 11.1 and implements the legacy O5LOGON and TTC wire format pre-12.1 servers use. Validated against Oracle 11.2.0.2 XE: connect, auth, and multi-row VARCHAR2/NUMBER/DATE fetch. - Accept packet: 11.x omits the SDU and OOB fields, so gate their read on protocol version >= 315 (large SDU). - Auth: a 48-byte server session key (11g/10g verifier) derives the combo key with the legacy MD5-XOR scheme instead of 12c PBKDF2. - Execute: the al8pidmlrc fields exist only from 12.1; sending them to an 11.x server caused ORA-03120, so gate them on field version >= 12.1. - Error status: 11.x carries the return code in the early error-number field and omits the trailing number/row-count pair.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Lowers the protocol floor to 11.1 and implements the legacy O5LOGON and TTC wire format that pre-12.1 servers use. Validated against a live Oracle 11.2.0.2 XE instance: connect, authenticate, and fetch multiple rows with VARCHAR2, NUMBER, and DATE columns.
python-oracledb stops at 12.1 on purpose, so the pre-12.1 wire differences came from go-ora (the open thin driver that speaks 11g) plus packet captures against the live server.
Changes
TNS_VERSION_MIN_ACCEPTED315 -> 313 (11.1). 10g and earlier still rejected (they use the O3LOGON handshake this driver does not implement).al8pidmlrcfields exist only from 12.1; sending them to an 11.x server causedORA-03120(two-task conversion routine: integer overflow), so gate them on field version >= 12.1.Tests
Updated the Accept message tests: protocol 312 (10g) is rejected, protocol 314 (11.2) decodes. Both pass.
Notes
Targets
tablepro-main. After merge, bump TablePro'sPackage.resolvedoracle-nio revision to the merged commit.