iceberg-go icon indicating copy to clipboard operation
iceberg-go copied to clipboard

Support for Write Positional Delete files

Open alexandre-normand opened this issue 5 months ago • 2 comments

Feature Request / Improvement

First, thanks for iterating quickly on the iceberg-go implementation. This is going to be very useful for us and make integrating with Iceberg easier. We're currently doing active development using iceberg-go to write to Iceberg and the main feature gap based on the latest version is the support for write positional delete files.

I realize that there are more missing features that are likely being worked on but do you have an idea of the priority of the support for write positional deletes? Also, if we wanted to contribute the feature to the project, do you have pointers or guidance that would be helpful?

alexandre-normand avatar Jul 15 '25 20:07 alexandre-normand

I was looking at positional deletes as well and happy to help on this! I'm thinking something similar to the delete in iceberg python https://github.com/apache/iceberg-python/blob/main/pyiceberg/table/init.py#L619

lliangyu-lin avatar Jul 22 '25 23:07 lliangyu-lin

Hey @alexandre-normand sorry for missing this! My next personal priority in this library is going to be adding the variant data type, but if you want to contribute I'll happily give pointers and review any PRs.

Like @lliangyu-lin indicated, much of this library is loosely based on iceberg-python and so that is a good place to look for inspiration.

In this case, for positional deletes you'll need to add a new function to the Transaction object that gives a user a way to indicate what to delete, and then you'll probably need to leverage the scanning infrastructure to determine what files contain the rows you want to delete and write the positional delete files etc.

Make sure to tag me in any PR and I'll help out and/or discuss as I can. I'm sure others will do so too. Thanks again and I'm looking forward to your contributions!

zeroshade avatar Jul 22 '25 23:07 zeroshade