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' }