Release date: October 15, 2025 Version: V2.4.16
Overview
JDBC V2.4.16 optimizes the call logic of PL statements, rewriting {call xxx} into anonymous blocks in the form of begin...end to enhance Oracle compatibility. It adds the capability to validate the sequence numbers of protocol packets, intercepting data correctness issues. It also introduces logic to send the data types of out and null parameters in procedures to OBServer, addressing scenarios with duplicate procedure names. This resolves the issue where executing PL statements in overloaded procedures results in exceptions when retrieving result sets, improving stability. Additionally, it optimizes the performance of getString and getcolumnname.
New features
- Enhanced Oracle compatibility by rewriting {call xxx} statements into anonymous blocks in the form of begin...end.
- Added the capability to validate the sequence numbers of protocol packets, preventing data correctness issues.
- Introduced logic to send the data types of out and null parameters in procedures to OBServer, addressing scenarios with duplicate procedure names.
Compatibility changes
Product behavior changes
When autoReconnect=true, there is a risk of data correctness issues. Therefore, starting from V2.4.16, the autoReconnect=true configuration is disabled. Setting autoReconnect=true will result in an error, and only autoReconnect=false or omitting the setting (using the default value false) is allowed.
URL parameter changes
The following URL parameters are added:
| Option name | Status | Default value | Description |
|---|---|---|---|
obConvertCallsToBlocks |
New | false | For Oracle tenants, whether to convert {call xxx} statements into anonymous blocks in the form of begin...end. |
obIncludeOutOrNullParamTypeInfo |
New | false | For Oracle tenants, whether to send the data types of out and null parameters in procedures to OBServer, typically used to handle scenarios with duplicate procedure names. |
Bug fixes
The main issues fixed in this iteration are as follows:
- Fixed the issue where getSubString returns a CLOB field, and the OBServer returns an incorrect field length, causing truncation.
- Fixed the issue where, when
cacheCallableStmtsis enabled, concurrent reads of CLOB data afterconn.closecause confusion. - Fixed the issue where, in the PS protocol, when arraybinding execution fails, the PS does not close promptly, leading to an excessive number of PS cursors.
- Fixed the issue where, when sending piece data to write BLOB data fails, calling
ps.close()does not successfully close the PS, leading to an excessive number of PS cursors. - Fixed the issue where, when
rewriteBatchedStatements=true, thegetGeneratedKeysmethod is incorrect when an insert on duplicate key statement contains \n. - Optimized the performance of retrieving the corresponding result set index by column name in the MyBatis framework.
- Fixed the issue where, when a procedure is overloaded, executing PL statements to retrieve result sets results in exceptions.
- Fixed the issue where, when executing the Execute method, JDBC does not check whether the SQL statement bound to the statement has been rewritten, directly using the rewritten SQL statement's parameter information, leading to a program error-4016 Internal error.
- Fixed the issue where, for case-sensitive tenants, JDBC fails to retrieve PL parameter information using uppercase parameters, leading to PL call errors.
- Fixed the issue where, when the order of out parameters called by the user does not match the defined out parameters, the correct parameters cannot be matched.
