Module mz_repr::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§

Modules§

  • Structs and traits for EXPLAIN AS DOT.
  • Structs and traits for EXPLAIN AS JSON.
  • Structs and traits for EXPLAIN AS TEXT.
  • Tracing utilities for explainable plans.

Structs§

  • A container for derived analyses.
  • A somewhat ad-hoc way to keep carry a plan with a set of analyses derived for each node in that plan.
  • Pretty-prints a list of scalar expressions that may have runs of column indices as a comma-separated list interleaved with interval expressions.
  • Pretty-prints a list of scalar expressions that may have runs of column indices as a comma-separated list interleaved with interval expressions.
  • A bare-minimum implementation of ExprHumanizer.
  • A set of options for controlling the output of Explain implementations.
  • An ExprHumanizer that extends the inner instance with shadow items that are reported as present, even though they might not exist in inner.
  • Pretty-prints a list of indices.
  • A helper struct which will most commonly be used as the generic rendering context type C for various Explain$Format implementations.
  • 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.
  • A set of indexes that are used in the explained plan.

Enums§

  • 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.
  • The type of errors that may occur when an Explain::explain call goes wrong.
  • Possible output formats for an explanation.
  • The type of object to be explained
  • 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§

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