This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push: new d44ee1cddb7 [branch-2.1](session-variable) Add a debug variable of constant fold (#35584) (#41032) d44ee1cddb7 is described below commit d44ee1cddb75049d9541bf34a4e26bdf0a714405 Author: zclllhhjj <zhaochan...@selectdb.com> AuthorDate: Mon Sep 23 10:01:05 2024 +0800 [branch-2.1](session-variable) Add a debug variable of constant fold (#35584) (#41032) pick https://github.com/apache/doris/pull/35584 --- .../nereids/rules/expression/rules/FoldConstantRuleOnBE.java | 2 ++ .../nereids/rules/expression/rules/FoldConstantRuleOnFE.java | 2 ++ .../src/main/java/org/apache/doris/qe/SessionVariable.java | 11 +++++++++++ .../src/main/java/org/apache/doris/qe/StmtExecutor.java | 3 ++- 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java index 7b6446aaf37..2852c1c4415 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java @@ -120,6 +120,8 @@ public class FoldConstantRuleOnBE implements ExpressionPatternRuleFactory { public List<ExpressionPatternMatcher<? extends Expression>> buildRules() { return ImmutableList.of( root(Expression.class) + .whenCtx(ctx -> !ctx.cascadesContext.getConnectContext().getSessionVariable() + .isDebugSkipFoldConstant()) .whenCtx(FoldConstantRuleOnBE::isEnableFoldByBe) .thenApply(FoldConstantRuleOnBE::foldByBE) ); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java index 54ea6969988..12b752fabf4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java @@ -709,6 +709,8 @@ public class FoldConstantRuleOnFE extends AbstractExpressionRewriteRule private <E extends Expression> ExpressionPatternMatcher<? extends Expression> matches( Class<E> clazz, BiFunction<E, ExpressionRewriteContext, Expression> visitMethod) { return matchesType(clazz) + .whenCtx(ctx -> !ctx.cascadesContext.getConnectContext().getSessionVariable() + .isDebugSkipFoldConstant()) .whenCtx(NOT_UNDER_AGG_DISTINCT.as()) .thenApply(ctx -> visitMethod.apply(ctx.expr, ctx.rewriteContext)); } 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 e1b398335b9..743019f4851 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 @@ -142,6 +142,7 @@ public class SessionVariable implements Serializable, Writable { public static final String PREFER_JOIN_METHOD = "prefer_join_method"; public static final String ENABLE_FOLD_CONSTANT_BY_BE = "enable_fold_constant_by_be"; + public static final String DEBUG_SKIP_FOLD_CONSTANT = "debug_skip_fold_constant"; public static final String ENABLE_REWRITE_ELEMENT_AT_TO_SLOT = "enable_rewrite_element_at_to_slot"; public static final String ENABLE_ODBC_TRANSCATION = "enable_odbc_transcation"; @@ -1054,6 +1055,8 @@ public class SessionVariable implements Serializable, Writable { @VariableMgr.VarAttr(name = ENABLE_FOLD_CONSTANT_BY_BE, fuzzy = true) public boolean enableFoldConstantByBe = false; + @VariableMgr.VarAttr(name = DEBUG_SKIP_FOLD_CONSTANT) + public boolean debugSkipFoldConstant = false; @VariableMgr.VarAttr(name = ENABLE_REWRITE_ELEMENT_AT_TO_SLOT, fuzzy = true) private boolean enableRewriteElementAtToSlot = true; @@ -2622,6 +2625,10 @@ public class SessionVariable implements Serializable, Writable { return enableFoldConstantByBe; } + public boolean isDebugSkipFoldConstant() { + return debugSkipFoldConstant; + } + public boolean isEnableRewriteElementAtToSlot() { return enableRewriteElementAtToSlot; } @@ -2638,6 +2645,10 @@ public class SessionVariable implements Serializable, Writable { this.enableFoldConstantByBe = foldConstantByBe; } + public void setDebugSkipFoldConstant(boolean debugSkipFoldConstant) { + this.debugSkipFoldConstant = debugSkipFoldConstant; + } + public int getParallelExecInstanceNum() { ConnectContext connectContext = ConnectContext.get(); if (connectContext != null && connectContext.getEnv() != null && connectContext.getEnv().getAuth() != null) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java index 4fc8e82f4b0..8d59f49b0c1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java @@ -1365,7 +1365,8 @@ public class StmtExecutor { } ExprRewriter rewriter = analyzer.getExprRewriter(); rewriter.reset(); - if (context.getSessionVariable().isEnableFoldConstantByBe()) { + if (context.getSessionVariable().isEnableFoldConstantByBe() + && !context.getSessionVariable().isDebugSkipFoldConstant()) { // fold constant expr parsedStmt.foldConstant(rewriter, tQueryOptions); } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org