forked from apache/datafusion
-
Notifications
You must be signed in to change notification settings - Fork 0
Timestamp 17998 proposal #31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Omega359
wants to merge
458
commits into
kosiew:timestamp-17998
Choose a base branch
from
Omega359:timestamp-17998
base: timestamp-17998
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.8.1 to 2.8.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/swatinem/rust-cache/releases">Swatinem/rust-cache's releases</a>.</em></p> <blockquote> <h2>v2.8.2</h2> <h2>What's Changed</h2> <ul> <li>ci: address lint findings, add zizmor workflow by <a href="https://github.com/woodruffw"><code>@woodruffw</code></a> in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/262">Swatinem/rust-cache#262</a></li> <li>feat: Implement ability to disable adding job ID + rust environment hashes to cache names by <a href="https://github.com/Ryan-Brice"><code>@Ryan-Brice</code></a> in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/279">Swatinem/rust-cache#279</a></li> <li>Don't overwrite env for cargo-metadata call by <a href="https://github.com/MaeIsBad"><code>@MaeIsBad</code></a> in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/285">Swatinem/rust-cache#285</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/woodruffw"><code>@woodruffw</code></a> made their first contribution in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/262">Swatinem/rust-cache#262</a></li> <li><a href="https://github.com/Ryan-Brice"><code>@Ryan-Brice</code></a> made their first contribution in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/279">Swatinem/rust-cache#279</a></li> <li><a href="https://github.com/MaeIsBad"><code>@MaeIsBad</code></a> made their first contribution in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/285">Swatinem/rust-cache#285</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Swatinem/rust-cache/compare/v2.8.1...v2.8.2">https://github.com/Swatinem/rust-cache/compare/v2.8.1...v2.8.2</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md">Swatinem/rust-cache's changelog</a>.</em></p> <blockquote> <h1>Changelog</h1> <h2>2.8.2</h2> <ul> <li>Don't overwrite env for cargo-metadata call</li> </ul> <h2>2.8.1</h2> <ul> <li>Set empty <code>CARGO_ENCODED_RUSTFLAGS</code> when retrieving metadata</li> <li>Various dependency updates</li> </ul> <h2>2.8.0</h2> <ul> <li>Add support for <code>warpbuild</code> cache provider</li> <li>Add new <code>cache-workspace-crates</code> feature</li> </ul> <h2>2.7.8</h2> <ul> <li>Include CPU arch in the cache key</li> </ul> <h2>2.7.7</h2> <ul> <li>Also cache <code>cargo install</code> metadata</li> </ul> <h2>2.7.6</h2> <ul> <li>Allow opting out of caching $CARGO_HOME/bin</li> <li>Add runner OS in cache key</li> <li>Adds an option to do lookup-only of the cache</li> </ul> <h2>2.7.5</h2> <ul> <li>Support Cargo.lock format cargo-lock v4</li> <li>Only run macOsWorkaround() on macOS</li> </ul> <h2>2.7.3</h2> <ul> <li>Work around upstream problem that causes cache saving to hang for minutes.</li> </ul> <h2>2.7.2</h2> <ul> <li>Only key by <code>Cargo.toml</code> and <code>Cargo.lock</code> files of workspace members.</li> </ul> <h2>2.7.1</h2> <ul> <li>Update toml parser to fix parsing errors.</li> </ul> <h2>2.7.0</h2> <ul> <li>Properly cache <code>trybuild</code> tests.</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/Swatinem/rust-cache/commit/779680da715d629ac1d338a641029a2f4372abb5"><code>779680d</code></a> 2.8.2</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/2ea64efb2551baf97fd9611d09c8af70b088ceae"><code>2ea64ef</code></a> Bump smol-toml from 1.4.2 to 1.5.2 in the prd-minor group (<a href="https://redirect.github.com/swatinem/rust-cache/issues/287">#287</a>)</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/8930d9c33e314043c13794316986491e42a060d9"><code>8930d9c</code></a> Bump the actions group with 3 updates (<a href="https://redirect.github.com/swatinem/rust-cache/issues/288">#288</a>)</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/c071727fc96109277f0135b3f13503db23b6cc1b"><code>c071727</code></a> Bump <code>@actions/io</code> from 1.1.3 to 2.0.0 in the prd-major group (<a href="https://redirect.github.com/swatinem/rust-cache/issues/281">#281</a>)</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/f2a41b7c112cd43711cfd57f0a59eca88ec14a64"><code>f2a41b7</code></a> Bump <code>@types/node</code> from 24.9.0 to 24.10.0 in the dev-minor group (<a href="https://redirect.github.com/swatinem/rust-cache/issues/282">#282</a>)</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/e306f83d219f81032ad45ba2a7b1af20cc228e62"><code>e306f83</code></a> Don't overwrite env for cargo-metadata call (<a href="https://redirect.github.com/swatinem/rust-cache/issues/285">#285</a>)</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/c9119007a19252f0981aef1785db9b0dd6f373c0"><code>c911900</code></a> Merge pull request <a href="https://redirect.github.com/swatinem/rust-cache/issues/284">#284</a> from Swatinem/dependabot/github_actions/actions-baeb0...</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/3aaed5547eb4ccbf48b9a4d7dd62a50e04f7019d"><code>3aaed55</code></a> Bump the actions group with 2 updates</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/972b315a8225e8594dddc2b92e6333d1d1d3059c"><code>972b315</code></a> Merge pull request <a href="https://redirect.github.com/swatinem/rust-cache/issues/283">#283</a> from Swatinem/dependabot/github_actions/actions-b360d...</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/07caf06f7a4b787ad36bd267269f3c0dfa29744b"><code>07caf06</code></a> Bump taiki-e/install-action from 2.62.45 to 2.62.49 in the actions group</li> <li>Additional commits viewable in <a href="https://github.com/swatinem/rust-cache/compare/f13886b937689c021905a6b90929199931d60db1...779680da715d629ac1d338a641029a2f4372abb5">compare view</a></li> </ul> </details> <br /> [](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 merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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>
…che#18964) Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.62.57 to 2.62.58. <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.62.58</h2> <ul> <li> <p>Update <code>cargo-shear@latest</code> to 1.6.6.</p> </li> <li> <p>Update <code>mise@latest</code> to 2025.11.8.</p> </li> <li> <p>Update <code>zizmor@latest</code> to 1.17.0.</p> </li> <li> <p>Update <code>uv@latest</code> to 0.9.12.</p> </li> <li> <p>Update <code>editorconfig-checker@latest</code> to 3.6.0.</p> </li> <li> <p>Update <code>wasmtime@latest</code> to 39.0.1.</p> </li> <li> <p>Update <code>release-plz@latest</code> to 0.3.149.</p> </li> </ul> </blockquote> </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> <ul> <li> <p>Update <code>mise@latest</code> to 2025.11.9.</p> </li> <li> <p>Update <code>uv@latest</code> to 0.9.13.</p> </li> <li> <p>Update <code>typos@latest</code> to 1.40.0.</p> </li> </ul> <h2>[2.62.58] - 2025-11-26</h2> <ul> <li> <p>Update <code>cargo-shear@latest</code> to 1.6.6.</p> </li> <li> <p>Update <code>mise@latest</code> to 2025.11.8.</p> </li> <li> <p>Update <code>zizmor@latest</code> to 1.17.0.</p> </li> <li> <p>Update <code>uv@latest</code> to 0.9.12.</p> </li> <li> <p>Update <code>editorconfig-checker@latest</code> to 3.6.0.</p> </li> <li> <p>Update <code>wasmtime@latest</code> to 39.0.1.</p> </li> <li> <p>Update <code>release-plz@latest</code> to 0.3.149.</p> </li> </ul> <h2>[2.62.57] - 2025-11-24</h2> <ul> <li> <p>Update <code>cargo-deny@latest</code> to 0.18.6.</p> </li> <li> <p>Update <code>cargo-shear@latest</code> to 1.6.5.</p> </li> <li> <p>Update <code>cargo-binstall@latest</code> to 1.16.2.</p> </li> </ul> <h2>[2.62.56] - 2025-11-23</h2> <ul> <li> <p>Update <code>cargo-shear@latest</code> to 1.6.4.</p> </li> <li> <p>Update <code>rclone@latest</code> to 1.72.0.</p> </li> </ul> <h2>[2.62.55] - 2025-11-21</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/taiki-e/install-action/commit/1ee706eb04986370fc60419ba172594c51067f29"><code>1ee706e</code></a> Release 2.62.58</li> <li><a href="https://github.com/taiki-e/install-action/commit/72c518bd2fde5ff7f6a14c1308a297c015fa93da"><code>72c518b</code></a> Update <code>cargo-shear@latest</code> to 1.6.6</li> <li><a href="https://github.com/taiki-e/install-action/commit/8364b405ea3dc577d29043ce2283a61ecaf93ca8"><code>8364b40</code></a> Update <code>mise@latest</code> to 2025.11.8</li> <li><a href="https://github.com/taiki-e/install-action/commit/0b4ffaedc6b3f76c6ef52101a31ee191a92cc167"><code>0b4ffae</code></a> Update <code>zizmor@latest</code> to 1.17.0</li> <li><a href="https://github.com/taiki-e/install-action/commit/e5bd4b3e44f4ec562bc2b46fcd528e699f28e0d5"><code>e5bd4b3</code></a> Update <code>uv@latest</code> to 0.9.12</li> <li><a href="https://github.com/taiki-e/install-action/commit/d63b95630a91978f264615601ba86598f4c9b106"><code>d63b956</code></a> Update <code>editorconfig-checker@latest</code> to 3.6.0</li> <li><a href="https://github.com/taiki-e/install-action/commit/180a885d991969c84ebdd3d4cef645533ac39872"><code>180a885</code></a> Update <code>wasmtime@latest</code> to 39.0.1</li> <li><a href="https://github.com/taiki-e/install-action/commit/9bc3cf8cc9ccfdbab6c1d5c1f1c414c24cf32dd6"><code>9bc3cf8</code></a> Update <code>release-plz@latest</code> to 0.3.149</li> <li>See full diff in <a href="https://github.com/taiki-e/install-action/compare/763e3324d4fd026c9bd284c504378585777a87d5...1ee706eb04986370fc60419ba172594c51067f29">compare view</a></li> </ul> </details> <br /> [](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 merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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>
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.39.2 to 1.40.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/crate-ci/typos/releases">crate-ci/typos's releases</a>.</em></p> <blockquote> <h2>v1.40.0</h2> <h2>[1.40.0] - 2025-11-26</h2> <h3>Features</h3> <ul> <li>Updated the dictionary with the <a href="https://redirect.github.com/crate-ci/typos/issues/1405">November 2025</a> changes</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's changelog</a>.</em></p> <blockquote> <h1>Change Log</h1> <p>All notable changes to this project will be documented in this file.</p> <p>The format is based on <a href="https://keepachangelog.com/">Keep a Changelog</a> and this project adheres to <a href="https://semver.org/">Semantic Versioning</a>.</p> <!-- raw HTML omitted --> <h2>[Unreleased] - ReleaseDate</h2> <h2>[1.40.0] - 2025-11-26</h2> <h3>Features</h3> <ul> <li>Updated the dictionary with the <a href="https://redirect.github.com/crate-ci/typos/issues/1405">November 2025</a> changes</li> </ul> <h2>[1.39.2] - 2025-11-13</h2> <h3>Fixes</h3> <ul> <li>Don't offer <code>entry</code> as a correction for <code>entrys</code></li> </ul> <h2>[1.39.1] - 2025-11-12</h2> <h3>Features</h3> <ul> <li>Make <code>--help</code> more vibrant</li> </ul> <h2>[1.39.0] - 2025-10-31</h2> <h3>Features</h3> <ul> <li>Updated the dictionary with the <a href="https://redirect.github.com/crate-ci/typos/issues/1383">October 2025</a> changes</li> </ul> <h3>Fixes</h3> <ul> <li>When a typo is pluralized, prefer pluralized corrections</li> </ul> <h2>[1.38.1] - 2025-10-07</h2> <h3>Fixes</h3> <ul> <li>Ignore common golang identifiers</li> </ul> <h2>[1.38.0] - 2025-10-06</h2> <h3>Features</h3> <ul> <li>Update type list</li> </ul> <h3>Fixes</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/crate-ci/typos/commit/2d0ce569feab1f8752f1dde43cc2f2aa53236e06"><code>2d0ce56</code></a> chore: Release</li> <li><a href="https://github.com/crate-ci/typos/commit/efbd900f8db9952781b6bd1ad83baa38ebd153e3"><code>efbd900</code></a> chore: Release</li> <li><a href="https://github.com/crate-ci/typos/commit/863fd15db8bf16bfe9117ec1a83ea7b6e802e9f3"><code>863fd15</code></a> docs: Update changelog</li> <li><a href="https://github.com/crate-ci/typos/commit/9a27b16791dd73549457a07f247bc4920f787919"><code>9a27b16</code></a> Merge pull request <a href="https://redirect.github.com/crate-ci/typos/issues/1432">#1432</a> from epage/nov</li> <li><a href="https://github.com/crate-ci/typos/commit/3dbd9d4eacab7f22586ea581e4d403c3ca9dbbb7"><code>3dbd9d4</code></a> feat(dict): November additions</li> <li><a href="https://github.com/crate-ci/typos/commit/a1a16c7b7c25d1c27cc750525aada8b9ae68b716"><code>a1a16c7</code></a> Merge pull request <a href="https://redirect.github.com/crate-ci/typos/issues/1427">#1427</a> from deining/bump-github-action</li> <li><a href="https://github.com/crate-ci/typos/commit/cb8d2e78ff23c82fca05340ed256b04513d022b9"><code>cb8d2e7</code></a> docs: Bump GitHub checkout action in 'github-action.md'</li> <li><a href="https://github.com/crate-ci/typos/commit/9f99fb8dfe87b8a3441863fb2e5d5da88a2aa9a2"><code>9f99fb8</code></a> docs(ref): Clarify extend-words / extend-identifiers</li> <li>See full diff in <a href="https://github.com/crate-ci/typos/compare/626c4bedb751ce0b7f03262ca97ddda9a076ae1c...2d0ce569feab1f8752f1dde43cc2f2aa53236e06">compare view</a></li> </ul> </details> <br /> [](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 merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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>
## 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 #. ## Rationale for this change Having it as a macro makes the code hard to read and to change / refactor / optimize the code. I hope this makes it easier for others to contribute as well. ## 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. --> ## 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)? --> ## 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. -->
…apache#18967) ## 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 #. ## 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. --> There was a copy/paste error - it was initialized from proto_opts.has_header instead ## 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. --> Now the setting is initialized from `protobuf::CsvOptions::double_quote` ## 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)? --> ## Are there any user-facing changes? No <!-- 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. --> --------- Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
…8973) ## Which issue does this PR close? - Fixes part of apache#18881 ## Rationale for this change Replace #[allow] with #[expect] to enable automatic detection when lint suppressions are no longer needed. ## What changes are included in this PR? Replace 4 #[allow] attributes with #[expect] in datafusion-catalog - Add #![deny(clippy::allow_attributes)] lint rule to lib.rs - Convert unused_variables and clippy::too_many_arguments suppressions ## Are these changes tested? yes ## Are there any user-facing changes? No user-facing changes.
## Which issue does this PR close? This addresses part of apache#15804 but does not close it. ## Rationale for this change Now that we are on MSRV 1.88 we can use rust edition 2024, which brings let chains and other nice features. It also improves `unsafe` checking. In order to introduce these changes in slower way instead of one massive PR that is too difficult to manage we are updating a few crates at a time. ## What changes are included in this PR? Updates 6 crates to 2024. - common - common-runtime - doc - expr-common - macros - proto-common ## Are these changes tested? Existing unit tests. There are no functional code changes. ## Are there any user-facing changes? None.
…che#18978) Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.62.58 to 2.62.59. <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.62.59</h2> <ul> <li> <p>Update <code>mise@latest</code> to 2025.11.10.</p> </li> <li> <p>Update <code>uv@latest</code> to 0.9.13.</p> </li> <li> <p>Update <code>typos@latest</code> to 1.40.0.</p> </li> </ul> </blockquote> </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> <ul> <li>Update <code>wasm-bindgen@latest</code> to 0.2.106.</li> </ul> <h2>[2.62.59] - 2025-11-28</h2> <ul> <li> <p>Update <code>mise@latest</code> to 2025.11.10.</p> </li> <li> <p>Update <code>uv@latest</code> to 0.9.13.</p> </li> <li> <p>Update <code>typos@latest</code> to 1.40.0.</p> </li> </ul> <h2>[2.62.58] - 2025-11-26</h2> <ul> <li> <p>Update <code>cargo-shear@latest</code> to 1.6.6.</p> </li> <li> <p>Update <code>mise@latest</code> to 2025.11.8.</p> </li> <li> <p>Update <code>zizmor@latest</code> to 1.17.0.</p> </li> <li> <p>Update <code>uv@latest</code> to 0.9.12.</p> </li> <li> <p>Update <code>editorconfig-checker@latest</code> to 3.6.0.</p> </li> <li> <p>Update <code>wasmtime@latest</code> to 39.0.1.</p> </li> <li> <p>Update <code>release-plz@latest</code> to 0.3.149.</p> </li> </ul> <h2>[2.62.57] - 2025-11-24</h2> <ul> <li> <p>Update <code>cargo-deny@latest</code> to 0.18.6.</p> </li> <li> <p>Update <code>cargo-shear@latest</code> to 1.6.5.</p> </li> <li> <p>Update <code>cargo-binstall@latest</code> to 1.16.2.</p> </li> </ul> <h2>[2.62.56] - 2025-11-23</h2> <ul> <li>Update <code>cargo-shear@latest</code> to 1.6.4.</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/b4b80945859e8ef89a9732a0f46499a443b196fe"><code>b4b8094</code></a> Release 2.62.59</li> <li><a href="https://github.com/taiki-e/install-action/commit/812d1ba6738f71c3dc888e7f3228465551ab10e2"><code>812d1ba</code></a> Update changelog</li> <li><a href="https://github.com/taiki-e/install-action/commit/3d348f5824348b47ded5ce20d6ed9e0c1aab55ba"><code>3d348f5</code></a> Update <code>mise@latest</code> to 2025.11.10</li> <li><a href="https://github.com/taiki-e/install-action/commit/85debb04fce96f3a7b0c53853d3502584b8dc5e2"><code>85debb0</code></a> Update <code>mise@latest</code> to 2025.11.9</li> <li><a href="https://github.com/taiki-e/install-action/commit/b21ab5b468360f3365d7e4dcb6625f51bd55c9ca"><code>b21ab5b</code></a> Update <code>uv@latest</code> to 0.9.13</li> <li><a href="https://github.com/taiki-e/install-action/commit/4d8280b5fa26cc38acac46b0756d6445df6cffd4"><code>4d8280b</code></a> Update <code>typos@latest</code> to 1.40.0</li> <li>See full diff in <a href="https://github.com/taiki-e/install-action/compare/1ee706eb04986370fc60419ba172594c51067f29...b4b80945859e8ef89a9732a0f46499a443b196fe">compare view</a></li> </ul> </details> <br /> [](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 merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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>
## 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#18108 ## Rationale for this change Literal 0/1 percentiles don’t need percentile buffering; using min/max keeps results identical. <!-- 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. --> ## What changes are included in this PR? - Add a simplify hook so percentile_cont(..., 0|1) rewrites to min/max, preserving distinct/filter/null handling and casting ints to Float64. - Add targeted tests for the rewrite and for the no‑rewrite path. <!-- 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? Added tests <!-- 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? <!-- 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. --> --------- Co-authored-by: Martin Grigorov <martin-g@users.noreply.github.com> Co-authored-by: Jeffrey Vo <jeffrey.vo.australia@gmail.com>
…e#18986) ## 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#18881. ## 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. --> > #[expect] attributes suppress the lint emission, but emit a warning, if the expectation is unfulfilled. This can be useful to be notified when the lint is no longer triggered. > \- https://rust-lang.github.io/rust-clippy/master/index.html?search=clippy%3A%3Aupper_case_acronyms This is helpful to identify when the lint is no longer needed across `functions-*` crates. ## 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. --> Added `#![deny(clippy::allow_attributes)]` to all `functions-*` crates. Also, the following lints are removed: + [`clippy::upper_case_acronyms`](https://rust-lang.github.io/rust-clippy/master/index.html?search=clippy%3A%3Aupper_case_acronyms) is removed for https://github.com/apache/datafusion/blob/487de9db6a546671011d28540ec639d4cf212288/datafusion/functions-aggregate/src/regr.rs#L88-L129 because it resulted in ``` warning: this lint expectation is unfulfilled --> datafusion/functions-aggregate/src/regr.rs:89:10 | 89 | #[expect(clippy::upper_case_acronyms)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(unfulfilled_lint_expectations)]` on by default warning: `datafusion-functions-aggregate` (lib) generated 1 warning ``` The rationale is the following: The default value of `avoid-breaking-exported-api` is `true` so lint is suppressed. [Ref](https://github.com/rust-lang/rust-clippy/blob/92b4b68683249c781c3acad742fc6e57c4140ad9/clippy_lints/src/upper_case_acronyms.rs#L128-L132). Setting `avoid-breaking-exported-api` to `false` raises multiple warnings as datafusion does not strictly follow [`UpperCamelCase` naming convention](https://rust-lang.github.io/api-guidelines/naming.html#casing-conforms-to-rfc-430-c-case). + [`clippy::too_many_arguments`](https://rust-lang.github.io/rust-clippy/master/index.html?search=clippy%3A%3Atoo_many_arguments#too_many_arguments) is removed for https://github.com/apache/datafusion/blob/487de9db6a546671011d28540ec639d4cf212288/datafusion/functions/src/regex/regexpinstr.rs#L289-L297 as default value of `too-many-arguments-threshold` is 7 and `regexp_instr_inner` takes on 6 arguments. + [`rustdoc::redundant_explicit_links`](https://doc.rust-lang.org/rustdoc/lints.html#redundant_explicit_links) is removed for (1) https://github.com/apache/datafusion/blob/487de9db6a546671011d28540ec639d4cf212288/datafusion/functions/src/macros.rs#L79-L104 and (2) https://github.com/apache/datafusion/blob/487de9db6a546671011d28540ec639d4cf212288/datafusion/functions/src/macros.rs#L106-L120 as it looks like computed automatic link for ``[`ScalarUDF`](datafusion_expr::ScalarUDF)`` is not the same as the explicit link. Any concerns with this one? + [`rustdoc::private_intra_doc_links`](https://doc.rust-lang.org/rustdoc/lints.html#private_intra_doc_links) is removed for (1) https://github.com/apache/datafusion/blob/487de9db6a546671011d28540ec639d4cf212288/datafusion/functions-aggregate/src/approx_percentile_cont.rs#L242-L281 and (2) https://github.com/apache/datafusion/blob/487de9db6a546671011d28540ec639d4cf212288/datafusion/functions-aggregate/src/approx_percentile_cont_with_weight.rs#L254-L259 since lint detects when [intra-doc links](https://doc.rust-lang.org/rustdoc/write-documentation/linking-to-items-by-name.html) from public to private items but `TDigest::to_scalar_state()` is public, so we have the opposite case: from private to public items. ## 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)? --> + Ran `sh ci/scripts/rust_docs.sh` with no warnings/errors. + Ran `sh ci/scripts/rust_clippy.sh` with no warnings/errors. ## 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.
## Which issue does this PR close? Closes apache#19396. ## Rationale for this change Previously, when a `DefaultListFilesCache` was created with a TTL (e.g., `DefaultListFilesCache::new(1024, Some(Duration::from_secs(1)))`) and passed to `CacheManagerConfig` without explicitly setting `list_files_cache_ttl`, the cache's TTL would be unexpectedly unset (overwritten to `None`). This happened because `CacheManager::try_new()` always called `update_cache_ttl(config.list_files_cache_ttl)`, even when the config value was `None`. ## What changes are included in this PR? - Modified `CacheManager::try_new()` to only update the cache's TTL if `config.list_files_cache_ttl` is explicitly set (`Some(value)`). If the config TTL is `None`, the cache's existing TTL is preserved. - Added two test cases: - `test_ttl_preserved_when_not_set_in_config`: Verifies that TTL is preserved when not set in config - `test_ttl_overridden_when_set_in_config`: Verifies that TTL can still be overridden when explicitly set in config ## Are these changes tested? Yes ## Are there any user-facing changes? Yes
## Summary This PR adds protobuf serialization/deserialization support for `HashExpr`, enabling distributed query execution to serialize hash expressions used in hash joins and repartitioning. This is a followup to apache#18393 which introduced `HashExpr` but did not add serialization support. This causes errors when serialization is triggered on a query that pushes down dynamic filters from a `HashJoinExec`. As of apache#18393 `HashJoinExec` produces filters of the form: ```sql CASE (hash_repartition % 2) WHEN 0 THEN a >= ab AND a <= ab AND b >= bb AND b <= bb AND hash_lookup(a,b) WHEN 1 THEN a >= aa AND a <= aa AND b >= ba AND b <= ba AND hash_lookup(a,b) ELSE FALSE END ``` Where `hash_lookup` is an expression that holds a reference to a given partitions hash join hash table and will check for membership. Since we created these new expressions but didn't make any of them serializable any attempt to do a distributed query or similar would run into errors. In apache#19300 we fixed `hash_lookup` by replacing it with `true` since it can't be serialized across the wire (we'd have to send the entire hash table). The logic was that this preserves the bounds checks, which as still valuable. This PR handles `hash_repartition` which determines which partition (and hence which branch of the `CASE` expression) the row belongs to. For this expression we *can* serialize it, so that's what I'm doing in this PR. ### Key Changes - **SeededRandomState wrapper**: Added a `SeededRandomState` struct that wraps `ahash::RandomState` while preserving the seeds used to create it. This is necessary because `RandomState` doesn't expose seeds after creation, but we need them for serialization. - **Updated seed constants**: Changed `HASH_JOIN_SEED` and `REPARTITION_RANDOM_STATE` constants to use `SeededRandomState` instead of raw `RandomState`. - **HashExpr enhancements**: - Changed `HashExpr` to use `SeededRandomState` - Added getter methods: `on_columns()`, `seeds()`, `description()` - Exported `HashExpr` and `SeededRandomState` from the joins module - **Protobuf support**: - Added `PhysicalHashExprNode` message to `datafusion.proto` with fields for `on_columns`, seeds (4 `u64` values), and `description` - Implemented serialization in `to_proto.rs` - Implemented deserialization in `from_proto.rs` ## Test plan - [x] Added roundtrip test in `roundtrip_physical_plan.rs` that creates a `HashExpr`, serializes it, deserializes it, and verifies the result - [x] All existing hash join tests pass (583 tests) - [x] All proto roundtrip tests pass 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…he#19400) ## 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. --> close apache#19398 ## Rationale for this change see issue apache#19398 ## What changes are included in this PR? impl `try_swapping_with_projection` for `CooperativeExec` and `CoalesceBatchesExec` ## Are these changes tested? add test case ## Are there any user-facing changes?
…pache#19412) ## Which issue does this PR close? Closes apache#19410 ## Rationale for this change This PR fixes a regression introduced in apache#18831 where queries using GROUP BY with ORDER BY positional reference to an aliased aggregate fail with: ``` Error during planning: Column in ORDER BY must be in GROUP BY or an aggregate function ``` **Failing query (now fixed):** ```sql with t as (select 'foo' as x) select x, count(*) as "Count" from t group by x order by 2 desc; ``` ## What changes are included in this PR? **Root cause:** When building the list of valid columns for ORDER BY validation in `select.rs`, alias names were converted to `Column` using `.into()`, which calls `from_qualified_name()` and normalizes identifiers to lowercase. However, ORDER BY positional references resolve to columns using schema field names, which preserve case. This caused a mismatch (e.g., `Column("Count")` vs `Column("count")`). **Fix:** Use `Column::new_unqualified()` instead of `.into()` to preserve the exact case of alias names, matching how the schema stores field names. ## Are these changes tested? Yes, added a regression test to `order.slt`. ## Are there any user-facing changes? No, this is a bug fix that restores expected behavior. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
## Which issue does this PR close? - Closes apache#19269. ## Rationale for this change See to issue apache#19269 for deeper rationale. DF did not have the notion that being partitioned on a superset of the required partitioning satisfied the condition. Having this logic will eliminate unnecessary repartitions and in turn other operators like partial aggregations. I introduced this behavior with the `repartition_subset_satisfactions` flag (default false) as there are some cases where repartitioning may still be wanted when we satisfy partitioning via this subset property. In particular, if when partitioned via Hash(a) there is data skew but when partitioned on Hash(a, b) there is better distribution, a user may want to turn this optimization off. I also made it the case such that if we satisfy repartitioning via a subset but the current amount of partitions < target_partitions, then we will still repartition to maintain and increase parallelism in the system when possible. ## What changes are included in this PR? - Modified `satisfy()` logic to check for subsets and return an enum of type of match: exact, subset, none - Do in `EnforceDistribution`, where `satisfy()` is called, do not allow subset logic for partitioned join operators as partitioning on each side much match exactly, thus need to repartition if subset logic is true - Created unit and sqllogictests ## Are these changes tested? - Unit test - sqllogictest - tpch correctness ### Benchmarks I did not see any drastic changes in benches, but the shuffle eliminations will be great improvements for distributed DF. <img width="628" height="762" alt="Screenshot 2025-12-12 at 8 28 15 PM" src="https://github.com/user-attachments/assets/4b42945f-34e0-46c9-a4ce-e7ccdd0c0603" /> <img width="490" height="746" alt="Screenshot 2025-12-12 at 8 30 15 PM" src="https://github.com/user-attachments/assets/846aef1b-8c5d-462d-83e7-7fa1e2a9372e" /> ## Are there any user-facing changes? Yes, users will now have the `repartition_subset_satisfications` option as described in this PR --------- Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
…5% faster (apache#19413) ## 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#18411 - Closes apache#19344 - Closes apache#19364 Note this is an alternate to apache#19364 ## Rationale for this change @camuel found a query where DuckDB's raw grouping is is faster. I looked into it and much of the difference can be explained by better vectorization in the comparisons and short string optimizations ## What changes are included in this PR? Optimize (will comment inline) ## Are these changes tested? By CI. See also benchmark results below. I tested manually as well Create Data: ```shell nice tpchgen-cli --tables=lineitem --format=parquet --scale-factor 100 ``` Run query: ```shell hyperfine --warmup 3 " datafusion-cli -c \"select l_returnflag,l_linestatus, count(*) as count_order from 'lineitem.parquet' group by l_returnflag, l_linestatus;\" " ``` Before (main): 1.368s ```shell Benchmark 1: datafusion-cli -c "select l_returnflag,l_linestatus, count(*) as count_order from 'lineitem.parquet' group by l_returnflag, l_linestatus;" Time (mean ± σ): 1.393 s ± 0.020 s [User: 16.778 s, System: 0.688 s] Range (min … max): 1.368 s … 1.438 s 10 runs ``` After (this PR) 1.022s ```shell Benchmark 1: ./datafusion-cli-multi-gby-try2 -c "select l_returnflag,l_linestatus, count(*) as count_order from 'lineitem.parquet' group by l_returnflag, l_linestatus;" Time (mean ± σ): 1.022 s ± 0.015 s [User: 11.685 s, System: 0.644 s] Range (min … max): 1.005 s … 1.052 s 10 runs ``` I have a PR that improves string view hashing performance too, see - apache#19374 ## Are there any user-facing changes? Faster performance
…19374) ## Which issue does this PR close? - builds on apache#19373 - part of apache#18411 - Broken out of apache#19344 - Closes apache#19344 ## Rationale for this change While looking at performance as part of apache#18411, I noticed we could speed up string view hashing by optimizing for small strings ## What changes are included in this PR? Optimize StringView hashing, specifically by using the inlined view for short strings ## Are these changes tested? Functionally by existing coverage Performance by benchmarks (added in apache#19373) which show * 15%-20% faster for mixed short/long strings * 50%-70% faster for "short" arrays where we know there are no strings longer than 12 bytes ``` utf8_view (small): multiple, no nulls 1.00 47.9±1.71µs ? ?/sec 4.00 191.6±1.15µs ? ?/sec utf8_view (small): multiple, nulls 1.00 78.4±0.48µs ? ?/sec 3.08 241.6±1.11µs ? ?/sec utf8_view (small): single, no nulls 1.00 13.9±0.19µs ? ?/sec 4.29 59.7±0.30µs ? ?/sec utf8_view (small): single, nulls 1.00 23.8±0.20µs ? ?/sec 3.10 73.7±1.03µs ? ?/sec utf8_view: multiple, no nulls 1.00 235.4±2.14µs ? ?/sec 1.11 262.2±1.34µs ? ?/sec utf8_view: multiple, nulls 1.00 227.2±2.11µs ? ?/sec 1.34 303.9±2.23µs ? ?/sec utf8_view: single, no nulls 1.00 71.6±0.74µs ? ?/sec 1.05 75.2±1.27µs ? ?/sec utf8_view: single, nulls 1.00 71.5±1.92µs ? ?/sec 1.28 91.6±4.65µs ``` <details><summary>Details</summary> <p> ``` Gnuplot not found, using plotters backend utf8_view: single, no nulls time: [20.872 µs 20.906 µs 20.944 µs] change: [−15.863% −15.614% −15.331%] (p = 0.00 < 0.05) Performance has improved. Found 13 outliers among 100 measurements (13.00%) 8 (8.00%) high mild 5 (5.00%) high severe utf8_view: single, nulls time: [22.968 µs 23.050 µs 23.130 µs] change: [−17.796% −17.384% −16.918%] (p = 0.00 < 0.05) Performance has improved. Found 7 outliers among 100 measurements (7.00%) 3 (3.00%) high mild 4 (4.00%) high severe utf8_view: multiple, no nulls time: [66.005 µs 66.155 µs 66.325 µs] change: [−19.077% −18.785% −18.512%] (p = 0.00 < 0.05) Performance has improved. utf8_view: multiple, nulls time: [72.155 µs 72.375 µs 72.649 µs] change: [−17.944% −17.612% −17.266%] (p = 0.00 < 0.05) Performance has improved. Found 11 outliers among 100 measurements (11.00%) 6 (6.00%) high mild 5 (5.00%) high severe utf8_view (small): single, no nulls time: [6.1401 µs 6.1563 µs 6.1747 µs] change: [−69.623% −69.484% −69.333%] (p = 0.00 < 0.05) Performance has improved. Found 6 outliers among 100 measurements (6.00%) 3 (3.00%) high mild 3 (3.00%) high severe utf8_view (small): single, nulls time: [10.234 µs 10.250 µs 10.270 µs] change: [−53.969% −53.815% −53.666%] (p = 0.00 < 0.05) Performance has improved. Found 5 outliers among 100 measurements (5.00%) 5 (5.00%) high severe utf8_view (small): multiple, no nulls time: [20.853 µs 20.905 µs 20.961 µs] change: [−66.006% −65.883% −65.759%] (p = 0.00 < 0.05) Performance has improved. Found 9 outliers among 100 measurements (9.00%) 7 (7.00%) high mild 2 (2.00%) high severe utf8_view (small): multiple, nulls time: [32.519 µs 32.600 µs 32.675 µs] change: [−53.937% −53.581% −53.232%] (p = 0.00 < 0.05) Performance has improved. Found 1 outliers among 100 measurements (1.00%) 1 (1.00%) high mild ``` </p> </details> ## 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. -->
…hAggregateStream (apache#19287) ## Which issue does this PR close? - Closes apache#19286. - Related to apache#13123 ## Rationale for this change GroupedHashAggregateStream currently always reports that it can spill to the memory tracking subsystem even though this is dependent on the aggregation mode and the grouping order. The optimistic logic in `group_aggregate_batch` does not correctly take the spilling preconditions into account which can lead to excessive memory use. In order to to resolve this, this PR implements disk spilling for all grouping modes. ## What changes are included in this PR? - Correctly set `MemoryConsumer::can_spill` to reflect actual spilling behaviour - Ensure optimistic out-of-memory tolerance in `group_aggregate_batch` is aligned with disk spilling or early emission logic - Implement output order respecting disk spilling for partially and fully sorted inputs. ## Are these changes tested? Added additional test case to demonstrate problem. Added test case to check that output order is respected after spilling. ## Are there any user-facing changes? Yes, memory exhaustion may be reported much earlier in the query pipeline than is currently the case. In my local tests with a per consumer memory limit of 32MiB, grouped aggregation would consume 480MiB in practice. This was then reported by ExternalSortExec which choked on trying to reserve that much memory.
…nd TaskContext (apache#19281) ## Which issue does this PR close? Addresses part of apache#18671 but does not close it. ## Rationale for this change This is the major change to address the requirements of apache#18671. This PR combines all of the previous PRs in the issue and uses them in `FFI_TableProvider` and `FFI_ExecutionPlan`. With this change the only remaining thing to close the issue is to remove the core crate. That is a large PR that mostly just changes import paths and will be a follow up. ## What changes are included in this PR? - Update all structs in the FFI crate to use the `FFI_PhysicalExpr`, `FFI_Session`, `FFI_TaskContext`, and `FFI_LogicalExtensionCodec`. - Remove creation of `SessionContext` within the FFI crate - Updates unit tests ## Are these changes tested? Unit tests are added. Coverage report: <img width="685" height="804" alt="Screenshot 2025-12-11 at 10 42 21 AM" src="https://github.com/user-attachments/assets/415822ec-909e-4abe-98de-ae32eb5ec9c3" /> ## Are there any user-facing changes? Yes. There is one major change to using the FFI crate that downstream users will need to implement. Now when creating a table provider, catalog provider, etc you need to provide a `TaskContextProvider` and an optional `LogicalExtensionCodec`. The upgrade guide has been updated.
…pache#19405) ## Which issue does this PR close? - Closes apache#19333 ## Rationale for this change The test suite for `ParquetOpener` exhibited substantial code duplication across multiple test functions. Each test was constructing `ParquetOpener` instances with largely identical field values, resulting in verbose and repetitive code that hindered maintainability and obscured the distinguishing characteristics of each test case. ## What changes are included in this PR? - Added `ParquetOpenerBuilder` struct in the test module (`#[cfg(test)]`) with sensible defaults matching the original test code patterns - Refactored 8 test functions to use the builder pattern: - `test_prune_on_statistics` - `test_prune_on_partition_statistics_with_dynamic_expression` - `test_prune_on_partition_values_and_file_statistics` - `test_prune_on_partition_value_and_data_value` - `test_opener_pruning_skipped_on_static_filters` - `test_reverse_scan_row_groups` - `test_reverse_scan_single_row_group` - `test_reverse_scan_with_row_selection` - Reduced code from ~28 lines per test to ~6-8 lines, highlighting only the fields that differ ## Are these changes tested? Yes ## Are there any user-facing changes? No
## Which issue does this PR close? N/A ## Rationale for this change I want to optimize the range for int64 and I need benches before ## What changes are included in this PR? add benchmark for `range` and `generate_series` for Int64 ## Are these changes tested? N/A ## Are there any user-facing changes? Nope
## 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#18893. ## 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. --> ## 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. --> ## 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)? --> ## 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. -->
…e#19399) Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.64.0 to 2.64.2. <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.64.2</h2> <ul> <li> <p>Update <code>zizmor@latest</code> to 1.19.0.</p> </li> <li> <p>Update <code>mise@latest</code> to 2025.12.12.</p> </li> </ul> <h2>2.64.1</h2> <ul> <li> <p>Update <code>tombi@latest</code> to 0.7.8.</p> </li> <li> <p>Update <code>mise@latest</code> to 2025.12.11.</p> </li> </ul> </blockquote> </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.64.2] - 2025-12-19</h2> <ul> <li> <p>Update <code>zizmor@latest</code> to 1.19.0.</p> </li> <li> <p>Update <code>mise@latest</code> to 2025.12.12.</p> </li> </ul> <h2>[2.64.1] - 2025-12-18</h2> <ul> <li> <p>Update <code>tombi@latest</code> to 0.7.8.</p> </li> <li> <p>Update <code>mise@latest</code> to 2025.12.11.</p> </li> </ul> <h2>[2.64.0] - 2025-12-17</h2> <ul> <li> <p><code>tool</code> input option now supports whitespace (space, tab, and line) or comma separated list. Previously, only comma-separated list was supported. (<a href="https://redirect.github.com/taiki-e/install-action/pull/1366">#1366</a>)</p> </li> <li> <p>Support <code>prek</code>. (<a href="https://redirect.github.com/taiki-e/install-action/pull/1357">#1357</a>, thanks <a href="https://github.com/j178"><code>@j178</code></a>)</p> </li> <li> <p>Support <code>mdbook-mermaid</code>. (<a href="https://redirect.github.com/taiki-e/install-action/pull/1359">#1359</a>, thanks <a href="https://github.com/CommanderStorm"><code>@CommanderStorm</code></a>)</p> </li> <li> <p>Support <code>martin</code>. (<a href="https://redirect.github.com/taiki-e/install-action/pull/1364">#1364</a>, thanks <a href="https://github.com/CommanderStorm"><code>@CommanderStorm</code></a>)</p> </li> <li> <p>Update <code>trivy@latest</code> to 0.68.2.</p> </li> <li> <p>Update <code>xh@latest</code> to 0.25.3.</p> </li> <li> <p>Update <code>mise@latest</code> to 2025.12.10.</p> </li> <li> <p>Update <code>uv@latest</code> to 0.9.18.</p> </li> <li> <p>Update <code>cargo-shear@latest</code> to 1.9.1.</p> </li> </ul> <h2>[2.63.3] - 2025-12-15</h2> <ul> <li>Update <code>cargo-nextest@latest</code> to 0.9.115.</li> </ul> <h2>[2.63.2] - 2025-12-15</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/taiki-e/install-action/commit/60581cd7025e0e855cebd745379013e286d9c787"><code>60581cd</code></a> Release 2.64.2</li> <li><a href="https://github.com/taiki-e/install-action/commit/c9fb49d91e88ccf5e88fb6d5d174ee664b3c825a"><code>c9fb49d</code></a> Update <code>zizmor@latest</code> to 1.19.0</li> <li><a href="https://github.com/taiki-e/install-action/commit/f4fd0f6b10b71be4ca5b027d2a48f27aeb948db7"><code>f4fd0f6</code></a> Update <code>mise@latest</code> to 2025.12.12</li> <li><a href="https://github.com/taiki-e/install-action/commit/ca44e2a6d435c2fa24b2d4b63fc366fdcab90221"><code>ca44e2a</code></a> Release 2.64.1</li> <li><a href="https://github.com/taiki-e/install-action/commit/cb8922a6d07b524703bfba4b32de265fe917577c"><code>cb8922a</code></a> Update <code>tombi@latest</code> to 0.7.8</li> <li><a href="https://github.com/taiki-e/install-action/commit/a16c289c87d9573c5d0ca86f8ea0db4fa677af09"><code>a16c289</code></a> tools: Make tool name branch/tag push atomic</li> <li><a href="https://github.com/taiki-e/install-action/commit/029c22f1bfbd03d7a8861260d8ceb4bb25697f24"><code>029c22f</code></a> Update <code>mise@latest</code> to 2025.12.11</li> <li>See full diff in <a href="https://github.com/taiki-e/install-action/compare/69e777b377e4ec209ddad9426ae3e0c1008b0ef3...60581cd7025e0e855cebd745379013e286d9c787">compare view</a></li> </ul> </details> <br /> [](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 merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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>
## 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#19157 ## 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. --> The `crc32` UDF was using the default return_type implementation which does not preserve nullability information [Spark CRC32](https://github.com/apache/spark/blob/master/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/hash.scala#L213-L240) * Only returns the data type (Int64) * Doesn't consider nullability of inputs * Would always mark output as non-nullable ## 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. --> * Implemented `return_field_from_args`: Creates a field with Int64 type and correctly propagates nullability from input fields and scalar arguments * Updated `return_type`: Now returns an error directing users to use return_field_from_args instead * Added necessary imports: `Field`, `FieldRef`, and `ReturnFieldArgs` to support the new implementation * Added comprehensive nullability tests: Verifies that nullable inputs, non-nullable inputs, and null scalar literals are handled correctly ## 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)? --> * Non-nullable Binary input produces non-nullable Int64 output * Nullable Binary input produces nullable Int64 output * Null scalar literal (e.g., crc32(NULL)) produces nullable Int64 output * Data type is correctly set to Int64 in all cases ## 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. --> This is a bug fix that corrects schema metadata only, it does not change the actual computation or introduce any breaking changes to the API.
…19299) ## Which issue does this PR close? None, as this PR is rather self-describing. ## Rationale for this change We recently encountered stack overflow issues in the physical planner's `create_physical_expr` function, when dealing with deeply nested expression trees. In the rest of the codebase, it seems the `recursive::recursive` attribute is used to prevent this. ## What changes are included in this PR? This PR adds the `recursive::recursive` attribute on `create_physical_expr` whenever the `recursive_protection` feature is enabled. ## Are these changes tested? Yes, but mostly for the sake of manually testing the change. I don't think it should be merged, as it has to be `#[ignore]`d anyway, as the `recursive_protection` is not enabled in tests (which means it would systematically crash). I've left it in this PR however, to make review / manual testing easier. ## Are there any user-facing changes? None. --------- Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
Bumps [aws-config](https://github.com/smithy-lang/smithy-rs) from 1.8.11 to 1.8.12. <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/smithy-lang/smithy-rs/commits">compare view</a></li> </ul> </details> <br /> [](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 merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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>
Bumps [log](https://github.com/rust-lang/log) from 0.4.28 to 0.4.29. <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.29</h2> <h2>MSRV</h2> <p>This release increases <code>log</code>'s MSRV from <code>1.61.0</code> to <code>1.68.0</code>.</p> <h2>What's Changed</h2> <ul> <li>docs: Add missing impls from README.md by <a href="https://github.com/AldaronLau"><code>@AldaronLau</code></a> in <a href="https://redirect.github.com/rust-lang/log/pull/703">rust-lang/log#703</a></li> <li>Point to new URLs for favicon and logo by <a href="https://github.com/AldaronLau"><code>@AldaronLau</code></a> in <a href="https://redirect.github.com/rust-lang/log/pull/704">rust-lang/log#704</a></li> <li>perf: reduce llvm-lines of FromStr for <code>Level</code> and <code>LevelFilter</code> by <a href="https://github.com/dishmaker"><code>@dishmaker</code></a> in <a href="https://redirect.github.com/rust-lang/log/pull/709">rust-lang/log#709</a></li> <li>Replace serde with serde_core by <a href="https://github.com/Thomasdezeeuw"><code>@Thomasdezeeuw</code></a> in <a href="https://redirect.github.com/rust-lang/log/pull/712">rust-lang/log#712</a></li> <li>Fix clippy lints by <a href="https://github.com/Thomasdezeeuw"><code>@Thomasdezeeuw</code></a> in <a href="https://redirect.github.com/rust-lang/log/pull/713">rust-lang/log#713</a></li> <li>Use GitHub Actions to install Rust and cargo-hack by <a href="https://github.com/Thomasdezeeuw"><code>@Thomasdezeeuw</code></a> in <a href="https://redirect.github.com/rust-lang/log/pull/715">rust-lang/log#715</a></li> <li>Exclude old unstable_kv features from testing matrix by <a href="https://github.com/Thomasdezeeuw"><code>@Thomasdezeeuw</code></a> in <a href="https://redirect.github.com/rust-lang/log/pull/716">rust-lang/log#716</a></li> <li>Fix up CI by <a href="https://github.com/KodrAus"><code>@KodrAus</code></a> in <a href="https://redirect.github.com/rust-lang/log/pull/718">rust-lang/log#718</a></li> <li>Prepare for 0.4.29 release by <a href="https://github.com/KodrAus"><code>@KodrAus</code></a> in <a href="https://redirect.github.com/rust-lang/log/pull/719">rust-lang/log#719</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/AldaronLau"><code>@AldaronLau</code></a> made their first contribution in <a href="https://redirect.github.com/rust-lang/log/pull/703">rust-lang/log#703</a></li> <li><a href="https://github.com/dishmaker"><code>@dishmaker</code></a> made their first contribution in <a href="https://redirect.github.com/rust-lang/log/pull/709">rust-lang/log#709</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/rust-lang/log/compare/0.4.28...0.4.29">https://github.com/rust-lang/log/compare/0.4.28...0.4.29</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.29] - 2025-12-02</h2> <h2>What's Changed</h2> <ul> <li>perf: reduce llvm-lines of FromStr for <code>Level</code> and <code>LevelFilter</code> by <a href="https://github.com/dishmaker"><code>@dishmaker</code></a> in <a href="https://redirect.github.com/rust-lang/log/pull/709">rust-lang/log#709</a></li> <li>Replace serde with serde_core by <a href="https://github.com/Thomasdezeeuw"><code>@Thomasdezeeuw</code></a> in <a href="https://redirect.github.com/rust-lang/log/pull/712">rust-lang/log#712</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/AldaronLau"><code>@AldaronLau</code></a> made their first contribution in <a href="https://redirect.github.com/rust-lang/log/pull/703">rust-lang/log#703</a></li> <li><a href="https://github.com/dishmaker"><code>@dishmaker</code></a> made their first contribution in <a href="https://redirect.github.com/rust-lang/log/pull/709">rust-lang/log#709</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/rust-lang/log/compare/0.4.28...0.4.29">https://github.com/rust-lang/log/compare/0.4.28...0.4.29</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/rust-lang/log/commit/b1e2df7bce7a1b685aa9bfd1db0a5cac1f0fc27d"><code>b1e2df7</code></a> Merge pull request <a href="https://redirect.github.com/rust-lang/log/issues/719">#719</a> from rust-lang/cargo/0.4.29</li> <li><a href="https://github.com/rust-lang/log/commit/3fe1a546dc323e614c35d136920a112406910e06"><code>3fe1a54</code></a> prepare for 0.4.29 release</li> <li><a href="https://github.com/rust-lang/log/commit/7a432d9ab570c49d42fcbd1c3b9e1e300064c2b9"><code>7a432d9</code></a> Merge pull request <a href="https://redirect.github.com/rust-lang/log/issues/718">#718</a> from rust-lang/ci/msrv</li> <li><a href="https://github.com/rust-lang/log/commit/0689d568479bb578f66e48df43628cc04aa6269b"><code>0689d56</code></a> rebump msrv to 1.68.0</li> <li><a href="https://github.com/rust-lang/log/commit/46b448e2a76a14210a7270ec11ad97cb9cbda6dc"><code>46b448e</code></a> try drop msrv back to 1.61.0</li> <li><a href="https://github.com/rust-lang/log/commit/929ab3812e86915bb5edb65609cd6d5cb17939fb"><code>929ab38</code></a> fix up doc test feature gate</li> <li><a href="https://github.com/rust-lang/log/commit/957cece4780cb006cbe2f819bd2f893822aad7cb"><code>957cece</code></a> bump serde-dependent crates</li> <li><a href="https://github.com/rust-lang/log/commit/bea40c847c77ecb7b7e9f2d858a21edaa2aa6159"><code>bea40c8</code></a> bump msrv to 1.68.0</li> <li><a href="https://github.com/rust-lang/log/commit/c540184ee9581d7373135f5511b6b174b5cee2d6"><code>c540184</code></a> Merge pull request <a href="https://redirect.github.com/rust-lang/log/issues/716">#716</a> from rust-lang/ci-smaller-matrix2</li> <li><a href="https://github.com/rust-lang/log/commit/c971e636c4b44ff01ff21e6aa82607272d2d0bf2"><code>c971e63</code></a> Merge branch 'master' into ci-smaller-matrix2</li> <li>Additional commits viewable in <a href="https://github.com/rust-lang/log/compare/0.4.28...0.4.29">compare view</a></li> </ul> </details> <br /> [](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 merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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>
…e#19451) Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.64.2 to 2.65.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.65.1</h2> <ul> <li> <p>Update <code>tombi@latest</code> to 0.7.9.</p> </li> <li> <p>Update <code>vacuum@latest</code> to 0.21.6.</p> </li> <li> <p>Update <code>prek@latest</code> to 0.2.23.</p> </li> </ul> <h2>2.65.0</h2> <ul> <li> <p>Support <code>cargo-insta</code>. (<a href="https://redirect.github.com/taiki-e/install-action/pull/1372">#1372</a>, thanks <a href="https://github.com/CommanderStorm"><code>@CommanderStorm</code></a>)</p> </li> <li> <p>Update <code>vacuum@latest</code> to 0.21.2.</p> </li> </ul> </blockquote> </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.65.1] - 2025-12-21</h2> <ul> <li> <p>Update <code>tombi@latest</code> to 0.7.9.</p> </li> <li> <p>Update <code>vacuum@latest</code> to 0.21.6.</p> </li> <li> <p>Update <code>prek@latest</code> to 0.2.23.</p> </li> </ul> <h2>[2.65.0] - 2025-12-20</h2> <ul> <li> <p>Support <code>cargo-insta</code>. (<a href="https://redirect.github.com/taiki-e/install-action/pull/1372">#1372</a>, thanks <a href="https://github.com/CommanderStorm"><code>@CommanderStorm</code></a>)</p> </li> <li> <p>Update <code>vacuum@latest</code> to 0.21.2.</p> </li> </ul> <h2>[2.64.2] - 2025-12-19</h2> <ul> <li> <p>Update <code>zizmor@latest</code> to 1.19.0.</p> </li> <li> <p>Update <code>mise@latest</code> to 2025.12.12.</p> </li> </ul> <h2>[2.64.1] - 2025-12-18</h2> <ul> <li> <p>Update <code>tombi@latest</code> to 0.7.8.</p> </li> <li> <p>Update <code>mise@latest</code> to 2025.12.11.</p> </li> </ul> <h2>[2.64.0] - 2025-12-17</h2> <ul> <li> <p><code>tool</code> input option now supports whitespace (space, tab, and line) or comma separated list. Previously, only comma-separated list was supported. (<a href="https://redirect.github.com/taiki-e/install-action/pull/1366">#1366</a>)</p> </li> <li> <p>Support <code>prek</code>. (<a href="https://redirect.github.com/taiki-e/install-action/pull/1357">#1357</a>, thanks <a href="https://github.com/j178"><code>@j178</code></a>)</p> </li> <li> <p>Support <code>mdbook-mermaid</code>. (<a href="https://redirect.github.com/taiki-e/install-action/pull/1359">#1359</a>, thanks <a href="https://github.com/CommanderStorm"><code>@CommanderStorm</code></a>)</p> </li> <li> <p>Support <code>martin</code>. (<a href="https://redirect.github.com/taiki-e/install-action/pull/1364">#1364</a>, thanks <a href="https://github.com/CommanderStorm"><code>@CommanderStorm</code></a>)</p> </li> <li> <p>Update <code>trivy@latest</code> to 0.68.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/b9c5db3aef04caffaf95a1d03931de10fb2a140f"><code>b9c5db3</code></a> Release 2.65.1</li> <li><a href="https://github.com/taiki-e/install-action/commit/7796c0f3bbb4224effb7b9a5b719c58e4dcfffcd"><code>7796c0f</code></a> Update changelog</li> <li><a href="https://github.com/taiki-e/install-action/commit/f071f24b175c459aa9e08923b0660736cbb4a0c2"><code>f071f24</code></a> Update <code>tombi@latest</code> to 0.7.9</li> <li><a href="https://github.com/taiki-e/install-action/commit/874ad324364a4db3fb02c1f5e2b88535e22494a0"><code>874ad32</code></a> Update <code>vacuum@latest</code> to 0.21.6</li> <li><a href="https://github.com/taiki-e/install-action/commit/51bd7eff063004d77f2538d773da6664a6d8ce4d"><code>51bd7ef</code></a> Update <code>vacuum@latest</code> to 0.21.5</li> <li><a href="https://github.com/taiki-e/install-action/commit/e3a472337e859edcca3c6b097ee68fda61485251"><code>e3a4723</code></a> Update <code>prek@latest</code> to 0.2.23</li> <li><a href="https://github.com/taiki-e/install-action/commit/bfc291e1e39400b67eda124e4a7b4380e93b3390"><code>bfc291e</code></a> Release 2.65.0</li> <li><a href="https://github.com/taiki-e/install-action/commit/4620a85cf9e526d28a9eab84e396df233006dbda"><code>4620a85</code></a> Update changelog</li> <li><a href="https://github.com/taiki-e/install-action/commit/09980ef8ed3fa65b50d6c1a4756890d5298af699"><code>09980ef</code></a> Support <code>cargo-insta</code> (<a href="https://redirect.github.com/taiki-e/install-action/issues/1372">#1372</a>)</li> <li><a href="https://github.com/taiki-e/install-action/commit/e6fc9bc5a659502256890b92f1759f4b02235b76"><code>e6fc9bc</code></a> Update <code>vacuum@latest</code> to 0.21.2</li> <li>Additional commits viewable in <a href="https://github.com/taiki-e/install-action/compare/60581cd7025e0e855cebd745379013e286d9c787...b9c5db3aef04caffaf95a1d03931de10fb2a140f">compare view</a></li> </ul> </details> <br /> [](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 merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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>
…ache#19455) Bumps [sphinx-reredirects](https://github.com/documatt/sphinx-reredirects) from 1.0.0 to 1.1.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/documatt/sphinx-reredirects/blob/main/docs/changelog.rst">sphinx-reredirects's changelog</a>.</em></p> <blockquote> <p>1.1.0 (2025-12-22)</p> <hr /> <ul> <li>support Sphinx 9.0 and above</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/documatt/sphinx-reredirects/commits">compare view</a></li> </ul> </details> <br /> [](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 merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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>
Bumps [insta](https://github.com/mitsuhiko/insta) from 1.44.3 to 1.45.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/mitsuhiko/insta/releases">insta's releases</a>.</em></p> <blockquote> <h2>1.45.0</h2> <h2>Release Notes</h2> <ul> <li>Add external diff tool support via <code>INSTA_DIFF_TOOL</code> environment variable. When set, insta uses the specified tool (e.g., <code>delta</code>, <code>difftastic</code>) to display snapshot diffs instead of the built-in diff. The tool is invoked as <code><tool> <old_file> <new_file></code>. <a href="https://redirect.github.com/mitsuhiko/insta/issues/844">#844</a></li> <li>Add <code>test.disable_nextest_doctest</code> config option to <code>insta.yaml</code>, allowing users to silence the nextest doctest warning via config instead of passing <code>--dnd</code> every time. <a href="https://redirect.github.com/mitsuhiko/insta/issues/842">#842</a></li> <li>Skip non-insta snapshot files in unreferenced detection. Projects using both insta and other snapshot tools (like vitest or jest) can now use <code>--unreferenced=reject</code> without false positives on <code>.snap</code> files from other tools. <a href="https://redirect.github.com/mitsuhiko/insta/issues/846">#846</a></li> <li>Collect warnings from tests for display after run. Ensures deprecation warnings are visible even when nextest suppresses stdout/stderr from passing tests. <a href="https://redirect.github.com/mitsuhiko/insta/issues/840">#840</a></li> <li>Update TOML serialization to be up-to-date and backwards-compatible. <a href="https://redirect.github.com/mitsuhiko/insta/issues/834">#834</a></li> <li>Support <code>clippy::needless_raw_strings</code> lint by only using raw strings when content contains backslashes or quotes. <a href="https://redirect.github.com/mitsuhiko/insta/issues/828">#828</a></li> </ul> <h2>Install cargo-insta 1.45.0</h2> <h3>Install prebuilt binaries via shell script</h3> <pre lang="sh"><code>curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mitsuhiko/insta/releases/download/1.45.0/cargo-insta-installer.sh | sh </code></pre> <h3>Install prebuilt binaries via powershell script</h3> <pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c "irm https://github.com/mitsuhiko/insta/releases/download/1.45.0/cargo-insta-installer.ps1 | iex" </code></pre> <h2>Download cargo-insta 1.45.0</h2> <table> <thead> <tr> <th>File</th> <th>Platform</th> <th>Checksum</th> </tr> </thead> <tbody> <tr> <td><a href="https://github.com/mitsuhiko/insta/releases/download/1.45.0/cargo-insta-aarch64-apple-darwin.tar.xz">cargo-insta-aarch64-apple-darwin.tar.xz</a></td> <td>Apple Silicon macOS</td> <td><a href="https://github.com/mitsuhiko/insta/releases/download/1.45.0/cargo-insta-aarch64-apple-darwin.tar.xz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/mitsuhiko/insta/releases/download/1.45.0/cargo-insta-x86_64-apple-darwin.tar.xz">cargo-insta-x86_64-apple-darwin.tar.xz</a></td> <td>Intel macOS</td> <td><a href="https://github.com/mitsuhiko/insta/releases/download/1.45.0/cargo-insta-x86_64-apple-darwin.tar.xz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/mitsuhiko/insta/releases/download/1.45.0/cargo-insta-x86_64-pc-windows-msvc.zip">cargo-insta-x86_64-pc-windows-msvc.zip</a></td> <td>x64 Windows</td> <td><a href="https://github.com/mitsuhiko/insta/releases/download/1.45.0/cargo-insta-x86_64-pc-windows-msvc.zip.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/mitsuhiko/insta/releases/download/1.45.0/cargo-insta-x86_64-unknown-linux-gnu.tar.xz">cargo-insta-x86_64-unknown-linux-gnu.tar.xz</a></td> <td>x64 Linux</td> <td><a href="https://github.com/mitsuhiko/insta/releases/download/1.45.0/cargo-insta-x86_64-unknown-linux-gnu.tar.xz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/mitsuhiko/insta/releases/download/1.45.0/cargo-insta-x86_64-unknown-linux-musl.tar.xz">cargo-insta-x86_64-unknown-linux-musl.tar.xz</a></td> <td>x64 MUSL Linux</td> <td><a href="https://github.com/mitsuhiko/insta/releases/download/1.45.0/cargo-insta-x86_64-unknown-linux-musl.tar.xz.sha256">checksum</a></td> </tr> </tbody> </table> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md">insta's changelog</a>.</em></p> <blockquote> <h2>1.45.0</h2> <ul> <li>Add external diff tool support via <code>INSTA_DIFF_TOOL</code> environment variable. When set, insta uses the specified tool (e.g., <code>delta</code>, <code>difftastic</code>) to display snapshot diffs instead of the built-in diff. The tool is invoked as <code><tool> <old_file> <new_file></code>. <a href="https://redirect.github.com/mitsuhiko/insta/issues/844">#844</a></li> <li>Add <code>test.disable_nextest_doctest</code> config option to <code>insta.yaml</code>, allowing users to silence the nextest doctest warning via config instead of passing <code>--dnd</code> every time. <a href="https://redirect.github.com/mitsuhiko/insta/issues/842">#842</a></li> <li>Skip non-insta snapshot files in unreferenced detection. Projects using both insta and other snapshot tools (like vitest or jest) can now use <code>--unreferenced=reject</code> without false positives on <code>.snap</code> files from other tools. <a href="https://redirect.github.com/mitsuhiko/insta/issues/846">#846</a></li> <li>Collect warnings from tests for display after run. Ensures deprecation warnings are visible even when nextest suppresses stdout/stderr from passing tests. <a href="https://redirect.github.com/mitsuhiko/insta/issues/840">#840</a></li> <li>Update TOML serialization to be up-to-date and backwards-compatible. <a href="https://redirect.github.com/mitsuhiko/insta/issues/834">#834</a></li> <li>Support <code>clippy::needless_raw_strings</code> lint by only using raw strings when content contains backslashes or quotes. <a href="https://redirect.github.com/mitsuhiko/insta/issues/828">#828</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/mitsuhiko/insta/commit/681a02612b2030e7fb39fe216dba0a1a9c5c46c9"><code>681a026</code></a> Release 1.45.0 (<a href="https://redirect.github.com/mitsuhiko/insta/issues/847">#847</a>)</li> <li><a href="https://github.com/mitsuhiko/insta/commit/ad233cd21b1022559377072af5bc9b1e0e2fec4a"><code>ad233cd</code></a> Skip non-insta snapshot files in unreferenced detection (<a href="https://redirect.github.com/mitsuhiko/insta/issues/846">#846</a>)</li> <li><a href="https://github.com/mitsuhiko/insta/commit/d8e8dfe7aa5cdc720239398648bc97f9eabb965c"><code>d8e8dfe</code></a> Collect warnings from tests for display after run (<a href="https://redirect.github.com/mitsuhiko/insta/issues/840">#840</a>)</li> <li><a href="https://github.com/mitsuhiko/insta/commit/521812cb86d758d08b0e76051437df2337775d86"><code>521812c</code></a> Support clippy::needless_raw_strings lint (<a href="https://redirect.github.com/mitsuhiko/insta/issues/828">#828</a>)</li> <li><a href="https://github.com/mitsuhiko/insta/commit/5822a95759c8b528bf0b64f997d312c523acc523"><code>5822a95</code></a> Add external diff tool support via INSTA_DIFF_TOOL (<a href="https://redirect.github.com/mitsuhiko/insta/issues/844">#844</a>)</li> <li><a href="https://github.com/mitsuhiko/insta/commit/e50388f534145e353c435420e322bd6ac9cc8bf2"><code>e50388f</code></a> Add config file support for disable_nextest_doctest (<a href="https://redirect.github.com/mitsuhiko/insta/issues/842">#842</a>)</li> <li><a href="https://github.com/mitsuhiko/insta/commit/5aadfe480601b77bfd27420a7553fd2480b67fed"><code>5aadfe4</code></a> Up-to-date, backwards-compatible TOML (<a href="https://redirect.github.com/mitsuhiko/insta/issues/834">#834</a>)</li> <li>See full diff in <a href="https://github.com/mitsuhiko/insta/compare/1.44.3...1.45.0">compare view</a></li> </ul> </details> <br /> [](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 merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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>
* refactor: simplify ToTimestamp* constructors using macros for consist…
…he#19409) ## Which issue does this PR close? * Part of apache#19250 ## Rationale for this change This PR enables support for the `power()` function with negative scale decimals (e.g., `1e4` represented as `1` with scale `-4`) and log for decimal32 decimal64 . ## What changes are included in this PR? - **Updated `pow_decimal_int` logic:** Added support for negative scaling factors. When the adjustment factor is negative, the function now multiplies by instead of dividing. - For decimals with negative scale, the value is first converted to f64 to compute the logarithm. ## Are these changes tested? Yes. * Verified locally using `sqllogictest`. * Covers cases such as `SELECT power(1e4, 2)` which previously returned a "Negative scale is not supported" error. --------- Co-authored-by: Oleks V <comphead@users.noreply.github.com>
## Which issue does this PR close? Closes apache#18671 ## Rationale for this change With the latest changes for apache#18671 we no longer require `datafusion` crate as a dependency. This will reduce build times for users. Also it guarantees we do not accidentally introduce code that will create a `SessionContext` or any other large binary inside our FFI implementations. ## What changes are included in this PR? - Remove `datafusion` crate from Cargo.toml - Update paths - Apply consistent formatting ## Are these changes tested? Existing unit tests. ## Are there any user-facing changes? No. This only updates paths.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
catalog
common
core
datasource
development-process
documentation
Improvements or additions to documentation
execution
ffi
functions
logical-expr
optimizer
physical-expr
physical-plan
proto
spark
sql
sqllogictest
substrait
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR to refactor and update your upstream PR. I took the liberty of merging up to latest main. Let me know what you think.
The biggest changes are
All my changes are in abbf107