1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-29 08:01:23 +03:00

Add JS bindings for sqlite3_value_text/blob_v2() and add basic JS tests for text_v2().

FossilOrigin-Name: 096c745f38c487c29948e4578fea61085f4a324b187d5b6e9ab32d7b14e503c3
This commit is contained in:
stephan
2025-06-30 23:49:21 +00:00
parent 59890ab8c7
commit 3cd904cc97
5 changed files with 63 additions and 12 deletions

View File

@ -64,3 +64,5 @@ _sqlite3session_object_config
_sqlite3session_patchset
_sqlite3session_patchset_strm
_sqlite3session_table_filter
_sqlite3_value_blob_v2
_sqlite3_value_text_v2

View 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"],

View 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().

View File

@ -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.

View File

@ -1 +1 @@
b0b1b4ccb9b135a6feab73113a31064bac0895464ae36e936fcdcffeaa0933d3
096c745f38c487c29948e4578fea61085f4a324b187d5b6e9ab32d7b14e503c3