pub struct QueryPlanner { /* private fields */ }Expand description
Unified query planner that handles the complete optimization pipeline.
Unlike the basic Optimizer, QueryPlanner supports ExecutionContext
throughout the entire pipeline, enabling context-aware optimizations
for both logical and physical plans.
Implementations§
Source§impl QueryPlanner
impl QueryPlanner
Sourcepub fn new(ctx: ExecutionContext) -> Self
pub fn new(ctx: ExecutionContext) -> Self
Creates a new QueryPlanner with the given execution context.
The planner is initialized with default optimization passes:
- Logical: NotSimplification, AndPredicatePass, CrossProductPass, ImplicitJoinsPass, OuterJoinSimplification, PredicatePushdown, JoinReorder
- Context-aware logical: IndexSelection
- Physical: TopNPushdown, OrderByIndexPass, LimitSkipByIndexPass
Sourcepub fn with_logical_passes(
ctx: ExecutionContext,
passes: Vec<Box<dyn OptimizerPass>>,
) -> Self
pub fn with_logical_passes( ctx: ExecutionContext, passes: Vec<Box<dyn OptimizerPass>>, ) -> Self
Creates a QueryPlanner with custom logical passes.
Context-aware passes (IndexSelection, OrderByIndexPass, etc.) are still applied automatically using the provided context.
Sourcepub fn context(&self) -> &ExecutionContext
pub fn context(&self) -> &ExecutionContext
Returns a reference to the execution context.
Sourcepub fn plan(&self, plan: LogicalPlan) -> PhysicalPlan
pub fn plan(&self, plan: LogicalPlan) -> PhysicalPlan
Plans a logical query into an optimized physical plan.
This is the main entry point that runs the complete optimization pipeline:
- Apply context-free logical optimizations
- Apply context-aware logical optimizations (IndexSelection)
- Convert to physical plan
- Apply physical optimizations (TopNPushdown, OrderByIndexPass, LimitSkipByIndexPass)
Sourcepub fn optimize_logical(&self, plan: LogicalPlan) -> LogicalPlan
pub fn optimize_logical(&self, plan: LogicalPlan) -> LogicalPlan
Optimizes only the logical plan without converting to physical.
Useful for debugging or when you need to inspect the optimized logical plan.
Sourcepub fn to_physical(&self, plan: LogicalPlan) -> PhysicalPlan
pub fn to_physical(&self, plan: LogicalPlan) -> PhysicalPlan
Converts a logical plan to physical and applies physical optimizations.
Assumes the logical plan has already been optimized.