Conflict Free Sqlite Versions Save

Convergent, Replicated SQLite. Multi-writer and CRDT support for SQLite

v0.16.3

4 months ago

v0.16.2

4 months ago
  • Expose commit sha that the release was built from SELECT crsql_sha()
  • Fix window installation issues for npm users

v0.16.1

5 months ago

The biggest changes: site_id is required and no longer nullable in crsql_changes

This means that for selecting local only changes you need to do SELECT * FROM crsql_changes WHERE db_version > ? AND site_id = crsql_site_id() rather than site_id IS NULL

Primary key columns may no longer be nullable. This was always the case but now it is explicitly enforced


  • We now throw an error if any primary key columns are set to be nullable.
    • Null primary keys are not allowed in any DB except SQLite.
    • SQLite doesn't enforce uniqueness when a primary key is set to null. I.e., you can have many duplicate rows with a null value in the primary key column.
    • This latter problem completely breaks any attempts at merging
  • ✅ 10x improvement in perf when migrating crr tables
  • ❌ 15% reduction in perf when writing to crr tables :(
  • ✅ 5x reduction in CRDT metadata (at the cost of the above write perf)
  • Compilable under libsql
  • site id is now a required column in crsql_changes
  • release artifacts are zip files containing the properly named loadable extension. This removes the need for a rename step #385

v0.16.0

5 months ago

v0.16.0-next.2

5 months ago

v0.16.0-next.1

5 months ago
  • Fixed a bug where npm install would not use pre-build binaries

v0.16.0-next

5 months ago
  • We now throw an error if any primary key columns are set to be nullable.
    • Null primary keys are not allowed in any DB except SQLite.
    • SQLite doesn't enforce uniqueness when a primary key is set to null. I.e., you can have many duplicate rows with a null value in the primary key column.
    • This latter problem completely breaks any attempts at merging
  • ✅ 10x improvement in perf when migrating crr tables
  • ❌ 15% reduction in perf when writing to crr tables :(
  • ✅ 5x reduction in CRDT metadata (at the cost of the above write perf)
  • Compilable under libsql
  • site id is now a required column in crsql_changes
  • release artifacts are zip files containing the properly named loadable extension. This removes the need for a rename step #385

prebuild-test.zip

7 months ago
  • Moves all code for tracking local writes out of triggers
  • Decreases CRDT metadata weight by no longer retaining a copy of the primary key of a row for each cell
  • Zips extensions so users do not need to rename them. See #296
  • Uses Rust nightly compiler from October 04 2023
  • Requires that primary keys for CRDT tables are not null

This change is network compatible with v0.15.0 but not source compatible. I.e., v0.16.0 DBs can talk to v0.15.0 DBs but v0.16.0 extensions cannot be loaded into v0.15.0 DB connections.

prebuild-test.win9

7 months ago

v0.15.1

8 months ago