Fokko commented on code in PR #941:
URL: https://github.com/apache/iceberg-python/pull/941#discussion_r2154822875


##########
pyiceberg/table/__init__.py:
##########
@@ -635,15 +651,18 @@ def delete(
         if isinstance(delete_filter, str):
             delete_filter = _parse_row_filter(delete_filter)
 
-        with 
self.update_snapshot(snapshot_properties=snapshot_properties).delete() as 
delete_snapshot:
+        with self.update_snapshot(snapshot_properties=snapshot_properties, 
branch=branch).delete() as delete_snapshot:
             delete_snapshot.delete_by_predicate(delete_filter, case_sensitive)
 
         # Check if there are any files that require an actual rewrite of a 
data file
         if delete_snapshot.rewrites_needed is True:
             bound_delete_filter = bind(self.table_metadata.schema(), 
delete_filter, case_sensitive)
             preserve_row_filter = 
_expression_to_complementary_pyarrow(bound_delete_filter)
 
-            files = self._scan(row_filter=delete_filter, 
case_sensitive=case_sensitive).plan_files()
+            if branch is None:
+                files = self._scan(row_filter=delete_filter, 
case_sensitive=case_sensitive).plan_files()
+            else:
+                files = self._scan(row_filter=delete_filter, 
case_sensitive=case_sensitive).use_ref(branch).plan_files()

Review Comment:
   Maybe in a subsequent PR we can pass in the ref to the constructor 👍 



##########
pyiceberg/table/__init__.py:
##########
@@ -774,12 +797,24 @@ def upsert(
         matched_predicate = upsert_util.create_match_filter(df, join_cols)
 
         # We must use Transaction.table_metadata for the scan. This includes 
all uncommitted - but relevant - changes.
-        matched_iceberg_table = DataScan(
-            table_metadata=self.table_metadata,
-            io=self._table.io,
-            row_filter=matched_predicate,
-            case_sensitive=case_sensitive,
-        ).to_arrow()
+        if branch is None:
+            matched_iceberg_table = DataScan(
+                table_metadata=self.table_metadata,
+                io=self._table.io,
+                row_filter=matched_predicate,
+                case_sensitive=case_sensitive,
+            ).to_arrow()
+        else:
+            matched_iceberg_table = (
+                DataScan(
+                    table_metadata=self.table_metadata,
+                    io=self._table.io,
+                    row_filter=matched_predicate,
+                    case_sensitive=case_sensitive,
+                )
+                .use_ref(branch)
+                .to_arrow()
+            )

Review Comment:
   I think this is not the correct usage of the builder pattern, instead you 
want to do something like:
   
   ```python
   if branch is not None:
       scan.use_ref(branch)
   ```
   
   However, I think it also makes sense to just pass this into the constructor 
as mentioned in another comment 👍 



-- 
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.

To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


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

Reply via email to