CQLite v0.16.1
CQLite v0.16.1 — CommitLog reader
Section titled “CQLite v0.16.1 — CommitLog reader”A patch release on v0.16.0. CQLite now reads a second Cassandra on-disk format — CommitLog segment files — alongside SSTables. No breaking changes; the new module and CLI subcommand are purely additive.
📖 Cassandra 5.0 CommitLog reader
Section titled “📖 Cassandra 5.0 CommitLog reader”A CommitLogReader parses Cassandra 5.0 CommitLog segment files — the raw files
Cassandra writes via CommitLogSegment — into a stream of decoded mutations.
Contributed by @rustyrazorblade (#2389).
- Library API —
cqlite_core::storage::commitlog, withCommitLogReader::open/open_with_schemasand a lazyMutationIterthat decodes one record at a time (128 MB segment cap). - CLI — a new
read-commitlogsubcommand with JSON and text output, alongside the existing SSTable commands. - What it decodes — the version-gated descriptor header (Cassandra 5.0 commitlog version 7), CRC-framed sync sections with torn-tail tolerance, and schema-aware mutation and cell decode for the common insert path.
- Honest bail, never a guess — unmodeled constructs (clustering columns, static rows, collection and complex columns, deletions, range tombstones) are reported structurally rather than misdecoded; compressed and encrypted segments fail closed with a typed error. Format facts come from the descriptor header and supplied schema only.
- Verified against Cassandra source and real fixtures — field-for-field
adjudication against
cassandra-5.0.2plus parity fixtures from a real Cassandra 5.0.2 node. Format documentation ships as Appendix H of the SSTable definitive guide.
Scope — reader only. The CommitLog writer is a separate follow-on (#2388); CDC
tailing, encryption, and query/Flight integration are out of scope for this pass.
Version-8 segments (storage_compatibility_mode: NONE/UPGRADING) are rejected with a
typed error, tracked as a follow-up.
Get it
Section titled “Get it”brew install pmcfadin/cqlite/cqlite # CLI (macOS + Linux)cargo add cqlite-core # Rust librarypip install cqlite-py # Pythonnpm install @cqlite/node # Node.jsRust crates and the Python and Node bindings move 0.16.0 → 0.16.1 in lockstep. Full
detail in the
CHANGELOG.