1# 2010 October 29 2# 3# The author disclaims copyright to this source code. In place of 4# a legal notice, here is a blessing: 5# 6# May you do good and not evil. 7# May you find forgiveness for yourself and forgive others. 8# May you share freely, never taking more than you give. 9# 10#*********************************************************************** 11# 12 13set testdir [file dirname $argv0] 14source $testdir/tester.tcl 15source $testdir/malloc_common.tcl 16source $testdir/lock_common.tcl 17db close 18 19do_multiclient_test tn { 20 foreach f [glob -nocomplain test.*] { forcedelete $f } 21 22 code1 { catch { sqlite3_multiplex_initialize "" 0 } } 23 code2 { catch { sqlite3_multiplex_initialize "" 0 } } 24 25 code1 { db close } 26 code2 { db2 close } 27 28 code1 { sqlite3 db test.db -vfs multiplex } 29 code2 { sqlite3 db2 test.db -vfs multiplex } 30 31 code1 { sqlite3_multiplex_control db main chunk_size [expr 1024*1024] } 32 code2 { sqlite3_multiplex_control db2 main chunk_size [expr 1024*1024] } 33 34 sql1 { 35 CREATE TABLE t1(a, b); 36 INSERT INTO t1 VALUES(randomblob(10), randomblob(4000)); -- 1 37 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 2 38 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 4 39 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 8 40 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 16 41 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 32 42 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 64 43 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 128 44 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 256 45 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 512 46 SELECT count(*) FROM t1; 47 } 48 49 do_test multiplex-1.$tn.1 { sql1 { SELECT count(*) FROM t1 } } 512 50 do_test multiplex-1.$tn.2 { sql2 { SELECT count(*) FROM t1 } } 512 51 sql2 { DELETE FROM t1 ; VACUUM } 52 do_test multiplex-1.$tn.3 { sql1 { SELECT count(*) FROM t1 } } 0 53 54 sql1 { 55 INSERT INTO t1 VALUES(randomblob(10), randomblob(4000)); -- 1 56 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 2 57 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 4 58 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 8 59 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 16 60 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 32 61 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 64 62 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 128 63 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 256 64 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 512 65 SELECT count(*) FROM t1; 66 } 67 68 do_test multiplex-1.$tn.4 { sql2 { SELECT count(*) FROM t1 } } 512 69} 70 71catch { sqlite3_multiplex_shutdown } 72finish_test 73