Skip to main content

PhysicalOptimizerRule

Trait PhysicalOptimizerRule 

Source
pub trait PhysicalOptimizerRule: Debug + Any {
    // Required methods
    fn optimize(
        &self,
        plan: Arc<dyn ExecutionPlan>,
        config: &ConfigOptions,
    ) -> Result<Arc<dyn ExecutionPlan>>;
    fn name(&self) -> &str;
    fn schema_check(&self) -> bool;

    // Provided method
    fn optimize_with_context(
        &self,
        plan: Arc<dyn ExecutionPlan>,
        context: &dyn PhysicalOptimizerContext,
    ) -> Result<Arc<dyn ExecutionPlan>> { ... }
}
Expand description

PhysicalOptimizerRule transforms one ExecutionPlan into another which computes the same results, but in a potentially more efficient way.

Use SessionState::add_physical_optimizer_rule to register additional PhysicalOptimizerRules.

Required Methods§

Source

fn optimize( &self, plan: Arc<dyn ExecutionPlan>, config: &ConfigOptions, ) -> Result<Arc<dyn ExecutionPlan>>

Rewrite plan to an optimized form.

This is the primary optimization method. For rules that need access to the statistics registry, override optimize_with_context instead.

Source

fn name(&self) -> &str

A human readable name for this optimizer rule

Source

fn schema_check(&self) -> bool

A flag to indicate whether the physical planner should validate that the rule will not change the schema of the plan after the rewriting. Some of the optimization rules might change the nullable properties of the schema and should disable the schema check.

Provided Methods§

Source

fn optimize_with_context( &self, plan: Arc<dyn ExecutionPlan>, context: &dyn PhysicalOptimizerContext, ) -> Result<Arc<dyn ExecutionPlan>>

Rewrite plan with access to extended context (statistics registry, etc.).

Override this method if you need access to the statistics registry for enhanced statistics lookup. The default implementation simply calls optimize with the config options from the context.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§