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

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


The following commit(s) were added to refs/heads/master by this push:
     new 8591257d74 [fix](nereids) parallel instance number is set to 1 
incorrectly (#22748)
8591257d74 is described below

commit 8591257d7494c80fea5a0064b70d706631f9e30e
Author: minghong <engle...@gmail.com>
AuthorDate: Thu Aug 10 10:17:37 2023 +0800

    [fix](nereids) parallel instance number is set to 1 incorrectly (#22748)
    
    make PlanNode.getNumInstance() abstract to force every PlanNode specify how 
to define its numInstance.
    By default, PlanNode.numInstance is 1. PlanNode except exchangeNode should 
not use this default value directly. PlanNode.numInstance is used for PlanNode 
which will change numInstance like exchange node.
---
 .../doris/nereids/glue/translator/PhysicalPlanTranslator.java     | 2 --
 .../src/main/java/org/apache/doris/planner/AggregationNode.java   | 5 -----
 .../src/main/java/org/apache/doris/planner/AssertNumRowsNode.java | 5 +++++
 .../src/main/java/org/apache/doris/planner/EmptySetNode.java      | 5 +++++
 fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java   | 8 +++++++-
 fe/fe-core/src/main/java/org/apache/doris/planner/RepeatNode.java | 5 -----
 fe/fe-core/src/main/java/org/apache/doris/planner/SelectNode.java | 5 -----
 fe/fe-core/src/main/java/org/apache/doris/planner/SortNode.java   | 5 -----
 .../suites/query_p0/join/test_nestedloop_semi_anti_join.groovy    | 2 --
 9 files changed, 17 insertions(+), 25 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java
index 4144987bae..b2a2a99c04 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java
@@ -1813,7 +1813,6 @@ public class PhysicalPlanTranslator extends 
DefaultPlanVisitor<PlanFragment, Pla
         RepeatNode repeatNode = new RepeatNode(context.nextPlanNodeId(),
                 inputPlanFragment.getPlanRoot(), groupingInfo, 
repeatSlotIdList,
                 allSlotId, 
repeat.computeVirtualSlotValues(sortedVirtualSlots));
-        
repeatNode.setNumInstances(inputPlanFragment.getPlanRoot().getNumInstances());
         addPlanRoot(inputPlanFragment, repeatNode, repeat);
         updateLegacyPlanIdToPhysicalPlan(inputPlanFragment.getPlanRoot(), 
repeat);
         return inputPlanFragment;
@@ -1898,7 +1897,6 @@ public class PhysicalPlanTranslator extends 
DefaultPlanVisitor<PlanFragment, Pla
                 orderElementsIsNullableMatched,
                 bufferedTupleDesc
         );
-        
analyticEvalNode.setNumInstances(inputPlanFragment.getPlanRoot().getNumInstances());
         inputPlanFragment.addPlanRoot(analyticEvalNode);
         return inputPlanFragment;
     }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/planner/AggregationNode.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/AggregationNode.java
index 580700303f..e4e3170379 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/AggregationNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/AggregationNode.java
@@ -333,11 +333,6 @@ public class AggregationNode extends PlanNode {
         aggInfo.getRefdSlots(ids);
     }
 
-    @Override
-    public int getNumInstances() {
-        return children.get(0).getNumInstances();
-    }
-
     @Override
     public Set<SlotId> computeInputSlotIds(Analyzer analyzer) throws 
