pub struct BatchReadOnlyTransaction { /* private fields */ }Expand description
A read-only transaction that can be used to partition reads and queries and execute these in parallel across multiple workers.
§Example
let db_client = spanner.database_client("projects/p/instances/i/databases/d").build().await?;
let transaction = db_client.batch_read_only_transaction().build().await?;
let stmt = Statement::builder("SELECT * FROM users WHERE id = @id")
.add_param("id", &42)
.build();
let options = PartitionOptions::default()
.set_max_partitions(10);
let partitions = transaction.partition_query(stmt, options).await?;
// partitions can be sent to other workers for parallel executionImplementations§
Source§impl BatchReadOnlyTransaction
impl BatchReadOnlyTransaction
Sourcepub fn read_timestamp(&self) -> Option<Timestamp>
pub fn read_timestamp(&self) -> Option<Timestamp>
Returns the read timestamp chosen for the transaction.
Sourcepub async fn partition_query<T: Into<Statement>>(
&self,
statement: T,
options: PartitionOptions,
) -> Result<Vec<Partition>>
pub async fn partition_query<T: Into<Statement>>( &self, statement: T, options: PartitionOptions, ) -> Result<Vec<Partition>>
Creates a set of partitions that can be used to execute a query in parallel.
§Example
let db = spanner.database_client("projects/p/instances/i/databases/d").build().await?;
let transaction = db.batch_read_only_transaction().build().await?;
let stmt = Statement::builder("SELECT * FROM users WHERE id = @id")
.add_param("id", &42)
.build();
let options = PartitionOptions::default()
.set_max_partitions(10);
let partitions = transaction.partition_query(stmt, options).await?;Sourcepub async fn partition_read<T: Into<ReadRequest>>(
&self,
read: T,
options: PartitionOptions,
) -> Result<Vec<Partition>>
pub async fn partition_read<T: Into<ReadRequest>>( &self, read: T, options: PartitionOptions, ) -> Result<Vec<Partition>>
Creates a set of partitions that can be used to execute a read in parallel.
§Example
let db = spanner.database_client("projects/p/instances/i/databases/d").build().await?;
let transaction = db.batch_read_only_transaction().build().await?;
let read = ReadRequest::builder("users", vec!["id".to_string(), "name".to_string()])
.with_keys(KeySet::all())
.build();
let options = PartitionOptions::default()
.set_max_partitions(10);
let partitions = transaction.partition_read(read, options).await?;Trait Implementations§
Auto Trait Implementations§
impl !Freeze for BatchReadOnlyTransaction
impl !RefUnwindSafe for BatchReadOnlyTransaction
impl !UnwindSafe for BatchReadOnlyTransaction
impl Send for BatchReadOnlyTransaction
impl Sync for BatchReadOnlyTransaction
impl Unpin for BatchReadOnlyTransaction
impl UnsafeUnpin for BatchReadOnlyTransaction
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
Mutably borrows from an owned value. Read more
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>
Wrap the input message
T in a tonic::Request