]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add wal2 related tests to this branch.
authordan <dan@noemail.net>
Mon, 17 Dec 2018 18:26:48 +0000 (18:26 +0000)
committerdan <dan@noemail.net>
Mon, 17 Dec 2018 18:26:48 +0000 (18:26 +0000)
FossilOrigin-Name: 5645822039b9f36aeb986645106cac2d95b09964689deb767cadaa6ea1d1867f

manifest
manifest.uuid
src/wal.c
test/permutations.test
test/wal2concurrent.test
test/wal2recover2.test

index 3028d27aa32ef47d75f3b19509d7f5c75224822d..1ed1e81b4b6db347fe31b867178b66758db7cfeb 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Merge\schanges\sfrom\swal2\sbranch.
-D 2018-12-17T15:22:44.431
+C Add\swal2\srelated\stests\sto\sthis\sbranch.
+D 2018-12-17T18:26:48.041
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in 68d0ba0f0b533d5bc84c78c13a6ce84ee81183a67014caa47a969e67f028fa1c
@@ -594,7 +594,7 @@ F src/vdbesort.c 90aad5a92608f2dd771c96749beabdb562c9d881131a860a7a5bccf66dc3be7
 F src/vdbetrace.c 79d6dbbc479267b255a7de8080eee6e729928a0ef93ed9b0bfa5618875b48392
 F src/vtab.c 70188a745dc4e57d26e942681ff4b2912b7c8249ad5de3f60f0677b4337bcfaa
 F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
-F src/wal.c 2a9139e0ea215c2e8a896c4a610b6b85a6010f64177e1fd374ab007efd7dd787
+F src/wal.c 2640020e19d6d2f14ac02fdc468ea965388d956880221d4c8088f20077a85598
 F src/wal.h c398e0269e8f37495cedb63b5e288c2aac6f6d103d05fb55f4affec21311615d
 F src/walker.c fb94aadc9099ff9c6506d0a8b88d51266005bcaa265403f3d7caf732a562eb66
 F src/where.c 3818e8a736a05d2cb194e64399af707e367fbcc5c251d785804d02eaf121288e
@@ -1194,7 +1194,7 @@ F test/pagesize.test 5769fc62d8c890a83a503f67d47508dfdc543305
 F test/pcache.test c8acbedd3b6fd0f9a7ca887a83b11d24a007972b
 F test/pcache2.test af7f3deb1a819f77a6d0d81534e97d1cf62cd442
 F test/percentile.test 4243af26b8f3f4555abe166f723715a1f74c77ff
-F test/permutations.test c7090c0136224e2ca400f1e0a085dad13a4f40a03387881e26f1a4cd1344d557
+F test/permutations.test 2a639a69a3ddee195b36cb5118e7a6ac2a1a0a320b08fdbb32239bf88189ec30
 F test/pg_common.tcl 301ac19c1a52fd55166d26db929b3b89165c634d52b5f8ad76ea8cb06960db30
 F test/pragma.test c267bf02742c823a191960895b3d52933cebd7beee26757d1ed694f213fcd867
 F test/pragma2.test e5d5c176360c321344249354c0c16aec46214c9f
@@ -1610,10 +1610,10 @@ F test/vtab_shared.test 5253bff2355a9a3f014c15337da7e177ab0ef8ad
 F test/wal.test 613efec03e517e1775d86b993a54877d2e29a477
 F test/wal2.test a225bafac35a47765b890bacdeb57e5e81039f21cc18a1e8ce88eb76e56b843c
 F test/wal2big.test 0b4ec526f9ca4bbabc355042c38045ae2e253fb46eb327bb7693d0122bc6968b
-F test/wal2concurrent.test abb4c9d77e4cbd444aa95064f028805c2273c68440e45790b9da03f763fcad71
+F test/wal2concurrent.test 7fc3e570073683a2a28f42bda46ecf516f5bc82afd703c1fbf4aa38e18fb3361
 F test/wal2lock.test 0ef98d72dc6bcf7711dedd684760488400d9a9a6eec0dc5d3822060437793552
 F test/wal2recover.test ba8f4bc9397c838734619f9e759bd98b00e355347b3cf80a2e677610d231d5d8
