]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add configurable cache_size to batch-runner and speedtest1-worker. Add SQL tracing...
authorstephan <stephan@noemail.net>
Mon, 3 Oct 2022 18:07:25 +0000 (18:07 +0000)
committerstephan <stephan@noemail.net>
Mon, 3 Oct 2022 18:07:25 +0000 (18:07 +0000)
FossilOrigin-Name: 2ab065133bec19f71a1dc382946fdbd020920b2e38a526f4126a3a1e8df5de87

ext/wasm/batch-runner.html
ext/wasm/batch-runner.js
ext/wasm/demo-123.js
ext/wasm/speedtest1-worker.html
manifest
manifest.uuid

index a07fe930ac0acbeef77c1e832b97c8f0f69ec3fd..e7a2b1e0824e78399627f6bf7146be5634540ea1 100644 (file)
@@ -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>
index 36083e62f1e3781ac695c016718a7820c4dcb7a0..c40157bb59401f7f9569890b57b82ba7ad7ef523 100644 (file)
   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)=>{
     // 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);
   };
 
   
       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();
           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{
         d.clear = ()=>clearDbSqlite(d);
       }
       d.clear();
-      this.logHtml("Opened db:",dbId);
+      this.logHtml("Opened db:",dbId,d.filename);
       console.log("db =",d);
       return d;
     },
index 67c1094f02f7561ed7ca0f4fc27ce6c7414706f4..ff36aaf4e2c36fda7ad908d44c2cce1cdae78062 100644 (file)
@@ -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
index 87c504f4bb56284440b8336e09330ee647f76c59..2c05fe6b157d8c1fc4193d4e4bfe4610eb7116bd 100644 (file)
@@ -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'>
     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));
         });
            (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";
index 48a1fe6ab0f0d82029ea62d89c1e448825224372..94681f80a7cb8d1e69891810d316e7a811abe206 100644 (file)
--- a/manifest
+++ b/manifest
@@ -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.
index d705215e2de54d7606d0c0cba29d3bff84d2558a..3a5b0baa56509867935b10159881d3557d20ce81 100644 (file)
@@ -1 +1 @@
-88efe2a62b81e5ee9119f54204e397fda59666a327158c7b7c972e84a716869e
\ No newline at end of file
+2ab065133bec19f71a1dc382946fdbd020920b2e38a526f4126a3a1e8df5de87
\ No newline at end of file