This is an automated email from the ASF dual-hosted git repository.
morrysnow 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 da8b43ed6e5 [opt](Nereids) forbid one step topn with distribute as
child (#40066)
da8b43ed6e5 is described below
commit da8b43ed6e558249942c21b01a691144e6fa5b93
Author: morrySnow <[email protected]>
AuthorDate: Thu Aug 29 21:31:20 2024 +0800
[opt](Nereids) forbid one step topn with distribute as child (#40066)
---
.../doris/nereids/properties/ChildrenPropertiesRegulator.java | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/properties/ChildrenPropertiesRegulator.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/properties/ChildrenPropertiesRegulator.java
index 686350ea91d..9985b9c567f 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/properties/ChildrenPropertiesRegulator.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/properties/ChildrenPropertiesRegulator.java
@@ -537,11 +537,21 @@ public class ChildrenPropertiesRegulator extends
PlanVisitor<Boolean, Void> {
// process must shuffle
visit(topN, context);
+ int sortPhaseNum =
jobContext.getCascadesContext().getConnectContext().getSessionVariable().sortPhaseNum;
+ // if control sort phase, forbid nothing
+ if (sortPhaseNum == 1 || sortPhaseNum == 2) {
+ return true;
+ }
// If child is DistributionSpecGather, topN should forbid two-phase
topN
if (topN.getSortPhase() == SortPhase.LOCAL_SORT
&&
childrenProperties.get(0).getDistributionSpec().equals(DistributionSpecGather.INSTANCE))
{
return false;
}
+ // forbid one step topn with distribute as child
+ if (topN.getSortPhase() == SortPhase.GATHER_SORT
+ && children.get(0).getPlan() instanceof PhysicalDistribute) {
+ return false;
+ }
return true;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]