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 == Noneand scanned rows exceed threshold) - Execution plan regression detection ([
crate::regression], requiresexplain-analyzerfeature) - Slow query automatic governance ([
crate::slow_query_governance], requiresslow-query-governancefeature)
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§
Structs§
- Explain
Plan - Parsed execution plan summary
Enums§
- Explain
Dialect - Supported EXPLAIN parse dialects (corresponding to database engines, format compatible within family)
- Explain
Error - EXPLAIN parse error
- Scan
Type - Scan type classification (unified abstraction of scan methods across dialects)
Traits§
- Explain
Parser - Dialect EXPLAIN parser trait
Functions§
- parse_
explain - Convenience parse function: parse EXPLAIN output by dialect
- parser_
for - Dispatch parser by dialect