Skip to content

feat(delete-vector): make the delete_vector module public - #3461

Merged
CTTY merged 1 commit into
apache:mainfrom
giladkl:expose-delete-vector
Oct 15, 2026
Merged

CTTY merged 1 commit into
apache:mainfrom
giladkl:expose-delete-vector

Conversation

@giladkl

@giladkl giladkl commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

What changes are included in this PR?

Makes iceberg::delete_vector a public module, so DeleteVector, DeleteVectorIterator and DeleteVector::deserialize can be used outside the crate. An engine that uses this crate for metadata but reads Parquet with a reader of its own cannot go through ArrowReader, and without this it has to reimplement the deletion-vector-v1 decoding and validation that #2866 added. This mirrors puffin, which already exports the container around the vector (PuffinReader, PuffinWriter, DELETION_VECTOR_V1) but not the vector itself.

With the module public, deny(missing_docs) applies to it, so:

  • every public item gets a doc comment, and the module a module-level one;
  • DeleteVector::is_empty is added next to len, for clippy's len_without_is_empty;
  • the #[allow(unused)] on DeleteVector::new is dropped, since it is used.

No behaviour changes. crates/iceberg/public-api.txt is regenerated with make generate-public-api.

Are these changes tested?

No new tests: the change is visibility and documentation. The existing delete_vector unit tests pass, as do cargo clippy --all-targets --all-features -- -D warnings, cargo doc with warnings denied, and the public API check. The decoder is also exercised from outside the crate by our engine's integration test against deletion vectors written by Spark with Iceberg 1.10.1, which is what motivated this change.

AI Disclosure

Developed with Claude Code (Anthropic); the commit carries a Co-authored-by trailer for it. I understand and support these changes.

An engine that uses the crate for metadata but reads Parquet with a reader
of its own cannot go through ArrowReader, and so far had to reimplement the
deletion-vector-v1 decoding to apply deletion vectors. Expose the module,
the way puffin already is, with the docs deny(missing_docs) then requires,
an is_empty next to len, and the public API snapshot regenerated.

Co-authored-by: Claude <[email protected]>

@CTTY CTTY left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Currently the CI is unstable and we are merging fixes. Let's wait for CI fixes to go in first before merging it

@CTTY
CTTY added this pull request to the merge queue Oct 15, 2026
Merged via the queue into apache:main with commit 582b9e1 Oct 15, 2026
24 of 25 checks passed
dina-kar added a commit to ostrium-labs/iceberg-rust that referenced this pull request Oct 21, 2026
delete_vector is a public module since apache#3461, so rustdoc -D warnings
rejects the intra-doc link to the private decode_roaring_directory.

Signed-off-by: Dinakaran <[email protected]>
@nssalian nssalian mentioned this pull request Oct 22, 2026
22 of 64 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Expose the delete_vector module so engines with their own Parquet reader can decode deletion vectors

2 participants