1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/persistentdata/persistentstorage/sqlite3api/TEST/TclScript/shared4.test Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,237 @@
1.4 +# 2008 July 14
1.5 +#
1.6 +# The author disclaims copyright to this source code. In place of
1.7 +# a legal notice, here is a blessing:
1.8 +#
1.9 +# May you do good and not evil.
1.10 +# May you find forgiveness for yourself and forgive others.
1.11 +# May you share freely, never taking more than you give.
1.12 +#
1.13 +#***********************************************************************
1.14 +#
1.15 +# Test the btree mutex protocol for shared cache mode.
1.16 +#
1.17 +# $Id: shared4.test,v 1.2 2008/08/04 03:51:24 danielk1977 Exp $
1.18 +
1.19 +set testdir [file dirname $argv0]
1.20 +source $testdir/tester.tcl
1.21 +db close
1.22 +puts hello
1.23 +
1.24 +# This script is only valid if we are running shared-cache mode in a
1.25 +# threadsafe-capable database engine.
1.26 +#
1.27 +ifcapable !shared_cache||!compound {
1.28 + finish_test
1.29 + return
1.30 +}
1.31 +set ::enable_shared_cache [sqlite3_enable_shared_cache 1]
1.32 +
1.33 +# Prepare multiple databases in shared cache mode.
1.34 +#
1.35 +do_test shared4-1.1 {
1.36 + file delete -force test1.db test1.db-journal
1.37 + file delete -force test2.db test2.db-journal
1.38 + file delete -force test3.db test3.db-journal
1.39 + file delete -force test4.db test4.db-journal
1.40 + sqlite3 db1 test1.db
1.41 + sqlite3 db2 test2.db
1.42 + sqlite3 db3 test3.db
1.43 + sqlite3 db4 test4.db
1.44 + db1 eval {
1.45 + CREATE TABLE t1(a);
1.46 + INSERT INTO t1 VALUES(111);
1.47 + }
1.48 + db2 eval {
1.49 + CREATE TABLE t2(b);
1.50 + INSERT INTO t2 VALUES(222);
1.51 + }
1.52 + db3 eval {
1.53 + CREATE TABLE t3(c);
1.54 + INSERT INTO t3 VALUES(333);
1.55 + }
1.56 + db4 eval {
1.57 + CREATE TABLE t4(d);
1.58 + INSERT INTO t4 VALUES(444);
1.59 + }
1.60 + db1 eval {
1.61 + ATTACH DATABASE 'test2.db' AS two;
1.62 + ATTACH DATABASE 'test3.db' AS three;
1.63 + ATTACH DATABASE 'test4.db' AS four;
1.64 + }
1.65 + db2 eval {
1.66 + ATTACH DATABASE 'test4.db' AS four;
1.67 + ATTACH DATABASE 'test3.db' AS three;
1.68 + ATTACH DATABASE 'test1.db' AS one;
1.69 + }
1.70 + db3 eval {
1.71 + ATTACH DATABASE 'test1.db' AS one;
1.72 + ATTACH DATABASE 'test2.db' AS two;
1.73 + ATTACH DATABASE 'test4.db' AS four;
1.74 + }
1.75 + db4 eval {
1.76 + ATTACH DATABASE 'test3.db' AS three;
1.77 + ATTACH DATABASE 'test2.db' AS two;
1.78 + ATTACH DATABASE 'test1.db' AS one;
1.79 + }
1.80 + db1 eval {
1.81 + SELECT a FROM t1 UNION ALL
1.82 + SELECT b FROM t2 UNION ALL
1.83 + SELECT c FROM t3 UNION ALL
1.84 + SELECT d FROM t4;
1.85 + }
1.86 +} {111 222 333 444}
1.87 +do_test shared4-1.2 {
1.88 + db2 eval {
1.89 + SELECT a FROM t1 UNION ALL
1.90 + SELECT b FROM t2 UNION ALL
1.91 + SELECT d FROM t4 UNION ALL
1.92 + SELECT c FROM t3;
1.93 + }
1.94 +} {111 222 444 333}
1.95 +do_test shared4-1.3 {
1.96 + db3 eval {
1.97 + SELECT a FROM t1 UNION ALL
1.98 + SELECT c FROM t3 UNION ALL
1.99 + SELECT b FROM t2 UNION ALL
1.100 + SELECT d FROM t4;
1.101 + }
1.102 +} {111 333 222 444}
1.103 +do_test shared4-1.4 {
1.104 + db4 eval {
1.105 + SELECT a FROM t1 UNION ALL
1.106 + SELECT c FROM t3 UNION ALL
1.107 + SELECT d FROM t4 UNION ALL
1.108 + SELECT b FROM t2;
1.109 + }
1.110 +} {111 333 444 222}
1.111 +do_test shared4-1.5 {
1.112 + db3 eval {
1.113 + SELECT a FROM t1 UNION ALL
1.114 + SELECT d FROM t4 UNION ALL
1.115 + SELECT b FROM t2 UNION ALL
1.116 + SELECT c FROM t3;
1.117 + }
1.118 +} {111 444 222 333}
1.119 +do_test shared4-1.6 {
1.120 + db4 eval {
1.121 + SELECT a FROM t1 UNION ALL
1.122 + SELECT d FROM t4 UNION ALL
1.123 + SELECT c FROM t3 UNION ALL
1.124 + SELECT b FROM t2;
1.125 + }
1.126 +} {111 444 333 222}
1.127 +do_test shared4-1.7 {
1.128 + db1 eval {
1.129 + SELECT b FROM t2 UNION ALL
1.130 + SELECT a FROM t1 UNION ALL
1.131 + SELECT c FROM t3 UNION ALL
1.132 + SELECT d FROM t4;
1.133 + }
1.134 +} {222 111 333 444}
1.135 +do_test shared4-1.8 {
1.136 + db2 eval {
1.137 + SELECT b FROM t2 UNION ALL
1.138 + SELECT a FROM t1 UNION ALL
1.139 + SELECT d FROM t4 UNION ALL
1.140 + SELECT c FROM t3;
1.141 + }
1.142 +} {222 111 444 333}
1.143 +do_test shared4-1.9 {
1.144 + db3 eval {
1.145 + SELECT b FROM t2 UNION ALL
1.146 + SELECT c FROM t3 UNION ALL
1.147 + SELECT a FROM t1 UNION ALL
1.148 + SELECT d FROM t4;
1.149 + }
1.150 +} {222 333 111 444}
1.151 +do_test shared4-1.10 {
1.152 + db4 eval {
1.153 + SELECT b FROM t2 UNION ALL
1.154 + SELECT c FROM t3 UNION ALL
1.155 + SELECT d FROM t4 UNION ALL
1.156 + SELECT a FROM t1;
1.157 + }
1.158 +} {222 333 444 111}
1.159 +do_test shared4-1.11 {
1.160 + db1 eval {
1.161 + SELECT c FROM t3 UNION ALL
1.162 + SELECT a FROM t1 UNION ALL
1.163 + SELECT b FROM t2 UNION ALL
1.164 + SELECT d FROM t4;
1.165 + }
1.166 +} {333 111 222 444}
1.167 +do_test shared4-1.12 {
1.168 + db2 eval {
1.169 + SELECT c FROM t3 UNION ALL
1.170 + SELECT a FROM t1 UNION ALL
1.171 + SELECT d FROM t4 UNION ALL
1.172 + SELECT b FROM t2;
1.173 + }
1.174 +} {333 111 444 222}
1.175 +
1.176 +do_test shared4-2.1 {
1.177 + db1 eval {
1.178 + UPDATE t1 SET a=a+1000;
1.179 + UPDATE t2 SET b=b+2000;
1.180 + UPDATE t3 SET c=c+3000;
1.181 + UPDATE t4 SET d=d+4000;
1.182 + }
1.183 + db2 eval {
1.184 + UPDATE t1 SET a=a+10000;
1.185 + UPDATE t2 SET b=b+20000;
1.186 + UPDATE t3 SET c=c+30000;
1.187 + UPDATE t4 SET d=d+40000;
1.188 + }
1.189 + db3 eval {
1.190 + UPDATE t1 SET a=a+100000;
1.191 + UPDATE t2 SET b=b+200000;
1.192 + UPDATE t3 SET c=c+300000;
1.193 + UPDATE t4 SET d=d+400000;
1.194 + }
1.195 + db4 eval {
1.196 + UPDATE t1 SET a=a+1000000;
1.197 + UPDATE t2 SET b=b+2000000;
1.198 + UPDATE t3 SET c=c+3000000;
1.199 + UPDATE t4 SET d=d+4000000;
1.200 + }
1.201 + db1 eval {
1.202 + SELECT a FROM t1 UNION ALL
1.203 + SELECT b FROM t2 UNION ALL
1.204 + SELECT c FROM t3 UNION ALL
1.205 + SELECT d FROM t4;
1.206 + }
1.207 +} {1111111 2222222 3333333 4444444}
1.208 +do_test shared4-2.2 {
1.209 + db2 eval {
1.210 + SELECT a FROM t1 UNION ALL
1.211 + SELECT b FROM t2 UNION ALL
1.212 + SELECT d FROM t4 UNION ALL
1.213 + SELECT c FROM t3;
1.214 + }
1.215 +} {1111111 2222222 4444444 3333333}
1.216 +do_test shared4-2.3 {
1.217 + db3 eval {
1.218 + SELECT a FROM t1 UNION ALL
1.219 + SELECT c FROM t3 UNION ALL
1.220 + SELECT b FROM t2 UNION ALL
1.221 + SELECT d FROM t4;
1.222 + }
1.223 +} {1111111 3333333 2222222 4444444}
1.224 +do_test shared4-2.4 {
1.225 + db4 eval {
1.226 + SELECT a FROM t1 UNION ALL
1.227 + SELECT c FROM t3 UNION ALL
1.228 + SELECT d FROM t4 UNION ALL
1.229 + SELECT b FROM t2;
1.230 + }
1.231 +} {1111111 3333333 4444444 2222222}
1.232 +
1.233 +
1.234 +db1 close
1.235 +db2 close
1.236 +db3 close
1.237 +db4 close
1.238 +
1.239 +sqlite3_enable_shared_cache $::enable_shared_cache
1.240 +finish_test