Skip to content

Commit 571a88f

Browse files
Merge pull request #138 from oracle/update-1.2.0
Update 1.2.0
2 parents 50c85a6 + 7b0af64 commit 571a88f

File tree

5 files changed

+93
-47
lines changed

5 files changed

+93
-47
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
.github/workflows/startup/99_done.sh
88
.github/workflows/startup/done
99
.idea/
10+
*.swp

README.md

Lines changed: 83 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,13 @@
22

33
The Oracle R2DBC Driver is a Java library that supports reactive programming with Oracle Database.
44

5-
Oracle R2DBC implements the R2DBC Service Provider Interface (SPI) as specified by the Reactive Relational Database Connectivity (R2DBC) project. The R2DBC SPI exposes Reactive Streams as an abstraction for remote database operations. Reactive Streams is a well defined standard for asynchronous, non-blocking, and back-pressured communication. This standard allows an R2DBC driver to interoperate with other reactive libraries and frameworks, such as Spring, Project Reactor, RxJava, and Akka Streams.
5+
Oracle R2DBC implements the R2DBC Service Provider Interface (SPI) as specified
6+
by the Reactive Relational Database Connectivity (R2DBC) project. The R2DBC SPI
7+
exposes Reactive Streams as an abstraction for remote database operations.
8+
Reactive Streams is a well defined standard for asynchronous, non-blocking, and
9+
back-pressured communication. This standard allows an R2DBC driver to
10+
interoperate with other reactive libraries and frameworks, such as Spring,
11+
Project Reactor, RxJava, and Akka Streams.
612

