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

dataroaring 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 c2044409da9 [branch-2.1] Picks "[fix](delete) Fix delete stmt on MOW 
table doesn't use partial update in Nereids planner #38751" (#39214)
c2044409da9 is described below

commit c2044409da9ae90f059b31a0b45a401077ce2ef5
Author: bobhan1 <bh2444151...@outlook.com>
AuthorDate: Mon Aug 12 17:02:48 2024 +0800

    [branch-2.1] Picks "[fix](delete) Fix delete stmt on MOW table doesn't use 
partial update in Nereids planner #38751" (#39214)
    
    ## Proposed changes
    
    picks https://github.com/apache/doris/pull/38751
---
 .../trees/plans/commands/DeleteFromCommand.java    | 20 ++++---
 .../org/apache/doris/planner/OlapTableSink.java    |  1 +
 .../data/compaction/test_full_compaction.out       |  4 +-
 .../test_full_compaction_by_table_id.out           |  4 +-
 ...alue.out => test_delete_predicate_on_value.out} | 48 +++++++---------
 .../delete/delete_mow_partial_update.out           | 24 ++++++--
 .../test_new_partial_update_delete.out             |  4 +-
 .../partial_update/test_partial_update_delete.out  | 22 ++++++--
 ...compaction_uniq_cluster_keys_with_delete.groovy |  3 +-
 ...roovy => test_delete_predicate_on_value.groovy} | 65 ++++++++++------------
 .../delete/delete_mow_partial_update.groovy        | 24 +++++++-
 .../cluster_key/test_pk_uk_case.groovy             |  3 +-
 .../test_new_partial_update_delete.groovy          |  4 +-
 .../test_partial_update_delete.groovy              |  6 +-
 .../ssb_unique_load_zstd_c/ddl/customer_create.sql |  3 +-
 .../ssb_unique_load_zstd_c/ddl/date_create.sql     |  3 +-
 .../ddl/lineorder_create.sql                       |  3 +-
 .../ssb_unique_load_zstd_c/ddl/part_create.sql     |  3 +-
 .../ssb_unique_load_zstd_c/ddl/supplier_create.sql |  3 +-
 .../ddl/supplier_sequence_create.sql               |  3 +-
 .../ssb_unique_load_zstd_c/ddl/customer_create.sql |  3 +-
 .../ssb_unique_load_zstd_c/ddl/date_create.sql     |  3 +-
 .../ddl/lineorder_create.sql                       |  3 +-
 .../ssb_unique_load_zstd_c/ddl/part_create.sql     |  3 +-
 .../ssb_unique_load_zstd_c/ddl/supplier_create.sql |  3 +-
 .../ddl/supplier_sequence_create.sql               |  3 +-
 .../test_pk_uk_case_cluster.groovy                 |  3 +-
 27 files changed, 164 insertions(+), 107 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java
index fe5552fed65..bdd00ab9b61 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java
@@ -399,26 +399,32 @@ public class DeleteFromCommand extends Command implements 
ForwardWithSync, Expla
         List<String> cols = Lists.newArrayList();
         boolean isMow = targetTable.getEnableUniqueKeyMergeOnWrite();
         String tableName = tableAlias != null ? tableAlias : 
targetTable.getName();
+        boolean hasClusterKey = 
targetTable.getBaseSchema().stream().anyMatch(Column::isClusterKey);
+        // currently cluster key doesn't support partial update, so we can't 
convert
+        // a delete stmt to partial update load if the table has cluster key
         for (Column column : targetTable.getFullSchema()) {
+            NamedExpression expr = null;
             if (column.getName().equalsIgnoreCase(Column.DELETE_SIGN)) {
-                selectLists.add(new UnboundAlias(new TinyIntLiteral(((byte) 
1)), Column.DELETE_SIGN));
+                expr = new UnboundAlias(new TinyIntLiteral(((byte) 1)), 
Column.DELETE_SIGN);
             } else if (column.getName().equalsIgnoreCase(Column.SEQUENCE_COL)
                     && targetTable.getSequenceMapCol() != null) {
-                selectLists.add(new UnboundSlot(tableName, 
targetTable.getSequenceMapCol()));
+                expr = new UnboundSlot(tableName, 
targetTable.getSequenceMapCol());
             } else if (column.isKey()) {
-                selectLists.add(new UnboundSlot(tableName, column.getName()));
+                expr = new UnboundSlot(tableName, column.getName());
             } else if (!isMow && (!column.isVisible() || 
(!column.isAllowNull() && !column.hasDefaultValue()))) {
-                selectLists.add(new UnboundSlot(tableName, column.getName()));
+                expr = new UnboundSlot(tableName, column.getName());
+            } else if (hasClusterKey) {
+                expr = new UnboundSlot(tableName, column.getName());
             } else {
-                selectLists.add(new UnboundSlot(tableName, column.getName()));
+                continue;
             }
+            selectLists.add(expr);
             cols.add(column.getName());
         }
 
         logicalQuery = new LogicalProject<>(selectLists, logicalQuery);
 
