From c0238e6b4a4f9479dd605788e1cb57544497f76e Mon Sep 17 00:00:00 2001 From: Hassan Abedi Date: Mon, 15 Jun 2026 15:40:34 +0200 Subject: [PATCH] WIP --- crates/plan-runner/src/main.rs | 46 ++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/crates/plan-runner/src/main.rs b/crates/plan-runner/src/main.rs index ec010de..3a98beb 100644 --- a/crates/plan-runner/src/main.rs +++ b/crates/plan-runner/src/main.rs @@ -163,25 +163,8 @@ fn main() -> ExitCode { return ExitCode::from(1); }; - if trace { - match verify(&plan, &relation) { - Ok(true) => { - let expected = plan.expected_bindings.as_ref().map_or(0, |e| e.rows.len()); - let columns = plan - .expected_bindings - .as_ref() - .map(|e| e.columns.join(", ")) - .unwrap_or_default(); - eprintln!( - "verify: bindings match expected_bindings ({expected} rows over {columns})" - ); - } - Ok(false) => eprintln!("verify: no expected_bindings in plan, skipped"), - Err(err) => { - eprintln!("verify: FAILED: {err}"); - return ExitCode::from(1); - } - } + if trace && !trace_verify(&plan, &relation) { + return ExitCode::from(1); } let payload = serde_json::json!({ @@ -266,6 +249,31 @@ fn build_tables_for( } } +/// Narrate the oracle check. Returns `false` if the bindings differ from +/// the plan's `expected_bindings`, so the caller can exit nonzero. +fn trace_verify(plan: &Plan, relation: &Relation) -> bool { + match verify(plan, relation) { + Ok(true) => { + let expected = plan.expected_bindings.as_ref().map_or(0, |e| e.rows.len()); + let columns = plan + .expected_bindings + .as_ref() + .map(|e| e.columns.join(", ")) + .unwrap_or_default(); + eprintln!("verify: bindings match expected_bindings ({expected} rows over {columns})"); + true + } + Ok(false) => { + eprintln!("verify: no expected_bindings in plan, skipped"); + true + } + Err(err) => { + eprintln!("verify: FAILED: {err}"); + false + } + } +} + fn trace_plan_header(plan: &Plan, backend: Backend) { if let Some(name) = &plan.scenario { eprintln!("scenario: {name}");