]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add JS bindings for sqlite3_value_text/blob_v2() and add basic JS tests for text_v2().
authorstephan <stephan@noemail.net>
Mon, 30 Jun 2025 23:49:21 +0000 (23:49 +0000)
committerstephan <stephan@noemail.net>
Mon, 30 Jun 2025 23:49:21 +0000 (23:49 +0000)
FossilOrigin-Name: 096c745f38c487c29948e4578fea61085f4a324b187d5b6e9ab32d7b14e503c3

ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-extras
ext/wasm/api/sqlite3-api-glue.c-pp.js
ext/wasm/tester1.c-pp.js
manifest
manifest.uuid

index 01dad072e3123cebebab78b39824d8726f9ff719..83e8022e239c22d5b6d16fa8972690b4ca99e8cd 100644 (file)
@@ -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
index 8d2d4a5891603a3af0b65b780bf25c51c4cacfce..1dd8c62860efe418f792a5126871c918c18d7715 100644 (file)
@@ -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"],
index 5b94c7c05e1f43718ad76b197f8c0f3a4579d1a6..f2ab741954c07611e690880d0e50270681a8615b 100644 (file)
@@ -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().
index 03301ee3a2125b0dc1386b1863e6a8fc51d546a0..325216f67919ebe7f8958239ed24e0e46584e826 100644 (file)
--- 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.
index 88b0687c9b98d5f9a6057cf579220a970487dd3e..db7bb42567c41a9f879d4cf2a10315c5114852c7 100644 (file)
@@ -1 +1 @@
-b0b1b4ccb9b135a6feab73113a31064bac0895464ae36e936fcdcffeaa0933d3
+096c745f38c487c29948e4578fea61085f4a324b187d5b6e9ab32d7b14e503c3