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

Add JS bindings and tests for sqlite3_interrupted(), is_interrupted(), and db_readonly().

FossilOrigin-Name: 5589ba5651d80479ae555429340fc74390ff07d3e05ba770bb7d82490211e00d
This commit is contained in:
stephan
2024-07-13 12:50:42 +00:00
parent c636e124df
commit 6f9b37b35b
5 changed files with 34 additions and 14 deletions

View File

@ -46,6 +46,7 @@ _sqlite3_data_count
_sqlite3_db_filename
_sqlite3_db_handle
_sqlite3_db_name
_sqlite3_db_readonly
_sqlite3_db_status
_sqlite3_declare_vtab
_sqlite3_deserialize
@ -64,6 +65,8 @@ _sqlite3_free
_sqlite3_get_auxdata
_sqlite3_get_autocommit
_sqlite3_initialize
_sqlite3_interrupt
_sqlite3_is_interrupted
_sqlite3_keyword_count
_sqlite3_keyword_name
_sqlite3_keyword_check

View File

@ -152,6 +152,7 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
["sqlite3_db_filename", "string", "sqlite3*", "string"],
["sqlite3_db_handle", "sqlite3*", "sqlite3_stmt*"],
["sqlite3_db_name", "string", "sqlite3*", "int"],
["sqlite3_db_readonly", "int", "sqlite3*", "string"],
["sqlite3_db_status", "int", "sqlite3*", "int", "*", "*", "int"],
["sqlite3_errcode", "int", "sqlite3*"],
["sqlite3_errmsg", "string", "sqlite3*"],
@ -192,10 +193,8 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
["sqlite3_get_autocommit", "int", "sqlite3*"],
["sqlite3_get_auxdata", "*", "sqlite3_context*", "int"],
["sqlite3_initialize", undefined],
/*["sqlite3_interrupt", undefined, "sqlite3*"
^^^ we cannot actually currently support this because JS is
single-threaded and we don't have a portable way to access a DB
from 2 SharedWorkers concurrently. ],*/
["sqlite3_interrupt", undefined, "sqlite3*"],
["sqlite3_is_interrupted", "int", "sqlite3*"],
["sqlite3_keyword_count", "int"],
["sqlite3_keyword_name", "int", ["int", "**", "*"]],
["sqlite3_keyword_check", "int", ["string", "int"]],

View File

@ -461,7 +461,7 @@ globalThis.sqlite3InitModule = sqlite3InitModule;
try{ sqlite3.SQLite3Error.toss("resultCode check") }
catch(e){
T.assert(capi.SQLITE_ERROR === e.resultCode)
.assert('resultCode check' === e.message);
.assert('resultCode check' === e.message);
}
})
////////////////////////////////////////////////////////////////////
@ -2063,6 +2063,24 @@ 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") );
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();
})
////////////////////////////////////////////////////////////////////
.t({
name: 'C-side WASM tests',