Create a physical plan from a logical plan
(
&self,
logical_plan: &LogicalPlan,
session_state: &SessionState,
)
| 266 | impl PhysicalPlanner for DefaultPhysicalPlanner { |
| 267 | /// Create a physical plan from a logical plan |
| 268 | async fn create_physical_plan( |
| 269 | &self, |
| 270 | logical_plan: &LogicalPlan, |
| 271 | session_state: &SessionState, |
| 272 | ) -> Result<Arc<dyn ExecutionPlan>> { |
| 273 | if let Some(plan) = self |
| 274 | .handle_explain_or_analyze(logical_plan, session_state) |
| 275 | .await? |
| 276 | { |
| 277 | return Ok(plan); |
| 278 | } |
| 279 | let plan = self |
| 280 | .create_initial_plan(logical_plan, session_state) |
| 281 | .await?; |
| 282 | |
| 283 | self.optimize_physical_plan(plan, session_state, |_, _| {}) |
| 284 | } |
| 285 | |
| 286 | /// Create a physical expression from a logical expression |
| 287 | /// suitable for evaluation |