Trait diesel::query_builder::QueryFragment
[−]
[src]
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.
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<()>
&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
andNotIn
(Each value requires a separate bind param placeholder)
This method should only be called by implementations of Connection
.
Trait Implementations
impl<DB> QueryId for QueryFragment<DB>
[src]
type QueryId = ()
A type which uniquely represents Self
in a SQL query. Read more
const HAS_STATIC_QUERY_ID: bool
HAS_STATIC_QUERY_ID: bool = false
Can the SQL generated by Self
be uniquely identified by its type? 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]
DB: Backend,
T: QueryFragment<DB>,
fn walk_ast(&self, pass: AstPass<DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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]
DB: Backend,
T: QueryFragment<DB>,
fn walk_ast(&self, pass: AstPass<DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]
impl<DB: Backend> QueryFragment<DB> for ()
[src]
fn walk_ast(&self, _: AstPass<DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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]
DB: Backend,
T: QueryFragment<DB>,
fn walk_ast(&self, out: AstPass<DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]
impl<A: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for (A,)
[src]
fn walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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 walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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 walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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 walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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 walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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 walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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 walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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 walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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 walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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 walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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 walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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 walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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 walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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 walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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 walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
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 walk_ast(&self, out: AstPass<__DB>) -> QueryResult<()>
[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]
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
[src]
Implementors
impl<DB: Backend> QueryFragment<DB> for now
impl<ST, T, DB> QueryFragment<DB> for SqlLiteral<ST, T> where
DB: Backend,
T: QueryFragment<DB>,impl<Query, Value, DB> QueryFragment<DB> for UncheckedBind<Query, Value> where
DB: Backend,
Query: QueryFragment<DB>,
Value: QueryFragment<DB>,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>,impl<DB> QueryFragment<DB> for SqlQuery where
DB: Backend,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>,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>,impl<T> QueryFragment<Pg> for DistinctOnClause<T> where
T: QueryFragment<Pg>,impl<'a> QueryFragment<Pg> for TransactionBuilder<'a>