Skip to content

Commit

Permalink
Exclude some nodes which expressions are not related to their schema.
Browse files Browse the repository at this point in the history
  • Loading branch information
viirya committed Nov 20, 2021
1 parent eec7cbe commit 575801b
Showing 1 changed file with 18 additions and 9 deletions.
27 changes: 18 additions & 9 deletions datafusion/src/optimizer/constant_folding.rs
Original file line number Diff line number Diff line change
Expand Up @@ -106,16 +106,25 @@ impl OptimizerRule for ConstantFolding {
.rewrite(&mut const_evaluator)?
.rewrite(&mut simplifier)?;

let new_name = &new_e.name(plan.schema());

if let (Ok(expr_name), Ok(new_expr_name)) = (name, new_name) {
if expr_name != new_expr_name {
Ok(new_e.alias(expr_name))
} else {
Ok(new_e)
match &plan {
LogicalPlan::Filter { .. }
| LogicalPlan::Limit { .. }
| LogicalPlan::Repartition { .. } => Ok(new_e),
_ => {
let new_name = &new_e.name(plan.schema());

if let (Ok(expr_name), Ok(new_expr_name)) =
(name, new_name)
{
if expr_name != new_expr_name {
Ok(new_e.alias(expr_name))
} else {
Ok(new_e)
}
} else {
Ok(new_e)
}
}
} else {
Ok(new_e)
}
})
.collect::<Result<Vec<_>>>()?;
Expand Down

0 comments on commit 575801b

Please sign in to comment.