Skip to main content

StatementHandle

Struct StatementHandle 

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

Tracks one submitted query. Keep the handle to inspect progress, wait for results, or request cancellation.

OperationMethod
Read the last observed status without a requestSelf::snapshot
Fetch the current statusSelf::refresh
Wait for resultsSelf::wait
Request cancellationSelf::cancel

Dropping a wait or refresh future stops local waiting without cancelling execution. Terminal statuses are cached, so waiting again returns the result without another request. Retry temporary read failures on this handle rather than submitting another query.

Implementations§

Source§

impl StatementHandle

Source

pub fn statement_id(&self) -> Uuid

Examples found in repository?
examples/statement.rs (line 28)
18async fn main() -> Result<(), Box<dyn std::error::Error>> {
19    let client = common::client()?;
20
21    let result = client.query("SELECT 1 AS ready").await?;
22    let rows = result.into_objects()?;
23    println!("rows: {rows:?}");
24
25    // Keep the handle when an application needs progress, cancellation, or a
26    // durable statement ID before waiting for the result.
27    let mut handle = client.statement("SELECT 2 AS value").submit().await?;
28    let statement_id = handle.statement_id();
29    println!(
30        "statement {statement_id} submitted: {:?}",
31        handle.snapshot()
32    );
33    let status = handle.refresh().await?;
34    println!("statement {statement_id}: {status:?}");
35    let result = handle.wait().await?;
36    println!("handle rows: {:?}", result.into_objects()?);
37    Ok(())
38}
Source

pub fn snapshot(&self) -> Option<&StatementStatus>

Returns the status snapshot received by the most recent request without making a network request.

Examples found in repository?
examples/statement.rs (line 31)
18async fn main() -> Result<(), Box<dyn std::error::Error>> {
19    let client = common::client()?;
20
21    let result = client.query("SELECT 1 AS ready").await?;
22    let rows = result.into_objects()?;
23    println!("rows: {rows:?}");
24
25    // Keep the handle when an application needs progress, cancellation, or a
26    // durable statement ID before waiting for the result.
27    let mut handle = client.statement("SELECT 2 AS value").submit().await?;
28    let statement_id = handle.statement_id();
29    println!(
30        "statement {statement_id} submitted: {:?}",
31        handle.snapshot()
32    );
33    let status = handle.refresh().await?;
34    println!("statement {statement_id}: {status:?}");
35    let result = handle.wait().await?;
36    println!("handle rows: {:?}", result.into_objects()?);
37    Ok(())
38}
Source

pub async fn refresh(&mut self) -> Result<&StatementStatus, Error>

Fetches a status snapshot, or returns the cached terminal state. Requests on a handle are serialized through its mutable borrow.

Examples found in repository?
examples/statement.rs (line 33)
18async fn main() -> Result<(), Box<dyn std::error::Error>> {
19    let client = common::client()?;
20
21    let result = client.query("SELECT 1 AS ready").await?;
22    let rows = result.into_objects()?;
23    println!("rows: {rows:?}");
24
25    // Keep the handle when an application needs progress, cancellation, or a
26    // durable statement ID before waiting for the result.
27    let mut handle = client.statement("SELECT 2 AS value").submit().await?;
28    let statement_id = handle.statement_id();
29    println!(
30        "statement {statement_id} submitted: {:?}",
31        handle.snapshot()
32    );
33    let status = handle.refresh().await?;
34    println!("statement {statement_id}: {status:?}");
35    let result = handle.wait().await?;
36    println!("handle rows: {:?}", result.into_objects()?);
37    Ok(())
38}
Source

pub async fn wait(&mut self) -> Result<ResultSet, Error>

Waits for the statement to terminate and returns its result set. Dropping this future leaves the handle and server execution available.

Examples found in repository?
examples/statement.rs (line 35)
18async fn main() -> Result<(), Box<dyn std::error::Error>> {
19    let client = common::client()?;
20
21    let result = client.query("SELECT 1 AS ready").await?;
22    let rows = result.into_objects()?;
23    println!("rows: {rows:?}");
24
25    // Keep the handle when an application needs progress, cancellation, or a
26    // durable statement ID before waiting for the result.
27    let mut handle = client.statement("SELECT 2 AS value").submit().await?;
28    let statement_id = handle.statement_id();
29    println!(
30        "statement {statement_id} submitted: {:?}",
31        handle.snapshot()
32    );
33    let status = handle.refresh().await?;
34    println!("statement {statement_id}: {status:?}");
35    let result = handle.wait().await?;
36    println!("handle rows: {:?}", result.into_objects()?);
37    Ok(())
38}
Source

pub async fn cancel(&mut self) -> Result<StatementStatus, Error>

Requests cancellation and caches the observed status. Pending or Running means cancellation has not yet been observed; call wait() to settle it. A completion race returns the full result or original execution failure.

Trait Implementations§

Source§

impl Debug for StatementHandle

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + 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: Sized + 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<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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<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