-        boolean isPartialUpdate = targetTable.getEnableUniqueKeyMergeOnWrite()
-                && cols.size() < targetTable.getColumns().size();
+        boolean isPartialUpdate = isMow && !hasClusterKey && cols.size() < 
targetTable.getColumns().size();
         logicalQuery = handleCte(logicalQuery);
         // make UnboundTableSink
         return UnboundTableSinkCreator.createUnboundTableSink(nameParts, cols, 
ImmutableList.of(),
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java
index 4196748cb8e..335e8af9dae 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java
@@ -231,6 +231,7 @@ public class OlapTableSink extends DataSink {
         }
         strBuilder.append(prefix + "  TUPLE ID: " + tupleDescriptor.getId() + 
"\n");
         strBuilder.append(prefix + "  " + 
DataPartition.RANDOM.getExplainString(explainLevel));
+        strBuilder.append(prefix + "  IS_PARTIAL_UPDATE: " + isPartialUpdate);
         return strBuilder.toString();
     }
 
diff --git a/regression-test/data/compaction/test_full_compaction.out 
b/regression-test/data/compaction/test_full_compaction.out
index 7098be6d89d..b25fdad9314 100644
--- a/regression-test/data/compaction/test_full_compaction.out
+++ b/regression-test/data/compaction/test_full_compaction.out
@@ -32,12 +32,12 @@
 2      2
 2      20
 2      200
-3      100
+3      0
 3      100
 3      300
 
 -- !select_final --
 1      100
 2      200
-3      100
+3      0
 
diff --git 
a/regression-test/data/compaction/test_full_compaction_by_table_id.out 
b/regression-test/data/compaction/test_full_compaction_by_table_id.out
index 7098be6d89d..b25fdad9314 100644
--- a/regression-test/data/compaction/test_full_compaction_by_table_id.out
+++ b/regression-test/data/compaction/test_full_compaction_by_table_id.out
@@ -32,12 +32,12 @@
 2      2
 2      20
 2      200
-3      100
+3      0
 3      100
 3      300
 
 -- !select_final --
 1      100
 2      200
-3      100
+3      0
 
diff --git a/regression-test/data/delete_p0/test_delete_on_value.out 
b/regression-test/data/delete_p0/test_delete_predicate_on_value.out
similarity index 60%
rename from regression-test/data/delete_p0/test_delete_on_value.out
rename to regression-test/data/delete_p0/test_delete_predicate_on_value.out
index 4a6e652aef3..e54cb9a6b4a 100644
--- a/regression-test/data/delete_p0/test_delete_on_value.out
+++ b/regression-test/data/delete_p0/test_delete_predicate_on_value.out
@@ -1,5 +1,5 @@
 -- This file is automatically generated. You should know what you did if you 
want to edit this
--- !sql --
+-- !sql_1 --
 1      1       1
 2      2       2
 3      3       3
@@ -10,7 +10,7 @@
 8      8       8
 9      9       9
 
--- !sql --
+-- !sql_1 --
 1      1       1
 2      2       2
 3      3       3
@@ -20,19 +20,24 @@
 8      8       8
 9      9       9
 
--- !sql --
+-- !sql_1 --
 1      1       1
 2      2       2
 8      8       8
 9      9       9
 
--- !sql --
+-- !skip_delete_predicate_sql_1 --
 1      1       1       0
 2      2       2       0
+3      3       3       0
+4      4       4       0
+5      5       5       0
+6      6       6       0
+7      7       7       0
 8      8       8       0
 9      9       9       0
 
--- !sql --
+-- !sql_1 --
 1      1       1
 2      2       2
 4      4       4
@@ -40,57 +45,44 @@
 8      8       8
 9      9       9
 
--- !sql --
+-- !sql_1 --
 1      1       1
 2      2       2
 4      4       4
 8      8       8
 9      9       9
 
--- !sql --
+-- !skip_delete_predicate_sql_1 --
 1      1       1       0
 2      2       2       0
 3      3       3       0
-3      3       3       1
 4      4       4       0
-4      4       4       0
-4      4       4       1
-5      5       5       0
 5      5       5       0
-5      5       5       1
-5      5       5       1
 6      6       6       0
-6      6       6       1
 7      7       7       0
