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 f7b4ed0ae1 Minor: Avoid copying all expressions in check_plan (#9974)
f7b4ed0ae1 is described below
commit f7b4ed0ae1382fc10498c053597c202974753514
Author: Andrew Lamb <[email protected]>
AuthorDate: Sun Apr 7 00:55:27 2024 -0400
Minor: Avoid copying all expressions in check_plan (#9974)
---
datafusion/optimizer/src/analyzer/mod.rs | 24 +++++++++++++-----------
1 file changed, 13 insertions(+), 11 deletions(-)
diff --git a/datafusion/optimizer/src/analyzer/mod.rs
b/datafusion/optimizer/src/analyzer/mod.rs
index ae61aea997..c7eb6e895d 100644
--- a/datafusion/optimizer/src/analyzer/mod.rs
+++ b/datafusion/optimizer/src/analyzer/mod.rs
@@ -26,7 +26,6 @@ use datafusion_common::{DataFusionError, Result};
use datafusion_expr::expr::Exists;
use datafusion_expr::expr::InSubquery;
use datafusion_expr::expr_rewriter::FunctionRewrite;
-use datafusion_expr::utils::inspect_expr_pre;
use datafusion_expr::{Expr, LogicalPlan};
use crate::analyzer::count_wildcard_rule::CountWildcardRule;
@@ -156,18 +155,21 @@ impl Analyzer {
/// Do necessary check and fail the invalid plan
fn check_plan(plan: &LogicalPlan) -> Result<()> {
plan.apply(&mut |plan: &LogicalPlan| {
- for expr in plan.expressions().iter() {
+ plan.inspect_expressions(|expr| {
// recursively look for subqueries
- inspect_expr_pre(expr, |expr| match expr {
- Expr::Exists(Exists { subquery, .. })
- | Expr::InSubquery(InSubquery { subquery, .. })
- | Expr::ScalarSubquery(subquery) => {
- check_subquery_expr(plan, &subquery.subquery, expr)
- }
- _ => Ok(()),
+ expr.apply(&mut |expr| {
+ match expr {
+ Expr::Exists(Exists { subquery, .. })
+ | Expr::InSubquery(InSubquery { subquery, .. })
+ | Expr::ScalarSubquery(subquery) => {
+ check_subquery_expr(plan, &subquery.subquery, expr)?;
+ }
+ _ => {}
+ };
+ Ok(TreeNodeRecursion::Continue)
})?;
- }
-
+ Ok::<(), DataFusionError>(())
+ })?;
Ok(TreeNodeRecursion::Continue)
})?;