Skip to main content

Crate sz_orm_explain

Crate sz_orm_explain 

Source
Expand description

§sz-orm-explain — Cross-Dialect EXPLAIN Result Parser

Parses EXPLAIN output from MySQL / PostgreSQL / SQLite / Oracle / MSSQL into a unified ExplainPlan, used for:

  • Full table scan detection (ScanType::FullTable)
  • Missing index detection (index == None and scanned rows exceed threshold)
  • Execution plan regression detection ([crate::regression], requires explain-analyzer feature)
  • Slow query automatic governance ([crate::slow_query_governance], requires slow-query-governance feature)

Typical usage (with sz-orm-macros’s query! macro db-verify mode):

let plan = sz_orm_explain::parser_for(ExplainDialect::Postgres)?.parse(explain_raw)?;
if plan.scan_type == ScanType::FullTable {
    // Compile-time/CI warning: full table scan
}

Parse failure returns ExplainError::Unparseable, does not panic, can degrade to “no warnings”.

Note: This package intentionally has zero dependency on sz-orm-core, uses its own ExplainDialect enum to describe dialects, avoiding core → macros → explain → core dependency cycle.

Modules§

dialect
方言分派辅助
parsers
各方言 EXPLAIN 解析器

Structs§

ExplainPlan
Parsed execution plan summary

Enums§

ExplainDialect
Supported EXPLAIN parse dialects (corresponding to database engines, format compatible within family)
ExplainError
EXPLAIN parse error
ScanType
Scan type classification (unified abstraction of scan methods across dialects)

Traits§

ExplainParser
Dialect EXPLAIN parser trait

Functions§

parse_explain
Convenience parse function: parse EXPLAIN output by dialect
parser_for
Dispatch parser by dialect