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-proportionalSplitWeight, 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-predicateLIMITunder sub-splitting could hang because the blocking FlightDoGetread 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 E2ELIMITtest guards it (#2782).
Also in this release
Section titled “Also in this release”- 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_getand validated by the query-semantics oracle (#2374, #2789).
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.15.0 → 0.16.0 in lockstep. Full
detail in the
CHANGELOG.