diff --git a/modules/siddhi-core/src/main/java/io/siddhi/core/aggregation/AggregationRuntime.java b/modules/siddhi-core/src/main/java/io/siddhi/core/aggregation/AggregationRuntime.java index 8290acd769..5482b8b014 100644 --- a/modules/siddhi-core/src/main/java/io/siddhi/core/aggregation/AggregationRuntime.java +++ b/modules/siddhi-core/src/main/java/io/siddhi/core/aggregation/AggregationRuntime.java @@ -520,14 +520,18 @@ public CompiledCondition compileExpression(Expression expression, Within within, withinExpressionTable = withinExpression; } + List queryGroupByListCopy = new ArrayList<>(queryGroupByList); + Variable timestampVariable = new Variable(AGG_START_TIMESTAMP_COL); - List queryGroupByNamesList = queryGroupByList.stream() + List queryGroupByNamesList = queryGroupByListCopy.stream() .map(Variable::getAttributeName) .collect(Collectors.toList()); boolean queryGroupByContainsTimestamp = queryGroupByNamesList.remove(AGG_START_TIMESTAMP_COL); - boolean isQueryGroupBySameAsAggGroupBy = queryGroupByList.isEmpty() || - (queryGroupByList.contains(timestampVariable) && queryGroupByNamesList.equals(groupByVariablesList)); + boolean isQueryGroupBySameAsAggGroupBy = + queryGroupByListCopy.isEmpty() || + (queryGroupByListCopy.contains(timestampVariable) && + queryGroupByNamesList.equals(groupByVariablesList)); List variableExpExecutorsForTableLookups = new ArrayList<>(); @@ -544,9 +548,9 @@ public CompiledCondition compileExpression(Expression expression, Within within, groupByList.add(new Variable(AGG_START_TIMESTAMP_COL)); } //Remove timestamp to process the rest - queryGroupByList.remove(timestampVariable); + queryGroupByListCopy.remove(timestampVariable); } - for (Variable queryGroupBy : queryGroupByList) { + for (Variable queryGroupBy : queryGroupByListCopy) { String referenceId = queryGroupBy.getStreamId(); if (referenceId == null) { if (tableAttributesNameList.contains(queryGroupBy.getAttributeName())) {