StatementCache

Struct StatementCache 

Source
pub struct StatementCache<DB: Backend, Statement> { /* private fields */ }
Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Expand description

A prepared statement cache

Implementations§

Source§

impl<DB, Statement> StatementCache<DB, Statement>
where DB: Backend + 'static, Statement: Send + 'static, DB::TypeMetadata: Send + Clone, DB::QueryBuilder: Default, StatementCacheKey<DB>: Hash + Eq,

Source

pub fn new() -> Self

Create a new prepared statement cache using CacheSize::Unbounded as caching strategy.

Source

pub fn set_cache_size(&mut self, size: CacheSize)

Set caching strategy from predefined implementations

Source

pub fn cached_statement<'a, T, R, C>( &'a mut self, source: &T, backend: &DB, bind_types: &[DB::TypeMetadata], conn: C, prepare_fn: fn(C, &str, PrepareForCache, &[DB::TypeMetadata]) -> R, instrumentation: &mut dyn Instrumentation, ) -> R::Return<'a>
where T: QueryFragment<DB> + QueryId, R: StatementCallbackReturnType<Statement, C> + 'a,

Available on crate features i-implement-a-third-party-backend-and-opt-into-breaking-changes or sqlite or mysql only.

Prepare a query as prepared statement

This functions returns a prepared statement corresponding to the query passed as source with the bind values passed as bind_types. If the query is already cached inside this prepared statement cache the cached prepared statement will be returned, otherwise prepare_fn will be called to create a new prepared statement for this query source. The first parameter of the callback contains the query string, the second parameter indicates if the constructed prepared statement will be cached or not. See the module documentation for details about which statements are cached and which are not cached.

Source

pub fn cached_statement_non_generic<'a, R, C>( &'a mut self, maybe_type_id: Option<TypeId>, source: &dyn QueryFragmentForCachedStatement<DB>, backend: &DB, bind_types: &[DB::TypeMetadata], conn: C, prepare_fn: fn(C, &str, PrepareForCache, &[DB::TypeMetadata]) -> R, instrumentation: &mut dyn Instrumentation, ) -> R::Return<'a>
where R: StatementCallbackReturnType<Statement, C> + 'a,

Prepare a query as prepared statement

This function closely mirrors Self::cached_statement but eliminates the generic query type in favour of a trait object

This can be easier to use in situations where you already turned the query type into a concrete SQL string

Auto Trait Implementations§

§

impl<DB, Statement> Freeze for StatementCache<DB, Statement>

§

impl<DB, Statement> !RefUnwindSafe for StatementCache<DB, Statement>

§

impl<DB, Statement> Send for StatementCache<DB, Statement>

§

impl<DB, Statement> !Sync for StatementCache<DB, Statement>

§

impl<DB, Statement> Unpin for StatementCache<DB, Statement>

§

impl<DB, Statement> !UnwindSafe for StatementCache<DB, Statement>

Blanket Implementations§

Source§

impl<T> AggregateExpressionMethods for T

Source§

fn aggregate_distinct(self) -> AggregateDistinct<Self>
where Self: DistinctDsl,

DISTINCT modifier for aggregate functions Read more
Source§

fn aggregate_all(self) -> AggregateAll<Self>
where Self: AllDsl,

ALL modifier for aggregate functions Read more
Source§

fn aggregate_filter<P>(self, f: P) -> AggregateFilter<Self, P>
where P: AsExpression<Bool>, Self: FilterDsl<P::Expression>,

Add an aggregate function filter Read more
Source§

fn aggregate_order<O>(self, o: O) -> AggregateOrder<Self, O>
where Self: OrderAggregateDsl<O>,

Add an aggregate function order Read more
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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
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> IntoSql for T

Source§

fn into_sql<T>(self) -> AsExprOf<Self, T>

Convert self to an expression for Diesel’s query builder. Read more
Source§

fn as_sql<'a, T>(&'a self) -> AsExprOf<&'a Self, T>
where &'a Self: AsExpression<T>, T: SqlType + TypedExpressionType,

Convert &self to an expression for Diesel’s query builder. Read more
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<T> WindowExpressionMethods for T

Source§

fn over(self) -> Over<Self>
where Self: OverDsl,

Turn a function call into a window function call Read more
Source§

fn window_filter<P>(self, f: P) -> WindowFilter<Self, P>
where P: AsExpression<Bool>, Self: FilterDsl<P::Expression>,

Add a filter to the current window function Read more
Source§

fn partition_by<E>(self, expr: E) -> PartitionBy<Self, E>
where Self: PartitionByDsl<E>,

Add a partition clause to the current window function Read more
Source§

fn window_order<E>(self, expr: E) -> WindowOrder<Self, E>
where Self: OrderWindowDsl<E>,

Add a order clause to the current window function Read more
Source§

fn frame_by<E>(self, expr: E) -> FrameBy<Self, E>
where Self: FrameDsl<E>,

Add a frame clause to the current window function Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,