blob: 9b5851d675a9b91f0098a7fb037b8f8ce3e75307 [file] [view]
# Contributing
Contributions are welcome. This is an Apache Software Foundation project, so a few
conventions apply.
## Issues and discussion
Bugs and feature requests are tracked in **ASF JIRA** under the
[SPARK](https://issues.apache.org/jira/browse/SPARK) project - GitHub Issues are
disabled. Reference the JIRA key in your pull request title, e.g.
`[SPARK-XXXXX] Short summary`.
## Building and testing
Requires a Rust toolchain and `protobuf-compiler`.
```bash
cargo build # build the library crates
cargo test # unit + golden-proto tests
cargo build -p examples # the Rust-native examples
```
Builder correctness is covered by **golden-proto tests**: plans, expressions, and
all SQL functions are asserted byte-for-byte against captured reference protos.
Transport and Arrow paths are exercised by the official Apache Spark Connect test
suite in CI - see the CI notes under `dev/design/`.
The `wasm-udf` example crates need the `wasm32` target and are built by manifest
path (they're excluded from the workspace):
```bash
rustup target add wasm32-unknown-unknown
cargo build --manifest-path examples/wasm-udf-inline/Cargo.toml
```
## Style
```bash
cargo fmt --all # format
cargo clippy --workspace # lint
```
Match the surrounding code, keep changes focused, and add or update golden tests
when you change plan or expression building.
## Pull requests
Open PRs against
[`apache/spark-connect-rust`](https://github.com/apache/spark-connect-rust).
Keep the PR description tied to its JIRA, and make sure `cargo test`, `rustfmt
--check`, and `clippy` pass.