Module explain

Source
Expand description

A set of traits for modeling things that can be explained by a SQL EXPLAIN statement.

The main trait in this module is Explain.

An explainable subject S implements Explain, and as part of that:

  1. Fixes the context type required for the explanation. in Explain::Context.
  2. Fixes the explanation type for each ExplainFormat in Explain::Text, Explain::Json, ….
  3. Provides an explanation type constructor for each supported ExplainFormat from references to S, ExplainConfig , and the current Explain::Context in Explain::explain_text, Explain::explain_json, ….

The same explanation type can be shared by more than one ExplainFormat.

Use UnsupportedFormat and the default explain_$format constructor for Explain to indicate that the implementation does not support this $format.

Re-exports§

pub use crate::explain::tracing::trace_plan;

Modules§

dot
Structs and traits for EXPLAIN AS DOT.
json
Structs and traits for EXPLAIN AS JSON.
text
Structs and traits for EXPLAIN AS TEXT.
tracing
Tracing utilities for explainable plans.

Structs§

Analyses
A container for derived analyses.
AnnotatedPlan
A somewhat ad-hoc way to keep carry a plan with a set of analyses derived for each node in that plan.
CompactScalarSeq
Pretty-prints a list of scalar expressions that may have runs of column indices as a comma-separated list interleaved with interval expressions.
CompactScalars
Pretty-prints a list of scalar expressions that may have runs of column indices as a comma-separated list interleaved with interval expressions.
DummyHumanizer
A bare-minimum implementation of ExprHumanizer.
ExplainConfig
A set of options for controlling the output of Explain implementations.
ExprHumanizerExt
An ExprHumanizer that extends the inner instance with shadow items that are reported as present, even though they might not exist in inner.
HumanizedAnalyses
Indices
Pretty-prints a list of indices.
PlanRenderingContext
RenderingContext
A helper struct which will most commonly be used as the generic rendering context type C for various Explain$Format implementations.
TransientItem
A description of a catalog item that does not exist, but can be reported as present in the catalog by a ExprHumanizerExt instance that has it in its items list.
UsedIndexes
A set of indexes that are used in the explained plan.

Enums§

DeltaJoinIndexUsageType
In a snapshot, one arrangement of the first input is scanned, all the other arrangements (of the first input, and of all other inputs) only get lookups. When later input batches are arriving, all inputs are fully read.
ExplainError
The type of errors that may occur when an Explain::explain call goes wrong.
ExplainFormat
Possible output formats for an explanation.
Explainee
The type of object to be explained
IndexUsageType
UnsupportedFormat
A zero-variant enum to be used as the explanation type in the Explain implementation for all formats that are not supported for Self.

Traits§

Explain
A trait that provides a unified interface for objects that can be explained.
ExprHumanizer
A trait for humanizing components of an expression.
ScalarOps