CQLite v0.12.0
CQLite v0.12.0 — the compaction release
Section titled “CQLite v0.12.0 — the compaction release”Read, query, and now compact Apache Cassandra 5.0 SSTables — no cluster required. This is our biggest release yet.
✈️ Arrow Flight + Trino connector
Section titled “✈️ Arrow Flight + Trino connector”- Run SQL over your SSTables from Trino — a built-in Arrow Flight server exposes raw Cassandra data files as a federated source, no Cassandra cluster in the loop.
- Pushdown that prunes: predicate pushdown, token-range SSTable pruning (skip
files that can’t match), and nested predicates (
OR/NOT). - Aggregation pushdown —
count/sum/min/max/avg+GROUP BYevaluated close to the data, with an operator gate for high-cardinality groupings.
📤 CDC delta-export to Parquet
Section titled “📤 CDC delta-export to Parquet”- Stream SSTable changes straight to Parquet —
cqlite delta-exportprojects an SSTable generation into a CDC-style delta envelope: upserts plus row/range/partition tombstones with per-cell metadata. - Drop it into your lakehouse — feed the envelopes into DuckDB, Spark, or any Parquet consumer; ships with a DuckDB reference reconciliation guide for correct latest-state without a running cluster.
- Embeddable Parquet export from Python and Node (
export_parquet, configurable row-group size + compression).
🧱 Byte-for-byte compaction parity
Section titled “🧱 Byte-for-byte compaction parity”cqlite compactproduces SSTables identical to Apache Cassandra’s — verified in CI by a differential harness and an end-to-end Cassandra readback. Full reconciliation semantics: complex and range tombstones,gc_gracepurging, TTL tie-breaks, and multi-cell collections and UDTs.
- Canonical BTI (
da) support — read and write Cassandra’s trie-indexed format. WRITETIME()andTTL()inSELECTfor debugging and migration.- Richer query engine —
PER PARTITION LIMIT, static columns, clustering order and bounds, and partition-targeted lookups that skip full scans. - Faster reads — a size-aware disk backend with direct I/O (
O_DIRECT/F_NOCACHE) for huge files, so a big scan won’t thrash the page cache.
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.jsFull detail in the CHANGELOG.