villebro opened a new pull request, #2790:
URL: https://github.com/apache/datafusion-ballista/pull/2790

   # Which issue does this PR close?
   
   Not related to an issue. It fixes the failing `Ballista Rust` workflow on 
`main` after #2765.
   
   # Rationale for this change
   
   
`state::aqe::test::coalesce_rule::should_resolve_every_declared_partition_of_coalesced_passthrough_stage`
   fails on `main` (`assert_eq!(2, stages.len())`, got 1).
   
   The test runs `select count(*) from t1 join t2 on t1.c = t2.c`. Projection 
pushdown leaves both
   scans reading only the join key, and `t1` and `t2` hold identical data, so 
the two exchanges are
   the same subplan. Exchange reuse is enabled by default since #2765, so the 
planner runs them as
   one shared stage and only one leaf stage is runnable. The test counts two. 
The other join tests
   in the file select `t1.a` and `t2.b`, so their scans read different columns 
and stay separate
   stages.
   
   Neither change is wrong alone: the test came from #2782 and the default from 
#2765. Two PRs that
   each passed CI landed a failure between them.
   
   ## Why CI did not catch it
   
   - #2765's last push was at 21:19 UTC on 5 Nov, and `Ballista Rust` ran on 
the pull request
     at that time and passed.
   - #2782, which added this test, merged at 21:56 UTC on 5 Nov, 37 minutes 
after that run. A
     pull request run tests the PR merged with `main` as it was when the run 
started, and it is not
     repeated when `main` moves.
   - #2765 merged on 6 Nov through the merge queue, which builds the exact tree 
that lands. The
     queue ran `TPC benchmarks` and `Dependencies` on that tree, and nothing 
else. `rust.yml` triggers
     on `push`, `pull_request` and `workflow_dispatch`, but not on 
`merge_group`, so the unit tests
     never ran on the queue's tree.
   - The status checks required for `main` (`.asf.yaml`) are `TPC Required 
Checks` only, so the Rust
     jobs would not have gated the queue even if they had run there.
   - `Ballista Rust` ran for the first time on the combined tree after the 
merge, on the push to
     `main`, and failed.
   
   A change that is not part of this PR would close that gap: add 
`merge_group:` to the triggers of
   `.github/workflows/rust.yml`, and require a Rust aggregate job next to `TPC 
Required Checks` in
   `.asf.yaml` (a queue only waits for required checks). It is left out here 
because a required context
   that never reports blocks every merge to `main`, as the comment in 
`.asf.yaml` warns.
   
   # What changes are included in this PR?
   
   - The query of that test also selects `t1.a` and `t2.b` (`select count(*), 
sum(t1.a + t2.b) ...`),
     so its two scans read different columns, like the other join tests, and 
stay two stages with
     exchange reuse on. It is still a global aggregate over a join, and its 
assertions are unchanged.
     Exchange reuse stays enabled in the test fixture.
   - A new test, `should_coalesce_the_readers_of_a_shared_stage`, covers what 
the old query exercised
     under the default configuration: with the two identical scans merged into 
one shared stage,
     coalescing attaches `coalesce=2 of 8` to both readers, and the join stage 
reads 2 partitions.
     No test covered coalescing together with a reused stage before.
   
   # Are there any user-facing changes?
   
   No. Test-only change.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to