NotImplementedException {
         Set<SlotId> result = Sets.newHashSet();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/planner/AssertNumRowsNode.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/AssertNumRowsNode.java
index c07041de9f..84ac5520ee 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/AssertNumRowsNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/AssertNumRowsNode.java
@@ -90,4 +90,9 @@ public class AssertNumRowsNode extends PlanNode {
         msg.assert_num_rows_node.setSubqueryString(subqueryString);
         msg.assert_num_rows_node.setAssertion(assertion.toThrift());
     }
+
+    @Override
+    public int getNumInstances() {
+        return 1;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/planner/EmptySetNode.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/EmptySetNode.java
index 0497fd4838..e4b3cfd226 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/EmptySetNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/EmptySetNode.java
@@ -77,4 +77,9 @@ public class EmptySetNode extends PlanNode {
         msg.node_type = TPlanNodeType.EMPTY_SET_NODE;
     }
 
+    @Override
+    public int getNumInstances() {
+        return 1;
+    }
+
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java
index e11f674875..579b80586b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java
@@ -136,6 +136,12 @@ public abstract class PlanNode extends TreeNode<PlanNode> 
implements PlanStats {
 
     //  Node should compact data.
     protected boolean compactData;
+    // Most of the plan node has the same numInstance as its (left) child, 
except some special nodes, such as
+    // 1. scan node, whose numInstance is calculated according to its data 
distribution
+    // 2. exchange node, which is gather distribution
+    // 3. union node, whose numInstance is the sum of its children's 
numInstance
+    // ...
+    // only special nodes need to call setNumInstances() and getNumInstances() 
from attribute numInstances
     protected int numInstances;
 
     // Runtime filters assigned to this node.
@@ -847,7 +853,7 @@ public abstract class PlanNode extends TreeNode<PlanNode> 
implements PlanStats {
     }
 
     public int getNumInstances() {
-        return numInstances;
+        return this.children.get(0).getNumInstances();
     }
 
     public boolean shouldColoAgg(AggregateInfo aggregateInfo) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/RepeatNode.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/RepeatNode.java
index e5f7e0f04d..3c6a88cea0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/RepeatNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/RepeatNode.java
@@ -200,9 +200,4 @@ public class RepeatNode extends PlanNode {
         }
         return output.toString();
     }
-
-    @Override
-    public int getNumInstances() {
-        return children.get(0).getNumInstances();
-    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/SelectNode.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/SelectNode.java
index 93bd430f2a..a60648bcda 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/SelectNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SelectNode.java
@@ -107,9 +107,4 @@ public class SelectNode extends PlanNode {
         }
         return output.toString();
     }
-
-    @Override
-    public int getNumInstances() {
-        return children.get(0).getNumInstances();
-    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/SortNode.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/SortNode.java
index c4dbe60644..70b76fa07b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/SortNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SortNode.java
@@ -315,11 +315,6 @@ public class SortNode extends PlanNode {
                 "[" + Joiner.on(" ").join(strings) + 
"]").addValue(super.debugString()).toString();
     }
 
-    @Override
-    public int getNumInstances() {
-        return children.get(0).getNumInstances();
-    }
-
     @Override
     public Set<SlotId> computeInputSlotIds(Analyzer analyzer) throws 
NotImplementedException {
         removeUnusedExprs();
diff --git 
a/regression-test/suites/query_p0/join/test_nestedloop_semi_anti_join.groovy 
b/regression-test/suites/query_p0/join/test_nestedloop_semi_anti_join.groovy
index d43d6f254f..61c6538217 100644
--- a/regression-test/suites/query_p0/join/test_nestedloop_semi_anti_join.groovy
+++ b/regression-test/suites/query_p0/join/test_nestedloop_semi_anti_join.groovy
@@ -77,7 +77,6 @@ suite("test_nestedloop_semi_anti_join", "query_p0") {
         select * from ${tbl1} where user_id not in (select user_id from 
${tbl2} where ${tbl1}.user_id >  ${tbl2}.user_id) order by ${tbl1}.user_id;
     """
     sql "DROP TABLE IF EXISTS ${tbl1}"
-    sql "DROP TABLE IF EXISTS ${tbl2}"
 
     sql """
         CREATE TABLE ${tbl1} (id int)
@@ -90,5 +89,4 @@ suite("test_nestedloop_semi_anti_join", "query_p0") {
     qt_nlj_left_semi "select a.id\n" +
             "from ${tbl1} a\n" +
             "join (select id from ${tbl1} where id = (select 1)) b on a.id = 
b.id"
-    sql "DROP TABLE IF EXISTS ${tbl1}"
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to