Skip to content

fix: stop pre-allocating and undercounting a hash table per COUNT(DISTINCT) group - #70

Closed
adriangb wants to merge 37 commits into
mainfrom
claude/bytes-map-initial-capacity-accounting
Closed

fix: stop pre-allocating and undercounting a hash table per COUNT(DISTINCT) group#70
adriangb wants to merge 37 commits into
mainfrom
claude/bytes-map-initial-capacity-accounting

Conversation

@adriangb

@adriangb adriangb commented Sep 1, 2026

Copy link
Copy Markdown
Member

A grouped COUNT(DISTINCT <string>) over 4,000 groups holding 2 short strings each needs a 36 MB memory budget. It needs 2.0 MB after this change.

Every group gets its own hash table, and each table is allocated at warm-up size before the group holds anything, so the memory the query needs tracks the number of groups rather than the amount of data. The query also reports less memory than it holds, so a memory limit does not stop it at the right point.

Reproduction

This needs only datafusion-cli. There is no patch, no custom allocator and no data file.

-- repro.sql
SET datafusion.execution.target_partitions = 1;

-- 4,000 groups with 2 distinct short strings in each.
-- avg() stops SingleDistinctToGroupBy from rewriting the distinct aggregate away.
SELECT g, count(DISTINCT s) AS d, avg(p) AS a
FROM (
  SELECT v % 4000 AS g, 'v' || CAST(v AS VARCHAR) AS s, v AS p
  FROM generate_series(0, 7999) AS t(v)
)
GROUP BY g
ORDER BY g
LIMIT 3;
datafusion-cli -m 8M -f repro.sql

s is a Utf8View column, so this exercises ArrowBytesViewMap. The 8,000 rows arrive in one batch, so the aggregate builds all 4,000 accumulators before it can emit or spill.

Current main at 20d1c56761 fails:

Resources exhausted: Additional allocation failed for SingleHashAggregateStream[0] with top memory
consumers (across reservations) as:
  DataFusion-Cli#1(can spill: false) consumed 0.0 B, peak 0.0 B,
  SingleHashAggregateStream[0]#2(can spill: true) consumed 0.0 B, peak 48.0 B,
  TopK[0]#3(can spill: false) consumed 0.0 B, peak 0.0 B.
Error: Failed to allocate additional 111.1 MB for SingleHashAggregateStream[0] with 0.0 B already
allocated for this reservation - 8.0 MB remain available for the total memory pool:
greedy(used: 0.0 B, pool_size: 8.0 MB)

This branch returns the rows:

+---+---+--------+
| g | d | a      |
+---+---+--------+
| 0 | 2 | 2000.0 |
| 1 | 2 | 2001.0 |
| 2 | 2 | 2002.0 |
+---+---+--------+
3 row(s) fetched.
Elapsed 0.006 seconds.

Those 4,000 accumulators hold 8,000 short strings, which is about 100 KB of data. The base asks the pool for 111.1 MB to hold it. This branch runs the same query inside -m 3M. Both builds return the same rows, and the base does so at -m 200M. Each run takes well under a second, and the outcome repeats exactly over three runs on each side.

How much it improves

The minimum memory limit at which that query completes, bisected on each side:

value column before after
Utf8 fails 34 MB, passes 36 MB fails 1.8 MB, passes 2.0 MB
Utf8View fails 120 MB, passes 124 MB fails 2.4 MB, passes 2.6 MB

clickbench_extended at DATAFUSION_RUNTIME_MEMORY_LIMIT: 4G, pool peak over six runs:

query base this branch change
Q2, grouped, 4 string distincts 98.1 to 98.6 MiB 11.7 MiB in all six runs -88.1%
Q1, ungrouped string distincts 3.4 MiB 2.4 MiB -29.4%
Q0, ungrouped, high cardinality 796.8 to 834.8 MiB 846.5 to 885.5 MiB +6.3%

Q2 is the only query in any benchmark suite that puts a grouped COUNT(DISTINCT) on a non-integer column.

Q0 costs more, and it is the one disclosed cost of this PR. Those extra bytes are memory Q0 always held and the pool could not see, not new allocation; appendix A has the three-build decomposition that separates the two. Latency does not move anywhere, which is what an allocation-sizing change should do.

Which issue does this PR close?

No existing issue. I found this when I investigated a production out of memory. I can file an issue if you want it in the changelog.

Rationale for this change

Pre-allocating is right for the one long-lived map behind a GROUP BY on a string column. It is wrong for the distinct-count accumulators, because GroupsAccumulatorAdapter creates one accumulator per group and most groups hold a handful of values. There the warm-up dwarfs the data.

Both maps also under-report the table they hold. ArrowBytesViewMap left the control bytes out. ArrowBytesMap charged the table only when it grew, so a map that stayed inside its pre-allocation reported its table as free forever. A memory limit acted on a number that was too small.

clear_shrink is the third part. The aggregate stream calls it to hand memory back before it spills and before a downstream sort. It restored the warm-up capacity instead of releasing it, so nothing came back.

What changes are included in this PR?

  • new on both maps allocates nothing. A new with_capacity keeps the previous pre-allocating behavior. GroupValuesBytes and GroupValuesBytesView use with_capacity, and the two distinct-count accumulators use new. A map remembers how it was built, so take warms it back up the way it started.
  • size() reports HashTable::allocation_size(), the real hashbrown allocation including the control bytes, in place of the old estimate.
  • A new clear_and_release drops every allocation the map holds, and clear_shrink calls it.
  • The value buffer rounds each growth up to a power of two. A lazily grown buffer and a pre-allocated one then sit on one ladder, so a lazy map is never the larger of the two for the same values. Growth stays geometric.
  • benches/arrow_bytes_map.rs moves to with_capacity so it keeps measuring the pre-allocating constructor.

What is the testing strategy for this PR?

Two tests in datafusion/core/tests/memory_limit/mod.rs, group_by_count_distinct_utf8 and group_by_count_distinct_utf8_view, turn the headline claim into a pass or a fail rather than a number. They run the reproduction query over 4,000 groups with spilling disabled and target_partitions pinned to 1, so completing means the query fits the budget rather than spills out of it. The limits are 8 MB and 16 MB, at least 4x clear of both cliffs in the table above. Both tests fail on the merge base and pass here, over five consecutive runs. The avg(payload) in the query is load bearing; appendix C says why.

Unit tests cover what the memory-limit tests cannot see: that new allocates nothing, that with_capacity reports a table size bracketed by an independently derived lower bound, that take preserves the configured capacity, that clear_shrink drops the reported size to near zero, and that a lazily grown buffer never exceeds a pre-allocated one holding the same values.

