___________ ___________.__.__
\__ ___/____\_ _____/|__| | ____
| | / ___/| __) | | | _/ __ \
| | \___ \ | \ | | |_\ ___/
|____|/____ >\___ / |__|____/\___ > version 1.0.0
\/ \/ \/
This directory contains the C++ implementation of TsFile. The C++ version currently supports the query and write functions of TsFile, including time filtering queries.
The source code can be found in the ./src directory. C/C++ examples are located in the ./examples directory, and a benchmark for TsFile_cpp can be found in the ./bench_mark directory. Additionally, a C function wrapper is available in the ./src/cwrapper directory, which the Python tool relies on.
We use clang-format to ensure that our C++ code adheres to a consistent set of rules defined in ./clang-format. This is similar to the Google style.
Feature List:
- Add unit tests for the reader, writer, compression, etc.
- Add unit tests for the C wrapper.
- Support multiple data flushes.
- Support aligned timeseries.
- Support table description in tsfile.
- Retrieve all table schemas/names.
- Implement automatic flush.
- Support out-of-order data writing.
- Support TsFile V4. Note: TsFile CPP does not implement support for the table model, therefore there are differences in file output compared to the Java version.
Bug List:
- Flushing without writing after registering a timeseries will cause a core dump.
- Misalignment in memory may lead to a bus error.
We welcome any bug reports. You can open an issue with a title starting with [CPP] to describe the bug, like: apache#94
sudo apt-get update
sudo apt-get install -y cmake make g++ clang-formatTo build tsfile, you can run: bash build.sh. If you have Maven tools, you can run: mvn package -P with-cpp clean verify. Then, you can find the shared object at ./build.
Before you submit your code to GitHub, please ensure that the mvn compilation is correct.
You can find examples on how to read and write data in demo_read.cpp and demo_write.cpp located under ./examples/cpp_examples. There are also examples under ./examples/c_exampleson how to use a C-style API to read and write data in a C environment. You can run bash build.sh under ./examples to generate an executable output under ./examples/build.