Skip to content

Commit

Permalink
Minor: Avoid copying all expressions in check_plan (#9974)
Browse files Browse the repository at this point in the history
  • Loading branch information
alamb authored Apr 7, 2024
1 parent 2f1c3ab commit f7b4ed0
Showing 1 changed file with 13 additions and 11 deletions.
24 changes: 13 additions & 11 deletions datafusion/optimizer/src/analyzer/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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)
})?;

Expand Down

0 comments on commit f7b4ed0

Please sign in to comment.