# 2022 Jan 01 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # Tests focused on the in-memory journal. # set testdir [file dirname $argv0] source $testdir/tester.tcl source $testdir/malloc_common.tcl set testprefix memjournal2 do_execsql_test 1.0 { PRAGMA journal_mode = memory; CREATE TABLE t1(a INTEGER PRIMARY KEY, b UNIQUE); } {memory} set nRow [expr 2000] do_execsql_test 1.1 { BEGIN; WITH s(i) AS ( SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<$nRow ) INSERT INTO t1 SELECT NULL, randomblob(700) FROM s; } for {set jj 200} {$jj <= 300} {incr jj} { do_execsql_test 1.2.$jj.1 { SAVEPOINT one; UPDATE t1 SET b=randomblob(700) WHERE a<=$jj; } do_execsql_test 1.2.$jj.2 { SAVEPOINT two; UPDATE t1 SET b=randomblob(700) WHERE a==1; ROLLBACK TO two; RELEASE two; } do_execsql_test 1.2.$jj.3 { SAVEPOINT two; UPDATE t1 SET b=randomblob(700) WHERE a==1; ROLLBACK TO two; RELEASE two; } do_execsql_test 1.2.$jj.4 { PRAGMA integrity_check; ROLLBACK TO one; RELEASE one; } {ok} } finish_test