Struct Statement

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

named prepared postgres statement without information of which Client it belongs to and lifetime cycle management

this type is used as entry point for other statement types like StatementGuarded and StatementUnnamed. itself is rarely directly used and main direct usage is for statement caching where owner of it is tasked with manual management of it’s association and lifetime

Implementations§

Source§

impl Statement

Source

pub const fn named<'a>(stmt: &'a str, types: &'a [Type]) -> StatementNamed<'a>

construct a new named statement. must be called with Execute::execute method for making a prepared statement.

Source

pub const fn unnamed<'a>( stmt: &'a str, types: &'a [Type], ) -> StatementUnnamed<'a>

construct a new unnamed statement. unnamed statement can bind to it’s parameter values without being prepared by database.

Source

pub fn bind<P>(&self, params: P) -> StatementQuery<'_, P>
where P: AsParams,

bind self to typed value parameters where they are encoded into a valid sql query in binary format

§Examples
// prepare a statement with typed parameters.
let stmt = Statement::named("SELECT * FROM users WHERE id = $1 AND age = $2", &[Type::INT4, Type::INT4])
    .execute(&cli).await?;
// bind statement to typed value parameters and start query
let row_stream = stmt.bind([9527_i32, 18]).query(&cli).await?;
Source

pub fn bind_dyn<'p, 't>( &self, params: &'p [&'t (dyn ToSql + Sync)], ) -> StatementQuery<'_, impl ExactSizeIterator<Item = &'t (dyn ToSql + Sync)> + 'p>

Statement::bind for dynamic typed parameters

§Examples
// bind to a dynamic typed slice where items have it's own concrete type.
let bind = statement.bind_dyn(&[&9527i32, &"nobody"]);
Source

pub fn params(&self) -> &[Type]

Returns the expected types of the statement’s parameters.

Source

pub fn columns(&self) -> &[Column]

Returns information about the columns returned when the statement is queried.

Source

pub fn into_guarded<C>(self, cli: &C) -> StatementGuarded<'_, C>
where C: Query,

Convert self to a drop guarded statement which would cancel on drop.

Trait Implementations§

Source§

impl<C> AsRef<Statement> for StatementGuarded<'_, C>
where C: Query,

Source§

fn as_ref(&self) -> &Statement

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Default for Statement

Source§

fn default() -> Statement

Returns the “default value” for a type. Read more
Source§

impl<'s> Encode for &'s Statement

Source§

type Output = &'s [Column]

output type defines how a potential async row streaming type should be constructed. certain state from the encode type may need to be passed for constructing the stream
Source§

fn encode<const SYNC_MODE: bool>( self, buf: &mut BytesMut, ) -> Result<Self::Output, Error>

Source§

impl<'s, C> Execute<'_, C> for &'s Statement
where C: Query,

Source§

type ExecuteOutput = ResultFuture<RowAffected>

outcome of execute. used for single time database response: number of rows affected by execution for example.
Source§

type QueryOutput = Ready<Result<GenericRowStream<&'s [Column], Typed>, Error>>

outcome of query. used for repeated database response: database rows for example Read more
Source§

fn execute(self, cli: &C) -> Self::ExecuteOutput

define how a statement is executed with single time response
Source§

fn query(self, cli: &C) -> Self::QueryOutput

define how a statement is queried with repeated response
Source§

impl<'s, C> ExecuteBlocking<'_, C> for &'s Statement
where C: Query,

Source§

type ExecuteOutput = Result<u64, Error>

Source§

type QueryOutput = Result<GenericRowStream<&'s [Column], Typed>, Error>

Source§

fn execute_blocking(self, cli: &C) -> Self::ExecuteOutput

Source§

fn query_blocking(self, cli: &C) -> Self::QueryOutput

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, 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> Same for T

Source§

type Output = T

Should always be Self
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