)]}'
{
  "log": [
    {
      "commit": "b738178e571eee87f69867d97bbe0769d1fb6dfb",
      "tree": "c1c04fe80d332483384bb65806a943313b84c57a",
      "parents": [
        "4ed091623565a251a8058f6cada4340ce2f3f9b8"
      ],
      "author": {
        "name": "Max Romagnoli",
        "email": "68606608+max-romagnoli@users.noreply.github.com",
        "time": "Fri Apr 10 15:59:14 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 10 15:59:14 2026 +0100"
      },
      "message": "GH-33390: [R] Field-level metadata (#49631)\n\n### Rationale for this change\n- `field()` in R unlike Python does not support field-level metadata.\n\n### What changes are included in this PR?\n- New active bindings on `Field`: `$HasMetadata`, `$metadata`\n- New methods on Field: `$WithMetadata()`, `$RemoveMetadata()`\n- New `check_metadata` parameter in `Field$Equals()`, defaulting to FALSE\n- Tests for the above\n\n### Are these changes tested?\n- Yes, unit tests have been added, the functionality was also tested locally in R\n\n### Are there any user-facing changes?\n- Yes, metadata\u003d now works without throwing an error. \n- No breaking changes, since this was already included but errored before and parameter order was not changed in the implementation.\n\n* GitHub Issue: #33390\n\nLead-authored-by: Max Romagnoli \u003cmassimiliano.romagnoli02@gmail.com\u003e\nCo-authored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "4ed091623565a251a8058f6cada4340ce2f3f9b8",
      "tree": "74c194a5fd2a368941c97642fe9b398322ae214a",
      "parents": [
        "5617e8da18c5888d975fdeb77c98c0d9fb6f0f8b"
      ],
      "author": {
        "name": "Bryce Mecum",
        "email": "petridish@gmail.com",
        "time": "Thu Apr 09 22:21:23 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 22:21:23 2026 -0700"
      },
      "message": "GH-49700: [R][CI][Dev] Use air precommit hook (#49701)\n\n### Rationale for this change\n\nSimplifies setup of the R formatter air for local devs and in CI by moving from explicitly managed air to using a new official pre-commit hook.\n\n### What changes are included in this PR?\n\nReplace local hook with https://github.com/posit-dev/air-pre-commit.\n\n### Are these changes tested?\n\nYes, locally.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #49700\n\nAuthored-by: Bryce Mecum \u003cpetridish@gmail.com\u003e\nSigned-off-by: Bryce Mecum \u003cpetridish@gmail.com\u003e"
    },
    {
      "commit": "5617e8da18c5888d975fdeb77c98c0d9fb6f0f8b",
      "tree": "cbd66f18b6349d7c82efef07801dcb61593b0dce",
      "parents": [
        "35fb62e6224617d5ae749533654e9f8c7a6250c7"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Thu Apr 09 13:09:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 13:09:17 2026 +0200"
      },
      "message": "GH-49676: [Python][Packaging] Fix gRPC docker image layer being too big for hcsshim on Windows (#49678)\n\n### Rationale for this change\n\nThe docker base docker image which installs all the vcpkg dependencies to build Windows wheels was failing to commit the layer for gRPC due to size.\n\n### What changes are included in this PR?\n\nTwo separate fixes that independently fix the issue:\n- Patch vcpkg for Windows to remove unconditional `/Z7`\n- Use D:/ drive instead of C:/ as it has bigger size for Docker storage\n\n### Are these changes tested?\n\nYes via archery\n\n### Are there any user-facing changes?\n\nNo\n\n* GitHub Issue: #49676\n\nLead-authored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nCo-authored-by: Bryce Mecum \u003cpetridish@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "35fb62e6224617d5ae749533654e9f8c7a6250c7",
      "tree": "6f2041b6b9679e63b00f1267b427cbbcb5af69dd",
      "parents": [
        "bb4e492872c3112f68897e0046eae4088f15eff9"
      ],
      "author": {
        "name": "tadeja",
        "email": "tadeja@users.noreply.github.com",
        "time": "Tue Apr 07 23:52:09 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 06:52:09 2026 +0900"
      },
      "message": "GH-49586: [C++][CI] StructToStructSubset test failure with libc++ 22.1.1 (#49682)\n\n### Rationale for this change\nFixes #49586\n\n`std::multimap::extract(key)` does not guarantee returning the first element when there are duplicate keys.\n\n### What changes are included in this PR?\nReplace extract(key) with lower_bound(key) plus erase(iterator). `lower_bound` guarantees first matching element, then read `it-\u003esecond` and then `erase` the node (`extract` is not needed as the node isn\u0027t reused here).\n\n### Are these changes tested?\nYes, CI jobs are passing.\n\n### Are there any user-facing changes?\nNo.\n* GitHub Issue: #49586\n\nAuthored-by: Tadeja Kadunc \u003ctadeja.kadunc@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "bb4e492872c3112f68897e0046eae4088f15eff9",
      "tree": "cd8de461c11faf4ec182a7d3d09842e96c4c774b",
      "parents": [
        "fe298b424f4c7e33cdc9331221ece9302f6abb26"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Tue Apr 07 20:27:13 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 20:27:13 2026 +0100"
      },
      "message": "GH-49534: [R] Implement dplyr recode_values(), replace_values(), and replace_when() (#49536)\n\n### Rationale for this change\n\nImplement new dplyr functions\n\n### What changes are included in this PR?\n\nImplement them\n\n### Are these changes tested?\n\nYeah\n\n### Are there any user-facing changes?\n\nMoar functions\n\n### AI Use\n\nCode generated using Claude, with plenty of input from me. I\u0027ve gone through it in detail and refactored lots, but it needs a last pass before it\u0027s ready for review.\n\n* GitHub Issue: #49534\n\nLead-authored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nCo-authored-by: Jonathan Keane \u003cjkeane@gmail.com\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "fe298b424f4c7e33cdc9331221ece9302f6abb26",
      "tree": "ab58e8896004a33e6bc1235bd3547e2e52209dcd",
      "parents": [
        "1f94910cdd840a84c2007b5837e577d517be7984"
      ],
      "author": {
        "name": "Alenka Frim",
        "email": "AlenkaF@users.noreply.github.com",
        "time": "Tue Apr 07 11:02:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 11:02:15 2026 +0200"
      },
      "message": "GH-49628: [Python][Interchange protocol] Suppress warnings for pandas 4.0.0 and update docs (#49630)\n\n### Rationale for this change\nPandas is moving the dataframe interchange protocol out of the repo in the next major release (4.0.0).\n\n### What changes are included in this PR?\nFilterwarnings are added and the pandas example is removed from the interchange documentation.\n\n### Are these changes tested?\nYes, via CI.\n\n### Are there any user-facing changes?\nNo.\n\n* GitHub Issue: #49628\n\nAuthored-by: AlenkaF \u003cfrim.alenka@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "1f94910cdd840a84c2007b5837e577d517be7984",
      "tree": "444f9c02c54ec27b3117a6409a03a2f646463a99",
      "parents": [
        "5ba5c3ca1af2d540f17bd1db91c103d40abefd1b"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Tue Apr 07 17:08:02 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 10:08:02 2026 +0200"
      },
      "message": "GH-49252: [GLib] Deprecate Feather features (#49673)\n\n### Rationale for this change\n\nWe\u0027ll deprecate Feather V1 reader/writer. See also the discussion at https://lists.apache.org/thread/1npvnhjb1xwz09zh8vnd079zt2q4o08l .\n\nWe can use IPC file reader/writer for Feather V2.\n\n### What changes are included in this PR?\n\n* Add deprecation warnings to Feather features.\n* Use `GARROW_DEPRECATED()`/`GARROW_DEPRECATED_FOR()` instead of `G_GNUC_DEPRECATED()`/`G_GNUC_DEPRECATED_FOR()`.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nYes.\n* GitHub Issue: #49252\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "5ba5c3ca1af2d540f17bd1db91c103d40abefd1b",
      "tree": "63a47424cc65f4739f8ca6df57397823db3b0269",
      "parents": [
        "da6870debad68504ac83f3adeee863ab8a5c1999"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Tue Apr 07 16:52:12 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 09:52:12 2026 +0200"
      },
      "message": "GH-49671: [CI][Docs] Don\u0027t run jobs for push by Dependabot (#49672)\n\n### Rationale for this change\n\nWe don\u0027t need to run the docs jobs for push by Dependabot because we can run them for PR by Dependabot. \n\n### What changes are included in this PR?\n\nAdd `on.push.branches` and `on.push.tags` to disable jobs for push by Dependabot.\n\n### Are these changes tested?\n\nNo. But this will work because other workflows use this.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #49671\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "da6870debad68504ac83f3adeee863ab8a5c1999",
      "tree": "52a408e68d1cfd990388182d825039773396b112",
      "parents": [
        "64a2525ada45ed0eb1632f29d668164f28f73f1c"
      ],
      "author": {
        "name": "Dominique Belhachemi",
        "email": "db@domibel.de",
        "time": "Tue Apr 07 03:36:21 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 09:36:21 2026 +0200"
      },
      "message": "GH-49539: [C++][Parquet] Fix argument count check in parquet_scan (#49540)\n\n### Rationale for this change\nRunning parquet-scan without arguments currently triggers a confusing IOError instead of showing how to use the tool.\n\n### What changes are included in this PR?\nUpdated the argument validation from argc \u003c 1 (always false) to argc \u003c 2.\n\n### Are these changes tested?\nYes. \n\n### Are there any user-facing changes?\nYes.\n\nOld behavior:\n$ parquet-scan\nParquet error: IOError: Failed to open local file \u0027\u0027. Detail: [errno 2] No such file or directory\n\nNew behavior:\n$ parquet-scan\nUsage: parquet-scan [--batch-size\u003d] [--columns\u003d...]\n\n* GitHub Issue: #49539\n\nAuthored-by: Dominique Belhachemi \u003cdb@domibel.de\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "64a2525ada45ed0eb1632f29d668164f28f73f1c",
      "tree": "1e21fd822b946e4ed4866872f0c2d48b3263cb49",
      "parents": [
        "4d294adc3dc5eabedce66e234540da69e3f06134"
      ],
      "author": {
        "name": "Ruifeng Zheng",
        "email": "ruifengz@apache.org",
        "time": "Tue Apr 07 05:45:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 22:45:33 2026 +0100"
      },
      "message": "MINOR: [Docs] Fix a typo in `overview.rst` (#48678)\n\nThanks for opening a pull request!\n\nIf this is your first pull request you can find detailed information on how to contribute here:\n\n  * [New Contributor\u0027s Guide](https://arrow.apache.org/docs/dev/developers/guide/step_by_step/pr_lifecycle.html#reviews-and-merge-of-the-pull-request)\n  * [Contributing Overview](https://arrow.apache.org/docs/dev/developers/overview.html)\n\nPlease remove this line and the above text before creating your pull request.\n\n### Rationale for this change\nThis PR fixes a typo in `overview.rst`\n\n### What changes are included in this PR?\n`most of implementation` -\u003e `most of the implementations`\n\n### Are these changes tested?\nCI\n\n### Are there any user-facing changes?\nyes, doc-only change\n\nAuthored-by: Ruifeng Zheng \u003cruifengz@apache.org\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "4d294adc3dc5eabedce66e234540da69e3f06134",
      "tree": "70ed95c1cb19e0bca7fa6970cff983fcc336a46d",
      "parents": [
        "eb6108d2e281719b07186f945b04d03bd36d04b0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Apr 07 06:14:51 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 06:14:51 2026 +0900"
      },
      "message": "MINOR: [CI] Bump docker/login-action from 4.0.0 to 4.1.0 (#49664)\n\nBumps [docker/login-action](https://github.com/docker/login-action) from 4.0.0 to 4.1.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.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix scoped Docker Hub cleanup path when registry is omitted 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/945\"\u003edocker/login-action#945\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.1020.0 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/930\"\u003edocker/login-action#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​docker/actions-toolkit\u003c/code\u003e from 0.77.0 to 0.86.0 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/932\"\u003edocker/login-action#932\u003c/a\u003e \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/936\"\u003edocker/login-action#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump brace-expansion from 1.1.12 to 1.1.13 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/952\"\u003edocker/login-action#952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump fast-xml-parser from 5.3.4 to 5.3.6 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/942\"\u003edocker/login-action#942\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump flatted from 3.3.3 to 3.4.2 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/944\"\u003edocker/login-action#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump glob from 10.3.12 to 10.5.0 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/940\"\u003edocker/login-action#940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump handlebars from 4.7.8 to 4.7.9 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/949\"\u003edocker/login-action#949\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump http-proxy-agent and https-proxy-agent to 8.0.0 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/937\"\u003edocker/login-action#937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lodash from 4.17.23 to 4.18.1 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/958\"\u003edocker/login-action#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimatch from 3.1.2 to 3.1.5 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/941\"\u003edocker/login-action#941\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump picomatch from 4.0.3 to 4.0.4 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/948\"\u003edocker/login-action#948\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump undici from 6.23.0 to 6.24.1 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/938\"\u003edocker/login-action#938\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.0.0...v4.1.0\"\u003ehttps://github.com/docker/login-action/compare/v4.0.0...v4.1.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/4907a6ddec9925e35a0a9e82d7399ccc52663121\"\u003e\u003ccode\u003e4907a6d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/930\"\u003e#930\u003c/a\u003e from docker/dependabot/npm_and_yarn/aws-sdk-dependenc...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/1e233e691a8881d7f35ca7c2d5dfaaed80b39636\"\u003e\u003ccode\u003e1e233e6\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/6c24ead68057f18c30c808a431f0b85dc25663cb\"\u003e\u003ccode\u003e6c24ead\u003c/code\u003e\u003c/a\u003e build(deps): bump the aws-sdk-dependencies group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/ee034d70944e3546349cd24295914f139342f1e6\"\u003e\u003ccode\u003eee034d7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/958\"\u003e#958\u003c/a\u003e from docker/dependabot/npm_and_yarn/lodash-4.18.1\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/1527209db9734bd2352a2dc1a63d79c9aa5358bb\"\u003e\u003ccode\u003e1527209\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/937\"\u003e#937\u003c/a\u003e from docker/dependabot/npm_and_yarn/proxy-agent-depen...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/d39362aba4d72f8d9d93e0962119840690133e1b\"\u003e\u003ccode\u003ed39362a\u003c/code\u003e\u003c/a\u003e build(deps): bump lodash from 4.17.23 to 4.18.1\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/a6f092b568105cbb6d9deb7e55e0a4c5c1025fce\"\u003e\u003ccode\u003ea6f092b\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/60953f0bed2120ec69659d271fe18d34bc069779\"\u003e\u003ccode\u003e60953f0\u003c/code\u003e\u003c/a\u003e build(deps): bump the proxy-agent-dependencies group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/62c688590fb4ab6c6e89a217ced0a7b2ddcf1340\"\u003e\u003ccode\u003e62c6885\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/936\"\u003e#936\u003c/a\u003e from docker/dependabot/npm_and_yarn/docker/actions-to...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/102c0e672992d2e992c89b6f4808d65a353b5a1a\"\u003e\u003ccode\u003e102c0e6\u003c/code\u003e\u003c/a\u003e chore: update generated content\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href\u003d\"https://github.com/docker/login-action/compare/b45d80f862d83dbcd57f89517bcf500b2ab88fb2...4907a6ddec9925e35a0a9e82d7399ccc52663121\"\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.0.0\u0026new-version\u003d4.1.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": "eb6108d2e281719b07186f945b04d03bd36d04b0",
      "tree": "619d0986b39cbffef2fe98aa7eb7884d3fd0f344",
      "parents": [
        "7aca68211bf4e786328a9260bbea62ad8929f8d6"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Mon Apr 06 21:25:33 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 21:25:33 2026 +0100"
      },
      "message": "GH-39600: [R] Add trademark attribution to pkgdown site footer (#49332)\n\n### Rationale for this change\n\nPer ASF policy, documentation pages should include trademark attribution in the footer. See #39461 for the broader effort.\n\n### What changes are included in this PR?\n\nAdd Apache trademark attribution text to the R pkgdown site footer.\n\n### Are these changes tested?\n\nDocumentation only. Can verify by building pkgdown site locally.\n\n### Are there any user-facing changes?\n\nFooter now includes trademark text matching the main Arrow website.\n\n---\n\nThis PR was generated by Claude. All outputs were reviewed and confirmed before pushing.\n\n* GitHub Issue: #39600\n\nLead-authored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nCo-authored-by: Jonathan Keane \u003cjkeane@gmail.com\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "7aca68211bf4e786328a9260bbea62ad8929f8d6",
      "tree": "1cd5c2e92a0b2276cc4795537c3124304f5c7689",
      "parents": [
        "6cefbd39bf47af75504ab4209f2035f48b10055a"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Mon Apr 06 17:43:15 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 17:43:15 2026 +0100"
      },
      "message": "GH-49649: [R] R non-API calls reported on CRAN (#49653)\n\n### Rationale for this change\n\nCRAN reports non-API calls\n\n### What changes are included in this PR?\n\nSwap \u0027em out\n\n### Are these changes tested?\n\nI\u0027ll test with CI\n\n### Are there any user-facing changes?\n\nNah\n\n### AI usage\n\nUsed Claude, asked it lots of questions about what it was doing and why, answers sounded reasonable.\n\n* GitHub Issue: #49649\n\nAuthored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "6cefbd39bf47af75504ab4209f2035f48b10055a",
      "tree": "ef923376745ed18e9c950c320a89ac3d054352b6",
      "parents": [
        "5fd30d3dd00baa826d9c24a7c8caf28428c023c9"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Mon Apr 06 15:49:32 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 15:49:32 2026 +0100"
      },
      "message": "GH-49654: [R][CI] Add check for non-API calls onto existing r-devel job (#49655)\n\n### Rationale for this change\n\nI wanna know when we get NOTEs about this so we don\u0027t need to wait til CRAN pings us\n\n### What changes are included in this PR?\n\nAdd check to r-devel jobs\n\n### Are these changes tested?\n\nThose CI jobs should fail now\n\n### Are there any user-facing changes?\n\nNah\n* GitHub Issue: #49654\n\nLead-authored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nCo-authored-by: Jonathan Keane \u003cjkeane@gmail.com\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "5fd30d3dd00baa826d9c24a7c8caf28428c023c9",
      "tree": "97d5e2d82387b790792605b0a6ad6e2524b133b6",
      "parents": [
        "8eb2ca14530bad4e65853586d95f7b20d1af168e"
      ],
      "author": {
        "name": "Ed Seidl",
        "email": "etseidl@users.noreply.github.com",
        "time": "Sun Apr 05 21:15:35 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 12:15:35 2026 +0800"
      },
      "message": "GH-49376: [Python][Parquet] Add ability to write Bloom filters from pyarrow (#49377)\n\n\nFixes #49376\n\n### Rationale for this change\nAdds ability to enable the writing of Parquet Bloom filters via pyarrow.\n\n### What changes are included in this PR?\nAdds `bloom_filter_options` to `parquet.write_table`.\n\n### Are these changes tested?\nYes, new tests are added.\n\n### Are there any user-facing changes?\nAdds an option (defaults to `None`) to `parquet.write_table`.\n\n* GitHub Issue: #49376\n\nAuthored-by: seidl \u003cseidl2@llnl.gov\u003e\nSigned-off-by: mwish \u003cmaplewish117@gmail.com\u003e"
    },
    {
      "commit": "8eb2ca14530bad4e65853586d95f7b20d1af168e",
      "tree": "2fed228b797dc5cd26135963f7179e9c38a33f07",
      "parents": [
        "f51a70f654b74714fa012d91dfc977c3d7ebd514"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Mon Apr 06 09:34:05 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 09:34:05 2026 +0900"
      },
      "message": "GH-49661: [CI][C++] Suppress deprecated warnings with gRPC 1.80.0 (#49662)\n\n### Rationale for this change\n\ngRPC 1.80.0 introduced some deprecation warnings. See GH-49661 for real warning messages.\n\n### What changes are included in this PR?\n\n* Use `grpc::experimental::InMemoryCertificateProvider` instead of `grpc::experimental::StaticDataCertificateProvider`\n* Use `set_root_certificate_provider()` instead of `set_certificate_provider()` of `grpc::experimental::TlsChannelCredentialsOptions`\n* Don\u0027t call `::grpc::experimental::TlsChannelCredentialsOptions::watch_root_certs()` because we called `set_root_certificate_provider()` with gRPC 1.80.0 or later\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #49661\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "f51a70f654b74714fa012d91dfc977c3d7ebd514",
      "tree": "57bcb9653051c25fb2f95d2f516e9803c2172c1e",
      "parents": [
        "df88383ba11f42af3d94ecbd7f9b265350da0494"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Sun Apr 05 16:55:23 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 16:55:23 2026 +0900"
      },
      "message": "GH-49656: [Ruby] Add benchmark for writers (#49657)\n\n### Rationale for this change\n\nPerformance is important in Apache Arrow. So benchmark is useful for developing Apache Arrow implementation.\n\n### What changes are included in this PR?\n\n* Add benchmarks for file and streaming writers.\n* Remove redundant type arguments from array constructors.\n\nHere are benchmark results on my environment.\n\nPure Ruby implementation is about 2-2.5x slower than release build C++ implementation but about 2-2.5x faster than debug build C++ implementation.\n\nRelease build C++/GLib:\n\nFile format:\n\n```console\n$ ruby -v -S benchmark-driver ruby/red-arrow-format/benchmark/file-writer.yaml\nruby 4.1.0dev (2026-03-26T07:27:31Z master c5ab2114df) +PRISM [x86_64-linux]\nWarming up --------------------------------------\n           Arrow::Table#save    348.499 i/s -     374.000 times in 1.073175s (2.87ms/i)\nArrow::RecordBatchFileWriter    353.426 i/s -     385.000 times in 1.089337s (2.83ms/i)\n     ArrowFormat::FileWriter    133.293 i/s -     140.000 times in 1.050314s (7.50ms/i)\nCalculating -------------------------------------\n           Arrow::Table#save    336.984 i/s -      1.045k times in 3.101035s (2.97ms/i)\nArrow::RecordBatchFileWriter    338.695 i/s -      1.060k times in 3.129655s (2.95ms/i)\n     ArrowFormat::FileWriter    134.640 i/s -     399.000 times in 2.963462s (7.43ms/i)\n\nComparison:\nArrow::RecordBatchFileWriter:       338.7 i/s\n           Arrow::Table#save:       337.0 i/s - 1.01x  slower\n     ArrowFormat::FileWriter:       134.6 i/s - 2.52x  slower\n\n```\n\nStreaming format:\n\n```console\n$ ruby -v -S benchmark-driver ruby/red-arrow-format/benchmark/streaming-writer.yaml\nruby 4.1.0dev (2026-03-26T07:27:31Z master c5ab2114df) +PRISM [x86_64-linux]\nWarming up --------------------------------------\n             Arrow::Table#save    356.995 i/s -     385.000 times in 1.078447s (2.80ms/i)\nArrow::RecordBatchStreamWriter    347.891 i/s -     374.000 times in 1.075050s (2.87ms/i)\n  ArrowFormat::StreamingWriter    156.709 i/s -     160.000 times in 1.021004s (6.38ms/i)\nCalculating -------------------------------------\n             Arrow::Table#save    350.743 i/s -      1.070k times in 3.050665s (2.85ms/i)\nArrow::RecordBatchStreamWriter    345.821 i/s -      1.043k times in 3.016011s (2.89ms/i)\n  ArrowFormat::StreamingWriter    160.022 i/s -     470.000 times in 2.937090s (6.25ms/i)\n\nComparison:\n             Arrow::Table#save:       350.7 i/s\nArrow::RecordBatchStreamWriter:       345.8 i/s - 1.01x  slower\n  ArrowFormat::StreamingWriter:       160.0 i/s - 2.19x  slower\n```\n\nDebug build C++/GLib:\n\nFile format:\n\n```console\n$ ruby -v -S benchmark-driver ruby/red-arrow-format/benchmark/file-writer.yaml\nruby 4.1.0dev (2026-03-26T07:27:31Z master c5ab2114df) +PRISM [x86_64-linux]\nWarming up --------------------------------------\n           Arrow::Table#save     63.290 i/s -      66.000 times in 1.042815s (15.80ms/i)\nArrow::RecordBatchFileWriter     62.655 i/s -      66.000 times in 1.053389s (15.96ms/i)\n     ArrowFormat::FileWriter    138.082 i/s -     140.000 times in 1.013891s (7.24ms/i)\nCalculating -------------------------------------\n           Arrow::Table#save     63.165 i/s -     189.000 times in 2.992143s (15.83ms/i)\nArrow::RecordBatchFileWriter     61.773 i/s -     187.000 times in 3.027220s (16.19ms/i)\n     ArrowFormat::FileWriter    134.709 i/s -     414.000 times in 3.073285s (7.42ms/i)\n\nComparison:\n     ArrowFormat::FileWriter:       134.7 i/s\n           Arrow::Table#save:        63.2 i/s - 2.13x  slower\nArrow::RecordBatchFileWriter:        61.8 i/s - 2.18x  slower\n\n```\n\nStreaming format:\n\n```console\n$ ruby -v -S benchmark-driver ruby/red-arrow-format/benchmark/streaming-writer.yaml\nruby 4.1.0dev (2026-03-26T07:27:31Z master c5ab2114df) +PRISM [x86_64-linux]\nWarming up --------------------------------------\n             Arrow::Table#save     63.252 i/s -      66.000 times in 1.043439s (15.81ms/i)\nArrow::RecordBatchStreamWriter     61.272 i/s -      66.000 times in 1.077162s (16.32ms/i)\n  ArrowFormat::StreamingWriter    152.598 i/s -     160.000 times in 1.048506s (6.55ms/i)\nCalculating -------------------------------------\n             Arrow::Table#save     61.016 i/s -     189.000 times in 3.097525s (16.39ms/i)\nArrow::RecordBatchStreamWriter     63.024 i/s -     183.000 times in 2.903642s (15.87ms/i)\n  ArrowFormat::StreamingWriter    160.416 i/s -     457.000 times in 2.848846s (6.23ms/i)\n\nComparison:\n  ArrowFormat::StreamingWriter:       160.4 i/s\nArrow::RecordBatchStreamWriter:        63.0 i/s - 2.55x  slower\n             Arrow::Table#save:        61.0 i/s - 2.63x  slower\n\n```\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nYes.\n* GitHub Issue: #49656\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "df88383ba11f42af3d94ecbd7f9b265350da0494",
      "tree": "d720a0ebf899dfc4a7b791e46ec80438d190d0e0",
      "parents": [
        "ddc422944e5bbfdd6b76b4d0c4d8c0c6625b14f4"
      ],
      "author": {
        "name": "Sarah Gilmore",
        "email": "74676073+sgilmore10@users.noreply.github.com",
        "time": "Fri Apr 03 15:49:34 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 15:49:34 2026 -0400"
      },
      "message": "GH-49611: [MATLAB] MATLAB workflow failing due to action permission error (#49650)\n\n### Rationale for this change\n\nThe MATLAB workflow began (silently) failing on March 20th with this startup error:\n\n\u003e The actions matlab-actions/setup-matlab@ v2 and matlab-actions/run-tests@ v2 are not allowed in apache/arrow because all actions must be from a repository owned by your enterprise, created by GitHub, or match one of the patterns: ...\n\nThe MATLAB workflows began failing in CI because it depends on two actions, `matlab-actions/setup-matlab` and `matlab-actions/run-tests`, that, prior to yesterday, were not included in [apache/infrastructure-actions](https://github.com/apache/infrastructure-actions) \"action\" allow list.\n\nBoth `matlab-actions/setup-matlab` and `matlab-actions/run-tests` are now included in the action allow list. See [PR#6423](https://github.com/apache/infrastructure-actions/pull/643) and [PR#644](https://github.com/apache/infrastructure-actions/pull/644) for details.\n\n### Component(s)\n\nMATLAB, Continuous Integration\n\n### What changes are included in this PR?\n\n1. Pinned `matlab-actions/setup-matlab` to version `v2.7.0`, specified by git hash `aa8bbc7b76daa63c5d456d1430cbd6cb5b626ab4`.\n\n2. Pinned `matlab-actions/run-tests` to version `v2.3.1`, specified by git hash `4a3d2e8bdc811f72defb8122e46a009312acc198`.\n\n### Are these changes tested?\n\nN/A\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #49611\n\nLead-authored-by: Sarah Gilmore \u003csgilmore@mathworks.com\u003e\nCo-authored-by: Sarah Gilmore \u003c74676073+sgilmore10@users.noreply.github.com\u003e\nCo-authored-by: Sutou Kouhei \u003ckou@cozmixng.org\u003e\nSigned-off-by: Sarah Gilmore \u003csgilmore@mathworks.com\u003e"
    },
    {
      "commit": "ddc422944e5bbfdd6b76b4d0c4d8c0c6625b14f4",
      "tree": "46caec4a1dd461d52048e68108c9bdaa4b6689ec",
      "parents": [
        "99ca031f46208f2ae040df6883bd6e1181a6263a"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Fri Apr 03 09:03:08 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 09:03:08 2026 +0900"
      },
      "message": "GH-49295: [Python] Remove \"mimalloc\" from `mandatory_backends` (#49645)\n\n### Rationale for this change\n\nmimalloc is enabled by default but users can disable it. For example, Debian package disables it.\n\nIf it\u0027s disabled, PyArrow tests are failed.\n\n### What changes are included in this PR?\n\nRemove `\"mimalloc\"` from `mandatory_backends` in our test.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #49295\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "99ca031f46208f2ae040df6883bd6e1181a6263a",
      "tree": "ba2562d145d03316a8ac7eae431a14d3b0165554",
      "parents": [
        "d035788bd51e829cf55f3658dd0dd05fefc3080e"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Thu Apr 02 15:04:59 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 22:04:59 2026 +0900"
      },
      "message": "GH-48766: [CI][Packaging] Delete conan related packaging jobs and CI (#49647)\n\n### Rationale for this change\n\nThe conan CI jobs have been failing for 4+ months. The main problem is that conan deprecated the repository they used to build the Docker files we were using:\n\n\u003e    ⛔ This repository is now deprecated. The Docker recipes and images provided by this repository are no longer used by ConanCenterIndex CI. Users are encouraged to explore alternative solutions for their Docker image needs.\n\nsee:\nhttps://github.com/conan-io/conan-docker-tools#readme\n\n### What changes are included in this PR?\n\nRemove all conan related Arrow CI. The integration will have to be managed upstream when we build the PRs to conan. This might required patches and take longer but having the CI jobs broken for 4+ months without a clear guideline on how to proceed should be fixed.\n\n### Are these changes tested?\n\nNo\n\n### Are there any user-facing changes?\n\nNo\n* GitHub Issue: #48766\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "d035788bd51e829cf55f3658dd0dd05fefc3080e",
      "tree": "191d6d7ccf1f27ba4d3984910199c062e5ecd89f",
      "parents": [
        "75c8ede7bd19c38be433fd2c7dcfbfca9a86b93f"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Thu Apr 02 13:42:27 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 13:42:27 2026 +0100"
      },
      "message": "GH-48832: [R] Fix crash with zero-length POSIXct tzone attribute (#49619)\n\n### Rationale for this change\n\nIn R 4.5.2+, `as.POSIXct(x \u003d NULL)` creates a zero-length `POSIXct` with `INTSXP` (integer) type, not `REALSXP` (double). The `GetVectorType()` function in `r_to_arrow.cpp` only checked for `POSIXct` in the `REALSXP` branch, so it misclassified zero-length `POSIXct` as `INT32`.\n\n### What changes are included in this PR?\n\nMap any `POSIXct` object to correct class by adding the check to the `INTSXP` branch of `GetVectorType()`\n\n### Are these changes tested?\n\nYes\n\n### Are there any user-facing changes?\n\nNo\n* GitHub Issue: #48832\n\nAuthored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "75c8ede7bd19c38be433fd2c7dcfbfca9a86b93f",
      "tree": "44b77b56e99bd5762830e02d36fb09a1c8846007",
      "parents": [
        "82847d8f6dae87e709d284b4b871da1424e93a25"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Thu Apr 02 12:42:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 12:42:40 2026 +0200"
      },
      "message": "GH-49638: [CI][Packaging][Python] Pin setuptools \u003c 80 to build oldest pandas to test on musllinux (#49639)\n\n### Rationale for this change\n\nMusl Linux wheels for Python 3.10 fail to install due to newer setuptools not being able to build old pandas from source.\nThe version of Pandas does not have Musl Linux wheels and is the last one to support the oldest numpy we support for Python 3.10.\n\n### What changes are included in this PR?\n\nPin old setuptools in case of Python 3.10 in order to be able to install old pandas from source. This will be deleted in a couple of releases once we drop support for Python 3.10.\n\n### Are these changes tested?\n\nYes via archery\n\n### Are there any user-facing changes?\nNo\n\n* GitHub Issue: #49638\n\nLead-authored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nCo-authored-by: Sutou Kouhei \u003ckou@cozmixng.org\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "82847d8f6dae87e709d284b4b871da1424e93a25",
      "tree": "b50152528b7ee04aff0f50f233ade56c0495a8a0",
      "parents": [
        "976d547fba9b4bff4178e515ca8cdcb8a5db4d46"
      ],
      "author": {
        "name": "Alenka Frim",
        "email": "AlenkaF@users.noreply.github.com",
        "time": "Thu Apr 02 09:50:27 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 09:50:27 2026 +0200"
      },
      "message": "GH-49227: [Python] Deprecate `pyarrow.gandiva` (#49637)\n\n### Rationale for this change\nSee: https://github.com/apache/arrow/issues/49227#issue-3926177634\n\n### What changes are included in this PR?\nDeprecation warnings for `pyarrow.gandiva` added for version 24.0.0\n\n### Are these changes tested?\nYes, tested locally that warnings are raised on import. CI tests verify the warnings are filtered in out test suite.\n\n### Are there any user-facing changes?\nYes, `pyarrow.gandiva` is deprecated and will be removed in a feature PyArrow version.\n\n* GitHub Issue: #49227\n\nAuthored-by: AlenkaF \u003cfrim.alenka@gmail.com\u003e\nSigned-off-by: AlenkaF \u003cfrim.alenka@gmail.com\u003e"
    },
    {
      "commit": "976d547fba9b4bff4178e515ca8cdcb8a5db4d46",
      "tree": "6f7331b8864ea203c10a158bf1d4cbae360c70b1",
      "parents": [
        "008e082cbc08052c9215660a918c748b359281e5"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Thu Apr 02 02:14:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 09:14:01 2026 +0900"
      },
      "message": "GH-49632: [C++][R] Remove deprecated old MinGW CMake fixes for AWS (#49633)\n\n### Rationale for this change\n\nWe are using newer R version and MinGW CMAKE_CXX_COMPILER_VERSION is minimum 10.\n\n### What changes are included in this PR?\n\nRemove unnecessary code paths for old MinGW on our CMake code.\n\n### Are these changes tested?\n\nYes via CI\n\n### Are there any user-facing changes?\nNo\n\n* GitHub Issue: #49632\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "008e082cbc08052c9215660a918c748b359281e5",
      "tree": "80da4bcbe136c51095cc85be46863a55a9eb26df",
      "parents": [
        "3c25e693cb6037cc682c79b09798727b24f655b4"
      ],
      "author": {
        "name": "Alenka Frim",
        "email": "AlenkaF@users.noreply.github.com",
        "time": "Wed Apr 01 16:01:07 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 01 16:01:07 2026 +0200"
      },
      "message": "GH-49002: [Python] Fix array.to_pandas string type conversion for arrays with None (#49247)\n\n### Rationale for this change\n\nThe conversion from array with string type to pandas series, when array only has a `None` element, has been taking the old code path even with pandas 3.0.\n\n### What changes are included in this PR?\n\nAlways check `dtype`  in the `_array_like_to_pandas ` conversion and use pandas new default string `dtype` if available.\n\n### Are these changes tested?\nYes.\n\n### Are there any user-facing changes?\nNo, only bug fix.\n* GitHub Issue: #49002\n\nLead-authored-by: Alenka Frim \u003cAlenkaF@users.noreply.github.com\u003e\nCo-authored-by: AlenkaF \u003cfrim.alenka@gmail.com\u003e\nCo-authored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nCo-authored-by: Joris Van den Bossche \u003cjorisvandenbossche@gmail.com\u003e\nSigned-off-by: AlenkaF \u003cfrim.alenka@gmail.com\u003e"
    },
    {
      "commit": "3c25e693cb6037cc682c79b09798727b24f655b4",
      "tree": "d65e5e3797a842f2c88d2308d88006a1d58628ef",
      "parents": [
        "3faa8e172f6277ea21cd667500f3d5b1ac36e0e2"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Wed Apr 01 19:27:18 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 01 19:27:18 2026 +0900"
      },
      "message": "GH-49634: [Ruby][Integration] Follow dictionary array API change (#49635)\n\n### Rationale for this change\n\nGH-49621 changed dictionary array related API but we didn\u0027t follow the API change in integration test code.\n\n### What changes are included in this PR?\n\nFollow dictionary array related API change in integration test code.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #49634\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "3faa8e172f6277ea21cd667500f3d5b1ac36e0e2",
      "tree": "62fd0853a1d7c062a1a586e502c3ff2bacd17fe8",
      "parents": [
        "92734673d1c9dea033fb30844278d321e82a7874"
      ],
      "author": {
        "name": "Antoine Pitrou",
        "email": "antoine@python.org",
        "time": "Wed Apr 01 11:35:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 01 11:35:34 2026 +0200"
      },
      "message": "GH-49626: [C++][Parquet] Fix encoding fuzzing failure (#49627)\n\n### Rationale for this change\n\nThe DecodeArrow decoder functions are expected to always return the number of requested values or error out, but the DELTA_BINARY_PACKED would not always satisfy this guarantee.\n\nIssue found by OSS-Fuzz: https://issues.oss-fuzz.com/issues/492457225\n\n### What changes are included in this PR?\n\n1. Make sure `DecodeArrow` functions for DELTA_BINARY_PACKED error out if there are not enough values\n2. Improve `DecodeArrow` docstrings to clarify the meaning of the parameters and return value\n\n### Are these changes tested?\n\nOnly by fuzz regression file.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #49626\n\nAuthored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "92734673d1c9dea033fb30844278d321e82a7874",
      "tree": "796b46acf2f697637fa8138c774d5d1a12777783",
      "parents": [
        "6f836c5595661df7720852da0c218f9e5d3cc1f3"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Wed Apr 01 12:01:36 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 01 12:01:36 2026 +0900"
      },
      "message": "GH-49620: [Ruby] Add support for custom metadata in Message (#49621)\n\n### Rationale for this change\n\n`Message` can attach custom metadata: https://github.com/apache/arrow/blob/61ef6722b01a289ca6e09d3c5aaef782f060f94c/format/Message.fbs#L152-L157\n\n### What changes are included in this PR?\n\n* Add `ArrowFormat::Dictionary` for dictionary\n* Add support for reading custom metadata in `Message` and attaching them to `ArrowFormat::Schema`, `ArrowFormat::RecordBatch` and `ArrowFormat::Dictionary`\n* Add support for writing custom metadata in `ArrowFormat::Schema`, `ArrowFormat::RecordBatch` and `ArrowFormat::Dictionary` as `Message`\u0027s custom metadata\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nYes.\n* GitHub Issue: #49620\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "6f836c5595661df7720852da0c218f9e5d3cc1f3",
      "tree": "4399277174c203a7a2797457b08d8da3bb85875e",
      "parents": [
        "5c78ddfbcb8692d82565b1fa08ab2d139cf23502"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Tue Mar 31 19:08:13 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 19:08:13 2026 +0100"
      },
      "message": "GH-49622:[R][CI] Some R CI jobs seem unable to access some S3 files on arrow-datasets bucket (#49625)\n\n### Rationale for this change\n\nCan\u0027t write to buckets, need new bucket so set one up with write access\n\n### What changes are included in this PR?\n\nPoint to new bucket\n\n### Are these changes tested?\n\nBy CI, yeah\n\n### Are there any user-facing changes?\n\nNope\n* GitHub Issue: #49622\n\nAuthored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "5c78ddfbcb8692d82565b1fa08ab2d139cf23502",
      "tree": "a45e955681951cba99c88abb74b77c5b39dcb908",
      "parents": [
        "b3120c1dc7c53af99b022039d117e3d8bf174103"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Tue Mar 31 16:48:13 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 16:48:13 2026 +0200"
      },
      "message": "GH-49623: [CI][Python] Install built wheel on Windows verification and test in isolation (#49624)\n\n### Rationale for this change\n\nVerification job is currently failing on Windows.\n\n### What changes are included in this PR?\n\nWith the changes on sckit-build-core we changed how we build the wheel on Windows verification. Previously we were doing editable installations. For verification we should install the built wheel and test on isolation, not in-source.\n\n### Are these changes tested?\n\nYes via CI\n\n### Are there any user-facing changes?\nNo\n* GitHub Issue: #49623\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "b3120c1dc7c53af99b022039d117e3d8bf174103",
      "tree": "1c04e87450eb6ff64b4e05fb1fe0385689ad2082",
      "parents": [
        "9e413fa83565727d367b534e44e2b2130dcfa158"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Tue Mar 31 16:38:11 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 16:38:11 2026 +0200"
      },
      "message": "GH-49548: [C++][FlightRPC] Decouple Flight Serialize/Deserialize from gRPC transport (#49549)\n\n### Rationale for this change\n\nCurrently the Serialize/Deserialize APIs are gRPC dependent. This means that any code that needs to encode or decode Flight data must depend on gRPC C++ internals. After some discussions around trying to build a PoC using gRPC\u0027s generic API with gRPC\u0027s BidiReactor we discussed that these primitives should be made gRPC agnostic.\n\n### What changes are included in this PR?\n\n- Move the serialization/deserialization logic from `cpp/src/arrow/flight/transport/grpc/serialization_internal.{h,cc}` to `cpp/src/arrow/flight/serialization_internal.cc`\n- Create new `arrow::Result\u003carrow::BufferVector\u003e SerializePayloadToBuffers(const FlightPayload\u0026 msg)` gRPC agnostic function.\n- Create new `arrow::Result\u003carrow::flight::internal::FlightData\u003e DeserializeFlightData(const std::shared_ptr\u003carrow::Buffer\u003e\u0026 buffer)` gRPC agnostic function.\n- Keep the existing serialize/deserialize functions for gRPC as simple wrappers on top of the new serialization functions to implement the `grpc::ByteBuffer` and `grpc::Slice` details.\n- Add utility `arrow::Result\u003cBufferVector\u003e SerializeToBuffers() const;` to `FlightPayload` struct.\n- Add roundtrip tests to serialize/deserialize\n\n### Are these changes tested?\n\nYes, both by existing tests and new tests.\n\n### Are there any user-facing changes?\n\nNo\n\n* GitHub Issue: #49548\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "9e413fa83565727d367b534e44e2b2130dcfa158",
      "tree": "44801734fa8627de01fcb528bc3a7533002997a0",
      "parents": [
        "61ef6722b01a289ca6e09d3c5aaef782f060f94c"
      ],
      "author": {
        "name": "Antoine Pitrou",
        "email": "antoine@python.org",
        "time": "Tue Mar 31 10:46:10 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 10:46:10 2026 +0200"
      },
      "message": "GH-49617: [C++][CI] Validate all batches in IPC file fuzzer (#49618)\n\n### Rationale for this change\n\nWhen using the IPC stream reader for differential fuzzing against the IPC file reader, ensure we validate batches because otherwise we might be doing invalid memory accesses down the road.\n\n### Are these changes tested?\n\nBy additional fuzz regression file.\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #49617\n\nAuthored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "61ef6722b01a289ca6e09d3c5aaef782f060f94c",
      "tree": "27de613fecb5151f5746ec1fb2450f6680687728",
      "parents": [
        "4e22f4d9c07a07da67b5271881635bd668263077"
      ],
      "author": {
        "name": "Rossi Sun",
        "email": "zanmato1984@gmail.com",
        "time": "Mon Mar 30 12:45:03 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 12:45:03 2026 -0700"
      },
      "message": "GH-49392: [C++][Compute] Fix fixed-width gather byte offset overflow in list filtering (#49602)\n\n## Rationale for this change\n\nIssue #49392 reports a user-visible corruption when filtering a table that contains a `list\u003cdouble\u003e` column: slicing the last row returns the expected values, while filtering the same row returns values from a different child span. The corruption only appears once the selected child-value range is large enough, which points to an overflow in the fixed-width gather path used when list filtering materializes the selected child values.\n\n## What changes are included in this PR?\n\nThis patch moves fixed-width gather byte-offset scaling onto an explicit `int64_t` helper before the `memcpy` and `memset` address calculations. That fixes the underlying 32-bit byte-offset overflow when a `uint32` gather index is multiplied by the fixed value width. In the source issue\u0027s last-row case, the selected child span starts at `999998000`; for `double` values, scaling that index by 8 bytes wrapped in 32-bit arithmetic and redirected the gather to the wrong child span. Keeping the byte-offset arithmetic in 64 bits makes the fixed-width gather path, the child `Take()` call used under list filtering, and the final filtered `Table` all address the correct bytes.\n\nTo validate that this is the same bug reported in the issue, I also used a local near-e2e C++ reproduction that keeps the issue\u0027s logical shape (`N\u003d500000`, `ARRAY_LEN\u003d2000`, an `id` column, and a `numbers: list\u003cdouble\u003e` column), filters the last row, and seeds both the true target child span and the pre-fix wrapped span with distinct sentinels. In that setup, `Slice()` returns the expected row, a replay of the pre-fix gather arithmetic returns the wrapped sentinel span instead, and the fixed child `Take()` and table `Filter()` results both match the sliced row. That ties the user-visible issue and this root-cause fix back to the same overflow boundary.\n\n## Are these changes tested?\n\nYes. The patch adds a targeted unit test that checks fixed-width gather byte offsets are computed with 64-bit arithmetic. This is intentionally smaller than an end-to-end filter regression: the original user-visible failure only shows up at very large logical offsets, while the new unit test isolates the exact overflow boundary directly without constructing a huge table or depending on a PyArrow-level reproduction. That makes it smaller, more stable, and more appropriate for regular C++ CI, while the near-e2e local reproduction was used separately to confirm that this root-cause regression test and the reported filtering corruption are exercising the same bug.\n\n## Are there any user-facing changes?\n\nYes. Filtering tables with large list columns backed by fixed-width child values no longer risks returning data from a wrapped byte offset.\n\n* GitHub Issue: #49392\n\nAuthored-by: Rossi Sun \u003czanmato1984@gmail.com\u003e\nSigned-off-by: Rossi Sun \u003czanmato1984@gmail.com\u003e"
    },
    {
      "commit": "4e22f4d9c07a07da67b5271881635bd668263077",
      "tree": "be1c68b454de93c660038fb18917d515ead1fcaf",
      "parents": [
        "0b20b75ac9960f07b67f4c0a54c5ea62d2b1c5ca"
      ],
      "author": {
        "name": "Antoine Pitrou",
        "email": "antoine@python.org",
        "time": "Mon Mar 30 11:38:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 11:38:54 2026 +0200"
      },
      "message": "GH-49274: [Doc][C++] Document security model for Arrow C++ (#49489)\n\n### Rationale for this change\n\nNow that we have a general security model for the Arrow specs, add a security model for Arrow C++ specifically, meant to describe appropriate API usage.\n\n### Are these changes tested?\n\nN/A.\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #49274\n\nAuthored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "0b20b75ac9960f07b67f4c0a54c5ea62d2b1c5ca",
      "tree": "9883fbdac6e3a1daec35a8348d2c9883ae7ff970",
      "parents": [
        "d5e58658ca8c927063aa0a92a85b99dacedd197f"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Mon Mar 30 08:57:01 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 09:57:01 2026 +0200"
      },
      "message": "GH-49609: [CI][R] AMD64 Windows R release fails with IOError: Bucket \u0027ursa-labs-r-test\u0027 not found (#49610)\n\n### Rationale for this change\n\nBucket closed, need to use new one\n\n### What changes are included in this PR?\n\nUpdate bucket\n\n### Are these changes tested?\n\nWill trigger CI\n\n### Are there any user-facing changes?\n\nNope\n* GitHub Issue: #49609\n\nAuthored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "d5e58658ca8c927063aa0a92a85b99dacedd197f",
      "tree": "af0dfd72d5e22dff0751ea6759baa60af17075bc",
      "parents": [
        "aa30af30b21e2f66d31603165a1873dc4c11220d"
      ],
      "author": {
        "name": "Alina (Xi) Li",
        "email": "96995091+alinaliBQ@users.noreply.github.com",
        "time": "Sat Mar 28 01:24:56 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 28 17:24:56 2026 +0900"
      },
      "message": "GH-49463: [C++][FlightRPC] Add Ubuntu ODBC Support (#49564)\n\n### Rationale for this change\nGH-49463\nAdd Ubuntu support so users can connect using odbc on Linux.\n\n### What changes are included in this PR?\n- Enable Linux ODBC build with unicode support\n- Add ODBC Ubuntu build in CI\n- Added `docker-compose` for Flight SQL ODBC\n- Register ODBC after build\n- Replaced `boost::lexicographical_compare` with `std::lexicographical_compare`\n- Fixed conversion bugs in `SetAttributeSQLWCHAR`\n- Convert from std::string to std::u16string directly without involving wide string (wstring)\n- Enabling ODBC Linux test build will be added in a separate PR\n\n### Are these changes tested?\n- Ubuntu build is tested in CI\n- ODBC is tested with `isql` on local docker, and confirmed to be able to connect to online remote instance\n\n### Are there any user-facing changes?\nN/A\n\n* GitHub Issue: #49463\n\nLead-authored-by: Alina (Xi) Li \u003calinal@bitquilltech.com\u003e\nCo-authored-by: Alina (Xi) Li \u003calina.li@improving.com\u003e\nCo-authored-by: Alina (Xi) Li \u003c96995091+alinaliBQ@users.noreply.github.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "aa30af30b21e2f66d31603165a1873dc4c11220d",
      "tree": "7bccf317b6b58359338bfc284020ef31fc33f411",
      "parents": [
        "3ecf1cab23e0b34400e63974b8d16c0acc5e6c5c"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Sat Mar 28 17:21:32 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 28 17:21:32 2026 +0900"
      },
      "message": "GH-49601: [C++] Update bundled AWS SDK C++ for C23 (#49604)\n\n### Rationale for this change\n\naws-lc can\u0027t be built with C23:\nhttps://github.com/aws/aws-lc/issues/2995\n\nIt\u0027s fixed in upstream:\nhttps://github.com/aws/aws-lc/pull/3008\n\n### What changes are included in this PR?\n\nUpdate bundled AWS SDK C++ related products to the latest version.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nYes.\n* GitHub Issue: #49601\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "3ecf1cab23e0b34400e63974b8d16c0acc5e6c5c",
      "tree": "91674c30830df2ab25309a08585cc2ca34d96e17",
      "parents": [
        "2a526c1e623df0ce8b9b76b03d4d9c617d21fda1"
      ],
      "author": {
        "name": "fenfeng9",
        "email": "36840213+fenfeng9@users.noreply.github.com",
        "time": "Fri Mar 27 23:54:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 27 23:54:20 2026 +0800"
      },
      "message": "GH-48334: [C++][Parquet] Support reading encrypted bloom filters (#49334)\n\n### Rationale for this change\nReading bloom filters from encrypted Parquet files previously raised an exception. This change implements encrypted bloom filter deserialization by decrypting the Thrift header (module id 8) and bitset (module id 9) separately, and adds the necessary validation and tests.\n\n### What changes are included in this PR?\n- Wire metadata decryptor creation into the bloom filter reader\n- Add BlockSplitBloomFilter::DeserializeEncrypted(...) for encrypted bloom filters\n- Remove the fuzzer workaround that swallowed encrypted bloom filter exceptions\n\n### Are these changes tested?\nYes.\n### Are there any user-facing changes?\nYes.\n\n* GitHub Issue: #48334\n\nAuthored-by: fenfeng9 \u003cfenfeng9@qq.com\u003e\nSigned-off-by: Gang Wu \u003custcwg@gmail.com\u003e"
    },
    {
      "commit": "2a526c1e623df0ce8b9b76b03d4d9c617d21fda1",
      "tree": "e8b3383b9a2b5988fd1877d277157c2f4b41941f",
      "parents": [
        "80db1020881f461af3a300653cfd2333ef10a45e"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Fri Mar 27 14:59:23 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 27 14:59:23 2026 +0000"
      },
      "message": "GH-35806: [R] Improve error message for null type inference with sparse CSV data (#49338)\n\n### Rationale for this change\n\nWhen reading a CSV with sparse data (many missing values followed by actual values), Arrow can infer a column type as `null` based on the first block of data. When non-null values appear later, the error message incorrectly suggests using `skip \u003d 1` for header rows, which is misleading.\n\n### What changes are included in this PR?\n\nAdds a specific check for \"conversion error to null\" that provides a helpful message explaining the cause (type inference from sparse data) and the solution (change the block size to use for inference).\n\n### Are these changes tested?\n\nYes, added a test in `test-dataset-csv.R`.\n\n### Are there any user-facing changes?\n\nYes, improved error message when CSV type inference fails due to sparse data.\n\n---\n\nThis PR was authored by Claude (Opus 4.5) and reviewed by @ thisisnic.\n\n🤖 Generated with [Claude Code](https://claude.ai/code)\n* GitHub Issue: #35806\n\nLead-authored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nCo-authored-by: Jonathan Keane \u003cjkeane@gmail.com\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "80db1020881f461af3a300653cfd2333ef10a45e",
      "tree": "df6649c895c196c3d503989c157825639816c3f2",
      "parents": [
        "4bcab1256c43bfa08b0049b76e310bdc0b255931"
      ],
      "author": {
        "name": "Wechar Yu",
        "email": "yuwq1996@gmail.com",
        "time": "Fri Mar 27 22:34:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 27 22:34:16 2026 +0800"
      },
      "message": "GH-48467: [C++][Parquet] Add BufferedStats API to RowGroupWriter (#49527)\n\n### Rationale for this change\nExpose an API for buffered bytes of values and levels in RowGroupWriter, it\u0027s useful in deciding whether a new row group is needed.\nDiscussion in https://github.com/apache/arrow/pull/48468#issuecomment-4047682751\n\n### What changes are included in this PR?\nAdd a new API to return `BufferedStats` from `RowGroupWriter`.\n\n### Are these changes tested?\nTest locally.\n\n### Are there any user-facing changes?\nYes, user could use the new API to implement their customized row group strategy.\n* GitHub Issue: #48467\n\nLead-authored-by: wecharyu \u003cyuwq1996@gmail.com\u003e\nCo-authored-by: Gang Wu \u003custcwg@gmail.com\u003e\nCo-authored-by: Zehua Zou \u003czehuazou2000@gmail.com\u003e\nSigned-off-by: Gang Wu \u003custcwg@gmail.com\u003e"
    },
    {
      "commit": "4bcab1256c43bfa08b0049b76e310bdc0b255931",
      "tree": "35933d5b2715e8596a17fdcd5d2efc7c5013917d",
      "parents": [
        "a19f13b9431482d5776efc65ad0fac72f012127f"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Fri Mar 27 14:20:36 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 27 14:20:36 2026 +0000"
      },
      "message": "GH-49533: [R] Implement dplyr\u0027s when_any() and when_all() helpers (#49535)\n\n### Rationale for this change\n\nBindings to new dplyr helpers\n\n### What changes are included in this PR?\n\nBindings and tests\n\n### Are these changes tested?\n\nYes\n\n### Are there any user-facing changes?\n\nYes\n\n### AI usage\n\nI have written this using Claude Opus 4.5 using Claude from the cli.  I have manually reviewed the changes myself and am happy with them.\n\n* GitHub Issue: #49533\n\nAuthored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "a19f13b9431482d5776efc65ad0fac72f012127f",
      "tree": "61730f0d6f7e91b88412227e1f4b6f1ee3accb23",
      "parents": [
        "560ef02158131487b54cfb1f3883def10d9a67a7"
      ],
      "author": {
        "name": "Bogdan Romenskii",
        "email": "77816165+rmnskb@users.noreply.github.com",
        "time": "Fri Mar 27 09:07:21 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 27 09:07:21 2026 +0100"
      },
      "message": "GH-32007: [Python] Support arithmetic on arrays and scalars (#48085)\n\n### Rationale for this change\nPlease see #32007, currently, neither arrays nor scalars support Python-native arithmetic operations, such as `array + array`, it has to be done via `pyarrow.compute` API. This PR strives to fix this with custom dunder methods.\n\n### What changes are included in this PR?\nImplemented dunder methods\n\n### Are these changes tested?\nYes\n\n### Are there any user-facing changes?\nPossibility to use Python operators directly instead of calling the `pyarrow.compute` API.\n\n* GitHub Issue: #32007\n\nAuthored-by: Bogdan Romenskii \u003crmnsk@seznam.cz\u003e\nSigned-off-by: AlenkaF \u003cfrim.alenka@gmail.com\u003e"
    },
    {
      "commit": "560ef02158131487b54cfb1f3883def10d9a67a7",
      "tree": "6ed4b8b32bed6efa87bdc9826a984a0c704fbc16",
      "parents": [
        "bbfb2420377fc9955dc0e4b5f2d3d1e9d6146211"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Thu Mar 26 09:33:44 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 26 09:33:44 2026 +0100"
      },
      "message": "GH-46600: [C++][CI] Add job with ARROW_LARGE_MEMORY_TESTS enabled (#49490)\n\n### Rationale for this change\n\nNow that we have self-hosted runners with AWS we should test the `ARROW_LARGE_MEMORY_TESTS` on CI.\n\n### What changes are included in this PR?\n\nAdded new runner for ARROW_LARGE_MEMORY_TESTS.\nFix `parquet-writer-test` to generate huge expected page using huge `max_rows_per_page` instead of default.\n\n### Are these changes tested?\n\nYes via CI\n\n### Are there any user-facing changes?\n\nNo\n\n* GitHub Issue: #46600\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "bbfb2420377fc9955dc0e4b5f2d3d1e9d6146211",
      "tree": "115ba3247c52c72f25414217c649dd6ce288721a",
      "parents": [
        "4feb9bde28afbbb7eaff765406e25d89e3569d12"
      ],
      "author": {
        "name": "Alina (Xi) Li",
        "email": "96995091+alinaliBQ@users.noreply.github.com",
        "time": "Wed Mar 25 15:01:07 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 26 07:01:07 2026 +0900"
      },
      "message": "GH-49563: [C++][CMake] Remove clang/infer tools detection (#49575)\n\n### Rationale for this change\n\nGH-49563\n\n### What changes are included in this PR?\n\nThis issue occurred without any code changes, so I think it is due to an macOS update.\n\nAfter a GitHub macOS update, the `CLANG_TOOLS_PATH` path is resolved as `/usr/local/bin/clang-format` in Intel CI. Before the GitHub macOS update, `CLANG_TOOLS_PATH` was resolved as `/usr/local/opt/llvm@ 18/bin` and we did not have the issue of `libunwind` linking dynamically to ODBC dylib.\n\nWe don\u0027t know why clang tools change is related to `libunwind` linking but we don\u0027t need to detect clang/infer tools in our CMake now. (We migrated to pre-commit from Archery for linting.) So we can fix this issue by removing clang/infer tools detection from our CMake configuration.\n\n### Are these changes tested?\n\n- Tested in CI\n\n### Are there any user-facing changes?\n\nN/A\n\n* GitHub Issue: #49563\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\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "4feb9bde28afbbb7eaff765406e25d89e3569d12",
      "tree": "039e92623e78d058d8d1f4f7efcfcb46dbb0196b",
      "parents": [
        "1fb0e25a36851d1b08a0730d29e0d25680bcf038"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Wed Mar 25 15:33:28 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 25 15:33:28 2026 +0000"
      },
      "message": "GH-49593: [R][CI] Add libuv-dev to CI jobs due to update to fs package (#49594)\n\n### Rationale for this change\n\nfs package release no longer installs bundled libuv so we need to add it to our CI\n\n### What changes are included in this PR?\n\nAdd libuv to R install scripts on CI\n\n### Are these changes tested?\n\nI\u0027ll run CI\n\n### Are there any user-facing changes?\n\nNo\n* GitHub Issue: #49593\n\nAuthored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "1fb0e25a36851d1b08a0730d29e0d25680bcf038",
      "tree": "3f67157706495df96d24178227340d171f86720c",
      "parents": [
        "2c2a61c7e5e4c8f9db38e72f539bb3deb7491dc9"
      ],
      "author": {
        "name": "Alenka Frim",
        "email": "AlenkaF@users.noreply.github.com",
        "time": "Wed Mar 25 11:28:00 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 25 11:28:00 2026 +0100"
      },
      "message": "GH-49572 : [Python][Docs] Remove editable section and consolidate the information (#49573)\n\n### Rationale for this change\n\nEditable install section in the Python dev docs became redundant with the new scikit-build-core backend.\n\n### What changes are included in this PR?\n\nUpdate docs.\n\n### Are these changes tested?\n\nNo, just docs changes.\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #49572\n\nAuthored-by: AlenkaF \u003cfrim.alenka@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "2c2a61c7e5e4c8f9db38e72f539bb3deb7491dc9",
      "tree": "657ce6232cdd8d30ebfa75462548783df66f779d",
      "parents": [
        "c9cc3b8d21527311c15b0cbf3bc6e694609c78fa"
      ],
      "author": {
        "name": "Alenka Frim",
        "email": "AlenkaF@users.noreply.github.com",
        "time": "Wed Mar 25 10:51:00 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 25 10:51:00 2026 +0100"
      },
      "message": "GH-49566: [Python] Skip header files when installing compiled Cython files and other Python release verification fixes (#49571)\n\n### Rationale for this change\n\nLocal import is broken when doing editable install with scikit-build-core, also nightly verification jobs are failing for the same reason.\n\n### What changes are included in this PR?\n\n- `lib.h` and `lib_api.h` are already installed separately so we skip them when installing Cython extensions into the output destination (`side-packages/pyarrow`).\n- Arrow library directory is added to the `RPATH`, in the case of not bundling ARROW_CPP, to fix linking issues on macos\n- `test_pyarrow_include` is updated due to compiled files now being moved to the site-packages\n- updates to the release verification script when building pyarrow\n- update of `brew`  on the \"Install System Dependencies\" step in the rc verification job to fix an issue with protobuf mixed versions\n\n### Are these changes tested?\n\nYes, locally and via the extended verification builds.\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #49566\n\nLead-authored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nCo-authored-by: AlenkaF \u003cfrim.alenka@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "c9cc3b8d21527311c15b0cbf3bc6e694609c78fa",
      "tree": "7f7de9ac6aa796aafb0e9c73c0542b258889bf4b",
      "parents": [
        "618d5fbe84ba417123b0341bc1f255a014128311"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Wed Mar 25 10:18:44 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 25 18:18:44 2026 +0900"
      },
      "message": "GH-49596: [CI][Dev] Pin PyGithub to \u003c 2.9 to fix broken archery (#49597)\n\n### Rationale for this change\n\nA new PyGithub release has broken archery:\nhttps://github.com/PyGithub/PyGithub/releases/tag/v2.9.0\n\nI tried some quick test error fixes but those are going to require more investigation.\n\n### What changes are included in this PR?\n\nPin PyGithub to \u003c 2.9 so archery doesn\u0027t fail.\n\n### Are these changes tested?\n\nYes via CI\n\n### Are there any user-facing changes?\nNo\n\n* GitHub Issue: #49596\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "618d5fbe84ba417123b0341bc1f255a014128311",
      "tree": "50de607238267e9ef7bd278b6f7d50e8b2721f57",
      "parents": [
        "f9315d4e7fb61ac85a77c651dcee84dbfad88472"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Wed Mar 25 08:38:36 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 25 09:38:36 2026 +0100"
      },
      "message": "GH-47389: [Python] CSV and JSON options lack a nice repr/str (#47397)\n\n### Rationale for this change\n\nCSV and JSON options lack a nice repr/str dunder method\n\n### What changes are included in this PR?\n\nAdd both these methods\n\n### Are these changes tested?\n\nWill be once it\u0027s ready for review\n\n### Are there any user-facing changes?\n\nNo\n* GitHub Issue: #47389\n\nLead-authored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nCo-authored-by: AlenkaF \u003cfrim.alenka@gmail.com\u003e\nCo-authored-by: Alenka Frim \u003cAlenkaF@users.noreply.github.com\u003e\nSigned-off-by: AlenkaF \u003cfrim.alenka@gmail.com\u003e"
    },
    {
      "commit": "f9315d4e7fb61ac85a77c651dcee84dbfad88472",
      "tree": "bcb05f6a56b7af91b92eec0a46075a5fb37019d6",
      "parents": [
        "ae5137e503a8afb8dc82be26580a2a27cd37e76b"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Wed Mar 25 09:05:20 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 25 09:05:20 2026 +0100"
      },
      "message": "GH-49565: [Python] Copy CKmsConnectionConfig instead of trying to move the const received one (#49567)\n\n### Rationale for this change\n\nThe [test-ubuntu-22.04-python-313-freethreading](https://github.com/ursacomputing/crossbow/actions/runs/23324175137/job/67841753438) job is currently failing with:\n```\n   [104/119] Building CXX object CMakeFiles/_parquet_encryption.dir/_parquet_encryption.cpp.o\n  FAILED: CMakeFiles/_parquet_encryption.dir/_parquet_encryption.cpp.o\n  /usr/bin/ccache /usr/lib/ccache/x86_64-linux-gnu-g++ -DARROW_HAVE_RUNTIME_AVX2 -DARROW_HAVE_RUNTIME_AVX512 -DARROW_HAVE_RUNTIME_BMI2 -DARROW_HAVE_RUNTIME_SSE4_2 -DARROW_HAVE_SSE4_2 -D_parquet_encryption_EXPORTS -I/usr/include/python3.13t -I/build/python/pyarrow/src -I/tmp/tmp2y9fbxsg/build/pyarrow/src -I/arrow-dev/lib/python3.13t/site-packages/numpy/_core/include -Wno-noexcept-type  -Wall -fno-semantic-interposition -msse4.2  -fdiagnostics-color\u003dalways  -fno-omit-frame-pointer -Wno-unused-variable -Wno-maybe-uninitialized -g -O0  -std\u003dc++20 -fPIC -Wno-unused-function -MD -MT CMakeFiles/_parquet_encryption.dir/_parquet_encryption.cpp.o -MF CMakeFiles/_parquet_encryption.dir/_parquet_encryption.cpp.o.d -o CMakeFiles/_parquet_encryption.dir/_parquet_encryption.cpp.o -c /tmp/tmp2y9fbxsg/build/_parquet_encryption.cpp\n  /tmp/tmp2y9fbxsg/build/_parquet_encryption.cpp: In function ‘PyObject* __pyx_f_7pyarrow_19_parquet_encryption_19KmsConnectionConfig_wrap(const parquet::encryption::KmsConnectionConfig\u0026)’:\n  /tmp/tmp2y9fbxsg/build/_parquet_encryption.cpp:16576:137: error: binding reference of type ‘parquet::encryption::KmsConnectionConfig\u0026’ to ‘const parquet::encryption::KmsConnectionConfig’ discards qualifiers\n  16576 |     __pyx_t_4 \u003d std::make_shared\u003c parquet::encryption::KmsConnectionConfig\u003e(cython_std::move\u003c parquet::encryption::KmsConnectionConfig\u003e(__pyx_v_config));\n        |                                                                                                                                         ^~~~~~~~~~~~~~\n  /tmp/tmp2y9fbxsg/build/_parquet_encryption.cpp:1171:77: note:   initializing argument 1 of ‘typename std::remove_reference\u003c_Tp\u003e::type\u0026\u0026 cython_std::move(T\u0026) [with T \u003d parquet::encryption::KmsConnectionConfig; typename std::remove_reference\u003c_Tp\u003e::type \u003d parquet::encryption::KmsConnectionConfig]’\n   1171 |     template \u003ctypename T\u003e typename std::remove_reference\u003cT\u003e::type\u0026\u0026 move(T\u0026 t) noexcept { return std::move(t); }\n        |   \n```\n\n### What changes are included in this PR?\n\nCopy CKmsConnectionConfig instead of trying to move the const one owned by C++.\n\n### Are these changes tested?\n\nYes via archery\n\n### Are there any user-facing changes?\n\nNo\n\n* GitHub Issue: #49565\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "ae5137e503a8afb8dc82be26580a2a27cd37e76b",
      "tree": "ccbe58a33fb3ad2b70e14f21fd8e365fd9cbd2bc",
      "parents": [
        "a942ed64883cbc9af2cbbd240853cf347d84972a"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Tue Mar 24 17:57:15 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 24 17:57:15 2026 +0000"
      },
      "message": "MINOR: [R]: Update NEWS.md for 23.0.1.X-r releases (#49588)\n\n### Rationale for this change\n\nCherry-picking the NEWS.md updates from the R patch release branches\n\n### What changes are included in this PR?\n\nNEWS updates\n\n### Are these changes tested?\n\nNo\n\n### Are there any user-facing changes?\n\nNo\n\nAuthored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "a942ed64883cbc9af2cbbd240853cf347d84972a",
      "tree": "366ad37949555c1599735605a7766ab6c7a29223",
      "parents": [
        "ee7e2105354732f8521f41e48da1b3841c8873a4"
      ],
      "author": {
        "name": "Jonathan Keane",
        "email": "jkeane@gmail.com",
        "time": "Tue Mar 24 05:13:04 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 24 12:13:04 2026 +0000"
      },
      "message": "GH-49578: [CI][R] gcc sanitizer failure (#49581)\n\n### Rationale for this change\n\nResolve the crossbow failure, I\u0027ve already created an issue upstream\n\n### What changes are included in this PR?\n\nSkipping a test under sanitization\n\n### Are these changes tested?\n\nThey are the tests\n\n### Are there any user-facing changes?\n\nNo\n* GitHub Issue: #49578\n\nAuthored-by: Jonathan Keane \u003cjkeane@gmail.com\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "ee7e2105354732f8521f41e48da1b3841c8873a4",
      "tree": "4ccd3c10b7f7736bacd304e09b2893a95e2f1ba4",
      "parents": [
        "df9dbbc9858fcdc5b5f52545fcedc2c0f492173c"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Tue Mar 24 12:10:32 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 24 12:10:32 2026 +0000"
      },
      "message": "GH-49529: [R] CI job shows NOTE due to \"non-API call\" Rf_findVarInFrame (#49530)\n\n### Rationale for this change\n\nCI job shows NOTE due to \"non-API call\" Rf_findVarInFrame\n\n### What changes are included in this PR?\n\nRemove non-API calls to doesn\u0027t come up on CRAN notes\n\n### Are these changes tested?\n\nI\u0027ll do some CI testing\n\n### Are there any user-facing changes?\n\nNo\n\n### AI use\n\nBasically all of this, with Claude Opus 4.5 but I did ask multiple questions on the reasoning behind the changes and alternatives - don\u0027t understand 100% but looks reasonable to me\n\n* GitHub Issue: #49529\n\nAuthored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nSigned-off-by: Nic Crane \u003cthisisnic@gmail.com\u003e"
    },
    {
      "commit": "df9dbbc9858fcdc5b5f52545fcedc2c0f492173c",
      "tree": "4ee0ca483b4457f8871014f7957c85cde312919d",
      "parents": [
        "af184f5ec9b11528afade4625511bc4210e388be"
      ],
      "author": {
        "name": "Paweł Biegun",
        "email": "69080338+Anakin100100@users.noreply.github.com",
        "time": "Tue Mar 24 04:47:30 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 24 12:47:30 2026 +0100"
      },
      "message": "GH-48588 [C++] Migrate to stdlib span (#49492)\n\n### Rationale for this change\nC++ 20 already includes a span implementation so there is no reason to maintain a custom one in utils as described in #48588\n\n### What changes are included in this PR?\narrow::utils::span definition and tests are removed and usages are replaced with std::span. Some span comparisons in tests are replaced from ASSERT_EQ to ASSERT_TRUE(std::ranges::equal(span1, span2)) because ASSERT_EQ inernally relies on \u003d\u003d operator which is not defined for some types that we used to compare.\n\n### Are these changes tested?\nYes\n\n### Are there any user-facing changes?\nNo\n* GitHub Issue: #48588\n\nLead-authored-by: Paweł Biegun \u003cbiegunpawel900@gmail.com\u003e\nCo-authored-by: Will Ayd \u003cwilliam.ayd@icloud.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "af184f5ec9b11528afade4625511bc4210e388be",
      "tree": "877bfe23143736ec2acda841e9a565988d0e39b4",
      "parents": [
        "999a662a7bfd227b1370c9c8af039ada6ed8717f"
      ],
      "author": {
        "name": "justing-bq",
        "email": "62349012+justing-bq@users.noreply.github.com",
        "time": "Mon Mar 23 17:53:58 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 24 09:53:58 2026 +0900"
      },
      "message": "GH-49561: [C++][FlightRPC][ODBC] Use SQLWCHAR array for wide string literals in test suite (#49562)\n\n### Rationale for this change\nWe want to use a SQLWCHAR array for wide string literal inside our test suite instead of a SQLWCHAR vector.\n\n### What changes are included in this PR?\nSQLWCHAR vector used for wide string literals are replaced with a SQLWCHAR array instead.\nColumns tests were refactored to perform assertions over std::string equality rather than wide string equality.\n\n### Are these changes tested?\nYes\n\n### Are there any user-facing changes?\nNo\n* GitHub Issue: #49561\n\nAuthored-by: justing-bq \u003c62349012+justing-bq@users.noreply.github.com\u003e\nSigned-off-by: David Li \u003cli.davidm96@gmail.com\u003e"
    },
    {
      "commit": "999a662a7bfd227b1370c9c8af039ada6ed8717f",
      "tree": "7d203f2a13d9ef3af538ebc2762df571548aa4a0",
      "parents": [
        "d28aea97914648c3dbd9e62fca1b0a52de6b9da4"
      ],
      "author": {
        "name": "Antoine Prouvost",
        "email": "AntoinePrv@users.noreply.github.com",
        "time": "Tue Mar 24 00:59:34 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 24 08:59:34 2026 +0900"
      },
      "message": "GH-49579: [C++] Fix xsimd 14.1.0 build failure (#49580)\n\n### Rationale for this change\nFix the build on MacOS with newest xsimd version.\nA fix for an internal bug in xsimd had been added in GH-49449 GH-49450 to boost performances.\nNow that the fix has been merged in xsimd 14.1.0, the internals have changed leading to the failure.\nThe ported fix is kept for older xsimd versions until we can set a minimum xsimd version of 14.1.0.\n\n### What changes are included in this PR?\nRemove a backported fix on xsimd versions that include it.\n\n### Are these changes tested?\nYes.\n\n### Are there any user-facing changes?\nNo.\n\n* GitHub Issue: #49579\n\nAuthored-by: AntoinePrv \u003cAntoinePrv@users.noreply.github.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "d28aea97914648c3dbd9e62fca1b0a52de6b9da4",
      "tree": "03412b83bbe8835a21e26806f520dd9fb08355fa",
      "parents": [
        "ba273ca6ca60bd4f3a552172d4a55d1912ab90f4"
      ],
      "author": {
        "name": "Kumar Vanshaj",
        "email": "kumar.vanshaj2023@gmail.com",
        "time": "Mon Mar 23 18:55:46 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 08:25:46 2026 -0500"
      },
      "message": "GH-49380: [R] Remove hidden CI test chunks from setup.Rmd to fix r-de… (#49381)\n\n### Rationale for this change\n\nThe `r-devdocs` crossbow CI job fails during the gap between the C++\nrelease (published to apt) and the R package release (CRAN). Two hidden\nbash chunks in `setup.Rmd` were silently installing the released\n`libarrow-dev` from apt during CI, overwriting the version built from\nthe git checkout. Since the R package (`arrow.so`) was compiled against\nthe newer git-built `libarrow`, loading it against the older apt version\ncaused an undefined symbol ABI mismatch error.\n\n### What changes are included in this PR?\n\nRemoves the hidden CI test chunks from\n`r/vignettes/developers/setup.Rmd`:\n\n- Removed hidden macOS chunk that ran `brew install apache-arrow`\n- Removed hidden Ubuntu chunk that ran `apt install libarrow-dev` (root\ncause of the ABI mismatch)\n- Converted the `MAKEFLAGS\u003d\"LDFLAGS\u003d\"` example from an executable knitr\nchunk to a plain `bash` code block preserves the documentation example\nwithout executing it in CI\n\n### Are these changes tested?\n\nNo, the fix removes the broken test logic from the vignette. As noted by\n@thisisnic, this type of testing should live in proper CI\ninfrastructure, not embedded as hidden code in documentation.\n\n### Are there any user-facing changes?\n\nNo. The rendered documentation is unchanged the `MAKEFLAGS\u003d\"LDFLAGS\u003d\"`\nexample remains visible in the \"Multiple versions of libarrow\"\ntroubleshooting section.\n\n* GitHub Issue: #49380\n\n---------\n\nCo-authored-by: vanshaj2023 \u003cvanshaj2023@users.noreply.github.com\u003e\nCo-authored-by: Jonathan Keane \u003cjkeane@gmail.com\u003e"
    },
    {
      "commit": "ba273ca6ca60bd4f3a552172d4a55d1912ab90f4",
      "tree": "c771f82da2abeff644ea3a704785ae0b35ec951f",
      "parents": [
        "1ffcb4e31d6f54c6e0ef0fc85d3f9c9903753c63"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Mon Mar 23 09:51:34 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 09:51:34 2026 +0100"
      },
      "message": "GH-49569: [CI][Python][C++] Add check targetting Apple clang on deciding whether to use std::bit_width or std::log2p1 (#49570)\n\n### Rationale for this change\n\nClang 15.0.7 (/opt/homebrew/bin/clang++) - Homebrew LLVM fails compiling with:\n```\n   FAILED: [code\u003d1] CMakeFiles/arrow_python.dir/pyarrow/src/arrow/python/arrow_to_pandas.cc.o\n  /opt/homebrew/bin/ccache /opt/homebrew/bin/clang++ -DARROW_HAVE_NEON -DARROW_PYTHON_EXPORTING -Darrow_python_EXPORTS -I/Users/runner/work/arrow/arrow/build/python/pyarrow/src -I/var/folders/gj/d1t24fg93wbdl854js_qwvb00000gn/T/tmpj20nqu3c/build/pyarrow/src -I/Library/Frameworks/Python.framework/Versions/3.11/include/python3.11 -I/tmp/local/include -I/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/numpy/_core/include -fno-aligned-new  -Wall -Wno-unknown-warning-option -Wno-pass-failed -march\u003darmv8-a  -Qunused-arguments -fcolor-diagnostics  -fno-omit-frame-pointer -Wno-unused-variable -Wno-maybe-uninitialized -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-missing-declarations -Wno-sometimes-uninitialized -Wno-return-type-c-linkage -g -O0  -std\u003dc++20 -arch arm64 -mmacosx-version-min\u003d12 -fPIC -Wno-parentheses-equality -MD -MT CMakeFiles/arrow_python.dir/pyarrow/src/arrow/python/arrow_to_pandas.cc.o -MF CMakeFiles/arrow_python.dir/pyarrow/src/arrow/python/arrow_to_pandas.cc.o.d -o CMakeFiles/arrow_python.dir/pyarrow/src/arrow/python/arrow_to_pandas.cc.o -c /Users/runner/work/arrow/arrow/build/python/pyarrow/src/arrow/python/arrow_to_pandas.cc\n  In file included from /Users/runner/work/arrow/arrow/build/python/pyarrow/src/arrow/python/arrow_to_pandas.cc:34:\n  In file included from /tmp/local/include/arrow/array.h:41:\n  In file included from /tmp/local/include/arrow/array/array_base.h:26:\n  In file included from /tmp/local/include/arrow/array/data.h:32:\n  /tmp/local/include/arrow/util/bit_util.h:145:15: error: no member named \u0027log2p1\u0027 in namespace \u0027std\u0027\n    return std::log2p1(x - 1);\n           ~~~~~^\n  1 error generated.\n```\n\nThis seems to be the case of clang not having `__cpp_lib_bitops` defined but `std::log2p1` having been removed.\n\n### What changes are included in this PR?\n\nCheck for `__apple_build_version__` instead of `__clang__` so non Apple Clang just uses `std::bit_width`\n\n### Are these changes tested?\n\nVia CI\n\n### Are there any user-facing changes?\n\nNo\n* GitHub Issue: #49569\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "1ffcb4e31d6f54c6e0ef0fc85d3f9c9903753c63",
      "tree": "69067a21438f3efe6c3b9ab5069ddc50b96a866a",
      "parents": [
        "c24bc29100a141ecc7372e1f786d6505c6337360"
      ],
      "author": {
        "name": "Gang Wu",
        "email": "ustcwg@gmail.com",
        "time": "Mon Mar 23 16:42:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 16:42:23 2026 +0800"
      },
      "message": "GH-49559: [C++][Parquet] Fix uncontrolled recursion in WKBGeometryBounder::MergeGeometryInternal (#49558)\n\n### Rationale for this change\n\nFix `MergeGeometryInternal` stack overflow from deeply nested WKB GeometryCollection inputs.\n\n### What changes are included in this PR?\n\nAdded a depth limit (128) to `MergeGeometryInternal` to prevent stack overflow when parsing deeply nested WKB GeometryCollection inputs.\n\n### Are these changes tested?\n\nA unit test `TestWKBBounderErrorForDeepNesting` has been included to ensure proper exception throwing upon exceeding the limit.\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #49559\n\nLead-authored-by: Gang Wu \u003custcwg@gmail.com\u003e\nCo-authored-by: google-labs-jules[bot] \u003c161369871+google-labs-jules[bot]@users.noreply.github.com\u003e\nCo-authored-by: wgtmac \u003c4684607+wgtmac@users.noreply.github.com\u003e\nSigned-off-by: Gang Wu \u003custcwg@gmail.com\u003e"
    },
    {
      "commit": "c24bc29100a141ecc7372e1f786d6505c6337360",
      "tree": "b01649730fea5402567d5a9f53726f84c398e962",
      "parents": [
        "10eaafd2b4af3ca3e68181636ba4087c236d0c1d"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Mon Mar 23 06:32:49 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 06:32:49 2026 +0900"
      },
      "message": "GH-49576: [Ruby] Add support for custom metadata in Footer (#49577)\n\n### Rationale for this change\n\nIn file format, Footer can have custom metadata.\n\n### What changes are included in this PR?\n\n* Add `garrow_record_batch_file_reader_get_metadata()`\n* Add `garrow_record_batch_file_writer_new_full()`\n* Add `ArrowFormat::FileReader#metadata`\n* Add `metadata` to `ArrowFormat::FileWriter#finish`\n* Add `metadata:` to `Arrow::Table#save`\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nYes.\n\n* GitHub Issue: #49576\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "10eaafd2b4af3ca3e68181636ba4087c236d0c1d",
      "tree": "76f8d075f414b464798e459b58ad1da80049d82f",
      "parents": [
        "8a8e574b350498e547ad7eaef2ef8fd7049d7ac0"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Sat Mar 21 17:59:16 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 21 17:59:16 2026 +0900"
      },
      "message": "GH-49544: [Ruby] Add benchmark for readers (#49545)\n\n### Rationale for this change\n\nPerformance is important in Apache Arrow. So benchmark is useful for developing Apache Arrow implementation.\n\n### What changes are included in this PR?\n\n* Add benchmarks for file and streaming readers.\n* Add support for `mmap` in streaming reader. \n\nHere are benchmark results on my environment.\n\nPure Ruby implementation is about 5-6x slower than release build C++ implementation but a bit faster than debug build C++ implementation.\n\nRelease build C++/GLib:\n\nFile format:\n\n```console\n$ ruby -v -S benchmark-driver ruby/red-arrow-format/benchmark/file-reader.yaml\nruby 4.1.0dev (2026-02-19T09:04:23Z master 6bb0b6b16c) +PRISM [x86_64-linux]\nWarming up --------------------------------------\n           Arrow::Table.load    11.207k i/s -     12.188k times in 1.087487s (89.23μs/i)\nArrow::RecordBatchFileReader    19.724k i/s -     21.296k times in 1.079727s (50.70μs/i)\n     ArrowFormat::FileReader     3.555k i/s -      3.883k times in 1.092223s (281.28μs/i)\nCalculating -------------------------------------\n           Arrow::Table.load    11.483k i/s -     33.622k times in 2.928024s (87.09μs/i)\nArrow::RecordBatchFileReader    19.673k i/s -     59.170k times in 3.007729s (50.83μs/i)\n     ArrowFormat::FileReader     3.574k i/s -     10.665k times in 2.984214s (279.81μs/i)\n\nComparison:\nArrow::RecordBatchFileReader:     19672.6 i/s\n           Arrow::Table.load:     11482.8 i/s - 1.71x  slower\n     ArrowFormat::FileReader:      3573.8 i/s - 5.50x  slower\n\n```\n\nStreaming format:\n\n```console\n$ ruby -v -S benchmark-driver ruby/red-arrow-format/benchmark/streaming-reader.yaml\nruby 4.1.0dev (2026-02-19T09:04:23Z master 6bb0b6b16c) +PRISM [x86_64-linux]\nWarming up --------------------------------------\n             Arrow::Table.load    11.360k i/s -     12.485k times in 1.099067s (88.03μs/i)\nArrow::RecordBatchStreamReader    20.180k i/s -     21.857k times in 1.083126s (49.56μs/i)\n  ArrowFormat::StreamingReader     3.398k i/s -      3.400k times in 1.000479s (294.26μs/i)\nCalculating -------------------------------------\n             Arrow::Table.load    11.397k i/s -     34.078k times in 2.990170s (87.74μs/i)\nArrow::RecordBatchStreamReader    20.039k i/s -     60.538k times in 3.020964s (49.90μs/i)\n  ArrowFormat::StreamingReader     3.340k i/s -     10.195k times in 3.052059s (299.37μs/i)\n\nComparison:\nArrow::RecordBatchStreamReader:     20039.3 i/s\n             Arrow::Table.load:     11396.7 i/s - 1.76x  slower\n  ArrowFormat::StreamingReader:      3340.4 i/s - 6.00x  slower\n\n```\n\nDebug build C++/GLib:\n\nFile format:\n\n```console\n$ ruby -v -S benchmark-driver ruby/red-arrow-format/benchmark/file-reader.yaml\nruby 4.1.0dev (2026-02-19T09:04:23Z master 6bb0b6b16c) +PRISM [x86_64-linux]\nWarming up --------------------------------------\n           Arrow::Table.load     2.175k i/s -      2.200k times in 1.011375s (459.72μs/i)\nArrow::RecordBatchFileReader     3.129k i/s -      3.421k times in 1.093397s (319.61μs/i)\n     ArrowFormat::FileReader     3.384k i/s -      3.430k times in 1.013625s (295.52μs/i)\nCalculating -------------------------------------\n           Arrow::Table.load     2.145k i/s -      6.525k times in 3.041760s (466.17μs/i)\nArrow::RecordBatchFileReader     3.020k i/s -      9.386k times in 3.108456s (331.18μs/i)\n     ArrowFormat::FileReader     3.368k i/s -     10.151k times in 3.013576s (296.87μs/i)\n\nComparison:\n     ArrowFormat::FileReader:      3368.4 i/s\nArrow::RecordBatchFileReader:      3019.5 i/s - 1.12x  slower\n           Arrow::Table.load:      2145.1 i/s - 1.57x  slower\n\n```\n\nStreaming format:\n\n```console\n$ ruby -v -S benchmark-driver ruby/red-arrow-format/benchmark/streaming-reader.yaml\nruby 4.1.0dev (2026-02-19T09:04:23Z master 6bb0b6b16c) +PRISM [x86_64-linux]\nWarming up --------------------------------------\n             Arrow::Table.load     2.115k i/s -      2.140k times in 1.011815s (472.81μs/i)\nArrow::RecordBatchStreamReader     3.052k i/s -      3.355k times in 1.099273s (327.65μs/i)\n  ArrowFormat::StreamingReader     3.283k i/s -      3.290k times in 1.002016s (304.56μs/i)\nCalculating -------------------------------------\n             Arrow::Table.load     2.198k i/s -      6.345k times in 2.886603s (454.94μs/i)\nArrow::RecordBatchStreamReader     3.105k i/s -      9.156k times in 2.948523s (322.03μs/i)\n  ArrowFormat::StreamingReader     3.225k i/s -      9.850k times in 3.054339s (310.09μs/i)\n\nComparison:\n  ArrowFormat::StreamingReader:      3224.9 i/s\nArrow::RecordBatchStreamReader:      3105.3 i/s - 1.04x  slower\n             Arrow::Table.load:      2198.1 i/s - 1.47x  slower\n\n```\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #49544\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "8a8e574b350498e547ad7eaef2ef8fd7049d7ac0",
      "tree": "0b4059bba9029088727ae3bc3f469351ae050000",
      "parents": [
        "27fdd358b428b3f0d152be250df027e520dc8142"
      ],
      "author": {
        "name": "Bhavana Sundar",
        "email": "41778532+bhavanaeh@users.noreply.github.com",
        "time": "Fri Mar 20 08:38:40 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 20 16:38:40 2026 +0100"
      },
      "message": "GH-49503: [Docs][Python] Documenting .pxi doctests are tested via lib.pyx (#49515)\n\n### Rationale for this change\n\nRunning `python -m pytest --doctest-cython` directly on `.pxi` files doesn\u0027t work because Cython `.pxi` files are included in `.pyx` files at compile time. This isn\u0027t documented, which could _potentially_ confuse contributors.\n\nPlease see discussion in #49279 (comment) by @ AlenkaF for additional context.\n\n### What changes are included in this PR?\n\nAdded a `note` to the Doctest section of the Developing PyArrow documentation explaining that:\n- `.pxi` files cannot be tested directly with `--doctest-cython`\n- Doctests should be run on the `.pyx` file they are included in (e.g., `lib.pyx`)\n- Errors will appear under the `.pyx` file, not the original `.pxi` filename\n\n### Are these changes tested?\n\nDocumentation-only change. No code changes.\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #49503\n\nLead-authored-by: Bhavana Sundar \u003cbhavana7899@gmail.com\u003e\nCo-authored-by: Alenka Frim \u003cAlenkaF@users.noreply.github.com\u003e\nSigned-off-by: AlenkaF \u003cfrim.alenka@gmail.com\u003e"
    },
    {
      "commit": "27fdd358b428b3f0d152be250df027e520dc8142",
      "tree": "2b91d9af3aed479b0a704890506656c2bbf0bfb1",
      "parents": [
        "d08d5e64fcfd8759d3a7089eced3e9a2d7a17f20"
      ],
      "author": {
        "name": "Philipp Ucke",
        "email": "64527676+pucke-dev@users.noreply.github.com",
        "time": "Fri Mar 20 13:41:25 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 20 13:41:25 2026 +0100"
      },
      "message": "MINOR: [Docs]  Clarify struct validity masking with \u0027hidden data\u0027 example  (#49554)\n\n### Rationale for this change\n\nThe current documentation contains a technical inconsistency in the validity bitmap values for column 4.\n\nAccording to the Arrow specification:\n\n\u003e In Arrow, a dedicated buffer, known as the validity (or “null”) bitmap, is used alongside the data indicating whether each value in the array is null or not: a value of 1 means that the value is not-null (“valid”), whereas a value of 0 indicates that the value is null.\n\nIn the existing example, the validity bitmap for the third row of the variable-size binary child array is incorrectly set to 1, despite the row being null. This PR corrects that bit to 0 to align with the fixed-size primitive child array and the overall Arrow memory layout standards.\n\n### What changes are included in this PR?\n\nUpdated the struct-diagram.svg\n\n### Are these changes tested?\n\nNo\n\n### Are there any user-facing changes?\n\nNo\n\nAuthored-by: Philipp Ucke \u003cphilippucke@googlemail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "d08d5e64fcfd8759d3a7089eced3e9a2d7a17f20",
      "tree": "15b704644300c3e76c54be0469a0d578954fa45e",
      "parents": [
        "2cb1f2bceb67a2a8a3863f65b382edee3b1533c7"
      ],
      "author": {
        "name": "tadeja",
        "email": "tadeja@users.noreply.github.com",
        "time": "Wed Mar 18 13:11:39 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 13:11:39 2026 +0100"
      },
      "message": "GH-48470: [Python] Construct UuidArray from list of UuidScalars (#48746)\n\n### Rationale for this change\nFixes #48470. Also fixes all extension types, not just UUID.\n\n### What changes are included in this PR?\nAn extension scalar is unwrapped to its storage type when building arrays.\n\n### Are these changes tested?\nYes, new `test_array_from_extension_scalars` covers builtin (uuid, bool8, json_, opaque) and custom types across all storage types (int, float, bool, string, binary, large string/binary, decimal, fixed-size binary, struct, timestamp, duration, date).\n\n### Are there any user-facing changes?\nNow user can run such an example to get the output below instead of `ArrowInvalid` message.\nThis now works for any extension type, not just UUID.\n```python\nimport pyarrow as pa\npa.array([pa.scalar(b\u00271\u0027*16, type\u003dpa.uuid())], type\u003dpa.uuid())\n``` \n\n```\n\u003cpyarrow.lib.UuidArray object at 0x128186970\u003e\n[\n  31313131313131313131313131313131\n]\n```\n* GitHub Issue: #48470\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": "2cb1f2bceb67a2a8a3863f65b382edee3b1533c7",
      "tree": "34b0980972d3bacbb16cac81d3884ccb7b9573d8",
      "parents": [
        "ccd0051369f3ca43eccd02a73a02fca710f4adff"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Wed Mar 18 12:01:15 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 12:01:15 2026 +0100"
      },
      "message": "GH-49546: [Docs][Python] Fix documented editable build commands where verbose flags order was wrong (#49547)\n\n### Rationale for this change\n\nThe current documented command was wrong as `--editable -vv .` fails it should be `--editable . -vv` or `-vv --editable .`\n\n### What changes are included in this PR?\n\nUpdate documentation for all `--editable` commands.\n\n### Are these changes tested?\n\nTested the new command is correct.\n\n### Are there any user-facing changes?\n\nNo\n\n* GitHub Issue: #49546\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: AlenkaF \u003cfrim.alenka@gmail.com\u003e"
    },
    {
      "commit": "ccd0051369f3ca43eccd02a73a02fca710f4adff",
      "tree": "1dd8a985709a3cba99aade39ca9a46db87beac2f",
      "parents": [
        "9cbd40183176d6e417c21176e57c9b6ab584046f"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Wed Mar 18 19:12:09 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 11:12:09 2026 +0100"
      },
      "message": "GH-49541: [C++] `ARROW_FLIGHT_SQL\u003dON` and `ARROW_BUILD_EXAMPLES\u003dON` need gflags (#49542)\n\n### Rationale for this change\n\n`flight-sql-test-server` needs gflags: https://github.com/apache/arrow/blob/6dfef94283d02c6a584640ed7098a73d385814a4/cpp/src/arrow/flight/sql/CMakeLists.txt#L166-L168\n\n### What changes are included in this PR?\n\nRequire gflags with `ARROW_FLIGHT_SQL\u003dON` and `ARROW_BUILD_EXAMPLES\u003dON`.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nYes.\n* GitHub Issue: #49541\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "9cbd40183176d6e417c21176e57c9b6ab584046f",
      "tree": "df96132f0eccf3d8039ee9a989cf462ec72535fc",
      "parents": [
        "6dfef94283d02c6a584640ed7098a73d385814a4"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Wed Mar 18 18:28:54 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 10:28:54 2026 +0100"
      },
      "message": "GH-49499: [C++] Improve arrow vcpkg port integration (#49543)\n\n### Rationale for this change\n\nWe already have CMake configurations only for vcpkg but it\u0027s not used when our CMake packages is installed by vcpkg.\n\n### What changes are included in this PR?\n\nWe\u0027re using `ARROW_DEPENDENCY_SOURCE\u003dVCPKG` to detect that Apache Arrow is building with dependencies installed by vcpkg but we can\u0027t use it in our CMake packages installed by arrow vcpkg port. Because arrow vcpkg port doesn\u0027t use `ARROW_DEPENDENCY_SOURCE\u003dVCPKG`.\n\nWe can use `ARROW_PACKAGE_KIND\u003dvcpkg` to detect whether our CMake packages are installed by arrow vcpkg port. Because arrow vcpkg port uses `ARROW_PACKAGE_KIND\u003dvcpkg`.\n\nThis also fixes a variable name typo in `FindSnappyAlt`.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nYes.\n* GitHub Issue: #49499\n\nLead-authored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nCo-authored-by: Marcin Krystianc \u003cmarcin.krystianc@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "6dfef94283d02c6a584640ed7098a73d385814a4",
      "tree": "b4963f55e27af40b546d90bde734dc8267cf7958",
      "parents": [
        "7ec459a416d6922a191998a12dd9aba08a041ded"
      ],
      "author": {
        "name": "tadeja",
        "email": "tadeja@users.noreply.github.com",
        "time": "Tue Mar 17 18:33:51 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 18:33:51 2026 +0100"
      },
      "message": "GH-49509: [Docs][Python][C++] Minimize warnings and docutils errors for Sphinx build html (#49510)\n\n### Rationale for this change\nCloses #49509\n\n### What changes are included in this PR?\nDocs formatting/typos corrected.\n\n### Are these changes tested?\nYes, on fork branch.\n\n### Are there any user-facing changes?\nNo, just corrected formatting/typos in docs.\n* GitHub Issue: #49509\n\nAuthored-by: Tadeja Kadunc \u003ctadeja.kadunc@gmail.com\u003e\nSigned-off-by: Rok Mihevc \u003crok@mihevc.org\u003e"
    },
    {
      "commit": "7ec459a416d6922a191998a12dd9aba08a041ded",
      "tree": "adb001e3321bdd72b5b0e874daf1c5eca6b824a5",
      "parents": [
        "34880c0428cac1a7b0d6de7d70b626cdf2e03ba0"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Tue Mar 17 17:41:45 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 17:41:45 2026 +0100"
      },
      "message": "GH-49531: [CI][Packaging][Python] Ignore cleanup errors trying to remove loaded DLLs from temp dir (#49532)\n\n### Rationale for this change\n\nUpdating docstrings is failing on Windows trying to remove arrow.dll from tempdir because its still loaded in memory.\n\n### What changes are included in this PR?\n\nAdded `ignore_cleanup_errors\u003dTrue`\n\n### Are these changes tested?\n\nYes via archery\n\n### Are there any user-facing changes?\n\nNo\n\n* GitHub Issue: #49531\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "34880c0428cac1a7b0d6de7d70b626cdf2e03ba0",
      "tree": "cf1572416cbdc613a65b440987e23af81beb0279",
      "parents": [
        "9577ca4e7833eb355c6664c6423b4ab26fa68f14"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Tue Mar 17 10:39:33 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 10:39:33 2026 +0100"
      },
      "message": "GH-49473: [Python] Fix get_include and get_library_dirs to work with both editable and non-editable builds (#49476)\n\n### Rationale for this change\n\nWith `scikit-build-core` our Cython tests fail to find PyArrow C++ headers due to get_include returning a non-existent directory.\n\n### What changes are included in this PR?\n\nEditable builds location of libraries and headers are located at ``\n\nPrevious to this change:\n```\n$ python -c \"import pyarrow as pa; print(pa.get_include())\"\n/home/raulcd/code/arrow/python/pyarrow/include\n$ ls /home/raulcd/code/arrow/python/pyarrow/include\nls: cannot access \u0027/home/raulcd/code/arrow/python/pyarrow/include\u0027: No such file or directory\n```\nwith this change:\n```\n$ python -c \"import pyarrow as pa; print(pa.get_include())\"\n/home/raulcd/code/pyarrow-dev/lib/python3.13/site-packages/pyarrow/include\n$ ls /home/raulcd/code/pyarrow-dev/lib/python3.13/site-packages/pyarrow/include\narrow\n```\n### Are these changes tested?\n\nYes, locally for editable installs and on CI for non-editable.\n\n### Are there any user-facing changes?\n\nThe only change is that headers, generated Cython cpp files and built shared libraries are installed on the virtualenv.\n\n* GitHub Issue: #49473\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "9577ca4e7833eb355c6664c6423b4ab26fa68f14",
      "tree": "a5752fbb1d49392b90d9761d5bbd86f7bde1bcf7",
      "parents": [
        "9082b4737c5ddd3f6c2ada4b67233eb18947cd9d"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Mar 16 21:21:46 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 05:21:46 2026 +0900"
      },
      "message": "GH-49526: [CI] Update Maven version from 3.8.7 to 3.9.9 (#49488)\n\n### Rationale for this change\n\nThis is related to https://github.com/apache/arrow-java/pull/1030. Upgrading to Apache POM 37 on Arrow Java requires Maven 3.9.x as some Maven plugins require this API version.\n\n### What changes are included in this PR?\n\nBumps Maven from 3.8.7 to 3.9.9 in `.env` and all CI Dockerfiles that reference the Maven version:\n- `.env`\n- `ci/docker/conda-integration.dockerfile`\n- `ci/docker/conda-python-hdfs.dockerfile`\n- `ci/docker/conda-python-jpype.dockerfile`\n- `ci/docker/conda-python-spark.dockerfile`\n\n### Are these changes tested?\n\nCrossbow CI jobs were submitted for the affected configurations (HDFS, Spark).\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #49526\n\nAuthored-by: JB Onofré \u003cjbonofre@apache.org\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "9082b4737c5ddd3f6c2ada4b67233eb18947cd9d",
      "tree": "54ee50ee62ef2d58f018895d458081f6c5540c4e",
      "parents": [
        "c6c3d53a125751ea0cb45d2e36acb2c424b3a029"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Mon Mar 16 21:15:02 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 05:15:02 2026 +0900"
      },
      "message": "GH-49521: [CI][Packaging] Try removing KEY that seems bad from downloaded KEYS file (#49525)\n\n### Rationale for this change\n\nSome CI jobs fail validating a newly added GPG key.\n\n### What changes are included in this PR?\n\nRemove this key from the processed ones on the packaging jobs as we do with others similar.\n\n### Are these changes tested?\n\nYes on CI\n\n### Are there any user-facing changes?\n\nNo\n\n* GitHub Issue: #49521\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "c6c3d53a125751ea0cb45d2e36acb2c424b3a029",
      "tree": "6f65d7ae00fb96099cb9060019397ca1ea73124f",
      "parents": [
        "d6ce56e350633afc2fee16fb4e2347a18df1041a"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Mon Mar 16 12:37:54 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 12:37:54 2026 +0100"
      },
      "message": "GH-49518: [CI] Do not override HOME to empty on build_conda.sh for minimal_build (#49519)\n\n### Rationale for this change\n\nThe CI job is currently failing\n\n### What changes are included in this PR?\n\nDo not set HOME to empty on `build_conda.sh` otherwise ccache fails creating cache folders. Just use default HOME and use WORKDIR\n\n### Are these changes tested?\n\nYes via the failing job on archery.\n\n### Are there any user-facing changes?\n\nNo\n\n* GitHub Issue: #49518\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "d6ce56e350633afc2fee16fb4e2347a18df1041a",
      "tree": "8ba8573d50053b4e81ed954f750e85f138ff0778",
      "parents": [
        "a315b961cd6ab7b438d02a02f7aee3ff5c0c87c2"
      ],
      "author": {
        "name": "Dmitry Chirkov",
        "email": "dmitry.chirkov@dremio.com",
        "time": "Sun Mar 15 14:54:09 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 15 14:54:09 2026 -0700"
      },
      "message": "GH-49470: [C++][Gandiva] Fix crashes in substring_index and truncate with extreme integer values (#49471)\n\n### Rationale for this change\n\nTwo Gandiva functions crash when called with extreme integer parameter values:\n1. `substring_index(VARCHAR, VARCHAR, INT)` crashes with SIGBUS when count is `INT_MIN`\n2. `truncate(BIGINT, INT)` crashes with SIGSEGV when scale is `INT_MAX` or `INT_MIN`\n\n### What changes are included in this PR?\n\n**substring_index fix** (`gdv_string_function_stubs.cc`):\n- Replace `abs(cnt)` with safe `int64_t` computation to avoid undefined behavior when `cnt \u003d\u003d INT_MIN`\n\n**truncate fix** (`precompiled/extended_math_ops.cc`):\n- Return input unchanged for positive scales (no-op for integers)\n- Return 0 for scales \u003c -38 to prevent out-of-bounds access in `GetScaleMultiplier`\n\n### Are these changes tested?\n\nYes. Added coverage for `INT_MAX`/`INT_MIN` values in `gdv_function_stubs_test.cc` and `extended_math_ops_test.cc`.\n\n### Are there any user-facing changes?\n\nNo.\n\n**This PR contains a \"Critical Fix\".** These changes fix crashes caused by:\n- `abs(INT_MIN)` triggering undefined behavior (integer overflow) in `substring_index`\n- Out-of-bounds array access in `GetScaleMultiplier` when `truncate` receives extreme scale values\n* GitHub Issue: #49470\n\nAuthored-by: Dmitry Chirkov \u003cdmitry.chirkov@dremio.com\u003e\nSigned-off-by: Rossi Sun \u003czanmato1984@gmail.com\u003e"
    },
    {
      "commit": "a315b961cd6ab7b438d02a02f7aee3ff5c0c87c2",
      "tree": "30c895688f8c12b0f23b3e6f82ae71656791dc98",
      "parents": [
        "0a2a0c75f9e8106d0ad7e53d2e3183a89c043620"
      ],
      "author": {
        "name": "Rok Mihevc",
        "email": "rok@mihevc.org",
        "time": "Fri Mar 13 16:23:34 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 13 16:23:34 2026 +0100"
      },
      "message": "GH-49506: [CI][Python] Doctest fails when pyarrow._cuda absent (#49507)\n\n### Rationale for this change\n\nSee https://github.com/apache/arrow/issues/49506.\n\n### What changes are included in this PR?\n\nWe skip cuda docstests in CI, since we don\u0027t build for CUDA.\n\n### Are these changes tested?\n\nWe currently see failing CI. That should go away.\n\n### Are there any user-facing changes?\n\nOnly to CI users.\n* GitHub Issue: #49506\n\nLead-authored-by: Rok Mihevc \u003crok@mihevc.org\u003e\nCo-authored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Rok Mihevc \u003crok@mihevc.org\u003e"
    },
    {
      "commit": "0a2a0c75f9e8106d0ad7e53d2e3183a89c043620",
      "tree": "da8d8e9c12c9bf4bcc314a3d752683ad04d83e5f",
      "parents": [
        "b9274bc9e043338e070f342503e392b935e5fbfa"
      ],
      "author": {
        "name": "Rok Mihevc",
        "email": "rok@mihevc.org",
        "time": "Fri Mar 13 11:49:26 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 13 11:49:26 2026 +0100"
      },
      "message": "GH-49452: [Python] Reintroduce docstring injection for stubfiles (#49453)\n\n### Rationale for this change\n\nWarning: should not be merged before https://github.com/apache/arrow/pull/49259.\nSee https://github.com/apache/arrow/issues/49452 and https://github.com/apache/arrow/pull/48618\n\n### What changes are included in this PR?\n\nAdds a wheel build time script to populate stubfiles with runtime docstrings.\n\n### Are these changes tested?\n\nNot yet.\n\n### Are there any user-facing changes?\n\nUsers will get docstrings.\n* GitHub Issue: #49452\n\nLead-authored-by: Rok Mihevc \u003crok@mihevc.org\u003e\nCo-authored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Rok Mihevc \u003crok@mihevc.org\u003e"
    },
    {
      "commit": "b9274bc9e043338e070f342503e392b935e5fbfa",
      "tree": "599fd8f0c661e2d155836f941c7474e9ac93c1e5",
      "parents": [
        "570771343b2666e801e5d289e33cca22243a6bf1"
      ],
      "author": {
        "name": "Dmitry Chirkov",
        "email": "dmitry.chirkov@dremio.com",
        "time": "Thu Mar 12 22:56:56 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 13 14:56:56 2026 +0900"
      },
      "message": "GH-49420: [C++][Gandiva] Fix castVARCHAR memory allocation and len\u003c\u003d0 handling (#49421)\n\n### Rationale for this change\nThe `castVARCHAR` functions in Gandiva have memory allocation inefficiencies and missing edge case handling. See GH-49420 for details.\n\n### What changes are included in this PR?\n**Functional fixes:**\n- `bool`: Remove unused 5-byte arena allocation; return string literal directly\n- `int32`/`int64`: Add handling for `len\u003d0` (return empty string) and `len\u003c0` (set error)\n\n**Memory allocation optimizations:**\n- `int32`/`int64`: Allocate fixed small buffer (11/20 bytes) directly in arena, use optimized digit-pair conversion writing right-to-left, then `memmove` to align. Returns `min(len, actual_size)` bytes.\n- `date64`: Allocate only `min(len, 10)` bytes upfront (output is always \"YYYY-MM-DD\")\n- `float32`/`float64`: Allocate only `min(len, 24)` bytes upfront (max output length)\n\n**Code cleanup:**\n- Extract common code into helper macros to reduce duplication\n\n### Are these changes tested?\nYes. Added tests for `len\u003d0` and `len\u003c0` edge cases for int64, date64, float32, float64, and bool types. All existing Gandiva tests pass. Adhoc performance benchmarking was performed both via direct expression evaluation as well as via query execution via Dremio.\n\n### Are there any user-facing changes?\nNo. Users will see reduced memory usage and proper error messages for invalid len parameter values.\nNote: Error messages for negative `len` remain different between precompiled (\"Output buffer length can\u0027t be negative\") and interpreted (\"Buffer length cannot be negative\") code paths, preserving existing behavior.\n* GitHub Issue: #49420\n\nAuthored-by: Dmitry Chirkov \u003cdmitry.chirkov@dremio.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "570771343b2666e801e5d289e33cca22243a6bf1",
      "tree": "a0f9bb70d22395b521178d6ac7aed003c34aa835",
      "parents": [
        "d436b238a9df1472c86bc2cc1bce46df7cb1d6db"
      ],
      "author": {
        "name": "Dmitry Chirkov",
        "email": "dmitry.chirkov@dremio.com",
        "time": "Thu Mar 12 21:40:29 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 13 13:40:29 2026 +0900"
      },
      "message": "GH-49438: [C++][Gandiva] Optimize LPAD/RPAD functions (#49439)\n\n### Rationale for this change\nThe `lpad_utf8_int32_utf8` and `rpad_utf8_int32_utf8` functions have performance inefficiency and a potential memory safety issue:\n1. **Performance**: Single-byte fills iterate character-by-character when `memset` would suffice. Multi-byte fills use O(n) iterations instead of O(log n) with a doubling strategy.\n2. **Memory safety**: When the fill string is longer than the padding space needed, the code could write more bytes than allocated. Fixed preventatively.\n\n### What changes are included in this PR?\n1. **Memory safety fix**: Use `std::min(fill_text_len, total_fill_bytes)` for the initial copy to prevent overflow\n2. **Fast path**: Add single-byte fill optimization using `memset`\n3. **General path**: Replace character-by-character loop with doubling strategy for multi-byte fills\n4. **Tests**: Add comprehensive tests for the new code paths\n\n### Are these changes tested?\nYes. Added tests covering:\n- Large UTF-8 fill characters (4-byte emoji, 3-byte Chinese)\n- Single-byte fill boundaries (1 char and 65536 char padding)\n- Content verification for fill patterns\n- Doubling strategy boundaries\n- Partial fill scenarios (fill text longer than padding needed)\n\n### Are there any user-facing changes?\nNo.\n* GitHub Issue: #49438\n\nAuthored-by: Dmitry Chirkov \u003cdmitry.chirkov@dremio.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "d436b238a9df1472c86bc2cc1bce46df7cb1d6db",
      "tree": "08a1fffbc643db54ef9d5a390ff161ad1396204f",
      "parents": [
        "21a2d4f81df61ff49ceb12e5205ea38cd1f70012"
      ],
      "author": {
        "name": "Dmitry Chirkov",
        "email": "dmitry.chirkov@dremio.com",
        "time": "Thu Mar 12 21:38:26 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 13 13:38:26 2026 +0900"
      },
      "message": "GH-49454: [C++][Gandiva] Fix castVARCHAR_timestamp for pre-epoch timestamps (#49455)\n\n### Rationale for this change\nGH-49454 castVARCHAR_timestamp_int64 produces negative milliseconds for pre-epoch timestamps\n\n### What changes are included in this PR?\nFixed `castVARCHAR_timestamp_int64` to correctly handle pre-epoch timestamps (before 1970-01-01). The issue was that using `in % MILLIS_IN_SEC` on negative timestamps produces negative milliseconds, resulting in output like `\"0107-10-17 12:20:03.-10\"`.\n\n### Are these changes tested?\nYes, added 4 new test cases covering pre-epoch timestamps with milliseconds\n\n### Are there any user-facing changes?\n**This PR contains a \"Critical Fix\".**\nThis fixes a bug that caused **incorrect data to be produced** when casting pre-epoch timestamps to VARCHAR in Gandiva. Previously, timestamps before 1970-01-01 with non-zero milliseconds would produce invalid output with negative millisecond values (e.g., `\"0107-10-17 12:20:03.-10\"` instead of `\"0107-10-17 12:20:03.900\"`).\n* GitHub Issue: #49454\n\nAuthored-by: Dmitry Chirkov \u003cdmitry.chirkov@dremio.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "21a2d4f81df61ff49ceb12e5205ea38cd1f70012",
      "tree": "9e5bc220f821a34d9a8a7d739bc127399b86480b",
      "parents": [
        "771205b0042b0949ce5fbd24b99211bb36a5dbda"
      ],
      "author": {
        "name": "justing-bq",
        "email": "62349012+justing-bq@users.noreply.github.com",
        "time": "Thu Mar 12 18:51:03 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 13 10:51:03 2026 +0900"
      },
      "message": "GH-49268: [C++][FlightRPC] Fix ODBC tests for MacOS (#49267)\n\n### Rationale for this change\nAddresses https://github.com/apache/arrow/issues/49268\n\n### What changes are included in this PR?\n- Fixed Mock Server setup to work on both Windows and MacOS.\n- Changed Mocker Server setup logic to happen once at the Test Environment level.\n- Changed test connect/disconnect logic to happen once per test fixture instead of once per test.\n- Disabled tests that are not appliable to MacOS (usually because iODBC doesn\u0027t support the relevant functionality).\n- Adjusted expected SQL States where different on Mac.\n- Fixed any tests failing on MacOS.\n\n### Are these changes tested?\nYes.\n\n### Are there any user-facing changes?\nNo.\n* GitHub Issue: #49268\n\nLead-authored-by: Alina (Xi) Li \u003calinal@bitquilltech.com\u003e\nCo-authored-by: justing-bq \u003c62349012+justing-bq@users.noreply.github.com\u003e\nCo-authored-by: Alina (Xi) Li \u003c96995091+alinaliBQ@users.noreply.github.com\u003e\nCo-authored-by: justing-bq \u003cjustin.gossett@improving.com\u003e\nCo-authored-by: alinalibq \u003calina.li@improving.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "771205b0042b0949ce5fbd24b99211bb36a5dbda",
      "tree": "811a30fc095e8213c5fec9bd81b94883eace704a",
      "parents": [
        "59e0810362c23be0a68882b59e6c25a32c7aa898"
      ],
      "author": {
        "name": "tadeja",
        "email": "tadeja@users.noreply.github.com",
        "time": "Thu Mar 12 16:58:32 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 16:58:32 2026 +0100"
      },
      "message": "GH-49435: [CI][C++] Fix macOS build with Homebrew protobuf v34 (#49491)\n\n### Rationale for this change\nCloses #49435\n\n### What changes are included in this PR?\na) Add brew update to `cpp.yml` and `python.yml` for GitHub Actions runner to use updated formulae\nb) Handle \u0027nodiscard\u0027 return values in Flight and Substrait\n\nSee https://github.com/grpc/grpc/issues/41755\n(See also previous discussion in [#49436](https://github.com/apache/arrow/pull/49436#issuecomment-4003351021))\n\n### Are these changes tested?\nYes, macOS C++ and Python CI jobs pass.\n\n### Are there any user-facing changes?\nNo.\n* GitHub Issue: #49435\n\nLead-authored-by: Tadeja Kadunc \u003ctadeja.kadunc@gmail.com\u003e\nCo-authored-by: tadeja \u003ctadeja@users.noreply.github.com\u003e\nCo-authored-by: Sutou Kouhei \u003ckou@cozmixng.org\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "59e0810362c23be0a68882b59e6c25a32c7aa898",
      "tree": "7e4ecafd70eebbdd7a654fa858cbfba622ddc6c8",
      "parents": [
        "3c5825b30dbb5a897a903034c12ce6ece664c560"
      ],
      "author": {
        "name": "Jonathan Keane",
        "email": "jkeane@gmail.com",
        "time": "Thu Mar 12 09:16:29 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 09:16:29 2026 -0500"
      },
      "message": "GH-49495: [C++][CI] Resolve ubuntu clang failure with parquet fuzzing (#49496)"
    },
    {
      "commit": "3c5825b30dbb5a897a903034c12ce6ece664c560",
      "tree": "6d84a5ffe733e554a7f5f96f97ddc074d2d9715f",
      "parents": [
        "3a9d9bc716afce97a4b7c802e2f5892cdd3bda72"
      ],
      "author": {
        "name": "ChiLin Chiu",
        "email": "chilin.chiou@gmail.com",
        "time": "Thu Mar 12 21:01:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 14:01:39 2026 +0100"
      },
      "message": "GH-49278: [Python][Doc] Add from_numpy examples for sparse tensor constructors (#49279)\n\n\n### Rationale for this change\n\nFollow-up from #49147 (comment: https://github.com/apache/arrow/pull/49147#issuecomment-3879302706).\n\n### What changes are included in this PR?\n\nAdd `from_numpy` docstring examples.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n* GitHub Issue: #49278\n\nAuthored-by: ChiLin Chiu \u003cchilin.chiou@gmail.com\u003e\nSigned-off-by: AlenkaF \u003cfrim.alenka@gmail.com\u003e"
    },
    {
      "commit": "3a9d9bc716afce97a4b7c802e2f5892cdd3bda72",
      "tree": "c3b4249ed1a2f1ac1f9b1f0285b307919b5fcbe3",
      "parents": [
        "669830165a26eaa8169b3f5bef07137aec6f0711"
      ],
      "author": {
        "name": "Ebraam",
        "email": "168275494+Ebraam-Ashraf@users.noreply.github.com",
        "time": "Thu Mar 12 13:41:48 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 20:41:48 2026 +0900"
      },
      "message": "GH-49410: [C++] Fix if_else null-scalar fast paths for sliced BaseBinary arrays (#49443)\n\n### Rationale for this change\n`if_else` with a null scalar and a sliced `BaseBinary` array (`offsets[0] !\u003d 0`) produces invalid output. The ASA and AAS shortcut paths in `scalar_if_else.cc` copy offsets without adjusting for the slice offset, and copy data from byte 0 instead of `data + offsets[0]`.\n\n### What changes are included in this PR?\n\n**Fix** (`scalar_if_else.cc`): In both the ASA and AAS fast paths:\n- Replace the single `memcpy` for the offsets buffer with a loop that normalizes each offset by subtracting `offsets[0]` as a base, so output offsets always start at 0.\n- Change the data copy to start from `data + base` instead of `data`, so only the bytes belonging to the slice are copied.\n\n**Regression tests (`scalar_if_else_test.cc`):**\n- `IfElseBaseBinarySliced`: covers sliced arrays (`array.offset !\u003d 0`) for both ASA and AAS paths.\n- `IfElseBaseBinaryNonZeroFirst`: covers the edge case where `array.offset \u003d\u003d 0` but `offsets[0] !\u003d 0`, manually constructed via `ArrayData::Make()`.\n\n### Are these changes tested?\n\nYes. The new `IfElseBaseBinarySliced` typed test reproduces the bug and passes after the fix. All 416 existing tests continue to pass.\n\n### Are there any user-facing changes?\n\nYes. The bug causes incorrect/invalid data to be produced when `if_else` is called with a null scalar and a sliced `BaseBinary` array.\n\n* GitHub Issue: #49410\n\nLead-authored-by: Ebraam \u003cebraam.ashraf@gmail.com\u003e\nCo-authored-by: Ebraam \u003c168275494+Ebraam-Ashraf@users.noreply.github.com\u003e\nCo-authored-by: Ibraam-Ashraf \u003c168275494+Ibraam-Ashraf@users.noreply.github.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "669830165a26eaa8169b3f5bef07137aec6f0711",
      "tree": "c15eb4dc5644a7669846049837fd1e63cf0a4ec2",
      "parents": [
        "ced400eddf21d6be98e74fa716f5228e0c9913c2"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Thu Mar 12 07:18:38 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 15:18:38 2026 +0900"
      },
      "message": "GH-49493: [C++][Python] Add OpenTelemetry to our CMakePresets when bulding python-maximal (#49494)\n\n### Rationale for this change\n\nOpenTelemetry can be enabled when building Python. It is currently missing from the `CMakePresets.json`\n\n### What changes are included in this PR?\n\nAdd a `features-opentelemetry` which is added as part of `features-python-maximal`. This one is used for `ninja-debug-maximal` or other maximal features.\n\n### Are these changes tested?\n\nI tested locally with `ninja-debug-maximal` and validated that OpenTelemetry was enabled. I don\u0027t think we test our presets on CI (at least I haven\u0027t been able to find any `--preset ` presence)\n\n### Are there any user-facing changes?\n\nIf a user is building using presets, now OpenTelemetry will be built, as expected.\n\n* GitHub Issue: #49493\n\nAuthored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "ced400eddf21d6be98e74fa716f5228e0c9913c2",
      "tree": "e5f0215d355b4de9d739712c7f9c9bf035edf359",
      "parents": [
        "9b134ec2869b7602496c7f34a1c18424c5027026"
      ],
      "author": {
        "name": "Michael Chirico",
        "email": "michaelchirico4@gmail.com",
        "time": "Wed Mar 11 07:14:22 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 11 09:14:22 2026 -0500"
      },
      "message": "MINOR: [R] Fix all.equal registration (#49481)\n\nThis is due to https://github.com/r-lib/roxygen2/issues/1587.\n\nIt will go away when {roxygen2} is next released, but offering a\nproactive fix anyway."
    },
    {
      "commit": "9b134ec2869b7602496c7f34a1c18424c5027026",
      "tree": "65fc80dafe733b41be5066c29bc7d28426e27afa",
      "parents": [
        "ca6845248b014db7131ba6dccec5f91b04b4543d"
      ],
      "author": {
        "name": "Antoine Pitrou",
        "email": "antoine@python.org",
        "time": "Wed Mar 11 11:46:36 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 11 11:46:36 2026 +0100"
      },
      "message": "GH-49477: [C++][Parquet] Fix multiplication overflow in PLAIN BYTE_ARRAY decoder (#49478)\n\n### Rationale for this change\n\nIssue found by OSS-Fuzz: https://issues.oss-fuzz.com/issues/489948953\n\n### Are these changes tested?\n\nBy added regression file.\n\n### Are there any user-facing changes?\n\nNo.\n\n**This PR contains a \"Critical Fix\".** Signed integer overflow is undefined behavior, so this could result in any kind of misbehavior.\n* GitHub Issue: #49477\n\nAuthored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "ca6845248b014db7131ba6dccec5f91b04b4543d",
      "tree": "7da61ef55dcc7c12c07036af4ff8b78ac4526941",
      "parents": [
        "425666c8b726dd81401d56305bc5138f755f3663"
      ],
      "author": {
        "name": "William Ayd",
        "email": "william.ayd@icloud.com",
        "time": "Tue Mar 10 16:28:49 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 11 05:28:49 2026 +0900"
      },
      "message": "GH-49486: [CI][C++] Fix Meson build missing tensor extension sources (#49487)\n\n## Summary\n- Add `extension/tensor_internal.cc` and `extension/variable_shape_tensor.cc` to the `arrow_json` sources in `meson.build`\n- Add `variable_shape_tensor.h` to installed headers in `extension/meson.build`\n- These files were present in `CMakeLists.txt` but missing from the Meson build, causing undefined reference linker errors for `variable_shape_tensor()`, `IsPermutationTrivial()`, `IsPermutationValid()`, `ComputeStrides()`, and `SliceTensorBuffer()`\n\n## Test plan\n- [ ] Verify the Meson CI build passes without linker errors\n\n* GitHub Issue: #49486\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nAuthored-by: Will Ayd \u003cwilliam.ayd@icloud.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "425666c8b726dd81401d56305bc5138f755f3663",
      "tree": "11b93d5156f1f10f7d2bed9120fa60a0660ebd57",
      "parents": [
        "5f12de2ffb4ad7a24c2b9dff0d6aac3f84ef3989"
      ],
      "author": {
        "name": "Antoine Pitrou",
        "email": "antoine@python.org",
        "time": "Tue Mar 10 16:28:02 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 10 16:28:02 2026 +0100"
      },
      "message": "GH-49448: [C++][CI] Detect mismatching schema in differential IPC fuzzing (#49451)\n\n### Rationale for this change\n\nIn https://github.com/apache/arrow/issues/49311 we added differential fuzzing for the IPC file fuzzer, where we compare the contents as read by the IPC file reader and the IPC stream reader, respectively.\n\nHowever, as the IPC file footer carries a duplicate definition of the file\u0027s schema, the fuzzer could mutate it and make it mismatch the IPC stream schema. The fuzz target would currently fail on such a file, even though it\u0027s technically not a bug in the IPC implementation.\n\nThis was detected by OSS-Fuzz in https://issues.oss-fuzz.com/issues/486127061\n\n### What changes are included in this PR?\n\n* Detect a mismatching schema between IPC stream and IPC file, and skip the batches comparison in that case.\n* Compare results between IPC file reads with pre-buffering enabled/disabled\n* When comparing IPC read results, also compare custom metadata, not just the data batches themselves\n\n### Are these changes tested?\n\nYes, by new regression test.\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #49448\n\nAuthored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "5f12de2ffb4ad7a24c2b9dff0d6aac3f84ef3989",
      "tree": "204ee51f57492f78af4dac4d7d00f75a20967177",
      "parents": [
        "b69ce86617aa696041df4609e8627150eb64cdb0"
      ],
      "author": {
        "name": "Paweł Biegun",
        "email": "69080338+Anakin100100@users.noreply.github.com",
        "time": "Tue Mar 10 01:05:44 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 10 09:05:44 2026 +0100"
      },
      "message": "GH-49310: [C++][Compute] Fix segmentation fault in pyarrow.compute.if_else (#49375)\n\n### Rationale for this change\nFixing #49310 \n\n### What changes are included in this PR?\nI added a check for the if else compute kernels that verify that the result will fit in the offset of the result. The check asserts that no matter which values are chosen from either the left or right arrays/scalars there will be no overflow in order to use the UnsafeAppend which skips almost all safety checks.\n\n### Are these changes tested?\nYes, There are tests for each of the kernels that include an array that the values that would overflow the 32 bit index trigger the check. These tests don\u0027t actually allocate the data to save on time and compute. There are also two tests that verify an overflow for a 32 bit offset type and trigger an error and the second one that ensures that for a data type with a 64 bit offset there is no overflow error. \n\n### Are there any user-facing changes?\nYes, if the result may not fit in a type that relies on 32 bit offsets the user will receive a helpful error message instead of a segfault.\n* GitHub Issue: #49310\n\nLead-authored-by: Paweł Biegun \u003cbiegunpawel900@gmail.com\u003e\nCo-authored-by: Antoine Pitrou \u003cantoine@python.org\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "b69ce86617aa696041df4609e8627150eb64cdb0",
      "tree": "51a69124b7df1d552452541fc91f232c9b7257df",
      "parents": [
        "ed37b14f40e2dc62da067db20ede9061d400ecd1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 10 14:16:57 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 10 14:16:57 2026 +0900"
      },
      "message": "MINOR: [CI] Bump docker/login-action from 3.7.0 to 4.0.0 (#49479)\n\nBumps [docker/login-action](https://github.com/docker/login-action) from 3.7.0 to 4.0.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.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eNode 24 as default runtime (requires \u003ca href\u003d\"https://github.com/actions/runner/releases/tag/v2.327.1\"\u003eActions Runner v2.327.1\u003c/a\u003e or later) 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/929\"\u003edocker/login-action#929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to ESM and update config/test wiring 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/927\"\u003edocker/login-action#927\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​actions/core\u003c/code\u003e from 1.11.1 to 3.0.0 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/919\"\u003edocker/login-action#919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​aws-sdk/client-ecr\u003c/code\u003e from 3.890.0 to 3.1000.0 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/909\"\u003edocker/login-action#909\u003c/a\u003e \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/920\"\u003edocker/login-action#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​aws-sdk/client-ecr-public\u003c/code\u003e from 3.890.0 to 3.1000.0 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/909\"\u003edocker/login-action#909\u003c/a\u003e \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/920\"\u003edocker/login-action#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​docker/actions-toolkit\u003c/code\u003e from 0.63.0 to 0.77.0 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/910\"\u003edocker/login-action#910\u003c/a\u003e \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/928\"\u003edocker/login-action#928\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​isaacs/brace-expansion\u003c/code\u003e from 5.0.0 to 5.0.1 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/921\"\u003edocker/login-action#921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump js-yaml from 4.1.0 to 4.1.1 in \u003ca href\u003d\"https://redirect.github.com/docker/login-action/pull/901\"\u003edocker/login-action#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/docker/login-action/compare/v3.7.0...v4.0.0\"\u003ehttps://github.com/docker/login-action/compare/v3.7.0...v4.0.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/b45d80f862d83dbcd57f89517bcf500b2ab88fb2\"\u003e\u003ccode\u003eb45d80f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/929\"\u003e#929\u003c/a\u003e from crazy-max/node24\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/176cb9c12abea98dfe844071c0999ff6ee9688a7\"\u003e\u003ccode\u003e176cb9c\u003c/code\u003e\u003c/a\u003e node 24 as default runtime\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/cad89843109a11cb6f69f52fe695c42cf69d57d3\"\u003e\u003ccode\u003ecad8984\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/920\"\u003e#920\u003c/a\u003e from docker/dependabot/npm_and_yarn/aws-sdk-dependenc...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/92cbcb231ed341e7dc71693351b21f5ba65f8349\"\u003e\u003ccode\u003e92cbcb2\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/5a2d6a71bd3e0cb4abb6faae33f3dde61ece8e5b\"\u003e\u003ccode\u003e5a2d6a7\u003c/code\u003e\u003c/a\u003e build(deps): bump the aws-sdk-dependencies group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/44512b6b2e08b878e82b107b394fcd1af5748e63\"\u003e\u003ccode\u003e44512b6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/928\"\u003e#928\u003c/a\u003e from docker/dependabot/npm_and_yarn/docker/actions-to...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/28737a5e46bc0c62910ef429b2e55f9cabbbd5df\"\u003e\u003ccode\u003e28737a5\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/dac079354afbd8db4c3b58b8cc6946573479b2a6\"\u003e\u003ccode\u003edac0793\u003c/code\u003e\u003c/a\u003e build(deps): bump \u003ccode\u003e@​docker/actions-toolkit\u003c/code\u003e from 0.76.0 to 0.77.0\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/62029f315d6d05c8646343320e4a1552e5f1c77a\"\u003e\u003ccode\u003e62029f3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/docker/login-action/issues/919\"\u003e#919\u003c/a\u003e from docker/dependabot/npm_and_yarn/actions/core-3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/docker/login-action/commit/08c8f064bf22a1c55918ee608a81d87b13cc4461\"\u003e\u003ccode\u003e08c8f06\u003c/code\u003e\u003c/a\u003e chore: update generated content\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href\u003d\"https://github.com/docker/login-action/compare/c94ce9fb468520275223c153574b00df6fe4bcc9...b45d80f862d83dbcd57f89517bcf500b2ab88fb2\"\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\u003d3.7.0\u0026new-version\u003d4.0.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": "ed37b14f40e2dc62da067db20ede9061d400ecd1",
      "tree": "abab79d43d442ea6b2949bc3b0ca5116b0845d17",
      "parents": [
        "8c2d93cc841f91fc225dff4968a94015ed23c52d"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Tue Mar 10 13:14:11 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 10 13:14:11 2026 +0900"
      },
      "message": "GH-49422: [CI][Integration][Ruby] Add the Ruby implementation (#49423)\n\n### Rationale for this change\n\nThere are some missing features in the Ruby implmentaion for now but we can pass them by skipping some tests in our integration tests.\n\n### What changes are included in this PR?\n\nArchery:\n\n* Add `--with-ruby` to `archery integration`\n* Add `archery.integration.tester_ruby.RubyTester`\n* Add `no_map_field_names_validate` quirk for GH-49415\n* Show environment variables too on external command failure because Ruby tester uses environment variables not command line arguments to pass information to integration tester\n* Use `ARCHERY_INTEGRATION_WITH_CPP\u003d1` instead of `ARROW_INTEGRATION_CPP\u003dON` like other implementations such as `ARCHERY_INTEGRATION_WITH_GO`\n\nRuby:\n\n* Add `red-arrow-format-integration-test` as the test driver\n  * This is not included in `.gem` because this is only for development\n* Add `ruby/red-arrow-format/lib/arrow-format/integration/` as helpers of the test driver\n  * This is not included in `.gem` because this is only for development\n* Add `ArrowFormat::Array#empty?`\n* Add `ArrowFormat::RecordBatch#empty?`\n* Add `ArrowFormat::NullArray#n_nulls`\n* `ArrowFormat::*Array#to_a`: Add support for empty case\n* Fix Apache Arrow decimal \u003c-\u003e `BigDecimal` conversion\n* `ArrowFormat::Bitmap#each`: Fix a bug that one bit is ignored\n* Move dictionary ID to `ArrowFormat::DictionaryType` from `ArrowFormat::Field`\n* Add support for V4 union that has validity bitmap\n* Add support for no continuation token message for backward compatibility\n* `ArrowFormat::StreamingReader`: Add support for reading schema without calling `#each`\n* `ArrowFormat::MapType`: Add support for keys sorted\n* `ArrowFormat::MapType`: Always use \"key\"/\"value\"/\"entries\" for field names\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nYes.\n* GitHub Issue: #49422\n\nAuthored-by: Sutou Kouhei \u003ckou@clear-code.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "8c2d93cc841f91fc225dff4968a94015ed23c52d",
      "tree": "dce0c61b093c2d5c157afcc079a0b36214291b93",
      "parents": [
        "dbbf7cf8136da31b77f78f00a51d62992802c2c2"
      ],
      "author": {
        "name": "justing-bq",
        "email": "62349012+justing-bq@users.noreply.github.com",
        "time": "Mon Mar 09 16:49:26 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 10 08:49:26 2026 +0900"
      },
      "message": "GH-49444: [C++][FlightRPC][ODBC] Disable DSN default values on MacOS (#49402)\n\n### Rationale for this change\niodbc driver manager on macOS treats default values as real values when reading from system DSN, and the driver manager ignores the actual values.\n\n* GitHub Issue: #49444\n\nLead-authored-by: justing-bq \u003c62349012+justing-bq@users.noreply.github.com\u003e\nCo-authored-by: alinalibq \u003calina.li@improving.com\u003e\nSigned-off-by: David Li \u003cli.davidm96@gmail.com\u003e"
    },
    {
      "commit": "dbbf7cf8136da31b77f78f00a51d62992802c2c2",
      "tree": "470b4d008b4c5649336ddf618387fe4ae6bf638c",
      "parents": [
        "f1b21f1945de743b6526440458222c0442acde03"
      ],
      "author": {
        "name": "Antoine Prouvost",
        "email": "AntoinePrv@users.noreply.github.com",
        "time": "Mon Mar 09 10:03:29 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 10:03:29 2026 +0100"
      },
      "message": "GH-49449: [C++] Backport xsimd neon fix (#49450)\n\n### Rationale for this change\nPerformance in hot code.\nThere is a bug in xsimd where the rshift/lshift for Neon are implemented with a scalar loop instead of the appropriate SIMD intrinsics. This code path is core to the `unpack` routine in Parquet reads.\nhttps://github.com/xtensor-stack/xsimd/pull/1266\n\n### What changes are included in this PR?\nA bug backport.\n\n### Are these changes tested?\nYes.\n\n### Are there any user-facing changes?\nNo.\n\n* GitHub Issue: #49449\n\nAuthored-by: AntoinePrv \u003cAntoinePrv@users.noreply.github.com\u003e\nSigned-off-by: Antoine Pitrou \u003cantoine@python.org\u003e"
    },
    {
      "commit": "f1b21f1945de743b6526440458222c0442acde03",
      "tree": "4e7c572605665063d65c1189953f57e32141d473",
      "parents": [
        "0d4f043d453979a71582e8ffb8d9cf5e54d2b7d0"
      ],
      "author": {
        "name": "Raúl Cumplido",
        "email": "raulcumplido@gmail.com",
        "time": "Mon Mar 09 09:47:21 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 09:47:21 2026 +0100"
      },
      "message": "GH-36411: [Python] Use scikit-build-core as build backend for PyArrow and get rid of setup.py (#49259)\n\n### Rationale for this change\n\nMove our PyArrow build backend from setuptools and a custom setup.py to scikit-build-core which is just build backend for CMake related projects.\n\n### What changes are included in this PR?\n\nMove from setuptools to scikit-build-core and remove PyArrow setup.py. Update some of the build requirements and minor fixes.\nA custom build backend has been also been created in order to wrap scikit-build-core in order to fix problems on License files for monorepos.\npyproject.toml metadata validation expects license files to exist before exercising the build backend that\u0027s why we create symlinks. Our thin build backend will just make those symlinks hard-links in order for license and notice files to contain the contents and be added as part of the sdist.\n\nRemove flags that are not used anymore (were only part of setup.py) and documented and validated how the same flags have to be used now.\n\n### Are these changes tested?\n\nYes all Python CI tests, wheels and sdist are successful.\n\n### Are there any user-facing changes?\n\nYes, users building PyArrow will now require the new build dependencies to exercise the build and depending on the flags used they might require to use the new documented way of using those flags.\n\n* GitHub Issue: #36411\n\nLead-authored-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e\nCo-authored-by: Joris Van den Bossche \u003cjorisvandenbossche@gmail.com\u003e\nCo-authored-by: Rok Mihevc \u003crok@mihevc.org\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "0d4f043d453979a71582e8ffb8d9cf5e54d2b7d0",
      "tree": "ea38b341cdf65565a4ff4abfdc35d091cd2309d2",
      "parents": [
        "9e82bc2a7196d77aedb579b81a63477c092e768e"
      ],
      "author": {
        "name": "Zehua Zou",
        "email": "zehuazou2000@gmail.com",
        "time": "Mon Mar 09 10:41:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 10:41:51 2026 +0800"
      },
      "message": "GH-49408: [C++][Parquet] Add public virtual destructor to `parquet::Page` (#49409)\n\n### Rationale for this change\n\nClarify the destructor implementation of `parquet::Page` to expose the design intent.\n\n### What changes are included in this PR?\n\nAdd public virtual destructor to `parquet::Page`.\n\n### Are these changes tested?\n\nYes.\n\n### Are there any user-facing changes?\n\nNo.\n\n* GitHub Issue: #49408\n\nAuthored-by: Zehua Zou \u003czehuazou2000@gmail.com\u003e\nSigned-off-by: Gang Wu \u003custcwg@gmail.com\u003e"
    },
    {
      "commit": "9e82bc2a7196d77aedb579b81a63477c092e768e",
      "tree": "3e55eec7809b674a288b9cceaf08a316c9a231e5",
      "parents": [
        "aa1cabea2e53a82cc7bb250a39a0c90c08809909"
      ],
      "author": {
        "name": "William Ayd",
        "email": "william.ayd@icloud.com",
        "time": "Sun Mar 08 21:19:56 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 10:19:56 2026 +0900"
      },
      "message": "GH-49458: [CI][C++] Fix Meson build referencing non-existent fixed_shape_tensor_test.cc (#49468)\n\n## Summary\n- Fix `meson.build` in `cpp/src/arrow/extension/` referencing `fixed_shape_tensor_test.cc` which does not exist\n- The test file was renamed to `tensor_extension_array_test.cc` but the Meson build was not updated to match `CMakeLists.txt`\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n* GitHub Issue: #49458\n\nAuthored-by: Will Ayd \u003cwilliam.ayd@icloud.com\u003e\nSigned-off-by: Sutou Kouhei \u003ckou@clear-code.com\u003e"
    },
    {
      "commit": "aa1cabea2e53a82cc7bb250a39a0c90c08809909",
      "tree": "62e1afca880612a9880f71a35156507ccbc1f960",
      "parents": [
        "2ce4e662040fd225dc052461fa345bbbc3237c32"
      ],
      "author": {
        "name": "Dmitry Chirkov",
        "email": "dmitry.chirkov@dremio.com",
        "time": "Fri Mar 06 09:52:31 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 06 09:52:31 2026 -0800"
      },
      "message": "GH-49441: [C++][Gandiva] Add rand_integer function (#49442)\n\n### Rationale for this change\nAdd `rand_integer` function to Gandiva to generate random integers,\ncomplementing the existing `rand`/`random` functions that generate\nrandom doubles. This provides native integer random number generation\nand offers a more efficient alternative to `CAST(rand() * range AS\nINT)`.\n\n### What changes are included in this PR?\n- Add `RandomIntegerGeneratorHolder` class following the existing\n`RandomGeneratorHolder` pattern\n- Implement three function signatures:\n  - `rand_integer()` → int32 in range [INT32_MIN, INT32_MAX]\n  - `rand_integer(int32 range)` → int32 in range [0, range-1]\n- `rand_integer(int32 min, int32 max)` → int32 in range [min, max]\ninclusive\n- Add parameter validation (range \u003e 0, min \u003c\u003d max) at expression\ncompilation time\n- Add 8 unit tests covering all signatures and edge cases\n- Use `std::uniform_int_distribution\u003cint32_t\u003e` with Mersenne Twister\nengine\n\n### Are these changes tested?\nYes, added 8 unit tests in `random_generator_holder_test.cc`:\n- `NoParams` - verifies full int32 range\n- `WithRange` - verifies [0, range-1] bounds\n- `WithMinMax` - verifies [min, max] inclusive bounds\n- `WithNegativeMinMax` - verifies negative range handling\n- `InvalidRangeZero` - verifies range\u003d0 is rejected\n- `InvalidRangeNegative` - verifies negative range is rejected\n- `InvalidMinGreaterThanMax` - verifies min \u003e max is rejected\n- `NullRangeDefaultsToOne` - verifies null parameter handling\n\n### Are there any user-facing changes?\nYes, this adds a new `rand_integer` function to Gandiva with three\nsignatures as described above.\n\n* GitHub Issue: #49441"
    },
    {
      "commit": "2ce4e662040fd225dc052461fa345bbbc3237c32",
      "tree": "70d4829a6f8a95ea368e2ba3c927306d0fb0641a",
      "parents": [
        "f83c5541b1198e250f78463b92daabbc2e2b22b3"
      ],
      "author": {
        "name": "Nic Crane",
        "email": "thisisnic@gmail.com",
        "time": "Fri Mar 06 11:26:37 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 06 12:26:37 2026 +0100"
      },
      "message": "GH-49459: [R][CI] Use RHEL-9 binaries on Amazon Linux 2023 builds (#49460)\n\n### Rationale for this change\n\nIt takes 45 mins to install the duckdb R package in the benchmarks as it builds from source\n\n### What changes are included in this PR?\n\nUse the RSPM RHEL9 binaries instead by mapping Amazon Linux 2023 to RHEL9\n\n### Are these changes tested?\n\nI did locally but I\u0027ll ask Ursabot to benchmark or whatever\n\n### Are there any user-facing changes?\n\nNah\n* GitHub Issue: #49459\n\nAuthored-by: Nic Crane \u003cthisisnic@gmail.com\u003e\nSigned-off-by: Raúl Cumplido \u003craulcumplido@gmail.com\u003e"
    },
    {
      "commit": "f83c5541b1198e250f78463b92daabbc2e2b22b3",
      "tree": "a57b5a30b4ae729c668f3fa976baa31d092e0edf",
      "parents": [
        "bbf337b83a57df8bbf1dec59603a1b0abdf18423"
      ],
      "author": {
        "name": "Alina (Xi) Li",
        "email": "96995091+alinaliBQ@users.noreply.github.com",
        "time": "Thu Mar 05 18:32:05 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 06 11:32:05 2026 +0900"
      },
      "message": "GH-49250: [C++][FlightRPC] ODBC: SQLError for macOS (#49251)\n\n### Rationale for this change\n#49250 \n### What changes are included in this PR?\n- Implement SQLError for macOS\n- Update SQLError related tests for macOS\n\n### Are these changes tested?\n- SQLError Tests are tested locally on macOS\n\n### Are there any user-facing changes?\nN/A\n* GitHub Issue: #49250\n\nAuthored-by: Alina (Xi) Li \u003calinal@bitquilltech.com\u003e\nSigned-off-by: David Li \u003cli.davidm96@gmail.com\u003e"
    }
  ],
  "next": "bbf337b83a57df8bbf1dec59603a1b0abdf18423"
}
