pub struct Explain<Q>(pub Q);Expand description
A wrapper around a Diesel query that transforms it into an
EXPLAIN (FORMAT JSON) query.
Use this type to inspect the query execution plan without running the query.
Example:
let plan = my_query.wrap_explain().explain(&mut conn)?;
println!("{:#?}", plan);Tuple Fields§
§0: QImplementations§
Source§impl<Q> Explain<Q>
impl<Q> Explain<Q>
Sourcepub fn explain<'a>(self, conn: &mut PgConnection) -> QueryResult<ExplainPlan>
pub fn explain<'a>(self, conn: &mut PgConnection) -> QueryResult<ExplainPlan>
Executes the wrapped query using EXPLAIN (FORMAT JSON), parses the result,
and returns a structured ExplainPlan that represents the root of the query plan tree.
§Errors
Returns a diesel::result::Error::DeserializationError if the JSON returned
by PostgreSQL cannot be parsed into an ExplainPlan.
Trait Implementations§
Source§impl<Q> QueryFragment<Pg> for Explain<Q>where
Q: QueryFragment<Pg>,
impl<Q> QueryFragment<Pg> for Explain<Q>where
Q: QueryFragment<Pg>,
Source§impl<Q: QueryId> QueryId for Explain<Q>
impl<Q: QueryId> QueryId for Explain<Q>
Source§impl<Q> RunQueryDsl<PgConnection> for Explain<Q>
impl<Q> RunQueryDsl<PgConnection> for Explain<Q>
Source§fn execute(self, conn: &mut Conn) -> Result<usize, Error>where
Conn: Connection,
Self: ExecuteDsl<Conn>,
fn execute(self, conn: &mut Conn) -> Result<usize, Error>where
Conn: Connection,
Self: ExecuteDsl<Conn>,
Executes the given command, returning the number of rows affected. Read more
Source§fn load<'query, U>(self, conn: &mut Conn) -> Result<Vec<U>, Error>where
Self: LoadQuery<'query, Conn, U>,
fn load<'query, U>(self, conn: &mut Conn) -> Result<Vec<U>, Error>where
Self: LoadQuery<'query, Conn, U>,
Source§fn load_iter<'conn, 'query, U, B>(
self,
conn: &'conn mut Conn,
) -> Result<Self::RowIter<'conn>, Error>where
'query: 'conn,
U: 'conn,
Self: LoadQuery<'query, Conn, U, B> + 'conn,
fn load_iter<'conn, 'query, U, B>(
self,
conn: &'conn mut Conn,
) -> Result<Self::RowIter<'conn>, Error>where
'query: 'conn,
U: 'conn,
Self: LoadQuery<'query, Conn, U, B> + 'conn,
impl<Q: Copy> Copy for Explain<Q>
Auto Trait Implementations§
impl<Q> Freeze for Explain<Q>where
Q: Freeze,
impl<Q> RefUnwindSafe for Explain<Q>where
Q: RefUnwindSafe,
impl<Q> Send for Explain<Q>where
Q: Send,
impl<Q> Sync for Explain<Q>where
Q: Sync,
impl<Q> Unpin for Explain<Q>where
Q: Unpin,
impl<Q> UnwindSafe for Explain<Q>where
Q: UnwindSafe,
Blanket Implementations§
Source§impl<T> AggregateExpressionMethods for T
impl<T> AggregateExpressionMethods for T
Source§fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
DISTINCT modifier for aggregate functions Read moreSource§fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
ALL modifier for aggregate functions Read moreSource§fn aggregate_filter<P>(self, f: P) -> Self::Output
fn aggregate_filter<P>(self, f: P) -> Self::Output
Add an aggregate function filter Read more
Source§fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
Add an aggregate function order Read more
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
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>
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)
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)
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
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Conn, DB, T> ExecuteDsl<Conn, DB> for T
impl<Conn, DB, T> ExecuteDsl<Conn, DB> for T
Source§impl<Q> ExplainWrapped for Q
impl<Q> ExplainWrapped for Q
Source§fn wrap_explain(&self) -> Explain<&Q>
fn wrap_explain(&self) -> Explain<&Q>
Wraps the query into an
EXPLAIN wrapper, allowing it to be analyzed
using Explain::explain(). Read moreSource§impl<T> IntoSql for T
impl<T> IntoSql for T
Source§fn into_sql<T>(self) -> Self::Expression
fn into_sql<T>(self) -> Self::Expression
Convert
self to an expression for Diesel’s query builder. Read moreSource§fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
Convert
&self to an expression for Diesel’s query builder. Read moreSource§impl<T> WindowExpressionMethods for T
impl<T> WindowExpressionMethods for T
Source§fn over(self) -> Self::Outputwhere
Self: OverDsl,
fn over(self) -> Self::Outputwhere
Self: OverDsl,
Turn a function call into a window function call Read more
Source§fn window_filter<P>(self, f: P) -> Self::Output
fn window_filter<P>(self, f: P) -> Self::Output
Add a filter to the current window function Read more
Source§fn partition_by<E>(self, expr: E) -> Self::Outputwhere
Self: PartitionByDsl<E>,
fn partition_by<E>(self, expr: E) -> Self::Outputwhere
Self: PartitionByDsl<E>,
Add a partition clause to the current window function Read more
Source§fn window_order<E>(self, expr: E) -> Self::Outputwhere
Self: OrderWindowDsl<E>,
fn window_order<E>(self, expr: E) -> Self::Outputwhere
Self: OrderWindowDsl<E>,
Add a order clause to the current window function Read more