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

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

commit dd757cdfe0a6b19fbace16108908275f49f771c7
Author: Jinrui.Zhang <[email protected]>
AuthorDate: Thu Jun 2 11:31:35 2022 +0800

    remove duplicated InputExpression for GroupByLevel
---
 .../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