CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
shared4.test237 linesDownload Raw Back to test
1# 2008 July 142#3# The author disclaims copyright to this source code.  In place of4# 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 16set testdir [file dirname $argv0]17source $testdir/tester.tcl18db close19 20# This script is only valid if we are running shared-cache mode in a21# threadsafe-capable database engine.22#23ifcapable !shared_cache||!compound {24  finish_test25  return26}27set ::enable_shared_cache [sqlite3_enable_shared_cache 1]28 29# Prepare multiple databases in shared cache mode.30#31do_test shared4-1.1 {32  forcedelete test1.db test1.db-journal33  forcedelete test2.db test2.db-journal34  forcedelete test3.db test3.db-journal35  forcedelete test4.db test4.db-journal36  sqlite3 db1 test1.db37  sqlite3 db2 test2.db38  sqlite3 db3 test3.db39  sqlite3 db4 test4.db40  db1 eval {41    CREATE TABLE t1(a);42    INSERT INTO t1 VALUES(111);43  }44  db2 eval {45    CREATE TABLE t2(b);46    INSERT INTO t2 VALUES(222);47  }48  db3 eval {49    CREATE TABLE t3(c);50    INSERT INTO t3 VALUES(333);51  }52  db4 eval {53    CREATE TABLE t4(d);54    INSERT INTO t4 VALUES(444);55  }56  db1 eval {57    ATTACH DATABASE 'test2.db' AS two;58    ATTACH DATABASE 'test3.db' AS three;59    ATTACH DATABASE 'test4.db' AS four;60  }61  db2 eval {62    ATTACH DATABASE 'test4.db' AS four;63    ATTACH DATABASE 'test3.db' AS three;64    ATTACH DATABASE 'test1.db' AS one;65  }66  db3 eval {67    ATTACH DATABASE 'test1.db' AS one;68    ATTACH DATABASE 'test2.db' AS two;69    ATTACH DATABASE 'test4.db' AS four;70  }71  db4 eval {72    ATTACH DATABASE 'test3.db' AS three;73    ATTACH DATABASE 'test2.db' AS two;74    ATTACH DATABASE 'test1.db' AS one;75  }76  db1 eval {77     SELECT a FROM t1 UNION ALL78     SELECT b FROM t2 UNION ALL79     SELECT c FROM t3 UNION ALL80     SELECT d FROM t4;81  }82} {111 222 333 444}83do_test shared4-1.2 {84  db2 eval {85     SELECT a FROM t1 UNION ALL86     SELECT b FROM t2 UNION ALL87     SELECT d FROM t4 UNION ALL88     SELECT c FROM t3;89  }90} {111 222 444 333}91do_test shared4-1.3 {92  db3 eval {93     SELECT a FROM t1 UNION ALL94     SELECT c FROM t3 UNION ALL95     SELECT b FROM t2 UNION ALL96     SELECT d FROM t4;97  }98} {111 333 222 444}99do_test shared4-1.4 {100  db4 eval {101     SELECT a FROM t1 UNION ALL102     SELECT c FROM t3 UNION ALL103     SELECT d FROM t4 UNION ALL104     SELECT b FROM t2;105  }106} {111 333 444 222}107do_test shared4-1.5 {108  db3 eval {109     SELECT a FROM t1 UNION ALL110     SELECT d FROM t4 UNION ALL111     SELECT b FROM t2 UNION ALL112     SELECT c FROM t3;113  }114} {111 444 222 333}115do_test shared4-1.6 {116  db4 eval {117     SELECT a FROM t1 UNION ALL118     SELECT d FROM t4 UNION ALL119     SELECT c FROM t3 UNION ALL120     SELECT b FROM t2;121  }122} {111 444 333 222}123do_test shared4-1.7 {124  db1 eval {125     SELECT b FROM t2 UNION ALL126     SELECT a FROM t1 UNION ALL127     SELECT c FROM t3 UNION ALL128     SELECT d FROM t4;129  }130} {222 111 333 444}131do_test shared4-1.8 {132  db2 eval {133     SELECT b FROM t2 UNION ALL134     SELECT a FROM t1 UNION ALL135     SELECT d FROM t4 UNION ALL136     SELECT c FROM t3;137  }138} {222 111 444 333}139do_test shared4-1.9 {140  db3 eval {141     SELECT b FROM t2 UNION ALL142     SELECT c FROM t3 UNION ALL143     SELECT a FROM t1 UNION ALL144     SELECT d FROM t4;145  }146} {222 333 111 444}147do_test shared4-1.10 {148  db4 eval {149     SELECT b FROM t2 UNION ALL150     SELECT c FROM t3 UNION ALL151     SELECT d FROM t4 UNION ALL152     SELECT a FROM t1;153  }154} {222 333 444 111}155do_test shared4-1.11 {156  db1 eval {157     SELECT c FROM t3 UNION ALL158     SELECT a FROM t1 UNION ALL159     SELECT b FROM t2 UNION ALL160     SELECT d FROM t4;161  }162} {333 111 222 444}163do_test shared4-1.12 {164  db2 eval {165     SELECT c FROM t3 UNION ALL166     SELECT a FROM t1 UNION ALL167     SELECT d FROM t4 UNION ALL168     SELECT b FROM t2;169  }170} {333 111 444 222}171 172do_test shared4-2.1 {173  db1 eval {174    UPDATE t1 SET a=a+1000;175    UPDATE t2 SET b=b+2000;176    UPDATE t3 SET c=c+3000;177    UPDATE t4 SET d=d+4000;178  }179  db2 eval {180    UPDATE t1 SET a=a+10000;181    UPDATE t2 SET b=b+20000;182    UPDATE t3 SET c=c+30000;183    UPDATE t4 SET d=d+40000;184  }185  db3 eval {186    UPDATE t1 SET a=a+100000;187    UPDATE t2 SET b=b+200000;188    UPDATE t3 SET c=c+300000;189    UPDATE t4 SET d=d+400000;190  }191  db4 eval {192    UPDATE t1 SET a=a+1000000;193    UPDATE t2 SET b=b+2000000;194    UPDATE t3 SET c=c+3000000;195    UPDATE t4 SET d=d+4000000;196  }197  db1 eval {198     SELECT a FROM t1 UNION ALL199     SELECT b FROM t2 UNION ALL200     SELECT c FROM t3 UNION ALL201     SELECT d FROM t4;202  }203} {1111111 2222222 3333333 4444444}204do_test shared4-2.2 {205  db2 eval {206     SELECT a FROM t1 UNION ALL207     SELECT b FROM t2 UNION ALL208     SELECT d FROM t4 UNION ALL209     SELECT c FROM t3;210  }211} {1111111 2222222 4444444 3333333}212do_test shared4-2.3 {213  db3 eval {214     SELECT a FROM t1 UNION ALL215     SELECT c FROM t3 UNION ALL216     SELECT b FROM t2 UNION ALL217     SELECT d FROM t4;218  }219} {1111111 3333333 2222222 4444444}220do_test shared4-2.4 {221  db4 eval {222     SELECT a FROM t1 UNION ALL223     SELECT c FROM t3 UNION ALL224     SELECT d FROM t4 UNION ALL225     SELECT b FROM t2;226  }227} {1111111 3333333 4444444 2222222}228 229 230db1 close231db2 close232db3 close233db4 close234 235sqlite3_enable_shared_cache $::enable_shared_cache236finish_test237