[][src]Trait diesel::query_builder::QueryFragment

pub trait QueryFragment<DB: Backend> {
    fn walk_ast(&self, pass: AstPass<DB>) -> QueryResult<()>;

    fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()> { ... }
fn collect_binds(
        &self,
        out: &mut DB::BindCollector,
        metadata_lookup: &DB::MetadataLookup
    ) -> QueryResult<()> { ... }
fn is_safe_to_cache_prepared(&self) -> QueryResult<bool> { ... } }

An untyped fragment of SQL.

This may be a complete SQL command (such as an update statement without a RETURNING clause), or a subsection (such as our internal types used to represent a WHERE clause). Implementations of ExecuteDsl and LoadQuery will generally require that this trait be implemented.

Required methods

fn walk_ast(&self, pass: AstPass<DB>) -> QueryResult<()>

Walk over this QueryFragment for all passes.

This method is where the actual behavior of an AST node is implemented. This method will contain the behavior required for all possible AST passes. See AstPass for more details.

Loading content...

Provided methods

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>

Converts this QueryFragment to its SQL representation.

This method should only be called by implementations of Connection.

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>

Serializes all bind parameters in this query.

A bind parameter is a value which is sent separately from the query itself. It is represented in SQL with a placeholder such as ? or $1.

This method should only be called by implementations of Connection.

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>

Is this query safe to store in the prepared statement cache?

In order to keep our prepared statement cache at a reasonable size, we avoid caching any queries which represent a potentially unbounded number of SQL queries. Generally this will only return true for queries for which to_sql will always construct exactly identical SQL.

Some examples of where this method will return false are:

  • SqlLiteral (We don't know if the SQL was constructed dynamically, so we must assume that it was)
  • In and NotIn (Each value requires a separate bind param placeholder)

This method should only be called by implementations of Connection.

Loading content...

Trait Implementations

impl<DB> QueryId for dyn QueryFragment<DB>
[src]

type QueryId = ()

A type which uniquely represents Self in a SQL query. Read more

fn query_id() -> Option<TypeId>
[src]

Returns the type id of Self::QueryId if Self::HAS_STATIC_QUERY_ID. Returns None otherwise. Read more

Implementations on Foreign Types

impl<T: ?Sized, DB> QueryFragment<DB> for Box<T> where
    DB: Backend,
    T: QueryFragment<DB>, 
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<'a, T: ?Sized, DB> QueryFragment<DB> for &'a T where
    DB: Backend,
    T: QueryFragment<DB>, 
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<DB: Backend> QueryFragment<DB> for ()
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<T, DB> QueryFragment<DB> for Option<T> where
    DB: Backend,
    T: QueryFragment<DB>, 
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A,)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, B: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A, B)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, B: QueryFragment<__DB>, C: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A, B, C)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, B: QueryFragment<__DB>, C: QueryFragment<__DB>, D: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A, B, C, D)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, B: QueryFragment<__DB>, C: QueryFragment<__DB>, D: QueryFragment<__DB>, E: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A, B, C, D, E)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, B: QueryFragment<__DB>, C: QueryFragment<__DB>, D: QueryFragment<__DB>, E: QueryFragment<__DB>, F: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A, B, C, D, E, F)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, B: QueryFragment<__DB>, C: QueryFragment<__DB>, D: QueryFragment<__DB>, E: QueryFragment<__DB>, F: QueryFragment<__DB>, G: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A, B, C, D, E, F, G)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, B: QueryFragment<__DB>, C: QueryFragment<__DB>, D: QueryFragment<__DB>, E: QueryFragment<__DB>, F: QueryFragment<__DB>, G: QueryFragment<__DB>, H: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A, B, C, D, E, F, G, H)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, B: QueryFragment<__DB>, C: QueryFragment<__DB>, D: QueryFragment<__DB>, E: QueryFragment<__DB>, F: QueryFragment<__DB>, G: QueryFragment<__DB>, H: QueryFragment<__DB>, I: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A, B, C, D, E, F, G, H, I)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, B: QueryFragment<__DB>, C: QueryFragment<__DB>, D: QueryFragment<__DB>, E: QueryFragment<__DB>, F: QueryFragment<__DB>, G: QueryFragment<__DB>, H: QueryFragment<__DB>, I: QueryFragment<__DB>, J: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A, B, C, D, E, F, G, H, I, J)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, B: QueryFragment<__DB>, C: QueryFragment<__DB>, D: QueryFragment<__DB>, E: QueryFragment<__DB>, F: QueryFragment<__DB>, G: QueryFragment<__DB>, H: QueryFragment<__DB>, I: QueryFragment<__DB>, J: QueryFragment<__DB>, K: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A, B, C, D, E, F, G, H, I, J, K)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, B: QueryFragment<__DB>, C: QueryFragment<__DB>, D: QueryFragment<__DB>, E: QueryFragment<__DB>, F: QueryFragment<__DB>, G: QueryFragment<__DB>, H: QueryFragment<__DB>, I: QueryFragment<__DB>, J: QueryFragment<__DB>, K: QueryFragment<__DB>, L: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A, B, C, D, E, F, G, H, I, J, K, L)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, B: QueryFragment<__DB>, C: QueryFragment<__DB>, D: QueryFragment<__DB>, E: QueryFragment<__DB>, F: QueryFragment<__DB>, G: QueryFragment<__DB>, H: QueryFragment<__DB>, I: QueryFragment<__DB>, J: QueryFragment<__DB>, K: QueryFragment<__DB>, L: QueryFragment<__DB>, M: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A, B, C, D, E, F, G, H, I, J, K, L, M)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, B: QueryFragment<__DB>, C: QueryFragment<__DB>, D: QueryFragment<__DB>, E: QueryFragment<__DB>, F: QueryFragment<__DB>, G: QueryFragment<__DB>, H: QueryFragment<__DB>, I: QueryFragment<__DB>, J: QueryFragment<__DB>, K: QueryFragment<__DB>, L: QueryFragment<__DB>, M: QueryFragment<__DB>, N: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, B: QueryFragment<__DB>, C: QueryFragment<__DB>, D: QueryFragment<__DB>, E: QueryFragment<__DB>, F: QueryFragment<__DB>, G: QueryFragment<__DB>, H: QueryFragment<__DB>, I: QueryFragment<__DB>, J: QueryFragment<__DB>, K: QueryFragment<__DB>, L: QueryFragment<__DB>, M: QueryFragment<__DB>, N: QueryFragment<__DB>, O: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<A: QueryFragment<__DB>, B: QueryFragment<__DB>, C: QueryFragment<__DB>, D: QueryFragment<__DB>, E: QueryFragment<__DB>, F: QueryFragment<__DB>, G: QueryFragment<__DB>, H: QueryFragment<__DB>, I: QueryFragment<__DB>, J: QueryFragment<__DB>, K: QueryFragment<__DB>, L: QueryFragment<__DB>, M: QueryFragment<__DB>, N: QueryFragment<__DB>, O: QueryFragment<__DB>, P: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

