use spg_engine::Engine;
use std::sync::atomic::Ordering::Relaxed;
fn main() {
let mut eng = Engine::new();
eng.execute("CREATE TABLE t (g INT, s TEXT)").unwrap();
for i in 0..20 {
eng.execute(&format!("INSERT INTO t VALUES ({i}, 'v{i}')"))
.unwrap();
}
println!("| spelling | fastpred fires |");
println!("|----------|---------------:|");
for sql in [
"SELECT count(*) FROM t WHERE g IN (1,3,5)",
"SELECT count(*) FROM t WHERE g NOT IN (1,3,5)",
"SELECT count(*) FROM t WHERE (g IN (1,3,5)) = true",
"SELECT count(*) FROM t WHERE NOT (g NOT IN (1,3,5))",
"SELECT count(*) FROM t WHERE s IN ('v1','v3')",
"SELECT count(*) FROM t WHERE s IN (1,3)",
] {
let base = spg_engine::eval::compiled::STEP_VM_FASTPRED_FIRE.load(Relaxed);
let _ = eng.execute(sql);
let fired = spg_engine::eval::compiled::STEP_VM_FASTPRED_FIRE.load(Relaxed) - base;
println!("| {sql} | {fired} |");
}
}