]> git.ipfire.org Git - thirdparty/sqlite.git/log
thirdparty/sqlite.git
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

2 years agoExpose a number of infrequently-used sqlite3_...() functions to wasm whose absences...
stephan [Mon, 12 Dec 2022 07:27:22 +0000 (07:27 +0000)] 
Expose a number of infrequently-used sqlite3_...() functions to wasm whose absences were noticed while documenting.

FossilOrigin-Name: 3144e7c0b8633d99daa07d75dabfe6e115ad401110f6f3c85f768e973299f3d9

2 years agoMinor build tweaks in ext/wasm to create a faster-running build for the common dev...
stephan [Sun, 11 Dec 2022 07:53:03 +0000 (07:53 +0000)] 
Minor build tweaks in ext/wasm to create a faster-running build for the common dev-mode cases. No code changes.

FossilOrigin-Name: 6a61b14a6cf8279a5b8b77f934c2b97965f5e3fe4cddb03e78c2c0a840dbe6f6

2 years agoEnsure that the types and collation sequences of a view are taken from the leftmost...
dan [Sat, 10 Dec 2022 19:22:39 +0000 (19:22 +0000)] 
Ensure that the types and collation sequences of a view are taken from the leftmost component of compound SELECTs, even when column names are explicitly provided for the view.

FossilOrigin-Name: 6f0bf892695acaa2f6fd1fccc767340caf5edfdb8b0816bda33d52cc21d5da45

2 years agoEnsure that the types and collation sequences of a view are taken from the leftmost... tkt-679ed6a2
dan [Sat, 10 Dec 2022 17:54:55 +0000 (17:54 +0000)] 
Ensure that the types and collation sequences of a view are taken from the leftmost component of compound SELECTs, even when column names are explicitly provided for the view. Possible fix for [679ed6a2].

FossilOrigin-Name: b0e49aa81a09c183b8baf8346b8a9b593c2b13073958617b6594500958d5bd46

2 years agoRemove -flto from wasm build flags, as it increases build time and doesn't seem to...
stephan [Sat, 10 Dec 2022 17:45:40 +0000 (17:45 +0000)] 
Remove -flto from wasm build flags, as it increases build time and doesn't seem to have a measurable benefit.

FossilOrigin-Name: 35a88747eb0bb9eebb60550f91d0fe0c7a5ae11ec0a1315ae056fd79e9436a3f

2 years agoCorrect wasm heap corruption introduced in test code added in [e144fd5c88fa4] which...
stephan [Sat, 10 Dec 2022 17:20:29 +0000 (17:20 +0000)] 
Correct wasm heap corruption introduced in test code added in [e144fd5c88fa4] which led to unpredictable failures.

FossilOrigin-Name: 6c1e07e3857b38e394853891a9028e88319bad4bc7b7b15078e25f430c3b1222

2 years agoRemove two incorrect calls to structType.dipose() which prematurely freed objects...
stephan [Sat, 10 Dec 2022 15:41:47 +0000 (15:41 +0000)] 
Remove two incorrect calls to structType.dipose() which prematurely freed objects in use by the virtual table test/demo code.

FossilOrigin-Name: 060eb2848975a24ff6683a8a9c4d7546ae36147323b0edae01fb42f52d9bb2d6

2 years agoExpose sqlite3_column_value() to WASM and add sqlite3_column_js().
stephan [Sat, 10 Dec 2022 15:13:29 +0000 (15:13 +0000)] 
Expose sqlite3_column_value() to WASM and add sqlite3_column_js().

FossilOrigin-Name: 7783aa4af1331190fd1f42a71bb724041e2e82b51745f9740926e4ead83a97ed

2 years agoRefactor the internal JS routines for converting UDF results and errors to JS into...
stephan [Sat, 10 Dec 2022 10:24:46 +0000 (10:24 +0000)] 
Refactor the internal JS routines for converting UDF results and errors to JS into public APIs.

