oracle / oracle-r2dbc

R2DBC Driver for Oracle Database
https://oracle.com
Other
193 stars 40 forks source link

Support Pipelining #143

Closed Michael-A-McMahon closed 1 month ago

Michael-A-McMahon commented 2 months ago

The 23.4 release of Oracle Database and Oracle JDBC allow database calls to be pipelined. See: https://docs.oracle.com/en/database/oracle/oracle-database/23/jjdbc/pipelined-database-operations.html#GUID-E1DBDC02-D3F3-4601-A38D-A25159EB98BE).

Reactive programmers should be able to access these benefits, but Oracle R2DBC is currently designed in a way which prevents that. Specifically, the AsyncLock class basically implements a local pipeline, ensuring that database calls are executed sequentially. This was useful for the 21.x releases of Oracle JDBC, which did not support pipelining, and would block any thread that attempted concurrent database calls.

To fix this issue, Oracle R2DBC needs to update the ojdbc11 dependency to 23.4 (or newer), and it needs to get the AsyncLock out of the way.