]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge wasm-session-api branch into trunk, adding the session API to the JS/WASM compo...
authorstephan <stephan@noemail.net>
Sun, 25 Dec 2022 20:25:44 +0000 (20:25 +0000)
committerstephan <stephan@noemail.net>
Sun, 25 Dec 2022 20:25:44 +0000 (20:25 +0000)
FossilOrigin-Name: dfb8b651fa4faef2d3307a05512cdc479398484c3a59715827179c363861a777

1  2 
ext/wasm/api/sqlite3-api-glue.js
ext/wasm/api/sqlite3-api-prologue.js
ext/wasm/common/whwasmutil.js
ext/wasm/tester1.c-pp.js
manifest
manifest.uuid

Simple merge
Simple merge
Simple merge
index c7fa893954d8c2b84483f4606fe9f68c93cea9dc,9655cd857260af294a5d42d3ecc52adb28159291..d03acd4cb64ce6c708bb9f1b85f3d3cc8f14b19a
@@@ -2635,6 -2636,78 +2639,79 @@@ self.sqlite3InitModule = sqlite3InitMod
      }/*OPFS util sanity checks*/)
    ;/* end OPFS tests */
  
+   T.g('Session API')
+     .t({
+       name: 'Session API sanity checks',
+       predicate: ()=>!!capi.sqlite3changegroup_add,
+       test: function(sqlite3){
++        warn("The session API tests could use some expansion.");
+         const db1 = new sqlite3.oo1.DB(), db2 = new sqlite3.oo1.DB();
+         const sqlInit = [
+           "create table t(rowid INTEGER PRIMARY KEY,a,b); ",
+           "insert into t(rowid,a,b) values",
+           "(1,'a1','b1'),",
+           "(2,'a2','b2'),",
+           "(3,'a3','b3');"
+         ].join('');
+         db1.exec(sqlInit);
+         db2.exec(sqlInit);
+         T.assert(3 === db1.selectValue("select count(*) from t"))
+           .assert('b3' === db1.selectValue('select b from t where rowid=3'));
+         const stackPtr = wasm.pstack.pointer;
+         try{
+           let ppOut = wasm.pstack.allocPtr();
+           let rc = capi.sqlite3session_create(db1, "main", ppOut);
+           T.assert(0===rc);
+           let pSession = wasm.peekPtr(ppOut);
+           T.assert(pSession && wasm.isPtr(pSession));
+           if(1){
+             capi.sqlite3session_table_filter(pSession, (pCtx, tbl)=>{
+               T.assert('t' === tbl).assert( 99 === pCtx );
+               return 1;
+             }, 99);
+           }else{
+             rc = capi.sqlite3session_attach(pSession, "t");
+             T.assert( 0 === rc );
+           }
+           db1.exec([
+             "update t set b='bTwo' where rowid=2;",
+             "update t set a='aThree' where rowid=3;",
+             "delete from t where rowid=1;",
+             "insert into t(rowid,a,b) values(4,'a4','b4')"
+           ]);
+           T.assert('bTwo' === db1.selectValue("select b from t where rowid=2"))
+             .assert(undefined === db1.selectValue('select a from t where rowid=1'))
+             .assert('b4' === db1.selectValue('select b from t where rowid=4'));
+           let pnChanges = wasm.pstack.alloc('i32'),
+               ppChanges = wasm.pstack.allocPtr();
+           rc = capi.sqlite3session_changeset(pSession, pnChanges, ppChanges);
+           T.assert( 0 === rc );
+           capi.sqlite3session_delete(pSession);
+           pSession = 0;
+           const pChanges = wasm.peekPtr(ppChanges),
+                 nChanges = wasm.peek32(pnChanges);
+           T.assert( pChanges && wasm.isPtr( pChanges ) ).assert( nChanges > 0 );
+           pnChanges = ppChanges = 0;
+           //log("pnChanges =", pnChanges, wasm.peek32(pnChanges), '@', pChanges);
+           rc = capi.sqlite3changeset_apply(
+             db2, nChanges, pChanges, 0, (pCtx, eConflict, pIter)=>{
+               return pCtx ? 1 : 0
+             }, 1
+           );
+           wasm.dealloc( pChanges );
+           T.assert( 0 === rc )
+             .assert( 3 === db2.selectValue('select count(*) from t'))
+             .assert( 'b4' === db2.selectValue('select b from t where rowid=4') );
+         }finally{
+           wasm.pstack.restore(stackPtr);
+           db1.close();
+           db2.close();
+         }
+       }
+     })
+   ;/*end of session API group*/;
    ////////////////////////////////////////////////////////////////////////
    log("Loading and initializing sqlite3 WASM module...");
    if(!self.sqlite3InitModule && !isUIThread()){
diff --cc manifest
index 827df733d603c74f263a9a15f687b8ce757c25df,4de86c1325886c775ee4ea82b581f3d0af639bc7..690055e610a3c3245743f93ba25fcff1f00dfedf
+++ b/manifest
@@@ -1,5 -1,5 +1,5 @@@
- C Add\stests\sconfirming\sthat\sJS\ssqlite3_exec()'s\sSQL\sargument\sparticipates\sin\sthe\s'string:flexible'\stype\sconversion.
- D 2022-12-25T17:12:24.209
 -C Add\sbasic\ssession\sAPI\sJS\stests.
 -D 2022-12-25T20:22:20.918
++C Merge\swasm-session-api\sbranch\sinto\strunk,\sadding\sthe\ssession\sAPI\sto\sthe\sJS/WASM\scomponents.
++D 2022-12-25T20:25:44.871
  F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
  F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
  F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@@ -503,9 -503,9 +503,9 @@@ F ext/wasm/api/post-js-footer.js cd0a8e
  F ext/wasm/api/post-js-header.js 47b6b281f39ad59fa6e8b658308cd98ea292c286a68407b35ff3ed9cfd281a62
  F ext/wasm/api/pre-js.c-pp.js b88499dc303c21fc3f55f2c364a0f814f587b60a95784303881169f9e91c1d5f
  F ext/wasm/api/sqlite3-api-cleanup.js 680d5ccfff54459db136a49b2199d9f879c8405d9c99af1dda0cc5e7c29056f4
- F ext/wasm/api/sqlite3-api-glue.js 7e8bbf3a987b7220db8220045c4d575744bac9faa0d6bc2924ce93e89d1176e3
- F ext/wasm/api/sqlite3-api-oo1.js 5393fb0b325d2fdafada7fdbfb9219af9a865631acb351d5c5196a982b632c8b
- F ext/wasm/api/sqlite3-api-prologue.js 30dc037af2f33e773ea6c5e0362a44f1de69e174d729dd33e8049cf2d0676fa2
 -F ext/wasm/api/sqlite3-api-glue.js fe8a0c30d906e4f14be26a2abdad5d84aa901eeb594f76c8050cb4df4f746a5d
++F ext/wasm/api/sqlite3-api-glue.js 594741f7cbff68f0b4a0c1a066bce335146de1124366377292e27d30f9a5f751
+ F ext/wasm/api/sqlite3-api-oo1.js ae4f6950913b4703b767f640a533675b45e9e6c462bf01e357cec16bc68943e2
 -F ext/wasm/api/sqlite3-api-prologue.js 72e2b66daf1f5ea7b6a8477c4fe86493925a067cfa0b156a339589e653446920
++F ext/wasm/api/sqlite3-api-prologue.js 9dfbb41ebc0aadfac9c41ae8d050187af39819fff4e4f22ac6a8a4f3008f722b
  F ext/wasm/api/sqlite3-api-worker1.js e94ba98e44afccfa482874cd9acb325883ade50ed1f9f9526beb9de1711f182f
  F ext/wasm/api/sqlite3-license-version-header.js a661182fc93fc2cf212dfd0b987f8e138a3ac98f850b1112e29b5fbdaecc87c3
  F ext/wasm/api/sqlite3-opfs-async-proxy.js 7795b84b66a7a8dedc791340709b310bb497c3c72a80bef364fa2a58e2ddae3f
@@@ -521,7 -521,7 +521,7 @@@ F ext/wasm/c-pp.c 92285f7bce67ed7b7020b
  F ext/wasm/common/SqliteTestUtil.js d8bf97ecb0705a2299765c8fc9e11b1a5ac7f10988bbf375a6558b7ca287067b
  F ext/wasm/common/emscripten.css 11bd104b6c0d597c67d40cc8ecc0a60dae2b965151e3b6a37fa5708bac3acd15
  F ext/wasm/common/testing.css 0ff15602a3ab2bad8aef2c3bd120c7ee3fd1c2054ad2ace7e214187ae68d926f
- F ext/wasm/common/whwasmutil.js 02d04a086a16130e97dc2a04555686dc19c48bd41842a96934737365678ca839
 -F ext/wasm/common/whwasmutil.js a94f776bd3afcfc73283aad2bb0821ddf8e77f687a0d7ee84d14d2a138d78636
++F ext/wasm/common/whwasmutil.js 77aedbe53b05bfe08f4ca52e96d520eb14d792df09e107df6e3d1300de37e02f
  F ext/wasm/demo-123-worker.html a0b58d9caef098a626a1a1db567076fca4245e8d60ba94557ede8684350a81ed
  F ext/wasm/demo-123.html 8c70a412ce386bd3796534257935eb1e3ea5c581e5d5aea0490b8232e570a508
  F ext/wasm/demo-123.js ebae30756585bca655b4ab2553ec9236a87c23ad24fc8652115dcedb06d28df6
@@@ -555,7 -555,7 +555,7 @@@ F ext/wasm/test-opfs-vfs.html 1f2d672f3
  F ext/wasm/test-opfs-vfs.js f09266873e1a34d9bdb6d3981ec8c9e382f31f215c9fd2f9016d2394b8ae9b7b
  F ext/wasm/tester1-worker.html d43f3c131d88f10d00aff3e328fed13c858d674ea2ff1ff90225506137f85aa9
  F ext/wasm/tester1.c-pp.html d34bef3d48e5cbc1c7c06882ad240fec49bf88f5f65696cc2c72c416933aa406
- F ext/wasm/tester1.c-pp.js 1396611f11d75fc124ffb7600dc05d3ad7cc25885c4a8f842b9291ea9e0b8abd
 -F ext/wasm/tester1.c-pp.js a690f82c02d2b0531bad264054a276d09d274487fd1f8aac6bab24f7cfedaa6f
++F ext/wasm/tester1.c-pp.js 314e7bdbc73f558cf12c050c5af42f866195ee17bf451d63f7337052fcf44c7a
  F ext/wasm/tests/opfs/concurrency/index.html 86d8ac435074d1e7007b91105f4897f368c165e8cecb6a9aa3d81f5cf5dcbe70
  F ext/wasm/tests/opfs/concurrency/test.js a98016113eaf71e81ddbf71655aa29b0fed9a8b79a3cdd3620d1658eb1cc9a5d
  F ext/wasm/tests/opfs/concurrency/worker.js 0a8c1a3e6ebb38aabbee24f122693f1fb29d599948915c76906681bb7da1d3d2
@@@ -2067,8 -2067,8 +2067,9 @@@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a9
  F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
  F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
  F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
- P 4888957baf18c6763f959fbba998a74156ff656368779107f502b926e9e9d949
- R cfaf4d7e6ebced21987511a642eb3cd6
 -P 1cbc7b1875e8611b9db7a747b4c9499501450deaf90c929d212511837d6f72b6
 -R e7bca9ee95dfee32728e67001af3a1d6
++P 926d0c61a391c601adc2804d3fdaa8b667ae2abd565939cddfa12d5151b098f8 64e032602cf420851c8029603c76f5512000d1c9a40fa7a545528d69d6d1d4cc
++R 5a9d5d7e14f03170b616d0bb48ba8894
++T +closed 64e032602cf420851c8029603c76f5512000d1c9a40fa7a545528d69d6d1d4cc Closed\sby\sintegrate-merge.
  U stephan
- Z c6e0af2cef9d9cd33fe188241216b8ea
 -Z 1d08930538afdb25a0799e1e3a67b3c1
++Z 42f975ba9994385873d5d768be40b720
  # Remove this line to create a well-formed Fossil manifest.
diff --cc manifest.uuid
index 47997d8d141455039a74ed2ad3478e92ef622ea1,3d55a2ae038b9409ffb1c42644cc7b19a9b922d3..b020053bce7c53bc4a6c4eab2705ee7d182ace3a
@@@ -1,1 -1,1 +1,1 @@@
- 926d0c61a391c601adc2804d3fdaa8b667ae2abd565939cddfa12d5151b098f8
 -64e032602cf420851c8029603c76f5512000d1c9a40fa7a545528d69d6d1d4cc
++dfb8b651fa4faef2d3307a05512cdc479398484c3a59715827179c363861a777