SQLite Release 3.40.0
sqlite.org
sqlite.org
SQLite in the browser with WASM/JS - https://news.ycombinator.com/item?id=33374402 - Oct 2022 (198 comments)
Gulp. When writing SQL I tend to assume these kinds of things have always been done... I should probably favor my own logical optimizations when I can.
(Of course, nothing beats measuring/profiling if you really need to optimize.)
I documented how to compile an extension into the wasm build here[2], I assume something like that would work for fts? But I'm not sure exactly.
edit: it does build with fts4 by default, just not fts5; I'm not sure why
edit 2: to build with an apparently-functional fts5, apply this diff followed by "make" from the ext/wasm directory; the wasm files you want are in the ext/wasm/jswasm directory after the build completes
diff --git ext/wasm/GNUmakefile ext/wasm/GNUmakefile
index 039dff410..554cf9cda 100644
--- ext/wasm/GNUmakefile
+++ ext/wasm/GNUmakefile
@@ -111,6 +111,7 @@ sqlite3.c := $(dir.top)/sqlite3.c
sqlite3.h := $(dir.top)/sqlite3.h
SQLITE_OPT = \
-DSQLITE_ENABLE_FTS4 \
+ -DSQLITE_ENABLE_FTS5 \
-DSQLITE_ENABLE_RTREE \
-DSQLITE_ENABLE_EXPLAIN_COMMENTS \
-DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION \
I don't know why it's not in the default list of flags.[1]: https://sqlite.org/fiddle/
[2]: https://github.com/llimllib/wasm_sqlite_with_stats/tree/buil...
It was an oversight on my part. It will be fixed in the trunk momentarily.
It inadvertently includes FTS4 instead of 5. That was my fault and it will be changed to include 5 instead Real Soon Now.
It's pretty great, although killing the python process generate threading errors...
SQLite is used by e.g. browsers, phones, and many desktop apps.