aboutsummaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api3
-rw-r--r--ext/wasm/api/sqlite3-api-glue.c-pp.js7
-rw-r--r--ext/wasm/tester1.c-pp.js20
3 files changed, 25 insertions, 5 deletions
diff --git a/ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api b/ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api
index d4ecf5b9d..c2dedfd57 100644
--- a/ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api
+++ b/ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api
@@ -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
diff --git a/ext/wasm/api/sqlite3-api-glue.c-pp.js b/ext/wasm/api/sqlite3-api-glue.c-pp.js
index 83b2ee172..d3ea8a35a 100644
--- a/ext/wasm/api/sqlite3-api-glue.c-pp.js
+++ b/ext/wasm/api/sqlite3-api-glue.c-pp.js
@@ -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"]],
diff --git a/ext/wasm/tester1.c-pp.js b/ext/wasm/tester1.c-pp.js
index 1fcc9ae7c..4ebe8f83a 100644
--- a/ext/wasm/tester1.c-pp.js
+++ b/ext/wasm/tester1.c-pp.js
@@ -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);
}
})
////////////////////////////////////////////////////////////////////
@@ -2064,6 +2064,24 @@ globalThis.sqlite3InitModule = sqlite3InitModule;
})
////////////////////////////////////////////////////////////////////
+ .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',
predicate: ()=>(haveWasmCTests() || "Not compiled in."),