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.
This branch includes all changes for a 1.3.0 release of Oracle R2DBC.
I have verified this branch by running our test suite on both JDK 11 and JDK 23, and connecting to both Oracle Database 19(ADB) and 23. I also ran the OracleR2dbcRepositoryIntegrationTests from the Spring Data R2DBC Project.
The Oracle JDBC dependency is updated to version 23.6, and the Project Reactor dependency to version 3.6.11.
README Changes
Option
is not defined.Implementation Changes
The only significant change in our implementation is the addition of an
addCloseTask
method inOracleConnectionImpl
. This was added to workaround a defect (bug #37160069) in the 23.6 release of Oracle JDBC. The defect causescloseAsyncOracle
to fail when a Blob, Clob, or aSELECT ... FOR UPDATE
ResultSet are still open. To avoid this scenario, we can useaddCloseTask
to ensure that LOBs and ResultSets are freed/closed before callingcloseAsyncOracle
.This change brought a slight refactoring to the constructors of many classes. These classes will now be constructed with a reference to the
OracleConnectionImpl
that created them. This allows the classes to access theaddCloseTask
method. My hope is that any functionality we add in the future can also be accessed through a method ofOracleConnectionImpl
.Another change in our implementation is that
Blob.discard()
andClob.discard()
will no longer be called when aBlob
orClob
is set as a bind value. It is not clear to me why this call was present in theOracleStatementImpl
code to begin with. I am fairly sure it is not correct to do this though. If Oracle R2DBC did not create the Blob/Clob, then it should not be discarding it; The user who created the Blob/Clob should do instead.Test Code Changes