Skip to content

Commit efeb8e2

Browse files
committed
Prompt users that multiple agg is not supported
Signed-off-by: Yuanchun Shen <[email protected]>
1 parent 585cd51 commit efeb8e2

File tree

1 file changed

+19
-18
lines changed

1 file changed

+19
-18
lines changed

ppl/src/main/java/org/opensearch/sql/ppl/parser/AstBuilder.java

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -407,16 +407,7 @@ private ReplacePair buildReplacePair(OpenSearchPPLParser.ReplacePairContext ctx)
407407
/** Stats command. */
408408
@Override
409409
public UnresolvedPlan visitStatsCommand(StatsCommandContext ctx) {
410-
ImmutableList.Builder<UnresolvedExpression> aggListBuilder = new ImmutableList.Builder<>();
411-
for (OpenSearchPPLParser.StatsAggTermContext aggCtx : ctx.statsAggTerm()) {
412-
UnresolvedExpression aggExpression = internalVisitExpression(aggCtx.statsFunction());
413-
String name =
414-
aggCtx.alias == null
415-
? getTextInQuery(aggCtx)
416-
: StringUtils.unquoteIdentifier(aggCtx.alias.getText());
417-
Alias alias = new Alias(name, aggExpression);
418-
aggListBuilder.add(alias);
419-
}
410+
List<UnresolvedExpression> aggregations = parseAggTerms(ctx.statsAggTerm());
420411

421412
List<UnresolvedExpression> groupList =
422413
Optional.ofNullable(ctx.statsByClause())
@@ -441,7 +432,7 @@ public UnresolvedPlan visitStatsCommand(StatsCommandContext ctx) {
441432

442433
Aggregation aggregation =
443434
new Aggregation(
444-
aggListBuilder.build(),
435+
aggregations,
445436
Collections.emptyList(),
446437
groupList,
447438
span,
@@ -614,8 +605,23 @@ public UnresolvedPlan visitChartCommand(OpenSearchPPLParser.ChartCommandContext
614605
UnresolvedExpression columnSplit =
615606
ctx.columnSplit() == null ? null : internalVisitExpression(ctx.columnSplit());
616607
List<Argument> arguments = ArgumentFactory.getArgumentList(ctx);
608+
List<UnresolvedExpression> aggList = parseAggTerms(ctx.statsAggTerm());
609+
if (aggList.size() > 1) {
610+
throw new IllegalArgumentException(
611+
"Chart command does not support multiple aggregation functions yet");
612+
}
613+
return Chart.builder()
614+
.rowSplit(rowSplit)
615+
.columnSplit(columnSplit)
616+
.aggregationFunctions(aggList)
617+
.arguments(arguments)
618+
.build();
619+
}
620+
621+
private List<UnresolvedExpression> parseAggTerms(
622+
List<OpenSearchPPLParser.StatsAggTermContext> statsAggTermContexts) {
617623
ImmutableList.Builder<UnresolvedExpression> aggListBuilder = new ImmutableList.Builder<>();
618-
for (OpenSearchPPLParser.StatsAggTermContext aggCtx : ctx.statsAggTerm()) {
624+
for (OpenSearchPPLParser.StatsAggTermContext aggCtx : statsAggTermContexts) {
619625
UnresolvedExpression aggExpression = internalVisitExpression(aggCtx.statsFunction());
620626
String name =
621627
aggCtx.alias == null
@@ -624,12 +630,7 @@ public UnresolvedPlan visitChartCommand(OpenSearchPPLParser.ChartCommandContext
624630
Alias alias = new Alias(name, aggExpression);
625631
aggListBuilder.add(alias);
626632
}
627-
return Chart.builder()
628-
.rowSplit(rowSplit)
629-
.columnSplit(columnSplit)
630-
.aggregationFunctions(aggListBuilder.build())
631-
.arguments(arguments)
632-
.build();
633+
return aggListBuilder.build();
633634
}
634635

635636
/** Timechart command. */

0 commit comments

Comments
 (0)