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

Reply via email to