use std::sync::Arc; use api::QueryResult; use api::query::session::SessionCtx; use datafusion::physical_optimizer::PhysicalOptimizerRule; use datafusion::physical_plan::ExecutionPlan; pub trait PhysicalOptimizer { fn optimize(&self, plan: Arc, session: &SessionCtx) -> QueryResult>; fn inject_optimizer_rule(&mut self, optimizer_rule: Arc); }