1*ebbf3687Sdan# 2016-08-19 2*ebbf3687Sdan# 3*ebbf3687Sdan# The author disclaims copyright to this source code. In place of 4*ebbf3687Sdan# a legal notice, here is a blessing: 5*ebbf3687Sdan# 6*ebbf3687Sdan# May you do good and not evil. 7*ebbf3687Sdan# May you find forgiveness for yourself and forgive others. 8*ebbf3687Sdan# May you share freely, never taking more than you give. 9*ebbf3687Sdan# 10*ebbf3687Sdan#*********************************************************************** 11*ebbf3687Sdan# 12*ebbf3687Sdan# This file implements a test for VACUUM on attached databases. 13*ebbf3687Sdan# 14*ebbf3687Sdan 15*ebbf3687Sdanset testdir [file dirname $argv0] 16*ebbf3687Sdansource $testdir/tester.tcl 17*ebbf3687Sdanset testprefix vacuum6 18*ebbf3687Sdan 19*ebbf3687Sdan# If the VACUUM statement is disabled in the current build, skip all 20*ebbf3687Sdan# the tests in this file. 21*ebbf3687Sdan# 22*ebbf3687Sdanifcapable !vacuum { 23*ebbf3687Sdan finish_test 24*ebbf3687Sdan return 25*ebbf3687Sdan} 26*ebbf3687Sdan 27*ebbf3687Sdan 28*ebbf3687Sdando_execsql_test 1.0 { 29*ebbf3687Sdan CREATE TABLE t1(x INTEGER PRIMARY KEY, y); 30*ebbf3687Sdan INSERT INTO t1 VALUES(1, 1); 31*ebbf3687Sdan} {} 32*ebbf3687Sdando_execsql_test 1.1 { 33*ebbf3687Sdan VACUUM 34*ebbf3687Sdan} 35*ebbf3687Sdan 36*ebbf3687Sdan#------------------------------------------------------------------------- 37*ebbf3687Sdanreset_db 38*ebbf3687Sdanforeach {tn sz} {1 400 2 4000 3 9999} { 39*ebbf3687Sdan reset_db 40*ebbf3687Sdan do_execsql_test 2.$tn.1 { 41*ebbf3687Sdan CREATE TABLE t1(a INTEGER PRIMARY KEY, b); 42*ebbf3687Sdan WITH s(i) AS ( 43*ebbf3687Sdan SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<100 44*ebbf3687Sdan ) 45*ebbf3687Sdan INSERT INTO t1 SELECT i, randomblob($sz) FROM s; 46*ebbf3687Sdan } 47*ebbf3687Sdan 48*ebbf3687Sdan do_execsql_test 2.$tn.2 { 49*ebbf3687Sdan vacuum; 50*ebbf3687Sdan } 51*ebbf3687Sdan 52*ebbf3687Sdan do_execsql_test 2.$tn.3 { 53*ebbf3687Sdan PRAGMA integrity_check; 54*ebbf3687Sdan } {ok} 55*ebbf3687Sdan} 56*ebbf3687Sdan 57*ebbf3687Sdanreset_db 58*ebbf3687Sdando_execsql_test 3.0 { 59*ebbf3687Sdan PRAGMA page_size = 1024; 60*ebbf3687Sdan CREATE TABLE t1(x INTEGER PRIMARY KEY, y); 61*ebbf3687Sdan INSERT INTO t1 VALUES(2, randomblob(1200)); 62*ebbf3687Sdan} {} 63*ebbf3687Sdando_execsql_test 3.1 { 64*ebbf3687Sdan PRAGMA page_size = 512; 65*ebbf3687Sdan VACUUM; 66*ebbf3687Sdan} 67*ebbf3687Sdando_execsql_test 3.2 { 68*ebbf3687Sdan PRAGMA integrity_check 69*ebbf3687Sdan} {ok} 70*ebbf3687Sdan 71*ebbf3687Sdan#------------------------------------------------------------------------- 72*ebbf3687Sdanreset_db 73*ebbf3687Sdando_execsql_test 4.0 { 74*ebbf3687Sdan CREATE TABLE tx(a, b); 75*ebbf3687Sdan CREATE INDEX i1 ON tx(b); 76*ebbf3687Sdan WITH s(i) AS ( 77*ebbf3687Sdan SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<10000 78*ebbf3687Sdan ) 79*ebbf3687Sdan INSERT INTO tx SELECT i, randomblob(i) FROM s; 80*ebbf3687Sdan} 81*ebbf3687Sdanforeach {tn pgsz} { 82*ebbf3687Sdan 1 2048 83*ebbf3687Sdan 2 1024 84*ebbf3687Sdan 3 65536 85*ebbf3687Sdan 4 8192 86*ebbf3687Sdan} { 87*ebbf3687Sdan do_execsql_test 4.1.$tn.1 " 88*ebbf3687Sdan PRAGMA page_size = $pgsz 89*ebbf3687Sdan " 90*ebbf3687Sdan do_execsql_test 4.1.$tn.2 VACUUM 91*ebbf3687Sdan integrity_check 4.1.$tn.3 92*ebbf3687Sdan} 93*ebbf3687Sdan 94*ebbf3687Sdanfinish_test 95