Skip to content

feat!: upgrade DataFusion fork to 55.1.0 - #9177

Merged
sunng87 merged 2 commits into
GreptimeTeam:mainfrom
discord9:feat/datafusion-55.1
Sep 21, 2026
Merged

sunng87 merged 2 commits into
GreptimeTeam:mainfrom
discord9:feat/datafusion-55.1

Conversation

@discord9

@discord9 discord9 commented Sep 16, 2026 •

Copy link
Copy Markdown
Contributor

I hereby agree to the terms of the GreptimeDB CLA.

Refer to a related PR or issue link (optional)

Follow-up to #8555 (DataFusion 55 upgrade). Built on the statistics migration in #9175.

What's changed and what's your intention?

Moves the GreptimeDB DataFusion fork pin from official 55.0.0 to 55.1.0.

DataFusion 55.1.0 is a patch release cut from branch-55 containing eleven cherry-picked fixes, none of which absorbs any GreptimeDB fork patch. The upgrade exists to pick up upstream fixes we would otherwise have to backport by hand — most notably the cast/projection metadata propagation repairs (#23169, #24670), which are in the same area as the field-metadata issues we patched locally during #8555.

55.1.0 contents (11 commits over 55.0.0): schema-adaptation struct field filters (#24125), nested-nullability aggregation batch adaptation (#24394), cast metadata alignment (#23169), projection metadata preservation (#24670), UnnestExec batch_size (#24384), RightMark join ordering panic (#24718), empty-struct ScalarValue (#24582), two FFI codec fixes, minor dependency updates, version bump.

Fork status: all twenty GreptimeDB fork patches are retained. Verified via GitHub compare/branch inspection that none of their corresponding upstream PRs is contained in 55.1.0:

  • Still open upstream: #23800 (global multi-partition fetch), #22906 (safe cast preimages), #25065 (distribution enforcement).
  • Merged to main but not in branch-55: #24686, #24846, #24817, #24248/#24380/#24763.
  • Fork-only patches (Substrait duplicate roots, timestamp widening, dictionary grouping/serialization, OneOf error classification, EXPLAIN pgjson ordering, etc.) have no upstream counterpart.

Rebase verification: the twenty patches were rebased onto 55.1.0 (7d3835c71f30cbd3c3ae4041732267f1f453097a) with zero textual conflicts. The two fork patches touching related areas were checked for semantic overlap against the 55.1.0 metadata fixes and touch disjoint files (logical optimizer optimize_projections vs physical-plan projection.rs; expr-common/casts.rs simplifier vs physical-expr/expressions/cast.rs).

New fork pin: discord9/datafusion branch greptimedb-55.1.0, commit 2aa87d52cdce7006af492330064738f33ed294c1 (= official 55.1.0 + 20 patches). All 14 datafusion* workspace version constraints move =55.0.0 → =55.1.0; all 15 [patch.crates-io] revs and 35 lockfile source blocks move to the new pin.

All CI checks pass (41/41), including the five sqlness suites, all fuzz targets (Remote-WAL migration and logical pruning included), Export/Import V2 E2E, Clippy, unused-dependency check, and the Windows/riscv64 builds. Coverage and the recent-releases compatibility job skip on this PR as usual.

Verification:

  • cargo check -p datafusion-physical-expr -p datafusion-optimizer -p datafusion-physical-plan -p datafusion-expr-common on the rebased fork
  • cargo check -p table -p query (GreptimeDB)
  • cargo clippy -p table -p query --tests -- -D warnings
  • cargo nextest run -p table (89/89, including the fix: preserve count correctness after repartition #9154 test_count_statistics_require_exact_source_rows gate)

PR Checklist

Please convert it to a draft if some of the following conditions are not met.

  • I have written the necessary rustdoc comments.
  • I have added the necessary unit tests and integration tests.
  • This PR requires documentation updates.
  • API changes are backward compatible.
  • Schema or data changes are backward compatible.

Rebase the GreptimeDB DataFusion fork from official 55.0.0 to 55.1.0.
DataFusion 55.1.0 is a patch release on branch-55 containing eleven
cherry-picked fixes (schema-adaptation struct filters, cast/projection
metadata propagation, nested-nullability aggregation adaptation,
UnnestExec batch_size, RightMark join ordering panic, empty-struct
ScalarValue, and FFI codec fixes). All twenty GreptimeDB fork patches
rebase onto it with no textual or semantic overlap; none of them is
absorbed upstream, so all are retained.

Fork pin moves to discord9/datafusion branch greptimedb-55.1.0,
commit 2aa87d52cdce7006af492330064738f33ed294c1 (55.1.0 +
20 patches).

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
@github-actions github-actions Bot added size/S docs-not-required This change does not impact docs. breaking-change This pull request contains breaking changes. labels Sep 16, 2026
@discord9
discord9 marked this pull request as ready for review September 17, 2026 07:11
@discord9
discord9 requested a review from a team as a code owner September 17, 2026 07:11

@sunng87 sunng87 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is this still a breaking change?

Resolve Cargo.toml conflict: keep the DataFusion fork pin at 55.1
(2aa87d52cdce) while adopting main's switch of datafusion-pg-catalog
and arrow-pg to the upstream datafusion-contrib/datafusion-postgres
pin ffb14a52b3d7 from the pgwire 0.41 update (GreptimeTeam#9025). Regenerate
Cargo.lock for the combined pins.

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
@sunng87
sunng87 enabled auto-merge September 21, 2026 03:45
@sunng87
sunng87 added this pull request to the merge queue Sep 21, 2026
Merged via the queue into GreptimeTeam:main with commit 6647dbc Sep 21, 2026
43 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking-change This pull request contains breaking changes. docs-not-required This change does not impact docs. size/S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants