)]}'
{
  "log": [
    {
      "commit": "7dfc2412143f09c564ecaa9d659cb6276918c7fa",
      "tree": "944a727d9f9ddf2412b5904ecc65f9701d684625",
      "parents": [
        "09e98e4116be2c92c4936bfbccf36bb913a756ce"
      ],
      "author": {
        "name": "Squancher",
        "email": "32325191+squanch-c@users.noreply.github.com",
        "time": "Mon Oct 19 07:26:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 07:26:57 2026 +0800"
      },
      "message": "[AURON #2579] Fix zero-column round-robin shuffle presort (#2580)\n\n# Which issue does this PR close?\n\nCloses apache/auron#2579\n\n# Rationale for this change\n\n`COUNT(*)` above an unkeyed `REPARTITION` can leave zero-column input\nbatches\nwith positive row counts. Native round-robin presort then passes no\ncolumns\nto `RowConverter`, which produces zero key rows and causes division by\nzero\nin `ExternalSorter`.\n\nMinimal reproduction with Auron native shuffle conversion enabled:\n\n```sql\nSELECT count(*) AS row_count\nFROM (\n    SELECT /*+ REPARTITION(2) */ *\n    FROM (\n        SELECT explode(array(\n            CAST(0 AS BIGINT), CAST(1 AS BIGINT),\n            CAST(2 AS BIGINT), CAST(3 AS BIGINT)\n        )) AS id\n    ) seed\n) inputs;\n```\n\nExpected result: `4`, as returned by the JVM engine and by the same\nquery\nwithout the `REPARTITION` hint. The original Native execution fails\nwith:\n\n```text\noutput_with_sender[Shuffle] error:\noutput_with_sender[Sort] error:\nattempt to divide by zero\n```\n\nThe captured failing plan includes `Project (Output: [])` followed by\n`NativeShuffleExchange (Input: [], RoundRobinPartitioning(2))`. This\nexample\nreproduced the failure on Spark 3.5.9 using the RSS path. SQL execution\nwith\na rebuilt patched JAR has now been successfully validated on Spark 3.5.9\nwith Celeborn (RSS).\n\nAn empty-key guard existed in the former sorter implementation in #958\nand\nwas removed with that implementation in #1078. This restores the\nbehavior\nin the shared presort helper, which has no limit or offset.\n\n# What changes are included in this PR?\n\n- Return the input from `create_default_ascending_sort_exec` when no\nsort keys\n  are present. Both local and RSS round-robin shuffle use this helper.\n- Add two regression tests covering zero-column batches, multiple\nbatches and\n  partitions, empty input, and values with and without sort keys.\n\n# Are there any user-facing changes?\n\n`COUNT(*)` over native round-robin repartitioning no longer fails when\ncolumn\npruning leaves zero input columns. No configuration change is required.\n\n# How was this patch tested?\n\nOn macOS arm64 with nightly-2025-05-09, upstream vendor setup and\nunchanged\n`Cargo.lock`:\n\n```text\ncargo test --locked -p datafusion-ext-plans test_default_sort_ -- --nocapture\n2 passed; 0 failed; 189 filtered out\n```\n\nRust workspace formatting also passed:\n\n```text\ncargo fmt --all -- --check\nExit code: 0\n```\n\nPinned rustfmt and `git diff --check` passed. An earlier\nnegative-control run\nof the zero-column regression test reproduced division by zero with only\nthe\nhelper guard removed.\n\nRuntime SQL validation passed on Spark 3.5.9 with Celeborn (RSS), using\na\nrebuilt Auron 9.0.0-SNAPSHOT JAR with this fix backported. The\npreviously\nfailing zero-column round-robin SQL now completes successfully.\n\nThe SQL reproduction was also added as the `AURON-2579` regression test\nin\n`AuronDataFrameSuite` and passed with Spark 3.5.9 and Scala 2.12 using:\n\n```bash\n./build/mvn \\\n  -Ppre,spark-3.5,scala-2.12,spark-tests \\\n  -DsparkVersion\u003d3.5.9 \\\n  -pl auron-spark-tests/spark35 \\\n  test -DskipTests\u003dfalse \\\n  -Dsuites\u003dorg.apache.spark.sql.AuronDataFrameSuite \\\n  -Dtests\u003dAURON-2579\n```\n\nThe test verifies a local native shuffle with zero input columns and\n`RoundRobinPartitioning(2)`, and checks that `COUNT(*)` returns `4`.\n\n# Was this patch authored or co-authored using generative AI tooling?\n\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-6; exact client build unavailable)\n\n---------\n\nCo-authored-by: huiyaoye \u003chuiyaoye@moonton.com\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "09e98e4116be2c92c4936bfbccf36bb913a756ce",
      "tree": "cd6d77bab1e5da9f18a84498fedc8cb94fe64548",
      "parents": [
        "b0b54b5b8b29c5cfbacb8c62d5f4b5d0504c700e"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Sat Oct 17 11:17:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 11:17:06 2026 +0800"
      },
      "message": "[AURON #1919] Clean up Clippy code style/redundancy lints (Part 2) (#2585)\n\n# Which issue does this PR close?\n\nCloses #1919\n\n# Rationale for this change\n\nRemove the temporary allowances for these seven Clippy lints so CI can\nenforce them across the Rust workspace.\n\n# What changes are included in this PR?\n\n- Remove the seven lint allowances from Cargo.toml.\n- Remove redundant casts, clones on Copy types, and unnecessary slice\nconversions.\n- Replace manual repetition and ceiling division with repeat_n and\ndiv_ceil.\n- Execute cursor advancement before returning Ok(()), preserving\nconcurrent polling and error propagation.\n\n# Are there any user-facing changes?\n\nNo intended user-facing behavior changes.\n\n# How was this patch tested?\n\nUsing the pinned nightly-2025-05-09 toolchain:\n\n- `cargo fmt --all -- --check`\n- `cargo clippy --all-targets --workspace -- -D warnings`\n- `cargo test --workspace --all-features`.\n- `./dev/reformat --check` with JDK 8/17.\n\n# Was this patch authored or co-authored using generative AI tooling?\n\n- [ ] Yes\n- [x] No\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nSigned-off-by: Ma Zhengxuan \u003c1319614897@qq.com\u003e"
    },
    {
      "commit": "b0b54b5b8b29c5cfbacb8c62d5f4b5d0504c700e",
      "tree": "6ba4f7bb069b4b1b62d9b1738e3a3dd87a076391",
      "parents": [
        "90b109cd0c943b83105ef901819ff00a9ec89306"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Sat Oct 17 08:38:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 08:38:05 2026 +0800"
      },
      "message": "[AURON #2561] Support trunc function natively (#2571)\n\n# Which issue does this PR close?\n\nCloses #2561\n\n# Rationale for this change\n\nSpark\u0027s `trunc(date, fmt)` currently falls back to Spark evaluation.\nThis adds native support with Spark-compatible DATE results.\n\n# What changes are included in this PR?\n\n- Convert `TruncDate` and register `Spark_Trunc`.\n- Support YEAR, QUARTER, MONTH and WEEK, including format aliases,\ncase-insensitive matching and column format arguments.\n- Match Spark\u0027s null, invalid-format and Date32 boundary behavior,\nincluding quarter overflow.\n- Add Rust tests and Spark comparison tests with native plan checks.\n\n# Are there any user-facing changes?\n\nQueries using `trunc` can execute natively, with the same results and\noverflow behavior as Spark.\n\n# How was this patch tested?\n\n- `cargo test -p datafusion-ext-functions`.\n- `cargo clippy -p datafusion-ext-functions --all-targets -- -D\nwarnings`.\n- `./dev/reformat --check`.\n- `./build/mvn install -Ppre -Pspark-3.5 -Pscala-2.12 -pl\nspark-extension-shims-spark -am -DskipTests`.\n- `./build/mvn test -Ppre -Pspark-3.5 -Pscala-2.12 -pl\nspark-extension-shims-spark -Dsuites\u003dorg.apache.auron.AuronFunctionSuite\n-DskipBuildNative`.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-6)\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "90b109cd0c943b83105ef901819ff00a9ec89306",
      "tree": "b9e5f8f5f30c669212d5d03b821ab1c60f0d1e4b",
      "parents": [
        "245634882d35abfb6e0945ed4573cbf82adb3bf5"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Sat Oct 17 08:36:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 08:36:57 2026 +0800"
      },
      "message": "[AURON #2558] Support Iceberg _partition metadata in native scans (#2566)\n\n# Which issue does this PR close?\n\nCloses #2558\n\n# Rationale for this change\n\nQueries projecting `_partition` currently fall back to Spark even when\nthe Iceberg COW scan is otherwise eligible for native execution.\n\n# What changes are included in this PR?\n\n- Materialize `_partition` through the existing per-task constant path\nusing Iceberg\u0027s unified partition type and `PartitionUtil.constantsMap`.\n- Preserve Iceberg partition field IDs when selecting projected fields,\nsince Spark may renumber nested metadata fields.\n- Serialize struct constants from their existing Catalyst\nrepresentation.\n- Add Parquet and ORC integration coverage for empty and unpartitioned\ntables, NULL values, identity/bucket/day transforms, partition\nevolution, field projections, and fallback.\n\nThe scope covers regular COW scans. `_pos`, delete-file handling, and\n`_partition` in changelog scans remain outside this change.\n\n# Are there any user-facing changes?\n\nEligible COW queries projecting `_partition` or its fields can use\n`NativeIcebergTableScan`. No new configuration is required.\n\n# How was this patch tested?\n\n- `./dev/reformat --check`.\n- `./build/mvn -B -ntp -Ppre,spark-3.5,scala-2.12,iceberg-1.10.1 -pl\nthirdparty/auron-iceberg -am -DskipTests clean install`.\n- `./build/mvn -B -ntp -Ppre,spark-3.5,scala-2.12,iceberg-1.10.1 -pl\nthirdparty/auron-iceberg -DskipBuildNative\n-Dsuites\u003dorg.apache.auron.iceberg.AuronIcebergIntegrationSuite test`.\n\n# Was this patch authored or co-authored using generative AI tooling?\n\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-6)\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "245634882d35abfb6e0945ed4573cbf82adb3bf5",
      "tree": "5ec9c552111b33a36b8834607426c4015dd948d4",
      "parents": [
        "213e3f406b36c682c73437511dc2f3f905463dd7"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Sat Oct 17 08:28:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 08:28:17 2026 +0800"
      },
      "message": "[AURON #2569] Fix WindowGroupLimit fusion with multiple window expressions (#2570)\n\n# Which issue does this PR close?\n\nCloses #2569\n\n# Rationale for this change\n\nNative execution can fail when a window containing multiple expressions\nis fused with `WindowGroupLimit`. The fused operator produces multiple\nwindow columns, but group-limit filtering requires exactly one, causing\nan assertion failure.\n\n# What changes are included in this PR?\n\n- Allow fusion only when the upper window contains exactly one rank-like\nexpression; otherwise, execute the operators separately.\n- Add a regression test with a lower `RANK \u003c\u003d 2` limit and an upper\nwindow computing `RANK` and `ROW_NUMBER`, including tied ordering\nvalues.\n\n# Are there any user-facing changes?\n\nQueries with multiple ranking functions and a rank filter now execute\ncorrectly.\n\n# How was this patch tested?\n\n- Add a regression test verifying correct results for multiple ranking\nexpressions above WindowGroupLimit.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: OpenAI Codex (GPT-6)`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html"
    },
    {
      "commit": "213e3f406b36c682c73437511dc2f3f905463dd7",
      "tree": "5f8308b87883d676e8e39ecc4ccbf8bf89c38e41",
      "parents": [
        "a8ae4c37a24e894d672b3965f8b6ea86096fc8df"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Sat Oct 17 08:26:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 08:26:58 2026 +0800"
      },
      "message": "[AURON #2577] Prevent stale Celeborn PID files from blocking CI startup (#2578)\n\n# Which issue does this PR close?\n\nCloses #2577\n\n# Rationale for this change\n\nCeleborn CI can intermittently fail after restoring stale PID files from\nthe binary cache. If a cached PID matches an existing Java process,\nCeleborn incorrectly reports that its service is already running. This\nwas observed in the Celeborn CI check for PR #2575.\n\n# What changes are included in this PR?\n\nCreate a fresh directory under `RUNNER_TEMP` and export\n`CELEBORN_PID_DIR` before starting the master and worker. This bypasses\ncached PID files and keeps new PID files outside the cached\ninstallation.\n\n# Are there any user-facing changes?\n\nNo. This change only affects Celeborn startup in CI.\n\n# How was this patch tested?\n\nTo be verified by the Celeborn GitHub Actions checks.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: OpenAI Codex (gpt-6)`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html"
    },
    {
      "commit": "a8ae4c37a24e894d672b3965f8b6ea86096fc8df",
      "tree": "48737860955707a2f19539fb13580a9f36f26b8a",
      "parents": [
        "6f1428362f7beacd3f48a548ae67e5cdf44368b4"
      ],
      "author": {
        "name": "Yizhong Zhang",
        "email": "zyzzxycj@gmail.com",
        "time": "Tue Oct 13 09:17:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 09:17:25 2026 +0800"
      },
      "message": "[AURON #2564] Fix union input partition mapping during plan rewrites (#2565)\n\n# Which issue does this PR close?\n\nCloses #2564 \n\n# Rationale for this change\nPlan rewrites must preserve the partition mapping of `UnionExec`.\nPreviously, `with_new_children` assigned partition `0` to every\nreplacement input, causing unions that reference nonzero input\npartitions to read incorrect data after a rewrite.\n\n# What changes are included in this PR?\n- Preserve each input’s partition index when replacing its child plan.\n- Reject replacement children whose count differs from the original\ninput count.\n- Add regression tests verifying that child replacement reads the\nintended input partitions, preserves the output partition count and\ncurrent-partition behavior, and rejects both missing and extra children.\n\n# Are there any user-facing changes?\nNo.\n\n# How was this patch tested?\nUTs.\n\nCo-authored-by: zhangyizhong \u003czhangyizhong03@kuaishou.com\u003e"
    },
    {
      "commit": "6f1428362f7beacd3f48a548ae67e5cdf44368b4",
      "tree": "374651b14346ac8dcfe0b564913408063da4c596",
      "parents": [
        "65b67d95db51e42257d94043657f10e9bb8aad7c"
      ],
      "author": {
        "name": "XorSum",
        "email": "xorsum@outlook.com",
        "time": "Sat Oct 10 16:08:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 16:08:07 2026 +0800"
      },
      "message": "[AURON #2118] make native environment initialization retriable after failure (#2151)\n\n# Which issue does this PR close?\n\nCloses #2118\n\n# Rationale for this change\n\navoid initialize in static block, make native environment initialization\nretriable after failure\n\n# What changes are included in this PR?\n\n# Are there any user-facing changes?\n\n# How was this patch tested?"
    },
    {
      "commit": "65b67d95db51e42257d94043657f10e9bb8aad7c",
      "tree": "9204637dc4d0293fd5864765ca1238bf0c124186",
      "parents": [
        "06399a7384182fb088bac9ccc8ebfd8c83182944"
      ],
      "author": {
        "name": "Rob Reeves",
        "email": "robertpreeves@gmail.com",
        "time": "Sat Oct 10 00:07:28 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 00:07:28 2026 -0700"
      },
      "message": "[AURON #2567] Honor Spark memory overhead factors when calculating the native budget (#2568)"
    },
    {
      "commit": "06399a7384182fb088bac9ccc8ebfd8c83182944",
      "tree": "16734dfe3d6499152853d4af16d05cabd4a83bce",
      "parents": [
        "73300dc4a75386692a01d74064aff44c584612ed"
      ],
      "author": {
        "name": "slfan1989",
        "email": "55643692+slfan1989@users.noreply.github.com",
        "time": "Sat Oct 10 09:21:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 09:21:19 2026 +0800"
      },
      "message": "[AURON #2562] Document native conversion diagnostics in the Spark UI. (#2563)\n\n### Which issue does this PR close?\n\nCloses #2562\n\n### Rationale for this change\n\nThe native conversion diagnostics introduced in #2560 are not yet\ndocumented in the `README`. Users need guidance on accessing the Auron\ntab and interpreting conversion results, snapshots, and execution\nmetrics.\n\nManually verified the documented behavior using a local `Spark 3.5.8`\napplication with Auron enabled.\n\n#### 1. SQL execution overview\n\nThe execution list shows conversion counts from the latest snapshot. In\nthis example, the AQE-enabled query retains three snapshots, while the\nquery with AQE disabled retains one. When Auron is disabled, conversion\ndiagnostics display \"Not available\".\n\n\u003cimg width\u003d\"3020\" height\u003d\"1266\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/552a22a5-f522-4046-b5f7-1214952fa92a\"\n/\u003e\n\n#### 2. Investigating fallback reasons\n\nEach snapshot provides per-operator conversion statuses, recorded\nfallback reasons, and the physical plan. This example shows a Project\noperator falling back because its Scala UDF expression is unsupported.\n\n\u003cimg width\u003d\"3838\" height\u003d\"1926\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/13729cca-2eea-4f3d-aca2-90b32db0d8a2\"\n/\u003e\n\n#### 3. AQE snapshots and execution metrics\n\nA single SQL execution can produce multiple conversion snapshots under\nAQE. Counts should not be summed across snapshots. Execution metrics are\nretrieved separately from Spark SQL and are not metric values captured\nat the time of each snapshot.\n\n\u003cimg width\u003d\"3836\" height\u003d\"1890\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/202c5f6e-77b7-44c2-87d3-b96da85ecde4\"\n/\u003e\n\n### What changes are included in this PR?\n\n- Document how to enable and access the Auron tab in the Spark UI.\n- Define SQL executions, physical plans, operators, native conversion,\nfallback, conversion snapshots, and AQE.\n- Explain conversion statuses, snapshot counts, and execution lifecycle.\n- Clarify how Spark SQL metrics relate to conversion snapshots.\n- Describe retention, stored text limits, redaction behavior, and\nprerequisites for viewing diagnostics in the Spark History Server.\n\n### Are there any user-facing changes?\n\nYes. The README now provides usage instructions and explanations for\nnative conversion diagnostics. There are no runtime behavior changes.\n\n### How was this patch tested?\n\nCI\n\n### Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-6)\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html"
    },
    {
      "commit": "73300dc4a75386692a01d74064aff44c584612ed",
      "tree": "fed1e0903ddc54ef50fd3f4e0c6c6e4a5ad7fb16",
      "parents": [
        "e274610a4c5ea4acbf9ecc8ecaba7ba8ea17a598"
      ],
      "author": {
        "name": "slfan1989",
        "email": "55643692+slfan1989@users.noreply.github.com",
        "time": "Fri Oct 09 17:06:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 17:06:18 2026 +0800"
      },
      "message": "[AURON #2559] Add native conversion diagnostics to Auron SQL UI. (#2560)\n\n### Which issue does this PR close?\n\nCloses #2559\n\n### Rationale for this change\n\nThe Auron tab currently displays build information but does not explain\nwhich operators were converted to native execution or why others\nremained in Spark.\n\nThis change makes conversion diagnostics available in the Spark UI,\nincluding separate snapshots for AQE planning stages, so users can\ninvestigate fallback behavior alongside relevant configuration and\nmetrics.\n\n### What changes are included in this PR?\n\n- Add a paginated SQL execution list with lifecycle information and\nconversion counts from the latest snapshot.\n- Capture per-operator conversion status, fallback reasons, physical\nplans, and selected effective configuration values.\n- Retain up to 20 recent snapshots per execution, collapsing consecutive\nidentical snapshots.\n- Distinguish native operators, recorded fallbacks, other Spark\noperators, and wrappers. Exclude wrappers from conversion counts.\n- Display available Spark SQL operator metrics and links to SQL\nexecution details.\n\n### Are there any user-facing changes?\n\nYes. \n\nThe Auron tab now provides SQL execution summaries and detailed\nconversion diagnostics when `spark.auron.ui.enabled\u003dtrue`.\n\n#### SQL execution overview\n\nThe Auron tab summarizes native operators, recorded fallbacks, other\nSpark operators, and snapshot counts for each SQL execution. Executions\nwithout conversion snapshots explicitly show \"Not available\".\n\n\u003cimg width\u003d\"1280\" height\u003d\"720\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/4f4b9a2e-300d-4727-aeeb-1c355152ef51\"\n/\u003e\n\n#### Actionable fallback reasons\n\nPer-operator diagnostics distinguish configuration-disabled conversion\nfrom unsupported operators. In this example, native data writing is\ndisabled, while WriteFiles and Range remain in Spark.\n\n\u003cimg width\u003d\"1280\" height\u003d\"660\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/6ffb71b2-70dd-4e9e-8219-8f6a9ddf26fc\"\n/\u003e\n\n#### Configuration captured at conversion time\n\nSelected effective configuration values are recorded with each snapshot,\nincluding the overall native writing switch and the Parquet/ORC-specific\nswitches.\n\n\u003cimg width\u003d\"1280\" height\u003d\"720\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/f7ce9298-b4d1-4bdd-a2fa-85dc2e62ffd8\"\n/\u003e\n\n#### AQE snapshots and execution metrics\nSeparate snapshots capture different AQE conversion stages. Counts apply\nto each snapshot, and wrappers are tracked separately. Available Spark\nSQL metrics are shown with their original units and aggregation\nsemantics.\n\n\u003cimg width\u003d\"1280\" height\u003d\"700\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/34e708ad-69a4-462a-ac11-e0f9a22863c2\"\n/\u003e\n\n### How was this patch tested?\n\n- Passed `./dev/reformat --check`, including Spark 3.0–4.1 compilation\nchecks.\n- Passed all 9 tests in `AuronDiagnosticsSuite` and\n`BuildInfoInSparkUISuite`, covering event serialization, lifecycle\nhandling, retention, pagination, shared plan traversal, HTML escaping,\nwrapper classification, native execution, UDF fallback, and disabled\nAuron.\n\n### Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\n`Generated-by: OpenAI Codex (GPT-6)`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html"
    },
    {
      "commit": "e274610a4c5ea4acbf9ecc8ecaba7ba8ea17a598",
      "tree": "ca367a65a5438a0cc4549f6c524d0ffe0bf397ce",
      "parents": [
        "b2970ab0f9ce724eeebbb5ade34e74f0563dde3f"
      ],
      "author": {
        "name": "Yizhong Zhang",
        "email": "zyzzxycj@gmail.com",
        "time": "Thu Oct 08 10:43:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 10:43:49 2026 +0800"
      },
      "message": "[AURON #2555] Support coordinated spilling for native host memory (#2557)\n\n# Which issue does this PR close?\n\nCloses #2555 \n\n# Rationale for this change\nThe native host memory manager makes spill decisions without a shared\nlimit on active spills. Coordinating these decisions allows it to select\nthe largest spillable consumer at moderate memory pressure and limit\nsimultaneous spills at high pressure.\n\nThis change integrates host memory with the shared memory manager and\nspill coordinator introduced by #2554.\n\n# What changes are included in this PR?\n\n- Integrate the host memory manager with the shared framework while\npreserving the existing operator API.\n- Evaluate memory pressure using native reservations, JVM direct memory,\nand process-memory measurements.\n- Add configurable low/high spill watermarks and a concurrency limit,\ndefaulting to 0.8, 0.9, and 2.\n- Check the first growing reservation, preserve accounting during forced\nspills, and use consistent lock ordering for pinning and memory\nreporting.\n- Add regression tests for host-memory accounting, spill reconciliation,\nconcurrent pinning, and configuration validation.\n\n\n# Are there any user-facing changes?\nNo.\n\n# How was this patch tested?\nUTs.\n\nCo-authored-by: zhangyizhong \u003czhangyizhong03@kuaishou.com\u003e"
    },
    {
      "commit": "b2970ab0f9ce724eeebbb5ade34e74f0563dde3f",
      "tree": "11f214bdfe914eb2bd7dacec3f0a82f891e8c450",
      "parents": [
        "096e7fddf6de461482185ef75cea6f7b6f2cd78a"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Tue Oct 06 18:06:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 18:06:57 2026 +0800"
      },
      "message": "[AURON #2510] Add non-UTC timestamp coverage for native datediff (#2520)\n\n# Which issue does this PR close?\n\nCloses #2510\n\n# Rationale for this change\n\nThe datediff coverage added in #2502 only uses DATE inputs. TIMESTAMP\ninputs also need coverage for conversion to dates in the session time\nzone.\n\n# What changes are included in this PR?\n\nAdd a regression test using TIMESTAMP columns in America/Los_Angeles. It\ncovers local and UTC date boundaries, positive and negative differences,\nand null inputs.\n\nThe test checks explicit expected results, compares with Spark, and\nverifies native operators.\n\n# Are there any user-facing changes?\n\nNo. This change only adds regression coverage.\n\n# How was this patch tested?\n\nOn Spark 3.5.8 with Scala 2.12 and JDK 8:\n\n```bash\n./build/mvn -B -ntp -Ppre -Pspark-3.5 -Pscala-2.12 -pl spark-extension-shims-spark -DskipBuildNative -DskipTests\u003dfalse \u0027-Dsuites\u003dorg.apache.auron.AuronFunctionSuite datediff\u0027 test\n./build/mvn -B -ntp -Ppre -Pspark-3.5 -Pscala-2.12 -pl spark-extension-shims-spark -DskipBuildNative -DskipTests\u003dfalse -Dsuites\u003dorg.apache.auron.AuronFunctionSuite test\n./dev/reformat --check\n```\n\n# Was this patch authored or co-authored using generative AI tooling?\n\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-6)\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "096e7fddf6de461482185ef75cea6f7b6f2cd78a",
      "tree": "12a7ff841d43faa10cbf86bc2f6412d808a2e9f4",
      "parents": [
        "e60cb7e57f2aa140bdc9b35370d5d4e5680fa910"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Mon Oct 05 09:12:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 05 09:12:53 2026 +0800"
      },
      "message": "[AURON #2544] Support next_day function natively (#2546)\n\n# Which issue does this PR close?\n\nCloses #2544\n\n# Rationale for this change\n\n`next_day` currently falls back to Spark evaluation. This adds native\nexecution while preserving Spark\u0027s weekday, null, and ANSI behavior.\n\n# What changes are included in this PR?\n\n- Convert `NextDay` through the existing extension-function path.\n- Add the native `Spark_NextDay` implementation and Spark-version\nhandling for invalid weekdays.\n- Add Rust and Spark coverage for weekday names, date boundaries, nulls,\nand invalid inputs.\n\n# Are there any user-facing changes?\n\nQueries using `next_day` can execute natively. SQL results remain\nSpark-compatible.\n\n# How was this patch tested?\n\n- `./dev/reformat --check`\n- `cargo test -p datafusion-ext-functions --lib`\n- `./build/mvn -pl spark-extension-shims-spark -am install -DskipTests\n-DskipBuildNative -Ppre -Pscala-2.12 -Pspark-3.5`\n- `./build/mvn -pl spark-extension-shims-spark test -Ppre -Pscala-2.12\n-Pspark-3.5 -DskipBuildNative\n-Dsuites\u003dorg.apache.auron.AuronFunctionSuite`\n\n# Was this patch authored or co-authored using generative AI tooling?\n\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-6)\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "e60cb7e57f2aa140bdc9b35370d5d4e5680fa910",
      "tree": "acfec9155e535f08cf65a00a7136c27e147cc59b",
      "parents": [
        "aa76510c4b2af67397e5cd5d4f449010d996c839"
      ],
      "author": {
        "name": "Yizhong Zhang",
        "email": "zyzzxycj@gmail.com",
        "time": "Sat Oct 03 11:00:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 03 11:00:58 2026 +0800"
      },
      "message": "[AURON #2554] Support shared native memory manager and spill coordinator (#2556)\n\n# Which issue does this PR close?\n\nCloses #2554 \n\n# Rationale for this change\nNative memory accounting and spill scheduling are coupled to the host\nmemory manager. A shared framework allows memory domains to provide\ntheir own pressure measurements and spill preparation while reusing\nconsumer accounting and concurrency control.\n\n# What changes are included in this PR?\n- Introduce a memory-domain interface, a generic memory manager, and a\nspill coordinator.\n- Add watermark-based spill selection and bounded spill concurrency.\n- Handle spill completion, failure, and cancellation safely, prevent\nrecursive spills, and wake waiting consumers when memory is released.\n- Add regression tests for accounting, spill scheduling, and lifecycle\nhandling.\n\n\n# Are there any user-facing changes?\nNo.\n\n# How was this patch tested?\nUTs.\n\nCo-authored-by: zhangyizhong \u003czhangyizhong03@kuaishou.com\u003e"
    },
    {
      "commit": "aa76510c4b2af67397e5cd5d4f449010d996c839",
      "tree": "015e1a79772e6961743955f59ce2a937cc5df90a",
      "parents": [
        "96595f902888e0e39898f5f51db7cd5203a986cc"
      ],
      "author": {
        "name": "Yizhong Zhang",
        "email": "zyzzxycj@gmail.com",
        "time": "Thu Oct 01 00:13:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 00:13:21 2026 +0800"
      },
      "message": "[AURON #2541] Support residual conditions in native broadcast nested loop joins (#2553)\n\n# Which issue does this PR close?\n\nCloses #2541 \n\n# Rationale for this change\nNative broadcast nested loop joins currently reject join conditions.\nQueries without equality keys, such as `l.value \u003c r.value`, therefore\nfall back to Spark.\n\nThis PR extends native BNLJ to evaluate these conditions during\nmatching, enabling native execution for supported join types and build\norientations.\n\n# What changes are included in this PR?\n- Pass BNLJ conditions through Spark conversion to the native broadcast\njoin engine.\n- Enable native BNLJ by default.\n- Make native sort-merge fallback handle joins without equality keys\nwhile preserving residual conditions and output projections.\n- Correct ordering metadata for keyless joins and broadcast hash joins\nwith SMJ fallback enabled.\n- Add Rust and Spark regression tests covering multiple probe\npartitions, build orientations, nulls, count-only projections, forced\nfallback, ordering, and configuration switches.\n\n# Are there any user-facing changes?\nNo.\n\n# How was this patch tested?\nUTs.\n\nCo-authored-by: zhangyizhong \u003czhangyizhong03@kuaishou.com\u003e"
    },
    {
      "commit": "96595f902888e0e39898f5f51db7cd5203a986cc",
      "tree": "bca4209bee88068ecf0e58e5925ef4be1eba9131",
      "parents": [
        "d1878426a5b239d8e1e7e7a11c9227b9a4e01a95"
      ],
      "author": {
        "name": "Yizhong Zhang",
        "email": "zyzzxycj@gmail.com",
        "time": "Thu Oct 01 00:13:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 00:13:14 2026 +0800"
      },
      "message": "[AURON #2540] Support residual conditions in native shuffled hash joins (#2552)\n\n# Which issue does this PR close?\n\nCloses #2540 \n\n# Rationale for this change\nNative shuffled hash joins currently support residual conditions only\nfor inner joins. Outer, semi, anti, and existence joins with additional\nconditions therefore fall back to Spark.\n\nWith residual-condition evaluation now available in the native hash join\nengine, this PR extends SHJ conversion to use it, preserving the\nmatching and unmatched-row semantics required by each join type.\n\n# What changes are included in this PR?\n- Remove the inner-only restriction for residual conditions in native\nSHJ planning and conversion.\n- Support residual conditions for both explicit SHJ plans and forced\nSMJ-to-SHJ conversion.\n- Add regression tests covering join types, build sides, nulls,\nexistence joins, ordering, and the existing configuration switch.\n\n# Are there any user-facing changes?\nNo.\n\n# How was this patch tested?\nUTs.\n\nCo-authored-by: zhangyizhong \u003czhangyizhong03@kuaishou.com\u003e"
    },
    {
      "commit": "d1878426a5b239d8e1e7e7a11c9227b9a4e01a95",
      "tree": "87eb3e0b4ac132ec25393c59e5aacf428a08270c",
      "parents": [
        "4454d10b0ffe6eac9e0213380df4c99886a219da"
      ],
      "author": {
        "name": "Yizhong Zhang",
        "email": "zyzzxycj@gmail.com",
        "time": "Wed Sep 30 12:49:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 12:49:16 2026 +0800"
      },
      "message": "[AURON #2539] Support residual conditions in native broadcast hash joins (#2551)\n\n# Which issue does this PR close?\n\nCloses #2539 \n\n# Rationale for this change\nNative broadcast hash joins currently support residual conditions only\nfor inner joins. Other join types, such as outer, semi, anti, and\nexistence joins, fall back to Spark when the join includes an additional\ncondition such as `l.k \u003d r.k AND l.v \u003c r.v`.\nThese conditions must participate in determining whether rows match.\nApplying a filter after the join cannot preserve the required semantics\nfor these join types.\n\n# What changes are included in this PR?\n\n- Extend native broadcast hash joins to evaluate residual conditions for\nsupported outer, semi, anti, and existence joins using the shared\njoin-condition evaluator.\n- Update match tracking only for candidate pairs that satisfy the\ncondition, preserving unmatched rows and existence results.\n- Bound candidate batches when processing duplicate keys and gather only\nthe columns required by the condition.\n- Preserve output projections and row counts, including when execution\nfalls back to native sort-merge join.\n- Add Rust and Spark regression tests covering join types, build sides,\nnulls, projections, spill behavior, and the existing configuration\nswitch.\n\n# Are there any user-facing changes?\nNo.\n\n# How was this patch tested?\nUTs.\n\n---------\n\nCo-authored-by: zhangyizhong \u003czhangyizhong03@kuaishou.com\u003e"
    },
    {
      "commit": "4454d10b0ffe6eac9e0213380df4c99886a219da",
      "tree": "a49f5264c0f899e7919eb895512820e1db8e82a6",
      "parents": [
        "d58333fce7b94ff1f7b67324b2c7c318de2b7a21"
      ],
      "author": {
        "name": "Lei Wang",
        "email": "wanglei860213@gmail.com",
        "time": "Mon Sep 28 20:50:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 20:50:08 2026 +0800"
      },
      "message": "[AURON #2550] docs: remove Incubating references after graduation (#2550)\n\n# Which issue does this PR close?\n\nCloses #\u003cissue_number\u003e\n\n# Rationale for this change\n\n# What changes are included in this PR?\n\n# Are there any user-facing changes?\n\n# How was this patch tested?\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [ ] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: \u003ctool name and version\u003e`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\n---------\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Zhang Li \u003crichox@qq.com\u003e"
    },
    {
      "commit": "d58333fce7b94ff1f7b67324b2c7c318de2b7a21",
      "tree": "2acefb15149e477b6906fb3bd896618fe6568b6a",
      "parents": [
        "35e2ff2781a5b14793b2828603c6beb46c775ad1"
      ],
      "author": {
        "name": "Lei Wang",
        "email": "wanglei860213@gmail.com",
        "time": "Mon Sep 28 18:48:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 18:48:28 2026 +0800"
      },
      "message": "[AURON #2549] update GitHub repo and README (#2549)\n\n# Which issue does this PR close?\n\nCloses #\u003cissue_number\u003e\n\n# Rationale for this change\n\n# What changes are included in this PR?\n\n# Are there any user-facing changes?\n\n# How was this patch tested?\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [ ] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: \u003ctool name and version\u003e`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\n---------\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Zhang Li \u003crichox@qq.com\u003e"
    },
    {
      "commit": "35e2ff2781a5b14793b2828603c6beb46c775ad1",
      "tree": "dc8464fd76b3d010a2b3fd6bb25bd5798898c9e5",
      "parents": [
        "a1d46ccb8ce1e6b0be5893b0ebc4ddef76c9b843"
      ],
      "author": {
        "name": "Zhang Li",
        "email": "richox@qq.com",
        "time": "Mon Sep 28 17:32:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 17:32:26 2026 +0800"
      },
      "message": "[AURON #2547] Use TLP dist repositories in release script (#2548)\n\n# Which issue does this PR close?\n\nCloses #2547\n\n# Rationale for this change\n\n# What changes are included in this PR?\n\n# Are there any user-facing changes?\n\n# How was this patch tested?\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [ ] Yes\n- [x] No\n\nIf yes, include: `Generated-by: \u003ctool name and version\u003e`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: diliulou \u003cwanglei05@kuaishou.com\u003e"
    },
    {
      "commit": "a1d46ccb8ce1e6b0be5893b0ebc4ddef76c9b843",
      "tree": "2a3363a1d1d30f67506231d60fb75cbed327c59a",
      "parents": [
        "e49fc046f290b2bb0b4dc373a6c40c4e1d92143d"
      ],
      "author": {
        "name": "Yizhong Zhang",
        "email": "zyzzxycj@gmail.com",
        "time": "Thu Sep 24 19:28:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 19:28:45 2026 +0800"
      },
      "message": "[AURON #2538] Support and extend residual conditions in native sort-merge joins (#2543)\n\n# Which issue does this PR close?\n\nCloses #2538 \n\n# Rationale for this change\nNative sort-merge joins previously supported residual conditions only\nfor inner joins. Supporting outer, semi, anti, and existence joins\nrequires evaluating the condition before deciding whether a row is\nmatched or unmatched.\n\n\n# What changes are included in this PR?\n- Integrate the shared join-condition evaluator into native sort-merge\njoins.\n- Process equality groups across input batches and generate candidate\npairs lazily in bounded batches.\n- Preserve unmatched-row semantics, output ordering, and columns\nrequired only by the condition.\n- Fix composite null-key handling.\n- Enable the supported join types through the existing join-condition\nconfiguration.\n- Add native and Spark regression tests.\n\n# Are there any user-facing changes?\nNo.\n\n# How was this patch tested?\nUTs.\n\n---------\n\nCo-authored-by: zhangyizhong \u003czhangyizhong03@kuaishou.com\u003e"
    },
    {
      "commit": "e49fc046f290b2bb0b4dc373a6c40c4e1d92143d",
      "tree": "9f812d683cc4953ddd642fc233233cf9fc97c27c",
      "parents": [
        "f2b12b48b28366607baf07d743dc459957cc052f"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Wed Sep 23 20:57:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 23 20:57:21 2026 +0800"
      },
      "message": "[AURON #2521] Fix NULL predicate handling in aggregate filters (#2522)\n\n# Which issue does this PR close?\n\nCloses #2521\n\n# Rationale for this change\n\nAggregate FILTER may include NULL predicates when their underlying\nboolean value bits are true. For example, FILTER (WHERE NOT flag) can\nproduce incorrect SUM and COUNT results for nullable flag columns.\n\n# What changes are included in this PR?\n\n- Check predicate validity when selecting rows for aggregation.\n- Add Spark SQL regression coverage for global and grouped SUM/COUNT,\nincluding a group with only NULL predicates.\n\n# Are there any user-facing changes?\n\nAggregate filters exclude NULL predicates, matching Spark.\n\n# How was this patch tested?\n\nAdded end-to-end tests comparing native SUM/COUNT with Spark for\nnullable filters, with and without GROUP BY.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [X] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: Openai codex gpt-6-astra`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html"
    },
    {
      "commit": "f2b12b48b28366607baf07d743dc459957cc052f",
      "tree": "05fafb6e44da17a046f2260ec679efbf955196ab",
      "parents": [
        "5ea6e497c7f5b7c21362d3b715c632a0a3e2d8cc"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Wed Sep 23 20:12:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 23 20:12:29 2026 +0800"
      },
      "message": "[AURON #2524] Support unix_date and date_from_unix_date natively (#2526)\n\n# Which issue does this PR close?\n\nCloses #2524\n\n# Rationale for this change\n\nSpark\u0027s `unix_date` and `date_from_unix_date` expressions currently fall\nback to Spark evaluation.\n\n# What changes are included in this PR?\n\n- Convert both expressions to the existing native Date32/Int32 casts\nthrough Spark shims.\n- Keep Spark 3.0 builds compatible, since these functions were\nintroduced in Spark 3.1.\n- Add Spark regression tests for nulls, round trips and integer\nboundaries with ANSI mode enabled and disabled, and Rust tests for array\nand scalar casts.\n\n# Are there any user-facing changes?\n\nBoth functions can now execute natively. Their SQL syntax and results\nare unchanged.\n\n# How was this patch tested?\n\n- `cargo test -p datafusion-ext-exprs cast::test::test_epoch_date_cast\n-- --exact`.\n- `./build/mvn -Ppre -Pspark-3.5 -Pscala-2.12 -pl\nspark-extension-shims-spark test\n-Dsuites\u003dorg.apache.auron.AuronFunctionSuite -DskipTests\u003dfalse\n-DskipBuildNative`.\n- `./dev/reformat --check`.\n\nThe new Spark tests failed on the original code because the projection\nfell back to Spark, and passed after the change.\n\n# Was this patch authored or co-authored using generative AI tooling?\n\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-6)\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "5ea6e497c7f5b7c21362d3b715c632a0a3e2d8cc",
      "tree": "d32675e0f67494c0f7a760434f8ef1e8d8631248",
      "parents": [
        "1d25f7428b082ac709a1e3a4d2264611c94a1934"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Wed Sep 23 20:00:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 23 20:00:45 2026 +0800"
      },
      "message": "[AURON #2527] Populate identity partition values in native Iceberg scans (#2528)\n\n# Which issue does this PR close?\n\nCloses #2527\n\n# Rationale for this change\n\nImported partitioned files can omit identity partition columns. Native\nIceberg scans may return `NULL` for these columns instead of the values\navailable in Iceberg partition metadata.\n\n# What changes are included in this PR?\n\n- Populate identity partition columns from partition metadata by field\nID for regular and changelog scans.\n- Fall back to Iceberg when scan tasks require different sets of\nidentity partition columns.\n- Fix the test configuration so reference queries actually disable\nAuron, and verify the reference and native scan plans.\n\n# Are there any user-facing changes?\n\nNative Iceberg scans correctly return identity partition values when the\ncolumns are absent from the data files.\n\n# How was this patch tested?\n\nCompare Auron with Iceberg\u0027s reader using Parquet and ORC files that\nomit identity partition columns. Cover string, date, decimal and NULL\nvalues, projections, filters, metadata columns and changelog queries.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: OpenAI Codex (GPT-6)`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "1d25f7428b082ac709a1e3a4d2264611c94a1934",
      "tree": "e2ec36e1de84d043f5900a8b6cb2d09ae0b80acf",
      "parents": [
        "6a8524e8a9fc0c961b42bb7c403805bf33318d37"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Wed Sep 23 20:00:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 23 20:00:08 2026 +0800"
      },
      "message": "[AURON #2529] Support add_months function natively (#2533)\n\n# Which issue does this PR close?\n\nCloses #2529\n\n# Rationale for this change\n\nSpark `add_months` expressions fall back to Spark because `AddMonths`\nhas no native conversion.\n\n# What changes are included in this PR?\n\n- Convert `AddMonths` to the `Spark_AddMonths` extension function.\n- Reuse Chrono\u0027s month arithmetic, with Gregorian cycle reduction to\nsupport the full Date32 range.\n- Preserve null propagation, month-end adjustment, and version-specific\noverflow behavior: wrapping in Spark 3.0 and errors in Spark 3.1+.\n- Add Rust and Spark regression tests for month arithmetic, scalar and\ncolumn inputs, date boundaries, overflow, and timestamp-to-date\nconversion. Spark tests also check native execution.\n\n# Are there any user-facing changes?\n\n`add_months` can now run natively. SQL syntax and result semantics are\nunchanged.\n\n# How was this patch tested?\n\n- `cargo test -p datafusion-ext-functions\nspark_dates::tests::test_spark_add_months --locked`.\n- `./build/mvn -Ppre -Pspark-3.5 -Pscala-2.12 -pl\nspark-extension-shims-spark -am install -DskipTests`.\n- `./build/mvn -Ppre -Pspark-3.5 -Pscala-2.12 -pl\nspark-extension-shims-spark test -DskipBuildNative\n-Dsuites\u003dorg.apache.auron.AuronFunctionSuite`.\n- `./dev/reformat --check`.\n\n# Was this patch authored or co-authored using generative AI tooling?\n\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-6)\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "6a8524e8a9fc0c961b42bb7c403805bf33318d37",
      "tree": "33b89c9312906957c56b956ef0a6ed55fa4488dd",
      "parents": [
        "eef5c65764274d31b647e1e5e08e9913f52d7b38"
      ],
      "author": {
        "name": "Yizhong Zhang",
        "email": "zyzzxycj@gmail.com",
        "time": "Tue Sep 22 21:03:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 21:03:08 2026 +0800"
      },
      "message": "[AURON #2536] Add shared CPU join condition evaluation (#2537)\n\n# Which issue does this PR close?\n\nCloses #2536 \n\n# Rationale for this change\nExtending native join-condition support requires shared evaluation logic\nthat preserves null, lazy-expression, and volatile-expression semantics.\nMaterializing every candidate pair can also create large intermediate\nallocations when join keys contain many duplicates.\n\n# What changes are included in this PR?\n- Add a shared CPU evaluator for residual join conditions, supporting\nbounded candidate batches and avoiding unnecessary expansion of\none-sided expressions.\n- Add column remapping and projection support to retain condition-only\ncolumns without including them in the output.\n- Add utilities for lazily generating candidate blocks from equality\ngroups.\n- Add tests for expression semantics, null handling, column mapping,\nprojection, and batched evaluation.\nIntegration into individual join operators will follow in separate PRs.\n\n# Are there any user-facing changes?\nNo.\n\n# How was this patch tested?\nUTs.\n\n---------\n\nCo-authored-by: zhangyizhong \u003czhangyizhong03@kuaishou.com\u003e"
    },
    {
      "commit": "eef5c65764274d31b647e1e5e08e9913f52d7b38",
      "tree": "898074ed6fed582348652da4ec5ecdbb19bff45e",
      "parents": [
        "bf46040d2ea21ea6c0a869445062ba497494180b"
      ],
      "author": {
        "name": "Yizhong Zhang",
        "email": "zyzzxycj@gmail.com",
        "time": "Tue Sep 22 10:44:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 10:44:26 2026 +0800"
      },
      "message": "[AURON #2534] Fix native broadcast nested loop join diff (#2535)\n\n# Which issue does this PR close?\n\nCloses #2534 \n\n# Rationale for this change\nEach probe partition receives its own copy of the broadcast relation.\nIts match tracking is local to that partition. That is insufficient when\nthe join must preserve or return broadcast-side rows.\n\nFor example, consider a left outer join that broadcasts the left side. A\nleft row might match something in probe partition A but nothing in\npartition B. Partition B can incorrectly emit an additional\nnull-extended row because it cannot see A’s match. Semi, anti, and\nexistence joins have related duplicate or incorrect-match problems.\n\n\n# What changes are included in this PR?\nFallback unsupported cases.\n\n# Are there any user-facing changes?\nNo.\n\n# How was this patch tested?\nUTs.\n\nCo-authored-by: zhangyizhong \u003czhangyizhong03@kuaishou.com\u003e"
    },
    {
      "commit": "bf46040d2ea21ea6c0a869445062ba497494180b",
      "tree": "d471ab28cf543cfd780a53c01c195ede9bab7c10",
      "parents": [
        "3d37d54084e0d0b02b6b55923bc71b5342e656ec"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Sat Sep 19 10:01:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 19 10:01:46 2026 +0800"
      },
      "message": "[AURON #1743] Support ORC reader batch size (#2525)\n\n# Which issue does this PR close?\n\nCloses #1743\n\n# Rationale for this change\n\nNative ORC reads use the global batch size. Reducing it to handle large\nString/Binary values also affects other native operators.\n\n# What changes are included in this PR?\n\nAdd `spark.auron.orc.batchSize` and pass it to the ORC reader through\nthe existing JNI configuration path. The value must be positive and\ndefaults to `spark.auron.batchSize`.\n\nAdd regression coverage for configuration validation, ORC batch\nboundaries, and unchanged Parquet batching. Document the new setting.\n\n# Are there any user-facing changes?\n\nUsers can configure native ORC reader batches independently at\napplication startup. Existing defaults are preserved; downstream\noperators may still coalesce batches.\n\n# How was this patch tested?\n\n- `env RUSTFLAGS\u003d\u0027-C target-cpu\u003dnative\u0027 cargo test --profile pre\n--locked -p datafusion-ext-plans orc_exec::tests`.\n- `./build/mvn -Ppre -Pspark-3.5 -Pscala-2.12 -pl\nspark-extension-shims-spark -DskipBuildNative\n\u0027-Dsuites\u003dorg.apache.auron.AuronQuerySuite ORC reader batch size\u0027 test`.\n- `./build/mvn -Ppre -Pspark-4.0 -Pscala-2.13 -pl\nspark-extension-shims-spark -DskipBuildNative\n\u0027-Dsuites\u003dorg.apache.auron.AuronQuerySuite ORC reader batch size\u0027 test`.\n- `./dev/reformat --check`.\n\n# Was this patch authored or co-authored using generative AI tooling?\n\n- [x] Yes\n- [ ] No\n\nGenerated-by: Codex (GPT-6)\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "3d37d54084e0d0b02b6b55923bc71b5342e656ec",
      "tree": "3766b181291f7b5995bddb56a5e8fbce1a9f13c5",
      "parents": [
        "bcd086bf086c24048edd251f22fc6f7bfefed29e"
      ],
      "author": {
        "name": "Yizhong Zhang",
        "email": "zyzzxycj@gmail.com",
        "time": "Fri Sep 18 10:52:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 18 10:52:51 2026 +0800"
      },
      "message": "[AURON #2530] Fix incorrect results in partial merge aggregation with sliced batches (#2531)\n\n# Which issue does this PR close?\n\nCloses #2530 \n\n# Rationale for this change\nSorted aggregation\u0027s partial merge path produces silently wrong results\nwhen a batch is processed in multiple row-range slices. Two bugs\ncompound:\n1. AccPrimColumn and AccBytesColumn apply array offsets twice when\nunfreezing from sliced Arrow arrays\n2. The merging accumulator table is redundantly rebuilt per slice with\nincorrect (relative instead of absolute) index ranges.\n\n# What changes are included in this PR?\n- acc.rs: Remove double-offset in AccPrimColumn::unfreeze_from_arrays\nand use raw buffer access in AccBytesColumn::unfreeze_from_arrays\n- agg_ctx.rs: Extract create_merging_acc_table() that unfreezes acc\narrays once per batch; pass it through slices via \u0026mut Option\u003cAccTable\u003e;\nuse absolute\n  index ranges in partial_merge\n- agg_exec.rs: Thread merging_acc_table through both sorted-agg call\nsites\n  - 2 new unit tests verifying split-range and sliced-batch correctness\n  \n# Are there any user-facing changes?\nNo.\n\n# How was this patch tested?\nUTs.\n\nCo-authored-by: zhangyizhong \u003czhangyizhong03@kuaishou.com\u003e"
    },
    {
      "commit": "bcd086bf086c24048edd251f22fc6f7bfefed29e",
      "tree": "7108bfb4e7bfc7c7c0195a70f9d84b16c7738b14",
      "parents": [
        "e3d7361879f7862a2747a901134d1a7d1eff0f11"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Tue Sep 15 09:51:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 09:51:14 2026 +0800"
      },
      "message": "[AURON #2511] Prune full-data-file Iceberg changelog delete tasks (#2523)\n\n# Which issue does this PR close?\n\nCloses #2511\n\n# Rationale for this change\n\nNative Iceberg changelog scans retain full-data-file DELETE tasks even\nwhen supported metadata predicates exclude them. Task pruning currently\nevaluates these predicates only for INSERT tasks.\n\n# What changes are included in this PR?\n\n- Apply the existing metadata predicate evaluator to all supported\nnative changelog data-file tasks, including DELETE tasks with no\nexisting delete files.\n- Add coverage for mixed INSERT/DELETE ranges, snapshot and ordinal\npredicates, and empty scans.\n- Verify explicit expected rows against Spark execution and assert\nretained scan task counts and file metrics.\n- Preserve task eligibility checks, post-scan filters, and operator\nboundaries. The existing changelog-view test continues to retain its\ntask because its filter cannot safely reach the scan.\n\n# Are there any user-facing changes?\n\nEligible native Iceberg changelog scans can read fewer DELETE tasks. No\npublic API or configuration changes.\n\n# How was this patch tested?\n\nPassed locally on Spark 3.5.8 / Iceberg 1.10.1 / JDK 17:\n\n- Module compilation and Spotless check.\n- Three focused tests covering full-data-file DELETE scans, metadata\npruning, and mixed INSERT/DELETE scans.\n- `./dev/reformat --check`.\n- Full `AuronIcebergIntegrationSuite` on Spark 3.4, 3.5, and 4.0.\n\n# Was this patch authored or co-authored using generative AI tooling?\n\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-6)\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "e3d7361879f7862a2747a901134d1a7d1eff0f11",
      "tree": "dd6675966156c9f16e5b1dcabb936c497ebbad76",
      "parents": [
        "a6ca6befa7c9043886c4c51c1fe48fa68e59c2d4"
      ],
      "author": {
        "name": "Yizhong Zhang",
        "email": "zyzzxycj@gmail.com",
        "time": "Sun Sep 13 13:32:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 13 13:32:15 2026 +0800"
      },
      "message": "[AURON #2307] Add @transient to large fields and use NativePartition to reduce serialization overhead (#2515)\n\n# Which issue does this PR close?\n\nCloses #2307\n\n# Rationale for this change\nReduce task serialization size and memory usage by avoiding\nserialization of the full rddPartitions array per task.\n\nPreviously, each task closure captured a reference to the upstream\nNativeRDD, causing the entire rddPartitions array to be serialized with\nevery task. This PR introduces a NativePartition[P] wrapper that embeds\nonly the relevant partition payload into each task\u0027s closure, and marks\nrddPartitions as `@transient` so the full array is excluded from\nserialization.\n\n# What changes are included in this PR?\n- Add `@transient` to rddPartitions in NativeRDD, with numRddPartitions\nstored for lightweight partition reconstruction after deserialization\n- Add NativePartition[P] case class to carry original partition payloads\nthrough NativeRDD without re-indexing into the partitions array\n- Add NativePartition.unwrap() helper for safe partition extraction\n(handles reuse-exchange scenarios where the partition may not be a\nNativePartition)\n- Wrap input partitions in NativePartition before NativeRDD creation\nacross all NativeExec operators\n- Store original NativePartition array in\nAuronShuffleDependency.rddPartitions for Spark 4.x ShuffleWriteProcessor\ncompatibility\n- Add `@transient` to inputFileScanRDD in NativeFileSourceScanBase\n(large driver-only field)\n- Add `@transient` to private constructor parameters in Exec classes\nwhere the field is only used on the driver\n(NativeBroadcastExchangeBase.mode,\nNativeParquetInsertIntoHiveTableBase.cmd,\nNativeHiveTableScanBase.basedHiveScan)\n\n# Are there any user-facing changes?\nNo.\n\n# How was this patch tested?\nUTs.\n\nCo-authored-by: zhangyizhong \u003czhangyizhong03@kuaishou.com\u003e"
    },
    {
      "commit": "a6ca6befa7c9043886c4c51c1fe48fa68e59c2d4",
      "tree": "6f87cf1fe9797d1f8ee01dd30d2039f05464ecf6",
      "parents": [
        "df60895d8d9486278ad05044ee1db77f0c37524f"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Sun Sep 13 12:35:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 13 12:35:13 2026 +0800"
      },
      "message": "[AURON #2509] Support date_add and date_sub functions natively (#2512)\n\n# Which issue does this PR close?\n\nCloses #2509\n\n# Rationale for this change\n\n`date_add` and `date_sub` currently fall back to Spark. This adds native\nsupport alongside the existing date functions.\n\n# What changes are included in this PR?\n\n- Convert Spark `DateAdd` and `DateSub` expressions to native extension\nfunctions.\n- Implement Date32 arithmetic with Spark-compatible null propagation and\ninteger wrapping.\n- Add Rust and Spark tests for calendar boundaries, negative offsets,\ninteger types, overflow, and input casts.\n\n# Are there any user-facing changes?\n\n`date_add` and `date_sub` can now run natively. No new configuration is\nrequired.\n\n# How was this patch tested?\n\n- `cargo test -p datafusion-ext-functions --lib --locked`.\n- `./build/mvn -pl spark-extension-shims-spark -am install -DskipTests\n-Ppre -Pspark-3.5 -Pscala-2.12`.\n- `./dev/reformat --check`.\n- `./build/mvn -pl spark-extension-shims-spark test -DskipBuildNative\n-Ppre -Pspark-3.5 -Pscala-2.12\n-Dsuites\u003dorg.apache.auron.AuronFunctionSuite`.\n\n# Was this patch authored or co-authored using generative AI tooling?\n\n- [ ] Yes\n- [x] No\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "df60895d8d9486278ad05044ee1db77f0c37524f",
      "tree": "c356bbfbbe2421516c6b18f58324825db90108ef",
      "parents": [
        "81b292296007461fa28259704f44d996f2294c2e"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Sun Sep 13 12:16:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 13 12:16:41 2026 +0800"
      },
      "message": "[AURON #2518] Cache maximum accumulator indices to avoid repeated scans (#2519)\n\n# Which issue does this PR close?\n\nCloses #2518\n\n# Rationale for this change\n\nAccumulator capacity checks repeatedly compute the maximum over the same\ngroup-index array. Caching this maximum allows the checks to reuse it\nacross aggregate expressions, reducing redundant scans while preserving\ncapacity guarantees.\n\n# What changes are included in this PR?\n\n- Add cached index selections for usize and u32 indices.\n- Use private fields to prevent inconsistent cached values.\n- Reuse the cached maximum across table-level and individual accumulator\ncapacity checks.\n- Cache shared indices at update and merge entry points, including\nper-aggregate FILTER selections.\n- Add regression tests for capacity growth, index iteration, NULL\nvalues, FILTER, and multi-batch aggregation.\n- Add operator-level benchmarks with different numbers of SUM\nexpressions.\n\n# Are there any user-facing changes?\n\nNo. This is an internal performance optimization.\n\n# How was this patch tested?\n\nUTs passed.\n\n# Benchmarks\n\nNative Partial → Final HashAgg with 32 batches × 8,192 rows and Int64\nSUM expressions.\n\n| Benchmark | Before | After | Time reduction |\n| --- | ---: | ---: | ---: |\n| hash_agg_1_sum_1024_groups | 6.171 ms | 5.321 ms | 13.8% |\n| hash_agg_4_sums_1024_groups | 12.140 ms | 8.221 ms | 32.3% |\n| hash_agg_8_sums_1024_groups | 20.022 ms | 12.374 ms | 38.2% |\n| hash_agg_1_sum_8192_groups | 5.541 ms | 5.108 ms | 7.8% |\n| hash_agg_4_sums_8192_groups | 11.001 ms | 8.280 ms | 24.7% |\n| hash_agg_8_sums_8192_groups | 18.004 ms | 12.889 ms | 28.4% | \n\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: openai codex gpt-6-astra`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "81b292296007461fa28259704f44d996f2294c2e",
      "tree": "ddbb35a9bcc31e4cba613ad8b45150e15dc0da2e",
      "parents": [
        "9f90eacb04c51158ad369348190fca88d9c0babe"
      ],
      "author": {
        "name": "Yizhong Zhang",
        "email": "zyzzxycj@gmail.com",
        "time": "Fri Sep 11 11:20:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 11:20:52 2026 +0800"
      },
      "message": "[AURON #2513] Optimize spill error handling and add an IOExceptiion for spill file missing (#2514)\n\n# Which issue does this PR close?\n\nCloses #2513\n\n# Rationale for this change\nMemory accounting leaks and misleading exception\n\n# What changes are included in this PR?\nAdd an IOException and count memory correctly when spilling\n\n# Are there any user-facing changes?\nNo.\n\n# How was this patch tested?\nUTs.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [ ] Yes\n- [x] No\n\nCo-authored-by: zhangyizhong \u003czhangyizhong03@kuaishou.com\u003e"
    },
    {
      "commit": "9f90eacb04c51158ad369348190fca88d9c0babe",
      "tree": "316d9f28cfbd8a32317d467b7479707c8bbc9aff",
      "parents": [
        "04eeb90d2911465eb350253eacc281a16bb5f37f"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Tue Sep 08 19:41:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 19:41:19 2026 +0800"
      },
      "message": "[AURON #2351] Reduce native broadcast task serialization size (#2506) \n\n# Which issue does this PR close?\n\nCloses #2351\n\n# Rationale for this change\n\n`NativeBroadcastExchangeBase.doExecuteBroadcast` returned an anonymous\n`Broadcast`\nthat captured the transformed relation. Spark serialized that wrapper\nwith tasks,\ncausing the task binary size to grow with the build-side data.\n\n# What changes are included in this PR?\n\n- Return a real Spark broadcast for the transformed relation instead of\na value-capturing wrapper.\n- Keep the existing native IPC broadcast path unchanged.\n- Add regression coverage for mixed native/Spark execution and\nserialized broadcast size.\n\n# Are there any user-facing changes?\n\nNo. This only changes the internal broadcast handling.\n\n# How was this patch tested?\n\n```bash\n./build/mvn -Pspark-3.5 -Pscala-2.12 -pl spark-extension-shims-spark test -Dsuites\u003dorg.apache.auron.AuronCheckConvertBroadcastExchangeSuite -Dsuffixes\u003dNoDiscoveredSuites\n\n./build/mvn -Pspark-3.5 -Pscala-2.12 -pl spark-extension-shims-spark -am install -DskipTests -DskipBuildNative\n\n./dev/reformat --check\n```\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-5)\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "04eeb90d2911465eb350253eacc281a16bb5f37f",
      "tree": "c38591b5ffc2c629949d9f489724b85804c2cbd7",
      "parents": [
        "f9ed3f2a10e3b48b69989b4ac899167eddc8f72d"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Sat Sep 05 15:48:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 05 15:48:29 2026 +0800"
      },
      "message": "[AURON #2497] Fix SortExec projected schema and sort key mapping (#2498)\n\n# Which issue does this PR close?\n\nCloses #2497\n\n# Rationale for this change\n\n`SortExec` used the full input schema during projected execution and\nconsumed original sort-key indices against the projected schema. Subset\nor reordered projections could therefore produce an incorrect schema or\nincorrectly mapped columns.\n\n# What changes are included in this PR?\n\n- Use the projected output schema in both projected execution paths.\n- Remap sort-key indices against every matching position in the\nprojection.\n- Add regression tests for reordered SortMergeJoin projections and\nstrict single-column SortExec projections.\n\n# Are there any user-facing changes?\n\nNo API changes. Affected projected sort and sort-merge join plans now\nreturn columns with the correct schema\n\n# How was this patch tested?\n\nPassed unit tests\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: gpt5`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "f9ed3f2a10e3b48b69989b4ac899167eddc8f72d",
      "tree": "20c4aac62c087220eff52eb95ecd6fa6f50321a1",
      "parents": [
        "088c0f5b818b71cdc5788ea9f3450f2b95b8a9e7"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Sat Sep 05 15:47:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 05 15:47:26 2026 +0800"
      },
      "message": "[AURON #2499] perf: avoid identity take in GenerateExec (#2500)\n\n# Which issue does this PR close?\n\nCloses #2499\n\n# Rationale for this change\n\nAvoid redundant generated-array copies during non-outer `GenerateExec`.\n\n# What changes are included in this PR?\n\n- Reuse generated output arrays directly when `outer` is false.\n- Keep the existing `take` path for outer generation.\n- Preserve the child-column `take` required to duplicate parent rows.\n\n# Are there any user-facing changes?\n\nNo. This is an internal performance improvement.\n\n# How was this patch tested?\n\nExisted unit tests passed.\n\n# Benchmarks\n\nThe benchmark uses 10,000 input rows with 8 values per row. The reported\nvalues are averages of two runs.\n\n| Benchmark | Before | After | Improvement |\n| --- | ---: | ---: | ---: |\n| `explode_array_i32` | 0.625 ms | 0.567 ms | 9.3% |\n| `posexplode_array_i32` | 0.728 ms | 0.617 ms | 15.3% |\n| `explode_map_utf8_i32` | 1.156 ms | 0.544 ms | 53.0% |\n| `explode_array_i32_parent_null_gaps` | 0.551 ms | 0.526 ms | 4.5% |\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: gpt-5.6`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\nCo-authored-by: \nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "088c0f5b818b71cdc5788ea9f3450f2b95b8a9e7",
      "tree": "79859c912b1a72dbf7b5a9e022a79f6e4c9a1536",
      "parents": [
        "f1c769be1545ab3b4a553cbf99b9856545a6fb85"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Fri Sep 04 15:01:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 15:01:04 2026 +0800"
      },
      "message": "[AURON #2501] Support datediff function natively (#2502)\n\n# Which issue does this PR close?\n\nCloses #2501\n\n# Rationale for this change\n\nSpark `DateDiff` expressions are not currently converted to native\nexpressions, so queries using `datediff` remain on the fallback path.\n\nThis change adds native execution while preserving Spark\u0027s argument\norder, signed day difference, and null behavior.\n\n# What changes are included in this PR?\n\n- convert Spark `DateDiff` expressions in `NativeConverters`\n- register the `Spark_DateDiff` extension function\n- implement the signed Date32 day difference with null propagation\n- add Rust unit tests for positive, negative, zero, leap-year,\nyear-boundary, and null cases\n- add regression coverage in `AuronFunctionSuite`\n\n# Are there any user-facing changes?\n\nNo. The SQL syntax and result semantics remain unchanged. Eligible\n`datediff` expressions can now execute natively.\n\n# How was this patch tested?\n\n```bash\ncargo test -p datafusion-ext-functions spark_dates::tests::test_spark_datediff -- --exact\n\ncargo test -p datafusion-ext-functions\n\n./dev/reformat --check\n\n./auron-build.sh --pre --clean true --sparkver 3.5 --scalaver 2.12 --skiptests false -DwildcardSuites\u003dorg.apache.auron.AuronFunctionSuite\n```\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-5)\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "f1c769be1545ab3b4a553cbf99b9856545a6fb85",
      "tree": "c9bd5eac5996ec8eafddd5f07eafcc9b20ef57e3",
      "parents": [
        "f098575709f7c3098a554373180e2fb2ca8839bf"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Fri Sep 04 14:41:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 14:41:30 2026 +0800"
      },
      "message": "[AURON #2475] Fix float-to-decimal precision loss (#2496)\n\n# Which issue does this PR close?\n\nCloses #2475\n\n# Rationale for this change\n\nAuron currently delegates `Float32/Float64 -\u003e Decimal128` casts to\nArrow\u0027s native cast kernel. That kernel scales the input by `10^scale`\nusing floating-point arithmetic, which introduces incorrect digits at\nhigh decimal scales.\n\nSpark instead converts the floating-point value to its shortest\nround-trip decimal representation before rescaling it exactly.\n\n# What changes are included in this PR?\n\n- Add a Spark-compatible `Float32/Float64 -\u003e Decimal128` path in\n`cast_impl`.\n- Widen `Float32` values to `Float64` before formatting, matching Spark\nbehavior.\n- Reuse the existing string-to-decimal path for rounding and\nprecision-overflow handling.\n- Return NULL for NULL, NaN, infinity, and precision-overflow inputs.\n- Add Rust regression coverage for high-scale casts and edge cases.\n- Re-enable the `SPARK-22271` regression test for Spark 3.1 through 3.5.\n\n# Are there any user-facing changes?\n\nBug fix only. Casting float or double values to decimal now matches\nSpark at high decimal scales. There are no public API or configuration\nchanges.\n\n# How was this patch tested?\n\n- `cargo test -p datafusion-ext-commons test_float_to_decimal --\n--nocapture`\n- `cargo test -p datafusion-ext-commons`\n- `./dev/reformat --check`\n- `./auron-build.sh --pre --sparkver 3.5 --scalaver 2.12 --skiptests\ntrue`\n\n\n# Was this patch authored or co-authored using generative AI tooling?\n\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-5)\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\n---------\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nReviewed-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "f098575709f7c3098a554373180e2fb2ca8839bf",
      "tree": "13e4fc47077dacaa55ab776085e9a6d7f94e871c",
      "parents": [
        "ffc6a27c65190a5eebb9b51ebde3fab54d0d424e"
      ],
      "author": {
        "name": "Yizhong Zhang",
        "email": "zyzzxycj@gmail.com",
        "time": "Thu Sep 03 15:55:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 15:55:32 2026 +0800"
      },
      "message": "[AURON #2503] Rename blaze to auron (#2504)\n\n# Which issue does this PR close?\n\nCloses #2503 \n\n# Rationale for this change\nWrong naming.\n\n# What changes are included in this PR?\nRename blaze to auron.\n\n# Are there any user-facing changes?\nNo.\n# How was this patch tested?\nUTs.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [ ] Yes\n- [x] No\n\nCo-authored-by: zhangyizhong03 \u003czhangyizhong03@kuaishou.com\u003e"
    },
    {
      "commit": "ffc6a27c65190a5eebb9b51ebde3fab54d0d424e",
      "tree": "c0f1274d35e0723cf91dd131879372f5d5838df1",
      "parents": [
        "3459454d37acc9a25bf859c60c7a734ca1638f96"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Tue Sep 01 04:29:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 04:29:55 2026 +0800"
      },
      "message": "[AURON #2488] Support dayofyear function natively (#2489)\n\n# Which issue does this PR close?\n\nCloses #2488\n\n# Rationale for this change\n\nSpark `DayOfYear` expressions cannot currently be converted to native\nexpressions, causing affected plans to fall back to Spark execution.\n\n# What changes are included in this PR?\n\n- Convert Spark `DayOfYear` expressions to the `Spark_DayOfYear`\nextension function.\n- Implement `Spark_DayOfYear` using the existing local Date32 conversion\nand Arrow `DatePart::DayOfYear`.\n- Add Rust unit tests and Spark regression coverage for date and\ntimestamp inputs, leap-year and year-boundary cases, null values, and\nnon-UTC session time zones.\n\n# Are there any user-facing changes?\n\nNo. The Spark SQL syntax and result semantics remain unchanged. Eligible\n`dayofyear` expressions can now run natively.\n\n# How was this patch tested?\n\n```bash\ncargo test -p datafusion-ext-functions spark_dates::tests::test_spark_dayofyear -- --exact\n\ncargo test -p datafusion-ext-functions --lib\n\n./dev/reformat --check\n\n./auron-build.sh --pre --clean true --sparkver 3.5 --scalaver 2.12 --skiptests false -DwildcardSuites\u003dorg.apache.auron.AuronFunctionSuite\n```\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-5)\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "3459454d37acc9a25bf859c60c7a734ca1638f96",
      "tree": "59306fb61c873ebbdc9dc49027f8a79c5ebb06ab",
      "parents": [
        "f0c0df4791f1aa0d817960cbd6b071b38f69f225"
      ],
      "author": {
        "name": "Lei Wang",
        "email": "wanglei860213@gmail.com",
        "time": "Mon Aug 31 20:09:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 20:09:19 2026 +0800"
      },
      "message": "[AURON #2495] Docs: update README description (#2495)\n\n## Summary\n\nRemoved the parenthetical engine listing `(e.g., Spark, Flink)` from\nREADME first sentence, aligning with updated messaging.\n\n## Changes\n\n**Before:**\n\u003e The Auron accelerator for big data engines (e.g., Spark, Flink)\nleverages native vectorized execution to accelerate query processing.\n\n**After:**\n\u003e Apache Auron(Incubating) is an accelerator for big data engines,\nleveraging native vectorized execution to accelerate query processing."
    },
    {
      "commit": "f0c0df4791f1aa0d817960cbd6b071b38f69f225",
      "tree": "501bcdb431e4fe1bc0028ca57891e6846b10bf1f",
      "parents": [
        "3d52de0a8b09281824493d784cd062f3d05b751a"
      ],
      "author": {
        "name": "Lei Wang",
        "email": "wanglei860213@gmail.com",
        "time": "Mon Aug 31 19:11:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 19:11:19 2026 +0800"
      },
      "message": "[AURON #2493] Docs: update GitHub repo About description (#2493)\n\n# Which issue does this PR close?\n\nCloses #\u003cissue_number\u003e\n\n# Rationale for this change\n\n# What changes are included in this PR?\n\n# Are there any user-facing changes?\n\n# How was this patch tested?\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [ ] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: \u003ctool name and version\u003e`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html"
    },
    {
      "commit": "3d52de0a8b09281824493d784cd062f3d05b751a",
      "tree": "167337e76a00f1ac8a6b4dc7174f1b7c8807c3e1",
      "parents": [
        "1e975746cc1f0f5c7ddffdc64f6146d114f1416b"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Sun Aug 30 14:53:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 30 14:53:10 2026 +0800"
      },
      "message": "[AURON #2485] Support last_day function natively (#2486)\n\n# Which issue does this PR close?\n\nCloses #2485\n\n# Rationale for this change\n\nSpark `last_day` expressions cannot currently be converted to native\nexpressions, causing affected plans to fall back to Spark execution.\n\n# What changes are included in this PR?\n\n- Convert Spark `LastDay` expressions to the `Spark_LastDay` extension\nfunction.\n- Implement `Spark_LastDay` using the existing Date32 conversion and\nmonth-length helpers.\n- Add Rust unit tests and Spark regression coverage for regular months,\nleap years, dates before the Unix epoch, and null values.\n\n# Are there any user-facing changes?\n\nNo. The Spark SQL syntax and result semantics remain unchanged. Eligible\n`last_day` expressions can now run natively.\n\n# How was this patch tested?\n\n```bash\n\ncargo test -p datafusion-ext-functions \\\n  spark_dates::tests::test_spark_last_day -- --exact\n\n./dev/reformat --check\n\n./auron-build.sh \\\n  --pre \\\n  --clean true \\\n  --sparkver 3.5 \\\n  --scalaver 2.12 \\\n  --skiptests false \\\n  -DwildcardSuites\u003dorg.apache.auron.AuronFunctionSuite\n```\n\n# Was this patch authored or co-authored using generative AI tooling?\n\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-5)\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "1e975746cc1f0f5c7ddffdc64f6146d114f1416b",
      "tree": "d401c580f2f64a4a30a11a5d0880dc5ab7ab909e",
      "parents": [
        "650b9ab44c622d0c8468e6265674793610088703"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Sun Aug 30 14:31:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 30 14:31:33 2026 +0800"
      },
      "message": "[AURON #2480] Optimize array and map explode using offset ranges (#2481)\n\n# Which issue does this PR close?\n\nCloses #2480\n\n# Rationale for this change\n\nAvoid redundant child-array copies during array and map explode.\n\n# What changes are included in this PR?\n\n- Collect child ranges directly from list and map parent offsets.\n- Merge adjacent ranges before creating slices.\n- Reuse child buffers when the selected values are contiguous.\n- Build position indices only for `posexplode`.\n- Add correctness tests and end-to-end benchmarks.\n\n# Are there any user-facing changes?\n\nNo. This is an internal performance improvement.\n\n# How was this patch tested?\n\nUnit tests passed.\n\n# Benchmarks\n\nThe benchmark uses 10,000 input rows with 8 values per row.\n\n| Benchmark | Before | After | Improvement |\n| --- | ---: | ---: | ---: |\n| `explode_array_i32` | 0.947 ms | 0.517 ms | 45.4% |\n| `posexplode_array_i32` | 1.002 ms | 0.596 ms | 40.5% |\n| `explode_map_utf8_i32` | 2.232 ms | 0.926 ms | 58.5% |\n| `explode_array_i32_parent_null_gaps` | 0.728 ms | 0.489 ms | 32.8% |\n\n# Was this patch authored or co-authored using generative AI tooling?\n\n- [ ] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: \u003ctool name and version\u003e`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "650b9ab44c622d0c8468e6265674793610088703",
      "tree": "5131a10547f9db6f906686be04caa02bee3b5b50",
      "parents": [
        "1d4d60dbf303d1114224cd7340a77ca52891767e"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Sat Aug 29 19:58:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 29 19:58:31 2026 +0800"
      },
      "message": "[AURON #2308] Fix native shuffle exchange NPE in shuffle write tasks (#2487)\n\n# Which issue does this PR close?\n\nCloses #2308\n\n# Rationale for this change\n\nThe shuffle-write `NativeRDD` closure accessed `nativeHashExprs` and\n`nativeSortExecNode` through the enclosing `NativeShuffleExchangeBase`.\n\nThis caused the task closure to retain the exchange plan. When Spark\ncleared the `SparkPlan` tree before task execution, RangePartitioning\nshuffle writes could dereference the cleared outer plan and throw a\n`NullPointerException`.\n\n# What changes are included in this PR?\n\n- Evaluate `nativeHashExprs` and `nativeSortExecNode` before\nconstructing the shuffle-write `NativeRDD`, so the task closure only\ncaptures the evaluated native plan values.\n- Extend the existing binary RangePartitioning test to verify that the\nnative plan closure no longer captures `NativeShuffleExchangeBase`.\n\n# Are there any user-facing changes?\n\nNo. This is an internal execution correctness fix.\n\n# How was this patch tested?\n\n```bash\n./dev/reformat --check\n\n./build/mvn -Pspark-3.5 -Pscala-2.12 -pl spark-extension -am install -DskipTests -DskipBuildNative\n\n./build/mvn -Pspark-3.5 -Pscala-2.12 -pl spark-extension-shims-spark test -Dsuites\u003dorg.apache.auron.AuronQuerySuite -Dsuffixes\u003dNoDiscoveredSuites\n```\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-5)\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "1d4d60dbf303d1114224cd7340a77ca52891767e",
      "tree": "ba881855a182740c54afe8748741161bc88c6a14",
      "parents": [
        "e906842b6d73e844228226871fa0469b6021c031"
      ],
      "author": {
        "name": "He Zhao",
        "email": "luoyedeyi@163.com",
        "time": "Fri Aug 28 18:00:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 28 18:00:39 2026 +0800"
      },
      "message": "[AURON #2444] Add build branch and build reversion info (#2445)\n\n# Which issue does this PR close?\n\nCloses #2444\n\n# Rationale for this change\nAuron build information currently includes component versions and build\ntimestamp, but it does not identify the Git branch or commit used to\nproduce the artifact. This makes it harder to trace a running\napplication or built package back to the exact source revision.\n\n# What changes are included in this PR?\n\nThis PR adds Git branch and revision information to the Auron build info\nfile.\n\n# Are there any user-facing changes?\nNo.\n# How was this patch tested?\nRebuild\n# Was this patch authored or co-authored using generative AI tooling?\n- [ ] Yes\n- [x] No\n\n---------\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "e906842b6d73e844228226871fa0469b6021c031",
      "tree": "4cd39a40ca3a41f9e53c3e22bb740641a306a8e1",
      "parents": [
        "2df3e9abe964f504efdcbd14df841f8da40ade99"
      ],
      "author": {
        "name": "Ma Zhengxuan",
        "email": "49856528+Sigma-Ma@users.noreply.github.com",
        "time": "Fri Aug 28 10:01:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 28 10:01:13 2026 +0800"
      },
      "message": "[AURON #2474] Fix make_date null and ANSI semantics (#2479)\n\n# Which issue does this PR close?\n\nCloses #2474\n\n# Rationale for this change\n\nAuron currently maps Spark\u0027s `MakeDate` expression directly to\nDataFusion\u0027s stock `make_date` implementation. That implementation does\nnot preserve Spark\u0027s typed or columnar NULL semantics and returns\nexecution errors for invalid inputs in non-ANSI mode.\n\nThe current mapping also drops `MakeDate.failOnError`, so the native\npath cannot distinguish ANSI from non-ANSI behavior.\n\n# What changes are included in this PR?\n\n- Route Spark `MakeDate` through a `Spark_MakeDate` extension function.\n- Pass `failOnError` through the existing extension-function arguments.\n- Propagate scalar and columnar NULLs for year, month, and day.\n- Return NULL for invalid dates in non-ANSI mode and raise an execution\nerror in ANSI mode.\n- Add Rust and Spark regression coverage for NULL and invalid inputs.\n\n# Are there any user-facing changes?\n\nBug fix only. `make_date` now follows Spark\u0027s NULL and invalid-date\nbehavior.\nThere are no public API or configuration changes.\n\n# How was this patch tested?\n\n- cargo test -p datafusion-ext-functions --lib.\n- Spark 3.5.8 / Scala 2.12 compile and test-compile passed.\n```bash\n./build/mvn \\\n  -pl spark-extension,spark-extension-shims-spark \\\n  -am compile test-compile \\\n  -DskipBuildNative \\\n  -Ppre -Pscala-2.12 -Pspark-3.5\n```\n- `AuronFunctionSuite` passed with the native engine.\n- ./dev/reformat --check.\n- cargo fmt --check\n- cargo test -p datafusion-ext-functions test_spark_make_date --lib\n- cargo test -p datafusion-ext-functions --lib\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-5)\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "2df3e9abe964f504efdcbd14df841f8da40ade99",
      "tree": "e790340e48fea3793c83a9f87af0b9e64d6ffb97",
      "parents": [
        "0ef91f7e791a07dce3e6968fbd23182368f7ca80"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Wed Aug 26 09:36:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 26 09:36:40 2026 +0800"
      },
      "message": "[AURON #2482] handle optional sort indices for zero-column batches (#2483)\n\n# Which issue does this PR close?\n\nCloses #2482\n\n# Rationale for this change\n\nThe primitive sort fast path changed `sorted_indices` from `Vec\u003cu32\u003e` to\n`Option\u003cVec\u003cu32\u003e\u003e`, but the zero-column batch path still calls `len()`\nas if it were a `Vec`.\n\nThis causes `datafusion-ext-plans` to fail compilation.\n\n# What changes are included in this PR?\n\nUse the sorted indices length when present, and fall back to the number\nof key rows for the primitive fast path.\n\n# Are there any user-facing changes?\n\nNo.\n\n# How was this patch tested?\n\nUTs passed.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: \u003ctool name and version\u003e`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "0ef91f7e791a07dce3e6968fbd23182368f7ca80",
      "tree": "8c910cfa5c48c2d52189dba142e3ddc5a38c894e",
      "parents": [
        "ec6eb497171c9cfdd4b8481333c486a0fdb50433"
      ],
      "author": {
        "name": "Flyangz",
        "email": "flyang116@126.com",
        "time": "Tue Aug 25 09:01:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 09:01:39 2026 +0800"
      },
      "message": "[AURON #2369] fix incorrect ORC predicate pushdown with OR (#2370)\n\n# Which issue does this PR close?\n\nCloses #2369\n\n# Rationale for this change\nFix some ORC predicate pushdown with OR losing data.\n\n# What changes are included in this PR?\n- Made OR pushdown all-or-nothing: collect_or_predicates now returns\nbool, and if any disjunct fails to convert, the whole OR is not pushed\ndown (convert_expr_to_orc returns None). Convertible AND conjuncts\n  around the OR still push down safely.\n- Added unit tests covering: OR with an unconvertible disjunct, OR whose\ndisjunct is a fully-unconvertible AND, and an unconvertible OR nested in\nan AND where the sibling conjunct still pushes down.\n\n# Are there any user-facing changes?\nno\n\n# How was this patch tested?\nunit tests\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "ec6eb497171c9cfdd4b8481333c486a0fdb50433",
      "tree": "15b980281082d95d9a0b0b655bcea64efc99bd05",
      "parents": [
        "4350a7d12b88c0439f9801101c7bc2467ba1a138"
      ],
      "author": {
        "name": "yew1eb",
        "email": "yew1eb@gmail.com",
        "time": "Tue Aug 25 08:55:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 08:55:46 2026 +0800"
      },
      "message": "[AURON #2405] Add primitive fast path for single-column integer sort (#2406)\n\n# Which issue does this PR close?\n\nCloses #2405\n\n\n# Rationale for this change\nFor TPC-H Q21 (SF\u003d10, `lineitem` \u003d 59,986,052 rows), the right-side\n`lineitem` SortMergeJoin sorts on the single-column integer key\n`l_orderkey` (Int64). Auron\u0027s native `SortExec` was ~8.6x slower than\nSpark (13.8s vs 1.6s) because it always routes through `RowConverter`\nbyte encoding, whereas Spark uses radix sort on an 8-byte prefix\n(`O(n)`). See #2405 for the full analysis.\n\n# What changes are included in this PR?\nType-aware fast path in `ExternalSorter`\n(`native-engine/datafusion-ext-plans/src/sort_exec.rs`):\n\n- `PrimitiveSortKey::try_new()` detects a single direct `Column` of a\nfixed-width integer type (`Int8/16/32/64`, `UInt*`, `Date32/64`,\n`Timestamp`).\n- When it applies, each batch is sorted up front via Arrow\n`sort_to_indices` on the raw array (honoring\n`descending`/`nulls_first`), skipping the `RowConverter` encode +\nbyte-compare path. Concretely:\n- `limit` is passed straight to `sort_to_indices(Some(limit))`, so Arrow\nuses partial sorting for Top-N (it falls back to a full sort when\n`limit` covers the batch, so a plain `Sort` with no limit is\nunaffected).\n- The returned `UInt32Array` is handed directly to `take_batch` (which\naccepts `impl Into\u003cPrimitiveArray\u003e`) instead of being copied through an\nintermediate `Vec\u003cu32\u003e`.\n- On the fast path the batch is already sorted and limited, so the\ndownstream key rows are appended sequentially (`for row_idx in\n0..num_rows`) rather than allocating an identity `Vec\u003cu32\u003e`, and the\nalready-sorted batch avoids an extra `take_batch` copy.\n- Three `#[ignore]` benchmarks in `fuzztest`: in-mem (Auron vs\nDataFusion), external/spill (Auron-only — see note below), and a Top-N\ncase (`limit\u003d10000`).\n\n# Are there any user-facing changes?\nNo. Internal sort fast path only; results are identical, only sort\nperformance improves for the eligible single-column-primitive case.\n\n# How was this patch tested?\nExisting `fuzztest_in_mem_sorting` / `fuzztest_external_sorting` pass\n(these exercise the non-fast-path branch and validate that the fast path\nfalls through to `RowConverter` when not eligible). Manual `#[ignore]`\nbenchmarks on 1M Int64 rows (release).\n\n**Full sort (no limit) — in-memory (1 GB, both stay in memory):**\n\n```text\nBefore (RowConverter path):\n[sort in-mem]   repeat\u003d  1, auron\u003d3.014s, datafusion\u003d0.487s (6.18x)\n[sort in-mem]   repeat\u003d100, auron\u003d2.384s, datafusion\u003d0.353s (6.75x)\n\nAfter (primitive fast path):\n[sort in-mem]   repeat\u003d  1, auron\u003d0.051s, datafusion\u003d0.023s (2.25x)\n[sort in-mem]   repeat\u003d100, auron\u003d0.044s, datafusion\u003d0.020s (2.20x)\n```\n\n- **Before**: Auron is ~6x slower than DataFusion (RowConverter encoding\n+ byte-comparison overhead).\n- **After**: the gap narrows to ~2x.\n- The remaining gap comes from the K-way merge stage, which still uses\n`RowConverter` byte comparison — it can be further reduced with a\n`PrimitiveKeyCollector`.\n- DataFusion\u0027s native `SortExec` calls Arrow `sort_to_indices` → Rust\n`sort_unstable_by` to compare raw `i64` values for primitives; Spark\nadditionally uses radix sort for single-column integers, so the\nAuron-vs-Spark gap is likely still larger than 2x.\n\n**Top-N (`limit\u003d10000`, 1M rows) — partial sort path turned on:**\n\n```text\n[sort top-N limit\u003d10000] repeat\u003d  1, auron\u003d0.007s, datafusion\u003d0.026s (auron 3.6x faster)\n[sort top-N limit\u003d10000] repeat\u003d100, auron\u003d0.005s, datafusion\u003d0.024s (auron 4.5x faster)\n```\n\nPassing the limit through to `sort_to_indices` lets Arrow do a partial\nsort (introselect) over only the top-N, which is ~an order of magnitude\ncheaper than a full 1M-row sort. Under Top-N Auron overtakes DataFusion\n(which appears to sort fully then fetch) by ~3.6–4.5x — the inverse of\nthe full-sort figure.\n\n**Note on the external/spill group:** an earlier version compared Auron\n(spilling at a 2 MB `MemManager` limit) against DataFusion (which does\nnot honor that limit and sorts fully in memory) — an apples-to-oranges\ncomparison. The external/spill group now reports Auron\u0027s spill cost on\nits own; the in-mem group above is the fair Auron-vs-DataFusion\ncomparison.\n\n# Was this patch authored or co-authored using generative AI tooling?\nNo."
    },
    {
      "commit": "4350a7d12b88c0439f9801101c7bc2467ba1a138",
      "tree": "93fcace9b44e70314ba02d891af214a4751faed7",
      "parents": [
        "4b0a3451f72c21918453915ad69c8c60334ceb1b"
      ],
      "author": {
        "name": "bkhan",
        "email": "xorsum@outlook.com",
        "time": "Mon Aug 24 13:59:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 13:59:52 2026 +0800"
      },
      "message": "[AURON #2392] Support Spark 4.2 (#2404)\n\n# Which issue does this PR close?\n\nCloses #2392\n\n# Rationale for this change\n\nhttps://spark.apache.org/releases/spark-release-4-2-0.html\n\n# What changes are included in this PR?\n\n# Are there any user-facing changes?\n\n# How was this patch tested?\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: Kimi K3`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\n---------\n\nCo-authored-by: cxzl25 \u003c3898450+cxzl25@users.noreply.github.com\u003e\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "4b0a3451f72c21918453915ad69c8c60334ceb1b",
      "tree": "f3ed03e39b9475c0e6bc4257cc3cc601ddff230e",
      "parents": [
        "0f98674e7c4bfa3e927798a316405e7c4a32a711"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Fri Aug 21 09:23:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 09:23:55 2026 +0800"
      },
      "message": "[AURON #2472] Fix nullable struct field null propagation (#2473)\n\n# Which issue does this PR close?\n\nCloses #2472\n\n# Rationale for this change\n\nAuron does not propagate the parent struct\u0027s null bitmap when accessing\na child field. As a result, a field of a null struct may incorrectly\nreturn a physical value such as `0` instead of `null`.\n\n# What changes are included in this PR?\n\n- Combine the parent struct and child field null bitmaps in\n`GetIndexedFieldExpr`.\n- Preserve the zero-copy path when the parent struct contains no nulls.\n\n# Are there any user-facing changes?\n\nBug fix only, accessing a field of a null struct now returns null,\nconsistent with vanilla Spark.\n\n# How was this patch tested?\n\n- Add Rust tests covering parent and child null combinations.\n- Add a Spark Parquet E2E test for nullable struct field access.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: gpt-5.6`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "0f98674e7c4bfa3e927798a316405e7c4a32a711",
      "tree": "49c5bef227acac7325a7b91c3fc2d0f4a14d9897",
      "parents": [
        "2412b016fc45e7d075d76b2509f6fd14ea13cb10"
      ],
      "author": {
        "name": "Ming Wei",
        "email": "weimingdiit@gmail.com",
        "time": "Thu Aug 20 14:45:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 14:45:19 2026 +0800"
      },
      "message": "[AURON #2468] Support binary sort keys in native range shuffle (#2469)\n\n**Which issue does this PR close?**\nCloses #2468 \n\n**Rationale for this change**\nAuron currently rejects `BinaryType` sort keys when converting Spark\n`RangePartitioning` to a native shuffle exchange.\n\nBinary values are already supported by Auron\u0027s Arrow type conversion and\nnative row encoding, so this restriction causes queries that order or\nrange-partition by a binary column to fall back unnecessarily.\n\n**What changes are included in this PR?**\nAllows a top-level `BinaryType` sort key in native range partitioning.\nUpdates the existing binary range-partitioning test to assert that\n`NativeShuffleExchangeExec` is used.\n\nThe general supported-type check is unchanged, so binary support is not\nenabled for unrelated operators or data source scans.\n\n**Are there any user-facing changes?**\nQueries that range-partition by a binary column can now use Auron\u0027s\nnative shuffle path.\n\nThere are no user-facing API or configuration changes.\n\n**How was this patch tested?**\nUT.\n\n**Was this patch authored or co-authored using generative AI tooling?**\n- [x] Yes\n- [ ] No\nCodex was used only to Review and understand the codebase\n\nSigned-off-by: weimingdiit \u003cweimingdiit@gmail.com\u003e\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "2412b016fc45e7d075d76b2509f6fd14ea13cb10",
      "tree": "967a739636a7df7ffe424513047b979f1000a5bd",
      "parents": [
        "6a85e30d5b98fdd82c0a4a875ed8bea602d6de80"
      ],
      "author": {
        "name": "Weiqing Yang",
        "email": "yangweiqing001@gmail.com",
        "time": "Wed Aug 19 23:41:12 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 14:41:12 2026 +0800"
      },
      "message": "[AURON #2455] Run UNIX_TIMESTAMP natively for fixed-offset session time zones (#2466)\n\n# Which issue does this PR close?\n\nCloses #2455\n\n# Rationale for this change\n\n`table.local-time-zone` accepts fixed-offset ids such as `GMT-08:00`,\nand Flink\u0027s own validation message recommends that form. The native\n`Flink_UnixTimestamp` resolved its session zone by exact-match lookup\nagainst the IANA time zone database, which carries no `GMT±HH:MM`\nentries, so #2448 rejects those ids at plan time and the whole Calc\nfalls back to Flink.\n\nThat gate was the right call, since before it the id reached the native\ncall and failed past the point where any fallback remained. But it costs\nnative execution for a large family of zones, and it is reachable with\nno explicit configuration at all: the default value resolves to\n`ZoneId.systemDefault()`, so a TaskManager running with `TZ\u003dGMT-08:00`\nlands there silently.\n\nOne correction to the issue body while I am here. I wrote that 141 of\n745 accepted ids are in this family. Enumerating them gives **2160 of\n2764**. The family is every minute, not quarter-hours: `GMT+05:07` is\naccepted and normalizes to itself. My original count assumed\nquarter-hour granularity and also dropped the negative sub-hour ids. The\ndesign does not change, since 2160 is still small enough to enumerate\nexhaustively, but the number is wrong in the issue and I would rather\ncorrect it than leave it.\n\nTwo spellings in the issue body also turn out not to need support.\nFlink\u0027s validator rejects `UTC+8` and a bare `+05:30` as configured\nvalues, so only the `GMT±HH:MM` form is reachable that way.\n\n# What changes are included in this PR?\n\n**Native.** A `ZoneSpec` that is either an IANA region or a constant UTC\noffset. The region arm delegates to `resolve_offset_secs` **unchanged**,\nso the ambiguous and gap handling validated for that path is preserved\nby construction rather than by retesting. The fixed arm returns the\nconstant, which is what Flink computes for these zones at every instant.\n\nThe offset parser is hand-rolled rather than delegating to\n`FixedOffset`\u0027s `FromStr`, which discards unconsumed input and would\nread `+08:00:30` as `+08:00` with no error.\n\n**Plan-time gate.** An id is admitted when it is not `SystemV/*` and is\neither a database region or a fixed offset. `SystemV/*` still falls\nback: those ids are genuinely absent from the database the native lookup\nconsults, so the gate narrows rather than disappears. Both call sites\nroute through the one predicate method, so there is no second site to\nkeep in sync.\n\nBare `±HH:MM` is admitted as well. The default configuration path\nreturns `ZoneId.systemDefault()` without validating it, so a TaskManager\non `TZ\u003dEST` delivers `-05:00`, a spelling the validator itself would\nreject. Three are reachable this way.\n\nA note on why the offset is resolved natively rather than mapped on the\nJVM side. Mapping onto the database\u0027s `Etc/GMT∓N` names would invert the\nsign, since `Etc/GMT+8` is UTC−8, and an error there ships timestamps\nwrong by twice the offset rather than merely unaccelerated. Those names\nare also whole-hours-only across UTC−12 to +14, so `+05:45` and\neverything past ±12 has no equivalent at any sign.\n\n`arrow::array::timezone::Tz` is worth mentioning because it is exactly\nthis abstraction and is already on the classpath. It does not fit here:\nits grammar accepts `+08:00` but rejects `GMT-08:00`, which is the\nentire family in question, and its offset type does not expose the\nbase-UTC-offset accessor that the ambiguous and gap branches depend on,\nso adopting it would have meant rewriting the semantics this change is\ntrying to leave alone.\n\n# Are there any user-facing changes?\n\nYes. A session on a fixed-offset time zone now runs `UNIX_TIMESTAMP`\nnatively instead of falling back to Flink. Results are unchanged; only\nthe execution path differs. Sessions on `SystemV/*` continue to fall\nback.\n\n# How was this patch tested?\n\nThe gate and the native parser have to admit exactly the same set.\nAdmitting more would not surface as an error: a failure inside the\nnative call is turned into a default value, so the query would return no\nrows rather than fail. That agreement was therefore checked over every\nreachable id, and independently three times, each derivation building\nboth sides differently. The strongest of the three compiled the shipped\nRust source directly rather than transcribing it, and derived the\nreachable set by calling Flink\u0027s own config accessor over 92,476\ncandidate strings rather than modelling it. All three agree: 2754\nadmitted, 2754 resolvable, zero admitted-but-unresolvable and zero\nresolvable-but-rejected. The 13-id gap is exactly `SystemV/*`.\n\nNative tests cover the whole family exhaustively rather than by\nsampling, with expected offsets recomputed from the loop indices so the\nassertion is not circular. Because that loop cannot falsify the closed\nform it is built on, a separate fixture pins 13 spot values taken from a\n`SimpleDateFormat` oracle, covering `GMT`, `GMT±00:01`, `GMT±18:00`,\n`GMT+05:07`, `GMT+05:45`, an epoch day crossing, 1900, and 1582. The\ndifferential sweep behind those values ran 155,520 comparisons across\nfour JDKs with no mismatches.\n\nThe negative cases are the ones that discriminate between a strict\nparser and a lenient one, so they cover near-misses rather than garbage:\nsecond precision, an embedded space, repeated colons, a Unicode minus\nsign, and a single-digit hour. Out-of-range offsets are covered too, and\nboth guards were mutation-tested: deleting either one admits bad offsets\nwhile leaving the other\u0027s cases rejected.\n\nOn the JVM side the family is enumerated against the gate, `SystemV/*`\nis asserted to still fall back, and the integration test now asserts on\nthe fallback counter rather than only on the answer, since native and\nfallback both produce the right answer and an answer-only assertion\ncannot tell them apart.\n\n`RexCallConverterTest` 54 green, `AuronFlinkCalcITCase` 23 green, native\nsuite 25 green, Checkstyle clean.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\n`Generated-by: Claude Code (Claude Opus 5)`"
    },
    {
      "commit": "6a85e30d5b98fdd82c0a4a875ed8bea602d6de80",
      "tree": "f08a94d234e6e691d4966f33927c9fe15f2aa3d4",
      "parents": [
        "e5a3735c2e146d665caa3e75b343887c33655db2"
      ],
      "author": {
        "name": "Goutam Adwant",
        "email": "8672451+goutamadwant@users.noreply.github.com",
        "time": "Tue Aug 18 00:46:39 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 15:46:39 2026 +0800"
      },
      "message": "[AURON #1902] Reuse extension function implementations (#2467)\n\n# Which issue does this PR close?\n\nCloses #1902\n\n# Rationale for this change\n\n`create_auron_ext_function` created a new function implementation `Arc`\nfor every lookup. As a result, equivalent extension UDFs did not compare\nequal in DataFusion, preventing repeated expressions from sharing cached\nevaluation results.\n\n# What changes are included in this PR?\n\n- Lazily initialize one shared implementation for each extension\nfunction.\n- Preserve the existing direct match-based function lookup.\n- Return a cloned `Arc` for subsequent lookups without adding a map or\nlock lookup.\n- Add regression coverage for shared implementation identity, isolation\nbetween different functions, and DataFusion UDF equality.\n\n# Are there any user-facing changes?\n\nNo public API or configuration changes. Repeated equivalent\nextension-function expressions can now reuse cached evaluation results.\n\n# How was this patch tested?\n\n- `cargo test -p datafusion-ext-functions reuses_function_implementation\n--lib`\n- `cargo test -p datafusion-ext-functions --lib`\n- `cargo test -p auron-planner --lib`\n- `cargo test -p datafusion-ext-plans --lib`\n- `cargo clippy -p datafusion-ext-functions --all-targets -- -D\nwarnings`\n- `./dev/reformat --check`\n\nThe repository formatting check passed across all required dependency\nprofiles and Spark compatibility builds from Spark 3.0 through Spark\n4.1.\n\n# Was this patch authored or co-authored using generative AI tooling?\n\n- [x] Yes\n- [ ] No\n\nCodex was used only to Review and understand the codebase"
    },
    {
      "commit": "e5a3735c2e146d665caa3e75b343887c33655db2",
      "tree": "bd257360d1d5aaa406e32905dd6e1f67102f4541",
      "parents": [
        "3ac1779100f38d8d2e145dac2324b2bf48481d61"
      ],
      "author": {
        "name": "Goutam Adwant",
        "email": "8672451+goutamadwant@users.noreply.github.com",
        "time": "Sun Aug 16 00:55:30 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 16 15:55:30 2026 +0800"
      },
      "message": "[AURON #2431] Prune Iceberg changelog tasks by metadata predicates (#2456)\n\n# Which issue does this PR close?\n\nCloses #2431\n\n# Rationale for this change\n\nIceberg changelog metadata values are constant per changelog task. Auron\ncurrently plans every supported `AddedRowsScanTask` in a changelog range\neven when a simple predicate on `_change_type`, `_commit_snapshot_id`,\nor `_change_ordinal` proves that a task cannot match.\n\n# What changes are included in this PR?\n\n- Associate supported metadata-only filters with a direct Iceberg\nchangelog scan, allowing only deterministic projections between the\nfilter and scan.\n- Match filter attributes to the scan by expression ID before tagging\nit.\n- Prepare extension plans in the existing pre-columnar transition pass.\n- Prune `AddedRowsScanTask` instances for `\u003d` and `IN` predicates\ncombined with `AND`.\n- Preserve the changelog filter tag when Spark rebuilds a\n`BatchScanExec` for runtime filters.\n- Keep `OR`, `NOT`, mixed data-column predicates, unsafe operator\nshapes, and non-`AddedRowsScanTask` tasks on the existing path.\n\n# Are there any user-facing changes?\n\nYes. Eligible native Iceberg changelog scans plan and read fewer insert\ntasks. There are no public API or configuration changes.\n\n# How was this patch tested?\n\n- `AuronIcebergIntegrationSuite`: 45 tests passed on Spark 3.5 / Iceberg\n1.10.1 with the native engine.\n- `./dev/reformat --check`: passed both Spark 3.5 formatting\nconfigurations and compile/test-compile across Spark 3.0-3.4 and Spark\n4.0-4.1.\n- Regressions cover supported and unsupported predicates,\naggregate/limit/nondeterministic barriers, expression-ID mismatches,\npre-columnar staging, runtime-filter copies, dynamic partition pruning,\nand retention of non-insert tasks.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-5.6)\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "3ac1779100f38d8d2e145dac2324b2bf48481d61",
      "tree": "955805437c1f538c971b8e363c6a6bffd9e64db3",
      "parents": [
        "91ced1fbdd1ed45ebb9f9f2f5c04ca2ead04e827"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Sun Aug 16 10:46:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 16 10:46:46 2026 +0800"
      },
      "message": "[AURON #2457] Fix per-partition job submission in NativeCollectLimit (#2458)\n\n# Which issue does this PR close?\n\nCloses #2457\n\n# Rationale for this change\n\n`NativeCollectLimitBase.executeCollect()` currently uses\n`toLocalIterator`, which submits a separate Spark job for every scanned\npartition.\n\nFor empty or highly selective inputs, this can produce many unnecessary\njobs and make driver-side scheduling dominate query execution.\n\n# What changes are included in this PR?\n\n- Replace the `toLocalIterator` collection loop with `executeTake`.\n- Add a regression test to verify that partitions are scanned in\nbatches.\n\n# Are there any user-facing changes?\n\nQueries over empty or sparse partitions may submit fewer Spark jobs.\n\n# How was this patch tested?\n\nAdded a regression test to `AuronExecSuite`.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: GPT-5`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "91ced1fbdd1ed45ebb9f9f2f5c04ca2ead04e827",
      "tree": "400f2ae0202f323b03f756eac341242aa9853a2d",
      "parents": [
        "53200b03fafd9e57af30b0ddf27577207f065df1"
      ],
      "author": {
        "name": "Ming Wei",
        "email": "weimingdiit@gmail.com",
        "time": "Sat Aug 15 15:57:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 15 15:57:45 2026 +0800"
      },
      "message": "[AURON #2451] Add Paimon COW multi-commit correctness coverage (#2452)\n\n**Which issue does this PR close?**\n\nCloses #2451 \n\n**Rationale for this change**\n\nThe existing Paimon COW test verifies only a single commit. It does not\nprotect against stale rows being returned after a later commit updates\nan existing primary key.\n\nThis change adds multi-commit correctness coverage while keeping the\nnative scan implementation unchanged.\n\n**What changes are included in this PR?**\n\nUpdates the existing Paimon COW primary-key integration test to:\n\n- Write the initial rows.\n- Write a newer value for an existing primary key in a second commit.\n- Verify that only the latest value is returned.\n- Verify that the query still uses `NativePaimonV2TableScan`.\n\n**Are there any user-facing changes?**\n\nNo user-facing changes.\n\n**How was this patch tested?**\n\nUT.\n\n---------\n\nSigned-off-by: weimingdiit \u003cweimingdiit@gmail.com\u003e\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "53200b03fafd9e57af30b0ddf27577207f065df1",
      "tree": "2c3dabf1a1ad605ea7053223aeccd84e17ae208c",
      "parents": [
        "38f63964d2010fe07e0d208310292642e10d1c8d"
      ],
      "author": {
        "name": "Ming Wei",
        "email": "weimingdiit@gmail.com",
        "time": "Sat Aug 15 15:36:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 15 15:36:21 2026 +0800"
      },
      "message": "[AURON #2437] Support inner residual join conditions in native broadcast hash join (#2438)\n\n# Which issue does this PR close?\n\nCloses #2437 \n\n# Rationale for this change\n\nAuron currently cannot execute Spark broadcast hash joins natively when\nan inner join contains a residual non-equi condition in addition to its\nequi-join keys.\n\nSupporting these conditions improves native execution coverage for\ncommon broadcast join queries and keeps the condition evaluation inside\nthe join operator.\n\n# What changes are included in this PR?\n\n- Passes the BroadcastHashJoinExec residual condition to\nNativeBroadcastJoinExec.\n- Converts the residual condition to the existing native JoinFilter\nrepresentation.\n- Adds the JoinFilter to the native broadcast join protobuf plan.\n- Parses and passes the filter through the native planner.\n- Evaluates the residual condition against candidate rows produced by\nthe broadcast hash lookup.\n- Supports both BuildLeft and BuildRight.\n- Limits residual-condition support to inner broadcast hash joins.\n- Adds Scala and Rust test coverage for both broadcast build sides.\n\nOuter, semi, anti, null-aware anti, and broadcast nested-loop join\ncondition support are not included.\n\n# Are there any user-facing changes?\n\nNo user-facing API changes. More inner broadcast hash joins with\nresidual conditions can now be executed natively by Auron.\n\n# How was this patch tested?\n\nUT.\n\n# Was this patch authored or co-authored using generative AI tooling?\n\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-5)\n\n---------\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: weimingdiit \u003cweimingdiit@gmail.com\u003e"
    },
    {
      "commit": "38f63964d2010fe07e0d208310292642e10d1c8d",
      "tree": "66ca33636603d7731c418dce5c8e5034938b469e",
      "parents": [
        "67cff189d74de42d8c39bc1ba156d2d21d35a06c"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Sat Aug 15 10:20:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 15 10:20:29 2026 +0800"
      },
      "message": "[AURON #2463] Fix native Top-K with only sort keys (#2464)\n\n# Which issue does this PR close?\n\nCloses #2463\n\n# Rationale for this change\n\nWhen all output columns are sort keys, the native sorter stores the sort\nkeys separately and creates a zero-column data batch.\n\nFor Top-K queries, the sorted indices are limited before this batch is\ncreated, but the batch currently retains the original input row count.\nThis mismatch can cause the merge cursor to read past the retained\nsort-key rows.\n\n# What changes are included in this PR?\n\n- Use the number of retained sorted indices as the row count of the\nzero-column batch.\n\n# Are there any user-facing changes?\n\nBug fix only.\n\n# How was this patch tested?\n\nAdded a regression test to AuronExecSuite.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: GPT-5`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "67cff189d74de42d8c39bc1ba156d2d21d35a06c",
      "tree": "11b6160bf2cbe3c6c2c5bfecd1f98fdb98d48b52",
      "parents": [
        "779b2456a42c5eaefe48d75b5aa1f42a92651038"
      ],
      "author": {
        "name": "Weiqing Yang",
        "email": "yangweiqing001@gmail.com",
        "time": "Wed Aug 12 00:34:52 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 12 15:34:52 2026 +0800"
      },
      "message": "[AURON #1863] Support the zero-argument Flink UNIX_TIMESTAMP natively (#2465)\n\n# Which issue does this PR close?\n\nPart of #1863.\n\n#1863 enumerates all three argument forms of `UNIX_TIMESTAMP`. The\n1-argument and 2-argument string-parsing forms landed in #2409 and\n#2448, and this PR adds the remaining 0-argument form. #1863 stays open\nafter this one merges, for the timezone configuration work tracked as\nsub-issue #2455.\n\n# Rationale for this change\n\n`UNIX_TIMESTAMP()` with no arguments returns the current epoch seconds.\nThe converter rejected it, so any Calc containing it fell back to Flink\nwholesale, taking every other expression in that Calc down with it.\n\nTwo things were believed to block it. Both turned out to be false, and I\nstated one of them myself earlier in this issue.\n\n**\"A zero-argument ext function cannot size its output.\"** The\next-function ABI drops the batch row count, so a 0-argument function\nappears to have no way to know how many values to return. That is true\nonly for a function returning an `Array`. The length check in\n`ScalarFunctionExpr::evaluate` sits entirely inside the\n`ColumnarValue::Array` branch, so a function returning\n`ColumnarValue::Scalar` never reaches it, and the projection broadcasts\nthe scalar to the batch width. No operand is needed, and no carrier\ncolumn either.\n\n**\"The 0-argument form needs the session time zone.\"** It does not. The\ngenerated Flink operator holds a `timeZone` field, passes it to the\n1-argument and 2-argument calls, and emits `result$1 \u003d\nDateTimeUtils.unixTimestamp()` with no argument at all. The result is\nepoch seconds, which is zone-independent.\n\nAn approach was proposed on #1863 that works around the first premise:\npass any input column to the Rust function purely to convey the batch\nlength, ignore its data, and return that many timestamps. That would\nhave worked, and it was a sound answer to the constraint as I had\ndescribed it. This PR does not use it, because once the constraint turns\nout not to exist the carrier column has no job left. The difference is\nvisible in the diff, so it is worth stating plainly: no column is\npassed, the Rust function reads no length, and the row count comes from\nthe projection broadcasting a scalar. The observable behavior is the\nsame either way.\n\n# What changes are included in this PR?\n\nThree commits.\n\n1. A native zero-argument ext function `Flink_UnixTimestampNow`\nreturning `ColumnarValue::Scalar(Int64)`. The clock is read as\n`timestamp_millis() / 1000`, mirroring Flink\u0027s\n`System.currentTimeMillis() / 1000` operator for operator.\n2. The converter admits the 0-argument form and emits that function with\nan empty operand list. The 0-argument arm sits **above** the session\ntime zone check, since a zone the native side cannot resolve is no\nreason to fall back a query that never consults a zone. Class and method\njavadoc are corrected: they previously described the 0-argument form as\nfalling back and described `UNIX_TIMESTAMP` as always mapping to\n`Flink_UnixTimestamp` with `[value, chronoFormat, zoneId]`.\n3. End-to-end coverage in `AuronFlinkCalcITCase`.\n\nNo protobuf change, no `Cargo.toml` change, no `pom.xml` change. It is a\nseparate native function rather than a fourth arity on\n`Flink_UnixTimestamp`, whose contract is \"parse this string with this\nformat in this zone\" and which the 0-argument form shares none of.\n\n# Are there any user-facing changes?\n\nYes, and one of them is a deliberate semantic divergence worth reviewing\non its own merits.\n\nA query using `UNIX_TIMESTAMP()` that previously fell back to Flink now\nruns natively.\n\n**Flink evaluates the niladic form per record. This implementation reads\nthe clock once per call site per evaluation and broadcasts it across the\nbatch**, so rows in one batch share a timestamp, and that timestamp is\ntaken when the batch is evaluated rather than when each row arrived. Two\n`UNIX_TIMESTAMP()` calls in one projection are read independently, which\nmatches Flink.\n\nHow large the skew can get depends on what closes the batch:\n\n| Path | Bound |\n|---|---|\n| Calc with a declared `WATERMARK FOR` | about 205 ms, the default\n`autoWatermarkInterval` |\n| Calc with no watermark strategy | 8192 rows only, so `8192 / rate`\nseconds. About 82 s at 100 rec/s |\n| Fused Kafka plan | the native scan blocks until its buffer fills,\ndefault 3000, with no time flush |\n\nThe unwatermarked case is the common shape for a processing-time query,\nso this is not a corner case. It was discussed and settled on the issue\n(https://github.com/apache/auron/issues/1863#issuecomment-5249021849):\nper-batch is acceptable, since the zero-argument form is non-idempotent\nanyway and what users generally want is to know roughly when a record\nwas processed. It is also the finest granularity among comparable\nengines: StreamFusion stamps `PROCTIME()` once per operator compile,\nFlink\u0027s own batch mode folds `CURRENT_TIMESTAMP` to a query-start\nliteral, DataFusion, ClickHouse and Velox are per query, DuckDB is per\ntransaction, and ClickHouse ships `nowInBlock()` as a documented\nper-block clock. Flink also declares the niladic form only\n`SqlMonotonicity.INCREASING`, which a per-batch constant satisfies.\n\nGating it conditionally on a declared watermark was considered and\nrejected: the converter has no access to the ExecNode graph, the\npredicate misses DataStream-level watermarks,\n`auto-watermark-interval\u003d0` and idle partitions, it keys native support\noff an unrelated DDL clause, and it only shrinks the skew rather than\nremoving it.\n\n# How was this patch tested?\n\nNative unit tests for the scalar return and its broadcast to batch\nwidth, and for the value being a plausible epoch second rather than\nmilliseconds.\n\nConverter tests for the emitted node shape, and\n`testUnixTimestampZeroArgSupportedWithFixedOffsetZone`, which exists to\ncatch the 0-argument arm being placed below the time zone check. It is a\nreal discriminator: moving the arm below the check fails that test and\nno other. Two tests that asserted the form falls back are inverted.\n\nAn ITCase asserting one clock-bracketed row per input row and no\nrecorded fallback. Both assertions are load-bearing and neither subsumes\nthe other. A zero fallback count establishes that the Calc converted,\nnot that it ran: a native library holding no registry arm for the\nfunction still converts at plan time and fails only during execution,\nwhere nothing records a fallback, leaving the counter at zero and the\nresult set empty. The row count is what establishes the native plan\nexecuted.\n\nThe ITCase was checked to be non-vacuous by running rather than by\ninspection: reverting the converter gate fails it on the fallback count,\nand running against a library without the registry arm fails it on the\nrow count.\n\nFull module build green, 0 checkstyle violations, spotless clean.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\n`Generated-by: Claude Code (Claude Opus 5)`"
    },
    {
      "commit": "779b2456a42c5eaefe48d75b5aa1f42a92651038",
      "tree": "406aef92c58271d2a62594afd8cb095223b71f71",
      "parents": [
        "14d17f7ce5fa8084f8f4af73fccc89180bb0161f"
      ],
      "author": {
        "name": "Weiqing Yang",
        "email": "yangweiqing001@gmail.com",
        "time": "Mon Aug 10 23:08:43 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 11 14:08:43 2026 +0800"
      },
      "message": "[AURON #1863] Support native Flink UNIX_TIMESTAMP: converter integration (#2448)\n\n# Which issue does this PR close?\n\nPart of #1863. Not `Closes`, because the issue description also covers\nthe 0-input form, which this PR does not implement.\n\nThis is the Flink Java side of `UNIX_TIMESTAMP`. The native function it\ncalls merged in #2409. Together they cover the 1-input and 2-input forms\nfrom the issue description.\n\nThe 0-input form is still outstanding. It is a different function rather\nthan a missing branch: Flink binds the niladic form to\n`DateTimeUtils.unixTimestamp()`, which reads the clock per record and\nparses nothing, so it needs its own design pass. The converter rejects\nit explicitly and falls back to Flink\u0027s engine, and #1863 stays open to\ntrack it.\n\n# Rationale for this change\n\nThis completes native support for Flink\u0027s `UNIX_TIMESTAMP` by wiring the\nFlink Calc converter to emit the native function added in #2409. Without\nit the native function is unreachable, and any Calc containing\n`UNIX_TIMESTAMP` falls back to Flink\u0027s engine for the whole Calc.\n\n# What changes are included in this PR?\n\nThe converter recognizes `UNIX_TIMESTAMP` and lowers the 1-argument and\n2-argument forms to the native `Flink_UnixTimestamp` node.\n\n`UNIX_TIMESTAMP` resolves to `SqlKind.OTHER_FUNCTION`, so it is matched\nby reference identity on the operator before the supported-kinds switch,\nthe same way `TRY_CAST` is handled.\n\nA format scanner translates the supported subset of Java date-format\nletters (`yyyy MM dd HH mm ss` and literals) to the native format.\nAnything outside that subset falls back: other pattern letters,\nunsupported run-lengths, a non-literal format argument, the 0-argument\nform, and a numeric field adjacent to another numeric field where the\nrun-length would not survive translation (for example `yyyyMd`). Falling\nback keeps results correct rather than risking a silent divergence.\n\nThe session time zone is resolved at plan time and passed into the node.\nThis required completing the config threading in the standalone-Calc\npath, which passed a persisted config that does not carry\n`table.local-time-zone`. That gap had no effect until now:\n`UNIX_TIMESTAMP` is the first time-zone-sensitive expression the\nconverter supports, and the earlier ones (arithmetic, comparison,\nlogical, cast) never read the session zone. The effective node config is\nthreaded through instead, so the configured zone reaches the native\nevaluation.\n\n# Are there any user-facing changes?\n\nYes. `UNIX_TIMESTAMP(string)` and `UNIX_TIMESTAMP(string, format)` now\nexecute on the native engine when the format is a supported literal\npattern. Unsupported patterns and the 0-argument form continue to run on\nFlink\u0027s engine, with the same results as before.\n\n# How was this patch tested?\n\nUnit tests for the scanner (accept/reject, quote escaping, the adjacency\nrule), the converter (node shape, format translation, time-zone\npropagation), and the operator-identity invariant. Fallback tests assert\nthat unsupported inputs actually fall back rather than silently\nproducing a native plan.\n\nAn end-to-end ITCase runs `UNIX_TIMESTAMP(ts)` with a non-UTC session\nzone and confirms the native result matches the expected epoch values.\nThe executed native plan shows the function and the resolved zone,\nconfirming the query runs natively rather than falling back.\n\n160 tests pass in `auron-flink-planner` on the rebased branch, with\nspotless clean and 0 checkstyle violations.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nGenerated-by: Claude Code (Claude Opus 5)"
    },
    {
      "commit": "14d17f7ce5fa8084f8f4af73fccc89180bb0161f",
      "tree": "98f91098f95466f321a11e4a7073ed7d1915fab4",
      "parents": [
        "0e6388dc6f4c9718ded4e1383fa3dff7ef4fb196"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Sun Aug 09 08:42:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 09 08:42:34 2026 +0800"
      },
      "message": "[AURON #2453] Fix filtered aggregation for groups with no matching rows (#2454)\n\n# Which issue does this PR close?\n\nCloses #2453 \n\n# Rationale for this change\n\nA grouped aggregate may have no rows matching its `FILTER` clause. In\nthis case, the group exists but its accumulator may not be initialized,\ncausing an index-out-of-bounds error while producing the result.\n\n# What changes are included in this PR?\n\n- Ensure accumulator slots are initialized for all discovered groups\nbefore applying aggregate filters.\n- Add regression coverage for filtered `SUM` and `COUNT`.\n\n# Are there any user-facing changes?\n\nYes, bug fix only.\n\n# How was this patch tested?\nYes, added regression tests for filtered `SUM` and `COUNT`.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: gpt-5`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html"
    },
    {
      "commit": "0e6388dc6f4c9718ded4e1383fa3dff7ef4fb196",
      "tree": "88e3b0b42f1b516c42f889c2ccb057710d27fbe9",
      "parents": [
        "4c2abaaebf841ed3399401b8a48179392985bdbe"
      ],
      "author": {
        "name": "Ming Wei",
        "email": "weimingdiit@gmail.com",
        "time": "Sun Aug 09 08:41:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 09 08:41:42 2026 +0800"
      },
      "message": "[AURON #2449] Add fallback coverage for unsupported Paimon scan data type (#2450)\n\n**Which issue does this PR close?**\n\nCloses #2449 \n\n**Rationale for this change**\n\nPaimon native scan currently falls back when the read schema contains\nunsupported\ndata types, but this behavior was not covered by the integration tests.\n\nAdding this regression test ensures unsupported decimal types continue\nto use the\nSpark fallback path and do not enter native Paimon execution\naccidentally.\n\n**What changes are included in this PR?**\n\nAdds a Paimon integration test for an unsupported `decimal(38,10)`\ncolumn.\n\nThe test:\n\n- Writes a row using the unsupported decimal type.\n- Verifies that Spark returns the expected result.\n- Verifies that the executed plan does not contain\n`NativePaimonV2TableScan`.\n\nNo execution logic or user-facing behavior is changed.\n\n**Are there any user-facing changes?**\n\nNo user-facing changes.\n\n**How was this patch tested?**\n\nUT.\n\n---------\n\nSigned-off-by: weimingdiit \u003cweimingdiit@gmail.com\u003e\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "4c2abaaebf841ed3399401b8a48179392985bdbe",
      "tree": "211f34646ebe7168042c64f6e361726f04b331f2",
      "parents": [
        "83f05f58ac0bc5d9497c5946e9386758b0118b94"
      ],
      "author": {
        "name": "Ming Wei",
        "email": "weimingdiit@gmail.com",
        "time": "Tue Aug 04 20:25:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 20:25:59 2026 +0800"
      },
      "message": "[AURON #2434] Support full-data-file Iceberg changelog deletes (#2435)\n\n**Which issue does this PR close?**\nCloses #2434 \n\n**Rationale for this change**\nAuron native Iceberg changelog scan currently supports insert-only\nchangelog tasks.\n\nFull-data-file delete changelog tasks can be executed natively without\nrow-level delete-file handling. Auron can scan the deleted data file\ndirectly and materialize changelog metadata from the Iceberg changelog\ntask.\n\nSupporting this case improves native Iceberg changelog scan coverage\nwhile keeping more complex delete and update semantics on Spark\u0027s\nreader.\n\n**What changes are included in this PR?**\nAllows native Iceberg changelog scan to accept `DeletedDataFileScanTask`\nwhen:\n\n- the changelog operation is `DELETE`\n- `existingDeletes()` is empty\n\nKeeps existing native support for `AddedRowsScanTask` when:\n\n- the changelog operation is `INSERT`\n- `deletes()` is empty\n\nKeeps fallback behavior for unsupported changelog tasks, including\nrow-level deletes, position/equality deletes, update changelog tasks,\nmixed file formats, and delete tasks with existing delete files.\n\nAdds coverage for:\n\n- full-data-file delete changelog native scan\n- a changelog range that contains both insert tasks and full-data-file\ndelete tasks\n\n**Are there any user-facing changes?**\nNo user-facing API changes. More Iceberg changelog scans can now be\nexecuted natively by Auron.\n\n**How was this patch tested?**\nUT.\n\n---------\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: weimingdiit \u003cweimingdiit@gmail.com\u003e"
    },
    {
      "commit": "83f05f58ac0bc5d9497c5946e9386758b0118b94",
      "tree": "b00f1345be15cead5c3f730c2752fa214a042ef6",
      "parents": [
        "377e53242a0089971d3167716b9e2972c55532e2"
      ],
      "author": {
        "name": "Weiqing Yang",
        "email": "yangweiqing001@gmail.com",
        "time": "Tue Aug 04 02:49:40 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 17:49:40 2026 +0800"
      },
      "message": "[AURON #1863] Support native Flink UNIX_TIMESTAMP: native scalar function (#2409)\n\n# Which issue does this PR close?\n\nCloses #1863. The converter that emits this function follows in a\nseparate PR, once this one merges.\n\nTo show where this is going, the converter change is previewable here:\nhttps://github.com/weiqingy/auron/pull/1 (a draft in my fork, diffed\nagainst this PR\u0027s branch so it shows only the converter side). That PR\nwill be opened against this repo after this one lands.\n\n# Rationale for this change\n\nFlink\u0027s `UNIX_TIMESTAMP` converts a formatted date-time string to a Unix\ntimestamp in seconds. AIP-1 lists it as a Phase 1 built-in function.\nSupporting it natively is the first step; this PR adds the native (Rust)\nevaluation, and a follow-up PR wires the Flink converter to emit it.\n\nThe hard part is matching Flink\u0027s parsing exactly. Flink parses with\n`java.text.SimpleDateFormat` in its default lenient mode, so it accepts\nnon-zero-padded fields, field rollover, and trailing input. A strict\nparser diverges from Flink on the default format `yyyy-MM-dd HH:mm:ss`\nas soon as a field is not zero-padded, and would return a wrong\ntimestamp rather than an error. So this implements a lenient parser\nrather than delegating to a strict one.\n\n# What changes are included in this PR?\n\nA new `Flink_UnixTimestamp` ext scalar function in\n`datafusion-ext-functions`, registered through the existing ext-function\npath (no proto change).\n\nIt takes three string arguments `[value, format, zoneId]` and returns an\n`Int64`. The format is a translated strftime-style pattern and the zone\nis resolved by the caller; the converter PR supplies both.\n\nThe parser reproduces `SimpleDateFormat` lenient semantics for the\nsupported fields: variable field widths, rollover normalization,\ntolerant of trailing input, a leading minus on numeric fields. It also\nhandles the Julian/Gregorian hybrid calendar (cutover 1582-10-15), since\n`GregorianCalendar` is a hybrid while chrono is proleptic Gregorian, and\nresolves DST-ambiguous or nonexistent local times using the zone\u0027s\nstandard offset, matching Flink.\n\nFailure semantics match Flink: an unparseable string yields\n`Long.MIN_VALUE`, a NULL input yields NULL, and the\nmilliseconds-to-seconds step truncates toward zero.\n\nThe function is registered but not yet emitted by any planner, so this\nPR is self-contained and dormant until the converter lands.\n\n# Are there any user-facing changes?\n\nNo. The function is not reachable from SQL until the converter PR is\nmerged.\n\n# How was this patch tested?\n\n19 unit tests derived from a differential oracle that was validated\nagainst real `java.text.SimpleDateFormat` across a large randomized set\nof (input, format, timezone) inputs. Coverage includes the happy path,\nfield rollover, non-padded fields, trailing garbage, NULL,\nunparseable-to-`Long.MIN_VALUE`, DST gap and overlap across several\nzones, pre-1970 negative timestamps, pre-1582 hybrid-calendar dates, the\narity guard, an empty format matching nothing, and canonical field\nwidths."
    },
    {
      "commit": "377e53242a0089971d3167716b9e2972c55532e2",
      "tree": "4df056f9410cececc07403dea6d9f8ae6570fadf",
      "parents": [
        "23fc4f53107afb5c50706072319c6fa0a4e6445d"
      ],
      "author": {
        "name": "cxzl25",
        "email": "3898450+cxzl25@users.noreply.github.com",
        "time": "Tue Aug 04 14:02:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 14:02:21 2026 +0800"
      },
      "message": "[AURON #2422] Make RSS spill memory triggers configurable (#2423)\n\n# Which issue does this PR close?\n\nCloses #2422\n\n# Rationale for this change\nConfigurable spill trigger (rss_sort_repartitioner.rs). Replace the\nhardcoded `mem_used_percent() \u003e 0.4` with two tunable thresholds; spill\nfires when either is exceeded (whichever first):\n- `spark.auron.rss.spill.memoryFraction` (relative, default 0.4 \u003d\nprevious behavior)\n- `spark.auron.rss.spill.memorySize` (absolute bytes, default 0 \u003d\ndisabled; acts as a deterministic cap on the per-spill burst regardless\nof executor memory)\n\nBoth are read once per executor via OnceCell (no per-batch JNI conf\nreads).\nAdds `MemConsumer::mem_used()` (absolute bytes accessor) to support the\nabsolute threshold.\n\n# What changes are included in this PR?\nAuron\u0027s rss shuffle buffers records in native memory and spills to\nceleborn in bursts. At a shuffle-stage peak, many tasks spill\nsimultaneously; if each spill is large, the aggregate burst can overrun\na celeborn worker\u0027s inbound capacity and push the worker into a\npush-pause: it stops reading, holds inbound buffers, and only recovers\nafter the idle-connection timeout / connection close (observed as a\nmulti-minute stall — tasks survive via celeborn\u0027s client-side revive but\nthroughput degrades).\nThe previous hardcoded 0.4 fraction made the per-spill burst size depend\non executor memory and not directly tunable against this.\n\n# Are there any user-facing changes?\nNo\n\n# How was this patch tested?\nProduction environment verification\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No"
    },
    {
      "commit": "23fc4f53107afb5c50706072319c6fa0a4e6445d",
      "tree": "bf090d257ea9ed18853a394fd4ce841b3c08b29c",
      "parents": [
        "44472751550f3cd03b54683f7cf1cb800eff6922"
      ],
      "author": {
        "name": "Junfan Zhang",
        "email": "zuston@apache.org",
        "time": "Fri Jul 31 08:44:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 08:44:58 2026 +0800"
      },
      "message": "[AURON #2446] Flush buffered data based on row count (#2447)\n\n# Which issue does this PR close?\n\nCloses #2446\n\nthis PR is to fix the incorrect flushing logic, that should be based on\nthe row count rather than the bytes\n\n# Rationale for this change\n\nWithout this fix, the flushing will be triggered too frequently. \n\n# What changes are included in this PR?\n\n# Are there any user-facing changes?\n\n# How was this patch tested?\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes\n- [ ] No\n\nGenerated-by: OpenAI Codex (GPT-5)"
    },
    {
      "commit": "44472751550f3cd03b54683f7cf1cb800eff6922",
      "tree": "9ded76490401cf2f9537735e9d33f7f28964aab4",
      "parents": [
        "0f1794cab2eb3db080f31be2cb02a9b9fc43c78d"
      ],
      "author": {
        "name": "Ming Wei",
        "email": "weimingdiit@gmail.com",
        "time": "Fri Jul 31 08:33:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 08:33:41 2026 +0800"
      },
      "message": "[AURON #2429] Add mixed-format fallback coverage for Iceberg changelog native scan (#2430)\n\n**Which issue does this PR close?**\nCloses #2429 \n\n**Rationale for this change**\nAuron native Iceberg changelog scan requires all planned changelog tasks\nto use a single supported file format.\n\nWithout validating the planned tasks, a mixed-format fallback test could\npass because of an unrelated changelog fallback and fail to exercise the\nintended file-format guard.\n\n**What changes are included in this PR?**\nAdds fallback coverage for an Iceberg changelog range containing both\nParquet and ORC data files.\n\nThe test:\n\n- verifies that all planned changelog tasks are `AddedRowsScanTask`\n- verifies that the task file formats are exactly Parquet and ORC\n- compares the result with Spark execution\n- verifies that `NativeIcebergTableScan` is not used\n\nNo execution logic is changed.\n\n**Are there any user-facing changes?**\nNo user-facing changes. This is a test-only change.\n\n**How was this patch tested?**\nUT.\n\n---------\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: weimingdiit \u003cweimingdiit@gmail.com\u003e"
    },
    {
      "commit": "0f1794cab2eb3db080f31be2cb02a9b9fc43c78d",
      "tree": "ded195c338fd89d3b380286c72910e4f8a0b7cd2",
      "parents": [
        "ce460e1634458e952e7ba330e9d5b8f87fd91f22"
      ],
      "author": {
        "name": "Ming Wei",
        "email": "weimingdiit@gmail.com",
        "time": "Fri Jul 31 08:29:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 08:29:23 2026 +0800"
      },
      "message": "[AURON #2419] RowNullChecker may mis-detect null join keys for complex Arrow row types (#2424)\n\n# Which issue does this PR close?\n\nCloses #2419 \n\n**Rationale for this change**\nAuron\u0027s sort merge join uses encoded Arrow rows for join key comparison\nand uses RowNullChecker to skip rows with null join keys.\n\nRowNullChecker previously inspected Arrow row bytes manually. This is\nfragile for complex row encodings such as struct, list, and dictionary,\nbecause their layout is controlled by Arrow RowConverter and should not\nbe interpreted with fixed or estimated field lengths.\n\nThis can cause RowNullChecker to mis-detect null join keys for complex\nkey types.\n\n**What changes are included in this PR?**\nAdds an Arrow RowConverter to RowNullChecker.\nUpdates RowNullChecker\u0027s `has_nulls` path to decode Rows through Arrow\nRowConverter before building the null-key mask.\nPreserves conservative join key null semantics:\ntop-level null key values are treated as null join keys\nnested null fields or elements inside non-null struct/list keys do not\nmake the key null\nKeeps the existing RowNullChecker public method signatures unchanged.\nKeeps the existing byte-level helper path unchanged.\nAdds unit coverage for complex struct, list, and dictionary key rows.\n\n**Are there any user-facing changes?**\nNo user-facing API changes.\n\n**How was this patch tested?**\nUT.\n\n**Was this patch authored or co-authored using generative AI tooling?**\n- [x] Yes\n- [ ] No\nGenerated-by: OpenAI Codex (GPT-5)\n\n---------\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: weimingdiit \u003cweimingdiit@gmail.com\u003e"
    },
    {
      "commit": "ce460e1634458e952e7ba330e9d5b8f87fd91f22",
      "tree": "683fabcc491bbd5d83de4f076c0a82c52c0d27af",
      "parents": [
        "18f9b3f4e3846e761315184f572d4427e802fcc7"
      ],
      "author": {
        "name": "cxzl25",
        "email": "3898450+cxzl25@users.noreply.github.com",
        "time": "Thu Jul 30 14:30:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 14:30:39 2026 +0800"
      },
      "message": "[AURON #2439] Add git to yum install (#2442)\n\n# Which issue does this PR close?\n\nCloses #2439\n\n# Rationale for this change\n\n\nhttps://github.com/apache/auron/actions/runs/30325123247/job/90213501717\n```\nbuild-release-1  | [ERROR] [mvn-builder-auron-core] ./dev/vendors/setup-vendors.sh: line 135: git: command not found\n```\n\n# What changes are included in this PR?\n\n1. `dev/docker-build/centos7/Dockerfile`: install `git` alongside the\nother build tools\n(it was previously missing entirely, causing `setup-vendors.sh` to fail\nwith\n     `git: command not found`).\n2. `dev/vendors/setup-vendors.sh`: replace `git -C \"${target_dir}\" apply\n--3way \"${patch}\"`\nwith `(cd \"${target_dir}\" \u0026\u0026 git apply --3way \"${patch}\")`, so patch\napplication no longer\n     depends on a git version \u003e\u003d 1.8.5.\n3. `.github/workflows/build-amd64-releases.yml`: add\n`dev/docker-build/centos7/Dockerfile` to\nthe `paths` trigger list so changes to the build image are validated by\nthis workflow on PRs.\n\n# Are there any user-facing changes?\nNo\n\n# How was this patch tested?\nGHA\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [ ] Yes\n- [ ] No"
    },
    {
      "commit": "18f9b3f4e3846e761315184f572d4427e802fcc7",
      "tree": "c88866dd3b72b814b75962a781e64bc3a9b99b7f",
      "parents": [
        "0d4d77954240201bbd04e23ac9fd84d78d8ec5bb"
      ],
      "author": {
        "name": "cxzl25",
        "email": "3898450+cxzl25@users.noreply.github.com",
        "time": "Wed Jul 29 14:39:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 14:39:16 2026 +0800"
      },
      "message": "[AURON #2440] Consolidate Maven properties and format code (#2441)\n\n# Which issue does this PR close?\n\nCloses #2440\n\n# Rationale for this change\n\n`./dev/reformat` produced different formatting results depending on the\nJDK used to run it. `pom.xml` selected `scalafmtVersion` based on the\nactive JDK profile: `3.0.0` for `jdk-8`/`jdk-11`, and `3.9.9` for\n`jdk-17`/`jdk-21`. However, `scalafmt.conf` declares `version \u003d 3.9.9`,\nso only the JDK 17/21 profiles actually matched the intended\n  formatting rules.\n  \nAs a result, running the formatter under JDK 8/11 vs JDK 17/21 produced\ndifferent indentation for multi-line string interpolations (e.g.\n`.getOrElse(...)` continuation lines), causing spurious diffs in `git\nstatus` depending on which JDK happened to be active locally.\n\n# What changes are included in this PR?\n\nUnify `scalafmtVersion` to `3.9.9` across all\n`jdk-8`/`jdk-11`/`jdk-17`/`jdk-21` profiles, matching the version\ndeclared in `scalafmt.conf`.\n\n# Are there any user-facing changes?\nNo\n\n# How was this patch tested?\nGHA\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [ ] Yes\n- [ ] No"
    },
    {
      "commit": "0d4d77954240201bbd04e23ac9fd84d78d8ec5bb",
      "tree": "6e5d763bdd148adde6f6207bcca2a4d7c29cd8ed",
      "parents": [
        "bbca8c76b77561bc5238e5e2bc1ddeafcaa3f830"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 28 17:23:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 17:23:40 2026 +0800"
      },
      "message": "Bump actions/stale from 10 to 11 (#2436)\n\nBumps [actions/stale](https://github.com/actions/stale) from 10 to 11.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/actions/stale/releases\"\u003eactions/stale\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev11.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch3\u003eEnhancement\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate to ESM and update dependencies by \u003ca\nhref\u003d\"https://github-grid.enterprise.slack.com/team/U08CVLQ4JKE\"\u003e\u003ccode\u003e@​chiranjib-swain\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1350\"\u003eactions/stale#1350\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency Update\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOverride brace-expansion to 5.0.8 to address 24 high-severity\ndependency vulnerabilities by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1351\"\u003eactions/stale#1351\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/actions/stale/compare/v10...v11.0.0\"\u003ehttps://github.com/actions/stale/compare/v10...v11.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev10.4.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eonly-issue-types\u003c/code\u003e validation by \u003ca\nhref\u003d\"https://github.com/trueberryless\"\u003e\u003ccode\u003e@​trueberryless\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1338\"\u003eactions/stale#1338\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency Updates\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump undici to 6.27.0 via override, clean up stale license files,\nand version to 10.4.0. by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1342\"\u003eactions/stale#1342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/trueberryless\"\u003e\u003ccode\u003e@​trueberryless\u003c/code\u003e\u003c/a\u003e\nmade their first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1338\"\u003eactions/stale#1338\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/actions/stale/compare/v10.3.0...v10.4.0\"\u003ehttps://github.com/actions/stale/compare/v10.3.0...v10.4.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev10.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnhancement: ignore stale labeling events by \u003ca\nhref\u003d\"https://github.com/shamoon\"\u003e\u003ccode\u003e@​shamoon\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1311\"\u003eactions/stale#1311\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency Updates\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade dependencies (\u003ccode\u003e@​actions/core\u003c/code\u003e,\n\u003ccode\u003e@​octokit/plugin-retry\u003c/code\u003e, \u003ca\nhref\u003d\"https://github.com/typescript-eslint\"\u003e\u003ccode\u003e@​typescript-eslint\u003c/code\u003e\u003c/a\u003e)\nby \u003ca href\u003d\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1335\"\u003eactions/stale#1335\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/shamoon\"\u003e\u003ccode\u003e@​shamoon\u003c/code\u003e\u003c/a\u003e made\ntheir first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1311\"\u003eactions/stale#1311\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/actions/stale/compare/v10...v10.3.0\"\u003ehttps://github.com/actions/stale/compare/v10...v10.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev10.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix checking state cache (fix \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/issues/1136\"\u003e#1136\u003c/a\u003e)\nand switch to Octokit helper methods by \u003ca\nhref\u003d\"https://github.com/itchyny\"\u003e\u003ccode\u003e@​itchyny\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1152\"\u003eactions/stale#1152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency Updates\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade js-yaml from 4.1.0 to 4.1.1 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1304\"\u003eactions/stale#1304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade lodash from 4.17.21 to 4.17.23 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1313\"\u003eactions/stale#1313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade actions/cache from 4.0.3 to 5.0.2 and actions/github from\n5.1.1 to 7.0.0 by \u003ca\nhref\u003d\"https://github.com/chiranjib-swain\"\u003e\u003ccode\u003e@​chiranjib-swain\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1312\"\u003eactions/stale#1312\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/itchyny\"\u003e\u003ccode\u003e@​itchyny\u003c/code\u003e\u003c/a\u003e made\ntheir first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1152\"\u003eactions/stale#1152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/actions/stale/compare/v10...v10.2.0\"\u003ehttps://github.com/actions/stale/compare/v10...v10.2.0\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/actions/stale/blob/main/CHANGELOG.md\"\u003eactions/stale\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch1\u003e[10.1.0]\u003c/h1\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd only-issue-types option to filter issues by type by \u003ca\nhref\u003d\"https://github.com/Bibo-Joshi\"\u003e\u003ccode\u003e@​Bibo-Joshi\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1255\"\u003eactions/stale#1255\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e[10.0.0]\u003c/h1\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade to node 24 by \u003ca\nhref\u003d\"https://github.com/salmanmkc\"\u003e\u003ccode\u003e@​salmanmkc\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1279\"\u003eactions/stale#1279\u003c/a\u003e\nMake sure your runner is on version v2.327.1 or later to ensure\ncompatibility with this release. \u003ca\nhref\u003d\"https://github.com/actions/runner/releases/tag/v2.327.1\"\u003eRelease\nNotes\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEnhancement\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIntroducing sort-by option by \u003ca\nhref\u003d\"https://github.com/suyashgaonkar\"\u003e\u003ccode\u003e@​suyashgaonkar\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1254\"\u003eactions/stale#1254\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependency Upgrades\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade actions/publish-immutable-action from 0.0.3 to 0.0.4 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1186\"\u003eactions/stale#1186\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade undici from 5.28.4 to 5.28.5 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1201\"\u003eactions/stale#1201\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003e@​action/cache\u003c/code\u003e from 4.0.0 to 4.0.2 by \u003ca\nhref\u003d\"https://github.com/aparnajyothi-y\"\u003e\u003ccode\u003e@​aparnajyothi-y\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1226\"\u003eactions/stale#1226\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003e@​action/cache\u003c/code\u003e from 4.0.2 to 4.0.3 by \u003ca\nhref\u003d\"https://github.com/suyashgaonkar\"\u003e\u003ccode\u003e@​suyashgaonkar\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1233\"\u003eactions/stale#1233\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade undici from 5.28.5 to 5.29.0 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1251\"\u003eactions/stale#1251\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade form-data to bring in fix for critical vulnerability by \u003ca\nhref\u003d\"https://github.com/gowridurgad\"\u003e\u003ccode\u003e@​gowridurgad\u003c/code\u003e\u003c/a\u003e in\n\u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1277\"\u003eactions/stale#1277\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChangelog update for recent releases by \u003ca\nhref\u003d\"https://github.com/suyashgaonkar\"\u003e\u003ccode\u003e@​suyashgaonkar\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1224\"\u003eactions/stale#1224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePermissions update in Readme by \u003ca\nhref\u003d\"https://github.com/ghadimir\"\u003e\u003ccode\u003e@​ghadimir\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1248\"\u003eactions/stale#1248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e[9.1.0]\u003c/h1\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumentation update by \u003ca\nhref\u003d\"https://github.com/Marukome0743\"\u003e\u003ccode\u003e@​Marukome0743\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1116\"\u003eactions/stale#1116\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd workflow file for publishing releases to immutable action\npackage by \u003ca\nhref\u003d\"https://github.com/Jcambass\"\u003e\u003ccode\u003e@​Jcambass\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1179\"\u003eactions/stale#1179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate undici from 5.28.2 to 5.28.4 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1150\"\u003eactions/stale#1150\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate actions/checkout from 3 to 4 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1091\"\u003eactions/stale#1091\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate actions/publish-action from 0.2.2 to 0.3.0 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1147\"\u003eactions/stale#1147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate ts-jest from 29.1.1 to 29.2.5 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1175\"\u003eactions/stale#1175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003e@​actions/core\u003c/code\u003e from 1.10.1 to 1.11.1 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1191\"\u003eactions/stale#1191\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003e@​types/jest\u003c/code\u003e from 29.5.11 to 29.5.14 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1193\"\u003eactions/stale#1193\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003e@​actions/cache\u003c/code\u003e from 3.2.2 to 4.0.0 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/stale/pull/1194\"\u003eactions/stale#1194\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e[9.0.0]\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAction is now stateful: If the action ends because of \u003ca\nhref\u003d\"https://github.com/actions/stale#operations-per-run\"\u003eoperations-per-run\u003c/a\u003e\nthen the next run will start from the first unprocessed issue skipping\nthe issues processed during the previous run(s). The state is reset when\nall the issues are processed. This should be considered for scheduling\nworkflow runs.\u003c/li\u003e\n\u003cli\u003eVersion 9 of this action updated the runtime to Node.js 20. All\nscripts are now run with Node.js 20 instead of Node.js 16 and are\naffected by any breaking changes between Node.js 16 and 20.\u003c/li\u003e\n\u003c/ol\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/stale/commit/4391f3da665fdf50b6810c1a66712fb9ba21aa93\"\u003e\u003ccode\u003e4391f3d\u003c/code\u003e\u003c/a\u003e\nFix 24 high severity vulnerabilities by overriding brace-expansion to\n5.0.8 (...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/stale/commit/eaf9131fae5eafd0c31a64ebe3a2e183266fec48\"\u003e\u003ccode\u003eeaf9131\u003c/code\u003e\u003c/a\u003e\nrefactor: update imports to use ES module syntax and improve test\nstructure (...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/actions/stale/compare/v10...v11\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dactions/stale\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d10\u0026new-version\u003d11)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "bbca8c76b77561bc5238e5e2bc1ddeafcaa3f830",
      "tree": "55bceb8acd5bd0f23921ee3f1bf6a2fa51973624",
      "parents": [
        "c1e5943327482fe7190febfbfba78cf9d23bce28"
      ],
      "author": {
        "name": "Lei Wang",
        "email": "wanglei860213@gmail.com",
        "time": "Tue Jul 28 11:08:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 11:08:55 2026 +0800"
      },
      "message": "[AURON #2432] Vendor third-party dependencies via setup-vendors.sh with patch series (#2433)\n\nReplace direct git/rev dependencies for datafusion, arrow-rs, orc-rust,\nand serde_json with a vendor+patch approach:\n\n- Add dev/vendors/setup-vendors.sh to clone upstream repos at pinned\ntags and apply local patch series\n- Add patch files under\ndev/vendors/patches/{datafusion,arrow-rs,orc-rust,serde_json}/\n- Update Cargo.toml: use relative path patches to vendored packages,\nexclude vendor workspaces from the main workspace\n- Update .gitignore to ignore dev/vendors/packages/\n- Update .rat-excludes for dev/vendors/**\n- Call setup-vendors.sh all from build-native.sh before cargo build\n\n# Which issue does this PR close?\n\nCloses #2432 \n\n# Rationale for this change\n\n# What changes are included in this PR?\n\n# Are there any user-facing changes?\nNo.\n\n# How was this patch tested?\nVia github CI.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [*] Yes\n- [ ] No\n\nIf yes, include: `Generated-by: GLM-5.2`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nCo-authored-by: diliulou \u003cwanglei05@kuaishou.com\u003e"
    },
    {
      "commit": "c1e5943327482fe7190febfbfba78cf9d23bce28",
      "tree": "84a43f0b6268def34d3c743871562cb5bcc86036",
      "parents": [
        "858dc6aef2fb72bc0aa19ab092ea0b1eafc7f64f"
      ],
      "author": {
        "name": "Weiqing Yang",
        "email": "yangweiqing001@gmail.com",
        "time": "Mon Jul 27 05:48:46 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 20:48:46 2026 +0800"
      },
      "message": "[AURON #2329] Test and document multi-consumer source-Calc fan-out safety (#2415)\n\n# Which issue does this PR close?\n\nCloses #2329\n\n# Rationale for this change\n\n#1865 moved Calc-source fusion to a graph-level pass\n(`AuronOperatorFusionProcessor`) that counts each source\u0027s consumers and\nfuses only sole-consumer sources. A source feeding more than one Calc\n(for example `UNION ALL` over one table under Flink\u0027s default source\nreuse) is declined at the sole-consumer gate, and each Calc runs as a\nstandalone native operator over the shared source stream.\n\nThat multi-consumer path is correct but was under-tested and\nunder-documented. The existing shared-source test only covered the\ndefault config, where object reuse is effectively off so Flink\ndeep-copies each row to heap per consumer. The interesting case is\nobject reuse ON: Flink then hands the same `AuronColumnarRowData`\nreference to both Calc consumers with no defensive copy in between,\nwhich is exactly where a fan-out aliasing or use-after-free bug would\nsurface. Nothing pinned that. And the reason a multi-consumer source\ndeclines fusion was only a one-line comment.\n\n# What changes are included in this PR?\n\nA new end-to-end test\n`testSharedSourceUnionAllFanOutSafeWithObjectReuse` in\n`AuronKafkaSourceMergeITCase`: the same shared-source `UNION ALL` as the\nexisting test, but with object reuse enabled. It asserts the row set\nstays correct and both Calcs remain standalone operators (the\nmulti-consumer source is not fused).\n\nAn expanded doc-comment at the sole-consumer gate in\n`AuronOperatorFusionProcessor` explaining why a multi-consumer source is\nnot fused (the native source runtime is single-plan and single-output,\nso N per-consumer plans cannot share one source) and why declining is\nsafe (each consumer runs a standalone native Calc that copies every\ncolumn out of the shared columnar view).\n\nNo production logic changes.\n\n# Are there any user-facing changes?\n\nNo.\n\n# How was this patch tested?\n\n`./build/mvn test -Pspark-3.5 -Pscala-2.12 -Pflink-1.18 -pl\nauron-flink-extension/auron-flink-planner -am\n-Dtest\u003dAuronKafkaSourceMergeITCase` with the native library built. All 4\ntests pass.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [x] Yes （Claude Code (Opus 4.8)）\n- [ ] No"
    },
    {
      "commit": "858dc6aef2fb72bc0aa19ab092ea0b1eafc7f64f",
      "tree": "3cc8d70e456e30bfeccdd4fd1df4e43a3a3e024d",
      "parents": [
        "fe9a2ff9a15bf951427a9dcdeb8bb55644ce476e"
      ],
      "author": {
        "name": "slfan1989",
        "email": "55643692+slfan1989@users.noreply.github.com",
        "time": "Sun Jul 26 13:18:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 13:18:26 2026 +0800"
      },
      "message": "[AURON #2407] [BUILD] Fix the invalid Spark 4.1 Docker build example. (#2408)\n\n### Which issue does this PR close?\n\nCloses #2407\n\n### Rationale for this change\n\nThe Docker build example generated by `auron-build.sh --help` used Spark\n4.1 together with the `centos7` image.\n\nThe `centos7` image only provides JDK 8, while Spark 4.x requires JDK 17\nor later. The example also enabled Iceberg and Hudi for Spark versions\nwith which those integrations are not compatible.\n\nAs a result, users following the documented example encountered Java\nversion or integration compatibility errors before completing the build.\n\n### What changes are included in this PR?\n\n- Replace the single Docker build example with explicit examples for\n  Spark 3.5, Spark 4.0, and Spark 4.1.\n- Use the `rockylinux8` image for these examples because it supports the\n  JDK selection required by Spark 4.x.\n- Use Scala 2.12 for Spark 3.5 and Scala 2.13 for Spark 4.x.\n- Include only compatible third-party integrations in each example:\n  - Spark 3.5 includes Iceberg 1.10.1 and Hudi 0.15.\n  - Spark 4.0 includes Iceberg 1.10.1 but excludes Hudi.\n  - Spark 4.1 excludes both Iceberg and Hudi.\n- Add a build compatibility matrix to `CONTRIBUTING.md`.\n- Document the Spark, Scala, JDK, Docker image, Flink, Celeborn,\n  Uniffle, Paimon, Iceberg, and Hudi combinations.\n- Update the existing Docker build example in `CONTRIBUTING.md` to use\n  `rockylinux8`.\n- Document that the compatibility matrix and Shell help examples should\n  be updated together.\n\n### Are there any user-facing changes?\n\nYes.\n\nThe help output now provides separate Docker build examples for Spark\n3.5, Spark 4.0, and Spark 4.1. Each example uses an appropriate Scala,\nJDK, Docker image, and third-party integration combination.\n\nContributors can also consult the compatibility matrix in\n`CONTRIBUTING.md` before selecting build arguments.\n\n### How was this patch tested?\n\n\u003e ./auron-build.sh --help\n\n```\nUsage: ./auron-build.sh [OPTIONS] \u003cmaven build options\u003e\nBuild Auron project with specified Maven profiles\n\nOptions:\n  --pre                    Activate pre-release profile\n  --release                Activate release profile\n  --clean \u003ctrue|false\u003e     Clean before build (default: true)\n  --skiptests \u003ctrue|false\u003e Skip unit tests (default: true)\n  --sparktests \u003ctrue|false\u003e Run spark tests (default: false)\n  --docker \u003ctrue|false\u003e    Build in Docker environment (default: false)\n  --threads \u003cN|NC\u003e         Maven build threads (e.g. 1, 4, 1C). Default: local unset, docker 8\n  --image \u003cNAME\u003e           Docker image to use (e.g. centos7,ubuntu24,rockylinux8,debian11,azurelinux3, default: centos7)\n  --sparkver \u003cVERSION\u003e     Specify Spark version (e.g. 3.0,3.1,3.2,3.3,3.4,3.5,4.0,4.1)\n  --flinkver \u003cVERSION\u003e     Specify Flink version (e.g. 1.18)\n  --scalaver \u003cVERSION\u003e     Specify Scala version (e.g. 2.12,2.13)\n  --celeborn \u003cVERSION\u003e     Specify Celeborn version (e.g. 0.5,0.6)\n  --uniffle \u003cVERSION\u003e      Specify Uniffle version (e.g. 0.10)\n  --paimon \u003cVERSION\u003e       Specify Paimon version (e.g. 1.2)\n  --iceberg \u003cVERSION\u003e      Specify Iceberg version (e.g. 1.10.1)\n  --hudi \u003cVERSION\u003e         Specify Hudi version (e.g. 0.15)\n  -h, --help               Show this help message\n\nExamples:\n  ./auron-build.sh --pre --sparkver 4.1 --scalaver 2.13 -DskipBuildNative\n  # Spark 3.5 with all supported third-party integrations\n  ./auron-build.sh --docker true --image rockylinux8 --clean true --skiptests true --release --sparkver 3.5 --scalaver 2.12 --flinkver 1.18 --celeborn 0.6 --uniffle 0.10 --paimon 1.2 --iceberg 1.10.1 --hudi 0.15\n  # Spark 4.0 (Hudi is not supported)\n  ./auron-build.sh --docker true --image rockylinux8 --clean true --skiptests true --release --sparkver 4.0 --scalaver 2.13 --flinkver 1.18 --celeborn 0.6 --uniffle 0.10 --paimon 1.2 --iceberg 1.10.1\n  # Spark 4.1 (Iceberg and Hudi are not supported)\n  ./auron-build.sh --docker true --image rockylinux8 --clean true --skiptests true --release --sparkver 4.1 --scalaver 2.13 --flinkver 1.18 --celeborn 0.6 --uniffle 0.10 --paimon 1.2\n```\n\n### Was this patch authored or co-authored using generative AI tooling?\n- [ ] Yes\n- [x] No\n\nIf yes, include: `Generated-by: \u003ctool name and version\u003e`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nSigned-off-by: slfan1989 \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "fe9a2ff9a15bf951427a9dcdeb8bb55644ce476e",
      "tree": "6c60336d31867753ff57a663a6c0e827bac5ca01",
      "parents": [
        "14a9c6d0f04298d436e7836e36efc0b13ee3ce75"
      ],
      "author": {
        "name": "Ming Wei",
        "email": "weimingdiit@gmail.com",
        "time": "Sun Jul 26 13:06:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 13:06:28 2026 +0800"
      },
      "message": "[AURON #2425] Support Iceberg STARTS_WITH pruning in native scan (#2426)\n\n**Which issue does this PR close?**\nCloses #2425 \n\n**Rationale for this change**\nAuron Iceberg native scan already collects Iceberg residual filters and\nconverts supported filters into native scan pruning predicates.\n\nIceberg can produce `STARTS_WITH` filters for prefix string predicates,\nsuch as `LIKE \u0027a%\u0027`, but Auron currently does not convert this Iceberg\noperation. As a result, the query can still use a native post-scan\nfilter, but the starts-with predicate is not used for native scan\npruning.\n\n**What changes are included in this PR?**\nAdds Iceberg `STARTS_WITH` conversion for string columns in\n`IcebergScanSupport`.\nReuses the existing Spark `StartsWith` native pruning conversion.\nKeeps other string and binary pruning behavior unchanged.\nAdds an Iceberg integration test for prefix LIKE pruning.\n\n**Are there any user-facing changes?**\nNo user-facing API changes. More Iceberg prefix string filters can now\nbe passed into native scan pruning.\n\n**How was this patch tested?**\nUT.\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: weimingdiit \u003cweimingdiit@gmail.com\u003e"
    },
    {
      "commit": "14a9c6d0f04298d436e7836e36efc0b13ee3ce75",
      "tree": "fea8350993eebd745fd82e3ffae1d5fda163b25d",
      "parents": [
        "b448d5eb7d96da0434478188ffa5ab18b459ce00"
      ],
      "author": {
        "name": "Ming Wei",
        "email": "weimingdiit@gmail.com",
        "time": "Sun Jul 26 13:05:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 13:05:33 2026 +0800"
      },
      "message": "[AURON #2427] Report fallback reason for unsupported Iceberg scan data types (#2428)\n\n# Which issue does this PR close?\n\nCloses #2427\n\n# Rationale for this change\nAuron Iceberg native scan can fall back when the Iceberg scan schema\ncontains data types that are not supported by native scan conversion.\n\nBefore this change, unsupported metadata columns already had a clear\nfallback reason, but unsupported data columns did not. This made it\nharder to diagnose why an Iceberg scan stayed on Spark execution.\n\n\n# What changes are included in this PR?\nAdds an Iceberg fallback reason for unsupported scan schema data types.\nReports unsupported field names and Spark SQL types in the never-convert\nreason.\nExtends the existing unsupported decimal Iceberg scan test to check the\nfallback reason.\n\n\n# Are there any user-facing changes?\nNo API changes. Users may see a clearer fallback reason when an Iceberg\nnative scan is skipped because of unsupported data types.\n\n\n\n# How was this patch tested?\nUT.\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [ ] Yes\n- [x] No\n\nCo-authored-by: Shilun Fan \u003cslfan1989@apache.org\u003e\nSigned-off-by: weimingdiit \u003cweimingdiit@gmail.com\u003e"
    },
    {
      "commit": "b448d5eb7d96da0434478188ffa5ab18b459ce00",
      "tree": "16bfd7242171035be38b44f64797f472a219620e",
      "parents": [
        "003f0d955c07cd42168bf2112a7e684b0a1b68e7"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 24 15:46:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 15:46:45 2026 +0800"
      },
      "message": "Bump base64 from 0.22.1 to 0.23.0 (#2420)"
    },
    {
      "commit": "003f0d955c07cd42168bf2112a7e684b0a1b68e7",
      "tree": "d7bc03e5afbb475d30fc864d7ec3f3998d70a4a1",
      "parents": [
        "a1e48f3fa9b86c406d643944f2ca3fb16ae2721b"
      ],
      "author": {
        "name": "Rob Reeves",
        "email": "robertpreeves@gmail.com",
        "time": "Thu Jul 23 14:27:57 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 14:27:57 2026 -0700"
      },
      "message": "[AURON #1891] Implement randn() function (#1938)\n\n\u003c!--\n- Start the PR title with the related issue ID, e.g. \u0027[AURON #XXXX]\nShort summary...\u0027.\n--\u003e\n# Which issue does this PR close?\n\nCloses #1891\n\n# Rationale for this change\n\nThis improves function coverage in Auron by creating a native randn\nimplementation.\n\n# What changes are included in this PR?\n\nAdds a native randn implementation.\n\n# Are there any user-facing changes?\n\nYes, it adds the randn function.\n\n# How was this patch tested?\nAdded unit tests and manually tested in spark-shell.\n\n```scala\nimport org.apache.spark.sql.functions.randn\n\nval df \u003d spark.range(5)\nval outputPath \u003d \"/tmp/spark_range_output.parquet\"\ndf.write.mode(\"overwrite\").parquet(outputPath)\n\nval readDf \u003d spark.read.parquet(outputPath)\nval resultDf \u003d readDf.withColumn(\"random_normal\", randn(18))\nresultDf.collect\n```\nOutput:\n```\n26/01/30 15:41:22 WARN NativeHelper: memory total: 1408.0 MiB, onheap: 1024.0 MiB, offheap: 384.0 MiB\n26/01/30 15:41:24 WARN AuronCallNativeWrapper: Start executing native plan\n26/01/30 15:41:24 WARN AuronCallNativeWrapper: Start executing native plan\n26/01/30 15:41:24 WARN AuronCallNativeWrapper: Start executing native plan\n26/01/30 15:41:24 WARN AuronCallNativeWrapper: Start executing native plan\n26/01/30 15:41:24 WARN AuronCallNativeWrapper: Start executing native plan\n26/01/30 15:41:24 WARN AuronCallNativeWrapper: Start executing native plan\n------ initializing auron native environment ------\ninitializing logging with level: info\n2026-01-30 15:41:24.368 (+0.000s) [INFO] [auron::exec:73] (stage: 0, partition: 0, tid: 0) - initializing JNI bridge\n2026-01-30 15:41:24.369 (+0.001s) [INFO] [auron_jni_bridge::jni_bridge:473] (stage: 0, partition: 0, tid: 0) - Initializing JavaClasses...\n2026-01-30 15:41:24.375 (+0.007s) [INFO] [auron_jni_bridge::jni_bridge:529] (stage: 0, partition: 0, tid: 0) - Initializing JavaClasses finished\n2026-01-30 15:41:24.375 (+0.007s) [INFO] [auron::exec:77] (stage: 0, partition: 0, tid: 0) - initializing datafusion session\n2026-01-30 15:41:24.375 (+0.007s) [INFO] [auron_memmgr:48] (stage: 0, partition: 0, tid: 0) - mem manager initialized with total memory: 230.4 MiB\n2026-01-30 15:41:24.385 (+0.017s) [INFO] [auron::rt:146] (stage: 2, partition: 1, tid: 12) - start executing plan:\nProjectExec [#3@0 AS #3, Randn(seed\u003d18, partition\u003d1) AS #5], schema\u003d[#3:Int64;N, #5:Float64]\n  RenameColumnsExec: [\"#3\"], schema\u003d[#3:Int64;N]\n    ParquetExec: limit\u003dNone, file_group\u003d[FileGroup { files: [], statistics: None }, FileGroup { files: [PartitionedFile { object_meta: ObjectMeta { location: Path { raw: \"ZmlsZTovLy90bXAvc3BhcmtfcmFuZ2Vfb3V0cHV0LnBhcnF1ZXQvcGFydC0wMDAwMS04ZTkwNmRiYS0zZDg3LTRkZWMtYjM0NC1hYjdiZWUyODEwZWQtYzAwMC5zbmFwcHkucGFycXVldA\" }, last_modified: 1970-01-01T00:00:00Z, size: 472, e_tag: None, version: None }, partition_values: [], range: Some(FileRange { start: 0, end: 472 }), statistics: None, extensions: None, metadata_size_hint: None }], statistics: Some(Statistics { num_rows: Exact(0), total_byte_size: Exact(0), column_statistics: [ColumnStatistics { null_count: Absent, max_value: Absent, min_value: Absent, sum_value: Absent, distinct_count: Absent }] }) }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }], predicate\u003dSome(Literal { value: Boolean(true), field: Field { name: \"lit\", data_type: Boolean, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} } }), schema\u003d[id:Int64;N]\n\n2026-01-30 15:41:24.385 (+0.017s) [INFO] [auron::rt:146] (stage: 2, partition: 5, tid: 16) - start executing plan:\nProjectExec [#3@0 AS #3, Randn(seed\u003d18, partition\u003d5) AS #5], schema\u003d[#3:Int64;N, #5:Float64]\n  RenameColumnsExec: [\"#3\"], schema\u003d[#3:Int64;N]\n    ParquetExec: limit\u003dNone, file_group\u003d[FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [PartitionedFile { object_meta: ObjectMeta { location: Path { raw: \"ZmlsZTovLy90bXAvc3BhcmtfcmFuZ2Vfb3V0cHV0LnBhcnF1ZXQvcGFydC0wMDAwMC04ZTkwNmRiYS0zZDg3LTRkZWMtYjM0NC1hYjdiZWUyODEwZWQtYzAwMC5zbmFwcHkucGFycXVldA\" }, last_modified: 1970-01-01T00:00:00Z, size: 297, e_tag: None, version: None }, partition_values: [], range: Some(FileRange { start: 0, end: 297 }), statistics: None, extensions: None, metadata_size_hint: None }], statistics: Some(Statistics { num_rows: Exact(0), total_byte_size: Exact(0), column_statistics: [ColumnStatistics { null_count: Absent, max_value: Absent, min_value: Absent, sum_value: Absent, distinct_count: Absent }] }) }], predicate\u003dSome(Literal { value: Boolean(true), field: Field { name: \"lit\", data_type: Boolean, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} } }), schema\u003d[id:Int64;N]\n\n2026-01-30 15:41:24.385 (+0.017s) [INFO] [auron::rt:146] (stage: 2, partition: 2, tid: 13) - start executing plan:\nProjectExec [#3@0 AS #3, Randn(seed\u003d18, partition\u003d2) AS #5], schema\u003d[#3:Int64;N, #5:Float64]\n  RenameColumnsExec: [\"#3\"], schema\u003d[#3:Int64;N]\n    ParquetExec: limit\u003dNone, file_group\u003d[FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [PartitionedFile { object_meta: ObjectMeta { location: Path { raw: \"ZmlsZTovLy90bXAvc3BhcmtfcmFuZ2Vfb3V0cHV0LnBhcnF1ZXQvcGFydC0wMDAwMy04ZTkwNmRiYS0zZDg3LTRkZWMtYjM0NC1hYjdiZWUyODEwZWQtYzAwMC5zbmFwcHkucGFycXVldA\" }, last_modified: 1970-01-01T00:00:00Z, size: 472, e_tag: None, version: None }, partition_values: [], range: Some(FileRange { start: 0, end: 472 }), statistics: None, extensions: None, metadata_size_hint: None }], statistics: Some(Statistics { num_rows: Exact(0), total_byte_size: Exact(0), column_statistics: [ColumnStatistics { null_count: Absent, max_value: Absent, min_value: Absent, sum_value: Absent, distinct_count: Absent }] }) }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }], predicate\u003dSome(Literal { value: Boolean(true), field: Field { name: \"lit\", data_type: Boolean, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} } }), schema\u003d[id:Int64;N]\n\n2026-01-30 15:41:24.385 (+0.017s) [INFO] [auron::rt:146] (stage: 2, partition: 4, tid: 15) - start executing plan:\nProjectExec [#3@0 AS #3, Randn(seed\u003d18, partition\u003d4) AS #5], schema\u003d[#3:Int64;N, #5:Float64]\n  RenameColumnsExec: [\"#3\"], schema\u003d[#3:Int64;N]\n    ParquetExec: limit\u003dNone, file_group\u003d[FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [PartitionedFile { object_meta: ObjectMeta { location: Path { raw: \"ZmlsZTovLy90bXAvc3BhcmtfcmFuZ2Vfb3V0cHV0LnBhcnF1ZXQvcGFydC0wMDAwNS04ZTkwNmRiYS0zZDg3LTRkZWMtYjM0NC1hYjdiZWUyODEwZWQtYzAwMC5zbmFwcHkucGFycXVldA\" }, last_modified: 1970-01-01T00:00:00Z, size: 471, e_tag: None, version: None }, partition_values: [], range: Some(FileRange { start: 0, end: 471 }), statistics: None, extensions: None, metadata_size_hint: None }], statistics: Some(Statistics { num_rows: Exact(0), total_byte_size: Exact(0), column_statistics: [ColumnStatistics { null_count: Absent, max_value: Absent, min_value: Absent, sum_value: Absent, distinct_count: Absent }] }) }, FileGroup { files: [], statistics: None }], predicate\u003dSome(Literal { value: Boolean(true), field: Field { name: \"lit\", data_type: Boolean, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} } }), schema\u003d[id:Int64;N]\n\n2026-01-30 15:41:24.385 (+0.017s) [INFO] [auron::rt:146] (stage: 2, partition: 3, tid: 14) - start executing plan:\nProjectExec [#3@0 AS #3, Randn(seed\u003d18, partition\u003d3) AS #5], schema\u003d[#3:Int64;N, #5:Float64]\n  RenameColumnsExec: [\"#3\"], schema\u003d[#3:Int64;N]\n    ParquetExec: limit\u003dNone, file_group\u003d[FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [PartitionedFile { object_meta: ObjectMeta { location: Path { raw: \"ZmlsZTovLy90bXAvc3BhcmtfcmFuZ2Vfb3V0cHV0LnBhcnF1ZXQvcGFydC0wMDAwOS04ZTkwNmRiYS0zZDg3LTRkZWMtYjM0NC1hYjdiZWUyODEwZWQtYzAwMC5zbmFwcHkucGFycXVldA\" }, last_modified: 1970-01-01T00:00:00Z, size: 472, e_tag: None, version: None }, partition_values: [], range: Some(FileRange { start: 0, end: 472 }), statistics: None, extensions: None, metadata_size_hint: None }], statistics: Some(Statistics { num_rows: Exact(0), total_byte_size: Exact(0), column_statistics: [ColumnStatistics { null_count: Absent, max_value: Absent, min_value: Absent, sum_value: Absent, distinct_count: Absent }] }) }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }], predicate\u003dSome(Literal { value: Boolean(true), field: Field { name: \"lit\", data_type: Boolean, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} } }), schema\u003d[id:Int64;N]\n\n2026-01-30 15:41:24.385 (+0.017s) [INFO] [auron::rt:146] (stage: 2, partition: 0, tid: 11) - start executing plan:\nProjectExec [#3@0 AS #3, Randn(seed\u003d18, partition\u003d0) AS #5], schema\u003d[#3:Int64;N, #5:Float64]\n  RenameColumnsExec: [\"#3\"], schema\u003d[#3:Int64;N]\n    ParquetExec: limit\u003dNone, file_group\u003d[FileGroup { files: [PartitionedFile { object_meta: ObjectMeta { location: Path { raw: \"ZmlsZTovLy90bXAvc3BhcmtfcmFuZ2Vfb3V0cHV0LnBhcnF1ZXQvcGFydC0wMDAwNy04ZTkwNmRiYS0zZDg3LTRkZWMtYjM0NC1hYjdiZWUyODEwZWQtYzAwMC5zbmFwcHkucGFycXVldA\" }, last_modified: 1970-01-01T00:00:00Z, size: 472, e_tag: None, version: None }, partition_values: [], range: Some(FileRange { start: 0, end: 472 }), statistics: None, extensions: None, metadata_size_hint: None }], statistics: Some(Statistics { num_rows: Exact(0), total_byte_size: Exact(0), column_statistics: [ColumnStatistics { null_count: Absent, max_value: Absent, min_value: Absent, sum_value: Absent, distinct_count: Absent }] }) }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }, FileGroup { files: [], statistics: None }], predicate\u003dSome(Literal { value: Boolean(true), field: Field { name: \"lit\", data_type: Boolean, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} } }), schema\u003d[id:Int64;N]\n\n2026-01-30 15:41:24.394 (+0.026s) [INFO] [datafusion_datasource_parquet::opener:421] (stage: 2, partition: 4, tid: 15) - executing parquet scan with adaptive batch size: 10000\n2026-01-30 15:41:24.394 (+0.026s) [INFO] [datafusion_datasource_parquet::opener:421] (stage: 2, partition: 0, tid: 11) - executing parquet scan with adaptive batch size: 10000\n2026-01-30 15:41:24.394 (+0.026s) [INFO] [datafusion_datasource_parquet::opener:421] (stage: 2, partition: 3, tid: 14) - executing parquet scan with adaptive batch size: 10000\n2026-01-30 15:41:24.394 (+0.026s) [INFO] [datafusion_datasource_parquet::opener:421] (stage: 2, partition: 1, tid: 12) - executing parquet scan with adaptive batch size: 10000\n2026-01-30 15:41:24.394 (+0.026s) [INFO] [datafusion_datasource_parquet::opener:421] (stage: 2, partition: 2, tid: 13) - executing parquet scan with adaptive batch size: 10000\n2026-01-30 15:41:24.394 (+0.026s) [INFO] [datafusion_datasource_parquet::opener:421] (stage: 2, partition: 5, tid: 16) - executing parquet scan with adaptive batch size: 1\n2026-01-30 15:41:24.488 (+0.120s) [INFO] [auron::rt:183] (stage: 2, partition: 5, tid: 16) - task finished\n2026-01-30 15:41:24.488 (+0.120s) [INFO] [auron::rt:183] (stage: 2, partition: 0, tid: 11) - task finished\n2026-01-30 15:41:24.488 (+0.120s) [INFO] [auron::rt:183] (stage: 2, partition: 4, tid: 15) - task finished\n2026-01-30 15:41:24.488 (+0.120s) [INFO] [auron::rt:183] (stage: 2, partition: 3, tid: 14) - task finished\n2026-01-30 15:41:24.488 (+0.120s) [INFO] [auron::rt:266] (stage: 0, partition: 0, tid: 0) - (partition\u003d5) native execution finalizing\n2026-01-30 15:41:24.488 (+0.120s) [INFO] [auron::rt:183] (stage: 2, partition: 2, tid: 13) - task finished\n2026-01-30 15:41:24.488 (+0.120s) [INFO] [auron::rt:183] (stage: 2, partition: 1, tid: 12) - task finished\n2026-01-30 15:41:24.488 (+0.120s) [INFO] [auron::rt:274] (stage: 0, partition: 0, tid: 0) - (partition\u003d5) native execution finalized\n2026-01-30 15:41:24.511 (+0.143s) [INFO] [auron::rt:266] (stage: 0, partition: 0, tid: 0) - (partition\u003d3) native execution finalizing\n2026-01-30 15:41:24.511 (+0.143s) [INFO] [auron::rt:266] (stage: 0, partition: 0, tid: 0) - (partition\u003d4) native execution finalizing\n2026-01-30 15:41:24.511 (+0.143s) [INFO] [auron::rt:266] (stage: 0, partition: 0, tid: 0) - (partition\u003d0) native execution finalizing\n2026-01-30 15:41:24.511 (+0.143s) [INFO] [auron::rt:266] (stage: 0, partition: 0, tid: 0) - (partition\u003d2) native execution finalizing\n2026-01-30 15:41:24.511 (+0.143s) [INFO] [auron::rt:266] (stage: 0, partition: 0, tid: 0) - (partition\u003d1) native execution finalizing\n2026-01-30 15:41:24.512 (+0.144s) [INFO] [auron::rt:274] (stage: 0, partition: 0, tid: 0) - (partition\u003d0) native execution finalized\n2026-01-30 15:41:24.512 (+0.144s) [INFO] [auron::rt:274] (stage: 0, partition: 0, tid: 0) - (partition\u003d4) native execution finalized\n2026-01-30 15:41:24.512 (+0.144s) [INFO] [auron::rt:274] (stage: 0, partition: 0, tid: 0) - (partition\u003d1) native execution finalized\n2026-01-30 15:41:24.512 (+0.144s) [INFO] [auron::rt:274] (stage: 0, partition: 0, tid: 0) - (partition\u003d2) native execution finalized\n2026-01-30 15:41:24.512 (+0.144s) [INFO] [auron::rt:274] (stage: 0, partition: 0, tid: 0) - (partition\u003d3) native execution finalized\nimport org.apache.spark.sql.functions.randn\ndf: org.apache.spark.sql.Dataset[Long] \u003d [id: bigint]\noutputPath: String \u003d /tmp/spark_range_output.parquet\nreadDf: org.apache.spark.sql.DataFrame \u003d [id: bigint]\nresultDf: org.apache.spark.sql.DataFrame \u003d [id: bigint, random_normal: double]\nres0: Array[org.apache.spark.sql.Row] \u003d Array([3,1.4607292672705405], [0,-0.3268302897860617], [1,-0.09087682847007866], [4,-1.2271197538792842], [2,-0.546398027932835])\n```\n\n---------\n\nCo-authored-by: Claude Opus 4.5 \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\nCo-authored-by: Copilot \u003c223556219+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "a1e48f3fa9b86c406d643944f2ca3fb16ae2721b",
      "tree": "78748f363a4388417d47ba7b6c9a5c8ce10a5a9c",
      "parents": [
        "58d3404110d1a113ff2be853a45642385e60650e"
      ],
      "author": {
        "name": "cxzl25",
        "email": "3898450+cxzl25@users.noreply.github.com",
        "time": "Thu Jul 23 10:56:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 10:56:20 2026 +0800"
      },
      "message": "[AURON #2417] log rss write size metrics (#2418)\n\n# Which issue does this PR close?\n\nCloses #2417\n\n# Rationale for this change\n\nNow when shuffle is written, there is a shuffle size after log output\ncompression, but there is no output compression size when using rss.\n\n\nhttps://github.com/apache/auron/blob/2889b563139e6495495b61d0902e3f93f0ebe8bb/native-engine/datafusion-ext-plans/src/shuffle/buffered_data.rs#L156\n\n# What changes are included in this PR?\nOutput the compressed size when writing RSS.\n\n# Are there any user-facing changes?\nNo\n\n# How was this patch tested?\nProduction environment verification\n\n```\n2026-07-22 20:10:07.090 (+80.707s) [INFO] [datafusion_ext_plans::shuffle::buffered_data:196] (stage: 0, partition: 1694, tid: 0) - all buffered data drained to rss, pushed_compressed\u003d74.2 MiB, uncompressed_mem\u003d528.1 MiB\n2026-07-22 20:10:07.110 (+80.727s) [INFO] [datafusion_ext_plans::shuffle::buffered_data:196] (stage: 0, partition: 385, tid: 2) - all buffered data drained to rss, pushed_compressed\u003d81.3 MiB, uncompressed_mem\u003d531.6 MiB\n2026-07-22 20:10:09.505 (+83.122s) [INFO] [datafusion_ext_plans::shuffle::buffered_data:196] (stage: 0, partition: 3824, tid: 1) - all buffered data drained to rss, pushed_compressed\u003d80.0 MiB, uncompressed_mem\u003d528.4 MiB\n```\n\n\n# Was this patch authored or co-authored using generative AI tooling?\n- [ ] Yes\n- [ ] No"
    },
    {
      "commit": "58d3404110d1a113ff2be853a45642385e60650e",
      "tree": "d502be9f1c79398855bb0e43bf541ec519170a5d",
      "parents": [
        "2889b563139e6495495b61d0902e3f93f0ebe8bb"
      ],
      "author": {
        "name": "zhangmang",
        "email": "zhangmang1@163.com",
        "time": "Wed Jul 22 21:50:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 21:50:38 2026 +0800"
      },
      "message": "[AURON #2320] Fix PB deserialization bug \u0026 improve PB parsing performance (#2339)\n\n# Which issue does this PR close?\nCloses #2320 \n# Rationale for this change\n- Boolean type was not given a default value, causing incorrect data\nresults.\n- Complex nested PB structures can encounter parsing errors.\n# What changes are included in this PR?\n- Fix boolean type was not given a default value, causing incorrect data\nresults.\n- FIx complex nested PB structures can encounter parsing errors.\n- improve PB parsing performance\n# Are there any user-facing changes?\n- No\n# How was this patch tested?\n- No"
    },
    {
      "commit": "2889b563139e6495495b61d0902e3f93f0ebe8bb",
      "tree": "7f07a99a2d9c2b82283af34a69e5fae52e6ec80a",
      "parents": [
        "f419ad5cf80993dcf3fc64e6301f64230ca436ff"
      ],
      "author": {
        "name": "Weiqing Yang",
        "email": "yangweiqing001@gmail.com",
        "time": "Tue Jul 21 20:27:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 11:27:21 2026 +0800"
      },
      "message": "[AURON #2413] fix(ci): adapt labeler.yml to actions/labeler v7 (#2414)\n\n# Which issue does this PR close?\n\nCloses #2413.\n\n# Rationale for this change\n\n#2410 bumped `actions/labeler` from v6 to v7, which brought `js-yaml`\n`^5.1.0`. js-yaml 5.x enforces stricter indentation on multi-line flow\nsequences and rejects the current `.github/labeler.yml` with\n`YAMLException: deficient indentation (27:7)`, so the `triage` check now\nfails on PRs that run after that bump.\n\n# What changes are included in this PR?\n\nRewrite the glob lists in `.github/labeler.yml` from multi-line flow\nsequences (`[ ... ]`) to block sequences, for all 17 label entries. The\nlabel names and glob patterns are unchanged; only the YAML list style\nchanges.\n\nVerified with `js-yaml` 5.2.1 (the version labeler v7 resolves): the\ncurrent file throws `deficient indentation (27:7)`, and the updated file\nparses cleanly into the same 17 labels and 36 glob patterns.\n\n# Are there any user-facing changes?\n\nNo. This is a CI configuration fix.\n\n# How was this patch tested?\n\nLoaded both the old and new `.github/labeler.yml` with `js-yaml` 5.2.1.\nThe old file reproduces the CI error; the new file parses without error\nand yields identical label-to-glob mappings.\n\n# Note\n\nThe `triage` check on this PR is expected to fail until this is merged.\nThe labeler workflow runs on `pull_request_target` and reads\n`.github/labeler.yml` from the base branch (master), not from the PR, so\nit still sees the current file until the fix lands on master."
    },
    {
      "commit": "f419ad5cf80993dcf3fc64e6301f64230ca436ff",
      "tree": "41284ca8a290c111b3bfc61d6a33b8fb001c039b",
      "parents": [
        "7b204a54f935712c4d697d7c560a1e5c520e2a92"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 21 14:38:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 14:38:19 2026 +0800"
      },
      "message": "Bump tokio from 1.53.0 to 1.53.1 (#2412)"
    },
    {
      "commit": "7b204a54f935712c4d697d7c560a1e5c520e2a92",
      "tree": "4cc08d077039d3acfac175c01e07722c9a316aba",
      "parents": [
        "b30c2307909e2d75f7f011c3727ff4257ef39f72"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 21 14:38:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 14:38:10 2026 +0800"
      },
      "message": "Bump futures from 0.3.32 to 0.3.33 (#2411)"
    },
    {
      "commit": "b30c2307909e2d75f7f011c3727ff4257ef39f72",
      "tree": "138fe6da95edc65b6a60d1317fd6697500289768",
      "parents": [
        "01138f7b5116dc57bc50ca8a5d9ea2644483f341"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 21 14:37:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 14:37:27 2026 +0800"
      },
      "message": "Bump actions/labeler from 6 to 7 (#2410)"
    },
    {
      "commit": "01138f7b5116dc57bc50ca8a5d9ea2644483f341",
      "tree": "cb140366db99a361670504d83497cad9a9d9a11c",
      "parents": [
        "a4ea0d991ba982092f67f535288f41fb37b59e37"
      ],
      "author": {
        "name": "He Zhao",
        "email": "luoyedeyi@163.com",
        "time": "Tue Jul 21 11:23:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 11:23:53 2026 +0800"
      },
      "message": "[AURON #2372] Fix Docker build on ARM hosts (#2371)\n\n# Which issue does this PR close?\n\nCloses https://github.com/apache/auron/issues/2372\n\n# Rationale for this change\nDocker build mode needs a way to specify the Docker platform from\n`auron-build.sh`, especially on ARM hosts where release builds may need\nto run as `linux/amd64`.\n\n# What changes are included in this PR?\nas title\n# Are there any user-facing changes?\nno\n# How was this patch tested?\nrebuild auron with docker mode"
    },
    {
      "commit": "a4ea0d991ba982092f67f535288f41fb37b59e37",
      "tree": "fb6875dbca812476cb32b4a875e515c0f09df096",
      "parents": [
        "d749ef962be92e0d1e135106742dabe42e477a89"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 20 23:34:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 23:34:06 2026 +0800"
      },
      "message": "Bump tokio from 1.52.3 to 1.53.0 (#2402)\n\nBumps [tokio](https://github.com/tokio-rs/tokio) from 1.52.3 to 1.53.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/releases\"\u003etokio\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eTokio v1.53.0\u003c/h2\u003e\n\u003ch1\u003e1.53.0 (July 17th, 2026)\u003c/h1\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efs: implement \u003ccode\u003eFrom\u0026lt;OwnedFd\u0026gt;\u003c/code\u003e and\n\u003ccode\u003eFrom\u0026lt;OwnedHandle\u0026gt;\u003c/code\u003e for \u003ccode\u003eFile\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8266\"\u003e#8266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emetrics: add task schedule latency metric (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/7986\"\u003e#7986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003enet: add \u003ccode\u003eSocketAddr\u003c/code\u003e methods to Unix sockets (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8144\"\u003e#8144\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eio: add \u003ccode\u003e#[inline]\u003c/code\u003e to IO trait impls for in-memory types\n(\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8242\"\u003e#8242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003enet: implement UCred::pid on FreeBSD (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8086\"\u003e#8086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003enet: support Nuttx target os (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8259\"\u003e#8259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esignal: refactor global variables on Windows (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8231\"\u003e#8231\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esync: \u003ccode\u003empsc::{Receiver,UnboundedReceiver}\u003c/code\u003e now drops\nwaker on drop, even if there are still senders (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8095\"\u003e#8095\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etaskdump: support taskdumps on s390x (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8192\"\u003e#8192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etime: add \u003ccode\u003e#[track_caller]\u003c/code\u003e to \u003ccode\u003etimeout_at()\u003c/code\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8077\"\u003e#8077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etime: consolidate mutex locks on spurious poll (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8124\"\u003e#8124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etime: defer waker clone on spurious poll (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8107\"\u003e#8107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etime: move lazy-registration state into \u003ccode\u003eSleep\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8132\"\u003e#8132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etracing: remove unnecessary span clone (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8126\"\u003e#8126\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eio: do not treat zero-length reads as EOF in \u003ccode\u003eChain\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8251\"\u003e#8251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003enet: use getpeereid for QNX peer credentials (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8270\"\u003e#8270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eruntime: avoid illegal state in \u003ccode\u003eFastRand\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8078\"\u003e#8078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esync: wake mpsc receiver when a queued \u003ccode\u003ereserve[_many]\u003c/code\u003e\nreturns permits (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8260\"\u003e#8260\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etaskdump: skip double wake on\n\u003ccode\u003eTrace::capture\u003c/code\u003e/\u003ccode\u003eTrace::trace_with\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8043\"\u003e#8043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etime: avoid stack overflow in runtime constructor (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8093\"\u003e#8093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etime (alt timer): ensure timers stay in the same runtime after\n\u003ccode\u003e.reset()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8169\"\u003e#8169\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIO uring (unstable)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efs: use io-uring for \u003ccode\u003efs::try_exists\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8080\"\u003e#8080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efs: use io-uring for renaming files (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/7800\"\u003e#7800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ert: flush io-uring CQE in case of CQE overflow (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8277\"\u003e#8277\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumented\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: clarify cancel safety wording (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8181\"\u003e#8181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efs: clarify \u003ccode\u003ecreate_dir_all\u003c/code\u003e succeeds if path exists (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8149\"\u003e#8149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eio: add warning about stdout reordering with multiple handles (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8276\"\u003e#8276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003enet: document pipe \u003ccode\u003etry_read*\u003c/code\u003e/\u003ccode\u003etry_write*\u003c/code\u003e\nreadiness behavior (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8032\"\u003e#8032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eruntime: document interaction with fork() (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8202\"\u003e#8202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esync: clarify broadcast lagging semantics (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8239\"\u003e#8239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esync: document memory ordering guarantees for Semaphore (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8119\"\u003e#8119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etask: explain why \u003ccode\u003eyield_now\u003c/code\u003e defers its waker (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8254\"\u003e#8254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etime: add panic docs to \u003ccode\u003etimeout_at()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8077\"\u003e#8077\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/be689a35f5ade5a39e507f79d3ec85cdab27806f\"\u003e\u003ccode\u003ebe689a3\u003c/code\u003e\u003c/a\u003e\nchore: prepare Tokio v1.53.0 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8294\"\u003e#8294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/50f76c71ec7203013f7f0cda59deaa9016e93939\"\u003e\u003ccode\u003e50f76c7\u003c/code\u003e\u003c/a\u003e\nchore: prepare tokio-macros v2.7.1 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8295\"\u003e#8295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/f61fccad3cd598cce743fc511a983364b77af92a\"\u003e\u003ccode\u003ef61fcca\u003c/code\u003e\u003c/a\u003e\nMerge \u0027tokio-1.52.4\u0027 into \u0027master\u0027 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8290\"\u003e#8290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/efdba5fcf02c4b93d379114df136b994c3b21445\"\u003e\u003ccode\u003eefdba5f\u003c/code\u003e\u003c/a\u003e\nchore: prepare Tokio v1.52.4 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8289\"\u003e#8289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/b0ba02e75507518baed6718b0c37105e430f3a93\"\u003e\u003ccode\u003eb0ba02e\u003c/code\u003e\u003c/a\u003e\nMerge \u0027tokio-1.51.4\u0027 into \u0027tokio-1.52.x\u0027 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8288\"\u003e#8288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/7bcd2d343d997a658be5bc165520070c997fefbc\"\u003e\u003ccode\u003e7bcd2d3\u003c/code\u003e\u003c/a\u003e\ntaskdump: remove crate disambiguators from output (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8288\"\u003e#8288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/f84b209126a9b0f66dae1025e30e44d217205513\"\u003e\u003ccode\u003ef84b209\u003c/code\u003e\u003c/a\u003e\nchore: prepare Tokio v1.51.4 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8286\"\u003e#8286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/eacb98e18901fcbe011bfceddbc31853f1bf0c27\"\u003e\u003ccode\u003eeacb98e\u003c/code\u003e\u003c/a\u003e\nruntime: don\u0027t skip the driver when \u003ccode\u003ebefore_park\u003c/code\u003e schedules\nwork (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8222\"\u003e#8222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/5e16ee00faae5b81a58f70b734577b800e0b203b\"\u003e\u003ccode\u003e5e16ee0\u003c/code\u003e\u003c/a\u003e\ntask: avoid replacing the JoinQueue waker in \u003ccode\u003etry_join_next\u003c/code\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8279\"\u003e#8279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/88212ab64afd2b2f87deeb073f9eef6aaaad3701\"\u003e\u003ccode\u003e88212ab\u003c/code\u003e\u003c/a\u003e\nsync: document memory ordering guarantees for Semaphore (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8119\"\u003e#8119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/compare/tokio-1.52.3...tokio-1.53.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dtokio\u0026package-manager\u003dcargo\u0026previous-version\u003d1.52.3\u0026new-version\u003d1.53.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d749ef962be92e0d1e135106742dabe42e477a89",
      "tree": "5b326702a321b369743fe3b9b826f7077d8ab258",
      "parents": [
        "85fc4a308b4b49560373eed688ee18fd20dd0d37"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 20 20:04:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 20:04:22 2026 +0800"
      },
      "message": "Bump async-trait from 0.1.89 to 0.1.91 (#2400)\n\nBumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.89\nto 0.1.91.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/dtolnay/async-trait/releases\"\u003easync-trait\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.1.90\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to syn 3\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/dtolnay/async-trait/commit/d049ee02a2d50b72e03d07f06311e23bf5b512a8\"\u003e\u003ccode\u003ed049ee0\u003c/code\u003e\u003c/a\u003e\nRelease 0.1.91\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/dtolnay/async-trait/commit/7a0961f275432c40cc5e7aa011362e4b50d763b1\"\u003e\u003ccode\u003e7a0961f\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/dtolnay/async-trait/issues/301\"\u003e#301\u003c/a\u003e\nfrom dtolnay/mutability\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/dtolnay/async-trait/commit/740f86f23d176229011f2389c8a206ef5ba547e7\"\u003e\u003ccode\u003e740f86f\u003c/code\u003e\u003c/a\u003e\nIgnore mut_mut pedantic clippy lint in test\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/dtolnay/async-trait/commit/4699cd320a8aaaf06a2a369cb9e1f2964b14b71c\"\u003e\u003ccode\u003e4699cd3\u003c/code\u003e\u003c/a\u003e\nFix mutability for by-reference receivers\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/dtolnay/async-trait/commit/6dd3573df95878d34fcfc0ab9c242aeab3140f82\"\u003e\u003ccode\u003e6dd3573\u003c/code\u003e\u003c/a\u003e\nAdd regression test for issue 300\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/dtolnay/async-trait/commit/2371797a3938808bd7e1f4f9abd0eed51bd99634\"\u003e\u003ccode\u003e2371797\u003c/code\u003e\u003c/a\u003e\nRelease 0.1.90\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/dtolnay/async-trait/commit/d03f075ecc2b9fcbf6757f3654a7974a518a144e\"\u003e\u003ccode\u003ed03f075\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/dtolnay/async-trait/issues/299\"\u003e#299\u003c/a\u003e\nfrom dtolnay/syn3\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/dtolnay/async-trait/commit/6cf42c104d1c02aa97d4fc62ff117f8d6b05eacb\"\u003e\u003ccode\u003e6cf42c1\u003c/code\u003e\u003c/a\u003e\nUpdate to syn 3\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/dtolnay/async-trait/commit/b9daabad756580d31bd2b9221ea599db51bf6cdd\"\u003e\u003ccode\u003eb9daaba\u003c/code\u003e\u003c/a\u003e\nIgnore match_same_arms pedantic clippy lint\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/dtolnay/async-trait/commit/aa706d127114e57dc163238af947ba495b0b86d2\"\u003e\u003ccode\u003eaa706d1\u003c/code\u003e\u003c/a\u003e\nUpdate actions/upload-artifact@v6 -\u0026gt; v7\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/dtolnay/async-trait/compare/0.1.89...0.1.91\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dasync-trait\u0026package-manager\u003dcargo\u0026previous-version\u003d0.1.89\u0026new-version\u003d0.1.91)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "85fc4a308b4b49560373eed688ee18fd20dd0d37",
      "tree": "215897cd3b9968ed5fc915747099b462db15f2f0",
      "parents": [
        "629084cc43ac871e064150739f9cf7959cf9020e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 20 20:04:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 20:04:11 2026 +0800"
      },
      "message": "Bump futures-util from 0.3.32 to 0.3.33 (#2401)\n\nBumps [futures-util](https://github.com/rust-lang/futures-rs) from\n0.3.32 to 0.3.33.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/rust-lang/futures-rs/releases\"\u003efutures-util\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.33\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eReadLine\u003c/code\u003e\u0027s soundness issue regarding to exception\nsafety. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3020\"\u003e#3020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix unsound \u003ccode\u003eSend\u003c/code\u003e impl for \u003ccode\u003eIterPinRef\u003c/code\u003e and\n\u003ccode\u003eIter\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3003\"\u003e#3003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix stacked borrows violation in \u003ccode\u003ecompat01as03\u003c/code\u003e\nimplementation. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in \u003ccode\u003eFuturesUnordered::IntoIter\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eportable-atomic-alloc\u003c/code\u003e feature and use it in\n\u003ccode\u003eFuturesUnordered\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3007\"\u003e#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRe-export \u003ccode\u003ealloc::task::Wake\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003espin\u003c/code\u003e to 0.12. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3014\"\u003e#3014\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/rust-lang/futures-rs/blob/main/CHANGELOG.md\"\u003efutures-util\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.3.33 - 2026-07-18\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eReadLine\u003c/code\u003e\u0027s soundness issue regarding to exception\nsafety. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3020\"\u003e#3020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix unsound \u003ccode\u003eSend\u003c/code\u003e impl for \u003ccode\u003eIterPinRef\u003c/code\u003e and\n\u003ccode\u003eIter\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3003\"\u003e#3003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix stacked borrows violation in \u003ccode\u003ecompat01as03\u003c/code\u003e\nimplementation. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in \u003ccode\u003eFuturesUnordered::IntoIter\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eportable-atomic-alloc\u003c/code\u003e feature and use it in\n\u003ccode\u003eFuturesUnordered\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3007\"\u003e#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRe-export \u003ccode\u003ealloc::task::Wake\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003espin\u003c/code\u003e to 0.12. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3014\"\u003e#3014\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/futures-rs/commit/89cc254cb8bfcc78e6a31e7711d0757f97bcb531\"\u003e\u003ccode\u003e89cc254\u003c/code\u003e\u003c/a\u003e\nRelease 0.3.33\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/futures-rs/commit/cd9f5befe699dab2e94cfd32708879b41be0960a\"\u003e\u003ccode\u003ecd9f5be\u003c/code\u003e\u003c/a\u003e\nci: Update release workflow\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/futures-rs/commit/d79a499c5f7b4427b8dfbee2216b0ff042bb38e4\"\u003e\u003ccode\u003ed79a499\u003c/code\u003e\u003c/a\u003e\nResolve rustdoc::broken_intra_doc_links warning\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/futures-rs/commit/95bbcf83be9e414f1e5b9e0f5e0c91f1d8e433e3\"\u003e\u003ccode\u003e95bbcf8\u003c/code\u003e\u003c/a\u003e\nResolve rustdoc ambiguous link error\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/futures-rs/commit/303c1658dc7bde42cf15d7a09621de8c6c857b37\"\u003e\u003ccode\u003e303c165\u003c/code\u003e\u003c/a\u003e\nResolve rustdoc::redundant_explicit_links warning\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/futures-rs/commit/f34e3f5b9daba3901a464a0694e448a7eacf0e19\"\u003e\u003ccode\u003ef34e3f5\u003c/code\u003e\u003c/a\u003e\nci: Cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/futures-rs/commit/66591a24275a79d9a77330dbb9106b79f623aa0d\"\u003e\u003ccode\u003e66591a2\u003c/code\u003e\u003c/a\u003e\nEnable Miri for more tests\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/futures-rs/commit/ab1072fec105b27e5133f9f7dd01f44fba55629f\"\u003e\u003ccode\u003eab1072f\u003c/code\u003e\u003c/a\u003e\nSimplify target_has_atomic cfg in utility crates\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/futures-rs/commit/cf5d23b68bf7eafb926a2d485b1a1276a4a4e146\"\u003e\u003ccode\u003ecf5d23b\u003c/code\u003e\u003c/a\u003e\nFix unsound compat01as03 implementation (fixes \u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/2514\"\u003e#2514\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/futures-rs/commit/8ae794faefbbae7f0070d11f75ea7e56bc2698c5\"\u003e\u003ccode\u003e8ae794f\u003c/code\u003e\u003c/a\u003e\nAdd portable-atomic-alloc feature and use it in FuturesUnordered (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/futures-rs/issues/3007\"\u003e#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/rust-lang/futures-rs/compare/0.3.32...0.3.33\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dfutures-util\u0026package-manager\u003dcargo\u0026previous-version\u003d0.3.32\u0026new-version\u003d0.3.33)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "629084cc43ac871e064150739f9cf7959cf9020e",
      "tree": "7affbb5a25e30c992bf0338c13de803339f58296",
      "parents": [
        "c3b7d6333908b1a3cfbd22aa5dbfca21323ce5d8"
      ],
      "author": {
        "name": "slfan1989",
        "email": "55643692+slfan1989@users.noreply.github.com",
        "time": "Mon Jul 20 18:16:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 18:16:34 2026 +0800"
      },
      "message": "[AURON #2398] Fix Maven -D argument handling in auron-build.sh (#2399)\n\n### Which issue does this PR close?\n\nCloses #2398\n\n### Rationale for this change\n\nThe `auron-build.sh` script incorrectly handles Maven `-D` arguments.\n\nThe script previously stored these arguments in a single string and\nadded a leading space before the first argument. It then passed the\ncomplete string to Maven as one quoted argument.\n\nFor example, Maven received:\n\n```text\n\" -DskipBuildNative\"\n```\n\ninstead of:\n\n```\n\"-DskipBuildNative\"\n```\n\nThis caused Maven to report:\n\n```\nUnknown lifecycle phase \" -DskipBuildNative\"\n```\n\n### What changes are included in this PR?\n\n- Replace the string-based `MVN_D_ARGS` variable with a Bash array.\n- Store every Maven `-D` option as an independent array element.\n- Pass Maven properties using quoted array expansion.\n- Preserve multiple Maven properties and values containing spaces.\n- Simplify the local Maven command execution path.\n\n### Are there any user-facing changes?\n\nYes.\n\nUsers can now pass Maven `-D` properties through `auron-build.sh` as\ndocumented.\n\nFor example:\n\n```\n./auron-build.sh --pre --sparkver 4.1 --scalaver 2.13 -DskipBuildNative\n```\n\nMultiple Maven properties are also preserved as separate arguments.\n\n### How was this patch tested?\n\n- Reproduced the original behavior and confirmed that the script\nproduced:\n\n```\n\u003c -DskipBuildNative\u003e\n```\n\n- Verified that the fixed script produces:\n\n```\n\u003c-DskipBuildNative\u003e\n```\n\n### Was this patch authored or co-authored using generative AI tooling?\n- [ ] Yes\n- [x] No\n\nIf yes, include: `Generated-by: \u003ctool name and version\u003e`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nSigned-off-by: slfan1989 \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "c3b7d6333908b1a3cfbd22aa5dbfca21323ce5d8",
      "tree": "666d08b92837bd7756910cb0ac08f8315d8843b0",
      "parents": [
        "c0b525194fa04f4e51b483965a6c026e079f19dc"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 20 16:49:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 16:49:14 2026 +0800"
      },
      "message": "Bump serde from 1.0.228 to 1.0.229 (#2403)"
    },
    {
      "commit": "c0b525194fa04f4e51b483965a6c026e079f19dc",
      "tree": "bab57cc3e7396c516f8de5783da46c13d955705a",
      "parents": [
        "92f22ea3a321f09aac52ecb0c7abf6e054f7904d"
      ],
      "author": {
        "name": "Zhen Wang",
        "email": "643348094@qq.com",
        "time": "Mon Jul 20 16:48:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 16:48:14 2026 +0800"
      },
      "message": "[AURON #2352] Lock spills before new spiller (#2350)\n\n# Which issue does this PR close?\n\nCloses #2352\n\n# Rationale for this change\n\n`try_new_spill` always uses `spills.len` as the `spill_id`, so we should\nalways lock `spills` before `trying_new_spill`.\n\n# What changes are included in this PR?\n\n# Are there any user-facing changes?\n\n# How was this patch tested?\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "92f22ea3a321f09aac52ecb0c7abf6e054f7904d",
      "tree": "21c30345f575a4827acc2b0281df153a36670266",
      "parents": [
        "ea58765679ec66cf8a99e4807ba4c1a51aa9c2bf"
      ],
      "author": {
        "name": "Weiqing Yang",
        "email": "yangweiqing001@gmail.com",
        "time": "Sun Jul 19 20:15:15 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 11:15:15 2026 +0800"
      },
      "message": "[AURON #1865] Merge native operators: fuse Flink source and Calc into one native plan (#2327)\n\n# Which issue does this PR close?\n\nCloses #1865\n\n# Rationale for this change\n\nA `SELECT proj … FROM kafka WHERE pred` plan runs today as two\nindependent native operators: the native Kafka source converts its\ncolumnar output to `RowData`, then the shadowed `StreamExecCalc`\noperator converts it back to Arrow, runs `Project[Filter]` natively, and\nconverts back to `RowData` — paying multiple row/column conversions\nwhere one would do. This PR fuses the source and a convertible Calc into\na single native plan `Project[Filter?[KafkaScan]]` that runs inside the\nsource, so the data stays columnar end-to-end and converts to `RowData`\nonce, at the chain tail. This is the whole-stage native operator merging\ndirection for the Flink integration, mirroring the plan-merge already\nused on the Spark side.\n\n# What changes are included in this PR?\n\nStrict gating in the shadowed `StreamExecCalc`: a Calc converts to\nnative only when it can fuse into a native upstream chain — its input is\nthe native Auron Kafka source, the source has no event-time watermark,\nand every expression converts. When fusible, the Calc hands its logical\n`Project[Filter?]` sub-plan to the source and returns the source\ntransformation re-typed to the projected output, eliminating the Calc\noperator. Every other case (non-native upstream, watermarked source, any\nunconvertible expression) runs as a stock Flink Calc.\n\nThe source splices its `KafkaScan` into the handed-off sub-plan and\nprepends the partition/offset/timestamp metadata columns, so its\nper-record offset-commit and timestamp bookkeeping are unchanged; native\ncolumn resolution is by name, so no column-index rewriting is needed.\n\nThe standalone FFI-reader native-Calc path is no longer emitted from the\nCalc decision. Detection and hand-off go through the source function, so\nno source-operator type is introduced; operator-level native identity is\nleft to the future ExecNode-graph merge that would consume it.\nEvent-time-watermark fusion is out of scope and tracked as a follow-up.\n\nThis PR is stacked on #2325 (no-watermark source emit fix), which it\nrequires; that commit drops out of the diff once #2325 merges and this\nbranch is rebased.\n\n# Are there any user-facing changes?\n\nPerformance: a `source → Calc` chain over the native Kafka source with\nno event-time watermark now runs as a single native pipeline with one\ncolumnar-to-row conversion. A Calc that cannot fuse (non-native source,\nwatermarked source, or unsupported expression) runs as Flink\u0027s codegen\nCalc.\n\n# How was this patch tested?\n\nUnit tests in `StreamExecCalcTest` assert the fusion decision (native\nsource + no watermark + convertible → merged source transformation with\nno separate Calc operator; each negative case → stock Flink Calc). An\nend-to-end `AuronKafkaSourceMergeITCase` runs fused SQL over a\nno-watermark `auron-kafka` table and asserts row-set correctness; a\nnative boolean-to-string cast renders lowercase, proving the fused path\nexecutes natively (Flink codegen renders uppercase). The full\n`auron-flink-planner` (130) and `auron-flink-runtime` (137) module test\nsuites pass."
    },
    {
      "commit": "ea58765679ec66cf8a99e4807ba4c1a51aa9c2bf",
      "tree": "48103047a1225647525fd701cd7a5970708b8ef7",
      "parents": [
        "37daf6c0a4b6ba7d9db7be619e0973f82d660988"
      ],
      "author": {
        "name": "slfan1989",
        "email": "55643692+slfan1989@users.noreply.github.com",
        "time": "Sun Jul 19 15:39:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 15:39:03 2026 +0800"
      },
      "message": "[AURON #2396] [RELEASE] Bump the development version to 9.0.0-SNAPSHOT (#2397)\n\n### Which issue does this PR close?\n\nCloses #2396\n\n### Rationale for this change\n\nApache Auron 8.0.0-incubating has been released. Continued development\non the `master` branch should use the next snapshot version instead of\nretaining the released version.\n\nThe release build workflows also contain hard-coded Auron version\nvalues. These values must remain consistent with the Maven project\nversion so that generated JAR names match the artifact paths expected by\nGitHub Actions.\n\n### What changes are included in this PR?\n\n- Update `project.version` in the root `pom.xml` from\n  `8.0.0-incubating` to `9.0.0-SNAPSHOT`.\n- Update `auronver` to `9.0.0-SNAPSHOT` in the AMD64 release workflow.\n- Update the explicit Spark 4.0 and Spark 4.1 AMD64 matrix entries.\n- Update `auronver` to `9.0.0-SNAPSHOT` in the ARM64 release workflow.\n- Update `auronver` to `9.0.0-SNAPSHOT` in the macOS release workflow.\n\n### Are there any user-facing changes?\n\nNo.\n\nThis change only updates the development version and CI artifact naming.\nIt does not introduce changes to runtime behavior or public APIs.\n\n### How was this patch tested?\n\n### Was this patch authored or co-authored using generative AI tooling?\n- [ ] Yes\n- [x] No\n\nIf yes, include: `Generated-by: \u003ctool name and version\u003e`\n\nASF guidance: https://www.apache.org/legal/generative-tooling.html\n\nSigned-off-by: slfan1989 \u003cslfan1989@apache.org\u003e"
    },
    {
      "commit": "37daf6c0a4b6ba7d9db7be619e0973f82d660988",
      "tree": "7743cae0a4e6276fdc46fdebddfa32a14cbbeae2",
      "parents": [
        "ceda7332013604ec3baee645b144c2be7152103c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 17 10:59:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 10:59:52 2026 +0800"
      },
      "message": "Bump lz4_flex from 0.13.1 to 0.14.0 (#2388)"
    },
    {
      "commit": "ceda7332013604ec3baee645b144c2be7152103c",
      "tree": "d9d9214d26333769a73b51a3a427c4d6f1dafc63",
      "parents": [
        "eaba4d49c3c03c0221391efcb3e722863fc55ebb"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 17 10:59:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 10:59:23 2026 +0800"
      },
      "message": "Bump regex from 1.13.0 to 1.13.1 (#2389)"
    },
    {
      "commit": "eaba4d49c3c03c0221391efcb3e722863fc55ebb",
      "tree": "f535692b27efccbe4c5a02953666972cee362564",
      "parents": [
        "b073bfb0e333cbf0e67ac1aa1e3b424aa1bd7100"
      ],
      "author": {
        "name": "linfeng",
        "email": "33561138+lyne7-sc@users.noreply.github.com",
        "time": "Wed Jul 15 09:45:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 09:45:11 2026 +0800"
      },
      "message": "[AURON #2378] Support runtime filters in native Iceberg scan (#2379)"
    }
  ],
  "next": "b073bfb0e333cbf0e67ac1aa1e3b424aa1bd7100"
}
