This is an automated email from the ASF dual-hosted git repository.

morrysnow 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 ccbc3286a92 [enhance](mtmv) insert overwrite of mtmv force drop 
partition (#48074)
ccbc3286a92 is described below

commit ccbc3286a92d881a93537bb83b8e26e61b08970b
Author: zhangdong <zhangd...@selectdb.com>
AuthorDate: Tue Mar 4 18:05:16 2025 +0800

    [enhance](mtmv) insert overwrite of mtmv force drop partition (#48074)
    
    insert overwrite of mtmv force drop partition, because recyclebin process 
partition lead to performance issue.
---
 .../java/org/apache/doris/insertoverwrite/InsertOverwriteUtil.java | 7 ++++++-
 .../nereids/trees/plans/commands/UpdateMvByPartitionCommand.java   | 7 +++++++
 .../trees/plans/commands/insert/InsertOverwriteTableCommand.java   | 7 ++++++-
 3 files changed, 19 insertions(+), 2 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/insertoverwrite/InsertOverwriteUtil.java
 
b/fe/fe-core/src/main/java/org/apache/doris/insertoverwrite/InsertOverwriteUtil.java
index c2842569ca5..49e3e091d57 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/insertoverwrite/InsertOverwriteUtil.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/insertoverwrite/InsertOverwriteUtil.java
@@ -69,6 +69,11 @@ public class InsertOverwriteUtil {
      */
     public static void replacePartition(TableIf olapTable, List<String> 
partitionNames,
             List<String> tempPartitionNames) throws DdlException {
+        replacePartition(olapTable, partitionNames, tempPartitionNames, false);
+    }
+
+    public static void replacePartition(TableIf olapTable, List<String> 
partitionNames,
+            List<String> tempPartitionNames, boolean isForce) throws 
DdlException {
         if (olapTable instanceof OlapTable) {
             try {
                 if (!olapTable.writeLockIfExist()) {
@@ -78,7 +83,7 @@ public class InsertOverwriteUtil {
                 
properties.put(PropertyAnalyzer.PROPERTIES_USE_TEMP_PARTITION_NAME, "false");
                 ReplacePartitionClause replacePartitionClause = new 
ReplacePartitionClause(
                         new PartitionNames(false, partitionNames),
-                        new PartitionNames(true, tempPartitionNames), false, 
properties);
+                        new PartitionNames(true, tempPartitionNames), isForce, 
properties);
                 if (replacePartitionClause.getTempPartitionNames().isEmpty()) {
                     return;
                 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/UpdateMvByPartitionCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/UpdateMvByPartitionCommand.java
index b5be72950cd..fac66f97abb 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/UpdateMvByPartitionCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/UpdateMvByPartitionCommand.java
@@ -89,6 +89,13 @@ public class UpdateMvByPartitionCommand extends 
InsertOverwriteTableCommand {
         super(logicalQuery, Optional.empty(), Optional.empty());
     }
 
+    @Override
+    public boolean isForceDropPartition() {
+        // After refreshing the data in MTMV, it will be synchronized with the 
base table
+        // and there is no need to put it in the recycle bin
+        return true;
+    }
+
     /**
      * Construct command
      *
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertOverwriteTableCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertOverwriteTableCommand.java
index 90656fff449..b1c104f02f7 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertOverwriteTableCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertOverwriteTableCommand.java
@@ -229,7 +229,8 @@ public class InsertOverwriteTableCommand extends Command 
implements NeedAuditEnc
                     insertOverwriteManager.taskFail(taskId);
                     return;
                 }
-                InsertOverwriteUtil.replacePartition(targetTable, 
partitionNames, tempPartitionNames);
+                InsertOverwriteUtil.replacePartition(targetTable, 
partitionNames, tempPartitionNames,
+                        isForceDropPartition());
                 if (isCancelled.get()) {
                     LOG.info("insert overwrite is cancelled before 
taskSuccess, do nothing, queryId: {}",
                             ctx.getQueryIdentifier());
@@ -402,6 +403,10 @@ public class InsertOverwriteTableCommand extends Command 
implements NeedAuditEnc
         return Optional.empty();
     }
 
+    public boolean isForceDropPartition() {
+        return false;
+    }
+
     @Override
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitInsertOverwriteTableCommand(this, context);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to