CI: extended tests don't run on changes to functions-aggregate / functions-window, which the aggregate and window fuzzers exercise
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 1/5
- 見積もり時間
- 1時間未満
- 初心者へのやさしさ
- 88/100
調査の方向性
.github/workflows/extended.yml から始め、extended-tests ワークフローに既存のパスフィルターを確認します。2 つの functions crate のパスを対象に追加のカバレッジを追加し、その後ワークフロー設定を検証して、これらのパス配下の変更によって拡張テストがトリガーされることを確認します。
索引モデルが issue の本文から書いたものです。
説明
Is your feature request related to a problem or challenge?
The fuzz tests in datafusion/core/tests/fuzz_cases/ are gated behind the extended_tests feature, which only .github/workflows/extended.yml enables. On pull requests that workflow is limited to these paths:
paths:
- 'datafusion/physical*/**/*.rs'
- 'datafusion/expr*/**/*.rs'
- 'datafusion/optimizer/**/*.rs'
- 'datafusion/sql/**/*.rs'
- 'datafusion-testing'
Two of the fuzzers exercise crates that aren't on that list:
aggregate_fuzz.rsbuilds queries with.with_aggregate_function(...)formin,max,sum,count,median,first_value,last_value— implemented indatafusion/functions-aggregate/.window_fuzz.rsimportsdatafusion_functions_windowanddatafusion_functions_aggregate.
So a PR that changes an aggregate or window function implementation does not run the fuzz suite built to exercise it. It is still caught by the post-merge run on main, so this is a gating gap rather than missing coverage — the cost is a red main and a revert instead of a red PR.
A recent concrete case: #24104 "fix: support untyped NULL input for median" (merged 2026-08-09) changed datafusion/functions-aggregate/src/median.rs, and was itself fixing a regression between DataFusion 53 and 54. The workflows that ran on its head SHA were CodeQL, Dependencies, Detect breaking changes, Dev, Labeler, Large files PR check, and Rust; Datafusion extended tests did not run.
To be clear about what that does and doesn't show: aggregate_fuzz generates typed columns with a null percentage, whereas that bug involved an untyped NULL literal, so the fuzzer very likely would not have caught this particular issue. The point is narrower — a fuzzer-covered function was modified and its fuzzer didn't run.
Describe the solution you'd like
Add the two crates the fuzzers actually import:
- 'datafusion/functions-aggregate/**/*.rs'
- 'datafusion/functions-window/**/*.rs'
Measured cost. Over the last 50 merged PRs, 2 (4%) would newly trigger the workflow. On a recent main run (31366139826) the three jobs run in parallel: sqlite suite 9m32s, extended_tests 9m21s, hash collisions 5m20s — about 9.5 minutes wall-clock, ~24 runner-minutes.
I deliberately kept datasource* and catalog* out of this proposal even though some fuzz modules import them: 9 of the 12 unfiltered PRs in that sample were datasource*, and six were a single one-off refactor(proto): migrate <X>Source serde batch, so including them would raise the trigger rate to ~24% for what looks like a temporary campaign.
Describe alternatives you've considered
- Per-job path conditions — put the wider path set on
linux-test-extendedonly, leaving the sqlite and hash-collision jobs on the current narrow trigger. Same wall-clock, but ~9 runner-minutes instead of ~24. More surgical, slightly more complex than a two-line paths addition. - Do nothing. Post-merge detection on
mainmay already be the intended trade-off, given that #19228's motivation forextended_testswas local developer inner-loop speed rather than CI cost. If that's the case it would be useful to have it stated, since the path list reads as a deliberate "most likely to trigger errors" selection.
Additional context
Verified locally at 308e212: cargo test -p datafusion --features extended_tests --profile ci --test fuzz --no-run takes 2m09s cold, and all 114 fuzz tests pass in 4m48s (--test-threads=4). aggregate_fuzz is 10 tests, window_fuzz is 2; together they run in 39.6s. So the two fuzzers relevant here are a small fraction of the suite.
I'm happy to open a PR for whichever option you prefer.
- 主要言語
- Rust
- スター
- 9.4k
- フォーク
- 2.5k
- 平均マージ
- 4日 7時間
- マージ済み PR(30日)
- 349
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/datafusion のほかの issue
-
array_min / array_max fail on a zero-row batch for non-primitive element types対応中かも @linuxpi が 6 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
apache/datafusion#26072 ·
メンテナーはふだん 1 日以内に返信
-
BaselineMetrics output_bytes converts every column to ArrayData for every batch対応中かも @minhh-nguyen が 5 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
apache/datafusion#26071 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Replace manual `RowSelection` bitmap conversion with `force_mask()` after arrow-rs release対応中かも @isabellehuangg が 7 日前に担当しました。 オープンenhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
apache/datafusion#26030 · コメント 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
Lambda examples in the SQL function docs fail with the default dialect対応中かも @Prajwal-k-tech が 7 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
apache/datafusion#25960 ·
メンテナーはふだん 1 日以内に返信
-
Spark `xxhash64` hashes the raw bits of a NaN instead of the canonical NaN対応中かも @mrhard9090 が 10 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
apache/datafusion#25913 ·
メンテナーはふだん 1 日以内に返信
apache/datafusion の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
swc-project/swc#12516 ·
メンテナーはふだん 1 日以内に返信
-
app bug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
-
mls-rs-crypto-awslc: exact aws-lc-rs =1.16.3 pin blocks rustls security update対応中かも @muscariello が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
-
[work-item] adam-adae-worsening-emergence: conform spec.yaml to the specification style contract (REQ-1280)対応中かも @muse-yamaa-bot が今日担当しました。 オープンwork-item
難易度 1/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信