mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Add return value checks to kvstorageWrite(), necessary for recognizing storage-full errors in the JS binding. speedtest1-kvvfs.html runs successfully on localStorage with --size 1 to 6 and starts failing with storage shortage at --size 7.
FossilOrigin-Name: 13839759f8f45e4eb0aa6a5052801f3964d5b2dc2e427e5e91ee6692176381eb
This commit is contained in:
@ -330,6 +330,7 @@ all: batch
|
|||||||
# speedtest1.eflags = emcc flags used by main build of speedtest1
|
# speedtest1.eflags = emcc flags used by main build of speedtest1
|
||||||
speedtest1-common.eflags := -g $(emcc_opt)
|
speedtest1-common.eflags := -g $(emcc_opt)
|
||||||
speedtest1.eflags :=
|
speedtest1.eflags :=
|
||||||
|
speedtest1.eflags += -sENVIRONMENT=web
|
||||||
speedtest1-common.eflags += -sINVOKE_RUN=0
|
speedtest1-common.eflags += -sINVOKE_RUN=0
|
||||||
#speedtest1-common.eflags += --no-entry
|
#speedtest1-common.eflags += --no-entry
|
||||||
speedtest1-common.eflags += -flto
|
speedtest1-common.eflags += -flto
|
||||||
@ -342,7 +343,24 @@ speedtest1-common.eflags += -sEXPORTED_FUNCTIONS=_main,_malloc,_free
|
|||||||
speedtest1-common.eflags += -sDYNAMIC_EXECUTION=0
|
speedtest1-common.eflags += -sDYNAMIC_EXECUTION=0
|
||||||
speedtest1-common.eflags += --minify 0
|
speedtest1-common.eflags += --minify 0
|
||||||
speedtest1-common.eflags += -sEXPORT_NAME=sqlite3Speedtest1InitModule
|
speedtest1-common.eflags += -sEXPORT_NAME=sqlite3Speedtest1InitModule
|
||||||
speedtest1.eflags += -sENVIRONMENT=web
|
speedtest1.exit-runtime0 := -sEXIT_RUNTIME=0
|
||||||
|
speedtest1.exit-runtime1 := -sEXIT_RUNTIME=1
|
||||||
|
# Re -sEXIT_RUNTIME=1 vs 0: if it's 1 and speedtest1 crashes, we get
|
||||||
|
# this error from emscripten:
|
||||||
|
#
|
||||||
|
# > native function `free` called after runtime exit (use
|
||||||
|
# NO_EXIT_RUNTIME to keep it alive after main() exits))
|
||||||
|
#
|
||||||
|
# If it's 0 and it crashes, we get:
|
||||||
|
#
|
||||||
|
# > stdio streams had content in them that was not flushed. you should
|
||||||
|
# set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline
|
||||||
|
# when you printf etc.
|
||||||
|
#
|
||||||
|
# and pending output is not flushed because it didn't end with a
|
||||||
|
# newline (by design). The lesser of the two evils seems to be
|
||||||
|
# -sEXIT_RUNTIME=1 but we need EXIT_RUNTIME=0 for the worker-based app
|
||||||
|
# which runs speedtest1 multiple times.
|
||||||
|
|
||||||
speedtest1.js := speedtest1.js
|
speedtest1.js := speedtest1.js
|
||||||
speedtest1.wasm := $(subst .js,.wasm,$(speedtest1.js))
|
speedtest1.wasm := $(subst .js,.wasm,$(speedtest1.js))
|
||||||
@ -360,6 +378,7 @@ $(speedtest1.js): $(speedtest1.c) $(sqlite3-wasm.c) $(MAKEFILE) $(sqlite3.c)
|
|||||||
$(emcc.bin) \
|
$(emcc.bin) \
|
||||||
$(speedtest1.eflags) $(speedtest1-common.eflags) $(speedtest1.cflags) \
|
$(speedtest1.eflags) $(speedtest1-common.eflags) $(speedtest1.cflags) \
|
||||||
$(SQLITE_OPT) \
|
$(SQLITE_OPT) \
|
||||||
|
$(speedtest1.exit-runtime0) \
|
||||||
'-DSQLITE_DEFAULT_UNIX_VFS="unix-none"' \
|
'-DSQLITE_DEFAULT_UNIX_VFS="unix-none"' \
|
||||||
-o $@ $(speedtest1.c) $(sqlite3-wasm.c) -lm
|
-o $@ $(speedtest1.c) $(sqlite3-wasm.c) -lm
|
||||||
$(maybe-wasm-strip) $(speedtest1.wasm)
|
$(maybe-wasm-strip) $(speedtest1.wasm)
|
||||||
|
@ -103,7 +103,7 @@ $(speedtest1-kvvfs.js): $(speedtest1.c) $(sqlite3-wasm.c) $(sqlite3.c) $(MAKEFIL
|
|||||||
$(emcc.bin) \
|
$(emcc.bin) \
|
||||||
$(speedtest1.eflags) $(speedtest1-common.eflags) $(speedtest1.cflags) \
|
$(speedtest1.eflags) $(speedtest1-common.eflags) $(speedtest1.cflags) \
|
||||||
$(SQLITE_OPT) \
|
$(SQLITE_OPT) \
|
||||||
-sEXIT_RUNTIME=1 \
|
$(speedtest1.exit-runtime1) \
|
||||||
$(kvvfs.cflags) \
|
$(kvvfs.cflags) \
|
||||||
-o $@ $(speedtest1.c) $(sqlite3-wasm.c) -lm
|
-o $@ $(speedtest1.c) $(sqlite3-wasm.c) -lm
|
||||||
$(maybe-wasm-strip) $(speedtest1-kvvfs.wasm)
|
$(maybe-wasm-strip) $(speedtest1-kvvfs.wasm)
|
||||||
|
@ -6,10 +6,10 @@
|
|||||||
<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon">
|
<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon">
|
||||||
<link rel="stylesheet" href="common/emscripten.css"/>
|
<link rel="stylesheet" href="common/emscripten.css"/>
|
||||||
<link rel="stylesheet" href="common/testing.css"/>
|
<link rel="stylesheet" href="common/testing.css"/>
|
||||||
<title>speedtest1.wasm</title>
|
<title>speedtest1-kvvfs.wasm</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header id='titlebar'><span>speedtest1.wasm</span></header>
|
<header id='titlebar'><span>speedtest1-kvvfs.wasm</span></header>
|
||||||
<div>See also: <a href='speedtest1-worker.html'>A Worker-thread variant of this page.</a></div>
|
<div>See also: <a href='speedtest1-worker.html'>A Worker-thread variant of this page.</a></div>
|
||||||
<!-- emscripten bits -->
|
<!-- emscripten bits -->
|
||||||
<figure id="module-spinner">
|
<figure id="module-spinner">
|
||||||
@ -63,12 +63,28 @@
|
|||||||
console.error(...args);
|
console.error(...args);
|
||||||
logList.push('ERROR: '+args.join(' '));
|
logList.push('ERROR: '+args.join(' '));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const guessStorageSize = function(which=''){
|
||||||
|
let sz = 0;
|
||||||
|
const prefix = 'kvvfs-'+which;
|
||||||
|
[localStorage,sessionStorage].forEach((s)=>{
|
||||||
|
let i;
|
||||||
|
for(i = 0; i < s.length; ++i){
|
||||||
|
const k = s.key(i);
|
||||||
|
if(k.startsWith(prefix)){
|
||||||
|
sz += k.length;
|
||||||
|
sz += s.getItem(k).length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return sz;
|
||||||
|
};
|
||||||
const clearStorage = function(){
|
const clearStorage = function(){
|
||||||
sessionStorage.clear();
|
sessionStorage.clear();
|
||||||
localStorage.clear();
|
localStorage.clear();
|
||||||
};
|
};
|
||||||
const runTests = function(EmscriptenModule){
|
const runTests = function(EmscriptenModule){
|
||||||
console.log("Module inited.",EmscriptenModule);
|
console.log("Module inited.",EmscriptenModule);
|
||||||
|
|
||||||
const wasm = {
|
const wasm = {
|
||||||
exports: EmscriptenModule.asm,
|
exports: EmscriptenModule.asm,
|
||||||
@ -83,7 +99,7 @@
|
|||||||
const scope = wasm.scopedAllocPush();
|
const scope = wasm.scopedAllocPush();
|
||||||
const dbFile = 0 ? "session" : "local";
|
const dbFile = 0 ? "session" : "local";
|
||||||
const urlArgs = self.SqliteTestUtil.processUrlArgs();
|
const urlArgs = self.SqliteTestUtil.processUrlArgs();
|
||||||
const argv = ["speedtest1", "--size", "1"];
|
const argv = ["speedtest1", "--size", "5"];
|
||||||
if(urlArgs.flags){
|
if(urlArgs.flags){
|
||||||
// transform flags=a,b,c to ["--a", "--b", "--c"]
|
// transform flags=a,b,c to ["--a", "--b", "--c"]
|
||||||
argv.push(...(urlArgs.flags.split(',').map((v)=>'--'+v)));
|
argv.push(...(urlArgs.flags.split(',').map((v)=>'--'+v)));
|
||||||
@ -93,10 +109,14 @@
|
|||||||
"--nomutex",
|
"--nomutex",
|
||||||
"--nosync",
|
"--nosync",
|
||||||
"--nomemstat"
|
"--nomemstat"
|
||||||
|
//"--sqlonly"
|
||||||
);
|
);
|
||||||
//argv.push("--memdb" /* note that memdb trumps the filename arg */);
|
//argv.push("--memdb" /* note that memdb trumps the filename arg */);
|
||||||
argv.push("--big-transactions"/*important for tests 410 and 510!*/,
|
}
|
||||||
dbFile);
|
argv.push("--big-transactions"/*important for tests 410 and 510!*/,
|
||||||
|
dbFile);
|
||||||
|
if(argv.indexOf('--memdb')>=0){
|
||||||
|
log2('error',"WARNING: --memdb flag trumps db filename.");
|
||||||
}
|
}
|
||||||
console.log("argv =",argv);
|
console.log("argv =",argv);
|
||||||
// These log messages are not emitted to the UI until after main() returns. Fixing that
|
// These log messages are not emitted to the UI until after main() returns. Fixing that
|
||||||
@ -119,8 +139,9 @@
|
|||||||
wasm.scopedAllocPop(scope);
|
wasm.scopedAllocPop(scope);
|
||||||
logList.unshift("Done running native main(). Output:");
|
logList.unshift("Done running native main(). Output:");
|
||||||
dumpLogList();
|
dumpLogList();
|
||||||
log2('warning',"Clearing session/local storage.");
|
log2('',"Approximate",dbFile,"storage usage:",guessStorageSize(),"bytes");
|
||||||
clearStorage();
|
log2('warning',"Clearing",dbFile,"storage.");
|
||||||
|
clearStorage(dbFile);
|
||||||
});
|
});
|
||||||
}/*runTests()*/;
|
}/*runTests()*/;
|
||||||
|
|
||||||
|
@ -41,6 +41,9 @@
|
|||||||
<span>→ <a id='link-wasmfs' href='#' target='speedtest-wasmfs'
|
<span>→ <a id='link-wasmfs' href='#' target='speedtest-wasmfs'
|
||||||
title='Start speedtest1-wasmfs.html with the selected flags'>speedtest1-wasmfs.html</a>
|
title='Start speedtest1-wasmfs.html with the selected flags'>speedtest1-wasmfs.html</a>
|
||||||
</span>
|
</span>
|
||||||
|
<span>→ <a id='link-kvvfs' href='#' target='speedtest-kvvfs'
|
||||||
|
title='Start speedtest1-kvvfs.html with the selected flags'>speedtest1-kvvfs.html</a>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='toolbar-inner-vertical' id='toolbar-runner-controls'>
|
<div class='toolbar-inner-vertical' id='toolbar-runner-controls'>
|
||||||
@ -173,6 +176,7 @@
|
|||||||
const eSelectedFlags = E('#toolbar-selected-flags');
|
const eSelectedFlags = E('#toolbar-selected-flags');
|
||||||
const eLinkMainThread = E('#link-main-thread');
|
const eLinkMainThread = E('#link-main-thread');
|
||||||
const eLinkWasmfs = E('#link-wasmfs');
|
const eLinkWasmfs = E('#link-wasmfs');
|
||||||
|
const eLinkKvvfs = E('#link-kvvfs');
|
||||||
const getSelectedFlags = ()=>Array.prototype.map.call(eFlags.selectedOptions, (v)=>v.value);
|
const getSelectedFlags = ()=>Array.prototype.map.call(eFlags.selectedOptions, (v)=>v.value);
|
||||||
const updateSelectedFlags = function(){
|
const updateSelectedFlags = function(){
|
||||||
eSelectedFlags.innerText = '';
|
eSelectedFlags.innerText = '';
|
||||||
@ -188,6 +192,8 @@
|
|||||||
eLinkMainThread.href = 'speedtest1.html?flags='+comma;
|
eLinkMainThread.href = 'speedtest1.html?flags='+comma;
|
||||||
eLinkWasmfs.setAttribute('target', 'speedtest1-wasmfs-'+comma);
|
eLinkWasmfs.setAttribute('target', 'speedtest1-wasmfs-'+comma);
|
||||||
eLinkWasmfs.href = 'speedtest1-wasmfs.html?flags='+comma;
|
eLinkWasmfs.href = 'speedtest1-wasmfs.html?flags='+comma;
|
||||||
|
eLinkKvvfs.setAttribute('target', 'speedtest1-kvvfs-'+comma);
|
||||||
|
eLinkKvvfs.href = 'speedtest1-kvvfs.html?flags='+comma;
|
||||||
};
|
};
|
||||||
eFlags.addEventListener('change', updateSelectedFlags );
|
eFlags.addEventListener('change', updateSelectedFlags );
|
||||||
{
|
{
|
||||||
|
20
manifest
20
manifest
@ -1,5 +1,5 @@
|
|||||||
C More\swork\son\sthe\ssynchronous\sOPFS\sexperimentation.\sNumerous\swasm/js\sbuild\stweaks.\sAdd\sspeeedtest-wasmfs.html,\sthe\swasmfs/opfs\scounterpart\sof\sspeedtest1.html.
|
C Add\sreturn\svalue\schecks\sto\skvstorageWrite(),\snecessary\sfor\srecognizing\sstorage-full\serrors\sin\sthe\sJS\sbinding.\sspeedtest1-kvvfs.html\sruns\ssuccessfully\son\slocalStorage\swith\s--size\s1\sto\s6\sand\sstarts\sfailing\swith\sstorage\sshortage\sat\s--size\s7.
|
||||||
D 2022-09-15T06:42:41.192
|
D 2022-09-16T01:05:19.939
|
||||||
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
|
||||||
@ -474,7 +474,7 @@ F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04
|
|||||||
F ext/userauth/userauth.c 7f00cded7dcaa5d47f54539b290a43d2e59f4b1eb5f447545fa865f002fc80cb
|
F ext/userauth/userauth.c 7f00cded7dcaa5d47f54539b290a43d2e59f4b1eb5f447545fa865f002fc80cb
|
||||||
F ext/wasm/EXPORTED_FUNCTIONS.fiddle 7fb73f7150ab79d83bb45a67d257553c905c78cd3d693101699243f36c5ae6c3
|
F ext/wasm/EXPORTED_FUNCTIONS.fiddle 7fb73f7150ab79d83bb45a67d257553c905c78cd3d693101699243f36c5ae6c3
|
||||||
F ext/wasm/EXPORTED_RUNTIME_METHODS.fiddle a004bd5eeeda6d3b28d16779b7f1a80305bfe009dfc7f0721b042967f0d39d02
|
F ext/wasm/EXPORTED_RUNTIME_METHODS.fiddle a004bd5eeeda6d3b28d16779b7f1a80305bfe009dfc7f0721b042967f0d39d02
|
||||||
F ext/wasm/GNUmakefile 104ad527fd7cf1b33dd8ac544c4e26c529c305e591d85a32999258750998b0b8
|
F ext/wasm/GNUmakefile bec8b98f00c81561215bd8adff9870a30508fd6813bccf1b821ddf073446525e
|
||||||
F ext/wasm/README.md e1ee1e7c321c6a250bf78a84ca6f5882890a237a450ba5a0649c7a8399194c52
|
F ext/wasm/README.md e1ee1e7c321c6a250bf78a84ca6f5882890a237a450ba5a0649c7a8399194c52
|
||||||
F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api 150a793a47205b8009ac934f3b6d6ebf67b965c072339aaa25ce808a19e116cc
|
F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api 150a793a47205b8009ac934f3b6d6ebf67b965c072339aaa25ce808a19e116cc
|
||||||
F ext/wasm/api/EXPORTED_RUNTIME_METHODS.sqlite3-api 1ec3c73e7d66e95529c3c64ac3de2470b0e9e7fbf7a5b41261c367cf4f1b7287
|
F ext/wasm/api/EXPORTED_RUNTIME_METHODS.sqlite3-api 1ec3c73e7d66e95529c3c64ac3de2470b0e9e7fbf7a5b41261c367cf4f1b7287
|
||||||
@ -506,7 +506,7 @@ F ext/wasm/jaccwabyt/jaccwabyt.js 0d7f32817456a0f3937fcfd934afeb32154ca33580ab26
|
|||||||
F ext/wasm/jaccwabyt/jaccwabyt.md 447cc02b598f7792edaa8ae6853a7847b8178a18ed356afacbdbf312b2588106
|
F ext/wasm/jaccwabyt/jaccwabyt.md 447cc02b598f7792edaa8ae6853a7847b8178a18ed356afacbdbf312b2588106
|
||||||
F ext/wasm/jaccwabyt/jaccwabyt_test.c 39e4b865a33548f943e2eb9dd0dc8d619a80de05d5300668e9960fff30d0d36f
|
F ext/wasm/jaccwabyt/jaccwabyt_test.c 39e4b865a33548f943e2eb9dd0dc8d619a80de05d5300668e9960fff30d0d36f
|
||||||
F ext/wasm/jaccwabyt/jaccwabyt_test.exports 5ff001ef975c426ffe88d7d8a6e96ec725e568d2c2307c416902059339c06f19
|
F ext/wasm/jaccwabyt/jaccwabyt_test.exports 5ff001ef975c426ffe88d7d8a6e96ec725e568d2c2307c416902059339c06f19
|
||||||
F ext/wasm/kvvfs.make 6f19ef9bdf0394e752b62717db968268206c5237a87541efb825d58945694ff0
|
F ext/wasm/kvvfs.make 4b2ba6d061f3a52da9f5812f86f4faa80fb4d9456a152f6b0585dccd667a4e22
|
||||||
F ext/wasm/kvvfs1.html 13bb24190bfb276a57b228499519badcc1bf39ed07e4b37bc2a425ce6418fed1
|
F ext/wasm/kvvfs1.html 13bb24190bfb276a57b228499519badcc1bf39ed07e4b37bc2a425ce6418fed1
|
||||||
F ext/wasm/kvvfs1.js ec1c1d071bb055711f9151df05616111432cf3e6bf7ac7f8dcbcfb56c9d9ed48
|
F ext/wasm/kvvfs1.js ec1c1d071bb055711f9151df05616111432cf3e6bf7ac7f8dcbcfb56c9d9ed48
|
||||||
F ext/wasm/scratchpad-opfs-worker.html 5fdda167571264300f388847d34f00b77dd48984a8dba2ee9c099c3ffa05db66
|
F ext/wasm/scratchpad-opfs-worker.html 5fdda167571264300f388847d34f00b77dd48984a8dba2ee9c099c3ffa05db66
|
||||||
@ -514,9 +514,9 @@ F ext/wasm/scratchpad-opfs-worker.js cf6c4554d3b099c1a50013e50d19b3dc60e183511b4
|
|||||||
F ext/wasm/scratchpad-opfs-worker2.js 2424d7d7b8801fc143f6540fbdd8a96f3f2e5b811f0f545714d06147ccce58bf
|
F ext/wasm/scratchpad-opfs-worker2.js 2424d7d7b8801fc143f6540fbdd8a96f3f2e5b811f0f545714d06147ccce58bf
|
||||||
F ext/wasm/scratchpad-wasmfs-main.html 20cf6f1a8f368e70d01e8c17200e3eaa90f1c8e1029186d836d14b83845fbe06
|
F ext/wasm/scratchpad-wasmfs-main.html 20cf6f1a8f368e70d01e8c17200e3eaa90f1c8e1029186d836d14b83845fbe06
|
||||||
F ext/wasm/scratchpad-wasmfs-main.js 69e960e9161f6412fd0c30f355d4112f1894d6609eb431e2d16d207d1380518e
|
F ext/wasm/scratchpad-wasmfs-main.js 69e960e9161f6412fd0c30f355d4112f1894d6609eb431e2d16d207d1380518e
|
||||||
F ext/wasm/speedtest1-kvvfs.html fe7d314343b275f8b241af83267ca56274ea995535c6abca4d6e568a98fa31e3
|
F ext/wasm/speedtest1-kvvfs.html c9cb752f9c81cdcf9ccdc09146bd8c9c77970ed44ab10908ed15f1cce95c0f8d
|
||||||
F ext/wasm/speedtest1-wasmfs.html 6a67a6812f03a2058eb5c6ad0c8dea4bf749d0160ed9d6b826dabe7b766c3cf7
|
F ext/wasm/speedtest1-wasmfs.html 6a67a6812f03a2058eb5c6ad0c8dea4bf749d0160ed9d6b826dabe7b766c3cf7
|
||||||
F ext/wasm/speedtest1-worker.html a1dc7611026adad43ddb138172996e13a96dd2d37dcdcb7cef39a130f6b1f57b
|
F ext/wasm/speedtest1-worker.html d8881ae802d15fb8adb94049265173e99f350e07e1d4e6f9e1cbd8969fe63a04
|
||||||
F ext/wasm/speedtest1-worker.js fb5d282c0b8aed18daf41c57f768cbf434f8137dbff707d53dcedcd7d4cb60ef
|
F ext/wasm/speedtest1-worker.js fb5d282c0b8aed18daf41c57f768cbf434f8137dbff707d53dcedcd7d4cb60ef
|
||||||
F ext/wasm/speedtest1.html fbb8e4d1639028443f3687a683be660beca6927920545cf6b1fdf503104591c0
|
F ext/wasm/speedtest1.html fbb8e4d1639028443f3687a683be660beca6927920545cf6b1fdf503104591c0
|
||||||
F ext/wasm/split-speedtest1-script.sh a3e271938d4d14ee49105eb05567c6a69ba4c1f1293583ad5af0cd3a3779e205 x
|
F ext/wasm/split-speedtest1-script.sh a3e271938d4d14ee49105eb05567c6a69ba4c1f1293583ad5af0cd3a3779e205 x
|
||||||
@ -596,7 +596,7 @@ F src/notify.c 89a97dc854c3aa62ad5f384ef50c5a4a11d70fcc69f86de3e991573421130ed6
|
|||||||
F src/os.c 0eb831ba3575af5277e47f4edd14fdfc90025c67eb25ce5cda634518d308d4e9
|
F src/os.c 0eb831ba3575af5277e47f4edd14fdfc90025c67eb25ce5cda634518d308d4e9
|
||||||
F src/os.h 1ff5ae51d339d0e30d8a9d814f4b8f8e448169304d83a7ed9db66a65732f3e63
|
F src/os.h 1ff5ae51d339d0e30d8a9d814f4b8f8e448169304d83a7ed9db66a65732f3e63
|
||||||
F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85
|
F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85
|
||||||
F src/os_kv.c f3c5f46f62ed495c7d17c752f58f250c04b944c9cf34060518511e4e7537658c
|
F src/os_kv.c d4909b439043183f9b6aec65528a7433cee49d41cca95b9a3a4c8fb6bbedc0c2
|
||||||
F src/os_setup.h 0711dbc4678f3ac52d7fe736951b6384a0615387c4ba5135a4764e4e31f4b6a6
|
F src/os_setup.h 0711dbc4678f3ac52d7fe736951b6384a0615387c4ba5135a4764e4e31f4b6a6
|
||||||
F src/os_unix.c 0fa91925f0b8831fc0156a9c04d39d86f85baf9eef66c98712395e1715cb75cc
|
F src/os_unix.c 0fa91925f0b8831fc0156a9c04d39d86f85baf9eef66c98712395e1715cb75cc
|
||||||
F src/os_win.c 8d129ae3e59e0fa900e20d0ad789e96f2e08177f0b00b53cdda65c40331e0902
|
F src/os_win.c 8d129ae3e59e0fa900e20d0ad789e96f2e08177f0b00b53cdda65c40331e0902
|
||||||
@ -2026,8 +2026,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 4cbbd370186f84e440f496e7f11c641d7dc1723acc46e4a31483392e0eb046e9
|
P 00ee49a3a2c148480f614e49a0ee5b35a255758c0a53693f0b464b31e7a4045b
|
||||||
R c453132da1df672225f03816e5e29221
|
R a6e9c244c29b55941f4ad5b4e78621c2
|
||||||
U stephan
|
U stephan
|
||||||
Z e87dced3d077599bf1560627688e6f4f
|
Z daf2b8c0bbcd601af0a5bcd00e934942
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
00ee49a3a2c148480f614e49a0ee5b35a255758c0a53693f0b464b31e7a4045b
|
13839759f8f45e4eb0aa6a5052801f3964d5b2dc2e427e5e91ee6692176381eb
|
24
src/os_kv.c
24
src/os_kv.c
@ -351,7 +351,7 @@ int sqlite3__wasm_emjs_kvvfs(int whichOp){
|
|||||||
switch( whichOp ){
|
switch( whichOp ){
|
||||||
case 0: break;
|
case 0: break;
|
||||||
case 1:
|
case 1:
|
||||||
kvstorageWrite(zClass, zKey, "world");
|
rc = kvstorageWrite(zClass, zKey, "world");
|
||||||
break;
|
break;
|
||||||
case 2: {
|
case 2: {
|
||||||
char buffer[128] = {0};
|
char buffer[128] = {0};
|
||||||
@ -634,10 +634,10 @@ static sqlite3_int64 kvvfsReadFileSize(KVVfsFile *pFile){
|
|||||||
kvstorageRead(pFile->zClass, "sz", zData, sizeof(zData)-1);
|
kvstorageRead(pFile->zClass, "sz", zData, sizeof(zData)-1);
|
||||||
return strtoll(zData, 0, 0);
|
return strtoll(zData, 0, 0);
|
||||||
}
|
}
|
||||||
static void kvvfsWriteFileSize(KVVfsFile *pFile, sqlite3_int64 sz){
|
static int kvvfsWriteFileSize(KVVfsFile *pFile, sqlite3_int64 sz){
|
||||||
char zData[50];
|
char zData[50];
|
||||||
sqlite3_snprintf(sizeof(zData), zData, "%lld", sz);
|
sqlite3_snprintf(sizeof(zData), zData, "%lld", sz);
|
||||||
kvstorageWrite(pFile->zClass, "sz", zData);
|
return kvstorageWrite(pFile->zClass, "sz", zData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****** sqlite3_io_methods methods ******************************************/
|
/****** sqlite3_io_methods methods ******************************************/
|
||||||
@ -788,7 +788,9 @@ static int kvvfsWriteDb(
|
|||||||
pgno = 1 + iOfst/iAmt;
|
pgno = 1 + iOfst/iAmt;
|
||||||
sqlite3_snprintf(sizeof(zKey), zKey, "%u", pgno);
|
sqlite3_snprintf(sizeof(zKey), zKey, "%u", pgno);
|
||||||
kvvfsEncode(zBuf, iAmt, aData);
|
kvvfsEncode(zBuf, iAmt, aData);
|
||||||
kvstorageWrite(pFile->zClass, zKey, aData);
|
if( kvstorageWrite(pFile->zClass, zKey, aData) ){
|
||||||
|
return SQLITE_IOERR;
|
||||||
|
}
|
||||||
if( iOfst+iAmt > pFile->szDb ){
|
if( iOfst+iAmt > pFile->szDb ){
|
||||||
pFile->szDb = iOfst + iAmt;
|
pFile->szDb = iOfst + iAmt;
|
||||||
}
|
}
|
||||||
@ -825,8 +827,7 @@ static int kvvfsTruncateDb(sqlite3_file *pProtoFile, sqlite_int64 size){
|
|||||||
pgno++;
|
pgno++;
|
||||||
}
|
}
|
||||||
pFile->szDb = size;
|
pFile->szDb = size;
|
||||||
kvvfsWriteFileSize(pFile, size);
|
return kvvfsWriteFileSize(pFile, size) ? SQLITE_IOERR : SQLITE_OK;
|
||||||
return SQLITE_OK;
|
|
||||||
}
|
}
|
||||||
return SQLITE_IOERR;
|
return SQLITE_IOERR;
|
||||||
}
|
}
|
||||||
@ -854,17 +855,18 @@ static int kvvfsSyncJrnl(sqlite3_file *pProtoFile, int flags){
|
|||||||
}while( n>0 );
|
}while( n>0 );
|
||||||
zOut[i++] = ' ';
|
zOut[i++] = ' ';
|
||||||
kvvfsEncode(pFile->aJrnl, pFile->nJrnl, &zOut[i]);
|
kvvfsEncode(pFile->aJrnl, pFile->nJrnl, &zOut[i]);
|
||||||
kvstorageWrite(pFile->zClass, "jrnl", zOut);
|
i = kvstorageWrite(pFile->zClass, "jrnl", zOut);
|
||||||
sqlite3_free(zOut);
|
sqlite3_free(zOut);
|
||||||
return SQLITE_OK;
|
return i ? SQLITE_IOERR : SQLITE_OK;
|
||||||
}
|
}
|
||||||
static int kvvfsSyncDb(sqlite3_file *pProtoFile, int flags){
|
static int kvvfsSyncDb(sqlite3_file *pProtoFile, int flags){
|
||||||
KVVfsFile *pFile = (KVVfsFile *)pProtoFile;
|
KVVfsFile *pFile = (KVVfsFile *)pProtoFile;
|
||||||
|
int rc = SQLITE_OK;
|
||||||
SQLITE_KV_LOG(("xSync('%s-db')\n", pFile->zClass));
|
SQLITE_KV_LOG(("xSync('%s-db')\n", pFile->zClass));
|
||||||
if( pFile->szDb>0 ){
|
if( pFile->szDb>0 && 0!=kvvfsWriteFileSize(pFile, pFile->szDb) ){
|
||||||
kvvfsWriteFileSize(pFile, pFile->szDb);
|
rc = SQLITE_IOERR;
|
||||||
}
|
}
|
||||||
return SQLITE_OK;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user