public interface CloudSpannerJdbcConnection extends Connection
JdbcDriver
will implement this interface.
Calling Wrapper.unwrap(Class)
with CloudSpannerJdbcConnection
class as
input on a Connection
returned by the Cloud Spanner JDBC Driver will return a CloudSpannerJdbcConnection
instance.
TRANSACTION_NONE, TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE
Modifier and Type | Method and Description |
---|---|
void |
addTransactionRetryListener(com.google.cloud.spanner.connection.TransactionRetryListener listener) |
void |
addTransactionRetryListener(TransactionRetryListener listener)
Deprecated.
|
void |
bufferedWrite(Iterable<com.google.cloud.spanner.Mutation> mutations)
Buffers the given mutations locally on the current transaction of this
Connection . |
void |
bufferedWrite(com.google.cloud.spanner.Mutation mutation)
Buffers the given mutation locally on the current transaction of this
Connection . |
com.google.cloud.spanner.connection.AutocommitDmlMode |
getAutocommitDmlMode() |
com.google.cloud.spanner.CommitResponse |
getCommitResponse() |
Timestamp |
getCommitTimestamp() |
String |
getConnectionUrl() |
default com.google.cloud.spanner.Dialect |
getDialect() |
String |
getOptimizerVersion()
Gets the current query optimizer version of this connection.
|
com.google.cloud.spanner.TimestampBound |
getReadOnlyStaleness() |
Timestamp |
getReadTimestamp() |
com.google.cloud.spanner.connection.SavepointSupport |
getSavepointSupport()
Returns the current savepoint support for this connection.
|
default String |
getStatementTag() |
com.google.cloud.spanner.connection.TransactionMode |
getTransactionMode() |
Iterator<TransactionRetryListener> |
getTransactionRetryListeners()
Deprecated.
|
Iterator<com.google.cloud.spanner.connection.TransactionRetryListener> |
getTransactionRetryListenersFromConnection() |
default String |
getTransactionTag() |
boolean |
isInTransaction() |
boolean |
isRetryAbortsInternally() |
boolean |
isReturnCommitStats() |
boolean |
isTransactionStarted() |
boolean |
removeTransactionRetryListener(com.google.cloud.spanner.connection.TransactionRetryListener listener) |
boolean |
removeTransactionRetryListener(TransactionRetryListener listener)
Deprecated.
|
void |
setAutocommitDmlMode(com.google.cloud.spanner.connection.AutocommitDmlMode mode)
Sets the mode for executing DML statements in autocommit mode for this connection.
|
void |
setOptimizerVersion(String optimizerVersion)
Sets the query optimizer version to use for this connection.
|
void |
setReadOnlyStaleness(com.google.cloud.spanner.TimestampBound staleness)
Sets the staleness to use for the current read-only transaction.
|
void |
setRetryAbortsInternally(boolean retryAbortsInternally)
Sets whether this connection will internally retry read/write transactions that abort.
|
void |
setReturnCommitStats(boolean returnCommitStats)
Sets whether this connection should request commit statistics from Cloud Spanner for read/write
transactions and for DML statements in autocommit mode.
|
void |
setSavepointSupport(com.google.cloud.spanner.connection.SavepointSupport savepointSupport)
Sets how savepoints should be supported on this connection.
|
default void |
setStatementTag(String tag)
Sets the statement tag to use for the next statement that will be executed.
|
void |
setTransactionMode(com.google.cloud.spanner.connection.TransactionMode transactionMode)
Sets the transaction mode to use for current transaction.
|
default void |
setTransactionTag(String tag)
Sets the transaction tag to use for the current transaction.
|
void |
write(Iterable<com.google.cloud.spanner.Mutation> mutations)
Writes the specified mutations directly to the database and commits the changes.
|
void |
write(com.google.cloud.spanner.Mutation mutation)
Writes the specified mutation directly to the database and commits the change.
|
abort, clearWarnings, close, commit, createArrayOf, createBlob, createClob, createNClob, createSQLXML, createStatement, createStatement, createStatement, createStruct, getAutoCommit, getCatalog, getClientInfo, getClientInfo, getHoldability, getMetaData, getNetworkTimeout, getSchema, getTransactionIsolation, getTypeMap, getWarnings, isClosed, isReadOnly, isValid, nativeSQL, prepareCall, prepareCall, prepareCall, prepareStatement, prepareStatement, prepareStatement, prepareStatement, prepareStatement, prepareStatement, releaseSavepoint, rollback, rollback, setAutoCommit, setCatalog, setClientInfo, setClientInfo, setHoldability, setNetworkTimeout, setReadOnly, setSavepoint, setSavepoint, setSchema, setTransactionIsolation, setTypeMap
isWrapperFor, unwrap
default void setTransactionTag(String tag) throws SQLException
The tag will be set as the transaction tag of all statements during the transaction, and as the transaction tag of the commit.
The transaction tag will automatically be cleared after the transaction has ended.
tag
- The tag to use.SQLException
default String getTransactionTag() throws SQLException
SQLException
default void setStatementTag(String tag) throws SQLException
tag
- The statement tag to use with the next statement that will be executed on this
connection.SQLException
default String getStatementTag() throws SQLException
SQLException
void setTransactionMode(com.google.cloud.spanner.connection.TransactionMode transactionMode) throws SQLException
transactionMode
- The transaction mode to use for the current transaction.
TransactionMode.READ_ONLY_TRANSACTION
will create a read-only transaction and
prevent any changes to written to the database through this transaction. The read
timestamp to be used will be determined based on the current readOnlyStaleness
setting of this connection. It is recommended to use TransactionMode.READ_ONLY_TRANSACTION
instead of TransactionMode.READ_WRITE_TRANSACTION
when possible, as read-only transactions do
not acquire locks on Cloud Spanner, and read-only transactions never abort.
TransactionMode.READ_WRITE_TRANSACTION
this value is only allowed when the
connection is not in read-only mode and will create a read-write transaction. If
isRetryAbortsInternally()
is true
,
each read/write transaction will keep track of a running SHA256 checksum for each
ResultSet
that is returned in order to be able to retry the transaction in
case the transaction is aborted by Spanner.
SQLException
com.google.cloud.spanner.connection.TransactionMode getTransactionMode() throws SQLException
SQLException
void setAutocommitDmlMode(com.google.cloud.spanner.connection.AutocommitDmlMode mode) throws SQLException
AutocommitDmlMode.TRANSACTIONAL
when
autocommit mode is changed on the connection.mode
- The DML autocommit mode to use
AutocommitDmlMode.TRANSACTIONAL
DML statements are executed as single
read-write transaction. After successful execution, the DML statement is guaranteed
to have been applied exactly once to the database
AutocommitDmlMode.PARTITIONED_NON_ATOMIC
DML statements are executed as
partitioned DML transactions. If an error occurs during the execution of the DML
statement, it is possible that the statement has been applied to some but not all of
the rows specified in the statement.
SQLException
com.google.cloud.spanner.connection.AutocommitDmlMode getAutocommitDmlMode() throws SQLException
AutocommitDmlMode
setting for this connection. This method may only
be called on a connection that is in autocommit mode and not while in a temporary
transaction.SQLException
void setReadOnlyStaleness(com.google.cloud.spanner.TimestampBound staleness) throws SQLException
TransactionMode.READ_ONLY_TRANSACTION
and there is no transaction that has started, or when
the connection is in read-only and autocommit mode.staleness
- The staleness to use for the current but not yet started read-only transactionSQLException
com.google.cloud.spanner.TimestampBound getReadOnlyStaleness() throws SQLException
SQLException
void setOptimizerVersion(String optimizerVersion) throws SQLException
optimizerVersion
- The query optimizer version to use. Must be a valid optimizer version
number, the string LATEST
or an empty string. The empty string will instruct
the connection to use the optimizer version that is defined in the environment variable
SPANNER_OPTIMIZER_VERSION
. If no value is specified in the environment
variable, the default query optimizer of Cloud Spanner is used.SQLException
String getOptimizerVersion() throws SQLException
SQLException
boolean isInTransaction() throws SQLException
true
if this connection has a transaction (that has not necessarily
started). This method will only return false when the Connection
is in autocommit
mode and no explicit transaction has been started by executing `BEGIN TRANSACTION`. If the
Connection
is not in autocommit mode, there will always be a transaction.SQLException
boolean isTransactionStarted() throws SQLException
true
if this connection has a transaction that has started. A transaction
is automatically started by the first statement that is executed in the transaction.SQLException
Timestamp getCommitTimestamp() throws SQLException
Timestamp
of the last read/write transaction. If the last
transaction was not a read/write transaction, or a read/write transaction that did not
return a commit timestamp because the transaction was not committed, the method will throw
a SQLException
.SQLException
com.google.cloud.spanner.CommitResponse getCommitResponse() throws SQLException
CommitResponse
of the last read/write transaction. If the last transaction
was not a read/write transaction, or a read/write transaction that did not return a CommitResponse
because the transaction was not committed, the method will throw a SQLException
. The CommitResponse
will include CommitStats
if isReturnCommitStats()
returns true.SQLException
void setReturnCommitStats(boolean returnCommitStats) throws SQLException
SQLException
boolean isReturnCommitStats() throws SQLException
SQLException
Timestamp getReadTimestamp() throws SQLException
Timestamp
of the last read-only transaction. If the last transaction
was not a read-only transaction, or a read-only transaction that did not return a read
timestamp because no data was read, the method will throw a SQLException
.SQLException
boolean isRetryAbortsInternally() throws SQLException
true
if this connection will automatically retry read/write transactions
that abort. This method may only be called when the connection is in read/write
transactional mode and no transaction has been started yet.SQLException
void setRetryAbortsInternally(boolean retryAbortsInternally) throws SQLException
true
. When internal retry is enabled, the Connection
will keep
track of a running SHA256 checksum of all ResultSet
s that have been returned from Cloud
Spanner. If the checksum that is calculated during an internal retry differs from the original
checksum, the transaction will abort with an AbortedDueToConcurrentModificationException
.
Note that retries of a read/write transaction that calls a non-deterministic function on Cloud Spanner, such as CURRENT_TIMESTAMP(), will never be successful, as the data returned during the retry will always be different from the original transaction.
It is also highly recommended that all queries in a read/write transaction have an ORDER BY clause that guarantees that the data is returned in the same order as in the original transaction if the transaction is internally retried. The most efficient way to achieve this is to always include the primary key columns at the end of the ORDER BY clause.
This method may only be called when the connection is in read/write transactional mode and no transaction has been started yet.
retryAbortsInternally
- Set to true
to internally retry transactions that are
aborted by Spanner. When set to false
, any database call on a transaction that
has been aborted by Cloud Spanner will throw an AbortedException
instead of being
retried. Set this to false if your application already uses retry loops to handle AbortedException
s.SQLException
com.google.cloud.spanner.connection.SavepointSupport getSavepointSupport() throws SQLException
SQLException
void setSavepointSupport(com.google.cloud.spanner.connection.SavepointSupport savepointSupport) throws SQLException
SQLException
void write(com.google.cloud.spanner.Mutation mutation) throws SQLException
write(Iterable)
.
Calling this method is only allowed in autocommit mode. See bufferedWrite(Iterable)
for writing mutations in transactions.
mutation
- The Mutation
to write to the database.SQLException
- if the Connection
is not in autocommit mode or if the Connection
is closed.void write(Iterable<com.google.cloud.spanner.Mutation> mutations) throws SQLException
Calling this method is only allowed in autocommit mode. See bufferedWrite(Iterable)
for writing mutations in transactions.
mutations
- The Mutation
s to write to the database.SQLException
- if the Connection
is not in autocommit mode or if the Connection
is closed.void bufferedWrite(com.google.cloud.spanner.Mutation mutation) throws SQLException
Connection
. The
mutation will be written to the database at the next call to Connection.commit()
. The
value will not be readable on this Connection
before the transaction is committed.
Calling this method is only allowed when not in autocommit mode. See write(Mutation)
for writing mutations in autocommit mode.
mutation
- the Mutation
to buffer for writing to the database on the next commit.SQLException
- if the Connection
is in autocommit mode or the Connection
is closed.void bufferedWrite(Iterable<com.google.cloud.spanner.Mutation> mutations) throws SQLException
Connection
. The
mutations will be written to the database at the next call to Connection.commit()
. The
values will not be readable on this Connection
before the transaction is committed.
Calling this method is only allowed when not in autocommit mode. See write(Iterable)
for writing mutations in autocommit mode.
mutations
- the Mutation
s to buffer for writing to the database on the next
commit.SQLException
- if the Connection
is in autocommit mode or the Connection
is closed.String getConnectionUrl()
Connection
that is equal to
the initial state of this connection. If this connection was initially opened in read-only
mode, and later changed to read-write, this will not be reflected in the connection URL
that is returned.default com.google.cloud.spanner.Dialect getDialect()
Dialect
that is used by this connection.void addTransactionRetryListener(com.google.cloud.spanner.connection.TransactionRetryListener listener) throws SQLException
SQLException
- if the Connection
is closed.Connection.addTransactionRetryListener(com.google.cloud.spanner.connection.TransactionRetryListener)
@Deprecated void addTransactionRetryListener(TransactionRetryListener listener) throws SQLException
addTransactionRetryListener(com.google.cloud.spanner.connection.TransactionRetryListener)
instead.SQLException
boolean removeTransactionRetryListener(com.google.cloud.spanner.connection.TransactionRetryListener listener) throws SQLException
SQLException
- if the Connection
is closed.Connection.removeTransactionRetryListener(com.google.cloud.spanner.connection.TransactionRetryListener)
@Deprecated boolean removeTransactionRetryListener(TransactionRetryListener listener) throws SQLException
removeTransactionRetryListener(com.google.cloud.spanner.connection.TransactionRetryListener)
instead.SQLException
@Deprecated Iterator<TransactionRetryListener> getTransactionRetryListeners() throws SQLException
getTransactionRetryListenersFromConnection()
instead.SQLException
Iterator<com.google.cloud.spanner.connection.TransactionRetryListener> getTransactionRetryListenersFromConnection() throws SQLException
SQLException
- if the Connection
is closed.Connection.getTransactionRetryListeners()
Copyright © 2023 Google LLC. All rights reserved.