1313import org .elasticsearch .xpack .esql .EsqlIllegalArgumentException ;
1414import org .elasticsearch .xpack .esql .core .expression .Alias ;
1515import org .elasticsearch .xpack .esql .core .expression .Attribute ;
16- import org .elasticsearch .xpack .esql .core .expression .AttributeMap ;
1716import org .elasticsearch .xpack .esql .core .expression .Expression ;
1817import org .elasticsearch .xpack .esql .core .expression .FieldAttribute ;
1918import org .elasticsearch .xpack .esql .core .expression .MetadataAttribute ;
2322import org .elasticsearch .xpack .esql .core .type .DataType ;
2423import org .elasticsearch .xpack .esql .expression .function .aggregate .AggregateFunction ;
2524
26- import java .util .HashSet ;
25+ import java .util .ArrayList ;
2726import java .util .List ;
28- import java .util .Set ;
2927import java .util .stream .Stream ;
3028
3129/**
@@ -42,17 +40,12 @@ public static List<NamedExpression> mapGrouping(List<? extends NamedExpression>
4240 }
4341
4442 private static List <NamedExpression > doMapping (List <? extends NamedExpression > aggregates , boolean grouping ) {
45- Set <Expression > seen = new HashSet <>();
46- AttributeMap .Builder <NamedExpression > attrToExpressionsBuilder = AttributeMap .builder ();
43+ List <NamedExpression > namedExpressions = new ArrayList <>();
4744 for (NamedExpression agg : aggregates ) {
4845 Expression inner = Alias .unwrap (agg );
49- if (seen .add (inner )) {
50- for (var ne : computeEntryForAgg (agg .name (), inner , grouping )) {
51- attrToExpressionsBuilder .put (ne .toAttribute (), ne );
52- }
53- }
46+ namedExpressions .addAll (computeEntryForAgg (agg .name (), inner , grouping ));
5447 }
55- return attrToExpressionsBuilder . build (). values (). stream (). toList () ;
48+ return namedExpressions ;
5649 }
5750
5851 public static List <IntermediateStateDesc > intermediateStateDesc (AggregateFunction fn , boolean grouping ) {
0 commit comments