This is an automated email from the ASF dual-hosted git repository.
Jefffrey pushed a commit to branch 59_maintenance
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/59_maintenance by this push:
new 9ea30dfacb [59_maintenance] Update version to `59.3.2` and add
CHANGELOG (#11797)
9ea30dfacb is described below
commit 9ea30dfacb7003de9ffc87ef50231f18229fcdb5
Author: Andrew Lamb <[email protected]>
AuthorDate: Thu Oct 22 21:16:02 2026 -0400
[59_maintenance] Update version to `59.3.2` and add CHANGELOG (#11797)
# Which issue does this PR close?
- Part of https://github.com/apache/arrow-rs/issues/11664
# Rationale for this change
Prepare for the `59.3.2` patch release from the `59_maintenance` branch
# What changes are included in this PR?
1. Update version to `59.3.2`
2. Move the `59.3.1` changelog entry into `CHANGELOG-old.md`
3. Add `59.3.2` CHANGELOG (see rendered version
https://github.com/alamb/arrow-rs/blob/alamb/prepare_59.3.2/CHANGELOG.md)
Note: the backport PRs on `59_maintenance` did not carry `bug` /
`development-process` labels, so `git-cliff` could not group them. The
changelog entries were written by hand in the same format, grouping all
fixes under "Bug fixes" and omitting the CI-only changes (#11781,
#11793), following how the corresponding `main` PRs were labeled.
# Are these changes tested?
By CI
# Are there any user-facing changes?
New version and changelog
---------
Co-authored-by: Claude Fable 5.1 <[email protected]>
Co-authored-by: Jefffrey <[email protected]>
---
CHANGELOG-old.md | 20 +++++++++++++
CHANGELOG.md | 33 +++++++++++----------
Cargo.lock | 52 ++++++++++++++++-----------------
Cargo.toml | 42 +++++++++++++-------------
arrow-ipc/src/writer.rs | 6 ++--
dev/release/README.md | 15 +++++-----
dev/release/create-tarball.sh | 11 +++++--
dev/release/rat_exclude_files.txt | 3 ++
dev/release/verify-release-candidate.sh | 24 +++++++++++++++
9 files changed, 129 insertions(+), 77 deletions(-)
diff --git a/CHANGELOG-old.md b/CHANGELOG-old.md
index a8cef69b3f..7df5f7abc9 100644
--- a/CHANGELOG-old.md
+++ b/CHANGELOG-old.md
@@ -21,6 +21,26 @@
# Changelog
+## [59.3.1](https://github.com/apache/arrow-rs/tree/59.3.1) - (2026-10-10)
+
+[Full Changelog](https://github.com/apache/arrow-rs/compare/59.3.0...59.3.1)
+
+### Bug fixes
+- [59_maintenance] fix(arrow-array): avoid returning corrupt array in
`GenericByteArray::into_builder` by @Jefffrey in
[#11446](https://github.com/apache/arrow-rs/pull/11446)
+- [59_maintenance] fix(arrow-array): preserve type params in
`PrimitiveArray::into_builder` by @Jefffrey in
[#11448](https://github.com/apache/arrow-rs/pull/11448)
+- [59_maintenance] fix(arrow-cast): avoid panicking during failed List ->
ListView cast by @Jefffrey in
[#11445](https://github.com/apache/arrow-rs/pull/11445)
+- [59_maintenance] Fix filter_nulls for predicates selecting all or no rows by
@Jefffrey in [#11444](https://github.com/apache/arrow-rs/pull/11444)
+- [59_maintenance] fix: finish methods in `PrimitiveDictionaryBuilder` discard
type params by @Jefffrey in
[#11442](https://github.com/apache/arrow-rs/pull/11442)
+- [59_maintenance] fix(arrow-array): `PrimitiveRunBuilder` was buggy after
`finish` by @Jefffrey in [#11441](https://github.com/apache/arrow-rs/pull/11441)
+- [59_maintenance] fix(parquet): keep virtual columns in the schema reported
with a schema hint by @Jefffrey in
[#11447](https://github.com/apache/arrow-rs/pull/11447)
+- [59_maintenance] fix(arrow-data): fix gaps in ListView equality by @Jefffrey
in [#11439](https://github.com/apache/arrow-rs/pull/11439)
+- [59_maintenance] fix: Parquet `ByteArrayDecoderPlain::read` can silently
fail to read the correct number of values by @Jefffrey in
[#11440](https://github.com/apache/arrow-rs/pull/11440)
+- [59_maintenance] fix(parquet): reject Thrift list sizes larger than
remaining input by @Jefffrey in
[#11353](https://github.com/apache/arrow-rs/pull/11353)
+
+### Miscellaneous
+- [59_maintenance] Identify the chronoutil-derived MIT code in the root
LICENSE.txt by @Jefffrey in
[#11358](https://github.com/apache/arrow-rs/pull/11358)
+- [59_maintenance] fix: update rustls to address RUSTSEC-2026-0285 by
@Jefffrey in [#11357](https://github.com/apache/arrow-rs/pull/11357)
+
## [59.3.0](https://github.com/apache/arrow-rs/tree/59.3.0) - (2026-08-25)
[Full Changelog](https://github.com/apache/arrow-rs/compare/59.2.0...59.3.0)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1a5c12dbf8..b007369c47 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,23 +20,24 @@
# Changelog
-## [59.3.1](https://github.com/apache/arrow-rs/tree/59.3.1) - (2026-10-10)
+## [59.3.2](https://github.com/apache/arrow-rs/tree/59.3.2) - (2026-10-22)
-[Full Changelog](https://github.com/apache/arrow-rs/compare/59.3.0...59.3.1)
+[Full Changelog](https://github.com/apache/arrow-rs/compare/59.3.1...59.3.2)
### Bug fixes
-- [59_maintenance] fix(arrow-array): avoid returning corrupt array in
`GenericByteArray::into_builder` by @Jefffrey in
[#11446](https://github.com/apache/arrow-rs/pull/11446)
-- [59_maintenance] fix(arrow-array): preserve type params in
`PrimitiveArray::into_builder` by @Jefffrey in
[#11448](https://github.com/apache/arrow-rs/pull/11448)
-- [59_maintenance] fix(arrow-cast): avoid panicking during failed List ->
ListView cast by @Jefffrey in
[#11445](https://github.com/apache/arrow-rs/pull/11445)
-- [59_maintenance] Fix filter_nulls for predicates selecting all or no rows by
@Jefffrey in [#11444](https://github.com/apache/arrow-rs/pull/11444)
-- [59_maintenance] fix: finish methods in `PrimitiveDictionaryBuilder` discard
type params by @Jefffrey in
[#11442](https://github.com/apache/arrow-rs/pull/11442)
-- [59_maintenance] fix(arrow-array): `PrimitiveRunBuilder` was buggy after
`finish` by @Jefffrey in [#11441](https://github.com/apache/arrow-rs/pull/11441)
-- [59_maintenance] fix(parquet): keep virtual columns in the schema reported
with a schema hint by @Jefffrey in
[#11447](https://github.com/apache/arrow-rs/pull/11447)
-- [59_maintenance] fix(arrow-data): fix gaps in ListView equality by @Jefffrey
in [#11439](https://github.com/apache/arrow-rs/pull/11439)
-- [59_maintenance] fix: Parquet `ByteArrayDecoderPlain::read` can silently
fail to read the correct number of values by @Jefffrey in
[#11440](https://github.com/apache/arrow-rs/pull/11440)
-- [59_maintenance] fix(parquet): reject Thrift list sizes larger than
remaining input by @Jefffrey in
[#11353](https://github.com/apache/arrow-rs/pull/11353)
-
-### Miscellaneous
-- [59_maintenance] Identify the chronoutil-derived MIT code in the root
LICENSE.txt by @Jefffrey in
[#11358](https://github.com/apache/arrow-rs/pull/11358)
-- [59_maintenance] fix: update rustls to address RUSTSEC-2026-0285 by
@Jefffrey in [#11357](https://github.com/apache/arrow-rs/pull/11357)
+- [59_maintenance] Write empty validity buffers for arrays without nulls in
IPC writer by @alamb in [#11820](https://github.com/apache/arrow-rs/pull/11820)
+- [59_maintenance] fix(arrow-buffer): prevent use-after-free in
Buffer::shrink_to_fit when MemoryReservation::resize panics by @alamb in
[#11787](https://github.com/apache/arrow-rs/pull/11787)
+- [59_maintenance] fix(parquet): skip miniblocks wider than 64 values instead
of erroring by @Jefffrey in
[#11754](https://github.com/apache/arrow-rs/pull/11754)
+- [59_maintenance] fix: account for offsets in runarrays when using extend for
MutableArrayData by @Jefffrey in
[#11671](https://github.com/apache/arrow-rs/pull/11671)
+- [59_maintenance] fix: account for offset when building RunArray from
ArrayData by @alamb in [#11739](https://github.com/apache/arrow-rs/pull/11739)
+- [59_maintenance] fix: use correct length in runarray validation by @alamb in
[#11740](https://github.com/apache/arrow-rs/pull/11740)
+- [59_maintenance] fix: account for arraydata offset when comparing runarrays
by @Jefffrey in [#11673](https://github.com/apache/arrow-rs/pull/11673)
+- [59_maintenance] fix(arrow-schema): validate `UnionFields` when
deserializing by @Jefffrey in
[#11672](https://github.com/apache/arrow-rs/pull/11672)
+- [59_maintenance] fix: implement `ArrayData::validate_values` for union types
by @Jefffrey in [#11678](https://github.com/apache/arrow-rs/pull/11678)
+- [59_maintenance] Fix sliced sparse union ArrayData conversion by @Jefffrey
in [#11679](https://github.com/apache/arrow-rs/pull/11679)
+- [59_maintenance] fix(arrow-data): account for FixedSizeList parent offset in
MutableArrayData by @Jefffrey in
[#11683](https://github.com/apache/arrow-rs/pull/11683)
+- [59_maintenance] fix: `UnionFields::from_iter` should validate input by
@Jefffrey in [#11670](https://github.com/apache/arrow-rs/pull/11670)
+- [59_maintenance] fix(arrow-array): use the field's type id in dense union
logical_nulls by @Jefffrey in
[#11680](https://github.com/apache/arrow-rs/pull/11680)
+- [59_maintenance] Parquet: list the dictionary page first in
page_encoding_stats by @Jefffrey in
[#11699](https://github.com/apache/arrow-rs/pull/11699)
+- [59_maintenance] fix(arrow-data): check view nulls at the right index in
`ArrayData` equality by @Jefffrey in
[#11675](https://github.com/apache/arrow-rs/pull/11675)
diff --git a/Cargo.lock b/Cargo.lock
index aecbf188da..839c9f1f98 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -170,7 +170,7 @@ dependencies = [
[[package]]
name = "arrow"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow-arith",
"arrow-array",
@@ -197,7 +197,7 @@ dependencies = [
[[package]]
name = "arrow-arith"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -210,7 +210,7 @@ dependencies = [
[[package]]
name = "arrow-array"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"ahash",
"arrow-buffer",
@@ -231,7 +231,7 @@ dependencies = [
[[package]]
name = "arrow-avro"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"apache-avro",
"arrow",
@@ -268,7 +268,7 @@ dependencies = [
[[package]]
name = "arrow-buffer"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"bytes",
"criterion",
@@ -280,7 +280,7 @@ dependencies = [
[[package]]
name = "arrow-cast"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -303,7 +303,7 @@ dependencies = [
[[package]]
name = "arrow-csv"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -322,7 +322,7 @@ dependencies = [
[[package]]
name = "arrow-data"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow-buffer",
"arrow-schema",
@@ -333,7 +333,7 @@ dependencies = [
[[package]]
name = "arrow-flight"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"anyhow",
"arrow-arith",
@@ -373,7 +373,7 @@ dependencies = [
[[package]]
name = "arrow-integration-test"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow",
"arrow-buffer",
@@ -386,7 +386,7 @@ dependencies = [
[[package]]
name = "arrow-integration-testing"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow",
"arrow-buffer",
@@ -406,7 +406,7 @@ dependencies = [
[[package]]
name = "arrow-ipc"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -425,7 +425,7 @@ dependencies = [
[[package]]
name = "arrow-json"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arbitrary",
"arrow-array",
@@ -456,7 +456,7 @@ dependencies = [
[[package]]
name = "arrow-ord"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -469,7 +469,7 @@ dependencies = [
[[package]]
name = "arrow-pyarrow"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow-array",
"arrow-data",
@@ -479,7 +479,7 @@ dependencies = [
[[package]]
name = "arrow-row"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -494,7 +494,7 @@ dependencies = [
[[package]]
name = "arrow-schema"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"bitflags",
"criterion",
@@ -507,7 +507,7 @@ dependencies = [
[[package]]
name = "arrow-select"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"ahash",
"arrow-array",
@@ -520,7 +520,7 @@ dependencies = [
[[package]]
name = "arrow-string"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -2334,7 +2334,7 @@ dependencies = [
[[package]]
name = "parquet"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"ahash",
"arrow",
@@ -2383,7 +2383,7 @@ dependencies = [
[[package]]
name = "parquet-geospatial"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow-schema",
"geo-traits",
@@ -2395,7 +2395,7 @@ dependencies = [
[[package]]
name = "parquet-variant"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow",
"arrow-schema",
@@ -2411,7 +2411,7 @@ dependencies = [
[[package]]
name = "parquet-variant-compute"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow",
"arrow-schema",
@@ -2428,7 +2428,7 @@ dependencies = [
[[package]]
name = "parquet-variant-json"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"arrow-schema",
"base64 0.23.0",
@@ -2440,7 +2440,7 @@ dependencies = [
[[package]]
name = "parquet_derive"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"parquet",
"proc-macro2",
@@ -2450,7 +2450,7 @@ dependencies = [
[[package]]
name = "parquet_derive_test"
-version = "59.3.1"
+version = "59.3.2"
dependencies = [
"chrono",
"parquet",
diff --git a/Cargo.toml b/Cargo.toml
index acc3a02b8d..4bd6465794 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -68,7 +68,7 @@ exclude = [
]
[workspace.package]
-version = "59.3.1"
+version = "59.3.2"
repository = "https://github.com/apache/arrow-rs"
authors = ["Apache Arrow <[email protected]>"]
license = "Apache-2.0"
@@ -84,26 +84,26 @@ edition = "2024"
rust-version = "1.85"
[workspace.dependencies]
-arrow = { version = "59.3.1", path = "./arrow", default-features = false }
-arrow-arith = { version = "59.3.1", path = "./arrow-arith" }
-arrow-array = { version = "59.3.1", path = "./arrow-array" }
-arrow-buffer = { version = "59.3.1", path = "./arrow-buffer" }
-arrow-cast = { version = "59.3.1", path = "./arrow-cast" }
-arrow-csv = { version = "59.3.1", path = "./arrow-csv" }
-arrow-data = { version = "59.3.1", path = "./arrow-data" }
-arrow-ipc = { version = "59.3.1", path = "./arrow-ipc" }
-arrow-json = { version = "59.3.1", path = "./arrow-json" }
-arrow-ord = { version = "59.3.1", path = "./arrow-ord" }
-arrow-pyarrow = { version = "59.3.1", path = "./arrow-pyarrow" }
-arrow-row = { version = "59.3.1", path = "./arrow-row" }
-arrow-schema = { version = "59.3.1", path = "./arrow-schema" }
-arrow-select = { version = "59.3.1", path = "./arrow-select" }
-arrow-string = { version = "59.3.1", path = "./arrow-string" }
-parquet = { version = "59.3.1", path = "./parquet", default-features = false }
-parquet-geospatial = { version = "59.3.1", path = "./parquet-geospatial" }
-parquet-variant = { version = "59.3.1", path = "./parquet-variant" }
-parquet-variant-json = { version = "59.3.1", path = "./parquet-variant-json" }
-parquet-variant-compute = { version = "59.3.1", path =
"./parquet-variant-compute" }
+arrow = { version = "59.3.2", path = "./arrow", default-features = false }
+arrow-arith = { version = "59.3.2", path = "./arrow-arith" }
+arrow-array = { version = "59.3.2", path = "./arrow-array" }
+arrow-buffer = { version = "59.3.2", path = "./arrow-buffer" }
+arrow-cast = { version = "59.3.2", path = "./arrow-cast" }
+arrow-csv = { version = "59.3.2", path = "./arrow-csv" }
+arrow-data = { version = "59.3.2", path = "./arrow-data" }
+arrow-ipc = { version = "59.3.2", path = "./arrow-ipc" }
+arrow-json = { version = "59.3.2", path = "./arrow-json" }
+arrow-ord = { version = "59.3.2", path = "./arrow-ord" }
+arrow-pyarrow = { version = "59.3.2", path = "./arrow-pyarrow" }
+arrow-row = { version = "59.3.2", path = "./arrow-row" }
+arrow-schema = { version = "59.3.2", path = "./arrow-schema" }
+arrow-select = { version = "59.3.2", path = "./arrow-select" }
+arrow-string = { version = "59.3.2", path = "./arrow-string" }
+parquet = { version = "59.3.2", path = "./parquet", default-features = false }
+parquet-geospatial = { version = "59.3.2", path = "./parquet-geospatial" }
+parquet-variant = { version = "59.3.2", path = "./parquet-variant" }
+parquet-variant-json = { version = "59.3.2", path = "./parquet-variant-json" }
+parquet-variant-compute = { version = "59.3.2", path =
"./parquet-variant-compute" }
chrono = { version = "0.4.40", default-features = false, features = ["clock"] }
diff --git a/arrow-ipc/src/writer.rs b/arrow-ipc/src/writer.rs
index cae1712908..f9bed46293 100644
--- a/arrow-ipc/src/writer.rs
+++ b/arrow-ipc/src/writer.rs
@@ -2374,10 +2374,8 @@ fn write_array_data(
let num_rows = array_data.len();
let null_count = array_data.null_count();
if !matches!(array_data.data_type(), DataType::Null) {
- meta.nodes.push(crate::FieldNode::new(
- num_rows as i64,
- null_count as i64,
- ));
+ meta.nodes
+ .push(crate::FieldNode::new(num_rows as i64, null_count as i64));
} else {
// NullArray's null_count equals to len, but ArrayData null_count is
always 0.
meta.nodes
diff --git a/dev/release/README.md b/dev/release/README.md
index 8de898863d..be2a1f80d6 100644
--- a/dev/release/README.md
+++ b/dev/release/README.md
@@ -45,7 +45,7 @@ crates.io, the Rust ecosystem's package manager.
We create a `CHANGELOG.md` so our users know what has been changed between
releases.
-## Prepare CHANGELOG and version:
+## Prepare CHANGELOG and version
- Ensure [`git-cliff`](https://git-cliff.org/docs/installation/) is installed
@@ -103,7 +103,7 @@ distribution servers.
Pick numbers in sequential order, with `1` for `rc1`, `2` for `rc2`, etc.
-### Create git tag for the release:
+### Create git tag for the release
While the official release artifact is a signed tarball, we also tag the
commit it was created for convenience and code archaeology.
@@ -135,11 +135,11 @@ The `create-tarball.sh` script
apache distribution svn server
2. provide you an email template to
- send to [email protected] for release voting.
+ send to <[email protected]> for release voting.
### Vote on Release Candidate tarball
-Send an email, based on the output from the script to [email protected].
+Send an email, based on the output from the script to <[email protected]>.
See an [example of how the email should
look](https://lists.apache.org/thread/2vpxdt6n7kzo72sxpr7q8yyby4495gnk).
For the release to become "official" it needs at least three Apache Arrow PMC
members to vote +1 on it.
@@ -156,7 +156,7 @@ The `dev/release/verify-release-candidate.sh` script in
this repository can assi
If the release is not approved, fix whatever the problem is and try again with
the next RC number
-### If the release is approved,
+### If the release is approved
Then, create a new release on GitHub using the tag `<version>` (e.g. `4.1.0`).
@@ -167,7 +167,7 @@ git tag <version> <version>-<rc>
git push apache <version>
```
-Move tarball to the release location in SVN, e.g.
https://dist.apache.org/repos/dist/release/arrow/arrow-rs-4.1.0/, using the
`release-tarball.sh` script:
+Move tarball to the release location in SVN, e.g.
<https://dist.apache.org/repos/dist/release/arrow/arrow-rs-4.1.0/>, using the
`release-tarball.sh` script:
```shell
./dev/release/release-tarball.sh 4.1.0 2
@@ -179,7 +179,7 @@ Congratulations! The release is now official!
The [`release.yml`] workflow automatically creates a github release for the
tag.
Check that the release is created and contains the correct changelog here:
-https://github.com/apache/arrow-rs/releases
+<https://github.com/apache/arrow-rs/releases>
[`release.yml`]:
https://github.com/apache/arrow-rs/blob/main/.github/workflows/release.yml#L1-L0
@@ -216,7 +216,6 @@ Rust Arrow Crates:
(cd arrow-ipc && cargo publish)
(cd arrow-csv && cargo publish)
(cd arrow-json && cargo publish)
-(cd arrow-avro && cargo publish)
(cd arrow-arith && cargo publish)
(cd arrow-string && cargo publish)
(cd arrow-row && cargo publish)
diff --git a/dev/release/create-tarball.sh b/dev/release/create-tarball.sh
index 332de47715..4c3a4f89bd 100755
--- a/dev/release/create-tarball.sh
+++ b/dev/release/create-tarball.sh
@@ -79,13 +79,20 @@
url="https://dist.apache.org/repos/dist/dev/arrow/${release}-rc${rc}"
echo "Attempting to create ${tarball} from tag ${tag}"
+# Write out the submodule commits referenced so that release verification
+# can later ensure it uses the same versions of test data.
+tmpdir=$(mktemp -d)
+trap 'rm -r "${tmpdir}"' EXIT
+git -C "${SOURCE_TOP_DIR}" ls-tree -r ${tag} \
+ | awk '$2 == "commit" { print $4, $3 }' > ${tmpdir}/.gitmodules-commits
# create <tarball> containing the files in git at $tag
# the files in the tarball are prefixed with {release}
# (e.g. apache-arrow-rs-4.0.1)
mkdir -p ${distdir}
(cd "${SOURCE_TOP_DIR}" && \
- git archive ${tag} --prefix ${release}/ \
+ git archive --prefix ${release}/ \
+ --add-file ${tmpdir}/.gitmodules-commits ${tag} \
| gzip > ${tarball})
echo "Running rat license checker on ${tarball}"
@@ -118,7 +125,7 @@ The proposed release tarball and signatures are hosted at
[2].
The changelog is located at [3].
-The release tracking issue is: [4]
+The release tracking issue is: [5]
Please download, verify checksums and signatures, run the unit tests,
and vote on the release. There is a script [4] that automates some of
diff --git a/dev/release/rat_exclude_files.txt
b/dev/release/rat_exclude_files.txt
index d08a0ea8c7..05223bcb19 100644
--- a/dev/release/rat_exclude_files.txt
+++ b/dev/release/rat_exclude_files.txt
@@ -11,6 +11,9 @@ parquet_derive/test/dependency/*
.gitattributes
**.gitignore
.gitmodules
+.gitmodules-commits
+AGENTS.md
+CLAUDE.md
Cargo.lock
filtered_rat.txt
rat.txt
diff --git a/dev/release/verify-release-candidate.sh
b/dev/release/verify-release-candidate.sh
index d8b888effe..902218675e 100755
--- a/dev/release/verify-release-candidate.sh
+++ b/dev/release/verify-release-candidate.sh
@@ -95,6 +95,17 @@ setup_tempdir() {
fi
}
+# Print the commit for the submodule at path $1 recorded in .gitmodules-commits
+submodule_commit() {
+ local commit
+ commit=$(awk -v path="$1" '$1 == path { print $2 }' .gitmodules-commits)
+ if [ -z "${commit}" ]; then
+ echo "No commit for submodule $1 found in .gitmodules-commits" >&2
+ return 1
+ fi
+ echo "${commit}"
+}
+
test_source_distribution() {
# install rust toolchain in a similar fashion like test-miniconda
export RUSTUP_HOME=$PWD/test-rustup
@@ -117,6 +128,19 @@ test_source_distribution() {
export ARROW_TEST_DATA=$PWD/arrow-testing-data/data
export PARQUET_TEST_DATA=$PWD/parquet-testing-data/data
+ if [ -f .gitmodules-commits ]; then
+ # Use the testing repository commits referenced by the release
+ local arrow_testing_commit parquet_testing_commit
+ arrow_testing_commit=$(submodule_commit testing)
+ parquet_testing_commit=$(submodule_commit parquet-testing)
+ # Fetch the commits explicitly, as they may not be reachable from any
+ # branch (e.g. a submodule pinned to a pull request's head commit)
+ git -C arrow-testing-data fetch origin "${arrow_testing_commit}"
+ git -C arrow-testing-data checkout "${arrow_testing_commit}"
+ git -C parquet-testing-data fetch origin "${parquet_testing_commit}"
+ git -C parquet-testing-data checkout "${parquet_testing_commit}"
+ fi
+
cargo test --all
# verify that the leaf crates can be published to crates.io