Skip to content

refactor(iceberg): adopt Apache datafusion-iceberg - #742

Merged
alexanderbianchi merged 1 commit into
datafusion-contrib:mainfrom
alexanderbianchi:deps/apache-datafusion-iceberg
Sep 24, 2026
Merged

alexanderbianchi merged 1 commit into
datafusion-contrib:mainfrom
alexanderbianchi:deps/apache-datafusion-iceberg

Conversation

@alexanderbianchi

@alexanderbianchi alexanderbianchi commented Sep 22, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • add the Apache datafusion-iceberg crate as a pinned dependency of the DFD Iceberg integration
  • use its public convert_filters_to_predicate implementation and remove DFD's copied implementation and tests
  • align the direct iceberg and iceberg-storage-opendal revisions with the revision used by datafusion-iceberg

DFD still depends directly on iceberg-rust for core Iceberg model, runtime, scan-task, and storage types because datafusion-iceberg does not re-export them. DFD's table providers and data source also remain custom: they build an IcebergDataSource backed by distributed work-unit feeds, whereas the upstream providers build a local IcebergTableScan.

Ideally we see datafusion-iceberg and DFD converge such that DFD has it's own data source but it's swapped out during planning. This is because DFD relies on work-unit feeds which are not a general datafusion concept.

Validation

  • cargo check -p datafusion-distributed-iceberg
  • cargo test -p datafusion-distributed-iceberg --lib
  • cargo fmt --all -- --check
  • git diff --check

@alexanderbianchi
alexanderbianchi force-pushed the deps/apache-datafusion-iceberg branch from c525a95 to 21f28f9 Compare September 22, 2026 20:41
@alexanderbianchi alexanderbianchi changed the title refactor(iceberg): depend on Apache datafusion-iceberg refactor(iceberg): adopt Apache datafusion-iceberg Sep 22, 2026
@alexanderbianchi
alexanderbianchi marked this pull request as ready for review September 22, 2026 21:27

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

Nice, thanks @alexanderbianchi!

@alexanderbianchi
alexanderbianchi merged commit 2e6e1e3 into datafusion-contrib:main Sep 24, 2026
68 of 70 checks passed
alexanderbianchi added a commit that referenced this pull request Sep 24, 2026
## Summary

Revert #742 until Apache `datafusion-iceberg` uses an `iceberg-rust`
revision containing [FileScanTask serialization
support](apache/iceberg-rust#3091).

#742 aligned our Iceberg dependencies with upstream's older `665c64e`
revision, dropping that support. Distributed scans panic in
`FileScanTaskWorkUnit::serialized()` with `Serialization not implemented
for this field`, and `executes_with_estimated_scan_tasks` then hangs.
Reproduced on the merge commit.

This is an exact revert: restore the previous `4d83bc7` dependency pins
and local predicate conversion implementation, without changing
task-count or transport behavior.

Fixes #748.

## Validation

- `cargo test --locked -p datafusion-distributed-iceberg --features
integration` — all 84 unit/integration tests and 1 doctest pass,
including the previously hanging test.
- `cargo fmt --all -- --check`
- `git diff --check HEAD^ HEAD`
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.

2 participants