openinx commented on a change in pull request #2294:
URL: https://github.com/apache/iceberg/pull/2294#discussion_r590016384



##########
File path: core/src/main/java/org/apache/iceberg/BaseRewriteFiles.java
##########
@@ -40,19 +40,62 @@ protected String operation() {
     return DataOperations.REPLACE;
   }
 
+  private void checkFilesToDelete(Set<DataFile> dataFilesToDelete,
+                                  Set<DeleteFile> deleteFilesToDelete) {
+    int filesToDelete = 0;
+    if (dataFilesToDelete != null) {
+      filesToDelete += dataFilesToDelete.size();
+    }
+
+    if (deleteFilesToDelete != null) {
+      filesToDelete += deleteFilesToDelete.size();
+    }
+
+    Preconditions.checkArgument(filesToDelete > 0, "Files to delete cannot be 
null or empty");
+  }
+
+  private void checkFilesToAdd(Set<DataFile> dataFilesToAdd,
+                               Set<DeleteFile> deleteFilesToAdd) {
+    int filesToAdd = 0;
+    if (dataFilesToAdd != null) {
+      filesToAdd += dataFilesToAdd.size();
+    }
+
+    if (deleteFilesToAdd != null) {
+      filesToAdd += deleteFilesToAdd.size();
+    }
+
+    Preconditions.checkArgument(filesToAdd > 0, "Files to add can not be null 
or empty");
+  }
+
   @Override
-  public RewriteFiles rewriteFiles(Set<DataFile> filesToDelete, Set<DataFile> 
filesToAdd) {
-    Preconditions.checkArgument(filesToDelete != null && 
!filesToDelete.isEmpty(),
-        "Files to delete cannot be null or empty");
-    Preconditions.checkArgument(filesToAdd != null && !filesToAdd.isEmpty(),
-        "Files to add can not be null or empty");
+  public RewriteFiles rewriteFiles(Set<DataFile> dataFilesToDelete, 
Set<DeleteFile> deleteFilesToDelete,
+                                   Set<DataFile> dataFilesToAdd, 
Set<DeleteFile> deleteFilesToAdd) {
+    checkFilesToDelete(dataFilesToDelete, deleteFilesToDelete);
+    checkFilesToAdd(dataFilesToAdd, deleteFilesToAdd);

Review comment:
       The files to add seems could be empty since we have introduced the 
row-level deletes.   For example,  we insert <1, 'aaa'>. then delete <1, 
'aaa'>, finally do the rewrite files action. In the end, there should be no 
file to add when rewriting.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to