-7      7       7       1
 8      8       8       0
 9      9       9       0
 
--- !sql --
+-- !sql_3 --
 1      1       10
 
--- !sql --
+-- !skip_delete_predicate_sql_3 --
 1      1       5       0       3       5
 1      1       10      0       2       10
 
--- !sql --
+-- !sql_3 --
 
--- !sql --
+-- !skip_delete_predicate_sql_3 --
 1      1       5       0       3       5
 1      1       10      0       2       10
-1      1       10      1       4       10
 
--- !sql --
+-- !sql_4 --
 1      1       10
 
--- !sql --
-1      1       5       0       3       5
-1      1       10      0       2       10
-
--- !sql --
+-- !sql_4 --
 
--- !sql --
+-- !skip_delete_predicate_sql_4 --
+1      \N      \N      1       4       10
 1      1       5       0       3       5
 1      1       10      0       2       10
-1      1       10      1       4       10
 
diff --git 
a/regression-test/data/nereids_p0/delete/delete_mow_partial_update.out 
b/regression-test/data/nereids_p0/delete/delete_mow_partial_update.out
index b4237a03803..54b9aa4cee9 100644
--- a/regression-test/data/nereids_p0/delete/delete_mow_partial_update.out
+++ b/regression-test/data/nereids_p0/delete/delete_mow_partial_update.out
@@ -7,20 +7,26 @@
 5      5
 
 -- !sql --
+2      2
 4      4
 5      5
 
 -- !sql_skip_delete_predicate --
+2      2
 4      4
 5      5
 
 -- !sql --
+2      2
+5      5
+
+-- !sql --
+1      \N      1
 1      1       0
-1      1       1
 2      2       0
-2      2       1
+3      \N      1
 3      3       0
-3      3       1
+4      \N      1
 4      4       0
 5      5       0
 
@@ -53,20 +59,26 @@
 5      5
 
 -- !sql --
+2      2
 4      4
 5      5
 
 -- !sql_skip_delete_predicate --
+2      2
 4      4
 5      5
 
 -- !sql --
+2      2
+5      5
+
+-- !sql --
+1      \N      1
 1      1       0
-1      1       1
 2      2       0
-2      2       1
+3      \N      1
 3      3       0
-3      3       1
+4      \N      1
 4      4       0
 5      5       0
 
diff --git 
a/regression-test/data/unique_with_mow_p0/partial_update/test_new_partial_update_delete.out
 
b/regression-test/data/unique_with_mow_p0/partial_update/test_new_partial_update_delete.out
index 318f28c8000..36507eff4fd 100644
--- 
a/regression-test/data/unique_with_mow_p0/partial_update/test_new_partial_update_delete.out
+++ 
b/regression-test/data/unique_with_mow_p0/partial_update/test_new_partial_update_delete.out
@@ -5,7 +5,7 @@
 -- !sql2 --
 
 -- !sql3 --
-1      1       1       1       1       1
+1      \N      \N      \N      \N      1
 
 -- !sql4 --
 1      2       \N      \N      \N
@@ -57,7 +57,7 @@
 -- !sql2 --
 
 -- !sql3 --
-1      1       1       1       1       1
+1      \N      \N      \N      \N      1
 
 -- !sql4 --
 1      2       \N      \N      \N
diff --git 
a/regression-test/data/unique_with_mow_p0/partial_update/test_partial_update_delete.out
 
b/regression-test/data/unique_with_mow_p0/partial_update/test_partial_update_delete.out
index c16e954d733..e1623d42460 100644
--- 
a/regression-test/data/unique_with_mow_p0/partial_update/test_partial_update_delete.out
+++ 
b/regression-test/data/unique_with_mow_p0/partial_update/test_partial_update_delete.out
@@ -6,17 +6,22 @@
 4      4       4       4       4
 5      5       5       5       5
 
+-- !sql --
+2      2       2       2       2
+4      4       4       4       4
+5      5       5       5       5
+
 -- !sql --
 4      4       4       4       4
 5      5       5       5       5
 
 -- !with_delete_sign --
+1      \N      \N      0       \N      1
 1      1       1       1       1       0
-1      1       1       1       1       1
+2      \N      \N      0       \N      1
 2      2       2       2       2       0
-2      2       2       2       2       1
+3      \N      \N      0       \N      1
 3      3       3       3       3       0
-3      3       3       3       3       1
 4      4       4       4       4       0
 5      5       5       5       5       0
 
@@ -48,17 +53,22 @@
 4      4       4       4       4
 5      5       5       5       5
 
+-- !sql --
+2      2       2       2       2
+4      4       4       4       4
+5      5       5       5       5
+
 -- !sql --
 4      4       4       4       4
 5      5       5       5       5
 
 -- !with_delete_sign --
