Skip to main content

ExplainStatement

Struct ExplainStatement 

Source
pub struct ExplainStatement {
    pub analyze: bool,
    pub inner: Box<Statement>,
    pub suggest: bool,
    pub costs_off: bool,
    pub buffers: bool,
    pub timing_off: bool,
    pub settings: bool,
    pub wal: bool,
    pub summary_off: bool,
    pub format: ExplainFormat,
}
Expand description

Each bool mirrors one independent PG EXPLAIN (…) option (ANALYZE, SUGGEST, COSTS OFF, BUFFERS, TIMING OFF, …); they compose freely, so a bitflags word or a nested options struct would only relocate the lint while making the option each caller sets harder to read.

Fields§

§analyze: bool§inner: Box<Statement>

v7.39 (round 225) — widened from SelectStatement so EXPLAIN INSERT/UPDATE/DELETE parses (PG explains DML); the engine renders Insert on / Update on / Delete on trees for them.

§suggest: bool

v6.8.3 — EXPLAIN (SUGGEST) <SELECT> enables the index advisor pass: after the regular plan tree, the engine emits one suggestion line per column referenced in the query’s WHERE / JOIN that has no covering index on the owning table.

§costs_off: bool

v7.37.7 — EXPLAIN (COSTS OFF) <SELECT> strips wall-clock elapsed=…us annotations from the Total line (and any future cost-bearing lines). PG-standard option used by regression suites and diff-friendly EXPLAIN output. When true, takes precedence over the per-session SPG_TEST_EXPLAIN_NO_COSTS GUC.

§buffers: bool

v7.37.22 (22.7) — EXPLAIN (BUFFERS) <SELECT>. PG-standard option that surfaces hot/cold/shared block counters. SPG’s hot-tier scan path counts examined rows; the BUFFERS option makes that an explicit per-operator annotation.

§timing_off: bool

v7.37.22 (22.7) — EXPLAIN (TIMING [ON|OFF]) <SELECT>. PG uses this to disable per-operator timing while still emitting actual-row counts (cheaper than ANALYZE). Default when EXPLAIN ANALYZE is set: TIMING ON. false strips the timing portion of the Total line. Decoupled from costs_off: PG’s COSTS OFF strips estimated cost; TIMING OFF strips measured wall-clock.

§settings: bool

v7.37.22 (22.7) — EXPLAIN (SETTINGS) <SELECT>. PG appends modified GUC values to the plan output. SPG emits the session params that diverge from default after the main plan body.

§wal: bool

v7.37.22 (22.7) — EXPLAIN (WAL) <SELECT>. PG counts WAL bytes / records / FPI emitted by the query. SPG’s write-side queries (INSERT/UPDATE/DELETE wrapped in EXPLAIN ANALYZE) report against the engine WAL counter delta.

§summary_off: bool

v7.39 (round 227) — EXPLAIN (SUMMARY OFF) suppresses the trailing Planning Time: / Execution Time: lines. PG defaults SUMMARY on for ANALYZE and off otherwise; SPG emits them for ANALYZE unless this is set.

§format: ExplainFormat

v7.37.23 (23.5) — EXPLAIN (FORMAT text|json|xml|yaml). PG’s standard format selector. Default is text. JSON / XML / YAML emit a single-row TEXT result whose body wraps the existing line-per-operator text in the chosen container — PG-compatible just enough for dashboards that parse those container shapes (pgAdmin’s JSON path picker, etc.).

Trait Implementations§

Source§

impl Clone for ExplainStatement

Source§

fn clone(&self) -> ExplainStatement

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ExplainStatement

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for ExplainStatement

Source§

fn eq(&self, other: &ExplainStatement) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ExplainStatement

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.