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