Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

CI: extended tests don't run on changes to functions-aggregate / functions-window, which the aggregate and window fuzzers exercise

未关闭 适合新手
#24,212 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@shinzoxD 已经在做这个了。

开始于 2026年8月15日。

  • #24403 来自 @shinzoxD —— 未关闭

评估

难度
1/5
预计耗时
1 小时以内
新手友好度
88/100
Issue 类型
功能
描述清晰度
描述清楚
活跃度
冷清
技术栈
github-actions, rust
领域
ci-cd

调研方向

从 .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.rs builds queries with .with_aggregate_function(...) for min, max, sum, count, median, first_value, last_value — implemented in datafusion/functions-aggregate/.
  • window_fuzz.rs imports datafusion_functions_window and datafusion_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

  1. Per-job path conditions — put the wider path set on linux-test-extended only, 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.
  2. Do nothing. Post-merge detection on main may already be the intended trade-off, given that #19228's motivation for extended_tests was 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

环境准备

在 Codespaces 中打开

在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

apache/datafusion 的其他 Issue

查看 apache/datafusion 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。