1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-27 20:41:58 +03:00

Add missing sqlite3_bind_parameter_name() binding to JS.

FossilOrigin-Name: 6dcfcc7e1c0772b11aec750bb75899a5c8e452735ecf5028c001fbaa7aa6fda0
This commit is contained in:
stephan
2024-07-13 13:22:32 +00:00
parent 6f9b37b35b
commit 0b9efaffd7
6 changed files with 53 additions and 19 deletions

View File

@ -10,6 +10,7 @@ _sqlite3_bind_int64
_sqlite3_bind_null
_sqlite3_bind_parameter_count
_sqlite3_bind_parameter_index
_sqlite3_bind_parameter_name
_sqlite3_bind_pointer
_sqlite3_bind_text
_sqlite3_busy_handler

View File

@ -95,6 +95,7 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
["sqlite3_bind_null",undefined, "sqlite3_stmt*", "int"],
["sqlite3_bind_parameter_count", "int", "sqlite3_stmt*"],
["sqlite3_bind_parameter_index","int", "sqlite3_stmt*", "string"],
["sqlite3_bind_parameter_name", "string", "sqlite3_stmt*", "int"],
["sqlite3_bind_pointer", "int",
"sqlite3_stmt*", "int", "*", "string:static", "*"],
["sqlite3_busy_handler","int", [

View File

@ -2030,6 +2030,19 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
return (affirmStmtOpen(this).parameterCount
? capi.sqlite3_bind_parameter_index(this.pointer, name)
: undefined);
},
/**
If this statement has named bindable parameters and the given
index refers to one, its name is returned, else null is
returned. If this statement has no bound parameters, undefined
is returned.
Added in 3.47.
*/
getParamName: function(ndx){
return (affirmStmtOpen(this).parameterCount
? capi.sqlite3_bind_parameter_name(this.pointer, ndx)
: undefined);
}
}/*Stmt.prototype*/;

View File

