This commit is contained in:
Hassan Abedi 2026-06-15 15:40:34 +02:00
parent 7bfd582884
commit c0238e6b4a

View File

@ -163,25 +163,8 @@ fn main() -> ExitCode {
return ExitCode::from(1); return ExitCode::from(1);
}; };
if trace { if trace && !trace_verify(&plan, &relation) {
match verify(&plan, &relation) { return ExitCode::from(1);
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);
}
}
} }
let payload = serde_json::json!({ 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) { fn trace_plan_header(plan: &Plan, backend: Backend) {
if let Some(name) = &plan.scenario { if let Some(name) = &plan.scenario {
eprintln!("scenario: {name}"); eprintln!("scenario: {name}");