Skip to content

Commit 33dcb8c

Browse files
Update README.md
Updating the README to specify how descriptor style URLs are supported, and to specify the SQL commands that are supported when returning generated values.
1 parent 0448f2f commit 33dcb8c

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

README.md

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,10 @@ Options. For Options having any of the following names, a CharSequence value may
157157
- [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)
158158
- [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)
159159
- [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)
160+
- Descriptor URLs of the form ```(DESCRIPTION=...)``` may be specified in a tnsnames.ora file.
161+
- The directory containing the tnsnames.ora file may be specified as an ```Option``` having the name "TNS_ADMIN"
162+
- An alias of a tnsnames.ora file may be specified as the value of ```ConnectionFactoryOptions.HOST```.
163+
- An alias of a tnsnames.ora file may be specified with an R2DBC URL: ```r2dbc:oracle://my_alias?TNS_ADMIN=/path/to/tnsnames/```
160164

161165

162166
### Thread Safety and Parallel Execution
@@ -195,15 +199,25 @@ be used when setting the bind value of an unnamed parameter.
195199
colon character (:) is followed by an alphanumeric parameter name. A name
196200
or numeric index may be used when setting the bind value of a named parameter.
197201
- Parameter names are case-sensitive.
198-
- The [ROWID](https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/tables-and-table-clusters.html#GUID-0258C4C2-2BF2-445F-B1E1-F282A57A6859)
199-
of each row affected by an INSERT or UPDATE is returned as the generated value
200-
for the empty set of column names.
202+
- When an empty set of column names is specified to Statement.returnGeneratedValues(String...), the returned value is the [ROWID](https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/tables-and-table-clusters.html#GUID-0258C4C2-2BF2-445F-B1E1-F282A57A6859)
203+
of each row affected by an INSERT or UPDATE.
204+
- This behavior may change in a later release.
205+
- Programmers are advised not to use the ROWID as if it were a primary key.
206+
- The ROWID of a row may change.
207+
- After a row is deleted, it's ROWID may be reassigned to a new row.
208+
- Further Reading: https://asktom.oracle.com/pls/apex/asktom.search?tag=is-it-safe-to-use-rowid-to-locate-a-row
201209
- A **blocking database call** is executed by a Statement returning generated
202210
values for a non-empty set of column names.
203211
- The **blocking database call** is a known limitation that will be resolved
204212
with a non-blocking implementation of
205213
java.sql.Connection.prepareStatement(String, String[]) in the Oracle JDBC Driver.
206214
The Oracle JDBC Team is aware of this problem and is working on a fix.
215+
- Returning generated values is only supported for INSERT and UPDATE commands when a RETURNING INTO clause can be appended to the end of that command. (This limitation may be resolved in a later release)
216+
- Example: `INSERT INTO my_table(val) VALUES (:val)` is supported because a RETURNING INTO clause may be appended to this command.
217+
- Example: `INSERT INTO my_table(val) SELECT 1 FROM sys.dual` is not supported because a RETURNING INTO clause may not be appended to this command.
218+
- The Oracle Database SQL Language Reference defines INSERT and UPDATE commands for which a RETURNING INTO clause is supported.
219+
- INSERT: https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/INSERT.html#GUID-903F8043-0254-4EE9-ACC1-CB8AC0AF3423
220+
- UPDATE: https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/UPDATE.html#GUID-027A462D-379D-4E35-8611-410F3AC8FDA5
207221

208222
### Type Mappings
209223
- Blob and Clob objects are the default mapping implemented by Row.get(...) for

0 commit comments

Comments
 (0)