]> git.ipfire.org Git - thirdparty/sqlite.git/log
thirdparty/sqlite.git
2 years agoAdd basic session API JS tests. wasm-session-api
stephan [Sun, 25 Dec 2022 20:22:20 +0000 (20:22 +0000)] 
Add basic session API JS tests.

FossilOrigin-Name: 64e032602cf420851c8029603c76f5512000d1c9a40fa7a545528d69d6d1d4cc

2 years agoAdd sqlite3.wasm.irSizeof() and extend certain allocation functions to make use of it.
stephan [Sun, 25 Dec 2022 20:05:11 +0000 (20:05 +0000)] 
Add sqlite3.wasm.irSizeof() and extend certain allocation functions to make use of it.

FossilOrigin-Name: 1cbc7b1875e8611b9db7a747b4c9499501450deaf90c929d212511837d6f72b6

2 years agoRemove duplicated JS binding of sqlite3changeset_apply_v2().
stephan [Sun, 25 Dec 2022 16:20:05 +0000 (16:20 +0000)] 
Remove duplicated JS binding of sqlite3changeset_apply_v2().

FossilOrigin-Name: 2e8336b6e1cba89dbcc11d6316e39c929bf8b018a18b92efc232abd47e0a5cc6

2 years agoAdd the address of the associated db handle to the sqlite3_trace_v2() output originat...
stephan [Sun, 25 Dec 2022 15:28:19 +0000 (15:28 +0000)] 
Add the address of the associated db handle to the sqlite3_trace_v2() output originating from sqlite3.oo1.DB's trace flag.

FossilOrigin-Name: 0a36568c5a3db56a8ad23fd8abc672c5a7f1abed55984d902842ffd3ebb816e8

2 years agoUpdate the session-related JS bindings to account for today's internal API changes.
stephan [Sun, 25 Dec 2022 15:14:10 +0000 (15:14 +0000)] 
Update the session-related JS bindings to account for today's internal API changes.

FossilOrigin-Name: be63944d4114f53f2dab65bc6c1b85f4766a4ea14ee7b2690acde239a2a0bf54

2 years agoMerge trunk into wasm-session-api branch.
stephan [Sun, 25 Dec 2022 14:13:52 +0000 (14:13 +0000)] 
Merge trunk into wasm-session-api branch.

FossilOrigin-Name: 7f8f1acd82be7dc2eb2147d96299b1b443e86774dfe0b0a8d32669a0500fc9c6

2 years agoAdd missing sqlite3_context_db_handle() JS binding. Reimplement sqlite3_set_authorize...
stephan [Sun, 25 Dec 2022 14:04:06 +0000 (14:04 +0000)] 
Add missing sqlite3_context_db_handle() JS binding. Reimplement sqlite3_set_authorizer() and sqlite3_set_auxdata() JS bindings to take advantage of [7f9ace1b11a67]. Teach FuncPtrAdapter to emit a console.warn() message if it is invoked after the library is bootstrapped, the goal being to inform users that it's an internal API and should not be invoked from client-side code.

FossilOrigin-Name: 8e3d4f6294037396e388ec21abb18bf0201a6bec6ff004730cc5d11b705a6d2b

2 years agoEnhance sqlite3.wasm.xWrap.FuncPtrAdapter to be able to handle sqlite3_create_functio...
stephan [Sun, 25 Dec 2022 12:51:53 +0000 (12:51 +0000)] 
Enhance sqlite3.wasm.xWrap.FuncPtrAdapter to be able to handle sqlite3_create_function() and friends and reimplement those bindings to use this feature (this will also simplify certain session API bindings). Interal API changes only with no client-side breakage.

FossilOrigin-Name: 7f9ace1b11a6703031790af9cf08ab25df25850a86e6ca2a7aeaefd8aa395e6d

2 years agoSimplify the signature for JS functions, as opposed to function pointers, passed...
stephan [Sun, 25 Dec 2022 10:22:27 +0000 (10:22 +0000)] 
Simplify the signature for JS functions, as opposed to function pointers, passed to sqlite3_exec(), eliminating the superfluous initial two arguments. Update related tests to demonstrate both function-passing approaches.

FossilOrigin-Name: e7cc70cdda426863f82ebe1305f4c3053824c5a605b1516b0b7f205f1203178b

2 years agoReplace JS-side use of SQLITE_TRANSIENT with the new SQLITE_WASM_DEALLOC, reducing...
stephan [Sat, 24 Dec 2022 15:28:45 +0000 (15:28 +0000)] 
Replace JS-side use of SQLITE_TRANSIENT with the new SQLITE_WASM_DEALLOC, reducing the amount allocation/copying required by sqlite3_bind_blob/text() and sqlite3_result_blob/text(). Remove the 'experimental' log message from the virtual table tests.

FossilOrigin-Name: ffe2999a91a7dec129a38afb675fe9e539d7c347886bfea85cba55f6367d54d1

2 years agoExtend oo1.Stmt.bind() to accept ArrayBuffer instances to bind as blobs.
stephan [Sat, 24 Dec 2022 14:16:02 +0000 (14:16 +0000)] 
Extend oo1.Stmt.bind() to accept ArrayBuffer instances to bind as blobs.

FossilOrigin-Name: f76bd30137fbff981625ffcb28cddd5e8651803dfc3f2d8d7801ead33496311d

2 years agoAdd a test for the (failure) case of client-level code calling the oo1.Stmt construct...
stephan [Sat, 24 Dec 2022 13:46:27 +0000 (13:46 +0000)] 
Add a test for the (failure) case of client-level code calling the oo1.Stmt constructor directly.

FossilOrigin-Name: 6a37874db04f3b4842994ad17fc74cb6222f8ea0fa1315a23aff1ffa69bcd12a

