1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
# name: test/sql/attach/attach_replay_with_no_wal_writes.test
# description: Test the NO_WAL_WRITES recovery mode when having a WAL to replay.
# group: [attach]
require noforcestorage
require skip_reload
statement ok
SET threads = 1;
statement ok
SET wal_autocheckpoint = '1TB';
statement ok
PRAGMA disable_checkpoint_on_shutdown;
statement ok
ATTACH '__TEST_DIR__/wal_writes.db' AS wal_writes;
statement ok
CREATE TABLE wal_writes.tbl AS SELECT range AS id, 0 AS v FROM range(5_000);
statement ok
DETACH wal_writes;
# Ensure that we have a WAL.
query I
SELECT COUNT(*) FROM glob('__TEST_DIR__/wal_writes.db.wal')
----
1
# We'll still replay the WAL, but we won't write to it again after CHECKPOINT.
statement ok
ATTACH '__TEST_DIR__/wal_writes.db' AS wal_writes (RECOVERY_MODE NO_WAL_WRITES);
# Replayed the WAL, but not yet deleted (no CHECKPOINT).
query I
SELECT COUNT(*) FROM glob('__TEST_DIR__/wal_writes.db.wal')
----
1
statement ok
INSERT INTO wal_writes.tbl VALUES (42, 42);
# CHECKPOINT to delete the WAL.
statement ok
CHECKPOINT wal_writes;
query I
SELECT COUNT(*) FROM glob('__TEST_DIR__/wal_writes.db.wal')
----
0
# Ensure (again) that we persisted the table (replayed its creation).
statement ok
UPDATE wal_writes.tbl SET v = id;
# Verify no WAL creation.
query I
SELECT COUNT(*) FROM glob('__TEST_DIR__/wal_writes.db.wal')
----
0
|