Files
Ben Johnson 006e4b7155 Update index & offset encoding
Previously, the index & offsets were encoded as 8-character hex
strings, however, this limits the maximum value to a `uint32`. This
is normally not an issue, however, indices could go over the maximum
value of 4 billion over time and the offset could exceed this value
for an especially large WAL update. For safety, these encodings have
been updated to 16-character hex encodings.
2022-02-08 13:14:49 -07:00
..
2022-02-08 13:14:49 -07:00

To reproduce this testdata, run sqlite3 and execute:

	PRAGMA journal_mode = WAL;
	CREATE TABLE t (x);
	INSERT INTO t (x) VALUES (1);
	INSERT INTO t (x) VALUES (2);

	sl3 split -o generations/0000000000000000/wal/0000000000000000 db-wal
	cp db generations/0000000000000000/snapshots/0000000000000000.snapshot
	lz4 -c --rm generations/0000000000000000/snapshots/0000000000000000.snapshot


Then execute:

	PRAGMA wal_checkpoint(TRUNCATE);
	INSERT INTO t (x) VALUES (3);

	sl3 split -o generations/0000000000000000/wal/0000000000000001 db-wal


Then execute:

	PRAGMA wal_checkpoint(TRUNCATE);
	INSERT INTO t (x) VALUES (4);
	INSERT INTO t (x) VALUES (5);

	sl3 split -o generations/0000000000000000/wal/0000000000000002 db-wal


Finally, obtain the final snapshot:

	PRAGMA wal_checkpoint(TRUNCATE);

	cp db 0000000000000002.db
	rm db*