pub struct WriteOnlyTransactionBuilder { /* private fields */ }Expand description
A builder for WriteOnlyTransaction.
Implementations§
Source§impl WriteOnlyTransactionBuilder
impl WriteOnlyTransactionBuilder
Sourcepub fn set_transaction_tag(self, tag: impl Into<String>) -> Self
pub fn set_transaction_tag(self, tag: impl Into<String>) -> Self
Sets a transaction tag to be used for the transaction.
§Example
let db_client = spanner.database_client("projects/p/instances/i/databases/d").build().await?;
let transaction = db_client.write_only_transaction()
.set_transaction_tag("my-tag")
.build();See also: Troubleshooting with tags
Sourcepub fn set_commit_priority(self, priority: Priority) -> Self
pub fn set_commit_priority(self, priority: Priority) -> Self
Sets the RPC priority to use for the commit of this transaction.
§Example
let db_client = spanner.database_client("projects/p/instances/i/databases/d").build().await?;
let transaction = db_client.write_only_transaction()
.set_commit_priority(Priority::Low)
.build();Sourcepub fn set_max_commit_delay(self, delay: Duration) -> Self
pub fn set_max_commit_delay(self, delay: Duration) -> Self
Sets the maximum commit delay for the transaction.
§Example
let db_client = spanner.database_client("projects/p/instances/i/databases/d").build().await?;
let transaction = db_client.write_only_transaction()
.set_max_commit_delay(Duration::try_from("0.1s").unwrap())
.build();This option allows you to specify the maximum amount of time Spanner can adjust the commit timestamp of the transaction to allow for commit batching. Increasing this value can increase throughput at the expense of latency. The value must be between 0 and 500 milliseconds. If not set, or set to 0, Spanner does not delay the commit.
Sourcepub fn set_exclude_txn_from_change_streams(self, exclude: bool) -> Self
pub fn set_exclude_txn_from_change_streams(self, exclude: bool) -> Self
Sets whether to exclude the transaction from change streams.
§Example
let db_client = spanner.database_client("projects/p/instances/i/databases/d").build().await?;
let transaction = db_client.write_only_transaction()
.set_exclude_txn_from_change_streams(true)
.build();When set to true, it prevents modifications from this transaction from being tracked in change streams.
Note that this only affects change streams that have been created with the DDL option allow_txn_exclusion = true.
If allow_txn_exclusion is not set or set to false for a change stream, updates made within this transaction
are recorded in that change stream regardless of this setting.
When set to false or not specified, modifications from this transaction are recorded in all change streams
tracking columns modified by this transaction.
Sourcepub fn set_return_commit_stats(self, return_stats: bool) -> Self
pub fn set_return_commit_stats(self, return_stats: bool) -> Self
Sets whether to return commit stats for the transaction.
§Example
let mutation = Mutation::new_insert_builder("Users")
.set("UserId").to(&1)
.build();
let response = db.write_only_transaction()
.set_return_commit_stats(true)
.build()
.write(vec![mutation])
.await?;
if let Some(stats) = response.commit_stats {
println!("Mutation count: {}", stats.mutation_count);
}See also: https://docs.cloud.google.com/spanner/docs/commit-statistics
Sourcepub fn with_retry_policy<P: TransactionRetryPolicy + 'static>(
self,
policy: P,
) -> Self
pub fn with_retry_policy<P: TransactionRetryPolicy + 'static>( self, policy: P, ) -> Self
Sets the retry policy for the transaction.
§Example
let db_client = spanner.database_client("projects/p/instances/i/databases/d").build().await?;
let retry_policy = BasicTransactionRetryPolicy::new()
.with_max_attempts(5)
.with_total_timeout(Duration::from_secs(60));
let transaction = db_client.write_only_transaction()
.with_retry_policy(retry_policy)
.build();The client will retry the transaction if it is aborted by Spanner. This policy can be used to customize whether a transaction should be retried or not. The default is to retry indefinitely until the transaction succeeds.
Sourcepub fn with_begin_attempt_timeout(self, timeout: Duration) -> Self
pub fn with_begin_attempt_timeout(self, timeout: Duration) -> Self
Sets the per-attempt timeout for the BeginTransaction RPC.
§Example
let db_client = spanner.database_client("projects/p/instances/i/databases/d").build().await?;
let transaction = db_client.write_only_transaction()
.with_begin_attempt_timeout(Duration::from_secs(5))
.build();Sourcepub fn with_begin_retry_policy(self, policy: impl Into<RetryPolicyArg>) -> Self
pub fn with_begin_retry_policy(self, policy: impl Into<RetryPolicyArg>) -> Self
Sets the retry policy for the BeginTransaction RPC.
§Example
let db_client = spanner.database_client("projects/p/instances/i/databases/d").build().await?;
let transaction = db_client.write_only_transaction()
.with_begin_retry_policy(NeverRetry)
.build();Sourcepub fn with_begin_backoff_policy(
self,
policy: impl Into<BackoffPolicyArg>,
) -> Self
pub fn with_begin_backoff_policy( self, policy: impl Into<BackoffPolicyArg>, ) -> Self
Sets the backoff policy for the BeginTransaction RPC.
§Example
let db_client = spanner.database_client("projects/p/instances/i/databases/d").build().await?;
let transaction = db_client.write_only_transaction()
.with_begin_backoff_policy(ExponentialBackoff::default())
.build();Sourcepub fn with_commit_attempt_timeout(self, timeout: Duration) -> Self
pub fn with_commit_attempt_timeout(self, timeout: Duration) -> Self
Sets the per-attempt timeout for the Commit RPC.
§Example
let db_client = spanner.database_client("projects/p/instances/i/databases/d").build().await?;
let transaction = db_client.write_only_transaction()
.with_commit_attempt_timeout(Duration::from_secs(5))
.build();Sourcepub fn with_commit_retry_policy(self, policy: impl Into<RetryPolicyArg>) -> Self
pub fn with_commit_retry_policy(self, policy: impl Into<RetryPolicyArg>) -> Self
Sets the retry policy for the Commit RPC.
§Example
let db_client = spanner.database_client("projects/p/instances/i/databases/d").build().await?;
let transaction = db_client.write_only_transaction()
.with_commit_retry_policy(NeverRetry)
.build();Sourcepub fn with_commit_backoff_policy(
self,
policy: impl Into<BackoffPolicyArg>,
) -> Self
pub fn with_commit_backoff_policy( self, policy: impl Into<BackoffPolicyArg>, ) -> Self
Sets the backoff policy for the Commit RPC.
§Example
let db_client = spanner.database_client("projects/p/instances/i/databases/d").build().await?;
let transaction = db_client.write_only_transaction()
.with_commit_backoff_policy(ExponentialBackoff::default())
.build();Sourcepub fn build(self) -> WriteOnlyTransaction
pub fn build(self) -> WriteOnlyTransaction
Builds the WriteOnlyTransaction.
§Example
let db_client = spanner.database_client("projects/p/instances/i/databases/d").build().await?;
let transaction = db_client.write_only_transaction().build();Auto Trait Implementations§
impl !RefUnwindSafe for WriteOnlyTransactionBuilder
impl !UnwindSafe for WriteOnlyTransactionBuilder
impl Freeze for WriteOnlyTransactionBuilder
impl Send for WriteOnlyTransactionBuilder
impl Sync for WriteOnlyTransactionBuilder
impl Unpin for WriteOnlyTransactionBuilder
impl UnsafeUnpin for WriteOnlyTransactionBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request