This is an automated email from the ASF dual-hosted git repository.

hui pushed a commit to branch lmh/fixGroupByLevelView
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit acab6e0cc291d1f44565c0f9773696d5078f4235
Author: Minghui Liu <[email protected]>
AuthorDate: Mon May 20 00:13:22 2024 +0800

    fix
---
 .../iotdb/db/queryengine/plan/analyze/GroupByLevelHelper.java  |  2 --
 .../queryengine/plan/planner/distribution/SourceRewriter.java  | 10 ++++++----
 .../plan/planner/plan/parameter/AggregationDescriptor.java     |  2 +-
 .../plan/parameter/CrossSeriesAggregationDescriptor.java       |  4 ++++
 4 files changed, 11 insertions(+), 7 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/GroupByLevelHelper.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/GroupByLevelHelper.java
index 5f21cd65885..a210b9627ef 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/GroupByLevelHelper.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/GroupByLevelHelper.java
@@ -103,8 +103,6 @@ public class GroupByLevelHelper {
               path -> transformPathByLevels(isCountStar, path));
       groupedOutputAggregationExpression = 
normalizeExpression(groupedOutputAggregationExpression);
       analyzeExpressionType(analysis, groupedOutputAggregationExpression);
-
-      rawAggregationExpression = 
ExpressionAnalyzer.normalizeExpression(rawAggregationExpression);
       analyzeExpressionType(analysis, rawAggregationExpression);
 
       groupedAggregationExpressionToRawExpressionsMap
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SourceRewriter.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SourceRewriter.java
index 3ee8167c662..e8c0ee1f5dc 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SourceRewriter.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SourceRewriter.java
@@ -1556,12 +1556,14 @@ public class SourceRewriter extends 
BaseSourceRewriter<DistributionPlanContext>
           
descriptorExpressions.addAll(originalDescriptor.getOutputExpressions());
         }
 
-        for (String groupedInputExpressionString :
-            originalDescriptor.getGroupedInputExpressionStrings()) {
+        for (List<Expression> groupedInputExpressions :
+            originalDescriptor.getGroupedInputExpressions()) {
+          String groupedInputExpressionsString =
+              originalDescriptor.getInputString(groupedInputExpressions);
           List<Expression> inputExpressions =
-              childrenExpressionMap.get(groupedInputExpressionString);
+              childrenExpressionMap.get(groupedInputExpressionsString);
           if (inputExpressions != null && !inputExpressions.isEmpty()) {
-            descriptorExpressions.addAll(inputExpressions);
+            descriptorExpressions.addAll(groupedInputExpressions);
           }
         }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationDescriptor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationDescriptor.java
index d266de50aaa..364769f0f41 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationDescriptor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationDescriptor.java
@@ -263,7 +263,7 @@ public class AggregationDescriptor {
     return Collections.singletonList(getInputString(inputExpressions));
   }
 
-  protected String getInputString(List<Expression> expressions) {
+  public String getInputString(List<Expression> expressions) {
     StringBuilder builder = new StringBuilder();
     if (!(expressions.size() == 0)) {
       builder.append(expressions.get(0).getExpressionString());
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/CrossSeriesAggregationDescriptor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/CrossSeriesAggregationDescriptor.java
index bc50d59d334..d986baf2faa 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/CrossSeriesAggregationDescriptor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/CrossSeriesAggregationDescriptor.java
@@ -168,6 +168,10 @@ public class CrossSeriesAggregationDescriptor extends 
AggregationDescriptor {
     return 
groupedInputExpressions.stream().map(this::getInputString).collect(Collectors.toList());
   }
 
+  public List<List<Expression>> getGroupedInputExpressions() {
+    return groupedInputExpressions;
+  }
+
   public StringBuilder getOutputExpressionsAsBuilder() {
     StringBuilder builder = new 
StringBuilder(outputExpressions.get(0).getExpressionString());
     for (int i = 1; i < outputExpressions.size(); i++) {

Reply via email to