Skip to content

Commit 2cab7d0

Browse files
refactor simplify_inner loop
1 parent 90be391 commit 2cab7d0

1 file changed

Lines changed: 6 additions & 17 deletions

File tree

datafusion/optimizer/src/simplify_expressions/expr_simplifier.rs

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -191,23 +191,12 @@ impl<S: SimplifyInfo> ExprSimplifier<S> {
191191

192192
let mut num_iterations = 0;
193193
loop {
194-
let result = expr.rewrite(&mut const_evaluator)?;
195-
let mut transformed = result.transformed;
196-
expr = result.data;
197-
198-
let result = expr.rewrite(&mut simplifier)?;
199-
transformed |= result.transformed;
200-
expr = result.data;
201-
202-
let result = expr.rewrite(&mut guarantee_rewriter)?;
203-
transformed |= result.transformed;
204-
expr = result.data;
205-
206-
// shorten inlist should be started after other inlist rules are applied
207-
let result = expr.rewrite(&mut shorten_in_list_simplifier)?;
208-
transformed |= result.transformed;
209-
expr = result.data;
210-
194+
let Transformed { data, transformed, .. } = expr
195+
.rewrite(&mut const_evaluator)?
196+
.transform_data(|expr| expr.rewrite(&mut simplifier))?
197+
.transform_data(|expr| expr.rewrite(&mut guarantee_rewriter))?
198+
.transform_data(|expr| expr.rewrite(&mut shorten_in_list_simplifier))?;
199+
expr = data;
211200
num_iterations += 1;
212201
if !transformed || num_iterations >= self.max_simplifier_iterations {
213202
return Ok((expr, num_iterations));

0 commit comments

Comments
 (0)