]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Revise the testthread3.walthread6 test case to better demonstrate the advantages...
authordan <Dan Kennedy>
Mon, 19 Jul 2021 20:34:08 +0000 (20:34 +0000)
committerdan <Dan Kennedy>
Mon, 19 Jul 2021 20:34:08 +0000 (20:34 +0000)
FossilOrigin-Name: 952b4cae49cc6872e6e6075eeaca46506170377237ab74884cefd144bb52c743

manifest
manifest.uuid
test/threadtest3.c

index bddb9aed30e94e7a153ffa8f52271856eee79667..8bbb9878ce8ba33f1f1f9a9c11b8609106f7ffe6 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Merge\strunk\swith\sthis\sbranch.
-D 2021-07-19T17:06:43.780
+C Revise\sthe\stestthread3.walthread6\stest\scase\sto\sbetter\sdemonstrate\sthe\sadvantages\sof\sblocking\slocks.
+D 2021-07-19T20:34:08.583
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -1465,7 +1465,7 @@ F test/thread2.test f35d2106452b77523b3a2b7d1dcde2e5ee8f9e46
 F test/thread_common.tcl 334639cadcb9f912bf82aa73f49efd5282e6cadd
 F test/threadtest1.c 6029d9c5567db28e6dc908a0c63099c3ba6c383b
 F test/threadtest2.c a70a8e94bef23339d34226eb9521015ef99f4df8
-F test/threadtest3.c 6912b782e1ec573974f7a146c17aa04145fa13427f98209db6d89066d622c80d
+F test/threadtest3.c 7d68734b4a1697f851db18c79ae5182909deed80f44205c7d2b7bed5059a8d59
 F test/threadtest4.c c1e67136ceb6c7ec8184e56ac61db28f96bd2925
 F test/threadtest5.c 9b4d782c58d8915d7e955ff8051f3d03628bda0d33b82971ea8c0f2f2808c421
 F test/time-wordcount.sh 8e0b0f8109367827ad5d58f5cc849705731e4b90
@@ -1920,7 +1920,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 4a9f5ce79d349a5a352c4a5524ace82611ab1058a3e6cb012ee7d0071f9c8cd2 4ce585fb07274284e3add6adcb66ed06e4b109584704d1ec7152bf43ca8d5d85
-R 39e619a8edaf99a2aad2b52392a1b555
+P 853c621bb2cf9995a6c942376a3760b90abeacafef29f364bea41d270aee385f
+R f527861180a06f0db63219f4b714e45c
 U dan
-Z 82965873af02dab516e7cbadbd7c025e
+Z b17984f68a1f0fc20c94e3c2e97e886a
index 1e34de67a5c1d24b50dbde800d3049457da5c16a..2d5cf003bb8e727cadde525eebe79c9574ad8958 100644 (file)
@@ -1 +1 @@
-853c621bb2cf9995a6c942376a3760b90abeacafef29f364bea41d270aee385f
\ No newline at end of file
+952b4cae49cc6872e6e6075eeaca46506170377237ab74884cefd144bb52c743
\ No newline at end of file
index 5848c57d9679d8741f688fb0d0020c02248f2047..98250b7114bc32d69031405c9c9a97f61632744f 100644 (file)
@@ -1510,10 +1510,14 @@ static int walthread6_walhook(
 static char *walthread6_thread(int iTid, void *pArg){
   Error err = {0};
   Sqlite db = {0};
+  int nBlk = 0;
+  int nInsertPerTransaction = 1;
+  i64 iPrev = -1000000;
 
   Walthread6 res;
   memset(&res, 0, sizeof(res));
 
+
   opendb(&err, &db, "test.db", 0);
   sqlite3_busy_timeout(db.db, 1000);
   sqlite3_wal_hook(db.db, walthread6_walhook, (void*)&res);
@@ -1525,20 +1529,27 @@ static char *walthread6_thread(int iTid, void *pArg){
       res.nBusy++;
       clear_error(&err, SQLITE_BUSY);
     }else{
+      i64 iRowid;
       res.nInsert++;
-      for(i=0; i<20; i++){
+      for(i=0; i<nInsertPerTransaction; i++){
         execsql(&err, &db, "INSERT INTO t1(b) VALUES(random())");
       }
-      usleep(10*1000);
+
+      iRowid = sqlite3_last_insert_rowid(db.db);
+      if( iRowid!=(iPrev+nInsertPerTransaction) ) nBlk++;
+      iPrev = iRowid;
+
+      sqlite3_sleep(10);
       execsql(&err, &db, "COMMIT");
+      sqlite3_sleep(1);
     }
   }
 
   closedb(&err, &db);
   print_and_free_err(&err);
   return sqlite3_mprintf(
-      "%d transactions (%d busy), max-wal-size=%d frames",
-      res.nInsert, res.nBusy, res.nMaxFrame
+      "%d transactions (%d busy) in %d blocks, max-wal-size=%d frames",
+      res.nInsert, res.nBusy, nBlk, res.nMaxFrame
   );
 }