You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ja...@apache.org on 2023/06/15 16:18:37 UTC
[arrow-datafusion] branch main updated: minor: `with_new_inputs` replace `from_plan` (#6680)
This is an automated email from the ASF dual-hosted git repository.
jakevin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git
The following commit(s) were added to refs/heads/main by this push:
new 638aba6335 minor: `with_new_inputs` replace `from_plan` (#6680)
638aba6335 is described below
commit 638aba63359049aaf04ff58eb33c3a7a2ec55c29
Author: jakevin <ja...@gmail.com>
AuthorDate: Fri Jun 16 00:18:31 2023 +0800
minor: `with_new_inputs` replace `from_plan` (#6680)
---
datafusion/expr/src/logical_plan/builder.rs | 6 ++----
datafusion/optimizer/src/analyzer/type_coercion.rs | 11 ++---------
datafusion/optimizer/src/eliminate_outer_join.rs | 7 ++-----
datafusion/optimizer/src/optimizer.rs | 2 +-
datafusion/optimizer/src/push_down_filter.rs | 3 +--
datafusion/optimizer/src/utils.rs | 4 +---
6 files changed, 9 insertions(+), 24 deletions(-)
diff --git a/datafusion/expr/src/logical_plan/builder.rs b/datafusion/expr/src/logical_plan/builder.rs
index 99489637da..08a167ff0d 100644
--- a/datafusion/expr/src/logical_plan/builder.rs
+++ b/datafusion/expr/src/logical_plan/builder.rs
@@ -23,7 +23,7 @@ use crate::expr_rewriter::{
rewrite_sort_cols_by_aggs,
};
use crate::type_coercion::binary::comparison_coercion;
-use crate::utils::{columnize_expr, compare_sort_expr, exprlist_to_fields, from_plan};
+use crate::utils::{columnize_expr, compare_sort_expr, exprlist_to_fields};
use crate::{and, binary_expr, DmlStatement, Operator, WriteOp};
use crate::{
logical_plan::{
@@ -453,9 +453,7 @@ impl LogicalPlanBuilder {
)
})
.collect::<Result<Vec<_>>>()?;
-
- let expr = curr_plan.expressions();
- from_plan(&curr_plan, &expr, &new_inputs)
+ curr_plan.with_new_inputs(&new_inputs)
}
}
}
diff --git a/datafusion/optimizer/src/analyzer/type_coercion.rs b/datafusion/optimizer/src/analyzer/type_coercion.rs
index 312136f4a7..31f3c119be 100644
--- a/datafusion/optimizer/src/analyzer/type_coercion.rs
+++ b/datafusion/optimizer/src/analyzer/type_coercion.rs
@@ -43,7 +43,7 @@ use datafusion_expr::utils::from_plan;
use datafusion_expr::{
aggregate_function, is_false, is_not_false, is_not_true, is_not_unknown, is_true,
is_unknown, type_coercion, AggregateFunction, BuiltinScalarFunction, Expr,
- LogicalPlan, Operator, Projection, WindowFrame, WindowFrameBound, WindowFrameUnits,
+ LogicalPlan, Operator, WindowFrame, WindowFrameBound, WindowFrameUnits,
};
use datafusion_expr::{ExprSchemable, Signature};
@@ -109,14 +109,7 @@ fn analyze_internal(
})
.collect::<Result<Vec<_>>>()?;
- // TODO: use from_plan after fix https://github.com/apache/arrow-datafusion/issues/6613
- match &plan {
- LogicalPlan::Projection(_) => Ok(LogicalPlan::Projection(Projection::try_new(
- new_expr,
- Arc::new(new_inputs[0].clone()),
- )?)),
- _ => from_plan(plan, &new_expr, &new_inputs),
- }
+ from_plan(plan, &new_expr, &new_inputs)
}
pub(crate) struct TypeCoercionRewriter {
diff --git a/datafusion/optimizer/src/eliminate_outer_join.rs b/datafusion/optimizer/src/eliminate_outer_join.rs
index 8dfdfae035..e4d57f0209 100644
--- a/datafusion/optimizer/src/eliminate_outer_join.rs
+++ b/datafusion/optimizer/src/eliminate_outer_join.rs
@@ -18,10 +18,7 @@
//! Optimizer rule to eliminate left/right/full join to inner join if possible.
use crate::{OptimizerConfig, OptimizerRule};
use datafusion_common::{Column, DFSchema, Result};
-use datafusion_expr::{
- logical_plan::{Join, JoinType, LogicalPlan},
- utils::from_plan,
-};
+use datafusion_expr::logical_plan::{Join, JoinType, LogicalPlan};
use datafusion_expr::{Expr, Operator};
use crate::optimizer::ApplyOrder;
@@ -109,7 +106,7 @@ impl OptimizerRule for EliminateOuterJoin {
schema: join.schema.clone(),
null_equals_null: join.null_equals_null,
});
- let new_plan = from_plan(plan, &plan.expressions(), &[new_join])?;
+ let new_plan = plan.with_new_inputs(&[new_join])?;
Ok(Some(new_plan))
}
_ => Ok(None),
diff --git a/datafusion/optimizer/src/optimizer.rs b/datafusion/optimizer/src/optimizer.rs
index f2e6c340d7..a933acdffd 100644
--- a/datafusion/optimizer/src/optimizer.rs
+++ b/datafusion/optimizer/src/optimizer.rs
@@ -363,7 +363,7 @@ impl Optimizer {
})
.collect::<Vec<_>>();
- Ok(Some(plan.with_new_inputs(new_inputs.as_slice())?))
+ Ok(Some(plan.with_new_inputs(&new_inputs)?))
}
/// Use a rule to optimize the whole plan.
diff --git a/datafusion/optimizer/src/push_down_filter.rs b/datafusion/optimizer/src/push_down_filter.rs
index 175c6a118c..6492b95f36 100644
--- a/datafusion/optimizer/src/push_down_filter.rs
+++ b/datafusion/optimizer/src/push_down_filter.rs
@@ -748,8 +748,7 @@ impl OptimizerRule for PushDownFilter {
)?),
None => (*agg.input).clone(),
};
- let new_agg =
- from_plan(&filter.input, &filter.input.expressions(), &vec![child])?;
+ let new_agg = filter.input.with_new_inputs(&vec![child])?;
match conjunction(keep_predicates) {
Some(predicate) => LogicalPlan::Filter(Filter::try_new(
predicate,
diff --git a/datafusion/optimizer/src/utils.rs b/datafusion/optimizer/src/utils.rs
index 50f753f8c9..bdef56f61b 100644
--- a/datafusion/optimizer/src/utils.rs
+++ b/datafusion/optimizer/src/utils.rs
@@ -22,7 +22,6 @@ use datafusion_common::{plan_err, Column, DFSchemaRef};
use datafusion_common::{DFSchema, Result};
use datafusion_expr::expr::BinaryExpr;
use datafusion_expr::expr_rewriter::{replace_col, strip_outer_reference};
-use datafusion_expr::utils::from_plan;
use datafusion_expr::{
and,
logical_plan::{Filter, LogicalPlan},
@@ -44,7 +43,6 @@ pub fn optimize_children(
plan: &LogicalPlan,
config: &dyn OptimizerConfig,
) -> Result<Option<LogicalPlan>> {
- let new_exprs = plan.expressions();
let mut new_inputs = Vec::with_capacity(plan.inputs().len());
let mut plan_is_changed = false;
for input in plan.inputs() {
@@ -53,7 +51,7 @@ pub fn optimize_children(
new_inputs.push(new_input.unwrap_or_else(|| input.clone()))
}
if plan_is_changed {
- Ok(Some(from_plan(plan, &new_exprs, &new_inputs)?))
+ Ok(Some(plan.with_new_inputs(&new_inputs)?))
} else {
Ok(None)
}