Optimizes all predicates. @param cc compilation context @param root root expression @return whether the evaluation can be skipped @throws QueryException query exception
(final CompileContext cc, final Expr root)
| 91 | * @throws QueryException query exception |
| 92 | */ |
| 93 | protected final boolean optimize(final CompileContext cc, final Expr root) throws QueryException { |
| 94 | return cc.ok(root, true, () -> { |
| 95 | final ExprList list = new ExprList(exprs.length); |
| 96 | for(final Expr expr : exprs) optimize(expr, list, root, cc); |
| 97 | exprs = list.finish(); |
| 98 | return optimizeEbv(false, true, cc); |
| 99 | }) || optimizeType(root); |
| 100 | } |
| 101 | |
| 102 | /** |
| 103 | * Optimizes a predicate. |