Repository navigation
v0.3.3
Patch release: filtered-subscription predicate parity (ADR-0013).
Fixed
- A filtered subscription's membership no longer depends on which path decided it. The SQL snapshot and the JS delta/catch-up evaluators disagreed on two operators, so two clients could see different rows for the same
wheredepending on connection timing:necrashed the delta path and hung the client. The SQL floor acceptednebut@tanstack/db's evaluator has none(not-equal isnot(eq(...))); its compile error escapedhandleSubuncaught, so noresetwas sent.neis now off the floor and rejected withreset, and a defensive guard turns any predicate-compile failure into aresetrather than a hang. Usenot(eq(...))for not-equal (unchanged for real clients).likewas case-insensitive in the snapshot but case-sensitive in deltas. The DO now setsPRAGMA case_sensitive_like = ON, making SQLiteLIKEmatch@tanstack/db's case-sensitivelikeon every path. Thelikepattern must be a string literal.
Changed
- Operator floor for server-side filtering dropped
ne— noweq, gt, gte, lt, lte, like, in, and, or, not, exactly the set the SQL and JS evaluators agree on row-for-row.likeis now case-sensitive.
Full Changelog: v0.3.2...v0.3.3