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