-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
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
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
-853c621bb2cf9995a6c942376a3760b90abeacafef29f364bea41d270aee385f
\ No newline at end of file
+952b4cae49cc6872e6e6075eeaca46506170377237ab74884cefd144bb52c743
\ No newline at end of file
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);
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
);
}