pub struct DefaultPhysicalPlanner { /* private fields */ }
Expand description
Default single node physical query planner that converts a
LogicalPlan
to an ExecutionPlan
suitable for execution.
This planner will first flatten the LogicalPlan
tree via a
depth first approach, which allows it to identify the leaves
of the tree.
Tasks are spawned from these leaves and traverse back up the
tree towards the root, converting each LogicalPlan
node it
reaches into their equivalent ExecutionPlan
node. When these
tasks reach a common node, they will terminate until the last
task reaches the node which will then continue building up the
tree.
Up to planning_concurrency
tasks are buffered at once to
execute concurrently.
Implementations§
source§impl DefaultPhysicalPlanner
impl DefaultPhysicalPlanner
sourcepub fn with_extension_planners(
extension_planners: Vec<Arc<dyn ExtensionPlanner + Send + Sync>>,
) -> Self
pub fn with_extension_planners( extension_planners: Vec<Arc<dyn ExtensionPlanner + Send + Sync>>, ) -> Self
Create a physical planner that uses extension_planners
to
plan user-defined logical nodes LogicalPlan::Extension
.
The planner uses the first ExtensionPlanner
to return a non-None
plan.
source§impl DefaultPhysicalPlanner
impl DefaultPhysicalPlanner
sourcepub fn optimize_physical_plan<F>(
&self,
plan: Arc<dyn ExecutionPlan>,
session_state: &SessionState,
observer: F,
) -> Result<Arc<dyn ExecutionPlan>>
pub fn optimize_physical_plan<F>( &self, plan: Arc<dyn ExecutionPlan>, session_state: &SessionState, observer: F, ) -> Result<Arc<dyn ExecutionPlan>>
Optimize a physical plan by applying each physical optimizer, calling observer(plan, optimizer after each one)
Trait Implementations§
source§impl Default for DefaultPhysicalPlanner
impl Default for DefaultPhysicalPlanner
source§fn default() -> DefaultPhysicalPlanner
fn default() -> DefaultPhysicalPlanner
source§impl PhysicalPlanner for DefaultPhysicalPlanner
impl PhysicalPlanner for DefaultPhysicalPlanner
source§fn create_physical_plan<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
logical_plan: &'life1 LogicalPlan,
session_state: &'life2 SessionState,
) -> Pin<Box<dyn Future<Output = Result<Arc<dyn ExecutionPlan>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn create_physical_plan<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
logical_plan: &'life1 LogicalPlan,
session_state: &'life2 SessionState,
) -> Pin<Box<dyn Future<Output = Result<Arc<dyn ExecutionPlan>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Create a physical plan from a logical plan
source§fn create_physical_expr(
&self,
expr: &Expr,
input_dfschema: &DFSchema,
session_state: &SessionState,
) -> Result<Arc<dyn PhysicalExpr>>
fn create_physical_expr( &self, expr: &Expr, input_dfschema: &DFSchema, session_state: &SessionState, ) -> Result<Arc<dyn PhysicalExpr>>
Create a physical expression from a logical expression suitable for evaluation
e
: the expression to convert
input_dfschema
: the logical plan schema for evaluating e
Auto Trait Implementations§
impl Freeze for DefaultPhysicalPlanner
impl !RefUnwindSafe for DefaultPhysicalPlanner
impl Send for DefaultPhysicalPlanner
impl Sync for DefaultPhysicalPlanner
impl Unpin for DefaultPhysicalPlanner
impl !UnwindSafe for DefaultPhysicalPlanner
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more