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

taowang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/amoro.git


The following commit(s) were added to refs/heads/master by this push:
     new 9dfc0e0f0 Fix continually creating unused keep_file when committing 
for an unpartitioned mixed_hive table optimization (#3690)
9dfc0e0f0 is described below

commit 9dfc0e0f04b49d51f9c6f0ed42578de454fc2faa
Author: Nico CHen <[email protected]>
AuthorDate: Mon Jul 28 10:08:28 2025 +0800

    Fix continually creating unused keep_file when committing for an 
unpartitioned mixed_hive table optimization (#3690)
    
    [AMORO-3684]fix continually creating unused keep_file when committing for 
an unpartitioned mixed_hive table optimization.
---
 .../org/apache/amoro/hive/op/UpdateHiveFiles.java    | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git 
a/amoro-format-mixed/amoro-mixed-hive/src/main/java/org/apache/amoro/hive/op/UpdateHiveFiles.java
 
b/amoro-format-mixed/amoro-mixed-hive/src/main/java/org/apache/amoro/hive/op/UpdateHiveFiles.java
index e915ebc88..9e6e438a7 100644
--- 
a/amoro-format-mixed/amoro-mixed-hive/src/main/java/org/apache/amoro/hive/op/UpdateHiveFiles.java
+++ 
b/amoro-format-mixed/amoro-mixed-hive/src/main/java/org/apache/amoro/hive/op/UpdateHiveFiles.java
@@ -152,8 +152,16 @@ public abstract class UpdateHiveFiles<T extends 
SnapshotUpdate<T>> implements Sn
     this.addFiles.addAll(committedDataFiles);
     postHiveDataCommitted(this.addFiles);
 
+    // if no DataFiles to add or delete in Hive location, only commit to 
iceberg
+    boolean noHiveDataFilesChanged =
+        CollectionUtils.isEmpty(addFiles)
+            && CollectionUtils.isEmpty(deleteFiles)
+            && expr != Expressions.alwaysTrue();
+
     if (table.spec().isUnpartitioned()) {
-      generateUnpartitionTableLocation();
+      if (!noHiveDataFilesChanged) {
+        generateUnpartitionTableLocation();
+      }
     } else {
       this.partitionToDelete = getDeletePartition();
       this.partitionToCreate = getCreatePartition(this.partitionToDelete);
@@ -162,11 +170,6 @@ public abstract class UpdateHiveFiles<T extends 
SnapshotUpdate<T>> implements Sn
     if (checkOrphanFiles) {
       checkPartitionedOrphanFilesAndDelete(table.spec().isUnpartitioned());
     }
-    // if no DataFiles to add or delete in Hive location, only commit to 
iceberg
-    boolean noHiveDataFilesChanged =
-        CollectionUtils.isEmpty(addFiles)
-            && CollectionUtils.isEmpty(deleteFiles)
-            && expr != Expressions.alwaysTrue();
 
     delegate.commit();
     if (!noHiveDataFilesChanged) {
@@ -353,7 +356,10 @@ public abstract class UpdateHiveFiles<T extends 
SnapshotUpdate<T>> implements Sn
   private void checkPartitionedOrphanFilesAndDelete(boolean isUnPartitioned) {
     List<String> partitionsToCheck = Lists.newArrayList();
     if (isUnPartitioned) {
-      partitionsToCheck.add(this.unpartitionTableLocation);
+      // location is not null for an unpatitioned table is valid and it should 
be clean
+      if (this.unpartitionTableLocation != null) {
+        partitionsToCheck.add(this.unpartitionTableLocation);
+      }
     } else {
       partitionsToCheck.addAll(
           this.partitionToCreate.values().stream()

Reply via email to