andygrove opened a new pull request, #6503:
URL: https://github.com/apache/datafusion-comet/pull/6503

   ## Which issue does this PR close?
   
   Part of #5639.
   
   Stacked on #6450. Until that merges, this PR also shows its commit. Only the 
last two commits
   belong here: the first only moves files, so blame follows them, and the 
second wires up the crate.
   
   ## Rationale for this change
   
   #5639 splits the native `core` crate into per-concern crates. Its step T4 
moves the operators that
   need nothing else from `core` into their own crate, which the epic's 
dependency graph has depending
   only on `common` and the expression crate. T3 finishes in #6450, so nothing 
blocks this step.
   
   ## What changes are included in this PR?
   
   - A new workspace crate, `datafusion-comet-operators` (`native/operators/`), 
holds `ExpandExec`,
     `ExplodeExec`, `CometFilterExec`, `PartitionedRankLimitExec` and 
`SampleExec`, moved unchanged
     with their unit tests. It depends on arrow, datafusion, futures, 
`datafusion-comet-common` and
     `datafusion-comet-spark-expr`, which is the epic's `operators -> common, 
expr` edge. It is a
     default workspace member, so CI's `cargo nextest run` covers it.
   - The explode criterion bench moves with `ExplodeExec`, from `core/benches/` 
to `operators/benches/`.
   - The planner and `dynamic_filter` import the five types from the new crate, 
and `core` keeps no
     re-exports. `CometFilterExec` and the five accessors `core` calls 
(`from_datafusion`, `input`,
     `predicate`, `has_projection`, `with_execution_input`) become `pub`.
   - The nested-nullability test fixture moves from a `#[cfg(test)]` module in 
`core` to a hidden `pub`
     module in `datafusion-comet-common`. The `ExpandExec` and 
`ShuffleScanExec` tests that share it
     are now in different crates, and `ShuffleScanExec` moves to the readers 
crate in T6, which also
     depends on `common`. The `test_common` module in `spark-expr` is the 
precedent for a test helper
     in a lower crate.
   - `projection.rs` stays in `core`, because it only holds the projection 
builder, which T7 moves to
     the planner crate. The epic's `copy.rs` no longer exists (it was removed 
in #6364).
   - `dev/ci/compute-changes.py` routes `native/operators/benches/**` like the 
other bench
     directories, so a bench-only change still goes to the benchmark check 
rather than the full build.
     `check-ci-config.py` gains a routing case for it.
   - `native/README.md` lists every workspace crate (it was missing `common`, 
`jni-bridge` and
     `shuffle`), and `adding_a_new_operator.md` points at the new crate.
   
   git records the six moved files as renames. The only edits inside them are 
the fixture import in
   the `expand` tests, the `ExplodeExec` import in the bench, a doc path in 
`explode.rs`, and the
   visibility change in `filter.rs`.
   
   ## How are these changes tested?
   
   This moves code without changing behavior, so there are no new tests. The 34 
unit tests in the
   moved files now run as part of `datafusion-comet-operators`.
   
   - `cargo clippy --all-targets --workspace -- -D warnings`, `cargo fmt 
--check` and `cargo machete`
     are clean, and `python3 dev/ci/check-ci-config.py` passes.
   - `cargo nextest run` over the default workspace passes (1862 tests, 34 of 
them in the new crate).
     `cargo test -p datafusion-comet-operators` also passes on its own, so the 
crate builds without
     features unified from the rest of the workspace. The explode bench runs in 
test mode.
   - The JVM tests that exercise the moved operators pass against the rebuilt 
`libcomet`, 75 in all:
     `CometGenerateExecSuite` (`ExplodeExec`), the `window group limit` tests in
     `CometWindowExecSuite` (`PartitionedRankLimitExec`), the `sample`, `expand 
operator` and
     `project + filter` tests in `CometExecSuite`, and the `join dynamic 
filter` tests in
     `CometJoinSuite` (`CometFilterExec`).
   


-- 
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