-F test/wal2recover2.test 98749381c2e61574e181a2e288295a3bf93d12f57769db50ecea7fc211d9ad5c
+F test/wal2recover2.test 3176a03eccebb203e5c5635d94624bf573392fccb3f9d39d9d9a27aab96e4c88
 F test/wal2rewrite.test 6ca6f631ffcf871240beab5f02608913fd075c6d0d31310b026c8383c65c9f9c
 F test/wal2savepoint.test 29725383e7eb8b78fed46333d69dc45b4ed321db43ecc81766aadea991874bef
 F test/wal2simple.test 96206c98bf64ab20ec00a1c0f6c709e258b98b39f2149889361f31966ce5a703
@@ -1808,7 +1808,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 06bb80eeb84f57b1e8109a35f5b14992a2e23f2bf5a8921fa29087f96cb44d10 1a5aa73435b11fff0567672dc921d34aad57adf0381ad430e1389f39a6f025b7
-R 8e68c96578902ed8366e0be2c5f6b217
+P 85f49f0d7344611ac4157421273660c648f73ca62afa4faa8707475f21c67f7a
+R 65f394733f0ba62dea4c1755dadbd201
 U dan
-Z f14c191dc1b8f86bc4800ff2a6c15331
+Z 04eed859c773bffbf8a57cb8193cc4eb
index 27d6d7ae9e9ba0686fb0d50e6a933b988b680317..d9d3e057b4ac8d46a84beb47701b02cf30c3c7e1 100644 (file)
@@ -1 +1 @@
-85f49f0d7344611ac4157421273660c648f73ca62afa4faa8707475f21c67f7a
\ No newline at end of file
+5645822039b9f36aeb986645106cac2d95b09964689deb767cadaa6ea1d1867f
\ No newline at end of file
index d32e2a60bb7f34b0cb47ed2823af5f0c49e941a2..b7e2391041cf22d54876d5fbe5ef6d41f05c8a5c 100644 (file)
--- a/src/wal.c
+++ b/src/wal.c
@@ -551,7 +551,7 @@ struct WalIndexHdr {
 **   void walidxSetFile(WalIndexHdr*, int val);              // set file
 */
 #define walidxGetMxFrame(pHdr, iWal) \
-  ((iWal) ? ((pHdr)->mxFrame2 & 0x7FFFFFF) : (pHdr)->mxFrame)
+  ((iWal) ? ((pHdr)->mxFrame2 & 0x7FFFFFFF) : (pHdr)->mxFrame)
 
 static void walidxSetMxFrame(WalIndexHdr *pHdr, int iWal, u32 mxFrame){
   if( iWal ){
@@ -3766,6 +3766,7 @@ static int walUpgradeReadlock(Wal *pWal){
   int cnt;
   int rc;
   assert( pWal->writeLock && pWal->readLock==0 );
+  assert( isWalMode2(pWal)==0 );
   walUnlockShared(pWal, WAL_READ_LOCK(0));
   pWal->readLock = -1;
   cnt = 0;
index 4530baf88b73dc808f7ce026e61e6d7b1c7df63d..d7c03fd329c0fc387ce37586bed5c4a34eb2cab0 100644 (file)
@@ -440,6 +440,11 @@ waloverwrite.test walpersist.test walprotocol2.test
 walprotocol.test walro2.test walrofault.test walro.test
 walshared.test walslow.test wal.test
 wal2savepoint.test wal2lock.test wal2recover2.test
+
+wal2concurrent.test
+concurrent.test concurrent2.test concurrent3.test
+concurrent4.test concurrent5.test concurrent6.test
+concurrent7.test
 } 
 
 test_suite "coverage-pager" -description {
index 3375978becf2637499fe6f01fe8a1e5ff383f4db..a8b8f32d3ca84e81a835909c224a629b6e628797 100644 (file)
@@ -101,5 +101,64 @@ foreach tn {1 2} {
   }
 }
 
+do_multiclient_test tn {
+  do_test 2.$tn.1 {
+    sql1 {
+      PRAGMA auto_vacuum = OFF;
+      CREATE TABLE t1(x UNIQUE);
+      CREATE TABLE t2(x UNIQUE);
+      PRAGMA journal_mode = wal2;
+      PRAGMA journal_size_limit = 15000;
+    }
+  } {wal2 15000}
+
+  do_test 2.$tn.2 {
+    sql1 {
+      WITH s(i) AS (
+        SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<=10
+      )
+      INSERT INTO t1 SELECT randomblob(800) FROM s;
+    }
+  } {}
+
+  do_test 2.$tn.3 {
+    sql1 { DELETE FROM t1 WHERE (rowid%4)==0 }
+    list [expr [file size test.db-wal]>15000] \
+         [expr [file size test.db-wal2]>15000]
+  } {1 0}
+
+  do_test 2.$tn.4 {
+    sql1 { PRAGMA wal_checkpoint; }
+    sql1 { 
+      BEGIN CONCURRENT;
+        INSERT INTO t1 VALUES(randomblob(800));
+    }
+  } {}
+
+  do_test 2.$tn.5 {
+    sql2 { 
+      PRAGMA journal_size_limit = 15000;
+      INSERT INTO t2 VALUES(randomblob(800));
+      INSERT INTO t2 VALUES(randomblob(800));
+      INSERT INTO t2 VALUES(randomblob(800));
+      INSERT INTO t2 VALUES(randomblob(800));
+      INSERT INTO t2 VALUES(randomblob(800));
+      DELETE FROM t2;
+    }
+    list [expr [file size test.db-wal]>15000] \
+         [expr [file size test.db-wal2]>15000]
+  } {1 1}
+
+  do_test 2.$tn.6 {
+    sql1 { 
+        INSERT INTO t1 VALUES(randomblob(800));
+      COMMIT;
+      PRAGMA integrity_check;
+    }
+  } {ok}
+}
+
+
+
 finish_test
 
index 11804c34a3f91178795270d8bf57f296ee1045a0..a8614dccf2d3dd97161bec72d3b3df348db344dd 100644 (file)
@@ -184,7 +184,6 @@ foreach {tn file field} {
     forcecopy test.db-wal2 test.db2-wal
     forcecopy test.db-wal test.db2-wal2
     wal_incr_hdrfield $file $field
-    breakpoint
     sqlite3 db2 test.db2
     execsql {
       SELECT sum(x) FROM t1;
@@ -211,7 +210,6 @@ foreach {tn nCkpt1 nCkpt2 res} [list \
     wal_set_nckpt test.db2-wal  $nCkpt1
     wal_set_follow test.db2-wal test.db2-wal2
 
-    if {$tn==1} breakpoint
 
     sqlite3 db2 test.db2
     execsql {
@@ -222,6 +220,51 @@ foreach {tn nCkpt1 nCkpt2 res} [list \
   db2 close
 }
 
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 1.0 {
+  CREATE TABLE t1(a, b, c);
+  CREATE INDEX t1a ON t1(a);
+  CREATE INDEX t1b ON t1(b);
+  CREATE INDEX t1c ON t1(c);
+  PRAGMA journal_mode = wal2;
+
+  INSERT INTO t1 VALUES(randomblob(50), randomblob(50), randomblob(50));
+  INSERT INTO t1 VALUES(randomblob(50), randomblob(50), randomblob(50));
+  INSERT INTO t1 VALUES(randomblob(50), randomblob(50), randomblob(50));
+  PRAGMA journal_size_limit = 5000;
+  INSERT INTO t1 VALUES(randomblob(50), randomblob(50), randomblob(50));
+  INSERT INTO t1 VALUES(randomblob(50), randomblob(50), randomblob(50));
+  INSERT INTO t1 VALUES(randomblob(50), randomblob(50), randomblob(50));
+  INSERT INTO t1 VALUES(randomblob(50), randomblob(50), randomblob(50));
+  INSERT INTO t1 VALUES(randomblob(50), randomblob(50), randomblob(50));
+} {wal2 5000}
+
+do_test 2.1 {
+  forcecopy test.db test.db2
+  forcecopy test.db-wal2 test.db2-wal
+  forcecopy test.db-wal test.db2-wal2
+  
+  hexio_write test.db2-wal 5000 1234567890
+} {5}
+
+do_test 2.2 {
+  sqlite3 db2 test.db2
+  breakpoint
+  execsql {
+    SELECT count(*) FROM t1;
+    PRAGMA integrity_check
+  } db2
+} {4 ok}
+
+do_test 2.3 {
+  execsql {
+    INSERT INTO t1 VALUES(randomblob(50), randomblob(50), randomblob(50));
+    SELECT count(*) FROM t1;
+    PRAGMA integrity_check
+  } db2
+} {5 ok}
+
 
 finish_test