6
6
7
7
package org .elasticsearch .xpack .eql .optimizer ;
8
8
9
+ import org .elasticsearch .xpack .ql .optimizer .OptimizerRules .BooleanLiteralsOnTheRight ;
10
+ import org .elasticsearch .xpack .ql .optimizer .OptimizerRules .BooleanSimplification ;
11
+ import org .elasticsearch .xpack .ql .optimizer .OptimizerRules .CombineBinaryComparisons ;
12
+ import org .elasticsearch .xpack .ql .optimizer .OptimizerRules .ConstantFolding ;
13
+ import org .elasticsearch .xpack .ql .optimizer .OptimizerRules .PropagateEquals ;
14
+ import org .elasticsearch .xpack .ql .optimizer .OptimizerRules .PruneFilters ;
15
+ import org .elasticsearch .xpack .ql .optimizer .OptimizerRules .PruneLiteralsInOrderBy ;
16
+ import org .elasticsearch .xpack .ql .optimizer .OptimizerRules .SetAsOptimized ;
9
17
import org .elasticsearch .xpack .ql .plan .logical .LogicalPlan ;
10
18
import org .elasticsearch .xpack .ql .rule .RuleExecutor ;
11
19
12
- import static java .util .Collections . emptyList ;
20
+ import java .util .Arrays ;
13
21
14
22
public class Optimizer extends RuleExecutor <LogicalPlan > {
15
23
@@ -19,6 +27,22 @@ public LogicalPlan optimize(LogicalPlan verified) {
19
27
20
28
@ Override
21
29
protected Iterable <RuleExecutor <LogicalPlan >.Batch > batches () {
22
- return emptyList ();
30
+ Batch operators = new Batch ("Operator Optimization" ,
31
+ new ConstantFolding (),
32
+ // boolean
33
+ new BooleanSimplification (),
34
+ new BooleanLiteralsOnTheRight (),
35
+ // needs to occur before BinaryComparison combinations
36
+ new PropagateEquals (),
37
+ new CombineBinaryComparisons (),
38
+ // prune/elimination
39
+ new PruneFilters (),
40
+ new PruneLiteralsInOrderBy ()
41
+ );
42
+
43
+ Batch label = new Batch ("Set as Optimized" , Limiter .ONCE ,
44
+ new SetAsOptimized ());
45
+
46
+ return Arrays .asList (operators , label );
23
47
}
24
48
}
0 commit comments