This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
commit ba07acadc28b97a3073abeea54ff5cbb8f31c9ae Author: Pxl <pxl...@qq.com> AuthorDate: Fri Mar 1 11:21:00 2024 +0800 [Bug](delete) ignore case on delete from command and add check on deletejob dispatch (#31593) ignore case on delete from command and add check on deletejob dispatch --- .../main/java/org/apache/doris/load/DeleteJob.java | 19 +++++++++++++++++++ .../trees/plans/commands/DeleteFromCommand.java | 6 ++++-- regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy | 1 + 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/DeleteJob.java b/fe/fe-core/src/main/java/org/apache/doris/load/DeleteJob.java index 89d116253af..f2c77df53bc 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/DeleteJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/DeleteJob.java @@ -18,6 +18,7 @@ package org.apache.doris.load; import org.apache.doris.analysis.BinaryPredicate; +import org.apache.doris.analysis.CreateMaterializedViewStmt; import org.apache.doris.analysis.InPredicate; import org.apache.doris.analysis.IsNullPredicate; import org.apache.doris.analysis.LiteralExpr; @@ -78,6 +79,7 @@ import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.concurrent.TimeUnit; +import java.util.function.Function; import java.util.stream.Collectors; public class DeleteJob extends AbstractTxnStateChangeCallback implements DeleteJobLifeCycle { @@ -304,6 +306,23 @@ public class DeleteJob extends AbstractTxnStateChangeCallback implements DeleteJ columnsDesc.add(column.toThrift()); } + Map<String, TColumn> colNameToColDesc = columnsDesc.stream() + .collect(Collectors.toMap(c -> c.getColumnName(), Function.identity(), (v1, v2) -> v1, + () -> Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER))); + for (Predicate condition : deleteConditions) { + SlotRef slotRef = (SlotRef) condition.getChild(0); + String columnName = new String(slotRef.getColumnName()); + TColumn column = colNameToColDesc.get(slotRef.getColumnName()); + if (column == null) { + columnName = CreateMaterializedViewStmt.mvColumnBuilder(columnName); + column = colNameToColDesc.get(columnName); + } + if (column == null) { + throw new AnalysisException( + "condition's column not founded in index, column=" + columnName + " , index=" + index); + } + } + for (Tablet tablet : index.getTablets()) { long tabletId = tablet.getId(); 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 0fbab6c72bb..43127d097fc 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 @@ -67,6 +67,7 @@ import org.apache.commons.lang3.StringUtils; import java.util.List; import java.util.Optional; import java.util.Set; +import java.util.TreeSet; import java.util.stream.Collectors; /** @@ -244,9 +245,10 @@ public class DeleteFromCommand extends Command implements ForwardWithSync { for (String indexName : table.getIndexNameToId().keySet()) { MaterializedIndexMeta meta = table.getIndexMetaByIndexId(table.getIndexIdByName(indexName)); - Set<String> columns = meta.getSchema().stream() + Set<String> columns = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); + meta.getSchema().stream() .map(col -> org.apache.doris.analysis.CreateMaterializedViewStmt.mvColumnBreaker(col.getName())) - .collect(Collectors.toSet()); + .forEach(name -> columns.add(name)); if (!columns.contains(column.getName())) { throw new AnalysisException("Column[" + column.getName() + "] not exist in index " + indexName + ". maybe you need drop the corresponding materialized-view."); diff --git a/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy b/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy index bc206b61990..890b1106bcb 100644 --- a/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy +++ b/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy @@ -18,6 +18,7 @@ import org.codehaus.groovy.runtime.IOGroovyMethods suite ("k1s2m3") { + sql "set enable_fallback_to_original_planner = false" sql """ DROP TABLE IF EXISTS d_table; """ --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org