mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Expose a JS-friendly subset of sqlite3_config() to JS, with the notable caveats that (1) setting up the JS bindings requires starting the library, making sqlite3_config() illegal to call and (2) calling sqlite3_shutdown() in order to make it legal to call sqlite3_config() may undo certain JS-side library initialization. Move sqlite3_(de)serialize() into the int64-mode-only bindings because of their int64 args.
FossilOrigin-Name: 62e0c931ac952219f68e22d64e20836781bf330b4581e4662266172a97c9289b
This commit is contained in:
@ -98,11 +98,6 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
|
|||||||
["sqlite3_db_handle", "sqlite3*", "sqlite3_stmt*"],
|
["sqlite3_db_handle", "sqlite3*", "sqlite3_stmt*"],
|
||||||
["sqlite3_db_name", "string", "sqlite3*", "int"],
|
["sqlite3_db_name", "string", "sqlite3*", "int"],
|
||||||
["sqlite3_db_status", "int", "sqlite3*", "int", "*", "*", "int"],
|
["sqlite3_db_status", "int", "sqlite3*", "int", "*", "*", "int"],
|
||||||
["sqlite3_deserialize", "int", "sqlite3*", "string", "*", "i64", "i64", "int"]
|
|
||||||
/* Careful! Short version: de/serialize() are problematic because they
|
|
||||||
might use a different allocator than the user for managing the
|
|
||||||
deserialized block. de/serialize() are ONLY safe to use with
|
|
||||||
sqlite3_malloc(), sqlite3_free(), and its 64-bit variants. */,
|
|
||||||
["sqlite3_errcode", "int", "sqlite3*"],
|
["sqlite3_errcode", "int", "sqlite3*"],
|
||||||
["sqlite3_errmsg", "string", "sqlite3*"],
|
["sqlite3_errmsg", "string", "sqlite3*"],
|
||||||
["sqlite3_error_offset", "int", "sqlite3*"],
|
["sqlite3_error_offset", "int", "sqlite3*"],
|
||||||
@ -161,9 +156,6 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
|
|||||||
["sqlite3_result_subtype", undefined, "sqlite3_value*", "int"],
|
["sqlite3_result_subtype", undefined, "sqlite3_value*", "int"],
|
||||||
["sqlite3_result_text", undefined, "sqlite3_context*", "string", "int", "*"],
|
["sqlite3_result_text", undefined, "sqlite3_context*", "string", "int", "*"],
|
||||||
["sqlite3_result_zeroblob", undefined, "sqlite3_context*", "int"],
|
["sqlite3_result_zeroblob", undefined, "sqlite3_context*", "int"],
|
||||||
["sqlite3_serialize","*", "sqlite3*", "string", "*", "int"],
|
|
||||||
/* sqlite3_set_authorizer() requires a hand-written binding for
|
|
||||||
string conversions, so is defined elsewhere. */
|
|
||||||
["sqlite3_set_auxdata", undefined, "sqlite3_context*", "int", "*", "*"/* => v(*) */],
|
["sqlite3_set_auxdata", undefined, "sqlite3_context*", "int", "*", "*"/* => v(*) */],
|
||||||
["sqlite3_shutdown", undefined],
|
["sqlite3_shutdown", undefined],
|
||||||
["sqlite3_sourceid", "string"],
|
["sqlite3_sourceid", "string"],
|
||||||
@ -238,6 +230,11 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
|
|||||||
["sqlite3_create_module_v2", "int",
|
["sqlite3_create_module_v2", "int",
|
||||||
["sqlite3*","string","sqlite3_module*","*","*"]],
|
["sqlite3*","string","sqlite3_module*","*","*"]],
|
||||||
["sqlite3_declare_vtab", "int", ["sqlite3*", "string:flexible"]],
|
["sqlite3_declare_vtab", "int", ["sqlite3*", "string:flexible"]],
|
||||||
|
["sqlite3_deserialize", "int", "sqlite3*", "string", "*", "i64", "i64", "int"]
|
||||||
|
/* Careful! Short version: de/serialize() are problematic because they
|
||||||
|
might use a different allocator than the user for managing the
|
||||||
|
deserialized block. de/serialize() are ONLY safe to use with
|
||||||
|
sqlite3_malloc(), sqlite3_free(), and its 64-bit variants. */,
|
||||||
["sqlite3_drop_modules", "int", ["sqlite3*", "**"]],
|
["sqlite3_drop_modules", "int", ["sqlite3*", "**"]],
|
||||||
["sqlite3_last_insert_rowid", "i64", ["sqlite3*"]],
|
["sqlite3_last_insert_rowid", "i64", ["sqlite3*"]],
|
||||||
["sqlite3_malloc64", "*","i64"],
|
["sqlite3_malloc64", "*","i64"],
|
||||||
@ -246,6 +243,9 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
|
|||||||
["sqlite3_realloc64", "*","*", "i64"],
|
["sqlite3_realloc64", "*","*", "i64"],
|
||||||
["sqlite3_result_int64", undefined, "*", "i64"],
|
["sqlite3_result_int64", undefined, "*", "i64"],
|
||||||
["sqlite3_result_zeroblob64", "int", "*", "i64"],
|
["sqlite3_result_zeroblob64", "int", "*", "i64"],
|
||||||
|
["sqlite3_serialize","*", "sqlite3*", "string", "*", "int"],
|
||||||
|
/* sqlite3_set_authorizer() requires a hand-written binding for
|
||||||
|
string conversions, so is defined elsewhere. */
|
||||||
["sqlite3_set_last_insert_rowid", undefined, ["sqlite3*", "i64"]],
|
["sqlite3_set_last_insert_rowid", undefined, ["sqlite3*", "i64"]],
|
||||||
["sqlite3_status64", "int", "int", "*", "*", "int"],
|
["sqlite3_status64", "int", "int", "*", "*", "int"],
|
||||||
["sqlite3_total_changes64", "i64", ["sqlite3*"]],
|
["sqlite3_total_changes64", "i64", ["sqlite3*"]],
|
||||||
@ -851,6 +851,52 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
|
|||||||
};
|
};
|
||||||
}/* sqlite3_set_authorizer() */
|
}/* sqlite3_set_authorizer() */
|
||||||
|
|
||||||
|
{/* sqlite3_config() */
|
||||||
|
/**
|
||||||
|
Wraps a small subset of the C API's sqlite3_config() options.
|
||||||
|
Unsupported options trigger the return of capi.SQLITE_NOTFOUND.
|
||||||
|
Passing fewer than 2 arguments triggers return of
|
||||||
|
capi.SQLITE_MISUSE.
|
||||||
|
*/
|
||||||
|
capi.sqlite3_config = function(op, ...args){
|
||||||
|
if(arguments.length<2) return capi.SQLITE_MISUSE;
|
||||||
|
switch(op){
|
||||||
|
case capi.SQLITE_CONFIG_COVERING_INDEX_SCAN: // 20 /* int */
|
||||||
|
case capi.SQLITE_CONFIG_MEMSTATUS:// 9 /* boolean */
|
||||||
|
case capi.SQLITE_CONFIG_SMALL_MALLOC: // 27 /* boolean */
|
||||||
|
case capi.SQLITE_CONFIG_SORTERREF_SIZE: // 28 /* int nByte */
|
||||||
|
case capi.SQLITE_CONFIG_STMTJRNL_SPILL: // 26 /* int nByte */
|
||||||
|
case capi.SQLITE_CONFIG_URI:// 17 /* int */
|
||||||
|
return wasm.exports.sqlite3_wasm_config_i(op, args[0]);
|
||||||
|
case capi.SQLITE_CONFIG_LOOKASIDE: // 13 /* int int */
|
||||||
|
return wasm.exports.sqlite3_wasm_config_ii(op, args[0], args[1]);
|
||||||
|
case capi.SQLITE_CONFIG_MEMDB_MAXSIZE: // 29 /* sqlite3_int64 */
|
||||||
|
return wasm.exports.sqlite3_wasm_config_j(op, args[0]);
|
||||||
|
case capi.SQLITE_CONFIG_GETMALLOC: // 5 /* sqlite3_mem_methods* */
|
||||||
|
case capi.SQLITE_CONFIG_GETMUTEX: // 11 /* sqlite3_mutex_methods* */
|
||||||
|
case capi.SQLITE_CONFIG_GETPCACHE2: // 19 /* sqlite3_pcache_methods2* */
|
||||||
|
case capi.SQLITE_CONFIG_GETPCACHE: // 15 /* no-op */
|
||||||
|
case capi.SQLITE_CONFIG_HEAP: // 8 /* void*, int nByte, int min */
|
||||||
|
case capi.SQLITE_CONFIG_LOG: // 16 /* xFunc, void* */
|
||||||
|
case capi.SQLITE_CONFIG_MALLOC:// 4 /* sqlite3_mem_methods* */
|
||||||
|
case capi.SQLITE_CONFIG_MMAP_SIZE: // 22 /* sqlite3_int64, sqlite3_int64 */
|
||||||
|
case capi.SQLITE_CONFIG_MULTITHREAD: // 2 /* nil */
|
||||||
|
case capi.SQLITE_CONFIG_MUTEX: // 10 /* sqlite3_mutex_methods* */
|
||||||
|
case capi.SQLITE_CONFIG_PAGECACHE: // 7 /* void*, int sz, int N */
|
||||||
|
case capi.SQLITE_CONFIG_PCACHE2: // 18 /* sqlite3_pcache_methods2* */
|
||||||
|
case capi.SQLITE_CONFIG_PCACHE: // 14 /* no-op */
|
||||||
|
case capi.SQLITE_CONFIG_PCACHE_HDRSZ: // 24 /* int *psz */
|
||||||
|
case capi.SQLITE_CONFIG_PMASZ: // 25 /* unsigned int szPma */
|
||||||
|
case capi.SQLITE_CONFIG_SERIALIZED: // 3 /* nil */
|
||||||
|
case capi.SQLITE_CONFIG_SINGLETHREAD: // 1 /* nil */:
|
||||||
|
case capi.SQLITE_CONFIG_SQLLOG: // 21 /* xSqllog, void* */
|
||||||
|
case capi.SQLITE_CONFIG_WIN32_HEAPSIZE: // 23 /* int nByte */
|
||||||
|
default:
|
||||||
|
return capi.SQLITE_NOTFOUND;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}/* sqlite3_config() */
|
||||||
|
|
||||||
{/* Import C-level constants and structs... */
|
{/* Import C-level constants and structs... */
|
||||||
const cJson = wasm.xCall('sqlite3_wasm_enum_json');
|
const cJson = wasm.xCall('sqlite3_wasm_enum_json');
|
||||||
if(!cJson){
|
if(!cJson){
|
||||||
@ -860,7 +906,7 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
|
|||||||
wasm.ctype = JSON.parse(wasm.cstrToJs(cJson));
|
wasm.ctype = JSON.parse(wasm.cstrToJs(cJson));
|
||||||
//console.debug('wasm.ctype length =',wasm.cstrlen(cJson));
|
//console.debug('wasm.ctype length =',wasm.cstrlen(cJson));
|
||||||
const defineGroups = ['access', 'authorizer',
|
const defineGroups = ['access', 'authorizer',
|
||||||
'blobFinalizers', 'dataTypes',
|
'blobFinalizers', 'config', 'dataTypes',
|
||||||
'dbConfig', 'dbStatus',
|
'dbConfig', 'dbStatus',
|
||||||
'encodings', 'fcntl', 'flock', 'ioCap',
|
'encodings', 'fcntl', 'flock', 'ioCap',
|
||||||
'limits', 'openFlags',
|
'limits', 'openFlags',
|
||||||
|
@ -455,6 +455,38 @@ const char * sqlite3_wasm_enum_json(void){
|
|||||||
out("\"SQLITE_STATIC\":0, \"SQLITE_TRANSIENT\":-1");
|
out("\"SQLITE_STATIC\":0, \"SQLITE_TRANSIENT\":-1");
|
||||||
} _DefGroup;
|
} _DefGroup;
|
||||||
|
|
||||||
|
DefGroup(config){
|
||||||
|
DefInt(SQLITE_CONFIG_SINGLETHREAD);
|
||||||
|
DefInt(SQLITE_CONFIG_MULTITHREAD);
|
||||||
|
DefInt(SQLITE_CONFIG_SERIALIZED);
|
||||||
|
DefInt(SQLITE_CONFIG_MALLOC);
|
||||||
|
DefInt(SQLITE_CONFIG_GETMALLOC);
|
||||||
|
DefInt(SQLITE_CONFIG_SCRATCH);
|
||||||
|
DefInt(SQLITE_CONFIG_PAGECACHE);
|
||||||
|
DefInt(SQLITE_CONFIG_HEAP);
|
||||||
|
DefInt(SQLITE_CONFIG_MEMSTATUS);
|
||||||
|
DefInt(SQLITE_CONFIG_MUTEX);
|
||||||
|
DefInt(SQLITE_CONFIG_GETMUTEX);
|
||||||
|
/* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */
|
||||||
|
DefInt(SQLITE_CONFIG_LOOKASIDE);
|
||||||
|
DefInt(SQLITE_CONFIG_PCACHE);
|
||||||
|
DefInt(SQLITE_CONFIG_GETPCACHE);
|
||||||
|
DefInt(SQLITE_CONFIG_LOG);
|
||||||
|
DefInt(SQLITE_CONFIG_URI);
|
||||||
|
DefInt(SQLITE_CONFIG_PCACHE2);
|
||||||
|
DefInt(SQLITE_CONFIG_GETPCACHE2);
|
||||||
|
DefInt(SQLITE_CONFIG_COVERING_INDEX_SCAN);
|
||||||
|
DefInt(SQLITE_CONFIG_SQLLOG);
|
||||||
|
DefInt(SQLITE_CONFIG_MMAP_SIZE);
|
||||||
|
DefInt(SQLITE_CONFIG_WIN32_HEAPSIZE);
|
||||||
|
DefInt(SQLITE_CONFIG_PCACHE_HDRSZ);
|
||||||
|
DefInt(SQLITE_CONFIG_PMASZ);
|
||||||
|
DefInt(SQLITE_CONFIG_STMTJRNL_SPILL);
|
||||||
|
DefInt(SQLITE_CONFIG_SMALL_MALLOC);
|
||||||
|
DefInt(SQLITE_CONFIG_SORTERREF_SIZE);
|
||||||
|
DefInt(SQLITE_CONFIG_MEMDB_MAXSIZE);
|
||||||
|
} _DefGroup;
|
||||||
|
|
||||||
DefGroup(dataTypes) {
|
DefGroup(dataTypes) {
|
||||||
DefInt(SQLITE_INTEGER);
|
DefInt(SQLITE_INTEGER);
|
||||||
DefInt(SQLITE_FLOAT);
|
DefInt(SQLITE_FLOAT);
|
||||||
@ -1491,6 +1523,42 @@ int sqlite3_wasm_db_config_s(sqlite3 *pDb, int op, const char *zArg){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This function is NOT part of the sqlite3 public API. It is strictly
|
||||||
|
** for use by the sqlite project's own JS/WASM bindings.
|
||||||
|
**
|
||||||
|
** Binding for combinations of sqlite3_config() arguments which take
|
||||||
|
** a single integer argument.
|
||||||
|
*/
|
||||||
|
SQLITE_WASM_KEEP
|
||||||
|
int sqlite3_wasm_config_i(int op, int arg){
|
||||||
|
return sqlite3_config(op, arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This function is NOT part of the sqlite3 public API. It is strictly
|
||||||
|
** for use by the sqlite project's own JS/WASM bindings.
|
||||||
|
**
|
||||||
|
** Binding for combinations of sqlite3_config() arguments which take
|
||||||
|
** two int arguments.
|
||||||
|
*/
|
||||||
|
SQLITE_WASM_KEEP
|
||||||
|
int sqlite3_wasm_config_ii(int op, int arg1, int arg2){
|
||||||
|
return sqlite3_config(op, arg1, arg2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This function is NOT part of the sqlite3 public API. It is strictly
|
||||||
|
** for use by the sqlite project's own JS/WASM bindings.
|
||||||
|
**
|
||||||
|
** Binding for combinations of sqlite3_config() arguments which take
|
||||||
|
** a single i64 argument.
|
||||||
|
*/
|
||||||
|
SQLITE_WASM_KEEP
|
||||||
|
int sqlite3_wasm_config_j(int op, sqlite3_int64 arg){
|
||||||
|
return sqlite3_config(op, arg);
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(__EMSCRIPTEN__) && defined(SQLITE_ENABLE_WASMFS)
|
#if defined(__EMSCRIPTEN__) && defined(SQLITE_ENABLE_WASMFS)
|
||||||
#include <emscripten/wasmfs.h>
|
#include <emscripten/wasmfs.h>
|
||||||
|
|
||||||
|
@ -344,6 +344,38 @@ self.sqlite3InitModule = sqlite3InitModule;
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
T.g('Basic sanity checks')
|
T.g('Basic sanity checks')
|
||||||
|
.t({
|
||||||
|
name:'sqlite3_config()',
|
||||||
|
test:function(sqlite3){
|
||||||
|
for(const k of [
|
||||||
|
'SQLITE_CONFIG_GETMALLOC', 'SQLITE_CONFIG_URI'
|
||||||
|
]){
|
||||||
|
T.assert(capi[k] > 0);
|
||||||
|
}
|
||||||
|
T.assert(capi.SQLITE_MISUSE===capi.sqlite3_config(
|
||||||
|
capi.SQLITE_CONFIG_URI, 1
|
||||||
|
), "MISUSE because the library has already been initialized.");
|
||||||
|
T.assert(capi.SQLITE_MISUSE === capi.sqlite3_config(
|
||||||
|
// not enough args
|
||||||
|
capi.SQLITE_CONFIG_GETMALLOC
|
||||||
|
));
|
||||||
|
T.assert(capi.SQLITE_NOTFOUND === capi.sqlite3_config(
|
||||||
|
// unhandled-in-JS config option
|
||||||
|
capi.SQLITE_CONFIG_GETMALLOC, 1
|
||||||
|
));
|
||||||
|
if(0){
|
||||||
|
log("We cannot _fully_ test sqlite3_config() after the library",
|
||||||
|
"has been initialized (which it necessarily has been to",
|
||||||
|
"set up various bindings) and we cannot shut it down ",
|
||||||
|
"without losing the VFS registrations.");
|
||||||
|
T.assert(0 === capi.sqlite3_config(
|
||||||
|
capi.SQLITE_CONFIG_URI, 1
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})/*sqlite3_config()*/
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
.t({
|
.t({
|
||||||
name: "JS wasm-side allocator",
|
name: "JS wasm-side allocator",
|
||||||
test: function(sqlite3){
|
test: function(sqlite3){
|
||||||
@ -422,6 +454,7 @@ self.sqlite3InitModule = sqlite3InitModule;
|
|||||||
assert(0===capi.sqlite3_strlike("%.txt", "foo.txt", 0)).
|
assert(0===capi.sqlite3_strlike("%.txt", "foo.txt", 0)).
|
||||||
assert(0!==capi.sqlite3_strlike("%.txt", "foo.xtx", 0));
|
assert(0!==capi.sqlite3_strlike("%.txt", "foo.xtx", 0));
|
||||||
})
|
})
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
;/*end of basic sanity checks*/
|
;/*end of basic sanity checks*/
|
||||||
|
|
||||||
|
18
manifest
18
manifest
@ -1,5 +1,5 @@
|
|||||||
C In\sthe\sfuzzer\sinvariant\schecker,\sdo\snot\sadd\snew\sWHERE\sclause\sterms\sthat\nmake\suse\sof\san\sambiguous\scolumn\sname.
|
C Expose\sa\sJS-friendly\ssubset\sof\ssqlite3_config()\sto\sJS,\swith\sthe\snotable\scaveats\sthat\s(1)\ssetting\sup\sthe\sJS\sbindings\srequires\sstarting\sthe\slibrary,\smaking\ssqlite3_config()\sillegal\sto\scall\sand\s(2)\scalling\ssqlite3_shutdown()\sin\sorder\sto\smake\sit\slegal\sto\scall\ssqlite3_config()\smay\sundo\scertain\sJS-side\slibrary\sinitialization.\sMove\ssqlite3_(de)serialize()\sinto\sthe\sint64-mode-only\sbindings\sbecause\sof\stheir\sint64\sargs.
|
||||||
D 2022-12-16T12:07:48.018
|
D 2022-12-16T13:04:21.511
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
@ -503,7 +503,7 @@ F ext/wasm/api/post-js-footer.js cd0a8ec768501d9bd45d325ab0442037fb0e33d1f3b4f08
|
|||||||
F ext/wasm/api/post-js-header.js 47b6b281f39ad59fa6e8b658308cd98ea292c286a68407b35ff3ed9cfd281a62
|
F ext/wasm/api/post-js-header.js 47b6b281f39ad59fa6e8b658308cd98ea292c286a68407b35ff3ed9cfd281a62
|
||||||
F ext/wasm/api/pre-js.c-pp.js b88499dc303c21fc3f55f2c364a0f814f587b60a95784303881169f9e91c1d5f
|
F ext/wasm/api/pre-js.c-pp.js b88499dc303c21fc3f55f2c364a0f814f587b60a95784303881169f9e91c1d5f
|
||||||
F ext/wasm/api/sqlite3-api-cleanup.js 680d5ccfff54459db136a49b2199d9f879c8405d9c99af1dda0cc5e7c29056f4
|
F ext/wasm/api/sqlite3-api-cleanup.js 680d5ccfff54459db136a49b2199d9f879c8405d9c99af1dda0cc5e7c29056f4
|
||||||
F ext/wasm/api/sqlite3-api-glue.js beb6a08c58c2c8d6af59036a2cbc5d994612eea88ebe0fc9ccbb8df10530e3a7
|
F ext/wasm/api/sqlite3-api-glue.js 63daa4b9c36faa4c338a32a06eb142869b9ae4885a3e01aad473e1b45357089f
|
||||||
F ext/wasm/api/sqlite3-api-oo1.js c0c4ccc269cccee657ffd03f094da7e270e1367b7928926b3730d543555a12a6
|
F ext/wasm/api/sqlite3-api-oo1.js c0c4ccc269cccee657ffd03f094da7e270e1367b7928926b3730d543555a12a6
|
||||||
F ext/wasm/api/sqlite3-api-prologue.js 86eb4488f2be85e68c23ebcfad0834c24b6075e1645c67890cc4163c462efac1
|
F ext/wasm/api/sqlite3-api-prologue.js 86eb4488f2be85e68c23ebcfad0834c24b6075e1645c67890cc4163c462efac1
|
||||||
F ext/wasm/api/sqlite3-api-worker1.js e94ba98e44afccfa482874cd9acb325883ade50ed1f9f9526beb9de1711f182f
|
F ext/wasm/api/sqlite3-api-worker1.js e94ba98e44afccfa482874cd9acb325883ade50ed1f9f9526beb9de1711f182f
|
||||||
@ -512,7 +512,7 @@ F ext/wasm/api/sqlite3-opfs-async-proxy.js 7795b84b66a7a8dedc791340709b310bb497c
|
|||||||
F ext/wasm/api/sqlite3-v-helper.js 6f6c3e390a72e08b0a5b16a0d567d7af3c04d172831853a29d72a6f1dd40ff24
|
F ext/wasm/api/sqlite3-v-helper.js 6f6c3e390a72e08b0a5b16a0d567d7af3c04d172831853a29d72a6f1dd40ff24
|
||||||
F ext/wasm/api/sqlite3-vfs-opfs.c-pp.js 66daf6fb6843bea615fe193109e1542efbeca24f560ee9da63375a910bb48115
|
F ext/wasm/api/sqlite3-vfs-opfs.c-pp.js 66daf6fb6843bea615fe193109e1542efbeca24f560ee9da63375a910bb48115
|
||||||
F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9
|
F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9
|
||||||
F ext/wasm/api/sqlite3-wasm.c f95466be697e0096c8d2e6d24cf97592c012dcc3dea48ce2d285e44ef4458794
|
F ext/wasm/api/sqlite3-wasm.c 44ce4cf12318b0577d8222cf59132617ab9925ca3cf5fbb8c7b30d1e947c13b5
|
||||||
F ext/wasm/api/sqlite3-worker1-promiser.js 0c7a9826dbf82a5ed4e4f7bf7816e825a52aff253afbf3350431f5773faf0e4b
|
F ext/wasm/api/sqlite3-worker1-promiser.js 0c7a9826dbf82a5ed4e4f7bf7816e825a52aff253afbf3350431f5773faf0e4b
|
||||||
F ext/wasm/api/sqlite3-worker1.js 1e54ea3d540161bcfb2100368a2fc0cad871a207b8336afee1c445715851ec54
|
F ext/wasm/api/sqlite3-worker1.js 1e54ea3d540161bcfb2100368a2fc0cad871a207b8336afee1c445715851ec54
|
||||||
F ext/wasm/batch-runner.html 4deeed44fe41496dc6898d9fb17938ea3291f40f4bfb977e29d0cef96fbbe4c8
|
F ext/wasm/batch-runner.html 4deeed44fe41496dc6898d9fb17938ea3291f40f4bfb977e29d0cef96fbbe4c8
|
||||||
@ -555,7 +555,7 @@ F ext/wasm/test-opfs-vfs.html 1f2d672f3f3fce810dfd48a8d56914aba22e45c6834e262555
|
|||||||
F ext/wasm/test-opfs-vfs.js 44363db07b2a20e73b0eb1808de4400ca71b703af718d0fa6d962f15e73bf2ac
|
F ext/wasm/test-opfs-vfs.js 44363db07b2a20e73b0eb1808de4400ca71b703af718d0fa6d962f15e73bf2ac
|
||||||
F ext/wasm/tester1-worker.html d43f3c131d88f10d00aff3e328fed13c858d674ea2ff1ff90225506137f85aa9
|
F ext/wasm/tester1-worker.html d43f3c131d88f10d00aff3e328fed13c858d674ea2ff1ff90225506137f85aa9
|
||||||
F ext/wasm/tester1.c-pp.html d34bef3d48e5cbc1c7c06882ad240fec49bf88f5f65696cc2c72c416933aa406
|
F ext/wasm/tester1.c-pp.html d34bef3d48e5cbc1c7c06882ad240fec49bf88f5f65696cc2c72c416933aa406
|
||||||
F ext/wasm/tester1.c-pp.js 74e01ac9745e39ed7de7ae8c2754c60a7b0fdcc46721c87c3e776f0fac5ce5be
|
F ext/wasm/tester1.c-pp.js c45c46cdae1949d426ee12a736087ab180beacc2a20cd829f9052b957adf9ac9
|
||||||
F ext/wasm/tests/opfs/concurrency/index.html 86d8ac435074d1e7007b91105f4897f368c165e8cecb6a9aa3d81f5cf5dcbe70
|
F ext/wasm/tests/opfs/concurrency/index.html 86d8ac435074d1e7007b91105f4897f368c165e8cecb6a9aa3d81f5cf5dcbe70
|
||||||
F ext/wasm/tests/opfs/concurrency/test.js a98016113eaf71e81ddbf71655aa29b0fed9a8b79a3cdd3620d1658eb1cc9a5d
|
F ext/wasm/tests/opfs/concurrency/test.js a98016113eaf71e81ddbf71655aa29b0fed9a8b79a3cdd3620d1658eb1cc9a5d
|
||||||
F ext/wasm/tests/opfs/concurrency/worker.js 0a8c1a3e6ebb38aabbee24f122693f1fb29d599948915c76906681bb7da1d3d2
|
F ext/wasm/tests/opfs/concurrency/worker.js 0a8c1a3e6ebb38aabbee24f122693f1fb29d599948915c76906681bb7da1d3d2
|
||||||
@ -2067,8 +2067,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 5a77c2c7aaa556007274e1b85790934665c2c12661ca11d896eb7d09cd49ce72
|
P d5b46541c30bcbeb7e57b5b5951856d564e81f7f9638d66d205157797964418c
|
||||||
R 5912776d60014d62a178582171ec8c5f
|
R 3afea6252bc68c0319a7d4efa09b97ce
|
||||||
U drh
|
U stephan
|
||||||
Z 34c5007cd65a0ffb4008240f51abcb89
|
Z 45bb73c33ed651be7eee986337a7cf7b
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
d5b46541c30bcbeb7e57b5b5951856d564e81f7f9638d66d205157797964418c
|
62e0c931ac952219f68e22d64e20836781bf330b4581e4662266172a97c9289b
|
Reference in New Issue
Block a user