FossilOrigin-Name: 35d1d63c7d60119b64341c561294890812837d5432d1d7bed3ed88d6212fbfa0

2 years agoRemove the SQLITE_PREPARE_SAFEOPT flag. The name is obsolete and it is at the
drh [Fri, 9 Dec 2022 18:26:15 +0000 (18:26 +0000)] 
Remove the SQLITE_PREPARE_SAFEOPT flag.  The name is obsolete and it is at the
wrong level.  Instead use the SF_UpdateFrom flags on the Select object.

FossilOrigin-Name: 78723a9a7e72b42d28fc5645661da17f20cedcf864819b861800ad9340007be1

2 years agoDo not allow OOM faults in EQP messages associated with automatic indexes
drh [Fri, 9 Dec 2022 17:33:21 +0000 (17:33 +0000)] 
Do not allow OOM faults in EQP messages associated with automatic indexes
on co-routines to go unreported.

FossilOrigin-Name: d125d5afdf1b0a1c64fc64f180898099af07b8290ea9da49419df75d8b455f71

2 years agoExport sqlite3_result_subtype() and sqlite3_value_dup/free/subtype() to WASM.
stephan [Fri, 9 Dec 2022 15:26:58 +0000 (15:26 +0000)] 
Export sqlite3_result_subtype() and sqlite3_value_dup/free/subtype() to WASM.

FossilOrigin-Name: 4600a7bbdc4cbe14591d48ea19fe5f7de3a0c10a14cdd97fd51e263a13163d10

2 years agoExpose sqlite3_value_frombind/nochange/numeric_type() to WASM. Add a flag to sqlite3_...
stephan [Fri, 9 Dec 2022 15:12:07 +0000 (15:12 +0000)] 
Expose sqlite3_value_frombind/nochange/numeric_type() to WASM. Add a flag to sqlite3_value_to_js() to cause it to return undefined, instead of throwing, if no conversion can be found.

FossilOrigin-Name: de8fc4bf34f80f320012a0e506ed8e3e24806daf67845d5dabb00b916108f6ef

2 years agoRefactor the sqlite3_value-to-JS conversion from an internal detail to sqlite3.capi...
stephan [Fri, 9 Dec 2022 14:46:24 +0000 (14:46 +0000)] 
Refactor the sqlite3_value-to-JS conversion from an internal detail to sqlite3.capi.sqlite3_value_to_js() for use with routines like sqlite3_module::xFilter().

FossilOrigin-Name: f6dbf280f99809a80c99337e4c22a86dea7a35ae41ae9a69144c4502385a0a1f

2 years agoFix typo in the SQLITE_DBCONFIG_LOOKASIDE documentation.
drh [Fri, 9 Dec 2022 13:49:44 +0000 (13:49 +0000)] 
Fix typo in the SQLITE_DBCONFIG_LOOKASIDE documentation.

FossilOrigin-Name: c6e7582aea4ebcc4563afb4367fded1e8a74f6ef522a569460023c340ca24b30

2 years agoRemove some unused sqlite3_status() codes from the JS API. Add custom JS wrappers...
stephan [Fri, 9 Dec 2022 12:12:49 +0000 (12:12 +0000)] 
Remove some unused sqlite3_status() codes from the JS API. Add custom JS wrappers for sqlite3_create_collation/_v2() which accept JS functions (plus tests). Expand the argument options for sqlite3_wasm_db_error() to enable it to translate exception objects to C-level errors.

FossilOrigin-Name: 073a2f1eb006230ae0995a5ea6c789407bcaa819ec15b5064c66d8973ed4671a