2 years agooo1.DB.exec() rowMode="$columnName": a minor optimization and a preemtive fix for...
stephan [Sat, 24 Dec 2022 11:16:49 +0000 (11:16 +0000)] 
oo1.DB.exec() rowMode="$columnName": a minor optimization and a preemtive fix for a hypothetical corner-case bug.

FossilOrigin-Name: 0b2df22bd92914708ad0851d0401ad2cf3edb1968b88b2c07fe40792a731c5ba

2 years agoIf sqlite3.oo1.DB.exec()'s callback returns a literal false, stop step()ing over...
stephan [Sat, 24 Dec 2022 01:59:42 +0000 (01:59 +0000)] 
If sqlite3.oo1.DB.exec()'s callback returns a literal false, stop step()ing over results as if the end of the result set had been reached. Unrelated minor code-adjacent cleanups.

FossilOrigin-Name: 33a58c8ece3b37a8edc3434af36643e2d489a53a672d778c5b77e66666045c30

2 years agoReimplement JS's sqlite3_bind_text/blob() with hand-written bindings to permit more...
stephan [Fri, 23 Dec 2022 23:46:33 +0000 (23:46 +0000)] 
Reimplement JS's sqlite3_bind_text/blob() with hand-written bindings to permit more flexible inputs. Add automated JS-to-C function conversion to sqlite3_busy_handler(). sqlite3.wasm.xWrap()'s '*' argument conversion no longer treats JS strings as C-strings: those conversions require explicit opt-in via the 'string' converter (or equivalent).

FossilOrigin-Name: 96ba44946b3e88b6aa305c4363cbbfeab0d9120b3d8c4d2587d68b9293ea7cc6

2 years agoMerge trunk into wasm-session-api branch.
stephan [Fri, 23 Dec 2022 21:23:26 +0000 (21:23 +0000)] 
Merge trunk into wasm-session-api branch.

FossilOrigin-Name: 6cdb036d8e8c5ddb0c6578aeefe318e74d7a90228e57b9f9047057dae3252963

2 years agoInternal JS cleanups. Correct part of [ac136925a645] to account for the eTextRep...
stephan [Fri, 23 Dec 2022 21:10:49 +0000 (21:10 +0000)] 
Internal JS cleanups. Correct part of [ac136925a645] to account for the eTextRep flag being able to hold flags other than the encoding.

FossilOrigin-Name: 1dfc03ab1e0269807beef27bf884ab9ead7553d4a5f6ed213f812d7fa052045f

2 years agoMerge trunk into wasm-session-api branch.
stephan [Fri, 23 Dec 2022 19:33:22 +0000 (19:33 +0000)] 
Merge trunk into wasm-session-api branch.

FossilOrigin-Name: f1decc831fe0dc8523956e74474d9663852b0e5b56240dd8504952726e713a97

2 years agoConsolidate/unify how the JS bindings of the create_function/collation family of...
stephan [Fri, 23 Dec 2022 19:16:45 +0000 (19:16 +0000)] 
Consolidate/unify how the JS bindings of the create_function/collation family of functions react to a non-UTF8 encoding: they now treat a falsy value as SQLITE_UTF8 and fail with SQLITE_FORMAT for an invalid encoding.

FossilOrigin-Name: deffe6fb211410fa1a1fbca824a52b4e09b54d4b4f4a4e12d71c9e4b7e8606fb

2 years agoAdd base64() and base85() to shell sources for the non-configured makefiles, too.
larrybr [Fri, 23 Dec 2022 19:11:57 +0000 (19:11 +0000)] 
Add base64() and base85() to shell sources for the non-configured makefiles, too.

FossilOrigin-Name: ac136925a6453d3e53c7a380911dfeac5706d49f936294289f6ea0b74e26e18a

2 years agoAdd base64() and base85() text/blob conversions to the CLI.
larrybr [Fri, 23 Dec 2022 19:04:59 +0000 (19:04 +0000)] 
Add base64() and base85() text/blob conversions to the CLI.

FossilOrigin-Name: 4bc98a2d9520efa9b80142163cbfab72a5f2fe9854cd6ba8291dcefdb872e657

2 years agoExplicitly omit threading and extension loading from the ext/wasm/c-pp binary build...
stephan [Fri, 23 Dec 2022 18:38:14 +0000 (18:38 +0000)] 
Explicitly omit threading and extension loading from the ext/wasm/c-pp binary build to avoid a link error on some systems.

FossilOrigin-Name: 5d9a14715c25efcd81cadafabf03aad7213251bd1b3dc181939c2dba8d942fb6

2 years agoAdd SQLITE_ENABLE_MATH_FUNCTIONS to the list of feature flags in sqlite3-wasm.c.
stephan [Fri, 23 Dec 2022 18:25:48 +0000 (18:25 +0000)] 
Add SQLITE_ENABLE_MATH_FUNCTIONS to the list of feature flags in sqlite3-wasm.c.

FossilOrigin-Name: 58503cd148c9613abfaf7c1386c34806150bd521966864ccbb821ea7dede8e5a

2 years agoCherry-pick [c4dab53b8ea3401abd] for sqlite3.wasm.xWrap() optimizations.
stephan [Fri, 23 Dec 2022 18:19:28 +0000 (18:19 +0000)] 
Cherry-pick [c4dab53b8ea3401abd] for sqlite3.wasm.xWrap() optimizations.

FossilOrigin-Name: 9b97412d3aa791870016ab3c6f565b6a6afa1764f98e969833aec093b9b29919

2 years agoInternal cleanups and minor speed optimizations in the sqlite3.wasm.xWrap() infrastru...
stephan [Fri, 23 Dec 2022 18:14:36 +0000 (18:14 +0000)] 
Internal cleanups and minor speed optimizations in the sqlite3.wasm.xWrap() infrastructure.

FossilOrigin-Name: c4dab53b8ea3401abd57671b8f3cb39fa4431b864d4c4e14ae24592f8d4cba0a

2 years agoFix lots of harmless, nuisance compiler warnings, mostly unused parameter
drh [Fri, 23 Dec 2022 14:49:24 +0000 (14:49 +0000)] 
Fix lots of harmless, nuisance compiler warnings, mostly unused parameter
warnings in extensions.

FossilOrigin-Name: c14bbe1606c1450b709970f922b94a641dfc8f9bd09126501d7dc4db99ea4772

2 years agoAdd sqlite3.capi JS bindings for the sqlite3session_...(), sqlite3changeset_...(...
stephan [Fri, 23 Dec 2022 14:11:54 +0000 (14:11 +0000)] 
Add sqlite3.capi JS bindings for the sqlite3session_...(), sqlite3changeset_...() and sqlite3changegroup_...() APIs, noting that they are completely untested. Aside from missing tests, these bindings reveal a slight string-argument-type shortcoming in the callback function pointer "reverse binding" which should ideally be resolved before publishing them.

FossilOrigin-Name: 0a39172ee134816f5ce17a403b960e9c22bb56efd5bcf77ecde465efe0d88b1d

2 years agoAdditional fixes for yet more completely harmless compiler warnings.
drh [Fri, 23 Dec 2022 11:46:57 +0000 (11:46 +0000)] 
Additional fixes for yet more completely harmless compiler warnings.

FossilOrigin-Name: 7d3772f0bd0e2602fe919573b49001da4e2b9f3874cb0183dea675204afa7abd

2 years agoInitial pieces for binding the session API to JS. Far from complete. See [forum:210e3...
stephan [Fri, 23 Dec 2022 11:46:26 +0000 (11:46 +0000)] 
Initial pieces for binding the session API to JS. Far from complete. See [forum:210e36a1e3 | forum post 210e36a1e3] for the discussion.

FossilOrigin-Name: cd8c100808da1043fcf63555f48f30c90272c48c6627321ceb0a0995b34733d1

2 years agoSquelch a new (and, in this case, harmless) compiler warning.
stephan [Fri, 23 Dec 2022 11:32:06 +0000 (11:32 +0000)] 
Squelch a new (and, in this case, harmless) compiler warning.

FossilOrigin-Name: a02e19dd6ce00492f3d187e3c3c9bde4d9d1ee9a23616e62ea3590eec95652bd

2 years agoAsserts added to ensure that the iCompare variable in the bytecode engine
drh [Thu, 22 Dec 2022 21:32:58 +0000 (21:32 +0000)] 
Asserts added to ensure that the iCompare variable in the bytecode engine
is correctly initialized before it is used.

FossilOrigin-Name: 7b5900a111b9410f7d60c937e5a56304f2f66b94cd0881e94abcc5eedde52514

2 years agoAvoid having to reinitialize Vdbe.pResultRow upon each call to sqlite3_step()
drh [Thu, 22 Dec 2022 19:12:48 +0000 (19:12 +0000)] 
Avoid having to reinitialize Vdbe.pResultRow upon each call to sqlite3_step()
for a small size reduction and performance increase.

FossilOrigin-Name: 6a00d67f5955ab86eea982c27b3a03b680fdf644ec63f49586ade6342a4d64a6

2 years agoRename the Vdbe.pResultSet field to pResultRow in order to better distinguish
drh [Thu, 22 Dec 2022 18:44:39 +0000 (18:44 +0000)] 
Rename the Vdbe.pResultSet field to pResultRow in order to better distinguish
it from other variables with similar names.

FossilOrigin-Name: 1fd6211ef7bd26ed625177bfedfd5153ace547de6a71365ecfa076578d043f1a

2 years agoSmall performance optimization associated with shared cache in the
drh [Thu, 22 Dec 2022 18:35:21 +0000 (18:35 +0000)] 
Small performance optimization associated with shared cache in the
byte-code engine.

FossilOrigin-Name: 3181331c1c0259d5cd274dcb33faba930dae51b1f0fe51e8a0318d9c564b94f9

2 years agoSmall performance optimization on the OP_Insert opcode.
drh [Thu, 22 Dec 2022 17:36:02 +0000 (17:36 +0000)] 
Small performance optimization on the OP_Insert opcode.

FossilOrigin-Name: 781fdcb9ce85aa2844ef8c00cf908f1a87eeff80dadaf73a71f88b4279260e57

2 years agosessionfuzz.c: use lt/gt brackets instead of double-quotes when #including zlib.h...
stephan [Thu, 22 Dec 2022 10:53:08 +0000 (10:53 +0000)] 
sessionfuzz.c: use lt/gt brackets instead of double-quotes when #including zlib.h, as reported in [forum:91a104bd65 | forum post 91a104bd65].

FossilOrigin-Name: 7d7780c350f3239f9c9feb91924a01a4eba31b88060946c766719c9d50c16bcd

2 years agoMore efficient implementation of large precisions on the "%c" format for
drh [Wed, 21 Dec 2022 19:11:56 +0000 (19:11 +0000)] 
More efficient implementation of large precisions on the "%c" format for
the built-in printf().  This is an effort to avoid a reported
timeout on a (ridiculous) query generated by OSSFuzz.

FossilOrigin-Name: 371f9b88387a44a5f820279d79733d1deb7eafc72f320ec47a11679bbdbb49ef

2 years agoEnsure that the expression of a virtual column really is an expression and
drh [Wed, 21 Dec 2022 14:13:49 +0000 (14:13 +0000)] 
Ensure that the expression of a virtual column really is an expression and
not just a reference to another column, as a real expression is necessary for
the indexed expression coverage optimization to work properly.
[forum:/forumpost/07b36e3899a9ae21|Forum thread 07b36e3899a9ae21].

FossilOrigin-Name: 40549bacb3923e439627b0103bedd7da30258b69a46960040f7176e060f51f2f

2 years agoNew WHERETRACE entries for adding and removing objects from the
drh [Wed, 21 Dec 2022 12:18:06 +0000 (12:18 +0000)] 
New WHERETRACE entries for adding and removing objects from the
Parse.pIdxEpr list as part of indexed expression coverage.  Debug and
testing changes only - no affect on production builds.

FossilOrigin-Name: 4dc438a951bdbe27fbd5ee7cfb907e30ec0efbf8ce02109f18997cc221e0ad3b

2 years agoAdd about 150 new fuzzer cases to test/fuzzdata8.db.
drh [Tue, 20 Dec 2022 15:22:57 +0000 (15:22 +0000)] 
Add about 150 new fuzzer cases to test/fuzzdata8.db.

FossilOrigin-Name: a8d8d9cd65e64e0a492a80c00050f54ab75de82651230049f65c9d2b78a164f2

2 years agoAdd ALWAYS() to always-true branches in the locking logic of the memdb VFS.
drh [Tue, 20 Dec 2022 15:02:44 +0000 (15:02 +0000)] 
Add ALWAYS() to always-true branches in the locking logic of the memdb VFS.

FossilOrigin-Name: 01fa760212a40cec5b43da99b917ab6389561c96d0567a9f67f516bdfa8f5f3d

2 years agoImprovement to the dbsqlfuzz fix of [f113eebdbe68246f].
drh [Tue, 20 Dec 2022 14:02:35 +0000 (14:02 +0000)] 
Improvement to the dbsqlfuzz fix of [f113eebdbe68246f].

FossilOrigin-Name: 79d62956f206cb2987891d4ba5985cece21fc8c8c1158f46c2951f65c0dcf4e8

2 years agoDo not use indexed expressions to replace the expression being indexed on a
drh [Tue, 20 Dec 2022 01:48:43 +0000 (01:48 +0000)] 
Do not use indexed expressions to replace the expression being indexed on a
RIGHT JOIN as that leads to problems, as shown by
dbsqlfuzz a644e70d7683a7ca59c71861a153c1dccf8850b9.

FossilOrigin-Name: f113eebdbe68246fd38d640b0cdf0fd73ab5d2abad9226274dfa2e41fe286bf0

2 years agoFix a faulty assert() in fts5.
dan [Mon, 19 Dec 2022 20:14:22 +0000 (20:14 +0000)] 
Fix a faulty assert() in fts5.

FossilOrigin-Name: 569018170b928cadfa0745db631981084e595d90a8c3d1e236c42adae161018f

2 years agoRemove an unused variable.
drh [Mon, 19 Dec 2022 19:04:32 +0000 (19:04 +0000)] 
Remove an unused variable.

FossilOrigin-Name: 5c4d94147d290d4a68ac0d5ae8f9e6bbfe7522ad58b2298e387f8c699048e111

2 years agoMinor sed script tweak in the wasm GNUmakefile for BSD portability, as reported in...
stephan [Mon, 19 Dec 2022 14:46:17 +0000 (14:46 +0000)] 
Minor sed script tweak in the wasm GNUmakefile for BSD portability, as reported in [forum:4a97813fcbd4f63e|forum post 4a97813fcbd4f63e].

FossilOrigin-Name: 49efcf6d9f894c28a3ffb350a7c5f0ffd12c7cbf61f5c27f76eb7f777b8a24c5

2 years agoUpdate test-opfs-vfs.js to account for recent API changes. Reported in [forum:4a97813...
stephan [Mon, 19 Dec 2022 14:43:17 +0000 (14:43 +0000)] 
Update test-opfs-vfs.js to account for recent API changes. Reported in [forum:4a97813fcbd4f63e|forum post 4a97813fcbd4f63e].

FossilOrigin-Name: 2a636746360c109f1d39fc352b9f1c83a739735520252a264c774e848597475d

2 years agoFix an assert() in fts5. Simplify memdb xLock/xUnlock some.
dan [Mon, 19 Dec 2022 14:06:36 +0000 (14:06 +0000)] 
Fix an assert() in fts5. Simplify memdb xLock/xUnlock some.

FossilOrigin-Name: 7fe158aa8071acadd959b2b4a4b66e8a7f7eecec207ba681abf516b0457c2921

2 years agoFix a minor problem with the printAggInfo() routine (used on during
drh [Mon, 19 Dec 2022 12:25:41 +0000 (12:25 +0000)] 
Fix a minor problem with the printAggInfo() routine (used on during
debugging).

FossilOrigin-Name: c8329967f32efedfc8244631a5682f7f7d21c1b3fcd7d5cc67716555716d4926

2 years agoJS namespace updates in ext/wasm/api/README.md.
stephan [Sun, 18 Dec 2022 12:00:10 +0000 (12:00 +0000)] 
JS namespace updates in ext/wasm/api/README.md.

FossilOrigin-Name: ca59e736b1839c30a820dd5795b4534e1565387ef701423451ea4c503a9701ea

2 years agoFix an unnecessarily restrictive assert() in the aggregate logic.
drh [Sat, 17 Dec 2022 22:10:05 +0000 (22:10 +0000)] 
Fix an unnecessarily restrictive assert() in the aggregate logic.
dbsqlfuzz 699bee2aa26c5dc84afabf6894685c316d936485

FossilOrigin-Name: 8cc0af81ad03ac65f230d78cf97e1448c2d93d556467ea3ef700d5abd4a3890c

2 years agoRemove slew of inadvertant tabs in favor of spaces.
larrybr [Sat, 17 Dec 2022 19:56:28 +0000 (19:56 +0000)] 
Remove slew of inadvertant tabs in favor of spaces.

FossilOrigin-Name: 0aa6da69e12e483b5561bb9a054ec27a99f51772340c950783e342e6dd39beb9

2 years agoAdd NEVER/ALWAYS to branches that have become unreachable due to recent
drh [Sat, 17 Dec 2022 12:49:04 +0000 (12:49 +0000)] 
Add NEVER/ALWAYS to branches that have become unreachable due to recent
enhancements.

FossilOrigin-Name: b4281db4e4762773684d27b809ef911da08b81cb953b3666e535b990d4d5f701

2 years agoUpdate wasmfs.make to get WASMFS building again, but changes made to OPFS-over-WASMFS...
stephan [Sat, 17 Dec 2022 11:14:35 +0000 (11:14 +0000)] 
Update wasmfs.make to get WASMFS building again, but changes made to OPFS-over-WASMFS since we last tested it have made it incompatible with how we used it. It can now only be used from worker threads, eliminating the one benefit it had over the sqlite3_vfs OPFS implementation. Remove/amend references to WASMFS in the docs and remove all WASMFS-specific test app links from index.html.

FossilOrigin-Name: 32dc98c8001387b1970623192ec6cb89445000fa49bda5f4bd7c525bbe20bb5b

2 years agoDisallow some of the query invariant tests on SQL statements that contain
drh [Fri, 16 Dec 2022 18:32:07 +0000 (18:32 +0000)] 
Disallow some of the query invariant tests on SQL statements that contain
a GROUP BY since output terms that are no covered by the GROUP BY are
indeterminant.

FossilOrigin-Name: 28ba1fec4519e7ca9466f1a2f787c905f2cf880d38a004639f99f948e46a51e7

2 years agoExpose a JS-friendly subset of sqlite3_config() to JS, with the notable caveats that...
stephan [Fri, 16 Dec 2022 13:04:21 +0000 (13:04 +0000)] 
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

2 years agoIn the fuzzer invariant checker, do not add new WHERE clause terms that
drh [Fri, 16 Dec 2022 12:07:48 +0000 (12:07 +0000)] 
In the fuzzer invariant checker, do not add new WHERE clause terms that
make use of an ambiguous column name.

FossilOrigin-Name: d5b46541c30bcbeb7e57b5b5951856d564e81f7f9638d66d205157797964418c

2 years agoAdd a test confirming that exceptions are not passed through C-space if a JS-side...
stephan [Fri, 16 Dec 2022 11:33:42 +0000 (11:33 +0000)] 
Add a test confirming that exceptions are not passed through C-space if a JS-side sqlite3_set_authorizer() callback throws.

FossilOrigin-Name: 5a77c2c7aaa556007274e1b85790934665c2c12661ca11d896eb7d09cd49ce72

2 years agoAdd sqlite3_set_authorizer() support and related tests to JS.
stephan [Fri, 16 Dec 2022 11:13:32 +0000 (11:13 +0000)] 
Add sqlite3_set_authorizer() support and related tests to JS.

FossilOrigin-Name: 551b848894c249cb3c9d237643d2ed53ffcb3b003d0cf3f797a535df1731ce39

2 years agoCreate a new affinity called FLEXNUM that works like NUMERIC except that it
drh [Thu, 15 Dec 2022 20:03:08 +0000 (20:03 +0000)] 
Create a new affinity called FLEXNUM that works like NUMERIC except that it
never tries to convert integer to real or real to integer.  The affinity is
only used internally - it is not possible to create a table column with this
affinity.  This affinity is used on subqueries and views that are built off
of a compound SELECT and where the datatype is controlled by a CAST expression.
dbsqlfuzz c9ee6f9a0a8b8fefb02cf69de2a8b67ca39525c8

FossilOrigin-Name: 44135d6ea84f7ba6b36549954b38a8bc048d5ffea5a9779e35950afa4eb2dfb2

2 years agoFix an incompatibility between the Tcl interface and the "memdb" vfs by allowing...
dan [Thu, 15 Dec 2022 18:56:12 +0000 (18:56 +0000)] 
Fix an incompatibility between the Tcl interface and the "memdb" vfs by allowing memdb to accept filenames that begin with '\' characters.

FossilOrigin-Name: bd537f2057a4800bd30e7dd57405c3e57df649471104c80bd32573a89568029e

2 years agoAdded a couple missing 'not part of the public API' tags on functions in sqlite3...
stephan [Thu, 15 Dec 2022 18:50:30 +0000 (18:50 +0000)] 
Added a couple missing 'not part of the public API' tags on functions in sqlite3-wasm.c. No code changes.

FossilOrigin-Name: eb27feecea508f3491a09699f2339951facd2345d479cfd3020183dc2af703b2

2 years agoOmit the columnTypeImpl() function from the build when SQLITE_OMIT_DECLTYPE
drh [Thu, 15 Dec 2022 15:37:52 +0000 (15:37 +0000)] 
Omit the columnTypeImpl() function from the build when SQLITE_OMIT_DECLTYPE
is defined, because it is no longer used in that case.

FossilOrigin-Name: 751e344f4cd2045caf97920cc9f4571caf0de1ba83b94ded902a03b36c10a389

2 years agoFix harmless compiler warnings.
drh [Thu, 15 Dec 2022 13:45:49 +0000 (13:45 +0000)] 
Fix harmless compiler warnings.

FossilOrigin-Name: ddb260cc52efce6472b9423cbc6b788d8c38746f1842c9f1c184c08c651b3387

2 years agoUpdate a test case in scanstatus2.test to account for recent planner enhancements.
dan [Thu, 15 Dec 2022 11:39:12 +0000 (11:39 +0000)] 
Update a test case in scanstatus2.test to account for recent planner enhancements.

FossilOrigin-Name: 53e07dc6b6521bb7757d0bc2cf12a501bb929afafdb16737058496afca8e6742

2 years agoFix an unsafe use of sqlite3_mprintf() in sqlite3_overload_function() identified...
dan [Thu, 15 Dec 2022 11:31:11 +0000 (11:31 +0000)] 
Fix an unsafe use of sqlite3_mprintf() in sqlite3_overload_function() identified by forum post: <https://sqlite.org/forum/forumpost/95b338860d>.

FossilOrigin-Name: 9fa2b94c2e0fd43c1a9c15a79fe1325afa1699f0685dcd039024a80185cc5658

2 years agoInternal refactoring of how sqlite3.wasm.xWrap() handles JS-to-C function pointer...
stephan [Thu, 15 Dec 2022 02:28:55 +0000 (02:28 +0000)] 
Internal refactoring of how sqlite3.wasm.xWrap() handles JS-to-C function pointer conversions, to enable similar conversions to be added more easily.

FossilOrigin-Name: 10cfe3fae6f680d3ecc3b0afbbf628ce91e34e3757b19dd27c231f0daf44232a

2 years agoRemove an unnecessary/obsolete Emscripten-specific export.
stephan [Thu, 15 Dec 2022 02:26:13 +0000 (02:26 +0000)] 
Remove an unnecessary/obsolete Emscripten-specific export.

FossilOrigin-Name: fa278022afd6dd6e499d26f74a8359f3e9973e1680772059ce331b64e77ec582

2 years agoFix minor problems in the new sqlite3ExprDataType() function.
drh [Wed, 14 Dec 2022 23:53:29 +0000 (23:53 +0000)] 
Fix minor problems in the new sqlite3ExprDataType() function.

FossilOrigin-Name: c1d5261b222bbf94c20e558089f3d2eae6a88b6d739225ee4f7d0338e0e59994

2 years agoAdjust the query planner to be more aggressive about using co-routines rather
drh [Wed, 14 Dec 2022 18:34:05 +0000 (18:34 +0000)] 
Adjust the query planner to be more aggressive about using co-routines rather
than materializing subqueries and views.  Implementation of enhancement
request [73ebbb3a3d1a7bd3].

FossilOrigin-Name: 0b58d1b354a0f91bafeafee102acedd4654dc420afdf4eb4aaac9bf5bcb63c1f

2 years agoRename the new peek/pokeF32() and peek/pokeF64() to peek/poke32f() and peek/poke64f...
stephan [Wed, 14 Dec 2022 18:06:01 +0000 (18:06 +0000)] 
Rename the new peek/pokeF32() and peek/pokeF64() to peek/poke32f() and peek/poke64f() for consistency with related APIs and because they're easier on both the eyes and the fingers.

FossilOrigin-Name: cc86f03ed698a071cd02ef3dfaba69092226bff20c917d662f808061627ad285

2 years agoMerge all the latest trunk enhancements into the coroutines-exp2 enhancement coroutines-exp2
drh [Wed, 14 Dec 2022 17:52:15 +0000 (17:52 +0000)] 
Merge all the latest trunk enhancements into the coroutines-exp2 enhancement
branch.

FossilOrigin-Name: ea278438b72e85d217e72c836cbefd68bd8b336baf33507b2d8d12ef436424cd

2 years agoRework the code that computes the datatypes and affinities for subqueries
drh [Wed, 14 Dec 2022 17:46:35 +0000 (17:46 +0000)] 
Rework the code that computes the datatypes and affinities for subqueries
and views.  If the subquery/view is constructed from a compound SELECT where
the affinity varies across arms of the compound, set the affinity for the
corresponding column in the constructed view to be BLOB so that it is allowed
to take on any data type.

FossilOrigin-Name: 27655c9353620aa58105e87d1e171d1f0a637deedde41c081824078385cd49ac

2 years agoSlight reformulation of some test code to test multi-arg wasm.peek() call form.
stephan [Wed, 14 Dec 2022 16:40:17 +0000 (16:40 +0000)] 
Slight reformulation of some test code to test multi-arg wasm.peek() call form.

FossilOrigin-Name: 349bb28f614bc210b3283ed1c1144c45fbc7d9e2ffc3dc6193ccb9932d347efb

2 years agoIf the SELECT that implements a subquery or a VIEW or a CREATE TABLE AS is refactor-subquery-types
drh [Wed, 14 Dec 2022 14:41:35 +0000 (14:41 +0000)] 
If the SELECT that implements a subquery or a VIEW or a CREATE TABLE AS is
a compound with different result datatypes on two or more arms of the compound,
then the overall column type becomes BLOB (ANY).

FossilOrigin-Name: 6ebb178c6b688ebd632e91a5ec4c748567833037c679ab3d72fb770deb230fe1

2 years agoUse the new peek/poke() variants throughout tester1.js.
stephan [Wed, 14 Dec 2022 14:40:36 +0000 (14:40 +0000)] 
Use the new peek/poke() variants throughout tester1.js.

FossilOrigin-Name: ef7b783552f7783a728837fcfc81e493b135a7aac59747397e7e3d28f4309f95

2 years agoAdd convenience variants of sqlite3.wasm.peek/poke() for each numeric type to help...
stephan [Wed, 14 Dec 2022 14:28:54 +0000 (14:28 +0000)] 
Add convenience variants of sqlite3.wasm.peek/poke() for each numeric type to help reduce errors related to typos in the final argument (type-name strings). If wasm.xWrap.FuncPtrAdapter is called as a function, instead of a constructor, it now behaves as if it were called as a constructor (previously it threw an exception).

FossilOrigin-Name: 14e3fc01b929fa3f9a2fdbd93deb4a8aad58c111d46369c772def0437152fa75

2 years agoBack out the part of the change in [88a05141c28e5ff1] that adds affinity to
drh [Wed, 14 Dec 2022 09:06:45 +0000 (09:06 +0000)] 
Back out the part of the change in [88a05141c28e5ff1] that adds affinity to
the materialization of a view, as the affinity can be undefined for a compound
query.  This passes all TCL tests, but shows failures in the TH3 tests derived
from [forum:/forumpost/6f842bc5b2dadcb2|forum post 6f842bc5b2dadcb2], presumably
because the WHERE clause of the query uses constraints of the form
"source_crs_code='8675'" instead of "source_crs_code=8675".  Perhaps further
changes on this branch should reimplement affinity on joins in cases where
the affinity is unambiguous.

FossilOrigin-Name: fe5a77bcc4de8f49cc4fe6bd2e2e1f31da8d3bc84120daaa99eb853b06291d15

2 years agoAdd a test to demonstrate/verify which object acts as "this" in a oo1.DB.exec() callback.
stephan [Wed, 14 Dec 2022 08:12:01 +0000 (08:12 +0000)] 
Add a test to demonstrate/verify which object acts as "this" in a oo1.DB.exec() callback.

FossilOrigin-Name: 8fc4b3f10f61e965853a22bf7a64ad2511ef656d66658a7910bac35b0f9805ec

2 years agoA micro-optimization in sqlite3.oo1.DB.exec(). Changed the rowMode option of that...
stephan [Wed, 14 Dec 2022 08:01:34 +0000 (08:01 +0000)] 
A micro-optimization in sqlite3.oo1.DB.exec(). Changed the rowMode option of that method to only accept $X instead of $X, @X, and :X, as the extra options are entirely superfluous and may lead to confusion.

FossilOrigin-Name: 82a6c7fdf59729c182545b15c084b136e34513f340e87a7b6e5aa199117357b0

2 years agoFix a comment in ext/session/test_session.c.
dan [Tue, 13 Dec 2022 19:52:23 +0000 (19:52 +0000)] 
Fix a comment in ext/session/test_session.c.

FossilOrigin-Name: bd814af14b6d67c4f8cf6482a0657f9437811a2820196ea6ccf22514291fe360

2 years agoPrevent the sessions rebaser from generating changesets containing UPDATE records...
dan [Tue, 13 Dec 2022 19:40:56 +0000 (19:40 +0000)] 
Prevent the sessions rebaser from generating changesets containing UPDATE records for which non-PK fields are present in the old.* but not the new.* record. Also update the changeset iterator to work around such changesets.

FossilOrigin-Name: f9cd23dffba06b1982c0a5e5362dba53eba768120a2daa985b4f649d3fea1427

2 years agoRemove an unused variable from sqlite3SubqueryColumnTypes().
drh [Tue, 13 Dec 2022 16:59:09 +0000 (16:59 +0000)] 
Remove an unused variable from sqlite3SubqueryColumnTypes().

FossilOrigin-Name: c6e3ff396947e6954e77195419b35de8b39bd540d3f4bff456bab25b512e1792

2 years agoUse standard datatype names for the column datatypes in views and subqueries.
drh [Tue, 13 Dec 2022 16:55:23 +0000 (16:55 +0000)] 
Use standard datatype names for the column datatypes in views and subqueries.

FossilOrigin-Name: baf2c2413346feb72ecb0bac800be9b945ebb4e01b42212132434d8ddef9cad0

2 years agoRefactor the sqlite3SelectAddColumnTypeAndCollation() routine. Improved
drh [Tue, 13 Dec 2022 15:54:43 +0000 (15:54 +0000)] 
Refactor the sqlite3SelectAddColumnTypeAndCollation() routine.  Improved
comments.  Now called sqlite3SubqueryColumnTypes().

FossilOrigin-Name: 4dfb1b450b87e2c6207c83c102b785781d1dbdeadbeeab6a83f96d58bb96cfbf

2 years agoAdd extra test cases for applying sessions module changesets to databases that have...
dan [Tue, 13 Dec 2022 14:59:28 +0000 (14:59 +0000)] 
Add extra test cases for applying sessions module changesets to databases that have been modified using "ALTER TABLE .. ADD COLUMN".

FossilOrigin-Name: a7b404f21f657f395eddb32e218eae14e09df08fa03f68ca8bba79ea322ce8ba

2 years agoSlightly faster implementation of sqlite3ExprAffinity().
drh [Tue, 13 Dec 2022 13:33:28 +0000 (13:33 +0000)] 
Slightly faster implementation of sqlite3ExprAffinity().

FossilOrigin-Name: 01cf3278c9c00dddcac67aa4b22ca26a52c31932cba35daa634a56b4c264bdeb

2 years agoDocument the role of the sqlite3.client JS API property.
stephan [Tue, 13 Dec 2022 10:54:12 +0000 (10:54 +0000)] 
Document the role of the sqlite3.client JS API property.

FossilOrigin-Name: 5f11f1c7d5f8b627acd2ace277521d39fe2ffb0ef1dfe532e65fb56ea3dfb4d8

2 years agoExtend the sqlite3.wasm function pointer argument converter to be able to handle...
stephan [Tue, 13 Dec 2022 08:25:28 +0000 (08:25 +0000)] 
Extend the sqlite3.wasm function pointer argument converter to be able to handle the "two-layered context" of sqlite3_create_collation() and friends and make use of FuncPtrAdapter to perform JS-to-WASM function conversion for them.

FossilOrigin-Name: 0a60b7215e433f8c50027c70731b11e58d74c90ec5903e66ae42f9c98e40b044

2 years agoMerge recent trunk changes into the coroutine-exp2 branch.
drh [Tue, 13 Dec 2022 00:51:34 +0000 (00:51 +0000)] 
Merge recent trunk changes into the coroutine-exp2 branch.

FossilOrigin-Name: c43f433bcab29db0f1f8afd3948f5a4149e1f277c853c66f99c31f226d82bc0f

2 years agoFurther fix for ticket [57c47526c34f01e8]. If a subquery has a result set
drh [Mon, 12 Dec 2022 21:22:23 +0000 (21:22 +0000)] 
Further fix for ticket [57c47526c34f01e8].  If a subquery has a result set
column of the form "CAST(expr AS NUMERIC)" do not give that column NUMERIC
affinity.  NUMERIC affinity always goes to an integer if able, but a CAST
to numeric is a no-op if the input is a number.  So the two are not equivalent.

FossilOrigin-Name: f0325359d5795237b79f90f21b42d7d942c7e918137cb0231d404365d3041e81

2 years agoIf a subquery has a result column of the form "CAST(... AS NUMERIC)" then cast-to-numeric
drh [Mon, 12 Dec 2022 18:58:53 +0000 (18:58 +0000)] 
If a subquery has a result column of the form "CAST(... AS NUMERIC)" then
give that column no affinity rather than NUMERIC affinity.  This is because
casting to numeric preserves real values that could be integers but numeric
affinity does not.  By using no affinity on the column, we make the behavior
consistent if the subquery is implemented as a co-routine or is materialized.

FossilOrigin-Name: ece07d091c2ef3367a914187e0b6512c1f2390b8c34844536ad50e88c7e8c2f2

2 years agoRevert part of [9386d6f63468] because the new automatic function pointer binding...
stephan [Mon, 12 Dec 2022 18:42:39 +0000 (18:42 +0000)] 
Revert part of [9386d6f63468] because the new automatic function pointer binding cannot properly track per-context function mappings when the context is more complex than a single context-type pointer. e.g. it is fine for sqlite3_trace_v2() but it breaks down with sqlite3_create_collation() because that one needs to use the collation name as part of the context key and we cannot sensibly do so with the current code.

FossilOrigin-Name: 6cd21b79075367227b57bccf829cc7d4ccc7d7fbcfaed226b4c8e942ddae4eb6

2 years agoAdd new logging code SQLITE_NOTICE_RBU and use it when logging for the spurious error...
dan [Mon, 12 Dec 2022 17:33:36 +0000 (17:33 +0000)] 
Add new logging code SQLITE_NOTICE_RBU and use it when logging for the spurious error that RBU injects into SQLite as part of applying an update.

FossilOrigin-Name: cd881d35150be7f28cc1ca1eca0e950b5a039bef61190fcae4f944ef0e91f234

2 years agoMove JS-to-C binding signatures from sqlite3-api-prologue.js to sqlite3-api-glue...
stephan [Mon, 12 Dec 2022 14:31:38 +0000 (14:31 +0000)] 
Move JS-to-C binding signatures from sqlite3-api-prologue.js to sqlite3-api-glue.js to allow for use of the new/experimental sqlite3.wasm.xWrap() feature which automatically binds JS functions to WASM/C as needed, which simplifies creation of bindings which take C function pointers. Reimplement sqlite3_exec(), sqlite3_create_collation(), sqlite3_progress_handler() to use this new feature.

FossilOrigin-Name: 9386d6f634680b4e0fa5487c34c63acb29f0b7a6ae738b8f6164ad084a229b62

2 years agoext/wasm/module-symbols.html: for C APIs which have extended JS-side semantics, link...
stephan [Mon, 12 Dec 2022 11:38:22 +0000 (11:38 +0000)] 
ext/wasm/module-symbols.html: for C APIs which have extended JS-side semantics, link to the JS-side API docs instead of the C docs.

FossilOrigin-Name: d557015208f504c6d5d20ebf1e451b3f07b19590d76371b16a9f4b54e9645282

2 years agoext/wasm/module-symbols.html: add a hyperlink to the API docs for each exported sqlit...
stephan [Mon, 12 Dec 2022 11:22:05 +0000 (11:22 +0000)] 
ext/wasm/module-symbols.html: add a hyperlink to the API docs for each exported sqlite3_...() function.

FossilOrigin-Name: 01d3a9bba3120cfec3f752048281f18ce7ab48fa7584750c097233a9ce095a20

2 years agoRework the internals of how argument/result types are converted to/from wasm in prep...
stephan [Mon, 12 Dec 2022 08:16:47 +0000 (08:16 +0000)] 
Rework the internals of how argument/result types are converted to/from wasm in prep for attempting to support automated conversions of function pointer argument types.

FossilOrigin-Name: 58052d8285cbc2aa8c4f8a9f5c2d33ac12014f6a70afbc93bc4ce5b9fd1f9ee5

2 years agoAdd sqlite3.mjs to the new 'quick' wasm build for the sake of the snapshot build.
stephan [Mon, 12 Dec 2022 07:52:22 +0000 (07:52 +0000)] 
Add sqlite3.mjs to the new 'quick' wasm build for the sake of the snapshot build.

FossilOrigin-Name: 5a3f2224c37c7e28ce627bd98a9907a16635bffeea36e8ead707586aad37ccfe

2 years agoExpose sqlite3_txn_state() to wasm.
stephan [Mon, 12 Dec 2022 07:31:37 +0000 (07:31 +0000)] 
Expose sqlite3_txn_state() to wasm.

FossilOrigin-Name: f6f3397a4667b15a96bdf4189c54789d622fd90351405e963d7f56ac93a9344c