Skip to content

feat: update Arrow to 58 and DataFusion to 53#6638

Merged
jackye1995 merged 11 commits into
lance-format:mainfrom
westonpace:tsaucer/arrow57-datafusion53
Apr 29, 2026
Merged

feat: update Arrow to 58 and DataFusion to 53#6638
jackye1995 merged 11 commits into
lance-format:mainfrom
westonpace:tsaucer/arrow57-datafusion53

Conversation

@westonpace

Copy link
Copy Markdown
Member

This PR is a dependency update only for Arrow and DataFusion. It includes the minimal changes necessary for the upgrade and is not designed to have any additional impact.

Closes #6137

timsaucer and others added 10 commits April 28, 2026 19:20
Upgrade arrow 57 -> 58, datafusion 52.1 -> 53.0, parquet 57 -> 58,
geoarrow 0.7 -> 0.8, geodatafusion 0.3 -> 0.4, and datafusion-python
>=52,<53 -> >=53,<54. Adapt to DataFusion 53 breaking changes:

- PlanProperties now wrapped in Arc (ExecutionPlan::properties returns &Arc<PlanProperties>)
- ExecutionPlan::statistics() removed from trait
- HashJoinExec::try_new gains null_aware: bool parameter
- SimplifyContext::new replaced with SimplifyContext::default() builder
- PGBitwiseNot renamed to BitwiseNot (sqlparser update)
- ScalarValue::RunEndEncoded new variant handled
- MemoryReservation methods no longer require &mut self

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…3 upgrade

The DataFusion 53 upgrade guide specifies that statistics() should be
replaced with partition_statistics(), not just removed. Three
ExecutionPlan implementations had meaningful row-count statistics that
were lost in the initial upgrade:

- LanceScanExec: computes row counts from fragment metadata
- ANNIvfPartitionExec: reports minimum_nprobes as exact row count
- ScalarIndexExec: reports Precision::Exact(2) for index expression results

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Update Python bindings for pyo3 0.26→0.28 API changes:
- FromPyObject now takes two lifetime params and uses `extract` instead of `extract_bound`
- Replace deprecated `downcast()` with `cast()` across all files
- Add `from_py_object` / `skip_from_py_object` to all Clone pyclass types
- Replace deprecated `PyCapsule::reference` with `pointer_checked`

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
DataFusion 53 changed the EnsureCooperative optimizer to skip wrapping
leaf nodes when a cooperative ancestor (CoalescePartitionsExec) already
exists, so CooperativeExec no longer appears around LanceRead in these
plans.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Claude Code Review

This pull request is from a fork — automated review is disabled. A repository maintainer can comment @claude review to run a one-time review.

@westonpace westonpace changed the title chore: dependency update Arrow to 58 and DataFusion to 53#6496 chore: dependency update Arrow to 58 and DataFusion to 53 Apr 29, 2026
@github-actions github-actions Bot added A-python Python bindings A-java Java bindings + JNI chore labels Apr 29, 2026
@jackye1995 jackye1995 changed the title chore: dependency update Arrow to 58 and DataFusion to 53 feat: dependency update Arrow to 58 and DataFusion to 53 Apr 29, 2026
@jackye1995 jackye1995 changed the title feat: dependency update Arrow to 58 and DataFusion to 53 feat: update Arrow to 58 and DataFusion to 53 Apr 29, 2026
@github-actions github-actions Bot added the enhancement New feature or request label Apr 29, 2026
@jackye1995 jackye1995 merged commit 787ee71 into lance-format:main Apr 29, 2026
30 of 32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-java Java bindings + JNI A-python Python bindings chore enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update to Arrow 58

3 participants