This is an automated email from the ASF dual-hosted git repository. zhangstar333 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 94db52c8205 [FE](session-variable) Add a debug variable of constant fold (#35584) 94db52c8205 is described below commit 94db52c82058574a23f66828218329996e60ba7c Author: zclllyybb <zhaochan...@selectdb.com> AuthorDate: Thu May 30 13:59:40 2024 +0800 [FE](session-variable) Add a debug variable of constant fold (#35584) which force skip constant fold in nereids. make it easier for test, especially for SqlLogic platform --- .../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 d9e2187596b..9519d011d8d 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 @@ -119,6 +119,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 cf3d1a88d8c..1106df5f7c3 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 @@ -690,6 +690,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 9d80a8a1bc5..29d48dc40ba 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 @@ -135,6 +135,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"; @@ -999,6 +1000,8 @@ public class SessionVariable implements Serializable, Writable { @VariableMgr.VarAttr(name = ENABLE_FOLD_CONSTANT_BY_BE, fuzzy = true) public boolean enableFoldConstantByBe = true; + @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; @@ -2491,6 +2494,10 @@ public class SessionVariable implements Serializable, Writable { return enableFoldConstantByBe; } + public boolean isDebugSkipFoldConstant() { + return debugSkipFoldConstant; + } + public boolean isEnableRewriteElementAtToSlot() { return enableRewriteElementAtToSlot; } @@ -2507,6 +2514,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 235d3ac2426..90bde60d06c 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 @@ -1424,7 +1424,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