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

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

commit 5710ec378d52442dd6a250da082dbdfa5cd70508
Author: mch_ucchi <41606806+sohardforan...@users.noreply.github.com>
AuthorDate: Thu Aug 3 23:44:05 2023 +0800

    [Fix](planner)fix delete stmt contains where but delete all data. (#22563)
---
 .../java/org/apache/doris/analysis/DeleteStmt.java   |  1 +
 .../nereids/trees/plans/commands/DeleteCommand.java  |  2 +-
 regression-test/data/delete_p0/test_delete.out       |  4 ++++
 regression-test/suites/delete_p0/test_delete.groovy  | 20 ++++++++++++++++++++
 4 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/DeleteStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DeleteStmt.java
index f02c91cc9e..2cde4af3e6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DeleteStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DeleteStmt.java
@@ -125,6 +125,7 @@ public class DeleteStmt extends DdlStmt {
                 if (!(((OlapTable) targetTable).getKeysType() == 
KeysType.UNIQUE_KEYS)) {
                     throw new AnalysisException(e.getMessage(), e.getCause());
                 }
+                wherePredicate.reset();
                 constructInsertStmt();
             }
         } else {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteCommand.java
index ae0900ced5..43eec60d48 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteCommand.java
@@ -112,7 +112,7 @@ public class DeleteCommand extends Command implements 
ForwardWithSync, Explainab
         logicalQuery = new LogicalProject<>(selectLists, logicalQuery);
 
         boolean isPartialUpdate = false;
-        if (((OlapTable) targetTable).getEnableUniqueKeyMergeOnWrite()
+        if (targetTable.getEnableUniqueKeyMergeOnWrite()
                 && cols.size() < targetTable.getColumns().size()) {
             isPartialUpdate = true;
         }
diff --git a/regression-test/data/delete_p0/test_delete.out 
b/regression-test/data/delete_p0/test_delete.out
index 905fa5daf4..e16fff2606 100644
--- a/regression-test/data/delete_p0/test_delete.out
+++ b/regression-test/data/delete_p0/test_delete.out
@@ -131,3 +131,7 @@ abc 5
 \N     \N      6.6
 5      \N      5.5
 
+-- !delete_fn --
+a      a
+ccc    ccc
+
diff --git a/regression-test/suites/delete_p0/test_delete.groovy 
b/regression-test/suites/delete_p0/test_delete.groovy
index bb78918d7d..95f1ea18cf 100644
--- a/regression-test/suites/delete_p0/test_delete.groovy
+++ b/regression-test/suites/delete_p0/test_delete.groovy
@@ -218,4 +218,24 @@ suite("test_delete") {
 
     sql """ delete from  delete_test_tb2 where k1 is null and k2 = 4.45; """
     qt_check_numeric4 """ select k1, k2, v1 from delete_test_tb2 order by k1, 
k2; """;
+    
+    sql '''
+        CREATE TABLE test1 (
+            x varchar NOT NULL,
+            id varchar NOT NULL
+        )
+        ENGINE=OLAP
+        UNIQUE KEY(`x`)COMMENT "OLAP"
+        DISTRIBUTED BY HASH(`x`) 
+        BUCKETS 96
+        PROPERTIES (
+            "replication_num" = "1",
+            "enable_unique_key_merge_on_write" = "true"
+        ); 
+    '''
+    
+    sql 'insert into test1 values("a", "a"), ("bb", "bb"), ("ccc", "ccc")'
+    sql 'delete from test1 where length(x)=2'
+    
+    qt_delete_fn 'select * from test1 order by x'
 }


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

Reply via email to