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

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


The following commit(s) were added to refs/heads/branch-4.1 by this push:
     new ce06dcc43fa branch-4.1: [opt](load) disable 
enable_strict_consistency_dml by default in cloud mode (#61892)
ce06dcc43fa is described below

commit ce06dcc43fa17264d0bfd2e0bf79981af1ed4749
Author: hui lai <[email protected]>
AuthorDate: Tue Mar 31 11:59:05 2026 +0800

    branch-4.1: [opt](load) disable enable_strict_consistency_dml by default in 
cloud mode (#61892)
    
    pick https://github.com/apache/doris/pull/61814
    
    ---------
    
    Co-authored-by: Claude Sonnet 4.6 <[email protected]>
---
 .../nereids/properties/RequestPropertyDeriver.java |  8 ++---
 .../java/org/apache/doris/qe/SessionVariable.java  |  5 +++
 .../org/apache/doris/qe/SessionVariablesTest.java  | 36 ++++++++++++++++++++++
 .../insert_p0/test_insert_tablet_sink.groovy       | 10 ++++--
 4 files changed, 52 insertions(+), 7 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/properties/RequestPropertyDeriver.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/properties/RequestPropertyDeriver.java
index 7610d75a22d..1b3c07a9c2b 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/properties/RequestPropertyDeriver.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/properties/RequestPropertyDeriver.java
@@ -144,7 +144,7 @@ public class RequestPropertyDeriver extends 
PlanVisitor<Void, PlanContext> {
 
     @Override
     public Void visitPhysicalOlapTableSink(PhysicalOlapTableSink<? extends 
Plan> olapTableSink, PlanContext context) {
-        if (connectContext != null && 
!connectContext.getSessionVariable().enableStrictConsistencyDml) {
+        if (connectContext != null && 
!connectContext.getSessionVariable().isEnableStrictConsistencyDml()) {
             addRequestPropertyToChildren(PhysicalProperties.ANY);
         } else {
             
addRequestPropertyToChildren(olapTableSink.getRequirePhysicalProperties());
@@ -154,7 +154,7 @@ public class RequestPropertyDeriver extends 
PlanVisitor<Void, PlanContext> {
 
     @Override
     public Void visitPhysicalHiveTableSink(PhysicalHiveTableSink<? extends 
Plan> hiveTableSink, PlanContext context) {
-        if (connectContext != null && 
!connectContext.getSessionVariable().enableStrictConsistencyDml) {
+        if (connectContext != null && 
!connectContext.getSessionVariable().isEnableStrictConsistencyDml()) {
             addRequestPropertyToChildren(PhysicalProperties.ANY);
         } else {
             
addRequestPropertyToChildren(hiveTableSink.getRequirePhysicalProperties());
@@ -165,7 +165,7 @@ public class RequestPropertyDeriver extends 
PlanVisitor<Void, PlanContext> {
     @Override
     public Void visitPhysicalIcebergTableSink(
             PhysicalIcebergTableSink<? extends Plan> icebergTableSink, 
PlanContext context) {
-        if (connectContext != null && 
!connectContext.getSessionVariable().enableStrictConsistencyDml) {
+        if (connectContext != null && 
!connectContext.getSessionVariable().isEnableStrictConsistencyDml()) {
             addRequestPropertyToChildren(PhysicalProperties.ANY);
         } else {
             
addRequestPropertyToChildren(icebergTableSink.getRequirePhysicalProperties());
@@ -176,7 +176,7 @@ public class RequestPropertyDeriver extends 
PlanVisitor<Void, PlanContext> {
     @Override
     public Void visitPhysicalMaxComputeTableSink(
             PhysicalMaxComputeTableSink<? extends Plan> mcTableSink, 
PlanContext context) {
-        if (connectContext != null && 
!connectContext.getSessionVariable().enableStrictConsistencyDml) {
+        if (connectContext != null && 
!connectContext.getSessionVariable().isEnableStrictConsistencyDml()) {
             addRequestPropertyToChildren(PhysicalProperties.ANY);
         } else {
             
addRequestPropertyToChildren(mcTableSink.getRequirePhysicalProperties());
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 0a6f09978dc..e1114a3f8f4 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
@@ -5624,6 +5624,11 @@ public class SessionVariable implements Serializable, 
Writable {
     }
 
     public boolean isEnableStrictConsistencyDml() {
+        // In cloud mode (store-compute separation), there is only a single 
copy of data,
+        // so multi-replica consistency is not a concern. Default to false.
+        if (Config.isCloudMode()) {
+            return false;
+        }
         return this.enableStrictConsistencyDml;
     }
 
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/qe/SessionVariablesTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/qe/SessionVariablesTest.java
index 8721879f5af..b646bc1a4b6 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/qe/SessionVariablesTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/qe/SessionVariablesTest.java
@@ -17,10 +17,13 @@
 
 package org.apache.doris.qe;
 
+import org.apache.doris.common.Config;
 import org.apache.doris.common.FeConstants;
 import org.apache.doris.nereids.parser.NereidsParser;
 import org.apache.doris.utframe.TestWithFeService;
 
+import mockit.Mock;
+import mockit.MockUp;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
@@ -81,4 +84,37 @@ public class SessionVariablesTest extends TestWithFeService {
         new NereidsParser().parseSQL(sql);
         Assertions.assertEquals(false, 
connectContext.getSessionVariable().enableNereidsDmlWithPipeline);
     }
+
+    @Test
+    public void testEnableStrictConsistencyDmlDefaultsToFalseInCloudMode() {
+        new MockUp<Config>() {
+            @Mock
+            public boolean isCloudMode() {
+                return true;
+            }
+        };
+        SessionVariable sv = new SessionVariable();
+        // In cloud mode, enable_strict_consistency_dml should always return 
false
+        // because store-compute separation has no multi-replica consistency 
concern.
+        Assertions.assertFalse(sv.isEnableStrictConsistencyDml());
+        // Even if the field is set to true, cloud mode overrides it.
+        sv.enableStrictConsistencyDml = true;
+        Assertions.assertFalse(sv.isEnableStrictConsistencyDml());
+    }
+
+    @Test
+    public void testEnableStrictConsistencyDmlDefaultsTrueInNonCloudMode() {
+        new MockUp<Config>() {
+            @Mock
+            public boolean isCloudMode() {
+                return false;
+            }
+        };
+        SessionVariable sv = new SessionVariable();
+        // In non-cloud mode, default is true (multi-replica consistency is 
needed).
+        Assertions.assertTrue(sv.isEnableStrictConsistencyDml());
+        // Users can disable it.
+        sv.enableStrictConsistencyDml = false;
+        Assertions.assertFalse(sv.isEnableStrictConsistencyDml());
+    }
 }
diff --git a/regression-test/suites/insert_p0/test_insert_tablet_sink.groovy 
b/regression-test/suites/insert_p0/test_insert_tablet_sink.groovy
index 009175ae805..7bf79f3a7a5 100644
--- a/regression-test/suites/insert_p0/test_insert_tablet_sink.groovy
+++ b/regression-test/suites/insert_p0/test_insert_tablet_sink.groovy
@@ -60,9 +60,13 @@ suite("test_insert_tablet_sink") {
 
 
     sql """ insert into table_largeint select k1,c_varchar,cast(rand() * 
50000000 as bigint) from tmp_varchar where k1>=3; """
-    explain {
-        sql "insert into table_largeint select k1,c_varchar,cast(rand() * 
50000000 as bigint) from tmp_varchar;"
-        contains "OLAP_TABLE_SINK_HASH_PARTITIONED"
+    // In cloud mode (store-compute separation), enable_strict_consistency_dml 
defaults to false,
+    // so no hash-partitioned sink is required for multi-replica consistency.
+    if (!isCloudMode()) {
+        explain {
+            sql "insert into table_largeint select k1,c_varchar,cast(rand() * 
50000000 as bigint) from tmp_varchar;"
+            contains "OLAP_TABLE_SINK_HASH_PARTITIONED"
+        }
     }
     
     sql """ insert into table_largeint select k1,c_varchar,cast(rand() * 
50000000 as bigint) from tmp_varchar; """


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

Reply via email to