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

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


The following commit(s) were added to refs/heads/master by this push:
     new 5527c66f67 Fix duplicated InputExpression in GroupByLevelNode (#6143)
5527c66f67 is described below

commit 5527c66f67470b49f612869ba89837fab66ef52d
Author: Zhang.Jinrui <[email protected]>
AuthorDate: Thu Jun 2 14:35:26 2022 +0800

    Fix duplicated InputExpression in GroupByLevelNode (#6143)
---
 .../iotdb/db/mpp/plan/planner/distribution/SourceRewriter.java | 10 +++++-----
 .../iotdb/db/mpp/plan/planner/plan/node/PlanGraphPrinter.java  |  3 ++-
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/SourceRewriter.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/SourceRewriter.java
index 41cda1a735..c646930fc1 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/SourceRewriter.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/SourceRewriter.java
@@ -650,25 +650,25 @@ public class SourceRewriter extends 
SimplePlanNodeRewriter<DistributionPlanConte
       // AggregationDescriptor
       List<GroupByLevelDescriptor> descriptorList = new ArrayList<>();
       for (GroupByLevelDescriptor originalDescriptor : 
handle.getGroupByLevelDescriptors()) {
-        List<Expression> descriptorExpression = new ArrayList<>();
+        Set<Expression> descriptorExpressions = new HashSet<>();
         for (String childColumn : childrenOutputColumns) {
           // If this condition matched, the childColumn should come from 
GroupByLevelNode
           if (isAggColumnMatchExpression(childColumn, 
originalDescriptor.getOutputExpression())) {
-            descriptorExpression.add(originalDescriptor.getOutputExpression());
+            
descriptorExpressions.add(originalDescriptor.getOutputExpression());
             continue;
           }
           for (Expression exp : originalDescriptor.getInputExpressions()) {
             if (isAggColumnMatchExpression(childColumn, exp)) {
-              descriptorExpression.add(exp);
+              descriptorExpressions.add(exp);
             }
           }
         }
-        if (descriptorExpression.size() == 0) {
+        if (descriptorExpressions.size() == 0) {
           continue;
         }
         GroupByLevelDescriptor descriptor = originalDescriptor.deepClone();
         descriptor.setStep(level == 0 ? AggregationStep.FINAL : 
AggregationStep.INTERMEDIATE);
-        descriptor.setInputExpressions(descriptorExpression);
+        descriptor.setInputExpressions(new ArrayList<>(descriptorExpressions));
         descriptorList.add(descriptor);
         LogicalPlanBuilder.updateTypeProviderByPartialAggregation(
             descriptor, analysis.getTypeProvider());
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanGraphPrinter.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanGraphPrinter.java
index 4e3ce79d52..72345865a1 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanGraphPrinter.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanGraphPrinter.java
@@ -173,7 +173,8 @@ public class PlanGraphPrinter extends 
PlanVisitor<List<String>, PlanGraphPrinter
       boxValue.add(
           String.format(
               "Aggregator-%d: %s, %s", i, descriptor.getAggregationType(), 
descriptor.getStep()));
-      boxValue.add(String.format("Output-%d: %s", i, 
descriptor.getOutputColumnNames()));
+      boxValue.add(String.format("  Output: %s", 
descriptor.getOutputColumnNames()));
+      boxValue.add(String.format("  Input: %s", 
descriptor.getInputExpressions()));
     }
     return render(node, boxValue, context);
   }

Reply via email to