Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updates for Release 1.3.0 #157

Merged
merged 4 commits into from
Nov 12, 2024
Merged

Updates for Release 1.3.0 #157

merged 4 commits into from
Nov 12, 2024

Conversation

Michael-A-McMahon
Copy link
Member

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

  • Added basic release notes for 1.3.0
  • Revised JDBC connection properties section. I especially wanted to point out the alternative ways to configure properties in cases where an Option is not defined.
  • Revised the VECTOR section, providing more information about mappings between Java arrays and VECTOR dimension types, including BINARY. Also removed section about a defect in 23.5.

Implementation Changes
The only significant change in our implementation is the addition of an addCloseTask method in OracleConnectionImpl. This was added to workaround a defect (bug #37160069) in the 23.6 release of Oracle JDBC. The defect causes closeAsyncOracle to fail when a Blob, Clob, or a SELECT ... FOR UPDATE ResultSet are still open. To avoid this scenario, we can use addCloseTask to ensure that LOBs and ResultSets are freed/closed before calling closeAsyncOracle.
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 the addCloseTask method. My hope is that any functionality we add in the future can also be accessed through a method of OracleConnectionImpl.

Another change in our implementation is that Blob.discard() and Clob.discard() will no longer be called when a Blob or Clob is set as a bind value. It is not clear to me why this call was present in the OracleStatementImpl 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

  • Fixed compiler warnings
  • Correct the JDBC URL when PROTOCOL=tcps
  • Added checks for disabling pipelining
  • Added tests for Blob/Clob binds
  • Changed warning tests for DB 19 (forcing a view to reference a non-existent table is an error, not a warning)

@oracle-contributor-agreement oracle-contributor-agreement bot added the OCA Verified All contributors have signed the Oracle Contributor Agreement. label Nov 8, 2024
@Michael-A-McMahon Michael-A-McMahon self-assigned this Nov 8, 2024
@jeandelavarene jeandelavarene merged commit 7182da7 into main Nov 12, 2024
3 checks passed
@jeandelavarene jeandelavarene deleted the update-1.3.0 branch November 12, 2024 10:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
OCA Verified All contributors have signed the Oracle Contributor Agreement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants