This is an automated email from the ASF dual-hosted git repository.
panxiaolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 6a5026fa032 [Bug](delete) ignore case on delete from command and add
check on deletejob dispatch (#31593)
6a5026fa032 is described below
commit 6a5026fa0322de03be6356443c6e300d8bbdc628
Author: Pxl <[email protected]>
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 b1f27d2aadc..391c8ecf436 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 {
@@ -303,6 +305,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: [email protected]
For additional commands, e-mail: [email protected]