Rule-Based Query Planner
The query planner converts parsed AST statements into logical and physical execution operator trees.
src/sql/planner.rs
rust
// Query Planner AST transformation in Rust
pub fn build_physical_plan(ast: Statement) -> Result<PhysicalPlan> {
match ast {
Statement::Select { from, selection, projection, .. } => {
let scan = PhysicalPlan::SeqScan { table: from };
let filter = PhysicalPlan::Filter { input: Box::new(scan), predicate: selection };
Ok(PhysicalPlan::Projection { input: Box::new(filter), exprs: projection })
}
_ => todo!(),
}
}