|
7 | 7 |
|
8 | 8 | package org.elasticsearch.xpack.esql.expression.function.scalar.nulls;
|
9 | 9 |
|
10 |
| -import org.apache.lucene.util.BytesRef; |
11 | 10 | import org.elasticsearch.compute.data.Block;
|
12 | 11 | import org.elasticsearch.compute.data.BooleanBlock;
|
13 |
| -import org.elasticsearch.compute.data.ElementType; |
14 | 12 | import org.elasticsearch.compute.data.Page;
|
15 | 13 | import org.elasticsearch.compute.operator.DriverContext;
|
16 | 14 | import org.elasticsearch.compute.operator.EvalOperator;
|
|
28 | 26 | * This class is generated. Edit {@code X-InEvaluator.java.st} instead.
|
29 | 27 | */
|
30 | 28 | abstract sealed class CoalesceBooleanEvaluator implements EvalOperator.ExpressionEvaluator permits
|
31 |
| - CoalesceBooleanEvaluator.CoalesceEagerEvaluator, // |
32 |
| - CoalesceBooleanEvaluator.CoalesceLazyEvaluator { |
33 |
| - static ExpressionEvaluator.Factory toEvaluator(EvaluatorMapper.ToEvaluator toEvaluator, List<Expression> children) { |
34 |
| - List<ExpressionEvaluator.Factory> childEvaluators = children.stream().map(toEvaluator::apply).toList(); |
35 |
| - if (childEvaluators.stream().allMatch(ExpressionEvaluator.Factory::eagerEvalSafeInLazy)) { |
36 |
| - return new ExpressionEvaluator.Factory() { |
37 |
| - @Override |
38 |
| - public ExpressionEvaluator get(DriverContext context) { |
39 |
| - return new CoalesceEagerEvaluator( |
40 |
| - context, |
41 |
| - childEvaluators.stream().map(x -> x.get(context)).toList() |
42 |
| - ); |
43 |
| - } |
| 29 | + CoalesceBooleanEvaluator.CoalesceBooleanEagerEvaluator, // |
| 30 | + CoalesceBooleanEvaluator.CoalesceBooleanLazyEvaluator { |
44 | 31 |
|
45 |
| - @Override |
46 |
| - public String toString() { |
47 |
| - return "CoalesceEagerEvaluator[values=" + childEvaluators + ']'; |
48 |
| - } |
49 |
| - }; |
50 |
| - } |
| 32 | + static ExpressionEvaluator.Factory toEvaluator(EvaluatorMapper.ToEvaluator toEvaluator, List<Expression> children) { |
| 33 | + List<ExpressionEvaluator.Factory> childEvaluators = children.stream().map(toEvaluator::apply).toList(); |
| 34 | + if (childEvaluators.stream().allMatch(ExpressionEvaluator.Factory::eagerEvalSafeInLazy)) { |
51 | 35 | return new ExpressionEvaluator.Factory() {
|
52 | 36 | @Override
|
53 | 37 | public ExpressionEvaluator get(DriverContext context) {
|
54 |
| - return new CoalesceLazyEvaluator( |
55 |
| - context, |
56 |
| - childEvaluators.stream().map(x -> x.get(context)).toList() |
57 |
| - ); |
| 38 | + return new CoalesceBooleanEagerEvaluator(context, childEvaluators.stream().map(x -> x.get(context)).toList()); |
58 | 39 | }
|
59 | 40 |
|
60 | 41 | @Override
|
61 | 42 | public String toString() {
|
62 |
| - return "CoalesceLazyEvaluator[values=" + childEvaluators + ']'; |
| 43 | + return "CoalesceBooleanEagerEvaluator[values=" + childEvaluators + ']'; |
63 | 44 | }
|
64 | 45 | };
|
65 | 46 | }
|
| 47 | + return new ExpressionEvaluator.Factory() { |
| 48 | + @Override |
| 49 | + public ExpressionEvaluator get(DriverContext context) { |
| 50 | + return new CoalesceBooleanLazyEvaluator(context, childEvaluators.stream().map(x -> x.get(context)).toList()); |
| 51 | + } |
| 52 | + |
| 53 | + @Override |
| 54 | + public String toString() { |
| 55 | + return "CoalesceBooleanLazyEvaluator[values=" + childEvaluators + ']'; |
| 56 | + } |
| 57 | + }; |
| 58 | + } |
66 | 59 |
|
67 | 60 | protected final DriverContext driverContext;
|
68 | 61 | protected final List<EvalOperator.ExpressionEvaluator> evaluators;
|
@@ -144,13 +137,13 @@ public final void close() {
|
144 | 137 | * Evaluates {@code COALESCE} eagerly per position if entire-block evaluation fails.
|
145 | 138 | * First we evaluate all remaining evaluators, and then we pluck the first non-null
|
146 | 139 | * value from each one. This is <strong>much</strong> faster than
|
147 |
| - * {@link CoalesceLazyEvaluator} but will include spurious warnings if any of the |
| 140 | + * {@link CoalesceBooleanLazyEvaluator} but will include spurious warnings if any of the |
148 | 141 | * evaluators make them so we only use it for evaluators that are
|
149 | 142 | * {@link Factory#eagerEvalSafeInLazy safe} to evaluate eagerly
|
150 | 143 | * in a lazy environment.
|
151 | 144 | */
|
152 |
| - static final class CoalesceEagerEvaluator extends CoalesceBooleanEvaluator { |
153 |
| - CoalesceEagerEvaluator(DriverContext driverContext, List<EvalOperator.ExpressionEvaluator> evaluators) { |
| 145 | + static final class CoalesceBooleanEagerEvaluator extends CoalesceBooleanEvaluator { |
| 146 | + CoalesceBooleanEagerEvaluator(DriverContext driverContext, List<EvalOperator.ExpressionEvaluator> evaluators) { |
154 | 147 | super(driverContext, evaluators);
|
155 | 148 | }
|
156 | 149 |
|
@@ -192,8 +185,8 @@ protected BooleanBlock perPosition(Page page, BooleanBlock lastFullBlock, int fi
|
192 | 185 | * </li>
|
193 | 186 | * </ul>
|
194 | 187 | */
|
195 |
| - static final class CoalesceLazyEvaluator extends CoalesceBooleanEvaluator { |
196 |
| - CoalesceLazyEvaluator(DriverContext driverContext, List<EvalOperator.ExpressionEvaluator> evaluators) { |
| 188 | + static final class CoalesceBooleanLazyEvaluator extends CoalesceBooleanEvaluator { |
| 189 | + CoalesceBooleanLazyEvaluator(DriverContext driverContext, List<EvalOperator.ExpressionEvaluator> evaluators) { |
197 | 190 | super(driverContext, evaluators);
|
198 | 191 | }
|
199 | 192 |
|
|
0 commit comments