Skip to content

Commit 9dbb30d

Browse files
committed
substitute only on agg metric
1 parent 0b95c4e commit 9dbb30d

File tree

1 file changed

+6
-8
lines changed
  • x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/aggregate

1 file changed

+6
-8
lines changed

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/aggregate/Avg.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import static java.util.Collections.emptyList;
2929
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.ParamOrdinal.DEFAULT;
3030
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.isType;
31+
import static org.elasticsearch.xpack.esql.core.type.DataType.AGGREGATE_METRIC_DOUBLE;
3132

3233
public class Avg extends AggregateFunction implements SurrogateExpression {
3334
public static final NamedWriteableRegistry.Entry ENTRY = new NamedWriteableRegistry.Entry(Expression.class, "Avg", Avg::new);
@@ -65,7 +66,7 @@ public Avg(Source source, Expression field, Expression filter) {
6566
protected Expression.TypeResolution resolveType() {
6667
return isType(
6768
field(),
68-
dt -> dt.isNumeric() && dt != DataType.UNSIGNED_LONG || dt == DataType.AGGREGATE_METRIC_DOUBLE,
69+
dt -> dt.isNumeric() && dt != DataType.UNSIGNED_LONG || dt == AGGREGATE_METRIC_DOUBLE,
6970
sourceText(),
7071
DEFAULT,
7172
"aggregate_metric_double or numeric except unsigned_long or counter types"
@@ -108,12 +109,9 @@ public Expression surrogate() {
108109
if (field.foldable()) {
109110
return new MvAvg(s, field);
110111
}
111-
Expression sum = new Sum(s, field, filter()).surrogate() == null
112-
? new Sum(s, field, filter())
113-
: new Sum(s, field, filter()).surrogate();
114-
Expression count = new Count(s, field, filter()).surrogate() == null
115-
? new Count(s, field, filter())
116-
: new Count(s, field, filter()).surrogate();
117-
return new Div(s, sum, count, dataType());
112+
if (field.dataType() == AGGREGATE_METRIC_DOUBLE) {
113+
return new Div(s, new Sum(s, field, filter()).surrogate(), new Count(s, field, filter()).surrogate());
114+
}
115+
return new Div(s, new Sum(s, field, filter()), new Count(s, field, filter()), dataType());
118116
}
119117
}

0 commit comments

Comments
 (0)