CI: extended tests don't run on changes to functions-aggregate / functions-window, which the aggregate and window fuzzers exercise
维护者通常 1 天内回复
评估
调研方向
从 .github/workflows/extended.yml 开始,检查 extended-tests 工作流现有的路径过滤器。为两个 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.5k
- 派生
- 2.5k
- 平均合并
- 4 天 14 小时
- 30 天内合并 PR
- 315
环境准备
在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
apache/datafusion 的其他 Issue
-
[Bug] atan2 does not normalize -0.0 the way Spark does可能已有人在做 @spicysharkco 于 3 天前认领。 未关闭bug spark
难度 2/5 1-3 小时 新手友好度 72/100
apache/datafusion#26333 ·
维护者通常 1 天内回复
-
bug help wanted unparser
难度 2/5 1-3 小时 新手友好度 72/100
apache/datafusion#26316 · 1 条评论 ·
维护者通常 1 天内回复
-
Deduplicate bucket computation in width_bucket_interval_mdn_exact可能已有人在做 @nightcityblade 于 5 天前认领。 未关闭enhancement good first issue help wanted spark tech debt
难度 2/5 1-3 小时 新手友好度 85/100
apache/datafusion#26307 · 3 条评论 ·
维护者通常 1 天内回复
-
Use the shared aggr_test_schema in CSV scan tests instead of a local copy可能已有人在做 @med9110 于 5 天前认领。 未关闭core enhancement good first issue help wanted tech debt
难度 2/5 1-3 小时 新手友好度 85/100
apache/datafusion#26306 · 2 条评论 ·
维护者通常 1 天内回复
-
gcd benchmarks pass number_rows: 0 for 100k-row inputs可能已有人在做 @Subodh-17 于 1 天前认领。 未关闭bug functions good first issue help wanted tech debt
难度 1/5 1 小时以内 新手友好度 92/100
apache/datafusion#26297 · 1 条评论 ·
维护者通常 1 天内回复
查看 apache/datafusion 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 64/100
维护者通常 3 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 70/100
-
Zellij doesn't validate hex colors correctly and crashes可能已有人在做 @ymcx 今天认领。 未关闭suspected bug
难度 2/5 1-3 小时 新手友好度 76/100
zellij-org/zellij#5732 ·
维护者通常 1 天内回复
-
bug(api): E_DOSE_ATTR_NONFINITE for a modeled D/R still says the value "never reaches you as a NaN"未关闭
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 63/100