Skip to content

CQLite v0.16.0

CQLite v0.16.0 — Trino connector completeness & cancellation

Section titled “CQLite v0.16.0 — Trino connector completeness & cancellation”

This release closes two field-surfaced connector gaps on top of the v0.15.0 latency/throughput base: Cassandra collection columns now project through Trino, and weight-balanced split fan-out ships with a root fix for a LIMIT-cancellation hang.

🧩 Typed collection columns through Trino

Section titled “🧩 Typed collection columns through Trino”

list, set, and map columns — including list<frozen<udt>> — now project as Trino array, row, and map instead of being silently dropped from the schema. Unmappable columns are surfaced loudly rather than hidden. Primitive element types decode fully; UDT element-value decode inside a collection remains tracked to #2349 (#2815).

⚖️ Weight-balanced, hang-free sub-splitting

Section titled “⚖️ Weight-balanced, hang-free sub-splitting”
  • Weight-balanced split→pod assignment — K-way token-range sub-splitting (cqlite.sub-splits-per-range, default 4) with span-proportional SplitWeight, evening out the 2–4× per-pod CPU skew that capped aggregate throughput. Aggregate, pushed-LIMIT, and fully-bound point reads are exempted to K=1 (#2680).
  • P0 LIMIT-cancellation hang fixed at root — a partial-predicate LIMIT under sub-splitting could hang because the blocking Flight DoGet read ran on the Trino driver thread, so operator close could never cancel it. The read now runs off the driver thread, letting close cross-cancel the stream; a docker-compose E2E LIMIT test guards it (#2782).
  • UDT registry wired into both Flight read paths (cold + warm) (#2349).
  • Plan-time split pruning for fully-bound partition keys — a point read prunes to the covering split instead of fanning out (#2679, #2806).
  • Keyspace-qualified UDT type names accepted on both read paths (#2807).
  • Read-time TTL/liveness reconciliation routed through do_get and validated by the query-semantics oracle (#2374, #2789).
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.15.0 → 0.16.0 in lockstep. Full detail in the CHANGELOG.