Runs the full one-shot optimization pipeline end-to-end: 1. HIR ⇒ MIR lowering and local MIR optimization, 2. timestamp resolution, 3. global MIR optimization, MIR ⇒ LIR lowering, and global LIR optimization. The pipeline shape is identical for both variants; only the concrete (statement-specific) plan types differ, so the steps are shared via [`optimize_oneshot`].
(
&mut self,
raw_expr: HirRelationExpr,
timestamp_ctx: TimestampContext,
session: &dyn SessionMetadata,
stats: Box<dyn StatisticsOracle>,
)
| 175 | /// (statement-specific) plan types differ, so the steps are shared via |
| 176 | /// [`optimize_oneshot`]. |
| 177 | pub fn optimize( |
| 178 | &mut self, |
| 179 | raw_expr: HirRelationExpr, |
| 180 | timestamp_ctx: TimestampContext, |
| 181 | session: &dyn SessionMetadata, |
| 182 | stats: Box<dyn StatisticsOracle>, |
| 183 | ) -> Result<PeekGlobalLirPlan, OptimizerError> { |
| 184 | match self { |
| 185 | PeekOptimizer::Select(optimizer) => { |
| 186 | let plan = optimize_oneshot(optimizer, raw_expr, |local_mir_plan| { |
| 187 | local_mir_plan.resolve(timestamp_ctx, session, stats) |
| 188 | })?; |
| 189 | Ok(PeekGlobalLirPlan::Select(plan)) |
| 190 | } |
| 191 | PeekOptimizer::CopyTo(optimizer) => { |
| 192 | let plan = optimize_oneshot(optimizer, raw_expr, |local_mir_plan| { |
| 193 | local_mir_plan.resolve(timestamp_ctx, session, stats) |
| 194 | })?; |
| 195 | Ok(PeekGlobalLirPlan::CopyTo(plan)) |
| 196 | } |
| 197 | } |
| 198 | } |
| 199 | |
| 200 | /// Consumes `self`, returning the inner [`peek::Optimizer`] if this is the |
| 201 | /// `SELECT`/`EXPLAIN` path and `None` otherwise. |
no test coverage detected