Skip to content

Set version on main to 56.0.0-dev, document release versioning scheme - #26845

Merged
alamb merged 12 commits into
apache:mainfrom
alamb:alamb/dev-version
Nov 2, 2026
Merged

alamb merged 12 commits into
apache:mainfrom
alamb:alamb/dev-version

Conversation

@alamb

@alamb alamb commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Rationale for this change

As discussed on #24461, it is currently hard to tell what version of DataFusion a build came from: main reports the previous release version (55.1.0) even though it contains unreleased code destined for 56.0.0.

This PR changes the version on main to 56.0.0-dev (the semver pre-release form of the upcoming release). The benefits are:

  • it is clearer that the version on main is not a release
  • -dev versions can never be accidentally published to crates.io as if they were a release

What changes are included in this PR?

Details - Bump the workspace version in `Cargo.toml` / `Cargo.lock` to `56.0.0-dev` - Regenerate `docs/source/user-guide/configs.md` (the default of `datafusion.execution.parquet.created_by` includes the version) - Update `dev/release/README.md` with the new versioning scheme: a new "Version Numbers" section, a new step "1b. Bump Version on main" describing the version bump PR, updated step 2 examples, and step 11 ("Sync Changelog and Documentation to main") no longer syncs the release version back to `main`, only the changelog and the user facing crate examples - Update `docs/source/contributor-guide/release_management.md` to describe the `-dev` convention - Update `dev/update_datafusion_versions.py` so that it: - Sets the release labeler target to the version without the `-dev` suffix (e.g. `56.0.0-dev` -> `v56.0.0`) rather than `major + 1` - Skips updating the user facing `Cargo.toml` examples (e.g. `docs/source/download.md`) for `-dev` versions, since those are never published to crates.io

Notes:

What is the testing strategy for this PR?

  • Existing CI

Are there any user-facing changes?

Builds from main now report version 56.0.0-dev instead of 55.1.0. The release process documentation is updated.

@github-actions github-actions Bot added documentation Improvements or additions to documentation development-process Related to development process of DataFusion labels Oct 28, 2026
@github-actions github-actions Bot added the sqllogictest SQL Logic Tests (.slt) label Oct 29, 2026
alamb and others added 3 commits October 29, 2026 15:26
…the version string

The default created_by embeds the DataFusion version, so a longer version
string (e.g. 56.0.0-dev) changes the size of every written parquet file,
which shifts byte based metrics (scan_efficiency_ratio, file_groups byte
ranges, file_size_bytes) in sqllogictest and datafusion-cli expectations.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 4ede8bd)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@alamb
alamb force-pushed the alamb/dev-version branch from 939eead to f98a6e4 Compare October 29, 2026 19:34
alamb added a commit to 2010YOUY01/arrow-datafusion that referenced this pull request Oct 29, 2026
…dent of the version string (apache#26892)

## Which issue does this PR close?

- Part of apache#24461
- Split out from apache#26845

## Rationale for this change

While testing a `56.0.0-dev` version on `main` in
apache#26845, CI failed because the
default `datafusion.execution.parquet.created_by` value (`datafusion
version 55.1.0`) is written into every Parquet file, so changing the
version string changes the size of every Parquet file written during
tests.

Since this happens any time the version string changes, let's just hard
code it into the tests that don't matter

## What changes are included in this PR?
Hard code a version in tests that don't need it

## What is the testing strategy for this PR?

Existing CI. 

## Are there any user-facing changes?

No, test only.

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
@nuno-faria nuno-faria self-assigned this Oct 30, 2026
@github-actions github-actions Bot removed the sqllogictest SQL Logic Tests (.slt) label Oct 30, 2026
08)----------FilterExec: n@0 < 5, metrics=[]
09)------------WorkTableExec: name=w, metrics=[]
10)--------DataSourceExec: file_groups={1 group: [[WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/cte/hash_join_dynamic_filter.parquet]]}, projection=[k], output_ordering=[k@0 ASC NULLS LAST], file_type=parquet, predicate=DynamicFilter [ true ], dynamic_rg_pruning=eligible, metrics=[output_rows=4, output_batches=4, files_ranges_pruned_statistics=4 total → 4 matched, row_groups_pruned_statistics=4 total → 4 matched, page_index_pages_pruned=4 total → 4 matched, page_index_rows_pruned=400 total → 400 matched, limit_pruned_row_groups=0 total → 0 matched, batches_split=0, file_open_errors=0, file_scan_errors=0, files_opened=4, files_processed=4, num_predicate_creation_errors=0, predicate_evaluation_errors=0, pushdown_rows_matched=4, pushdown_rows_pruned=396, predicate_cache_inner_records=400, predicate_cache_records=4, scan_efficiency_ratio=157.36% (1.14 K/727)]
10)--------DataSourceExec: file_groups={1 group: [[WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/cte/hash_join_dynamic_filter.parquet]]}, projection=[k], output_ordering=[k@0 ASC NULLS LAST], file_type=parquet, predicate=DynamicFilter [ true ], dynamic_rg_pruning=eligible, metrics=[output_rows=4, output_batches=4, files_ranges_pruned_statistics=4 total → 4 matched, row_groups_pruned_statistics=4 total → 4 matched, page_index_pages_pruned=4 total → 4 matched, page_index_rows_pruned=400 total → 400 matched, limit_pruned_row_groups=0 total → 0 matched, batches_split=0, file_open_errors=0, file_scan_errors=0, files_opened=4, files_processed=4, num_predicate_creation_errors=0, predicate_evaluation_errors=0, pushdown_rows_matched=4, pushdown_rows_pruned=396, predicate_cache_inner_records=400, predicate_cache_records=4, scan_efficiency_ratio=160.67% (1.14 K/712)]

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

