Annotation of embedaddon/sqlite3/test/shared4.test, revision 1.1.1.1

1.1       misho       1: # 2008 July 14
                      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: # Test the btree mutex protocol for shared cache mode.
                     13: #
                     14: # $Id: shared4.test,v 1.2 2008/08/04 03:51:24 danielk1977 Exp $
                     15: 
                     16: set testdir [file dirname $argv0]
                     17: source $testdir/tester.tcl
                     18: db close
                     19: puts hello
                     20: 
                     21: # This script is only valid if we are running shared-cache mode in a
                     22: # threadsafe-capable database engine.
                     23: #
                     24: ifcapable !shared_cache||!compound {
                     25:   finish_test
                     26:   return
                     27: }
                     28: set ::enable_shared_cache [sqlite3_enable_shared_cache 1]
                     29: 
                     30: # Prepare multiple databases in shared cache mode.
                     31: #
                     32: do_test shared4-1.1 {
                     33:   forcedelete test1.db test1.db-journal
                     34:   forcedelete test2.db test2.db-journal
                     35:   forcedelete test3.db test3.db-journal
                     36:   forcedelete test4.db test4.db-journal
                     37:   sqlite3 db1 test1.db
                     38:   sqlite3 db2 test2.db
                     39:   sqlite3 db3 test3.db
                     40:   sqlite3 db4 test4.db
                     41:   db1 eval {
                     42:     CREATE TABLE t1(a);
                     43:     INSERT INTO t1 VALUES(111);
                     44:   }
                     45:   db2 eval {
                     46:     CREATE TABLE t2(b);
                     47:     INSERT INTO t2 VALUES(222);
                     48:   }
                     49:   db3 eval {
                     50:     CREATE TABLE t3(c);
                     51:     INSERT INTO t3 VALUES(333);
                     52:   }
                     53:   db4 eval {
                     54:     CREATE TABLE t4(d);
                     55:     INSERT INTO t4 VALUES(444);
                     56:   }
                     57:   db1 eval {
                     58:     ATTACH DATABASE 'test2.db' AS two;
                     59:     ATTACH DATABASE 'test3.db' AS three;
                     60:     ATTACH DATABASE 'test4.db' AS four;
                     61:   }
                     62:   db2 eval {
                     63:     ATTACH DATABASE 'test4.db' AS four;
                     64:     ATTACH DATABASE 'test3.db' AS three;
                     65:     ATTACH DATABASE 'test1.db' AS one;
                     66:   }
                     67:   db3 eval {
                     68:     ATTACH DATABASE 'test1.db' AS one;
                     69:     ATTACH DATABASE 'test2.db' AS two;
                     70:     ATTACH DATABASE 'test4.db' AS four;
                     71:   }
                     72:   db4 eval {
                     73:     ATTACH DATABASE 'test3.db' AS three;
                     74:     ATTACH DATABASE 'test2.db' AS two;
                     75:     ATTACH DATABASE 'test1.db' AS one;
                     76:   }
                     77:   db1 eval {
                     78:      SELECT a FROM t1 UNION ALL
                     79:      SELECT b FROM t2 UNION ALL
                     80:      SELECT c FROM t3 UNION ALL
                     81:      SELECT d FROM t4;
                     82:   }
                     83: } {111 222 333 444}
                     84: do_test shared4-1.2 {
                     85:   db2 eval {
                     86:      SELECT a FROM t1 UNION ALL
                     87:      SELECT b FROM t2 UNION ALL
                     88:      SELECT d FROM t4 UNION ALL
                     89:      SELECT c FROM t3;
                     90:   }
                     91: } {111 222 444 333}
                     92: do_test shared4-1.3 {
                     93:   db3 eval {
                     94:      SELECT a FROM t1 UNION ALL
                     95:      SELECT c FROM t3 UNION ALL
                     96:      SELECT b FROM t2 UNION ALL
                     97:      SELECT d FROM t4;
                     98:   }
                     99: } {111 333 222 444}
                    100: do_test shared4-1.4 {
                    101:   db4 eval {
                    102:      SELECT a FROM t1 UNION ALL
                    103:      SELECT c FROM t3 UNION ALL
                    104:      SELECT d FROM t4 UNION ALL
                    105:      SELECT b FROM t2;
                    106:   }
                    107: } {111 333 444 222}
                    108: do_test shared4-1.5 {
                    109:   db3 eval {
                    110:      SELECT a FROM t1 UNION ALL
                    111:      SELECT d FROM t4 UNION ALL
                    112:      SELECT b FROM t2 UNION ALL
                    113:      SELECT c FROM t3;
                    114:   }
                    115: } {111 444 222 333}
                    116: do_test shared4-1.6 {
                    117:   db4 eval {
                    118:      SELECT a FROM t1 UNION ALL
                    119:      SELECT d FROM t4 UNION ALL
                    120:      SELECT c FROM t3 UNION ALL
                    121:      SELECT b FROM t2;
                    122:   }
                    123: } {111 444 333 222}
                    124: do_test shared4-1.7 {
                    125:   db1 eval {
                    126:      SELECT b FROM t2 UNION ALL
                    127:      SELECT a FROM t1 UNION ALL
                    128:      SELECT c FROM t3 UNION ALL
                    129:      SELECT d FROM t4;
                    130:   }
                    131: } {222 111 333 444}
                    132: do_test shared4-1.8 {
                    133:   db2 eval {
                    134:      SELECT b FROM t2 UNION ALL
                    135:      SELECT a FROM t1 UNION ALL
                    136:      SELECT d FROM t4 UNION ALL
                    137:      SELECT c FROM t3;
                    138:   }
                    139: } {222 111 444 333}
                    140: do_test shared4-1.9 {
                    141:   db3 eval {
                    142:      SELECT b FROM t2 UNION ALL
                    143:      SELECT c FROM t3 UNION ALL
                    144:      SELECT a FROM t1 UNION ALL
                    145:      SELECT d FROM t4;
                    146:   }
                    147: } {222 333 111 444}
                    148: do_test shared4-1.10 {
                    149:   db4 eval {
                    150:      SELECT b FROM t2 UNION ALL
                    151:      SELECT c FROM t3 UNION ALL
                    152:      SELECT d FROM t4 UNION ALL
                    153:      SELECT a FROM t1;
                    154:   }
                    155: } {222 333 444 111}
                    156: do_test shared4-1.11 {
                    157:   db1 eval {
                    158:      SELECT c FROM t3 UNION ALL
                    159:      SELECT a FROM t1 UNION ALL
                    160:      SELECT b FROM t2 UNION ALL
                    161:      SELECT d FROM t4;
                    162:   }
                    163: } {333 111 222 444}
                    164: do_test shared4-1.12 {
                    165:   db2 eval {
                    166:      SELECT c FROM t3 UNION ALL
                    167:      SELECT a FROM t1 UNION ALL
                    168:      SELECT d FROM t4 UNION ALL
                    169:      SELECT b FROM t2;
                    170:   }
                    171: } {333 111 444 222}
                    172: 
                    173: do_test shared4-2.1 {
                    174:   db1 eval {
                    175:     UPDATE t1 SET a=a+1000;
                    176:     UPDATE t2 SET b=b+2000;
                    177:     UPDATE t3 SET c=c+3000;
                    178:     UPDATE t4 SET d=d+4000;
                    179:   }
                    180:   db2 eval {
                    181:     UPDATE t1 SET a=a+10000;
                    182:     UPDATE t2 SET b=b+20000;
                    183:     UPDATE t3 SET c=c+30000;
                    184:     UPDATE t4 SET d=d+40000;
                    185:   }
                    186:   db3 eval {
                    187:     UPDATE t1 SET a=a+100000;
                    188:     UPDATE t2 SET b=b+200000;
                    189:     UPDATE t3 SET c=c+300000;
                    190:     UPDATE t4 SET d=d+400000;
                    191:   }
                    192:   db4 eval {
                    193:     UPDATE t1 SET a=a+1000000;
                    194:     UPDATE t2 SET b=b+2000000;
                    195:     UPDATE t3 SET c=c+3000000;
                    196:     UPDATE t4 SET d=d+4000000;
                    197:   }
                    198:   db1 eval {
                    199:      SELECT a FROM t1 UNION ALL
                    200:      SELECT b FROM t2 UNION ALL
                    201:      SELECT c FROM t3 UNION ALL
                    202:      SELECT d FROM t4;
                    203:   }
                    204: } {1111111 2222222 3333333 4444444}
                    205: do_test shared4-2.2 {
                    206:   db2 eval {
                    207:      SELECT a FROM t1 UNION ALL
                    208:      SELECT b FROM t2 UNION ALL
                    209:      SELECT d FROM t4 UNION ALL
                    210:      SELECT c FROM t3;
                    211:   }
                    212: } {1111111 2222222 4444444 3333333}
                    213: do_test shared4-2.3 {
                    214:   db3 eval {
                    215:      SELECT a FROM t1 UNION ALL
                    216:      SELECT c FROM t3 UNION ALL
                    217:      SELECT b FROM t2 UNION ALL
                    218:      SELECT d FROM t4;
                    219:   }
                    220: } {1111111 3333333 2222222 4444444}
                    221: do_test shared4-2.4 {
                    222:   db4 eval {
                    223:      SELECT a FROM t1 UNION ALL
                    224:      SELECT c FROM t3 UNION ALL
                    225:      SELECT d FROM t4 UNION ALL
                    226:      SELECT b FROM t2;
                    227:   }
                    228: } {1111111 3333333 4444444 2222222}
                    229: 
                    230: 
                    231: db1 close
                    232: db2 close
                    233: db3 close
                    234: db4 close
                    235: 
                    236: sqlite3_enable_shared_cache $::enable_shared_cache
                    237: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>