Closed zhongzc closed 1 week ago
These changes introduce support for LZ4 compression/decompression into the puffin codebase. Specifically, they expand the Error
enum to include LZ4-related errors, modify the file reader and writer to handle LZ4-compressed footers, and update unit tests to ensure the functionality works correctly. The new methods and fields ensure that users can opt for LZ4 compression for file footers, potentially improving both performance and storage efficiency.
File | Summary |
---|---|
src/puffin/Cargo.toml |
Added the lz4_flex dependency version "0.11" . |
src/puffin/src/error.rs |
Added new error variants for Lz4Compression and Lz4Decompression to the Error enum. |
.../file_format/reader/footer.rs |
Added support for LZ4 decompression in parse_payload , incorporating necessary imports and error handling. |
src/puffin/src/file_format/writer.rs |
Introduced set_footer_lz4_compressed method to PuffinSyncWriter and PuffinAsyncWriter traits for setting LZ4 compression. |
.../writer/file.rs |
Added footer_lz4_compressed field and set_footer_lz4_compressed method to PuffinFileWriter struct. |
.../writer/footer.rs |
Added lz4_compressed field and modified methods for conditional LZ4 compression in FooterWriter struct. |
src/puffin/src/tests.rs |
Modified test functions to accept footer_compressed parameter, testing both true and false cases for LZ4 compression. |
sequenceDiagram
participant User
participant PuffinWriter
participant LZ4
User ->> PuffinWriter: set_footer_lz4_compressed(true)
activate PuffinWriter
PuffinWriter ->> LZ4: Compress footer payload
deactivate PuffinWriter
User ->> PuffinWriter: Write data
PuffinWriter ->> LZ4: Optionally compress data
PuffinWriter ->> User: Data written with footers optionally compressed
In lines of Rust we write, compress, With LZ4, our files caress. Footers now, in this quest, Stored compact, they stand the test. Errors new, tests revised, In puffin's code, we realize. CodeRabbit's joy, in bytes we trust, In LZ4, our data's just.
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
All modified and coverable lines are covered by tests :white_check_mark:
Project coverage is 84.81%. Comparing base (
5566dd7
) to head (8f6d47f
). Report is 3 commits behind head on main.
I hereby agree to the terms of the GreptimeDB CLA.
Refer to a related PR or issue link (optional)
4193
What's changed and what's your intention?
add
lz4_flex
as the dependency to get things done.Checklist
Summary by CodeRabbit
New Features
Bug Fixes
Tests