cr-sqlite
cr-sqlite copied to clipboard
Duplicate `seq` for the same `db_version`
There's at least one scenario where duplicate seq
values may exist for the same db_version
.
Reproduction:
sqlite> create table foo (a INTEGER PRIMARY KEY NOT NULL, b INT);
sqlite> select crsql_as_crr('foo');
sqlite> .mode column
sqlite> insert into foo values (1, 1);
sqlite> insert into foo values (2, 2);
sqlite> insert into foo values (3, 3);
sqlite> select crsql_db_version();
crsql_db_version()
------------------
3
sqlite> begin;
sqlite> insert into crsql_changes values ("foo", X'010904', "b", 4, 1, 1, X'9B1D5BD20C7A47C28FC482B33DCFC412', 1, 0);
sqlite> insert into crsql_changes values ("foo", X'010905', "b", 5, 1, 2, X'9B1D5BD20C7A47C28FC482B33DCFC412', 1, 0);
sqlite> select crsql_next_db_version();
crsql_next_db_version()
-----------------------
4
sqlite> commit;
sqlite> select "table", hex(pk), cid, val, col_version, db_version, hex(coalesce(site_id, crsql_site_id())), cl, seq from crsql_changes;
table hex(pk) cid val col_version db_version hex(coalesce(site_id, crsql_site_id())) cl seq
----- ------- --- --- ----------- ---------- --------------------------------------- -- ---
foo 010901 b 1 1 1 1864106555524AA0B5FA926536A7C047 1 0
foo 010902 b 2 1 2 1864106555524AA0B5FA926536A7C047 1 0
foo 010903 b 3 1 3 1864106555524AA0B5FA926536A7C047 1 0
foo 010904 b 4 1 4 9B1D5BD20C7A47C28FC482B33DCFC412 1 0
foo 010905 b 5 1 4 9B1D5BD20C7A47C28FC482B33DCFC412 1 0