Welcome! If you are an AI coding assistant (like GitHub Copilot, Cursor, or Gemini) working on this repository, please adhere to the following guidelines.
Apache ORC includes both Java and C++ libraries that are completely independent of each other.
c++/- the C++ reader and writerjava/- the Java reader and writerdocker/- docker scripts to build and test on various linuxesexamples/- various ORC example files that are used to test compatibilitycmake_modules/- CMake modulestools/- C++ tools for reading and inspecting ORC filessite/- the website and documentation
The Java project is built using Maven wrapper. Use Java 17 or higher.
cd java
./mvnw package -DskipTestsThe C++ project uses CMake. Use CMake 3.25.0+.
mkdir build && cd build
cmake ..
make packageNote: To build with Meson, refer to the README.md.
Before submitting changes, ensure you run the appropriate test suites.
cd java
./mvnw testcd build
make test-out- Always keep the scope of your changes minimal.
- Do not make formatting changes that are unrelated to the current task.
- Follow the existing style of the file you are modifying (e.g., C++ formatting using
clang-format, Java formatting rules).
- Jira: Apache ORC uses Jira for issue tracking (https://orc.apache.org/bugs).
- Commit Messages: Reference the Jira ticket in the commit message if applicable (e.g.,
ORC-XXXX: Fix issue...). There is a helper scriptdev/create_orc_jira.py. - Pull Requests: Explain the reasoning behind your changes clearly. To ensure your changes are correct before submitting a PR to
apache/orc, you can:- Run the tests locally (
mvn testormake test). - Use the Docker scripts in
docker/(e.g.,cd docker && ./run-all.sh local main). - Trigger GitHub Actions: Push your branch to your personal fork of the repository and open a Pull Request there. This will automatically run
.github/workflows/build_and_test.ymlon your own GitHub account's compute before you submit it to the upstream ASF repository.
- Run the tests locally (
- Do not introduce breaking changes to the ORC file format serialization unless explicitly requested and discussed.
- Ensure cross-compatibility between C++ and Java implementations if you are making logic or behavioral changes to readers / writers.