)]}'
{
  "log": [
    {
      "commit": "62b3b622367b1bd0af47cce61de320f906caf8fd",
      "tree": "17686eded6c256f76dee4feca8ceda6ef3520063",
      "parents": [
        "38269f9c0cf1a80897aee588ea2daebe0aba4f6b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jun 19 19:39:55 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 09:39:55 2026 +0000"
      },
      "message": "chore(deps-dev): bump webpack-dev-server from 5.2.4 to 5.2.5 in /datafusion/wasmtest/datafusion-wasm-app (#23009)\n\nBumps\n[webpack-dev-server](https://github.com/webpack/webpack-dev-server) from\n5.2.4 to 5.2.5.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/webpack/webpack-dev-server/releases\"\u003ewebpack-dev-server\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.5\u003c/h2\u003e\n\u003ch3\u003ePatch Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSkip the HMR WebSocket path when forwarding upgrade requests to\nuser-defined proxies, so custom proxy WebSocket upgrades are no longer\nintercepted by the dev server. (by \u003ca\nhref\u003d\"https://github.com/bjohansebas\"\u003e\u003ccode\u003e@​bjohansebas\u003c/code\u003e\u003c/a\u003e in\n\u003ca\nhref\u003d\"https://redirect.github.com/webpack/webpack-dev-server/pull/5680\"\u003e#5680\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/webpack/webpack-dev-server/blob/main/CHANGELOG.md\"\u003ewebpack-dev-server\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.2.5\u003c/h2\u003e\n\u003ch3\u003ePatch Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSkip the HMR WebSocket path when forwarding upgrade requests to\nuser-defined proxies, so custom proxy WebSocket upgrades are no longer\nintercepted by the dev server. (by \u003ca\nhref\u003d\"https://github.com/bjohansebas\"\u003e\u003ccode\u003e@​bjohansebas\u003c/code\u003e\u003c/a\u003e in\n\u003ca\nhref\u003d\"https://redirect.github.com/webpack/webpack-dev-server/pull/5680\"\u003e#5680\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\nSee \u003ca\nhref\u003d\"https://github.com/conventional-changelog/standard-version\"\u003estandard-version\u003c/a\u003e\nfor commit guidelines.\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\nhref\u003d\"https://github.com/webpack/webpack-dev-server/commit/c3ee325819f64ceb77f85dcf727b6b5ede85cbc4\"\u003e\u003ccode\u003ec3ee325\u003c/code\u003e\u003c/a\u003e\nchore(release): new release (\u003ca\nhref\u003d\"https://redirect.github.com/webpack/webpack-dev-server/issues/5682\"\u003e#5682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/webpack/webpack-dev-server/commit/60173be90873b187b41fc2009a4de253732988a1\"\u003e\u003ccode\u003e60173be\u003c/code\u003e\u003c/a\u003e\nfeat: add changeset validation and release workflow (\u003ca\nhref\u003d\"https://redirect.github.com/webpack/webpack-dev-server/issues/5680\"\u003e#5680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/webpack/webpack-dev-server/commit/948d5e6089bebcd801dac2cbe3ed4f80b64f117a\"\u003e\u003ccode\u003e948d5e6\u003c/code\u003e\u003c/a\u003e\nfix(proxy): match the HMR upgrade path exactly like the ws server (\u003ca\nhref\u003d\"https://redirect.github.com/webpack/webpack-dev-server/issues/5678\"\u003e#5678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/webpack/webpack-dev-server/commit/93e8996124332a6c94c4d3e0f8e5f2cf95321c67\"\u003e\u003ccode\u003e93e8996\u003c/code\u003e\u003c/a\u003e\nfix: skip HMR websocket path when forwarding upgrades to user-defined\nproxies...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/webpack/webpack-dev-server/compare/v5.2.4...v5.2.5\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca\nhref\u003d\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new\nreleaser for webpack-dev-server since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dwebpack-dev-server\u0026package-manager\u003dnpm_and_yarn\u0026previous-version\u003d5.2.4\u0026new-version\u003d5.2.5)](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\nalter it yourself. You can also trigger a rebase manually by commenting\n`@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\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/apache/datafusion/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "38269f9c0cf1a80897aee588ea2daebe0aba4f6b",
      "tree": "7988639e42023109049ae49d4c6e36df7112daf0",
      "parents": [
        "cab75e034d5b21c428a77eec66dbd5ddb42d025f"
      ],
      "author": {
        "name": "Huaijin",
        "email": "haohuaijin@gmail.com",
        "time": "Fri Jun 19 17:21:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 09:21:38 2026 +0000"
      },
      "message": "feat: support file-level parquet row selections (#22940)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Closes #22939 \n\n## Rationale for this change\n\n- see issue #22939 \n\n## What changes are included in this PR?\n\n- Add public `ParquetRowSelection`.\n- Add `ParquetAccessPlan::try_new_from_overall_row_selection`.\n- Allow Parquet opener setup to read either `ParquetAccessPlan` or\n`ParquetRowSelection`.\n- Reject using both extension types on the same file.\n- Validate that the selection row count matches the file row count.\n- Document the new extension path in `ParquetSource`.\n\n\n## Are these changes tested?\n\nYes. This PR adds tests for:\n\n- converting a file-level selection into row-group access\n- rejecting invalid selection row counts\n- creating an initial plan from `ParquetRowSelection`\n- rejecting both `ParquetAccessPlan` and `ParquetRowSelection` on the\nsame file\n\n## Are there any user-facing changes?\n\nYes. This adds a new public `ParquetRowSelection` type for callers that\nwant to attach a file-level Parquet `RowSelection` to a\n`PartitionedFile`."
    },
    {
      "commit": "cab75e034d5b21c428a77eec66dbd5ddb42d025f",
      "tree": "8220a571fb972ef2c38273c625de9715271a1a57",
      "parents": [
        "933297b60274c83c870077cf58b48bcbe7f7069f"
      ],
      "author": {
        "name": "Alex Metelli",
        "email": "alex-metelli@gmx.com",
        "time": "Fri Jun 19 16:47:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 08:47:09 2026 +0000"
      },
      "message": "feat: warn on NULL equality predicates (#22948)\n\n## Which issue does this PR close?\n\n- Closes #14434.\n\n## Rationale for this change\n\nSQL comparisons such as `expr \u003d NULL` and `expr \u003c\u003e NULL` evaluate to\n`NULL` under SQL three-valued logic, not to `true` or `false`. When\nthose comparisons appear in predicate contexts such as `WHERE`, `JOIN\nON`, or `HAVING`, they are almost always a user mistake where `IS NULL`\nor `IS NOT NULL` was intended.\n\nThis PR emits non-fatal diagnostic warnings for those cases so callers\nthat surface `Diagnostic` information can help users find and fix the\nquery without changing planning success or query semantics.\n\n## What changes are included in this PR?\n\n- Adds warning collection to `SqlToRel`, with\n`SqlToRel::take_warnings()` to drain non-fatal planning diagnostics\nafter planning.\n- Adds predicate-scoped detection for `\u003d NULL` and `\u003c\u003e NULL`\ncomparisons.\n- Wires detection into `WHERE`, `JOIN ON`, and `HAVING` planning paths.\n- Recursively checks predicate expression structure such as nested `AND`\n/ `OR` binary predicates and `CASE WHEN` conditions, without warning for\nprojection-only expressions like `SELECT col \u003d NULL`.\n- Creates `Diagnostic::new_warning` entries with a primary span on the\ncomparison expression and help pointing at the `NULL` literal when spans\nare available.\n\n## Are these changes tested?\n\nYes. Added regression coverage in\n`datafusion/sql/tests/cases/diagnostic.rs` for:\n\n- `WHERE col \u003d NULL`\n- `WHERE NULL \u003d col`\n- `WHERE col \u003c\u003e NULL`\n- `JOIN ... ON col \u003d NULL`\n- `HAVING ... \u003d NULL`\n- nested `CASE WHEN col \u003d NULL` inside a predicate\n- no warning for `IS NULL`\n- no warning for projection-only `SELECT col \u003d NULL`\n- multiple warnings in one predicate\n\nValidation run locally:\n\n```shell\ncargo fmt --all\ncargo test -p datafusion-sql --test sql_integration diagnostic\ncargo test -p datafusion-sql\ncargo clippy -p datafusion-sql --all-targets --all-features -- -D warnings\ncargo clippy --all-targets --all-features -- -D warnings\ngit diff main..HEAD --check\n```\n\n## Are there any user-facing changes?\n\nYes, but non-breaking. SQL planning can now collect warning diagnostics\nfor likely mistaken `NULL` equality predicates. Consumers can retrieve\nthem with `SqlToRel::take_warnings()` and decide how to present them.\nPlanning still succeeds and query semantics are unchanged."
    },
    {
      "commit": "933297b60274c83c870077cf58b48bcbe7f7069f",
      "tree": "3007676b753ac05d1a5a77b513311448e1584c8f",
      "parents": [
        "6c2221d3ff630538efbb277cdf68fca794a264eb"
      ],
      "author": {
        "name": "Louis Vialar",
        "email": "zyuiop@users.noreply.github.com",
        "time": "Fri Jun 19 06:15:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 04:15:47 2026 +0000"
      },
      "message": "feat(unparser): support binary literals (#23001)\n\n## Which issue does this PR close?\n\n- Closes #23000.\n\n## Rationale for this change\n\nBinary literal values should be properly unparsed to SQL.\n\n## What changes are included in this PR?\n\nUnparses all four types of binary array scalar values to hexadecimal\nliteral strings.\n\n## Are these changes tested?\n\nYes \n\n## Are there any user-facing changes?\n\nNo\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e"
    },
    {
      "commit": "6c2221d3ff630538efbb277cdf68fca794a264eb",
      "tree": "346a3cb3f414678da864ca0753a38c896ccb8616",
      "parents": [
        "0838a4ddb902535b0e95a1c5a254be7e9c7fe9bf"
      ],
      "author": {
        "name": "Eduardo Aguilar",
        "email": "contact@eduaguilar.com",
        "time": "Fri Jun 19 05:51:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 03:51:16 2026 +0000"
      },
      "message": "bugfix: changed return type of spark\u0027s width_bucket to i64 (#22811)\n\n## Which issue does this PR close?\n- Closes #22602\n\n## Rationale for this change\nThe return type of this function in Spark is int64. It is changed here\nto match Sparks behavior.\n\n## What changes are included in this PR?\nChanged the return type of Spark\u0027s `width_bucket` from i32 to i64.\n\n## Are these changes tested?\nYes, all existing unit tests in `width_bucket.rs` pass. \n\n## Are there any user-facing changes?\n- Spark consumers should expect a different data type when calling the\n`width_bucket` function.\n- No API changes."
    },
    {
      "commit": "0838a4ddb902535b0e95a1c5a254be7e9c7fe9bf",
      "tree": "4bfa2adb465669693e476adfe85560e4239d04b5",
      "parents": [
        "54b7dd99bcda9a3015485388713f632cc089a637"
      ],
      "author": {
        "name": "Alessandro Solimando",
        "email": "asolimando@apache.org",
        "time": "Thu Jun 18 21:38:23 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 19:38:23 2026 +0000"
      },
      "message": "Add StatisticsContext parameter to partition_statistics (#21815)\n\n## Which issue does this PR close?\n\nCloses #20184\n\n## Rationale for this change\n\n`ExecutionPlan::partition_statistics` forces each operator to re-fetch\nchild statistics internally, causing redundant subtree walks in deep\nplans.\n\n## What changes are included in this PR?\n\n- Deprecate `partition_statistics` in favor of\n`statistics_with_args(\u0026self, args: \u0026StatisticsArgs)`, an extensible\nsignature that won\u0027t require downstream churn when new parameters are\nadded\n- `StatisticsArgs` carries the partition index and a shared per-call\n`StatsCache`, eliminating redundant subtree walks within a single\n`compute_statistics` call\n- Child stats are pre-computed with `partition\u003dNone` and cached;\noperators look them up via `args.child_stats_of(child)` (overall) or\n`args.child_stats_for(child)` (partition-aware)\n- Criterion micro-benchmark on three plan shapes from #19795\n\n## Tests\n\nExisting tests pass unchanged. New unit test verifies the caching\ncontract.\n\n## Test plan\n\n- [x] `cargo fmt --all`\n- [x] `cargo clippy --all-targets --all-features -- -D warnings`\n- [x] `cargo test --profile ci --all-features` on affected crates\n- [x] Criterion benchmark: ~26x (coalesce chain), ~5x (cross-join tree),\n~25x (filter chain) speedup\n\n----\n\nDisclaimer: I used AI to assist in the code generation, I have manually\nreviewed the output and it matches my intention and understanding.\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "54b7dd99bcda9a3015485388713f632cc089a637",
      "tree": "7d54289185cd0c9ad488539315cc579e45562edf",
      "parents": [
        "ad8e7b7f2babe3fcddc3a4f9b5cd1ac0d1b16ad9"
      ],
      "author": {
        "name": "Michael Kleen",
        "email": "mkleen@gmail.com",
        "time": "Thu Jun 18 21:36:33 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 19:36:33 2026 +0000"
      },
      "message": "Unify LRU memory-limiting caches into one generic cache (#22613)\n\n## Which issue does this PR close?\n\n- Closes\nhttps://github.com/issues/assigned?issue\u003dapache%7Cdatafusion%7C22359.\n\n## Rationale for this change\n\nThis PR introduces a new cache which merges the functionality of\nfile-metadata cache, list-files cache and file-statistics cache into one\ngeneric implementation. This removes a lot of redundant code.\n\n## What changes are included in this PR?\n\n- Introduce a generic `DefaultCache` with LRU eviction, memory-limit and\nTTL.\n\n- Migrate all cache tests to use the new `DefaultCache`.\n\n- Replace file-metadata cache, list-files-cache and\nfile-statistics-cache implementations with the new generic version.\n\n## Are these changes tested?\n\nYes. All existing cache tests are migrated to the new implementation and\npassing. They had to be slighlty adapted because the new implementation\nalso counts the cache-key for memory accounting which wasn\u0027t the case\nfor all previous implementations. The tests are still at the same\nlocation to have a diff for reviews.\n\n\n## Are there any user-facing changes?\n\nThe traits `FileStatisticsCache`, `ListFilesCache` and\n`FileMetadataCache` are replaced with the types `Cache\u003cTableScopedPath,\nCachedFileMetadata\u003e`, `Cache\u003cTableScopedPath, CachedFileList\u003e` and\n`Cache\u003cPath, CachedFileMetadataEntry\u003e`.\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "ad8e7b7f2babe3fcddc3a4f9b5cd1ac0d1b16ad9",
      "tree": "51bbd68fa565283c90d49c6c242d22fdf5a103b0",
      "parents": [
        "0fc55d06797cac2190239c82b2d5f0a06b4d42e7"
      ],
      "author": {
        "name": "Yongting You",
        "email": "2010youy01@gmail.com",
        "time": "Thu Jun 18 21:29:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 13:29:59 2026 +0000"
      },
      "message": "refactor: Simplify `approx_distinct` (-200 LoC) (#22921)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Closes #.\n\n## Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the issue then this section is not needed.\nExplaining clearly why changes are proposed helps reviewers understand\nyour changes and offer better suggestions for fixes.\n--\u003e\nAttempt to simplify the `approx_distinct` implementation, the existing\ncomplexity is due to there is no generic API to calculate hash for a\n`array.elem(i)`, so we have to implement specialization for many\ndifferent types like primitive/string/stringview, and bloated the code\nsize.\n\nThis PR used a existing `create_hashes` for batched hashing that is\napplicable to all array types, and it reduced 261 lines of code in\n`approx_distinct.rs`\n\n### Performance \n\u003cdetails\u003e\n\u003csummary\u003e Cargo bench result \u003c/summary\u003e\n\n```sh\ncargo bench -p datafusion-functions-aggregate \\\n                                                                              --bench approx_distinct \\\n                                                                              -- --baseline main\n```\n\n```sh\nnuplot not found, using plotters backend\nBenchmarking approx_distinct i64 80% distinct: Collecting 100 samples in estimated 5.0135 s (884k ite\napprox_distinct i64 80% distinct\n                        time:   [5.6406 µs 5.6477 µs 5.6550 µs]\n                        change: [−0.9680% −0.7111% −0.4639%] (p \u003d 0.00 \u003c 0.05)\n                        Change within noise threshold.\nFound 4 outliers among 100 measurements (4.00%)\n  2 (2.00%) low mild\n  2 (2.00%) high mild\n\nBenchmarking approx_distinct utf8 short 80% distinct: Collecting 100 samples in estimated 5.0360 s (3\napprox_distinct utf8 short 80% distinct\n                        time:   [12.970 µs 12.977 µs 12.985 µs]\n                        change: [+15.898% +16.116% +16.339%] (p \u003d 0.00 \u003c 0.05)\n                        Performance has regressed.\nFound 7 outliers among 100 measurements (7.00%)\n  2 (2.00%) low severe\n  1 (1.00%) low mild\n  4 (4.00%) high severe\n\nBenchmarking approx_distinct utf8view short 80% distinct: Collecting 100 samples in estimated 5.0171\napprox_distinct utf8view short 80% distinct\n                        time:   [8.7402 µs 8.7455 µs 8.7511 µs]\n                        change: [+22.516% +22.703% +22.893%] (p \u003d 0.00 \u003c 0.05)\n                        Performance has regressed.\nFound 9 outliers among 100 measurements (9.00%)\n  1 (1.00%) low severe\n  5 (5.00%) high mild\n  3 (3.00%) high severe\n\nBenchmarking approx_distinct utf8 long 80% distinct: Collecting 100 samples in estimated 5.0120 s (26\napprox_distinct utf8 long 80% distinct\n                        time:   [19.060 µs 19.085 µs 19.108 µs]\n                        change: [+9.9923% +10.224% +10.429%] (p \u003d 0.00 \u003c 0.05)\n                        Performance has regressed.\nFound 10 outliers among 100 measurements (10.00%)\n  1 (1.00%) low severe\n  4 (4.00%) low mild\n  4 (4.00%) high mild\n  1 (1.00%) high severe\n\nBenchmarking approx_distinct utf8view long 80% distinct: Collecting 100 samples in estimated 5.0800 s\napprox_distinct utf8view long 80% distinct\n                        time:   [21.281 µs 21.306 µs 21.335 µs]\n                        change: [+1.8930% +2.0965% +2.3087%] (p \u003d 0.00 \u003c 0.05)\n                        Performance has regressed.\n\nBenchmarking approx_distinct i64 99% distinct: Collecting 100 samples in estimated 5.0037 s (884k ite\napprox_distinct i64 99% distinct\n                        time:   [5.6507 µs 5.6645 µs 5.6805 µs]\n                        change: [+0.1104% +0.3620% +0.6143%] (p \u003d 0.00 \u003c 0.05)\n                        Change within noise threshold.\nFound 4 outliers among 100 measurements (4.00%)\n  2 (2.00%) low mild\n  1 (1.00%) high mild\n  1 (1.00%) high severe\n\nBenchmarking approx_distinct utf8 short 99% distinct: Collecting 100 samples in estimated 5.0298 s (3\napprox_distinct utf8 short 99% distinct\n                        time:   [12.956 µs 12.968 µs 12.979 µs]\n                        change: [+15.776% +16.044% +16.296%] (p \u003d 0.00 \u003c 0.05)\n                        Performance has regressed.\nFound 6 outliers among 100 measurements (6.00%)\n  4 (4.00%) low mild\n  2 (2.00%) high severe\n\nBenchmarking approx_distinct utf8view short 99% distinct: Collecting 100 samples in estimated 5.0295\napprox_distinct utf8view short 99% distinct\n                        time:   [8.8005 µs 8.8054 µs 8.8106 µs]\n                        change: [+22.620% +22.909% +23.202%] (p \u003d 0.00 \u003c 0.05)\n                        Performance has regressed.\nFound 7 outliers among 100 measurements (7.00%)\n  2 (2.00%) low severe\n  2 (2.00%) low mild\n  3 (3.00%) high severe\n\nBenchmarking approx_distinct utf8 long 99% distinct: Collecting 100 samples in estimated 5.0467 s (26\napprox_distinct utf8 long 99% distinct\n                        time:   [19.134 µs 19.197 µs 19.309 µs]\n                        change: [+9.0293% +9.4204% +9.8109%] (p \u003d 0.00 \u003c 0.05)\n                        Performance has regressed.\nFound 4 outliers among 100 measurements (4.00%)\n  2 (2.00%) low severe\n  1 (1.00%) low mild\n  1 (1.00%) high severe\n\nBenchmarking approx_distinct utf8view long 99% distinct: Collecting 100 samples in estimated 5.0953 s\napprox_distinct utf8view long 99% distinct\n                        time:   [21.295 µs 21.332 µs 21.384 µs]\n                        change: [+1.9350% +2.2141% +2.4823%] (p \u003d 0.00 \u003c 0.05)\n                        Performance has regressed.\nFound 1 outliers among 100 measurements (1.00%)\n  1 (1.00%) high mild\n\nBenchmarking approx_distinct u8 bitmap: Collecting 100 samples in estimated 5.0022 s (4.2M iterations\napprox_distinct u8 bitmap\n                        time:   [1.1961 µs 1.1976 µs 1.1994 µs]\n                        change: [−3.8254% −3.1554% −2.5920%] (p \u003d 0.00 \u003c 0.05)\n                        Performance has improved.\nFound 5 outliers among 100 measurements (5.00%)\n  2 (2.00%) low mild\n  3 (3.00%) high mild\n\nBenchmarking approx_distinct i8 bitmap: Collecting 100 samples in estimated 5.0058 s (4.2M iterations\napprox_distinct i8 bitmap\n                        time:   [1.2043 µs 1.2058 µs 1.2075 µs]\n                        change: [−0.6865% −0.3102% −0.0076%] (p \u003d 0.07 \u003e 0.05)\n                        No change in performance detected.\nFound 9 outliers among 100 measurements (9.00%)\n  1 (1.00%) low severe\n  3 (3.00%) low mild\n  4 (4.00%) high mild\n  1 (1.00%) high severe\n\nBenchmarking approx_distinct u16 bitmap: Collecting 100 samples in estimated 5.0052 s (1.1M iteration\napprox_distinct u16 bitmap\n                        time:   [4.3272 µs 4.3392 µs 4.3521 µs]\n                        change: [−1.5999% −1.1667% −0.7366%] (p \u003d 0.00 \u003c 0.05)\n                        Change within noise threshold.\nFound 6 outliers among 100 measurements (6.00%)\n  5 (5.00%) low mild\n  1 (1.00%) high mild\n\nBenchmarking approx_distinct i16 bitmap: Collecting 100 samples in estimated 5.0171 s (1.1M iteration\napprox_distinct i16 bitmap\n                        time:   [4.4383 µs 4.4431 µs 4.4479 µs]\n                        change: [+2.4499% +2.8213% +3.1689%] (p \u003d 0.00 \u003c 0.05)\n                        Performance has regressed.\nFound 5 outliers among 100 measurements (5.00%)\n  4 (4.00%) low mild\n  1 (1.00%) high mild\n\nBenchmarking approx_distinct_grouped/Int64 50000 groups: Collecting 10 samples in estimated 5.4914 s\napprox_distinct_grouped/Int64 50000 groups\n                        time:   [9.8851 ms 9.9005 ms 9.9293 ms]\n                        change: [−3.5210% −2.9384% −2.4270%] (p \u003d 0.00 \u003c 0.05)\n                        Performance has improved.\nFound 1 outliers among 10 measurements (10.00%)\n  1 (10.00%) high mild\nBenchmarking approx_distinct_grouped/Utf8 50000 groups: Collecting 10 samples in estimated 5.0165 s (\napprox_distinct_grouped/Utf8 50000 groups\n                        time:   [10.116 ms 10.148 ms 10.186 ms]\n                        change: [−4.9237% −4.6468% −4.3582%] (p \u003d 0.00 \u003c 0.05)\n                        Performance has improved.\nBenchmarking approx_distinct_grouped/Utf8View 50000 groups: Collecting 10 samples in estimated 5.4867\napprox_distinct_grouped/Utf8View 50000 groups\n                        time:   [9.9450 ms 9.9498 ms 9.9556 ms]\n                        change: [−3.4418% −3.0161% −2.5685%] (p \u003d 0.00 \u003c 0.05)\n                        Performance has improved.\nFound 1 outliers among 10 measurements (10.00%)\n  1 (10.00%) high severe\n```\n\n\u003c/details\u003e\nIt shows some get 5% faster due to batched hashing, some utf cases get\nslower (the worst one 22% slower)\n\nI think it\u0027s still a good idea to ignore the regression and simplify the\ncode due to:\n\n#### Amdahl\u0027s Law\n\nIf we make function X 20% faster, but function X only takes 1% of query\ntime, then the complexity to win the performance might not be worthy:\nspecifically the microbench only measured `update_batch()` function,\nthis piece of code is highly vectorizable, and it can very unlikely to\nbe significant on real queries.\n\nI tried to construct a query that is very heavy on `update_batch`, still\ncan\u0027t observe end-to-end difference:\n\n```sql id\u003d\"8d3m2p\"\n\u003e select approx_distinct(v1)\nfrom (\nselect arrow_cast(v1, \u0027Utf8View\u0027)\nfrom generate_series(100000000)\nas t1(v1)) as t_string(v1);\n\n+------------------------------+\n| approx_distinct(t_string.v1) |\n+------------------------------+\n| 99201889                     |\n+------------------------------+\n1 row(s) fetched.\nElapsed 0.139 seconds.\n\n-- Runtime almost the same on PR v.s. main\n```\n\n#### LLVM Optimization\n\nFor the slowest microbench, I think the root cause is that LLVM can\noptimize the manually simplified code more easily.\n\nThe existing implementation has the following fast path:\n\n\nhttps://github.com/apache/datafusion/blob/b8998c762bb864a9f3607a518384b03dcf40eb61/datafusion/functions-aggregate/src/approx_distinct.rs#L254-L261\n\nThe same optimization also exists in the common, simpler API\n`create_hashes`:\n\n\nhttps://github.com/apache/datafusion/blob/b8998c762bb864a9f3607a518384b03dcf40eb61/datafusion/common/src/hash_utils.rs#L352\n\nThe existing implementation is still faster likely because the code is\nmanually specialized, while `create_hashes` is more branchy. This makes\nLLVM easier to figure out how to optimize and bring 20% speedup.\n\nHowever, this kind of optimization can be applied endlessly and would\nintroduce complexity everywhere, so I do not think it is worth\npreserving here.\n\n\n\n\n## What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n1. Extend `create_hashes` with a hash state that is optimized for\nstatistical quality\n2. Simplify `approx_distinct` with create_hashes\n\n## Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n3. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\n\n## Are there any user-facing changes?\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e"
    },
    {
      "commit": "0fc55d06797cac2190239c82b2d5f0a06b4d42e7",
      "tree": "ca689fb9f944b777628ee44bad6ba16539fbfeb4",
      "parents": [
        "1f45d83bf353665d6b54ce057edc54ab1ee8f06c"
      ],
      "author": {
        "name": "Florian Müller",
        "email": "florian@tomueller.de",
        "time": "Thu Jun 18 08:44:27 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 06:44:27 2026 +0000"
      },
      "message": "refactor: make scalar distance u64 and overflow aware (#22892)\n\nCloses #22687\n\n## Rationale for this change\n\nThe distance API in `datafusion/common/src/scalar/mod.rs` previously\nreturned `Option\u003cusize\u003e`. `usize` is machine-width dependent and does\nnot represent value-domain cardinality. This could lead to\ntarget-dependent behavior on large integer/temporal ranges.\nAdditionally, downstream callers like `interval_arithmetic.rs` had to\nconvert the distance back to `u64` to compute cardinality.\n\nExposing an overflow-aware `u64`-oriented contract (`distance_u64`)\nresolves these architecture differences and aligns the API with\nvalue-domain semantics.\n\n## What changes are included in this PR?\n\n- Added `distance_u64`: Added a new public method `distance_u64(\u0026self,\nother: \u0026ScalarValue) -\u003e Option\u003cu64\u003e` to `ScalarValue`.\n- Deprecated `distance`: Marked the original `distance(\u0026self, other:\n\u0026ScalarValue) -\u003e Option\u003cusize\u003e` method as deprecated and redirected it\nto call `distance_u64`.\n- Interval Cardinality: Migrated the cardinality calculation in\n`datafusion/expr-common/src/interval_arithmetic.rs` to use\n`distance_u64` directly.\n- Selectivity / Stats Overlap: Migrated the overlap calculations in\n`datafusion/common/src/stats.rs` to use `distance_u64`.\n- Boundary/Overflow Tests: Added `test_scalar_distance_u64_boundaries`\nin `scalar/mod.rs` to verify edge cases:\n  - Full signed range edge (`i64::MIN` to `i64::MAX`)\n  - Full unsigned range edge (`u64::MIN` to `u64::MAX`)\n- Large temporal range edge (`TimestampSecond` and `Date32` boundaries)\n- Overflow-to-None behavior (exceeding `u64::MAX` for Float,\n`Decimal128`, and `Decimal256` values)\n\n## Are these changes tested?\n\nYes, they are covered by the new unit tests in `datafusion-common` and\nexisting test suites in both `datafusion-common` and\n`datafusion-expr-common`.\n\n## Are there any user-facing changes?\n\nNo, deprecation of `ScalarValue::distance` has been removed from this PR"
    },
    {
      "commit": "1f45d83bf353665d6b54ce057edc54ab1ee8f06c",
      "tree": "bb38fca607d481e9e5521197ce9aa227c5244cdf",
      "parents": [
        "3f4bcf15c9a68972deb0f294062eb81c4b77e9c8"
      ],
      "author": {
        "name": "Huaijin",
        "email": "haohuaijin@gmail.com",
        "time": "Thu Jun 18 14:36:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 06:36:37 2026 +0000"
      },
      "message": "fix: parquet limit pruning for row group selections (#22942)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Closes #22941\n\n## Rationale for this change\n\nLimit pruning handled row groups with `RowSelection` incorrectly. It\ncounted the full row group size and could replace a selection with a\nfull scan.\n\n## What changes are included in this PR?\n\n- Preserve existing row selections.\n- Count only selected rows when checking the limit.\n- Add regression tests for both cases.\n\n## Are these changes tested?\n\nYes. New unit tests cover preserving `RowSelection` and counting\nselected rows during limit pruning.\n\n## Are there any user-facing changes?\n\nNo API changes."
    },
    {
      "commit": "3f4bcf15c9a68972deb0f294062eb81c4b77e9c8",
      "tree": "a0ec9734a1e5ea92f1277e8b22213c07f0d6608a",
      "parents": [
        "2da88876f6e764ca3052c92b9d1783929d13d7bf"
      ],
      "author": {
        "name": "Neil Conway",
        "email": "neil.conway@gmail.com",
        "time": "Thu Jun 18 02:20:30 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 06:20:30 2026 +0000"
      },
      "message": "fix: Omit NULL values from build side of hash joins (#22893)\n\n## Which issue does this PR close?\n\n- Closes #22875\n\n## Rationale for this change\n\nPreviously, when the build side of a hash join was backed by an\n`ArrayMap`, rows with NULLs in their join keys were omitted, but they\nwere included for `HashMap`-backed hash joins. Under\n`NullEqualsNothing`, we can safely omit rows that have a NULL in any of\ntheir join keys, because they will never contribute to the output of the\njoin. Omitting NULLs reduces the size of the build-side hash table.\n\nThe previous probe behavior also resulted in searching the hash table\nfor probe rows with NULLs in their join keys. This was wasted work;\nindeed, because all NULL build rows will end up in the same hash chain,\nthis could actually be very expensive for joins over NULL-heavy data\nsets. For example, joining two 10k tables on all-NULL join keys took ~6\nseconds (!). That drops to a few milliseconds after this PR.\n\n## What changes are included in this PR?\n\n* Omit build rows with one or more NULLs in their join keys from\n`HashMap`\n* Don\u0027t probe the map for probe rows with NULLs in their join keys\n* Fix a few places that assumed that an empty build-side hash table\nmeant the build input was empty\n* Add unit tests\n\n## Are these changes tested?\n\nYes; new tests added.\n\n## Are there any user-facing changes?\n\nNo."
    },
    {
      "commit": "2da88876f6e764ca3052c92b9d1783929d13d7bf",
      "tree": "1c33e3cb4f7707615f7085a0929d4542158d08f2",
      "parents": [
        "283648001bbcf4e32a09ca9d796ffc682c68c329"
      ],
      "author": {
        "name": "Harrison Crosse",
        "email": "harrison@crosse.dev",
        "time": "Thu Jun 18 02:04:27 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 06:04:27 2026 +0000"
      },
      "message": "chore: attach Diagnostic to unary operator type errors (#21288)\n\n## Which issue does this PR close?\n\n- Closes #14433\n\n## What changes are included in this PR?\n\nAttaches `Diagnostic` (message, note, help) to the `NOT` and `-` error\npaths in `unary_op.rs`. Also extends `Expr::spans()` to recurse through\n`Not`/`Negative` so column source locations propagate to the error.\n\n`+` already had this, this PR covers the remaining two operators.\n\n## Are these changes tested?\n\nYes, added tests in `diagnostic.rs` for column and non-column operands\nfor both operators.\n\n## Are there any user-facing changes?\n\nError messages for `NOT \u003cnon-boolean\u003e` and `- \u003cnon-numeric\u003e` now include\nsource location and a fix suggestion.\n\n---------\n\nCo-authored-by: Jeffrey Vo \u003cjeffrey.vo.australia@gmail.com\u003e"
    },
    {
      "commit": "283648001bbcf4e32a09ca9d796ffc682c68c329",
      "tree": "37d817325a72cf0e7a704927c22dd1d25240c177",
      "parents": [
        "ddc157d10e8989295241dc3e5820aa0e7465e23f"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Thu Jun 18 11:48:48 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 03:48:48 2026 +0000"
      },
      "message": "fix: ProjectionPushdown internal error on NestedLoopJoin mark joins (#22902)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Closes #22901.\n\n## Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the issue then this section is not needed.\nExplaining clearly why changes are proposed helps reviewers understand\nyour changes and offer better suggestions for fixes.\n--\u003e\n\nA query whose subquery becomes a mark join (`LeftMark`/`RightMark`) can\npanic during the `ProjectionPushdown` physical optimization with an\ninternal assertion error.\n\nThe pushdown helper `try_pushdown_through_join` assumes the join output\nschema is the plain concatenation of its two children (`left ++ right`)\nand uses `join_table_borders` to split the projected columns into a left\ngroup and a right group by column index. Mark joins break this\nassumption: they append an extra `mark` boolean column that does not\noriginate from either child, so the column-index split misroutes columns\nto the wrong side and the subsequent child-projection rewrite fails its\nname-match assertion.\n\n## What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\nIn `HashJoinExec::try_swapping_with_projection` and\n`NestedLoopJoinExec::try_swapping_with_projection`, skip the\n`try_pushdown_through_join` path for mark joins (`LeftMark`/`RightMark`)\nand fall through to embedding the projection into the join instead.\n\n## Are these changes tested?\n\nYes.\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\n\n## Are there any user-facing changes?\n\nYes, only bug fixes.\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e"
    },
    {
      "commit": "ddc157d10e8989295241dc3e5820aa0e7465e23f",
      "tree": "9c8222dcb7fb52a02bfd6cb23b0a6ef889e82b92",
      "parents": [
        "7bb6e152bee1df3cd8215176742bfc1cdf300e52"
      ],
      "author": {
        "name": "kosiew",
        "email": "kosiew@gmail.com",
        "time": "Wed Jun 17 22:33:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 14:33:22 2026 +0000"
      },
      "message": "Refactor outer join null-rejection analysis to track join sides directly (#22870)\n\n## Which issue does this PR close?\n\nCloses #22686\n\n## Rationale for this change\n\n`EliminateOuterJoin` makes join elimination decisions using side-level\ninformation (whether the left and/or right side reject NULL-padded\nrows), but the existing implementation first collects null-rejecting\ncolumns and then derives side-level booleans by scanning those columns.\n\nThis intermediate `Vec\u003cColumn\u003e` representation adds indirection and\nmakes the null-rejection logic for constructs such as top-level `AND`,\nnested `AND`, and `OR` harder to follow. This change refactors the\nanalysis to represent null-rejection evidence directly at the join-side\nlevel while preserving existing optimizer behavior.\n\n## What changes are included in this PR?\n\n* Replace column-based null-rejection tracking with a new private\n`NullRejectingSides` helper that records side-level evidence (`left` /\n`right`).\n* Refactor `extract_null_rejecting_columns` into\n`extract_null_rejecting_sides`, returning side-level null-rejection\ninformation directly.\n* Simplify `try_simplify_join` to use the returned side-level evidence\nwithout allocating and scanning a `Vec\u003cColumn\u003e`.\n* Add `union` and `intersection` helpers to model the existing\nnull-rejection semantics for:\n\n  * top-level `AND` (union of side evidence),\n  * `OR` and nested `AND` (intersection of side evidence),\n  * other NULL-propagating operators (union of operand evidence).\n* Update comments throughout the file to describe the optimizer\u0027s\nside-level null-rejection contract and the conservative handling of\nunsupported or NULL-accepting expressions.\n* Leave `eliminate_outer` and join conversion behavior unchanged. \n\n## Are these changes tested?\n\nYes.\n\nThis PR adds unit tests for the new helper behavior:\n\n* `null_rejecting_sides_union`\n* `null_rejecting_sides_intersection`\n\nThe change is intended to be behavior-preserving and continues to rely\non the existing `eliminate_outer_join` test coverage.\n\n## Are there any user-facing changes?\n\nNo.\n\nThis is an internal optimizer refactor and comment cleanup intended to\npreserve existing query planning behavior.\n\n## LLM-generated code disclosure\n\nThis PR includes LLM-generated code and comments. All LLM-generated\ncontent has been manually reviewed and tested.\n\n---------\n\nCo-authored-by: Neil Conway \u003cneil.conway@gmail.com\u003e"
    },
    {
      "commit": "7bb6e152bee1df3cd8215176742bfc1cdf300e52",
      "tree": "35ad57bffeda3a5ba8487a214b508e12a5405bf5",
      "parents": [
        "8172873a04c19394b56ff78c5a6f0b03de9cbd64"
      ],
      "author": {
        "name": "Gabriel",
        "email": "45515538+gabotechs@users.noreply.github.com",
        "time": "Wed Jun 17 07:38:25 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 05:38:25 2026 +0000"
      },
      "message": "Remove redundant `collect_stat` and `target_partitions`  on `ListingOptions` (#22969)\n\n## Which issue does this PR close?\n\n- Closes #.\n\n## Rationale for this change\n\nSomething that was spotted during the review of:\n- https://github.com/apache/datafusion/pull/22657\n\n`ListingOptions::target_partitions` and `ListingOptions::collect_stat`\nduplicate `SessionConfig`\u0027s `execution.target_partitions` and\n`execution.collect_statistics`.\n\nAfter some investigation, I think they only live on `ListingOptions` for\nhistorical reasons: when the struct was added (#1010 5 years ago),\n`TableProvider::scan` had no access to the session, so the values had to\nbe copied onto the table at build time. Once #2660 passed `SessionState`\ninto `scan`, the fields became redundant (and had already drifted —\n`scan` read them from the session config while `list_files_for_scan`\nread the stale copy). This PR makes `SessionConfig` the single source of\ntruth.\n\n## What changes are included in this PR?\n\n- Remove `target_partitions`/`collect_stat` fields, their builders, and\n`with_session_config_options` from `ListingOptions`.\n- `ListingTable` now reads both values from the session config at scan\ntime.\n- Reserve proto tags 8/9 in `ListingTableScanNode` and drop the related\n(de)serialization.\n- Update benchmarks, factory, and test call sites.\n\n## Are these changes tested?\n\nYes, by existing tests\n\n## Are there any user-facing changes?\n\nYes, breaking: the removed fields/builders require configuring\n`SessionConfig` instead, and the two proto fields no longer round-trip.\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "8172873a04c19394b56ff78c5a6f0b03de9cbd64",
      "tree": "af6198a48c32fb2b12d7bd3f2bebb284fa05c5e0",
      "parents": [
        "96a6096c6f4b924e8cab4bc1629759a948e12939"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jun 17 14:53:29 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 04:53:29 2026 +0000"
      },
      "message": "chore(deps): bump the all-other-cargo-deps group across 1 directory with 6 updates (#22975)\n\nBumps the all-other-cargo-deps group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [insta](https://github.com/mitsuhiko/insta) | `1.47.2` | `1.48.0` |\n| [memchr](https://github.com/BurntSushi/memchr) | `2.8.1` | `2.8.2` |\n| [regex](https://github.com/rust-lang/regex) | `1.12.3` | `1.12.4` |\n| [uuid](https://github.com/uuid-rs/uuid) | `1.23.2` | `1.23.3` |\n| [stabby](https://github.com/ZettaScaleLabs/stabby) | `72.1.2` |\n`72.1.8` |\n\n\nUpdates `insta` from 1.47.2 to 1.48.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/releases\"\u003einsta\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.48.0\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003estrip_ansi_escape_codes\u003c/code\u003e setting which removes ANSI\nescape sequences\n(color codes, cursor movement, etc.) from snapshot content before\ncomparison.\nRequires the \u003ccode\u003efilters\u003c/code\u003e feature. \u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/899\"\u003e#899\u003c/a\u003e\n(\u003ca\nhref\u003d\"https://github.com/pierluigilenoci\"\u003e\u003ccode\u003e@​pierluigilenoci\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd opt-in support for YAML literal blocks for multiline strings in\nsnapshot\nmetadata fields such as \u003ccode\u003edescription\u003c/code\u003e and\n\u003ccode\u003eexpression\u003c/code\u003e. Set\n\u003ccode\u003eINSTA_YAML_BLOCK_STYLE\u003d1\u003c/code\u003e to enable. \u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/851\"\u003e#851\u003c/a\u003e\n(\u003ca href\u003d\"https://github.com/ivov\"\u003e\u003ccode\u003e@​ivov\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSetting \u003ccode\u003eCI\u003dtrue\u003c/code\u003e normally makes \u003ccode\u003ecargo insta\ntest\u003c/code\u003e behave as though \u003ccode\u003e--check\u003c/code\u003e\nwas passed. Explicit snapshot handling options such as\n\u003ccode\u003e--accept\u003c/code\u003e now take\nprecedence over this environment variable, allowing users to override\nthis\nbehavior if they want to. \u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/924\"\u003e#924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecargo insta test --profile\u003c/code\u003e being forwarded to\nnextest as the nextest\nprofile instead of the cargo build profile; it now translates to\n\u003ccode\u003e--cargo-profile\u003c/code\u003e for the nextest runner. Add\n\u003ccode\u003e--nextest-profile\u003c/code\u003e to select\nthe nextest profile. \u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/910\"\u003e#910\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecargo insta pending-snapshots\u003c/code\u003e printing unusable\n\u003ccode\u003e\\\\?\\\u003c/code\u003e-prefixed paths\non Windows. The \u003ccode\u003e--snapshot\u003c/code\u003e filter now also accepts partial\npaths: any\ntrailing path suffix of the snapshot file matches, so a bare\n\u003ccode\u003e--snapshot my_test.snap\u003c/code\u003e works. \u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/904\"\u003e#904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccepting a binary snapshot no longer fails with \u003ccode\u003eos error\n2\u003c/code\u003e when its data\nfile is missing (e.g. gitignored and not committed). \u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/914\"\u003e#914\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall cargo-insta 1.48.0\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang\u003d\"sh\"\u003e\u003ccode\u003ecurl --proto \u0027\u003dhttps\u0027 --tlsv1.2 -LsSf\nhttps://github.com/mitsuhiko/insta/releases/download/1.48.0/cargo-insta-installer.sh\n| sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang\u003d\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm\nhttps://github.com/mitsuhiko/insta/releases/download/1.48.0/cargo-insta-installer.ps1\n| iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload cargo-insta 1.48.0\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003ePlatform\u003c/th\u003e\n\u003cth\u003eChecksum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/releases/download/1.48.0/cargo-insta-aarch64-apple-darwin.tar.xz\"\u003ecargo-insta-aarch64-apple-darwin.tar.xz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eApple Silicon macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/releases/download/1.48.0/cargo-insta-aarch64-apple-darwin.tar.xz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/releases/download/1.48.0/cargo-insta-x86_64-apple-darwin.tar.xz\"\u003ecargo-insta-x86_64-apple-darwin.tar.xz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eIntel macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/releases/download/1.48.0/cargo-insta-x86_64-apple-darwin.tar.xz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/releases/download/1.48.0/cargo-insta-x86_64-pc-windows-msvc.zip\"\u003ecargo-insta-x86_64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/releases/download/1.48.0/cargo-insta-x86_64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/releases/download/1.48.0/cargo-insta-x86_64-unknown-linux-gnu.tar.xz\"\u003ecargo-insta-x86_64-unknown-linux-gnu.tar.xz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex64 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/releases/download/1.48.0/cargo-insta-x86_64-unknown-linux-gnu.tar.xz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/releases/download/1.48.0/cargo-insta-x86_64-unknown-linux-musl.tar.xz\"\u003ecargo-insta-x86_64-unknown-linux-musl.tar.xz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex64 MUSL Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/releases/download/1.48.0/cargo-insta-x86_64-unknown-linux-musl.tar.xz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md\"\u003einsta\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.48.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003estrip_ansi_escape_codes\u003c/code\u003e setting which removes ANSI\nescape sequences\n(color codes, cursor movement, etc.) from snapshot content before\ncomparison.\nRequires the \u003ccode\u003efilters\u003c/code\u003e feature. \u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/899\"\u003e#899\u003c/a\u003e\n(\u003ca\nhref\u003d\"https://github.com/pierluigilenoci\"\u003e\u003ccode\u003e@​pierluigilenoci\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd opt-in support for YAML literal blocks for multiline strings in\nsnapshot\nmetadata fields such as \u003ccode\u003edescription\u003c/code\u003e and\n\u003ccode\u003eexpression\u003c/code\u003e. Set\n\u003ccode\u003eINSTA_YAML_BLOCK_STYLE\u003d1\u003c/code\u003e to enable. \u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/851\"\u003e#851\u003c/a\u003e\n(\u003ca href\u003d\"https://github.com/ivov\"\u003e\u003ccode\u003e@​ivov\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSetting \u003ccode\u003eCI\u003dtrue\u003c/code\u003e normally makes \u003ccode\u003ecargo insta\ntest\u003c/code\u003e behave as though \u003ccode\u003e--check\u003c/code\u003e\nwas passed. Explicit snapshot handling options such as\n\u003ccode\u003e--accept\u003c/code\u003e now take\nprecedence over this environment variable, allowing users to override\nthis\nbehavior if they want to. \u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/924\"\u003e#924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecargo insta test --profile\u003c/code\u003e being forwarded to\nnextest as the nextest\nprofile instead of the cargo build profile; it now translates to\n\u003ccode\u003e--cargo-profile\u003c/code\u003e for the nextest runner. Add\n\u003ccode\u003e--nextest-profile\u003c/code\u003e to select\nthe nextest profile. \u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/910\"\u003e#910\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecargo insta pending-snapshots\u003c/code\u003e printing unusable\n\u003ccode\u003e\\\\?\\\u003c/code\u003e-prefixed paths\non Windows. The \u003ccode\u003e--snapshot\u003c/code\u003e filter now also accepts partial\npaths: any\ntrailing path suffix of the snapshot file matches, so a bare\n\u003ccode\u003e--snapshot my_test.snap\u003c/code\u003e works. \u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/904\"\u003e#904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccepting a binary snapshot no longer fails with \u003ccode\u003eos error\n2\u003c/code\u003e when its data\nfile is missing (e.g. gitignored and not committed). \u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/914\"\u003e#914\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\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\nhref\u003d\"https://github.com/mitsuhiko/insta/commit/7f23d2e4684a789a85c50503004fb38a23c9ea58\"\u003e\u003ccode\u003e7f23d2e\u003c/code\u003e\u003c/a\u003e\nRelease 1.48.0 (\u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/925\"\u003e#925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/commit/ee9cae1eb49cfa80c3d335246b0cfbb6bd006027\"\u003e\u003ccode\u003eee9cae1\u003c/code\u003e\u003c/a\u003e\nAllow \u003ccode\u003eCI\u003dtrue\u003c/code\u003e to be overridden by an explicitly passed\n\u003ccode\u003e--accept\u003c/code\u003e CLI flag ...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/commit/043cf8268e3be93ca684fbfbf3969ad03ad71046\"\u003e\u003ccode\u003e043cf82\u003c/code\u003e\u003c/a\u003e\nfix: translate --profile to --cargo-profile for nextest (\u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/913\"\u003e#913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/commit/9c77f137b160e2235a71770d370fc1b4e7b1f456\"\u003e\u003ccode\u003e9c77f13\u003c/code\u003e\u003c/a\u003e\ntest: cover deep-wildcard redaction through arrays (\u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/915\"\u003e#915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/commit/362f432b2d33ca9cdc0fe298a62942b3e13082d2\"\u003e\u003ccode\u003e362f432\u003c/code\u003e\u003c/a\u003e\nFix \u003ccode\u003e--snapshot\u003c/code\u003e filter on Windows; allow partial paths (\u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/904\"\u003e#904\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/commit/a436836bb22bd1c857f374c8aea6064120680558\"\u003e\u003ccode\u003ea436836\u003c/code\u003e\u003c/a\u003e\nfix: tolerate a missing binary snapshot data file (\u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/commit/bf5fcdf1646087b717039011ac9a27cff3b4fc02\"\u003e\u003ccode\u003ebf5fcdf\u003c/code\u003e\u003c/a\u003e\nfix: regenerate Cargo.lock and guard it with --locked in CI (\u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/912\"\u003e#912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/commit/a761a9c937406d8eeab45f23d98d5a2a12105aaf\"\u003e\u003ccode\u003ea761a9c\u003c/code\u003e\u003c/a\u003e\nfeat: Support YAML literal blocks for multiline strings (\u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/851\"\u003e#851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/commit/f9633f3a1251a10b8a96243cb941c7834e91288d\"\u003e\u003ccode\u003ef9633f3\u003c/code\u003e\u003c/a\u003e\nci: pin \u003ccode\u003echeck-minver\u003c/code\u003e to nightly-2026-04-25 (\u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/905\"\u003e#905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/commit/c7b98b8d23846130ce769f86ec8c33b0f221d48e\"\u003e\u003ccode\u003ec7b98b8\u003c/code\u003e\u003c/a\u003e\nfeat: add strip_ansi_escape_codes setting (\u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta/issues/899\"\u003e#899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta/compare/1.47.2...1.48.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `memchr` from 2.8.1 to 2.8.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/BurntSushi/memchr/commit/a61ac1a3638e8b6bdc42226ad38431e626a02c72\"\u003e\u003ccode\u003ea61ac1a\u003c/code\u003e\u003c/a\u003e\n2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/BurntSushi/memchr/commit/a08bf90b14b3ee858e7c59286e232879d173d16b\"\u003e\u003ccode\u003ea08bf90\u003c/code\u003e\u003c/a\u003e\narch: fix undefined behavior in lower level (but public) APIs\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/BurntSushi/memchr/commit/b41293b805c2709ef19d98f9b1191ca2e3a4e7c8\"\u003e\u003ccode\u003eb41293b\u003c/code\u003e\u003c/a\u003e\nrebar: update memchr to latest\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/BurntSushi/memchr/commit/87467c9ca52d40bb68978c1c7dc92097d0289833\"\u003e\u003ccode\u003e87467c9\u003c/code\u003e\u003c/a\u003e\nimpl: remove unnecessary clones in \u003ccode\u003einto_owned\u003c/code\u003e impls\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/BurntSushi/memchr/compare/2.8.1...2.8.2\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `regex` from 1.12.3 to 1.12.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/rust-lang/regex/blob/master/CHANGELOG.md\"\u003eregex\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.12.4 (2025-06-09)\u003c/h1\u003e\n\u003cp\u003eThis release includes a performance optimization for compilation of\nregexes\nwith very large character classes.\u003c/p\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/regex/pull/1308\"\u003e#1308\u003c/a\u003e:\nAvoid re-canonicalizing the entire interval set when pushing new class\nranges.\u003c/li\u003e\n\u003c/ul\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\nhref\u003d\"https://github.com/rust-lang/regex/commit/7b96fdc9d5fe6a0cb4efe30e6689b050493fc1e1\"\u003e\u003ccode\u003e7b96fdc\u003c/code\u003e\u003c/a\u003e\n1.12.4\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/regex/commit/7b89cf0534aa58ab8a4a6672e14a59b53f08eb2c\"\u003e\u003ccode\u003e7b89cf0\u003c/code\u003e\u003c/a\u003e\ndeps: update to regex-syntax 0.8.11\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/regex/commit/140167995737fa11dfe11b8af8b9aa143b790b4e\"\u003e\u003ccode\u003e1401679\u003c/code\u003e\u003c/a\u003e\nregex-syntax-0.8.11\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/regex/commit/d7090000b3be51677d8e79c3b8bcc8a4d176bddc\"\u003e\u003ccode\u003ed709000\u003c/code\u003e\u003c/a\u003e\nchangelog: 1.12.4\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/regex/commit/9825c741c8ac1e61e8f78cebc12205cd35e4767f\"\u003e\u003ccode\u003e9825c74\u003c/code\u003e\u003c/a\u003e\nsyntax: avoid re-canonicalizing the entire IntervalSet on push (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/regex/issues/1308\"\u003e#1308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/regex/commit/a7f2ff6dbc43f40994d7c3d1d968ba4ac92329e1\"\u003e\u003ccode\u003ea7f2ff6\u003c/code\u003e\u003c/a\u003e\ndocs: clarify regex-lite word boundaries\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/regex/commit/2c7b17246da744bb2e1b911d3ddc1369fe3b472a\"\u003e\u003ccode\u003e2c7b172\u003c/code\u003e\u003c/a\u003e\ndocs: clarify unsupported Anchored::Pattern searches\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/regex/commit/839d16bc65b60e2006d3599d20bfa6efc14049d8\"\u003e\u003ccode\u003e839d16b\u003c/code\u003e\u003c/a\u003e\nregex-syntax-0.8.10\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/regex/commit/c4865a0c8446a701e10b0fd987f19068f5dcc365\"\u003e\u003ccode\u003ec4865a0\u003c/code\u003e\u003c/a\u003e\nsyntax: fix negation handling in HIR translation\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/regex/commit/d8761c00ed25c5899e3dcfb0f17e827b8e41530a\"\u003e\u003ccode\u003ed8761c0\u003c/code\u003e\u003c/a\u003e\ncargo: also include \u003ccode\u003ebenches\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/rust-lang/regex/compare/1.12.3...1.12.4\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uuid` from 1.23.2 to 1.23.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/uuid-rs/uuid/releases\"\u003euuid\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.23.3\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix up parser panic on empty input by \u003ca\nhref\u003d\"https://github.com/KodrAus\"\u003e\u003ccode\u003e@​KodrAus\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/uuid-rs/uuid/pull/886\"\u003euuid-rs/uuid#886\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 1.23.3 release by \u003ca\nhref\u003d\"https://github.com/KodrAus\"\u003e\u003ccode\u003e@​KodrAus\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/uuid-rs/uuid/pull/887\"\u003euuid-rs/uuid#887\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/uuid-rs/uuid/compare/v1.23.2...v1.23.3\"\u003ehttps://github.com/uuid-rs/uuid/compare/v1.23.2...v1.23.3\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\nhref\u003d\"https://github.com/uuid-rs/uuid/commit/20da78b1813319c8017d107089caec1ff9d6b1a8\"\u003e\u003ccode\u003e20da78b\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/uuid-rs/uuid/issues/887\"\u003e#887\u003c/a\u003e from\nuuid-rs/cargo/v1.23.3\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/uuid-rs/uuid/commit/62232ca120b1b09eea5979ca966e9669705e8841\"\u003e\u003ccode\u003e62232ca\u003c/code\u003e\u003c/a\u003e\nprepare for 1.23.3 release\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/uuid-rs/uuid/commit/2320c6a0335cfddaec4df58d1a7fe410070ab9e9\"\u003e\u003ccode\u003e2320c6a\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/uuid-rs/uuid/issues/886\"\u003e#886\u003c/a\u003e from\nuuid-rs/fix/parser-panics\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/uuid-rs/uuid/commit/2d034d41a518b0a103e96d47e04690f6644de487\"\u003e\u003ccode\u003e2d034d4\u003c/code\u003e\u003c/a\u003e\nfix some invalid indexers on error reporting\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/uuid-rs/uuid/commit/a8b9f142678d9640ba6dc80c5e2d69635d4dd62f\"\u003e\u003ccode\u003ea8b9f14\u003c/code\u003e\u003c/a\u003e\nupdate fuzz infra and run in CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/uuid-rs/uuid/compare/v1.23.2...v1.23.3\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `stabby` from 72.1.2 to 72.1.8\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/ZettaScaleLabs/stabby/blob/main/CHANGELOG.md\"\u003estabby\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e72.1.8 (api\u003d3.0.3, abi\u003d2.0.0)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eMake builds more reproducible \u003ca\nhref\u003d\"https://redirect.github.com/ZettaScaleLabs/stabby/pull/136\"\u003e#136\u003c/a\u003e\n(thanks \u003ca\nhref\u003d\"https://github.com/pablo-smith-saronic\"\u003e\u003ccode\u003e@​pablo-smith-saronic\u003c/code\u003e\u003c/a\u003e\nfor raising the issue and providing the fix)\u003c/li\u003e\n\u003cli\u003eFix CI for Rust 1.72, fix support for 1.72\u003c/li\u003e\n\u003cli\u003eEnable more lints to prevent unexpected panics\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e72.1.4 (api\u003d3.0.2, abi\u003d2.0.0)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eUpgraded \u003ccode\u003esyn\u003c/code\u003e to \u003ccode\u003e2.0.46+\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/ZettaScaleLabs/stabby/commits\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `regex-syntax` from 0.8.10 to 0.8.11\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/regex/commit/140167995737fa11dfe11b8af8b9aa143b790b4e\"\u003e\u003ccode\u003e1401679\u003c/code\u003e\u003c/a\u003e\nregex-syntax-0.8.11\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/regex/commit/d7090000b3be51677d8e79c3b8bcc8a4d176bddc\"\u003e\u003ccode\u003ed709000\u003c/code\u003e\u003c/a\u003e\nchangelog: 1.12.4\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/regex/commit/9825c741c8ac1e61e8f78cebc12205cd35e4767f\"\u003e\u003ccode\u003e9825c74\u003c/code\u003e\u003c/a\u003e\nsyntax: avoid re-canonicalizing the entire IntervalSet on push (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/regex/issues/1308\"\u003e#1308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/regex/commit/a7f2ff6dbc43f40994d7c3d1d968ba4ac92329e1\"\u003e\u003ccode\u003ea7f2ff6\u003c/code\u003e\u003c/a\u003e\ndocs: clarify regex-lite word boundaries\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/regex/commit/2c7b17246da744bb2e1b911d3ddc1369fe3b472a\"\u003e\u003ccode\u003e2c7b172\u003c/code\u003e\u003c/a\u003e\ndocs: clarify unsupported Anchored::Pattern searches\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/rust-lang/regex/compare/regex-syntax-0.8.10...regex-syntax-0.8.11\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "96a6096c6f4b924e8cab4bc1629759a948e12939",
      "tree": "c92f21c79373eb786fe8d4c9a8bf4cc504222670",
      "parents": [
        "a0e6d49cd5e99569999ad20c56dff956fc928685"
      ],
      "author": {
        "name": "Xin Huang",
        "email": "42597328+huan233usc@users.noreply.github.com",
        "time": "Tue Jun 16 12:17:45 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 19:17:45 2026 +0000"
      },
      "message": "feat: support reading from stdin in datafusion-cli (#22839)\n\n## Which issue does this PR close?\n\n- Closes #9430.\n\n## Rationale for this change\n\nUsers frequently want to pipe data into the CLI, e.g. `cat data.csv |\ndatafusion-cli`, but pointing `LOCATION` at `/dev/stdin` did not work:\n\n- CSV failed with `Illegal seek` (a pipe is not seekable).\n- Parquet failed with `file size of 0 is less than footer` (a pipe\nreports size 0).\n- JSON silently returned 0 rows.\n\nThis PR makes reading from standard input work for CSV, JSON, and\nParquet.\n\n## What changes are included in this PR?\n\nstdin is exposed as a `stdin://` object store, dispatched alongside the\nother schemes (`s3`, `gs`, `http`, ...) in `get_object_store` —\nconceptually similar to DuckDB\u0027s `PipeFileSystem`.\n\n- `rewrite_stdin_location` maps the well-known stdin pseudo-paths\n(`/dev/stdin`, `/dev/fd/0`, `/proc/self/fd/0`) to a canonical\n`stdin:///stdin.\u003cext\u003e` URL, so they flow through the normal\nobject-store/listing code path. The extension matches the declared\n`STORED AS` format because the listing layer filters candidate files by\nextension.\n- The `stdin://` store reads all of standard input into an in-memory\nobject store. Buffering up front is required because a pipe is not\nseekable and Parquet stores its metadata at the end of the file.\n\nKnown scope/limitations (left as potential follow-ups):\n- Only `CREATE EXTERNAL TABLE` is supported (not dynamic `SELECT * FROM\n\u0027/dev/stdin\u0027`).\n- Input is fully buffered in memory, so it must fit in memory.\n- stdin can only be consumed once per session.\n- Unix-only (`/dev/stdin` does not exist on Windows); writing to\n`/dev/stdout` is out of scope.\n\n## Are these changes tested?\n\nYes:\n- Unit tests in `object_storage.rs` cover `rewrite_stdin_location` and\nend-to-end reads for CSV, JSON, and Parquet via the in-memory store.\n- A `#[cfg(unix)]` integration test in `cli_integration.rs` drives the\nreal binary through an actual pipe, exercising the real stdin read.\n- Manually verified all three formats via real pipes, and confirmed\nnormal local-file reads are unaffected.\n\n## Are there any user-facing changes?\n\nYes — reading from stdin via `LOCATION \u0027/dev/stdin\u0027` is now supported.\nDocumented in `docs/source/user-guide/cli/datasources.md` (new \"Reading\nfrom standard input\" section). No breaking changes."
    },
    {
      "commit": "a0e6d49cd5e99569999ad20c56dff956fc928685",
      "tree": "25674c4a5370db663ed6b42239ad45dc7a662f44",
      "parents": [
        "c7e92848f958065fec0f74669bbcb66ae067c2ad"
      ],
      "author": {
        "name": "Nathan",
        "email": "56370526+nathanb9@users.noreply.github.com",
        "time": "Tue Jun 16 15:16:35 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 19:16:35 2026 +0000"
      },
      "message": "Make LogicalPlan::Unnest expression/rebuild contracts consistent (#22783)\n\n## Which issue does this PR close?\n\nCloses #22769\n\n## Rationale for this change\n\n`LogicalPlan::Unnest` had an inconsistent API contract:\n`apply_expressions()` exposed `exec_columns` but `with_new_exprs()`\nrejected them via `assert_no_expressions`. This broke the standard\n`node.with_new_exprs(node.expressions(), new_inputs)` pattern.\n\n## What changes are included in this PR?\n\n- `with_new_exprs` now accepts expressions from `apply_expressions`\n(extracts `Column` values back out)\n- `map_expressions` now properly transforms `exec_columns` instead of\ntreating Unnest as expressionless\n- Removed stale comment in `extract_leaf_expressions` (semantic barrier\nremains)\n\n## Are these changes tested?\n\nYes — two new unit tests proving both `with_new_exprs(expressions(),\ninputs)` and `with_new_exprs(vec![], inputs)` work. All existing\noptimizer and SLT tests pass.\n\n## Are there any user-facing changes?\n\nNo.\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "c7e92848f958065fec0f74669bbcb66ae067c2ad",
      "tree": "dc1a8c8239c23e00fb81faca13bb0b02638ead55",
      "parents": [
        "408dad3dc5733f1b438cf5515af3d8c0da4b178c"
      ],
      "author": {
        "name": "EeshanBembi",
        "email": "33062610+EeshanBembi@users.noreply.github.com",
        "time": "Tue Jun 16 23:10:46 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 17:40:46 2026 +0000"
      },
      "message": "refactor: use raw view access in do_append_val_inner and consolidate duplicated logic (#22907)\n\n## Which issue does this PR close?\n\nFollow-up to #21794, addressing review feedback from @alamb and\n@Dandandan.\n\n## Rationale for this change\n\nIn the review of #21794, several optimizations were suggested:\n\n- **@alamb**\n([comment](https://github.com/apache/datafusion/pull/21794#discussion_r2174375498)):\n\"as a possible future optimization, we could use `get_unchecked` here if\nit makes any difference\" — referring to the slow-path `arr.views()[row]`\naccess.\n- **@alamb**\n([comment](https://github.com/apache/datafusion/pull/21794#discussion_r2174376693)):\n\"from here on down I think this is basically the same as\nappend_val_inner -- if there are any differences perhaps we can fold it\ninto append_val_inner and avoid the copy\"\n- **@Dandandan**\n([comment](https://github.com/apache/datafusion/pull/21794#discussion_r2175204095)):\n\"In principle we can make this faster as well - `extend` + reuse input\nview (instead of make_view) + avoid `array.value(row)`\"\n\n## What changes are included in this PR?\n\n**1. Refactored `do_append_val_inner` to use raw view access**\n\nReplaced `array.value(row)` + `make_view()` with raw view access via\n`get_unchecked(row)`:\n- **Inline (len \u003c\u003d 12):** push the u128 view as-is — no decode/re-encode\nround-trip\n- **Non-inline (len \u003e 12):** parse via `ByteView::from(view)`, copy\nbuffer data, reuse source prefix directly (avoids re-reading first 4\nbytes)\n\n**2. Simplified the vectorized slow path**\n\nReplaced the duplicated 28-line loop body in `vectorized_append_inner`\nwith `try_reserve` + a loop calling `do_append_val_inner`, eliminating\ncode duplication.\n\n**3. Removed unused `make_view` import**\n\n### Safety notes\n\n- **`get_unchecked` usage**: Consistent with `do_equal_to_inner` (same\nfile) and `PrimitiveGroupValueBuilder` in `primitive.rs`, both of which\nuse the same pattern. All callers derive row indices from enumeration\nover the input array length, guaranteeing validity.\n- **Buffer access safety**: When `data_buffers()` is empty, all views\nmust have len \u003c\u003d 12 (Arrow invariant), so the non-inline branch is never\nentered.\n\n## Are these changes tested?\n\nCovered by 6 existing unit tests in the `bytes_view` module plus 3\nintegration tests in the `multi_group_by` module. All 111 tests in the\naggregates suite pass.\n\n## Are there any user-facing changes?\n\nNo. This is an internal refactor with no API changes."
    },
    {
      "commit": "408dad3dc5733f1b438cf5515af3d8c0da4b178c",
      "tree": "b4349e7384663271468362c61ce2f9c08da9a142",
      "parents": [
        "d5f03d9f9396c140d5954f08622878b1a40c4951"
      ],
      "author": {
        "name": "Xuanyi Li",
        "email": "xuanyili@uber.com",
        "time": "Tue Jun 16 10:38:18 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 17:38:18 2026 +0000"
      },
      "message": "Add MERGE INTO types to datafusion-expr (#20763)\n\n## Which issue does this PR close?\n\n- part of #20746\n\n[EPIC] Complete DML Support (MERGE, INSERT OVERWRITE, TRUNCATE) #19617\nAs well as task 1 of #20746\n\n## Rationale for this change\n\nLay the foundation for MERGE INTO support in DataFusion by adding the\nlogical plan types and their proto serialization. Keeping types separate\nfrom execution lets reviewers reason about the data model independently\nof the planner and physical dispatch.\n\n## What changes are included in this PR?\n\n**`datafusion/expr` — new types in `dml.rs`**\n- `MergeIntoOp` — carries the `ON` join condition and ordered list of\n`WHEN` clauses\n- `MergeIntoClause` — a single `WHEN` clause: kind + optional predicate\n+ action\n- `MergeIntoClauseKind` — `Matched` / `NotMatched` /\n`NotMatchedByTarget` / `NotMatchedBySource`; includes\n`is_not_matched_by_target()` and `canonical()` helpers because\n`NotMatched` and `NotMatchedByTarget` are semantically identical and\nmust be treated identically downstream\n- `MergeIntoAction` — `Update(Vec\u003c(col, expr)\u003e)` / `Insert { columns,\nvalues }` / `Delete`\n- `WriteOp::MergeInto(MergeIntoOp)` variant added to the existing\n`WriteOp` enum; `WriteOp` is now `#[non_exhaustive]` so future variant\nadditions are not a SemVer break\n\n**`datafusion/proto-models` — proto schema**\n- Extended `DmlNode` with a `MERGE_INTO` type tag and a boxed\n`MergeIntoOpNode` payload field\n- Added `MergeIntoOpNode`, `MergeIntoClauseNode`, `MergeIntoActionNode`\nmessages\n\n**`datafusion/proto` — serialization**\n- `from_proto`: `parse_write_op(\u0026DmlNode, ...)` reads the payload when\nthe type tag is `MergeInto`; defensive helpers\n`parse_merge_into_op/clause/action` with explicit errors for missing\nfields\n- `to_proto`: `serialize_merge_into_op/clause/action` helpers; encode\npath uses an explicit `match` over all `WriteOp` variants producing\n`(dml_type, merge_into)` pair — no silent payload loss\n- Cross-crate conversions use `FromProto` (the crate-local trait) rather\nthan `From` to satisfy the Rust orphan rule after the upstream\n`datafusion-proto-models` refactor\n\n**Proto codegen** — after editing `.proto` files, regenerate with:\n```bash\nPROTOC\u003d/tmp/protoc cargo run --manifest-path datafusion/proto-models/gen/Cargo.toml\n```\n(Install `protoc` from\nhttps://github.com/protocolbuffers/protobuf/releases if not present; set\n`PROTOC` to its path.)\n\n## Are these changes tested?\n\n- `datafusion-expr` unit tests: `WriteOp::MergeInto` display,\n`is_not_matched_by_target`, `canonical`\n- `datafusion-proto` round-trip test: exercises all four\n`MergeIntoClauseKind` variants and all three `MergeIntoAction` variants\nthrough encode → decode\n- `datafusion-proto` error-path tests: missing `merge_into` payload,\nmissing `on` expression, unknown clause kind tag, missing clause action,\nmissing action oneof\n\n## Are there any user-facing changes?\n\n`WriteOp` gains a `MergeInto` variant and is now `#[non_exhaustive]`.\nExisting downstream `match` arms need a wildcard arm added (this is\nintentional and expected for a new DML operation).\n\n## Follow-up\n\nA stacking PR that adds the SQL planner, physical planner dispatch, and\n`TableProvider::merge_into` hook is available at\nhttps://github.com/wirybeaver/datafusion/pull/2. If reviewers prefer to\nreview both together in one pass, I\u0027m happy to include that work here\ninstead.\n\nCo-authored-by: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "d5f03d9f9396c140d5954f08622878b1a40c4951",
      "tree": "4669b39a57ae02445f2edd81bd92a1b20c470434",
      "parents": [
        "6176a6dae1f36e30c83bc880bb8b6cb1d1a175a8"
      ],
      "author": {
        "name": "Peter L",
        "email": "cetra3@hotmail.com",
        "time": "Tue Jun 16 16:21:28 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 15:21:28 2026 +0000"
      },
      "message": "Fix leaf expression reconciliation (#22971)\n\n## Which issue does this PR close?\n\n- Closes https://github.com/apache/datafusion/issues/22955\n\n## Rationale for this change\n\nThis fixes a bug with the extract leaf expressions\n\n## What changes are included in this PR?\n\nThis is a one liner that sanity checks the schema is the same length\nwhen we are doing expression pushdown\n\n## Are these changes tested?\n\nYes, a couple of tests have been added.\n\n## Are there any user-facing changes?\n\nNope!\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Adrian Garcia Badaracco \u003c1755071+adriangb@users.noreply.github.com\u003e"
    },
    {
      "commit": "6176a6dae1f36e30c83bc880bb8b6cb1d1a175a8",
      "tree": "5f98be7c22b1081ddb223bcfd11ac09756bfdfcf",
      "parents": [
        "fa271ce8fdb246321a8606449a09b4c03b405388"
      ],
      "author": {
        "name": "Jeffrey Vo",
        "email": "jeffrey.vo.australia@gmail.com",
        "time": "Tue Jun 16 21:26:32 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 12:26:32 2026 +0000"
      },
      "message": "Add `.gitignore` for `proto-models` (#22977)\n\nWhen I run `./datafusion/proto-models/regen.sh` from repository root off\nmain, I\u0027m getting a dirty git state like so:\n\n```sh\ndatafusion (main)$ ./datafusion/proto-models/regen.sh\n    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.07s\n     Running `/Users/jeffrey/.cargo_target_cache/debug/gen`\nCopying datafusion/proto-models/src/datafusion.rs to datafusion/proto-models/src/generated/prost.rs\ndatafusion (main)$ git status\nOn branch main\nYour branch is up to date with \u0027upstream/main\u0027.\n\nUntracked files:\n  (use \"git add \u003cfile\u003e...\" to include in what will be committed)\n        datafusion/proto-models/proto/proto_descriptor.bin datafusion/proto-models/src/datafusion.rs          datafusion/proto-models/src/datafusion.serde.rs    datafusion/proto-models/src/datafusion_common.rs\n\nnothing added to commit but untracked files present (use \"git add\" to track)\n```\n\nCopying over the `.gitignore` from `proto` to fix this\n\n\nhttps://github.com/apache/datafusion/blob/2282d23d4ff0af91463b63aa99cd793635ecef8e/datafusion/proto/.gitignore#L1-L5\n\nRelated PR:\n\n- #21929"
    },
    {
      "commit": "fa271ce8fdb246321a8606449a09b4c03b405388",
      "tree": "1f26a93f56c7428acb3c9c3a7b976f3a43ee6c33",
      "parents": [
        "ae5f3f51736359beb64ef4aaba9345d8cc1fc853"
      ],
      "author": {
        "name": "pantShrey",
        "email": "121197985+pantShrey@users.noreply.github.com",
        "time": "Tue Jun 16 17:24:06 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 11:54:06 2026 +0000"
      },
      "message": "refactor: Update SortMergeJoin to use async spill abstractions (#22230)\n\n~~## Note: This PR depends on #21882 (pluggable SpillFile trait) and\ncannot be merged before it. Opening in parallel per @alamb\u0027s suggestion\nfor easier review. The required SpillFile trait used here is defined in\nthat base PR.To review locally, apply #21882 first and then stack this\nbranch on top.~~\n**Update:** This PR has been rebased to use the existing\n`RefCountedTempFile` and is now completely standalone. It can be\nreviewed and merged independently\n\n## Which issue does this PR close?\n\n- Contributes to #21215 (and is required by #21882)\n\n## Rationale for this change\n\n`materializing_stream.rs` and `bitwise_stream.rs` were reading spilled\nbatches via `open_sync_reader` / direct `File::open` calls ~~, bypassing\nthe `SpillFile` abstraction introduced in #21882~~. This PR migrates\nboth to use `SpillManager::read_spill_as_stream`. This safely converts\nthe SMJ to an async I/O path, preparing the ground for custom backends\n(Postgres BufFile, object storage) to handle spill reads without\nrequiring an OS file path.\n\n## What changes are included in this PR?\n\n- `materializing_stream.rs`: Eagerly restores spilled `BufferedBatches`\nvia async streams before freezing, avoiding new state machine variants.\n- `bitwise_stream.rs`: Replaces sync reads with an async\n`poll_next_unpin` loop, caching the stream to survive `Poll::Pending`.\n~~- `spill_file.rs`: Removes `open_sync_reader` from the `SpillFile`\ntrait (no longer needed).~~\n\n## Are these changes tested?\n\nCovered by existing SMJ tests. No new tests added, the behavioral change\nis internal (sync → async IO path).\n\n## Are there any user-facing changes?\n\nNo.\n~~Removes `open_sync_reader` from the SpillFile trait, this is a\nbreaking API change for anyone implementing the trait, but the trait was\nintroduced in #21882 which has not merged yet so there are no external\nimplementors.~~\n\n---------\n\nCo-authored-by: Kumar Ujjawal \u003cujjawalpathak6@gmail.com\u003e"
    },
    {
      "commit": "ae5f3f51736359beb64ef4aaba9345d8cc1fc853",
      "tree": "44308c80762bffa5aa205870cb23690fa872125b",
      "parents": [
        "fbd64b4471a688fa8a8be201db0283861244e7a1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 16 10:38:39 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 10:38:39 2026 +0000"
      },
      "message": "chore(deps): bump prost-build from 0.14.3 to 0.14.4 (#22843)\n\nBumps the proto group with 3 updates in the / directory:\n[prost](https://github.com/tokio-rs/prost),\n[prost-build](https://github.com/tokio-rs/prost) and\n[pbjson-types](https://github.com/influxdata/pbjson).\n\nUpdates `prost` from 0.14.3 to 0.14.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/blob/master/CHANGELOG.md\"\u003eprost\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eProst version 0.14.4\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003ePROST!\u003c/em\u003e is a \u003ca href\u003d\"https://protobuf.dev/\"\u003eProtocol\nBuffers\u003c/a\u003e implementation for the \u003ca\nhref\u003d\"https://www.rust-lang.org/\"\u003eRust Language\u003c/a\u003e. \u003ccode\u003eprost\u003c/code\u003e\ngenerates simple, idiomatic Rust code from \u003ccode\u003eproto2\u003c/code\u003e and\n\u003ccode\u003eproto3\u003c/code\u003e files.\u003c/p\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003e(prost-derive)\u003c/em\u003e Make is_valid a constant function (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1401\"\u003e#1401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncrease MSRV to 1.85 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1428\"\u003e#1428\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse Display instead of Debug for generated enumeration attributes\n(\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1419\"\u003e#1419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(prost-derive)\u003c/em\u003e Return error for invalid enumeration default\nidentifiers (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1426\"\u003e#1426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(build)\u003c/em\u003e Grab binary path from cargo (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1429\"\u003e#1429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(build)\u003c/em\u003e Fix C++ build on GCC 15 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1395\"\u003e#1395\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd example for \u003ccode\u003edecode_length_delimiter\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1311\"\u003e#1311\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate protobuf-src example to avoid unsafe set_var\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧪 Testing\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTest derive Eq behavior (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1422\"\u003e#1422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(groups)\u003c/em\u003e Actually construct \u003ccode\u003eNestedGroup\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e💼 Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003e(deps)\u003c/em\u003e Update criterion requirement from 0.7 to 0.8 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1374\"\u003e#1374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(deps)\u003c/em\u003e Remove \u003ccode\u003egetrandom@0.4.1\u003c/code\u003e from\nbuild-dependencies (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1400\"\u003e#1400\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(deps)\u003c/em\u003e Update rand requirement from 0.9 to 0.10 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1397\"\u003e#1397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(deps)\u003c/em\u003e Bump actions/upload-artifact from 6 to 7 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1409\"\u003e#1409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(deps)\u003c/em\u003e Update \u003ccode\u003ecargo clippy\u003c/code\u003e to 1.89 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1433\"\u003e#1433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(deps)\u003c/em\u003e Update \u003ccode\u003ecargo clippy\u003c/code\u003e to 1.91 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(deps)\u003c/em\u003e Update and improve nix devshell (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1393\"\u003e#1393\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🎨 Styling\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent needless borrow (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1404\"\u003e#1404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003estd::hint::black_box()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1403\"\u003e#1403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse variables directly in \u003ccode\u003eformat!()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1432\"\u003e#1432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove explicit \u003ccode\u003e.into_iter()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1434\"\u003e#1434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRun clippy on benches (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1405\"\u003e#1405\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\nhref\u003d\"https://github.com/tokio-rs/prost/commit/13646cde7eab75c81b3047767aa0a86e7dbecf12\"\u003e\u003ccode\u003e13646cd\u003c/code\u003e\u003c/a\u003e\nchore: Release version 0.14.4 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1437\"\u003e#1437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/dad79d5c8e3549d93ebe6f6c723bb42928d805d8\"\u003e\u003ccode\u003edad79d5\u003c/code\u003e\u003c/a\u003e\nfix(prost-derive): return error for invalid enumeration default\nidentifiers (...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/b0b6c93e3aac89df28690a4967a8bbe93ec95391\"\u003e\u003ccode\u003eb0b6c93\u003c/code\u003e\u003c/a\u003e\nci: Update \u003ccode\u003ecargo clippy\u003c/code\u003e to 1.91 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/32cfffbc494f2faf461cab85e04a42412484c0e4\"\u003e\u003ccode\u003e32cfffb\u003c/code\u003e\u003c/a\u003e\nstyle: remove explicit \u003ccode\u003e.into_iter()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1434\"\u003e#1434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/2710efdb9978d9c75fb19b0b092a369a2d385b55\"\u003e\u003ccode\u003e2710efd\u003c/code\u003e\u003c/a\u003e\nci: Update \u003ccode\u003ecargo clippy\u003c/code\u003e to 1.89 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1433\"\u003e#1433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/18ea4e42bbc307d33d65e05ad47b3c45623c0500\"\u003e\u003ccode\u003e18ea4e4\u003c/code\u003e\u003c/a\u003e\nstyle: use variables directly in \u003ccode\u003eformat!()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1432\"\u003e#1432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/2821bd1d8c20137c83ead4db39f8e1da00b4e854\"\u003e\u003ccode\u003e2821bd1\u003c/code\u003e\u003c/a\u003e\nbuild(deps): bump actions/upload-artifact from 6 to 7 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1409\"\u003e#1409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/3ce3b39f9206b5e3bbe34c6e1aa69fe3c53f0924\"\u003e\u003ccode\u003e3ce3b39\u003c/code\u003e\u003c/a\u003e\ntest(groups): Actually construct \u003ccode\u003eNestedGroup\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/8776405574b3ba0a0fe96ada8799ac8bc61ceb3e\"\u003e\u003ccode\u003e8776405\u003c/code\u003e\u003c/a\u003e\ndocs: Update changelog for version 0.14.3 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1431\"\u003e#1431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/33d3ef18c008da13e862d7e7674d751ab2776360\"\u003e\u003ccode\u003e33d3ef1\u003c/code\u003e\u003c/a\u003e\nbuild: Grab binary path from cargo (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1429\"\u003e#1429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/compare/v0.14.3...v0.14.4\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prost-build` from 0.14.3 to 0.14.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/blob/master/CHANGELOG.md\"\u003eprost-build\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eProst version 0.14.4\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003ePROST!\u003c/em\u003e is a \u003ca href\u003d\"https://protobuf.dev/\"\u003eProtocol\nBuffers\u003c/a\u003e implementation for the \u003ca\nhref\u003d\"https://www.rust-lang.org/\"\u003eRust Language\u003c/a\u003e. \u003ccode\u003eprost\u003c/code\u003e\ngenerates simple, idiomatic Rust code from \u003ccode\u003eproto2\u003c/code\u003e and\n\u003ccode\u003eproto3\u003c/code\u003e files.\u003c/p\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003e(prost-derive)\u003c/em\u003e Make is_valid a constant function (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1401\"\u003e#1401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncrease MSRV to 1.85 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1428\"\u003e#1428\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse Display instead of Debug for generated enumeration attributes\n(\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1419\"\u003e#1419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(prost-derive)\u003c/em\u003e Return error for invalid enumeration default\nidentifiers (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1426\"\u003e#1426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(build)\u003c/em\u003e Grab binary path from cargo (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1429\"\u003e#1429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(build)\u003c/em\u003e Fix C++ build on GCC 15 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1395\"\u003e#1395\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd example for \u003ccode\u003edecode_length_delimiter\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1311\"\u003e#1311\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate protobuf-src example to avoid unsafe set_var\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧪 Testing\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTest derive Eq behavior (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1422\"\u003e#1422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(groups)\u003c/em\u003e Actually construct \u003ccode\u003eNestedGroup\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e💼 Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003e(deps)\u003c/em\u003e Update criterion requirement from 0.7 to 0.8 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1374\"\u003e#1374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(deps)\u003c/em\u003e Remove \u003ccode\u003egetrandom@0.4.1\u003c/code\u003e from\nbuild-dependencies (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1400\"\u003e#1400\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(deps)\u003c/em\u003e Update rand requirement from 0.9 to 0.10 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1397\"\u003e#1397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(deps)\u003c/em\u003e Bump actions/upload-artifact from 6 to 7 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1409\"\u003e#1409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(deps)\u003c/em\u003e Update \u003ccode\u003ecargo clippy\u003c/code\u003e to 1.89 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1433\"\u003e#1433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(deps)\u003c/em\u003e Update \u003ccode\u003ecargo clippy\u003c/code\u003e to 1.91 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(deps)\u003c/em\u003e Update and improve nix devshell (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1393\"\u003e#1393\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🎨 Styling\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent needless borrow (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1404\"\u003e#1404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003estd::hint::black_box()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1403\"\u003e#1403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse variables directly in \u003ccode\u003eformat!()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1432\"\u003e#1432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove explicit \u003ccode\u003e.into_iter()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1434\"\u003e#1434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRun clippy on benches (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1405\"\u003e#1405\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\nhref\u003d\"https://github.com/tokio-rs/prost/commit/13646cde7eab75c81b3047767aa0a86e7dbecf12\"\u003e\u003ccode\u003e13646cd\u003c/code\u003e\u003c/a\u003e\nchore: Release version 0.14.4 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1437\"\u003e#1437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/dad79d5c8e3549d93ebe6f6c723bb42928d805d8\"\u003e\u003ccode\u003edad79d5\u003c/code\u003e\u003c/a\u003e\nfix(prost-derive): return error for invalid enumeration default\nidentifiers (...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/b0b6c93e3aac89df28690a4967a8bbe93ec95391\"\u003e\u003ccode\u003eb0b6c93\u003c/code\u003e\u003c/a\u003e\nci: Update \u003ccode\u003ecargo clippy\u003c/code\u003e to 1.91 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/32cfffbc494f2faf461cab85e04a42412484c0e4\"\u003e\u003ccode\u003e32cfffb\u003c/code\u003e\u003c/a\u003e\nstyle: remove explicit \u003ccode\u003e.into_iter()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1434\"\u003e#1434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/2710efdb9978d9c75fb19b0b092a369a2d385b55\"\u003e\u003ccode\u003e2710efd\u003c/code\u003e\u003c/a\u003e\nci: Update \u003ccode\u003ecargo clippy\u003c/code\u003e to 1.89 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1433\"\u003e#1433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/18ea4e42bbc307d33d65e05ad47b3c45623c0500\"\u003e\u003ccode\u003e18ea4e4\u003c/code\u003e\u003c/a\u003e\nstyle: use variables directly in \u003ccode\u003eformat!()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1432\"\u003e#1432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/2821bd1d8c20137c83ead4db39f8e1da00b4e854\"\u003e\u003ccode\u003e2821bd1\u003c/code\u003e\u003c/a\u003e\nbuild(deps): bump actions/upload-artifact from 6 to 7 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1409\"\u003e#1409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/3ce3b39f9206b5e3bbe34c6e1aa69fe3c53f0924\"\u003e\u003ccode\u003e3ce3b39\u003c/code\u003e\u003c/a\u003e\ntest(groups): Actually construct \u003ccode\u003eNestedGroup\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/8776405574b3ba0a0fe96ada8799ac8bc61ceb3e\"\u003e\u003ccode\u003e8776405\u003c/code\u003e\u003c/a\u003e\ndocs: Update changelog for version 0.14.3 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1431\"\u003e#1431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/commit/33d3ef18c008da13e862d7e7674d751ab2776360\"\u003e\u003ccode\u003e33d3ef1\u003c/code\u003e\u003c/a\u003e\nbuild: Grab binary path from cargo (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/prost/issues/1429\"\u003e#1429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/tokio-rs/prost/compare/v0.14.3...v0.14.4\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pbjson-types` from 0.8.0 to 0.9.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/influxdata/pbjson/commits/0.9.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n---------\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: Jefffrey \u003cjeffrey.vo.australia@gmail.com\u003e"
    },
    {
      "commit": "fbd64b4471a688fa8a8be201db0283861244e7a1",
      "tree": "eb38e021c42241ef584a2b407066cccf692c7e15",
      "parents": [
        "2282d23d4ff0af91463b63aa99cd793635ecef8e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 16 10:37:00 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 10:37:00 2026 +0000"
      },
      "message": "chore(deps): update pydata-sphinx-theme requirement from \u003c1,\u003e\u003d0.18.0 to \u003e\u003d0.19.0,\u003c1 in /docs (#22972)\n\nUpdates the requirements on\n[pydata-sphinx-theme](https://github.com/pydata/pydata-sphinx-theme) to\npermit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/pydata/pydata-sphinx-theme/releases\"\u003epydata-sphinx-theme\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.19.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump pydata/pydata-sphinx-theme/.github/workflows/CI.yml from\n178df7a9d69695be4e49fa56822d76b048977387 to\n047227ad41f26a993ea7b2182955d26aa837acea by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/2398\"\u003epydata/pydata-sphinx-theme#2398\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pydata/pydata-sphinx-theme from\n178df7a9d69695be4e49fa56822d76b048977387 to\n047227ad41f26a993ea7b2182955d26aa837acea by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/2397\"\u003epydata/pydata-sphinx-theme#2397\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump hynek/build-and-inspect-python-package from 2.17.0 to 2.18.0 by\n\u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/2396\"\u003epydata/pydata-sphinx-theme#2396\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pydata/pydata-sphinx-theme/.github/workflows/docs.yml from\n178df7a9d69695be4e49fa56822d76b048977387 to\n047227ad41f26a993ea7b2182955d26aa837acea by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/2395\"\u003epydata/pydata-sphinx-theme#2395\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs update Font Awesome links by \u003ca\nhref\u003d\"https://github.com/hntk03\"\u003e\u003ccode\u003e@​hntk03\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/2399\"\u003epydata/pydata-sphinx-theme#2399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate hooks by \u003ca\nhref\u003d\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/2347\"\u003epydata/pydata-sphinx-theme#2347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate hooks by \u003ca\nhref\u003d\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/2401\"\u003epydata/pydata-sphinx-theme#2401\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix code coverage workflow by \u003ca\nhref\u003d\"https://github.com/Yann-P\"\u003e\u003ccode\u003e@​Yann-P\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/2393\"\u003epydata/pydata-sphinx-theme#2393\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 6.0.2 to 6.0.3 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/2406\"\u003epydata/pydata-sphinx-theme#2406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 8.1.0 to 8.2.0 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/2407\"\u003epydata/pydata-sphinx-theme#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix vertical scrollbar in math container by \u003ca\nhref\u003d\"https://github.com/hntk03\"\u003e\u003ccode\u003e@​hntk03\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/2404\"\u003epydata/pydata-sphinx-theme#2404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[css] De-jumble header items at intermediate widths :) by \u003ca\nhref\u003d\"https://github.com/sneakers-the-rat\"\u003e\u003ccode\u003e@​sneakers-the-rat\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/1784\"\u003epydata/pydata-sphinx-theme#1784\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix gettext builder by \u003ca\nhref\u003d\"https://github.com/Yann-P\"\u003e\u003ccode\u003e@​Yann-P\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/2403\"\u003epydata/pydata-sphinx-theme#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump 0.18.0 -\u0026gt; 0.19.0rc0 by \u003ca\nhref\u003d\"https://github.com/Yann-P\"\u003e\u003ccode\u003e@​Yann-P\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/2410\"\u003epydata/pydata-sphinx-theme#2410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: configure defaults for Google Analytics before loading script\nby \u003ca href\u003d\"https://github.com/tswast\"\u003e\u003ccode\u003e@​tswast\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/2369\"\u003epydata/pydata-sphinx-theme#2369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump 0.19.0rc0 -\u0026gt; 0.19.0 by \u003ca\nhref\u003d\"https://github.com/Yann-P\"\u003e\u003ccode\u003e@​Yann-P\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/2414\"\u003epydata/pydata-sphinx-theme#2414\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/sneakers-the-rat\"\u003e\u003ccode\u003e@​sneakers-the-rat\u003c/code\u003e\u003c/a\u003e\nmade their first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/pull/1784\"\u003epydata/pydata-sphinx-theme#1784\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/pydata/pydata-sphinx-theme/compare/v0.18.0...v0.19.0\"\u003ehttps://github.com/pydata/pydata-sphinx-theme/compare/v0.18.0...v0.19.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\nhref\u003d\"https://github.com/pydata/pydata-sphinx-theme/commit/01e209b34ce6d5992a1b53c748c15a0cd5ae32ee\"\u003e\u003ccode\u003e01e209b\u003c/code\u003e\u003c/a\u003e\nBump 0.19.0rc0 -\u0026gt; 0.19.0 (\u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/issues/2414\"\u003e#2414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pydata/pydata-sphinx-theme/commit/1c2612550b75599c39320c553e4d03687072f501\"\u003e\u003ccode\u003e1c26125\u003c/code\u003e\u003c/a\u003e\nfix: configure defaults for Google Analytics before loading script (\u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/issues/2369\"\u003e#2369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pydata/pydata-sphinx-theme/commit/be7da51b4bd63ab941e5ef0c9a93112af9e47be2\"\u003e\u003ccode\u003ebe7da51\u003c/code\u003e\u003c/a\u003e\nBump 0.18.0 -\u0026gt; 0.19.0rc0 (\u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/issues/2410\"\u003e#2410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pydata/pydata-sphinx-theme/commit/0fb30d64bd803f06e4431ae4e2305c558237dd5e\"\u003e\u003ccode\u003e0fb30d6\u003c/code\u003e\u003c/a\u003e\nFix gettext builder (\u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/issues/2403\"\u003e#2403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pydata/pydata-sphinx-theme/commit/dd460e8af0ea0a13e57c0a7fadea30c5e8a6d724\"\u003e\u003ccode\u003edd460e8\u003c/code\u003e\u003c/a\u003e\n[css] De-jumble header items at intermediate widths :) (\u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/issues/1784\"\u003e#1784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pydata/pydata-sphinx-theme/commit/db37b88a001ebc5a1537760a9f731d8a49dd36e4\"\u003e\u003ccode\u003edb37b88\u003c/code\u003e\u003c/a\u003e\nFix vertical scrollbar in math container (\u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/issues/2404\"\u003e#2404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pydata/pydata-sphinx-theme/commit/2b80896bf6dd0cb68798c7b77fa044da43d2414d\"\u003e\u003ccode\u003e2b80896\u003c/code\u003e\u003c/a\u003e\nBump astral-sh/setup-uv from 8.1.0 to 8.2.0 (\u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/issues/2407\"\u003e#2407\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pydata/pydata-sphinx-theme/commit/bd863f8b0405a6890861888d021e634da0e0d15c\"\u003e\u003ccode\u003ebd863f8\u003c/code\u003e\u003c/a\u003e\nBump actions/checkout from 6.0.2 to 6.0.3 (\u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/issues/2406\"\u003e#2406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pydata/pydata-sphinx-theme/commit/f67c0362938e55f733eb0ebf756f3970aacdc6d0\"\u003e\u003ccode\u003ef67c036\u003c/code\u003e\u003c/a\u003e\nFix code coverage workflow (\u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/issues/2393\"\u003e#2393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pydata/pydata-sphinx-theme/commit/a5b36001c0e936f85a58a825621da778bc84b343\"\u003e\u003ccode\u003ea5b3600\u003c/code\u003e\u003c/a\u003e\n[pre-commit.ci] pre-commit autoupdate hooks (\u003ca\nhref\u003d\"https://redirect.github.com/pydata/pydata-sphinx-theme/issues/2401\"\u003e#2401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/pydata/pydata-sphinx-theme/compare/v0.18.0...v0.19.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eMost Recent Ignore Conditions Applied to This Pull\nRequest\u003c/summary\u003e\n\n| Dependency Name | Ignore Conditions |\n| --- | --- |\n| pydata-sphinx-theme | [\u003e\u003d 0.16.dev0, \u003c 0.17] |\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "2282d23d4ff0af91463b63aa99cd793635ecef8e",
      "tree": "d0953ba093cff442d6b866615697a454cfe7c50c",
      "parents": [
        "46d241d1cea07543d4341867b008560978d22bf8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 16 19:51:01 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 09:51:01 2026 +0000"
      },
      "message": "chore(deps): bump taiki-e/install-action from 2.81.8 to 2.81.11 (#22973)\n\nBumps\n[taiki-e/install-action](https://github.com/taiki-e/install-action) from\n2.81.8 to 2.81.11.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/releases\"\u003etaiki-e/install-action\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.81.11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ewasm-tools@latest\u003c/code\u003e to 1.252.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ewasm-bindgen@latest\u003c/code\u003e to 0.2.125.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003euv@latest\u003c/code\u003e to 0.11.21.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eprotoc@latest\u003c/code\u003e to 3.35.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003emise@latest\u003c/code\u003e to 2026.6.9.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ejaq@latest\u003c/code\u003e to 3.1.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-insta@latest\u003c/code\u003e to 1.48.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ebiome@latest\u003c/code\u003e to 2.5.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.81.10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etombi@latest\u003c/code\u003e to 1.1.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003erelease-plz@latest\u003c/code\u003e to 0.3.159.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecosign@latest\u003c/code\u003e to 3.1.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.81.9\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ewasm-bindgen@latest\u003c/code\u003e to 0.2.123.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etombi@latest\u003c/code\u003e to 1.1.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eparse-changelog@latest\u003c/code\u003e to 0.6.17.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ejust@latest\u003c/code\u003e to 1.52.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003egungraun-runner@latest\u003c/code\u003e to 0.19.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-binstall@latest\u003c/code\u003e to 1.20.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md\"\u003etaiki-e/install-action\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this\nfile.\u003c/p\u003e\n\u003cp\u003eThis project adheres to \u003ca href\u003d\"https://semver.org\"\u003eSemantic\nVersioning\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003e[Unreleased]\u003c/h2\u003e\n\u003ch2\u003e[2.81.11] - 2026-06-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ewasm-tools@latest\u003c/code\u003e to 1.252.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ewasm-bindgen@latest\u003c/code\u003e to 0.2.125.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003euv@latest\u003c/code\u003e to 0.11.21.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eprotoc@latest\u003c/code\u003e to 3.35.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003emise@latest\u003c/code\u003e to 2026.6.9.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ejaq@latest\u003c/code\u003e to 3.1.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-insta@latest\u003c/code\u003e to 1.48.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ebiome@latest\u003c/code\u003e to 2.5.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.81.10] - 2026-06-11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etombi@latest\u003c/code\u003e to 1.1.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003erelease-plz@latest\u003c/code\u003e to 0.3.159.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecosign@latest\u003c/code\u003e to 3.1.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.81.9] - 2026-06-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ewasm-bindgen@latest\u003c/code\u003e to 0.2.123.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etombi@latest\u003c/code\u003e to 1.1.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eparse-changelog@latest\u003c/code\u003e to 0.6.17.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ejust@latest\u003c/code\u003e to 1.52.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003egungraun-runner@latest\u003c/code\u003e to 0.19.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/15449e3094499af05d8d964a1c884208e4b8b595\"\u003e\u003ccode\u003e15449e3\u003c/code\u003e\u003c/a\u003e\nRelease 2.81.11\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/dd3bb882c6c552e1478f55a048fb291cdc1f0ef1\"\u003e\u003ccode\u003edd3bb88\u003c/code\u003e\u003c/a\u003e\nUpdate cargo-deny manifest\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/89ed2466baa251f4217203b0084736e4ba24365d\"\u003e\u003ccode\u003e89ed246\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003ewasm-tools@latest\u003c/code\u003e to 1.252.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/3d2614471d361398dc4a241305a41a22246608cd\"\u003e\u003ccode\u003e3d26144\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003ewasm-bindgen@latest\u003c/code\u003e to 0.2.125\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/02039d84ff2195b312ef1612583b62012fcc7737\"\u003e\u003ccode\u003e02039d8\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003euv@latest\u003c/code\u003e to 0.11.21\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/f70d988b18b30949b65c310be1e9e1fd34b1bd80\"\u003e\u003ccode\u003ef70d988\u003c/code\u003e\u003c/a\u003e\nUpdate trivy manifest\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/1f7b61373609cdc389de6178ea51d2a069d306ed\"\u003e\u003ccode\u003e1f7b613\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003eprotoc@latest\u003c/code\u003e to 3.35.1\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/ace4a195674b1e2219e629001c708779d52f0872\"\u003e\u003ccode\u003eace4a19\u003c/code\u003e\u003c/a\u003e\nUpdate prek manifest\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/3fbf11909e319a495b93f6c640f257d1979a9cef\"\u003e\u003ccode\u003e3fbf119\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003emise@latest\u003c/code\u003e to 2026.6.9\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/e62deab512318d610ad0b017fe426bc6cdb75e0f\"\u003e\u003ccode\u003ee62deab\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003ejaq@latest\u003c/code\u003e to 3.1.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/compare/0631aa6515c7d545823c67cfae7ef4fc7f490154...15449e3094499af05d8d964a1c884208e4b8b595\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dtaiki-e/install-action\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d2.81.8\u0026new-version\u003d2.81.11)](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\nalter it yourself. You can also trigger a rebase manually by commenting\n`@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\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "46d241d1cea07543d4341867b008560978d22bf8",
      "tree": "dc2f32bc8fceca8afc8937f54890020c6310db59",
      "parents": [
        "0fb650a889f621f1fc07ec248877c6a362dff469"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 16 09:49:52 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 09:49:52 2026 +0000"
      },
      "message": "chore(deps): update maturin requirement from \u003c2,\u003e\u003d1.13.3 to \u003e\u003d1.14.0,\u003c2 in /docs (#22974)\n\nUpdates the requirements on [maturin](https://github.com/pyo3/maturin)\nto permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/pyo3/maturin/releases\"\u003ematurin\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.14.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport parent-relative pyproject metadata in sdists by \u003ca\nhref\u003d\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3182\"\u003ePyO3/maturin#3182\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate PyPI platform tag validation by \u003ca\nhref\u003d\"https://github.com/messense\"\u003e\u003ccode\u003e@​messense\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3187\"\u003ePyO3/maturin#3187\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emaint: update setup emsdk action in generate-ci by \u003ca\nhref\u003d\"https://github.com/ManonMarchand\"\u003e\u003ccode\u003e@​ManonMarchand\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3194\"\u003ePyO3/maturin#3194\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: only shim bin wheels during auditwheel repair by \u003ca\nhref\u003d\"https://github.com/messense\"\u003e\u003ccode\u003e@​messense\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3197\"\u003ePyO3/maturin#3197\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: avoid editable ELF truncation from stale hardlinks by \u003ca\nhref\u003d\"https://github.com/messense\"\u003e\u003ccode\u003e@​messense\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3199\"\u003ePyO3/maturin#3199\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Pyodide Emscripten platform tags by \u003ca\nhref\u003d\"https://github.com/messense\"\u003e\u003ccode\u003e@​messense\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3191\"\u003ePyO3/maturin#3191\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump openssl from 0.10.79 to 0.10.80 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3200\"\u003ePyO3/maturin#3200\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse pax instead of GNU headers for tar by \u003ca\nhref\u003d\"https://github.com/konstin\"\u003e\u003ccode\u003e@​konstin\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3203\"\u003ePyO3/maturin#3203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add default exclude \u003cstrong\u003epycache\u003c/strong\u003e and *.pyc files\nby \u003ca href\u003d\"https://github.com/GuYeying\"\u003e\u003ccode\u003e@​GuYeying\u003c/code\u003e\u003c/a\u003e in\n\u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3202\"\u003ePyO3/maturin#3202\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocumentation: fix the update_readme script by \u003ca\nhref\u003d\"https://github.com/ManonMarchand\"\u003e\u003ccode\u003e@​ManonMarchand\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3186\"\u003ePyO3/maturin#3186\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix python versions used in integration_pyo3_mixed_conda by \u003ca\nhref\u003d\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3208\"\u003ePyO3/maturin#3208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for finding free-threaded interpreters for\n--find-interpreters by \u003ca\nhref\u003d\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3206\"\u003ePyO3/maturin#3206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump tar from 0.4.45 to 0.4.46 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3209\"\u003ePyO3/maturin#3209\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStubs: also generate them for mixed PyO3 projects by \u003ca\nhref\u003d\"https://github.com/Tpt\"\u003e\u003ccode\u003e@​Tpt\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3211\"\u003ePyO3/maturin#3211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon\u0027t depend on CFFI on PyPy by \u003ca\nhref\u003d\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3213\"\u003ePyO3/maturin#3213\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eresolve_platform_tags: remove a redundant case by \u003ca\nhref\u003d\"https://github.com/Tpt\"\u003e\u003ccode\u003e@​Tpt\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3214\"\u003ePyO3/maturin#3214\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGeneratorOutput::additional_files remove Option by \u003ca\nhref\u003d\"https://github.com/Tpt\"\u003e\u003ccode\u003e@​Tpt\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3215\"\u003ePyO3/maturin#3215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport pyo3 abi3t features on Python3.15 and PyO3 0.29 by \u003ca\nhref\u003d\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3113\"\u003ePyO3/maturin#3113\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/GuYeying\"\u003e\u003ccode\u003e@​GuYeying\u003c/code\u003e\u003c/a\u003e\nmade their first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/PyO3/maturin/pull/3202\"\u003ePyO3/maturin#3202\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/PyO3/maturin/compare/v1.13.3...v1.14.0\"\u003ehttps://github.com/PyO3/maturin/compare/v1.13.3...v1.14.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/PyO3/maturin/blob/main/Changelog.md\"\u003ematurin\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.14.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport parent-relative pyproject metadata in sdists (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3182\"\u003e#3182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate PyPI platform tag validation (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3187\"\u003e#3187\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMaint: update setup emsdk action in generate-ci (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3194\"\u003e#3194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: only shim bin wheels during auditwheel repair (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3197\"\u003e#3197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: avoid editable ELF truncation from stale hardlinks (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3199\"\u003e#3199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Pyodide Emscripten platform tags (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3191\"\u003e#3191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse pax instead of GNU headers for tar (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3203\"\u003e#3203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat: add default exclude \u003ccode\u003e__pycache__\u003c/code\u003e and\n\u003ccode\u003e*.pyc\u003c/code\u003e files (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3202\"\u003e#3202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for finding free-threaded interpreters for\n\u003ccode\u003e--find-interpreters\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3206\"\u003e#3206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStubs: also generate them for mixed PyO3 projects (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3211\"\u003e#3211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon\u0027t depend on CFFI on PyPy (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3213\"\u003e#3213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport pyo3 abi3t features on Python3.15 and PyO3 0.29 (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3113\"\u003e#3113\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.13.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: disable abi3 in pyo3 config for version-specific fallback\nbuilds (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3180\"\u003e#3180\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.13.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: resolve test failures in distro packaging environments (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: redirect tracing output to stderr to avoid breaking PEP 517 (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3131\"\u003e#3131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: skip interpreters with empty output for WSL2 cross-compile (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: set explicit lib_name in pyo3 config for Android abi3\ncross-compilation (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChore: add sysconfig/cpython-freebsd-15.0-amd64.txt (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3140\"\u003e#3140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eQuote python-version in generated GitHub Actions workflow\u003c/li\u003e\n\u003cli\u003eUpdate rustls-webpki\u003c/li\u003e\n\u003cli\u003eFix: two-phase bridge detection for conditional abi3 features (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3144\"\u003e#3144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate cargo-zigbuild to 0.22.2\u003c/li\u003e\n\u003cli\u003eUpdate pyo3 to 0.28.3\u003c/li\u003e\n\u003cli\u003eTreat pyo3 0.29.0+ as having Windows import lib support (raw-dylib)\n(\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bin bindings with external shared library dependencies (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3147\"\u003e#3147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade MSRV to 1.89.0 (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3149\"\u003e#3149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMusllinux oci image (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove Cirrus CI for FreeBSD (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3156\"\u003e#3156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerf: defer stage_artifact copy-back, finalize via rename when\nunpatched (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3155\"\u003e#3155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerf: eliminate stage_artifact double-copy, drop was_patched flag\n(\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3157\"\u003e#3157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix release pipeline (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3158\"\u003e#3158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAuditwheel: copy unpatched cargo output back before in-place\npatching (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3159\"\u003e#3159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDevelop: fail loudly when pip leaves a stale \u003ccode\u003e~\u003c/code\u003e install\nbehind (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/issues/1922\"\u003e#1922\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eProvide a link for the \u003ccode\u003elib.name\u003c/code\u003e in Cargo.toml (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix duplicated version in changelog (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3171\"\u003e#3171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSwitch to actions/attest from attest-build-provenance (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3169\"\u003e#3169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSwitch generation to actions/attest action, upgrade to v4 (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3170\"\u003e#3170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: avoid duplicate \u003ccode\u003e--interpreter\u003c/code\u003e panic in PEP 517\nbackend (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3175\"\u003e#3175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd trusted publishing options to \u003ccode\u003egenerate-ci\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3176\"\u003e#3176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix(sdist): handle symlinked \u003ccode\u003eCargo.toml\u003c/code\u003e pointing\noutside project root (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStop install cffi for Python 3.8 in Dockerfile\u003c/li\u003e\n\u003cli\u003eFix: support pixi-managed virtualenvs in maturin develop (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/pull/3165\"\u003e#3165\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/PyO3/maturin/commit/eb745e08f3eb8c5499420ed1ff4bce974b2ec972\"\u003e\u003ccode\u003eeb745e0\u003c/code\u003e\u003c/a\u003e\nRelease v1.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/PyO3/maturin/commit/6cdd0aa1d5b1e36905132db074d1f55087c4d46b\"\u003e\u003ccode\u003e6cdd0aa\u003c/code\u003e\u003c/a\u003e\nfix cargo fmt\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/PyO3/maturin/commit/e18aba60daafc8bf50979a10093373becd85f1d9\"\u003e\u003ccode\u003ee18aba6\u003c/code\u003e\u003c/a\u003e\nSupport pyo3 abi3t features on Python3.15 and PyO3 0.29 (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/issues/3113\"\u003e#3113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/PyO3/maturin/commit/8786c59657ab6cefea5d562213018aa8a5e3bbb1\"\u003e\u003ccode\u003e8786c59\u003c/code\u003e\u003c/a\u003e\n[pre-commit.ci] pre-commit autoupdate (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/issues/3217\"\u003e#3217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/PyO3/maturin/commit/c76018bae4dc8400ef2b2989a4d273df942109bf\"\u003e\u003ccode\u003ec76018b\u003c/code\u003e\u003c/a\u003e\nGeneratorOutput::additional_files remove Option (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/issues/3215\"\u003e#3215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/PyO3/maturin/commit/a49370168e01d284bc57cf626693a569f396d2ee\"\u003e\u003ccode\u003ea493701\u003c/code\u003e\u003c/a\u003e\nresolve_platform_tags: remove a redundant case (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/issues/3214\"\u003e#3214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/PyO3/maturin/commit/7fb56481a7da334a565ea1b53e4ada7c7210d573\"\u003e\u003ccode\u003e7fb5648\u003c/code\u003e\u003c/a\u003e\nDon\u0027t depend on CFFI on PyPy (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/issues/3213\"\u003e#3213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/PyO3/maturin/commit/ea07638ab941ed6c70d0545a29a22c65fe3d92b8\"\u003e\u003ccode\u003eea07638\u003c/code\u003e\u003c/a\u003e\nStubs: also generate them for mixed PyO3 projects (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/issues/3211\"\u003e#3211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/PyO3/maturin/commit/2770b0de0b600951192044aaa923a29ac2a592c2\"\u003e\u003ccode\u003e2770b0d\u003c/code\u003e\u003c/a\u003e\nbuild(deps): bump tar from 0.4.45 to 0.4.46 (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/issues/3209\"\u003e#3209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/PyO3/maturin/commit/96198a8b7b2829efcb5463f07c3fa3eb6ce5530f\"\u003e\u003ccode\u003e96198a8\u003c/code\u003e\u003c/a\u003e\n[pre-commit.ci] pre-commit autoupdate (\u003ca\nhref\u003d\"https://redirect.github.com/pyo3/maturin/issues/3210\"\u003e#3210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/pyo3/maturin/compare/v1.13.3...v1.14.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@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\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "0fb650a889f621f1fc07ec248877c6a362dff469",
      "tree": "a39216b2c5270d04cb0214620a393a85adba0998",
      "parents": [
        "baa497d182d3627749b93736bd1cdbba3054df3c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 16 19:48:42 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 09:48:42 2026 +0000"
      },
      "message": "chore(deps): bump insta-cmd from 0.6.0 to 0.7.0 (#22976)\n\nBumps [insta-cmd](https://github.com/mitsuhiko/insta-cmd) from 0.6.0 to\n0.7.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta-cmd/commit/aa305fda9cbdac0a8d02f71acb4fd43bfa5b0c82\"\u003e\u003ccode\u003eaa305fd\u003c/code\u003e\u003c/a\u003e\n0.7.0 (\u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta-cmd/issues/22\"\u003e#22\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta-cmd/commit/c1b0eba01e3d48aab27da4e77d5a19d7b5fff065\"\u003e\u003ccode\u003ec1b0eba\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta-cmd/issues/16\"\u003e#16\u003c/a\u003e\nfrom rcorre/main\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta-cmd/commit/2089c645757be57970eeb9c6c2a0ae3abfa60159\"\u003e\u003ccode\u003e2089c64\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta-cmd/issues/20\"\u003e#20\u003c/a\u003e\nfrom max-sixty/env-var\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta-cmd/commit/7680d5ef1cde9d1ad6b678e695880933938339d9\"\u003e\u003ccode\u003e7680d5e\u003c/code\u003e\u003c/a\u003e\nBump MSRV from 1.57.0 to 1.68.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta-cmd/commit/7f338386715b354ad64339a2e5fd642cc71d82ba\"\u003e\u003ccode\u003e7f33838\u003c/code\u003e\u003c/a\u003e\nBump MSRV from 1.57.0 to 1.64.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta-cmd/commit/8a2d01eed539c11160a1dd7a8fc6393423cf45ee\"\u003e\u003ccode\u003e8a2d01e\u003c/code\u003e\u003c/a\u003e\nFix: Distinguish env_remove() from empty string in snapshots\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta-cmd/commit/0310b186e62ef24ddd0909e497044192be334b9e\"\u003e\u003ccode\u003e0310b18\u003c/code\u003e\u003c/a\u003e\nAdd test demonstrating env_remove() bug\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta-cmd/commit/c6a993890292bb16b60c8418a5e3e178d1520d51\"\u003e\u003ccode\u003ec6a9938\u003c/code\u003e\u003c/a\u003e\nNote that integration tests build binaries.\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta-cmd/commit/1f39ad19b3cf0faf20609097f46788b9b2d80e24\"\u003e\u003ccode\u003e1f39ad1\u003c/code\u003e\u003c/a\u003e\n0.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta-cmd/commit/26c42b6809da9de7f2473907b17e3954ba4d78f0\"\u003e\u003ccode\u003e26c42b6\u003c/code\u003e\u003c/a\u003e\nAdd windows tests (\u003ca\nhref\u003d\"https://redirect.github.com/mitsuhiko/insta-cmd/issues/13\"\u003e#13\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/mitsuhiko/insta-cmd/compare/0.6.0...0.7.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dinsta-cmd\u0026package-manager\u003dcargo\u0026previous-version\u003d0.6.0\u0026new-version\u003d0.7.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\nalter it yourself. You can also trigger a rebase manually by commenting\n`@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\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "baa497d182d3627749b93736bd1cdbba3054df3c",
      "tree": "f7858e879564cf8641e46724f4354c8427772104",
      "parents": [
        "8cda78b6461d3ead75c7f16d2b99776628ebf2f2"
      ],
      "author": {
        "name": "Neil Conway",
        "email": "neil.conway@gmail.com",
        "time": "Tue Jun 16 04:34:19 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 08:34:19 2026 +0000"
      },
      "message": "fix: Disable join dynamic filters for null-equal joins (#22965)\n\n## Which issue does this PR close?\n\n- Closes ##22964\n\n## Rationale for this change\n\nWe presently allow dynamic filter pushdown to be applied to null-equal\nhash joins. This might result in pushing a predicate down into the\nprobe-side plan, where the predicate will not be evaluated with the\nnull-equal semantics that are required.\n\nLonger-term, we might consider supporting this case with the correct\nsemantics (e.g., generate a predicate with `OR IS NULL ...`), but for\nnow disabling pushdown for null-equal joins seems much more practical.\n\n## What changes are included in this PR?\n\n* Disable hash join dynamic filter pushdown for null-equal joins\n* Add SLT test with end-to-end repro\n* Add unit test\n\n## Are these changes tested?\n\nYes.\n\n## Are there any user-facing changes?\n\nNo."
    },
    {
      "commit": "8cda78b6461d3ead75c7f16d2b99776628ebf2f2",
      "tree": "a0673fb48b88601b46e049b2a0b77e074f4d86f2",
      "parents": [
        "3c6734ebf0146e7407f3c35c236e38c20100de24"
      ],
      "author": {
        "name": "Adam Gutglick",
        "email": "adamgsal@gmail.com",
        "time": "Tue Jun 16 09:13:25 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 08:13:25 2026 +0000"
      },
      "message": "Remove orphaned `snowflake_flatten_validation.sql` script (#22938)\n\n## Which issue does this PR close?\n\n- Closes #.\n\n## Rationale for this change\n\nThis file seems to be a leftover of #21593. I see what its trying to do,\nbut most developers don\u0027t have access to a Snowflake instance, and the\ntransformations are already all coded in tests.\n\nI looked into turning it into some sort of SLT tests, but I couldn\u0027t\nfind a Snowflake-provided mock server.\n\n## What changes are included in this PR?\n\n- Remove `snowflake_flatten_validation.sql`\n\n## Are these changes tested?\n\nExisting tests. I ran all the tests in `datafusion-sql` to make sure\nthere\u0027s no hidden dependency I missed.\n\n## Are there any user-facing changes?\n\nNone\n\nSigned-off-by: Adam Gutglick \u003cadamgsal@gmail.com\u003e"
    },
    {
      "commit": "3c6734ebf0146e7407f3c35c236e38c20100de24",
      "tree": "f9daac218739c8b5c374367d8f9b86df0f253753",
      "parents": [
        "15bc9333cb1a4e1fa0ce961f54433ec0b8fb9df5"
      ],
      "author": {
        "name": "Michael Kleen",
        "email": "mkleen@gmail.com",
        "time": "Tue Jun 16 10:11:04 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 08:11:04 2026 +0000"
      },
      "message": "refactor: Simplify heap size estimation for arrays (#22954)\n\nThis introduces a macro for the redundant heap size estimations for\narrays.\n\n## Which issue does this PR close?\n\n- Closes None.\n\n## Rationale for this change\n\nThis pr simplifies the heap size estimation for arrow arrays by\nintroducing a macro to remove redundant code.\n\n## What changes are included in this PR?\n\nSee above.\n\n\n## Are these changes tested?\n\nYes.\n\n## Are there any user-facing changes?\n\nNo."
    },
    {
      "commit": "15bc9333cb1a4e1fa0ce961f54433ec0b8fb9df5",
      "tree": "23d62b36c0f7deef9f07d96af7e29650903e149d",
      "parents": [
        "98495131ff5966e1e2d8518ec1932824c2c266da"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 16 18:10:18 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 08:10:18 2026 +0000"
      },
      "message": "chore(deps): bump cryptography from 46.0.7 to 48.0.1 (#22968)\n\nBumps [cryptography](https://github.com/pyca/cryptography) from 46.0.7\nto 48.0.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e48.0.1 - 2026-06-09\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL\n4.0.1.\n\u003cp\u003e.. _v48-0-0:\u003c/p\u003e\n\u003cp\u003e48.0.0 - 2026-05-04\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for Python 3.8 has\nbeen removed.\n\u003ccode\u003ecryptography\u003c/code\u003e now requires Python 3.9 or later.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Loading an X.509 CRL whose\ninner\n\u003ccode\u003eTBSCertList.signature\u003c/code\u003e algorithm does not match the outer\n\u003ccode\u003esignatureAlgorithm\u003c/code\u003e now raises \u003ccode\u003eValueError\u003c/code\u003e.\nPreviously, such CRLs\nwere parsed successfully and only rejected during signature\nvalidation.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for\n:doc:\u003ccode\u003e/hazmat/primitives/asymmetric/mlkem\u003c/code\u003e and\n:doc:\u003ccode\u003e/hazmat/primitives/asymmetric/mldsa\u003c/code\u003e when using OpenSSL\n3.5.0 or\nlater, in addition to the existing AWS-LC and BoringSSL support. This\nmeans\npost-quantum algorithms are now available to users of our wheels.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Going forward, we do not guarantee that all\nfunctionality\nin \u003ccode\u003ecryptography\u003c/code\u003e will be available when building against\nOpenSSL. See :doc:\u003ccode\u003e/statements/state-of-openssl\u003c/code\u003e for more\ninformation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v47-0-0:\u003c/p\u003e\n\u003cp\u003e47.0.0 - 2026-04-24\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Support for Python 3.8 is deprecated and will be removed in the next\n  ``cryptography`` release.\n* **BACKWARDS INCOMPATIBLE:** Support for binary elliptic curves\n  (``SECT*`` classes) has been removed. These curves are rarely used and\n  have additional security considerations that make them undesirable.\n* **BACKWARDS INCOMPATIBLE:** Support for OpenSSL 1.1.x has been\nremoved.\nOpenSSL 3.0.0 or later is now required. LibreSSL, BoringSSL, and AWS-LC\n  continue to be supported.\n* **BACKWARDS INCOMPATIBLE:** Dropped support for LibreSSL \u0026lt; 4.1.\n* **BACKWARDS INCOMPATIBLE:** Loading keys with unsupported algorithms\nor\n  keys with unsupported explicit curve encodings now raises\n  :class:`~cryptography.exceptions.UnsupportedAlgorithm` instead of\n  ``ValueError``. This change affects\n\n:func:`~cryptography.hazmat.primitives.serialization.load_pem_private_key`,\n\n:func:`~cryptography.hazmat.primitives.serialization.load_der_private_key`,\n\n:func:`~cryptography.hazmat.primitives.serialization.load_pem_public_key`,\n\n:func:`~cryptography.hazmat.primitives.serialization.load_der_public_key`,\n  and :meth:`~cryptography.x509.Certificate.public_key` when called on\n  certificates with unsupported public key algorithms.\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pyca/cryptography/commit/de987ce48ccfeb1abca41efa23b2bf73ec704f74\"\u003e\u003ccode\u003ede987ce\u003c/code\u003e\u003c/a\u003e\n48.0.1 version bump and changelog (\u003ca\nhref\u003d\"https://redirect.github.com/pyca/cryptography/issues/14996\"\u003e#14996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pyca/cryptography/commit/8e03e30e3aae01632a697e903e3593c924f0139d\"\u003e\u003ccode\u003e8e03e30\u003c/code\u003e\u003c/a\u003e\nbump for 48.0.0 release (\u003ca\nhref\u003d\"https://redirect.github.com/pyca/cryptography/issues/14796\"\u003e#14796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pyca/cryptography/commit/295e0d254ef31ab864730aa41312ec355416ee71\"\u003e\u003ccode\u003e295e0d2\u003c/code\u003e\u003c/a\u003e\nAdd AGENTS.md with CLAUDE.md symlink (\u003ca\nhref\u003d\"https://redirect.github.com/pyca/cryptography/issues/14794\"\u003e#14794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pyca/cryptography/commit/104a2de19e268a433e6da92be9cb872dcf0003c8\"\u003e\u003ccode\u003e104a2de\u003c/code\u003e\u003c/a\u003e\nBump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca\nhref\u003d\"https://redirect.github.com/pyca/cryptography/issues/14793\"\u003e#14793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pyca/cryptography/commit/67ec1e51988195e17993d2edef5258b27509b926\"\u003e\u003ccode\u003e67ec1e5\u003c/code\u003e\u003c/a\u003e\ncall check_length early on AesSiv::encrypt (\u003ca\nhref\u003d\"https://redirect.github.com/pyca/cryptography/issues/14792\"\u003e#14792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pyca/cryptography/commit/b2da57a0d9e4bfd2b95364299091a18f74127b26\"\u003e\u003ccode\u003eb2da57a\u003c/code\u003e\u003c/a\u003e\nchangelog for mldsa/mlkem for openssl (\u003ca\nhref\u003d\"https://redirect.github.com/pyca/cryptography/issues/14791\"\u003e#14791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pyca/cryptography/commit/3cf44adee25c368d4a136e072fa9f80465d91eb0\"\u003e\u003ccode\u003e3cf44ad\u003c/code\u003e\u003c/a\u003e\nML-KEM OpenSSL support (\u003ca\nhref\u003d\"https://redirect.github.com/pyca/cryptography/issues/14781\"\u003e#14781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pyca/cryptography/commit/2e31639666766f846fbab2c605879db0fa64fe83\"\u003e\u003ccode\u003e2e31639\u003c/code\u003e\u003c/a\u003e\nML-DSA OpenSSL support (\u003ca\nhref\u003d\"https://redirect.github.com/pyca/cryptography/issues/14773\"\u003e#14773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pyca/cryptography/commit/5affe5a286a986fdf512c4a5cb280d28a96c10e3\"\u003e\u003ccode\u003e5affe5a\u003c/code\u003e\u003c/a\u003e\nfix rust nightly clippy (\u003ca\nhref\u003d\"https://redirect.github.com/pyca/cryptography/issues/14790\"\u003e#14790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pyca/cryptography/commit/2e73ca448eaf64b6f0d4ffbb794cf96170cef5ec\"\u003e\u003ccode\u003e2e73ca4\u003c/code\u003e\u003c/a\u003e\nbump rust-openssl dep and update EcPoint::mul_generator to\nmul_generator2 (\u003ca\nhref\u003d\"https://redirect.github.com/pyca/cryptography/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/pyca/cryptography/compare/46.0.7...48.0.1\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dcryptography\u0026package-manager\u003duv\u0026previous-version\u003d46.0.7\u0026new-version\u003d48.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@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\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/apache/datafusion/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "98495131ff5966e1e2d8518ec1932824c2c266da",
      "tree": "2632bb009c9477164fd6de9913094fbbe471e129",
      "parents": [
        "152d8c47eb6b7ddbaa40ec26f24d714c24572d40"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 16 18:09:45 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 08:09:45 2026 +0000"
      },
      "message": "chore(deps-dev): bump launch-editor from 2.10.0 to 2.14.1 in /datafusion/wasmtest/datafusion-wasm-app (#22970)\n\nBumps [launch-editor](https://github.com/vitejs/launch-editor) from\n2.10.0 to 2.14.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/vitejs/launch-editor/commit/3f97c648307a70e7c930ba63f040e6ba8e72bc16\"\u003e\u003ccode\u003e3f97c64\u003c/code\u003e\u003c/a\u003e\nv2.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/vitejs/launch-editor/commit/0cc9550e05c35224a1f61914b9731723f78c06a7\"\u003e\u003ccode\u003e0cc9550\u003c/code\u003e\u003c/a\u003e\nfix: reject UNC paths (\u003ca\nhref\u003d\"https://redirect.github.com/vitejs/launch-editor/issues/138\"\u003e#138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/vitejs/launch-editor/commit/afd1ab907769adbb0fb76b564551f3cd24822ea6\"\u003e\u003ccode\u003eafd1ab9\u003c/code\u003e\u003c/a\u003e\nci: run tests on mac and windows (\u003ca\nhref\u003d\"https://redirect.github.com/vitejs/launch-editor/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/vitejs/launch-editor/commit/0bfa328e4d2a70d3accd86645efde43a5a8fd931\"\u003e\u003ccode\u003e0bfa328\u003c/code\u003e\u003c/a\u003e\ntest: add some tests for launch-editor package (\u003ca\nhref\u003d\"https://redirect.github.com/vitejs/launch-editor/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/vitejs/launch-editor/commit/1b006ae00061e83628c884770df4869bac481ed3\"\u003e\u003ccode\u003e1b006ae\u003c/code\u003e\u003c/a\u003e\nchore: add README (\u003ca\nhref\u003d\"https://redirect.github.com/vitejs/launch-editor/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/vitejs/launch-editor/commit/383ef26fceaaab75e4f122bf833a8d457e187272\"\u003e\u003ccode\u003e383ef26\u003c/code\u003e\u003c/a\u003e\nv2.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/vitejs/launch-editor/commit/6277209316b28bd76b057a97fcdfa42da5adc181\"\u003e\u003ccode\u003e6277209\u003c/code\u003e\u003c/a\u003e\nci: harden publish settings\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/vitejs/launch-editor/commit/520b2f787af1bbe3d2333d952547fc90f2c01bb3\"\u003e\u003ccode\u003e520b2f7\u003c/code\u003e\u003c/a\u003e\nfix(deps): update all non-major dependencies (\u003ca\nhref\u003d\"https://redirect.github.com/vitejs/launch-editor/issues/129\"\u003e#129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/vitejs/launch-editor/commit/475ac662aeaa40eebe319f76acf7bd7ff2aba5d5\"\u003e\u003ccode\u003e475ac66\u003c/code\u003e\u003c/a\u003e\nchore(deps): update dependency lint-staged to v17 (\u003ca\nhref\u003d\"https://redirect.github.com/vitejs/launch-editor/issues/130\"\u003e#130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/vitejs/launch-editor/commit/247bf1dfe2c75efb50f507d33c2c5a3cbf4e20d0\"\u003e\u003ccode\u003e247bf1d\u003c/code\u003e\u003c/a\u003e\nchore(deps): update dependency yorkie to v2 (\u003ca\nhref\u003d\"https://redirect.github.com/vitejs/launch-editor/issues/131\"\u003e#131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/vitejs/launch-editor/compare/v2.10.0...v2.14.1\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca\nhref\u003d\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new\nreleaser for launch-editor since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dlaunch-editor\u0026package-manager\u003dnpm_and_yarn\u0026previous-version\u003d2.10.0\u0026new-version\u003d2.14.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@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\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/apache/datafusion/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "152d8c47eb6b7ddbaa40ec26f24d714c24572d40",
      "tree": "fde5808f42892df55937d066105ac698e1994d1b",
      "parents": [
        "a1e88e21ff600137747ccebe6a9da01f6dbd33a6"
      ],
      "author": {
        "name": "Adam Gutglick",
        "email": "adamgsal@gmail.com",
        "time": "Tue Jun 16 08:16:40 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 07:16:40 2026 +0000"
      },
      "message": "Add `file_row_index` UDF to query file-level row indexes from Parquet files (#22604)\n\n## Which issue does this PR close?\n\n- Part of #20135 \n\n## Rationale for this change\n\nThis PR includes the \"front end\" side of @mbutrovich\u0027s #22026, bridging\nthe last mile to allow users to query file row indexes.\n\n## What changes are included in this PR?\n\n1. A new Scalar UDF `file_row_index`, following #20071\u0027s example. The\nfunction returns 0-based row indexes for Parquet scans.\n2. Expands the row-filter PushdownChecker to also check if the predicate\ncontains the new function, denying it from being pushed down if it does.\n3. I\u0027ve added a couple of utilities to find or rewrite ScalarUDF\ninstances in physical expressions trees, I\u0027ve seen @alamb point this\nmistake out in multiple PRs (including\n[here](https://github.com/apache/datafusion/pull/20071#discussion_r3250815183)).\nThey can also be used in #20071. They are currently in\n`schema_rewriter.rs` which was the best place I could think of, but\nmaybe they should be move elsewhere.\n4. A dedicated rewrite function for `file_row_index`, which turns it\ninto a `Cast(Column(...))`, which is required to return Int64 values.\n5. In `ParquetSource::try_pushdown_projection`, we look for\n`FileRowIndexFunc`, and if it exists we rewrite it and the source\u0027s\ntable schema.\n\n## Are these changes tested?\n\nIn addition to individual unit tests, I\u0027ve added a new SLT file\n(`file_row_index.slt`) that tests for the following cases:\n1. Querying `file_row_index` from a table backed by multiple files\n2. Filtering on `file_row_index` when its part of the projection\n3. Filtering on `file_row_index` when its **not** of the projection,\nwhen filter pushdown is either enabled or disabled (this part didn\u0027t\nwork in a previous iteration, but figured it out today).\n\n## Are there any user-facing changes?\n\n1. New scalar function type - `FileRowIndexFunc`/`file_row_index`, \n5. Rewrite logic in `physical-expr-adapter` -\n`rewrite_file_row_index_expr` specifically for the new UDF,\n`rewrite_file_row_index_projection` to rewrite the `ProjectionExprs` and\ntwo utility functions that should make it clearer how to manipulate and\nfind ScalarUDFs in physical expressions - `expr_references_scalar_udf`\nand `rewrite_scalar_udf`.\n\n---------\n\nSigned-off-by: Adam Gutglick \u003cadamgsal@gmail.com\u003e"
    },
    {
      "commit": "a1e88e21ff600137747ccebe6a9da01f6dbd33a6",
      "tree": "8f95c1f9dee7d3d3f2644cbaa62167d8e41a64db",
      "parents": [
        "a66c89828814a3a3b0f9db88f9f5abc0e87800ae"
      ],
      "author": {
        "name": "theirix",
        "email": "theirix@gmail.com",
        "time": "Tue Jun 16 07:17:55 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 06:17:55 2026 +0000"
      },
      "message": "feat: decimal support for gcd and lcm (#22655)\n\n## Which issue does this PR close?\n\n- Closes #19057.\n\n## Rationale for this change\n\nA binary gcd and lcm UDF in the datafusion-functions crate supports only\nInt64, but not Decimals. Adding missing support for decimals.\n\n## What changes are included in this PR?\n\n1. Updated gcd and lcm functions to add decimal support. The integer\npath is more performant and stays intact. For decimals, the Euclidean\nalgorithm is used for GCD\n2. Added coercion rules: casting to decimals if any argument is decimal;\notherwise, stay with ints as before\n3. Common functionality extracted to `common.rs` to avoid inter-UDF\ndependency\n4. In order to use `calculate_binary_math` for Decimals, updated it to\naccept a target type instead of raw `Decimal128Type::DATA_TYPE` - it\ncauses scaling issues for these UDFs, see #19621\n\n\nA bit more on (4). The driving force is this failing example:\n```sql\nquery R\nselect gcd(2::decimal(38, 0), 3::decimal(38, 0));\n----\n1\n```\nPreviously in #19874, I suggested a more complicated solution to extend\n`calculate_binary_math`. However, it only affected gcd/lcm and could be\nconsidered overkill. This PR extends these functions with an extra\nparameter `cast_target` for `calculate_binary_decimal_math` to perform a\nproper cast to the actual type used, rather than to the default\n`Decimal128Type::DATA_TYPE` - it is much lighter.\n\n## Are these changes tested?\n\n- Added unit test for UDFs with decimals for array and scalar paths\n- Added unit tests for the gcd/lcm math itself\n- Added new SLT tests for decimals\n\n## Are there any user-facing changes?\n\nNo"
    },
    {
      "commit": "a66c89828814a3a3b0f9db88f9f5abc0e87800ae",
      "tree": "2026738aebba88abbdd167fe20ca0b5d8f102a94",
      "parents": [
        "49b99bbd4761200a355575fb53ea6b448fef79c7"
      ],
      "author": {
        "name": "Adam Gutglick",
        "email": "adamgsal@gmail.com",
        "time": "Tue Jun 16 07:17:38 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 06:17:38 2026 +0000"
      },
      "message": "ci: Setup valid `Cargo.lock` for `depcheck` to unblock CI (#22933)\n\n## Which issue does this PR close?\n\n- Closes #22932\n\n## Rationale for this change\n\n`depcheck` stopped working because an underlying dependency released a\nnon-semver compatible change (`time 0.3.48`, not going to link to the\nissue there because people are already spamming it). Because there was\nno lockfile, every run pulled the most recent versions for all\ndependencies, which don\u0027t currently compile.\n\n## What changes are included in this PR?\n\n1. Add lockfile to `depcheck`\n2. Make sure to run `depcheck` with `--lock` in CI\n\n## Are these changes tested?\n\nTested locally\n\n## Are there any user-facing changes?\n\nNone\n\nCo-authored-by: Jeffrey Vo \u003cjeffrey.vo.australia@gmail.com\u003e"
    },
    {
      "commit": "49b99bbd4761200a355575fb53ea6b448fef79c7",
      "tree": "10dd6859077d8f07442b4f21d0f442f7d0301006",
      "parents": [
        "127731b11487e24fa1291b94d5d97b0e9b58592b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 16 15:45:59 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 05:45:59 2026 +0000"
      },
      "message": "chore(deps): bump pyjwt from 2.12.0 to 2.13.0 (#22966)\n\nBumps [pyjwt](https://github.com/jpadilla/pyjwt) from 2.12.0 to 2.13.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/releases\"\u003epyjwt\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.13.0\u003c/h2\u003e\n\u003ch1\u003ePyJWT 2.13.0 — Security Release\u003c/h1\u003e\n\u003cp\u003eThis release bundles five security fixes plus three additional\nhardening / spec-compliance changes. We recommend all users upgrade.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-xgmm-8j9v-c9wx\"\u003e\u003ccode\u003eGHSA-xgmm-8j9v-c9wx\u003c/code\u003e\u003c/a\u003e\n— JWK JSON accepted as HMAC secret (algorithm confusion).\u003c/strong\u003e\n\u003ccode\u003eHMACAlgorithm.prepare_key\u003c/code\u003e previously rejected PEM- and\nSSH-formatted asymmetric keys but did not catch a JWK passed as a raw\nJSON string. In a verifier configured with both symmetric and asymmetric\nalgorithms in \u003ccode\u003ealgorithms\u003d[…]\u003c/code\u003e and a raw-JSON JWK as the key,\nan attacker could forge HS256 tokens using the JWK text as the HMAC\nsecret. The guard has been extended to reject any JWK-shaped JSON.\n\u003cem\u003eReported by \u003ca\nhref\u003d\"https://github.com/aradona91\"\u003e\u003ccode\u003e@​aradona91\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-jq35-7prp-9v3f\"\u003e\u003ccode\u003eGHSA-jq35-7prp-9v3f\u003c/code\u003e\u003c/a\u003e\n— Algorithm allow-list bypass with \u003ccode\u003ePyJWK\u003c/code\u003e /\n\u003ccode\u003ePyJWKClient\u003c/code\u003e.\u003c/strong\u003e When verifying with a\n\u003ccode\u003ePyJWK\u003c/code\u003e, the caller\u0027s \u003ccode\u003ealgorithms\u003d[…]\u003c/code\u003e allow-list\nwas checked against the token header \u003ccode\u003ealg\u003c/code\u003e as a string only;\nactual verification used the algorithm bound to the \u003ccode\u003ePyJWK\u003c/code\u003e.\nAn attacker who controlled a registered JWKS key could sign with one\nalgorithm and advertise another on the header. PyJWT now requires the\ntoken header \u003ccode\u003ealg\u003c/code\u003e to match the \u003ccode\u003ePyJWK\u003c/code\u003e\u0027s\nalgorithm before verification. \u003cem\u003eReported by \u003ca\nhref\u003d\"https://github.com/sushi-gif\"\u003e\u003ccode\u003e@​sushi-gif\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-w7vc-732c-9m39\"\u003e\u003ccode\u003eGHSA-w7vc-732c-9m39\u003c/code\u003e\u003c/a\u003e\n— DoS via base64 decode of unused payload segment when\n\u003ccode\u003eb64\u003dfalse\u003c/code\u003e.\u003c/strong\u003e For detached-payload JWS\n(\u003ccode\u003eb64\u003dfalse\u003c/code\u003e), the compact-form payload segment was\nbase64-decoded before being discarded in favor of the caller-supplied\n\u003ccode\u003edetached_payload\u003c/code\u003e. An attacker could inflate the unused\nsegment to force CPU + memory cost without holding a valid signature.\nThe segment is now required to be empty per RFC 7515 Appendix F, and is\nno longer decoded. \u003cem\u003eReported by \u003ca\nhref\u003d\"https://github.com/thesmartshadow\"\u003e\u003ccode\u003e@​thesmartshadow\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-993g-76c3-p5m4\"\u003e\u003ccode\u003eGHSA-993g-76c3-p5m4\u003c/code\u003e\u003c/a\u003e\n— \u003ccode\u003ePyJWKClient\u003c/code\u003e accepts non-HTTP(S) URIs.\u003c/strong\u003e\n\u003ccode\u003ePyJWKClient.fetch_data\u003c/code\u003e passed its URI to\n\u003ccode\u003eurllib.request.urlopen\u003c/code\u003e, which by default also handles\n\u003ccode\u003efile://\u003c/code\u003e, \u003ccode\u003eftp://\u003c/code\u003e, and \u003ccode\u003edata:\u003c/code\u003e\nschemes. An application that fed an attacker-influenced URI into\n\u003ccode\u003ePyJWKClient\u003c/code\u003e could be coerced into reading local files or\nreaching other unintended schemes. \u003ccode\u003ePyJWKClient\u003c/code\u003e now rejects\nany URI whose scheme isn\u0027t \u003ccode\u003ehttp\u003c/code\u003e or \u003ccode\u003ehttps\u003c/code\u003e.\n\u003cem\u003eReported by \u003ca\nhref\u003d\"https://github.com/KEIJOT\"\u003e\u003ccode\u003e@​KEIJOT\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-fhv5-28vv-h8m8\"\u003e\u003ccode\u003eGHSA-fhv5-28vv-h8m8\u003c/code\u003e\u003c/a\u003e\n— \u003ccode\u003ePyJWKClient\u003c/code\u003e cache wiped on fetch error.\u003c/strong\u003e A\n\u003ccode\u003efinally\u003c/code\u003e-block \u003ccode\u003eput(jwk_set\u003dNone)\u003c/code\u003e cleared the\nJWK Set cache whenever a fetch raised, turning a transient JWKS-endpoint\noutage into application-wide auth failure. The cache write was moved\ninto the success path; transient errors no longer evict valid cached\nkeys. \u003cem\u003eReported by \u003ca\nhref\u003d\"https://github.com/eddieran\"\u003e\u003ccode\u003e@​eddieran\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReject empty HMAC keys outright in\n\u003ccode\u003eHMACAlgorithm.prepare_key\u003c/code\u003e with \u003ccode\u003eInvalidKeyError\u003c/code\u003e\ninstead of accepting them with only a warning. Defends against the\n\u003ccode\u003eos.getenv(\u0026quot;JWT_SECRET\u0026quot;, \u0026quot;\u0026quot;)\u003c/code\u003e footgun.\n\u003cem\u003eThanks to \u003ca\nhref\u003d\"https://github.com/SnailSploit\"\u003e\u003ccode\u003e@​SnailSploit\u003c/code\u003e\u003c/a\u003e and\n\u003ca href\u003d\"https://github.com/spartan8806\"\u003e\u003ccode\u003e@​spartan8806\u003c/code\u003e\u003c/a\u003e\nfor the reports.\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003eForward per-call \u003ccode\u003eoptions\u003c/code\u003e (including\n\u003ccode\u003eenforce_minimum_key_length\u003c/code\u003e) from \u003ccode\u003ePyJWT.decode\u003c/code\u003e\nthrough to \u003ccode\u003ePyJWS._verify_signature\u003c/code\u003e. The option was\npreviously silently dropped between the two layers, so it only took\neffect when set on the \u003ccode\u003ePyJWT\u003c/code\u003e instance. \u003cem\u003eThanks to \u003ca\nhref\u003d\"https://github.com/WLUB\"\u003e\u003ccode\u003e@​WLUB\u003c/code\u003e\u003c/a\u003e for the\nreport.\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRFC 7797 §3 compliance for \u003ccode\u003eb64\u003dfalse\u003c/code\u003e:\u003c/strong\u003e\nthe encoder now auto-adds \u003ccode\u003e\u0026quot;b64\u0026quot;\u003c/code\u003e to\n\u003ccode\u003ecrit\u003c/code\u003e, and the decoder rejects tokens that set\n\u003ccode\u003eb64\u003dfalse\u003c/code\u003e without listing it in \u003ccode\u003ecrit\u003c/code\u003e.\n\u003cem\u003eThanks to \u003ca\nhref\u003d\"https://github.com/MachineLearning-Nerd\"\u003e\u003ccode\u003e@​MachineLearning-Nerd\u003c/code\u003e\u003c/a\u003e\nfor the report.\u003c/em\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate the \u003ccode\u003edev\u003c/code\u003e, \u003ccode\u003edocs\u003c/code\u003e, and\n\u003ccode\u003etests\u003c/code\u003e package extras to dependency groups, by \u003ca\nhref\u003d\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/jpadilla/pyjwt/pull/1152\"\u003e#1152\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eUpgrade notes\u003c/h2\u003e\n\u003cp\u003eMost fixes are invisible to correctly-configured callers. A few\nbehavioral changes you may encounter:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eEmpty HMAC keys now raise.\u003c/strong\u003e If your app passed\n\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e or \u003ccode\u003eb\u0026quot;\u0026quot;\u003c/code\u003e as a secret\n(often via a missing env var, e.g.\n\u003ccode\u003eos.getenv(\u0026quot;JWT_SECRET\u0026quot;, \u0026quot;\u0026quot;)\u003c/code\u003e),\n\u003ccode\u003eencode\u003c/code\u003e/\u003ccode\u003edecode\u003c/code\u003e will now raise\n\u003ccode\u003eInvalidKeyError\u003c/code\u003e. This is the intended behavior — fix the\nconfiguration.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ePyJWK\u003c/code\u003e decoding now requires the token\u0027s\n\u003ccode\u003ealg\u003c/code\u003e to match the JWK\u0027s algorithm.\u003c/strong\u003e Previously a\nmismatch was silently honored if the header \u003ccode\u003ealg\u003c/code\u003e appeared in\nthe allow-list. Tokens that relied on this mismatch will now fail with\n\u003ccode\u003eInvalidAlgorithmError\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ePyJWKClient\u003c/code\u003e now rejects non-HTTP(S) URIs at\nconstruction time.\u003c/strong\u003e Tests or dev environments that fetched JWKS\nfrom \u003ccode\u003efile://\u003c/code\u003e URIs need to switch to a local HTTP server or\nload the JWKS by other means (e.g. construct\n\u003ccode\u003ePyJWKSet.from_dict(...)\u003c/code\u003e directly).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eb64\u003dfalse\u003c/code\u003e tokens are now strictly RFC 7515 /\n7797 compliant.\u003c/strong\u003e Tokens with a non-empty compact-form payload\nsegment, or that omit \u003ccode\u003e\u0026quot;b64\u0026quot;\u003c/code\u003e from\n\u003ccode\u003ecrit\u003c/code\u003e, will be rejected. PyJWT-produced tokens always\nsatisfy both invariants, so round-trips through PyJWT are\nunaffected.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eenforce_minimum_key_length\u003c/code\u003e set per-call now\ntakes effect.\u003c/strong\u003e Callers who passed\n\u003ccode\u003eoptions\u003d{\u0026quot;enforce_minimum_key_length\u0026quot;: True}\u003c/code\u003e to\n\u003ccode\u003ejwt.decode()\u003c/code\u003e previously got no enforcement; they will now\nget \u003ccode\u003eInvalidKeyError\u003c/code\u003e on undersized keys, as documented.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/compare/2.12.1...2.13.0\"\u003ehttps://github.com/jpadilla/pyjwt/compare/2.12.1...2.13.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.12.1\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd typing_extensions dependency for Python \u0026lt; 3.11 by \u003ca\nhref\u003d\"https://github.com/jpadilla\"\u003e\u003ccode\u003e@​jpadilla\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/jpadilla/pyjwt/pull/1151\"\u003ejpadilla/pyjwt#1151\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/compare/2.12.0...2.12.1\"\u003ehttps://github.com/jpadilla/pyjwt/compare/2.12.0...2.12.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst\"\u003epyjwt\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003ev2.13.0\n\u0026lt;https://github.com/jpadilla/pyjwt/compare/2.12.1...2.13.0\u0026gt;\u003c/code\u003e__\u003c/h2\u003e\n\u003cp\u003eSecurity\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Reject JWK JSON documents passed as raw HMAC secrets in\n  ``HMACAlgorithm.prepare_key`` to close an algorithm-confusion gap that\n  the existing PEM/SSH guard did not cover. Reported by @aradona91 in\n`GHSA-xgmm-8j9v-c9wx\n\u0026lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-xgmm-8j9v-c9wx\u0026gt;`__.\n- Bind the JWT header ``alg`` to ``PyJWK.algorithm_name`` during\n  verification so the caller\u0027s ``algorithms\u003d[...]`` allow-list cannot be\nbypassed when decoding with a ``PyJWK`` / ``PyJWKClient`` key. Reported\nby @sushi-gif in `GHSA-jq35-7prp-9v3f\n\u0026lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-jq35-7prp-9v3f\u0026gt;`__.\n- Reject non-``http(s)`` URI schemes in ``PyJWKClient`` so attacker-\ninfluenced URIs cannot read local files or reach unintended schemes via\nurllib\u0027s default ``file://`` / ``ftp://`` / ``data:`` handlers. Reported\nby @KEIJOT in `GHSA-993g-76c3-p5m4\n\u0026lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-993g-76c3-p5m4\u0026gt;`__.\n- Preserve the cached JWK Set on fetch errors in\n``PyJWKClient.fetch_data``.\n  The previous ``finally``-block ``put(None)`` pattern cleared the cache\non any transient outage, turning one bad JWKS request into application-\nwide auth failure. Reported by @eddieran in `GHSA-fhv5-28vv-h8m8\n\u0026lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-fhv5-28vv-h8m8\u0026gt;`__.\n- Skip the unconditional base64 decode of the compact-form payload\nsegment\n  when ``b64\u003dfalse`` is set in the protected header, and require that\n  segment to be empty (RFC 7515 Appendix F detached form). Closes an\n  unauthenticated DoS amplifier. Reported by @thesmartshadow in\n`GHSA-w7vc-732c-9m39\n\u0026lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-w7vc-732c-9m39\u0026gt;`__.\n\u003cp\u003eFixed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Reject empty HMAC keys outright in ``HMACAlgorithm.prepare_key`` with\n  ``InvalidKeyError`` instead of accepting them with only a warning.\n  Thanks to @SnailSploit and @spartan8806 for independently flagging the\n  footgun.\n- Forward per-call ``options`` (including\n``enforce_minimum_key_length``)\n  from ``PyJWT.decode`` through to ``PyJWS._verify_signature`` so the\noption actually takes effect when set at the call site rather than only\n  on the ``PyJWT`` instance. Thanks to @WLUB for the report.\n- RFC 7797 §3 compliance for ``b64\u003dfalse``: the encoder now auto-adds\n``\u0026amp;quot;b64\u0026amp;quot;`` to the ``crit`` header parameter, and the\ndecoder rejects\ntokens that set ``b64\u003dfalse`` without listing it in ``crit``. Thanks to\n  @MachineLearning-Nerd for the report.\n\nChanged\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate the \u003ccode\u003edev\u003c/code\u003e, \u003ccode\u003edocs\u003c/code\u003e, and\n\u003ccode\u003etests\u003c/code\u003e package extras to dependency groups by \u003ca\nhref\u003d\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in\n\u003ccode\u003e[#1152](https://github.com/jpadilla/pyjwt/issues/1152)\n\u0026amp;lt;https://github.com/jpadilla/pyjwt/pull/1152\u0026amp;gt;\u003c/code\u003e__\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ccode\u003ev2.12.1\n\u0026amp;lt;https://github.com/jpadilla/pyjwt/compare/2.12.0...2.12.1\u0026amp;gt;\u003c/code\u003e__\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/commit/7144e4534c34810f4525dc4578a32addd8212cff\"\u003e\u003ccode\u003e7144e45\u003c/code\u003e\u003c/a\u003e\nApply ruff format\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/commit/d2f4bec4963897c0ef96ef64a875894f2c8542ab\"\u003e\u003ccode\u003ed2f4bec\u003c/code\u003e\u003c/a\u003e\nRestore \u003ccode\u003ecast()\u003c/code\u003e calls with cross-version \u003ccode\u003etype:\nignore\u003c/code\u003e for \u003ccode\u003eprepare_key\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/commit/22f478cebddd8294259c30f037ecb92b0b348774\"\u003e\u003ccode\u003e22f478c\u003c/code\u003e\u003c/a\u003e\nRemove redundant casts in \u003ccode\u003eRSAAlgorithm.prepare_key\u003c/code\u003e and\n`ECAlgorithm.prepare...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/commit/95791b1759b8aa4f2203575d344d5c78564cdc81\"\u003e\u003ccode\u003e95791b1\u003c/code\u003e\u003c/a\u003e\nBundle security fixes and hardening into 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/commit/dcc27a9d3182a2349c30b160758785c6ce7a6508\"\u003e\u003ccode\u003edcc27a9\u003c/code\u003e\u003c/a\u003e\n[pre-commit.ci] pre-commit autoupdate (\u003ca\nhref\u003d\"https://redirect.github.com/jpadilla/pyjwt/issues/1155\"\u003e#1155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/commit/9d08a9a1896845ed8eaf88e6f6ac61e5800c3e7a\"\u003e\u003ccode\u003e9d08a9a\u003c/code\u003e\u003c/a\u003e\n[pre-commit.ci] pre-commit autoupdate (\u003ca\nhref\u003d\"https://redirect.github.com/jpadilla/pyjwt/issues/1146\"\u003e#1146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/commit/b87c10014d4109f0214fea188d00faaaf8a80e64\"\u003e\u003ccode\u003eb87c100\u003c/code\u003e\u003c/a\u003e\nBump codecov/codecov-action from 5 to 6 (\u003ca\nhref\u003d\"https://redirect.github.com/jpadilla/pyjwt/issues/1154\"\u003e#1154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/commit/40e3147eb5f790d8d041772e5fc00728a176c812\"\u003e\u003ccode\u003e40e3147\u003c/code\u003e\u003c/a\u003e\nMigrate development extras to dependency groups (\u003ca\nhref\u003d\"https://redirect.github.com/jpadilla/pyjwt/issues/1152\"\u003e#1152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/commit/a4e1a3d1218b01c5806420b8f16d9308ac4adc30\"\u003e\u003ccode\u003ea4e1a3d\u003c/code\u003e\u003c/a\u003e\nAdd typing_extensions dependency for Python \u0026lt; 3.11 (\u003ca\nhref\u003d\"https://redirect.github.com/jpadilla/pyjwt/issues/1151\"\u003e#1151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/jpadilla/pyjwt/compare/2.12.0...2.13.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dpyjwt\u0026package-manager\u003duv\u0026previous-version\u003d2.12.0\u0026new-version\u003d2.13.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\nalter it yourself. You can also trigger a rebase manually by commenting\n`@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\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/apache/datafusion/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "127731b11487e24fa1291b94d5d97b0e9b58592b",
      "tree": "b33dfcc635c9e59055349334c124331ec5bb2ec7",
      "parents": [
        "c14379b9b528f3b9f98e29f5e020aa06dc182a66"
      ],
      "author": {
        "name": "Adam Gutglick",
        "email": "adamgsal@gmail.com",
        "time": "Tue Jun 16 01:48:20 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 00:48:20 2026 +0000"
      },
      "message": "Include `null_aware` status in the relevant Join node display implementations (#22913)\n\n## Which issue does this PR close?\n\n- Closes #22912.\n\n## Rationale for this change\n\nThis change makes testing null_aware behavior easier, and also makes the\nperformance of various joins clearer - null_aware joins do extra work.\n\nThis was originally part #21585, but it seems like there is a bunch of\nactivity around null-aware joins, so I figured its worth splitting out.\n\n## What changes are included in this PR?\n\nAdd a `null_aware` indication to relevant Display implementations when\nappropriate.\n\n## Are these changes tested?\n\nSLT tests\n\n## Are there any user-facing changes?\n\nDisplay only\n\n---------\n\nSigned-off-by: Adam Gutglick \u003cadamgsal@gmail.com\u003e"
    },
    {
      "commit": "c14379b9b528f3b9f98e29f5e020aa06dc182a66",
      "tree": "1fba0d9d55fdaaba8277657efbd848618aabb684",
      "parents": [
        "dede33c3362d317c2849bd819d1a2e8ad47c80ef"
      ],
      "author": {
        "name": "Huaijin",
        "email": "haohuaijin@gmail.com",
        "time": "Tue Jun 16 05:01:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 21:01:36 2026 +0000"
      },
      "message": "refactor: remove `opt_filter` in `GroupsAccumulator::merge_batch` (#22816)\n\n## Which issue does this PR close?\n\n- Closes #22775.\n\n## Rationale for this change\n\nthe `opt_filter` on `GroupsAccumulator::merge_batch` is a dead\nparameter. Aggregate `FILTER` clauses only apply to raw input rows in\nthe update phase (`update_batch`). `merge_batch` combines already\npre-aggregated states, so there is no per-row filtering to do —\n`opt_filter` is meaningless there.\n\nThe code confirms this:\n- The only production caller (`row_hash.rs`) always passed `None`.\n- Existing implementations already ignored it — e.g. `correlation.rs`\nasserted `opt_filter.is_none()`, and Spark `avg` used `_opt_filter`.\n\n## What changes are included in this PR?\n\n- Removed `opt_filter` from `merge_batch` in the trait and all\nimplementations (built-in aggregates, `physical-expr-common`,\n`functions-aggregate-common`, Spark, and FFI).\n- Updated the trait docs to say `merge_batch` has no `opt_filter`\nbecause filtering happens in the update phase.\n- Changed the group zero-init path in `row_hash.rs` to always use\n`update_batch` with an all-false filter instead of branching to\n`merge_batch`. `update_batch` always takes raw argument types (what\n`aggregate_arguments` provides), and since every row is filtered out the\ndata never matters — this is simpler and more correct.\n- Updated all call sites and tests.\n\n## Are these changes tested?\n\nYes. Existing aggregate tests cover this and were updated to the new\nsignature. The `first_last` tests were adjusted (with comments) to match\nthe merge behavior without a filter, and the FFI and Spark tests were\nupdated too.\n\n## Are there any user-facing changes?\n\nYes — this is a breaking change to the public `GroupsAccumulator` trait:\n`opt_filter` is removed from `merge_batch`. Custom implementations and\ndirect callers must update their signatures."
    },
    {
      "commit": "dede33c3362d317c2849bd819d1a2e8ad47c80ef",
      "tree": "c3e465444bf61d9a1ca1e3106e976792385376ad",
      "parents": [
        "e20763ce773c31ab67ec448e9d64d773a8df8435"
      ],
      "author": {
        "name": "Yongting You",
        "email": "2010youy01@gmail.com",
        "time": "Tue Jun 16 05:00:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 21:00:40 2026 +0000"
      },
      "message": "refactor(hash-aggr): Migrate existing tests on `GroupsHashAggregateStream` (#22953)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\nPart of https://github.com/apache/datafusion/issues/22710\n\n## Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the issue then this section is not needed.\nExplaining clearly why changes are proposed helps reviewers understand\nyour changes and offer better suggestions for fixes.\n--\u003e\nThe goal is after we have fully migrated from the old `row_hash.rs`, the\nexisting UTs should be kept. Specifically, all tests that include\n`GroupedHashAggregateStream`\n\nThere are 3 previous PRs for the migration have been merged, some\nexisting UTs are applicable to them, this PR migrated those tests to the\nnew implementation.\n\nThe test migration includes:\n1. copy and paste test case\n2. Change `GroupedHashAggregateStream` to `PartialHashAggregateStream`\n(or other stream in new impl)\n3. Left a comment on the migrated test case, so in the final delete move\nit\u0027s more clear which tests have already been moved.\n\nThis PR moved 2 applicable UTs, and updated the comments for all the\ntests moved previously.\n\n(Just some random thoughts, in general I don\u0027t think it\u0027s a good idea to\nwrite tests against low-level utilities like\n`GroupedHashAggregateStream`, all tests should better be at SQL level,\nor at least at `ExecutionPlan` level, so their test goal are more likely\nto survive refactors)\n\n## What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\n## Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n5. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\n\n## Are there any user-facing changes?\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e"
    },
    {
      "commit": "e20763ce773c31ab67ec448e9d64d773a8df8435",
      "tree": "9324c2f1ef38d62cf90c6e45f4e1d7a5a00ee27f",
      "parents": [
        "99895e686ddafaef8bccf8600688a4c7b1a2b994"
      ],
      "author": {
        "name": "Yongting You",
        "email": "2010youy01@gmail.com",
        "time": "Mon Jun 15 17:29:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 09:29:56 2026 +0000"
      },
      "message": "refactor(hash-aggr): Migrate the partial aggregation skip optimization to the new hash aggregation impl (#22899)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\nPart of https://github.com/apache/datafusion/issues/22710\n\n## Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the issue then this section is not needed.\nExplaining clearly why changes are proposed helps reviewers understand\nyour changes and offer better suggestions for fixes.\n--\u003e\nSee issue for the background, this PR forward ports below optimization\nto the rewritten hash aggregation\n- https://github.com/apache/datafusion/pull/11627\n\nAfter this migration, the performance is back, so this PR also changes\nthe temporary configuration\n`datafusion.execution.enable_migration_aggregate` default to `true` --\nthe new path will be used by default.\n\nLocal Clickbench_partitioned result (see `benchmarks/` for details), on\nM4 Pro MacBook\n```\n--------------------\nBenchmark clickbench_partitioned.json\n--------------------\n┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓\n┃ Query     ┃       main ┃ split-aggr-skip-partial ┃       Change ┃\n┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩\n│ QQuery 0  │    0.68 ms │                 0.70 ms │    no change │\n│ QQuery 1  │    7.66 ms │                 7.48 ms │    no change │\n│ QQuery 2  │   25.79 ms │                25.72 ms │    no change │\n│ QQuery 3  │   22.25 ms │                22.10 ms │    no change │\n│ QQuery 4  │  182.82 ms │               188.57 ms │    no change │\n│ QQuery 5  │  213.57 ms │               212.69 ms │    no change │\n│ QQuery 6  │    0.66 ms │                 0.69 ms │    no change │\n│ QQuery 7  │    8.54 ms │                 8.49 ms │    no change │\n│ QQuery 8  │  245.27 ms │               246.04 ms │    no change │\n│ QQuery 9  │  323.81 ms │               323.68 ms │    no change │\n│ QQuery 10 │   48.95 ms │                48.70 ms │    no change │\n│ QQuery 11 │   57.73 ms │                57.05 ms │    no change │\n│ QQuery 12 │  211.82 ms │               210.91 ms │    no change │\n│ QQuery 13 │  298.06 ms │               302.46 ms │    no change │\n│ QQuery 14 │  219.03 ms │               217.94 ms │    no change │\n│ QQuery 15 │  219.24 ms │               216.60 ms │    no change │\n│ QQuery 16 │  485.78 ms │               493.53 ms │    no change │\n│ QQuery 17 │  500.92 ms │               487.31 ms │    no change │\n│ QQuery 18 │ 1087.29 ms │              1051.08 ms │    no change │\n│ QQuery 19 │   19.10 ms │                19.45 ms │    no change │\n│ QQuery 20 │  453.62 ms │               458.61 ms │    no change │\n│ QQuery 21 │  454.90 ms │               459.08 ms │    no change │\n│ QQuery 22 │  829.91 ms │               847.96 ms │    no change │\n│ QQuery 23 │ 2561.67 ms │              2619.03 ms │    no change │\n│ QQuery 24 │   31.76 ms │                31.78 ms │    no change │\n│ QQuery 25 │   86.63 ms │                89.67 ms │    no change │\n│ QQuery 26 │   31.37 ms │                32.67 ms │    no change │\n│ QQuery 27 │  544.97 ms │               553.90 ms │    no change │\n│ QQuery 28 │ 1822.22 ms │              1877.44 ms │    no change │\n│ QQuery 29 │   27.76 ms │                29.00 ms │    no change │\n│ QQuery 30 │  211.00 ms │               217.48 ms │    no change │\n│ QQuery 31 │  206.02 ms │               211.34 ms │    no change │\n│ QQuery 32 │  676.20 ms │               724.32 ms │ 1.07x slower │\n│ QQuery 33 │ 1144.96 ms │              1161.21 ms │    no change │\n│ QQuery 34 │ 1141.98 ms │              1147.83 ms │    no change │\n│ QQuery 35 │  209.49 ms │               217.06 ms │    no change │\n│ QQuery 36 │   44.38 ms │                44.10 ms │    no change │\n│ QQuery 37 │   24.15 ms │                24.57 ms │    no change │\n│ QQuery 38 │   29.67 ms │                30.00 ms │    no change │\n│ QQuery 39 │   87.68 ms │                88.80 ms │    no change │\n│ QQuery 40 │    8.57 ms │                 8.95 ms │    no change │\n│ QQuery 41 │    8.62 ms │                 8.38 ms │    no change │\n│ QQuery 42 │    7.42 ms │                 7.20 ms │    no change │\n└───────────┴────────────┴─────────────────────────┴──────────────┘\n```\n\n## What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\nThis PR is easier to read commit-by-commit.\n\n1. Cleanup the state machine in hash aggregation with typestate pattern\n2. Move common util for partial hash aggregation skip from\n`aggregates/row_hash.rs` -\u003e `aggregates/utils.rs`\n3. Implement the same optimization to the migrated aggregation\n4. Set configuration `enable_migration_aggregate` default to true\n\n## Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n5. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\nExisting tests + new UT\n\n## Are there any user-facing changes?\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e\nNo"
    },
    {
      "commit": "99895e686ddafaef8bccf8600688a4c7b1a2b994",
      "tree": "fcb9e2845029f372a40804c12c993acde1d00947",
      "parents": [
        "6520315d41851d1fb31da0ae1b4f22e48a6b2705"
      ],
      "author": {
        "name": "Michael Kleen",
        "email": "mkleen@gmail.com",
        "time": "Mon Jun 15 10:30:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 08:30:53 2026 +0000"
      },
      "message": "refactor: Simplify heap size estimation for types that own no heap allocations (#22918)\n\n## Which issue does this PR close?\n\n- Closes None.\n\n## Rationale for this change\n\nThis pr simplifies heap size estimation by using a macro for types that\nown no heap allocations.\nThis removes a lot of redundant code. \n\n## What changes are included in this PR?\n\nSee above.\n\n## Are these changes tested?\n\nYes, previous tests are passing and more tests are added.\n\n## Are there any user-facing changes?\n\nNo."
    },
    {
      "commit": "6520315d41851d1fb31da0ae1b4f22e48a6b2705",
      "tree": "1d306a5b4c4f01997e3bb7934e03947a6316b65e",
      "parents": [
        "d428760d709a375f3d997c84e9c4748a22584149"
      ],
      "author": {
        "name": "ajegou",
        "email": "arnaud.jegou@gmail.com",
        "time": "Mon Jun 15 10:04:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 08:04:34 2026 +0000"
      },
      "message": "fix(topk): call attempt_early_completion when filter rejects entire batch (#22852)\n\n## Which issue does this PR close?\n\n- Closes #22849\n- A related cross-partition starvation case is tracked separately in\n#22874 and addressed by an upcoming follow-up PR — see\n[discussion](https://github.com/apache/datafusion/pull/22852#issuecomment-4670382915)\nfor details\n\n## Rationale for this change\n\n`TopK::insert_batch` short-circuits when the heap\u0027s dynamic filter\nrejects every row in a batch:\n\n```rust\nif !filter.has_true() {\n    // nothing to filter, so no need to update\n    return Ok(());\n}\n```\n\nThe early-exit check `attempt_early_completion(\u0026batch)` lives later in\nthe same function, gated on `replacements \u003e 0`. So a batch that the\nfilter rejects entirely bypasses the check.\n\nThe heap\u0027s dynamic filter is derived from the heap\u0027s worst row (via\n`update_filter`). A batch whose rows all come from a strictly worse sort\nprefix is exactly the batch the filter rejects entirely — i.e. the very\nsignal `attempt_early_completion` is designed to detect (\"the next batch\nis past the heap\u0027s boundary, we can stop\") is what causes the function\nto short-circuit *before* the check runs.\n\nThis is a feature-interaction regression between two PRs that were both\ncorrect in isolation. The `attempt_early_completion` mechanism was added\nby #15563 (closing #15529). At the time, there was no heap-derived\ndynamic filter on TopK, so the only sensible call site was right after a\nsuccessful heap insertion. Two months later, #15770 added the\ndynamic-filter pushdown for TopK sorts, introducing the\n`!filter.has_true()` short-circuit. The two features address different\nproblems and the new short-circuit didn\u0027t connect to the existing\nprefix-completion check — which is how this gap opened up.\n\n**Consequence**: on a TopK over an input ordered on the sort prefix,\n`finished \u003d true` is never set once the heap stabilizes. Since\n`finished` is the signal `SortExec` uses to stop pulling from its input\n(via `Poll::Ready(None)` from the TopK stream, which cascades into\ndropping the source stream), the source keeps being polled long past the\npoint where no further row can improve the heap. The LIMIT optimization\neffectively degrades to \"heap saves memory but reads everything\";\nsources with cancellable streams (e.g. networked sources) never receive\nthe cancellation signal.\n\n## What changes are included in this PR?\n\nSingle behavioral change in `datafusion/physical-plan/src/topk/mod.rs`:\ncall `attempt_early_completion(\u0026batch)` immediately before the `return\nOk(())` in the `!filter.has_true()` branch.\n\nWhy this scope, not a broader restructuring:\n\n- The existing `attempt_early_completion` call inside `if replacements \u003e\n0` is load-bearing for a related case: a batch containing a mix of\n\"still valuable\" rows and \"past the boundary\" rows. The existing\n`test_try_finish_marks_finished_with_prefix` test covers this case —\nBatch 2 with `a\u003d[2,3], b\u003d[10,20]` against a heap where `heap.max.a \u003d 2`;\nthe `(2, 10)` row must be inserted before the check on the `(3, 20)`\nlast row triggers. Moving the call earlier would skip the insertion of\nvaluable rows and break that test.\n- The bug is specifically that the *short-circuit* path doesn\u0027t call the\ncheck. The fix targets exactly that path.\n- A related but separate gap is not addressed here: when\n`filter.has_true() \u003d\u003d true` but `replacements \u003d\u003d 0` (the filter accepts\nsome rows but `find_new_topk_items` ends up inserting none of them), the\nexisting call inside `if replacements \u003e 0` is also skipped. This\nrequires a divergence between the heap\u0027s filter predicate and the\nrow-byte comparison used inside `find_new_topk_items`, which shouldn\u0027t\nnormally happen (the filter is derived from the heap\u0027s worst row using\nthe same comparator). A deterministic synthetic repro would likely\nrequire concurrent heap updates from sibling partitions or\nboundary-value edge cases (NaN/NULL semantics, type coercion). Happy to\nsend a follow-up if reviewers want it covered; the workload that\nmotivated this fix was the filter-rejection case empirically.\n\n## Are these changes tested?\n\nYes. Added a regression test\n`test_try_finish_fires_when_filter_rejects_entire_batch`. The assertion\ntarget is `topk.finished` — the flag that signals \"stop pulling from the\nsource\" to upstream consumers (read by `TopKExec::poll_next` to emit\n`Poll::Ready(None)`). Asserting that the flag transitions on the\nfully-filter-rejected batch is equivalent to asserting that the\nsource-stopping mechanism activates.\n\n- Builds a TopK over a `(a, b)` sort with prefix `a`, k\u003d3.\n- Inserts a batch that fills the heap with rows from `a ∈ {1, 2}`;\n`update_filter` tightens the filter to `a \u003c 2 OR (a \u003d 2 AND b \u003c 30)`.\n- Inserts a second batch with all rows at `a \u003d 3` — filter rejects every\nrow.\n- Without the fix: `insert_batch` short-circuits, `topk.finished` stays\n`false`. Test fails.\n- With the fix: `attempt_early_completion` fires (last-row prefix `a \u003d\n3` \u003e heap.max prefix `a \u003d 2`), `topk.finished` becomes `true`. Test\npasses.\n\nThe test also asserts the emitted top-K is unchanged from after batch 1,\nconfirming no candidate row was incorrectly excluded by the early bail.\n\nAll 28 existing `topk::` tests continue to pass (including\n`test_try_finish_marks_finished_with_prefix`, which exercises the\nmixed-prefix case).\n\n## Are there any user-facing changes?\n\nNo public API or output changes. The fix only changes when TopK marks\nitself `finished \u003d true` — specifically, it now fires\n`attempt_early_completion` for batches that are entirely rejected by the\nheap\u0027s dynamic filter, where previously it would silently skip the\ncheck. Output of TopK is unchanged; only the early-exit behavior\nimproves.\n\n---------\n\nCo-authored-by: Gabriel \u003c45515538+gabotechs@users.noreply.github.com\u003e"
    },
    {
      "commit": "d428760d709a375f3d997c84e9c4748a22584149",
      "tree": "8b5ae2d1c34c626608a060cb920caff0da901932",
      "parents": [
        "cb2542c5bebacb75d014b2138daef24af371663e"
      ],
      "author": {
        "name": "Jordan Epstein",
        "email": "32082339+jordepic@users.noreply.github.com",
        "time": "Sun Jun 14 07:37:35 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 14 12:37:35 2026 +0000"
      },
      "message": "fix: count shared buffers once in hash join build-side memory accounting (#22862)\n\n## Which issue does this PR close?\n\n- Closes #22861.\n\n## Rationale for this change\n\nWhen using DataFusion comet I noticed that my hash join operator was\nfailing with the following error: `Failed to acquire 142606336 bytes\nwhere 17142251456 bytes already reserved and the fair limit is\n17179869184 bytes, 4 registered`. Looking into this more, DataFusion\nasks to reserve memory for each batch (by default 8192 rows) of the\nbuild side of a hash join - and tries to reserve (without actually\nallocating it) num_batches * batch_size. This is problematic when these\nare batches are zero-copy slices of a larger batch (e.g.\nGroupedHashAggregateStream), since the slice size is evaluated to be the\nsize of the larger buffer. This is because the reference to the slice\nactually keeps the entire buffer from being freed. DataFusion doesn\u0027t\noverallocate memory (the underlying data is the same), but it does\nover-request it (in the centralized accounting system), which can lead\nto these \"ResourcesExhausted\" exceptions.\n\n## What changes are included in this PR?\n\nIn this change, we keep track of all of the buffers that we\u0027ve already\ncounted via a set of pointers. This way, we don\u0027t redundantly request\nmemory for the whole arrow buffer for each sub-slice of it. We choose\nthis approach as opposed to just requesting a smaller amount of memory\nper batch, because as mentioned before, the pointer to each batch\ntechnically keeps the entire arrow-buffer from being freed.\n\n## Are these changes tested?\n\nThe new hash join test fails on main with ResourcesExhausted and passes\nwith this change.\n\n## Are there any user-facing changes?\n\nNo breaking changes. Adds a new public helper\ncount_record_batch_memory_size to datafusion-common.\n\nCo-authored-by: Jordan Epstein \u003cjordan.epstein@imc.com\u003e"
    },
    {
      "commit": "cb2542c5bebacb75d014b2138daef24af371663e",
      "tree": "c37ba366f681d4072190d15e2308e91220f34258",
      "parents": [
        "78033fa679c6031927e6b25154e664fc5cefcaec"
      ],
      "author": {
        "name": "fys",
        "email": "40801205+fengys1996@users.noreply.github.com",
        "time": "Sun Jun 14 11:27:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 14 03:27:07 2026 +0000"
      },
      "message": "fix: TRY_CAST returns NULL for timestamp/date overflow (#22897)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Closes #22896.\n\n## Rationale for this change\n\n`TRY_CAST` should return NULL on cast failure, but overflowing\ndate/timestamp casts returned errors.\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the issue then this section is not needed.\nExplaining clearly why changes are proposed helps reviewers understand\nyour changes and offer better suggestions for fixes.\n--\u003e\n\n## What changes are included in this PR?\n  \n- Make scalar temporal overflow checks respect CastOptions.safe.\n- Skip DataFusion’s array pre-check for safe casts so Arrow can return\nNULLs.\n- Add regression tests.\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\n## Are these changes tested?\n\nYes:\n\n```bash\ncargo test -p datafusion-common timestamp_overflow_returns\ncargo test -p datafusion-expr-common timestamp_array_to_timestamp_overflow\ncargo test --test sqllogictests -- datetime/timestamps.slt\n```\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\n\n## Are there any user-facing changes?\n\nYes. TRY_CAST for overflowing date/timestamp casts now returns NULL;\nregular CAST still errors.\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e\n\n## Known Limitation\n\nThis PR does not add Date array-path coverage yet. For example:\n\n```sql\nSELECT TRY_CAST(d AS TIMESTAMP(9))\nFROM (VALUES (DATE \u00273000-01-01\u0027)) t(d);\n```\n\nThis depends on the upstream Arrow fix in apache/arrow-rs#9825. Once\nDataFusion updates to an Arrow version containing that fix, we can add\nthis regression test."
    },
    {
      "commit": "78033fa679c6031927e6b25154e664fc5cefcaec",
      "tree": "9b84e0e7a1d3753cb87a166fc245498a95dbad19",
      "parents": [
        "a7280b87f541f0ed65674be377ac4998b7069a6d"
      ],
      "author": {
        "name": "Nathan",
        "email": "56370526+nathanb9@users.noreply.github.com",
        "time": "Sat Jun 13 11:41:33 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 13 15:41:33 2026 +0000"
      },
      "message": "refactor: introduce ProbeEnd state in NestedLoopJoinExec (#22865)\n\n## Which issue does this PR close?\n\n- Closes #22808.\n\n## Rationale for this change\n\nFollow-up to #22791, as suggested in review by @2010YOUY01.\n\nThat PR fixed a double-decrement bug where `EmitLeftUnmatched` did two\njobs at once — deciding whether a partition emits unmatched-left rows\n(which decrements the shared `probe_threads_counter`) and performing the\nemit. Because the state is re-enterable (a ready batch can be flushed\nbefore the state advances to `Done`), the counter could be decremented\ntwice, driving it to zero before all partitions finished probing and\nemitting spurious NULL-padded rows. #22791 patched this with a\n`probe_completed_reported` guard flag.\n\nThis refactor makes \"decrement exactly once per probe stream\" a\nstructural property of the state graph rather than a runtime guard, so\nthe inner logic is easier to follow and the bug is harder to\nreintroduce.\n\n## What changes are included in this PR?\n\nRestructures the state machine from `FetchingRight → EmitLeftUnmatched`\nto `FetchingRight → ProbeEnd → EmitLeftUnmatched`:\n\n- Adds a dedicated `ProbeEnd` state, entered exactly once per left chunk\nwhen the right side is exhausted. It owns the single\n`report_probe_completed()` call and records whether this stream is the\nunmatched-left emitter.\n- Replaces the `probe_completed_reported` guard flag with an\n`is_unmatched_left_emitter` field that `EmitLeftUnmatched` only reads.\n- Removes the per-chunk flag reset in the memory-limited path (the\ndecision is recomputed in `ProbeEnd` for each chunk) and reverts the\n`Arc::clone` workaround #22791 needed in `process_left_unmatched`.\n- Updates the state-transition doc graph and arm comments.\n\nNo behavior change is expected.\n\n## Are these changes tested?\n\nYes — covered by existing tests:\n\n- All 42 `nested_loop_join` unit tests and the full\n`datafusion-physical-plan` suite pass.\n- `joins.slt` sqllogictests pass (including the multi-partition LEFT\nJOIN regression test added in #22791).\n- 41 `join_fuzz` tests (`cargo test --features extended_tests`)\ncomparing `NestedLoopJoinExec` against `HashJoinExec` across every join\ntype, filtered and unfiltered, with a multi-partition probe side — the\nexact scenario class of the original bug — pass.\n- `cargo fmt` and `cargo clippy --all-targets --all-features -- -D\nwarnings` are clean.\n\n## Are there any user-facing changes?\n\nNo."
    },
    {
      "commit": "a7280b87f541f0ed65674be377ac4998b7069a6d",
      "tree": "3cc0cb45452f571896e5927d3d4114f27486fbdf",
      "parents": [
        "58e37a0b3af584761164edb831522e3cc9aee8d0"
      ],
      "author": {
        "name": "Amogh Ramesh",
        "email": "ramogh2404@gmail.com",
        "time": "Sat Jun 13 20:10:01 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 13 14:40:01 2026 +0000"
      },
      "message": "FFI: plumb `placement` for `FFI_ScalarUDF` (#22608)\n\n## Which issue does this PR close?\n\n- Part of #22330.\n\nThis is the first of the per-method PRs that issue describes. It plumbs\n`placement` only; the remaining defaulted methods follow separately, so\nthe umbrella issue stays open.\n\n## Rationale for this change\n\n`FFI_ScalarUDF` (`datafusion/ffi/src/udf/mod.rs`) carried no function\npointer for `placement`, and `ForeignScalarUDF` did not override it, so\na producer\u0027s override of `ScalarUDFImpl::placement` (default body at\n`datafusion/expr/src/udf.rs:1028`) was dropped on the consumer side and\nevery foreign UDF fell back to `KeepInPlace`. A UDF loaded over FFI\nnever delivered its leaf-pushdown hint to the optimizer.\n\n## What changes are included in this PR?\n\n- New `FFI_ExpressionPlacement` enum bridge in\n`datafusion/ffi/src/placement.rs`, in the shape of `FFI_Volatility`:\n`#[repr(u8)]` with `From` impls both ways and a round-trip test over\nevery variant.\n- A `placement` function pointer on `FFI_ScalarUDF`, populated in the\n`From\u003cArc\u003cScalarUDF\u003e\u003e` constructor, with `placement_fn_wrapper` on the\nproducer side and a forwarding `ForeignScalarUDF::placement` on the\nconsumer side. `placement` is infallible, so the pointer returns the\nenum directly rather than `FFI_Result`.\n\nAdding a field to the `#[repr(C)]` struct changes its layout, so this is\nan API change and should carry the `api change` label (I can\u0027t add it\nmyself). It targets `main` and should not be back-ported to a release\nbranch.\n\n`display_name` is also on the issue\u0027s list, but it has been deprecated\nsince 50.0.0, so it should be dropped from the gap list rather than\nplumbed. I have left it and the remaining methods to follow-up PRs.\n\n## Are these changes tested?\n\nYes.\n\n- Unit: a round-trip test over all four `ExpressionPlacement` variants,\nplus a forced-foreign test (`mock_foreign_marker_id`) using a UDF whose\n`placement` override depends on its arguments. The assertions cover\nordered, reordered, and empty argument slices, so argument marshalling\nis checked, not just the return value.\n- Integration: `tests/ffi_udf.rs` loads the UDF from the real cdylib and\nasserts the override survives the boundary, which is the surface a\nlayout change needs.\n\nRun with `cargo test -p datafusion-ffi` and `cargo test -p\ndatafusion-ffi --features integration-tests`.\n\n## Are there any user-facing changes?\n\nA `placement` override on a `ScalarUDFImpl` is now preserved across the\nFFI boundary instead of being silently replaced by the default. This is\nan ABI change to `FFI_ScalarUDF`; consumers must be recompiled against\nthe new layout.\n\n---------\n\nSigned-off-by: Amogh Ramesh \u003cramogh2404@gmail.com\u003e"
    },
    {
      "commit": "58e37a0b3af584761164edb831522e3cc9aee8d0",
      "tree": "6c81c1b86a6f1c886a40d4250eae53b0cf54658e",
      "parents": [
        "3bece3dde20cf8973ded8a8dc44978bda64cf640"
      ],
      "author": {
        "name": "Kumar Ujjawal",
        "email": "ujjawalpathak6@gmail.com",
        "time": "Sat Jun 13 19:42:24 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 13 14:12:24 2026 +0000"
      },
      "message": "Clearly gate sliding SUM(DISTINCT) type support (#22866)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Closes #22820.\n\n## Rationale for this change\n\nSliding `SUM(DISTINCT)` only supports `Int64`, but it was routed through\nthe wider `SUM` type dispatch path. This made unsupported types fail\nwith a less clear accumulator error.\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the issue then this section is not needed.\nExplaining clearly why changes are proposed helps reviewers understand\nyour changes and offer better suggestions for fixes.\n--\u003e\n\n## What changes are included in this PR?\n\nThis PR adds an explicit `Int64` gate for sliding `SUM(DISTINCT)`.\n\nUnsupported types now return a clear feature error that names the\noperation and type. The existing `Int64` path is unchanged.\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\n## Are these changes tested?\n\nYes\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\n\n## Are there any user-facing changes?\n\nNo public API change\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e"
    },
    {
      "commit": "3bece3dde20cf8973ded8a8dc44978bda64cf640",
      "tree": "096dfd2c0ea424250f8b695875f79049fbe73a8d",
      "parents": [
        "574a1e6b39acd5b2c521d554863ac50fc0855654"
      ],
      "author": {
        "name": "Adam Gutglick",
        "email": "adamgsal@gmail.com",
        "time": "Sat Jun 13 13:17:11 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 13 12:17:11 2026 +0000"
      },
      "message": "Upgrade minimal tokio-postgres version to address security advisory (#22937)\n\n## Which issue does this PR close?\n\n- Closes #.\n\n## Rationale for this change\n\n`cargo audit` currently reports the following vulnerabilities:\n```\nCrate:     postgres-protocol\nVersion:   0.6.11\nTitle:     Unbounded SCRAM iteration count allows a malicious server to cause CPU-exhaustion denial of service\nDate:      2026-06-12\nID:        RUSTSEC-2026-0179\nURL:       https://rustsec.org/advisories/RUSTSEC-2026-0179\nSeverity:  8.7 (high)\nSolution:  Upgrade to \u003e\u003d0.6.12\n\nCrate:     postgres-protocol\nVersion:   0.6.11\nTitle:     Panic decoding a malformed `hstore` value allows denial of service\nDate:      2026-06-12\nID:        RUSTSEC-2026-0180\nURL:       https://rustsec.org/advisories/RUSTSEC-2026-0180\nSeverity:  6.9 (medium)\nSolution:  Upgrade to \u003e\u003d0.6.12\n\nCrate:     tokio-postgres\nVersion:   0.7.17\nTitle:     Panic on a `DataRow` with fewer fields than columns allows denial of service\nDate:      2026-06-12\nID:        RUSTSEC-2026-0178\nURL:       https://rustsec.org/advisories/RUSTSEC-2026-0178\nSeverity:  6.9 (medium)\nSolution:  Upgrade to \u003e\u003d0.7.18\n```\n\n## What changes are included in this PR?\n\nUpgrade the minimal version of the `tokio-postgres` dependency\n\n## Are these changes tested?\n\nExisting tests\n\n## Are there any user-facing changes?\n\nNone\n\nSigned-off-by: Adam Gutglick \u003cadamgsal@gmail.com\u003e"
    },
    {
      "commit": "574a1e6b39acd5b2c521d554863ac50fc0855654",
      "tree": "852d2661bb507b91c221771423a71e0fb00bb562",
      "parents": [
        "e5f7af15a6dafe9e2847a81bae5fddfda5a60c0a"
      ],
      "author": {
        "name": "Ahmed EL.",
        "email": "xfocus29@gmail.com",
        "time": "Sat Jun 13 02:40:47 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 13 01:40:47 2026 +0000"
      },
      "message": "fix: preserve Spark next_day whitespace validation (#22720)\n\n## Which issue does this PR close?\n\n- Closes #22717.\n\n## Rationale for this change\n\nSpark does not trim `dayOfWeek` before matching it in `next_day`, but\n`datafusion-spark` currently does. That makes values like `\u0027 MO \u0027`\nsucceed in DataFusion even though Spark treats them as invalid.\n\n## What changes are included in this PR?\n\n- remove the `.trim()` call from `spark_next_day`\n- add a regression test proving whitespace-padded day names are rejected\n\n## Are these changes tested?\n\n- `cargo test -p datafusion-spark\nnext_day_rejects_whitespace_padded_day_names -- --nocapture`\n- `cargo test -p datafusion-spark`\n- `cargo fmt --all --check`\n- `cargo clippy -p datafusion-spark --all-targets --all-features\n--no-deps -- -D warnings`\n\nNote: the broader package clippy invocation still reports an existing\nunused import warning in untouched\n`datafusion/core/src/execution/session_state.rs` on current main.\n\n## Are there any user-facing changes?\n\nBehavior now matches Spark for whitespace-padded `dayOfWeek` inputs in\n`next_day`.\n\n---------\n\nSigned-off-by: xfocus3 \u003cxfocus3@users.noreply.github.com\u003e\nCo-authored-by: xfocus3 \u003cxfocus3@users.noreply.github.com\u003e\nCo-authored-by: Ahmed El amraouiyine \u003cahmed.elamraouiyine@vilavi.fr\u003e"
    },
    {
      "commit": "e5f7af15a6dafe9e2847a81bae5fddfda5a60c0a",
      "tree": "716e81018414ca0ba64867b990bb5a34b64a781f",
      "parents": [
        "f9317284cf56c517742c212fe893af05ff955a23"
      ],
      "author": {
        "name": "David López",
        "email": "hola@devel0pez.com",
        "time": "Sat Jun 13 03:37:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 13 01:37:17 2026 +0000"
      },
      "message": "feat(spark): add `concat_ws` with array support (#20928)\n\n## Which issue does this PR close?\n\n- Part of #15914\n\n## Rationale for this change\n\nDataFusion core\u0027s `concat_ws` does not support array arguments. Spark\u0027s\n`concat_ws(sep, ...)` accepts both scalar strings and arrays, expanding\narray elements and skipping nulls. This is needed for Spark\ncompatibility in the `datafusion-spark` crate.\n\n\n## What changes are included in this PR?\n\n- New `SparkConcatWs` UDF in\n`datafusion/spark/src/function/string/concat_ws.rs`\n  - Supports `concat_ws(sep, str1, str2, ...)` with scalar strings\n- Supports array arguments: `concat_ws(\u0027,\u0027, array(\u0027a\u0027, \u0027b\u0027), \u0027c\u0027)` →\n`\"a,b,c\"`\n  - Null scalars and null array elements are skipped (Spark behavior)\n  - Null separator returns NULL\n  - Zero value arguments (`concat_ws(\u0027,\u0027)`) returns empty string\n  - Supports Utf8, LargeUtf8, Utf8View, List, and LargeList types\n- Registered the function in `mod.rs` (`make_udf_function!`,\n`export_functions!`, `functions()`)\n- Replaced commented-out SLT tests with 14 working test cases covering\nbasic usage, arrays, mixed arguments, nulls, column expressions, and\nedge cases\n\n\n## Are these changes tested?\n\nYes.\n- 7 unit tests in `concat_ws.rs` (basic, null values skipped, null\nseparator, list arrays, list with nulls, mixed scalar+list, multiple\nrows)\n- 14 SLT tests in `spark/string/concat_ws.slt` covering scalars, arrays,\nnulls, column expressions, and edge cases\n\n\n## Are there any user-facing changes?\n\nNo. This is a new function in the `datafusion-spark` crate only."
    },
    {
      "commit": "f9317284cf56c517742c212fe893af05ff955a23",
      "tree": "6a1e6f8b176387f316ada404e2e494c3de6b9c6b",
      "parents": [
        "37768b8aadd0e9de543029778814d585588ff64f"
      ],
      "author": {
        "name": "Kumar Ujjawal",
        "email": "ujjawalpathak6@gmail.com",
        "time": "Sat Jun 13 07:06:39 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 13 01:36:39 2026 +0000"
      },
      "message": "fix: handle `date_bin` negative subsecond and overflow cases (#22610)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Closes #22528\n\n## Rationale for this change\n\n`date_bin` had a few edge cases that could return the wrong result,\nreturn an error only on array inputs, or panic/wrap when scaling\ntimestamp and time values to nanoseconds.\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the issue then this section is not needed.\nExplaining clearly why changes are proposed helps reviewers understand\nyour changes and offer better suggestions for fixes.\n--\u003e\n\n## What changes are included in this PR?\n\n  - Fix negative sub-second timestamp conversion before the epoch.\n- Make scalar and array paths return `NULL` consistently for per-row\nbinning errors.\n- Use checked scaling when converting timestamp and time values to\nnanoseconds.\n- Return an error for invalid shared origin values that overflow during\nscaling.\n  - Simplify duplicated stride and scale handling.\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\n## Are these changes tested?\n\nYes\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\n\n## Are there any user-facing changes?\nNo public API changes.\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e"
    },
    {
      "commit": "37768b8aadd0e9de543029778814d585588ff64f",
      "tree": "384fe7ce5c9f3a667ea962b29bbc444bb239d7e0",
      "parents": [
        "b8998c762bb864a9f3607a518384b03dcf40eb61"
      ],
      "author": {
        "name": "pchintar",
        "email": "89355405+pchintar@users.noreply.github.com",
        "time": "Sat Jun 13 07:04:43 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 13 01:34:43 2026 +0000"
      },
      "message": "fix: Enable sliding window execution for covar_pop, covar_samp, and corr (#22764)\n\n## Which issue does this PR close?\n\n- Closes #22763 .\n\n## Rationale for this change\n\nBounded sliding window queries using `covar_pop`, `covar_samp`, and\n`corr` currently fail with a `retract_batch is not implemented` error,\npreventing these aggregates from being used with sliding window frames.\n\n## What changes are included in this PR?\n\n* Included `supports_retract_batch()` for the covariance and correlation\naccumulators.\n* Added SQL logic tests covering bounded sliding window execution for\ncovariance and correlation aggregates.\n\n## Are these changes tested?\n\nYes.\n\nAdded SQL logic tests covering:\n\n* Single-row bounded sliding frames\n* Multi-row bounded sliding frames\n\nfor `covar_pop`, `covar_samp`, and `corr`.\n\n## Are there any user-facing changes?\n\nYes.\n\n`covar_pop`, `covar_samp`, and `corr` can now be used with bounded\nsliding window frames that previously failed. Also, no changes were made\nto any public APIs."
    },
    {
      "commit": "b8998c762bb864a9f3607a518384b03dcf40eb61",
      "tree": "2274274c18c3d085dff48f5bcbf1e70b553d9260",
      "parents": [
        "3b321a20ea6edf7457085886445ed02078f86de2"
      ],
      "author": {
        "name": "Neil Conway",
        "email": "neil.conway@gmail.com",
        "time": "Thu Jun 11 08:24:58 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 12:24:58 2026 +0000"
      },
      "message": "perf: Convert inner joins to semi joins when equivalent (#22652)\n\n## Which issue does this PR close?\n\n- Closes #22594\n\n## Rationale for this change\n\nThis PR extends the `EliminateJoin` rewrite pass to replace inner joins\nwith semi joins in some cases. An inner join `L ⋈ R` can be rewritten to\na left semi join `L ⋉ R` if two conditions hold:\n\n1. None of R\u0027s columns are referenced above the join\n2. (a) each L row matches at most one R row, OR (b) the consumers of the\njoin result are insensitive to duplicates\n\n(And symmetrically with right semi joins.)\n\n## What changes are included in this PR?\n\n* Add `for_each_referenced_index` helper that is used by both\n`EliminateJoin` and `EliminateProjections`\n* Introduce `LiveColumns` type to track the \"live\" (referenced by\nparent) columns of a plan node\n* Add inner -\u003e semi join rewrite to `EliminateJoin`\n* Add unit and SLT tests for rewrite behavior\n* Update SLT test fixtures for plan changes\n\n## Are these changes tested?\n\nYes; new tests added.\n\n## Are there any user-facing changes?\n\nSome plan changes but no behavioral changes.\n\n---------\n\nCo-authored-by: Daniël Heres \u003cdanielheres@gmail.com\u003e"
    },
    {
      "commit": "3b321a20ea6edf7457085886445ed02078f86de2",
      "tree": "3d10ad9e7b09303c031a157b57b2ecaa5cfeccff",
      "parents": [
        "db2d21e094b1be2ff27653ce58ba1317e2237b01"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Thu Jun 11 08:22:45 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 12:22:45 2026 +0000"
      },
      "message": "docs: link to 2026 Q3-Q4 roadmap discussion (#22884)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Related to #22882.\n\n## Rationale for this change\n\nI opened a new roadmap discussion, [DataFusion 2026 Q3-Q4 Roadmap\nDiscussion](https://github.com/apache/datafusion/issues/22882), and it\nwould be nice if public-facing docs pointed readers at it so the\ncommunity can find and join the current discussion.\n\n## What changes are included in this PR?\n\n- Add a roadmap pointer to the `README.md` \"Contributing to DataFusion\"\nsection linking to the roadmap docs and the current discussion (#22882).\n- Update the contributor-guide roadmap page\n(`docs/source/contributor-guide/roadmap.md`) to call out #22882 as the\ncurrent discussion and list it at the top of the quarterly roadmap\ndiscussions.\n\n## Are these changes tested?\n\nNo tests; documentation-only change.\n\n## Are there any user-facing changes?\n\nDocumentation only — adds links to the current roadmap discussion.\n\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "db2d21e094b1be2ff27653ce58ba1317e2237b01",
      "tree": "8f27e1669ed64b462a97cf4552c26c2b5d522e4c",
      "parents": [
        "dae03ee062b2abf986de8df12ea82fb1578a2d99"
      ],
      "author": {
        "name": "Kristin Cowalcijk",
        "email": "kristincowalcijk@gmail.com",
        "time": "Thu Jun 11 07:34:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 23:34:18 2026 +0000"
      },
      "message": "fix: preserve async UDF return field metadata (#22663)\n\n## Which issue does this PR close?\n\nCloses https://github.com/apache/datafusion/issues/22662.\n\n## Rationale for this change\n\nAsync scalar UDFs can compute output field metadata in\n`return_field_from_args(...)`, but `AsyncFuncExpr` rebuilt the output\nfield from only name, data type, and nullability. This dropped metadata\nfrom async UDF result fields.\n\n## What changes are included in this PR?\n\nThis PR updates `AsyncFuncExpr::field(...)` to preserve the planned\n`return_field` metadata and only rename the field for the async\nexpression output.\n\nIt also adds a regression test that verifies an async UDF result batch\npreserves metadata attached by `return_field_from_args(...)`.\n\n## Are these changes tested?\n\nYes.\n\nAdded a regression test in:\n-\n`datafusion/core/tests/user_defined/user_defined_async_scalar_functions.rs`\n\nThe test fails without the fix and passes with the fix.\n\n## Are there any user-facing changes?\n\nYes.\n\nAsync scalar UDF result fields now preserve metadata attached by\n`return_field_from_args(...)`.\n\n---------\n\nCo-authored-by: Jeffrey Vo \u003cjeffrey.vo.australia@gmail.com\u003e\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "dae03ee062b2abf986de8df12ea82fb1578a2d99",
      "tree": "58321fa01f4665749e5b09a5f32fd895aa40ec9e",
      "parents": [
        "8bbc46004183c22bd6caf0b7492c21540248a084"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Wed Jun 10 14:27:53 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 18:27:53 2026 +0000"
      },
      "message": "chore: Update to arrow/parquet 59.0.0 (#22744)\n\n## Which issue does this PR close?\n- related to https://github.com/apache/arrow-rs/issues/9110\n\n\n## Rationale for this change\n\nUpdate to latest version of arrow/parquet\n\n## What changes are included in this PR?\n1. Update to arrow/parquet 59.0.0\n2. Adjust code for API differences\n\n## Are these changes tested?\n\nBy CI\n## Are there any user-facing changes?\n\nNew dependency"
    },
    {
      "commit": "8bbc46004183c22bd6caf0b7492c21540248a084",
      "tree": "9d2119cea967855991955c69a0d95ea3a087d05c",
      "parents": [
        "656dc47ac9563edaa795a2da5b513bce1e5716ed"
      ],
      "author": {
        "name": "Neil Conway",
        "email": "neil.conway@gmail.com",
        "time": "Wed Jun 10 13:51:22 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 17:51:22 2026 +0000"
      },
      "message": "fix: Avoid incorrectly rounding large integers in `nanvl` (#22575)\n\n## Which issue does this PR close?\n\n- Closes #22567\n\n## Rationale for this change\n\n`nanvl`\u0027s function signature listed `Float16` first, which meant that\ndata types not natively supported by the function (e.g., integers) would\nbe converted to `Float16`. This resulted in unnecessary and incorrect\nrounding for large integer inputs (e.g., `nanvl(16777217, 1)` returned\nincorrect results).\n\nInstead, we now convert non-floating point inputs to `Float64`. This\nmight still round for inputs larger than 2^53, but it\u0027s the best we can\ndo without more fundamental changes. Floating point inputs are coerced\nto the widest float type they have in common -- e.g., (`Float16`,\n`Float32`) -\u003e `Float32`.\n\n## What changes are included in this PR?\n\n* Change function signature to avoid unnecessary rounding\n* Update SLT\n\n## Are these changes tested?\n\nYes; new tests added.\n\n## Are there any user-facing changes?\n\nYes; `nanvl` now avoids rounding in more cases.\n\n---------\n\nCo-authored-by: Kumar Ujjawal \u003cujjawalpathak6@gmail.com\u003e"
    },
    {
      "commit": "656dc47ac9563edaa795a2da5b513bce1e5716ed",
      "tree": "e805f77ea22e76da4cab6a813838fcd6dce6dc31",
      "parents": [
        "8f0635438fe605da4181852fd8a1332aea42750b"
      ],
      "author": {
        "name": "Bruce Ritchie",
        "email": "bruce.ritchie@veeva.com",
        "time": "Wed Jun 10 12:57:53 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 16:57:53 2026 +0000"
      },
      "message": "Add sort tpch SQL benchmark (#22814)\n\n## Which issue does this PR close?\n\nPart of #21706\n\n## Rationale for this change\n\nContinue work on sql benchmark migration.\n\n## What changes are included in this PR?\n\nsort_tpch sql benchmark\n\n## Are these changes tested?\n\nYes\n\n`BENCH_NAME\u003dsort_tpch cargo bench --bench sql`\n`BENCH_NAME\u003dsort_tpch BENCH_SIZE\u003d10 cargo bench --bench sql`\n`BENCH_NAME\u003dsort_tpch LIMIT\u003dtrue cargo bench --bench sql`\n`BENCH_NAME\u003dsort_tpch BENCH_SIZE\u003d10 LIMIT\u003dtrue cargo bench --bench sql`\n\n## Are there any user-facing changes?\n\nNo\n\n---------\n\nCo-authored-by: Adrian Garcia Badaracco \u003c1755071+adriangb@users.noreply.github.com\u003e"
    },
    {
      "commit": "8f0635438fe605da4181852fd8a1332aea42750b",
      "tree": "3fdd94af1393267eaa45a58e0a98cd3ee78c054f",
      "parents": [
        "68cbe60b1d965085a0613cf444913d53e149aa53"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Thu Jun 11 00:51:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 16:51:46 2026 +0000"
      },
      "message": "minor: handle NULL array input in array_remove and array_replace (#22790)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Closes #.\n\n## Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the issue then this section is not needed.\nExplaining clearly why changes are proposed helps reviewers understand\nyour changes and offer better suggestions for fixes.\n--\u003e\n\n`array_remove` errored out when given a `NULL` array argument.\n\n`array_replace` handled the `DataType::Null` case, but it always built a\nNULL array of length 1, regardless of the actual input length.\n\n`remove` and `replace` share nearly identical implementations, so they\nshould treat a NULL array argument the same way\n\n## What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\n- `array_remove`: handle `DataType::Null` in both\n`array_remove_internal` and the scalar fast-path\n`array_remove_with_scalar_args`, returning a NULL array of the input\nlength.\n- `array_replace`: fix the existing `DataType::Null` branches to use the\ninput array length (`array.len()` / `list_array.len()`) instead of a\nhard-coded `1`.\n\n## Are these changes tested?\n\nYes, added slt coverage\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\n\n## Are there any user-facing changes?\n\n`array_remove`/`array_remove_n`/`array_remove_all` now return `NULL` for\na `NULL`-typed array argument instead of raising an error. No breaking\nAPI changes.\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e"
    },
    {
      "commit": "68cbe60b1d965085a0613cf444913d53e149aa53",
      "tree": "7cffc69fc86533ed99f5c943a8d9e7899ea3114a",
      "parents": [
        "5615f251245c60cc72f0f449e299c89a1cb82505"
      ],
      "author": {
        "name": "Nathan",
        "email": "56370526+nathanb9@users.noreply.github.com",
        "time": "Wed Jun 10 12:51:24 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 16:51:24 2026 +0000"
      },
      "message": "fix: map() fails when keys are literals and values are column expressions (#22784)\n\n## Which issue does this PR close?\n\nCloses #22781\n\n## Rationale for this change\n\n`map([\u0027a\u0027,\u0027b\u0027], [col, col * 10])` fails at execution time with \"map\nrequires key and value lists to have the same length\" when keys are all\nliterals and values contain column references.\n\nRoot cause: literal keys evaluate to\n`ColumnarValue::Scalar(FixedSizeList[N])` (length N) while column values\nevaluate to `ColumnarValue::Array` (length batch_size). The length check\ncompares N !\u003d batch_size and errors.\n\n## What changes are included in this PR?\n\nIn `make_map_batch`: when one argument is scalar and the other is array,\nexpand the scalar to match `batch_size` via\n`ScalarValue::to_array_of_size(number_rows)` before the length\ncomparison.\n\n## Are these changes tested?\n\nYes.\n- Unit test: scalar keys + array values in `map.rs`\n- SLT test: `SELECT map([\u0027a\u0027,\u0027b\u0027], [column1, column1 * 10]) FROM (VALUES\n(1), (2), (3))`\n\n## Are there any user-facing changes?\n\nNo. Previously-failing queries now execute correctly.\n\n---------\n\nCo-authored-by: Jeffrey Vo \u003cjeffrey.vo.australia@gmail.com\u003e"
    },
    {
      "commit": "5615f251245c60cc72f0f449e299c89a1cb82505",
      "tree": "8c03b16811f6143b5f23e1bddbee81f5d8af3fa6",
      "parents": [
        "6d4cb31d3a844993ec82279d363783780481a53d"
      ],
      "author": {
        "name": "Neil Conway",
        "email": "neil.conway@gmail.com",
        "time": "Wed Jun 10 12:50:16 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 16:50:16 2026 +0000"
      },
      "message": "fix: Correct output-count stats for partitioned partial aggs (#22780)\n\n## Which issue does this PR close?\n\n- Closes #22779\n\n## Rationale for this change\n\nA partial aggregate with no group by expression emits one row per output\npartition, even for input partitions that did not receive any rows. The\nstats code gets this incorrect, and claims that the partial agg outputs\n`Exact(0)` rows in this scenario. This is off by a factor of\n`partition_count`, which can lead to suboptimal planning decisions\ndownstream.\n\nBecause `total_byte_size` is scaled from the output row count, this is\nalso improved: the byte-size estimate now scales with the corrected\noutput row count rather than the input row count.\n\n## What changes are included in this PR?\n\n* Pass the requested partition into `statistics_inner` and adjust\n`statistics_inner` as described above\n* Tighten optimizer metadata for grouping sets queries (minor\ncorrectness fix)\n* Add/extend existing unit tests\n\n## Are these changes tested?\n\nYes; new tests added.\n\n## Are there any user-facing changes?\n\nNo."
    },
    {
      "commit": "6d4cb31d3a844993ec82279d363783780481a53d",
      "tree": "59c3167608ce52e2179d99b7980c097590168f4b",
      "parents": [
        "92820c8047b3dcee5553d057f58381e2942a6852"
      ],
      "author": {
        "name": "7. Sun",
        "email": "jhao.sun@gmail.com",
        "time": "Wed Jun 10 12:49:23 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 16:49:23 2026 +0000"
      },
      "message": "feat: implement Spark-compatible weekday function (#22740)\n\n## Which issue does this PR close?\n\n- Closes #22599.\n\n## Rationale for this change\n\nImplements the Spark `weekday` function as part of the datafusion-spark\nfunction library (#15914). Spark\u0027s `weekday` returns the day-of-week as\na 0-indexed integer with Monday \u003d 0 .. Sunday \u003d 6, which differs from\nthe existing `dayofweek` (1-indexed, Sunday \u003d 1). This fills a gap for\nSpark-compatibility consumers.\n\n## What changes are included in this PR?\n\n- New `SparkWeekDay` scalar UDF in\n`datafusion/spark/src/function/datetime/weekday.rs`, modeled on the\nsibling `monthname` function.\n- Accepts Date and (implicitly coerced) Timestamp input; returns\n`Int32`.\n- Uses Arrow\u0027s `DatePart::DayOfWeekMonday0` kernel, which is exactly\n0\u003dMonday .. 6\u003dSunday — a direct match for Spark semantics.\n- Null input propagates to null output for both scalar and array paths.\n- Registered in the datetime function `mod.rs` (UDF macro, doc export,\n`functions()` list).\n\n## Are these changes tested?\n\nYes:\n- Rust unit tests: return-field nullability, scalar evaluation (incl.\nnull), and array evaluation.\n- sqllogictest coverage in\n`datafusion/sqllogictest/test_files/spark/datetime/weekday.slt`: scalar\ndates for all 7 weekdays, array input, TIMESTAMP / TIMESTAMP_NTZ / LTZ\ncoercion, null handling, and argument-type / zero-argument error cases.\nThe original PySpark 3.5.5 reference (`weekday(\u00272009-07-30\u0027) \u003d 3`) is\npreserved and validated.\n\n## Are there any user-facing changes?\n\nAdds the new Spark-compatible scalar function `weekday`. No breaking\nchanges.\n\n---\n\nNote: I noticed there is an existing draft PR #22601 for the same\nfunction (last updated 2026-05-28). It appears to be a stale draft, so\nI\u0027ve opened this as a complete, tested implementation — happy to defer\nor collaborate if the draft author is still active.\n\nSigned-off-by: sjhddh \u003c151469562+sjhddh@users.noreply.github.com\u003e\nCo-authored-by: sjhddh \u003c151469562+sjhddh@users.noreply.github.com\u003e\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "92820c8047b3dcee5553d057f58381e2942a6852",
      "tree": "acb37a2f612363bb9635bf656195304f9cae97bd",
      "parents": [
        "5e3bc99fb0000dfa1e4d0c8e311dbf35080b734b"
      ],
      "author": {
        "name": "Neil Conway",
        "email": "neil.conway@gmail.com",
        "time": "Wed Jun 10 12:48:55 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 16:48:55 2026 +0000"
      },
      "message": "docs: Update/improve `SELECT` reference  (#22672)\n\n## Which issue does this PR close?\n\n- N/A\n\n## Rationale for this change\n\nVarious improvements and cleanups to the `SELECT` reference page in the\ndocumentation. Update the documentation to cover more of the supported\nSQL syntax, to include more details when appropriate, and to add more\nexamples.\n\n## What changes are included in this PR?\n\n* Improve the `SELECT` reference page in the documentation\n* Update `pipe_operator.slt` to reflect that the pipe operator syntax is\nnow supported in the default SQL dialect\n\n## Are these changes tested?\n\nManually and LLM-checked the examples.\n\n## Are there any user-facing changes?\n\nDocumentation improvements, but should be no regressions. No functional\nchanges in DataFusion."
    },
    {
      "commit": "5e3bc99fb0000dfa1e4d0c8e311dbf35080b734b",
      "tree": "187f6f0981519ad00e01315d4d2e99f3fb38745e",
      "parents": [
        "3f52debc532331d3a9b07abaf31868c53d77740d"
      ],
      "author": {
        "name": "EeshanBembi",
        "email": "33062610+EeshanBembi@users.noreply.github.com",
        "time": "Wed Jun 10 22:12:56 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 16:42:56 2026 +0000"
      },
      "message": "perf: fast-path inline strings in ByteViewGroupValueBuilder::vectorized_append (#21794)\n\n## Which issue does this PR close?\n\n- Closes #21568.\n\n## Rationale for this change\n\n`ByteViewGroupValueBuilder::vectorized_append` was doing unnecessary\nwork for short strings (≤12 bytes): for each row it called\n`array.value(row)` to decode the u128 view into a `\u0026[u8]`, then called\n`make_view` to re-encode it back into a u128. The input\n`GenericByteViewArray` already stores inline values in exactly that u128\nformat, so the round-trip is redundant.\n\nThis mirrors the existing `HAS_BUFFERS` specialisation in\n`vectorized_equal_to_inner`, which uses the same\n`data_buffers().is_empty()` guard to take a direct-view-compare fast\npath for inline strings.\n\n## What changes are included in this PR?\n\nIn `vectorized_append_inner`, the `Nulls::None` branch now dispatches on\n`arr.data_buffers().is_empty()`:\n\n- **Fast path** (no data buffers → all values ≤12 bytes inline): copies\nu128 views directly via `self.views.extend(rows.iter().map(|\u0026row|\narr.views()[row]))`. Arrow\u0027s validity invariant guarantees inline views\nare zero-padded, so direct copy is semantically identical to `value() →\nmake_view()`.\n- **Slow path** (array has non-inline strings): adds\n`self.views.reserve(rows.len())` before the existing loop to avoid\nrepeated reallocation.\n\n## Are these changes tested?\n\nCovered by the existing 6 unit tests in `bytes_view::tests`, all passing\nunchanged. `test_byte_view_vectorized_operation_special_case` exercises\nthe fast path directly (11-byte strings, no data buffers).\n\n## Are there any user-facing changes?\n\nNo. Internal performance improvement only.\n\n## Benchmark\n\n`inline_null_0.0_size_1000/vectorized_append` (8-byte strings, no nulls,\n1 000 rows):\n\n| | time |\n|---|---|\n| Before | 3.37 µs |\n| After | 495 ns |\n| Change | **−85.3% (6.8× faster)** |"
    },
    {
      "commit": "3f52debc532331d3a9b07abaf31868c53d77740d",
      "tree": "e300269b3596b0a0de819716c6a8c4617be62d46",
      "parents": [
        "666f86210e0e03f1207cf94a8718d5b0fdb2270d"
      ],
      "author": {
        "name": "Raz Luvaton",
        "email": "16746759+rluvaton@users.noreply.github.com",
        "time": "Wed Jun 10 17:51:27 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 14:51:27 2026 +0000"
      },
      "message": "fix: add backtrace for `assert_*_or_internal_err` helpers (#18910)\n\n## Which issue does this PR close?\n\nN/A\n\n## Rationale for this change\n\nNo backtrace is added when using the assert macros, so fixing that\n\n## What changes are included in this PR?\n\nused `internal_datafusion_err` macro in the `assert_*` helpers\n\n## Are these changes tested?\n\nyes\n\n## Are there any user-facing changes?\nnow have backtrace when feature enabled"
    },
    {
      "commit": "666f86210e0e03f1207cf94a8718d5b0fdb2270d",
      "tree": "75926d5d58f30fedf9f985de1da0a561e08f9451",
      "parents": [
        "a851dfd9d70d76848bd1e1c26fccba73ad092f39"
      ],
      "author": {
        "name": "Brent Gardner",
        "email": "bgardner@squarelabs.net",
        "time": "Wed Jun 10 06:23:49 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 12:23:49 2026 +0000"
      },
      "message": "Revert custom allocator auditing of MemoryPool tracking in SLTs (#22860)\n\n## Which issue does this PR close?\n\nNo issue, just responding to discussion in #22723\n\n## Rationale for this change\n\nAgreed this was an overly strict approach.\n\n## What changes are included in this PR?\n\nReverting previous work\n\n## Are these changes tested?\n\nBy definition\n\n## Are there any user-facing changes?\n\nContributors won\u0027t be held to higher standards in SLTs than in the\ncontributor guide."
    },
    {
      "commit": "a851dfd9d70d76848bd1e1c26fccba73ad092f39",
      "tree": "2ef2431ff13538c16aa6ae96950bc1790d384cf9",
      "parents": [
        "fb3beba58cc95cc223cc50567134611efb4bf878"
      ],
      "author": {
        "name": "Kumar Ujjawal",
        "email": "ujjawalpathak6@gmail.com",
        "time": "Wed Jun 10 15:22:58 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 09:52:58 2026 +0000"
      },
      "message": "refactor: centralize SQL dialect metadata (#22840)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Closes #22818.\n\n## Rationale for this change\n\nDataFusion kept SQL dialect metadata in several separate places, which\nmade it easy for enum variants, canonical names, aliases, display names,\ndocs, and error messages to drift.\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the issue then this section is not needed.\nExplaining clearly why changes are proposed helps reviewers understand\nyour changes and offer better suggestions for fixes.\n--\u003e\n\n## What changes are included in this PR?\n\n  - Centralize dialect metadata in one macro-driven source.\n- Generate the `Dialect` enum, metadata table, canonical names, aliases,\ndisplay names, and available-dialect string from that source.\n  - Replace `Dialect::AVAILABLE` with `Dialect::available()`.\n  - Add `Dialect::metadata()` for iterating supported dialects.\n- Update dialect error messages and generated config docs to use the\ncentralized metadata.\n  - Add an upgrade note for the removed public constant.\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\n## Are these changes tested?\n\nYes\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\n\n## Are there any user-facing changes?\n\nYes. `Dialect::AVAILABLE` is removed and replaced by\n`Dialect::available()`.\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e"
    },
    {
      "commit": "fb3beba58cc95cc223cc50567134611efb4bf878",
      "tree": "b5851a57dcea6386af2d2b1baf90eb98afd37736",
      "parents": [
        "d23321d0d9626264f9e6b3192a51e9649c590872"
      ],
      "author": {
        "name": "Qi Zhu",
        "email": "zhuqilucas@gmail.com",
        "time": "Wed Jun 10 14:47:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 06:47:08 2026 +0000"
      },
      "message": "refactor(physical-plan): extract make_group_column factory + eager init at try_new + tighten Time variants (#22751)\n\n# Which issue does this PR close?\n\nPR 1 of 5 from the split agreed on\nhttps://github.com/apache/datafusion/pull/22706#issuecomment-4602892722.\nRelated to #22682 / #22715 (full `GroupValuesColumn` type coverage).\nLays the dispatcher foundation; closes nothing on its own.\n\n# Rationale for this change\n\nPreparation for the nested-type `GroupColumn` work. No new builders\nhere. The goal is to refactor the per-field builder dispatch in\n`GroupValuesColumn` so subsequent PRs that add `FixedSizeList` /\n`Struct` / `List` / `LargeList` support can plug into one well-defined\nfactory instead of growing the inline match in\n`GroupValuesColumn::intern`. Also includes two adjacent correctness\nfixes around the `Time32` / `Time64` variants that came up in the\nupstream thread.\n\n# What changes are included in this PR\n\n1. **Factory extraction.** The inline match that maps each schema field\nto a `Box\u003cdyn GroupColumn\u003e` builder moves out of\n`GroupValuesColumn::intern` into a free function\n`make_group_column(field: \u0026Field) -\u003e Result\u003cBox\u003cdyn GroupColumn\u003e\u003e`.\nSubsequent nested-type specializations can recursively call this factory\nfor child field construction without enumerating every combination\ninline.\n\n2. **Eager construction at `try_new`.** Per @2010YOUY01\u0027s review, the\nper-field builder vector is now built in the constructor via a private\n`build_group_columns` helper. `emit(EmitTo::All)` uses `mem::replace` to\nswap in a fresh vector after draining the old one; `clear_shrink`\nrebuilds the same way. The post-condition `self.group_values.len() \u003d\u003d\nself.schema.fields().len()` holds across the aggregator\u0027s lifetime, so\n`intern` no longer carries a lazy-init branch. Unsupported schemas now\nfail fast at `try_new` rather than at the first `intern` call. In\nproduction this changes nothing because `new_group_values` in\n`aggregates/group_values/mod.rs` only calls `GroupValuesColumn::try_new`\nafter `multi_group_by::supported_schema` returns true.\n\n3. **`Time32` / `Time64` `supported_type` alignment.** Previously\n`supported_type` matched `Time32(_)` (admitting the invalid Microsecond\n/ Nanosecond combinations) and did not match `Time64(_)` at all, while\nthe dispatcher accepted `Time32(Second / Millisecond)` and\n`Time64(Microsecond / Nanosecond)`. Tighten `supported_type` to the\nexact set the dispatcher constructs. The dispatcher\u0027s wildcard arms for\ninvalid `Time` variants now return `not_impl_err` instead of silently\nproducing an empty builder vector.\n\n4. **`supported_type` ↔ `make_group_column` consistency fuzz.** New unit\ntest `supported_type_and_make_group_column_stay_in_sync` iterates a\nrepresentative set of 20 supported and 6 unsupported `DataType` values\nand asserts the biconditional. Pins the alignment so future contributors\nwho add a type to one side without the other trip a unit test\nimmediately.\n\n# What this PR is NOT doing\n\n- No new `GroupColumn` builders. `FixedSizeList`, `Struct`, `List`,\n`LargeList` come in subsequent PRs of the #22682 sequence.\n- No new types in `supported_type`\u0027s allow-list (the `Time` tightening\nremoves invalid combinations rather than adding new ones).\n- No external dependencies. Per @alamb\u0027s review the earlier `dhat-heap`\nfeature and the `dhat` dependency were dropped; memory savings in\nfollow-up PRs will be measured via `GroupColumn::size()` head-to-head\nagainst `GroupValuesRows`, matching the existing\n`column_path_uses_less_memory_than_rows_for_*` tests pattern in #22706.\n\n# Are these changes tested\n\n- `cargo test -p datafusion-physical-plan --lib\naggregates::group_values`: 30 tests pass (27 existing + 3 new: the\nconsistency fuzz, the mixed-schema rejection, and the `try_new`-time\nNotImpl propagation).\n- `cargo test -p datafusion-physical-plan --lib aggregates`: 105 tests\npass (no regression in the broader aggregate suite).\n- `cargo clippy -p datafusion-physical-plan --lib --tests -- -D\nwarnings`: clean.\n- `cargo fmt --check`: clean.\n\n# Are there any user-facing changes\n\nNo semantic change for any schema that already used `GroupValuesColumn`\non main. The factory is the same dispatch logic pulled into a function;\nthe `Time` changes only affect schemas that are semantically invalid\nArrow types anyway; the eager construction surfaces `not_impl_err` from\na different call site for those defensive paths."
    },
    {
      "commit": "d23321d0d9626264f9e6b3192a51e9649c590872",
      "tree": "06d741d036fb4072764612bc9ba5d13c496fa1cc",
      "parents": [
        "d77a02d662b27852cc247153d9edcad5a92905d4"
      ],
      "author": {
        "name": "Gene Bordegaray",
        "email": "gene.bordegaray@datadoghq.com",
        "time": "Wed Jun 10 01:35:19 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 05:35:19 2026 +0000"
      },
      "message": "Add logical range partitioning representation (#22777)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Closes #22778.\n- Related: #21992, #22395.\n- Needed by #22657.\n\n## Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the issue then this section is not needed.\nExplaining clearly why changes are proposed helps reviewers understand\nyour changes and offer better suggestions for fixes.\n--\u003e\n\nDeclared scan output partitioning should use logical partitioning\nmetadata, not physical partitioning types. This adds logical range\npartitioning so range-partitioned sources can declare their layout at\nthe logical layer.\n\n## What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\n- Add logical `Partitioning::Range` and `RangePartitioning`.\n- Move `SplitPoint` and shared split-point validation to\n`datafusion-common`.\n- Wire logical range partitioning through expression traversal,\nrewrites, and display.\n- Keep planning, logical proto, and Substrait support explicitly\nunsupported for now.\n\n## Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\n\nYes. Unit tests added\n\n## Are there any user-facing changes?\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\nYes. This adds public logical range partitioning API. No breaking API\nchanges.\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e"
    },
    {
      "commit": "d77a02d662b27852cc247153d9edcad5a92905d4",
      "tree": "2231dfcfec6ed67c8b624f6f394b6d09d3843f69",
      "parents": [
        "40a64546c8ed25a00c8100d2fb4f44890e22fc25"
      ],
      "author": {
        "name": "WeblWabl",
        "email": "devandbenz@gmail.com",
        "time": "Tue Jun 09 21:52:27 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 02:52:27 2026 +0000"
      },
      "message": "feat: Add From\u003cOption\u003cT\u003e\u003e trait for Precision enum (#22792)\n\nThis commit adds a `From\u003cOption\u003cT\u003e\u003e` trait for `Precision`. Porting from\n`influxdb` to upstream:\n\nhttps://github.com/influxdata/influxdb/blob/70335b158808881c2f5a9ef27cd4bcbe4944686a/core/datafusion_util/src/lib.rs#L153-L163"
    },
    {
      "commit": "40a64546c8ed25a00c8100d2fb4f44890e22fc25",
      "tree": "d21faa47fa6d010196c236aabce8ef5b7ed047fd",
      "parents": [
        "8f6876d6ba247b81a8997acfb0cfe665bb970675"
      ],
      "author": {
        "name": "Yongting You",
        "email": "2010youy01@gmail.com",
        "time": "Wed Jun 10 09:09:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 01:09:41 2026 +0000"
      },
      "message": "refactor(hash-aggr): Forward port the soft limit optimization to the new hash aggregation impl (#22824)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- part of https://github.com/apache/datafusion/issues/22710\n\n## Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the issue then this section is not needed.\nExplaining clearly why changes are proposed helps reviewers understand\nyour changes and offer better suggestions for fixes.\n--\u003e\nPart of rewriting hash aggregation into several dedicated streams.\n\nIn the first step https://github.com/apache/datafusion/pull/22729,\n`PartialHashAggregateStream` and `FinalHashAggregateStream` has been\nsplit from the old `GroupsHashAggregateStream`, but both stream only\nhave basic implementation, no optimizations and extra features like\nspilling.\n\\* it\u0027s incremental migration, so old impl won\u0027t change, we plan to\ndelete it once migration is finished\n\nThis PR forward ports the below optimization to the new implementation:\n- https://github.com/apache/datafusion/pull/8038\n\nThe optimizer part don\u0027t have to move, ported changes are only inside\naggregate operator.\n\n## What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\nExtends `PartialHashAggregateStream` and `FinalHashAggregateStream` to\napply the optimization. See code comment at\n`datafusion/physical-plan/src/aggregates/hash_aggregate.rs` for the\nbackground.\n\n## Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\nYes, the original test in https://github.com/apache/datafusion/pull/8038\nis only at `ExecutionPlan` level, they\u0027re still passing after the\nchange.\nThis PR added new test coverage: check `explain analyze` to ensure the\nimplementation actually respects this soft limit at runtime.\n\n## Are there any user-facing changes?\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e\n\n---------\n\nCo-authored-by: Martin Grigorov \u003cmartin-g@users.noreply.github.com\u003e"
    },
    {
      "commit": "8f6876d6ba247b81a8997acfb0cfe665bb970675",
      "tree": "a40eb528c2cbd66f116bb04ece6fa0332811b547",
      "parents": [
        "d0ee6b5cba5bcb54b2400423099b8dee0305d0fa"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jun 10 11:02:25 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 01:02:25 2026 +0000"
      },
      "message": "chore(deps-dev): bump shell-quote from 1.8.3 to 1.8.4 in /datafusion/wasmtest/datafusion-wasm-app (#22856)\n\nBumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.3 to\n1.8.4.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md\"\u003eshell-quote\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/ljharb/shell-quote/compare/v1.8.3...v1.8.4\"\u003ev1.8.4\u003c/a\u003e\n- 2026-05-22\u003c/h2\u003e\n\u003ch3\u003eCommits\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[Fix] \u003ccode\u003equote\u003c/code\u003e: validate object-token shapes \u003ca\nhref\u003d\"https://github.com/ljharb/shell-quote/commit/4378a6e613db5948168684864e49b42b83134d2d\"\u003e\u003ccode\u003e4378a6e\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Dev Deps] update \u003ccode\u003e@ljharb/eslint-config\u003c/code\u003e,\n\u003ccode\u003eauto-changelog\u003c/code\u003e, \u003ccode\u003eeslint\u003c/code\u003e, \u003ccode\u003enpmignore\u003c/code\u003e\n\u003ca\nhref\u003d\"https://github.com/ljharb/shell-quote/commit/22ebec04349065a45ad8afc8cc8d53c4624634a6\"\u003e\u003ccode\u003e22ebec0\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Tests] increase coverage \u003ca\nhref\u003d\"https://github.com/ljharb/shell-quote/commit/9f3caa31900cc6ee64858b31134144c648ce206d\"\u003e\u003ccode\u003e9f3caa3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[readme] replace runkit CI badge with shields.io check-runs badge \u003ca\nhref\u003d\"https://github.com/ljharb/shell-quote/commit/3344a047dd1e95f71c4ca27522cbfd05c56277e0\"\u003e\u003ccode\u003e3344a04\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Dev Deps] update \u003ccode\u003e@ljharb/eslint-config\u003c/code\u003e \u003ca\nhref\u003d\"https://github.com/ljharb/shell-quote/commit/699c5113d135f4d4591574bebf173334ffa453d4\"\u003e\u003ccode\u003e699c511\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\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\nhref\u003d\"https://github.com/ljharb/shell-quote/commit/ff166e2b63eb5f932bd131a8886a99e9afdf45ae\"\u003e\u003ccode\u003eff166e2\u003c/code\u003e\u003c/a\u003e\nv1.8.4\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/ljharb/shell-quote/commit/4378a6e613db5948168684864e49b42b83134d2d\"\u003e\u003ccode\u003e4378a6e\u003c/code\u003e\u003c/a\u003e\n[Fix] \u003ccode\u003equote\u003c/code\u003e: validate object-token shapes\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/ljharb/shell-quote/commit/22ebec04349065a45ad8afc8cc8d53c4624634a6\"\u003e\u003ccode\u003e22ebec0\u003c/code\u003e\u003c/a\u003e\n[Dev Deps] update \u003ccode\u003e@ljharb/eslint-config\u003c/code\u003e,\n\u003ccode\u003eauto-changelog\u003c/code\u003e, \u003ccode\u003eeslint\u003c/code\u003e, `npmig...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/ljharb/shell-quote/commit/9f3caa31900cc6ee64858b31134144c648ce206d\"\u003e\u003ccode\u003e9f3caa3\u003c/code\u003e\u003c/a\u003e\n[Tests] increase coverage\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/ljharb/shell-quote/commit/3344a047dd1e95f71c4ca27522cbfd05c56277e0\"\u003e\u003ccode\u003e3344a04\u003c/code\u003e\u003c/a\u003e\n[readme] replace runkit CI badge with shields.io check-runs badge\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/ljharb/shell-quote/commit/699c5113d135f4d4591574bebf173334ffa453d4\"\u003e\u003ccode\u003e699c511\u003c/code\u003e\u003c/a\u003e\n[Dev Deps] update \u003ccode\u003e@ljharb/eslint-config\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/ljharb/shell-quote/compare/v1.8.3...v1.8.4\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dshell-quote\u0026package-manager\u003dnpm_and_yarn\u0026previous-version\u003d1.8.3\u0026new-version\u003d1.8.4)](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\nalter it yourself. You can also trigger a rebase manually by commenting\n`@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\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/apache/datafusion/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d0ee6b5cba5bcb54b2400423099b8dee0305d0fa",
      "tree": "7e23f00a2ab1524c584521eafda5c9c2fac023d8",
      "parents": [
        "bf71ea67734087408afc3a5a26df5547f53cf777"
      ],
      "author": {
        "name": "Oleks V",
        "email": "comphead@users.noreply.github.com",
        "time": "Tue Jun 09 17:03:32 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 00:03:32 2026 +0000"
      },
      "message": "chore: Define backport criteria (#22766)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Closes #22765 .\n\n## Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the issue then this section is not needed.\nExplaining clearly why changes are proposed helps reviewers understand\nyour changes and offer better suggestions for fixes.\n--\u003e\n\n## What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\n## Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\n\n## Are there any user-facing changes?\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "bf71ea67734087408afc3a5a26df5547f53cf777",
      "tree": "733f92094a1f179380d03fc849d251d66c87a430",
      "parents": [
        "7dd1c6a2c68072eb7cacd3c56adf53a21a448863"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Tue Jun 09 19:47:33 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 23:47:33 2026 +0000"
      },
      "message": "docs: link release tracking issue to release management page (#22822)\n\n## Which issue does this PR close?\n\n- Part of  https://github.com/apache/datafusion/issues/22765\n- Related to https://github.com/apache/datafusion/issues/19783.\n\n\n## Rationale for this change\n\nWhile reviewing https://github.com/apache/datafusion/pull/22766 from\n@comphead I noticed that the release management guide did not point\ncontributors to the ongoing release tracking issue, where planned\nreleases are listed.\n\n## What changes are included in this PR?\n\nThis PR adds a link to the DataFusion Releases tracking issue from the\nrelease management guide and clarifies that each release is coordinated\nin a dedicated GitHub issue.\n\n## Are these changes tested?\n\nNot run. This is a documentation-only change.\n\n## Are there any user-facing changes?\n\nNo API or behavior changes. This updates contributor documentation only."
    },
    {
      "commit": "7dd1c6a2c68072eb7cacd3c56adf53a21a448863",
      "tree": "4ad5b2167c6b470be70723590a7d573bb01feaff",
      "parents": [
        "c0dc5714f3b34a3ff7e6cb0876d9954ade07f508"
      ],
      "author": {
        "name": "Oleks V",
        "email": "comphead@users.noreply.github.com",
        "time": "Tue Jun 09 16:30:43 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 23:30:43 2026 +0000"
      },
      "message": "feat: Support IEEE 754 negative zero semantics (#22835)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Closes #22826 .\n- Closes #22490\n- Closes #11108 \n\n## Rationale for this change\n  \nSQL (per PG and IEEE 754) treats `+0.0` and `-0.0` as equal in `\u003d`, `IS\nDISTINCT FROM`, DISTINCT, GROUP BY, UNION/INTERSECT/EXCEPT, equi-joins,\nand `array_*` set ops. DataFusion treated them as\n  distinct because:\n\n- Arrow\u0027s `cmp::eq`/`gt`/`lt` use IEEE 754 totalOrder for floats —\n`arrow-ord-58.3.0/src/cmp.rs:71-75` explicitly says *\"please normalize\nzeros before calling this kernel\"*.\n- Arrow\u0027s `RowConverter` row-encodes floats with totalOrder; ±0 produce\ndifferent bytes.\n- DataFusion\u0027s primitive float hashing used raw `to_bits()` /\n`to_ne_bytes()`, so ±0 hashed to different buckets.\n\n  ## What changes are included in this PR?\n\n  **Helper** in `datafusion/common/src/utils/mod.rs`:\n- `normalize_float_zero(\u0026ArrayRef) -\u003e ArrayRef` — rewrites `-0.0 → +0.0`\nfor Float16/32/64 via `PrimitiveArray::unary`; `Arc::clone` for\nnon-float. NaN payloads preserved (`bits \u003c\u003c 1 \u003d\u003d 0` matches only\n  ±0).\n- `normalize_float_zero_scalar(ScalarValue) -\u003e ScalarValue` — symmetric\nfor scalars.\n\n**Applied at six boundary sites** where DataFusion hands float data to\nArrow:\n  | Site | Fixes |\n  |---|---|\n| `physical-expr-common/src/datum.rs::apply_cmp` | BinaryExpr `\u003d`, `\u003c`,\n`\u003e`, `IS DISTINCT FROM` |\n| `physical-plan/src/joins/utils.rs::eq_dyn_null` | HashJoin row\nequality → INNER JOIN, INTERSECT, EXCEPT |\n| `physical-plan/src/aggregates/group_values/row.rs::intern` |\nMulti-column row-encoded GROUP BY |\n| `functions-nested/src/set_ops.rs::general_array_distinct` |\n`array_distinct` |\n| `functions-nested/src/set_ops.rs::generic_set_lists` | `array_union`,\n`array_intersect` |\n  | `functions-nested/src/except.rs::general_except` | `array_except` |\n\n  **Float hash macros** normalize for consistency:\n- `datafusion/common/src/hash_utils.rs::hash_float_value!` —\n`create_hashes`, hash joins, shuffle.\n-\n`datafusion/physical-plan/src/aggregates/group_values/single_group_by/primitive.rs::hash_float!`\n— single-column primitive GROUP BY fast path.\n\n**Single-column primitive GROUP BY / DISTINCT**\n(`GroupValuesPrimitive::intern`,\n`PrimitiveGroupValueBuilder::{append_val,vectorized_append,equal_to,vectorized_equal_to_*}`)\ncanonicalize the input via\na new default-identity `canonicalize` method on the local `HashValue`\ntrait (float override only). Trait visibility lifted to `pub` so the\nmulti-column file can use it."
    },
    {
      "commit": "c0dc5714f3b34a3ff7e6cb0876d9954ade07f508",
      "tree": "cb69f4d3e0dab9b0e8b8e8c73be74ec6b43aa8b7",
      "parents": [
        "8995ce6d05344a970272550ce989a7c9ca121f07"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Wed Jun 10 03:36:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 19:36:15 2026 +0000"
      },
      "message": "fix: regex simplification of anchored patterns produces wrong results (#22727)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Closes #22726.\n\n## Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the issue then this section is not needed.\nExplaining clearly why changes are proposed helps reviewers understand\nyour changes and offer better suggestions for fixes.\n--\u003e\n\nThe regex simplification rule rewrites anchored regex matches\n(`^literal$`, `^(a|b)$`) into cheaper `\u003d` / `IN` / `LIKE` expressions.\nTwo bugs in that path:\n\n1. The literal was always built as `Utf8` via `lit(...)`, so on a\n`Utf8View` / `LargeUtf8` column the rewritten comparison failed at\nexecution with `Invalid comparison operation: Utf8View \u003d\u003d Utf8`.\n2. A `~*` (case-insensitive) anchored literal was rewritten to a\ncase-sensitive `\u003d`, silently dropping rows that differ only in case.\n\n## What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\n- Build the extracted literal with `string_scalar.to_expr(...)` so its\ntype follows the column type (`Utf8` / `LargeUtf8` / `Utf8View`),\nconsistent with the existing `LIKE` branches.\n- Rewrite `~*` anchored literals to `ILIKE` instead of `\u003d`. The existing\n`is_safe_for_like` guard ensures the literal has no `%` / `_`, so this\nis an exact case-insensitive match. (Anchored alternations under `~*`\nstill fall back to regex evaluation.)\n\n## Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\n\nYes. `predicates.slt` now covers anchored `~` / `~*`, single literals\nand alternations, over both `Utf8` and `Utf8View` columns. Existing\n`regex.rs` unit tests still pass.\n\n## Are there any user-facing changes?\n\nYes, bug fixes only\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e"
    },
    {
      "commit": "8995ce6d05344a970272550ce989a7c9ca121f07",
      "tree": "0a60d8a244554864205b81b9d386ba5c7dfae34f",
      "parents": [
        "a0e05f65a2293aa2f253e0cae67d6cea51a528bd"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Tue Jun 09 13:25:35 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 17:25:35 2026 +0000"
      },
      "message": "[main] Update version and changelog to 54.0.0 (#22855)\n\n## Which issue does this PR close?\n\n- part of https://github.com/apache/datafusion/issues/21080\n\n## Rationale for this change\n\nNow that we have released version 54 we should update the version number\nof main to match\n\n## What changes are included in this PR?\n\nForward port changes from @mbutrovich :\n- c8dddb8a03f098b92e0295118d12390381d23fa8\n- 45d943dfb8699dc9cb9ef2320e955b73e3e6c03b\n- 7a14d122f27831f6762acd42cb60f63d17159b7b (needed resolving)\n\n\n## Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\n\n## Are there any user-facing changes?\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e\n\n---------\n\nCo-authored-by: Matt Butrovich \u003cmbutrovich@users.noreply.github.com\u003e"
    },
    {
      "commit": "a0e05f65a2293aa2f253e0cae67d6cea51a528bd",
      "tree": "007757cece9d2366ac3da6831e9b71798d16403b",
      "parents": [
        "ea5d448a68c060367d75166d3915833034a64664"
      ],
      "author": {
        "name": "Bruce Ritchie",
        "email": "bruce.ritchie@gmail.com",
        "time": "Tue Jun 09 08:33:50 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 12:33:50 2026 +0000"
      },
      "message": "Add smj SQL benchmark (#22803)\n\n## Which issue does this PR close?\n\nPart of #21706\n\n## Rationale for this change\n\nContinue work on sql benchmark migration.\n\n## What changes are included in this PR?\n\nsmj sql benchmark\n\n## Are these changes tested?\n\nYes\n\n`BENCH_NAME\u003dsmj cargo bench --bench sql`\n\n## Are there any user-facing changes?\n\nNo"
    },
    {
      "commit": "ea5d448a68c060367d75166d3915833034a64664",
      "tree": "292bf6d1e990f2e0a071511a52e131d30d4422b6",
      "parents": [
        "7333b96e91b44805cf4177faf5431a2dc19db656"
      ],
      "author": {
        "name": "Bruce Ritchie",
        "email": "bruce.ritchie@gmail.com",
        "time": "Tue Jun 09 08:33:44 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 12:33:44 2026 +0000"
      },
      "message": "Add clickbench extended SQL benchmark (#22804)\n\n## Which issue does this PR close?\n\nPart of #21706\n\n## Rationale for this change\n\nContinue work on sql benchmark migration.\n\n## What changes are included in this PR?\n\nclickbench_extended sql benchmark\n\n## Are these changes tested?\n\nYes\n\n`BENCH_NAME\u003dclickbench_extended cargo bench --bench sql`\n`BENCH_NAME\u003dclickbench_extended CLICKBENCH_TYPE\u003dpartitioned cargo bench\n--bench sql`\n\n## Are there any user-facing changes?\n\nNo"
    },
    {
      "commit": "7333b96e91b44805cf4177faf5431a2dc19db656",
      "tree": "8ac401e134c633ee5b91692e673f11f72e07eb37",
      "parents": [
        "8ae94dd740a0d5842fd43083cc0195b3dbe0e44e"
      ],
      "author": {
        "name": "Bruce Ritchie",
        "email": "bruce.ritchie@gmail.com",
        "time": "Tue Jun 09 08:33:40 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 12:33:40 2026 +0000"
      },
      "message": "Add nlj SQL benchmark (#22805)\n\n## Which issue does this PR close?\n\nPart of #21706\n\n## Rationale for this change\n\nContinue work on sql benchmark migration.\n\n## What changes are included in this PR?\n\nnlj sql benchmark\n\n## Are these changes tested?\n\nYes\n\n`BENCH_NAME\u003dnlj cargo bench --bench sql`\n\n## Are there any user-facing changes?\n\nNo"
    },
    {
      "commit": "8ae94dd740a0d5842fd43083cc0195b3dbe0e44e",
      "tree": "54a5285eb0258a0fde37ae9a27f1a9d4a5e2c537",
      "parents": [
        "0163ac0e2ac79284de6bd494ed79e5ec0494ada8"
      ],
      "author": {
        "name": "Bruce Ritchie",
        "email": "bruce.ritchie@veeva.com",
        "time": "Tue Jun 09 08:29:27 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 12:29:27 2026 +0000"
      },
      "message": "add clickbench sorted SQL benchmark (#22807)\n\n## Which issue does this PR close?\n\nPart of #21706\n\n## Rationale for this change\n\nContinue work on sql benchmark migration.\n\n## What changes are included in this PR?\n\nclickbench_sorted sql benchmark\n\n## Are these changes tested?\n\nYes\n\n`BENCH_NAME\u003dclickbench_sorted cargo bench --bench sql`\n\n## Are there any user-facing changes?\n\nNo\n\n---------\n\nCo-authored-by: Martin Grigorov \u003cmartin-g@users.noreply.github.com\u003e"
    },
    {
      "commit": "0163ac0e2ac79284de6bd494ed79e5ec0494ada8",
      "tree": "8808974e7e0d7600d8445a329773ab0349e385e2",
      "parents": [
        "8b6917cf71e4337fef5ce84e3247dedb7e43f79b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 09 12:27:59 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 12:27:59 2026 +0000"
      },
      "message": "chore(deps): bump the all-other-cargo-deps group with 3 updates (#22844)\n\nBumps the all-other-cargo-deps group with 3 updates:\n[chrono](https://github.com/chronotope/chrono),\n[log](https://github.com/rust-lang/log) and\n[stabby](https://github.com/ZettaScaleLabs/stabby).\n\nUpdates `chrono` from 0.4.44 to 0.4.45\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/chronotope/chrono/releases\"\u003echrono\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.4.45\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(tz): reject TZ offset hour of 24 to avoid FixedOffset overflow\nby \u003ca href\u003d\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/chronotope/chrono/pull/1787\"\u003echronotope/chrono#1787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etz_data: fix tzdata locations on Android by \u003ca\nhref\u003d\"https://github.com/caruschalalamove\"\u003e\u003ccode\u003e@​caruschalalamove\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/chronotope/chrono/pull/1789\"\u003echronotope/chrono#1789\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\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\nhref\u003d\"https://github.com/chronotope/chrono/commit/170338250e836976a211e64728ec956e45e78a39\"\u003e\u003ccode\u003e1703382\u003c/code\u003e\u003c/a\u003e\nPrepare 0.4.45 release\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/chronotope/chrono/commit/881f9ab2f7068c98173cce86ce1a3642848ce98a\"\u003e\u003ccode\u003e881f9ab\u003c/code\u003e\u003c/a\u003e\ntz_data: fix tzdata locations on Android\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/chronotope/chrono/commit/f14ead46c0feeed8d5b2471c7a55069fbc822d01\"\u003e\u003ccode\u003ef14ead4\u003c/code\u003e\u003c/a\u003e\nfix(tz): reject TZ offset hour of 24 to avoid FixedOffset overflow\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/chronotope/chrono/commit/c6063e6f5a03a48c6feeac3eb5b51ab4cb902759\"\u003e\u003ccode\u003ec6063e6\u003c/code\u003e\u003c/a\u003e\nUpdate similar-asserts requirement from 1.6.1 to 2.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/chronotope/chrono/commit/120686c82c5da90377e815edb82c9a80b6b4f2be\"\u003e\u003ccode\u003e120686c\u003c/code\u003e\u003c/a\u003e\nBump codecov/codecov-action from 5 to 6\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/chronotope/chrono/compare/v0.4.44...v0.4.45\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `log` from 0.4.31 to 0.4.32\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/rust-lang/log/releases\"\u003elog\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.4.32\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eValue\u003c/code\u003e -\u0026gt; string conversions with\n\u003ccode\u003ekv\u003c/code\u003e + \u003ccode\u003estd\u003c/code\u003e features instead of\n\u003ccode\u003ekv_std\u003c/code\u003e by \u003ca\nhref\u003d\"https://github.com/tisonkun\"\u003e\u003ccode\u003e@​tisonkun\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/log/pull/729\"\u003erust-lang/log#729\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 0.4.32 release by \u003ca\nhref\u003d\"https://github.com/KodrAus\"\u003e\u003ccode\u003e@​KodrAus\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/log/pull/730\"\u003erust-lang/log#730\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/rust-lang/log/compare/0.4.31...0.4.32\"\u003ehttps://github.com/rust-lang/log/compare/0.4.31...0.4.32\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/rust-lang/log/blob/master/CHANGELOG.md\"\u003elog\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.4.32] - 2026-06-04\u003c/h2\u003e\n\u003ch3\u003eWhat\u0027s Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eValue\u003c/code\u003e -\u0026gt; string conversions with\n\u003ccode\u003ekv\u003c/code\u003e + \u003ccode\u003estd\u003c/code\u003e features instead of\n\u003ccode\u003ekv_std\u003c/code\u003e by \u003ca\nhref\u003d\"https://github.com/tisonkun\"\u003e\u003ccode\u003e@​tisonkun\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/log/pull/729\"\u003erust-lang/log#729\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/rust-lang/log/compare/0.4.31...0.4.32\"\u003ehttps://github.com/rust-lang/log/compare/0.4.31...0.4.32\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\nhref\u003d\"https://github.com/rust-lang/log/commit/a5b5b2113e2767801250af184d6c3971e689ae3b\"\u003e\u003ccode\u003ea5b5b21\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/log/issues/730\"\u003e#730\u003c/a\u003e\nfrom rust-lang/cargo/0.4.32\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/log/commit/c8d3b125c6216b3667e05544591f4fb34f53ff78\"\u003e\u003ccode\u003ec8d3b12\u003c/code\u003e\u003c/a\u003e\nprepare for 0.4.32 release\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/log/commit/ce6cd9fef14084207f2b6758999af062f89f9d87\"\u003e\u003ccode\u003ece6cd9f\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/log/issues/729\"\u003e#729\u003c/a\u003e\nfrom tisonkun/kv-std-support\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/log/commit/20b3b050469d6aab6c0f2e77acaab2313d5fc9a2\"\u003e\u003ccode\u003e20b3b05\u003c/code\u003e\u003c/a\u003e\ndrop cfg-feature\u003dkv as it is already met\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/log/commit/7bc120062895aadd440ab015e62275841465a1a6\"\u003e\u003ccode\u003e7bc1200\u003c/code\u003e\u003c/a\u003e\nkv::std_support may not need value-bag\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/rust-lang/log/compare/0.4.31...0.4.32\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `stabby` from 72.1.1 to 72.1.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/ZettaScaleLabs/stabby/blob/main/CHANGELOG.md\"\u003estabby\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e72.1.2 (api\u003d3.0.1, abi\u003d2.0.0)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eMerged \u003ca\nhref\u003d\"https://redirect.github.com/ZettaScaleLabs/stabby/pull/124\"\u003e#124\u003c/a\u003e,\n(thanks \u003ca\nhref\u003d\"https://github.com/matejcik\"\u003e\u003ccode\u003e@​matejcik\u003c/code\u003e\u003c/a\u003e for\nraising the issue and providing the fix, thanks \u003ca\nhref\u003d\"https://github.com/juliajohannessen\"\u003e\u003ccode\u003e@​juliajohannessen\u003c/code\u003e\u003c/a\u003e\nfor raising further lifetime issues through that PR\u0027s comments)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca\nhref\u003d\"https://redirect.github.com/ZettaScaleLabs/stabby/issues/127\"\u003e#127\u003c/a\u003e\n(thanks \u003ca\nhref\u003d\"https://github.com/juliajohannessen\"\u003e\u003ccode\u003e@​juliajohannessen\u003c/code\u003e\u003c/a\u003e\nfor raising the issue)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e72.1.2-rc1 (api\u003d3.0.1, abi\u003d2.0.0)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca\nhref\u003d\"https://redirect.github.com/ZettaScaleLabs/stabby/issues/112\"\u003e#112\u003c/a\u003e\n(thanks \u003ca\nhref\u003d\"https://github.com/Dasaav-dsv\"\u003e\u003ccode\u003e@​Dasaav-dsv\u003c/code\u003e\u003c/a\u003e for\nboth raising the issue and providing the fix)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca\nhref\u003d\"https://redirect.github.com/ZettaScaleLabs/stabby/issues/103\"\u003e#103\u003c/a\u003e\n(thanks \u003ca\nhref\u003d\"https://github.com/numberZero\"\u003e\u003ccode\u003e@​numberZero\u003c/code\u003e\u003c/a\u003e for\nraising the issue)\u003c/li\u003e\n\u003cli\u003eAddress all lints for Rust and Clippy at \u003ccode\u003e1.92.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elibloading \u003d \u0026quot;0.9\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake CI run more feature-sets and toolchains\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://redirect.github.com/ZettaScaleLabs/stabby/pull/105\"\u003eFix\nowned string deserialization\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed Eclipse headers\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/ZettaScaleLabs/stabby/commits\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@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\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s major version (unless you unignore this specific\ndependency\u0027s major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s minor version (unless you unignore this specific\ndependency\u0027s minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR\nand stop Dependabot creating any more for the specific dependency\n(unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore\nconditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will\nremove the ignore condition of the specified dependency and ignore\nconditions\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "8b6917cf71e4337fef5ce84e3247dedb7e43f79b",
      "tree": "ef58f90b5aaf699a55887e0f6a8adf5e5a311a91",
      "parents": [
        "228a996f5c90541c36d4110db3df3fcb06439c0b"
      ],
      "author": {
        "name": "Bruce Ritchie",
        "email": "bruce.ritchie@gmail.com",
        "time": "Tue Jun 09 08:27:32 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 12:27:32 2026 +0000"
      },
      "message": "Add hj SQL benchmark (#22802)\n\n## Which issue does this PR close?\n\nPart of #21706\n\n## Rationale for this change\n\nContinue work on sql benchmark migration.\n\n## What changes are included in this PR?\n\nhj sql benchmark\n\n## Are these changes tested?\n\nYes\n\n`BENCH_NAME\u003dhj cargo bench --bench sql`\n\n## Are there any user-facing changes?\n\nNo"
    },
    {
      "commit": "228a996f5c90541c36d4110db3df3fcb06439c0b",
      "tree": "927ff21dc2651a61206edbb439feb97079cd1dcc",
      "parents": [
        "33eba619721f75525c8827fb09d46f15a3b67bd1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 09 12:27:29 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 12:27:29 2026 +0000"
      },
      "message": "chore(deps): bump taiki-e/install-action from 2.81.3 to 2.81.8 (#22841)\n\nBumps\n[taiki-e/install-action](https://github.com/taiki-e/install-action) from\n2.81.3 to 2.81.8.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/releases\"\u003etaiki-e/install-action\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.81.8\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.29.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eparse-dockerfile@latest\u003c/code\u003e to 0.1.7.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003emise@latest\u003c/code\u003e to 2026.6.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-shear@latest\u003c/code\u003e to 1.13.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.81.7\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ewasmtime@latest\u003c/code\u003e to 45.0.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.29.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003esyft@latest\u003c/code\u003e to 1.45.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003erclone@latest\u003c/code\u003e to 1.74.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-audit@latest\u003c/code\u003e to 0.22.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.81.6\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eprek@latest\u003c/code\u003e to 0.4.4.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-shear@latest\u003c/code\u003e to 1.13.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.81.5\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.29.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003euv@latest\u003c/code\u003e to 0.11.19.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etypos@latest\u003c/code\u003e to 1.47.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003emise@latest\u003c/code\u003e to 2026.6.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.81.4\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.28.4.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etypos@latest\u003c/code\u003e to 1.47.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003esyft@latest\u003c/code\u003e to 1.45.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-neat@latest\u003c/code\u003e to 0.4.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-mutants@latest\u003c/code\u003e to 27.1.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md\"\u003etaiki-e/install-action\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this\nfile.\u003c/p\u003e\n\u003cp\u003eThis project adheres to \u003ca href\u003d\"https://semver.org\"\u003eSemantic\nVersioning\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003e[Unreleased]\u003c/h2\u003e\n\u003ch2\u003e[2.81.8] - 2026-06-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.29.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eparse-dockerfile@latest\u003c/code\u003e to 0.1.7.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003emise@latest\u003c/code\u003e to 2026.6.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-shear@latest\u003c/code\u003e to 1.13.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.81.7] - 2026-06-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ewasmtime@latest\u003c/code\u003e to 45.0.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.29.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003esyft@latest\u003c/code\u003e to 1.45.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003erclone@latest\u003c/code\u003e to 1.74.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-audit@latest\u003c/code\u003e to 0.22.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.81.6] - 2026-06-05\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eprek@latest\u003c/code\u003e to 0.4.4.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-shear@latest\u003c/code\u003e to 1.13.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.81.5] - 2026-06-05\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.29.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003euv@latest\u003c/code\u003e to 0.11.19.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etypos@latest\u003c/code\u003e to 1.47.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003emise@latest\u003c/code\u003e to 2026.6.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/0631aa6515c7d545823c67cfae7ef4fc7f490154\"\u003e\u003ccode\u003e0631aa6\u003c/code\u003e\u003c/a\u003e\nRelease 2.81.8\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/fd382b34adcf901479b928617bf0f0612ca769b3\"\u003e\u003ccode\u003efd382b3\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.29.2\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/b1597b4e7dcbcedac8dd1054da307b671f17027d\"\u003e\u003ccode\u003eb1597b4\u003c/code\u003e\u003c/a\u003e\nUpdate tombi manifest\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/3869357b4e3cd3a5267685bf8ef038dbef829247\"\u003e\u003ccode\u003e3869357\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003eparse-dockerfile@latest\u003c/code\u003e to 0.1.7\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/734742c1440e1b5aa3d391559c975c507bb14842\"\u003e\u003ccode\u003e734742c\u003c/code\u003e\u003c/a\u003e\nUpdate parse-changelog manifest\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/6a4fb002de1a038994686e6d75688b72283a0b34\"\u003e\u003ccode\u003e6a4fb00\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003emise@latest\u003c/code\u003e to 2026.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/ee92d4569affa054448769293cd8fbe22df3fd6c\"\u003e\u003ccode\u003eee92d45\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003ecargo-shear@latest\u003c/code\u003e to 1.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/56545b37b57562edd73171cb6c62cc509db4c34e\"\u003e\u003ccode\u003e56545b3\u003c/code\u003e\u003c/a\u003e\nRelease 2.81.7\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/c8d55710f301270b50680d218c3c8b1c2ed35fa7\"\u003e\u003ccode\u003ec8d5571\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003ewasmtime@latest\u003c/code\u003e to 45.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/982454fe8df95d1ccbd65fec021e1608efa219eb\"\u003e\u003ccode\u003e982454f\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.29.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/compare/25435dc8dd3baed7417e0c96d3fe89013a5b2e09...0631aa6515c7d545823c67cfae7ef4fc7f490154\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dtaiki-e/install-action\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d2.81.3\u0026new-version\u003d2.81.8)](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\nalter it yourself. You can also trigger a rebase manually by commenting\n`@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\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "33eba619721f75525c8827fb09d46f15a3b67bd1",
      "tree": "3bdd028fddca91ceba58c87e8e89400b78c0dc81",
      "parents": [
        "a63fd489e62dd67a88a830f099e980c22f9e1e76"
      ],
      "author": {
        "name": "Bruce Ritchie",
        "email": "bruce.ritchie@gmail.com",
        "time": "Tue Jun 09 08:26:53 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 12:26:53 2026 +0000"
      },
      "message": "Add tpcds SQL benchmark (#22801)\n\n## Which issue does this PR close?\n\nPart of #21706\n\n## Rationale for this change\n\nContinue work on sql benchmark migration.\n\n## What changes are included in this PR?\n\ntpcds sql benchmark\n\n## Are these changes tested?\n\nYes\n\n`BENCH_NAME\u003dtpcds cargo bench --bench sql`\n\n## Are there any user-facing changes?\n\nNo"
    },
    {
      "commit": "a63fd489e62dd67a88a830f099e980c22f9e1e76",
      "tree": "dbd36989a563daea50d4e977feeed1b1ee248e34",
      "parents": [
        "986a712ef61f5029ea184c7ce7b93cc2b33fc6de"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 09 15:26:31 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 12:26:31 2026 +0000"
      },
      "message": "chore(deps): bump github/codeql-action from 4.36.1 to 4.36.2 (#22842)\n\nBumps [github/codeql-action](https://github.com/github/codeql-action)\nfrom 4.36.1 to 4.36.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases\"\u003egithub/codeql-action\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.36.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCache CodeQL CLI version information across Actions steps. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3943\"\u003e#3943\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReduce requests while waiting for analysis processing by using\nexponential backoff when polling SARIF processing status. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3937\"\u003e#3937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.6\"\u003e2.25.6\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3948\"\u003e#3948\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/github/codeql-action/blob/main/CHANGELOG.md\"\u003egithub/codeql-action\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eCodeQL Action Changelog\u003c/h1\u003e\n\u003cp\u003eSee the \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases\"\u003ereleases\npage\u003c/a\u003e for the relevant changes to the CodeQL CLI and language\npacks.\u003c/p\u003e\n\u003ch2\u003e[UNRELEASED]\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.36.2 - 04 Jun 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCache CodeQL CLI version information across Actions steps. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3943\"\u003e#3943\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReduce requests while waiting for analysis processing by using\nexponential backoff when polling SARIF processing status. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3937\"\u003e#3937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.6\"\u003e2.25.6\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3948\"\u003e#3948\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.36.1 - 02 Jun 2026\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.36.0 - 22 May 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eBreaking change\u003c/em\u003e: Bump the minimum required CodeQL bundle\nversion to 2.19.4. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3894\"\u003e#3894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for SHA-256 Git object IDs. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3893\"\u003e#3893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.5\"\u003e2.25.5\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3926\"\u003e#3926\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.35.5 - 15 May 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWe have improved how the JavaScript bundles for the CodeQL Action\nare generated to avoid duplication across bundles and reduce the size of\nthe repository by around 70%. This should have no effect on the runtime\nbehaviour of the CodeQL Action. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3899\"\u003e#3899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFor performance and accuracy reasons, \u003ca\nhref\u003d\"https://redirect.github.com/github/roadmap/issues/1158\"\u003eimproved\nincremental analysis\u003c/a\u003e will now only be enabled on a pull request when\ndiff-informed analysis is also enabled for that run. If diff-informed\nanalysis is unavailable (for example, because the PR diff ranges could\nnot be computed), the action will fall back to a full analysis. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3791\"\u003e#3791\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIf multiple inputs are provided for the GitHub-internal\n\u003ccode\u003eanalysis-kinds\u003c/code\u003e input, only \u003ccode\u003ecode-scanning\u003c/code\u003e will\nbe enabled. The \u003ccode\u003eanalysis-kinds\u003c/code\u003e input is experimental, for\nGitHub-internal use only, and may change without notice at any time. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3892\"\u003e#3892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded an experimental change which, when running a Code Scanning\nanalysis for a PR with \u003ca\nhref\u003d\"https://redirect.github.com/github/roadmap/issues/1158\"\u003eimproved\nincremental analysis\u003c/a\u003e enabled, prefers CodeQL CLI versions that have\na cached overlay-base database for the configured languages. This speeds\nup analysis for a repository when there is not yet a cached overlay-base\ndatabase for the latest CLI version. We expect to roll this change out\nto everyone in May. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3880\"\u003e#3880\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.35.4 - 07 May 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.4\"\u003e2.25.4\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3881\"\u003e#3881\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.35.3 - 01 May 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eUpcoming breaking change\u003c/em\u003e: Add a deprecation warning for\ncustomers using CodeQL version 2.19.3 and earlier. These versions of\nCodeQL were discontinued on 9 April 2026 alongside GitHub Enterprise\nServer 3.15, and will be unsupported by the next minor release of the\nCodeQL Action. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3837\"\u003e#3837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConfigurations for private registries that use Cloudsmith or GCP\nOIDC are now accepted. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3850\"\u003e#3850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBest-effort connection tests for private registries now use\n\u003ccode\u003eGET\u003c/code\u003e requests instead of \u003ccode\u003eHEAD\u003c/code\u003e for better\ncompatibility with various registry implementations. For NuGet feeds,\nthe test is now always performed against the service index. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3853\"\u003e#3853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed a bug where two diagnostics produced within the same\nmillisecond could overwrite each other on disk, causing one of them to\nbe lost. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3852\"\u003e#3852\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.3\"\u003e2.25.3\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3865\"\u003e#3865\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.35.2 - 15 Apr 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe undocumented TRAP cache cleanup feature that could be enabled\nusing the \u003ccode\u003eCODEQL_ACTION_CLEANUP_TRAP_CACHES\u003c/code\u003e environment\nvariable is deprecated and will be removed in May 2026. If you are\naffected by this, we recommend disabling TRAP caching by passing the\n\u003ccode\u003etrap-caching: false\u003c/code\u003e input to the \u003ccode\u003einit\u003c/code\u003e Action.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3795\"\u003e#3795\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe Git version 2.36.0 requirement for improved incremental analysis\nnow only applies to repositories that contain submodules. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3789\"\u003e#3789\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePython analysis on GHES no longer extracts the standard library,\nrelying instead on models of the standard library. This should result in\nsignificantly faster extraction and analysis times, while the effect on\nalerts should be minimal. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3794\"\u003e#3794\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed a bug in the validation of OIDC configurations for private\nregistries that was added in CodeQL Action 4.33.0 / 3.33.0. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3807\"\u003e#3807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.2\"\u003e2.25.2\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3823\"\u003e#3823\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/8aad20d150bbac5944a9f9d289da16a4b0d87c1e\"\u003e\u003ccode\u003e8aad20d\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/3949\"\u003e#3949\u003c/a\u003e\nfrom github/update-v4.36.2-dcb947ce1\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/f521b08cd8f468ab193ea950a589cb2e9c869c6a\"\u003e\u003ccode\u003ef521b08\u003c/code\u003e\u003c/a\u003e\nAdd additional changelog notes\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/8aeff0ffb7b78582ee0d0e6eebb8140684400d08\"\u003e\u003ccode\u003e8aeff0f\u003c/code\u003e\u003c/a\u003e\nUpdate changelog for v4.36.2\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/dcb947ce15976d40ea82935510b2db4872ec124c\"\u003e\u003ccode\u003edcb947c\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/3948\"\u003e#3948\u003c/a\u003e\nfrom github/update-bundle/codeql-bundle-v2.25.6\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/c251bcefa178f7780f62f150002acffe3d07fde9\"\u003e\u003ccode\u003ec251bce\u003c/code\u003e\u003c/a\u003e\nAdd changelog note\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/62953c18b35f59e28351d2f1e806925aef8b1e3c\"\u003e\u003ccode\u003e62953c1\u003c/code\u003e\u003c/a\u003e\nUpdate default bundle to codeql-bundle-v2.25.6\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/423b570baf1976cd7a3daeba5d6e9f9b76432f37\"\u003e\u003ccode\u003e423b570\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/3946\"\u003e#3946\u003c/a\u003e\nfrom github/dependabot/npm_and_yarn/npm-minor-5d507a...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/c35d1b164463ee62a100735382aaaa525c5d3496\"\u003e\u003ccode\u003ec35d1b1\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/3947\"\u003e#3947\u003c/a\u003e\nfrom github/dependabot/github_actions/dot-github/wor...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/cb1a588b02755b176e7b9d033ed4b69312f0e1bd\"\u003e\u003ccode\u003ecb1a588\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/3937\"\u003e#3937\u003c/a\u003e\nfrom github/robertbrignull/waitForProcessing_backoff\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/ba47406412c54532b5b4fcfbaf877c9e2382b206\"\u003e\u003ccode\u003eba47406\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/3943\"\u003e#3943\u003c/a\u003e\nfrom github/henrymercer/cache-cli-version-info\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/github/codeql-action/compare/87557b9c84dde89fdd9b10e88954ac2f4248e463...8aad20d150bbac5944a9f9d289da16a4b0d87c1e\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dgithub/codeql-action\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d4.36.1\u0026new-version\u003d4.36.2)](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\nalter it yourself. You can also trigger a rebase manually by commenting\n`@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\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "986a712ef61f5029ea184c7ce7b93cc2b33fc6de",
      "tree": "772c122dda5ee959b128c6fec7fb3a6cdbd0ff76",
      "parents": [
        "84dcc0b30e4edeff9850aa2f08dd1050002cb734"
      ],
      "author": {
        "name": "chakkk309",
        "email": "chakk6870@gmail.com",
        "time": "Tue Jun 09 20:10:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 12:10:49 2026 +0000"
      },
      "message": "refactor: Port CaseExpr proto serialization hooks (#22838)\n\n## Which issue does this PR close?\n\n- Closes #22421.\n\n## Rationale for this change\n\nCaseExpr should own its protobuf serialization and deserialization\nthrough the PhysicalExpr try_to_proto / try_from_proto hooks, matching\nthe migration pattern used by other physical expressions and avoiding\nthe central downcast chain.\n\n## What changes are included in this PR?\n\n- Adds CaseExpr::try_to_proto in the PhysicalExpr impl.\n- Adds CaseExpr::try_from_proto as an inherent proto constructor.\n- Routes physical expression decoding for CaseExpr through the new hook.\n- Removes the old CaseExpr serialization arm and its helper from\ndatafusion-proto.\n- Adds direct hook tests covering encode, decode, wrong node variant,\nmissing when/then children, and child encode/decode error propagation.\n\n## Are these changes tested?\n\nYes:\n\n- cargo fmt --all\n- cargo test -p datafusion-physical-expr --features proto\ncase::tests::try_\n- cargo test -p datafusion-proto --test proto_integration\n- cargo clippy -p datafusion-physical-expr --features proto --tests --\n-D warnings\n- cargo clippy -p datafusion-proto --test proto_integration -- -D\nwarnings\n\n## Are there any user-facing changes?\n\nNo. This is an internal proto serialization refactor with the same wire\nformat.\n\n---------\n\nCo-authored-by: chakkk309 \u003cchakkk309@users.noreply.github.com\u003e"
    },
    {
      "commit": "84dcc0b30e4edeff9850aa2f08dd1050002cb734",
      "tree": "cc2e34b9b885cb7ab3b4ef544b50244b91d4255a",
      "parents": [
        "9b81ff86d1adf35d953329eb05b4e6d3e0904ea8"
      ],
      "author": {
        "name": "Huaijin",
        "email": "haohuaijin@gmail.com",
        "time": "Tue Jun 09 20:03:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 12:03:38 2026 +0000"
      },
      "message": "fix: approx_distinct over-counts for utf8view (#22815)\n\n## Which issue does this PR close?\n\n- Closes https://github.com/apache/datafusion/issues/22796\n\n## Rationale for this change\n\n`approx_distinct` over-counted distinct values for `Utf8View` columns\nwhen the same short string appeared across batches with different\nlayouts.\n\nArrow stores strings ≤ 12 bytes inline in the 128-bit view integer. The\nfast path (no data buffers) hashed these as raw `u128`. But when a batch\nalso had a long string, it fell into a different branch that hashed\n**all** strings as `\u0026str` — including the short inline ones. The same\nstring hashed differently in different batches, so HyperLogLog counted\nit twice.\n\n## What changes are included in this PR?\n\n- **`StringViewHLLAccumulator::update_batch`** and **`Utf8ViewHasher`**:\nin mixed batches (data buffers present), short strings (≤ 12 bytes) are\nstill hashed as the raw `u128` view; only long strings hash as `\u0026str`.\nThis keeps hashing consistent regardless of batch layout.\n\n- **Two regression tests**:\n- `utf8view_acc_split_batches_match_single_mixed_batch` — scalar\naccumulator\n- `utf8view_groups_short_string_hashed_consistently_across_batches` —\ngroup accumulator\n\n## Are these changes tested?\n\nYes, two new regression tests cover the exact failure mode.\n\n## Are there any user-facing changes?\n\nYes. `approx_distinct` on `Utf8View` / `VARCHAR VIEW` columns now\nreturns correct (lower) counts. Results may differ from the previously\nincorrect values.\n\n---------\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e"
    },
    {
      "commit": "9b81ff86d1adf35d953329eb05b4e6d3e0904ea8",
      "tree": "f9f63cb9adf34c73510e10773aa0cc04cb1813e3",
      "parents": [
        "bdfdd09373ae1225ea1fd48d046b600f5646b856"
      ],
      "author": {
        "name": "Adrian Garcia Badaracco",
        "email": "1755071+adriangb@users.noreply.github.com",
        "time": "Mon Jun 08 22:54:16 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 02:54:16 2026 +0000"
      },
      "message": "bench: make wide_schema honor DATA_DIR like the other sql_benchmarks (#22836)\n\n## Which issue does this PR close?\n\n- Relates to #21968 (wide-schema benchmark work).\n\n## Rationale for this change\n\nEvery `sql_benchmarks` suite declares its external-table `LOCATION` as\n`${DATA_DIR:-data}/...`, and the matching `bench.sh run_*` forwards\n`DATA_DIR\u003d\"${DATA_DIR}\"` to the benchmark process — e.g. `clickbench`,\n`imdb`, `tpch`, `push_down_topk`, `h2o` all do this.\n\n`wide_schema` (added in #21970) diverged on **both** counts:\n- `wide_schema/init/load.sql` hardcoded `LOCATION\n\u0027data/wide_schema/...\u0027` (no `${DATA_DIR}`)\n- `run_wide_schema` did not forward `DATA_DIR`\n\nRun from inside the repo this happens to work, because the process CWD\nis the repo\u0027s `benchmarks/` and the relative `data/` path resolves. But\nit breaks whenever the data directory is not under the current directory\n— for example the CI benchmark runner builds/runs the benchmark from a\nseparate source checkout while staging the dataset elsewhere and\npointing at it via `DATA_DIR`. There, wide_schema fails at load:\n\n```\ninitialization failed: No files found at file:///.../benchmarks/data/wide_schema/wide/.\nCannot infer schema from an empty location; either add data files or declare an explicit schema for the table.\n```\n\n(The `bench.sh` variable `DATA_DIR` is set but not exported, so it only\nreaches the benchmark when a `run_*` function passes it explicitly —\nwhich `run_tpch` etc. do and `run_wide_schema` did not.)\n\n## What changes are included in this PR?\n\nTwo one-line fixes bringing `wide_schema` in line with the convention\nused by every other suite:\n- `load.sql`: `data/wide_schema/...` →\n`${DATA_DIR:-data}/wide_schema/...`\n- `run_wide_schema`: forward `DATA_DIR\u003d\"${DATA_DIR}\"` for both the\n`wide` and `narrow` subgroups\n\n## Are these changes tested?\n\nBenchmark tooling only. The substitution path is the same one every\nother suite already relies on: the SQL harness\u0027s `process_replacements`\nresolves `${DATA_DIR:-data}` from the env (falling back to `data`), and\n`run_wide_schema` now forwards `DATA_DIR` exactly as `run_tpch` does.\nVerified `bench.sh` still parses (`bash -n`). Default in-repo behavior\nis unchanged (CWD-relative `data/`).\n\n## Are there any user-facing changes?\n\nNo. Benchmark harness only.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "bdfdd09373ae1225ea1fd48d046b600f5646b856",
      "tree": "8fb83b7237e8a1fe56b386ce712c6566c5c20770",
      "parents": [
        "ec126e68b99268da6a03b4f67017489fa9c5311c"
      ],
      "author": {
        "name": "Filip Petkovski",
        "email": "filip.petkovsky@gmail.com",
        "time": "Tue Jun 09 04:43:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 02:43:40 2026 +0000"
      },
      "message": "Add example for PartitionedFile schema (#22809)\n\n## Which issue does this PR close?\n\nAddresses the suggestion in\nhttps://github.com/apache/datafusion/pull/22360#pullrequestreview-4384588998\nto add an example for specifying an Arrow schema for a\n`PartitionedFile`.\n\n## What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\n* Add an example in\n`datafusion-examples/examples/data_io/partitioned_file_schema.rs`.\n\n## Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\n\nTested with \n\n```bash\ncd datafusion-examples/examples\ncargo run --example data_io -- partitioned_file_schema\n```\n\n## Are there any user-facing changes?\n\nNo user facing changes.\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e\n\ncc @alamb\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "ec126e68b99268da6a03b4f67017489fa9c5311c",
      "tree": "1342a02efdd209af709d644eb73a0e1f450561bc",
      "parents": [
        "0f8a12123f4b3e14ca2c96f7944cdd775f9e8af8"
      ],
      "author": {
        "name": "Yongting You",
        "email": "2010youy01@gmail.com",
        "time": "Tue Jun 09 10:34:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 02:34:04 2026 +0000"
      },
      "message": "minor: More comments to `AggregateMode::PartialReduce` (#22800)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Closes #.\n\n## Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the issue then this section is not needed.\nExplaining clearly why changes are proposed helps reviewers understand\nyour changes and offer better suggestions for fixes.\n--\u003e\nFigured this out when working through the codebase, I think it worth\nsome more comment.\n\n## What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\n## Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\n\n## Are there any user-facing changes?\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e"
    },
    {
      "commit": "0f8a12123f4b3e14ca2c96f7944cdd775f9e8af8",
      "tree": "53babbbb8d465a1ee4e998f5a1cb5c417a0df900",
      "parents": [
        "a6309946138a1ab4a19e1dbbb9218bd74ea2c5eb"
      ],
      "author": {
        "name": "Adrian Garcia Badaracco",
        "email": "1755071+adriangb@users.noreply.github.com",
        "time": "Mon Jun 08 19:34:00 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 23:34:00 2026 +0000"
      },
      "message": "bench: add predicate_eval SQL micro-benchmark suite for conjunctive filter evaluation (#22704)\n\n## Which issue does this PR close?\n\n\u003c!-- No tracking issue; this is a standalone benchmark contribution. --\u003e\n\nThis PR does not close an issue. It adds a benchmark suite to support\nwork and\ndiscussion around predicate ordering in filter evaluation (e.g. the\nstatic\nreordering in #22343 and the runtime/statistics-based reordering\nexplored in\n#22698). It deliberately benchmarks *no specific implementation* — see\nbelow.\n\n## Rationale for this change\n\nConjunctive (`AND`) filter evaluation in `FilterExec` is a left-deep\n`BinaryExpr(And)` chain, and the order conjuncts are evaluated in can\nchange\nruntime by large factors: once a leading conjunct passes few enough rows\nthe\nbatch is physically compacted before the rest, so a cheap-and-selective\npredicate evaluated early saves later predicates work. Predicate\nordering is\ntherefore an active area (static heuristics, runtime/adaptive schemes,\ncost\nmodels).\n\nThere is currently no benchmark suite that isolates the dimensions that\ndrive\nthis. Existing macro-benchmarks (TPC-H/DS, ClickBench) only incidentally\nexercise filter ordering, so they can\u0027t show *why* a change to ordering\nhelped\nor hurt, or guard the order-insensitive case against regressions.\n\n## What changes are included in this PR?\n\nA new SQL benchmark suite, `benchmarks/sql_benchmarks/predicate_eval`,\nbuilt on\nthe existing `.benchmark` template framework (no engine code, no new\nRust). It\nsets no engine config of its own and measures DataFusion\u0027s built-in\nshort-circuit\nby default; a system under test is toggled purely via its native\n`DATAFUSION_EXECUTION_*` env var (the bench harness builds its\n`SessionContext`\nwith `SessionConfig::from_env`), so the same scenarios can characterise\nthe\nbaseline, a static heuristic, an adaptive scheme, or a cost model and be\ncompared apples-to-apples.\n\nIt is organised into 10 subgroups (select with `BENCH_SUBGROUP`), each\nvarying\none property of conjunctive filter evaluation while holding the others\nfixed:\n\n| Subgroup | What it varies (others held fixed) |\n|---|---|\n| `costsel` | cost and selectivity point in different directions\n(expensive predicate is the selective one) |\n| `cost` | per-predicate cost, at equal selectivity |\n| `selectivity` | per-predicate selectivity, at equal cost |\n| `cardinality` | conjunct count `k \u003d 2/4/8/16` |\n| `width` | string-column width (`PRED_FILL` \u003d 2 / 30 / 170 chars) |\n| `scale` | row count `5k / 100k / 5M / 50M` |\n| `neutral` | predicates are interchangeable (equal cost, none\nselective) — an order-insensitive control |\n| `correlation` | conditional vs marginal selectivity (independent /\npositively / anti-correlated) |\n| `drift` | selectivity that changes across the scan |\n| `nulls` | null density (two- vs three-valued predicate results) |\n\nEach query\u0027s comment notes the per-predicate cost/selectivity that the\ndata\ngeneration hides from the SQL. Data is synthetic and generated inline by\neach\nsubgroup\u0027s load SQL (no external files); `PRED_ROWS` sizes it and\n`PRED_FILL`\nsets string width. Wired into `bench.sh` (`./bench.sh run\npredicate_eval`) and\ndocumented in `benchmarks/sql_benchmarks/README.md`.\n\nThe design was informed by surveying how Velox drives the analogous\ndecision\n(it ranks by cycles-per-row-eliminated, `time / (rows_in - rows_out)`).\n\n\u003e Note: the `scale` subgroup\u0027s `q52`/`q53` build 5M / 50M-row tables\n(the latter\n\u003e ~9 GB); run a single point with `BENCH_QUERY` if that is too heavy.\n\n## Are these changes tested?\n\nThese are benchmark definitions, not engine code. Each `.benchmark`\nincludes an\n`assert` that the generated table is non-empty, and every subgroup was\nrun\nlocally at small `PRED_ROWS` to confirm the suite parses, loads,\nasserts, and\nexecutes end-to-end. The queries are order-invariant (`SELECT count(*)\n...`), so\nany predicate-ordering system can also be checked for correctness by\ndiffing\ncounts with the optimization on vs. off.\n\n## Are there any user-facing changes?\n\nNo. This only adds an opt-in benchmark suite and its documentation; no\npublic\nAPI, engine behavior, or default configuration changes.\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "a6309946138a1ab4a19e1dbbb9218bd74ea2c5eb",
      "tree": "1e02362aa19920f8e685c997b4eb75f4844d6903",
      "parents": [
        "1d740ed9d8a3754baee45eea6a1f4a3e908dd296"
      ],
      "author": {
        "name": "Matthew Kim",
        "email": "38759997+friendlymatthew@users.noreply.github.com",
        "time": "Mon Jun 08 23:37:09 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 21:37:09 2026 +0000"
      },
      "message": "coerce Union vs scalar in comparisons (#22825)\n\n- Closes https://github.com/apache/datafusion/issues/18825\n\nAdd a `union_coercion` rule so that comparisons between a Union column\nand an opaque scalar pick the scalar type whenever any union variant can\nbe cast to it. The execution side is already handled by arrow-rs\u0027s\n`cast(Union -\u003e T)` (arrow 58.3.0+), which extracts values from the\nmatching variant and emits NULL for rows whose active variant is not\ncastable to the target\n\n---------\n\nCo-authored-by: Adrian Garcia Badaracco \u003c1755071+adriangb@users.noreply.github.com\u003e\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "1d740ed9d8a3754baee45eea6a1f4a3e908dd296",
      "tree": "e5eda503bf7d86fe79a2ea4d107092920b4756ea",
      "parents": [
        "883c38ee022ccd3e77cd0d4a4647e6a304762faf"
      ],
      "author": {
        "name": "crm26",
        "email": "58179092+crm26@users.noreply.github.com",
        "time": "Mon Jun 08 15:20:04 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 19:20:04 2026 +0000"
      },
      "message": "feat: add array_sum scalar function (#22542)\n\n## Which issue does this PR close?\n\nPartial of #21536 — `array_sum` (first of the array aggregates in the\nseries).\n\n## Rationale for this change\n\nContinues the per-function split sequence requested by @alamb on #21536.\nFour sibling PRs already merged: `cosine_distance` (#21542),\n`inner_product` (#21861), `array_normalize` (#22013), `array_scale`\n(#22466). `array_add` is in flight as #22459 by @SubhamSinghal.\n\n`array_sum` is the first of the three array-aggregate functions (sum,\nproduct, avg). Its semantics set the pattern for the other two\naggregates.\n\n## What changes are included in this PR?\n\n- New scalar UDF `array_sum(array)` in\n`datafusion/functions-nested/src/array_sum.rs`\n- Module wire-up + registration in\n`datafusion/functions-nested/src/lib.rs`\n- SLT tests at `datafusion/sqllogictest/test_files/array_sum.slt`\n- Auto-generated docs entry in\n`docs/source/user-guide/sql/scalar_functions.md`\n\n**Signature:** \\`List/LargeList/FixedSizeList\u003cnumeric\u003e\\` in, \\`Float64\\`\nout (one scalar per row). Numeric inner types coerced to \\`Float64\\`.\n\n**NULL semantics — SQL aggregate convention (deliberate divergence from\nbinary-op siblings):**\n- NULL row → NULL row out\n- NULL elements are **skipped**, matching PostgreSQL \\`array_sum\\`,\nDuckDB \\`list_sum\\`, Spark \\`aggregate\\`. Binary-op siblings\n(\\`inner_product\\`, \\`array_normalize\\`) null-row on NULL element\nbecause their per-element operation is undefined on NULL; aggregates\nconventionally skip NULLs in SQL.\n- All-NULL row → NULL out (matches \\`SUM(...)\\` over an all-NULL column)\n\n- **Empty array → NULL** (matches sibling `array_product` #22703,\nPostgreSQL, DuckDB `list_sum`, SQL Standard SUM-of-empty-set)\n\n**Alias:** \\`list_sum\\` (matches the precedent of\n\\`array_normalize\\`→\\`list_normalize\\`, \\`array_scale\\`→\\`list_scale\\`).\n\n## Are these changes tested?\n\nYes. SLT covers happy paths, empty arrays, NULL row, NULL elements (mix\n+ all-NULL), all list variants (List/LargeList/FixedSizeList), numeric\ncoercion (Float32/Int64/integer literals), multi-row composition, error\npaths, return type, and the \\`list_sum\\` alias.\n\n## Are there any user-facing changes?\n\nYes — new SQL scalar function \\`array_sum(array)\\` and its alias\n\\`list_sum\\`.\n\n---------\n\nCo-authored-by: Claude Opus 4.7 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "883c38ee022ccd3e77cd0d4a4647e6a304762faf",
      "tree": "9ec73f9baeac76c2bb87d8246426e95fd763db80",
      "parents": [
        "e4ae23654c686b0c1c9803cf91a3e5b3b00e7175"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Mon Jun 08 08:51:28 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 12:51:28 2026 +0000"
      },
      "message": "docs: add Boston DataFusion meetup (#22722)\n\n## Which issue does this PR close?\n\nN/A\n\n## Rationale for this change\n\nAdds the upcoming Boston Apache DataFusion meetup to the community\nevents list.\n\n## What changes are included in this PR?\n\nAdds the September 3, 2026 Boston meetup entry with links to the GitHub\ndiscussion and Luma RSVP page.\n\nCI will validate this docs-only change."
    },
    {
      "commit": "e4ae23654c686b0c1c9803cf91a3e5b3b00e7175",
      "tree": "9138adabc4ae11a1a17f4f2d5efdd126825a3485",
      "parents": [
        "c83a981b5564485965dba8b63fb2d46ea5a24e5a"
      ],
      "author": {
        "name": "pchintar",
        "email": "89355405+pchintar@users.noreply.github.com",
        "time": "Mon Jun 08 16:24:14 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 10:54:14 2026 +0000"
      },
      "message": "fix: Coerce aggregate FILTER predicates to boolean (#22774)\n\n## Which issue does this PR close?\n\n- Closes #22773 .\n\n## Rationale for this change\n\nAggregate and window aggregate `FILTER` clauses currently fail with an\ninternal error when the filter condition is `NULL`, even though the\nequivalent boolean-typed expression (e.g. `CAST(NULL AS BOOLEAN)`) works\ncorrectly.\n\nThis occurs because `FILTER` predicates are not being coerced to\n`BOOLEAN` during type coercion.\n\n## What changes are included in this PR?\n\n* Coerce aggregate `FILTER` predicates to `BOOLEAN` during type\ncoercion.\n* Apply the same coercion to window aggregate `FILTER` predicates.\n* Add SQL logic tests covering `FILTER (WHERE NULL)` for both aggregate\nand window aggregate functions.\n\n## Are these changes tested?\n\nYes.\n\nAdded SQL logic tests covering:\n\n* `COUNT(*) FILTER (WHERE NULL)`\n* `COUNT(1) FILTER (WHERE NULL)`\n* `SUM(1) FILTER (WHERE NULL)`\n* `AVG(1) FILTER (WHERE NULL)`\n* Window aggregate variants using `FILTER (WHERE NULL)`\n\n## Are there any user-facing changes?\n\nYes.\n\nQueries using `FILTER (WHERE NULL)` no longer fail with an internal\nerror and now return the expected results. Also, no changes were made to\nany public APIs"
    },
    {
      "commit": "c83a981b5564485965dba8b63fb2d46ea5a24e5a",
      "tree": "47a2148e210666f599ce5063f2b09305b044f598",
      "parents": [
        "710e9295eae67c7dc394c53190cac12aa8a11ac4"
      ],
      "author": {
        "name": "Nagato Yuzuru",
        "email": "x4.nagato.yuzuru@gmail.com",
        "time": "Mon Jun 08 15:03:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 07:03:18 2026 +0000"
      },
      "message": "feat: add DataFrame fill_nan (#22702)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Closes #14770 .\n\n\n## What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\nAdd `fill_nan` and test by referencing the `fill_null` mirror.\n\n## Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\nYes\n\n## Are there any user-facing changes?\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\nAdd a new function.\n\n---------\n\nCo-authored-by: Jeffrey Vo \u003cjeffrey.vo.australia@gmail.com\u003e"
    },
    {
      "commit": "710e9295eae67c7dc394c53190cac12aa8a11ac4",
      "tree": "09d103cc04c63f1e5744db0dbf0bebeca58048b4",
      "parents": [
        "04ef3c7d96e4d13668d8b74e2216b4b3e46c5f15"
      ],
      "author": {
        "name": "Nuno Faria",
        "email": "nunofpfaria@gmail.com",
        "time": "Mon Jun 08 06:38:18 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 05:38:18 2026 +0000"
      },
      "message": "fix: Optimize projections in recursive CTEs (#22476)\n\n## Which issue does this PR close?\n\n- Closes #22249.\n- Closes #17853.\n\n## Rationale for this change\n\nOptimize projections for the static and recursive terms of recursive\nCTEs just like regular subqueries. The previous implementation optimized\nprojections based on the outer columns, which could cause bugs.\n\nThis new implementation still ensures that #16684 remains fixed.\n\n## What changes are included in this PR?\n\n- Updated `optimize_projections` to be applied to the static and\nrecursive terms of a recursive query.\n- Updated and added tests.\n\n## Are these changes tested?\n\nYes.\n\n## Are there any user-facing changes?\n\nMaybe if the user relied on projections being pushed down from the outer\nquery to the recursive CTE, but this can be fixed by removing those\nunnecessary projections directly in the CTE.\n\n---------\n\nCo-authored-by: Bruce Ritchie \u003cbruce.ritchie@gmail.com\u003e"
    },
    {
      "commit": "04ef3c7d96e4d13668d8b74e2216b4b3e46c5f15",
      "tree": "c2ddc16bb75384e116fbe6b37748a9c49c72f153",
      "parents": [
        "6fdef651723817738c4b8cc9611dd7279008d168"
      ],
      "author": {
        "name": "Kazantsev Maksim",
        "email": "kazantsev.maksim.n@gmail.com",
        "time": "Mon Jun 08 07:49:47 2026 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 03:49:47 2026 +0000"
      },
      "message": "Spark quote function implementation (#22642)\n\n## Which issue does this PR close?\n\n- N/A\n\n## Rationale for this change\n\nAdd new spark function:\nhttps://spark.apache.org/docs/latest/api/sql/index.html#quote\n\n## What changes are included in this PR?\n\n- Implementation\n- SLT tests\n\n## Are these changes tested?\n\nYes, tests added as part of this PR.\n\n## Are there any user-facing changes?\n\nNo, these are new function.\n\n---------\n\nCo-authored-by: Kazantsev Maksim \u003cmn.kazantsev@gmail.com\u003e"
    }
  ],
  "next": "6fdef651723817738c4b8cc9611dd7279008d168"
}
