This is an automated email from the ASF dual-hosted git repository.

morrysnow pushed a commit to branch branch-3.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-3.1 by this push:
     new 731add938b9 branch-3.1: [fix](variable) fix unset global variable in 
non-master FE (#58284)
731add938b9 is described below

commit 731add938b9d941fe760e8c39b25c6788cdd537a
Author: Mingyu Chen (Rayner) <[email protected]>
AuthorDate: Wed Nov 26 10:42:16 2025 +0800

    branch-3.1: [fix](variable) fix unset global variable in non-master FE 
(#58284)
---
 fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java | 8 +++++++-
 fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java  | 4 ++--
 2 files changed, 9 insertions(+), 3 deletions(-)

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 fedf66289b8..1c3bb84c574 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
@@ -184,6 +184,7 @@ import 
org.apache.doris.qe.CommonResultSet.CommonResultSetMetaData;
 import org.apache.doris.qe.ConnectContext.ConnectType;
 import org.apache.doris.qe.QeProcessorImpl.QueryInfo;
 import org.apache.doris.qe.QueryState.MysqlStateType;
+import org.apache.doris.qe.VariableMgr.VarContext;
 import org.apache.doris.qe.cache.Cache;
 import org.apache.doris.qe.cache.CacheAnalyzer;
 import org.apache.doris.qe.cache.CacheAnalyzer.CacheMode;
@@ -1288,7 +1289,12 @@ public class StmtExecutor {
                 }
                 SetVar var = new SetVar(SetType.SESSION, 
unsetStmt.getVariable(),
                         new StringLiteral(defaultValue), 
SetVarType.SET_SESSION_VAR);
-                VariableMgr.setVar(context.getSessionVariable(), var);
+                VarContext varCtx = 
VariableMgr.getVarContext(var.getVariable());
+                // only unset for session variable.
+                // If this is a global variable, no need to do this because it 
has been synced from editlog already.
+                if (varCtx != null && (varCtx.getFlag() & VariableMgr.SESSION) 
!= 0) {
+                    VariableMgr.setVar(context.getSessionVariable(), var);
+                }
             }
         }
     }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java
index 03e09637fad..5f4671ca6b4 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java
@@ -319,7 +319,7 @@ public class VariableMgr {
     }
 
     @Nullable
-    private static VarContext getVarContext(String name) {
+    public static VarContext getVarContext(String name) {
         String varName = name;
         boolean hasExpPrefix = false;
         if (varName.startsWith(VariableAnnotation.EXPERIMENTAL.getPrefix())) {
@@ -880,7 +880,7 @@ public class VariableMgr {
         String convertBoolToLongMethod() default "";
     }
 
-    private static class VarContext {
+    public static class VarContext {
         private Field field;
         private Object obj;
         private int flag;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to