2 years agoRename the oft-used, verbose sqlite3.wasm.get/setMemValue() and get/setPtrValue(...
stephan [Fri, 9 Dec 2022 09:23:27 +0000 (09:23 +0000)] 
Rename the oft-used, verbose sqlite3.wasm.get/setMemValue() and get/setPtrValue() to peek/poke() and peek/pokePtr(). The old names are retained as aliases just in case any client code actually uses them, but they are now deprecated.

FossilOrigin-Name: ad0a8139b0b025f8e9d2eca0c303557ef10fdfab8c8b65afb08c510a804073d5

2 years agoMicro-optimization in the oft-activated JS-to-WASM arguments conversion step.
stephan [Fri, 9 Dec 2022 08:44:22 +0000 (08:44 +0000)] 
Micro-optimization in the oft-activated JS-to-WASM arguments conversion step.

FossilOrigin-Name: ee47e9b83ca668b37dc1d8e519048a635693cf33d9967a2d81ff0824b7eea4ba

2 years agoCorrect a test bug which broke the previous checkin's wasm tests in higher optimizati...
stephan [Fri, 9 Dec 2022 07:17:54 +0000 (07:17 +0000)] 
Correct a test bug which broke the previous checkin's wasm tests in higher optimization levels. Test bug - it should not have worked in -O0 mode.

FossilOrigin-Name: f07141b7500c36169c2c96e045acf37ec97a0d75c0a5f4d0ebed4dc1d2094ccf

2 years agoExport sqlite3_status() and sqlite3_stmt_status() to wasm. Expand the arg/return...
stephan [Fri, 9 Dec 2022 05:47:42 +0000 (05:47 +0000)] 
Export sqlite3_status() and sqlite3_stmt_status() to wasm. Expand the arg/return semantics of wasm.get/setPtrValue() and get/setMemValue() to simplify handling of multiple pointers.

FossilOrigin-Name: e144fd5c88fa4151429a2fef3daf389588402e158267f0afa0dfd142527d76b9

2 years agoJS API doc updates.
stephan [Fri, 9 Dec 2022 02:23:15 +0000 (02:23 +0000)] 
JS API doc updates.

FossilOrigin-Name: 4f80fd3b8d4c85894664093d8310d6f5299faac4eb879edc608b3ffcd8558e9a

2 years agoExpose sqlite3_table_column_metadata() to wasm.
stephan [Fri, 9 Dec 2022 02:12:43 +0000 (02:12 +0000)] 
Expose sqlite3_table_column_metadata() to wasm.

FossilOrigin-Name: c31eb509e5cb1025de058132ee9a45d70c84ee47a6abe18811a65ce339f062a0

2 years agoExpose sqlite3_db_status() and sqlite3_db_config() to wasm, noting that the latter...
stephan [Fri, 9 Dec 2022 01:49:17 +0000 (01:49 +0000)] 
Expose sqlite3_db_status() and sqlite3_db_config() to wasm, noting that the latter requires several internal wrappers to account for the various varidic forms (C varargs cannot be bound to wasm).

FossilOrigin-Name: d5753668915c1db204fa80153614653243081ffaddea22f26ad59bb1836948b9

2 years agoReorganization and renaming in the new VFS/vtab JS pieces.
stephan [Fri, 9 Dec 2022 00:50:39 +0000 (00:50 +0000)] 
Reorganization and renaming in the new VFS/vtab JS pieces.

FossilOrigin-Name: 1c2dda177a11fcc5b66e5554507c23ba4b9948a710b3bccfb26963b9851d40a4

2 years agoSupport ".scanstats est" to enable including planner estimates in query profiles.
dan [Thu, 8 Dec 2022 21:05:33 +0000 (21:05 +0000)] 
Support ".scanstats est" to enable including planner estimates in query profiles.

FossilOrigin-Name: 0fe71287c953bd813a34ba383f5debd4d1fc8bf3c74e1e27adacec0d6e207ded

2 years agoFurther docs and minor cleanups in the JS virtual table helper.
stephan [Thu, 8 Dec 2022 18:18:37 +0000 (18:18 +0000)] 
Further docs and minor cleanups in the JS virtual table helper.

FossilOrigin-Name: c31e7488ac1a6b957782b72bd026b1f0590637b631e44a1fdf1dedeb5c587819

2 years agoEase-of-use/legibility improvements in the virtual table JS helpers.
stephan [Thu, 8 Dec 2022 17:07:27 +0000 (17:07 +0000)] 
Ease-of-use/legibility improvements in the virtual table JS helpers.

FossilOrigin-Name: 54c7ad7e08bdb87579398ade366605bfa2e2538a94aabcc6e4cda8e173649760

2 years agoImproved comments on the new co-routine logic. Fix a C++-ism in the code.
drh [Thu, 8 Dec 2022 16:47:16 +0000 (16:47 +0000)] 
Improved comments on the new co-routine logic.  Fix a C++-ism in the code.
Update test cases to accommodate the more aggressive use of co-routines.

FossilOrigin-Name: 9243e850ae656d16adc8f0e5c4dcf3dcf476312cee192c39c38685fc437ccbbd

2 years agoInitial support for virtual tables implemented in JavaScript.
stephan [Thu, 8 Dec 2022 15:00:53 +0000 (15:00 +0000)] 
Initial support for virtual tables implemented in JavaScript.

FossilOrigin-Name: a1454744c770a30a32a6d7b7fc59ef7be48cf67348b238540592850d7c2c7757

2 years agoDo not use a co-routine on a subquery that is participating in a self-join.
drh [Thu, 8 Dec 2022 13:56:06 +0000 (13:56 +0000)] 
Do not use a co-routine on a subquery that is participating in a self-join.

FossilOrigin-Name: ea4306a03cd8dd706100dac3f11653068a25c50c5d06c34ad08534aec0a580bc

2 years agoDescribe the SQLITE_DBCONFIG_RESET_DATABASE flag's policy regarding virtual tables...
stephan [Thu, 8 Dec 2022 12:51:11 +0000 (12:51 +0000)] 
Describe the SQLITE_DBCONFIG_RESET_DATABASE flag's policy regarding virtual tables, per /chat discussion.

FossilOrigin-Name: 53dcb81b029e4422bdc0b5cf694183854b997195427d437b6154ed4dad7ad0ba

2 years agoMore work on the JS vtable tests. wasm-vtab
stephan [Thu, 8 Dec 2022 10:06:07 +0000 (10:06 +0000)] 
More work on the JS vtable tests.

FossilOrigin-Name: 51e3c3b569dce2097063d39dc484f44b2f98cad0a902ef66765ca4cdc3e06f47

2 years agoGot JS non-eponymous vtable working thanks to a hint from Dan.
stephan [Thu, 8 Dec 2022 09:06:20 +0000 (09:06 +0000)] 
Got JS non-eponymous vtable working thanks to a hint from Dan.

FossilOrigin-Name: 750719b4981df62fa2ff3665e6f559ec760609ad2493495628295ad9ae6024fc

2 years agoRemove some dead JS code and tweak some docs.
stephan [Thu, 8 Dec 2022 04:19:38 +0000 (04:19 +0000)] 
Remove some dead JS code and tweak some docs.

FossilOrigin-Name: 0ee495452c014680697aa9035c245024df127a52d1820ab0e02580a015d96ecb

2 years agoMerge the latest fixes and enhancements from trunk into the
drh [Wed, 7 Dec 2022 21:19:37 +0000 (21:19 +0000)] 
Merge the latest fixes and enhancements from trunk into the
coroutines-exp2 branch.

FossilOrigin-Name: 1c5f41986f5af181bf389675361c9f176e9195e847319f07ebd5c87992ded38b

2 years agoReduce the overhead of SQLITE_ENABLE_STMT_SCANSTATUS some.
dan [Wed, 7 Dec 2022 20:09:54 +0000 (20:09 +0000)] 
Reduce the overhead of SQLITE_ENABLE_STMT_SCANSTATUS some.

FossilOrigin-Name: 212927e97e7be7d237de08359dce0dfb9211ac406b32009a6e15afd79c006475

2 years agoFix harmless compiler warning in the dynamic continuation prompt of the CLI.
drh [Wed, 7 Dec 2022 19:51:48 +0000 (19:51 +0000)] 
Fix harmless compiler warning in the dynamic continuation prompt of the CLI.

FossilOrigin-Name: 68947b0a1147365a29e335d5e4dc55fe5d9afe3562a0709b111067d6017c5a42

2 years agoOmit CLI use of pragma_table_xinfo when it is not defined in the build.
larrybr [Wed, 7 Dec 2022 19:29:13 +0000 (19:29 +0000)] 
Omit CLI use of pragma_table_xinfo when it is not defined in the build.

FossilOrigin-Name: 976c23520fa64b39aa54047f2fd12445e65940206768ce51c0d690d0d0d570ab

2 years agoHave sqlite3_stmt_scanstatus() report cycle, loop and row counts separately for creat...
dan [Wed, 7 Dec 2022 17:29:17 +0000 (17:29 +0000)] 
Have sqlite3_stmt_scanstatus() report cycle, loop and row counts separately for creating an automatic index and using that automatic index.

FossilOrigin-Name: 3bc9df82ea5b0fb085c56a326a65e19c9baf98d48d8fa6344c0d7004747594ba

2 years agoStreamline and improve testing of the locking in the memdb VFS.
drh [Wed, 7 Dec 2022 16:58:04 +0000 (16:58 +0000)] 
Streamline and improve testing of the locking in the memdb VFS.
Follow-on to [15f0be8a640e7bfa].

FossilOrigin-Name: d71a08375aeb525c10037c373b8eeb7e29f7dfaf7c4bfc02f4d99616c5940405

2 years agoWork on an alternate (slightly simpler) approach to binding JS vtabs. Non-eponymous...
stephan [Wed, 7 Dec 2022 07:22:34 +0000 (07:22 +0000)] 
Work on an alternate (slightly simpler) approach to binding JS vtabs. Non-eponymous vtabs are not working, for reasons as yet unknown.

FossilOrigin-Name: 6a0fefb93bcccd950df211cf5c2f49660c7b92115dd01b2b508a4ab9e3ab3d23

2 years agoAdd addOnDispose() method to Jaccwabyt and code-adjacent minor internal cleanups.
stephan [Wed, 7 Dec 2022 03:42:39 +0000 (03:42 +0000)] 
Add addOnDispose() method to Jaccwabyt and code-adjacent minor internal cleanups.

FossilOrigin-Name: 6a2723fe3f28dd94328d901e64e1e9ee9a1b2e9eeaed6c54038a5b83c914db78

2 years agoFix a (harmless) off-by-one error in code generation that comes up when
drh [Wed, 7 Dec 2022 00:14:25 +0000 (00:14 +0000)] 
Fix a (harmless) off-by-one error in code generation that comes up when
doing a DISTINCT query against a virtual table with an OR term in the
WHERE clause and where the ORDER BY clause has 64 or more references to
the result set.  [forum:/forumpost/dfe8084751|Forum post dfe8084751].

FossilOrigin-Name: 04af7ef77043702f93cbff23548610759786893bd3d4d6fc08181e1e249c6663

2 years agoEnhance CLI .sha3sum to warn of text fields that are not to-blob-to-text reversible.
larrybr [Tue, 6 Dec 2022 19:32:07 +0000 (19:32 +0000)] 
Enhance CLI .sha3sum to warn of text fields that are not to-blob-to-text reversible.

FossilOrigin-Name: bbde0f36d03cdbbc749427fe7d2dafd5c5031c9e655ebd772857b521f53eb18f

2 years agoMerge from trunk prepratory to branch end. sha3sum_text_validation
larrybr [Tue, 6 Dec 2022 19:25:07 +0000 (19:25 +0000)] 
Merge from trunk prepratory to branch end.

FossilOrigin-Name: 1d01f8483af7b6a4e93a49fd8bbb6a2b9300e969b574efeb96d56081a33055c4

2 years agoAvoid several -Wall warnings in textfixture build.
larrybr [Tue, 6 Dec 2022 19:20:49 +0000 (19:20 +0000)] 
Avoid several -Wall warnings in textfixture build.

FossilOrigin-Name: 03ae8680e430c6d2c39ca26fa2cb6eed46e3c3e52b53f7a8bf548560446c6d3d

2 years agoFor CLI .sha3sum, emit warning to stderr for any invalidly encoded text fields.
larrybr [Tue, 6 Dec 2022 18:48:37 +0000 (18:48 +0000)] 
For CLI .sha3sum, emit warning to stderr for any invalidly encoded text fields.

FossilOrigin-Name: 8e833ecc81367658e81acd1d3a0242ab954a62d6f719af56f1d185656d0b73e6

2 years agoHave sqlite3_stmt_scanstatus_v2() return an NCYCLE value for all loops, not just...
dan [Tue, 6 Dec 2022 18:48:06 +0000 (18:48 +0000)] 
Have sqlite3_stmt_scanstatus_v2() return an NCYCLE value for all loops, not just virtual tables ones. The value returned is the sum of the NCYCLE counts for the various opcodes that move or read data from the table or index cursor associated with the loop.

FossilOrigin-Name: 9499b2f51e8174c6b8a67840c92ba23b7dd1dc8dc2b91fca0c5dc07b71662149

2 years agoClear a few more -Wall warnings and simplify dynaprompt feature keep/omit macros.
larrybr [Tue, 6 Dec 2022 17:59:05 +0000 (17:59 +0000)] 
Clear a few more -Wall warnings and simplify dynaprompt feature keep/omit macros.

FossilOrigin-Name: 540e895d877fab1ea138786e56923a202018f68c78199a89adfc296c75735b30

2 years agoSimplified experimental changes to promote the use of co-routines. Less
drh [Tue, 6 Dec 2022 15:24:05 +0000 (15:24 +0000)] 
Simplified experimental changes to promote the use of co-routines.  Less
cruft than the coroutines-exp1 branch, but still does not work.  Checked in
as a work-in-progress.

FossilOrigin-Name: e2318a30bf6ad2aeb4c4cb29661bc24ff78eb51bf07decc4b8da1ecac0015ef0

2 years agoFix compiler warnings in the new dynamic continuation prompt logic of
drh [Tue, 6 Dec 2022 15:11:13 +0000 (15:11 +0000)] 
Fix compiler warnings in the new dynamic continuation prompt logic of
the CLI.

FossilOrigin-Name: 0d80500d358fa1c9b5867c2c8250d278ba813bf2ad81bb0bc3f820a71489b374

2 years agoIn the unix backend, when implementing the defenses against small file
drh [Tue, 6 Dec 2022 13:12:33 +0000 (13:12 +0000)] 
In the unix backend, when implementing the defenses against small file
descriptors, delete a file just created if it was opened with
O_EXCL|O_CREAT so that it can be created again the next time through the
loop.  Fix for the problem described by
[forum:/forumpost/699af709ab3a8ccf|forum post 699af709ab3a8ccf].

FossilOrigin-Name: c0cfe0582add87981826d124a0763482f51fae4b105b5a970dd56919f1d04d60

2 years agoSupport an SQLITE_SCANSTAT_NCYCLE statistic for "CO-ROUTINE" elements.
dan [Tue, 6 Dec 2022 11:41:05 +0000 (11:41 +0000)] 
Support an SQLITE_SCANSTAT_NCYCLE statistic for "CO-ROUTINE" elements.

FossilOrigin-Name: d3f6a207fd1b3f53688fa1ff35eb71e1c5bcc4115c0c35bb187d22ccf7100b71

2 years agoJS vtables: add infrastructure related to accessing and modifying sqlite3_index_info.
stephan [Tue, 6 Dec 2022 11:21:46 +0000 (11:21 +0000)] 
JS vtables: add infrastructure related to accessing and modifying sqlite3_index_info.

FossilOrigin-Name: 0d77c348039926c24e0fb50a7dc7e4b62895cd201c021f8e29832917e4b8b09f

2 years agoRemove deprecated symbol sqlite3.opfs.OpfsDb, which was renamed to sqlite3.oo1.OpfsDb...
stephan [Tue, 6 Dec 2022 09:49:04 +0000 (09:49 +0000)] 
Remove deprecated symbol sqlite3.opfs.OpfsDb, which was renamed to sqlite3.oo1.OpfsDb on 2022-11-29.

FossilOrigin-Name: 0ce51bed65d5e430364f74bf959fb76c42ac5eec0769490231d8c8110a1f388c

2 years agoRename wasm.cstringToJs() to wasm.cstrToJs() for consistency with other wasm.cstr...
stephan [Tue, 6 Dec 2022 08:46:39 +0000 (08:46 +0000)] 
Rename wasm.cstringToJs() to wasm.cstrToJs() for consistency with other wasm.cstr... APIs.

FossilOrigin-Name: cbf483ea0ba3e6dc08ad7ed654380f818544b4c3cedfdb8aa848a83298268ceb

2 years agoAdd wasm.cArgvToJs() to support sqlite3_module::xConnect().
stephan [Tue, 6 Dec 2022 08:39:17 +0000 (08:39 +0000)] 
Add wasm.cArgvToJs() to support sqlite3_module::xConnect().

FossilOrigin-Name: c3ebdccf94d5e63c229bf91056c08052d78732e663334070ef3b0ef6fb4bfb8f

2 years agoMinor internal JS code/docs cleanups.
stephan [Tue, 6 Dec 2022 08:21:23 +0000 (08:21 +0000)] 
Minor internal JS code/docs cleanups.

FossilOrigin-Name: 21331bdd36a91b07a687ffadce392dcf2ccd0fd824b35d9dd027d4289a40fc96

2 years agoMerge trunk into wasm-vtab branch.
stephan [Tue, 6 Dec 2022 06:21:02 +0000 (06:21 +0000)] 
Merge trunk into wasm-vtab branch.

FossilOrigin-Name: d106edb956bbe22bddc2c6e5bcdf4fb8f797794c725c2e359e3fa4b31d881843

2 years agoMinor test tweaks.
stephan [Tue, 6 Dec 2022 06:16:11 +0000 (06:16 +0000)] 
Minor test tweaks.

FossilOrigin-Name: f902f3b2c79d6c699ead1efeb1426e1e0f4ac709afdff88be1de62f34f3d5ccc

2 years agoAdd a demonstration sqlite3_vtab/module implemented in JS, based on ext/misc/template...
stephan [Tue, 6 Dec 2022 06:09:03 +0000 (06:09 +0000)] 
Add a demonstration sqlite3_vtab/module implemented in JS, based on ext/misc/templatevtab.c. Add oo1.selectArrays() and selectObjects().

FossilOrigin-Name: 60482c97e02bc4cafefef281be0cf0bc8c5c53232162829c137f3f7a80cdc534

2 years agoAdd optional feature: A CLI continuation prompt which reflects open lexemes and paren...
larrybr [Tue, 6 Dec 2022 05:31:20 +0000 (05:31 +0000)] 
Add optional feature: A CLI continuation prompt which reflects open lexemes and parens, similarly to PG shell.

FossilOrigin-Name: f41f18b1c3c950565ee3c237aebb51cfc3241813c6425813a8217e07aa0153a6

2 years agoAdd optional feature: A CLI continuation prompt which reflects open lexemes and paren... dynamic_prompt
larrybr [Tue, 6 Dec 2022 05:09:51 +0000 (05:09 +0000)] 
Add optional feature: A CLI continuation prompt which reflects open lexemes and parens, similarly to PG shell.

FossilOrigin-Name: dac2ddc287db7a68d0cd49b785060f62290868fbb1aa2ee09e54d3b1acfbf55f

2 years agoEnhance the sqlite3_stmt_scanstatus() API and add sqlite3_stmt_scanstatus_v2(). For...
dan [Mon, 5 Dec 2022 19:16:23 +0000 (19:16 +0000)] 
Enhance the sqlite3_stmt_scanstatus() API and add sqlite3_stmt_scanstatus_v2(). For creation of enhanced query performance reports.

FossilOrigin-Name: 4893b4e3eafc7c9c22b24717f90a585862203f987cf108b079ce6e946093e675

2 years agoUpdate comments in sqlite.h.in to account for sqlite3_stmt_scanstatus_v2(). scanstatus_v2
dan [Mon, 5 Dec 2022 18:52:12 +0000 (18:52 +0000)] 
Update comments in sqlite.h.in to account for sqlite3_stmt_scanstatus_v2().

FossilOrigin-Name: 009462f2344b1f468cf9440343a47fec68d783a2bfb4fa6168bb227ec910b918

2 years agoMerge latest trunk changes.
dan [Mon, 5 Dec 2022 18:26:37 +0000 (18:26 +0000)] 
Merge latest trunk changes.

FossilOrigin-Name: 1a72777b1279f74f212fb2f675a4594a238e5d28f048879d7f5ad5287673c3c4

2 years agoAdd loops and rows counters to "USE TEMP B-TREE FOR ORDER BY" records. Also fix the...
dan [Mon, 5 Dec 2022 18:19:56 +0000 (18:19 +0000)] 
Add loops and rows counters to "USE TEMP B-TREE FOR ORDER BY" records. Also fix the sqliteHwtime() function so that it returns a 64-bit value.

FossilOrigin-Name: 41a0e05e8c0fca3b803fe4bd017a157c172b2ca518356a2a4d4ed4f12d01a1e3

2 years agoRemove two features of jaccwabyt which were fundamentally flawed, along with approx...
stephan [Mon, 5 Dec 2022 15:05:46 +0000 (15:05 +0000)] 
Remove two features of jaccwabyt which were fundamentally flawed, along with approx. 250 lines of unit tests which heavily relied on them. Thankfully, none of the sqlite3.js-level code used those bits.

FossilOrigin-Name: a190abc307847174f36421eaa3f47ef349c6f84a2bb35857fa64f64bbe722708

2 years agoJaccwabyt (JS) doc updates.
stephan [Mon, 5 Dec 2022 14:32:35 +0000 (14:32 +0000)] 
Jaccwabyt (JS) doc updates.

FossilOrigin-Name: a329a809b5da135a9c251e4d5f637d45d01d0248110ac05f2ad8f01d9df38c64

2 years agoAdd test case that should have been part of previous commit.
dan [Mon, 5 Dec 2022 14:20:54 +0000 (14:20 +0000)] 
Add test case that should have been part of previous commit.

FossilOrigin-Name: dc7dd2d3e50e7cc474b22f1b5b219da32bcd7aa1ba56864d1dbcf0d3a6fa06f2

2 years agoExpose sqlite3_get/set_auxdata() to wasm. Minor test app CSS tweaks.
stephan [Mon, 5 Dec 2022 14:13:55 +0000 (14:13 +0000)] 
Expose sqlite3_get/set_auxdata() to wasm. Minor test app CSS tweaks.

FossilOrigin-Name: 44659ad32a9fe6363badfc5dbb0bd51d6fb2ee1c8aa47b71e9cf3dbd631fde9e