use heliosdb_nano::sql::{Parser, Planner};
fn main() {
println!("=== HeliosDB Trigger Error Handling Test ===\n");
println!("Test 1: TRUNCATE event (should error)");
let sql = "CREATE TRIGGER trunc_trigger AFTER TRUNCATE ON users FOR EACH ROW EXECUTE FUNCTION handle_truncate()";
test_error(sql, "TRUNCATE");
println!("\n=== Error handling tests completed ===");
}
fn test_error(sql: &str, expected_error: &str) {
println!("SQL: {}", sql);
let parser = Parser::new();
match parser.parse_one(sql) {
Ok(statement) => {
println!("✓ Parsed AST successfully");
let planner = Planner::new();
match planner.statement_to_plan(statement) {
Ok(plan) => {
println!("✗ Unexpectedly succeeded in creating plan: {:?}", plan);
}
Err(e) => {
let error_msg = format!("{}", e);
if error_msg.to_lowercase().contains(&expected_error.to_lowercase()) {
println!("✓ Correctly rejected with error: {}", e);
} else {
println!("✗ Got error but wrong message: {}", e);
println!(" Expected to contain: {}", expected_error);
}
}
}
}
Err(e) => {
println!("Parse error (may be expected): {}", e);
}
}
}