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

jakevin 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 0ff3073fc4 [improvement](Nereids): limit Memo groupExpression size. 
(#20272)
0ff3073fc4 is described below

commit 0ff3073fc4166ccc8ba4bb6f06c0904b88766577
Author: jakevin <jakevin...@gmail.com>
AuthorDate: Thu Jun 1 13:30:19 2023 +0800

    [improvement](Nereids): limit Memo groupExpression size. (#20272)
---
 .../doris/nereids/jobs/cascades/OptimizeGroupExpressionJob.java       | 4 +++-
 fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java      | 4 ++++
 fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java     | 3 +++
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizeGroupExpressionJob.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizeGroupExpressionJob.java
index e0612bcbd3..c9fba86d78 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizeGroupExpressionJob.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizeGroupExpressionJob.java
@@ -57,7 +57,9 @@ public class OptimizeGroupExpressionJob extends Job {
 
     private List<Rule> getExplorationRules() {
         boolean isDisableJoinReorder = 
context.getCascadesContext().getConnectContext().getSessionVariable()
-                .isDisableJoinReorder();
+                .isDisableJoinReorder()
+                || 
context.getCascadesContext().getMemo().getGroupExpressionsSize() > 
context.getCascadesContext()
+                
.getConnectContext().getSessionVariable().memoMaxGroupExpressionSize;
         boolean isDpHyp = 
context.getCascadesContext().getStatementContext().isDpHyp();
         boolean isEnableBushyTree = 
context.getCascadesContext().getConnectContext().getSessionVariable()
                 .isEnableBushyTree();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java
index 558fb9e99f..9c4f79dce6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java
@@ -110,6 +110,10 @@ public class Memo {
         return groupExpressions;
     }
 
+    public int getGroupExpressionsSize() {
+        return groupExpressions.size();
+    }
+
     private Plan skipProject(Plan plan, Group targetGroup) {
         // Some top project can't be eliminated
         if (plan instanceof LogicalProject && ((LogicalProject<?>) 
plan).canEliminate()) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
index f26e5fc47e..0c9beec9a2 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
@@ -900,6 +900,9 @@ public class SessionVariable implements Serializable, 
Writable {
     @VariableMgr.VarAttr(name = DUMP_NEREIDS_MEMO)
     public boolean dumpNereidsMemo = false;
 
+    @VariableMgr.VarAttr(name = "memo_max_group_expression_size")
+    public int memoMaxGroupExpressionSize = 40000;
+
     @VariableMgr.VarAttr(name = ENABLE_MINIDUMP)
     public boolean enableMinidump = false;
 


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

Reply via email to