Skip to content

CQLite v0.16.1

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.

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 APIcqlite_core::storage::commitlog, with CommitLogReader::open / open_with_schemas and a lazy MutationIter that decodes one record at a time (128 MB segment cap).
  • CLI — a new read-commitlog subcommand 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.2 plus 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.

Terminal window
brew install pmcfadin/cqlite/cqlite # CLI (macOS + Linux)
cargo add cqlite-core # Rust library
pip install cqlite-py # Python
npm install @cqlite/node # Node.js

Rust crates and the Python and Node bindings move 0.16.0 → 0.16.1 in lockstep. Full detail in the CHANGELOG.