Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add missing sqlite3_bind_parameter_name() binding to JS. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
6dcfcc7e1c0772b11aec750bb75899a5 |
User & Date: | stephan 2024-07-13 13:22:32 |
Context
2024-07-13
| ||
16:53 | Fixes for platforms with 32-bit pointers that require 64-bit values to be aligned. (check-in: 2212d748 user: dan tags: alignment-fixes) | |
14:07 | Add JS bindings for sqlite3_stmt_busy() and sqlite3_stmt_explain(). (check-in: b772edfb user: stephan tags: trunk) | |
13:22 | Add missing sqlite3_bind_parameter_name() binding to JS. (check-in: 6dcfcc7e user: stephan tags: trunk) | |
12:50 | Add JS bindings and tests for sqlite3_interrupted(), is_interrupted(), and db_readonly(). (check-in: 5589ba56 user: stephan tags: trunk) | |
Changes
Changes to ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | _malloc _free _realloc _sqlite3_aggregate_context _sqlite3_auto_extension _sqlite3_bind_blob _sqlite3_bind_double _sqlite3_bind_int _sqlite3_bind_int64 _sqlite3_bind_null _sqlite3_bind_parameter_count _sqlite3_bind_parameter_index _sqlite3_bind_pointer _sqlite3_bind_text _sqlite3_busy_handler _sqlite3_busy_timeout _sqlite3_cancel_auto_extension _sqlite3_changes _sqlite3_changes64 | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | _malloc _free _realloc _sqlite3_aggregate_context _sqlite3_auto_extension _sqlite3_bind_blob _sqlite3_bind_double _sqlite3_bind_int _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 _sqlite3_busy_timeout _sqlite3_cancel_auto_extension _sqlite3_changes _sqlite3_changes64 |
︙ | ︙ |
Changes to ext/wasm/api/sqlite3-api-glue.c-pp.js.
︙ | ︙ | |||
91 92 93 94 95 96 97 98 99 100 101 102 103 104 | /* sqlite3_bind_blob() and sqlite3_bind_text() have hand-written bindings to permit more flexible inputs. */ ["sqlite3_bind_double","int", "sqlite3_stmt*", "int", "f64"], ["sqlite3_bind_int","int", "sqlite3_stmt*", "int", "int"], ["sqlite3_bind_null",undefined, "sqlite3_stmt*", "int"], ["sqlite3_bind_parameter_count", "int", "sqlite3_stmt*"], ["sqlite3_bind_parameter_index","int", "sqlite3_stmt*", "string"], ["sqlite3_bind_pointer", "int", "sqlite3_stmt*", "int", "*", "string:static", "*"], ["sqlite3_busy_handler","int", [ "sqlite3*", new wasm.xWrap.FuncPtrAdapter({ signature: 'i(pi)', contextKey: (argv,argIndex)=>argv[0/* sqlite3* */] | > | 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | /* sqlite3_bind_blob() and sqlite3_bind_text() have hand-written bindings to permit more flexible inputs. */ ["sqlite3_bind_double","int", "sqlite3_stmt*", "int", "f64"], ["sqlite3_bind_int","int", "sqlite3_stmt*", "int", "int"], ["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", [ "sqlite3*", new wasm.xWrap.FuncPtrAdapter({ signature: 'i(pi)', contextKey: (argv,argIndex)=>argv[0/* sqlite3* */] |
︙ | ︙ |
Changes to ext/wasm/api/sqlite3-api-oo1.c-pp.js.
︙ | ︙ | |||
2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 | returned. If no match is found, 0 is returned. If it has no bindable parameters, the undefined value is returned. */ getParamIndex: function(name){ return (affirmStmtOpen(this).parameterCount ? capi.sqlite3_bind_parameter_index(this.pointer, name) : undefined); } }/*Stmt.prototype*/; {/* Add the `pointer` property to DB and Stmt. */ const prop = { enumerable: true, get: function(){return __ptrMap.get(this)}, | > > > > > > > > > > > > > | 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 | returned. If no match is found, 0 is returned. If it has no bindable parameters, the undefined value is returned. */ getParamIndex: function(name){ 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*/; {/* Add the `pointer` property to DB and Stmt. */ const prop = { enumerable: true, get: function(){return __ptrMap.get(this)}, |
︙ | ︙ |
Changes to ext/wasm/tester1.c-pp.js.
︙ | ︙ | |||
2059 2060 2061 2062 2063 2064 2065 | T.assert(capi.SQLITE_ABORT === rc); db.exec("detach foo"); T.mustThrow(()=>db.exec("select * from foo.bar"), "Because foo is no longer attached."); }) | < < < < < < < < < | 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 | T.assert(capi.SQLITE_ABORT === rc); db.exec("detach foo"); T.mustThrow(()=>db.exec("select * from foo.bar"), "Because foo is no longer attached."); }) //////////////////////////////////////////////////////////////////// .t("Read-only", function(sqlite3){ T.assert( 0===capi.sqlite3_db_readonly(this.db, "main") ); const db = new sqlite3.oo1.DB('file://'+this.db.filename+'?mode=ro'); T.assert( 1===capi.sqlite3_db_readonly(db, "main") ); T.assert( -1===capi.sqlite3_db_readonly(db, "nope") ); db.close(); |
︙ | ︙ | |||
3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 | T.assert(undefined === cErr) .assert(P3b === u3) .assert(P3b === await inst(conf2)) .assert(true === await u3.removeVfs()) .assert(false === await P3b.removeVfs()); } }/*OPFS SAH Pool sanity checks*/) //////////////////////////////////////////////////////////////////////// T.g('Bug Reports') .t({ name: 'Delete via bound parameter in subquery', test: function(sqlite3){ // Testing https://sqlite.org/forum/forumpost/40ce55bdf5 | > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 | T.assert(undefined === cErr) .assert(P3b === u3) .assert(P3b === await inst(conf2)) .assert(true === await u3.removeVfs()) .assert(false === await P3b.removeVfs()); } }/*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({ name: 'Delete via bound parameter in subquery', test: function(sqlite3){ // Testing https://sqlite.org/forum/forumpost/40ce55bdf5 |
︙ | ︙ |