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

Add JS bindings for sqlite3_stmt_busy() and sqlite3_stmt_explain().

FossilOrigin-Name: b772edfb44143107d4993bde600d0f4c45184f29a4deee403105c64748c36523
This commit is contained in:
stephan
2024-07-13 14:07:47 +00:00
parent 0b9efaffd7
commit 55a4bea72a
6 changed files with 68 additions and 14 deletions

View File

@ -1475,7 +1475,8 @@ globalThis.sqlite3InitModule = sqlite3InitModule;
let st = db.prepare("update t set b=:b where a='blob'");
try {
T.assert(0===st.columnCount);
T.assert(0===st.columnCount)
.assert( false===st.isReadOnly() );
const ndx = st.getParamIndex(':b');
T.assert(1===ndx);
st.bindAsBlob(ndx, "ima blob")
@ -3215,7 +3216,7 @@ globalThis.sqlite3InitModule = sqlite3InitModule;
////////////////////////////////////////////////////////////////////////
T.g('Misc. APIs')
.t('bind_parameter', function(sqlite3){
.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)");
@ -3232,6 +3233,35 @@ globalThis.sqlite3InitModule = sqlite3InitModule;
db.close();
})
////////////////////////////////////////////////////////////////////
.t("Misc. stmt_...", function(sqlite3){
const db = new sqlite3.oo1.DB();
db.exec(["create table t(a);","insert into t(a) values(123)"]);
const stmt = db.prepare("select a from t");
T.assert( stmt.isReadOnly() )
.assert( 0===capi.sqlite3_stmt_isexplain(stmt) )
.assert( 0===capi.sqlite3_stmt_explain(stmt, 1) )
.assert( 0!==capi.sqlite3_stmt_isexplain(stmt) )
.assert( 0===capi.sqlite3_stmt_explain(stmt, 2) )
.assert( 0!==capi.sqlite3_stmt_isexplain(stmt) )
.assert( 0===capi.sqlite3_stmt_explain(stmt, 0) )
.assert( 0===capi.sqlite3_stmt_isexplain(stmt) );
while( capi.SQLITE_ROW === capi.sqlite3_step(stmt) ){
T.assert( 0!==capi.sqlite3_stmt_explain(stmt, 1),
"Because stmt is busy" )
.assert( capi.sqlite3_stmt_busy(stmt) )
.assert( stmt.isBusy() )
.assert( 0!==capi.sqlite3_stmt_readonly(stmt) )
.assert( true===stmt.isReadOnly() );
const sv = capi.sqlite3_column_value(stmt, 0);
T.assert( 123===capi.sqlite3_value_int(sv) );
}
T.assert( 0===capi.sqlite3_stmt_busy(stmt) )
.assert( !stmt.isBusy() );
stmt.finalize();
db.close();
})
////////////////////////////////////////////////////////////////////
.t("interrupt", function(sqlite3){
const db = new sqlite3.oo1.DB();