+1      \N      \N      0       \N      1
 1      1       1       1       1       0
-1      1       1       1       1       1
+2      \N      \N      0       \N      1
 2      2       2       2       2       0
-2      2       2       2       2       1
+3      \N      \N      0       \N      1
 3      3       3       3       3       0
-3      3       3       3       3       1
 4      4       4       4       4       0
 5      5       5       5       5       0
 
diff --git 
a/regression-test/suites/compaction/test_compaction_uniq_cluster_keys_with_delete.groovy
 
b/regression-test/suites/compaction/test_compaction_uniq_cluster_keys_with_delete.groovy
index 932835ec3c8..0a6199bb406 100644
--- 
a/regression-test/suites/compaction/test_compaction_uniq_cluster_keys_with_delete.groovy
+++ 
b/regression-test/suites/compaction/test_compaction_uniq_cluster_keys_with_delete.groovy
@@ -66,7 +66,8 @@ suite("test_compaction_uniq_cluster_keys_with_delete") {
             DISTRIBUTED BY HASH(`user_id`)
             PROPERTIES (
                 "replication_num" = "1",
-                "enable_unique_key_merge_on_write" = "true" 
+                "enable_unique_key_merge_on_write" = "true",
+                "enable_mow_light_delete" = "true"
             );
         """
 
diff --git a/regression-test/suites/delete_p0/test_delete_on_value.groovy 
b/regression-test/suites/delete_p0/test_delete_predicate_on_value.groovy
similarity index 76%
rename from regression-test/suites/delete_p0/test_delete_on_value.groovy
rename to regression-test/suites/delete_p0/test_delete_predicate_on_value.groovy
index d980fb09ca1..fc013930bea 100644
--- a/regression-test/suites/delete_p0/test_delete_on_value.groovy
+++ b/regression-test/suites/delete_p0/test_delete_predicate_on_value.groovy
@@ -15,11 +15,8 @@
 // specific language governing permissions and limitations
 // under the License.
 
-suite("test_delete_on_value") {
+suite("test_delete_predicate_on_value") {
 
-    sql "set skip_storage_engine_merge=false;"
-    sql "set skip_delete_bitmap=false;"
-    sql "set skip_delete_predicate=false;"
     def tableName = "test_delete_on_value"
     sql """ DROP TABLE IF EXISTS ${tableName} """
     sql """ CREATE TABLE ${tableName} (
@@ -33,25 +30,27 @@ suite("test_delete_on_value") {
             PROPERTIES (
                 "replication_num" = "1",
                 "disable_auto_compaction" = "true",
-                "enable_unique_key_merge_on_write" = "true"
+                "enable_unique_key_merge_on_write" = "true",
+                "enable_mow_light_delete" = "true"
             );"""
     sql """ insert into ${tableName} 
values(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),(6,6,6),(7,7,7),(8,8,8),(9,9,9); 
"""
-    qt_sql "select * from ${tableName} order by x,y,z;"
+    qt_sql_1 "select * from ${tableName} order by x,y,z;"
     sql "delete from ${tableName} where y=4;"
-    qt_sql "select * from ${tableName} order by x,y,z;"
+    qt_sql_1 "select * from ${tableName} order by x,y,z;"
     sql "delete from ${tableName} where z>=3 and z<=7;"
-    qt_sql "select * from ${tableName} order by x,y,z;"
+    qt_sql_1 "select * from ${tableName} order by x,y,z;"
     sql "set skip_delete_predicate=true;"
-    qt_sql "select x,y,z,__DORIS_DELETE_SIGN__ from ${tableName} order by 
x,y,z,__DORIS_DELETE_SIGN__;"
+    qt_skip_delete_predicate_sql_1 "select x,y,z,__DORIS_DELETE_SIGN__ from 
${tableName} order by x,y,z,__DORIS_DELETE_SIGN__;"
     sql "set skip_delete_predicate=false;"
     sql "insert into ${tableName} values(4,4,4),(5,5,5);"
-    qt_sql "select * from ${tableName} order by x,y,z;"
+    qt_sql_1 "select * from ${tableName} order by x,y,z;"
     sql "delete from ${tableName} where y=5;"
-    qt_sql "select * from ${tableName} order by x,y,z;"
-    sql "set skip_storage_engine_merge=true;"
-    sql "set skip_delete_bitmap=true;"
+    qt_sql_1 "select * from ${tableName} order by x,y,z;"
+
     sql "set skip_delete_predicate=true;"
-    qt_sql "select x,y,z,__DORIS_DELETE_SIGN__ from ${tableName} order by 
x,y,z,__DORIS_DELETE_SIGN__;"
+    qt_skip_delete_predicate_sql_1 "select x,y,z,__DORIS_DELETE_SIGN__ from 
${tableName} order by x,y,z,__DORIS_DELETE_SIGN__;"
+    sql "set skip_storage_engine_merge=false;"
+
     sql "DROP TABLE IF EXISTS ${tableName};"
 
 
@@ -75,9 +74,6 @@ suite("test_delete_on_value") {
         exception "delete predicate on value column only supports Unique table 
with merge-on-write enabled and Duplicate table, but 
Table[test_delete_on_value2] is an Aggregate table."
     }
 
-    sql "set skip_storage_engine_merge=false;"
-    sql "set skip_delete_bitmap=false;"
-    sql "set skip_delete_predicate=false;"
     def tableName3 = "test_delete_on_value_with_seq_col"
     sql """ DROP TABLE IF EXISTS ${tableName3} """
     sql """ CREATE TABLE ${tableName3} (
@@ -92,29 +88,34 @@ suite("test_delete_on_value") {
                 "disable_auto_compaction" = "true",
                 "replication_num" = "1",
                 "enable_unique_key_merge_on_write" = "true",
+                "enable_mow_light_delete" = "true",
                 "function_column.sequence_col" = "z"
             );"""
     sql "insert into ${tableName3} values(1,1,10);"
     sql "insert into ${tableName3} values(1,1,5);"
-    qt_sql "select * from ${tableName3} order by x,y,z;"
+    qt_sql_3 "select * from ${tableName3} order by x,y,z;"
+
     sql "set skip_storage_engine_merge=true;"
     sql "set skip_delete_bitmap=true;"
     sql "set skip_delete_predicate=true;"
-    qt_sql "select * from ${tableName3} order by x,y,z;"
+    qt_skip_delete_predicate_sql_3 "select * from ${tableName3} order by 
x,y,z;"
     sql "set skip_storage_engine_merge=false;"
     sql "set skip_delete_bitmap=false;"
     sql "set skip_delete_predicate=false;"
+
     sql "delete from ${tableName3} where z>=10;"
-    qt_sql "select * from ${tableName3} order by x,y,z;"
+    qt_sql_3 "select * from ${tableName3} order by x,y,z;"
+
     sql "set skip_storage_engine_merge=true;"
     sql "set skip_delete_bitmap=true;"
     sql "set skip_delete_predicate=true;"
-    qt_sql "select * from ${tableName3} order by x,y,z;"
-    sql "DROP TABLE IF EXISTS ${tableName3}"
-
+    qt_skip_delete_predicate_sql_3 "select * from ${tableName3} order by 
x,y,z;"
     sql "set skip_storage_engine_merge=false;"
     sql "set skip_delete_bitmap=false;"
     sql "set skip_delete_predicate=false;"
+    sql "DROP TABLE IF EXISTS ${tableName3}"
+
+
     def tableName4 = "test_delete_on_value_with_seq_col_mor"
     sql """ DROP TABLE IF EXISTS ${tableName4} """
     sql """ CREATE TABLE ${tableName4} (
@@ -134,23 +135,17 @@ suite("test_delete_on_value") {
     // test mor table
     sql "insert into ${tableName4} values(1,1,10);"
     sql "insert into ${tableName4} values(1,1,5);"
-    qt_sql "select * from ${tableName4} order by x,y,z;"
-    sql "set skip_storage_engine_merge=true;"
-    sql "set skip_delete_bitmap=true;"
-    sql "set skip_delete_predicate=true;"
-    qt_sql "select * from ${tableName4} order by x,y,z;"
-    sql "set skip_storage_engine_merge=false;"
-    sql "set skip_delete_bitmap=false;"
-    sql "set skip_delete_predicate=false;"
+    qt_sql_4 "select * from ${tableName4} order by x,y,z;"
     sql "delete from ${tableName4} where z>=10;"
-    qt_sql "select * from ${tableName4} order by x,y,z;"
+    qt_sql_4 "select * from ${tableName4} order by x,y,z;"
+
     sql "set skip_storage_engine_merge=true;"
     sql "set skip_delete_bitmap=true;"
     sql "set skip_delete_predicate=true;"
-    qt_sql "select * from ${tableName4} order by x,y,z;"
-    sql "DROP TABLE IF EXISTS ${tableName4};"
-
+    qt_skip_delete_predicate_sql_4 "select * from ${tableName4} order by 
x,y,z;"
     sql "set skip_storage_engine_merge=false;"
     sql "set skip_delete_bitmap=false;"
     sql "set skip_delete_predicate=false;"
+
+    sql "DROP TABLE IF EXISTS ${tableName4};"
 }
diff --git 
a/regression-test/suites/nereids_p0/delete/delete_mow_partial_update.groovy 
b/regression-test/suites/nereids_p0/delete/delete_mow_partial_update.groovy
index 5849e5d80ef..8dd5d01243f 100644
--- a/regression-test/suites/nereids_p0/delete/delete_mow_partial_update.groovy
+++ b/regression-test/suites/nereids_p0/delete/delete_mow_partial_update.groovy
@@ -60,7 +60,12 @@ suite('delete_mow_partial_update') {
 
             sql "insert into ${tableName1} values(1, 1), (2, 2), (3, 3), (4, 
4), (5, 5);"
             qt_sql "select * from ${tableName1} order by uid;"
-            sql "insert into ${tableName2} values(1), (2), (3);"
+            sql "insert into ${tableName2} values(1), (3);"
+            explain {
+                // delete from using command should use partial update
+                sql "delete from ${tableName1} A using ${tableName2} B where 
A.uid=B.uid;"
+                contains "IS_PARTIAL_UPDATE: true"
+            }
             sql "delete from ${tableName1} A using ${tableName2} B where 
A.uid=B.uid;"
             qt_sql "select * from ${tableName1} order by uid;"
             // when using parital update insert stmt for delete stmt, it will 
use delete bitmap or delete sign rather than 
@@ -68,6 +73,23 @@ suite('delete_mow_partial_update') {
             sql "set skip_delete_predicate=true;"
             sql "sync"
             qt_sql_skip_delete_predicate "select * from ${tableName1} order by 
uid;"
+            sql "set skip_delete_predicate=false;"
+            sql "sync"
+
+            explain {
+                // delete from command should use partial update
+                sql "delete from ${tableName1} where ${tableName1}.uid=2;"
+                contains "IS_PARTIAL_UPDATE: true"
+            }
+
+            explain {
+                // delete from command should use partial update
+                sql "delete from ${tableName1} where ${tableName1}.v1=4;"
+                contains "IS_PARTIAL_UPDATE: true"
+            }
+
+            sql "delete from ${tableName1} where ${tableName1}.v1=4;"
+            qt_sql "select * from ${tableName1} order by uid;"
 
             sql "set skip_delete_sign=true;"
             sql "set skip_storage_engine_merge=true;"
diff --git 
a/regression-test/suites/unique_with_mow_p0/cluster_key/test_pk_uk_case.groovy 
b/regression-test/suites/unique_with_mow_p0/cluster_key/test_pk_uk_case.groovy
index c0cb1add123..f4bc7b2f205 100644
--- 
a/regression-test/suites/unique_with_mow_p0/cluster_key/test_pk_uk_case.groovy
+++ 
b/regression-test/suites/unique_with_mow_p0/cluster_key/test_pk_uk_case.groovy
@@ -61,7 +61,8 @@ suite("test_pk_uk_case_cluster_key") {
         PROPERTIES (
         "replication_num" = "1",
         "disable_auto_compaction" = "true",
-        "enable_unique_key_merge_on_write" = "true"
+        "enable_unique_key_merge_on_write" = "true",
+        "enable_mow_light_delete" = "true"
         )
     """
 
diff --git 
a/regression-test/suites/unique_with_mow_p0/partial_update/test_new_partial_update_delete.groovy
 
b/regression-test/suites/unique_with_mow_p0/partial_update/test_new_partial_update_delete.groovy
index bcd8d5f2842..f82510914b5 100644
--- 
a/regression-test/suites/unique_with_mow_p0/partial_update/test_new_partial_update_delete.groovy
+++ 
b/regression-test/suites/unique_with_mow_p0/partial_update/test_new_partial_update_delete.groovy
@@ -97,7 +97,7 @@ suite('test_new_partial_update_delete') {
             // empty
             qt_sql2 "select * from ${tableName1} order by k1;"
             sql "set show_hidden_columns = true;"
-            // 1,1,1,1,1,1
+            // 1,null,null,null,null,1
             qt_sql3 "select k1,c1,c2,c3,c4,__DORIS_DELETE_SIGN__ from 
${tableName1} order by k1;"
             sql "set show_hidden_columns = false;"
             sql "set enable_unique_key_partial_update=true;"
@@ -210,7 +210,7 @@ suite('test_new_partial_update_delete') {
             // empty
             qt_sql22 "select * from ${tableName2} order by k1;"
             sql "set show_hidden_columns = true;"
-            // 1,1,1,1,1,1
+            // 1,null,null,null,1
             qt_sql23 "select k1,c1,c2,c3,c4,__DORIS_DELETE_SIGN__ from 
${tableName2} order by k1;"
             sql "set show_hidden_columns = false;"
             sql "set enable_unique_key_partial_update=true;"
diff --git 
a/regression-test/suites/unique_with_mow_p0/partial_update/test_partial_update_delete.groovy
 
b/regression-test/suites/unique_with_mow_p0/partial_update/test_partial_update_delete.groovy
index 38720646b2b..0d83d94f91c 100644
--- 
a/regression-test/suites/unique_with_mow_p0/partial_update/test_partial_update_delete.groovy
+++ 
b/regression-test/suites/unique_with_mow_p0/partial_update/test_partial_update_delete.groovy
@@ -56,9 +56,13 @@ suite('test_partial_update_delete') {
 
             sql "insert into ${tableName1} 
values(1,1,1,1,1),(2,2,2,2,2),(3,3,3,3,3),(4,4,4,4,4),(5,5,5,5,5);"
             qt_sql "select * from ${tableName1} order by k1;"
-            sql "insert into ${tableName2} values(1),(2),(3);"
+            sql "insert into ${tableName2} values(1),(3);"
             sql "delete from ${tableName1} A using ${tableName2} B where 
A.k1=B.k;"
             qt_sql "select * from ${tableName1} order by k1;"
+
+            sql "delete from ${tableName1} where c2=2;"
+            qt_sql "select * from ${tableName1} order by k1;"
+
             sql "set skip_delete_sign=true;"
             sql "set skip_storage_engine_merge=true;"
             sql "set skip_delete_bitmap=true;"
diff --git 
a/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/customer_create.sql
 
b/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/customer_create.sql
index 789c8fd79b8..53c1b103328 100644
--- 
a/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/customer_create.sql
+++ 
b/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/customer_create.sql
@@ -15,5 +15,6 @@ PROPERTIES (
 "compression"="zstd",
 "replication_num" = "1",
 "disable_auto_compaction" = "true",
-"enable_unique_key_merge_on_write" = "true"
+"enable_unique_key_merge_on_write" = "true",
+"enable_mow_light_delete" = "true"
 );
diff --git 
a/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/date_create.sql
 
b/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/date_create.sql
index cf6b4b6a737..b96d1038c74 100644
--- 
a/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/date_create.sql
+++ 
b/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/date_create.sql
@@ -24,5 +24,6 @@ PROPERTIES (
 "compression"="zstd",
 "replication_num" = "1",
 "disable_auto_compaction" = "true",
-"enable_unique_key_merge_on_write" = "true"
+"enable_unique_key_merge_on_write" = "true",
+"enable_mow_light_delete" = "true"
 );
diff --git 
a/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/lineorder_create.sql
 
b/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/lineorder_create.sql
index 2dff3181c9d..37ba740fa06 100644
--- 
a/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/lineorder_create.sql
+++ 
b/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/lineorder_create.sql
@@ -32,5 +32,6 @@ PROPERTIES (
 "compression"="zstd",
 "replication_num" = "1",
 "disable_auto_compaction" = "true",
-"enable_unique_key_merge_on_write" = "true"
+"enable_unique_key_merge_on_write" = "true",
+"enable_mow_light_delete" = "true"
 );
diff --git 
a/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/part_create.sql
 
b/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/part_create.sql
index b1b01bcaeca..f8b9438a192 100644
--- 
a/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/part_create.sql
+++ 
b/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/part_create.sql
@@ -16,5 +16,6 @@ PROPERTIES (
 "compression"="zstd",
 "replication_num" = "1",
 "disable_auto_compaction" = "true",
-"enable_unique_key_merge_on_write" = "true"
+"enable_unique_key_merge_on_write" = "true",
+"enable_mow_light_delete" = "true"
 );
diff --git 
a/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/supplier_create.sql
 
b/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/supplier_create.sql
index 53b607a53ff..a40662617f6 100644
--- 
a/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/supplier_create.sql
+++ 
b/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/supplier_create.sql
@@ -14,5 +14,6 @@ PROPERTIES (
 "compression"="zstd",
 "replication_num" = "1",
 "disable_auto_compaction" = "true",
-"enable_unique_key_merge_on_write" = "true"
+"enable_unique_key_merge_on_write" = "true",
+"enable_mow_light_delete" = "true"
 );
diff --git 
a/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/supplier_sequence_create.sql
 
b/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/supplier_sequence_create.sql
index 9fef263bf07..ef1136bbfda 100644
--- 
a/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/supplier_sequence_create.sql
+++ 
b/regression-test/suites/unique_with_mow_p0/ssb_unique_load_zstd_c/ddl/supplier_sequence_create.sql
@@ -15,5 +15,6 @@ PROPERTIES (
 "compression"="zstd",
 "replication_num" = "1",
 "disable_auto_compaction" = "true",
-"enable_unique_key_merge_on_write" = "true"
+"enable_unique_key_merge_on_write" = "true",
+"enable_mow_light_delete" = "true"
 );
diff --git 
a/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/customer_create.sql
 
b/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/customer_create.sql
index 0bf16f3911a..30df14525cf 100644
--- 
a/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/customer_create.sql
+++ 
b/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/customer_create.sql
@@ -15,5 +15,6 @@ PROPERTIES (
 "compression"="zstd",
 "replication_num" = "1",
 "disable_auto_compaction" = "true",
-"enable_unique_key_merge_on_write" = "true"
+"enable_unique_key_merge_on_write" = "true",
+"enable_mow_light_delete" = "true"
 );
diff --git 
a/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/date_create.sql
 
b/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/date_create.sql
index 32b4e24f6cb..ffd796f227a 100644
--- 
a/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/date_create.sql
+++ 
b/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/date_create.sql
@@ -24,5 +24,6 @@ PROPERTIES (
 "compression"="zstd",
 "replication_num" = "1",
 "disable_auto_compaction" = "true",
-"enable_unique_key_merge_on_write" = "true"
+"enable_unique_key_merge_on_write" = "true",
+"enable_mow_light_delete" = "true"
 );
diff --git 
a/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/lineorder_create.sql
 
b/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/lineorder_create.sql
index 8cb2ae73098..0945fe0af46 100644
--- 
a/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/lineorder_create.sql
+++ 
b/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/lineorder_create.sql
@@ -32,5 +32,6 @@ PROPERTIES (
 "compression"="zstd",
 "replication_num" = "1",
 "disable_auto_compaction" = "true",
-"enable_unique_key_merge_on_write" = "true"
+"enable_unique_key_merge_on_write" = "true",
+"enable_mow_light_delete" = "true"
 );
diff --git 
a/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/part_create.sql
 
b/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/part_create.sql
index 722b7eba1a8..86e906b4c2b 100644
--- 
a/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/part_create.sql
+++ 
b/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/part_create.sql
@@ -16,5 +16,6 @@ PROPERTIES (
 "compression"="zstd",
 "replication_num" = "1",
 "disable_auto_compaction" = "true",
-"enable_unique_key_merge_on_write" = "true"
+"enable_unique_key_merge_on_write" = "true",
+"enable_mow_light_delete" = "true"
 );
diff --git 
a/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/supplier_create.sql
 
b/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/supplier_create.sql
index aa798357e81..404e4987b44 100644
--- 
a/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/supplier_create.sql
+++ 
b/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/supplier_create.sql
@@ -14,5 +14,6 @@ PROPERTIES (
 "compression"="zstd",
 "replication_num" = "1",
 "disable_auto_compaction" = "true",
-"enable_unique_key_merge_on_write" = "true"
+"enable_unique_key_merge_on_write" = "true",
+"enable_mow_light_delete" = "true"
 );
diff --git 
a/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/supplier_sequence_create.sql
 
b/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/supplier_sequence_create.sql
index fd109360fda..74fa9c46baa 100644
--- 
a/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/supplier_sequence_create.sql
+++ 
b/regression-test/suites/unique_with_mow_p2/ssb_unique_load_zstd_c/ddl/supplier_sequence_create.sql
@@ -15,5 +15,6 @@ PROPERTIES (
 "compression"="zstd",
 "replication_num" = "1",
 "disable_auto_compaction" = "true",
-"enable_unique_key_merge_on_write" = "true"
+"enable_unique_key_merge_on_write" = "true",
+"enable_mow_light_delete" = "true"
 );
diff --git 
a/regression-test/suites/unique_with_mow_p2/test_pk_uk_case_cluster.groovy 
b/regression-test/suites/unique_with_mow_p2/test_pk_uk_case_cluster.groovy
index d8fe10ffb4c..4accf1fb108 100644
--- a/regression-test/suites/unique_with_mow_p2/test_pk_uk_case_cluster.groovy
+++ b/regression-test/suites/unique_with_mow_p2/test_pk_uk_case_cluster.groovy
@@ -60,7 +60,8 @@ suite("test_pk_uk_case_cluster") {
         DISTRIBUTED BY HASH(L_ORDERKEY) BUCKETS 1
         PROPERTIES (
         "replication_num" = "1",
-        "enable_unique_key_merge_on_write" = "true"
+        "enable_unique_key_merge_on_write" = "true",
+        "enable_mow_light_delete" = "true"
         )
     """
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to