Skip to content

[EPIC] DataFusion 56 upgrade: regressions found by tracking DataFusion branch-56 #6410

Open

Description

@andygrove

What is the problem the feature request solves?

Draft PR #7249 (which replaced #6404) builds Comet against an unreleased DataFusion revision instead of a release. That way, upstream changes reach Comet's CI weeks before DataFusion 56.0.0 is released (targeted for Oct/Nov, apache/datafusion#24461). DataFusion has now cut branch-56 for the release, so the PR tracks that branch instead of main. It is not meant to merge before the release. It currently pins these versions:

Dependency Version
DataFusion 1635ed9 (branch-56, 2026-11-03)
arrow, parquet 60.1.0
object_store 0.14.2
iceberg-rust 1f52867: apache/iceberg-rust#3257 (Arrow 60, not merged yet) with main b154603 merged in

This issue tracks the regressions that PR finds. The goal is to fix them upstream, or work around them in Comet, before the release rather than after it.

Describe the potential solution

Regressions

Check an item off once #7249 pins a revision that has the fix.

Behavior changes reviewed and accepted

  • Arrow 60 accepts empty entries in unsorted Variant dictionaries (Add proptest fuzzing to parquet-variant and implement fixes for findings arrow-rs#10352). Comet's empty-key workaround used to reject two malformed dictionaries. Both now pass through unchanged, as they do in Spark.
  • A failed read from a JVM input stream now reports Cannot get next batch from input stream. Error code: N. Producer error: .... This is because Arrow 60 made the C Stream callbacks private, so Comet now uses the stock RecordBatchStreamReader (named ArrowArrayStreamReader before Arrow 60.1).
  • An invalid shuffle IPC schema message now returns a decode error instead of panicking (try_fb_to_schema).
  • DataFusion's new floor/ceil return types and map_extract absent-key results don't reach Comet, because Comet registers its own implementations.
  • DataFusion now treats a missing Parquet null count as unknown rather than zero. That is a correctness fix. It can reduce pruning on files written by parquet-rs versions before 53.1.

Upstream follow-ups

  • Move the iceberg-rust pin to a main revision once Bump to Arrow 60 iceberg-rust#3257 merges.
  • DataFusion 56 deprecates HashJoinExec::with_dynamic_filter_expr and SortExec::with_dynamic_filter_expr with no replacement. Comet no longer needs either (993beb81a): the runtime TopK uses the filter a SortExec with a fetch creates for itself, and DynamicFilterJoinExec has the join install its filter through handle_child_pushdown_result, as DataFusion's FilterPushdown rule does. No upstream issue needed.
  • Remove the Variant workarounds that Arrow 60 makes unnecessary ([Variant] Track and remove native Variant compatibility workarounds after upstream fixes #5477).

Open Comet issues that depend on DataFusion main

Each issue below waits on a DataFusion change that is not in branch-55, so it can only be finished or rechecked once Comet moves to DataFusion 56. All of the upstream changes named below are in branch-56 (checked against 1635ed9), so each item can now be done on top of #7249. Check an item off once Comet has adopted the change and the issue is resolved.

Date DataFusion iceberg-rust Suites Result
2026-09-29 4a5d580 0d5eb12 PR tier (run) 1 failure (the NaN bounds bug)
2026-11-03 1635ed9 1f52867 Local only: cargo test --workspace and clippy Pass, with the #7242 and #7469 tests ignored

Additional context

Steps for triaging a red run on #7249:

  1. Re-run it once and compare with main's latest nightly, since some failures are known flakes.
  2. Run the failing test on the merge commit with the previous upstream revision. This tells an upstream change apart from a Comet change on main.
  3. Bisect the upstream commits between the two revisions, using a local [patch] override. branch-56 only gets backports now, so the range is usually small.

#7249 has the run-iceberg-tests and run-all-spark-profiles labels, so CI runs Iceberg's Spark tests and the non-default Spark profiles once the branch is mergeable.

Activity

  1. self-assigned this
    on Sep 29, 2026
  2. andygrove commented on Oct 26, 2026

    @andygrove
    MemberAuthor

    The NaN manifest bounds regression is now tracked in #7242. #6404 ignores its test until the fix lands.

  3. changed the title [-][EPIC] DataFusion 56 upgrade: regressions found by tracking DataFusion main[/-] [+][EPIC] DataFusion 56 upgrade: regressions found by tracking DataFusion branch-56[/+] on Nov 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions