Skip to content

chore: upgrade DataFusion to 54.1.0 - #2126

Merged
andygrove merged 1 commit into
apache:mainfrom
andygrove:bump-datafusion-54.1.0
Jul 22, 2026
Merged

chore: upgrade DataFusion to 54.1.0#2126
andygrove merged 1 commit into
apache:mainfrom
andygrove:bump-datafusion-54.1.0

Conversation

@andygrove

@andygrove andygrove commented Jul 21, 2026

Copy link
Copy Markdown
Member

Which issue does this PR close?

N/A

Rationale for this change

DataFusion 54.1.0 was released, so Ballista should pick it up and stay current with the upstream patch release.

What changes are included in this PR?

  • Move Cargo.lock to the DataFusion 54.1.0 patch release.
  • Re-sync the vendored DataFusion proto files with dev/update_datafusion_proto.py, which adds the new null_aware field to JoinNode in ballista/core/proto/datafusion.proto.
  • Add a comment in Cargo.toml explaining why the datafusion* requirements stay at 54.

The workspace requirements deliberately stay at 54 rather than pinning 54.1.0. The python workspace has its own lockfile but depends on the ballista crates by path, so an exact requirement here drags it onto 54.1.0 too, and datafusion-python 54.0.0 does not compile against 54.1.0:

error[E0063]: missing field `schema` in initializer of `datafusion::logical_expr::RecursiveQuery`
  --> datafusion-python-54.0.0/src/expr/recursive_query.rs:72:20

DataFusion 54.1.0 added a schema field to the public RecursiveQuery struct, and there is no 54.1.0 release of datafusion-python yet. Keeping the requirement at 54 lets the main workspace build against 54.1.0 while python/Cargo.lock stays on 54.0.0 until datafusion-python catches up. python/ is unchanged by this PR.

Are there any user-facing changes?

No API changes in Ballista itself. The scheduler, executor, CLI and benchmarks now build against DataFusion 54.1.0. The Python wheel continues to build against 54.0.0.

Move the lockfile to the DataFusion 54.1.0 patch release and re-sync the
vendored DataFusion proto files, which picks up the new `null_aware` field on
`JoinNode`.

The workspace requirements stay at `54` rather than pinning `54.1.0`. The
python workspace has its own lockfile but depends on the ballista crates by
path, so an exact requirement here forces it onto 54.1.0 as well, and
datafusion-python 54.0.0 does not compile against 54.1.0 -- that release added
a `schema` field to the public `RecursiveQuery` struct. Leaving the
requirement at `54` lets the main workspace build against 54.1.0 while
python/Cargo.lock stays on 54.0.0 until datafusion-python catches up.
@andygrove
andygrove force-pushed the bump-datafusion-54.1.0 branch from e773886 to 3c76e80 Compare July 21, 2026 18:17
@andygrove andygrove changed the title chore: bump DataFusion to 54.1.0 chore: upgrade DataFusion to 54.1.0 Jul 21, 2026
@andygrove
andygrove marked this pull request as ready for review July 21, 2026 20:26
@andygrove
andygrove merged commit 9b58795 into apache:main Jul 22, 2026
23 checks passed
andygrove added a commit to andygrove/datafusion-ballista that referenced this pull request Jul 22, 2026
Resolves three conflicts:

* `Cargo.toml` / `Cargo.lock` — drop the `[patch.crates-io]` DataFusion git
  pin. It existed only to pick up apache/datafusion#22785 (logical `JoinNode`
  proto round-trip preserving `null_equality`), which was on `branch-54` but
  not in the released 54.0.0 tag. main is now on released DataFusion 54.1.0
  (apache#2126), which contains the fix, so the pin retires as its own comment
  instructed. Verified: `logical_join_roundtrip_preserves_null_equality`
  passes against datafusion-proto 54.1.0 from crates.io with no patch block.

* `ballista/core/src/serde/mod.rs` — both sides appended tests at the same
  point in the `test` module. Kept both: this branch's
  `logical_join_roundtrip_preserves_null_equality` plus main's
  `RuntimeStatsExec` / `BufferExec` codec round-trip tests.

* `benchmarks/src/bin/tpcds.rs` — both sides removed different entries from
  the same `SKIP` group. This branch un-skipped q38/q87 (fixed by the
  `null_equality` change); main un-skipped q4/q78 (fixed by apache#2072, which
  removed the incorrect SortMergeJoinExec broadcast conversion). Took the
  union, so all four are now in the correctness gate and the `apache#2046` group
  and its comment are gone.
andygrove added a commit to andygrove/datafusion-ballista that referenced this pull request Jul 22, 2026
Resolves three conflicts:

* `Cargo.toml` / `Cargo.lock` — drop the `[patch.crates-io]` DataFusion git
  pin. It existed only to pick up apache/datafusion#22785 (logical `JoinNode`
  proto round-trip preserving `null_equality`), which was on `branch-54` but
  not in the released 54.0.0 tag. main is now on released DataFusion 54.1.0
  (apache#2126), which contains the fix, so the pin retires as its own comment
  instructed. Verified: `logical_join_roundtrip_preserves_null_equality`
  passes against datafusion-proto 54.1.0 from crates.io with no patch block.

* `ballista/core/src/serde/mod.rs` — both sides appended tests at the same
  point in the `test` module. Kept both: this branch's
  `logical_join_roundtrip_preserves_null_equality` plus main's
  `RuntimeStatsExec` / `BufferExec` codec round-trip tests.

* `benchmarks/src/bin/tpcds.rs` — both sides removed different entries from
  the same `SKIP` group. This branch un-skipped q38/q87 (fixed by the
  `null_equality` change); main un-skipped q4/q78 (fixed by apache#2072, which
  removed the incorrect SortMergeJoinExec broadcast conversion). Took the
  union, so all four are now in the correctness gate and the `apache#2046` group
  and its comment are gone.
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