percentage difference is due to updatings to the version

| datafusion.execution.parquet.statistics_enabled | page | (writing) Sets if statistics are enabled for any column Valid values are: "none", "chunk", and "page" These values are not case sensitive. If NULL, uses default parquet writer setting |
| datafusion.execution.parquet.max_row_group_size | 1048576 | (writing) Target maximum number of rows in each row group (defaults to 1M rows). Writing larger row groups requires more memory to write, but can get better compression and be faster to read. When `max_row_group_bytes` is also set, the writer flushes a row group when either limit is reached, whichever comes first. |
| datafusion.execution.parquet.max_row_group_bytes | NULL | (writing) Target maximum size of each row group in bytes. When set, the writer flushes whenever either this limit or `max_row_group_size` is reached, whichever comes first. Useful for bounding writer memory on wide schemas where a row-count limit can map to very different byte sizes. Matches the behavior of `parquet.block.size` in parquet-mr. If `None` (the default), only the row-count limit applies. Currently only honored when `allow_single_file_parallelism` is `false`; by default the parallel file writer ignores this limit. |
| datafusion.execution.parquet.created_by | datafusion version 56.0.0-dev | (writing) Sets "created by" property |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

If you look at this diff with whitespace blind: https://github.com/apache/datafusion/pull/26845/changes?w=1

It only changes the created_by field, everything else is whitespace diffs

Comment thread dev/release/README.md
### 11. Sync Changelog and Version to main
### 12. Sync Changelog and Documentation to main

The crate version is **not** synced back to `main`: `main` already carries the

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

FYI @xudong963 -- here is a proposal for how to do versions after the next release

@alamb
alamb marked this pull request as ready for review November 1, 2026 12:50
@alamb
alamb requested review from mbutrovich and xudong963 November 1, 2026 12:50

@nuno-faria nuno-faria left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks @alamb. I left some minor nits below.

Comment thread dev/release/README.md Outdated
```shell
python3 dev/update_datafusion_versions.py 57.0.0-dev
cargo update --workspace # updates Cargo.lock
./dev/update_config_docs.sh # regenerates docs/source/user-guide/configs.md

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I guess the update config docs is to update the formatting? I think we could also just run prettier to be faster.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Makes sense -- updated.

Comment thread dev/release/README.md
Comment on lines +502 to +504
```shell
sed -i '' 's/55\.1\.0/56.0.0/' docs/source/download.md docs/source/user-guide/{crate-configuration,example-usage}.md
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

What if the update versions script had a flag to just update the user facing ones?

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.

like add a --user-facing-docs-only mode

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

What if the update versions script had a flag to just update the user facing ones?

The sed -i '' form in this step is BSD (macOS) syntax. GNU sed takes the backup suffix only when it's attached to -i, so on Linux the '' becomes the script and s/55\.1\.0/56.0.0/ is read as a file name. A docs-only mode in update_datafusion_versions.py would avoid that as well as the hand-maintained file list.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

ok, I had claude whip it up

@mbutrovich mbutrovich left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks @alamb! Just a minor docs request for anyone trying to use main as a dependency.

Comment thread Cargo.toml
rust-version = "1.95.0"
# Define DataFusion version
version = "55.1.0"
version = "56.0.0-dev"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Should we add a sentence to the Using the nightly DataFusion builds section about how to depend on main now that it's a pre-release? A git dependency with no version still resolves. A requirement like version = "56" next to the git source, or a [patch.crates-io] entry used with a "56" requirement, no longer matches, because Cargo only matches a pre-release when the requirement names one:

error: failed to select a version for the requirement `a = "^56"`
candidate versions found which didn't match: 56.0.0-dev
help: if you are looking for the prerelease package it needs to be specified explicitly
    a = { version = "56.0.0-dev" }

Downstream projects that test against main will hit this the first time they bump, so one line saying to use version = "57.0.0-dev" (or leave the version off) would save them the search.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

updated

@alamb
alamb requested a review from mbutrovich November 2, 2026 21:30
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@mbutrovich mbutrovich left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks @alamb!

@alamb
alamb added this pull request to the merge queue Nov 2, 2026
@alamb

alamb commented Nov 2, 2026

Copy link
Copy Markdown
Contributor Author

Thanks. Let's give it a try@

Merged via the queue into apache:main with commit d38fde4 Nov 2, 2026
46 checks passed
@alamb
alamb deleted the alamb/dev-version branch November 2, 2026 22:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

development-process Related to development process of DataFusion documentation Improvements or additions to documentation v56.0.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants