)]}'
{
  "log": [
    {
      "commit": "8e7a1f9899549ba2e4d5015a84b04bb98f411838",
      "tree": "6772f40719b2a1b2ce6d49c8904c8b1d36d381f3",
      "parents": [
        "c44eca6892364e58489fe564f910c0e1c1c6cb6b"
      ],
      "author": {
        "name": "Anas Khan",
        "email": "anxkhn28@gmail.com",
        "time": "Thu Aug 13 17:07:21 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 13 13:37:21 2026 +0200"
      },
      "message": "GH-50531: [Python][Packaging] Set macOS deployment target before building wheel platform tag (#50377)\n\n### Rationale for this change\n\n`ci/scripts/python_wheel_macos_build.sh` builds `_PYTHON_HOST_PLATFORM` from `MACOSX_DEPLOYMENT_TARGET` before the script applies its default of `12.0`. When the variable is unset, the tag becomes `macosx--\u003carch\u003e` even though the rest of the build still targets macOS 12.0.\n\n### What changes are included in this PR?\n\nMove the deployment-target default above the platform-tag export so the tag always uses the resolved value. An explicit `MACOSX_DEPLOYMENT_TARGET` is still honored.\n\n### Are these changes tested?\n\nI checked the two host-platform outcomes from the same assignment the script uses:\n\n- unset `MACOSX_DEPLOYMENT_TARGET` yields `macosx-12.0-x86_64`\n- `MACOSX_DEPLOYMENT_TARGET\u003d13.0` yields `macosx-13.0-x86_64`\n\nCrossbow macOS wheel jobs were also submitted on this branch after the rebase.\n\n### Are there any user-facing changes?\n\nNo public API change. Local or manual macOS wheels that rely on the default now get a valid platform tag instead of `macosx--\u003carch\u003e`.\n\n* GitHub Issue: #50531\n\nAuthored-by: Anas Khan \u003c83116240+anxkhn@users.noreply.github.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "c44eca6892364e58489fe564f910c0e1c1c6cb6b",
      "tree": "1fd2ca4e87c7bca694fde1a2d8dcdb914b4a6423",
      "parents": [
        "1b004f2cfd0ea5afbd7583300955c57e84341d76"
      ],
      "author": {
        "name": "Aaditya Srinivasan",
        "email": "156181482+Reranko05@users.noreply.github.com",
        "time": "Thu Aug 13 14:42:02 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 13 18:12:02 2026 +0900"
      },
      "message": "GH-50779: [C++][Parquet] Replace remaining RapidJSON usage with simdjson (#50781)\n\n### Rationale for this change\n\nThis PR continues the simdjson migration by replacing the remaining RapidJSON usage under `cpp/src/parquet` with simdjson and `JsonWriter`. It also updates the Meson build to support simdjson and removes unnecessary RapidJSON dependencies from the Parquet build configuration.\n\n### What changes are included in this PR?\n\n- Replace the remaining RapidJSON parsing logic in `reader_test.cc` with simdjson.\n- Replace RapidJSON parsing and serialization in `geospatial/util_json_internal.cc` with simdjson and `JsonWriter`.\n- Replace RapidJSON string escaping in `types.cc` with `JsonWriter`.\n- Add Meson support for simdjson, including a fallback CMake subproject.\n- Link simdjson in the relevant Meson targets.\n- Remove unnecessary RapidJSON dependencies from the Parquet Meson and CMake build configuration.\n* GitHub Issue: #50779\n\nAuthored-by: Aaditya Srinivasan \u003caadityasri03@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "1b004f2cfd0ea5afbd7583300955c57e84341d76",
      "tree": "efa773212ca2456a8b94ecf7f36b39036ea33ee7",
      "parents": [
        "72c7ecf98d815e307f409cb8d00e1bd53b7b641c"
      ],
      "author": {
        "name": "Joris Van den Bossche",
        "email": "jorisvandenbossche@gmail.com",
        "time": "Thu Aug 13 10:29:59 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 13 10:29:59 2026 +0200"
      },
      "message": "GH-50849: [Python] Return correct ParquetLogicalType.type for geometry/geography (#50850)\n\n### Rationale for this change\n\nFix the return value of `ParquetLogicalType.type` for geometry/geography types\n\n### Are these changes tested?\n\nYes\n\n### Are there any user-facing changes?\n\nNot apart from the bug fix\n\n* GitHub Issue: #50849\n\nAuthored-by: Joris Van den Bossche \u003cjorisvandenbossche@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "72c7ecf98d815e307f409cb8d00e1bd53b7b641c",
      "tree": "59a277353e33a4b1ffb516634b2986d1bef17ebf",
      "parents": [
        "7128c9c262b5da051e898839f1128185ce050386"
      ],
      "author": {
        "name": "Eric Wang",
        "email": "150875139+erichanwang@users.noreply.github.com",
        "time": "Thu Aug 13 00:31:12 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 13 14:31:12 2026 +0900"
      },
      "message": "GH-50819: [Release] Increase YUM verification timeout (#50835)\n\n### Rationale for this change\n\nThe arm64 YUM release-verification job can exceed its 30-minute limit when the EPEL mirror is slow. Issue #50819 reports repeated timeouts during the 25.0.1 verification, including a package download taking about 15 minutes at roughly 23 kB/s. Increasing the shared matrix job timeout gives the verification enough time to complete under this documented slow-mirror condition.\n\n### What changes are included in this PR?\n\n- Increase `yum` in `.github/workflows/verify_rc.yml` from `timeout-minutes: 30` to `timeout-minutes: 60`.\n- The job is a shared matrix for `ubuntu-latest` and `ubuntu-24.04-arm`, so the timeout change applies to both architectures while keeping the workflow structure unchanged.\n\n### Are these changes tested?\n\nThe workflow remains valid YAML, and `git diff --check` passes. This is a CI configuration-only change; no runtime test is applicable.\n\n### Are there any user-facing changes?\n\nNo direct user-facing API changes. Release verification is less likely to fail due to transient slow package mirrors.\n\n* GitHub Issue: #50819\n\nAuthored-by: erichanwang \u003cericwang559@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "7128c9c262b5da051e898839f1128185ce050386",
      "tree": "e426972586ea994fe1455edf730dd220581969a5",
      "parents": [
        "485499fd02ea2b0c323d67871fbe96aae4232504"
      ],
      "author": {
        "name": "You-Cheng Lin",
        "email": "106612301+owenowenisme@users.noreply.github.com",
        "time": "Thu Aug 13 10:30:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 12 19:30:06 2026 -0700"
      },
      "message": "GH-50801: [Python] Expose the `record_batch_reader_source` Acero node (RecordBatchReaderSourceNodeOptions)   (#50802)\n\n### Rationale for this change\nCloses #50801\nAs title, this exposes RecordBatchReaderSourceNodeOptions to Python. With it, a hash join can build its hash table once and stream the probe side through as a generator-backed RecordBatchReader, releasing each input chunk as it is consumed, instead of materializing the full probe table up front (table_source) or pinning all fragments for the plan\u0027s lifetime (dataset scan).\n\n### Are these changes tested?\nYes\n### Are there any user-facing changes?\nYeah, users can pass RecordBatchReaderSourceNodeOptions into Declaration, but its not a breaking change\n\n* GitHub Issue: #50801\n\nLead-authored-by: You-Cheng Lin \u003c106612301+owenowenisme@users.noreply.github.com\u003e\nCo-authored-by: You-Cheng Lin \u003cmses010108@gmail.com\u003e\nSigned-off-by: Rossi Sun \u003czanmato1984@gmail.com\u003e"
    },
    {
      "commit": "485499fd02ea2b0c323d67871fbe96aae4232504",
      "tree": "ec90e0089b19ecbd768f0c2121b05d1f1993bbc7",
      "parents": [
        "b38b5c5bf8ece4522e36115ead3c95f84cb99761"
      ],
      "author": {
        "name": "Hiroyuki Sato",
        "email": "hiroysato@gmail.com",
        "time": "Wed Aug 12 15:46:02 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 12 15:46:02 2026 +0900"
      },
      "message": "GH-50824: [R] Fix shellcheck errors in the r/tools/download_dependencies_R.sh (#50825)\n\n### Rationale for this change\n\nThis is the sub issue #44748.\n\n* SC2086: Double quote to prevent globbing and word splitting.\n\n```\nshellcheck r/tools/download_dependencies_R.sh\n\nIn r/tools/download_dependencies_R.sh line 48:\n  echo \u0027download.file(\"\u0027${url}\u0027\", \"\u0027${out}\u0027\", quiet \u003d TRUE)\u0027\n                        ^----^ SC2086 (info): Double quote to prevent globbing and word splitting.\n                                    ^----^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n  echo \u0027download.file(\"\u0027\"${url}\"\u0027\", \"\u0027\"${out}\"\u0027\", quiet \u003d TRUE)\u0027\n\nIn r/tools/download_dependencies_R.sh line 59:\n  source ${SOURCE_DIR}/cpp/thirdparty/versions.txt\n         ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n  source \"${SOURCE_DIR}\"/cpp/thirdparty/versions.txt\n\nFor more information:\n  https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...\n```\n\n### What changes are included in this PR?\n\n* SC2086: Quote variable\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50824\n\nAuthored-by: Hiroyuki Sato \u003chiroysato@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "b38b5c5bf8ece4522e36115ead3c95f84cb99761",
      "tree": "df8749de1ad2e6cedd04f33ca41b10c09debea57",
      "parents": [
        "a7d0bfa5ad71af8500f64a0e187ab9523e5da0d5"
      ],
      "author": {
        "name": "Logan Riggs",
        "email": "logan.riggs@gmail.com",
        "time": "Tue Aug 11 22:48:15 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 12 14:48:15 2026 +0900"
      },
      "message": "GH-50186: [C++][Gandiva] REPLACE throws \"Buffer overflow for output string\" for results larger than 64 KB   (#50187)\n\n### Rationale for this change\nGandiva\u0027s REPLACE hardcodes a 65535-byte output buffer, throwing Buffer overflow for output string whenever the result exceeds 64 KB. The cap is arbitrary: Gandiva\u0027s variable-length output column already grows dynamically and is only bounded by the int32 offset width (~2 GB). Real queries that replace into large concatenated/aggregated strings fail unnecessarily.\n\n### What changes are included in this PR\nreplace_utf8_utf8_utf8 now sizes the output buffer to the exact result instead of using a fixed cap. The output length of a replace is deterministic:\n\nout_len \u003d text_len + num_matches * (to_str_len - from_str_len)\nThe wrapper does a single counting pass over the input to find the number of non-overlapping matches of from_str (mirroring the match loop already used in the implementation), computes the exact size in gdv_int64 to avoid intermediate overflow, and passes that as max_length.\n\nThe internal replace_with_max_len_utf8_utf8_utf8 is unchanged — its bounds checks now act purely as a correctness backstop (they should never fire with an exact bound), and its explicit-max-length signature remains for the existing unit tests.\nWhen to is shorter than from, the result shrinks and max_length \u003c\u003d text_len, so the shrinking path is sized correctly too.\n### Are these changes tested?\nYes. Added regression cases to TestStringOps.TestReplace in string_ops_test.cc:\n\nA 35000-char \u0027X\u0027 input with X → XY, producing a 70000-byte result (previously overflowed at 65535) — asserts no error and exact length/content.\nA 70000-char shrinking case (XX → X) to cover the shrink path on a \u003e64 KB input.\nFull precompiled suite passes locally (132/132), including the existing explicit-max_len overflow tests, which call the internal function directly and are unaffected.\n\n### Are there any user-facing changes?\nREPLACE now succeeds on results larger than 64 KB instead of erroring. No API or signature changes.\n* GitHub Issue: #50186\n\nAuthored-by: logan.riggs@gmail.com \u003clogan.riggs@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "a7d0bfa5ad71af8500f64a0e187ab9523e5da0d5",
      "tree": "5a108df9491ed05ace753c7f08643459fb7487ab",
      "parents": [
        "42694575d0219f6a3a78b1f344bb071a60df6a4e"
      ],
      "author": {
        "name": "Pearu Peterson",
        "email": "pearu.peterson@gmail.com",
        "time": "Mon Aug 10 23:28:27 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 13:28:27 2026 -0700"
      },
      "message": "GH-50840: [C++] Fix dead overflow guard in Take on binary-like arrays (#50841)\n\n### Rationale for this change\n\n`compute::Take` on `string`/`binary` arrays silently overflows the int32 offsets buffer when the selected data exceeds `INT32_MAX` bytes, returning `Status::OK()` with a corrupt array. Downstream this produces garbage values and segfaults — most visibly in pyarrow, where `np.asarray()` on a dictionary array whose dense form exceeds 2 GiB crashes the interpreter.\n\nA guard for this already exists, but a misplaced closing parenthesis makes it dead code on GCC and clang:\n\n```cpp\nARROW_PREDICT_FALSE(static_cast\u003cint64_t\u003e(offset) +\n                    static_cast\u003cint64_t\u003e(val_size)) \u003e kOffsetLimit\n```\n\nexpands to `(__builtin_expect(!!(offset + val_size), 0)) \u003e kOffsetLimit`. The `!!` collapses the sum to 0 or 1, which is never greater than `kOffsetLimit` (2147483646), so the branch is never taken. MSVC and the fallback definitions expand `ARROW_PREDICT_FALSE(x)` to `(x)`, so those builds were unaffected.\n\nPresent since `c07486c29f` (ARROW-5760, 2020-06-11). See #50840 for full analysis.\n\n### What changes are included in this PR?\n\n- Move the closing parenthesis so the comparison happens inside `ARROW_PREDICT_FALSE`, in `VarBinarySelectionImpl::GenerateOutput`.\n- Add `TestTakeKernel.TakeBinaryOffsetOverflow`, a `LARGE_MEMORY_TEST` covering the overflow.\n\nDeliberately minimal: it does not attempt to make the oversized dictionary-decode case *succeed*. A 32-bit `string` cannot represent \u003e2 GiB, so `Take` refusing is the correct behaviour; making the pyarrow conversion work is a separate enhancement.\n\n### Are these changes tested?\n\nYes, and the test was verified to distinguish both states:\n\n| check | result |\n|---|---|\n| new test **with** fix | PASS (1.08 s, ~2 GiB peak) |\n| new test **without** fix | FAIL — `Expected: has substring \"...overflowed binary array capacity\" / Actual: \"OK\"` |\n| `arrow-compute-vector-selection-test`, `ARROW_LARGE_MEMORY_TESTS\u003dON` | 169/169 pass |\n| clang-format 18.1.8 | clean |\n\nThe test uses 2048 × 1 MiB \u003d 2 GiB, one value past the limit — ~2 GiB peak and ~1 s, rather than the multi-GB/multi-minute shape of the original reproducer.\n\nSeparately, I confirmed the end-to-end path on `main` @ `42694575d0`: before the fix `Cast(dictionary\u003cint16,string\u003e -\u003e string)` on a 2.5 GB decode returns OK with 7,050,328 negative offsets and a final offset of −1794967296 (\u003d 2500000000 − 2³²); after the fix it returns `Invalid: Take operation overflowed binary array capacity`.\n\nNote that `LARGE_MEMORY_TEST` compiles to `DISABLED_*` unless `ARROW_LARGE_MEMORY_TESTS\u003dON`, which in CI only happens in the \"AMD64 Ubuntu Large Memory Tests\" job of `cpp_extra.yml` — nightly, or on PRs labelled `CI: Extra: C++`. I don\u0027t have permission to add that label; a committer may want to, so the new test is exercised before merge.\n\n### Are there any user-facing changes?\n\nYes. `Take` (and anything built on it, including dictionary decoding and `DictionaryArray` → numpy/pandas conversion) now raises `Invalid: Take operation overflowed binary array capacity` where it previously returned corrupt data or crashed. Code that unknowingly relied on the corrupt result will now see an error — which is the intent.\n\n**This PR contains a \"Critical Fix\".** It fixes both a bug that caused incorrect or invalid data to be produced — silently corrupt offset buffers, returned as a valid array with `Status::OK()` — and a bug that causes a crash even when the API contract is upheld, since those offsets lead to out-of-bounds reads and segfaults on ordinary `Take` usage.\n\n### AI usage\n\nPer the [AI-generated code guidance](https://arrow.apache.org/docs/dev/developers/overview.html#ai-generated-code): the diagnosis, the one-line fix, and the test were produced with Claude Code, and reviewed and verified by me. Correctness was checked by (1) compiling the macro expansion standalone to confirm the guard never fires as written, (2) running the new test against both the fixed and unfixed kernel to confirm it distinguishes them, and (3) reproducing the corrupt offsets and the post-fix clean error end-to-end through `compute::Cast`.\n\n---\n_🤖 Drafted by Claude Code (an AI agent) and reviewed \u0026 approved by pearu._\n\n* GitHub Issue: #50840\n\nAuthored-by: Pearu Peterson \u003cpearu.peterson@gmail.com\u003e\nSigned-off-by: Rossi Sun \u003czanmato1984@gmail.com\u003e"
    },
    {
      "commit": "42694575d0219f6a3a78b1f344bb071a60df6a4e",
      "tree": "0a4827d39c7c3f803430e4492c78a7022704216b",
      "parents": [
        "b0be080136a02b0c6fd7c3215f7e67e1f202ab94"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Mon Aug 10 14:51:15 2026 +0200"
      },
      "committer": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Mon Aug 10 14:51:15 2026 +0200"
      },
      "message": "MINOR: [Release] Update .deb/.rpm changelogs for 25.0.1\n"
    },
    {
      "commit": "b0be080136a02b0c6fd7c3215f7e67e1f202ab94",
      "tree": "c96f31404c9896cb24e1148909630e90ca9bcdbe",
      "parents": [
        "77daf985d2d3b9172e00042141d4ab512e5c1cdf"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Mon Aug 10 14:51:08 2026 +0200"
      },
      "committer": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Mon Aug 10 14:51:08 2026 +0200"
      },
      "message": "MINOR: [Release] Update versions for 26.0.0-SNAPSHOT\n"
    },
    {
      "commit": "77daf985d2d3b9172e00042141d4ab512e5c1cdf",
      "tree": "8945fe49449f4019f191036d024617eb455662ce",
      "parents": [
        "8fba43931a850d2fee54dd35e5ffc7629e98c198"
      ],
      "author": {
        "name": "Kumar Vanshaj",
        "email": "kumar.vanshaj2023@gmail.com",
        "time": "Mon Aug 10 04:50:41 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 08:20:41 2026 +0900"
      },
      "message": "GH-49482: [C++][FlightRPC][ODBC] Fix inconsistent SQLGetInfo values in global connection (#50021)\n\n## What changed\n- `SQL_DDL_SCHEMA` case now reads the boolean scalar to conditionally set `SQL_DROP_SCHEMA` and `SQL_CREATE_SCHEMA` to `0` when unsupported, instead of always writing non-zero values\n- `SQL_DDL_TABLE` case applies the same pattern for `SQL_DROP_TABLE` and `SQL_CREATE_TABLE`\n- `SQL_CATALOG_AT_START` changed to use `SetDefaultIfMissing` so it does not overwrite `SQL_CATALOG_LOCATION` already set by `ARROW_SQL_CATALOG_TERM`, eliminating an ordering-dependent conflict\n- Removed per-test connect/disconnect workarounds and converted three tests from `ConnectionInfoHandleTest` back to `ConnectionInfoTest`\n\n## How to test\n- Build ODBC tests and run `TestSQLGetInfoCatalogLocation`, `TestSQLGetInfoDropSchema`, `TestSQLGetInfoDropTable` with both mock server and global connection fixture\n- All three tests should pass consistently regardless of connection reuse\n\nCloses #49482\n* GitHub Issue: #49482\n\nLead-authored-by: vanshaj2023 \u003cvanshaj@thewordofmouth.tech\u003e\nCo-authored-by: vanshaj2023 \u003ckumar.vanshaj2023@gmail.com\u003e\nCo-authored-by: Kumar Vanshaj \u003ckumar.vanshaj2023@gmail.com\u003e\nCo-authored-by: Alina (Xi) Li \u003c96995091+alinaliBQ@users.noreply.github.com\u003e\nSigned-off-by: David Li \u003cli.davidm96@gmail.com\u003e"
    },
    {
      "commit": "8fba43931a850d2fee54dd35e5ffc7629e98c198",
      "tree": "efddb263ae08e868dba137e9e152b557771c3098",
      "parents": [
        "5f9495eab06ffa3b94866380f4012c62ddf8b5ed"
      ],
      "author": {
        "name": "Zehua Zou",
        "email": "zehuazou2000@gmail.com",
        "time": "Fri Aug 07 07:58:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 07 08:58:32 2026 +0900"
      },
      "message": "GH-50750: [C++][Parquet] Remove code marked as deprecated except flight in versions 23.0.0 and earlier (#50751)\n\n### Rationale for this change\n\nRemove some deprecated code.\n\n### What changes are included in this PR?\n\nRemove these:\n1. `arrow::random::RandomArrayGenerator::Float16(..., uint16_t min, uint16_t max, ...)`\n2. `parquet::arrow::FileReader::GetRecordBatchReader(..., out)` overloads\n3. `parquet::ColumnEncryptionProperties::Builder(name/path)` constructors\n4. `parquet::arrow::FileReader::Make(..., out)` overloads\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nYes. Some public deprecated methods are removed.\n\n* GitHub Issue: #50750\n\nAuthored-by: Zehua Zou \u003czehuazou2000@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "5f9495eab06ffa3b94866380f4012c62ddf8b5ed",
      "tree": "aeaf490dd6b7b5f3abbd720a5f48894f5e38e4b7",
      "parents": [
        "4070a2fb98caf9fa8f2f92b107fe87aba0d0f5a8"
      ],
      "author": {
        "name": "Hiroyuki Sato",
        "email": "hiroysato@gmail.com",
        "time": "Thu Aug 06 19:37:03 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 12:37:03 2026 +0200"
      },
      "message": "GH-50820: [CI][Dev] Bump ShellCheck to v0.11.0 and simplify pre-commit file patterns for the ci directory (#50821)\n\n### Rationale for this change\n\nThis is the sub issue #44748.\n\n* Now that all `ci/*.sh` files pass ShellCheck, simplify the pre-commit file pattern.\n* Bump ShellCheck to v0.11.0\n\n### What changes are included in this PR?\n\n* Simplify pre-commit file patterns for the `ci` directory\n* Bump ShellCheck to v0.11.0\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50820\n\nAuthored-by: Hiroyuki Sato \u003chiroysato@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "4070a2fb98caf9fa8f2f92b107fe87aba0d0f5a8",
      "tree": "79076bee734a7114ce1fa9294e25df1aed3442d3",
      "parents": [
        "20300f8c53a6a7e49a8ddbe933929c706e74217a"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Thu Aug 06 09:50:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 09:50:58 2026 +0200"
      },
      "message": "GH-50811: [Release] Use maint-Major.Minor.x for patch releases as the maintenance branch on required release scripts (#50813)\n\n### Rationale for this change\n\nWhen working with patch releases currently the maintenance branch used is not correct and the scripts for 02-source and 03-binary fail to create the PR or find it.\n\n### What changes are included in this PR?\n\nUse the correct maintenance branch format taking into account the differences between major releases and patch releases.\nUpdated release documentation to make it clearer that only the `maint-X.Y.x` branch is used for patch releases.\n\n### Are these changes tested?\n\nYes, as I had to cut RC1 for the 25.0.1 release I\u0027ve been able to validate that they work as expected now.\n\n### Are there any user-facing changes?\n\nNo\n\n* GitHub Issue: #50811\n\nLead-authored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nCo-authored-by: tadeja \u003ctadeja@users.noreply.github.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "20300f8c53a6a7e49a8ddbe933929c706e74217a",
      "tree": "7d4a49c680c626327a5fcf40b9db43d1a66d7674",
      "parents": [
        "3d5be475a9269e5fe4ca66688f35ece5cf16679b"
      ],
      "author": {
        "name": "Hiroyuki Sato",
        "email": "hiroysato@gmail.com",
        "time": "Thu Aug 06 15:33:31 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 15:33:31 2026 +0900"
      },
      "message": "GH-50803: [CI][Dev] Fix shellcheck errors in the ci/scripts/r_windows_build.sh (#50818)\n\n### Rationale for this change\n\nThis is the sub issue #44748.\n\n* SC2011: Use find -print0 or find -exec to better handle non-alphanumeric filenames.\n* SC2034: foo appears unused. Verify it or export it.\n* SC2035: Use `./*glob*` or `-- *glob*` so names with dashes won\u0027t become options.\n* SC2046: Quote this to prevent word splitting.\n* SC2086: Double quote to prevent globbing and word splitting.\n* SC2155: Declare and assign separately to avoid masking return values.\n* SC2223: This default assignment may cause DoS due to globbing. Quote it.\n\n```\nshellcheck ci/scripts/r_windows_build.sh\n\nIn ci/scripts/r_windows_build.sh line 22:\n: ${ARROW_HOME:\u003d$(pwd)}\n  ^-------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/r_windows_build.sh line 24:\nexport ARROW_HOME\u003d\"$(cd \"${ARROW_HOME}\" \u0026\u0026 pwd)\"\n       ^--------^ SC2155 (warning): Declare and assign separately to avoid masking return values.\n\nIn ci/scripts/r_windows_build.sh line 28:\nRWINLIB_LIB_DIR\u003d\"lib\"\n^-------------^ SC2034 (warning): RWINLIB_LIB_DIR appears unused. Verify use (or export if used externally).\n\nIn ci/scripts/r_windows_build.sh line 29:\n: ${MINGW_ARCH:\u003d\"mingw32 mingw64 ucrt64\"}\n  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/r_windows_build.sh line 33:\ncp $ARROW_HOME/ci/scripts/PKGBUILD .\n   ^---------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\ncp \"$ARROW_HOME\"/ci/scripts/PKGBUILD .\n\nIn ci/scripts/r_windows_build.sh line 37:\nVERSION\u003d$(grep Version $ARROW_HOME/r/DESCRIPTION | cut -d \" \" -f 2)\n                       ^---------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\nVERSION\u003d$(grep Version \"$ARROW_HOME\"/r/DESCRIPTION | cut -d \" \" -f 2)\n\nIn ci/scripts/r_windows_build.sh line 50:\nls *.xz | xargs -n 1 tar -xJf\n^-- SC2011 (warning): Use \u0027find .. -print0 | xargs -0 ..\u0027 or \u0027find .. -exec .. +\u0027 to allow non-alphanumeric filenames.\n   ^-- SC2035 (info): Use ./*glob* or -- *glob* so names with dashes won\u0027t become options.\n\nIn ci/scripts/r_windows_build.sh line 51:\nmkdir -p $DST_DIR\n         ^------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\nmkdir -p \"$DST_DIR\"\n\nIn ci/scripts/r_windows_build.sh line 54:\nif [ ! -d $DST_DIR/include ]; then\n          ^------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\nif [ ! -d \"$DST_DIR\"/include ]; then\n\nIn ci/scripts/r_windows_build.sh line 55:\n  mv $(echo $MINGW_ARCH | cut -d \u0027 \u0027 -f 1)/include $DST_DIR\n     ^-- SC2046 (warning): Quote this to prevent word splitting.\n            ^---------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n                                                   ^------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n  mv $(echo \"$MINGW_ARCH\" | cut -d \u0027 \u0027 -f 1)/include \"$DST_DIR\"\n\nIn ci/scripts/r_windows_build.sh line 63:\n  ls $MSYS_LIB_DIR/mingw64/lib/\n     ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n  ls \"$MSYS_LIB_DIR\"/mingw64/lib/\n\nIn ci/scripts/r_windows_build.sh line 65:\n  mkdir -p $DST_DIR/lib/x64\n           ^------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n  mkdir -p \"$DST_DIR\"/lib/x64\n\nIn ci/scripts/r_windows_build.sh line 67:\n  mv mingw64/lib/*.a $DST_DIR/lib/x64\n                     ^------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n  mv mingw64/lib/*.a \"$DST_DIR\"/lib/x64\n\nIn ci/scripts/r_windows_build.sh line 69:\n  cp $MSYS_LIB_DIR/mingw64/lib/lib{snappy,zstd,lz4,brotli*,bz2,crypto,curl,ss*,utf8proc,re2,nghttp2}.a $DST_DIR/lib/x64\n     ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n                                                                                                       ^------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n  cp \"$MSYS_LIB_DIR\"/mingw64/lib/lib{snappy,zstd,lz4,brotli*,bz2,crypto,curl,ss*,utf8proc,re2,nghttp2}.a \"$DST_DIR\"/lib/x64\n\nIn ci/scripts/r_windows_build.sh line 74:\n  ls $MSYS_LIB_DIR/mingw32/lib/\n     ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n  ls \"$MSYS_LIB_DIR\"/mingw32/lib/\n\nIn ci/scripts/r_windows_build.sh line 75:\n  mkdir -p $DST_DIR/lib/i386\n           ^------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n  mkdir -p \"$DST_DIR\"/lib/i386\n\nIn ci/scripts/r_windows_build.sh line 76:\n  mv mingw32/lib/*.a $DST_DIR/lib/i386\n                     ^------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n  mv mingw32/lib/*.a \"$DST_DIR\"/lib/i386\n\nIn ci/scripts/r_windows_build.sh line 77:\n  cp $MSYS_LIB_DIR/mingw32/lib/lib{snappy,zstd,lz4,brotli*,bz2,crypto,curl,ss*,utf8proc,re2,nghttp2}.a $DST_DIR/lib/i386\n     ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n                                                                                                       ^------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n  cp \"$MSYS_LIB_DIR\"/mingw32/lib/lib{snappy,zstd,lz4,brotli*,bz2,crypto,curl,ss*,utf8proc,re2,nghttp2}.a \"$DST_DIR\"/lib/i386\n\nIn ci/scripts/r_windows_build.sh line 82:\n  ls $MSYS_LIB_DIR/ucrt64/lib/\n     ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n  ls \"$MSYS_LIB_DIR\"/ucrt64/lib/\n\nIn ci/scripts/r_windows_build.sh line 83:\n  mkdir -p $DST_DIR/lib/x64-ucrt\n           ^------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n  mkdir -p \"$DST_DIR\"/lib/x64-ucrt\n\nIn ci/scripts/r_windows_build.sh line 84:\n  mv ucrt64/lib/*.a $DST_DIR/lib/x64-ucrt\n                    ^------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n  mv ucrt64/lib/*.a \"$DST_DIR\"/lib/x64-ucrt\n\nIn ci/scripts/r_windows_build.sh line 85:\n  cp $MSYS_LIB_DIR/ucrt64/lib/lib{snappy,zstd,lz4,brotli*,bz2,crypto,curl,ss*,utf8proc,re2,nghttp2}.a $DST_DIR/lib/x64-ucrt\n     ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n                                                                                                      ^------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n  cp \"$MSYS_LIB_DIR\"/ucrt64/lib/lib{snappy,zstd,lz4,brotli*,bz2,crypto,curl,ss*,utf8proc,re2,nghttp2}.a \"$DST_DIR\"/lib/x64-ucrt\n\nIn ci/scripts/r_windows_build.sh line 89:\nzip -r ${DST_DIR}.zip $DST_DIR\n       ^--------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n                      ^------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\nzip -r \"${DST_DIR}\".zip \"$DST_DIR\"\n\nIn ci/scripts/r_windows_build.sh line 93:\ncp ${DST_DIR}.zip ../libarrow.zip\n   ^--------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\ncp \"${DST_DIR}\".zip ../libarrow.zip\n\nFor more information:\n  https://www.shellcheck.net/wiki/SC2011 -- Use \u0027find .. -print0 | xargs -0 ....\n  https://www.shellcheck.net/wiki/SC2034 -- RWINLIB_LIB_DIR appears unused. V...\n  https://www.shellcheck.net/wiki/SC2046 -- Quote this to prevent word splitt...\n```  \n\n### What changes are included in this PR?\n\n* SC2011: Replace `ls | xargs` with `find -print0`/`-exec` for safe filename handling.\n* SC2034: Remove or export unused variables.\n* SC2035: Prefix globs with `./` (or `--`) to avoid option misinterpretation.\n* SC2046: Quote command substitutions to prevent word splitting.\n* SC2086: Quote variable expansions to prevent globbing and word splitting.\n* SC2155: Separate variable declaration from assignment.\n* SC2223: Quote parameter expansion in default assignments to prevent globbing.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50803\n\nAuthored-by: Hiroyuki Sato \u003chiroysato@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "3d5be475a9269e5fe4ca66688f35ece5cf16679b",
      "tree": "b24f0e28347ce4ee322779e613db46e856110946",
      "parents": [
        "d6d8f0329b66cc14a17aa8e6cb80d062b3db7fb1"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Thu Aug 06 03:28:30 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 10:28:30 2026 +0900"
      },
      "message": "GH-50358: [Release] Fix permission issues when binary signing release candidate artifacts (#50359)\n\n### Rationale for this change\n\nWe updated from bookworm to trixie our binary signing image. When trying to sign the packages it failed with the following error:\n```\nDownloading: centos - 100.0% [63/63] 00:01:26 00:00:00  0/s\nerror: Unable to open sqlite database /var/lib/rpm/rpmdb.sqlite: unable to open database file\nerror: cannot open Packages index using sqlite - Operation not permitted (1)\nerror: cannot open Packages database in /var/lib/rpm\nerror: can\u0027t create transaction lock on /var/lib/rpm/.rpm.lock (No such file or directory)\nerror: /tmp/apache-arrow-binary20260703-49-htq2me.asc: key 1 import failed.\n```\n\n### What changes are included in this PR?\n\nUse `sudo rpm` when signing binaries on the container.\n\n### Are these changes tested?\n\nYes, I\u0027ve used that to upload and sign binaries for 25.0.1\n\n### Are there any user-facing changes?\nNo\n\n* GitHub Issue: #50358\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "d6d8f0329b66cc14a17aa8e6cb80d062b3db7fb1",
      "tree": "a6c9c8f639fa6b8ae97cdf3d07b6915ff0b0bb6d",
      "parents": [
        "4049d6e3cb789c1446feeb29e8b6265206f7519d"
      ],
      "author": {
        "name": "tadeja",
        "email": "tadeja@users.noreply.github.com",
        "time": "Thu Aug 06 03:15:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 10:15:05 2026 +0900"
      },
      "message": "GH-50774: [CI][Python] Match Protobuf symbol visibility in bundled Substrait and ORC (#50792)\n\n### Rationale for this change\nFix #50774. After #50650, the Pyodide build failed while loading PyArrow with `  ImportError: dynamic module does not define module export function (PyInit_lib)`.\nThe ImportError is misleading because the `PyInit_lib` is present. The actual failure is an earlier abort during static initialization of `libarrow_python.so`, in Protobuf descriptor registration.\n\n#50650 changed the order of libraries merged into `libarrow_bundled_dependencies.a`. The archive contains duplicate weak Protobuf/Abseil symbols emitted by the Protobuf runtime and generated code in Substrait and in ORC. These symbols had inconsistent visibility:\na) Protobuf was compiled with *hidden* visibility,\nb) Substrait and ORC generated Protobuf code used default visibility,\nso the order change caused `wasm-ld` to select symbols with different visibility.\n (e.g. `google::protobuf::internal::ZeroFieldsBase::Clear()` changed from hidden in Protobuf\u0027s `empty.pb.cc.o` to default visible in Substrait\u0027s `algebra.pb.cc.o`)\n\nThe failure showed up in Emscripten, no failures on other platforms, but matching visibility globally is desirable to prevent any unintended exports and symbol interposition.\n\n### What changes are included in this PR?\nCompile bundled Substrait and ORC with the same hidden visibility for symbols as Protobuf so not depending on archive order.\nAlso add debug for Emscripten CI builds `--profiling-funcs`.\n\n### Are these changes tested?\nYes, `test-conda-python-emscripten` passes\n(Local repro, debug and fix verification with `ARCH\u003damd64 archery docker run conda-python-emscripten`, for symbols `llvm-nm` and `wasm-ld`)\n\n### Are there any user-facing changes?\nNo.\n* GitHub Issue: #50774\n\nAuthored-by: Tadeja Kadunc \u003ctadeja.kadunc@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "4049d6e3cb789c1446feeb29e8b6265206f7519d",
      "tree": "17954006375efbd9dabaaaf54fbfe74b85a883ee",
      "parents": [
        "906bc0aea74051d857bc9e676fb53522d3e09fd3"
      ],
      "author": {
        "name": "Vikrant Puppala",
        "email": "vikrantpuppala@gmail.com",
        "time": "Thu Aug 06 04:40:07 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 08:10:07 2026 +0900"
      },
      "message": "GH-50560: [C++][FlightRPC][ODBC] Fix SQLDescribeCol column_size/decimal_digits width (#50562)\n\n### Rationale for this change\n\n`SQLDescribeCol` returned uninitialized garbage in the upper bytes of its\n`column_size` (`ColumnSizePtr`) output for numeric / decimal / integer / float\ncolumns.\n\nThe numeric path read `SQL_DESC_PRECISION` (2 bytes) directly into the caller\u0027s\n`SQLULEN* column_size_ptr` (8 bytes). Also, two sites passed `sizeof(SQLULEN)`\nas the buffer size even though `decimal_digits_ptr` is a `SQLSMALLINT*`. \n\nIntroduced by GH-47724 (#48052).\n\n### What changes are included in this PR?\n\n- Numeric `column_size` path: read `SQL_DESC_PRECISION` into a local\n  `SQLSMALLINT` and widen-assign it into `*column_size_ptr`.\n- `decimal_digits` scale and datetime-precision paths: pass\n  `sizeof(SQLSMALLINT)` instead of `sizeof(SQLULEN)`.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\n`SQLDescribeCol` now returns a correct `column_size` for numeric/decimal\ncolumns instead of a value with uninitialized high bytes. \n\n* GitHub Issue: #50560\n\nAuthored-by: Vikrant Puppala \u003cvikrantpuppala@gmail.com\u003e\nSigned-off-by: David Li \u003cli.davidm96@gmail.com\u003e"
    },
    {
      "commit": "906bc0aea74051d857bc9e676fb53522d3e09fd3",
      "tree": "d9b2cb4cb4d7187100eeed8209e9efd763c4a804",
      "parents": [
        "669c3743eddefebfcc4dcd225c813f7470e0be33"
      ],
      "author": {
        "name": "Hiroyuki Sato",
        "email": "hiroysato@gmail.com",
        "time": "Wed Aug 05 23:11:30 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 23:11:30 2026 +0900"
      },
      "message": "GH-50796: [CI][Dev] Fix shellcheck errors in the ci/scripts/r_valgrind.sh (#50798)\n\n### Rationale for this change\n\nThis is the sub issue #44748.\n\n* SC2046: Quote this to prevent word splitting.\n* SC2086: Double quote to prevent globbing and word splitting.\n* SC2223: This default assignment may cause DoS due to globbing. Quote it.\n\n```\nshellcheck ci/scripts/r_valgrind.sh\n\nIn ci/scripts/r_valgrind.sh line 21:\n: ${R_BIN:\u003dRDvalgrind}\n  ^------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/r_valgrind.sh line 27:\npushd ${source_dir}\n      ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\npushd \"${source_dir}\"\n\nIn ci/scripts/r_valgrind.sh line 31:\n${R_BIN} CMD INSTALL ${INSTALL_ARGS} arrow*.tar.gz\n                     ^-------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n${R_BIN} CMD INSTALL \"${INSTALL_ARGS}\" arrow*.tar.gz\n\nIn ci/scripts/r_valgrind.sh line 42:\nif [ $(grep -c \"ERROR SUMMARY: 0 errors\" testthat.out) !\u003d 1 ]; then\n     ^-- SC2046 (warning): Quote this to prevent word splitting.\n\nFor more information:\n  https://www.shellcheck.net/wiki/SC2046 -- Quote this to prevent word splitt...\n  https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...\n  https://www.shellcheck.net/wiki/SC2223 -- This default assignment may cause...\n```\n\n### What changes are included in this PR?\n\n* SC2046: Quote variable to prevent word splitting.\n* SC2086: Quote variable\n* SC2223: Quote default variable assignments.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50796\n\nLead-authored-by: Hiroyuki Sato \u003chiroysato@gmail.com\u003e\nCo-authored-by: Sutou Kouhei \u003ckou@cozmixng.org\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "669c3743eddefebfcc4dcd225c813f7470e0be33",
      "tree": "6c43d4f8aa27e42333122aed9549e4a49bdfe06b",
      "parents": [
        "4dd7eb75eadf5129741888f261b6b2a74128fa11"
      ],
      "author": {
        "name": "Zehua Zou",
        "email": "zehuazou2000@gmail.com",
        "time": "Wed Aug 05 14:21:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 15:21:01 2026 +0900"
      },
      "message": "GH-50756: [C++][FlightSQL][ODBC] Fix Clang 20 compilation on macOS 26 (#50757)\n\n### Rationale for this change\n\nFix Clang 20 compilation on macOS 26.\n\n### What changes are included in this PR?\n\nFix four kinds of compile errors mentioned in the issue GH-50756.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50756\n\nAuthored-by: Zehua Zou \u003czehuazou2000@gmail.com\u003e\nSigned-off-by: David Li \u003cli.davidm96@gmail.com\u003e"
    },
    {
      "commit": "4dd7eb75eadf5129741888f261b6b2a74128fa11",
      "tree": "36424a0f34baec918a8c33fc17183e645215d7d6",
      "parents": [
        "22a2b51f763a297829abf57a68f8e788ceda4b59"
      ],
      "author": {
        "name": "Alina (Xi) Li",
        "email": "96995091+alinaliBQ@users.noreply.github.com",
        "time": "Tue Aug 04 23:03:13 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 15:03:13 2026 +0900"
      },
      "message": "GH-50697: [C++][FlightRPC] ODBC installer support fixes (#50748)\n\n### Rationale for this change\n\nGH-50697\n\nI have tested the RPM ODBC installer on AlmaLinux 9. The ODBC driver works as expected on AlmaLinux 9. The only issue I found was that the `connection-options.md` guide was not included in the package installation. This PR adds `connection-options.md` to the RPM ODBC package so users can reference the connection options documentation after installation.\n\nSummary of testing results:\n\n1. Clean install - driver works as expected and registered successfully, arrow installer installs `isql` and `unixODBC` during installation.\n2. Uninstall - driver is uninstalled and unregistered automatically, arrow installer flags and uninstalls `isql` and `unixODBC` as unused dependency during installation. \nIf user wants to avoid this behavior, they can add `--noautoremove `flag to make `dnf` keep `isql` and `unixODBC` during ODBC uninstallation.\n3. Upgrade - driver can be upgraded to new version. \n4. Data retrieval works as expected, no dependency issues found.\n\n### What changes are included in this PR?\n- Add `connection-options.md` to the RPM ODBC package installation.\n   - Example location after install: `/usr/share/doc/arrow2600-flight-sql-odbc-libs/connection-options.md`\n- Fix Windows ODBC installer to include docs `LICENSE.txt` and `NOTICE.txt`\n- Add ODBC installer description to ODBC `README.md`\n\n### Are these changes tested?\n\nYes\n\n### Are there any user-facing changes?\nYes\n\n* GitHub Issue: #50697\n\nLead-authored-by: Alina (Xi) Li \u003cAlina.Li@improving.com\u003e\nCo-authored-by: Alina (Xi) Li \u003c96995091+alinaliBQ@users.noreply.github.com\u003e\nCo-authored-by: Sutou Kouhei \u003ckou@cozmixng.org\u003e\nCo-authored-by: justing-bq \u003cjustin.gossett@improving.com\u003e\nSigned-off-by: David Li \u003cli.davidm96@gmail.com\u003e"
    },
    {
      "commit": "22a2b51f763a297829abf57a68f8e788ceda4b59",
      "tree": "d7082cce79a1279dc86e4ab6f5bec6363ec14253",
      "parents": [
        "7ef59826351c70ccb9d95e5a2022087df85b4a4b"
      ],
      "author": {
        "name": "Logan Riggs",
        "email": "logan.riggs@gmail.com",
        "time": "Tue Aug 04 15:07:25 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 07:07:25 2026 +0900"
      },
      "message": "GH-50140: [C++][Gandiva] Fix castVARCHAR(decimal128) native memory corruption / SIGSEGV on allocation failure (#50141)\n\n### Rationale for this change\n\nThe Gandiva `castVARCHAR_decimal128_int64` path could corrupt native memory and\ncrash the process (SIGSEGV) when the output-string arena allocation failed\n(e.g. `CAST(decimal AS VARCHAR)` under memory pressure). Three independent\ndefects combined to cause this:\n\n1. The `castVARCHAR` decimal128 registry entry was missing\n   `NativeFunction::kCanReturnErrors`, so generated code skipped the error check\n   and ignored any error the function reported.\n2. `gdv_fn_dec_to_string` set the output length to a positive value *before*\n   checking whether the allocation succeeded, then returned `nullptr` — leaving\n   the caller to copy from an invalid buffer with a positive length.\n3. `castVARCHAR_decimal128_int64` did not validate a negative requested output\n   length and did not handle an upstream allocation failure.\n\n### What changes are included in this PR?\n\n- **`function_registry_string.cc`**: Add `NativeFunction::kCanReturnErrors` to the\n  `castVARCHAR` `decimal128` entry so the generated code checks for and\n  propagates errors instead of assuming the function never fails.\n\n- **`gdv_function_stubs.cc`** (`gdv_fn_dec_to_string`): Only write the output\n  length *after* a successful allocation. On allocation failure, set\n  `*dec_str_len \u003d 0` and return an empty string so callers never copy from an\n  invalid buffer using a stale, positive length.\n\n- **`precompiled/decimal_wrapper.cc`** (`castVARCHAR_decimal128_int64`):\n  - Reject a negative output length with a graceful error\n    (`\"Output buffer length can\u0027t be negative\"`) instead of using it as a copy\n    size.\n  - Bail out safely (zero length, empty string) if the upstream\n    `gdv_fn_dec_to_string` call failed, since the error has already been set.\n\n- **`tests/decimal_test.cc`**: Add `TestCastVarCharDecimalNegativeLength`, a\n  regression test that casts a decimal to varchar with a negative output length\n  and asserts the query fails gracefully with the expected error message rather\n  than crashing. This also exercises the `kCanReturnErrors` flag — without it the\n  error would not propagate and the test would fail.\n\n### Behavior change\n\nQueries such as `CAST(decimal AS VARCHAR)` that previously crashed the process\n(SIGSEGV) under memory pressure now fail gracefully with an error message about\nthe allocation failure / invalid length, and the rest of the system is\nunaffected.\n\n### Are these changes tested?\n\nYes, unit tests.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50140\n\nAuthored-by: logan.riggs@gmail.com \u003clogan.riggs@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "7ef59826351c70ccb9d95e5a2022087df85b4a4b",
      "tree": "601313dab039dc71b3f69cfcadcce0e8035ae99f",
      "parents": [
        "62d131177a6fe1e9d211ba18ae612bd3f271df25"
      ],
      "author": {
        "name": "tadeja",
        "email": "tadeja@users.noreply.github.com",
        "time": "Tue Aug 04 19:39:55 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 19:39:55 2026 +0200"
      },
      "message": "GH-50808: [Python] Narrow Feather deprecation to V1 format (#50685)\n\n### Rationale for this change\nFollow-up to https://github.com/apache/arrow/issues/49232#issuecomment-5105290467 / #49590\n\n### What changes are included in this PR?\nRemove warnings from `write_feather()`, `read_feather()`, `read_table()`, and `FeatherDataset`.\nWarn **only** on writing with `version\u003d1` / reading Feather V1 file.\nUpdate docs to V1-only and keep IPC migration guide.\nAdditionally corrected notes like `deprecated as of 24.0.0` to `25.0.0` instead.\n\n`DeprecationWarning` in place of current `FutureWarning`.\n\n### Are these changes tested?\nYes, by CI.\n\n### Are there any user-facing changes?\nYes!\nFeather V2 APIs no longer emit deprecation warnings.\nReading/writing the legacy Feather V1 format emits `DeprecationWarning` in place of `FutureWarning`.\n\n* GitHub Issue: #50808\n\nLead-authored-by: Tadeja Kadunc \u003ctadeja.kadunc@gmail.com\u003e\nCo-authored-by: tadeja \u003ctadeja@users.noreply.github.com\u003e\nCo-authored-by: Rok Mihevc \u003crok@mihevc.org\u003e\nSigned-off-by: Rok Mihevc \u003crok@mihevc.org\u003e"
    },
    {
      "commit": "62d131177a6fe1e9d211ba18ae612bd3f271df25",
      "tree": "ef91e6e816d7e73f289f4da704bda80e31797a8f",
      "parents": [
        "8e63098846b6216d76605bd627a2dd89615a5328"
      ],
      "author": {
        "name": "Hiroyuki Sato",
        "email": "hiroysato@gmail.com",
        "time": "Tue Aug 04 10:06:00 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 10:06:00 2026 +0900"
      },
      "message": "GH-50777: [CI][Dev] Fix shellcheck errors in the ci/scripts/r_test.sh (#50795)\n\n### Rationale for this change\n\nThis is the sub issue #44748.\n\n* SC1091: Not following: (error message here)\n* SC2086: Double quote to prevent globbing and word splitting.\n* SC2223: This default assignment may cause DoS due to globbing. Quote it.\n\n```\nshellcheck ci/scripts/r_test.sh\n\nIn ci/scripts/r_test.sh line 21:\n: ${R_BIN:\u003dR}\n  ^---------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/r_test.sh line 25:\npushd ${source_dir}\n      ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\npushd \"${source_dir}\"\n\nIn ci/scripts/r_test.sh line 30:\n  . \"${ARROW_PYTHON_VENV}/bin/activate\"\n    ^-- SC1091 (info): Not following: ./bin/activate: openBinaryFile: does not exist (No such file or directory)\n\nFor more information:\n  https://www.shellcheck.net/wiki/SC1091 -- Not following: ./bin/activate: op...\n  https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...\n  https://www.shellcheck.net/wiki/SC2223 -- This default assignment may cause...\n```  \n\n### What changes are included in this PR?\n\n* SC1091: Add a ShellCheck directive to disable source file checking.\n* SC2086: Quote variables.\n* SC2223: Quote variables.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #50777\n\nAuthored-by: Hiroyuki Sato \u003chiroysato@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "8e63098846b6216d76605bd627a2dd89615a5328",
      "tree": "113dd8f6f3a148e5525e946137b5cd7840cf7fd3",
      "parents": [
        "3cd72de3646b7cb1a2683a501298bb9dddcee224"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Aug 04 06:30:49 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 06:30:49 2026 +0900"
      },
      "message": "MINOR: [CI] Bump actions/stale from 10 to 11 (#50789)\n\nBumps [actions/stale](https://github.com/actions/stale) from 10 to 11.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/actions/stale/releases\"\u003eactions/stale\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev11.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch3\u003eEnhancement\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate to ESM and update dependencies by \u003ca href\u003d\"https://github-grid.enterprise.slack.com/team/U08CVLQ4JKE\"\u003e\u003ccode\u003e@​chiranjib-swain\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1350\"\u003eactions/stale#1350\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency Update\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOverride brace-expansion to 5.0.8 to address 24 high-severity dependency vulnerabilities by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1351\"\u003eactions/stale#1351\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/stale/compare/v10...v11.0.0\"\u003ehttps://github.com/actions/stale/compare/v10...v11.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev10.4.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eonly-issue-types\u003c/code\u003e validation  by \u003ca href\u003d\"https://github.com/trueberryless\"\u003e\u003ccode\u003e@​trueberryless\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1338\"\u003eactions/stale#1338\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency Updates\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump undici to 6.27.0 via override, clean up stale license files, and version to 10.4.0. by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1342\"\u003eactions/stale#1342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/trueberryless\"\u003e\u003ccode\u003e@​trueberryless\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1338\"\u003eactions/stale#1338\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/stale/compare/v10.3.0...v10.4.0\"\u003ehttps://github.com/actions/stale/compare/v10.3.0...v10.4.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev10.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnhancement: ignore stale labeling events by \u003ca href\u003d\"https://github.com/shamoon\"\u003e\u003ccode\u003e@​shamoon\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1311\"\u003eactions/stale#1311\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency Updates\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade dependencies (\u003ccode\u003e@​actions/core\u003c/code\u003e, \u003ccode\u003e@​octokit/plugin-retry\u003c/code\u003e, \u003ca href\u003d\"https://github.com/typescript-eslint\"\u003e\u003ccode\u003e@​typescript-eslint\u003c/code\u003e\u003c/a\u003e) by \u003ca href\u003d\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1335\"\u003eactions/stale#1335\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/shamoon\"\u003e\u003ccode\u003e@​shamoon\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1311\"\u003eactions/stale#1311\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/stale/compare/v10...v10.3.0\"\u003ehttps://github.com/actions/stale/compare/v10...v10.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev10.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix checking state cache (fix \u003ca href\u003d\"https://redirect.github.com/actions/stale/issues/1136\"\u003e#1136\u003c/a\u003e) and switch to Octokit helper methods by \u003ca href\u003d\"https://github.com/itchyny\"\u003e\u003ccode\u003e@​itchyny\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1152\"\u003eactions/stale#1152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency Updates\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade js-yaml from  4.1.0 to 4.1.1 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1304\"\u003eactions/stale#1304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade lodash from 4.17.21 to 4.17.23 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1313\"\u003eactions/stale#1313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade actions/cache from 4.0.3 to 5.0.2 and actions/github from 5.1.1 to 7.0.0  by \u003ca href\u003d\"https://github.com/chiranjib-swain\"\u003e\u003ccode\u003e@​chiranjib-swain\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1312\"\u003eactions/stale#1312\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/itchyny\"\u003e\u003ccode\u003e@​itchyny\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1152\"\u003eactions/stale#1152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/stale/compare/v10...v10.2.0\"\u003ehttps://github.com/actions/stale/compare/v10...v10.2.0\u003c/a\u003e\u003c/p\u003e\n\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/actions/stale/blob/main/CHANGELOG.md\"\u003eactions/stale\u0027s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch1\u003e[10.1.0]\u003c/h1\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd only-issue-types option to filter issues by type by \u003ca href\u003d\"https://github.com/Bibo-Joshi\"\u003e\u003ccode\u003e@​Bibo-Joshi\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1255\"\u003eactions/stale#1255\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e[10.0.0]\u003c/h1\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade to node 24 by \u003ca href\u003d\"https://github.com/salmanmkc\"\u003e\u003ccode\u003e@​salmanmkc\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1279\"\u003eactions/stale#1279\u003c/a\u003e\nMake sure your runner is on version v2.327.1 or later to ensure compatibility with this release. \u003ca href\u003d\"https://github.com/actions/runner/releases/tag/v2.327.1\"\u003eRelease Notes\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEnhancement\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIntroducing sort-by option by \u003ca href\u003d\"https://github.com/suyashgaonkar\"\u003e\u003ccode\u003e@​suyashgaonkar\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1254\"\u003eactions/stale#1254\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependency Upgrades\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade actions/publish-immutable-action from 0.0.3 to 0.0.4 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1186\"\u003eactions/stale#1186\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade undici from 5.28.4 to 5.28.5 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1201\"\u003eactions/stale#1201\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003e@​action/cache\u003c/code\u003e from 4.0.0 to 4.0.2 by \u003ca href\u003d\"https://github.com/aparnajyothi-y\"\u003e\u003ccode\u003e@​aparnajyothi-y\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1226\"\u003eactions/stale#1226\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003e@​action/cache\u003c/code\u003e from 4.0.2 to 4.0.3 by \u003ca href\u003d\"https://github.com/suyashgaonkar\"\u003e\u003ccode\u003e@​suyashgaonkar\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1233\"\u003eactions/stale#1233\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade undici from 5.28.5 to 5.29.0 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1251\"\u003eactions/stale#1251\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade form-data to bring in fix for critical vulnerability by \u003ca href\u003d\"https://github.com/gowridurgad\"\u003e\u003ccode\u003e@​gowridurgad\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1277\"\u003eactions/stale#1277\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChangelog update for recent releases by \u003ca href\u003d\"https://github.com/suyashgaonkar\"\u003e\u003ccode\u003e@​suyashgaonkar\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1224\"\u003eactions/stale#1224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePermissions update in Readme by \u003ca href\u003d\"https://github.com/ghadimir\"\u003e\u003ccode\u003e@​ghadimir\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1248\"\u003eactions/stale#1248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e[9.1.0]\u003c/h1\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumentation update by \u003ca href\u003d\"https://github.com/Marukome0743\"\u003e\u003ccode\u003e@​Marukome0743\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1116\"\u003eactions/stale#1116\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd workflow file for publishing releases to immutable action package by \u003ca href\u003d\"https://github.com/Jcambass\"\u003e\u003ccode\u003e@​Jcambass\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1179\"\u003eactions/stale#1179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate undici from 5.28.2 to 5.28.4 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1150\"\u003eactions/stale#1150\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate actions/checkout from 3 to 4 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1091\"\u003eactions/stale#1091\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate actions/publish-action from 0.2.2 to 0.3.0 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1147\"\u003eactions/stale#1147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate ts-jest from 29.1.1 to 29.2.5 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1175\"\u003eactions/stale#1175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003e@​actions/core\u003c/code\u003e from 1.10.1 to 1.11.1 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1191\"\u003eactions/stale#1191\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003e@​types/jest\u003c/code\u003e from 29.5.11 to 29.5.14 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1193\"\u003eactions/stale#1193\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003e@​actions/cache\u003c/code\u003e from 3.2.2 to 4.0.0 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/stale/pull/1194\"\u003eactions/stale#1194\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e[9.0.0]\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAction is now stateful: If the action ends because of \u003ca href\u003d\"https://github.com/actions/stale#operations-per-run\"\u003eoperations-per-run\u003c/a\u003e then the next run will start from the first unprocessed issue skipping the issues processed during the previous run(s). The state is reset when all the issues are processed. This should be considered for scheduling workflow runs.\u003c/li\u003e\n\u003cli\u003eVersion 9 of this action updated the runtime to Node.js 20. All scripts are now run with Node.js 20 instead of Node.js 16 and are affected by any breaking changes between Node.js 16 and 20.\u003c/li\u003e\n\u003c/ol\u003e\n\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/stale/commit/4391f3da665fdf50b6810c1a66712fb9ba21aa93\"\u003e\u003ccode\u003e4391f3d\u003c/code\u003e\u003c/a\u003e Fix 24 high severity vulnerabilities by overriding brace-expansion to 5.0.8 (...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/stale/commit/eaf9131fae5eafd0c31a64ebe3a2e183266fec48\"\u003e\u003ccode\u003eeaf9131\u003c/code\u003e\u003c/a\u003e refactor: update imports to use ES module syntax and improve test structure (...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href\u003d\"https://github.com/actions/stale/compare/v10...v11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dactions/stale\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d10\u0026new-version\u003d11)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t alter it yourself. You can also trigger a rebase manually by commenting `@ dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@ dependabot rebase` will rebase this PR\n- `@ dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@ dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@ dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@ dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@ dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\u003c/details\u003e\n\nAuthored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "3cd72de3646b7cb1a2683a501298bb9dddcee224",
      "tree": "df383324d1b2dda280ce042ad98a1b13cfcff99d",
      "parents": [
        "748b19003a6597bf8d6f63dae274581544c30bec"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Aug 04 06:29:55 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 06:29:55 2026 +0900"
      },
      "message": "MINOR: [CI] Bump docker/login-action from 4.5.1 to 4.6.0 (#50788)\n\nBumps [docker/login-action](https://github.com/docker/login-action) from 4.5.1 to 4.6.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/docker/login-action/releases\"\u003edocker/login-action\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHarden buildx scoped config path handling by \u003ca href\u003d\"https://github.com/crazy-max\"\u003e\u003ccode\u003e@​crazy-max\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/1059\"\u003edocker/login-action#1059\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​aws-sdk/client-ecr\u003c/code\u003e and \u003ccode\u003e@​aws-sdk/client-ecr-public\u003c/code\u003e to 3.1095.0 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/1051\"\u003edocker/login-action#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump js-yaml from 5.2.1 to 5.2.2 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/1057\"\u003edocker/login-action#1057\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump postcss from 8.5.10 to 8.5.22 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/1056\"\u003edocker/login-action#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/docker/login-action/compare/v4.5.2...v4.6.0\"\u003ehttps://github.com/docker/login-action/compare/v4.5.2...v4.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.5.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSurface Docker Hub OIDC error responses by \u003ca href\u003d\"https://github.com/crazy-max\"\u003e\u003ccode\u003e@​crazy-max\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/1058\"\u003edocker/login-action#1058\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/docker/login-action/compare/v4.5.1...v4.5.2\"\u003ehttps://github.com/docker/login-action/compare/v4.5.1...v4.5.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/dbcb813823bdd20940b903addbd779551569679f\"\u003e\u003ccode\u003edbcb813\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/1051\"\u003e#1051\u003c/a\u003e from docker/dependabot/npm_and_yarn/aws-sdk-dependen...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/5bcb015ee6ec720ecdeaef2dc1164122e9b209fc\"\u003e\u003ccode\u003e5bcb015\u003c/code\u003e\u003c/a\u003e [dependabot skip] chore: update generated content\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/b30b2f2d3196c1714318ba0c3c3bec211d949752\"\u003e\u003ccode\u003eb30b2f2\u003c/code\u003e\u003c/a\u003e build(deps): bump the aws-sdk-dependencies group across 1 directory with 2 up...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/9087f1e6d666fe0292409e3c819680c18526e108\"\u003e\u003ccode\u003e9087f1e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/1057\"\u003e#1057\u003c/a\u003e from docker/dependabot/npm_and_yarn/js-yaml-5.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/0009830ea169ca16c24c0ea4cac1c325bfa3aee4\"\u003e\u003ccode\u003e0009830\u003c/code\u003e\u003c/a\u003e [dependabot skip] chore: update generated content\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/23255232d3e43c8f0052d9a0dba82a515a88ce92\"\u003e\u003ccode\u003e2325523\u003c/code\u003e\u003c/a\u003e build(deps): bump js-yaml from 5.2.1 to 5.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/4ec1d4a769e8b05a89a7396551dc38b329211688\"\u003e\u003ccode\u003e4ec1d4a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/1056\"\u003e#1056\u003c/a\u003e from docker/dependabot/npm_and_yarn/postcss-8.5.22\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/5fc99ba47bca274c5a499688f71c7ea79c0ea1b3\"\u003e\u003ccode\u003e5fc99ba\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/1053\"\u003e#1053\u003c/a\u003e from docker/dependabot/github_actions/aws-actions/co...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/e512bd59d16c53d79ea5c0f0e345fe554453c4bb\"\u003e\u003ccode\u003ee512bd5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/1052\"\u003e#1052\u003c/a\u003e from docker/dependabot/github_actions/codeql-actions...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/a146c91b8f371700d323bae808af7cbdc2766ed5\"\u003e\u003ccode\u003ea146c91\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/1059\"\u003e#1059\u003c/a\u003e from crazy-max/harden-buildx-scope-paths\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href\u003d\"https://github.com/docker/login-action/compare/abd2ef45e78c5afb21d64d4ca52ee8550d9572c7...dbcb813823bdd20940b903addbd779551569679f\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003ddocker/login-action\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d4.5.1\u0026new-version\u003d4.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t alter it yourself. You can also trigger a rebase manually by commenting `@ dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@ dependabot rebase` will rebase this PR\n- `@ dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@ dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@ dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@ dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@ dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\u003c/details\u003e\n\nAuthored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "748b19003a6597bf8d6f63dae274581544c30bec",
      "tree": "6a715c6557b614b3d845cfae7194c80916577356",
      "parents": [
        "66e307084f78f38aee9c3dc77e206b1628511a9d"
      ],
      "author": {
        "name": "Hiroyuki Sato",
        "email": "hiroysato@gmail.com",
        "time": "Tue Aug 04 06:02:28 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 06:02:28 2026 +0900"
      },
      "message": "GH-50773: [CI][Dev] Fix shellcheck errors in the ci/scripts/r_sanitize.sh (#50775)\n\n### Rationale for this change\n\nThis is the sub issue #44748.\n\n* SC2223: This default assignment may cause DoS due to globbing. Quote it.\n* SC2006: Use $(...) notation instead of legacy backticked `...`.\n\n```\nshellcheck r_install_system_dependencies.sh\nr_install_system_dependencies.sh: r_install_system_dependencies.sh: openBinaryFile: does not exist (No such file or directory)\npalolovalley:arrow hsato$ shellcheck ci/scripts/r_install_system_dependencies.sh\n\nIn ci/scripts/r_install_system_dependencies.sh line 22:\n: ${ARROW_SOURCE_HOME:\u003d/arrow}\n  ^--------------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/r_install_system_dependencies.sh line 25:\nif [ \"`which dnf`\" ]; then\n      ^---------^ SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n\nDid you mean:\nif [ \"$(which dnf)\" ]; then\n\nIn ci/scripts/r_install_system_dependencies.sh line 27:\nelif [ \"`which yum`\" ]; then\n        ^---------^ SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n\nDid you mean:\nelif [ \"$(which yum)\" ]; then\n\nIn ci/scripts/r_install_system_dependencies.sh line 29:\nelif [ \"`which zypper`\" ]; then\n        ^------------^ SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n\nDid you mean:\nelif [ \"$(which zypper)\" ]; then\n\nIn ci/scripts/r_install_system_dependencies.sh line 31:\nelif [ \"`which apk`\" ]; then\n        ^---------^ SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n\nDid you mean:\nelif [ \"$(which apk)\" ]; then\n\nIn ci/scripts/r_install_system_dependencies.sh line 59:\n  if [ \"$ARROW_S3\" \u003d\u003d \"ON\" ] \u0026\u0026 [ -f \"${ARROW_SOURCE_HOME}/ci/scripts/install_minio.sh\" ] \u0026\u0026 [ \"`which wget`\" ]; then\n                                                                                                ^----------^ SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n\nDid you mean:\n  if [ \"$ARROW_S3\" \u003d\u003d \"ON\" ] \u0026\u0026 [ -f \"${ARROW_SOURCE_HOME}/ci/scripts/install_minio.sh\" ] \u0026\u0026 [ \"$(which wget)\" ]; then\n\nFor more information:\n  https://www.shellcheck.net/wiki/SC2223 -- This default assignment may cause...\n  https://www.shellcheck.net/wiki/SC2006 -- Use $(...) notation instead of le...\n```\n\n### What changes are included in this PR?\n\n* SC2223: Quote default variable assignments.\n* SC2006: Use `$(...)` notation instead of legacy backticked `...`.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50773\n\nAuthored-by: Hiroyuki Sato \u003chiroysato@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "66e307084f78f38aee9c3dc77e206b1628511a9d",
      "tree": "140a457b61d7385b77ab93444b0179a7ab18e846",
      "parents": [
        "f3a0848616ec6bde58c0c96ba868bbb120e471d9"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Mon Aug 03 13:51:43 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 13:51:43 2026 -0400"
      },
      "message": "GH-50495: [R] 25.0.0 Release followups (#50786)\n\n### Rationale for this change\n\nChanges from release branch need porting to main\n\n### What changes are included in this PR?\n\nPort them to main\n\n### Are these changes tested?\n\nNo\n\n### Are there any user-facing changes?\n\nSure, we removed two defunct funcs\n\n* GitHub Issue: #50495\n\nAuthored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "f3a0848616ec6bde58c0c96ba868bbb120e471d9",
      "tree": "62850c68296a3538588f66a702d8dbb68c29d64b",
      "parents": [
        "88c809455a97ff4681a79563ba6856923294a5b4"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Tue Aug 04 01:00:02 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 18:00:02 2026 +0200"
      },
      "message": "GH-50648: [Packaging][Linux] Enable OpenTelemetry (#50650)\n\n### Rationale for this change\n\nDebian GNU/Linux trixie or later and Ubuntu 26.04 or later provide opentelemetry-cpp-dev:\n\n* https://packages.debian.org/search?keywords\u003dopentelemetry-cpp-dev\n* https://packages.ubuntu.com/search?keywords\u003dopentelemetry-cpp-dev\n\n### What changes are included in this PR?\n\n* Install opentelemetry-cpp-dev if it\u0027s available\n* Build bundled opentelemetry-cpp-dev if it\u0027s not available (including RPM)\n* Add missing dependencies for static build\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nYes.\n* GitHub Issue: #50648\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "88c809455a97ff4681a79563ba6856923294a5b4",
      "tree": "5057baeaf3d80751c56e8510029af43fa6ced003",
      "parents": [
        "aeff591588d7bcdf9ab9fc6712816b44e8066ea4"
      ],
      "author": {
        "name": "Rok Mihevc",
        "email": "rok@mihevc.org",
        "time": "Mon Aug 03 13:10:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 13:10:16 2026 +0200"
      },
      "message": "MINOR: [Dev] Update collaborators list (#50782)\n\n### Rationale for this change\n\nThe collaborator list defines triage role. It helps having triage people.\nhttps://github.com/apache/arrow/commits?author\u003dReranko05\n\n### What changes are included in this PR?\n\nAdd to the list a collaborator that could benefit from triage role.\n\n### Are these changes tested?\n\nNot relevant\n\n### Are there any user-facing changes?\n\nNo\n\nAuthored-by: Rok Mihevc \u003crok@mihevc.org\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "aeff591588d7bcdf9ab9fc6712816b44e8066ea4",
      "tree": "50ec68c1423e46e3d1b8e6cfb95c565031dcfb85",
      "parents": [
        "dd414164bd50a9ab8bc764bd5c7b1b885c03306d"
      ],
      "author": {
        "name": "tadeja",
        "email": "tadeja@users.noreply.github.com",
        "time": "Mon Aug 03 11:29:10 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 11:29:10 2026 +0200"
      },
      "message": "GH-50760: [CI][Python] Create venv for test-fedora-42-python-3 (#50761)\n\n### Rationale for this change\nThe nightly job `test-fedora-42-python-3` fails with `Cannot uninstall packaging 24.2`\n`╰─\u003e The package\u0027s contents are unknown: no RECORD file was found for packaging.`\n\n### What changes are included in this PR?\nvenv in `linux-dnf-python-3.dockerfile` to install Python requirements there\n\n### Are these changes tested?\nYes, crossbow job passes.\n\n### Are there any user-facing changes?\nNo.\n* GitHub Issue: #50760\n\nAuthored-by: Tadeja Kadunc \u003ctadeja.kadunc@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "dd414164bd50a9ab8bc764bd5c7b1b885c03306d",
      "tree": "2a08ff795594a2e1954eb6cb48d3a6a869180f7a",
      "parents": [
        "fd38cf68cfb88ad74c2b3190746289137e732e8b"
      ],
      "author": {
        "name": "Hiroyuki Sato",
        "email": "hiroysato@gmail.com",
        "time": "Mon Aug 03 18:06:16 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 11:06:16 2026 +0200"
      },
      "message": "GH-50771: [CI][Dev] Fix shellcheck errors in the ci/scripts/r_install_system_dependencies.sh (#50772)\n\n### Rationale for this change\n\nThis is the sub issue #44748.\n\n* SC2223: This default assignment may cause DoS due to globbing. Quote it.\n* SC2006: Use $(...) notation instead of legacy backticked `...`.\n\n```\nshellcheck r_install_system_dependencies.sh\nr_install_system_dependencies.sh: r_install_system_dependencies.sh: openBinaryFile: does not exist (No such file or directory)\npalolovalley:arrow hsato$ shellcheck ci/scripts/r_install_system_dependencies.sh\n\nIn ci/scripts/r_install_system_dependencies.sh line 22:\n: ${ARROW_SOURCE_HOME:\u003d/arrow}\n  ^--------------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/r_install_system_dependencies.sh line 25:\nif [ \"`which dnf`\" ]; then\n      ^---------^ SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n\nDid you mean:\nif [ \"$(which dnf)\" ]; then\n\nIn ci/scripts/r_install_system_dependencies.sh line 27:\nelif [ \"`which yum`\" ]; then\n        ^---------^ SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n\nDid you mean:\nelif [ \"$(which yum)\" ]; then\n\nIn ci/scripts/r_install_system_dependencies.sh line 29:\nelif [ \"`which zypper`\" ]; then\n        ^------------^ SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n\nDid you mean:\nelif [ \"$(which zypper)\" ]; then\n\nIn ci/scripts/r_install_system_dependencies.sh line 31:\nelif [ \"`which apk`\" ]; then\n        ^---------^ SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n\nDid you mean:\nelif [ \"$(which apk)\" ]; then\n\nIn ci/scripts/r_install_system_dependencies.sh line 59:\n  if [ \"$ARROW_S3\" \u003d\u003d \"ON\" ] \u0026\u0026 [ -f \"${ARROW_SOURCE_HOME}/ci/scripts/install_minio.sh\" ] \u0026\u0026 [ \"`which wget`\" ]; then\n                                                                                                ^----------^ SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n\nDid you mean:\n  if [ \"$ARROW_S3\" \u003d\u003d \"ON\" ] \u0026\u0026 [ -f \"${ARROW_SOURCE_HOME}/ci/scripts/install_minio.sh\" ] \u0026\u0026 [ \"$(which wget)\" ]; then\n\nFor more information:\n  https://www.shellcheck.net/wiki/SC2223 -- This default assignment may cause...\n  https://www.shellcheck.net/wiki/SC2006 -- Use $(...) notation instead of le...\n```\n\n### What changes are included in this PR?\n\n* SC2006  Use `$(...)` notation instead of legacy backticks `...`\n* SC2223: Quote default variable assignments.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50771\n\nAuthored-by: Hiroyuki Sato \u003chiroysato@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "fd38cf68cfb88ad74c2b3190746289137e732e8b",
      "tree": "1b8f05aa86b461e3a3d5a95cbe2de8c252df1db0",
      "parents": [
        "874350100d1d13cf6376c45f391da28b27cde4e7"
      ],
      "author": {
        "name": "Hiroyuki Sato",
        "email": "hiroysato@gmail.com",
        "time": "Mon Aug 03 14:06:49 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 14:06:49 2026 +0900"
      },
      "message": "GH-50766: [CI][Dev] Fix shellcheck errors in the ci/scripts/r_docker_configure.sh (#50767)\n\n### Rationale for this change\n\nThis is the sub issue #44748.\n\n* SC2006 (style): Use $(...) notation instead of legacy backticks\n* SC2046: Quote this to prevent word splitting.\n* SC2086: Double quote to prevent globbing and word splitting.\n* SC2223: This default assignment may cause DoS due to globbing. Quote it.\n\n```\nshellcheck ci/scripts/r_docker_configure.sh\n\nIn ci/scripts/r_docker_configure.sh line 21:\n: ${R_BIN:\u003dR}\n  ^---------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/r_docker_configure.sh line 23:\n: ${ARROW_SOURCE_HOME:\u003d/arrow}\n  ^--------------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/r_docker_configure.sh line 29:\n  cat ${ARROW_SOURCE_HOME}/ci/etc/rprofile \u003e\u003e $(${R_BIN} RHOME)/etc/Rprofile.site\n      ^------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n                                              ^---------------^ SC2046 (warning): Quote this to prevent word splitting.\n\nDid you mean:\n  cat \"${ARROW_SOURCE_HOME}\"/ci/etc/rprofile \u003e\u003e $(${R_BIN} RHOME)/etc/Rprofile.site\n\nIn ci/scripts/r_docker_configure.sh line 33:\necho \"MAKEFLAGS\u003d-j$(${R_BIN} -s -e \u0027cat(parallel::detectCores())\u0027)\" \u003e\u003e $(R RHOME)/etc/Renviron.site\n                                                                       ^--------^ SC2046 (warning): Quote this to prevent word splitting.\n\nIn ci/scripts/r_docker_configure.sh line 36:\nif [ \"`which dnf`\" ]; then\n      ^---------^ SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n\nDid you mean:\nif [ \"$(which dnf)\" ]; then\n\nIn ci/scripts/r_docker_configure.sh line 38:\nelif [ \"`which yum`\" ]; then\n        ^---------^ SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n\nDid you mean:\nelif [ \"$(which yum)\" ]; then\n\nIn ci/scripts/r_docker_configure.sh line 40:\nelif [ \"`which zypper`\" ]; then\n        ^------------^ SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n\nDid you mean:\nelif [ \"$(which zypper)\" ]; then\n\nIn ci/scripts/r_docker_configure.sh line 42:\nelif [ \"`which apk`\" ]; then\n        ^---------^ SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n\nDid you mean:\nelif [ \"$(which apk)\" ]; then\n\nIn ci/scripts/r_docker_configure.sh line 50:\n: ${R_CUSTOM_CCACHE:\u003dFALSE}\n  ^-----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/r_docker_configure.sh line 51:\nR_CUSTOM_CCACHE\u003d`echo $R_CUSTOM_CCACHE | tr \u0027[:upper:]\u0027 \u0027[:lower:]\u0027`\n                ^-- SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n                      ^--------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\nR_CUSTOM_CCACHE\u003d$(echo \"$R_CUSTOM_CCACHE\" | tr \u0027[:upper:]\u0027 \u0027[:lower:]\u0027)\n\nIn ci/scripts/r_docker_configure.sh line 52:\nif [ ${R_CUSTOM_CCACHE} \u003d \"true\" ]; then\n     ^----------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\nif [ \"${R_CUSTOM_CCACHE}\" \u003d \"true\" ]; then\n\nFor more information:\n  https://www.shellcheck.net/wiki/SC2046 -- Quote this to prevent word splitt...\n  https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...\n  https://www.shellcheck.net/wiki/SC2223 -- This default assignment may cause...\n```\n\n### What changes are included in this PR?\n\n* SC2006  Use `$(...)` notation instead of legacy backticks\n* SC2046: Quote variable to prevent word splitting.\n* SC2086: Quote variable expansions.\n* SC2223: Quote default variable assignments.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50766\n\nAuthored-by: Hiroyuki Sato \u003chiroysato@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "874350100d1d13cf6376c45f391da28b27cde4e7",
      "tree": "c5021818daa527009862da96f7e29fb76fc5bad1",
      "parents": [
        "4d1e84b6418387d987d0dbd67ae0ef02d2c41040"
      ],
      "author": {
        "name": "Zehua Zou",
        "email": "zehuazou2000@gmail.com",
        "time": "Mon Aug 03 10:39:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 10:39:44 2026 +0800"
      },
      "message": "GH-50737: [C++][Parquet] mark `MakeStatistics` method without `ColumnDescriptor` as deprecated (#50738)\n\n### Rationale for this change\n\nI offer two reasons for marking this method as deprecated:\n1. It accepts a `distinct_count` parameter but lacks `has_distinct_count`, making it impossible to represent missing distinct counts, which could lead to misuse.\n2. When I try to add `nan_count`, I found that it lacks a `ColumnDescriptor` parameter, making it impossible to obtain the logical type and determine the value of `has_nan_count` based on Parquet\u0027s logical type (FLOAT16).\n\n### What changes are included in this PR?\n\nMark `MakeStatistics` method without `ColumnDescriptor` as deprecated.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nYes. \n\nMark `MakeStatistics` method without `ColumnDescriptor` as deprecated.\n* GitHub Issue: #50737\n\nAuthored-by: Zehua Zou \u003czehuazou2000@gmail.com\u003e\nSigned-off-by: Gang Wu \u003custcwg@gmail.com\u003e"
    },
    {
      "commit": "4d1e84b6418387d987d0dbd67ae0ef02d2c41040",
      "tree": "6ec10d42d82f9c943244c09a6110e835b4056ff3",
      "parents": [
        "85e0b804c4e59613ab663d2967f7ac9731ad3eec"
      ],
      "author": {
        "name": "Aaditya Srinivasan",
        "email": "156181482+Reranko05@users.noreply.github.com",
        "time": "Mon Aug 03 03:16:58 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 06:46:58 2026 +0900"
      },
      "message": "GH-50724: [C++] Add `JsonWriter::WriteValue` for simdjson values (#50725)\n\n### Rationale for this change\n\nThis PR continues the simdjson migration by adding support for serializing `simdjson::ondemand::value` directly with `JsonWriter`.\n\nThis provides a reusable API for future migration work and avoids requiring callers to implement their own recursive serialization logic. It also introduces a shared helper for dispatching `simdjson::ondemand::value` based on its JSON type, reducing duplicated type dispatch and extraction logic.\n\n### What changes are included in this PR?\n\n* Add `JsonWriter::WriteValue(simdjson::ondemand::value)`.\n* Add `VisitJsonValue` to centralize JSON type dispatch and `simdjson` value extraction.\n* Recursively serialize:\n\n  * objects\n  * arrays\n  * strings\n  * booleans\n  * null values\n  * numeric values\n* Add unit tests covering:\n\n  * simple objects\n  * nested objects\n  * objects containing arrays\n  * complex nested values\n  * empty objects\n* Use `simdjson::ondemand::document::get_value()` in tests to obtain the root `ondemand::value` before serialization.\n\n### Are these changes tested?\n\nYes.\n\nAdded unit tests for `JsonWriter::WriteValue` covering the supported JSON value types and nested structures.\n\n### Are there any user-facing changes?\n\nNo.\n\nCloses: #50724 \n\n* GitHub Issue: #50724\n\nAuthored-by: Aaditya Srinivasan \u003caadityasri03@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "85e0b804c4e59613ab663d2967f7ac9731ad3eec",
      "tree": "d2bebb3ea591b1ca07a930c91d28939dd2cbe04a",
      "parents": [
        "a947bc432cb7fe42f2e8007a37ec11d3dfeea03d"
      ],
      "author": {
        "name": "tadeja",
        "email": "tadeja@users.noreply.github.com",
        "time": "Sat Aug 01 11:14:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 01 18:14:39 2026 +0900"
      },
      "message": "GH-50758: [CI][C++] Use LLVM 22 on Debian experimental (#50759)\n\n### Rationale for this change\nFix #50758 - `llvm-toolchain-20` package was [removed from Debian experimental on Jul 14](https://tracker.debian.org/news/1774937/removed-12018-1-from-experimental/), so the nightly `test-debian-experimental-cpp-gcc-15` fails with `E: Unable to locate package clang-20` / `llvm-20-dev`.\n\n### What changes are included in this PR?\nUpdate LLVM 20 to 22 on Debian experimental in `dev/tasks/tasks.yml`\n\n### Are these changes tested?\nYes, built locally and verified via crossbow.\n \n### Are there any user-facing changes?\nNo.\n* GitHub Issue: #50758\n\nAuthored-by: Tadeja Kadunc \u003ctadeja.kadunc@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "a947bc432cb7fe42f2e8007a37ec11d3dfeea03d",
      "tree": "68ff2e550238086887664aac9ec823334090921b",
      "parents": [
        "35c5ffd12173284406e4a2c86405415444e596d7"
      ],
      "author": {
        "name": "Hiroyuki Sato",
        "email": "hiroysato@gmail.com",
        "time": "Sat Aug 01 07:36:50 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 01 07:36:50 2026 +0900"
      },
      "message": "GH-50609: [CI][Dev] Fix shellcheck errors in the ci/scripts/r_deps.sh (#50610)\n\n### Rationale for this change\n\nThis is the sub issue #44748.\n\n* SC2027: The surrounding quotes actually unquote this. Remove or escape them.\n* SC2086: Double quote to prevent globbing and word splitting.\n* SC2223: This default assignment may cause DoS due to globbing. Quote it.\n\n```\nshellcheck ci/scripts/r_deps.sh\n\nIn ci/scripts/r_deps.sh line 21:\n: ${R_BIN:\u003dR}\n  ^---------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/r_deps.sh line 23:\n: ${R_PRUNE_DEPS:\u003dFALSE}\n  ^--------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/r_deps.sh line 24:\nR_PRUNE_DEPS\u003d`echo $R_PRUNE_DEPS | tr \u0027[:upper:]\u0027 \u0027[:lower:]\u0027`\n             ^-- SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n                   ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\nR_PRUNE_DEPS\u003d$(echo \"$R_PRUNE_DEPS\" | tr \u0027[:upper:]\u0027 \u0027[:lower:]\u0027)\n\nIn ci/scripts/r_deps.sh line 26:\n: ${R_DUCKDB_DEV:\u003dFALSE}\n  ^--------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/r_deps.sh line 27:\nR_DUCKDB_DEV\u003d`echo $R_DUCKDB_DEV | tr \u0027[:upper:]\u0027 \u0027[:lower:]\u0027`\n             ^-- SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n                   ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\nR_DUCKDB_DEV\u003d$(echo \"$R_DUCKDB_DEV\" | tr \u0027[:upper:]\u0027 \u0027[:lower:]\u0027)\n\nIn ci/scripts/r_deps.sh line 31:\npushd ${source_dir}\n      ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\npushd \"${source_dir}\"\n\nIn ci/scripts/r_deps.sh line 33:\nif [ ${R_PRUNE_DEPS} \u003d \"true\" ]; then\n     ^-------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\nif [ \"${R_PRUNE_DEPS}\" \u003d \"true\" ]; then\n\nIn ci/scripts/r_deps.sh line 46:\n${R_BIN} -e \"options(warn\u003d2); install.packages(\u0027remotes\u0027); remotes::install_cran(c(\u0027glue\u0027, \u0027rcmdcheck\u0027, \u0027sys\u0027)); remotes::install_deps(INSTALL_opts \u003d \u0027\"${INSTALL_ARGS}\"\u0027)\"\n                                                                                                                                                        ^-------------^ SC2027 (warning): The surrounding quotes actually unquote this. Remove or escape them.\n                                                                                                                                                        ^-------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n${R_BIN} -e \"options(warn\u003d2); install.packages(\u0027remotes\u0027); remotes::install_cran(c(\u0027glue\u0027, \u0027rcmdcheck\u0027, \u0027sys\u0027)); remotes::install_deps(INSTALL_opts \u003d \u0027\"\"${INSTALL_ARGS}\"\"\u0027)\"\n\nIn ci/scripts/r_deps.sh line 49:\nif [ ${R_DUCKDB_DEV} \u003d\u003d \"true\" ]; then\n     ^-------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\nif [ \"${R_DUCKDB_DEV}\" \u003d\u003d \"true\" ]; then\n\nIn ci/scripts/r_deps.sh line 55:\n${R_BIN} -e \"remotes::install_deps(dependencies \u003d TRUE, INSTALL_opts \u003d \u0027\"${INSTALL_ARGS}\"\u0027)\"\n                                                                         ^-------------^ SC2027 (warning): The surrounding quotes actually unquote this. Remove or escape them.\n                                                                         ^-------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n${R_BIN} -e \"remotes::install_deps(dependencies \u003d TRUE, INSTALL_opts \u003d \u0027\"\"${INSTALL_ARGS}\"\"\u0027)\"\n\nFor more information:\n  https://www.shellcheck.net/wiki/SC2027 -- The surrounding quotes actually u...\n  https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...\n  https://www.shellcheck.net/wiki/SC2223 -- This default assignment may cause...\n```\n\n### What changes are included in this PR?\n\n* SC2027: Remove redundant quotes.\n* SC2086: Quote variable expansions.\n* SC2223: Quote default variable assignments.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50609\n\nLead-authored-by: Hiroyuki Sato \u003chiroysato@gmail.com\u003e\nCo-authored-by: Sutou Kouhei \u003ckou@cozmixng.org\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "35c5ffd12173284406e4a2c86405415444e596d7",
      "tree": "410235e6c46240c3a563d3d512f78c0e63248a60",
      "parents": [
        "0d2db98568f0b3b540c4b14068aab4f3a73ae8fc"
      ],
      "author": {
        "name": "snigdha choppa",
        "email": "snigchoppa@gmail.com",
        "time": "Fri Jul 31 11:21:16 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 18:21:16 2026 +0200"
      },
      "message": "GH-50395: [C++] Support duration inputs in temporal rounding (#50675)\n\n### Rationale for this change\n\nThe `ceil_temporal`, `floor_temporal`, and `round_temporal` functions currently support date, time, and timestamp inputs, but not duration inputs.\n\n### What changes are included in this PR?\n\n- Add kernel registration for duration values with second, millisecond, microsecond, and nanosecond resolutions\n- Support rounding duration inputs using physical units through day\n- Treat week as seven physical days for duration inputs\n- Reject ambiguous calendar units such as month, quarter, and year\n- Reject `calendar_based_origin` for duration inputs\n- Add focused C++ tests covering all four duration resolutions, positive and negative values, null propagation, day and week rounding, and unsupported calendar behavior\n\n### Are these changes tested?\n\nYes.\n\n- `arrow-compute-scalar-temporal-test`: 55 tests passed\n- Applicable pre-commit C++ formatting and lint checks passed\n\n### Are there any user-facing changes?\n\nYes. Users can now pass duration values to `ceil_temporal`, `floor_temporal`, and `round_temporal` for supported physical units.\n\n### AI assistance\n\nI used ChatGPT to help navigate the codebase and draft the initial implementation. I reviewed, revised, and tested the changes locally.\n* GitHub Issue: #50395\n\nAuthored-by: snigdhachoppac \u003csnigchoppa@gmail.com\u003e\nSigned-off-by: Rok Mihevc \u003crok@mihevc.org\u003e"
    },
    {
      "commit": "0d2db98568f0b3b540c4b14068aab4f3a73ae8fc",
      "tree": "86ec610028bc544c97c494d8575a82a4106cb1d5",
      "parents": [
        "43d5f8b12b4a15a8927c215fb3ad737a54f74b74"
      ],
      "author": {
        "name": "Horimoto Yasuhiro",
        "email": "horimoto@clear-code.com",
        "time": "Fri Jul 31 22:14:41 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 15:14:41 2026 +0200"
      },
      "message": "GH-50752: [C++][Compute] Fix unused variable warning when ARROW_WITH_RE2 is disabled (#50754)\n\n### Rationale for this change\n\nThis change fixes the following build error:\n\n```\n/arrow/cpp/src/arrow/compute/kernels/scalar_string_ascii.cc:1753:16: error: unused variable ‘is_utf8’ [-Werror\u003dunused-variable]\n 1753 |     const bool is_utf8 \u003d is_string_or_string_view(batch[0].type()-\u003eid());\n      |                ^~~~~~~\n```\n\nThe `is_utf8` variable introduced by commit 374db36 is unused when `ARROW_WITH_RE2\u003dOFF` is specified.\n\n```diff\n  static Status Exec(KernelContext* ctx, const ExecSpan\u0026 batch, ExecResult* out) {\n    const MatchSubstringOptions\u0026 options \u003d MatchSubstringState::Get(ctx);\n+   const bool is_utf8 \u003d is_string_or_string_view(batch[0].type()-\u003eid());\n    if (options.ignore_case) {\n      ARROW_ASSIGN_OR_RAISE(auto matcher,\n-                           FindSubstringRegex::Make(options, InputType::is_utf8, true));\n-     applicator::ScalarUnaryNotNullStateful\u003cOffsetType, InputType, FindSubstringRegex\u003e\n+                           FindSubstringRegex::Make(options, is_utf8, true));\n+     applicator::ScalarUnaryNotNullStateful\u003cOffsetType, InputPhysicalType,\n+                                            FindSubstringRegex\u003e\n          kernel{std::move(matcher)};\n      return kernel.Exec(ctx, batch, out);\n      return Status::NotImplemented(\"ignore_case requires RE2\");\n    }\n-   applicator::ScalarUnaryNotNullStateful\u003cOffsetType, InputType, FindSubstring\u003e kernel{\n-       FindSubstring(PlainSubstringMatcher(options))};\n+   applicator::ScalarUnaryNotNullStateful\u003cOffsetType, InputPhysicalType, FindSubstring\u003e\n+       kernel{FindSubstring(PlainSubstringMatcher(options))};\n    return kernel.Exec(ctx, batch, out);\n  }\n};\n```\n\nTherefore, I move the declaration of `is_utf8` inside the `#ifdef ARROW_WITH_RE2` block to prevent this error.\n\n### What changes are included in this PR?\n\nI move the declaration of `is_utf8` inside the `#ifdef ARROW_WITH_RE2` block to prevent this error.\n\nThis PR does not includes breaking changes to public APIs.\nThis PR does not contains a \"Critical Fix\".\n\n### Are these changes tested?\n\nYes.\nThis change only moves the declaration of `is_utf8` and does not change any logic.\n\nTherefore, the existing tests introduced by 374db36 should continue to pass. These tests are already covered by CI, and CI passes successfully with this change.\n\nNo new tests are added because this change only moves a variable declaration and does not affect behavior.\nI have confirmed that C++ CI checks pass on my fork.\nSee: https://github.com/komainu8/arrow/actions/runs/30619400223/job/91120073626\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #50752\n\nAuthored-by: Horimoto Yasuhiro \u003chorimoto@clear-code.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "43d5f8b12b4a15a8927c215fb3ad737a54f74b74",
      "tree": "0bf1b6af01666e07c458d92b1658e0a67d49ba24",
      "parents": [
        "d735dc90a79b61e91f77781ec20a348464b52d81"
      ],
      "author": {
        "name": "Antoine Pitrou",
        "email": "antoine@python.org",
        "time": "Fri Jul 31 09:50:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 09:50:53 2026 +0200"
      },
      "message": "GH-50739: [C++] Make simdjson required for static linking (#50741)\n\n### Rationale for this change\n\nUnlike RapidJSON, simdjson is not header-only and needs to be linked to explicitly when linking against libarrow.a.\n\nThis should fix the JNI builds on the C++ Extra workflow.\n\n### Are these changes tested?\n\nYes, by existing CI builds.\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #50739\n\nAuthored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "d735dc90a79b61e91f77781ec20a348464b52d81",
      "tree": "bc8306136a1949e4634ab73df47b9e156d290d9e",
      "parents": [
        "9ec70551b9caa042f15c475e1fe0a611bb7002ba"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Fri Jul 31 03:28:17 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 09:28:17 2026 +0200"
      },
      "message": "GH-50744: [R] Add read_ipc_file and write_ipc_file to _pkgdown.yml reference index (#50745)\n\n### Rationale for this change\n\nErrors due to functions missing from pkgdown docs\n\n### What changes are included in this PR?\n\nAdds them\n\n### Are these changes tested?\n\nWill run CI\n\n### Are there any user-facing changes?\n\nNo\n* GitHub Issue: #50744\n\nAuthored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "9ec70551b9caa042f15c475e1fe0a611bb7002ba",
      "tree": "db24cf49ca8364b7329372522c21e8fd4ca62b69",
      "parents": [
        "fa632d1c2b72cfd6f846e00b07ec3001a3c0b582"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Fri Jul 31 08:59:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 08:59:19 2026 +0200"
      },
      "message": "GH-50684: [Python][FlightRPC] Break the reference cycle between the C++ FlightServerBase and the Python object to avoid leaking server (#50687)\n\n### Rationale for this change\n\nPyFlightServer keeps a reference towards the Python server via `OwnedRefNoGIL server_`, the Python server also keeps a reference of the C++ `PyFlightServer` creating a cycle that is never freed during the process lifetime.\n\n### What changes are included in this PR?\n\nCreate a new `ReleasePythonServerRef` method that is called after any `server.Shutdown` (including at `__exit__`) allowing for the `OwnedRefNoGIL` to be cleared breaking the cycle. This lets normal reference counting free the previously leaked Python object.\n\n### Are these changes tested?\n\nYes, the newly added tests were failing leaking the references before the fix.\nCurrently a test demonstrating a leak when not calling server.Shutdown is added for discussion purposes.\n\n### Are there any user-facing changes?\n\nNo\n\n* GitHub Issue: #50684\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "fa632d1c2b72cfd6f846e00b07ec3001a3c0b582",
      "tree": "855e88b63de0c59fae96e66bad761799ec45b8fd",
      "parents": [
        "5d6cb93f3f47ebebcdbbf6fecdf48427415084de"
      ],
      "author": {
        "name": "Bryce Mecum",
        "email": "petridish@gmail.com",
        "time": "Thu Jul 30 18:06:22 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 18:06:22 2026 -0700"
      },
      "message": "GH-50578: [C++][FlightRPC][ODBC] Always return SQL_NO_DATA from GetMoreResults (#50700)\n\n### Rationale for this change\n\nFixes a bug in the implementation of ODBC `GetMoreResults` in the FlightSQL ODBC driver. According to https://learn.microsoft.com/en-us/sql/odbc/reference/appendixes/statement-transitions?view\u003dsql-server-ver17#sqlmoreresults, we should return `SQL_NO_DATA` for some states we previously were throwing another error in. This appears to be exposed by a behavior of only the Windows ODBC driver manager: `GetMoreResults` always gets called even for metadata queries.\n\n### What changes are included in this PR?\n\n- Changed implementation and test: `GetMoreResults` now always returns `SQL_NO_DATA`.\n\n### Are these changes tested?\n\nYes, in CI.\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #50578\n\nAuthored-by: Bryce Mecum \u003cpetridish@gmail.com\u003e\nSigned-off-by: Bryce Mecum \u003cpetridish@gmail.com\u003e"
    },
    {
      "commit": "5d6cb93f3f47ebebcdbbf6fecdf48427415084de",
      "tree": "b8e8623afac6777ff7eb4daa6ff578a136c58361",
      "parents": [
        "51131e28434bf87d634cb18c2b8457ce101331e0"
      ],
      "author": {
        "name": "Alexander Taepper",
        "email": "alexander.taepper@gmail.com",
        "time": "Thu Jul 30 18:14:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 18:14:54 2026 +0200"
      },
      "message": "GH-50713: [C++] Replace `return_type` and `enable_if_return` with \u003ctype_traits\u003e helpers (#50714)\n\n### Rationale for this change\n\nThis is the first part of simplifying functional helpers which are no longer required since the code-base supports more recent C++ versions. (See #50713 and #50250)\n\n### What changes are included in this PR?\n\nThis removes the `return_type` related helpers from `functional.h`. Also, the unused helpers `is_overloaded`, `enable_if_empty` and `enable_if_not_empty` are removed.\n\n### Are these changes tested?\n\nYes\n\n### Are there any user-facing changes?\n\nNo\n* GitHub Issue: #50713\n\nAuthored-by: Alexander Taepper \u003calexander.taepper@gmail.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "51131e28434bf87d634cb18c2b8457ce101331e0",
      "tree": "c0aeb79f625d6a47293c043433268da20508722d",
      "parents": [
        "525d99844dd4a0f06caaf14c8789c7e31b87be47"
      ],
      "author": {
        "name": "Antoine Prouvost",
        "email": "AntoinePrv@users.noreply.github.com",
        "time": "Thu Jul 30 15:05:45 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 15:05:45 2026 +0200"
      },
      "message": "GH-50503: [Parquet] Remove SVE128 unpack (#50611)\n\n### Rationale for this change\nThe SVE128 code path has conflict with the SVE256 that we do not yet manage properly.\n- There was first the ODR violation in GH-49921\n- Now it seems that there may also be an issue with LTO \n\nAnyhow, after we fixed the inlining issue in Neon, the SVE128 had no clear advantages over Neon as expected, os this was due to be removed anyways.\n\n### What changes are included in this PR?\nRemove SVE128 unpack\n\n### Are these changes tested?\nIn CI.\n\n### Are there any user-facing changes?\nNo\n\n* GitHub Issue: #50503\n\nLead-authored-by: AntoinePrv \u003cAntoinePrv@users.noreply.github.com\u003e\nCo-authored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "525d99844dd4a0f06caaf14c8789c7e31b87be47",
      "tree": "9a1098fa792efe3c97983876533a85b23b68b7ce",
      "parents": [
        "84027295a1f5dd3a100ae4f5bc41ad68a45ff388"
      ],
      "author": {
        "name": "tadeja",
        "email": "tadeja@users.noreply.github.com",
        "time": "Thu Jul 30 12:30:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 12:30:52 2026 +0200"
      },
      "message": "GH-50688: [CI] Remove brew update to fix macOS arrow-s3fs-test segfaults (#50734)\n\n### Rationale for this change\nFix #50688, per analysis of #50712, `arrow-s3fs-test` segfaults because of incompatible aws-sdk-cpp and aws-crt-cpp bottles on current homebrew-core (Homebrew/homebrew-core#295531 bumped aws-crt-cpp to 0.43.0 without rebuilding the aws-sdk-cpp bottle).\n`brew update` was added in #49491 and is no longer needed (grpc/protobuf v34 got fixed in homebrew-core in March Homebrew/homebrew-core@ 552efcae and current runner ships that Homebrew snapshot including that).\n\n### What changes are included in this PR?\nRemove brew update to avoid incompatible aws-sdk-cpp and aws-crt-cpp bottles.\n\n### Are these changes tested?\nYes, fork succeeded on Python and cpp workflows, now CI here succeeds too.\n\n### Are there any user-facing changes?\nNo.\n* GitHub Issue: #50688\n\nAuthored-by: Tadeja Kadunc \u003ctadeja.kadunc@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "84027295a1f5dd3a100ae4f5bc41ad68a45ff388",
      "tree": "625ed6b2ba6b255d36e3e2cebb9e388afd678b8b",
      "parents": [
        "86f8d42b68f6b4624cf544aec23fe9cba1346431"
      ],
      "author": {
        "name": "Guja",
        "email": "127162872+GujaLomsadze@users.noreply.github.com",
        "time": "Thu Jul 30 11:59:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 11:59:47 2026 +0200"
      },
      "message": "GH-49305: [Python] Expose RecordBatchFileReader.count_rows (#50646)\n\n### Rationale for this change\n\nResolves [49305](https://github.com/apache/arrow/issues/49305)\n\n`RecordBatchFileReader::CountRows` has existed in Arrow C++ (`cpp/src/arrow/ipc/reader.h`) but\nwas never bound in Python, so the only way to get the total number of rows of an IPC file was:\n\n```python\nnum_rows \u003d sum(reader.get_batch(i).num_rows for i in range(reader.num_record_batches))\n```\n\n### This findings are done in original opened Issue #49305\n\nThat deserializes every record batch just to read its length, which is wasteful and becomes\nexpensive on remote filesystems.\n\n### What changes are included in this PR?\n\nAdds `RecordBatchFileReader.count_rows()`:\n\n```python\nwith pa.ipc.open_file(source) as reader:\n    reader.count_rows()\n```\n\nThree changes:\n\n* `python/pyarrow/includes/libarrow.pxd`: declare `CResult[int64_t] CountRows()` on\n  `CRecordBatchFileReader`, which was the missing piece.\n* `python/pyarrow/ipc.pxi`: add `count_rows()` to `_RecordBatchFileReader`, released GIL around\n  the call, with the same closed reader guard used by the existing `stats` property\n* `python/pyarrow/tests/test_ipc.py`: tests.\n\nOn the naming: `count_rows()` follows the C++ method and is consistent with the existing\n`count_rows()` on `Dataset`, `Scanner` and `Fragment`.\n\nTo be precise about the benefit, since the issue describes it as reading the count from the\nmetadata: the C++ implementation still walks every block, but reads only each record batch\u0027s\nflatbuffer message header to pick up its length, and never touches the data buffers. So this is\na reduction in bytes read rather than in the number of reads, and the gain shows up on remote\nfilesystems and on files with large batches rather than in a local in memory benchmark.\n\nThis is only added to the file reader. The stream reader has no footer and cannot count rows\nwithout consuming the stream.\n\n### Are these changes tested?\n\nYes, two tests in `python/pyarrow/tests/test_ipc.py`:\n\n* `test_file_count_rows`: count matches the sum of the written batch lengths, and counting does\n  not consume the reader (count, `read_all()`, count again).\n* `test_file_count_rows_no_batches`: a file with a schema but no batches counts 0.\n\nLocally `test_ipc.py` passes (72 tests) and `test_feather.py` passes (83 passed, 8 skipped,\n1 xfailed), the latter because the feather reader sits on the same file reader. The docstring\nexample was run and produces the output shown.\n\n### Are there any user-facing changes?\n\nYes, a new public method `RecordBatchFileReader.count_rows()`. No existing behaviour changes.\n\n### AI usage disclosure\n\nI used Claude Code to locate the unbound C++ method and the place where the declaration was\nmissing, and to draft the binding, the docstring and the tests. I reviewed the result, rebuilt\nPyArrow locally, ran the test suites quoted above, and checked the C++ implementation of\n`CountRows` myself to confirm what it actually does before describing the benefit here.\n* GitHub Issue: #49305\n\nAuthored-by: Guja \u003c127162872+GujaLomsadze@users.noreply.github.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "86f8d42b68f6b4624cf544aec23fe9cba1346431",
      "tree": "5a49e70770711eec1d9319d80f6b84374cd3d82b",
      "parents": [
        "b8e2df40f0acb171896ce03c1cc4927048e19d19"
      ],
      "author": {
        "name": "Alexander Taepper",
        "email": "alexander.taepper@gmail.com",
        "time": "Thu Jul 30 11:50:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 11:50:47 2026 +0200"
      },
      "message": "GH-50730: [C++] Do not use throwing \u003csimdjson\u003e api (#50732)\n\n### Rationale for this change\n\nThe simdjson API has a throwing and non-throwing subset. https://github.com/apache/arrow/pull/50672 activated a compiler flag that disables the throwing subset of the API, which broke some CI builds.\n\n### What changes are included in this PR?\n\nThis changes `json_write_internal.cc` and `from_string.cc` to use the non-throwing simdjson api\n\n### Are these changes tested?\n\nYes\n\n### Are there any user-facing changes?\n \nNo\n\n* GitHub Issue: #50730\n\nAuthored-by: Alexander Taepper \u003calexander.taepper@gmail.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "b8e2df40f0acb171896ce03c1cc4927048e19d19",
      "tree": "bedc7786f810ededf6e7832477d016b3a22bb397",
      "parents": [
        "acbbe11129b4ddaac2b0a699f2c8591bb11f031a"
      ],
      "author": {
        "name": "Pratyush Adhikari",
        "email": "pratyushadk990@gmail.com",
        "time": "Thu Jul 30 14:40:33 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 11:10:33 2026 +0200"
      },
      "message": "GH-50702: [Python] Fix .pyx changes requiring two builds to take effect (#50719)\n\n### Rationale for this change\n\nI noticed while editing a .pyx file that my changes weren\u0027t \nshowing up after a rebuild — I had to build twice. Traced it \nto `BYPRODUCTS` being commented out in `UseCython.cmake`.\n\n### What changes are included in this PR?\n\nI uncommented `BYPRODUCTS ${_generated_files}` in \n`cpp/cmake_modules/UseCython.cmake`. Without it, CMake doesn\u0027t \nrealize the .cpp was updated in the same build pass, so it \nskips recompiling the .so until the next build.\n\nThe line was commented out for older CMake compatibility — but \nthe project requires CMake \u003e\u003d 3.25 now, and BYPRODUCTS has \nworked since 3.2, so that\u0027s no longer a concern.\n\n### Are these changes tested?\n\nThis is a build system fix so there\u0027s no unit test for it. \nThe CI builds pyarrow from source and runs the full test suite, \nwhich will validate the build still works correctly.\n\n### Are there any user-facing changes?\n\nNo — this only improves the dev experience when iterating on \n.pyx files. One build instead of two.\n\n* GitHub Issue: #50702\n\nAuthored-by: Pratyush Adhikari \u003cpratyushadk990@gmail.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "acbbe11129b4ddaac2b0a699f2c8591bb11f031a",
      "tree": "8788f816130ad91479ee7b0066ad4d65bced4024",
      "parents": [
        "ee6ff0a1b6b1bceedcea868265b4b0965d0056d0"
      ],
      "author": {
        "name": "Ben Magyar",
        "email": "me@benmagyar.com",
        "time": "Thu Jul 30 04:56:57 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 10:56:57 2026 +0200"
      },
      "message": "GH-44183: [C++] Support run-end encoded struct, list (view), large list (view) and map values (#50534)\n\n### Rationale for this change\n\nFrom #44183 - creating run-end encoded cols that contain list or struct values is unsupported. Adding support for both the encode and decode paths. \n\n### What changes are included in this PR?\n\n- Adding support for `List`, `ListView`, `LargeList`, `LargeListView`, `Map`, `FixedSizeList` and `Struct` values in the `run_end_encode` and the `run_end_decode` paths. \n- Support list of lists as part of that as well. \n\n### Are these changes tested?\n\n- Yes added covering tests \n\n### Are there any user-facing changes?\n\nThere are but they are not breaking. Currently the encode path throws that it is unsupported on one of these types. We are adding support. \n* GitHub Issue: #44183\n\nAuthored-by: Ben Magyar \u003cben.magyar@depop.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "ee6ff0a1b6b1bceedcea868265b4b0965d0056d0",
      "tree": "1ddb172f7ba80f8b27458d4f46e58367da278d63",
      "parents": [
        "0cac818ea8aaf9c5a30ebcf3baf857c8e0768654"
      ],
      "author": {
        "name": "fenfeng9",
        "email": "36840213+fenfeng9@users.noreply.github.com",
        "time": "Thu Jul 30 16:23:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 10:23:37 2026 +0200"
      },
      "message": "GH-50660: [C++][Dev] Add Decimal32 and Decimal64 GDB pretty-printers (#50723)\n\n### Rationale for this change\nThe Arrow GDB pretty-printers support `Decimal128` and `Decimal256`, but do not support `Decimal32` or `Decimal64`.\n\n### What changes are included in this PR?\n* Add GDB pretty-printer support and tests for `Decimal32` and `Decimal64`.\n* Remove the unused `max_type_id` variable.\n\n### Are these changes tested?\nYes.\n\n### Are there any user-facing changes?\nNo.\n* GitHub Issue: #50660\n\nAuthored-by: fenfeng9 \u003cfenfeng9@qq.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "0cac818ea8aaf9c5a30ebcf3baf857c8e0768654",
      "tree": "930963a0f1708d5c71ab5d70e7611599ecae5096",
      "parents": [
        "14acca2cb7faeac660e43cce2187681a0850b448"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Thu Jul 30 16:27:27 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 09:27:27 2026 +0200"
      },
      "message": "GH-50674: [Release] Add support for recovering Yum repositories (#50681)\n\n### Rationale for this change\n\nWe need this when we break our Yum repositories.\n\n### What changes are included in this PR?\n\nWe can recover Yum repositories too by `dev/release/binary-recover.sh`.\n\n### Are these changes tested?\n\nYes. I recovered our Yum repositories with this.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50674\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "14acca2cb7faeac660e43cce2187681a0850b448",
      "tree": "b2cc29e640ac5489c2e636a7ee21091b88a2720f",
      "parents": [
        "7cd1adf2e93091eb17e665215d73d45dd3dae701"
      ],
      "author": {
        "name": "tadeja",
        "email": "tadeja@users.noreply.github.com",
        "time": "Thu Jul 30 09:20:02 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 16:20:02 2026 +0900"
      },
      "message": "GH-50636: [C++] Replace std::span/ranges usage to fix macOS CRAN (#50705)\n\n### Rationale for this change\nFix #50636 - `test-r-macos-as-cran` nightly job fails compiling `visit({range_start, range_cur})` introduced in #50248.\n```console\n/Users/runner/work/crossbow/crossbow/arrow/cpp/src/arrow/compute/kernels/vector_sort.cc:325:11: note: candidate function not viable: cannot convert initializer list argument to \u0027std::span\u003cuint64_t\u003e\u0027 (aka \u0027span\u003cunsigned long long\u003e\u0027)\n  325 |           [\u0026](std::span\u003cuint64_t\u003e indices) { SortNextColumn(indices, offset); });\n```\nThe job pins [macOS SDK 11.3](https://github.com/ursacomputing/crossbow/actions/runs/30420027426/job/90474737457#step:9:14), so libc++ there does not have C++20 iterator-pair span constructor available yet ([available with libc++ 14](https://libcxx.llvm.org/Status/Cxx20.html)).\nSimilar problem as in recent #50295\n\n### What changes are included in this PR?\nReplace std::span iterator-pair constructor with subspan in `vector_sort.cc`\nAlso replace std::ranges in `parquet/arrow/reader.cc` introduced in #50271\n\n### Are these changes tested?\nYes, builds locally and crossbow `test-r-macos-as-cran` job succeeds.\n\n### Are there any user-facing changes?\nNo.\n* GitHub Issue: #50636\n\nAuthored-by: Tadeja Kadunc \u003ctadeja.kadunc@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "7cd1adf2e93091eb17e665215d73d45dd3dae701",
      "tree": "77120107f4d69089eebb425afaf10252e35a0e48",
      "parents": [
        "bb0cf7710738a0e09e149c2f7e27e4f509b42a61"
      ],
      "author": {
        "name": "Antoine Pitrou",
        "email": "antoine@python.org",
        "time": "Thu Jul 30 09:03:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 09:03:35 2026 +0200"
      },
      "message": "GH-50716: [C++][CI] Make simdjson required for Parquet (#50717)\n\n### Rationale for this change\n\nThis should fix a number of C++ and Python CI builds now that simdjson is used for parsing geospatial and modular encryption metadata.\n\n### Are these changes tested?\n\nBy existing CI builds.\n\n### Are there any user-facing changes?\n\nJust a bugfix in the build chain.\n* GitHub Issue: #50716\n\nAuthored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "bb0cf7710738a0e09e149c2f7e27e4f509b42a61",
      "tree": "493bf65e21f190c776e8c2cfd41dff0e5a9e181e",
      "parents": [
        "7dbcb0f13203111e28b8bcddd64b8eb7c3479d86"
      ],
      "author": {
        "name": "Aaditya Srinivasan",
        "email": "156181482+Reranko05@users.noreply.github.com",
        "time": "Thu Jul 30 07:59:35 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 11:29:35 2026 +0900"
      },
      "message": "GH-50654: [C++] Support simdjson without exceptions (#50672)\n\n### Rationale for this change\n\nThis change enables building Arrow with `SIMDJSON_EXCEPTIONS\u003d0` by updating the JSON object parser to use simdjson\u0027s non-throwing API.\n\n### What changes are included?\n\n- Enable `SIMDJSON_EXCEPTIONS\u003d0` for the bundled simdjson dependency.\n- Replace uses of `simdjson_result::value()` in `ObjectParser` with the non-throwing `get()` API.\n- Preserve existing error handling by returning Arrow `Status` values on simdjson errors.\n\n### Are these changes tested?\n\nYes.\n\nFixes: #50654 \n* GitHub Issue: #50654\n\nAuthored-by: Aaditya Srinivasan \u003caadityasri03@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "7dbcb0f13203111e28b8bcddd64b8eb7c3479d86",
      "tree": "234c76e3e7173ad9ad1f30a62bb70aa1587c6627",
      "parents": [
        "5cafd7caf72bcdb7a56fa7c3196b24c8091cb050"
      ],
      "author": {
        "name": "Zehua Zou",
        "email": "zehuazou2000@gmail.com",
        "time": "Thu Jul 30 03:11:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 21:11:46 2026 +0200"
      },
      "message": "GH-50718: [C++][CI] Fix valgrind use of uninitialised value on FixedSizeListTestCase (#50721)\n\n### Rationale for this change\n\nFix a valgrind error.\n\n### What changes are included in this PR?\n\nAdd `PrintTo` method to `FixedSizeListTestCase`.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50718\n\nAuthored-by: Zehua Zou \u003czehuazou2000@gmail.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "5cafd7caf72bcdb7a56fa7c3196b24c8091cb050",
      "tree": "8c568610530120526ef6e6646e355d3dc4d359f4",
      "parents": [
        "3deec0b119a3fc009e86e473242a6b647eea94e8"
      ],
      "author": {
        "name": "Aaditya Srinivasan",
        "email": "156181482+Reranko05@users.noreply.github.com",
        "time": "Wed Jul 29 18:56:24 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 15:26:24 2026 +0200"
      },
      "message": "GH-50706: [C++] Migrate extension type serialization to JsonWriter (#50708)\n\n### Rationale for this change\n\nThis PR continues the simdjson migration by replacing RapidJSON\u0027s `Writer` API with `JsonWriter` in extension type serialization.\n\n### What changes are included in this PR?\n\n* Replace RapidJSON writer usage with `JsonWriter` in:\n  * `FixedShapeTensorType::Serialize()`\n  * `VariableShapeTensorType::Serialize()`\n  * `OpaqueType::Serialize()`\n* Remove `rapidjson::Writer` usage from the migrated serializers.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n\nCloses: #50706 \n* GitHub Issue: #50706\n\nAuthored-by: Aaditya Srinivasan \u003caadityasri03@gmail.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "3deec0b119a3fc009e86e473242a6b647eea94e8",
      "tree": "2b19051c44816ddae2c1121211e5f77b98e25e35",
      "parents": [
        "e1dfbefe2ebfe610609f4d718f652b910c966521"
      ],
      "author": {
        "name": "Aaditya Srinivasan",
        "email": "156181482+Reranko05@users.noreply.github.com",
        "time": "Wed Jul 29 15:05:45 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 11:35:45 2026 +0200"
      },
      "message": "GH-50690: [C++] Migrate ObjectWriter users to JsonWriter (#50691)\n\n### Rationale for this change\n\nThis PR continues the simdjson migration by replacing the remaining `ObjectWriter` users with `JsonWriter`. With all usages migrated, the obsolete `ObjectWriter` implementation and its associated build configuration are removed.\n\n### What changes are included in this PR?\n\n* Replace `ObjectWriter` with `JsonWriter` in:\n\n  * `key_material.cc`\n  * `key_metadata.cc`\n  * `local_wrap_kms_client.cc`\n  * `file_system_key_material_store.cc`\n* Remove the unused `ObjectWriter` implementation (`object_writer.cc` and `object_writer.h`).\n* Remove `object_writer.h` from the installed headers.\n* Update the Arrow build configuration to stop building `object_writer.cc`.\n* Link Parquet against `simdjson::simdjson` since it now includes `json_writer_internal.h`.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n\nCloses: #50690 \n* GitHub Issue: #50690\n\nLead-authored-by: Aaditya Srinivasan \u003caadityasri03@gmail.com\u003e\nCo-authored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "e1dfbefe2ebfe610609f4d718f652b910c966521",
      "tree": "2166845ee7a8bcd1871d4e90db5138819d522d3b",
      "parents": [
        "deed9c0d99b33be112f9931ec92f4df65c75fc43"
      ],
      "author": {
        "name": "Rahul Goel",
        "email": "goel.rahul4200@gmail.com",
        "time": "Wed Jul 29 03:29:58 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 09:29:58 2026 +0200"
      },
      "message": "GH-50338: [C++] Add ComputeLogicalNullCount to Datum (#50347)\n\n### Rationale for this change\n\n`Datum::null_count()` only counts physical nulls, so it gives the wrong answer for union, run-end encoded and dictionary data. `Array`, `ArrayData`, `ArraySpan` and `ChunkedArray` already have `ComputeLogicalNullCount()` for this, but `Datum` doesn\u0027t.\n\n### What changes are included in this PR?\n\n- `Datum::ComputeLogicalNullCount()`, which delegates to the existing `ArrayData`/`ChunkedArray` implementations for array-like data.\n- `Scalar::IsLogicalNull()`, which is `!is_valid` for most types. `DictionaryScalar` overrides it because a valid index can still refer to a null dictionary value. Ill-formed scalars (e.g. an out-of-bounds index) are not handled defensively — the result is undefined for them, and validation rejects them. Like the array path, it doesn\u0027t recurse into nested values.\n\n### Are these changes tested?\n\nYes, in datum_test.cc and scalar_test.cc: union (sparse and dense), run-end encoded, dictionary and chunked inputs, scalars obtained from `Array::GetScalar()`, and a check that the scalar and array paths agree element by element.\n\n### Are there any user-facing changes?\n\nThe two new APIs above. The new virtual on `Scalar` changes the C++ ABI, so this shouldn\u0027t be backported to a patch release.\n\n* GitHub Issue: #50338\n\nAuthored-by: Rahul Goel \u003cgoel.rahul4200@gmail.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "deed9c0d99b33be112f9931ec92f4df65c75fc43",
      "tree": "ae22144cba0bb881b22ac6c3d0d92cc7721ebd5f",
      "parents": [
        "bda98c4d8c4dbf52c6b52186e07a7bb0578c0ac4"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Tue Jul 28 16:40:51 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 16:40:51 2026 -0400"
      },
      "message": "GH-49237: [R] Deprecate Feather reader and writer (#49276)\n\n### Rationale for this change\n\nArrow C++ is deprecating the Feather reader/writer (#49231) so we should update the R functions too\n\n### What changes are included in this PR?\n\n- Updated `write_feather` to mention in the docs that it\u0027s deprecated.\n- Refactored `write_feather()` to wrap new function `write_ipc_impl()` so we can show deprecation warnings on calls to `write_feather()` only (previously `write_ipc_file()` called `write_feather()` and so I didn\u0027t wanna add the deprecation warning without this refactor otherwise a call to `write_ipc_file()` would trigger it erroneously)\n- Once we eventually remove `write_feather()` we can remove this extra function\n- Split `read_ipc_file()` and `read_feather()` into separate functions so we can document them differently. Updated the examples to show using `read_ipc_file()`\n- Deprecated `format \u003d \"feather\"` in `open_dataset()`, `write_dataset()`, and `FileFormat$create()` - now emits deprecation warning recommending `format \u003d \"ipc\"` instead\n- Updated `as.character.FileFormat` to return `\"ipc\"` instead of `\"feather\"`\n- Updated docs and tests to use `\"ipc\"` instead of `\"feather\"`\n\nSome :robot: use here, but I decided on **what** to do.\n\n### Are these changes tested?\n\nYep\n\n### Are there any user-facing changes?\n\nYep - deprecation warning\n\n* GitHub Issue: #49237\n\nLead-authored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "bda98c4d8c4dbf52c6b52186e07a7bb0578c0ac4",
      "tree": "d80715cf0cf63aae0ad81482de422dec2392adac",
      "parents": [
        "3834d24666f48dcb984bacecf72ee7aaddb69999"
      ],
      "author": {
        "name": "Max Gorbuk",
        "email": "gorbuk@stanford.edu",
        "time": "Tue Jul 28 20:01:45 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 19:01:45 2026 +0200"
      },
      "message": "GH-37476: [C++][Python] Preserve unsigned dictionary index types when building from values (#50475)\n\n### Rationale for this change\n\nAn unsigned dictionary index type is silently replaced by the signed one of the same width:\n\n```python\n\u003e\u003e\u003e pa.array([\"a\", \"b\"], type\u003dpa.dictionary(pa.uint32(), pa.string())).type\ndictionary\u003cvalues\u003dstring, indices\u003dint32, ordered\u003d0\u003e\n```\n\nIt also makes `pa.chunked_array(values, dict_type)` fail with `Array chunks must all be same type`, since the chunk built internally comes back a different type than requested.\n\n`DictionaryBuilderCase::CreateFor()` reduces the requested index type to its byte width and hands that to `AdaptiveIntBuilder`, so everything but the width is dropped and the type is rebuilt from what the indices builder reports, which is always signed.\n\n@ jorisvandenbossche suggested `AdaptiveUIntBuilder` for unsigned types. That returns a different builder class, which `util/converter.h`, `json/from_string.cc` and the R binding all cast to `DictionaryBuilder\u003cT\u003e`, and `TestDictionaryUnifier.ChunkedArrayNestedDict` hits a `checked_pointer_cast` DCHECK. So this keeps one builder class and just reports the requested signedness. Indices are non-negative and same-width signed and unsigned types have the same layout, so it is value-preserving and free, and the width stays adaptive.\n\n### What changes are included in this PR?\n\n`DictionaryBuilderBase` and its `NullType` specialization record the requested signedness and map the signed index type to the unsigned one of the same width in `type()`, `FinishInternal()` and `FinishDelta()`; `CreateFor()` passes it through. The mapping helper lives in `builder.cc`, not the header. `util/converter.h`, `python_to_arrow.cc` and `r_to_arrow.cpp` are untouched, so R is fixed rather than broken.\n\nuint64 indices also convert to pandas now, mapped to int64 codes. That is safe because the indices are bounds-checked below the dictionary length, so they never reach the int64 limit; `WriteIndicesUniform` handles uint64 like it already handles uint32.\n\n### Are these changes tested?\n\nSix tests in `array_dict_test.cc` cover the distinct paths: type and finish preservation across signed and unsigned, the width adapting while staying unsigned, the `NullType` builder, `FinishDelta`, the supplied-dictionary constructor and the exact-index builder. Three parametrized tests in `test_array.py` cover the eight index types, the width adapting and the uint64-to-pandas conversion, and `test_dictionary_with_pandas` now checks that conversion instead of the old error.\n\nA `uint8` grows to `uint16` once more than 128 distinct values are added and stays unsigned; the underlying builder is signed, so it widens after 128 rather than the 256 a real uint8 could hold. `arrow-array-test`, `arrow-ipc-read-write-test`, `arrow-compute-scalar-cast-test`, `arrow-c-bridge-test` and the pyarrow `test_array` and `test_pandas` suites pass.\n\n### Are there any user-facing changes?\n\n`pa.array` and `pa.chunked_array` return the requested unsigned index type. `dictionary(uint64(), ...)` produces real uint64 indices, and converting such an array to pandas now works where it used to raise. `take`, `filter`, `cast`, `dictionary_decode`, IPC and scalar access all keep the index type.\n\n* GitHub Issue: #37476\n\nAuthored-by: mkzung \u003c103102868+mkzung@users.noreply.github.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "3834d24666f48dcb984bacecf72ee7aaddb69999",
      "tree": "1c02f339af004238576e186f5b94c1f82fe39c3e",
      "parents": [
        "6c2c8c751430026625d12627d8c4f56e6ab80355"
      ],
      "author": {
        "name": "Alexander Taepper",
        "email": "alexander.taepper@gmail.com",
        "time": "Tue Jul 28 19:00:10 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 19:00:10 2026 +0200"
      },
      "message": "GH-50627: [C++] Migrate from_string.cc to simdjson (#50653)\n\n### Rationale for this change\n\nThis is part of the work for #35460. Back in January I started working on this change-set, but after discussions came up regarding the use of the `simdjson::dom` vs `simdjson::ondemand` front-end the development went stale. I saw that @ Reranko05 started the work on #35460 and already made great progress, well done!\n\nI still wanted to put up this change-set as a possible view-point, but feel free to disregard @ Reranko05 if you already started your own work.\n\n### What changes are included in this PR?\n\nThis changes `from_string.cc` to use simdjson instead of RapidJSON.\n\n### Are there any user-facing changes?\n\nYes, the API has changed to no longer allow non-utf8 compatible strings. `simdjson` does not support non-compliant inputs and does not intent to support it in the future [[1]](https://github.com/simdjson/simdjson/issues/1691#issuecomment-895286180) [[2]](https://github.com/simdjson/simdjson/blob/8e6bac94877f2d3d026000d36ce81e0aaf38d26f/doc/basics.md?plain\u003d1#L3701) [[3]](https://github.com/simdjson/simdjson/discussions/2125)\n\nAll call-sites in tests only used a transformation to non-utf8 json as an intermediate result to easily go from `string -\u003e Array`, so I changed these to use different helper methods instead.\n\nAnother difficult problem arises in the handling of `NaN` and `Inf` literals in inputs. `simdjson` follows the json standard, whereas `RapidJSON` implemented an extension where the following is a valid input:\n```\n{\"x\": Inf, \"y\": -Inf, \"z\": NaN, \"n\": Infinity, \"m\": -Infinity}\n```\n\nWe need to decide whether to be breaking here or not. This PR now contains a non-breaking version of the change. This can be quite elegantly added by using the public `ondemand` api\u0027s function to retrieve the raw token string in the `ConvertNumber` function.\n\nAlternatively, we can wait for the next `simdjson` major release, which will ship with support for a `SIMDJSON_ENABLE_NAN_INF` compilation flag as per [this pull request](https://github.com/simdjson/simdjson/pull/2696). (this was only merged to simdjson main)\n\n### Are these changes tested?\n\nYes\n\n* GitHub Issue: #50627\n\nAuthored-by: Alexander Taepper \u003calexander.taepper@gmail.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "6c2c8c751430026625d12627d8c4f56e6ab80355",
      "tree": "ad997e0ac01e9060961d3a19d5880cc4bc55a6c1",
      "parents": [
        "b1af964af03e218f49ae1991526cc53de056cf60"
      ],
      "author": {
        "name": "Aaditya Srinivasan",
        "email": "156181482+Reranko05@users.noreply.github.com",
        "time": "Tue Jul 28 20:57:36 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 17:27:36 2026 +0200"
      },
      "message": "GH-50567: [C++] Introduce JsonWriter and migrate integration JSON writer (#50568)\n\n### What changes are included?\n\nThis PR introduces a reusable `JsonWriter` wrapper around simdjson\u0027s JSON builder API and migrates the integration JSON writer to use it instead of RapidJSON.\n\nSpecifically, this PR:\n\n- Adds a reusable `JsonWriter` abstraction in `arrow/json`.\n- Migrates the integration JSON writer implementation to `JsonWriter`.\n- Updates the integration tests to use `JsonWriter`.\n- Adds unit tests for `JsonWriter`.\n\nThis is part of the incremental migration from RapidJSON to simdjson.\n\n### Performance\n\nI compared the serialization performance of `IntegrationJsonWriter::WriteRecordBatch()` + `Finish()` using a temporary benchmark with a 1M-row `RecordBatch`. The benchmark was run 10 times on both `main` and this branch.\n\n| Branch | Average Time |\n|--------|-------------:|\n| `main` | 2157.4 ms |\n| This PR | 2153.6 ms |\n\nNo measurable performance regression was observed.\n\n### Are these changes tested?\n\nYes.\n\nI added unit tests for `JsonWriter` and verified that both JSON and integration tests pass locally:\n\n- `arrow-json-test`\n- `arrow-json-integration-test`\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50567\n\nAuthored-by: Aaditya Srinivasan \u003caadityasri03@gmail.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "b1af964af03e218f49ae1991526cc53de056cf60",
      "tree": "e1250437d88ed2c371d9ac1537ec28a625e85cf5",
      "parents": [
        "2ae036fdb61149a969fc11c220ef1766cdf2a858"
      ],
      "author": {
        "name": "Liang Hu",
        "email": "35699841+LarryHu0217@users.noreply.github.com",
        "time": "Tue Jul 28 11:18:43 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 17:18:43 2026 +0200"
      },
      "message": "GH-40163: [Archery] Avoid setuptools_scm internal API (#50669)\n\n### Rationale for this change\n\nCrossbow currently computes development versions through internal `setuptools_scm` APIs. Those APIs are unstable and require Archery to pin an otherwise unnecessary runtime dependency.\n\n### What changes are included in this PR?\n\n- Compute the development version from public `git describe` output.\n- Preserve the existing behavior for released, development, release-candidate, and dirty tags.\n- Remove `setuptools_scm` from the Crossbow extra.\n- Add unit coverage plus a real temporary Git repository test.\n\n### Are these changes tested?\n\n- `python -m pytest -q dev/archery/archery/crossbow/tests/test_core.py` (31 passed)\n- `flake8 --max-line-length\u003d88` on the changed Python files\n- `autopep8 --diff --max-line-length\u003d88` on the changed Python files\n- Verified Archery imports when `setuptools_scm` is not installed\n\n### Are there any user-facing changes?\n\nNo. This removes an internal dependency while preserving Crossbow version behavior.\n\nCloses #40163\n* GitHub Issue: #40163\n\nAuthored-by: Liang Hu \u003clh3057@columbia.edu\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "2ae036fdb61149a969fc11c220ef1766cdf2a858",
      "tree": "4a91ace9ab6f8cf42c4fc1f98ae96c753b2e9017",
      "parents": [
        "6f6051b7501c4ef5421e1b6afa94bc75572571a6"
      ],
      "author": {
        "name": "fenfeng9",
        "email": "36840213+fenfeng9@users.noreply.github.com",
        "time": "Tue Jul 28 20:31:48 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 14:31:48 2026 +0200"
      },
      "message": "GH-50680: [C++][Dev] Extend type IDs in gdb_arrow.py (#50683)\n\n### Rationale for this change\n`gdb_arrow.py` mirrors the C++ `arrow::Type::type` enum by position, but it is missing several newer type IDs.\n\nThe upcoming pretty-printer sub-issues(https://github.com/apache/arrow/issues/50656) share this dependency. \n### What changes are included in this PR?\nAdds the missing `RunEndEncoded, BinaryView, ListView, and Decimal32/64` type IDs in the same order as the C++ enum.\n\nIndividual pretty-printer support will be implemented separately.\n### Are these changes tested?\n\n### Are there any user-facing changes?\nNo.\n* GitHub Issue: #50680\n\nAuthored-by: fenfeng9 \u003cfenfeng9@qq.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "6f6051b7501c4ef5421e1b6afa94bc75572571a6",
      "tree": "db06d388a02afb1bf6c16a41d5ad4fa3245d6674",
      "parents": [
        "9b1fbede84e54ef27ceda41869bc24ea03ad8b78"
      ],
      "author": {
        "name": "Zehua Zou",
        "email": "zehuazou2000@gmail.com",
        "time": "Tue Jul 28 16:52:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 10:52:49 2026 +0200"
      },
      "message": "GH-50678: [C++][Parquet] Remove unused member `null_slot_usage` in struct `LevelInfo` (#50679)\n\n### Rationale for this change\n\nRemove unused member `null_slot_usage` in struct `LevelInfo` which is in the `parquet::internal` namespace.\n\n### What changes are included in this PR?\n\nRemove member `null_slot_usage` in struct `LevelInfo`.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50678\n\nAuthored-by: Zehua Zou \u003czehuazou2000@gmail.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "9b1fbede84e54ef27ceda41869bc24ea03ad8b78",
      "tree": "012845367acef99762c922fb2099ad1780540940",
      "parents": [
        "94c1bec2133eeba155cbc8966bcc0f16f23a44d0"
      ],
      "author": {
        "name": "Daniel Anderson",
        "email": "69274205+dmsa-or@users.noreply.github.com",
        "time": "Tue Jul 28 01:36:16 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 10:36:16 2026 +0200"
      },
      "message": "GH-50641: [C++][Compute] Fix correctness error in decimal round_binary kernel (#50642)\n\n### Rationale for this change\n\nThere are major correctness bugs in the `round_binary` kernel for decimal input. #50641 describes them in more detail. Essentially, the midpoint `half_pow10` of the rounding range is computed outside of the loop and assumes that `ndigits` \u003d\u003d 0. The consequence is that for round-to-nearest modes, `round_binary` will frequently give wrong answers when `ndigits` !\u003d 0. Also as a result of assuming `ndigits` is always 0, the function does not attempt to round negative scale inputs.\n\nThere is also a correctness issue with the decimal implementation of the HALF_TO_ODD rounding mode, which applies both to the `round` and `round_binary` compute functions when the input is negative. In this case, the function does round to an odd, but rounds to the closest odd greater than the input rather than the nearest odd.\n\n### What changes are included in this PR?\n\nThe mentioned bugs are fixed. For `round_binary`, we make sure to compute `pow` and `half_pow10` inside `RoundBinary::Call` where we know the row value of `ndigits`.\n\nTo fix the HALF_TO_ODD mode, we check whether the sign of the remainder is positive (1) instead of the truthy value of the sign (which turns out to be always `true` since `remainder.Sign()` is either 1 or -1. This matches the HALF_TO_EVEN implementation.\n\nAdded decimal `round_binary` unit tests to `scalar_round_arithmetic_test.cc`. They were absent up to this point which is why the bug wasn\u0027t caught previously. I did some refactoring and added a couple structs to make it easier to share test data between TestUnaryRoundArithmeticDecimal and the new TestBinaryRoundArithmeticDecimal. Those test cases use a constant `ndigits` for every row, but serve to verify that `round_binary` works as well as `round` if used in the same way. I also created an additional test `TestBinaryRoundArithmeticDecimal.RoundNDigitsArray` that covers most of the main edge cases with varying `ndigits` per row, since that is the unique functionality of the `round_binary` kernel vs. `round`.\n\n### Are these changes tested?\n\nYes. The new TestBinaryRoundArithmeticDecimal tests provide relatively extensive coverage of the `round_binary` kernel. I confirmed that they failed without the changes and passed with the fixes in place. There are a couple numbers included in the `TestBinaryRoundArithmeticDecimal.RoundNDigitsArray` test data that require the HALF_TO_ODD fix to be rounded correctly.\n\nBesides that, I ran the main Arrow C++ unit tests and Arrow compute tests to ensure they pass.\n\n### Are there any user-facing changes?\n\nNo user-facing changes.\n\n**This PR contains a \"Critical Fix\".** This PR fixes bugs in the decimal `round_binary` kernel and decimal HALF_TO_ODD rounding mode which cause incorrect data to be produced, even for the most common of inputs.\n\n* GitHub Issue: #50641\n\nLead-authored-by: Daniel Anderson \u003cdaniel@bodo.ai\u003e\nCo-authored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "94c1bec2133eeba155cbc8966bcc0f16f23a44d0",
      "tree": "ca8e23e9ec847f08ec29defa9a62b56c5e7d962d",
      "parents": [
        "986641ff8f869256b4c57bd6d34ad06d933655f2"
      ],
      "author": {
        "name": "tadeja",
        "email": "tadeja@users.noreply.github.com",
        "time": "Tue Jul 28 08:46:07 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 08:46:07 2026 +0200"
      },
      "message": "GH-50600: [Release][Python] Fix verification jobs after dropping Python 3.10 (#50649)\n\n### Rationale for this change\nCloses #50600\nSource verification jobs started failing after Python 3.10 support was dropped.\n\n- [Verify-rc conda python](https://github.com/ursacomputing/crossbow/actions/runs/30161259869/job/89686838514#step:5:2725) `/bin/sh: 1: _Python3_EXECUTABLE-NOTFOUND: not found`\n- [Verify-rc ubuntu integration](https://github.com/ursacomputing/crossbow/actions/runs/30161260140/job/89686839204#step:5:11494) `      Python \u003c 3.11 is not supported`\n- [Verify-rc ubuntu python](https://github.com/ursacomputing/crossbow/actions/runs/30161260003/job/89686838916#step:5:11258) `ERROR: Package \u0027pyarrow\u0027 requires a different Python: 3.10.12 not in \u0027\u003e\u003d3.11\u0027`\n\n### What changes are included in this PR?\n- Use conda-forge Python 3.12 for Ubuntu 22.04, remove Miniforge bootstrap after creating Python environment, and allow Ubuntu verification to skip system Python\n- Keep Python pinned during Conda dependency installation to avoid selecting free-threaded Python\n- Use Python 3.12 for Linux source verification jobs\n\n### Are these changes tested?\nYes, previously failing verify-rc jobs now pass.\n\n### Are there any user-facing changes?\nNo.\n* GitHub Issue: #50600\n\nAuthored-by: Tadeja Kadunc \u003ctadeja.kadunc@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "986641ff8f869256b4c57bd6d34ad06d933655f2",
      "tree": "08fd2aa0bb4bed2af8b36b54e220ff96d418bd17",
      "parents": [
        "5e698fe239251a41ef9bacf50602c62143ae1761"
      ],
      "author": {
        "name": "Hiroyuki Sato",
        "email": "hiroysato@gmail.com",
        "time": "Tue Jul 28 12:59:42 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 12:59:42 2026 +0900"
      },
      "message": "GH-50670: [Release][Dev] Fix only shellcheck SC2086 errors in the dev directory (#50671)\n\n### Rationale for this change\n\nThis is the sub issue #44748.\n\nFix only ShellCheck SC2086 errors in the dev directory.\n\n* SC2086: Double quote to prevent globbing and word splitting.\n\n```\nshellcheck dev/release/post-01-tag.sh\n\nIn dev/release/post-01-tag.sh line 34:\ngit tag -a ${release_tag} ${release_candidate_tag} -m \"[Release] Apache Arrow Release ${version}\"\n           ^------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n                          ^----------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\ngit tag -a \"${release_tag}\" \"${release_candidate_tag}\" -m \"[Release] Apache Arrow Release ${version}\"\n\nIn dev/release/post-01-tag.sh line 35:\ngit push upstream ${release_tag}\n                  ^------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\ngit push upstream \"${release_tag}\"\n\nFor more information:\n  https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...\n```\n\n### What changes are included in this PR?\n\n* SC2086: Quote variables.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50670\n\nAuthored-by: Hiroyuki Sato \u003chiroysato@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "5e698fe239251a41ef9bacf50602c62143ae1761",
      "tree": "fb3fa4e003bd97c3c45153c723774314842c98f5",
      "parents": [
        "d7d994c0be4893208b0e1d75d420cb99add450f8"
      ],
      "author": {
        "name": "Zehua Zou",
        "email": "zehuazou2000@gmail.com",
        "time": "Tue Jul 28 11:55:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 11:55:21 2026 +0800"
      },
      "message": "GH-35692: [C++][Parquet] Support to read fixed size list array with nulls (#50271)\n\n### Rationale for this change\n\nSupport to read fixed size list array with nulls.\n\n### What changes are included in this PR?\n\nModified `FixedSizeListReader` to add null slots to `FixedSizeList`.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nUser can read fixed size list array with nulls now.\n\nThis PR also fixes GH-35697.\n\n* GitHub Issue: #35692\n\nAuthored-by: Zehua Zou \u003czehuazou2000@gmail.com\u003e\nSigned-off-by: Gang Wu \u003custcwg@gmail.com\u003e"
    },
    {
      "commit": "d7d994c0be4893208b0e1d75d420cb99add450f8",
      "tree": "53f2a75ae82087299e7f211bd2a39414a4262bfe",
      "parents": [
        "bce71899e263a479a5a12ac818bca63b4aa6d237"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 28 09:23:07 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 09:23:07 2026 +0900"
      },
      "message": "MINOR: [CI] Bump actions/labeler from 6 to 7 (#50664)\n\nBumps [actions/labeler](https://github.com/actions/labeler) from 6 to 7.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/actions/labeler/releases\"\u003eactions/labeler\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch3\u003eEnhancements:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate to ESM and update dependencies by \u003ca href\u003d\"https://github.com/chiranjib-swain\"\u003e\u003ccode\u003e@​chiranjib-swain\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/labeler/pull/949\"\u003eactions/labeler#949\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/labeler/compare/v6...v7.0.0\"\u003ehttps://github.com/actions/labeler/compare/v6...v7.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove PR number validation and warning messages in input handling by \u003ca href\u003d\"https://github.com/chiranjib-swain\"\u003e\u003ccode\u003e@​chiranjib-swain\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/labeler/pull/939\"\u003eactions/labeler#939\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency Updates\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump js-yaml to 4.2.0, apply npm audit fix, and add undici override  by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/labeler/pull/943\"\u003eactions/labeler#943\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​typescript-eslint/eslint-plugin\u003c/code\u003e from 8.59.1 to 8.61.1 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/labeler/pull/942\"\u003eactions/labeler#942\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/labeler/compare/v6.1.0...v6.2.0\"\u003ehttps://github.com/actions/labeler/compare/v6.1.0...v6.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.1.0\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd changed-files-labels-limit and max-files-changed configuration options to cap the number of labels added by \u003ca href\u003d\"https://github.com/bluca\"\u003e\u003ccode\u003e@​bluca\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/labeler/pull/923\"\u003eactions/labeler#923\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove Labeler Action documentation and permission error handling by \u003ca href\u003d\"https://github.com/chiranjib-swain\"\u003e\u003ccode\u003e@​chiranjib-swain\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/labeler/pull/897\"\u003eactions/labeler#897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve manually added labels during workflow runs and refine label synchronization logic by \u003ca href\u003d\"https://github.com/chiranjib-swain\"\u003e\u003ccode\u003e@​chiranjib-swain\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/labeler/pull/917\"\u003eactions/labeler#917\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependency Updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade brace-expansion from 1.1.11 to 1.1.12 and document breaking changes in v6 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/labeler/pull/877\"\u003eactions/labeler#877\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade minimatch from 10.0.1 to 10.2.3 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/labeler/pull/926\"\u003eactions/labeler#926\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade dependencies (\u003ccode\u003e@​actions/core\u003c/code\u003e, \u003ccode\u003e@​actions/github\u003c/code\u003e, js-yaml, minimatch, \u003ca href\u003d\"https://github.com/typescript-eslint\"\u003e\u003ccode\u003e@​typescript-eslint\u003c/code\u003e\u003c/a\u003e) by \u003ca href\u003d\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/labeler/pull/934\"\u003eactions/labeler#934\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/chiranjib-swain\"\u003e\u003ccode\u003e@​chiranjib-swain\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href\u003d\"https://redirect.github.com/actions/labeler/pull/897\"\u003eactions/labeler#897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/bluca\"\u003e\u003ccode\u003e@​bluca\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href\u003d\"https://redirect.github.com/actions/labeler/pull/923\"\u003eactions/labeler#923\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href\u003d\"https://redirect.github.com/actions/labeler/pull/934\"\u003eactions/labeler#934\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/labeler/compare/v6...v6.1.0\"\u003ehttps://github.com/actions/labeler/compare/v6...v6.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade publish-action from 0.2.2 to 0.4.0 by \u003ca href\u003d\"https://github.com/aparnajyothi-y\"\u003e\u003ccode\u003e@​aparnajyothi-y\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/labeler/pull/901\"\u003eactions/labeler#901\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/aparnajyothi-y\"\u003e\u003ccode\u003e@​aparnajyothi-y\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href\u003d\"https://redirect.github.com/actions/labeler/pull/901\"\u003eactions/labeler#901\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/labeler/compare/v6.0.0...v6.0.1\"\u003ehttps://github.com/actions/labeler/compare/v6.0.0...v6.0.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/labeler/commit/bf12e9b00b37c5c0ca2b87b79b2daf7891dbda13\"\u003e\u003ccode\u003ebf12e9b\u003c/code\u003e\u003c/a\u003e feat: migrate to ESM and update dependencies (\u003ca href\u003d\"https://redirect.github.com/actions/labeler/issues/949\"\u003e#949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href\u003d\"https://github.com/actions/labeler/compare/v6...v7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dactions/labeler\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d6\u0026new-version\u003d7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t alter it yourself. You can also trigger a rebase manually by commenting `@ dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@ dependabot rebase` will rebase this PR\n- `@ dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@ dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@ dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@ dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@ dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\u003c/details\u003e\n\nAuthored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "bce71899e263a479a5a12ac818bca63b4aa6d237",
      "tree": "1124a6700efaee1380d3998e885e3164bfa12f27",
      "parents": [
        "974c3fc1a772eccc85bd3500bad8573a57ff5089"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 28 09:22:42 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 09:22:42 2026 +0900"
      },
      "message": "MINOR: [CI] Bump docker/login-action from 4.4.0 to 4.5.1 (#50663)\n\nBumps [docker/login-action](https://github.com/docker/login-action) from 4.4.0 to 4.5.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/docker/login-action/releases\"\u003edocker/login-action\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.5.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003edhi.io\u003c/code\u003e as Docker Hub OIDC registry by \u003ca href\u003d\"https://github.com/crazy-max\"\u003e\u003ccode\u003e@​crazy-max\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/1054\"\u003edocker/login-action#1054\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/docker/login-action/compare/v4.5.0...v4.5.1\"\u003ehttps://github.com/docker/login-action/compare/v4.5.0...v4.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.5.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action#docker-hub\"\u003eDocker Hub OIDC\u003c/a\u003e login support by \u003ca href\u003d\"https://github.com/crazy-max\"\u003e\u003ccode\u003e@​crazy-max\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/1048\"\u003edocker/login-action#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​aws-sdk/client-ecr\u003c/code\u003e and \u003ccode\u003e@​aws-sdk/client-ecr-public\u003c/code\u003e to 3.1091.0 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/1037\"\u003edocker/login-action#1037\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​docker/actions-toolkit\u003c/code\u003e from 0.92.0 to 0.94.0 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/1044\"\u003edocker/login-action#1044\u003c/a\u003e \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/1050\"\u003edocker/login-action#1050\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump brace-expansion from 1.1.13 to 1.1.16 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/1046\"\u003edocker/login-action#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump js-yaml from 5.2.0 to 5.2.1 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/1038\"\u003edocker/login-action#1038\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/docker/login-action/compare/v4.4.0...v4.5.0\"\u003ehttps://github.com/docker/login-action/compare/v4.4.0...v4.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/abd2ef45e78c5afb21d64d4ca52ee8550d9572c7\"\u003e\u003ccode\u003eabd2ef4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/1055\"\u003e#1055\u003c/a\u003e from crazy-max/test-registry-auth-oidc\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/d49d3a9839fef51322fa44989a44fdc43fccfc22\"\u003e\u003ccode\u003ed49d3a9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/1054\"\u003e#1054\u003c/a\u003e from crazy-max/oidc-missing-dhi\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/b58b17c30b4db92a4ed049b213cae512b12e460b\"\u003e\u003ccode\u003eb58b17c\u003c/code\u003e\u003c/a\u003e test: cover Docker Hub OIDC with registry-auth\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/be646c21cec26cea303e29290d5f6ba6fde8e606\"\u003e\u003ccode\u003ebe646c2\u003c/code\u003e\u003c/a\u003e chore: update generated content\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/d77c059cb9956cedaa427dc022d89f39acba678f\"\u003e\u003ccode\u003ed77c059\u003c/code\u003e\u003c/a\u003e support dhi.io as Docker Hub OIDC registry\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/06fb636fac595d6fb4b28a5dfcb21a6f5091859c\"\u003e\u003ccode\u003e06fb636\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/1037\"\u003e#1037\u003c/a\u003e from docker/dependabot/npm_and_yarn/aws-sdk-dependen...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/a8bc9539118a762b0e5788b53a50907977cc1b8d\"\u003e\u003ccode\u003ea8bc953\u003c/code\u003e\u003c/a\u003e [dependabot skip] chore: update generated content\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/f54b9019bf5074f6e3480a3ac4b834f5f4b90aab\"\u003e\u003ccode\u003ef54b901\u003c/code\u003e\u003c/a\u003e build(deps): bump the aws-sdk-dependencies group across 1 directory with 2 up...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/77f18f6713512f90ac35aaf21db0d3710f1b85a6\"\u003e\u003ccode\u003e77f18f6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/1049\"\u003e#1049\u003c/a\u003e from docker/dependabot/github_actions/codeql-actions...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/ec0bf287fb1e2e051c56b2f6e6a3eed487b9fe52\"\u003e\u003ccode\u003eec0bf28\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/1050\"\u003e#1050\u003c/a\u003e from docker/dependabot/npm_and_yarn/docker/actions-t...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href\u003d\"https://github.com/docker/login-action/compare/af1e73f918a031802d376d3c8bbc3fe56130a9b0...abd2ef45e78c5afb21d64d4ca52ee8550d9572c7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003ddocker/login-action\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d4.4.0\u0026new-version\u003d4.5.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t alter it yourself. You can also trigger a rebase manually by commenting `@ dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@ dependabot rebase` will rebase this PR\n- `@ dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@ dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@ dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@ dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@ dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\u003c/details\u003e\n\nAuthored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "974c3fc1a772eccc85bd3500bad8573a57ff5089",
      "tree": "a11896d4c9365105c5ac46492b9863e078bbaf8c",
      "parents": [
        "9c37a70022e30b219a7688f1aece585fecf63d78"
      ],
      "author": {
        "name": "Rossi Sun",
        "email": "zanmato1984@gmail.com",
        "time": "Mon Jul 27 11:31:51 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 11:31:51 2026 -0700"
      },
      "message": "GH-50624: [C++][Compute] Tighten case_when exact dispatch for parameterized types (#50625)\n\n### Rationale for this change\n\n`case_when` exact dispatch was too permissive for parameterized value types. When the value arguments were registered by type id only, `DispatchExact` could incorrectly accept incompatible concrete types and return successful but corrupted results instead of failing or falling back to `DispatchBest`.\n\nThis fixes #50624.\n\n### What changes are included in this PR?\n\n- rename the case_when exact-match helper to `AllValueTypesMatchConstraint()` to make its intent explicit\n- apply the same exact-match constraint across case_when value kernels so exact dispatch only accepts identical value `DataType`s\n- add regression coverage for mismatched parameterized value types, including `fixed_size_binary`, `list`, `fixed_size_list`, `struct`, and dictionary exact-dispatch mismatches\n\n### Are these changes tested?\n\nYes.\n\nThis PR extends `TestCaseWhen.DispatchExact` and adds `TestCaseWhen.ParameterizedValueTypeMismatch`. I also ran targeted `arrow-compute-scalar-if-else-test` coverage for:\n\n- `TestCaseWhen.DispatchExact`\n- `TestCaseWhen.DispatchBest`\n- `TestCaseWhen.ParameterizedValueTypeMismatch`\n\n### Are there any user-facing changes?\n\nYes.\n\n`case_when` now rejects incompatible parameterized value types that previously could be incorrectly exact-dispatched, which could lead to corrupted results.\n\n**This PR contains a \"Critical Fix\".** It fixes a bug where `case_when` could return successful but corrupted results for incompatible parameterized value types.\n\n* GitHub Issue: #50624\n\nAuthored-by: Rossi Sun \u003czanmato1984@gmail.com\u003e\nSigned-off-by: Rossi Sun \u003czanmato1984@gmail.com\u003e"
    },
    {
      "commit": "9c37a70022e30b219a7688f1aece585fecf63d78",
      "tree": "942f2f992668148e3879f1c7d6e89b5d2deee934",
      "parents": [
        "374db36347664a38d074d26d28d81ddf1fbd7593"
      ],
      "author": {
        "name": "Mohamed mahmoud",
        "email": "moamenhamous@gmail.com",
        "time": "Mon Jul 27 17:41:54 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:41:54 2026 +0200"
      },
      "message": "GH-50508: [C++] Support scalar values in AppendScalars (#50584)\n\n# Rationale for this change\n\n`RunEndEncodedBuilder::AppendScalar` accepts regular scalar values, such as `float32` directly. However, `RunEndEncodedBuilder::AppendScalars` only handled `RunEndEncodedScalar` values.\n\nThis made the two APIs inconsistent. This PR updates `AppendScalars` to support regular scalar values consistently with `AppendScalar`.\n\n# What changes are included in this PR?\n\n- Updated `RunEndEncodedBuilder::AppendScalars`   to process each scalar through `AppendScalar`.\n- Added tests covering regular scalar values and nested `RunEndEncodedScalar` values.\n- Added tests verifying the expected run ends and values.\n\n# Are these changes tested?\n\nYes. The relevant Run-End Encoded tests pass successfully.\n\n# Are there any user-facing changes?\n\nYes. `RunEndEncodedBuilder::AppendScalars` now accepts regular scalar values, such as `float32`, consistently with `AppendScalar`.\n\n# Breaking changes\n\nNo\n\n# Critical Fix\n\nNo.\n* GitHub Issue: #50508\n\nAuthored-by: Moemen Mahmoud \u003cmoamenhamous@gmail.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "374db36347664a38d074d26d28d81ddf1fbd7593",
      "tree": "8d8c1679f341d5f2b453b74a61375a65ce26d5a2",
      "parents": [
        "eb19b7fce7dd33af4e224acb8873797ec2675cc1"
      ],
      "author": {
        "name": "Antoine Pitrou",
        "email": "antoine@python.org",
        "time": "Mon Jul 27 11:43:36 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 11:43:36 2026 +0200"
      },
      "message": "GH-50615: [C++] Reduce code generation for string kernels (#50616)\n\n### Rationale for this change\n\nSome string kernels are generated twice for the corresponding binary and string type (for example binary/utf8, large_binary, large_utf8). Most of the time we can cut down on the code duplication to reduce compile times and binary size slightly.\n\n### What changes are included in this PR?\n\nOnly instantiate string kernels for base binary types, not the string derived types.\n\nThis makes `libarrow_compute` somehow smaller on my system:\n\n* before:\n```console\n$ size `find /build/ -name libarrow_compute.so.2600.0.0`\n   text    data     bss     dec     hex filename\n13551567         113096   46432 13711095         d136f7 /build/build-release/relwithdebinfo/libarrow_compute.so.2600.0.0\n```\n* after:\n```console\n$ size `find /build/ -name libarrow_compute.so.2600.0.0`\n   text    data     bss     dec     hex filename\n13363474         112128   44968 13520570         ce4eba /build/build-release/relwithdebinfo/libarrow_compute.so.2600.0.0\n```\n\n### Are these changes tested?\n\nYes, including additional tests to check that utf8-ness of the input is still propagated correctly.\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #50615\n\nAuthored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "eb19b7fce7dd33af4e224acb8873797ec2675cc1",
      "tree": "81ea37af3e470fa27e8feebfcc7b3ee1d284e40b",
      "parents": [
        "cc90e40e5703f13ef1e38dd728eda93961d336d6"
      ],
      "author": {
        "name": "Guja",
        "email": "127162872+GujaLomsadze@users.noreply.github.com",
        "time": "Mon Jul 27 11:28:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 11:28:57 2026 +0200"
      },
      "message": "GH-49046: [Dev][Python] Remove unused scripts under python/scripts (#50640)\n\n### Rationale for this change\n\nResolves #49046\n\n`python/scripts/test_imports.py` and `python/scripts/test_leak.py` are leftovers from an older\ntest layout. They are not referenced by CI, packaging or the pytest suite, and are not\ndocumented anywhere. Their `test_`-prefixed names have also caused accidental pytest collection\nin the past (ARROW-1033). This follows the suggestion on the issue to remove them.\n\nDeletes `python/scripts/test_imports.py` and `python/scripts/test_leak.py`.\n\nThe other two scripts in that directory are untouched and still in use:\n`run_emscripten_tests.py` (invoked from `ci/scripts/python_test_emscripten.sh`) and\n`update_stub_docstrings.py`.\n\nThe issue description raised the option of keeping `test_leak.py` as a documented snippet for\nchecking leaks. This PR removes it, following the later comment. Happy to restore and document\nit under the developer docs instead if reviewers prefer.\n\n### Are these changes tested?\n\nNo new tests, this only removes files that nothing references. I grepped `ci/`, `dev/`,\n`python/setup.py`, `python/pyproject.toml` and `python/MANIFEST.in` for references and found\nnone. The only remaining mention in the repository is a historical `CHANGELOG.md` entry for\nARROW-1033, left as is.\n\n### Are there any user-facing changes?\n\nNo.\n\n### AI usage disclosure\n\nI used Claude Code to grep the repository for remaining references to the two scripts and to\nhelp draft this description. The change itself is a two file deletion, and I reviewed both the\nsearch results and the diff.\n* GitHub Issue: #49046\n\nAuthored-by: Guja \u003c127162872+GujaLomsadze@users.noreply.github.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "cc90e40e5703f13ef1e38dd728eda93961d336d6",
      "tree": "ee1ad3d1bef574215d94bfdb98b376f978cd1a35",
      "parents": [
        "9a8b20095a9e99dc93c6d0bae24172c25b1dd977"
      ],
      "author": {
        "name": "Aaditya Srinivasan",
        "email": "156181482+Reranko05@users.noreply.github.com",
        "time": "Sat Jul 25 18:45:41 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 22:15:41 2026 +0900"
      },
      "message": "GH-50631: [C++] Scope macOS SDK 11.3 simdjson workaround to bundled simdjson (#50633)\n\n### Rationale for this change\n\nThe workaround introduced for the macOS 11.3 SDK currently uses a global `add_compile_definitions(SIMDJSON_CONCEPT_DISABLED\u003d1)`.\n\nSince this workaround is only needed when building the bundled simdjson dependency, scope it to the `simdjson` target inside `build_simdjson()` instead of applying it globally.\n\n### What changes are included in this PR?\n\n- Move the macOS SDK 11.3 workaround into `build_simdjson()`.\n- Replace the global `add_compile_definitions()` with `target_compile_definitions(simdjson PUBLIC SIMDJSON_CONCEPT_DISABLED\u003d1)`.\n\n* GitHub Issue: #50631\n\nAuthored-by: Aaditya Srinivasan \u003caadityasri03@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "9a8b20095a9e99dc93c6d0bae24172c25b1dd977",
      "tree": "095b268a7775fc0bbadac95464a0b7bdca79ffa8",
      "parents": [
        "62d2dd8270a303165a5f57de97c20aa1fe09f161"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Sat Jul 25 06:52:51 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 06:52:51 2026 +0900"
      },
      "message": "GH-50519: [C++][FlightRPC][ODBC] Add missing `ARROW_FLIGHT_SQL_ODBC_INSTALLER` option entry (#50520)\n\n### Rationale for this change\n\nWe must define options explicitly.\n\n### What changes are included in this PR?\n\n* Add `ARROW_FLIGHT_SQL_ODBC_INSTALLER` to `DefineOptions.cmake`\n* Don\u0027t enable `ARROW_FLIGHT_SQL_ODBC_INSTALLER` by default in `features-maximal` preset because it\u0027s available only on Windows and macOS\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nYes.\n* GitHub Issue: #50519\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "62d2dd8270a303165a5f57de97c20aa1fe09f161",
      "tree": "0a8a571855e723b48fe97050ae0caaed05e6e2f3",
      "parents": [
        "6efe7b3833d3e2ec5115bbe5362791100e46323b"
      ],
      "author": {
        "name": "Aaditya Srinivasan",
        "email": "156181482+Reranko05@users.noreply.github.com",
        "time": "Fri Jul 24 22:21:01 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 18:51:01 2026 +0200"
      },
      "message": "GH-50581: [C++][R] Use bundled simdjson for C++ wrapper builds (#50587)\n\n### Rationale\n\nThe R build may pick up a system-installed simdjson when `simdjson_SOURCE` is not explicitly set. This causes build failures in environments where the system version is incompatible or unsuitable for the build.\n\n### What changes are included?\n\nThis change defaults `simdjson_SOURCE` to `BUNDLED` when it is not already set, ensuring C++ wrapper builds invoked through `build_arrow_static.sh` use the bundled simdjson by default, while still allowing users to override it explicitly.\n\nThis addresses the macOS CRAN release and ubuntu-r-only-r (AUTO deps) failures reported in GH-50581.\n\nRelated: #50581 \n* GitHub Issue: #50581\n\nAuthored-by: Aaditya Srinivasan \u003caadityasri03@gmail.com\u003e\nSigned-off-by: Rok Mihevc \u003crok@mihevc.org\u003e"
    },
    {
      "commit": "6efe7b3833d3e2ec5115bbe5362791100e46323b",
      "tree": "6a2d371efcb3f7cd60d29d732f3c79fd5f05578a",
      "parents": [
        "24823829e0e0378a08cbb1a3292573c97e56fda3"
      ],
      "author": {
        "name": "Hiroyuki Sato",
        "email": "hiroysato@gmail.com",
        "time": "Fri Jul 24 21:33:07 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:33:07 2026 +0200"
      },
      "message": "GH-47402: [CI][Dev] Fix shellcheck errors in the ci/scripts/python_test_emscripten.sh (#47403)\n\n### Rationale for this change\n\nThis is the sub issue #44748.\n\n* SC2086: Double quote to prevent globbing and word splitting\n* SC2012: Use find instead of ls to better handle non-alphanumeric filenames\n\n```\nshellcheck ci/scripts/python_test_emscripten.sh\n\nIn ci/scripts/python_test_emscripten.sh line 28:\ncd ${build_dir}\n   ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\ncd \"${build_dir}\"\n\nIn ci/scripts/python_test_emscripten.sh line 31:\npyodide_wheel\u003d$(ls -t dist/pyarrow*.whl | head -1)\n                ^---------------------^ SC2012 (info): Use find instead of ls to better handle non-alphanumeric filenames.\n\nIn ci/scripts/python_test_emscripten.sh line 34:\npython scripts/run_emscripten_tests.py ${pyodide_wheel} --dist-dir\u003d${pyodide_dist_dir} --runtime\u003dnode\n                                       ^--------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n                                                                   ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\npython scripts/run_emscripten_tests.py \"${pyodide_wheel}\" --dist-dir\u003d\"${pyodide_dist_dir}\" --runtime\u003dnode\n\nIn ci/scripts/python_test_emscripten.sh line 37:\npython scripts/run_emscripten_tests.py ${pyodide_wheel} --dist-dir\u003d${pyodide_dist_dir} --runtime\u003dchrome\n                                       ^--------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n                                                                   ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\npython scripts/run_emscripten_tests.py \"${pyodide_wheel}\" --dist-dir\u003d\"${pyodide_dist_dir}\" --runtime\u003dchrome\n\nFor more information:\n  https://www.shellcheck.net/wiki/SC2012 -- Use find instead of ls to better ...\n  https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...\n```\n\n### What changes are included in this PR?\n\n* SC2086: Quote variables.\n* SC2012: skip shellcheck.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #47402\n\nAuthored-by: Hiroyuki Sato \u003chiroysato@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "24823829e0e0378a08cbb1a3292573c97e56fda3",
      "tree": "e0bbe5ad6f9cb959f6c1d789ad653b5c7aec9416",
      "parents": [
        "5a0b57aac5d6953601cbf86e5094ea0781691a35"
      ],
      "author": {
        "name": "tadeja",
        "email": "tadeja@users.noreply.github.com",
        "time": "Fri Jul 24 10:59:29 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 10:59:29 2026 +0200"
      },
      "message": "GH-50597: [CI] Retry Chrome PyArrow load and fix Snappy Emscripten configure (#50598)\n\n### Rationale for this change\nFix #50597. Nightly Crossbow job `test-conda-python-emscripten` sometimes finishes with success like [2026-07-18 Docker Test conda-python-emscripten](https://github.com/ursacomputing/crossbow/actions/runs/29628907267/job/88038728709#step:6:7261)\n\nBut often hangs like [2026-07-19 Docker Test conda-python-emscripten](https://github.com/ursacomputing/crossbow/actions/runs/29672419322/job/88153721397#step:6:6851)\nand [2026-07-20 Docker Test conda-python-emscripten](https://github.com/ursacomputing/crossbow/actions/runs/29715959996/job/88269203693#step:6:6846)\n```\n    driver.load_arrow()\n...\nselenium.common.exceptions.TimeoutException: Message: script timeout\n```\n\nAdditionally, main nightly started failing during `snappy_ep` configure with CMake 4.4: `CMake Error: The warning category \"linkflags\" is not known.`\n\n### What changes are included in this PR?\nimport `TimeoutException`, introduce 300s timeout + 3 attempts around load_arrow() and full Chrome restart on timeout,\nignore harmless `BrokenPipeError` / `ConnectionResetError` when Chrome has to be killed mid-download for retry.\n\nAlso remove the redundant standalone `-Wno-error\u003dlinkflags` CMake argument from Snappy\u0027s Emscripten configure arguments. The flag remains in `CMAKE_SHARED_LINKER_FLAGS`\n\n### Are these changes tested?\nYes, locally by `docker compose run --rm -e SETUPTOOLS_SCM_PRETEND_VERSION\u003d26.0.0.dev0  conda-python-emscripten`.\nExample test run hit the PyArrow load timeout once, restarted Chrome, and then completed successfully.\n\n### Are there any user-facing changes?\nNo.\n* GitHub Issue: #50597\n\nAuthored-by: Tadeja Kadunc \u003ctadeja.kadunc@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "5a0b57aac5d6953601cbf86e5094ea0781691a35",
      "tree": "21b2983da7ce4f11d46b775e04dee119b66b0621",
      "parents": [
        "aa78eb89733134c4a8db8b5840960676f96df103"
      ],
      "author": {
        "name": "Aaditya Srinivasan",
        "email": "156181482+Reranko05@users.noreply.github.com",
        "time": "Fri Jul 24 14:12:59 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 17:42:59 2026 +0900"
      },
      "message": "GH-50565: [CI][C++] Add a JNI Windows CI job (#50606)\n\n### Rationale\n\nThis adds a Windows CI job for the JNI build configuration, following the existing Linux and macOS JNI CI jobs. The new job uses a dedicated CMake preset to match the build options used by the Windows JNI build.\n\n### What changes are included?\n\n- Add a `ninja-release-jni-windows` CMake preset.\n- Add a `jni-windows` job to `cpp_extra.yml`.\n\n* GitHub Issue: #50565\n\nAuthored-by: Aaditya Srinivasan \u003caadityasri03@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "aa78eb89733134c4a8db8b5840960676f96df103",
      "tree": "ea94ac1f374655fe0d143b1e903ee636478d131e",
      "parents": [
        "6287272f39b8ebef02ca3ec8cf51650e4b240231"
      ],
      "author": {
        "name": "Zehua Zou",
        "email": "zehuazou2000@gmail.com",
        "time": "Fri Jul 24 00:34:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 18:34:31 2026 +0200"
      },
      "message": "GH-50280: [C++] Implement VisitTwoBitRuns and VisitTwoSetBitRuns methods (#50281)\n\n### Rationale for this change\n\nWe already have `VisitTwoBitBlocks` which can iterate over two bitmaps simultaneously. But there is no mirror code about `BitRunReader` and `SetBitRunReader`.\n\n### What changes are included in this PR?\n\nImplement `VisitTwoBitRuns` and `VisitTwoSetBitRuns` methods and refactor `VisitTwoBitBlocks` in `GroupedPivotAccumulator` as examples.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50280\n\nLead-authored-by: Zehua Zou \u003czehuazou2000@gmail.com\u003e\nCo-authored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "6287272f39b8ebef02ca3ec8cf51650e4b240231",
      "tree": "b039dca090f36e46cffe73297401a95c9cca34fd",
      "parents": [
        "06c336af2150c8e69f06618902171d09f0ba6a83"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Thu Jul 23 10:28:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 10:28:47 2026 +0200"
      },
      "message": "GH-50464: [C++][Python] Simplify arrow_to_pandas DateOffset handling for nanoseconds/milliseconds (#50465)\n\n### Rationale for this change\n\nPandas 1.4 fixed the following:\n- https://github.com/pandas-dev/pandas/issues/43892\n\nWhich made us special case microseconds extracting those from our `MonthDayNano` and manually building `microseconds`.\n\n`DateOffset` can be created with the following:\n```python\nDateOffset(years\u003d1, months\u003d1,\n                   days\u003d1, seconds\u003d1, microseconds\u003d1,\n                   minutes\u003d1, hours\u003d1, weeks\u003d1, nanoseconds\u003d1)\n```\nWe currently only roundtrip Month, Day, Microseconds and Nano due to our MonthDayNano data type. We special cased microseconds but we were not special casing years, seconds, minutos, hours or weeks.\n\nAs the initial issue that made us special case has been solved upstream we can stop roundtripping microseconds and just return nanoseconds simplifying our codebase.\n\n### What changes are included in this PR?\n\nRemove the unnecessary code to retrieve microseconds from nanoseconds.\nUpdate test as microseconds won\u0027t be returned, only nanoseconds.\n\n### Are these changes tested?\n\nYes via CI\n\n### Are there any user-facing changes?\n\nYes, this is a change of the UX.\n\n* GitHub Issue: #50464\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "06c336af2150c8e69f06618902171d09f0ba6a83",
      "tree": "d1efb26797952a9dc40863883e6a61b20d6d1a83",
      "parents": [
        "10cf43bee644ec002d03f1eda5b5a91051b467cc"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Thu Jul 23 11:42:41 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 11:42:41 2026 +0900"
      },
      "message": "GH-50572: [Ruby] Add `ArrowFormat::RecordBatch#records` (#50590)\n\n### Rationale for this change\n\nIt\u0027s a convenient API to get values as Ruby objects.\n\n### What changes are included in this PR?\n\n* Add `ArrowFormat::RecordBatch#records`\n* Add `ArrowFormat::RecordBatch#each_record`\n* Add `ArrowFormat::Record`\n* Add `ArrowFormat::RecordBatch#find_column`\n* Add `ArrowFormat::Schema#[]`\n* Ensure using `String` for `ArrowFormat::Field#name`\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nYes.\n* GitHub Issue: #50572\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "10cf43bee644ec002d03f1eda5b5a91051b467cc",
      "tree": "4e9793e09dc4dfc0570f27585f822aaa32658c8b",
      "parents": [
        "0083d11f61446ee57c260ce1af5e2a39ac745d48"
      ],
      "author": {
        "name": "Guja",
        "email": "127162872+GujaLomsadze@users.noreply.github.com",
        "time": "Wed Jul 22 23:14:24 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 23:14:24 2026 +0200"
      },
      "message": "GH-50579: [Python] Fix test_categorical_order_survives_roundtrip pandas 3.X deprecation (#50608)\n\n### Rationale for this change\nFollow-up to #50543. `test_categorical_order_survives_roundtrip` constructs a\n`pd.Categorical` with value \"a\" not in categories `[\"b\",\"c\",\"d\"]`. pandas 3.0.3\nraises a deprecation for out-of-category values, which #50543\u0027s filterwarnings\nconfig now turns into an error - failing nightly wheels across platforms.\n\n### What changes are included in this PR?\nReplace the out-of-category `\"a\"` value with an explicit `None`, preserving the\ntest\u0027s intent (ordered categorical with non-sorted categories survives a Parquet\nroundtrip, ARROW-6302) plus a null.\n\n### Are these changes tested?\nYes. Reproduced the failure with pandas 3.0.3, confirmed the test passes after\nthe change; all categorical tests in the module pass.\n\n### Are there any user-facing changes?\nNo.\n\nCloses #50579.\n* GitHub Issue: #50579\n\nAuthored-by: Guja \u003c127162872+GujaLomsadze@users.noreply.github.com\u003e\nSigned-off-by: Rok Mihevc \u003crok@mihevc.org\u003e"
    },
    {
      "commit": "0083d11f61446ee57c260ce1af5e2a39ac745d48",
      "tree": "4c51c117322d550b7e3e6d4a3e371dc23f3f85f2",
      "parents": [
        "3d771d0889e7e5df7f4d000fcfba8ca6c1b3d39e"
      ],
      "author": {
        "name": "Liang-Chi Hsieh",
        "email": "liangchi.hsieh@databricks.com",
        "time": "Thu Jul 23 00:15:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 18:15:05 2026 +0200"
      },
      "message": "GH-50326: [Python] Convert arrays to Python objects without per-element Scalars in to_pylist (#50327)\n\n### Rationale for this change\n\n`pa.Array.to_pylist()` converts one element at a time through `Array::GetScalar` plus a Python `Scalar` wrapper; for list types each row additionally allocates a Python `Array` wrapper for the row\u0027s values slice and a fresh generator before recursing per element. A `sample` profile shows ~20% of runtime in CPython GC (triggered by the per-row GC-tracked allocations), ~25% in `GetScalar`, and only ~7% doing the useful work of creating the output objects — making `to_pylist` several times slower than converting via `to_pandas()` and back, and ~24x slower than `ndarray.tolist()` for plain int64. Details in #50326; this hit Apache Spark\u0027s Arrow-serialized Python UDFs (apache/spark#56940, apache/spark#56943).\n\n### What changes are included in this PR?\n\nFollowing review feedback, this adds a general scalar-free conversion mechanism instead of per-type `to_pylist` overrides:\n\n- `Array` gains `cdef object _getitem_py(self, int64_t i)`, returning `self[i]` as a Python object. The base implementation is `GetScalar` + `Scalar.as_py`, so any type without a specialization behaves exactly as today (dates, times, timestamps, durations, decimals, dictionary, extension, unions, views, ...).\n- The baseline `Array.to_pylist` becomes a single loop over `_getitem_py`. `maps_as_pydicts !\u003d None` keeps the Scalar-based path, since map→dict conversion has per-entry duplicate-key semantics.\n- Specializations avoid all per-element Scalar and per-row Array-wrapper allocation:\n  - integers and floats (a `type_id` switch on `NumericArray`; date/time/timestamp subclasses fall through to the exact base),\n  - boolean,\n  - string/binary and large variants (`GetValue` + `PyUnicode_DecodeUTF8` / `PyBytes_FromStringAndSize`, matching `str(buf, \u0027utf8\u0027)` / `to_pybytes()` exactly),\n  - list/large_list/fixed_size_list (each row\u0027s list is built from the child\u0027s `_getitem_py` over the offset range; the wrapped child is cached on the parent array),\n  - map (association list of key/value tuples, matching `MapScalar.as_py`),\n  - struct (one dict per row; duplicate field names fall back to the Scalar path so they raise `ValueError` like `StructScalar.as_py`).\n\nNested types compose without any per-row wrappers. `ChunkedArray.to_pylist`, `Table.to_pylist` and `ListScalar.as_py` delegate here and speed up automatically. Follow-up candidates: string/binary views, run-end-encoded, dictionary, a fast path for date32.\n\nBenchmarks (macOS arm64, M4 Max):\n\n| benchmark | before | after | speedup |\n|---|---|---|---|\n| flat `int64` with nulls (4M) | 0.39 s | 0.028 s | 14x (~7 ns/element, on par with `ndarray.tolist`) |\n| flat `string` (4M) | 0.83 s | 0.06 s | 14x |\n| `list\u003cstring\u003e` (2M rows) | 1.93 s | 0.46 s | 4.2x |\n| `list\u003clist\u003cint32\u003e\u003e` (1M rows) | 2.10 s | 0.40 s | 5.2x |\n| `struct\u003cint64,string\u003e` (1M rows) | 0.91 s | 0.07 s | 13x |\n| `map\u003cstring,int64\u003e` (1M rows) | 2.77 s | 0.74 s | 3.8x |\n\n### Are these changes tested?\n\n`test_to_pylist_bulk_paths` (added here) compares against the per-scalar conversion with exact element types for representative arrays including sliced views. Additionally verified with a randomized differential test against `[x.as_py() for x in arr]` with exact-type equality: all integer widths (incl. values beyond 2^62), floats (NaN/inf), boolean, string/binary (+large, multibyte), all list kinds, nested lists, struct (incl. empty struct, duplicate-field-name `ValueError`), map (incl. strict-mode duplicate-key `KeyError`), dictionary/null fallbacks, sliced/chunked arrays, and both `maps_as_pydicts` modes — no differences. `pytest test_array.py test_scalars.py test_convert_builtin.py test_table.py test_types.py`: 1295 passed.\n\n### Are there any user-facing changes?\n\nNo behavior changes, only performance.\n\n* GitHub Issue: #50326\n\nThis pull request and its description were written by Isaac.\n\nLead-authored-by: Liang-Chi Hsieh \u003cliangchi.hsieh@databricks.com\u003e\nCo-authored-by: Isaac\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "3d771d0889e7e5df7f4d000fcfba8ca6c1b3d39e",
      "tree": "9db9ee3f95dd51a01f4582c5bf3642fece73bb72",
      "parents": [
        "0973268900da96c5825dd1bb6245dafc901d1ecc"
      ],
      "author": {
        "name": "Hanna Weissberg",
        "email": "93118219+HannaWeissberg@users.noreply.github.com",
        "time": "Wed Jul 22 09:13:24 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 16:13:24 2026 +0200"
      },
      "message": "GH-50481: [C++] Fix CSV reader mis-parsing rows with an embedded NUL byte (#50483)\n\n### Rationale for this change\n\nFixes #50481. `arrow::csv::TableReader`/`BlockParser` can silently mis-split a row when a text field contains an embedded NUL (`0x00`) byte, once the reader has processed enough data to switch into its SIMD \"bulk filter\" scanning path.\n\n### What changes are included in this PR?\n\n`SSE42Filter::Matches` (`cpp/src/arrow/csv/lexing_internal.h`) uses `_mm_cmpistrc`, an **implicit-length** SSE4.2 string-compare intrinsic that treats `0x00` as a terminator in both operands. Since the caller feeds it 8 raw CSV bytes at a time, a real quote/comma/newline sharing an 8-byte word with an embedded NUL becomes invisible to the filter — `RunBulkFilter` then trusts the filter\u0027s \"no special chars\" answer and bulk-copies the whole word, silently swallowing the structural character.\n\nAn initial version of this fix switched to the explicit-length `_mm_cmpestrc`, passing the true length of each operand instead of relying on NUL-termination. However, this proves to yield massive performance regressions on some CPUs (for example, some CSV parsing benchmarks became 2x slower on an AMD Zen 2 CPU). This is corroborated by the instruction timing from [Agner Fog\u0027s instruction tables](www.agner.org/optimize/instruction_tables.pdf).\n\nThe final version of the fix instead checks for NUL bytes in an entire block. This can be done very quickly using `memchr` (which is typically vectorized on modern libc\u0027s). Since most real-world CSV files don\u0027t have embedded NUL bytes, the SIMD bulk filter optimization will most of the time still be enabled.\n\n### Are these changes tested?\n\nYes, using new regression tests that reproduce the exact trigger.\n\n### Are there any user-facing changes?\n\nNo, just a bugfix.\n\n---\n\nThis PR (fix, test, and description) was AI-generated (Claude), under human review and local verification described above.\n* GitHub Issue: #50481\n\nLead-authored-by: hanna \u003cifp@qlik.com\u003e\nCo-authored-by: Hanna Weissberg \u003c93118219+HannaWeissberg@users.noreply.github.com\u003e\nCo-authored-by: Antoine Pitrou \u003cpitrou@free.fr\u003e\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "0973268900da96c5825dd1bb6245dafc901d1ecc",
      "tree": "3ce1cbc71b1435c62213934a0c5c9974d62e1741",
      "parents": [
        "826ac37440f0247769de1977e06956d49e710e05"
      ],
      "author": {
        "name": "Alexander Taepper",
        "email": "alexander.taepper@gmail.com",
        "time": "Wed Jul 22 14:50:21 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 14:50:21 2026 +0200"
      },
      "message": "GH-50601: [C++] Refactor TranslateTo for clearer semantics (#50602)\n\n### Rationale for this change\n\nFollow-up to #50247 \n\n`GenericNullLikePartition::TranslateTo` translates a partition result from a source range to a target range. This includes pointer arithmetic and does not allow bounds checking for the source and target range, as only the range starts are given. Ideally, we want to pass the entire source and target range to the function, which will allow us to both validate sizes, guarantee that the correct source range is passed, and the resulting `GenericNullLikePartition` will point into the target range.\n\n### What changes are included in this PR?\n\nAdditional refactor for `GenericNullLikePartition::TranslateTo`, that now allows more `DCHECK`s. Each caller already had a `std::span` object for both source and target, which is now passed in directly.\n\n### Are these changes tested?\n\nRe-ran existing test-suite.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50601\n\nAuthored-by: Alexander Taepper \u003calexander.taepper@gmail.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "826ac37440f0247769de1977e06956d49e710e05",
      "tree": "ec33ddec8cfecd3e0ed80ecab60b21f61c1247e5",
      "parents": [
        "bc9d1349e091dead2044ed200d3e3e867578b354"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Wed Jul 22 13:36:59 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 13:36:59 2026 +0200"
      },
      "message": "GH-50591: [Python] Fix reference in ConvertToSequenceAndInferSize when an iterator raises on array conversion (#50594)\n\n### Rationale for this change\n\nWe currently leak the list and items in the case of an iterator raising an Exception and size is present.\n\n### What changes are included in this PR?\n\nUse `OwnedRef` instead of relying on manual `Py_DECREF` in order to avoid exception scenario returning early in `RETURN_IF_PYERROR`. \n\n### Are these changes tested?\n\nYes, I\u0027ve created a new test that fails previously to the fix and passes after the fix\n\n### Are there any user-facing changes?\n\nNo\n\n* GitHub Issue: #50591\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "bc9d1349e091dead2044ed200d3e3e867578b354",
      "tree": "bca1e9548f4756109d200becb1a9efddfdbe3ac4",
      "parents": [
        "7667f41324f4df79353019bbd323832ce67d6390"
      ],
      "author": {
        "name": "Alexander Taepper",
        "email": "alexander.taepper@gmail.com",
        "time": "Wed Jul 22 13:14:22 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 13:14:22 2026 +0200"
      },
      "message": "GH-50247: [C++] Reuse abstraction for null partitions in sorting functions (#50248)\n\n### Rationale for this change\n\n@ pitrou mentioned this as a follow-up in #46926 \n\n### What changes are included in this PR?\n\nRefactoring sorting methods to reuse the helper methods avoid maintaining two abstractions for null partitions. The new abstraction was very seamless to implement in most cases, but a few spots required some care\n\nIn particular, these functions were severly simlpified by the new abstraction:\n- `MarkDuplicates`: duplicate nulls and nans were detected by checking every single row for `Null` one additional time, after we already had (and discarded) the nullness information\n- `GenericMergeImpl`: merging of `null`-ranges involved repartitioning `null` and `nan` values in every merge invocation. Now, we track this distinction and do not need any merge function for `null` and `nan` blocks (unless we merge by multiple sort-keys, where we will merge according to the remaining sort keys)\n\n### Are these changes tested?\n\nYes, the compute test suite passes as before\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #50247\n\nAuthored-by: Alexander Taepper \u003calexander.taepper@gmail.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "7667f41324f4df79353019bbd323832ce67d6390",
      "tree": "c965c4eee135a2f69b1f3c20b926fe39491afb52",
      "parents": [
        "34647d278ab997007ca70aa880a6f1a2128905de"
      ],
      "author": {
        "name": "Hiroyuki Sato",
        "email": "hiroysato@gmail.com",
        "time": "Wed Jul 22 18:47:38 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 11:47:38 2026 +0200"
      },
      "message": "GH-50575: [CI][Dev] Fix shellcheck errors in the ci/scripts/python_wheel_xlinux_build.sh (#50577)\n\n### Rationale for this change\n\nThis is the sub issue #44748.\n\n* SC2045: Use Bash file test operators instead of `ls`.\n* SC2086: Double quote to prevent globbing and word splitting.\n* SC2223: This default assignment may cause DoS due to globbing. Quote it.\n\n```\nshellcheck ci/scripts/python_wheel_xlinux_build.sh\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 36:\n    if [[ -f visible_symbols.log \u0026\u0026 `cat visible_symbols.log | wc -l` -eq 0 ]]; then\n                                    ^-- SC2006 (style): Use $(...) notation instead of legacy backticks `...`.\n\nDid you mean:\n    if [[ -f visible_symbols.log \u0026\u0026 $(cat visible_symbols.log | wc -l) -eq 0 ]]; then\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 57:\n: ${ARROW_ACERO:\u003dON}\n  ^----------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 58:\n: ${ARROW_AZURE:\u003dON}\n  ^----------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 59:\n: ${ARROW_DATASET:\u003dON}\n  ^------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 60:\n: ${ARROW_FLIGHT:\u003dON}\n  ^-----------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 61:\n: ${ARROW_GANDIVA:\u003dOFF}\n  ^-------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 62:\n: ${ARROW_GCS:\u003dON}\n  ^--------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 63:\n: ${ARROW_HDFS:\u003dON}\n  ^---------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 64:\n: ${ARROW_MIMALLOC:\u003dON}\n  ^-------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 65:\n: ${ARROW_ORC:\u003dON}\n  ^--------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 66:\n: ${ARROW_PARQUET:\u003dON}\n  ^------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 67:\n: ${PARQUET_REQUIRE_ENCRYPTION:\u003dON}\n  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 68:\n: ${ARROW_SUBSTRAIT:\u003dON}\n  ^--------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 69:\n: ${ARROW_S3:\u003dON}\n  ^-------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 70:\n: ${ARROW_TENSORFLOW:\u003dON}\n  ^---------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 71:\n: ${ARROW_USE_MOLD:\u003dOFF}\n  ^--------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 72:\n: ${ARROW_WITH_BROTLI:\u003dON}\n  ^----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 73:\n: ${ARROW_WITH_BZ2:\u003dON}\n  ^-------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 74:\n: ${ARROW_WITH_LZ4:\u003dON}\n  ^-------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 75:\n: ${ARROW_WITH_OPENTELEMETRY:\u003dON}\n  ^-----------------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 76:\n: ${ARROW_WITH_SNAPPY:\u003dON}\n  ^----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 77:\n: ${ARROW_WITH_ZLIB:\u003dON}\n  ^--------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 78:\n: ${ARROW_WITH_ZSTD:\u003dON}\n  ^--------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 79:\n: ${CMAKE_BUILD_TYPE:\u003drelease}\n  ^--------------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 80:\n: ${CMAKE_UNITY_BUILD:\u003dON}\n  ^----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 81:\n: ${CMAKE_GENERATOR:\u003dNinja}\n  ^-----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 82:\n: ${VCPKG_ROOT:\u003d/opt/vcpkg}\n  ^-----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 83:\n: ${VCPKG_FEATURE_FLAGS:\u003d-manifests}\n  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 84:\n: ${VCPKG_TARGET_TRIPLET:\u003d${VCPKG_DEFAULT_TRIPLET:-x64-linux-static-${CMAKE_BUILD_TYPE}}}\n  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 91:\n    : ${ARROW_JEMALLOC:\u003dOFF}\n      ^--------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 93:\n    : ${ARROW_JEMALLOC:\u003dON}\n      ^-------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 97:\n    : ${CMAKE_INTERPROCEDURAL_OPTIMIZATION:\u003dOFF}\n      ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 99:\n    : ${CMAKE_INTERPROCEDURAL_OPTIMIZATION:\u003dON}\n      ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 106:\n    -DARROW_ACERO\u003d${ARROW_ACERO} \\\n                  ^------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_ACERO\u003d\"${ARROW_ACERO}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 107:\n    -DARROW_AZURE\u003d${ARROW_AZURE} \\\n                  ^------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_AZURE\u003d\"${ARROW_AZURE}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 113:\n    -DARROW_DATASET\u003d${ARROW_DATASET} \\\n                    ^--------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_DATASET\u003d\"${ARROW_DATASET}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 117:\n    -DARROW_FLIGHT\u003d${ARROW_FLIGHT} \\\n                   ^-------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_FLIGHT\u003d\"${ARROW_FLIGHT}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 118:\n    -DARROW_GANDIVA\u003d${ARROW_GANDIVA} \\\n                    ^--------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_GANDIVA\u003d\"${ARROW_GANDIVA}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 119:\n    -DARROW_GCS\u003d${ARROW_GCS} \\\n                ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_GCS\u003d\"${ARROW_GCS}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 120:\n    -DARROW_HDFS\u003d${ARROW_HDFS} \\\n                 ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_HDFS\u003d\"${ARROW_HDFS}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 121:\n    -DARROW_JEMALLOC\u003d${ARROW_JEMALLOC} \\\n                     ^---------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_JEMALLOC\u003d\"${ARROW_JEMALLOC}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 123:\n    -DARROW_MIMALLOC\u003d${ARROW_MIMALLOC} \\\n                     ^---------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_MIMALLOC\u003d\"${ARROW_MIMALLOC}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 124:\n    -DARROW_ORC\u003d${ARROW_ORC} \\\n                ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_ORC\u003d\"${ARROW_ORC}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 126:\n    -DARROW_PARQUET\u003d${ARROW_PARQUET} \\\n                    ^--------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_PARQUET\u003d\"${ARROW_PARQUET}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 128:\n    -DARROW_S3\u003d${ARROW_S3} \\\n               ^---------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_S3\u003d\"${ARROW_S3}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 129:\n    -DARROW_SUBSTRAIT\u003d${ARROW_SUBSTRAIT} \\\n                      ^----------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_SUBSTRAIT\u003d\"${ARROW_SUBSTRAIT}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 130:\n    -DARROW_TENSORFLOW\u003d${ARROW_TENSORFLOW} \\\n                       ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_TENSORFLOW\u003d\"${ARROW_TENSORFLOW}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 132:\n    -DARROW_USE_MOLD\u003d${ARROW_USE_MOLD} \\\n                     ^---------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_USE_MOLD\u003d\"${ARROW_USE_MOLD}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 133:\n    -DARROW_WITH_BROTLI\u003d${ARROW_WITH_BROTLI} \\\n                        ^------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_WITH_BROTLI\u003d\"${ARROW_WITH_BROTLI}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 134:\n    -DARROW_WITH_BZ2\u003d${ARROW_WITH_BZ2} \\\n                     ^---------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_WITH_BZ2\u003d\"${ARROW_WITH_BZ2}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 135:\n    -DARROW_WITH_LZ4\u003d${ARROW_WITH_LZ4} \\\n                     ^---------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_WITH_LZ4\u003d\"${ARROW_WITH_LZ4}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 136:\n    -DARROW_WITH_OPENTELEMETRY\u003d${ARROW_WITH_OPENTELEMETRY} \\\n                               ^-------------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_WITH_OPENTELEMETRY\u003d\"${ARROW_WITH_OPENTELEMETRY}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 137:\n    -DARROW_WITH_SNAPPY\u003d${ARROW_WITH_SNAPPY} \\\n                        ^------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_WITH_SNAPPY\u003d\"${ARROW_WITH_SNAPPY}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 138:\n    -DARROW_WITH_ZLIB\u003d${ARROW_WITH_ZLIB} \\\n                      ^----------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_WITH_ZLIB\u003d\"${ARROW_WITH_ZLIB}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 139:\n    -DARROW_WITH_ZSTD\u003d${ARROW_WITH_ZSTD} \\\n                      ^----------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DARROW_WITH_ZSTD\u003d\"${ARROW_WITH_ZSTD}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 140:\n    -DCMAKE_BUILD_TYPE\u003d${CMAKE_BUILD_TYPE} \\\n                       ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DCMAKE_BUILD_TYPE\u003d\"${CMAKE_BUILD_TYPE}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 143:\n    -DCMAKE_INTERPROCEDURAL_OPTIMIZATION\u003d${CMAKE_INTERPROCEDURAL_OPTIMIZATION} \\\n                                         ^-- SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DCMAKE_INTERPROCEDURAL_OPTIMIZATION\u003d\"${CMAKE_INTERPROCEDURAL_OPTIMIZATION}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 144:\n    -DCMAKE_UNITY_BUILD\u003d${CMAKE_UNITY_BUILD} \\\n                        ^------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DCMAKE_UNITY_BUILD\u003d\"${CMAKE_UNITY_BUILD}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 145:\n    -DPARQUET_REQUIRE_ENCRYPTION\u003d${PARQUET_REQUIRE_ENCRYPTION} \\\n                                 ^---------------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DPARQUET_REQUIRE_ENCRYPTION\u003d\"${PARQUET_REQUIRE_ENCRYPTION}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 147:\n    -DVCPKG_TARGET_TRIPLET\u003d${VCPKG_TARGET_TRIPLET} \\\n                           ^---------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -DVCPKG_TARGET_TRIPLET\u003d\"${VCPKG_TARGET_TRIPLET}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 149:\n    ${ARROW_EXTRA_CMAKE_FLAGS} \\\n    ^------------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    \"${ARROW_EXTRA_CMAKE_FLAGS}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 150:\n    -G ${CMAKE_GENERATOR} \\\n       ^----------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -G \"${CMAKE_GENERATOR}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 181:\n    -C cmake.build-type\u003d${CMAKE_BUILD_TYPE:-Debug} \\\n                        ^------------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    -C cmake.build-type\u003d\"${CMAKE_BUILD_TYPE:-Debug}\" \\\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 191:\nunzip $wheel_name\n      ^---------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\nunzip \"$wheel_name\"\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 192:\nrm $wheel_name\n   ^---------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\nrm \"$wheel_name\"\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 193:\nfor filename in $(ls pyarrow/*.so pyarrow/*.so.*); do\n                ^-- SC2045 (error): Iterating over ls output is fragile. Use globs.\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 195:\n    strip --strip-debug $filename\n                        ^-------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\n    strip --strip-debug \"$filename\"\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 198:\nzip -r $wheel_name .\n       ^---------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\nzip -r \"$wheel_name\" .\n\nIn ci/scripts/python_wheel_xlinux_build.sh line 199:\nmv $wheel_name ..\n   ^---------^ SC2086 (info): Double quote to prevent globbing and word splitting.\n\nDid you mean:\nmv \"$wheel_name\" ..\n\nFor more information:\n  https://www.shellcheck.net/wiki/SC2045 -- Iterating over ls output is fragi...\n  https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...\n  https://www.shellcheck.net/wiki/SC2223 -- This default assignment may cause...\n``` \n\n### What changes are included in this PR?\n\n* SC2045: Replace `ls` iteration with globs\n* SC2086: Quote variable expansions\n* SC2223: Quote default assignment\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50575\n\nAuthored-by: Hiroyuki Sato \u003chiroysato@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "34647d278ab997007ca70aa880a6f1a2128905de",
      "tree": "6a9b4ae48b6a4ab33b9250bc10df3d8874471f45",
      "parents": [
        "450b79379a26eb9f43bcf4f4d258c15488d6cee7"
      ],
      "author": {
        "name": "Antoine Pitrou",
        "email": "antoine@python.org",
        "time": "Wed Jul 22 11:07:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 11:07:57 2026 +0200"
      },
      "message": "GH-48679: [C++] Fix pivot_wider with non-monotonic group ids (#50423)\n\n### Rationale for this change\n\nThe pivot_wider implementation was assuming that the `Grouper` produces monotonic group ids for the pivot key names.\n\nHowever, that turns out to not always be true when the `FastGrouperImpl` is involved (perhaps when hash collisions are involved?).\n\n### What changes are included in this PR?\n\nCompute and apply a mapping from pivot key group ids back to pivot key indices. \n\n### Are these changes tested?\n\nYes, by additional tests.\n\n### Are there any user-facing changes?\n\nOnly a bugfix.\n\n* GitHub Issue: #48679\n\nAuthored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "450b79379a26eb9f43bcf4f4d258c15488d6cee7",
      "tree": "df78ec098a9a4d3306f3786c816d05678f7b472d",
      "parents": [
        "154962c364bc210c10ef16680f54a115b624b400"
      ],
      "author": {
        "name": "Connor Simms",
        "email": "connorvsimms@gmail.com",
        "time": "Wed Jul 22 03:09:00 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 10:09:00 2026 +0200"
      },
      "message": "GH-37004: [C++][Python] Fix dropped child data when viewing/casting e… (#50502)\n\n### Rationale for this change\n`table.cast(table.schema)` errored or segfaulted when the schema contained a struct with an extension-typed field whose storage is a list. \n\nThis cast takes a zero-copy view, and `ViewDataImpl::MakeDataView` found children using `type-\u003efields()`, which is never populated for extension types since their structure is in `storage_type()`. The same issue exists in `AccumulateLayouts`. The storage\u0027s child data gets dropped and leaves an invalid array that downstream code throws/crashes on.\n\nThis bug is similar to #37669, except that the fix for #37669 addressed casting *to* an extension with nested storage but not this particular struct-wrapped view path.\n\n### What changes are included in this PR?\n- `cpp/src/arrow/array/data.cc` - `AccumulateLayouts` and `ViewDataImpl::MakeDataView` now recurse into `storage_type()-\u003efields()` for `ExtensionType`, instead of the extension type\u0027s empty `fields()`.\n- `cpp/src/arrow/array/array_view_test.cc`\n- `python/pyarrow/tests/test_extension_type.py`\n### Are these changes tested?\nYes,\n- `cpp/src/arrow/array/array_view_test.cc` - Two tests for viewing an extension array with nested storage for fixed-size and variable-size lists.\n- `python/pyarrow/tests/test_extension_type.py` - A test casting a table / struct containing an extension type with list-based storage to its own schema.\n- Also, all reproducers from the linked issue were checked against this fix, including the segfault case.\n### Are there any user-facing changes?\nNo API changes. Operations that previously raised errors or crashed relating to casting/viewing a struct or table with an extension type with nested storage now succeed.\n\n* GitHub Issue: #37004\n\nAuthored-by: Connor Simms \u003cconnorvsimms@gmail.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "154962c364bc210c10ef16680f54a115b624b400",
      "tree": "d6b5a274409a270c256e4dbfa31b2fdb98892933",
      "parents": [
        "323c262bb40a7f609685992e04a5be1cab2b5359"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Wed Jul 22 13:42:25 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 13:42:25 2026 +0900"
      },
      "message": "GH-50588: [Ruby] Add `ArrowFormat::Array#[]` (#50589)\n\n### Rationale for this change\n\nIt\u0027s a convenient API to get a value at the given index.\n\n### What changes are included in this PR?\n\nAdd `ArrowFormat::Array#[]`.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nYes.\n* GitHub Issue: #50588\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "323c262bb40a7f609685992e04a5be1cab2b5359",
      "tree": "47af18d70acd9236d916a3856957189e166671c5",
      "parents": [
        "44550e5fc22aaff52c0fdd13f63a0cb48782cc58"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Wed Jul 22 10:09:45 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 10:09:45 2026 +0900"
      },
      "message": "GH-50585: [CI][C++] Use bundled simdjson on Alpine Linux (#50586)\n\n### Rationale for this change\n\nThe simdjson package in Alpine Linux has some problems.\n\nSee also: https://gitlab.alpinelinux.org/alpine/aports/-/work_items/18353\n\n### What changes are included in this PR?\n\nUse bundled simdjson for now.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50585\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "44550e5fc22aaff52c0fdd13f63a0cb48782cc58",
      "tree": "f7ce5846905fecfbe0f838b61a1cda030c315e02",
      "parents": [
        "d300aa9fdaffb3acd97f4298450afd71138b0c86"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Wed Jul 22 09:05:34 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 09:05:34 2026 +0900"
      },
      "message": "GH-50582: [CI][C++] Install missing `simdjson-static` on Alpine Linux (#50583)\n\n### Rationale for this change\n\n`simdjson-static` is needed for `find_package(simdjson)` on Alpine Linux because `simdjsontargets.cmake` refers `libsimdjson.a` but it\u0027s included in `simdjson-static` not `simdjson-dev`.\n\n### What changes are included in this PR?\n\nInstall `simdjson-static`.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #50582\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "d300aa9fdaffb3acd97f4298450afd71138b0c86",
      "tree": "9186a84a12facc6dc1992745b15d2b1c5939e303",
      "parents": [
        "8943fccd719ccd97b09e36ba360e275e2379461b"
      ],
      "author": {
        "name": "Matt Topol",
        "email": "zotthewizard@gmail.com",
        "time": "Tue Jul 21 15:15:36 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 15:15:36 2026 -0400"
      },
      "message": "docs: updating Go impl status (#50580)\n\nAdding checkmarks for TimestampWithOffset (v18.7.0 release) and updating\nother status to be correct."
    },
    {
      "commit": "8943fccd719ccd97b09e36ba360e275e2379461b",
      "tree": "0aa16ffda6b685fe279e8e1cba4377e96b0b232a",
      "parents": [
        "00775397a0ccb84106da75287ffa9d05d69de2e2"
      ],
      "author": {
        "name": "Antoine Pitrou",
        "email": "antoine@python.org",
        "time": "Tue Jul 21 12:56:28 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 12:56:28 2026 +0200"
      },
      "message": "GH-50573: [CI][C++] Remove brew workaround for aws-sdk-cpp (#50557)\n\n### Rationale for this change\n\nIn https://github.com/apache/arrow/pull/50254 we introduced an explicit `brew install aws-sdk-cpp` step in order to workaround a [bug in brew](https://github.com/Homebrew/brew/issues/22899). However, the latter bug has since been fixed and we can now remove the workaround.\n\n### Are these changes tested?\n\nBy existing CI jobs.\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #50573\n\nAuthored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "00775397a0ccb84106da75287ffa9d05d69de2e2",
      "tree": "0b7a4d6c633b9b10ba08c48052e23bb655904b0c",
      "parents": [
        "0f54c056e6d3576344971121708fc93deeaa3918"
      ],
      "author": {
        "name": "Antoine Pitrou",
        "email": "antoine@python.org",
        "time": "Tue Jul 21 11:03:07 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 11:03:07 2026 +0200"
      },
      "message": "GH-50428: [C++] Better mimalloc configuration on macOS (#50549)\n\n### Rationale for this change\n\nOn macOS, two independently-linked mimalloc v3 instances built with default TLS settings can end up using the same hard-coded TLS slots and crash due to conflicting expectations. See upstream issue at https://github.com/microsoft/mimalloc/issues/1327\n\nThis can manifest when PyArrow is loaded side-by-side with another Python extension module that bundles its own instance of mimalloc.\n\n### What changes are included in this PR?\n\n1. Bump mimalloc to 3.4.1, for the availability of the required CMake option.\n2. Configure macOS to use C thread-local variables for thread-local storage, avoiding conflicting accesses to hard-coded TLS slots on macOS.\n3. Also, unrelatedly, make sure the default malloc is not overriden by our mimalloc build on macOS.\n\n### Are these changes tested?\n\nBy existing CI jobs.\n\n### Are there any user-facing changes?\n\nNo, just a bugfix.\n\n* GitHub Issue: #50428\n\nLead-authored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nCo-authored-by: Antoine Pitrou \u003cpitrou@free.fr\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    }
  ],
  "next": "0f54c056e6d3576344971121708fc93deeaa3918"
}
