diff options
-rw-r--r-- | ext/wasm/batch-runner.html | 2 | ||||
-rw-r--r-- | ext/wasm/batch-runner.js | 60 | ||||
-rw-r--r-- | ext/wasm/demo-123.js | 2 | ||||
-rw-r--r-- | ext/wasm/speedtest1-worker.html | 6 | ||||
-rw-r--r-- | manifest | 18 | ||||
-rw-r--r-- | manifest.uuid | 2 |
6 files changed, 28 insertions, 62 deletions
diff --git a/ext/wasm/batch-runner.html b/ext/wasm/batch-runner.html index a07fe930a..e7a2b1e08 100644 --- a/ext/wasm/batch-runner.html +++ b/ext/wasm/batch-runner.html @@ -69,8 +69,6 @@ <label for='cb-reverse-log-order'>Reverse log order (newest first)</label> </span> <div id='test-output'></div> - <!-- batch-runner.js "should" work with sqlite3-kvvfs so long as - its data sets don't violate the the storage limits. --> <script src="sqlite3-wasmfs.js"></script> <script src="common/SqliteTestUtil.js"></script> <script src="batch-runner.js"></script> diff --git a/ext/wasm/batch-runner.js b/ext/wasm/batch-runner.js index 36083e62f..c40157bb5 100644 --- a/ext/wasm/batch-runner.js +++ b/ext/wasm/batch-runner.js @@ -18,6 +18,11 @@ const toss = function(...args){throw new Error(args.join(' '))}; const warn = console.warn.bind(console); let sqlite3; + const urlParams = new URL(self.location.href).searchParams; + const cacheSize = (()=>{ + if(urlParams.has('cachesize')) return +urlParams.get('cachesize'); + return 200; + })(); /** Throws if the given sqlite3 result code is not 0. */ const checkSqliteRc = (dbh,rc)=>{ @@ -63,51 +68,8 @@ // This would be SO much easier with the oo1 API, but we specifically want to // inject metrics we can't get via that API, and we cannot reliably (OPFS) // open the same DB twice to clear it using that API, so... - let pStmt = 0, pSqlBegin; - const capi = sqlite3.capi, wasm = capi.wasm; - const scope = wasm.scopedAllocPush(); - try { - const toDrop = [/* type, name pairs */]; - const ppStmt = wasm.scopedAllocPtr(); - // Collect list of tables/etc we can drop... - let rc = capi.sqlite3_prepare_v2(db.handle, sqlToDrop, -1, ppStmt, null); - checkSqliteRc(db.handle,rc); - pStmt = wasm.getPtrValue(ppStmt); - while(capi.SQLITE_ROW===capi.sqlite3_step(pStmt)){ - toDrop.push(capi.sqlite3_column_text(pStmt,0), - capi.sqlite3_column_text(pStmt,1)); - } - capi.sqlite3_finalize(pStmt); - pStmt = 0; - // Build SQL to delete them... - const sqlDrop = []; - const doDrop = 0!==toDrop.length; - while(doDrop){ - const name = toDrop.pop(); - if(name){ - const type = toDrop.pop(); - switch(type){ - case 'table': case 'view': case 'trigger': case 'index': - sqlDrop.push('DROP '+type+' '+name); - break; - default: - warn("Unhandled db entry type:",type,name); - continue; - } - }else{ - sqlDrop.push("VACUUM"); - break; - } - } - if(sqlDrop.length){ - const sqlClean = sqlDrop.join(';\n'); - console.log("Cleaning up",db.id,":",sqlClean); - capi.sqlite3_exec(db.handle, sqlClean, 0, 0, 0); - } - }finally{ - if(pStmt) capi.sqlite3_finalize(pStmt); - wasm.scopedAllocPop(scope); - } + const rc = sqlite3.capi.wasm.exports.sqlite3_wasm_db_reset(db.handle); + App.logHtml("reset db rc =",rc,db.id, db.filename); }; @@ -521,6 +483,10 @@ if('websql' === dbId){ d.handle = self.openDatabase('batch-runner', '0.1', 'foo', 1024 * 1024 * 50); d.clear = ()=>clearDbWebSQL(d); + d.handle.transaction(function(tx){ + tx.executeSql("PRAGMA cache_size="+cacheSize); + App.logHtml(dbId,"cache_size =",cacheSize); + }); }else{ const capi = this.sqlite3.capi, wasm = capi.wasm; const stack = wasm.scopedAllocPush(); @@ -531,6 +497,8 @@ const rc = capi.sqlite3_open_v2(d.filename, ppDb, oFlags, null); pDb = wasm.getPtrValue(ppDb) if(rc) toss("sqlite3_open_v2() failed with code",rc); + capi.sqlite3_exec(pDb, "PRAGMA cache_size="+cacheSize, 0, 0, 0); + this.logHtml(dbId,"cache_size =",cacheSize); }catch(e){ if(pDb) capi.sqlite3_close_v2(pDb); }finally{ @@ -540,7 +508,7 @@ d.clear = ()=>clearDbSqlite(d); } d.clear(); - this.logHtml("Opened db:",dbId); + this.logHtml("Opened db:",dbId,d.filename); console.log("db =",d); return d; }, diff --git a/ext/wasm/demo-123.js b/ext/wasm/demo-123.js index 67c1094f0..ff36aaf4e 100644 --- a/ext/wasm/demo-123.js +++ b/ext/wasm/demo-123.js @@ -45,7 +45,7 @@ const capi = sqlite3.capi/*C-style API*/, oo = sqlite3.oo1/*high-level OO API*/; log("sqlite3 version",capi.sqlite3_libversion(), capi.sqlite3_sourceid()); - const db = new oo.DB("/mydb.sqlite3"); + const db = new oo.DB("/mydb.sqlite3",'ct'); log("transient db =",db.filename); /** Never(!) rely on garbage collection to clean up DBs and diff --git a/ext/wasm/speedtest1-worker.html b/ext/wasm/speedtest1-worker.html index 87c504f4b..2c05fe6b1 100644 --- a/ext/wasm/speedtest1-worker.html +++ b/ext/wasm/speedtest1-worker.html @@ -31,7 +31,7 @@ <div id='toolbar-select'> <select id='select-flags' size='10' multiple></select> <div>The following flags can be passed as URL parameters: - vfs=NAME, size=N, journal=MODE + vfs=NAME, size=N, journal=MODE, cachesize=BYTES </div> </div> <div class='toolbar-inner-vertical'> @@ -183,7 +183,7 @@ const getSelectedFlags = ()=>{ const f = Array.prototype.map.call(eFlags.selectedOptions, (v)=>v.value); [ - 'size', 'vfs', 'journal' + 'size', 'vfs', 'journal', 'cachesize' ].forEach(function(k){ if(urlParams.has(k)) f.push('--'+k, urlParams.get(k)); }); @@ -214,7 +214,7 @@ (e.g. --script FILE). */ flags["--autovacuum"] = "Enable AUTOVACUUM mode"; flags["--big-transactions"] = "Important for tests 410 and 510!"; - //flags["--cachesize"] = "N Set the cache size to N"; + //flags["--cachesize"] = "N Set the cache size to N pages"; flags["--checkpoint"] = "Run PRAGMA wal_checkpoint after each test case"; flags["--exclusive"] = "Enable locking_mode=EXCLUSIVE"; flags["--explain"] = "Like --sqlonly but with added EXPLAIN keywords"; @@ -1,5 +1,5 @@ -C Omit\sWAL\smode\sfrom\sthe\swasm\sbuild. -D 2022-10-03T18:05:27.610 +C Add\sconfigurable\scache_size\sto\sbatch-runner\sand\sspeedtest1-worker.\sAdd\sSQL\stracing\sto\sdemo-123.js\sjust\sfor\sdemonstration's\ssake. +D 2022-10-03T18:07:25.896 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -492,15 +492,15 @@ F ext/wasm/api/sqlite3-api-prologue.js 915e3119d2c3cd53afb9575d1681646f3cbebbfc6 F ext/wasm/api/sqlite3-api-worker1.js 7f4f46cb6b512a48572d7567233896e6a9c46570c44bdc3d13419730c7c221c8 F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9 F ext/wasm/api/sqlite3-wasm.c 3838ad650c9f92803e810f09a1253b25252a6533b09620b3450194d72084094f -F ext/wasm/batch-runner.html c363032aba7a525920f61f8be112a29459f73f07e46f0ba3b7730081a617826e -F ext/wasm/batch-runner.js ce92650a6681586c89bef26ceae96674a55ca5a9727815202ca62e1a00ff5015 +F ext/wasm/batch-runner.html cf1a410c92bad50fcec2ddc71390b4e9df63a6ea1bef12a5163a66a0af4d78d9 +F ext/wasm/batch-runner.js 5bae81684728b6be157d1f92b39824153f0fd019345b39f2ab8930f7ee2a57d8 F ext/wasm/common/SqliteTestUtil.js 647bf014bd30bdd870a7e9001e251d12fc1c9ec9ce176a1004b838a4b33c5c05 F ext/wasm/common/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f F ext/wasm/common/testing.css 3a5143699c2b73a85b962271e1a9b3241b30d90e30d895e4f55665e648572962 F ext/wasm/common/whwasmutil.js bc8522a071f4754af7b50f53807b95f691d2f9e44fc3b3e8c65dff6ef2485c0d F ext/wasm/demo-123-worker.html e419b66495d209b5211ec64903b4cfb3ca7df20d652b41fcd28bf018a773234f F ext/wasm/demo-123.html aa281d33b7eefa755f3122b7b5a18f39a42dc5fb69c8879171bf14b4c37c4ec4 -F ext/wasm/demo-123.js 9fbc5cd3af842d361e9f8353ae4af9f471c2b2517e55446474406620485b9ee6 +F ext/wasm/demo-123.js d563cf9d725692ccd940c46df1c026d87863e0544942a2ba2015f17fba3f6f74 F ext/wasm/demo-kvvfs1.html 7d4f28873de67f51ac18c584b7d920825139866a96049a49c424d6f5a0ea5e7f F ext/wasm/demo-kvvfs1.js 105596bd2ccd0b1deb5fde8e99b536e8242d4bb5932fac0c8403ff3a6bc547e8 F ext/wasm/fiddle.make 3f4efd62bc2a9c883bfcea52ae2755114a62d444d6d042df287f4aef301d6c6c @@ -516,7 +516,7 @@ F ext/wasm/jaccwabyt/jaccwabyt_test.exports 5ff001ef975c426ffe88d7d8a6e96ec725e5 F ext/wasm/scratchpad-wasmfs-main.html 20cf6f1a8f368e70d01e8c17200e3eaa90f1c8e1029186d836d14b83845fbe06 F ext/wasm/scratchpad-wasmfs-main.js 1aa32c1035cf1440a226a28fefcbb5762fbbcb020ccbe5895f8736d701695c63 F ext/wasm/speedtest1-wasmfs.html bc28eb29b69a73864b8d7aae428448f8b7e1de81d8bfb9bba99541322054dbd0 -F ext/wasm/speedtest1-worker.html 59538e3b9456320322e4280bd993d0a35a074795c30465ed60d1e1532a620015 +F ext/wasm/speedtest1-worker.html 88cfde771f3d0f155e9db18dc146f6d9407c77f9b69612d56469da5cfb4b509e F ext/wasm/speedtest1-worker.js a9e3d052dd1d8016d6e9a641e596e6d99aec04ef8995d7ee9a85a9964eed771a F ext/wasm/speedtest1.html e4cb5d722b494104fc1249e7c008ca018f820a784833c51004c958c71038c80f F ext/wasm/split-speedtest1-script.sh a3e271938d4d14ee49105eb05567c6a69ba4c1f1293583ad5af0cd3a3779e205 x @@ -2029,8 +2029,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 2ea35fea3bac2637e935643edfa7913b792e529de3a8980dbb8678d98ed5bcf9 -R 4e7ff28ad053bdee7ff28b0243888886 +P 88efe2a62b81e5ee9119f54204e397fda59666a327158c7b7c972e84a716869e +R e4cfca7fa8dc0ddfc724eef315a64084 U stephan -Z 9e8543639097e90c8529ba696f0d6371 +Z 9051d6662324e24de6581c6cede89762 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index d705215e2..3a5b0baa5 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -88efe2a62b81e5ee9119f54204e397fda59666a327158c7b7c972e84a716869e
\ No newline at end of file +2ab065133bec19f71a1dc382946fdbd020920b2e38a526f4126a3a1e8df5de87
\ No newline at end of file |