Hook in the optimizer rules (#52172)
(cherry picked from commit 1f90d8cc56052fbf2af604e72f9f5ca73f5e75d5)
This commit is contained in:
parent
a21e2b211a
commit
74e7777cbb
|
@ -6,10 +6,18 @@
|
||||||
|
|
||||||
package org.elasticsearch.xpack.eql.optimizer;
|
package org.elasticsearch.xpack.eql.optimizer;
|
||||||
|
|
||||||
|
import org.elasticsearch.xpack.ql.optimizer.OptimizerRules.BooleanLiteralsOnTheRight;
|
||||||
|
import org.elasticsearch.xpack.ql.optimizer.OptimizerRules.BooleanSimplification;
|
||||||
|
import org.elasticsearch.xpack.ql.optimizer.OptimizerRules.CombineBinaryComparisons;
|
||||||
|
import org.elasticsearch.xpack.ql.optimizer.OptimizerRules.ConstantFolding;
|
||||||
|
import org.elasticsearch.xpack.ql.optimizer.OptimizerRules.PropagateEquals;
|
||||||
|
import org.elasticsearch.xpack.ql.optimizer.OptimizerRules.PruneFilters;
|
||||||
|
import org.elasticsearch.xpack.ql.optimizer.OptimizerRules.PruneLiteralsInOrderBy;
|
||||||
|
import org.elasticsearch.xpack.ql.optimizer.OptimizerRules.SetAsOptimized;
|
||||||
import org.elasticsearch.xpack.ql.plan.logical.LogicalPlan;
|
import org.elasticsearch.xpack.ql.plan.logical.LogicalPlan;
|
||||||
import org.elasticsearch.xpack.ql.rule.RuleExecutor;
|
import org.elasticsearch.xpack.ql.rule.RuleExecutor;
|
||||||
|
|
||||||
import static java.util.Collections.emptyList;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class Optimizer extends RuleExecutor<LogicalPlan> {
|
public class Optimizer extends RuleExecutor<LogicalPlan> {
|
||||||
|
|
||||||
|
@ -19,6 +27,22 @@ public class Optimizer extends RuleExecutor<LogicalPlan> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Iterable<RuleExecutor<LogicalPlan>.Batch> batches() {
|
protected Iterable<RuleExecutor<LogicalPlan>.Batch> batches() {
|
||||||
return emptyList();
|
Batch operators = new Batch("Operator Optimization",
|
||||||
|
new ConstantFolding(),
|
||||||
|
// boolean
|
||||||
|
new BooleanSimplification(),
|
||||||
|
new BooleanLiteralsOnTheRight(),
|
||||||
|
// needs to occur before BinaryComparison combinations
|
||||||
|
new PropagateEquals(),
|
||||||
|
new CombineBinaryComparisons(),
|
||||||
|
// prune/elimination
|
||||||
|
new PruneFilters(),
|
||||||
|
new PruneLiteralsInOrderBy()
|
||||||
|
);
|
||||||
|
|
||||||
|
Batch label = new Batch("Set as Optimized", Limiter.ONCE,
|
||||||
|
new SetAsOptimized());
|
||||||
|
|
||||||
|
return Arrays.asList(operators, label);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue