drh [Sat, 8 Feb 2025 11:15:41 +0000 (11:15 +0000)]
Improvements to the hash table used to store symbols in the schema, so that
it works better (requires fewer calls to sqlite3StrICmp()) for large schemas,
and uses less code space.
drh [Fri, 7 Feb 2025 19:09:20 +0000 (19:09 +0000)]
Fix comments on the Parse.nMaxArgs field so that they are correct. Add
assert()s to ensure they are correct. Other Parse changes to reduce the
amount of memset() needed to initialize it.
stephan [Fri, 7 Feb 2025 12:58:09 +0000 (12:58 +0000)]
configure: change extension of static libraries from .lib to .a on msys/cygwin, as per discussion in [forum:02db2d4240|forum post 02db2d4240]. Replace unidiomatic JS-style use of inner procs in autosetup/proj.tcl with TCL lambdas.
stephan [Fri, 7 Feb 2025 12:33:48 +0000 (12:33 +0000)]
Reorder a piece of ext/wasm/GNUmakefile to correct the timing of various var accesses. Fixes a problem [https://github.com/sqlite/sqlite-wasm/pull/99|reported in the downstream npm subproject] and explains the confusion in [4aa025a943a4024094b9] (which has been reverted).
stephan [Thu, 6 Feb 2025 13:18:49 +0000 (13:18 +0000)]
Fix a dependencies/order-of-operations bug in ext/wasm/GNUmakefile which causes creation of files filtered via c-pp to fail if the ext/wasm/jswasm dir did not exist beforehand.
stephan [Mon, 3 Feb 2025 17:34:12 +0000 (17:34 +0000)]
Rework [76c8435a] to eliminate automatic JS-to-WASM function conversions of sqlite3_set_auxdata() destructors because it can leads to leaks on every call of a UDF. This feature never worked before [76c8435a] but fixing it was ill-conceived because of the memory leakage it introduces. WASM function pointers can still be used as destructors in this context.
stephan [Mon, 3 Feb 2025 14:55:56 +0000 (14:55 +0000)]
Add a more complete test for [76c8435a] and add some commentary about (A) the inability to automatically clean up automatically-generated WASM proxy functions for sqlite3_set_auxdata() destructors and (B) how to deal with (A) to avoid leaking WASM proxy functions.
drh [Mon, 3 Feb 2025 14:44:16 +0000 (14:44 +0000)]
Fix the build process on Windows so that it generates identical sqlite3.c,
sqlite3.h, and shell.c files on Windows and Unix. This patch also includes
a change to JS bindings that got caught up in the branch.
stephan [Mon, 3 Feb 2025 14:04:27 +0000 (14:04 +0000)]
Correct the FuncPtrAdapter signature for the JS binding of sqlite3_set_auxdata(). Reported in [https://github.com/sqlite/sqlite-wasm/issues/92|the npm subproject, ticket #92].
stephan [Fri, 31 Jan 2025 11:45:55 +0000 (11:45 +0000)]
Correct a typo in tool/emcc.sh.in which could cause all of the configure-time work to locate the emcc binary to go unused. Reported in [forum:feb325cdde5b6f37|forum post feb325cdde5b6f37].
stephan [Thu, 30 Jan 2025 11:19:16 +0000 (11:19 +0000)]
Fix build regression, introduced in [d2fe6b05f38d9d] (3.48.0), in which SQLITE_OMIT and SQLITE_ENABLE flags passed to configure via CFLAGS were not propagated to the OPT_FEATURE_FLAGS list. Reported in [forum:9801e54665afd728|forum post 9801e54665afd728].
dan [Wed, 29 Jan 2025 18:53:19 +0000 (18:53 +0000)]
Fix bug in sessions handling of FK constraints introduced by [e09a0c02] (released in 3.48.0). Bug was preventing a changeset containing FK violations from being applied even when the xConflict(CHANGESET_FOREIGN_KEY) returned OMIT.
drh [Tue, 28 Jan 2025 20:32:48 +0000 (20:32 +0000)]
Enhance the if() and iif() SQL functions so that they support any
number of arguments greater than or equal to two.
Suggested by [forum:/forumpost/40f7867f75f80|forum post 40f7867f75f80].
drh [Tue, 28 Jan 2025 01:10:45 +0000 (01:10 +0000)]
Apparently I got the logic of [abfe488ed67e2e35] confused, even backwards.
Change it so that the SQLITE_USE_W32_FOR_CONSOLE_IO macro causes Win32 APIs
to be used for console I/O and for stdio to be used otherwise. This is
reported to be necessary for builds that use a C-language runtime other than
the one provided by Microsoft. This changes if for Windows only. It is a
bug fix, though we don't have a test case that will demonstrate a malfunction.
drh [Tue, 28 Jan 2025 00:48:01 +0000 (00:48 +0000)]
Remove an ALWAYS() in the star-query heuristic that is sometimes false if you
have a corrupt database. dbsqlfuzz c37ba7728d79859b79c8341b59297e88fba017d3.
Test case in TH3.
drh [Sat, 25 Jan 2025 23:04:05 +0000 (23:04 +0000)]
Revise the strategy used by the star-query heuristic: Instead of decreasing
the cost of all fact-table WhereLoops, increase the run-cost of WhereLoops that
are SCANs of dimension tables.
drh [Fri, 24 Jan 2025 16:37:31 +0000 (16:37 +0000)]
Improve the star-query heuristic so that it does a better job of identifying
actual star queries. Also includes improved diagnostic output from the
query planner.
drh [Fri, 24 Jan 2025 14:51:15 +0000 (14:51 +0000)]
When looking for star-queries, do not count a table as a dimension table
if that table is separated from the fact table by an OUTER or CROSS join
or if the table is a self-join.
stephan [Fri, 24 Jan 2025 08:58:54 +0000 (08:58 +0000)]
Remove extraneous are-we-making-clean guards from the generated wasm build rules, as that guard is set at a higher level. Rename a makefile call()able for consistency.
stephan [Thu, 23 Jan 2025 22:23:31 +0000 (22:23 +0000)]
wasm: de-list demo-worker1-promiser-esm.html from the test pages because (per Chrome 131) "Module scripts don't support importScripts()", where "don't" means "they used to but no longer do".
stephan [Thu, 23 Jan 2025 19:44:09 +0000 (19:44 +0000)]
When running wasm-opt, ignore any failure because it will fail for unknown flags and the set of legal flags will change from version to version. Document the size-reduction effect (or non-effect) of a dozen-odd wasm-opt flags and retain those which demonstrate a wasm file size reduction in -Oz builds (our production build mode). Total size savings: roughly 13kb.
stephan [Thu, 23 Jan 2025 16:11:24 +0000 (16:11 +0000)]
Remove some now-dead makefile code, rename a var for consistency, and fix a recipe bug introduced in the previous checkin in the bundler-friendly build.
stephan [Thu, 23 Jan 2025 15:58:01 +0000 (15:58 +0000)]
Initial support for post-processing wasm files with wasm-opt (if it's available). This currently shaves 12kb off of the release-mode build of sqlite3.wasm but there are many dozens of wasm-opt flags left to try.
stephan [Thu, 23 Jan 2025 14:09:02 +0000 (14:09 +0000)]
Move small parts of ext/wasm/GNUmakefile into ext/wasm/config.make.in and have the configure script populate that, rather than dynamically determining those values on each 'make' invocation. Add a configure-time check for the optional wasm-opt binary in prep for pending experimentation with using it to reduce the wasm file sizes.