Merge branch 'prerelease' of ssh://git.zetetic.net/sqlcipher into prerelease
[sqlcipher.git] / test / sharedB.test
blob1b157550762f17543522d121ddecf48a0208c41d
1 # 2014-12-05
3 # The author disclaims copyright to this source code.  In place of
4 # a legal notice, here is a blessing:
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.
10 #***********************************************************************
12 # Open two database connections on the same database in shared cache
13 # mode.  Hold one open while repeatedly closing, reopening, and using
14 # the second.
16 # This test is designed to demostrate that the fix for ticket
17 # [e4a18565a36884b00edf66541f38c693827968ab] works.  
21 set testdir [file dirname $argv0]
22 source $testdir/tester.tcl
23 if {[run_thread_tests]==0} { finish_test ; return }
24 db close
25 set ::testprefix sharedB
27 set ::enable_shared_cache [sqlite3_enable_shared_cache 1]
29 #-------------------------------------------------------------------------
31 do_test 1.1 {
32   sqlite3 db1 test.db
33   sqlite3 db2 test.db
35   db1 eval {
36     CREATE TABLE t1(x,y TEXT COLLATE nocase);
37     WITH RECURSIVE
38       c(i) AS (VALUES(1) UNION ALL SELECT i+1 FROM c WHERE i<100)
39     INSERT INTO t1(x,y) SELECT i, printf('x%03dy',i) FROM c;
40     CREATE INDEX t1yx ON t1(y,x);
41   }
42   db2 eval {
43     SELECT x FROM t1 WHERE y='X014Y';
44   }
45 } {14}
47 for {set j 1} {$j<=100} {incr j} {
48   do_test 1.2.$j {
49     db2 close
50     sqlite3 db2 test.db
51     db2 eval {
52       SELECT x FROM t1 WHERE y='X014Y';
53     }
54   } {14}
57 db1 close
58 db2 close
59 sqlite3_enable_shared_cache $::enable_shared_cache
60 finish_test