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