mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-28 09:08:58 +00:00
0b270bf0cc
Signed-off-by: junxiang Mu <1948535941@qq.com>
22 lines
641 B
Rust
22 lines
641 B
Rust
use std::sync::Arc;
|
|
|
|
use async_trait::async_trait;
|
|
use datafusion::logical_expr::LogicalPlan;
|
|
use datafusion::physical_plan::ExecutionPlan;
|
|
use datafusion::physical_planner::ExtensionPlanner;
|
|
|
|
use super::session::SessionCtx;
|
|
use crate::QueryResult;
|
|
|
|
#[async_trait]
|
|
pub trait PhysicalPlanner {
|
|
/// Given a `LogicalPlan`, create an `ExecutionPlan` suitable for execution
|
|
async fn create_physical_plan(
|
|
&self,
|
|
logical_plan: &LogicalPlan,
|
|
session_state: &SessionCtx,
|
|
) -> QueryResult<Arc<dyn ExecutionPlan>>;
|
|
|
|
fn inject_physical_transform_rule(&mut self, rule: Arc<dyn ExtensionPlanner + Send + Sync>);
|
|
}
|