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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]