Loading content...

Implementors

impl<'a> QueryFragment<Pg> for TransactionBuilder<'a>
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<DB> QueryFragment<DB> for SqlQuery where
    DB: Backend
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<DB: Backend> QueryFragment<DB> for now
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<Query, Value, DB> QueryFragment<DB> for UncheckedBind<Query, Value> where
    DB: Backend,
    Query: QueryFragment<DB>,
    Value: QueryFragment<DB>, 
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<ST, T, DB> QueryFragment<DB> for SqlLiteral<ST, T> where
    DB: Backend,
    T: QueryFragment<DB>, 
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<T> QueryFragment<Pg> for DistinctOnClause<T> where
    T: QueryFragment<Pg>, 
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<T, U, Op, Ret, DB> QueryFragment<DB> for InsertStatement<T, U, Op, Ret> where
    DB: Backend,
    T: Table,
    T::FromClause: QueryFragment<DB>,
    U: QueryFragment<DB> + CanInsertInSingleQuery<DB>,
    Op: QueryFragment<DB>,
    Ret: QueryFragment<DB>, 
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<T, U, Ret, DB> QueryFragment<DB> for DeleteStatement<T, U, Ret> where
    DB: Backend,
    T: Table,
    T::FromClause: QueryFragment<DB>,
    U: QueryFragment<DB>,
    Ret: QueryFragment<DB>, 
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

impl<T, U, V, Ret, DB> QueryFragment<DB> for UpdateStatement<T, U, V, Ret> where
    DB: Backend,
    T: Table,
    T::FromClause: QueryFragment<DB>,
    U: QueryFragment<DB>,
    V: QueryFragment<DB>,
    Ret: QueryFragment<DB>, 
[src]

fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
[src]

fn collect_binds(
    &self,
    out: &mut DB::BindCollector,
    metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
[src]

fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]

Loading content...