Release date: October 15, 2025 Version: V2.4.16
Overview
JDBC V2.4.16 optimizes the call logic of PL statements by rewriting {call xxx} into anonymous blocks in the form of begin...end, enhancing Oracle compatibility. It adds the capability to validate the sequence numbers of protocol packets to intercept 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
- Oracle compatibility: Rewrites {call xxx} statements into anonymous blocks in the form of begin...end.
- Validates the sequence numbers of protocol packets to prevent data correctness issues.
- Sends the data types of out and null parameters in procedures to OBServer, typically used to handle scenarios with duplicate procedure names.
Compatibility changes
Product behavior changes
When autoReconnect=true, there is a risk of incorrect data, so starting from V2.4.16, the configuration autoReconnect=true is disabled. If you set autoReconnect=true, an error will occur. You can only set autoReconnect=false or omit the setting, using the default value of false.
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 following major issues are fixed in this iteration:
- Fixed the issue where getSubString returns a CLOB field, causing truncation due to inaccurate field length returned by OBServer.
- Fixed the issue where, when
cacheCallableStmtsis enabled, concurrent reads of CLOB data occur afterconn.close. - Fixed the issue where, in the PS protocol, when arraybinding execution fails, the PS does not close promptly, leading to an excess of PS cursors.
- Fixed the issue where, when sending piece data to write BLOB data fails,
ps.close()does not successfully close the PS, leading to an excess of PS cursors. - Fixed the issue where, when
rewriteBatchedStatements=true, thegetGeneratedKeysmethod is incorrect when the insert on duplicate key statement contains \n. - Optimized the performance of the mybatis framework in retrieving the corresponding result set index by column name.
- Fixed the issue where, when procedures are overloaded, executing PL statements results in exceptions when retrieving result sets.
- Fixed the issue where, when executing the Execute method, JDBC does not check whether the SQL statement bound to the statement is rewritten, directly using the rewritten SQL statement's parameter information, leading to program errors with error code -4016.
- Fixed the issue where, for case-sensitive tenants, JDBC fails to retrieve PL parameter information using uppercase parameter names, causing 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.
