use std::rc::Weak; use std::{cell::RefCell, rc::Rc}; use crate::storage::sqlite3_ondisk::DatabaseHeader; use crate::Connection; use crate::{schema::Schema, vdbe::Program, Result}; use sqlite3_parser::ast; use super::emitter::emit_program; use super::optimizer::optimize_plan; use super::planner::prepare_select_plan; pub fn translate_select( schema: &Schema, select: ast::Select, database_header: Rc>, connection: Weak, ) -> Result { let select_plan = prepare_select_plan(schema, select)?; let optimized_plan = optimize_plan(select_plan)?; // println!("optimized_plan: {:?}", optimized_plan); emit_program(database_header, optimized_plan, connection) }