Run locally on the rebased head, all passing: datafusion-physical-expr-common (87 lib, 8 doc), datafusion-functions-aggregate-common (49), datafusion-functions-aggregate -- count_distinct (2), datafusion-physical-plan -- group_values (96) and the memory_limit module (39, which includes the count_distinct_spill test that arrived on main in apache#24888 and apache#24918). cargo fmt --check and cargo clippy --all-targets -D warnings are clean on the changed crates. CI has not yet run this branch against the new base.

No query results change.

Are there any user-facing changes?

Yes, in datafusion-physical-expr-common. ArrowBytesMap::new and ArrowBytesViewMap::new no longer pre-allocate, and callers that want the previous behavior should use the new with_capacity. Both types also gain clear_and_release. This changes an existing public constructor rather than adding one, so tell me if you would like the api change label.

For users, a grouped COUNT(DISTINCT) on string and binary columns uses much less memory and reports its usage to the MemoryPool accurately. A query that previously hit a memory limit may now succeed.


Appendix A: Query 0 costs 6.3% more

Q0 is COUNT(DISTINCT) over three high-cardinality strings with no GROUP BY. It is a handful of maps that each grow to millions of entries, which is the opposite population from the one this PR targets. The pre-allocation was never the dominant cost there, so removing it buys nothing.

Over six runs the base spans 796.8 to 834.8 MiB and this branch spans 846.5 to 885.5 MiB. The ranges do not overlap, so the effect is real and not run-to-run noise.

Three local builds on a deterministic subset separate the two changes. The middle build differs from the base only in the accounting, because restoring the warm-up makes the constructors byte-identical to base:

build Q0 pool peak
base 48,421,820
this branch with the warm-up restored 51,048,396
this branch 51,018,828

That decomposes the increase exactly. +2,626,576 is the accounting correction: allocation_size() charges the real hashbrown allocation, which is 4 * buckets + 5,384 more than the old formula, being the control bytes plus the 7/8 load-factor slack. -29,568 is the lazy constructor, which makes Q0 slightly better.

Reverting the accounting would restore an under-report of about 19% on this path. That under-report is the bug this PR exists to fix, and the memory-limit result above depends on fixing it.

Appendix B: what one accumulator costs

One per-group accumulator holding a single 24-byte value:

before, actual before, reported after
BytesDistinctCountAccumulator 14,648 B 8,240 B 180 B
BytesViewDistinctCountAccumulator 33,920 B 28,792 B 260 B

The middle column is the reporting gap. The Utf8 map really held 14,648 bytes and reported 8,240, because the whole hash table was invisible to the old accounting.

These are measured directly rather than asserted in a test, since the exact numbers follow the hashbrown layout.

Appendix C: notes on the tests and the benchmarks

The memory-limit query uses avg(payload), not count(*). A non-distinct count lets SingleDistinctToGroupBy rewrite the distinct aggregate into a plain two-stage GROUP BY. The per-group accumulators would then never exist, and the tests would pass by construction on the base commit too. That rule accepts a non-distinct sum, min or max because each re-aggregates its own partial results correctly over the deduplicated inner group by. avg does not, so the rule can never admit it under any extension, including the one apache#24859 proposes.

The benchmark figures were measured against the previous merge base da89c7c85b. They have not been re-run against the current base 20d1c56761. The commits after 84f07da on this branch touch only datafusion/core/tests/memory_limit/mod.rs, so nothing on this branch since then can move a benchmark, but the base itself has moved.

Pool peak is the instrument here, not peak RSS. Pool peak reproduces to under 1% on a 98 MiB query and exactly on the 3.4 and 11.7 MiB ones. Peak RSS on this harness has a 4.1% standard deviation over 11 readings of identical code plus a 2.3% order bias, and shows no effect from this change once that null is accounted for.

Follow-ups, not in this PR

  • The same undercount remains at five other production insert_accounted call sites: group_values/row.rs:171, multi_group_by/mod.rs:434,554, multi_group_by/dictionary.rs:197,584 and array_agg.rs:989. Each is one map per query, so the absolute error is bounded, and the fix is the same one-line swap.
  • The count_distinct_groups benchmarks in datafusion/functions-aggregate/benches/count_distinct.rs cover Int64, Int32 and UInt32 only, so this path has no criterion coverage.

@adriangb
adriangb marked this pull request as ready for review September 1, 2026 16:56
@adriangb
adriangb force-pushed the claude/bytes-map-initial-capacity-accounting branch from 96f0969 to 84f07da Compare September 1, 2026 18:04
@adriangb
adriangb changed the base branch from friendlymatthew/pydantic-main-df55 to main September 1, 2026 18:04
@adriangb

adriangb commented Sep 1, 2026

Copy link
Copy Markdown
Member Author

Rebased from the DataFusion 55 fork branch (friendlymatthew/pydantic-main-df55) onto main at da89c7c8, and retargeted the PR base to main. The four fork-only commits that used to sit under this branch are gone from the diff; the four commits here are unchanged in intent.

Conflicts were confined to imports: HashTableAllocExt is no longer used by either map file, while main has since added Result and exec_err there for the new keys method, and single_group_by/bytes.rs now also imports GroupSelection. Upstream had not touched the constructors or the size accounting, so nothing in this change became redundant.

All figures in the description were re-derived on the new base rather than carried over. The ArrowBytesViewMap undercount is 1.18x as before (28,672 reported against 33,800 real), and the per-accumulator numbers moved slightly: the view accumulator holding one 24-byte value now measures 33,920 actual and 28,792 reported before the change, 260 after. Benchmarks were not re-run.

Tests: datafusion-physical-expr-common 85 lib + 8 doc, datafusion-functions-aggregate-common 47, datafusion-functions-aggregate -- count_distinct 2, datafusion-physical-plan -- group_values 96, clippy --all-targets clean on all three crates.

@adriangb

adriangb commented Sep 1, 2026

Copy link
Copy Markdown
Member Author

Note on the clear_shrink review suggestion, since the thread is resolved and the reasoning is not recorded anywhere.

The suggestion was to construct GroupValuesBytes with the non-pre-allocating ArrowBytesMap::new, so that clear_shrink could actually shrink. This branch does the opposite and keeps the warm-up at construction, adding clear_and_release so clear_shrink releases the allocation directly.

Two reasons:

  1. GroupValuesBytes holds one map for the whole query, which is exactly the case the pre-allocation was designed for and the case arrow_bytes_map benchmarks. Removing the warm-up there would trade a real cost on the hot string GROUP BY path for a benefit only on the spill path.
  2. The retention was not introduced by this branch. Before it, take() was let mut new_self = Self::new(self.output_type); swap(...), and new pre-allocated 128 entries plus an 8 KiB buffer, so clear_shrink retained exactly as much as it does after the constructor split. What this branch newly makes possible is releasing it at all, since before there was no non-pre-allocating constructor.

So the finding identified a real defect, and the fix here addresses it without giving up the warm-up where it earns its keep.

@macroscopeapp

macroscopeapp Bot commented Sep 1, 2026

Copy link
Copy Markdown

Macroscope skipped reviewing this pull request. Per-review cost limit exceeded (workspace setting).

This review would cost an estimated $16.75, which exceeds your per-review limit of $10.00.

The top 3 files driving up this estimate:

File Diff Size Estimate
datafusion/physical-plan/src/aggregates/hash_stream.rs 30.58KB $1.53
datafusion/physical-plan/src/joins/nested_loop_join.rs 23.72KB $1.19
datafusion/physical-expr/src/expressions/cast.rs 21.87KB $1.09

Tip

To get this pull request reviewed, you can:

  1. Comment @macroscope-app on this PR to request a manual review (monthly spend limits still apply).
  2. Exclude the file(s) above from review by adding a pattern to your .macroscope/ignore.md — note that creating this file replaces Macroscope's built-in default ignores rather than extending them.
  3. Raise your cost limit in your workspace billing settings.

Turn off this reminder going forward

comphead and others added 8 commits September 1, 2026 18:34
…e#24805)

## Which issue does this PR close?

<!--
We generally require a GitHub issue to be filed for all bug fixes and
enhancements and this helps us generate change logs for our releases.
You can link an issue to this PR using the GitHub syntax. For example
`Closes apache#123` indicates that this PR will close issue apache#123.
-->

- Closes apache#24641 .

## Rationale for this change

`PiecewiseMergeJoinExec` and `SortMergeJoinExec` must return the same
results as
the mature join implementations they can be swapped for, across every
batch
boundary. Today that equivalence is checked ad hoc. Using the `#
configMatrix:`
directive from apache#24493, one `.slt` file can assert it directly: run the
same
queries once per join implementation and once per batch size, and
require
  identical output.

<!--
Why are you proposing this change? If this is already explained clearly
in the issue then this section is not needed.
Explaining clearly why changes are proposed helps reviewers understand
your changes and offer better suggestions for fixes.

Please explain the problem you are trying to solve in terms of the
user-visible
behavior, rather than the implementation.

For example, "The code in `foo.rs` doesn't handle nulls" is a symptom of
the
implementation. "COUNT(DISTINCT) returns wrong results when the column
contains
nulls" is the user-visible problem.
-->

## What changes are included in this PR?

<!--
There is no need to duplicate the description in the issue here, but it
is sometimes worth providing a summary of the individual changes in this
PR.
-->

## What is the testing strategy for this PR?

<!--
We typically require tests for all PRs in order to:
1. Prevent the code from being accidentally broken by subsequent changes
2. Serve as another way to document the expected behavior of the code

Briefly describe how this PR is tested, and point to the specific tests
you added. For example: 'This new feature is covered by the
`sqllogictest` cases added in `foo.slt`'.

If this PR does not add tests, explain why. For example, if the change
is already covered by existing tests, please mention it.

You should also check the `codecov` bot reply on this PR to confirm the
changed code is exercised.
-->

## Are there any user-facing changes?

<!--
If there are user-facing changes then we may require documentation to be
updated before approving the PR.

If there are any breaking changes to public APIs, please add the `api
change` label.
-->
…#23169)

## Which issue does this PR close?

- Closes apache#22079
- Closes apache#24724

## Rationale for this change

The logical `Expr::Cast` and `Expr::TryCast` have a `FieldRef` target
that was added in apache#18136 so
that logical casts can express a cast to an extension type. In
combination with a SQL type planner (
apache#20676 ) and an optimizer rule,
this enabled casting to/from extension types with custom semantics to
actually occur. The ability to do this was reverted by
apache#20836 (which removed the
original test) and I am not sure that ability ever made it into a
release. When investigating this issue, it became clear the logical and
physical cast behaviour had diverged with respect to the target field.

## What changes are included in this PR?

This PR strips specific metadata keys (extension name and extension
metadata) when propagating metadata from the source of a cast to the
target (because doing so may result in an invalid destination field that
consumers could reject), and propagates all metadata from the (logical)
cast target field (e.g., so that a cast to an extension type represented
by the cast target field will have a `to_field()` that communicates the
extension type).

For the physical cast, this behaviour is replicated exactly (I hope).

Note that actually casting to an extension type can be implemented with
an optimizer rule, planner, or by the mechanism I have in the works in
apache#21071 .

## Are these changes tested?

Yes

## Are there any user-facing changes?

It was in practice not common to create a `Expr::Cast` with field
metadata internally and thus I don't think users will see metadata
changes from the inclusion of metadata from the target field. I would be
surprised if stripping the extension name/metadata from the source was
disruptive (it was more likely to have caused errors).

Superceeds an earlier but similar attempt (
apache#22162 ).

---------

Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
Co-authored-by: Tim Saucer <timsaucer@gmail.com>
…on/wasmtest/datafusion-wasm-app (apache#24862)

Bumps [browserslist](https://github.com/browserslist/browserslist) from
4.28.1 to 4.28.8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/browserslist/browserslist/releases">browserslist's
releases</a>.</em></p>
<blockquote>
<h2>4.28.8</h2>
<ul>
<li>Fixed <code>including kaios</code> in baseline queries (by <a
href="https://github.com/Jaybhade"><code>@​Jaybhade</code></a>).</li>
</ul>
<h2>4.28.7</h2>
<ul>
<li>Improved parsing performance.</li>
<li>Fixed unbounded memory growth (by <a
href="https://github.com/alanturing881"><code>@​alanturing881</code></a>).</li>
<li>Fixed prototype write issue (by <a
href="https://github.com/alanturing881"><code>@​alanturing881</code></a>).</li>
</ul>
<h2>4.28.6</h2>
<ul>
<li>Fixed Electron version queries (by <a
href="https://github.com/spokodev"><code>@​spokodev</code></a>).</li>
</ul>
<h2>4.28.5</h2>
<ul>
<li>Fixed <code>&gt;</code> and <code>&gt;=</code> queries (by <a
href="https://github.com/spokodev"><code>@​spokodev</code></a>).</li>
</ul>
<h2>4.28.4</h2>
<ul>
<li>Fixed <code>SyntaxError</code> regression of 4.28.3.</li>
</ul>
<h2>4.28.3</h2>
<ul>
<li>Fixed baseline query case-insensitivity (by <a
href="https://github.com/swwind"><code>@​swwind</code></a>).</li>
</ul>
<h2>4.28.2</h2>
<ul>
<li>Fix prototype pollution (by <a
href="https://github.com/chluo1997"><code>@​chluo1997</code></a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md">browserslist's
changelog</a>.</em></p>
<blockquote>
<h2>4.28.8</h2>
<ul>
<li>Fixed <code>including kaios</code> in baseline queries (by <a
href="https://github.com/Jaybhade"><code>@​Jaybhade</code></a>).</li>
</ul>
<h2>4.28.7</h2>
<ul>
<li>Improved parsing performance.</li>
<li>Fixed unbounded memory growth (by <a
href="https://github.com/alanturing881"><code>@​alanturing881</code></a>).</li>
<li>Fixed prototype write issue (by <a
href="https://github.com/alanturing881"><code>@​alanturing881</code></a>).</li>
</ul>
<h2>4.28.6</h2>
<ul>
<li>Fixed Electron version queries (by <a
href="https://github.com/spokodev"><code>@​spokodev</code></a>).</li>
</ul>
<h2>4.28.5</h2>
<ul>
<li>Fixed <code>&gt;</code> and <code>&gt;=</code> queries (by <a
href="https://github.com/spokodev"><code>@​spokodev</code></a>).</li>
</ul>
<h2>4.28.4</h2>
<ul>
<li>Fixed <code>SyntaxError</code> regression of 4.28.3.</li>
</ul>
<h2>4.28.3</h2>
<ul>
<li>Fixed baseline query case-insensitivity (by <a
href="https://github.com/swwind"><code>@​swwind</code></a>).</li>
</ul>
<h2>4.28.2</h2>
<ul>
<li>Fix prototype pollution (by <a
href="https://github.com/chluo1997"><code>@​chluo1997</code></a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/browserslist/browserslist/commit/f2f2e6cfb01bb4942941d328737546f4e2ae41ad"><code>f2f2e6c</code></a>
Release 4.28.8 version</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/d0787c88fa29ba895fea51cfe921232c7b5d1377"><code>d0787c8</code></a>
Update dependencies</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/fcf8fa9857b30ccdf801a548f5d09d3c4ff0d43f"><code>fcf8fa9</code></a>
Merge pull request <a
href="https://redirect.github.com/browserslist/browserslist/issues/939">#939</a>
from Jaybhade/fix/baseline-kaios-without-downstream</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/57ecd64454e9252afdd6a7e76926e13dda48a38c"><code>57ecd64</code></a>
fix: support &quot;including kaios&quot; without downstream</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/093a0f67bb0becda55235d767b134df3197c54a1"><code>093a0f6</code></a>
Update EM banner</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/b637868045806d2fba4c24eb0060e4cc8b1db276"><code>b637868</code></a>
Release 4.28.7 version</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/313f4659b9f985ade89d1d6a54a860371c41cc46"><code>313f465</code></a>
Update dependencies</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/c935c5a206f8b13db8846818bc03643e147dcbdf"><code>c935c5a</code></a>
Fix regexp performance</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/d7e9e653cb53399065943f59f0b3063987b0a008"><code>d7e9e65</code></a>
Rewrite structure parsing to make it always fast</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/ec4a55efd76bdfa506ec7ce4fea1691559e9ca8f"><code>ec4a55e</code></a>
Fix import order</li>
<li>Additional commits viewable in <a
href="https://github.com/browserslist/browserslist/compare/4.28.1...4.28.8">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new
releaser for browserslist since your current version.</p>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=browserslist&package-manager=npm_and_yarn&previous-version=4.28.1&new-version=4.28.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/apache/datafusion/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…he#24840)

Bumps the all-other-cargo-deps group with 7 updates:

| Package | From | To |
| --- | --- | --- |
| [flate2](https://github.com/rust-lang/flate2-rs) | `1.1.9` | `1.1.10`
|
| [indexmap](https://github.com/indexmap-rs/indexmap) | `2.14.0` |
`2.14.1` |
| [log](https://github.com/rust-lang/log) | `0.4.33` | `0.4.34` |
| [uuid](https://github.com/uuid-rs/uuid) | `1.24.1` | `1.26.0` |
| [crc32fast](https://github.com/srijs/rust-crc32fast) | `1.5.0` |
`1.5.1` |
| [twox-hash](https://github.com/shepmaster/twox-hash) | `2.1.3` |
`2.1.4` |
| [syn](https://github.com/dtolnay/syn) | `3.0.3` | `3.0.4` |

Updates `flate2` from 1.1.9 to 1.1.10
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/flate2-rs/releases">flate2's
releases</a>.</em></p>
<blockquote>
<h2>1.1.10</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: reuse zlib's decoder buffer by <a
href="https://github.com/Vaiz"><code>@​Vaiz</code></a> in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/532">rust-lang/flate2-rs#532</a></li>
<li>feat: add reset method for read::GzDecoder and buffered::GzDecoder
by <a href="https://github.com/Vaiz"><code>@​Vaiz</code></a> in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/534">rust-lang/flate2-rs#534</a></li>
<li>Drop cloudflare-zlib by <a
href="https://github.com/kornelski"><code>@​kornelski</code></a> in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/539">rust-lang/flate2-rs#539</a></li>
<li>Add a wrapper for the <code>Crc</code> struct by <a
href="https://github.com/MikkelPaulson"><code>@​MikkelPaulson</code></a>
in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/540">rust-lang/flate2-rs#540</a></li>
<li>Bump miniz_oxide to 0.9 by <a
href="https://github.com/oscargus"><code>@​oscargus</code></a> in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/543">rust-lang/flate2-rs#543</a></li>
<li>Upgrade miniz_oxide and add unit tests of the different flush kinds
by <a href="https://github.com/fintelia"><code>@​fintelia</code></a> in
<a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/498">rust-lang/flate2-rs#498</a></li>
<li>Fix infinite loop in writing gzip header/footer by <a
href="https://github.com/Shnatsel"><code>@​Shnatsel</code></a> in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/547">rust-lang/flate2-rs#547</a></li>
<li>test: generate corrupt gzip fixture at runtime by <a
href="https://github.com/nanookclaw"><code>@​nanookclaw</code></a> in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/550">rust-lang/flate2-rs#550</a></li>
<li>Reject oversized gzip extra fields by <a
href="https://github.com/Byron"><code>@​Byron</code></a> in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/553">rust-lang/flate2-rs#553</a></li>
<li>Reject incomplete deflate streams at EOF by <a
href="https://github.com/Guflly"><code>@​Guflly</code></a> in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/556">rust-lang/flate2-rs#556</a></li>
<li>Include <code>README.md</code> in a private module by <a
href="https://github.com/bushrat011899"><code>@​bushrat011899</code></a>
in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/562">rust-lang/flate2-rs#562</a></li>
<li>Add <code>no_std</code> support using nightly <code>alloc_io</code>
by <a
href="https://github.com/bushrat011899"><code>@​bushrat011899</code></a>
in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/559">rust-lang/flate2-rs#559</a></li>
<li>Update <code>get_mut()</code> documentation to make clear how
'inner` can be used by <a
href="https://github.com/Byron"><code>@​Byron</code></a> in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/558">rust-lang/flate2-rs#558</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Vaiz"><code>@​Vaiz</code></a> made their
first contribution in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/532">rust-lang/flate2-rs#532</a></li>
<li><a
href="https://github.com/MikkelPaulson"><code>@​MikkelPaulson</code></a>
made their first contribution in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/540">rust-lang/flate2-rs#540</a></li>
<li><a href="https://github.com/oscargus"><code>@​oscargus</code></a>
made their first contribution in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/543">rust-lang/flate2-rs#543</a></li>
<li><a
href="https://github.com/nanookclaw"><code>@​nanookclaw</code></a> made
their first contribution in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/550">rust-lang/flate2-rs#550</a></li>
<li><a href="https://github.com/Guflly"><code>@​Guflly</code></a> made
their first contribution in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/556">rust-lang/flate2-rs#556</a></li>
<li><a
href="https://github.com/bushrat011899"><code>@​bushrat011899</code></a>
made their first contribution in <a
href="https://redirect.github.com/rust-lang/flate2-rs/pull/562">rust-lang/flate2-rs#562</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rust-lang/flate2-rs/compare/1.1.9...1.1.10">https://github.com/rust-lang/flate2-rs/compare/1.1.9...1.1.10</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/rust-lang/flate2-rs/commit/ed93d4fc60eaf876c6aded741bf992d524551930"><code>ed93d4f</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/flate2-rs/issues/558">#558</a>
from rust-lang/lib-doc-update</li>
<li><a
href="https://github.com/rust-lang/flate2-rs/commit/fb5228dcd7ca7f4ffb2240e6aec8547b85064c9a"><code>fb5228d</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/flate2-rs/issues/559">#559</a>
from bushrat011899/no_std</li>
<li><a
href="https://github.com/rust-lang/flate2-rs/commit/6ed3ba32e321bd6865df6d4ec96d2550c11e50f0"><code>6ed3ba3</code></a>
Add executable <code>no_std</code> example</li>
<li><a
href="https://github.com/rust-lang/flate2-rs/commit/faed8a04671a608efda8ae3520844889210ada95"><code>faed8a0</code></a>
Expand CI to test <code>no_std</code> compatibility and correctness</li>
<li><a
href="https://github.com/rust-lang/flate2-rs/commit/2ba8e7e6663bb173782c2c96d1203bed098aadf3"><code>2ba8e7e</code></a>
Add unstable <code>no_std</code> support behind
<code>flate2_unstable_nightly_alloc_io</code></li>
<li><a
href="https://github.com/rust-lang/flate2-rs/commit/3fe11268ccbb777e22a8352aa95307af72fa8ee9"><code>3fe1126</code></a>
Centralize usage of <code>std</code> for <code>error</code> and
<code>io</code></li>
<li><a
href="https://github.com/rust-lang/flate2-rs/commit/98e313a26ff137b0d79eb55f192911c80862d6d5"><code>98e313a</code></a>
Add <code>GzHeader::mtime_as_duration</code></li>
<li><a
href="https://github.com/rust-lang/flate2-rs/commit/064296528d679f3aef0ca11b8ca0e2cad21b283d"><code>0642965</code></a>
Switch to <code>core</code> implicit prelude and only use
<code>std</code> where required</li>
<li><a
href="https://github.com/rust-lang/flate2-rs/commit/454a63ce8ac5891d938ecf372a537e17e5cae586"><code>454a63c</code></a>
Remove left-over <code>dbg!</code> statement</li>
<li><a
href="https://github.com/rust-lang/flate2-rs/commit/2a490b7df96326c34a8ea75b2930eab4851cac1e"><code>2a490b7</code></a>
Add <code>runtime_detection</code> feature</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-lang/flate2-rs/compare/1.1.9...1.1.10">compare
view</a></li>
</ul>
</details>
<br />

Updates `indexmap` from 2.14.0 to 2.14.1
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md">indexmap's
changelog</a>.</em></p>
<blockquote>
<h2>2.14.1 (2026-08-28)</h2>
<ul>
<li>Simplify comparisons where <code>Equivalent</code> isn't needed
(<code>Q = K</code>).</li>
<li>Unify index assertions for bounds checks.</li>
<li>Fix (or <code>expect</code>) clippy lints.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/indexmap-rs/indexmap/commit/fdf7e1738b3b53869bdc15d666f9b81961041825"><code>fdf7e17</code></a>
Merge pull request <a
href="https://redirect.github.com/indexmap-rs/indexmap/issues/449">#449</a>
from cuviper/release-2.14.1</li>
<li><a
href="https://github.com/indexmap-rs/indexmap/commit/ada540e17cc7d8f38359f7d83c225e38f367c86b"><code>ada540e</code></a>
Release 2.14.1</li>
<li><a
href="https://github.com/indexmap-rs/indexmap/commit/af93b43ecd62d28deb59a6ac23f98bd115475eaf"><code>af93b43</code></a>
expect clippy::redundant_slicing in tests</li>
<li><a
href="https://github.com/indexmap-rs/indexmap/commit/c95da18c97d2742fe8731f36e81c1d04f0620c6a"><code>c95da18</code></a>
fix clippy::derivable_impls</li>
<li><a
href="https://github.com/indexmap-rs/indexmap/commit/21963654e41f86f396a2ba6d9582ccd8eb7df52c"><code>2196365</code></a>
fix clippy::useless_vec (and more) in tests</li>
<li><a
href="https://github.com/indexmap-rs/indexmap/commit/1c2be7b00c5bb61f654210355d1e9f0d9be03956"><code>1c2be7b</code></a>
use inherent usize::MAX</li>
<li><a
href="https://github.com/indexmap-rs/indexmap/commit/64f4a06684dd4ed06dc6629dd8bbefc59394b2c9"><code>64f4a06</code></a>
fix clippy::int_plus_one</li>
<li><a
href="https://github.com/indexmap-rs/indexmap/commit/41760c52bbfdd6c7cb43331246c813506d825a49"><code>41760c5</code></a>
fix clippy::map_entry</li>
<li><a
href="https://github.com/indexmap-rs/indexmap/commit/be7ffd0d154c06f76152b6884ee44f88eebe68aa"><code>be7ffd0</code></a>
expect clippy::unnecessary_get_then_check in benches</li>
<li><a
href="https://github.com/indexmap-rs/indexmap/commit/bb35663f7593b37976ed6271c09f747559d646fe"><code>bb35663</code></a>
expect clippy::reversed_empty_ranges in tests</li>
<li>Additional commits viewable in <a
href="https://github.com/indexmap-rs/indexmap/compare/2.14.0...2.14.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `log` from 0.4.33 to 0.4.34
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/log/releases">log's
releases</a>.</em></p>
<blockquote>
<h2>0.4.34</h2>
<h2>What's Changed</h2>
<ul>
<li>doc: Add context-logger utility to README by <a
href="https://github.com/alekseysidorov"><code>@​alekseysidorov</code></a>
in <a
href="https://redirect.github.com/rust-lang/log/pull/735">rust-lang/log#735</a></li>
<li>Add alloc support for boxed loggers by <a
href="https://github.com/malezjaa"><code>@​malezjaa</code></a> in <a
href="https://redirect.github.com/rust-lang/log/pull/737">rust-lang/log#737</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/alekseysidorov"><code>@​alekseysidorov</code></a>
made their first contribution in <a
href="https://redirect.github.com/rust-lang/log/pull/735">rust-lang/log#735</a></li>
<li><a href="https://github.com/malezjaa"><code>@​malezjaa</code></a>
made their first contribution in <a
href="https://redirect.github.com/rust-lang/log/pull/737">rust-lang/log#737</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rust-lang/log/compare/0.4.33...0.4.34">https://github.com/rust-lang/log/compare/0.4.33...0.4.34</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/log/blob/master/CHANGELOG.md">log's
changelog</a>.</em></p>
<blockquote>
<h2>[0.4.34] - 2026-08-22</h2>
<h2>What's Changed</h2>
<ul>
<li>doc: Add context-logger utility to README by <a
href="https://github.com/alekseysidorov"><code>@​alekseysidorov</code></a>
in <a
href="https://redirect.github.com/rust-lang/log/pull/735">rust-lang/log#735</a></li>
<li>Add alloc support for boxed loggers by <a
href="https://github.com/malezjaa"><code>@​malezjaa</code></a> in <a
href="https://redirect.github.com/rust-lang/log/pull/737">rust-lang/log#737</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/alekseysidorov"><code>@​alekseysidorov</code></a>
made their first contribution in <a
href="https://redirect.github.com/rust-lang/log/pull/735">rust-lang/log#735</a></li>
<li><a href="https://github.com/malezjaa"><code>@​malezjaa</code></a>
made their first contribution in <a
href="https://redirect.github.com/rust-lang/log/pull/737">rust-lang/log#737</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rust-lang/log/compare/0.4.33...0.4.34">https://github.com/rust-lang/log/compare/0.4.33...0.4.34</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/rust-lang/log/commit/8034743dd9d7f7583bd9a670271483d176130911"><code>8034743</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/log/issues/738">#738</a>
from rust-lang/cargo/0.4.34</li>
<li><a
href="https://github.com/rust-lang/log/commit/7d1e24e3506d4ffa1badf6c9ea357779877adaf0"><code>7d1e24e</code></a>
prepare for 0.4.34 release</li>
<li><a
href="https://github.com/rust-lang/log/commit/3b939b6714616dc32193c12019861c7c518c5edb"><code>3b939b6</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/log/issues/737">#737</a>
from malezjaa/master</li>
<li><a
href="https://github.com/rust-lang/log/commit/b88266cfed8b287f8c35b2015808b09b056f61af"><code>b88266c</code></a>
Add alloc support for boxed loggers</li>
<li><a
href="https://github.com/rust-lang/log/commit/037d7a58f6ad184abb3afc4db81d37c43a5696ec"><code>037d7a5</code></a>
doc: Add context-logger utility to README</li>
<li>See full diff in <a
href="https://github.com/rust-lang/log/compare/0.4.33...0.4.34">compare
view</a></li>
</ul>
</details>
<br />

Updates `uuid` from 1.24.1 to 1.26.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/uuid-rs/uuid/releases">uuid's
releases</a>.</em></p>
<blockquote>
<h2>v1.26.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add ContextV7::with_additional_precision_bits by <a
href="https://github.com/ChrisJr404"><code>@​ChrisJr404</code></a> in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/904">uuid-rs/uuid#904</a></li>
<li>Prepare for 1.26.0 release by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/905">uuid-rs/uuid#905</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/uuid-rs/uuid/compare/1.25.0...v1.26.0">https://github.com/uuid-rs/uuid/compare/1.25.0...v1.26.0</a></p>
<h2>1.25.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add a serde::bytes module that encodes a Uuid as a byte string by <a
href="https://github.com/ChrisJr404"><code>@​ChrisJr404</code></a> in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/902">uuid-rs/uuid#902</a></li>
<li>Prepare for 1.25.0 release by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/903">uuid-rs/uuid#903</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/ChrisJr404"><code>@​ChrisJr404</code></a> made
their first contribution in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/902">uuid-rs/uuid#902</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/uuid-rs/uuid/compare/v1.24.1...1.25.0">https://github.com/uuid-rs/uuid/compare/v1.24.1...1.25.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/uuid-rs/uuid/commit/cdc96a87bddc38d0eb8f894c764e151d2299b4b3"><code>cdc96a8</code></a>
Merge pull request <a
href="https://redirect.github.com/uuid-rs/uuid/issues/905">#905</a> from
uuid-rs/cargo/v1.26.0</li>
<li><a
href="https://github.com/uuid-rs/uuid/commit/34e4f49c0d50c12f1b3021baf98b8fb91f6407bb"><code>34e4f49</code></a>
don't test macros under miri</li>
<li><a
href="https://github.com/uuid-rs/uuid/commit/d9e7242b37755d844d19fa74559a88e1c46c5206"><code>d9e7242</code></a>
update nightly used for miri</li>
<li><a
href="https://github.com/uuid-rs/uuid/commit/ec16819865b89aa3c52456c8afd0ce9a90f0fcdb"><code>ec16819</code></a>
prepare for 1.26.0 release</li>
<li><a
href="https://github.com/uuid-rs/uuid/commit/162cd208a4521138f1d8ce05b63342ba7ba5c4e6"><code>162cd20</code></a>
Merge pull request <a
href="https://redirect.github.com/uuid-rs/uuid/issues/904">#904</a> from
ChrisJr404/v7-additional-precision-bits</li>
<li><a
href="https://github.com/uuid-rs/uuid/commit/97eceffa708f87969792af604291d3e4984dfc90"><code>97eceff</code></a>
Add ContextV7::with_additional_precision_bits for microsecond
clocks</li>
<li><a
href="https://github.com/uuid-rs/uuid/commit/302e0bf6dc5abf949c06973a37f1f3a093cc2699"><code>302e0bf</code></a>
Merge pull request <a
href="https://redirect.github.com/uuid-rs/uuid/issues/903">#903</a> from
uuid-rs/cargo/1.25.0</li>
<li><a
href="https://github.com/uuid-rs/uuid/commit/b7ccde885d770d013f413a2685ebe7f38932e1d0"><code>b7ccde8</code></a>
prepare for 1.25.0 release</li>
<li><a
href="https://github.com/uuid-rs/uuid/commit/c62dffbc038034ff045f3009f2536362e313bf34"><code>c62dffb</code></a>
Merge pull request <a
href="https://redirect.github.com/uuid-rs/uuid/issues/902">#902</a> from
ChrisJr404/serde-bytes-module</li>
<li><a
href="https://github.com/uuid-rs/uuid/commit/8c198b24b1aa55948c0fa4b3433c1954be19c8c8"><code>8c198b2</code></a>
Add a serde::bytes module that encodes as a byte string</li>
<li>See full diff in <a
href="https://github.com/uuid-rs/uuid/compare/v1.24.1...v1.26.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `crc32fast` from 1.5.0 to 1.5.1
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/srijs/rust-crc32fast/commit/a150f65ce810793293d5c9dd815f4510eb6d8e4c"><code>a150f65</code></a>
release 1.5.1</li>
<li><a
href="https://github.com/srijs/rust-crc32fast/commit/f066e8d618506d12b92cc46286b07929d4dd704e"><code>f066e8d</code></a>
perf(simd): widen x86 folds, add ARM 3-way, and speed up small inputs
(<a
href="https://redirect.github.com/srijs/rust-crc32fast/issues/56">#56</a>)</li>
<li><a
href="https://github.com/srijs/rust-crc32fast/commit/d5c123d00d5a0236b92acc56f984a5a8a5c7baf5"><code>d5c123d</code></a>
consolidate dword load in baseline implementation (<a
href="https://redirect.github.com/srijs/rust-crc32fast/issues/55">#55</a>)</li>
<li><a
href="https://github.com/srijs/rust-crc32fast/commit/50e2046cbb5d4f1844931302b9cd9636694d88ec"><code>50e2046</code></a>
downgrade msrv ci run to just cargo build</li>
<li>See full diff in <a
href="https://github.com/srijs/rust-crc32fast/compare/v1.5.0...v1.5.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `twox-hash` from 2.1.3 to 2.1.4
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/shepmaster/twox-hash/blob/main/CHANGELOG.md">twox-hash's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/shepmaster/twox-hash/tree/v2.1.4">2.1.4</a> -
2026-08-27</h2>
<h3>Changed</h3>
<ul>
<li>Documentation added about the stability of the hashing
algorithms.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/shepmaster/twox-hash/commit/6f866bffe73900c63df2650be4eed41e3ed9b500"><code>6f866bf</code></a>
Release version 2.1.4</li>
<li><a
href="https://github.com/shepmaster/twox-hash/commit/bcfd930faa13eecefcb2ea5f2f9590226a5f2380"><code>bcfd930</code></a>
Update the changelog</li>
<li><a
href="https://github.com/shepmaster/twox-hash/commit/188f698293fb319b8fdb0ceba004411bb5fdd2ca"><code>188f698</code></a>
Merge pull request <a
href="https://redirect.github.com/shepmaster/twox-hash/issues/125">#125</a>
from shepmaster/32-bit-consistency</li>
<li><a
href="https://github.com/shepmaster/twox-hash/commit/e37e1efe56004aa73850153d22fdf57d4ea7c005"><code>e37e1ef</code></a>
Document the stability of the algorithms and caveats</li>
<li><a
href="https://github.com/shepmaster/twox-hash/commit/a08cde9f58c7bd1836383e631e647bcd93d0e63d"><code>a08cde9</code></a>
Run the tests on a 32-bit platform (via Miri)</li>
<li><a
href="https://github.com/shepmaster/twox-hash/commit/9cba5445a3f8033e4fb1d64f85344c0955f2200c"><code>9cba544</code></a>
Adjust test to compile when usize is 32-bit</li>
<li><a
href="https://github.com/shepmaster/twox-hash/commit/6f8020e3bb1a356bd944601860c0a0d140c97066"><code>6f8020e</code></a>
Merge pull request <a
href="https://redirect.github.com/shepmaster/twox-hash/issues/126">#126</a>
from shepmaster/maint</li>
<li><a
href="https://github.com/shepmaster/twox-hash/commit/a001afbde265f4770fd4eb31ab243224c55ac311"><code>a001afb</code></a>
Upgrade GHA to actions/checkout@v7</li>
<li><a
href="https://github.com/shepmaster/twox-hash/commit/4c480b6acef2d851bc8fdc7c7d80b626bb7dda1e"><code>4c480b6</code></a>
Apply some extra Clippy lints</li>
<li>See full diff in <a
href="https://github.com/shepmaster/twox-hash/compare/v2.1.3...v2.1.4">compare
view</a></li>
</ul>
</details>
<br />

Updates `syn` from 3.0.3 to 3.0.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/syn/releases">syn's
releases</a>.</em></p>
<blockquote>
<h2>3.0.4</h2>
<ul>
<li>Allow <code>safe fn</code> in <code>impl Parse for
ForeignItemFn</code> (<a
href="https://redirect.github.com/dtolnay/syn/issues/2078">#2078</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/dtolnay/syn/commit/b5d62a6e43a29418e118b7bcb48e211cefc0154f"><code>b5d62a6</code></a>
Release 3.0.4</li>
<li><a
href="https://github.com/dtolnay/syn/commit/abf019cbcba61164c626a1bc4ea6f04653c02a5c"><code>abf019c</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/syn/issues/2078">#2078</a>
from dtolnay/foreginitemfn</li>
<li><a
href="https://github.com/dtolnay/syn/commit/d454333f5bb73f2e0e235bdefff50809342f1485"><code>d454333</code></a>
Allow safe fn in impl Parse for ForeignItemFn</li>
<li><a
href="https://github.com/dtolnay/syn/commit/8011b1c512dbe87c6b09627790735ecdaa65c0db"><code>8011b1c</code></a>
Update test suite to nightly-2026-08-18</li>
<li><a
href="https://github.com/dtolnay/syn/commit/56a8d83b8f313b4a111fc44f7f223a574d918af5"><code>56a8d83</code></a>
Raise rayon thread size for tests</li>
<li><a
href="https://github.com/dtolnay/syn/commit/f2c5c50200c1f056adc422e231819c8e4374bdfa"><code>f2c5c50</code></a>
Ignore assert_is_empty pedantic clippy lint</li>
<li><a
href="https://github.com/dtolnay/syn/commit/0eba76daa24b574fc0d93e91cf575584228d2ed4"><code>0eba76d</code></a>
Update test suite to nightly-2026-08-05</li>
<li><a
href="https://github.com/dtolnay/syn/commit/baaebce9776c4963f093334aae5d8899d1a056f6"><code>baaebce</code></a>
Update test suite to nightly-2026-07-25</li>
<li><a
href="https://github.com/dtolnay/syn/commit/b886a38eb4ef97f40b5592d7d048f56f6a6b45f1"><code>b886a38</code></a>
Update test suite to nightly-2026-07-24</li>
<li><a
href="https://github.com/dtolnay/syn/commit/3c41416b4ca7b07d6c3d7b71189e277369679858"><code>3c41416</code></a>
Update test suite to nightly-2026-07-23</li>
<li>See full diff in <a
href="https://github.com/dtolnay/syn/compare/3.0.3...3.0.4">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…e#24845)

Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.86.5 to 2.87.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.87.1</h2>
<ul>
<li>
<p>Update <code>uv@latest</code> to 0.12.7.</p>
</li>
<li>
<p>Update <code>typos@latest</code> to 1.49.1.</p>
</li>
<li>
<p>Update <code>syft@latest</code> to 1.51.1.</p>
</li>
<li>
<p>Update <code>prek@latest</code> to 0.5.0.</p>
</li>
<li>
<p>Update <code>d2@latest</code> to 0.8.2.</p>
</li>
<li>
<p>Update <code>cargo-zigbuild@latest</code> to 0.23.3.</p>
</li>
<li>
<p>Update <code>cargo-rdme@latest</code> to 2.2.2.</p>
</li>
<li>
<p>Update <code>biome@latest</code> to 2.5.11.</p>
</li>
</ul>
<h2>2.87.0</h2>
<ul>
<li>
<p>Support <code>kache</code>. (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1980">#1980</a>,
thanks <a
href="https://github.com/ChrisJr404"><code>@​ChrisJr404</code></a>)</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.30.1.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.12.6.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2026.8.14.</p>
</li>
<li>
<p>Update <code>editorconfig-checker@latest</code> to 3.11.2.</p>
</li>
</ul>
<h2>2.86.8</h2>
<ul>
<li>
<p>Update <code>wasmtime@latest</code> to 48.0.1.</p>
</li>
<li>
<p>Update <code>wasm-tools@latest</code> to 1.258.0.</p>
</li>
<li>
<p>Update <code>oxfmt@latest</code> to 1.80.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2026.8.12.</p>
</li>
<li>
<p>Update <code>kingfisher@latest</code> to 2.0.0.</p>
</li>
<li>
<p>Update <code>cargo-zigbuild@latest</code> to 0.23.2.</p>
</li>
</ul>
<h2>2.86.7</h2>
<ul>
<li>
<p>Update <code>tombi@latest</code> to 1.4.1.</p>
</li>
<li>
<p>Update <code>rafn@latest</code> to 0.1.5.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.22.0.</p>
</li>
</ul>
<h2>2.86.6</h2>
<ul>
<li>Update <code>dprint@latest</code> to 0.56.1.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<h2>[2.87.2] - 2026-08-30</h2>
<ul>
<li>
<p>Update <code>typos@latest</code> to 1.50.0.</p>
</li>
<li>
<p>Update <code>tombi@latest</code> to 1.5.0.</p>
</li>
<li>
<p>Update <code>shfmt@latest</code> to 3.14.0.</p>
</li>
</ul>
<h2>[2.87.1] - 2026-08-29</h2>
<ul>
<li>
<p>Update <code>uv@latest</code> to 0.12.7.</p>
</li>
<li>
<p>Update <code>typos@latest</code> to 1.49.1.</p>
</li>
<li>
<p>Update <code>syft@latest</code> to 1.51.1.</p>
</li>
<li>
<p>Update <code>prek@latest</code> to 0.5.0.</p>
</li>
<li>
<p>Update <code>d2@latest</code> to 0.8.2.</p>
</li>
<li>
<p>Update <code>cargo-zigbuild@latest</code> to 0.23.3.</p>
</li>
<li>
<p>Update <code>cargo-rdme@latest</code> to 2.2.2.</p>
</li>
<li>
<p>Update <code>biome@latest</code> to 2.5.11.</p>
</li>
</ul>
<h2>[2.87.0] - 2026-08-27</h2>
<ul>
<li>
<p>Support <code>kache</code>. (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1980">#1980</a>,
thanks <a
href="https://github.com/ChrisJr404"><code>@​ChrisJr404</code></a>)</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.30.1.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.12.6.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2026.8.14.</p>
</li>
<li>
<p>Update <code>editorconfig-checker@latest</code> to 3.11.2.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/taiki-e/install-action/commit/742a3317eac7bd62f91cd888b4eead5e784ba833"><code>742a331</code></a>
Release 2.87.1</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/c5b69cd73ba573d80324cdcd0b052ca509084b22"><code>c5b69cd</code></a>
Update <code>uv@latest</code> to 0.12.7</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/85e6400c85d74d612698536feafd9e20f40aa257"><code>85e6400</code></a>
Update <code>typos@latest</code> to 1.49.1</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/91f3a12371baac5722df4e5c6d42937d16656ffe"><code>91f3a12</code></a>
Update tombi manifest</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/160f8b13c099dc3c9067e0658c0da7ac925a00ff"><code>160f8b1</code></a>
Update <code>syft@latest</code> to 1.51.1</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/aa48d3e72e94215619c754df53a143cdaabefc8b"><code>aa48d3e</code></a>
Update shfmt manifest</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/06671d277ce58cccc6fe7f9d6509e0327c53f4f3"><code>06671d2</code></a>
Update <code>prek@latest</code> to 0.5.0</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/8060a83f169920516f09e1cf1c58677cec39b6c7"><code>8060a83</code></a>
Update <code>d2@latest</code> to 0.8.2</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/74cae3c341a52a9e510e2f660ed813b801bff6dd"><code>74cae3c</code></a>
Update <code>cargo-zigbuild@latest</code> to 0.23.3</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/a65402f15d24476e19123aafa105daa804db68c0"><code>a65402f</code></a>
Update <code>cargo-rdme@latest</code> to 2.2.2</li>
<li>Additional commits viewable in <a
href="https://github.com/taiki-e/install-action/compare/ba47c86ac325773530516bb756137ac718732518...742a3317eac7bd62f91cd888b4eead5e784ba833">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.86.5&new-version=2.87.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…updates (apache#24844)

Bumps the codeql-actions group with 2 updates in the / directory:
[github/codeql-action/init](https://github.com/github/codeql-action) and
[github/codeql-action/analyze](https://github.com/github/codeql-action).

Updates `github/codeql-action/init` from 4.37.8 to 4.37.9
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action/init's
releases</a>.</em></p>
<blockquote>
<h2>v4.37.9</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.4">2.26.4</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4106">#4106</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action/init's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>4.37.9 - 26 Aug 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.4">2.26.4</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4106">#4106</a></li>
</ul>
<h2>4.37.8 - 21 Aug 2026</h2>
<p>No user facing changes.</p>
<h2>4.37.7 - 13 Aug 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.3">2.26.3</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4085">#4085</a></li>
</ul>
<h2>4.37.6 - 04 Aug 2026</h2>
<ul>
<li>Changed the default filepath for the new remote file address format
that was introduced in CodeQL Action 4.37.0 / 3.37.0 to
<code>.github/codeql-config.yml</code> to align it with the suggested
path that is used elsewhere. <a
href="https://redirect.github.com/github/codeql-action/pull/4070">#4070</a></li>
</ul>
<h2>4.37.5 - 03 Aug 2026</h2>
<ul>
<li>Fixed a bug where a network error while streaming the download of
the CodeQL bundle could terminate the <code>init</code> Action instead
of falling back to downloading the bundle before extracting it. <a
href="https://redirect.github.com/github/codeql-action/pull/4061">#4061</a></li>
</ul>
<h2>4.37.4 - 29 Jul 2026</h2>
<ul>
<li>This version of the CodeQL Action adds support for the
<code>tools</code> input for the <code>codeql-action/init</code> step to
be specified using a <code>github-codeql-tools</code> <a
href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">repository
property</a>. This feature will gradually be rolled out following the
release of this version. Once rolled out, this allows for the CodeQL CLI
version that is used in GitHub-managed workflows, such as Default Setup,
to be set to a custom value. For example, customers who run into issues
with rate limits when a new CodeQL CLI version is released can set the
value to <code>toolcache</code> to always use the CodeQL CLI version
that is available in the runner toolcache. For Advanced Setup workflows,
the value provided for <code>tools</code> in the workflow definition
always takes precedence unless the value of the repository property
starts with <code>!</code>. <a
href="https://redirect.github.com/github/codeql-action/pull/4037">#4037</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.2">2.26.2</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4051">#4051</a></li>
</ul>
<h2>4.37.3 - 22 Jul 2026</h2>
<p>No user facing changes.</p>
<h2>4.37.2 - 21 Jul 2026</h2>
<ul>
<li>The new address format for the <code>config-file</code> input that
was introduced in CodeQL Action 4.37.0 is now enabled by default. In
addition to the format described there, the <code>remote=</code> prefix
can now be used to explicitly indicate that the input refers to a remote
file. All previous input formats continue to be accepted as well. <a
href="https://redirect.github.com/github/codeql-action/pull/4023">#4023</a></li>
<li>The CodeQL Action can now make use of <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">configured
private registries</a> in Default Setup to retrieve CodeQL configuration
files from remote repositories that require authentication. This will
allow customers to store their CodeQL configuration in a single
repository that can then be referenced by Default Setup workflows in
other repositories. We expect to roll this and other, related changes
out to everyone in July. <a
href="https://redirect.github.com/github/codeql-action/pull/4007">#4007</a></li>
</ul>
<h2>4.37.1 - 16 Jul 2026</h2>
<ul>
<li><em>Upcoming breaking change</em>: Add a deprecation warning for
customers using CodeQL version 2.20.6 and earlier. These versions of
CodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise
Server 3.16, and will be unsupported by the next minor release of the
CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3956">#3956</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.1">2.26.1</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4019">#4019</a></li>
</ul>
<h2>4.37.0 - 08 Jul 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.0">2.26.0</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3995">#3995</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/cdf488f595d80d6e07e03d4674febd5ab45fa938"><code>cdf488f</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4107">#4107</a>
from github/update-v4.37.9-920ba7cd1</li>
<li><a
href="https://github.com/github/codeql-action/commit/7243f38558d187dde99730d224bb47aa26a95306"><code>7243f38</code></a>
Update changelog for v4.37.9</li>
<li><a
href="https://github.com/github/codeql-action/commit/920ba7cd1596037e042122c00381eb16b397d68e"><code>920ba7c</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4106">#4106</a>
from github/update-bundle/codeql-bundle-v2.26.4</li>
<li><a
href="https://github.com/github/codeql-action/commit/ecfa6e16817b8f490bc9a59baa391baf4fa3e3c2"><code>ecfa6e1</code></a>
Add changelog note</li>
<li><a
href="https://github.com/github/codeql-action/commit/adcdf4a70d247343cf9c29e0f7a6658b51c3a2b1"><code>adcdf4a</code></a>
Update default bundle to codeql-bundle-v2.26.4</li>
<li><a
href="https://github.com/github/codeql-action/commit/486fec2a3ea2626afcd8c7e9208b4f515078dd7e"><code>486fec2</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4099">#4099</a>
from github/update-supported-enterprise-server-versions</li>
<li><a
href="https://github.com/github/codeql-action/commit/134624c67b20869c2aaa36dafa726375b78a5d76"><code>134624c</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4101">#4101</a>
from github/dependabot/npm_and_yarn/npm-minor-457d82...</li>
<li><a
href="https://github.com/github/codeql-action/commit/ff43db8f982a368288f117354fb8d046e937124c"><code>ff43db8</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4103">#4103</a>
from github/mergeback/v4.37.8-to-main-db488dde</li>
<li><a
href="https://github.com/github/codeql-action/commit/4605e03a74cf891614c4d76f82384a16c1c11816"><code>4605e03</code></a>
Rebuild</li>
<li><a
href="https://github.com/github/codeql-action/commit/099c869cad6bf3b88657154d4ae47ffed27e632d"><code>099c869</code></a>
Update changelog and version after v4.37.8</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938">compare
view</a></li>
</ul>
</details>
<br />

Updates `github/codeql-action/analyze` from 4.37.8 to 4.37.9
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action/analyze's
releases</a>.</em></p>
<blockquote>
<h2>v4.37.9</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.4">2.26.4</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4106">#4106</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action/analyze's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>4.37.9 - 26 Aug 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.4">2.26.4</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4106">#4106</a></li>
</ul>
<h2>4.37.8 - 21 Aug 2026</h2>
<p>No user facing changes.</p>
<h2>4.37.7 - 13 Aug 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.3">2.26.3</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4085">#4085</a></li>
</ul>
<h2>4.37.6 - 04 Aug 2026</h2>
<ul>
<li>Changed the default filepath for the new remote file address format
that was introduced in CodeQL Action 4.37.0 / 3.37.0 to
<code>.github/codeql-config.yml</code> to align it with the suggested
path that is used elsewhere. <a
href="https://redirect.github.com/github/codeql-action/pull/4070">#4070</a></li>
</ul>
<h2>4.37.5 - 03 Aug 2026</h2>
<ul>
<li>Fixed a bug where a network error while streaming the download of
the CodeQL bundle could terminate the <code>init</code> Action instead
of falling back to downloading the bundle before extracting it. <a
href="https://redirect.github.com/github/codeql-action/pull/4061">#4061</a></li>
</ul>
<h2>4.37.4 - 29 Jul 2026</h2>
<ul>
<li>This version of the CodeQL Action adds support for the
<code>tools</code> input for the <code>codeql-action/init</code> step to
be specified using a <code>github-codeql-tools</code> <a
href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">repository
property</a>. This feature will gradually be rolled out following the
release of this version. Once rolled out, this allows for the CodeQL CLI
version that is used in GitHub-managed workflows, such as Default Setup,
to be set to a custom value. For example, customers who run into issues
with rate limits when a new CodeQL CLI version is released can set the
value to <code>toolcache</code> to always use the CodeQL CLI version
that is available in the runner toolcache. For Advanced Setup workflows,
the value provided for <code>tools</code> in the workflow definition
always takes precedence unless the value of the repository property
starts with <code>!</code>. <a
href="https://redirect.github.com/github/codeql-action/pull/4037">#4037</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.2">2.26.2</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4051">#4051</a></li>
</ul>
<h2>4.37.3 - 22 Jul 2026</h2>
<p>No user facing changes.</p>
<h2>4.37.2 - 21 Jul 2026</h2>
<ul>
<li>The new address format for the <code>config-file</code> input that
was introduced in CodeQL Action 4.37.0 is now enabled by default. In
addition to the format described there, the <code>remote=</code> prefix
can now be used to explicitly indicate that the input refers to a remote
file. All previous input formats continue to be accepted as well. <a
href="https://redirect.github.com/github/codeql-action/pull/4023">#4023</a></li>
<li>The CodeQL Action can now make use of <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">configured
private registries</a> in Default Setup to retrieve CodeQL configuration
files from remote repositories that require authentication. This will
allow customers to store their CodeQL configuration in a single
repository that can then be referenced by Default Setup workflows in
other repositories. We expect to roll this and other, related changes
out to everyone in July. <a
href="https://redirect.github.com/github/codeql-action/pull/4007">#4007</a></li>
</ul>
<h2>4.37.1 - 16 Jul 2026</h2>
<ul>
<li><em>Upcoming breaking change</em>: Add a deprecation warning for
customers using CodeQL version 2.20.6 and earlier. These versions of
CodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise
Server 3.16, and will be unsupported by the next minor release of the
CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3956">#3956</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.1">2.26.1</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4019">#4019</a></li>
</ul>
<h2>4.37.0 - 08 Jul 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.0">2.26.0</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3995">#3995</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/cdf488f595d80d6e07e03d4674febd5ab45fa938"><code>cdf488f</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4107">#4107</a>
from github/update-v4.37.9-920ba7cd1</li>
<li><a
href="https://github.com/github/codeql-action/commit/7243f38558d187dde99730d224bb47aa26a95306"><code>7243f38</code></a>
Update changelog for v4.37.9</li>
<li><a
href="https://github.com/github/codeql-action/commit/920ba7cd1596037e042122c00381eb16b397d68e"><code>920ba7c</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4106">#4106</a>
from github/update-bundle/codeql-bundle-v2.26.4</li>
<li><a
href="https://github.com/github/codeql-action/commit/ecfa6e16817b8f490bc9a59baa391baf4fa3e3c2"><code>ecfa6e1</code></a>
Add changelog note</li>
<li><a
href="https://github.com/github/codeql-action/commit/adcdf4a70d247343cf9c29e0f7a6658b51c3a2b1"><code>adcdf4a</code></a>
Update default bundle to codeql-bundle-v2.26.4</li>
<li><a
href="https://github.com/github/codeql-action/commit/486fec2a3ea2626afcd8c7e9208b4f515078dd7e"><code>486fec2</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4099">#4099</a>
from github/update-supported-enterprise-server-versions</li>
<li><a
href="https://github.com/github/codeql-action/commit/134624c67b20869c2aaa36dafa726375b78a5d76"><code>134624c</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4101">#4101</a>
from github/dependabot/npm_and_yarn/npm-minor-457d82...</li>
<li><a
href="https://github.com/github/codeql-action/commit/ff43db8f982a368288f117354fb8d046e937124c"><code>ff43db8</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4103">#4103</a>
from github/mergeback/v4.37.8-to-main-db488dde</li>
<li><a
href="https://github.com/github/codeql-action/commit/4605e03a74cf891614c4d76f82384a16c1c11816"><code>4605e03</code></a>
Rebuild</li>
<li><a
href="https://github.com/github/codeql-action/commit/099c869cad6bf3b88657154d4ae47ffed27e632d"><code>099c869</code></a>
Update changelog and version after v4.37.8</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [blake2](https://github.com/RustCrypto/hashes) from 0.10.6 to
0.11.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/RustCrypto/hashes/commit/fa3084083d946ac12436567d5a59c0935d5db1fa"><code>fa30840</code></a>
blake2 v0.11.0 (<a
href="https://redirect.github.com/RustCrypto/hashes/issues/911">#911</a>)</li>
<li><a
href="https://github.com/RustCrypto/hashes/commit/f6c786d72ed4d37a32dcd32daa2e7277dd4683e1"><code>f6c786d</code></a>
ci: bump the all-deps group across 1 directory with 3 updates (<a
href="https://redirect.github.com/RustCrypto/hashes/issues/896">#896</a>)</li>
<li><a
href="https://github.com/RustCrypto/hashes/commit/7c32a0da089fe53c1294486161766d9338342f7b"><code>7c32a0d</code></a>
jh: add long-input regression tests (<a
href="https://redirect.github.com/RustCrypto/hashes/issues/894">#894</a>)</li>
<li><a
href="https://github.com/RustCrypto/hashes/commit/b1f64e48b5bd800c2584f96f99dd9f10d923d178"><code>b1f64e4</code></a>
blake2: remove SIMD support (<a
href="https://redirect.github.com/RustCrypto/hashes/issues/898">#898</a>)</li>
<li><a
href="https://github.com/RustCrypto/hashes/commit/f72fa5f94f2aaac28cb1e1a3b20f77d129d8e4f7"><code>f72fa5f</code></a>
sha1: add changelog entry for v0.10.7 (<a
href="https://redirect.github.com/RustCrypto/hashes/issues/899">#899</a>)</li>
<li><a
href="https://github.com/RustCrypto/hashes/commit/7fcd22600a70e7e22232409891d228027e22cf98"><code>7fcd226</code></a>
md5: tweak &quot;library name&quot; section in readme (<a
href="https://redirect.github.com/RustCrypto/hashes/issues/890">#890</a>)</li>
<li><a
href="https://github.com/RustCrypto/hashes/commit/01f6276d0b116f55f5262ca4633e19a232d07607"><code>01f6276</code></a>
ci: bump actions/cache from 5 to 6 (<a
href="https://redirect.github.com/RustCrypto/hashes/issues/892">#892</a>)</li>
<li><a
href="https://github.com/RustCrypto/hashes/commit/e499ef4be18015a1b5e1255ef8c5aef05822e885"><code>e499ef4</code></a>
jh: implement SerializableState (<a
href="https://redirect.github.com/RustCrypto/hashes/issues/889">#889</a>)</li>
<li><a
href="https://github.com/RustCrypto/hashes/commit/2b239235d8d43ed810284bab72199d67c14ac2d8"><code>2b23923</code></a>
Release bash-hash v0.1.1 (<a
href="https://redirect.github.com/RustCrypto/hashes/issues/887">#887</a>)</li>
<li><a
href="https://github.com/RustCrypto/hashes/commit/947dfc52da2663ca6984dd70b98bc43a96839fc3"><code>947dfc5</code></a>
bash-hash: fix package metadata and README links (<a
href="https://redirect.github.com/RustCrypto/hashes/issues/886">#886</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/RustCrypto/hashes/compare/blake2-v0.10.6...blake2-v0.11.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=blake2&package-manager=cargo&previous-version=0.10.6&new-version=0.11.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…datafusion-wasm-app with 2 updates (apache#24839)

Bumps the all-npm-deps group in /datafusion/wasmtest/datafusion-wasm-app
with 2 updates: [webpack](https://github.com/webpack/webpack) and
[webpack-cli](https://github.com/webpack/webpack-cli).

Updates `webpack` from 5.109.2 to 5.110.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/webpack/releases">webpack's
releases</a>.</em></p>
<blockquote>
<h2>v5.110.1</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>Fix a capture-group-less <code>snapshot.managedPaths</code> RegExp;
speed up cache writes. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21843">#21843</a>)</p>
</li>
<li>
<p>Throw <code>SyntaxError</code>, or
<code>WebAssembly.CompileError</code>, from an unparsable module. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21847">#21847</a>)</p>
</li>
<li>
<p>Accept the <code>optimization.minimize: true</code> shorthand set by
a plugin in <code>apply()</code>. (by <a
href="https://github.com/AgentEnder"><code>@​AgentEnder</code></a> in <a
href="https://redirect.github.com/webpack/webpack/pull/21845">#21845</a>)</p>
</li>
</ul>
<h2>v5.110.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p>Wrap concatenated modules in lazy <code>__webpack_require__.cw</code>
accessors and inline <code>require()</code>, keeping a wrapped body's
names and side effects intact. (by <a
href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
href="https://redirect.github.com/webpack/webpack/pull/21519">#21519</a>)</p>
</li>
<li>
<p>Add performance hints reporting what a build costs: duplicate
packages and modules, circular dependencies, broad contexts, large
modules and chunks, hotspots, <code>eval</code>, missing PURE
annotations, polyfills, redundant dynamic imports, OS-dependent rules,
cache effectiveness, how chunks load, what splitting refused, why an
optimization was skipped, and rules, defines, externals, aliases and
barrel reexports nothing uses. An oversized asset names its largest
modules, and an entrypoint carrying the runtime recommends
<code>optimization.runtimeChunk</code>. Enable every check not set
individually with <code>performance.all</code>, report hints in stats
only with <code>performance.hints: &quot;stats&quot;</code>, and get
them in a stable order that leaves the build hashes unchanged. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21841">#21841</a>)</p>
</li>
<li>
<p>Add the <code>descriptionRelativePath</code> module rule condition.
(by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21705">#21705</a>)</p>
</li>
<li>
<p>Add OS-independent <code>glob</code> matching to module rules. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21771">#21771</a>)</p>
</li>
<li>
<p>Report inner-graph, AMD and bare <code>module</code> bailouts in
<code>optimizationBailout</code>. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21740">#21740</a>)</p>
</li>
<li>
<p>Allow marking externals as side-effect-free with a
<code>sideEffects</code> flag. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21712">#21712</a>)</p>
</li>
<li>
<p>Give externals the original request of a context module element. (by
<a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21780">#21780</a>)</p>
</li>
<li>
<p>Add the <code>externalsPresets.nodeModules</code> preset with an
<code>allowlist</code> option to externalize installed packages,
replacing the <code>webpack-node-externals</code> plugin. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21569">#21569</a>)</p>
</li>
<li>
<p>Add <code>output.library.umdAmdContainer</code> for an AMD-style
loader branch in UMD. (by <a
href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
href="https://redirect.github.com/webpack/webpack/pull/21770">#21770</a>)</p>
</li>
<li>
<p>Resolve <code>@Custom-Media</code> values that are <code>true</code>
/ <code>false</code> or name another custom media. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21624">#21624</a>)</p>
</li>
<li>
<p>Add the <code>__webpack_css_server_styles__</code> module variable to
read the CSS collected while rendering without a DOM, and keep that CSS
in the order the styles were applied. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21576">#21576</a>)</p>
</li>
<li>
<p>Patch the HTML <code>&lt;head&gt;</code> in place on hot update
instead of forcing a full reload, including when a
<code>&lt;script&gt;</code> that never executed is removed. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21624">#21624</a>)</p>
</li>
<li>
<p>Scope counter names in CSS modules; fix the <code>counter()</code>
counter-style and <code>animation</code> timeline keywords. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21600">#21600</a>)</p>
</li>
<li>
<p>Derive <code>import defer</code> / <code>import source</code> from
the target and fix the source phase. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21810">#21810</a>)</p>
</li>
<li>
<p>Emit analyzable ESM urls for chunks, assets, styles, workers and
wasm. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21788">#21788</a>)</p>
</li>
<li>
<p>Tree shake CommonJS: <code>module.exports</code> object literals,
exports destructured from a <code>require()</code> binding, unused
method requires, and unused side-effect-free <code>require()</code>
calls and reexports. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21841">#21841</a>)</p>
</li>
<li>
<p>Resolve relative entry <code>baseUri</code> values and bake one side
of a hash cycle. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21750">#21750</a>)</p>
</li>
<li>
<p>Minify CSS further, only where the document is unchanged: shorthands
and box longhands, <code>font-weight</code>,
<code>&lt;position&gt;</code> and <code>font-stretch</code> keywords,
colors (polar, Lab and <code>hsl()</code> converted to hex), numbers,
times, zero units, <code>calc()</code> and every math function the spec
names folded over constants, selector lists, An+B, keyframe selectors,
media-feature ranges, <code>unicode-range</code>,
<code>transition</code> layers, <code>display</code>, transforms,
gradients, font families, identical repeated declarations, and rules an
identical later one makes dead. Abilities are read off the target
browsers, <code>vendorPrefixes</code> adds and drops vendor prefixes for
them, and <code>rewriteCustomProperties</code> shortens custom property
values. Minification never changes whether a declaration parses, and
beautifying keeps every rule. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21841">#21841</a>)</p>
</li>
<li>
<p>Safely minify CSS (with source maps) and HTML assets when
<code>optimization.minimize</code> is enabled, unless a minimizer is
already configured for them, making only transformations an engine
cannot tell apart. Every rewrite is named as an option, so it can be
switched off. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21841">#21841</a>)</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/webpack/blob/main/CHANGELOG.md">webpack's
changelog</a>.</em></p>
<blockquote>
<h2>5.110.1</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>Fix a capture-group-less <code>snapshot.managedPaths</code> RegExp;
speed up cache writes. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21843">#21843</a>)</p>
</li>
<li>
<p>Throw <code>SyntaxError</code>, or
<code>WebAssembly.CompileError</code>, from an unparsable module. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21847">#21847</a>)</p>
</li>
<li>
<p>Accept the <code>optimization.minimize: true</code> shorthand set by
a plugin in <code>apply()</code>. (by <a
href="https://github.com/AgentEnder"><code>@​AgentEnder</code></a> in <a
href="https://redirect.github.com/webpack/webpack/pull/21845">#21845</a>)</p>
</li>
</ul>
<h2>5.110.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p>Wrap concatenated modules in lazy <code>__webpack_require__.cw</code>
accessors and inline <code>require()</code>, keeping a wrapped body's
names and side effects intact. (by <a
href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
href="https://redirect.github.com/webpack/webpack/pull/21519">#21519</a>)</p>
</li>
<li>
<p>Add performance hints reporting what a build costs: duplicate
packages and modules, circular dependencies, broad contexts, large
modules and chunks, hotspots, <code>eval</code>, missing PURE
annotations, polyfills, redundant dynamic imports, OS-dependent rules,
cache effectiveness, how chunks load, what splitting refused, why an
optimization was skipped, and rules, defines, externals, aliases and
barrel reexports nothing uses. An oversized asset names its largest
modules, and an entrypoint carrying the runtime recommends
<code>optimization.runtimeChunk</code>. Enable every check not set
individually with <code>performance.all</code>, report hints in stats
only with <code>performance.hints: &quot;stats&quot;</code>, and get
them in a stable order that leaves the build hashes unchanged. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21841">#21841</a>)</p>
</li>
<li>
<p>Add the <code>descriptionRelativePath</code> module rule condition.
(by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21705">#21705</a>)</p>
</li>
<li>
<p>Add OS-independent <code>glob</code> matching to module rules. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21771">#21771</a>)</p>
</li>
<li>
<p>Report inner-graph, AMD and bare <code>module</code> bailouts in
<code>optimizationBailout</code>. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21740">#21740</a>)</p>
</li>
<li>
<p>Allow marking externals as side-effect-free with a
<code>sideEffects</code> flag. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21712">#21712</a>)</p>
</li>
<li>
<p>Give externals the original request of a context module element. (by
<a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21780">#21780</a>)</p>
</li>
<li>
<p>Add the <code>externalsPresets.nodeModules</code> preset with an
<code>allowlist</code> option to externalize installed packages,
replacing the <code>webpack-node-externals</code> plugin. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21569">#21569</a>)</p>
</li>
<li>
<p>Add <code>output.library.umdAmdContainer</code> for an AMD-style
loader branch in UMD. (by <a
href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
href="https://redirect.github.com/webpack/webpack/pull/21770">#21770</a>)</p>
</li>
<li>
<p>Resolve <code>@Custom-Media</code> values that are <code>true</code>
/ <code>false</code> or name another custom media. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21624">#21624</a>)</p>
</li>
<li>
<p>Add the <code>__webpack_css_server_styles__</code> module variable to
read the CSS collected while rendering without a DOM, and keep that CSS
in the order the styles were applied. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21576">#21576</a>)</p>
</li>
<li>
<p>Patch the HTML <code>&lt;head&gt;</code> in place on hot update
instead of forcing a full reload, including when a
<code>&lt;script&gt;</code> that never executed is removed. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21624">#21624</a>)</p>
</li>
<li>
<p>Scope counter names in CSS modules; fix the <code>counter()</code>
counter-style and <code>animation</code> timeline keywords. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21600">#21600</a>)</p>
</li>
<li>
<p>Derive <code>import defer</code> / <code>import source</code> from
the target and fix the source phase. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21810">#21810</a>)</p>
</li>
<li>
<p>Emit analyzable ESM urls for chunks, assets, styles, workers and
wasm. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21788">#21788</a>)</p>
</li>
<li>
<p>Tree shake CommonJS: <code>module.exports</code> object literals,
exports destructured from a <code>require()</code> binding, unused
method requires, and unused side-effect-free <code>require()</code>
calls and reexports. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21841">#21841</a>)</p>
</li>
<li>
<p>Resolve relative entry <code>baseUri</code> values and bake one side
of a hash cycle. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21750">#21750</a>)</p>
</li>
<li>
<p>Minify CSS further, only where the document is unchanged: shorthands
and box longhands, <code>font-weight</code>,
<code>&lt;position&gt;</code> and <code>font-stretch</code> keywords,
colors (polar, Lab and <code>hsl()</code> converted to hex), numbers,
times, zero units, <code>calc()</code> and every math function the spec
names folded over constants, selector lists, An+B, keyframe selectors,
media-feature ranges, <code>unicode-range</code>,
<code>transition</code> layers, <code>display</code>, transforms,
gradients, font families, identical repeated declarations, and rules an
identical later one makes dead. Abilities are read off the target
browsers, <code>vendorPrefixes</code> adds and drops vendor prefixes for
them, and <code>rewriteCustomProperties</code> shortens custom property
values. Minification never changes whether a declaration parses, and
beautifying keeps every rule. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21841">#21841</a>)</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/webpack/webpack/commit/0b2952e15bb1aa9a198acbbfdcb9a0dc1aabb5af"><code>0b2952e</code></a>
chore(release): new release (<a
href="https://redirect.github.com/webpack/webpack/issues/21846">#21846</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/2a1fda482086a8d10383554da7a47944c74e2755"><code>2a1fda4</code></a>
fix: throw a SyntaxError from a module that failed to parse (<a
href="https://redirect.github.com/webpack/webpack/issues/21847">#21847</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/281efa6d141274fe5ede946fa49fe81a94b010ce"><code>281efa6</code></a>
test(css): cover a loader-added BOM in the css pipeline (<a
href="https://redirect.github.com/webpack/webpack/issues/21848">#21848</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/36ded2cbb1d490282675f69c05bafc5e57bef3ed"><code>36ded2c</code></a>
fix: accept the optimization.minimize true shorthand after normalization
(<a
href="https://redirect.github.com/webpack/webpack/issues/21">#21</a>...</li>
<li><a
href="https://github.com/webpack/webpack/commit/c15022531a28f2e41c93ac896d3a2c36e3e79116"><code>c150225</code></a>
fix(cache): accept a managedPaths RegExp without a capture group, and
speed u...</li>
<li><a
href="https://github.com/webpack/webpack/commit/3a7c0e6e27f90f9c5e407c18506a5034aabcf27d"><code>3a7c0e6</code></a>
chore(release): new release (<a
href="https://redirect.github.com/webpack/webpack/issues/21545">#21545</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/75891c89c212ec5e5ebbb3d13fba67192ddba678"><code>75891c8</code></a>
chore(changesets): union same-subject entries (<a
href="https://redirect.github.com/webpack/webpack/issues/21841">#21841</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/6b96de733ff1957f599c0c702273c66618027c68"><code>6b96de7</code></a>
feat(config): emit no development source map for library builds (<a
href="https://redirect.github.com/webpack/webpack/issues/21839">#21839</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/ff0c83234322f051b7f509a7176243356f9b9346"><code>ff0c832</code></a>
feat(css,html): reach embedded source from cssMinify and htmlMinify (<a
href="https://redirect.github.com/webpack/webpack/issues/21838">#21838</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/06bedfbd2a8b0c63078b6e1789b5f769174acfb6"><code>06bedfb</code></a>
chore(deps): bump test/wpt in the dependencies group (<a
href="https://redirect.github.com/webpack/webpack/issues/21836">#21836</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/webpack/webpack/compare/v5.109.2...v5.110.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `webpack-cli` from 7.2.2 to 7.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/webpack-cli/releases">webpack-cli's
releases</a>.</em></p>
<blockquote>
<h2>webpack-cli@7.2.3</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>fix: resolve the <code>webpack-dev-server</code> type from its
default export, so the types work with both v5 and v6 (by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/webpack/webpack-cli/pull/4834">#4834</a>)</p>
</li>
<li>
<p>feat: allow <code>toml@5</code> as a peer dependency for TOML
configuration files (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4837">#4837</a>)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/webpack-cli/blob/main/CHANGELOG.md">webpack-cli's
changelog</a>.</em></p>
<blockquote>
<h2>7.2.3</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>fix: resolve the <code>webpack-dev-server</code> type from its
default export, so the types work with both v5 and v6 (by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/webpack/webpack-cli/pull/4834">#4834</a>)</p>
</li>
<li>
<p>feat: allow <code>toml@5</code> as a peer dependency for TOML
configuration files (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4837">#4837</a>)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/webpack/webpack-cli/commit/7d40e4efdd2d8e8af2b0d7c9f612a8b51b41e3fb"><code>7d40e4e</code></a>
chore(release): new release (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4839">#4839</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/1f6593a8c04b70883620dce821b9f71fbc074387"><code>1f6593a</code></a>
ci: use the input names changesets/action v2 expects (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4838">#4838</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/99cfc4f2497950814a8186e0fadc03b10e277204"><code>99cfc4f</code></a>
build(deps): update dependencies (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4837">#4837</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/11be63414a8ed6f87174392137b1546b72e4aacf"><code>11be634</code></a>
feat(create-webpack-app): stop asking about HTML and CSS (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4836">#4836</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/a2418aa721bd4d1773a9863cd90af818c6cb052b"><code>a2418aa</code></a>
feat(create-webpack-app): use webpack's native CSS and HTML support in
init t...</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/3664b9d8239834f63124783307dd3e93953d6dd9"><code>3664b9d</code></a>
chore: update webpack-dev-server to v6 and test against v5 and v6 (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4834">#4834</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/ce1a2195e4781ba3307157eb8a3694e8a497c977"><code>ce1a219</code></a>
ci: node 26 (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4763">#4763</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/0cfc07773446b110c235e8206ab4e088f74721cd"><code>0cfc077</code></a>
chore(deps): bump changesets/action in the dependencies group (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4831">#4831</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/ef262ebfdf13cd0b56b68db743a937c6a75e575f"><code>ef262eb</code></a>
chore(deps): bump changesets/action in the dependencies group (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4830">#4830</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/d90f5abbe1d1e5d0de1dc03f82cb22ce151f6476"><code>d90f5ab</code></a>
chore: add gitignore to ignore autogenerated build &amp; fix codecov
option (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4828">#4828</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/webpack/webpack-cli/compare/webpack-cli@7.2.2...webpack-cli@7.2.3">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@github-actions github-actions Bot added the core label Sep 1, 2026
2010YOUY01 and others added 11 commits September 2, 2026 01:08
…hen OOM (apache#24785)

## Which issue does this PR close?

<!--
We generally require a GitHub issue to be filed for all bug fixes and
enhancements and this helps us generate change logs for our releases.
You can link an issue to this PR using the GitHub syntax. For example
`Closes apache#123` indicates that this PR will close issue apache#123.
-->

Part of apache#22710

## Rationale for this change

<!--
Why are you proposing this change? If this is already explained clearly
in the issue then this section is not needed.
Explaining clearly why changes are proposed helps reviewers understand
your changes and offer better suggestions for fixes.

Please explain the problem you are trying to solve in terms of the
user-visible
behavior, rather than the implementation.

For example, "The code in `foo.rs` doesn't handle nulls" is a symptom of
the
implementation. "COUNT(DISTINCT) returns wrong results when the column
contains
nulls" is the user-visible problem.
-->
See apache#24486 for the rationale.
That discussion covers the issue and three potential solutions: error,
early-emit, and spill.

This PR implements the early-emit behavior agreed on there.

## What changes are included in this PR?

<!--
There is no need to duplicate the description in the issue here, but it
is sometimes worth providing a summary of the individual changes in this
PR.
-->
Key changes:
In datafusion/physical-plan/src/aggregates/partial_reduce_stream.rs
- top comment explains the high-level ideas
- To understand the implementation, start from `poll_next()` and follow
along

## Are these changes tested?

<!--
We typically require tests for all PRs in order to:
1. Prevent the code from being accidentally broken by subsequent changes
2. Serve as another way to document the expected behavior of the code

If tests are not included in your PR, please explain why (for example,
are they covered by existing tests)?
-->
UTs (note partial-reduce aggregation can't be planned from SQL, so we
can't do sqllogictests here)

## Are there any user-facing changes?

<!--
If there are user-facing changes then we may require documentation to be
updated before approving the PR.

If there are any breaking changes to public APIs, please add the `api
change` label.
-->
No
…pache#23615)

## Which issue does this PR close?

- Closes apache#14943.

Revives apache#21870, which was closed by the stale bot. The direction was
agreed in that thread, and `sql_planner` was benchmarked there
([results](apache#21870 (comment)),
no measurable change).

## Rationale for this change

`SimplifyExpressions` disables canonicalization for `LogicalPlan::Join`
(see apache#8780), so the AND/OR dedup in `expr_contains_inner` cannot
recognize duplicates that differ only by commutative operand order (`A =
B` vs `B = A`). Simplifying inside a join filter, the delta-rs MERGE
case reported in apache#14943, keeps the duplicate across simplifier cycles
because nothing normalizes operand order first.

The issue thread pointed at the fix: CSE already dedups `A = B` / `B =
A` via `NormalizeEq`, so this routes the simplifier's leaf comparison
through the same trait.

## What changes are included in this PR?

`expr_contains_inner` compares leaves with `Expr::normalize_eq` instead
of `==`. `NormalizeEq` handles `+`, `*`, `&`, `|`, `^`, `=`, and `!=`
commutatively and falls back to structural `==` for everything else.
Non-commutative rules and the existing `!needle.is_volatile()` guard are
unchanged. A regression test covers the `AND`, `OR`, and 3-conjunct
nested forms.

`delete_xor_in_complex_expr` uses `normalize_eq` as well.
`expr_contains` guards the `BitwiseXor` rules, which then hand deletion
off to that helper. Leaving it structural let the guard fire on operands
the helper could not delete, so the rule rebuilt its input and still
reported `Transformed::yes`, spinning the simplifier to its cycle limit
without changing the result. XOR is the only `expr_contains` caller
shaped that way. The other eight return `*left`/`*right` directly, so a
normalized match there is always a real change.

`NormalizeEq for Expr` also now compares scalar/aggregate/window
functions by full identity rather than `name()` alone. It previously
treated two distinct functions that share a display name as equal, so
routing the dedup through it collapsed `regex_udf(x) AND regex_udf(x)`
(two different UDFs, same name) into one predicate. Registry-parsed SQL
reuses one instance per name and is unaffected. This only stops merging
genuinely distinct same-named functions, which programmatically built
plans (delta-rs MERGE, the apache#14943 reporter) can produce.

## Are these changes tested?

Each fix has a regression that fails without it.

`test_simplify_swapped_operands_in_and_or_no_canonicalize` fails on
`main` (the duplicate passes through unchanged) and passes with the fix;
the `simplify_expr.slt` cases cover the join path end to end.
`test_simplify_swapped_operands_in_xor_no_canonicalize` pins the cycle
behavior: with `delete_xor_in_complex_expr` left structural it returns
the input unchanged after `cycles=3`, and with the fix it folds to `0`
in `cycles=2`. The existing `test_parameterized_scalar_udf` guards the
function-identity fix.

`datafusion-optimizer`, `datafusion-common`, `datafusion-expr`, and the
full `sqllogictest` suite pass. `cargo fmt`/`clippy -D warnings` are
clean. `sql_planner` shows no measurable change.

## Are there any user-facing changes?

No public API changes. AND/OR and XOR chains containing
commutative-equivalent duplicates now collapse even when the
simplifier's canonicalizer is disabled (currently the
`LogicalPlan::Join` path). Canonicalize-on paths produce the same output
as before.

---------

Signed-off-by: 1fanwang <1fannnw@gmail.com>
Signed-off-by: Stefan Wang <1fannnw@gmail.com>
Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
## Which issue does this PR close?

<!--
We generally require a GitHub issue to be filed for all bug fixes and
enhancements and this helps us generate change logs for our releases.
You can link an issue to this PR using the GitHub syntax. For example
`Closes apache#123` indicates that this PR will close issue apache#123.
-->

- Related apache#24854 .

## Rationale for this change

Reenable test for slt join matrix test, after apache#21585 merged

<!--
Why are you proposing this change? If this is already explained clearly
in the issue then this section is not needed.
Explaining clearly why changes are proposed helps reviewers understand
your changes and offer better suggestions for fixes.

Please explain the problem you are trying to solve in terms of the
user-visible
behavior, rather than the implementation.

For example, "The code in `foo.rs` doesn't handle nulls" is a symptom of
the
implementation. "COUNT(DISTINCT) returns wrong results when the column
contains
nulls" is the user-visible problem.
-->

## What changes are included in this PR?

<!--
There is no need to duplicate the description in the issue here, but it
is sometimes worth providing a summary of the individual changes in this
PR.
-->

## What is the testing strategy for this PR?

<!--
We typically require tests for all PRs in order to:
1. Prevent the code from being accidentally broken by subsequent changes
2. Serve as another way to document the expected behavior of the code

Briefly describe how this PR is tested, and point to the specific tests
you added. For example: 'This new feature is covered by the
`sqllogictest` cases added in `foo.slt`'.

If this PR does not add tests, explain why. For example, if the change
is already covered by existing tests, please mention it.

You should also check the `codecov` bot reply on this PR to confirm the
changed code is exercised.
-->

## Are there any user-facing changes?

<!--
If there are user-facing changes then we may require documentation to be
updated before approving the PR.

If there are any breaking changes to public APIs, please add the `api
change` label.
-->
…oercion (apache#24565)

## Which issue does this PR close?

- Closes apache#24564.

## Rationale for this change

Adds missing support for coercing REE arrays and extracting range
windows from REE arrays.

## What changes are included in this PR?

Added case statements for supporting REE arrays

## Are these changes tested?

Yes a unit test is included.

## Are there any user-facing changes?
No
…anup (apache#24874)

## Which issue does this PR close?

Related to:
- apache#23974

## Rationale for this change
Cleanup the code and remove state

## What changes are included in this PR?
changed `FinalHashAggregateStream` to async generator and remove
unneeded code due to that

The first commit in this PR is `FinalHashAggregateStream`

## Are these changes tested?
existing tests

## Are there any user-facing changes?
nope
…ecks (apache#24800)

## Which issue does this PR close?

- Closes #.

## Rationale for this change

Physical planning asks "is this ordering already satisfied?" constantly
— sort
removal, `EnforceSorting`, `EnforceDistribution`, and the requirement
checks for
windows, joins and aggregates all call into
`EquivalenceProperties::ordering_satisfy`,
`ordering_satisfy_requirement` and
`extract_common_sort_prefix`.

Each of those calls deep-clones the entire `EquivalenceProperties` —
every
equivalence class, every equivalent ordering, and the normalized
ordering cache —
before doing anything else, even when it never modifies the copy.

The clone exists for a real reason: as the check walks a multi-key
ordering left
to right, it registers each satisfied key as a constant so the next key
is
evaluated within that key's tie group. That mutates state, so it needs
its own
copy. But two cases pay for it and get nothing back:

1. **A single-key check never mutates anything.** There is no "next key"
to set up
for, so the whole clone is wasted. This is the most common shape of
these calls.
2. **The last key of *any* check registers constants nobody reads.**
After the
final key is verified, the code still calls
`add_satisfied_key_constants`,
which rebuilds the ordering cache and re-runs ordering discovery — and
then the
   object is dropped.

## What changes are included in this PR?

Two changes in `EquivalenceProperties`, to
`ordering_satisfy_requirement` and
`common_sort_prefix_length` (the latter backs `ordering_satisfy`,
`extract_common_sort_prefix` and `reorder`):

- **Clone on first write instead of up front.** The loop borrows `self`
and clones
only when it actually needs to register a constant. Single-key checks
never
  clone at all.
- **Skip the registration after the last key.** Nothing reads it.

Plus a new criterion benchmark, `equivalence_properties`, covering these
entry
points.

This only changes *when* the copy is made — the results of these
functions are
unchanged.

## Metrics

Apple M4 Pro, rustc 1.97.0, criterion. All changes significant at p =
0.00.

Properties under test: 3 equivalent orderings (`[c0,c1,c2,c3]`,
`[c4,c5]`, `[c6]`)
and a varying number of equivalence classes.

**At 8 equivalence classes:**

| benchmark | before | after | change |
|---|---:|---:|---|
| `ordering_satisfy` — 1 key | 2.72 µs | 0.41 µs | **−84.9%** |
| `ordering_satisfy` — 1 key, unsatisfied | 1.47 µs | 0.41 µs |
**−72.5%** |
| `ordering_satisfy_requirement` — 1 key | 2.70 µs | 0.36 µs |
**−86.3%** |
| `ordering_satisfy_requirement` — 4 keys | 7.15 µs | 6.07 µs | −13.8% |
| `ordering_satisfy` — 4 keys | 6.99 µs | 6.20 µs | −11.6% |
| `extract_common_sort_prefix` — 4 keys | 7.22 µs | 6.38 µs | −9.2% |

**How it scales** (`ordering_satisfy`, 1 key):

| equivalence classes | before | after | change |
|---:|---:|---:|---|
| 2 | 2.44 µs | 0.43 µs | −82.5% |
| 8 | 2.72 µs | 0.41 µs | −84.9% |
| 32 | 4.63 µs | 0.41 µs | **−90.8%** |

Reading the tables: for an *N*-key check the work goes from
`1 clone + N registrations` to `(N > 1 ? 1 : 0) clones + (N − 1)
registrations`.

- **1-key checks** drop both the clone and the registration. Note the
"after"
column is flat at ~0.41 µs regardless of how many equivalence classes
exist —
  with the clone gone, the check no longer scales with the size of the
equivalence group at all. The "before" column does, which is why the win
grows
  from −82% to −91%.
- **Multi-key checks** still clone once and save one of *N*
registrations. Since a
registration rebuilds the ordering cache and re-runs ordering discovery,
that
single saved call is worth 9–14% here, rising to −37.8% for `4_keys` at
32
  classes.

### Reproducing

The benchmark is included in this PR, so reverting just the one source
file gives
you the baseline:

```bash
# baseline: this PR's parent version of the file, with the new benchmark kept
git checkout HEAD^ -- datafusion/physical-expr/src/equivalence/properties/mod.rs
cargo bench -p datafusion-physical-expr --bench equivalence_properties -- --save-baseline before

# with the change
git checkout HEAD -- datafusion/physical-expr/src/equivalence/properties/mod.rs
cargo bench -p datafusion-physical-expr --bench equivalence_properties -- --baseline before
```

The second run prints criterion's own `change: [...] (p = ...)` line per
benchmark.

## Are these changes tested?

No new correctness tests: this does not change what any of these
functions
return, so existing coverage is the right check. Covered by the
`equivalence`
unit tests in `datafusion/physical-expr` and, for plan-shape
regressions, by
sqllogictest — these functions decide whether a `SortExec` can be
removed, so a
behavior change would surface as a diff in an `EXPLAIN` plan.

Full workspace suite
(`--features
avro,json,backtrace,extended_tests,recursive_protection,parquet_encryption`):
10,981 passed, 0 failed, and all 505 sqllogictest files pass.
`./dev/rust_lint.sh`
is clean.

## Are there any user-facing changes?

No. No public API or behavior changes — planning is just faster.
## Which issue does this PR close?

- Closes apache#24871.

## Rationale for this change

Three links in the docs point at pages on our own site that return 404,
so a reader following them from the readings list or the GSoC project
ideas page lands on an error.

## What changes are included in this PR?

- `concepts-readings-events.md`: `blog/2026/03/20/multi-layer-pruning/`
becomes `blog/2026/03/20/limit-pruning/`, and
`blog/2026/02/02/case-expression/` becomes
`blog/2026/02/02/datafusion_case/`. Those are the slugs the two posts
were actually published under.
- `gsoc/gsoc_project_ideas_2025.md`:
`contributor-guide/gsoc_application_guidelines.html` becomes
`contributor-guide/gsoc/gsoc_application_guidelines_2025.html`, matching
the file the GSoC `index.rst` toctree includes.

## What is the testing strategy for this PR?

No tests; this is three URL strings in markdown. Each old URL was
requested and returns 404, each new one returns 200.

## Are there any user-facing changes?

Docs only. Three links that were broken now resolve.

Disclosure: this was written with AI assistance (Claude, via Claude
Code). I verified every URL by request rather than inferring it, and the
issue lists the three further dead links I deliberately did not touch
because the right replacement is your call.
## Which issue does this PR close?

N/A - trivial documentation fix.

## Rationale for this change

`datafusion/sqllogictest/README.md` misspells "sqlite" as "sqllite" in
the instructions for regenerating expected answers. The script it
references is `regenerate_sqlite_files.sh`, so the surrounding prose
should match.

## What changes are included in this PR?

One-word spelling correction in `datafusion/sqllogictest/README.md`.

## Are these changes tested?

No code changes; documentation only.

## Are there any user-facing changes?

No.
This is a *very* minor update to the Cargo.lock file to resolve a
warning when running `cargo audit` as in our CI suite. v0.10.0 was
yanked from crates.io so this bumps to 0.10.2.
## Which issue does this PR close?

- Closes apache#22220.

## Rationale for this change

`array_position` accepts an optional one-based start position. Passing
`-9223372036854775808` currently aborts evaluation with:

```text
datafusion/functions-nested/src/position.rs:210:21:
attempt to subtract with overflow
```

It now returns the normal execution error `start_from out of bounds:
-9223372036854775808`.

## What changes are included in this PR?

The one-based-to-zero-based conversion now uses checked subtraction in
both optimized and generic execution paths.

## What is the testing strategy for this PR?

SQL regressions exercise a scalar start position, a column start
position with a scalar needle, and column start and needle values.

<details>
<summary>Raw results</summary>

```console
$ git checkout upstream/main -- datafusion/functions-nested/src/position.rs
$ cargo test -p datafusion-sqllogictest --test sqllogictests -- array_position
thread 'tokio-rt-worker' panicked at datafusion/functions-nested/src/position.rs:210:21:
attempt to subtract with overflow
Error: Execution("1 failures")

$ git checkout HEAD -- datafusion/functions-nested/src/position.rs
$ cargo test -p datafusion-sqllogictest --test sqllogictests -- array_position
Running with 12 test threads (available parallelism: 12)
Progress: 1/1 files completed (100%)

$ RUST_BACKTRACE=1 cargo test --profile ci \
    --exclude datafusion-examples --exclude datafusion-benchmarks --exclude datafusion-cli \
    --workspace --lib --tests --bins \
    --features avro,json,backtrace,extended_tests,recursive_protection,parquet_encryption
passed=10997 ignored=8
```

</details>

## Are there any user-facing changes?

Yes. An invalid minimum `Int64` start position returns an execution
error instead of panicking.

---------

Signed-off-by: 1fanwang <1fannnw@gmail.com>
…mtest/datafusion-wasm-app (apache#24882)

Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.5 to
3.1.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/fastify/fast-uri/releases">fast-uri's
releases</a>.</em></p>
<blockquote>
<h2>v3.1.7</h2>
<h2>⚠️ Security Warning</h2>
<p>This is a security release that fixes the following high-severity
security advisories:</p>
<ul>
<li><a
href="https://github.com/fastify/fast-uri/security/advisories/GHSA-qw65-cvwx-89v3">GHSA-qw65-cvwx-89v3</a>
— authority injection via an unvalidated port in
<code>serialize()</code></li>
<li><a
href="https://github.com/fastify/fast-uri/security/advisories/GHSA-58mr-gqgx-xq4g">GHSA-58mr-gqgx-xq4g</a>
— host confusion via unbalanced or misplaced IP-literal brackets</li>
</ul>
<p>Users of the v3.x release line should upgrade to v3.1.7.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/fastify/fast-uri/compare/v3.1.6...v3.1.7">https://github.com/fastify/fast-uri/compare/v3.1.6...v3.1.7</a></p>
<h2>v3.1.6</h2>
<h2>⚠️ Security Warning</h2>
<p>This release addresses the following high-severity security
advisories:</p>
<ul>
<li><a
href="https://github.com/fastify/fast-uri/security/advisories/GHSA-5jgf-p345-68v8">GHSA-5jgf-p345-68v8</a>
— host confusion via skipped IDN canonicalization on scheme-relative
references</li>
<li><a
href="https://github.com/fastify/fast-uri/security/advisories/GHSA-fph4-wmhf-6fwf">GHSA-fph4-wmhf-6fwf</a>
— server-side request forgery via repeated hostname
percent-decoding</li>
<li><a
href="https://github.com/fastify/fast-uri/security/advisories/GHSA-f65p-4m7j-42xc">GHSA-f65p-4m7j-42xc</a>
— server-side request forgery via malformed IPv6 normalization</li>
<li><a
href="https://github.com/fastify/fast-uri/security/advisories/GHSA-jqff-g426-hqxp">GHSA-jqff-g426-hqxp</a>
— host confusion via percent-encoded scheme normalization</li>
</ul>
<p>Users of the v3.x release line should upgrade to v3.1.6.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/fastify/fast-uri/compare/v3.1.5...v3.1.6">https://github.com/fastify/fast-uri/compare/v3.1.5...v3.1.6</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fastify/fast-uri/commit/412e40abd4eb8beabfb952d80abf949a2baf27a3"><code>412e40a</code></a>
Bumped v3.1.7</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/9f4c943e4d2133e8d78e0941203879216255bb01"><code>9f4c943</code></a>
fix: backport port and IP-literal validation to v3.x (<a
href="https://redirect.github.com/fastify/fast-uri/issues/216">#216</a>)</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/1eb3ce436fe050807caba79f886ab894f485a588"><code>1eb3ce4</code></a>
fix: treat unterminated bracket hosts as reg-names again (<a
href="https://redirect.github.com/fastify/fast-uri/issues/214">#214</a>)</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/6f970b2951fd896aa0f3a7ff28eeb6640c137d33"><code>6f970b2</code></a>
Bumped v3.1.6</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/d941579a84273ec7e96bde596b1f7a8be447df2a"><code>d941579</code></a>
fix: never run IDN canonicalization on bracketed IP literals</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/c0f0279cf370cb89ee56b04bbcde2a7afbe81aba"><code>c0f0279</code></a>
test: adapt decoded-scheme handler assertion to 3.x (no mailto
scheme)</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/37f3417c82994279656854f83ce938acd81c3862"><code>37f3417</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/607bfbe953f28a14c2e06ae64aff38c81ca2937f"><code>607bfbe</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/ae92a4c5d8c4b6c9e447f048d5fcbde7eebd5514"><code>ae92a4c</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/444ecdad447db2cc23c4d422acc6f0daa6fa8eef"><code>444ecda</code></a>
Merge commit from fork</li>
<li>Additional commits viewable in <a
href="https://github.com/fastify/fast-uri/compare/v3.1.5...v3.1.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fast-uri&package-manager=npm_and_yarn&previous-version=3.1.5&new-version=3.1.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/apache/datafusion/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
discord9 and others added 18 commits September 3, 2026 03:02
## Which issue does this PR close?

- No issue has been filed.

## Rationale for this change

Anonymous nested projections that reuse the same output name can return
wrong results. For example, each `i + 1 AS i` layer must be evaluated
independently, but the projection optimizer could drop one layer when
two consecutive projection expression vectors were structurally equal.

Structural equality does not imply that a projection is safe to elide:
repeated computations such as `i + 1 AS i` have the same expression
shape but must still be evaluated twice.

## What changes are included in this PR?

- Remove the structural-equality fast path that directly elided one of
two consecutive projections.
- Keep the existing iterative whole-chain merge, so deep projection
chains still collapse within one optimizer rule invocation.
- Continue using the normal projection rewrite path, which composes
repeated expressions and preserves aliases and field metadata.
- Add focused regressions for repeated non-idempotent projections,
one-pass collapse of a 12-level chain, and metadata-bearing aliases.
- Add an execution-level SQLLogicTest with six anonymous `i + 1 AS i`
layers under both `max_passes = 1` and the default optimizer
configuration.

## What is the testing strategy for this PR?

The focused unit tests verify that:

- two structurally equal `i + 1 AS i` projections retain both additions;
- a 12-level chain preserves all 12 additions and collapses to one
`Projection` with `max_passes = 1`;
- a metadata-bearing `Alias(Column)` is merged without losing field
metadata.

The SQLLogicTest executes a six-level anonymous projection chain against
a temporary table with both one optimizer pass and the default pass
count.

Verified with:

```text
cargo fmt --all --check
cargo test -p datafusion-optimizer optimize_projections
# 58 passed; 0 failed

cargo test -p datafusion-optimizer --test optimizer_integration
# 26 passed; 0 failed

cargo test --profile ci -p datafusion-sqllogictest --test sqllogictests -- projection.slt
# 1/1 files completed; 0 failures

cargo clippy -p datafusion-optimizer --all-targets --all-features -- -D warnings
# passed

git diff --check
# passed
```

## Are there any user-facing changes?

Yes. Deep anonymous nested projections that reuse an output name now
preserve every projection expression and return the correct result.
There are no public API or configuration changes.

---------

Signed-off-by: discord9 <discord9@163.com>
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
## Which issue does this PR close?

- Closes apache#17910.

## Rationale for this change

For multiple grouping sets, Substrait orders aggregate output as
grouping expressions, measures, then grouping-set ID. DataFusion puts
its internal `__grouping_id` before measures. The consumer applied
`RelCommon.emit` to DataFusion's order, so a mapping such as `[0, 1, 2]`
returned `__grouping_id` where the plan requested its first measure.

See the [Substrait AggregateRel output mapping
specification](https://substrait.io/relations/logical_relations/#aggregate-operation).

## What changes are included in this PR?

- Reorder consumer output to Substrait's direct order before applying
emit mappings.
- Emit a producer mapping back to DataFusion's aggregate order.
- Deduplicate producer grouping expressions used by grouping references.
- Test both issue reproducer and two-measure roundtrip.

## Are these changes tested?

- `cargo test -p datafusion-substrait --features protoc`
- `cargo clippy --all-targets --all-features -- -D warnings`

## Are there any user-facing changes?

Substrait plans with multiple grouping sets now return emitted columns
in specified order. No public API change.
…4732)

## Which issue does this PR close?

Related to apache#6899 — adds benchmark coverage for the WindowTopN operators.

  ## Rationale for this change

The existing `h2o --subgroup window` Top-N sweep (q13–q29) registers `x`
with no declared ordering, so `output_ordering()` is `None`. Any plan
that depends on the input being sorted is unreachable from those
queries, however the data happens to be laid out on disk. This adds a
`window_sorted` subgroup that publishes the same sweep over a `WITH
ORDER` table, so ordering-dependent plans can be measured.

  ## What changes are included in this PR?

A `window_sorted` h2o subgroup: 16 queries covering ROW_NUMBER / RANK /
DENSE_RANK × 100 / 1K / 10K / 100K partitions, plus heavy-ties variants.

- Two `load` directives: the existing
`load_window_${SIZE}_${FORMAT}.sql` creates `x`, then a new script
writes a sorted copy via `COPY (... ORDER BY pk, ob DESC)` and registers
it `WITH ORDER (pk ASC, ob DESC)`. Reusing the existing loader keeps
both the `--size` and `--format` axes working with no duplication.
`load` is untimed, so the sort stays out of the measurement.
- `WITH ORDER` can only name columns, so the partition key (`id3 % N`)
and the tie expression are materialized as `pk` and `ob`.
- Asserts guard the three ways this could silently measure nothing: both
config flags took effect, the sorted copy holds every source row, and
`ob` has the cardinality the query name claims.
- `expect_plan PartitionedTopKExec` is deliberately the shared
substring, so the same file validates the heap operator and any
streaming variant that replaces it.

  No Rust changes; benchmark files only.

  ## Are these changes tested?

`benchmark_runner h2o --subgroup window_sorted` runs all 16 queries
green. Row counts are exact: 2 per partition for the distinct-ORDER-BY
shapes, and 1,010,812 (RANK) / 2,020,722 (DENSE_RANK) for the tie shapes
— the top-1 and top-2 of 10 distinct values over 10M rows.

  ## Are there any user-facing changes?

  No.
…ssions (apache#24720)

## Which issue does this PR close?

- Closes apache#24678.

## Rationale for this change

A column alias denotes one value per row, and `WHERE p` may only return
rows for which `p` held for that row. Today the leaf-expression
extraction passes break both:

```sql
SELECT s, s['a'] AS field
FROM (SELECT named_struct('a', random()) AS s FROM generate_series(1, 3));
```

| `s['a']` | `field` |
|---|---|
| 0.5159112071865757 | 0.4514238291986653 |
| 0.0029104680074608646 | 0.28979983332288195 |
| 0.48542729227457915 | 0.04499392663566881 |

`field` is defined as `s['a']` but differs from it on every row, because
the plan is

```
Projection: named_struct(Utf8("a"), random()) AS s, random() AS field
```

The `Filter` form is worse — it returns rows that fail their own
predicate:

```sql
SELECT bool_and(s['a'] > 0.5)
FROM (SELECT s FROM (SELECT named_struct('a', random()) AS s FROM generate_series(1, 1000))
      WHERE s['a'] > 0.5);
-- false; the predicate tested a different draw than the one in the returned `s`
```

Setting `datafusion.optimizer.enable_leaf_expression_pushdown = false`
returns the correct answer in both cases, so the rewrite alone changes
the meaning of the query.

**Root cause.** `build_extraction_projection_impl` merges an extraction
into the input projection by resolving column references through
`build_projection_replace_map`, i.e. by inlining each referenced
column's *defining* expression. Inlining a volatile definition produces
a second, independent evaluation. There was no volatility check in the
file.

This is the same invariant
`FileScanConfig::try_swapping_with_projection` already enforces for the
physical projection-pushdown path via `would_duplicate_costly_exprs`
(apache#23220) — the logical extraction path was missing it.

## What changes are included in this PR?

- `volatile_output_columns()` — a projection's output columns whose
definition is volatile.
- `would_duplicate_volatile()` — true when an extraction references one
of them.
- The guard is applied at the three places that can merge into an input
projection: `extract_from_plan` (pass 1:
Filter/Sort/Limit/Aggregate/Join), `split_and_push_projection` (pass 2),
and `try_push_into_inputs` (multi-input/Union routing). Each already had
a "leave the plan alone" return path.

The guard is targeted rather than blanket: for `ORDER BY s['a']` the
extraction still happens, stacked above the volatile projection instead
of merged into it, so the optimization is kept and the result is
correct.

### Relationship to apache#23691

@fornwall wondered on the issue whether apache#23691 already covers this. I
checked out that branch and ran both shapes against it: `SELECT s,
s['a']` is incidentally fixed there, but `WHERE s['a'] > 0.5` still
duplicates `random()` and still returns rows failing the predicate.
apache#23691 guards `KeepInPlace` *compute cost* in
`split_and_push_projection` only; volatility is a separate concern (one
duplication is already wrong, regardless of cost or placement) and pass
1 is a different code path. The two changes look independent to me and I
believe they compose, but I'd appreciate a second opinion on that from
whoever reviews apache#23691.

## Are these changes tested?

Yes.

- `datafusion/sqllogictest/test_files/projection_pushdown.slt` — a new
section beside the existing apache#23220 volatile section: two `EXPLAIN`s
pinning `random()` to a single occurrence, and two deterministic
`bool_and(...)` correctness queries. All four fail on `main` and pass
here.
- Two rule-level snapshot tests in `extract_leaf_expressions.rs`
covering the pass-2 projection merge and the pass-1 `Filter` extraction,
using a new test-only `PlacementTestUDF::with_volatility()`.

`cargo test -p datafusion-optimizer` (796), `cargo test -p datafusion
--lib --tests` (2049) and the full 504-file sqllogictest suite all pass;
`cargo fmt --all` and `cargo clippy --all-targets --all-features -- -D
warnings` are clean.

## Are there any user-facing changes?

Queries that were silently returning wrong results now return correct
ones. No API change. In the affected shapes the extraction is skipped,
which can cost a small amount of column pruning — only when the
referenced column is defined by a volatile expression.

---

<sub>Per the ASF generative-tooling policy and DataFusion's AI-assisted
contribution guidance: this patch was prepared with AI assistance. The
core idea is the one described above — the merge path inlines a
referenced column's defining expression, which duplicates a volatile
definition — and the open question about how this composes with apache#23691
is flagged deliberately rather than glossed over.</sub>
…24630) (apache#24633)

## Which issue does this PR close?

<!--
We generally require a GitHub issue to be filed for all bug fixes and
enhancements and this helps us generate change logs for our releases.
You can link an issue to this PR using the GitHub syntax. For example
`Closes apache#123` indicates that this PR will close issue apache#123.
-->

- Closes #apache#24630.

## Rationale for this change
Improve the `DataFrame::from_columns` API and give users more
flexibility when constructing a `DataFrame` from columns.
<!--
Why are you proposing this change? If this is already explained clearly
in the issue then this section is not needed.
Explaining clearly why changes are proposed helps reviewers understand
your changes and offer better suggestions for fixes.

Please explain the problem you are trying to solve in terms of the
user-visible
behavior, rather than the implementation.

For example, "The code in `foo.rs` doesn't handle nulls" is a symptom of
the
implementation. "COUNT(DISTINCT) returns wrong results when the column
contains
nulls" is the user-visible problem.
-->

## What changes are included in this PR?

- Generalize `DataFrame::from_columns` to accept `IntoIterator` of
columns.
- This allows users to pass both `arrays` and `Vecs` of columns.
- Update tests to cover both input forms.

<!--
There is no need to duplicate the description in the issue here, but it
is sometimes worth providing a summary of the individual changes in this
PR.
-->

## Are these changes tested?
Yes. Tests cover both `array` and `Vec` inputs and verify the resulting
schema, data types, row count, and values.
<!--
We typically require tests for all PRs in order to:
1. Prevent the code from being accidentally broken by subsequent changes
2. Serve as another way to document the expected behavior of the code

If tests are not included in your PR, please explain why (for example,
are they covered by existing tests)?
-->

## Are there any user-facing changes?
Yes. This is a breaking API change. `DataFrame::from_columns` now
accepts an `IntoIterator` of columns instead of specifically accepting a
`Vec`. Existing `Vec` usage continues to work, while users can also pass
`arrays` and other compatible iterators.

Users relying on the exact non-generic function signature may need to
update their code to account for the new generic API.
<!--
If there are user-facing changes then we may require documentation to be
updated before approving the PR.

If there are any breaking changes to public APIs, please add the `api
change` label.
-->
## Which issue does this PR address?

- Part of apache#21231.

## Rationale for this change

`CaseBody::project` discovers input columns by downcasting
expression-tree nodes to DataFusion's concrete `Column` or
`LambdaVariable`. A third-party column-like `PhysicalExpr` can evaluate
an input column without exposing either node. The projection then omits
that dependency and CASE evaluates the expression against a batch with
the wrong schema.

## What changes are included in this PR?

CASE projection now falls back to the original input batch when it
encounters an unknown leaf expression. Built-in `ScalarFunctionExpr`
leaves remain eligible for projection because they receive the row count
and do not read input columns through the batch. The projection decision
is centralized in `ProjectedCaseBody::projection_for`, with the
invariant documented next to the representation.

The regression coverage exercises searched CASE, base-expression CASE,
and the single-WHEN expression path with a custom column-like
expression. It also checks that a nullary `random()` scalar function
keeps the projection fast path.

This is a conservative correctness fix for the custom-leaf case. The
broader dependency-reporting design discussed in apache#21231 remains separate
work.

## Are these changes tested?

- `cargo fmt --all -- --check`
- `cargo clippy -p datafusion-physical-expr --all-targets --all-features
-- -D warnings`
- `cargo test -p datafusion-physical-expr expressions::case::tests`
- `cargo test -p datafusion-physical-expr`

## Are there any user-facing changes?

Custom physical expressions can now be evaluated correctly inside
searched and base-expression CASE expressions. There is no public API
change.

---------

Signed-off-by: Hasnaat Hussain <hasnaat.hussain.2@gmail.com>
## Which issue does this PR close?
N/A

## Rationale for this change
after emit all, the memory is still being held in count distinct causing
OOM issues

## What changes are included in this PR?
release memory in emit all and added tests

## What is the testing strategy for this PR?
integration test

## Are there any user-facing changes?
no

----


Founded while running:
- apache#24881
## Which issue does this PR close?

- Closes apache#13027.

## Rationale for this change

I noticed that this issue had an earlier PR from almost two years ago.
That implementation was closed because it used broad identifier cleanup,
and maintainers were concerned it could introduce subtle bugs.

Since then, DataFusion has added much of the machinery needed for the
approaches recommended in that review. This solution uses that newer
machinery and combines both approaches. It removes the qualifier when
the derived table does not need an alias, and rewrites the reference to
the derived alias when the dialect requires one.

## What changes are included in this PR?

This PR detects when a projection enters a new derived-table scope and
prevents its outer expressions from referring to an inner table alias
that is no longer visible.

For dialects that do not require a derived-table alias, the invalid
inner qualifier is removed. For dialects such as MySQL that require an
alias, the outer reference is rewritten to the generated derived-table
alias. Explicitly named subquery scopes remain unchanged.

## What is the testing strategy for this PR?

The SQL unparser round-trip tests cover the issue's original query with
both the generic and MySQL dialects. They also cover filtered and
distinct derived inputs, and update existing limit and nested-projection
cases to assert valid outer references.

The required formatting, Clippy, and extended workspace test suite all
pass, including all 505 SQL logic test files.

## Are there any user-facing changes?

Yes. SQL produced by the unparser no longer contains qualifiers that
refer to tables outside their visible scope. Dialects that require
derived-table aliases now qualify the outer reference with the generated
alias. There are no public API changes.

---------

Co-authored-by: blinding-pixels <281499151+blinding-pixels@users.noreply.github.com>
…ons (apache#24918)

## Which issue does this PR close?

Follow-up to apache#24888, which broke the `cargo test hash collisions` CI job
on main.

## Rationale for this change

The memory limit test added in apache#24888 fails when built with
`force_hash_collisions`. Every key hashes to the same value there, so
the hash repartition sends all 64 groups to one final stage. That single
table needs 5.3 MB against the test's 4 MB pool, and it has nothing
reserved yet, so there is nothing to spill. It fails no matter how well
the accumulator releases memory, which is what the test is actually
about.

I tried a few ways to keep it running under the feature first:

- **Bigger limit for the collision build.** Below 5.3 MB it dies on that
one state batch; at 6 MB and up nothing spills, so the unfixed
accumulator passes too and the test asserts nothing. Nothing in between.
- **Single partition, no repartition at all.** Same wall. With 64 groups
the whole distinct state lives in 64 rows, so total state and one batch
are the same 5.3 MB. Also 82s instead of 0.18s.
- **More groups, to spread the state over more batches.** With every key
in one hash bucket, interning goes quadratic: 4096 groups did not finish
in 400s.
- **More rows (800k), to make total state exceed one batch.** Fails even
with the fix.

They all hit the same thing: under forced collisions the total state and
a single batch are the same size, and the pool would have to sit above
one and below the other.

## What changes are included in this PR?

The test and its helpers move into a module gated on `not(feature =
"force_hash_collisions")`.

## What is the testing strategy for this PR?

`cargo test -p datafusion --features force_hash_collisions --test
core_integration count_distinct_releases` runs 0 tests. Without the
feature it still runs and passes.

## Are there any user-facing changes?

No.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
)

## Which issue does this PR close?

- Part of apache#24459.

## Rationale for this change

`NestedLoopJoinExec` included time spent polling its build-side and
probe-side inputs in `build_time` and `join_time`. Because child
operators report their own compute time, this double-counted child work
in plan-level `elapsed_compute` metrics.

## What changes are included in this PR?

- Time build-side bookkeeping and materialization only after each left
input batch is ready.
- Start probe-side timing only after the right input returns a ready
result.
- Apply the same accounting to the memory-limited spill and replay
paths.
- Add regressions for standard and spill execution that verify child
polling is excluded while join-owned work remains timed.

## Are these changes tested?

Yes.

- `cargo test -p datafusion-physical-plan joins::nested_loop_join::tests
--all-features`
- `cargo test -p datafusion-physical-plan --all-features`
- `cargo clippy --all-targets --all-features -- -D warnings`
- `RUST_BACKTRACE=1 cargo test --profile ci --exclude
datafusion-examples --exclude datafusion-benchmarks --exclude
datafusion-cli --workspace --lib --tests --bins --features
avro,json,backtrace,extended_tests,recursive_protection,parquet_encryption`

The four new timing regressions were also ablated by restoring the
previous outer timer scopes; each failed because the injected child
delay was included.

## Are there any user-facing changes?

`NestedLoopJoinExec` metrics now exclude child input polling. Query
results and public APIs are unchanged.
…apache#24763)

## Which issue does this PR close?

No separate issue. I found this while reading `simplify_predicates`.

## Rationale for this change

`WHERE s = 'a' AND 'a' = s` returns no rows, where one row is expected:

```sql
> CREATE TABLE t(s VARCHAR) AS VALUES ('a'), ('b');
> SELECT * FROM t WHERE s = 'a' AND 'a' = s;
0 row(s) fetched.
```

Either half on its own returns `a`, and the same query against an INT
column returns the row.

On `main` (4d3e79e), `EXPLAIN VERBOSE` shows the filter turning into a
constant between two rules:

```
logical_plan after simplify_expressions   Filter: t.s = Utf8View("a") AND Utf8View("a") = t.s
logical_plan after push_down_filter       Filter: Boolean(false)
logical_plan after eliminate_filter       EmptyRelation: rows=0
```

`PushDownFilter` splits the conjuncts and calls `simplify_predicates`.
It accepts both `<col> <op> <literal>` and `<literal> <op> <col>`, but
`simplify_column_predicates` compares whole `Expr`s. `t.s =
Utf8View("a")` and `Utf8View("a") = t.s` aren't structurally equal, so
the two equalities read as a contradiction and the conjunction becomes
`false`.

The INT version survives because the `Canonicalizer` reorders it first.
It can't do that here: it runs once at `expr_simplifier.rs:203`, ahead
of the const-evaluation loop, so it sees `CAST(Utf8("a") AS Utf8View)`
rather than a `Literal` and its `(Literal, Column)` arm doesn't match.
The cast folds to a literal afterwards. Canonicalization is skipped
entirely for `Join` (`simplify_exprs.rs:130`), so `simplify_predicates`
can't assume canonical input either way.

The same gap costs a strict bound. Given `a >= 5` and `5 < a`,
`find_most_restrictive_predicate` breaks the tie on `op == Gt`, doesn't
count `Lt` with the literal on the left as strict, keeps `a >= 5`, and
lets `a = 5` through.

## What changes are included in this PR?

`simplify_predicates` now normalizes the literal to the right with
`op.swap()`, at the point where it already distinguishes the two
orientations. `simplify_column_predicates` can then match on the
operator alone. No signature changes.

## Are these changes tested?

Two unit tests in `simplify_predicates.rs` and four cases in
`simplify_predicates.slt`. All six fail before the fix. With only
`simplify_predicates.rs` reverted the SLT reports `EmptyRelation:
rows=0` where `Filter: test_data.str_col = Utf8View("apple")` is
expected, and the `apple` row goes missing.

`datafusion-optimizer` is green (765 lib, 26 integration, 5 doc) and
clippy with `-D warnings` is clean. The full `sqllogictests` run passes
except `window_limits.slt`, which fails identically on an unmodified
`main`.

`SELECT * FROM t WHERE s = 'a' AND 'b' = s` stays `EmptyRelation:
rows=0` before and after, and that's pinned in the SLT.

## Are there any user-facing changes?

Affected queries return the right rows instead of none.

Predicates reaching `simplify_predicates` with the literal on the left
now come back with it on the right, so a plan can show `a > 5` where it
used to show `5 < a`. Nothing in the test suite depended on that, but
the function is public.

Equalities whose literals are equal in value but differ in `ScalarValue`
representation still collapse to `false`. On `main`, `[a = 5i32, a =
5i64]` in the same orientation already returns `Boolean(false)`, so that
predates this change and isn't orientation related.

This PR was written with AI assistance.
…wBytesViewMap

Both maps tracked their hash table footprint in a `map_size` field that was
only ever incremented by `HashTableAllocExt::insert_accounted`, which charges
`capacity * size_of::<Entry>()` on growth and nothing else. That undercounts
in two ways.

`ArrowBytesViewMap::new` seeded `map_size` with
`capacity() * size_of::<Entry<V>>()`, which ignores the control bytes and the
trailing group that hashbrown allocates alongside the entry array, so the
reported size was roughly half the real allocation.

`ArrowBytesMap::new` seeded `map_size` with 0 despite pre-allocating a table
for 128 entries. Since `insert_accounted` only charges when the table grows,
any map holding fewer entries than the pre-allocated capacity reported its
hash table as free forever.

Drop the field and ask hashbrown for the exact figure with
`HashTable::allocation_size`, which covers entries, control bytes and the
trailing group. It is a constant time layout calculation, so `size()` stays
cheap, and it cannot drift out of sync with the table the way an
incrementally maintained counter can.
`ArrowBytesMap` and `ArrowBytesViewMap` always pre-allocated their hash
table, and `ArrowBytesMap` also pre-allocated an 8 KiB value buffer. That is
the right trade for the single map that backs a `GROUP BY` on one string
column, which goes on to hold every group value in the query. It is the wrong
trade for `BytesDistinctCountAccumulator` and
`BytesViewDistinctCountAccumulator`, because `GroupsAccumulatorAdapter`
creates one accumulator per group: a grouped `COUNT(DISTINCT)` over a high
cardinality key holds hundreds of thousands of them at once, and most see only
a handful of values, so the pre-allocation dwarfs the data.

Split the constructors. `new` no longer allocates anything, and
`with_capacity` keeps the previous behavior for the callers that want it. The
capacity is stored so `take` re-creates the map the way it was built. The
`GroupValuesBytes` and `GroupValuesBytesView` call sites move to
`with_capacity`; the two distinct-count accumulators stay on `new`.

The `arrow_bytes_map` benchmark also moves to `with_capacity`: its
`long_low_cardinality` case is defined by the distinct values fitting inside
the pre-allocated buffer.
Keep the comment about what `HashTable::allocation_size` covers next to the
value it describes, and say what the test helper's lower bound is derived
from.
`GroupValuesBytes::clear_shrink` and `GroupValuesBytesView::clear_shrink`
reset their map with `take()`, which restores the capacity the map was
configured with so the emptied map stays warm. That is what the emit path
wants, but `clear_shrink` exists to hand memory back before spilling and
before the spilled batch is sorted, so it left roughly 16 KiB (string and
binary) and 34 KiB (view) reserved instead of releasing it.

Add `clear_and_release` to `ArrowBytesMap` and `ArrowBytesViewMap`, which
empties the map and drops its allocations while remembering the configured
capacities so a later `take()` still warms the map up, and call it from the
two `clear_shrink` implementations. The pre-allocation stays at
construction, where the hot single column string `GROUP BY` path earns it.
A grouped `COUNT(DISTINCT <string>)` gets one accumulator per group, and
each of those owns a hash set of the distinct values it has seen. Those
sets were created pre-allocated, so the query's memory use tracked the
number of groups rather than the amount of data.

Add two `memory_limit` tests that turn that into a binary observable, one
for `Utf8` and one for `Utf8View`, over a new scenario of 4,000 groups
holding 2 distinct values each. Measured against this branch's base
commit with spilling disabled and `target_partitions` pinned to 1:

| value column | budget needed before | budget needed after |
| ------------ | -------------------- | ------------------- |
| `Utf8`       | ~35.5 MB             | ~1.9 MB             |
| `Utf8View`   | ~123 MB              | ~2.7 MB             |

The tests run at 8 MB and 16 MB respectively, so each sits at least 4x
above what the branch needs and at least 4x below what the base needs.
Both fail on the base commit with `Resources exhausted` and pass here.
The two grouped `COUNT(DISTINCT <string>)` memory limit tests only reach
the per group accumulators while
`single_distinct_aggregation_to_group_by` declines to rewrite the query.
They leant on `count(*)` for that, which the rule rejects only because
`count` is missing from the `sum`/`min`/`max` allow list.
apache#24859 proposes adding `count` to that list, which would
rewrite the query, remove the accumulators, and leave both tests passing
at any memory limit while still looking like they test something.

Aggregate `avg(payload)` over a new `Int64` column instead. `avg` cannot
be added to that list: the rule re-aggregates its own partial results
over the deduplicated inner group by, and averaging per group averages of
different sizes gives the wrong answer. That is why ClickBench Q9 keeps
its distinct aggregate under apache#24859.

Verified from the physical plan with apache#24859 cherry-picked on top of this
branch: the `avg` query still plans as
`aggr=[count(DISTINCT t.value), avg(t.payload)]`, while the `count(*)`
query becomes `aggr=[count(alias1), sum(alias2)]` over an inner
`GROUP BY group_key, value`, and drops from needing ~1.9 MB to ~0.9 MB.

Re-swept both thresholds against the base commit. `Utf8` needs ~35.5 MB
before and ~1.9 MB after; `Utf8View` needs ~123 MB before and ~2.5 MB
after, so the 8 MB and 16 MB limits keep at least 4x margin on each side
and are unchanged.
`ArrowBytesMap::new` starts its value buffer empty and
`ArrowBytesMap::with_capacity` starts it at `INITIAL_BUFFER_CAPACITY`.
`Vec` then doubles from wherever its first allocation landed, so the two
sit on different ladders and can hold the same values at capacities
differing by up to 2x, in either direction depending on the value
lengths. Measured on 500,000 distinct 28 byte values, the lazily grown
map reported 52,494,344 bytes against 45,154,312 for a pre-allocated
one, 16% more for identical contents.

That matters because the ungrouped `COUNT(DISTINCT <string>)`
accumulator is the caller that had a use for the warm up: it builds one
map and grows it to hold every distinct value in the input. Rounding
every buffer growth up to a power of two puts both constructors on one
ladder, so a lazily allocated map is never larger than a pre-allocated
one holding the same values. Growth stays geometric, so appending is
still amortized constant time. `ArrowBytesViewMap` has no such buffer
and is unaffected.

Two new tests cover the ungrouped path, which had none:
`ungrouped_utf8_accumulator_is_never_worse_than_a_pre_allocated_set` and
its `Utf8View` counterpart drive an accumulator to 0 through 500,000
distinct values and assert it is strictly cheaper than a pre-allocated
set at per group cardinalities and exactly equal at ungrouped ones. The
`Utf8` one fails without this change, at 1,000 distinct values, with the
lazy set reporting 110,408 bytes against 96,072. Two map level tests pin
the ladder itself.
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

Thank you for opening this pull request!

Reviewer note: cargo-semver-checks reported the current version number is not SemVer-compatible with the changes in this pull request (compared against the base branch).

Details
     Cloning apache/main
    Building datafusion v55.0.0 (current)
       Built [  86.535s] (current)
     Parsing datafusion v55.0.0 (current)
      Parsed [   0.026s] (current)
    Building datafusion v55.0.0 (baseline)
       Built [  44.416s] (baseline)
     Parsing datafusion v55.0.0 (baseline)
      Parsed [   0.027s] (baseline)
    Checking datafusion v55.0.0 -> v55.0.0 (no change; assume patch)
     Checked [   0.798s] 223 checks: 222 pass, 1 fail, 0 warn, 31 skip

--- failure method_requires_different_generic_type_params: method now requires a different number of generic type parameters ---

Description:
A method now requires a different number of generic type parameters than it used to. Uses of this method that supplied the previous number of generic types will be broken.
        ref: https://doc.rust-lang.org/reference/items/generics.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/method_requires_different_generic_type_params.ron

Failed in:
  datafusion::prelude::dataframe::DataFrame::from_columns takes 1 generic types instead of 0, in /home/runner/work/datafusion/datafusion/datafusion/core/src/dataframe/mod.rs:2631
  datafusion::dataframe::DataFrame::from_columns takes 1 generic types instead of 0, in /home/runner/work/datafusion/datafusion/datafusion/core/src/dataframe/mod.rs:2631
  datafusion::prelude::DataFrame::from_columns takes 1 generic types instead of 0, in /home/runner/work/datafusion/datafusion/datafusion/core/src/dataframe/mod.rs:2631

     Summary semver requires new major version: 1 major and 0 minor checks failed
    Finished [ 134.209s] datafusion
    Building datafusion-expr v55.0.0 (current)
       Built [  21.617s] (current)
     Parsing datafusion-expr v55.0.0 (current)
      Parsed [   0.057s] (current)
    Building datafusion-expr v55.0.0 (baseline)
       Built [  21.745s] (baseline)
     Parsing datafusion-expr v55.0.0 (baseline)
      Parsed [   0.058s] (baseline)
    Checking datafusion-expr v55.0.0 -> v55.0.0 (no change; assume patch)
     Checked [   1.645s] 223 checks: 223 pass, 31 skip
     Summary no semver update required
    Finished [  46.621s] datafusion-expr
    Building datafusion-functions v55.0.0 (current)
       Built [  24.046s] (current)
     Parsing datafusion-functions v55.0.0 (current)
      Parsed [   0.064s] (current)
    Building datafusion-functions v55.0.0 (baseline)
       Built [  24.300s] (baseline)
     Parsing datafusion-functions v55.0.0 (baseline)
      Parsed [   0.065s] (baseline)
    Checking datafusion-functions v55.0.0 -> v55.0.0 (no change; assume patch)
     Checked [   0.530s] 223 checks: 223 pass, 31 skip
     Summary no semver update required
    Finished [  50.253s] datafusion-functions
    Building datafusion-functions-aggregate-common v55.0.0 (current)
       Built [  16.885s] (current)
     Parsing datafusion-functions-aggregate-common v55.0.0 (current)
      Parsed [   0.016s] (current)
    Building datafusion-functions-aggregate-common v55.0.0 (baseline)
       Built [  16.732s] (baseline)
     Parsing datafusion-functions-aggregate-common v55.0.0 (baseline)
      Parsed [   0.015s] (baseline)
    Checking datafusion-functions-aggregate-common v55.0.0 -> v55.0.0 (no change; assume patch)
     Checked [   0.168s] 223 checks: 223 pass, 31 skip
     Summary no semver update required
    Finished [  34.726s] datafusion-functions-aggregate-common
    Building datafusion-functions-nested v55.0.0 (current)
       Built [  27.608s] (current)
     Parsing datafusion-functions-nested v55.0.0 (current)
      Parsed [   0.029s] (current)
    Building datafusion-functions-nested v55.0.0 (baseline)
       Built [  27.081s] (baseline)
     Parsing datafusion-functions-nested v55.0.0 (baseline)
      Parsed [   0.030s] (baseline)
    Checking datafusion-functions-nested v55.0.0 -> v55.0.0 (no change; assume patch)
     Checked [   0.275s] 223 checks: 223 pass, 31 skip
     Summary no semver update required
    Finished [  56.423s] datafusion-functions-nested
    Building datafusion-optimizer v55.0.0 (current)
       Built [  20.650s] (current)
     Parsing datafusion-optimizer v55.0.0 (current)
      Parsed [   0.023s] (current)
    Building datafusion-optimizer v55.0.0 (baseline)
       Built [  21.332s] (baseline)
     Parsing datafusion-optimizer v55.0.0 (baseline)
      Parsed [   0.025s] (baseline)
    Checking datafusion-optimizer v55.0.0 -> v55.0.0 (no change; assume patch)
     Checked [   0.214s] 223 checks: 223 pass, 31 skip
     Summary no semver update required
    Finished [  43.369s] datafusion-optimizer
    Building datafusion-physical-expr v55.0.0 (current)
       Built [  23.480s] (current)
     Parsing datafusion-physical-expr v55.0.0 (current)
      Parsed [   0.037s] (current)
    Building datafusion-physical-expr v55.0.0 (baseline)
       Built [  22.796s] (baseline)
     Parsing datafusion-physical-expr v55.0.0 (baseline)
      Parsed [   0.043s] (baseline)
    Checking datafusion-physical-expr v55.0.0 -> v55.0.0 (no change; assume patch)
     Checked [   0.453s] 223 checks: 223 pass, 31 skip
     Summary no semver update required
    Finished [  47.956s] datafusion-physical-expr
    Building datafusion-physical-expr-adapter v55.0.0 (current)
       Built [  25.308s] (current)
     Parsing datafusion-physical-expr-adapter v55.0.0 (current)
      Parsed [   0.009s] (current)
    Building datafusion-physical-expr-adapter v55.0.0 (baseline)
       Built [  25.946s] (baseline)
     Parsing datafusion-physical-expr-adapter v55.0.0 (baseline)
      Parsed [   0.008s] (baseline)
    Checking datafusion-physical-expr-adapter v55.0.0 -> v55.0.0 (no change; assume patch)
     Checked [   0.107s] 223 checks: 223 pass, 31 skip
     Summary no semver update required
    Finished [  52.512s] datafusion-physical-expr-adapter
    Building datafusion-physical-expr-common v55.0.0 (current)
       Built [  19.048s] (current)
     Parsing datafusion-physical-expr-common v55.0.0 (current)
      Parsed [   0.018s] (current)
    Building datafusion-physical-expr-common v55.0.0 (baseline)
       Built [  18.975s] (baseline)
     Parsing datafusion-physical-expr-common v55.0.0 (baseline)
      Parsed [   0.016s] (baseline)
    Checking datafusion-physical-expr-common v55.0.0 -> v55.0.0 (no change; assume patch)
     Checked [   0.287s] 223 checks: 223 pass, 31 skip
     Summary no semver update required
    Finished [  39.669s] datafusion-physical-expr-common
    Building datafusion-physical-plan v55.0.0 (current)
       Built [  29.872s] (current)
     Parsing datafusion-physical-plan v55.0.0 (current)
      Parsed [   0.116s] (current)
    Building datafusion-physical-plan v55.0.0 (baseline)
       Built [  29.635s] (baseline)
     Parsing datafusion-physical-plan v55.0.0 (baseline)
      Parsed [   0.112s] (baseline)
    Checking datafusion-physical-plan v55.0.0 -> v55.0.0 (no change; assume patch)
     Checked [   0.924s] 223 checks: 223 pass, 31 skip
     Summary no semver update required
    Finished [  62.083s] datafusion-physical-plan
    Building datafusion-proto v55.0.0 (current)
       Built [  43.259s] (current)
     Parsing datafusion-proto v55.0.0 (current)
      Parsed [   0.014s] (current)
    Building datafusion-proto v55.0.0 (baseline)
       Built [  41.873s] (baseline)
     Parsing datafusion-proto v55.0.0 (baseline)
      Parsed [   0.020s] (baseline)
    Checking datafusion-proto v55.0.0 -> v55.0.0 (no change; assume patch)
     Checked [   0.221s] 223 checks: 223 pass, 31 skip
     Summary no semver update required
    Finished [  86.814s] datafusion-proto
    Building datafusion-sql v55.0.0 (current)
       Built [  33.339s] (current)
     Parsing datafusion-sql v55.0.0 (current)
      Parsed [   0.024s] (current)
    Building datafusion-sql v55.0.0 (baseline)
       Built [  32.775s] (baseline)
     Parsing datafusion-sql v55.0.0 (baseline)
      Parsed [   0.025s] (baseline)
    Checking datafusion-sql v55.0.0 -> v55.0.0 (no change; assume patch)
     Checked [   0.301s] 223 checks: 223 pass, 31 skip
     Summary no semver update required
    Finished [  68.187s] datafusion-sql
    Building datafusion-sqllogictest v55.0.0 (current)
       Built [  78.088s] (current)
     Parsing datafusion-sqllogictest v55.0.0 (current)
      Parsed [   0.017s] (current)
    Building datafusion-sqllogictest v55.0.0 (baseline)
       Built [  78.246s] (baseline)
     Parsing datafusion-sqllogictest v55.0.0 (baseline)
      Parsed [   0.018s] (baseline)
    Checking datafusion-sqllogictest v55.0.0 -> v55.0.0 (no change; assume patch)
     Checked [   0.118s] 223 checks: 223 pass, 31 skip
     Summary no semver update required
    Finished [ 159.436s] datafusion-sqllogictest
    Building datafusion-substrait v55.0.0 (current)
       Built [ 246.401s] (current)
     Parsing datafusion-substrait v55.0.0 (current)
      Parsed [   0.015s] (current)
    Building datafusion-substrait v55.0.0 (baseline)
       Built [ 254.615s] (baseline)
     Parsing datafusion-substrait v55.0.0 (baseline)
      Parsed [   0.015s] (baseline)
    Checking datafusion-substrait v55.0.0 -> v55.0.0 (no change; assume patch)
     Checked [   0.275s] 223 checks: 223 pass, 31 skip
     Summary no semver update required
    Finished [ 504.514s] datafusion-substrait

@adriangb

adriangb commented Sep 3, 2026

Copy link
Copy Markdown
Member Author

Superseded by the upstream pull request: apache#24857

This copy existed only to run the change through review here before sending it upstream. That is done, so closing this one. The branch is unchanged and still backs the upstream pull request.

@adriangb adriangb closed this Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.