From 7a304e43fba04c57026e8d2d437a81ac197ac0af Mon Sep 17 00:00:00 2001 From: tsy Date: Fri, 16 Aug 2024 19:35:00 +0800 Subject: [PATCH] [enhancement](delete) Add a hint msg for forbidden delete when MV or rollup exists --- .../src/main/java/org/apache/doris/catalog/Partition.java | 4 ++++ .../src/main/java/org/apache/doris/load/DeleteJob.java | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Partition.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Partition.java index e610f4b3ce3834..ab2b646ce39ee6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Partition.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Partition.java @@ -446,4 +446,8 @@ public void convertHashDistributionToRandomDistribution() { distributionInfo = ((HashDistributionInfo) distributionInfo).toRandomDistributionInfo(); } } + + public boolean isRollupIndex(long id) { + return idToVisibleRollupIndex.containsKey(id); + } } 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 4ccbfa44d8c113..6081fc2878b5a9 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 @@ -316,13 +316,17 @@ public void dispatch() throws Exception { () -> Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER))); for (Predicate condition : deleteConditions) { SlotRef slotRef = (SlotRef) condition.getChild(0); - String columnName = new String(slotRef.getColumnName()); + String columnName = slotRef.getColumnName(); TColumn column = colNameToColDesc.get(slotRef.getColumnName()); if (column == null) { columnName = CreateMaterializedViewStmt.mvColumnBuilder(columnName); column = colNameToColDesc.get(columnName); } if (column == null) { + if (partition.isRollupIndex(index.getId())) { + throw new AnalysisException("If MV or rollup index exists, do not support delete." + + "Drop existing rollup or MV and try again."); + } throw new AnalysisException( "condition's column not founded in index, column=" + columnName + " , index=" + index); }