@ -2063,15 +2063,6 @@ globalThis.sqlite3InitModule = sqlite3InitModule;
"Because foo is no longer attached.");
})
////////////////////////////////////////////////////////////////////
.t("Interrupt", function(sqlite3){
const db = new sqlite3.oo1.DB();
T.assert( 0===capi.sqlite3_is_interrupted(db) );
capi.sqlite3_interrupt(db);
T.assert( 0!==capi.sqlite3_is_interrupted(db) );
db.close();
})
////////////////////////////////////////////////////////////////////
.t("Read-only", function(sqlite3){
T.assert( 0===capi.sqlite3_db_readonly(this.db, "main") );
@ -3222,6 +3213,34 @@ globalThis.sqlite3InitModule = sqlite3InitModule;
}
}/*OPFS SAH Pool sanity checks*/)
////////////////////////////////////////////////////////////////////////
T.g('Misc. APIs')
.t('bind_parameter', function(sqlite3){
const db = new sqlite3.oo1.DB();
db.exec("create table t(a)");
const stmt = db.prepare("insert into t(a) values($a)");
T.assert( 1===capi.sqlite3_bind_parameter_count(stmt) )
.assert( 1===capi.sqlite3_bind_parameter_index(stmt, "$a") )
.assert( 0===capi.sqlite3_bind_parameter_index(stmt, ":a") )
.assert( 1===stmt.getParamIndex("$a") )
.assert( 0===stmt.getParamIndex(":a") )
.assert( "$a"===capi.sqlite3_bind_parameter_name(stmt, 1) )
.assert( null===capi.sqlite3_bind_parameter_name(stmt, 0) )
.assert( "$a"===stmt.getParamName(1) )
.assert( null===stmt.getParamName(0) );
stmt.finalize();
db.close();
})
////////////////////////////////////////////////////////////////////
.t("interrupt", function(sqlite3){
const db = new sqlite3.oo1.DB();
T.assert( 0===capi.sqlite3_is_interrupted(db) );
capi.sqlite3_interrupt(db);
T.assert( 0!==capi.sqlite3_is_interrupted(db) );
db.close();
})
////////////////////////////////////////////////////////////////////////
T.g('Bug Reports')
.t({

View File

@ -1,5 +1,5 @@
C Add\sJS\sbindings\sand\stests\sfor\ssqlite3_interrupted(),\sis_interrupted(),\sand\sdb_readonly().
D 2024-07-13T12:50:42.416
C Add\smissing\ssqlite3_bind_parameter_name()\sbinding\sto\sJS.
D 2024-07-13T13:22:32.806
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@ -601,7 +601,7 @@ F ext/wasm/SQLTester/SQLTester.mjs ce765c0ad7d57f93553d12ef4dca574deb00300134a26
F ext/wasm/SQLTester/SQLTester.run.mjs c72b7fe2072d05992f7a3d8c6a1d34e95712513ceabe40849784e24e41c84638
F ext/wasm/SQLTester/index.html 3f8a016df0776be76605abf20e815ecaafbe055abac0e1fe5ea080e7846b760d
F ext/wasm/SQLTester/touint8array.c 2d5ece04ec1393a6a60c4bf96385bda5e1a10ad49f3038b96460fc5e5aa7e536
F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api 79c97e7d1eae1c5c4ac785a41a59f212299ec1465235e62351bed85f14f7de40
F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api f75b562296c43f9027c4959e98b813e7a4eee415d3d2b33649a64d67a1a40b5e
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 34fe11466f9c1d81b10a0469e1114e5f1c5a6365c73d80a1a6ca639a1a358b73
@ -611,8 +611,8 @@ F ext/wasm/api/post-js-footer.js cd0a8ec768501d9bd45d325ab0442037fb0e33d1f3b4f08
F ext/wasm/api/post-js-header.js 04dc12c3edd666b64a1b4ef3b6690c88dcc653f26451fd4734472d8e29c1c122
F ext/wasm/api/pre-js.c-pp.js ad906703f7429590f2fbf5e6498513bf727a1a4f0ebfa057afb08161d7511219
F ext/wasm/api/sqlite3-api-cleanup.js d235ad237df6954145404305040991c72ef8b1881715d2a650dda7b3c2576d0e
F ext/wasm/api/sqlite3-api-glue.c-pp.js 76797cabedaed1b18ef8f613b7bd33a67d42ca10584a7173beff1fec311c808d
F ext/wasm/api/sqlite3-api-oo1.c-pp.js c373cc04625a96bd3f01ce8ebeac93a5d38dbda6215818c925570df5a945565e
F ext/wasm/api/sqlite3-api-glue.c-pp.js 3aca0971febf2cf29e54f379e0c5816b68cbc1fd9a9c3df4450abc537cda94c7
F ext/wasm/api/sqlite3-api-oo1.c-pp.js 9e11c4338ca400b2a05e5ec7909dd757b8c4d42e48cf57f5b827d040d4a2bb9a
F ext/wasm/api/sqlite3-api-prologue.js b347a0c5350247f90174a0ad9b9e72a99a5f837f31f78f60fcdb829b2ca30b63
F ext/wasm/api/sqlite3-api-worker1.c-pp.js 5cc22a3c0d52828cb32aad8691488719f47d27567e63e8bc8b832d74371c352d
F ext/wasm/api/sqlite3-license-version-header.js 0c807a421f0187e778dc1078f10d2994b915123c1223fe752b60afdcd1263f89
@ -667,7 +667,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 8c5f84262c6a1b5444cbd572557502042c771ec8ccefc265382f488866896872
F ext/wasm/tester1.c-pp.js 24485ade77e62345d0bfddc5f2863c0dad6c1f707e826ecae41f2957ae4e9007
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
@ -2195,8 +2195,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P 5402e4fb1cbd7a2c3dee6ebfb492a076d05daa66f747d18602338874405829df
R 755e2e812676ba0fd928fedbc3fc5e9e
P 5589ba5651d80479ae555429340fc74390ff07d3e05ba770bb7d82490211e00d
R 9649259c83d18c7f11703ab2ef66367d
U stephan
Z 8d9b29289853fb56a82fa2045fc5a771
Z 60c9d132eb4de729d4902cab9b5f025e
# Remove this line to create a well-formed Fossil manifest.

View File

@ -1 +1 @@
5589ba5651d80479ae555429340fc74390ff07d3e05ba770bb7d82490211e00d
6dcfcc7e1c0772b11aec750bb75899a5c8e452735ecf5028c001fbaa7aa6fda0