713
### Learn More About R2DBC:
814
[R2DBC Project Home Page](https://r2dbc.io)
@@ -19,43 +25,27 @@ Oracle R2DBC implements the R2DBC Service Provider Interface (SPI) as specified
1925
[Reactive Streams Specification v1.0.3](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.3/README.md)
2026

2127
# About This Version
22-
The 1.1.0 release Oracle R2DBC implements version 1.0.0.RELEASE of the R2DBC SPI.
28+
The 1.2.0 release Oracle R2DBC implements version 1.0.0.RELEASE of the R2DBC SPI.
2329

2430
Fixes in this release:
25-
- [Resolved a memory leak of java.sql.ResultSet objects](https://github.com/oracle/oracle-r2dbc/pull/88)
26-
- [Warnings are no longer emitted as onError signals](https://github.com/oracle/oracle-r2dbc/pull/98)
27-
- [The option to disable DN Matching is no longer ignored](https://github.com/oracle/oracle-r2dbc/pull/103)
31+
- [Fixed "Operator has been terminated" message](https://github.com/oracle/oracle-r2dbc/pull/134)
32+
- [Checking for Zero Threads in the common ForkJoinPool](https://github.com/oracle/oracle-r2dbc/pull/131)
2833

2934
New features in this release:
30-
- [Added an option to configure oracle.jdbc.timezoneAsRegion](https://github.com/oracle/oracle-r2dbc/pull/81)
31-
- [Added support for LDAP URLs](https://github.com/oracle/oracle-r2dbc/pull/99)
32-
- [Added support for REF CURSOR values](https://github.com/oracle/oracle-r2dbc/pull/94)
33-
- [Added support for user defined ARRAY and OBJECT types](https://github.com/oracle/oracle-r2dbc/pull/104)
35+
- [Supporting Option Values from Supplier and Publisher](https://github.com/oracle/oracle-r2dbc/pull/137)
36+
- [Added Options for Kerberos](https://github.com/oracle/oracle-r2dbc/pull/127)
3437

35-
### Integration with Spring and Other Libraries
36-
Oracle R2DBC only interoperates with libraries that support the 1.0.0.RELEASE
37-
version of the R2DBC SPI. When using libraries like Spring and r2dbc-pool, be
38-
sure to use a version which supports the 1.0.0.RELEASE of the SPI.
39-
40-
Oracle R2DBC depends on the JDK 11 build of Oracle JDBC 21.7.0.0. Other
41-
libraries may depend on a different version of Oracle JDBC which is
42-
incompatible. To resolve this incompatibility, it may be necessary to explicitly
43-
declare the dependency in your project, ie:
44-
```xml
45-
<dependency>
46-
<groupId>com.oracle.database.jdbc</groupId>
47-
<artifactId>ojdbc11</artifactId>
48-
<version>21.7.0.0</version>
49-
</dependency>
50-
```
38+
Updated dependencies:
39+
- Updated Oracle JDBC from 21.7.0.0 to 21.11.0.0
40+
- Updated Project Reactor from 3.5.0 to 3.5.11
5141

5242
## Installation
5343
Oracle R2DBC can be obtained from Maven Central.
5444
```xml
5545
<dependency>
5646
<groupId>com.oracle.database.r2dbc</groupId>
5747
<artifactId>oracle-r2dbc</artifactId>
58-
<version>1.0.0</version>
48+
<version>1.2.0</version>
5949
</dependency>
6050
```
6151

@@ -70,13 +60,30 @@ Oracle R2DBC can also be built from source using Maven:
7060
Oracle R2DBC is compatible with JDK 11 (or newer), and has the following runtime dependencies:
7161
- R2DBC SPI 1.0.0.RELEASE
7262
- Reactive Streams 1.0.3
73-
- Project Reactor 3.4.18
74-
- Oracle JDBC 21.7.0.0 for JDK 11 (ojdbc11.jar)
63+
- Project Reactor 3.5.11
64+
- Oracle JDBC 21.11.0.0 for JDK 11 (ojdbc11.jar)
7565
- Oracle R2DBC relies on the Oracle JDBC Driver's [Reactive Extensions
7666
](https://docs.oracle.com/en/database/oracle/oracle-database/21/jjdbc/jdbc-reactive-extensions.html#GUID-1C40C43B-3823-4848-8B5A-D2F97A82F79B) APIs.
7767

7868
The Oracle R2DBC Driver has been verified with Oracle Database versions 18, 19,
79-
and 21.
69+
21, and 23.
70+
71+
### Integration with Spring and Other Libraries
72+
Oracle R2DBC can only interoperate with libraries that support the 1.0.0.RELEASE
73+
version of the R2DBC SPI. When using libraries like Spring and r2dbc-pool, be
74+
sure to use a version which supports the 1.0.0.RELEASE of the SPI.
75+
76+
Oracle R2DBC depends on the JDK 11 build of Oracle JDBC 21.11.0.0. Other
77+
libraries may depend on a different version of Oracle JDBC, and this version may
78+
be incompatible. To resolve incompatibilities, it may be necessary to explicitly
79+
declare the dependency in your project, ie:
80+
```xml
81+
<dependency>
82+
<groupId>com.oracle.database.jdbc</groupId>
83+
<artifactId>ojdbc11</artifactId>
84+
<version>21.11.0.0</version>
85+
</dependency>
86+
```
8087

8188
## Code Examples
8289

@@ -102,7 +109,9 @@ The following method returns an Oracle R2DBC `ConnectionFactory`
102109
}
103110
```
104111

105-
The following method uses Project Reactor's [Flux](https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html) to open a connection, execute a SQL query, and then close the connection:
112+
The following method uses Project Reactor's
113+
[Flux](https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html)
114+
to open a connection, execute a SQL query, and then close the connection:
106115
```java
107116
Flux.usingWhen(
108117
getConnectionFactory().create(),
@@ -181,8 +190,10 @@ the Reactive Streams 1.0.3 [Specification](https://github.com/reactive-streams/r
181190
and [Javadoc](http://www.reactive-streams.org/reactive-streams-1.0.3-javadoc/org/reactivestreams/package-summary.html)
182191

183192
The R2DBC and Reactive Streams specifications include requirements that are
184-
optional for a compliant implementation. The remainder of this document specifies
185-
the Oracle R2DBC Driver's implementation of these optional requirements.
193+
optional for a compliant implementation. Oracle R2DBC's implementation of these
194+
optional are specified in this document. This document also specifies additional
195+
functionality that is supported by Oracle R2DBC, but is not part of the R2DBC
196+
1.0.0 Specification.
186197

187198
### Connection Creation
188199
The Oracle R2DBC Driver is identified by the name "oracle". The driver
@@ -372,8 +383,10 @@ The same property can also be configured programmatically:
372383
.option(OracleR2dbcOptions.TLS_WALLET_LOCATION, "/path/to/wallet")
373384
```
374385

375-
The following is a list of all Oracle JDBC connection properties that are
376-
supported by Oracle R2DBC:
386+
The next sections list Oracle JDBC connection properties which are supported by
387+
Oracle R2DBC.
388+
389+
##### TLS/SSL Connection Properties
377390
- [oracle.net.tns_admin](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html?is-external=true#CONNECTION_PROPERTY_TNS_ADMIN)
378391
- [oracle.net.wallet_location](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html?is-external=true#CONNECTION_PROPERTY_WALLET_LOCATION)
379392
- [oracle.net.wallet_password](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html?is-external=true#CONNECTION_PROPERTY_WALLET_PASSWORD)
@@ -392,6 +405,8 @@ supported by Oracle R2DBC:
392405
- [ssl.keyManagerFactory.algorithm](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html?is-external=true#CONNECTION_PROPERTY_THIN_SSL_KEYMANAGERFACTORY_ALGORITHM)
393406
- [ssl.trustManagerFactory.algorithm](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html?is-external=true#CONNECTION_PROPERTY_THIN_SSL_TRUSTMANAGERFACTORY_ALGORITHM)
394407
- [oracle.net.ssl_context_protocol](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html?is-external=true#CONNECTION_PROPERTY_SSL_CONTEXT_PROTOCOL)
408+
409+
##### Miscellaneous Connection Properties
395410
- [oracle.jdbc.fanEnabled](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html?is-external=true#CONNECTION_PROPERTY_FAN_ENABLED)
396411
- [oracle.jdbc.implicitStatementCacheSize](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html?is-external=true#CONNECTION_PROPERTY_IMPLICIT_STATEMENT_CACHE_SIZE)
397412
- [oracle.jdbc.defaultLobPrefetchSize](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html?is-external=true#CONNECTION_PROPERTY_DEFAULT_LOB_PREFETCH_SIZE)
@@ -401,20 +416,50 @@ supported by Oracle R2DBC:
401416
- Cached query results can cause phantom reads even if the serializable
402417
transaction isolation level is set. Set this to "false" if using the
403418
serializable isolation level.
419+
- [oracle.jdbc.timeZoneAsRegion](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_TIMEZONE_AS_REGION)
420+
- Setting this option to "false" may resolve "ORA-01882: timezone region not
421+
found". The ORA-01882 error happens when Oracle Database doesn't recognize
422+
the name returned by `java.util.TimeZone.getDefault().getId()`.
423+
424+
##### Database Tracing Connection Properties
404425
- [v$session.terminal](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_VSESSION_TERMINAL)
405426
- [v$session.machine](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_VSESSION_MACHINE)
406427
- [v$session.osuser](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_VSESSION_OSUSER)
407428
- [v$session.program](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_VSESSION_PROGRAM)
408429
- [v$session.process](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_VSESSION_PROCESS)
409-
- [oracle.jdbc.timeZoneAsRegion](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_TIMEZONE_AS_REGION)
410-
- Setting this option to "false" may resolve "ORA-01882: timezone region not
411-
found". The ORA-01882 error happens when Oracle Database doesn't recognize
412-
the name returned by `java.util.TimeZone.getDefault().getId()`.
430+
431+
##### Oracle Net Encryption Connection Properties
413432
- [oracle.net.encryption_client](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVEL)
414433
- [oracle.net.encryption_types_client](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPES)
415434
- [oracle.net.crypto_checksum_client](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_NET_CHECKSUM_LEVEL)
416435
- [oracle.net.crypto_checksum_types_client](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_NET_CHECKSUM_TYPES)
417436

437+
##### Kerberos Connection Properties
438+
- [oracle.net.kerberos5_cc_name](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_NET_AUTHENTICATION_KRB5_CC_NAME)
439+
- [oracle.net.kerberos5_mutual_authentication](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_NET_AUTHENTICATION_KRB5_MUTUAL)
440+
- [oracle.net.KerberosRealm](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_NET_AUTHENTICATION_KRB_REALM)
441+
- [oracle.net.KerberosJaasLoginModule](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_NET_AUTHENTICATION_KRB_JAAS_LOGIN_MODULE)
442+
443+
##### LDAP Connection Properties
444+
- [oracle.net.ldap.security.authentication](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SECURITY_AUTHENTICATION)
445+
- [oracle.net.ldap.security.principal](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SECURITY_PRINCIPAL)
446+
- [oracle.net.ldap.security.credentials](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SECURITY_CREDENTIALS)
447+
- [com.sun.jndi.ldap.connect.timeout](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_JNDI_LDAP_CONNECT_TIMEOUT)
448+
- [com.sun.jndi.ldap.read.timeout](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_JNDI_LDAP_READ_TIMEOUT)
449+
- [oracle.net.ldap.ssl.walletLocation](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SSL_WALLET_LOCATION)
450+
- [oracle.net.ldap.ssl.walletPassword](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SSL_WALLET_PASSWORD)
451+
- [oracle.net.ldap.ssl.keyStoreType](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SSL_KEYSTORE_TYPE)
452+
- [oracle.net.ldap.ssl.keyStore](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SSL_KEYSTORE)
453+
- [oracle.net.ldap.ssl.keyStorePassword](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SSL_KEYSTORE_PASSWORD)
454+
- [oracle.net.ldap.ssl.trustStoreType](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SSL_TRUSTSTORE_TYPE)
455+
- [oracle.net.ldap.ssl.trustStore](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SSL_TRUSTSTORE)
456+
- [oracle.net.ldap.ssl.trustStorePassword](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SSL_TRUSTSTORE_PASSWORD)
457+
- [oracle.net.ldap.ssl.supportedCiphers](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SSL_CIPHER_SUITES)
458+
- [oracle.net.ldap.ssl.supportedVersions](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SSL_VERSIONS)
459+
- [oracle.net.ldap.ssl.keyManagerFactory.algorithm](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SSL_KEYMANAGER_FACTORY_ALGORITHM)
460+
- [oracle.net.ldap.ssl.trustManagerFactory.algorithm](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SSL_TRUSTMANAGER_FACTORY_ALGORITHM)
461+
- [oracle.net.ldap.ssl.ssl_context_protocol](https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_LDAP_SSL_CONTEXT_PROTOCOL)
462+
418463
### Thread Safety and Parallel Execution
419464
Oracle R2DBC's `ConnectionFactory` and `ConnectionFactoryProvider` are the only
420465
classes that have a thread safe implementation. All other classes implemented

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
<groupId>com.oracle.database.r2dbc</groupId>
2828
<artifactId>oracle-r2dbc</artifactId>
29-
<version>1.1.1</version>
29+
<version>1.2.0</version>
3030
<name>oracle-r2dbc</name>
3131
<description>
3232
Oracle R2DBC Driver implementing version 1.0.0 of the R2DBC SPI for Oracle Database.
@@ -65,9 +65,9 @@
6565

6666
<properties>
6767
<java.version>11</java.version>
68-
<ojdbc.version>21.7.0.0</ojdbc.version>
68+
<ojdbc.version>21.11.0.0</ojdbc.version>
6969
<r2dbc.version>1.0.0.RELEASE</r2dbc.version>
70-
<reactor.version>3.5.0</reactor.version>
70+
<reactor.version>3.5.11</reactor.version>
7171
<reactive-streams.version>1.0.3</reactive-streams.version>
7272
<junit.version>5.9.1</junit.version>
7373
<spring-jdbc.version>5.3.19</spring-jdbc.version>

sample/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<modelVersion>4.0.0</modelVersion>
2626
<groupId>com.oracle.database.r2dbc</groupId>
2727
<artifactId>oracle-r2dbc-samples</artifactId>
28-
<version>0.2.0</version>
28+
<version>1.2.0</version>
2929
<name>oracle-r2dbc-samples</name>
3030
<description>
3131
Code examples for the Oracle R2DBC Driver
@@ -64,8 +64,8 @@
6464

6565
<properties>
6666
<java.version>11</java.version>
67-
<oracle-r2dbc.version>0.3.0</oracle-r2dbc.version>
68-
<reactor.version>3.3.0.RELEASE</reactor.version>
67+
<oracle-r2dbc.version>1.2.0</oracle-r2dbc.version>
68+
<reactor.version>3.5.11</reactor.version>
6969
</properties>
7070

7171
<build>

sample/src/main/java/oracle/r2dbc/samples/TcpsConnectDemo.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,17 @@
5050
* <dependency>
5151
* <groupId>com.oracle.database.security</groupId>
5252
* <artifactId>oraclepki</artifactId>
53-
* <version>21.1.0.0</version>
53+
* <version>21.11.0.0</version>
5454
* </dependency>
5555
* <dependency>
5656
* <groupId>com.oracle.database.security</groupId>
5757
* <artifactId>osdt_cert</artifactId>
58-
* <version>21.1.0.0</version>
58+
* <version>21.11.0.0</version>
5959
* </dependency>
6060
* <dependency>
6161
* <groupId>com.oracle.database.security</groupId>
6262
* <artifactId>osdt_core</artifactId>
63-
* <version>21.1.0.0</version>
63+
* <version>21.11.0.0</version>
6464
* </dependency>
6565
* </pre>
6666
*

0 commit comments

Comments
 (0)