pub trait AnalyzerRule: Debug {
// Required methods
fn analyze(
&self,
plan: LogicalPlan,
config: &ConfigOptions,
) -> Result<LogicalPlan, DataFusionError>;
fn name(&self) -> &str;
}Expand description
AnalyzerRules transform LogicalPlans in some way to make
the plan valid prior to the rest of the DataFusion optimization process.
AnalyzerRules are different than an OptimizerRules
which must preserve the semantics of the LogicalPlan, while computing
results in a more optimal way.
For example, an AnalyzerRule may resolve Exprs into more specific
forms such as a subquery reference, or do type coercion to ensure the types
of operands are correct.
Use SessionState::add_analyzer_rule to register additional
AnalyzerRules.
Required Methods§
Sourcefn analyze(
&self,
plan: LogicalPlan,
config: &ConfigOptions,
) -> Result<LogicalPlan, DataFusionError>
fn analyze( &self, plan: LogicalPlan, config: &ConfigOptions, ) -> Result<LogicalPlan, DataFusionError>
Rewrite plan