From: stephan Date: Mon, 30 Jun 2025 23:49:21 +0000 (+0000) Subject: Add JS bindings for sqlite3_value_text/blob_v2() and add basic JS tests for text_v2(). X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3cd904cc97c878e0044c1e5c9d71b19aefdbd987;p=thirdparty%2Fsqlite.git Add JS bindings for sqlite3_value_text/blob_v2() and add basic JS tests for text_v2(). FossilOrigin-Name: 096c745f38c487c29948e4578fea61085f4a324b187d5b6e9ab32d7b14e503c3 --- diff --git a/ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-extras b/ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-extras index 01dad072e3..83e8022e23 100644 --- a/ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-extras +++ b/ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-extras @@ -64,3 +64,5 @@ _sqlite3session_object_config _sqlite3session_patchset _sqlite3session_patchset_strm _sqlite3session_table_filter +_sqlite3_value_blob_v2 +_sqlite3_value_text_v2 \ No newline at end of file diff --git a/ext/wasm/api/sqlite3-api-glue.c-pp.js b/ext/wasm/api/sqlite3-api-glue.c-pp.js index 8d2d4a5891..1dd8c62860 100644 --- a/ext/wasm/api/sqlite3-api-glue.c-pp.js +++ b/ext/wasm/api/sqlite3-api-glue.c-pp.js @@ -305,6 +305,7 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){ ["sqlite3_uri_parameter", "string", "sqlite3_filename", "string"], ["sqlite3_user_data","void*", "sqlite3_context*"], ["sqlite3_value_blob", "*", "sqlite3_value*"], + ["sqlite3_value_blob_v2", "int", "sqlite3_value*", "**", "*"], ["sqlite3_value_bytes","int", "sqlite3_value*"], ["sqlite3_value_double","f64", "sqlite3_value*"], ["sqlite3_value_dup", "sqlite3_value*", "sqlite3_value*"], @@ -316,6 +317,7 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){ ["sqlite3_value_pointer", "*", "sqlite3_value*", "string:static"], ["sqlite3_value_subtype", "int", "sqlite3_value*"], ["sqlite3_value_text", "string", "sqlite3_value*"], + ["sqlite3_value_text_v2", "int", "sqlite3_value*", "**", "*"], ["sqlite3_value_type", "int", "sqlite3_value*"], ["sqlite3_vfs_find", "*", "string"], ["sqlite3_vfs_register", "int", "sqlite3_vfs*", "int"], diff --git a/ext/wasm/tester1.c-pp.js b/ext/wasm/tester1.c-pp.js index 5b94c7c05e..f2ab741954 100644 --- a/ext/wasm/tester1.c-pp.js +++ b/ext/wasm/tester1.c-pp.js @@ -3341,6 +3341,56 @@ globalThis.sqlite3InitModule = sqlite3InitModule; db.close(); }) + //////////////////////////////////////////////////////////////////// + .t("value_text_v2() and friends...", function(sqlite3){ + const db = new sqlite3.oo1.DB(); + db.exec(["create table t(a,b); insert into t(a,b) ", + "values(1,123),(2,null),(3,'hi world'),(4,X'232A')"]); + const P = wasm.pstack; + const stack = P.pointer; + let q; + try { + let sv, rc; + q = db.prepare("select a, b from t order by a"); + let [ppOut,pnOut] = P.allocPtr(2); + const next = ()=>{ + T.assert( q.step() ); + sv = capi.sqlite3_column_value(q, 1); + T.assert( sv ); + wasm.pokePtr(ppOut, 0); + wasm.poke32(pnOut, 0); + rc = capi.sqlite3_value_text_v2(sv, ppOut, pnOut); + T.assert( 0===rc ); + return sv; + }; + next(); + T.assert( wasm.peekPtr(ppOut) ) + .assert( 3===wasm.peek32(pnOut) ) + .assert( '123' === wasm.cstrToJs(wasm.peekPtr(ppOut)) ); + + next(); + T.assert( !wasm.peekPtr(ppOut) ) + .assert( 0===wasm.peek32(pnOut) ); + + next(); + T.assert( wasm.peekPtr(ppOut) ) + .assert( 8===wasm.peek32(pnOut) ) + .assert( 'hi world' === wasm.cstrToJs(wasm.peekPtr(ppOut)) ) + ; + + next(); + T.assert( wasm.peekPtr(ppOut) ) + .assert( 2===wasm.peek32(pnOut) ) + .assert( '#*' === wasm.cstrToJs(wasm.peekPtr(ppOut)) ) + ; + + }finally{ + if( q ) q.finalize(); + db.close(); + P.restore(stack); + } + }) + /** Ensure that certain Stmt members throw when called via DB.exec(). diff --git a/manifest b/manifest index 03301ee3a2..325216f679 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Restart\sthis\sbranch\susing\sa\sdifferent\stake:\sadd\snew\s"v2"\sroutines\sinstead\sof\srefactoring\sthe\sold\sones,\swhich\seliminating\sany\sperformance\simpact\sor\srisk\sof\sbehavior\schange\sfor\sexisting\sAPIs.\sNone\sof\sthis\scode\sis\sactually\scalled\sfrom\sanywhere\syet. -D 2025-06-30T23:17:57.299 +C Add\sJS\sbindings\sfor\ssqlite3_value_text/blob_v2()\sand\sadd\sbasic\sJS\stests\sfor\stext_v2(). +D 2025-06-30T23:49:21.336 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -630,7 +630,7 @@ F ext/wasm/SQLTester/SQLTester.run.mjs 57f2adb33f43f2784abbf8026c1bfd049d8013af1 F ext/wasm/SQLTester/index.html 64f3435084c7d6139b08d1f2a713828a73f68de2ae6a3112cbb5980d991ba06f F ext/wasm/SQLTester/touint8array.c 2d5ece04ec1393a6a60c4bf96385bda5e1a10ad49f3038b96460fc5e5aa7e536 F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-core 2bcbbfe3b95c043ed6037e2708a2ee078d212dd1612c364f93588d8dc97300fe -F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-extras cb4fa8842c875b6ee99381523792975c5ebb7371bd27fbd1bd863a43c7f3505a +F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-extras 49818f897c32651775d38191d7ebcbc27dc77a4825a0be18727145f856f129c3 F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-see fb29e62082a658f0d81102488414d422c393c4b20cc2f685b216bc566237957b F ext/wasm/api/EXPORTED_RUNTIME_METHODS.sqlite3-api 1ec3c73e7d66e95529c3c64ac3de2470b0e9e7fbf7a5b41261c367cf4f1b7287 F ext/wasm/api/README.md c64ec8e84449c069e0217706d9d7d31b3bd53627228b2ba0c3cddbdc2350ca66 @@ -640,7 +640,7 @@ F ext/wasm/api/post-js-footer.js 365405929f41ca0e6d389ed8a8da3f3c93e11d3ef43a90a F ext/wasm/api/post-js-header.js 53740d824e5d9027eb1e6fd59e216abbd2136740ce260ea5f0699ff2acb0a701 F ext/wasm/api/pre-js.c-pp.js a614a2c82b12c4d96d8e3ba77330329efc53c4d56a8a7e60ade900f341866cfb F ext/wasm/api/sqlite3-api-cleanup.js 3ac1786e461ada63033143be8c3b00b26b939540661f3e839515bb92f2e35359 -F ext/wasm/api/sqlite3-api-glue.c-pp.js 0b76510f3650053bac67ca8947cb6ab9d050ad2218118a2e7796dd37be832ffa +F ext/wasm/api/sqlite3-api-glue.c-pp.js 8d15c5337b8a974e73a18ad522963b88995a18efc7a2c05c89e699b9ef2a7ff5 F ext/wasm/api/sqlite3-api-oo1.c-pp.js c68d6da0088c2527156fca9163a721abe08e7bd077b15404fd8d292f4612adc1 F ext/wasm/api/sqlite3-api-prologue.js 8708570165f5b4bce9a78ccd91bc9ddf8735970ac1c4d659e36c9a7d9a644bb4 F ext/wasm/api/sqlite3-api-worker1.c-pp.js f646a65257973b8c4481f8a6a216370b85644f23e64b126e7ae113570587c0ab @@ -698,7 +698,7 @@ F ext/wasm/test-opfs-vfs.html 1f2d672f3f3fce810dfd48a8d56914aba22e45c6834e262555 F ext/wasm/test-opfs-vfs.js 1618670e466f424aa289859fe0ec8ded223e42e9e69b5c851f809baaaca1a00c F ext/wasm/tester1-worker.html ebc4b820a128963afce328ecf63ab200bd923309eb939f4110510ab449e9814c F ext/wasm/tester1.c-pp.html 1c1bc78b858af2019e663b1a31e76657b73dc24bede28ca92fbe917c3a972af2 -F ext/wasm/tester1.c-pp.js 766a2ba51a2619d41a49be7c6a1ad014c1d23fc97b67496e4f103038203eb17d +F ext/wasm/tester1.c-pp.js 0a8fe1b5e2a062e46b95fd935e77204d84e88e170900b7bf3ca9086024319ee0 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 @@ -2208,11 +2208,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 0083d5169a46104a25355bdd9d5a2f4027b049191ebda571dd228477ec217296 -R 4239fe5683a0ec74248fc5c2088a43d0 -T *branch * column-text-blob-v2 -T *sym-column-text-blob-v2 * -T -sym-trunk * Cancelled\sby\sbranch. +P b0b1b4ccb9b135a6feab73113a31064bac0895464ae36e936fcdcffeaa0933d3 +R 50a83fb9ab6954fbcc4d8e5da68fad90 U stephan -Z 25bc418674281d77a7472549ccb81773 +Z 9bc76b16b374dbacf6d4aa0db272e99c # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 88b0687c9b..db7bb42567 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b0b1b4ccb9b135a6feab73113a31064bac0895464ae36e936fcdcffeaa0933d3 +096c745f38c487c29948e4578fea61085f4a324b187d5b6e9ab32d7b14e503c3