From: stephan Date: Tue, 4 Nov 2025 22:01:55 +0000 (+0000) Subject: Minor wasm build simplifications and extend the JS bindings of sqlite3_column/value_t... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53ba0b80f2b4c717f7f6ef7ea0b8958c903b0dc1;p=thirdparty%2Fsqlite.git Minor wasm build simplifications and extend the JS bindings of sqlite3_column/value_text() such that they include embeded NUL bytes in their result strings rather than truncate them at NUL. Consolidate the shell.c build flags from the canonical and autoconf makefiles into the configure script. FossilOrigin-Name: cee2e2576f5e91911a019bff025ee6071850c0d75941e8746f10d57b56bd830a --- 53ba0b80f2b4c717f7f6ef7ea0b8958c903b0dc1 diff --cc ext/wasm/GNUmakefile index 937e16d6ef,73fa15a44d..31737ee60a --- a/ext/wasm/GNUmakefile +++ b/ext/wasm/GNUmakefile @@@ -853,8 -849,9 +849,8 @@@ sqlite3-api.jses += $(dir.api)/sqlite3- sqlite3-license-version.js = $(dir.tmp)/sqlite3-license-version.js $(sqlite3-license-version.js): $(bin.version-info) \ $(dir.api)/sqlite3-license-version-header.js - @echo '$(logtag.@) $(emo.disk)'; { \ - $(call b.mkdir@); \ + @echo '$(logtag.@) $(emo.disk)'; \ + $(call b.mkdir@); { \ - \ cat $(dir.api)/sqlite3-license-version-header.js || exit $$?; \ echo '/*'; \ echo '** This code was built from sqlite3 version...'; \ diff --cc ext/wasm/tester1.c-pp.js index f72e0803fc,008f55a77b..cff66c39c9 --- a/ext/wasm/tester1.c-pp.js +++ b/ext/wasm/tester1.c-pp.js @@@ -369,6 -369,88 +369,88 @@@ globalThis.sqlite3InitModule = sqlite3I clearOnInit: true, initialCapacity: 6 }; + + //#if enable-see + /** + Code consolidator for SEE sanity checks for various VFSes. ctor + is the VFS's oo1.DB-type constructor. ctorOptFunc(bool) is a + function which must return a constructor args object for ctor. It + is passed true if the db needs to be cleaned up/unlinked before + opening it (OPFS) and false if not (how that is done is + VFS-dependent). dbUnlink is a function which is expected to + unlink() the db file if the ctorOpfFunc does not do so when + passed true (kvvfs). + + This function initializes the db described by ctorOptFunc(...), + writes some secret info into it, and re-opens it twice to - confirming that it can be read with an SEE key and cannot be read ++ confirmi that it can be read with an SEE key and cannot be read + without one. + */ + T.seeBaseCheck = function(ctor, ctorOptFunc, dbUnlink){ + let initDb = true; + const tryKey = function(keyKey, key, expectCount){ + let db; + //console.debug('tryKey()',arguments); + try { + if (initDb) { + const ctoropt = ctorOptFunc(initDb); + initDb = false; + db = new ctor({ + ...ctoropt, + [keyKey]: key + }); + db.exec([ + "drop table if exists t;", + "create table t(a);" + ]); + db.close(); + db = null; + // Ensure that it's actually encrypted... + let err; + try { + db = new ctor(ctorOptFunc(false)); + T.assert(db, 'db opened') /* opening is fine, but... */; + db.exec("select 1 from sqlite_schema"); + console.warn("(should not be reached) sessionStorage =", sessionStorage); + } catch (e) { + err = e; + } finally { + db.close() + db = null; + } + T.assert(err, "Expecting an exception") + .assert(capi.SQLITE_NOTADB == err.resultCode, + "Expecting NOTADB"); + }/*initDb*/ + db = new ctor({ + ...ctorOptFunc(false), + [keyKey]: key + }); + db.exec("insert into t(a) values (1),(2)"); + T.assert(expectCount === db.selectValue('select sum(a) from t')); + } finally { + if (db) db.close(); + } + }; + const hexFoo = new Uint8Array([0x66,0x6f,0x6f]/*=="foo"*/); + dbUnlink(); + tryKey('textkey', 'foo', 3); + T.assert( !initDb ); + tryKey('textkey', 'foo', 6); + dbUnlink(); + initDb = true; + tryKey('key', 'foo', 3); + T.assert( !initDb ); + tryKey('key', hexFoo, 6); + dbUnlink(); + initDb = true; + tryKey('hexkey', hexFoo, 3); + T.assert( !initDb ); + tryKey('hexkey', hexFoo, 6); + dbUnlink(); + }, + //#endif enable-see + //////////////////////////////////////////////////////////////////////// // End of infrastructure setup. Now define the tests... //////////////////////////////////////////////////////////////////////// diff --cc manifest index 5d972e1e29,103497b9df..1ab0e604f5 --- a/manifest +++ b/manifest @@@ -1,5 -1,5 +1,5 @@@ - C Version\s3.51.0 - D 2025-11-04T19:38:17.314 -C Consolidate\sthe\sthree\sVFS-specific\sSEE\stests\sinto\sa\sshared\sroutine. -D 2025-11-04T01:03:58.330 ++C Minor\swasm\sbuild\ssimplifications\sand\sextend\sthe\sJS\sbindings\sof\ssqlite3_column/value_text()\ssuch\sthat\sthey\sinclude\sembeded\sNUL\sbytes\sin\stheir\sresult\sstrings\srather\sthan\struncate\sthem\sat\sNUL.\sConsolidate\sthe\sshell.c\sbuild\sflags\sfrom\sthe\scanonical\sand\sautoconf\smakefiles\sinto\sthe\sconfigure\sscript. ++D 2025-11-04T22:01:55.830 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@@ -575,8 -575,7 +575,7 @@@ F ext/session/sessionwor.test 6fd9a2256 F ext/session/sqlite3session.c b3de195ce668cace9b324599bf6255a70290cbfb5451e826e946f3aee6e64c54 F ext/session/sqlite3session.h 7404723606074fcb2afdc6b72c206072cdb2b7d8ba097ca1559174a80bc26f7a F ext/session/test_session.c 8766b5973a6323934cb51248f621c3dc87ad2a98f023c3cc280d79e7d78d36fb - F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c - F ext/wasm/GNUmakefile 3dc01e673c456d3b752674c9407276e8fef35dec1d304b3cc1de362f019b2a09 -F ext/wasm/GNUmakefile cb0c055a3d10afda09eeb441df56d2840d1efe88cc6a84978333f7e9640de834 ++F ext/wasm/GNUmakefile 74c73254fb44c82d517a8907da9866d5d3ef1a533addaeb4322f470e0fb81ba3 F ext/wasm/README-dist.txt f01081a850ce38a56706af6b481e3a7878e24e42b314cfcd4b129f0f8427066a F ext/wasm/README.md 2e87804e12c98f1d194b7a06162a88441d33bb443efcfe00dc6565a780d2f259 F ext/wasm/SQLTester/GNUmakefile e0794f676d55819951bbfae45cc5e8d7818dc460492dc317ce7f0d2eca15caff @@@ -632,7 -628,7 +628,7 @@@ F ext/wasm/index.html 54e27db740695ab2c F ext/wasm/jaccwabyt/jaccwabyt.js bbac67bc7a79dca34afe6215fd16b27768d84e22273507206f888c117e2ede7d F ext/wasm/jaccwabyt/jaccwabyt.md 167fc0b624c9bc2c477846e336de9403842d81b1a24fc4d3b24317cb9eba734f F ext/wasm/mkdist.sh 64d53f469c823ed311f6696f69cec9093f745e467334b34f5ceabdf9de3c5b28 x - F ext/wasm/mkwasmbuilds.c 1b53c4d2a1350c19a96a8cdfbda6a39baea9d2142bfe0cbef0ccb0e898787f47 -F ext/wasm/mkwasmbuilds.c 431a54ea363272814b7ce131ed28b786f2c60c1cd086d5fb8813cdb5a0167c06 ++F ext/wasm/mkwasmbuilds.c 5e194df8763c8e5b2de070575a5f1bc7d7fb862f03c09d3cb9c56e0fa57b7e77 F ext/wasm/module-symbols.html e54f42112e0aac2a31f850ab33e7f2630a2ea4f63496f484a12469a2501e07e2 F ext/wasm/scratchpad-wasmfs.html a3d7388f3c4b263676b58b526846e9d02dfcb4014ff29d3a5040935286af5b96 F ext/wasm/scratchpad-wasmfs.mjs 66034b9256b218de59248aad796760a1584c1dd842231505895eff00dbd57c63 @@@ -646,9 -642,9 +642,9 @@@ F ext/wasm/sql/000-mandelbrot.sql 77533 F ext/wasm/sql/001-sudoku.sql 35b7cb7239ba5d5f193bc05ec379bcf66891bce6f2a5b3879f2f78d0917299b5 F ext/wasm/test-opfs-vfs.html 1f2d672f3f3fce810dfd48a8d56914aba22e45c6834e262555e685bce3da8c3f F ext/wasm/test-opfs-vfs.js 1618670e466f424aa289859fe0ec8ded223e42e9e69b5c851f809baaaca1a00c - F ext/wasm/tester1-worker.c-pp.html 883881eeac14eeeecc8ff22acf9fe0f18a97cacb48be08ebb0bae891ceded584 - F ext/wasm/tester1.c-pp.html 949920126dcf477925d8d540093d9cc374d3ab4c4ddee920c1dcadcf37917306 - F ext/wasm/tester1.c-pp.js 2b014884dadf28928fabcb688746ca87145673eef75e154486505a266203fc15 + F ext/wasm/tester1-worker.c-pp.html 0e432ec2c0d99cd470484337066e8d27e7aee4641d97115338f7d962bf7b081a + F ext/wasm/tester1.c-pp.html 52d88fe2c6f21a046030a36410b4839b632f4424028197a45a3d5669ea724ddb -F ext/wasm/tester1.c-pp.js 76ed6a87c673cf55b0bb786d7cb8cafe04eebe0fb3438a4ed0bb040843e305c1 ++F ext/wasm/tester1.c-pp.js 56a7889415b996f684765aff07d35ac8a31343201f887ac61d7dd14678d9f0f0 F ext/wasm/tests/opfs/concurrency/index.html 657578a6e9ce1e9b8be951549ed93a6a471f4520a99e5b545928668f4285fb5e F ext/wasm/tests/opfs/concurrency/test.js d08889a5bb6e61937d0b8cbb78c9efbefbf65ad09f510589c779b7cc6a803a88 F ext/wasm/tests/opfs/concurrency/worker.js 0a8c1a3e6ebb38aabbee24f122693f1fb29d599948915c76906681bb7da1d3d2 @@@ -2171,11 -2167,8 +2167,9 @@@ F tool/version-info.c 33d0390ef484b3b1c F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f - P ccabbe06d4e0650eecc91296d6a3040ed7fef06b47e4d63393a2367c8c8f55cf - R 9324db4aaf883cfc2983724be7d6c4b2 - T +sym-major-release * - T +sym-release * - T +sym-version-3.51.0 * - U drh - Z bd3359fae465c4238136a20bd4edb791 -P 900885c4fb3071e461bf868e9e68d0d8f3d3e83a1bcbf5c9c68179c701c1fb92 -R cf212ac209e135421eafb888295b09f1 ++P fb2c931ae597f8d00a37574ff67aeed3eced4e5547f9120744ae4bfa8e74527b 8ac0bf125ddb6cc86a6825dcfe8895559835eca85ef14b5ad489f7c8159462e4 ++R f6a6dc74b61ecf4b92fdf7025309e13a ++T +closed 8ac0bf125ddb6cc86a6825dcfe8895559835eca85ef14b5ad489f7c8159462e4 Closed\sby\sintegrate-merge. + U stephan -Z 6ccf2b6311a3c5ee1b7f2de43939fd38 ++Z 6979379120c5ced749593cd4e2d1485e # Remove this line to create a well-formed Fossil manifest. diff --cc manifest.tags index 7cf74e2b51,846713bd4e..bec971799f --- a/manifest.tags +++ b/manifest.tags @@@ -1,5 -1,2 +1,2 @@@ -branch wasm-post-3.51 -tag wasm-post-3.51 +branch trunk +tag trunk - tag release - tag major-release - tag version-3.51.0 diff --cc manifest.uuid index d96096a32a,e09a77b28e..0ebbe14be0 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - fb2c931ae597f8d00a37574ff67aeed3eced4e5547f9120744ae4bfa8e74527b -8ac0bf125ddb6cc86a6825dcfe8895559835eca85ef14b5ad489f7c8159462e4 ++cee2e2576f5e91911a019bff025ee6071850c0d75941e8746f10d57b56bd830a