pub fn explain_json(plan: &LogicalPlan, model: Option<&CostModel>) -> StringExpand description
Emit the plan as JSON, optionally with per-node cost estimates.
Uses a hand-rolled JSON writer — no serde_json runtime dependency.
Example output:
{"op":"Scan","table":"orders","rows":50000,"cost":50000.0,"children":[]}