BatchReadOnlyTransaction

Struct BatchReadOnlyTransaction 

Source
pub struct BatchReadOnlyTransaction { /* private fields */ }
Expand description

BatchReadOnlyTransaction is a ReadOnlyTransaction that allows for exporting arbitrarily large amounts of data from Cloud Spanner databases. BatchReadOnlyTransaction partitions a read/query request. Read/query request can then be executed independently over each partition while observing the same snapshot of the database.

Implementations§

Source§

impl BatchReadOnlyTransaction

Source

pub async fn begin( session: ManagedSession, tb: TimestampBound, options: CallOptions, ) -> Result<BatchReadOnlyTransaction, Status>

Source

pub async fn partition_read( &mut self, table: &str, columns: &[&str], keys: impl Into<KeySet> + Clone, ) -> Result<Vec<Partition<TableReader>>, Status>

partition_read returns a list of Partitions that can be used to read rows from the database. These partitions can be executed across multiple processes, even across different machines. The partition size and count hints can be configured using PartitionOptions.

Source

pub async fn partition_read_with_option( &mut self, table: &str, columns: &[&str], keys: impl Into<KeySet> + Clone, po: Option<PartitionOptions>, ro: ReadOptions, data_boost_enabled: bool, directed_read_options: Option<DirectedReadOptions>, ) -> Result<Vec<Partition<TableReader>>, Status>

partition_read returns a list of Partitions that can be used to read rows from the database. These partitions can be executed across multiple processes, even across different machines. The partition size and count hints can be configured using PartitionOptions.

Source

pub async fn partition_query( &mut self, stmt: Statement, ) -> Result<Vec<Partition<StatementReader>>, Status>

partition_query returns a list of Partitions that can be used to execute a query against the database.

Source

pub async fn partition_query_with_option( &mut self, stmt: Statement, po: Option<PartitionOptions>, qo: QueryOptions, data_boost_enabled: bool, directed_read_options: Option<DirectedReadOptions>, ) -> Result<Vec<Partition<StatementReader>>, Status>

partition_query returns a list of Partitions that can be used to execute a query against the database.

Source

pub async fn execute<T: Reader + Sync + Send + 'static>( &mut self, partition: Partition<T>, option: Option<CallOptions>, ) -> Result<RowIterator<'_, T>, Status>

execute runs a single Partition obtained from partition_read or partition_query.

Methods from Deref<Target = Transaction>§

Source

pub async fn query( &mut self, statement: Statement, ) -> Result<RowIterator<'_, impl Reader>, Status>

query executes a query against the database. It returns a RowIterator for retrieving the resulting rows.

query returns only row data, without a query plan or execution statistics.

Source

pub async fn query_with_option( &mut self, statement: Statement, options: QueryOptions, ) -> Result<RowIterator<'_, impl Reader>, Status>

query executes a query against the database. It returns a RowIterator for retrieving the resulting rows.

query returns only row data, without a query plan or execution statistics.

Source

pub async fn read( &mut self, table: &str, columns: &[&str], key_set: impl Into<KeySet>, ) -> Result<RowIterator<'_, impl Reader>, Status>

read returns a RowIterator for reading multiple rows from the database.

use google_cloud_spanner::key::Key;
use google_cloud_spanner::client::{Client, Error};

#[tokio::main]
async fn run(client: Client) -> Result<(), Error> {
    let mut tx = client.single().await?;
    let mut iter = tx.read("Guild", &["GuildID", "OwnerUserID"], vec![
        Key::new(&"pk1"),
        Key::new(&"pk2")
    ]).await?;

    while let Some(row) = iter.next().await? {
        let guild_id = row.column_by_name::<String>("GuildID");
        //do something
    };
    Ok(())
}
Source

pub async fn read_with_option( &mut self, table: &str, columns: &[&str], key_set: impl Into<KeySet>, options: ReadOptions, ) -> Result<RowIterator<'_, impl Reader>, Status>

read returns a RowIterator for reading multiple rows from the database.

Source

pub async fn read_row( &mut self, table: &str, columns: &[&str], key: Key, ) -> Result<Option<Row>, Status>

read returns a RowIterator for reading multiple rows from the database.

use google_cloud_spanner::key::Key;
use google_cloud_spanner::client::Client;
use google_cloud_spanner::client::Error;

async fn run(client: Client) -> Result<(), Error> {
    let mut tx = client.single().await?;
    let row = tx.read_row("Guild", &["GuildID", "OwnerUserID"], Key::new(&"guild1")).await?;
    Ok(())
}
Source

pub async fn read_row_with_option( &mut self, table: &str, columns: &[&str], key: Key, options: ReadOptions, ) -> Result<Option<Row>, Status>

read returns a RowIterator for reading multiple rows from the database.

Trait Implementations§

Source§

impl Deref for BatchReadOnlyTransaction

Source§

type Target = ReadOnlyTransaction

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl DerefMut for BatchReadOnlyTransaction

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more