Index: test/temptable2.test ================================================================== --- test/temptable2.test +++ test/temptable2.test @@ -266,8 +266,45 @@ B step 1000 B finish } {SQLITE_READONLY} tmp close + +#------------------------------------------------------------------------- +# Try inserts and deletes with a large db in auto-vacuum mode. Check +# +reset_db +do_execsql_test 9.1 { + PRAGMA cache_size = 15; + CREATE TABLE tx(a, b); + CREATE INDEX i1 ON tx(a); + CREATE INDEX i2 ON tx(b); + + WITH x(i) AS ( SELECT 1 UNION ALL SELECT i+1 FROM x WHERE i<1000 ) + INSERT INTO tx SELECT randomblob(100), randomblob(100) FROM x; +} +for {set i 2} {$i<20} {incr i} { + + do_execsql_test 9.$i.1 { DELETE FROM tx WHERE (random()%3)==0 } + + do_execsql_test 9.$i.2 { PRAGMA integrity_check } ok + + do_execsql_test 9.$i.3 { + WITH x(i) AS ( SELECT 1 UNION ALL SELECT i+1 FROM x WHERE i<400 ) + INSERT INTO tx SELECT randomblob(100), randomblob(100) FROM x; + } + + do_execsql_test 9.$i.4 { PRAGMA integrity_check } ok + + do_execsql_test 9.$i.5 { + BEGIN; + DELETE FROM tx WHERE (random()%3)==0; + WITH x(i) AS ( SELECT 1 UNION ALL SELECT i+1 FROM x WHERE i<500 ) + INSERT INTO tx SELECT randomblob(100), randomblob(100) FROM x; + COMMIT; + } + + do_execsql_test 9.$i.6 { PRAGMA integrity_check } ok +} finish_test