]> git.ipfire.org Git - thirdparty/sqlite.git/log
thirdparty/sqlite.git
2 years agoOptimize queries against fts5vocab(row) tables that do use the "cnt" column. fts5-delay-tokenizer
dan [Tue, 14 May 2024 19:41:19 +0000 (19:41 +0000)] 
Optimize queries against fts5vocab(row) tables that do use the "cnt" column.

FossilOrigin-Name: 96a591c202cb4218999ece3de063bf466b6fd81bd23383893f3913ecb52dda36

2 years agoAvoid calculating the value of the "cnt" column for fts5vocab(row) queries that do...
dan [Tue, 14 May 2024 19:09:54 +0000 (19:09 +0000)] 
Avoid calculating the value of the "cnt" column for fts5vocab(row) queries that do not use it.

FossilOrigin-Name: c0c91e306c252ce1b398e92ab958e2a3de0fc43db05cfdffc548380654fc9f13

2 years agoHave fts5 tables delay initializing the tokenizer until it is first used in all cases...
dan [Tue, 14 May 2024 17:16:09 +0000 (17:16 +0000)] 
Have fts5 tables delay initializing the tokenizer until it is first used in all cases where the tokenizer is not "trigram".

FossilOrigin-Name: ca4fdcb8ae95d2a61236b949f852d2bf25ea2dbbff7eedafbd8eb84e8fd96687

2 years agoAllow existing fts5 tables to be dropped even if the associated tokenizer is not...
dan [Mon, 13 May 2024 20:06:08 +0000 (20:06 +0000)] 
Allow existing fts5 tables to be dropped even if the associated tokenizer is not available.

FossilOrigin-Name: 69ef47eeee8b53684c321393be34f03600694fbc86377f8720ff80307846aff6

2 years agoAdd tests to bestindexC.test. No changes to code.
dan [Sat, 11 May 2024 16:44:56 +0000 (16:44 +0000)] 
Add tests to bestindexC.test. No changes to code.

FossilOrigin-Name: 58d938c0e03c3c8d8796c537f89e69734ba6263d60ba37e345259cb6fdffbea5

2 years agoFix aggregate function processing to correctly deal with OOMs inside of
drh [Fri, 10 May 2024 18:24:15 +0000 (18:24 +0000)] 
Fix aggregate function processing to correctly deal with OOMs inside of
sqlite3ParserAddCleanup().
(dbsqlfuzz b2d11ca70e55ee8bde48ae0b53fa3e9355812f95).
Also add improved testing support by causing sqlite3FaultSim(300) to
simulate an OOM inside of sqlite3ParserAddCleanup() and by adding
improved fault-sim support to the CLI.

FossilOrigin-Name: c6fd70b3c23fa00eaac9286d4a67e5c8ac76f926c11c220250c34032647bedc1

2 years agoAdd a test for the fixes on this branch. cleanup-testing
dan [Fri, 10 May 2024 18:15:03 +0000 (18:15 +0000)] 
Add a test for the fixes on this branch.

FossilOrigin-Name: 716088d673b80446ea5f9cb83f6aad8a9ea2ec769d4894e02ab916930e4cf169

2 years agoThe sqlite3FaultSim(300) error from [1e8863909ac369e5] must be treated as
drh [Fri, 10 May 2024 18:10:34 +0000 (18:10 +0000)] 
The sqlite3FaultSim(300) error from [1e8863909ac369e5] must be treated as
an OOM, since it simulates an OOM.  Also fix deferred deletion of Expr objects
from [a53bdd311c4154fd] so that it does not corrupt the AST if an OOM occurs.

FossilOrigin-Name: c623d9a51e0ae6b4a8e1186714d14e7aa3df55246e123323481f07f07749dea5

2 years agoImprovements to the ".testctrl fault_install" command in the CLI.
drh [Fri, 10 May 2024 17:05:24 +0000 (17:05 +0000)] 
Improvements to the ".testctrl fault_install" command in the CLI.

FossilOrigin-Name: 48b34ded82d0cec8a7dd67431f057b320b8c459b1b78c0fbf79bc2b355e85d4e

2 years agoAdd an sqlite3FaultSim(300) call to the sqlite3ParserAddCleanup() routine
drh [Fri, 10 May 2024 16:28:35 +0000 (16:28 +0000)] 
Add an sqlite3FaultSim(300) call to the sqlite3ParserAddCleanup() routine
for more precise simulation of OOM errors in that routine.

FossilOrigin-Name: 1e8863909ac369e5e62e82e53b6e5a7cc6794100cef281ede00b0bb9bbc28594

2 years agoSquelch two OMIT-flag-related warnings reported in [forum:388243d9882067a9|forum...
stephan [Fri, 10 May 2024 09:26:53 +0000 (09:26 +0000)] 
Squelch two OMIT-flag-related warnings reported in [forum:388243d9882067a9|forum post 388243d9882067a9]. No functional changes.

FossilOrigin-Name: 1d6716054d7fc50df237996c3db30e5fb8e32acbf48cb8b9af472360515945c4

2 years agoAdd a maintenance-reminder comment explaining [dc58ed65492857].
stephan [Thu, 9 May 2024 18:39:54 +0000 (18:39 +0000)] 
Add a maintenance-reminder comment explaining [dc58ed65492857].

FossilOrigin-Name: 857f5d7fadce1cfe30b3468826f403f736cfecacb1eb6d3b858b01ea3cfd6ffc

2 years agoReformulate a for-in loop to a for loop in wasm.xWrap() to work around a downstream...
stephan [Thu, 9 May 2024 18:00:14 +0000 (18:00 +0000)] 
Reformulate a for-in loop to a for loop in wasm.xWrap() to work around a downstream framework-level misbehavior, as reported in [forum:b549992634b55104|forum post b549992634b55104].

FossilOrigin-Name: dc58ed654928574ef254af289bd21c654c587aac80aea36ab96772c35d4ca754

2 years agoRename a shadowed local var, as reported in [forum:2ba65af3148585cf|forum post 2ba65a...
stephan [Wed, 8 May 2024 17:57:45 +0000 (17:57 +0000)] 
Rename a shadowed local var, as reported in [forum:2ba65af3148585cf|forum post 2ba65af31]. No functional changes.

FossilOrigin-Name: d030c87c4d410e9ca2b90ec7cb63e752f4490c60e2feac84f233861593142c7d

2 years agoFix a hyperlink typo in session documentation.
drh [Wed, 8 May 2024 11:51:56 +0000 (11:51 +0000)] 
Fix a hyperlink typo in session documentation.

FossilOrigin-Name: 42d67c6fed3a5f21d7b71515aca471ba61d387e620022735a2e7929fa3a237cf

2 years agoFix bug in test script sessionconflict.test.
dan [Tue, 7 May 2024 19:45:05 +0000 (19:45 +0000)] 
Fix bug in test script sessionconflict.test.

FossilOrigin-Name: e29decb8b1991bb586f41fd74bbaa4d6c4bd63e22617145828b2500d697d7869

2 years agoEnsure successive scans of pragma virtual tables return consistent rowids.
dan [Tue, 7 May 2024 17:58:07 +0000 (17:58 +0000)] 
Ensure successive scans of pragma virtual tables return consistent rowids.

FossilOrigin-Name: 6838bf3ac130c5862f5fbc718b3e49ece154fa840b6539af2616cffa31e73808

2 years agoFix a compilation error in test/lemon-test01.y, reported in [forum:f0ad095705|forum...
stephan [Tue, 7 May 2024 13:20:24 +0000 (13:20 +0000)] 
Fix a compilation error in test/lemon-test01.y, reported in [forum:f0ad095705|forum post f0ad095705].

FossilOrigin-Name: 576b68c8b5132eb8901789b7fafb37e5ad7a00c1c7154090b42ddc5934ac0396

2 years agoWhen extracting links from sqlar archives, clobber any existing file or link, and...
dan [Mon, 6 May 2024 20:21:31 +0000 (20:21 +0000)] 
When extracting links from sqlar archives, clobber any existing file or link, and do not call utimes() to set the timestamp - it looks through the link and operates on the target.

FossilOrigin-Name: 2bf8c3f99ad8b74f707d17272fa12b674bec66082d3e8349ebef3dac42ba0782

2 years agoOmit redundant unary + operators from the AST.
drh [Mon, 6 May 2024 20:18:30 +0000 (20:18 +0000)] 
Omit redundant unary + operators from the AST.

FossilOrigin-Name: f81cc149e5e308785502b36e83eaaf3d31c72520793e0596d5496abd70f9cda8

2 years agoAvoid unnecessary recursion in sqlite3ExprDeleteNN(). This complicates the
drh [Mon, 6 May 2024 19:04:46 +0000 (19:04 +0000)] 
Avoid unnecessary recursion in sqlite3ExprDeleteNN().  This complicates the
code, but it is needed to prevent nuisance "stack overflow" reports from
OSSFuzz while it is running the latest ASAN.

FossilOrigin-Name: 70abc144ca90a58ea25dc2d90683545246c084d961215c20ec070b0abe640371

2 years agoAdd new sessions API sqlite3changegroup_add_change().
dan [Mon, 6 May 2024 17:55:19 +0000 (17:55 +0000)] 
Add new sessions API sqlite3changegroup_add_change().

FossilOrigin-Name: 5eaab43ce48bb8d710f784ecd6aa9a4b3e708b44b0f7e49daf66a3f8bc2b9873

2 years agoEdit comments in sqlite3session.h. changegroup-add-change
dan [Mon, 6 May 2024 17:32:26 +0000 (17:32 +0000)] 
Edit comments in sqlite3session.h.

FossilOrigin-Name: 49f84878e21f85d44d8429cdc2908f87383e59737e1af3fdbccf0c276d883567

2 years agoAdd tests for sqlite3changegroup_add_change().
dan [Mon, 6 May 2024 17:21:23 +0000 (17:21 +0000)] 
Add tests for sqlite3changegroup_add_change().

FossilOrigin-Name: 9d67bedc20c3a59e5488f0eaea6a6611940a9cb63f7cf5e687b061cb5d510943

2 years agoFix problem in sqlar_uncompress() when being used to extract symbolic links.
dan [Mon, 6 May 2024 11:27:47 +0000 (11:27 +0000)] 
Fix problem in sqlar_uncompress() when being used to extract symbolic links.

FossilOrigin-Name: 4d90c3f179a3d7355b6b0202faf56f0be4be56986920576e528208cb84daa4af

2 years agoAdd comment to the test/lemon-test01.y file indicating that it does not work
drh [Sun, 5 May 2024 10:00:02 +0000 (10:00 +0000)] 
Add comment to the test/lemon-test01.y file indicating that it does not work
and is for historical reference only.

FossilOrigin-Name: 9bdf73a8d4a3b4a72f2882252f9ed29a6f1a26d3f50c071f27455bcf10458c4b

2 years agoAdd new sessions API sqlite3changegroup_add_change().
dan [Sat, 4 May 2024 21:10:24 +0000 (21:10 +0000)] 
Add new sessions API sqlite3changegroup_add_change().

FossilOrigin-Name: 73647db1ddfdaf40cbf18f1e47c10b4a906489f6d34d7667f0f2ff532f1eb37c

2 years agoAdd test cases to test/in7.test. No code changes.
dan [Sat, 4 May 2024 16:50:47 +0000 (16:50 +0000)] 
Add test cases to test/in7.test. No code changes.

FossilOrigin-Name: 8c3086f9fe502dfc4a1fa610a23794fb037721df29dc5d2126cfb749a9d44a50

2 years agoAssume that an SQL function is able to return a subtype if any of its
drh [Sat, 4 May 2024 15:10:37 +0000 (15:10 +0000)] 
Assume that an SQL function is able to return a subtype if any of its
arguments are SQL functions that are able to return subtypes.  This closes
a corner-case hole in the patch at [ba789a7804ab96d8].

FossilOrigin-Name: b36d499e4cdb41a5d7e44a1c4347a059d7654f85ade9c5c04d18ac95ddc09fde

2 years agoAssume that a function is able to return a subtype if either (1) it is itself func-rw-subtype
drh [Sat, 4 May 2024 15:04:45 +0000 (15:04 +0000)] 
Assume that a function is able to return a subtype if either (1) it is itself
marked with SQLITE_RESULT_SUBTYPE, or (2) one of its arguments is a function
that is able to return a subtype.  This check-in backs out the code changes
from the previous two on this same branch, but keeps the test cases from
the previous two.

FossilOrigin-Name: f16b200f25a0ec59ad765d254d81c3ffdba21f79e6e82807a7b80d00627952e2

2 years agoFunctions that pass through the sqlite3_value of one of their arguments must
drh [Sat, 4 May 2024 11:31:34 +0000 (11:31 +0000)] 
Functions that pass through the sqlite3_value of one of their arguments must
also be marked as SQLITE_RESULT_SUBTYPE, in case one of their arguments has
a subtype.

FossilOrigin-Name: 2f9fba931d9f80b3d5dffb175180098756bccc6a8f665d7aaf8826970ab60d72

2 years agoThe coalesce(), ifnull(), and iif() functions pass through subtype values
drh [Fri, 3 May 2024 19:35:43 +0000 (19:35 +0000)] 
The coalesce(), ifnull(), and iif() functions pass through subtype values
from their arguments, and hence need to have the SQLITE_RESULT_SUBTYPE flag
set.  This fixes an corner-case for the patch at [ba789a7804ab96d8].

FossilOrigin-Name: cdd1610c44876623e629bb8e5779ea689e6d23c545552b088eca63ad2d1cf8da

2 years agoFix a problem with queries that use "IN(...) ORDER BY ... NULLS LAST" or similar...
dan [Thu, 2 May 2024 19:22:23 +0000 (19:22 +0000)] 
Fix a problem with queries that use "IN(...) ORDER BY ... NULLS LAST" or similar introduced by [d7648e21605a0b38].

FossilOrigin-Name: 26b2d9390f1273ee0e3f3c96f6bc5bf0e9c1dcfd0d9ecd993dba487ef5a07f7e

2 years agoAvoid an assert failure accessible only when internal testing features are enabled...
dan [Thu, 2 May 2024 18:16:23 +0000 (18:16 +0000)] 
Avoid an assert failure accessible only when internal testing features are enabled. dbsqlfuzz crash-66abacda6bca6bd531e25595e8c8068e2c710326.txt.

FossilOrigin-Name: fbc446daac761dd1b66a85c9b61e1d5af194a8fd665600c43a874da38cc6ec10

2 years agoFix a case where the recovery extension might write uninitialized data to the recover...
dan [Thu, 2 May 2024 17:46:52 +0000 (17:46 +0000)] 
Fix a case where the recovery extension might write uninitialized data to the recovered database.

FossilOrigin-Name: 8519b4d0393ed17eed06bceffbc891fe8cae0bc1d466a79eba0602ef46b07c56

2 years agoAvoid an OP_Next in cases where an IN(...) query against a UNIQUE index may return...
dan [Thu, 2 May 2024 14:48:58 +0000 (14:48 +0000)] 
Avoid an OP_Next in cases where an IN(...) query against a UNIQUE index may return at most 1 row.

FossilOrigin-Name: d7648e21605a0b381b1935a47e5a77bdfacc4cc96f03d6bb7956f8f4e6a40648

2 years agoFix the CREATE TABLE performance issue described by
drh [Thu, 2 May 2024 12:14:31 +0000 (12:14 +0000)] 
Fix the CREATE TABLE performance issue described by
[forum:/forumpost/4cf69794d9dfff7c|forum thread 4cf69794d9dfff7c] in two
different ways:  (1) Omit the call to PRAGMA integrity_check('X') that was
being done after CREATE TABLE "X" because the result was being ignored and
the integrity_check was not doing anything other than burning CPU cycles.
(2) Do not interpret the argument to PRAGMA integrity_check as a number if it
is in fact a string that looks like a number.

FossilOrigin-Name: 71f08b912251c8a3ac1bd8e344903336648e4187f7493f8c126e60b3b51b9f09

2 years agoAdd a test case to the fix to PRAGMA integrity_check in the previous check-in. faster-create
drh [Thu, 2 May 2024 12:00:36 +0000 (12:00 +0000)] 
Add a test case to the fix to PRAGMA integrity_check in the previous check-in.

FossilOrigin-Name: 39a57b596d309d9e2d4c59409fe5d36e0665781ce0307d157ff8b6e883161bbb

2 years agoDo not accept a string that looks like a number used as an argument to
drh [Thu, 2 May 2024 11:52:31 +0000 (11:52 +0000)] 
Do not accept a string that looks like a number used as an argument to
PRAGMA integrity_check as a number.  Treat it as a table name that just
happens to look like a number.

FossilOrigin-Name: b04e7a23478f1012e501a810f3e09cca81a66e802f5f72cae80c81120174e2cb

2 years agoOmit the OP_SqlExec to "PRAGMA integrity_check" added by [348fa7aaf7958b3f]
drh [Thu, 2 May 2024 11:51:26 +0000 (11:51 +0000)] 
Omit the OP_SqlExec to "PRAGMA integrity_check" added by [348fa7aaf7958b3f]
because it is a no-op.  Even if the integrity_check failes, the CREATE TABLE
is stull successful.  The OP_SqlExec just burns CPU cycles for no reason.

FossilOrigin-Name: 532795acd1c800751737fe70148f9ae691e9cf11b836577f8538421d24cab2fe

2 years agoAvoid an OP_Next in cases where an IN(...) query against a UNIQUE index may return... unique-in-opt
dan [Wed, 1 May 2024 19:48:24 +0000 (19:48 +0000)] 
Avoid an OP_Next in cases where an IN(...) query against a UNIQUE index may return at most 1 row.

FossilOrigin-Name: 560f64157d2fe40e107582eebb6526185c9c43305e364f4132e182dbec5b210a

2 years agoFix another problem in the recovery extension where a corrupt sqlite_schema table...
dan [Wed, 1 May 2024 16:25:46 +0000 (16:25 +0000)] 
Fix another problem in the recovery extension where a corrupt sqlite_schema table could lead to excessive memory consumption.

FossilOrigin-Name: 1c7e33a8aa0e6122b5ef606e4a7d95e8ecd9440216d4b099fe8f2a40653422be

2 years agoFix a problem causing the recovery extension to use excessive memory and CPU time...
dan [Wed, 1 May 2024 14:42:20 +0000 (14:42 +0000)] 
Fix a problem causing the recovery extension to use excessive memory and CPU time in some cases.

FossilOrigin-Name: 8de85170d53e1d2a2abe14508a222377b9493e25f3174b8f0f773427deb8df26

2 years agoAvoid 32-bit overflow when calculating ncycle for ".scanstats vm".
dan [Tue, 30 Apr 2024 19:34:15 +0000 (19:34 +0000)] 
Avoid 32-bit overflow when calculating ncycle for ".scanstats vm".

FossilOrigin-Name: 2858efa06d4fc7b412b892f35f5e9a766b467b4a5b74d602a030d25443f9efb4

2 years agoFix issues in [/info/1e227ad9f413227f|LIMIT/OFFSET support for virtual tables].
drh [Fri, 26 Apr 2024 19:10:15 +0000 (19:10 +0000)] 
Fix issues in [/info/1e227ad9f413227f|LIMIT/OFFSET support for virtual tables].
The first problem was reported by
[forum:/forumpost/c243b8f856|forum post c243b8f856].  That report prompted
an enhancement to the generate_series() (also included in this merge) which
in turn identified other similar issues.

FossilOrigin-Name: 5f6c079d847e3664ec5acaf1b3e989efe0d548c211ae4a18936162b36df89065

2 years agoInternal JS doc touchups. No functional changes.
stephan [Fri, 26 Apr 2024 18:42:50 +0000 (18:42 +0000)] 
Internal JS doc touchups. No functional changes.

FossilOrigin-Name: 626b997b4e727554d7ec8b60fb37b2a94cb861a87325da4ae484bd9aa8961ca5

2 years agoAdditional internal docs in the wasm utilities.
stephan [Fri, 26 Apr 2024 18:24:23 +0000 (18:24 +0000)] 
Additional internal docs in the wasm utilities.

FossilOrigin-Name: 5a2245a9ebae6d23cd343e46b9d730f66ec4d5ffc91b83ed11a0fbd2194ad807

2 years agoAllow virtual table implementations to handle OFFSET but not LIMIT, but not LIMIT... vtab-limit-fix
dan [Fri, 26 Apr 2024 18:13:11 +0000 (18:13 +0000)] 
Allow virtual table implementations to handle OFFSET but not LIMIT, but not LIMIT but not OFFSET.

FossilOrigin-Name: 90e5c8226a695e838e8c1703a9b8598e654d216799e8806c4d1a1f20c28c6486

2 years agoHave where.c ignore any plan from a virtual table that tries to use LIMIT/OFFSET...
dan [Fri, 26 Apr 2024 17:19:59 +0000 (17:19 +0000)] 
Have where.c ignore any plan from a virtual table that tries to use LIMIT/OFFSET without also using all WHERE constraints.

FossilOrigin-Name: 7d30596496c6a7a37b925f13d8d94d5de224ec31bb86594fa4cc07b10082e776

2 years agoFurther fixes and improvements to the generate_series() enhancements on
drh [Fri, 26 Apr 2024 17:09:33 +0000 (17:09 +0000)] 
Further fixes and improvements to the generate_series() enhancements on
this branch.

FossilOrigin-Name: b7d9bd7ee2f4100608063fdf7648f290351465d393bc876a89704f643358853e

2 years agoUse hex flag masks rather than decimals in ext/misc/series.c.
drh [Fri, 26 Apr 2024 14:36:28 +0000 (14:36 +0000)] 
Use hex flag masks rather than decimals in ext/misc/series.c.

FossilOrigin-Name: a94e2cd02873c283d46bf6c21d0306ad454881d7882bb167d043cc79f79a2396

2 years agoFix a problem allowing a LIMIT constraint to be passed to a virtual table in cases...
dan [Fri, 26 Apr 2024 14:32:58 +0000 (14:32 +0000)] 
Fix a problem allowing a LIMIT constraint to be passed to a virtual table in cases where there exist WHERE terms that cannot also be passed.

FossilOrigin-Name: 72c8ed9698dd2aadee7b84fd293e8306233f0fe5b5b5731687482444fdf461c7

2 years agoFix handling of LIMIT and OFFSET in virtual tables that are part of
drh [Fri, 26 Apr 2024 13:38:43 +0000 (13:38 +0000)] 
Fix handling of LIMIT and OFFSET in virtual tables that are part of
a compound SELECT.

FossilOrigin-Name: 40421c1c4ed5bb1ed79ad7ee37cb5a4f0b7864c1eb94abd8ee357ab2202cad30

2 years agoEnhance the generated_series() table-valued-function to respond to
drh [Fri, 26 Apr 2024 13:30:48 +0000 (13:30 +0000)] 
Enhance the generated_series() table-valued-function to respond to
LIMIT and OFFSET.  Use this to add new test cases for LIMIT and OFFSET
on virtual tables in a compound SELECT.

FossilOrigin-Name: 408d47ecaa3b906d0886f76a22b76339ec5878270ffe8d1838c74de09c29a33e

2 years agoAdd test demonstrating the problem at [forum:/forumpost/c243b8f856|forum post c243b8f...
dan [Fri, 26 Apr 2024 12:01:17 +0000 (12:01 +0000)] 
Add test demonstrating the problem at [forum:/forumpost/c243b8f856|forum post c243b8f856]. No fix yet.

FossilOrigin-Name: 1685495c0a00238c9c92cce01af8108204a2fad22433ed3e7bba3c9da9ee0766

2 years agoFix the TreeView display of a LIMIT clause on a compound query. Debugging
drh [Fri, 26 Apr 2024 11:32:50 +0000 (11:32 +0000)] 
Fix the TreeView display of a LIMIT clause on a compound query.  Debugging
code only - not part of production builds.

FossilOrigin-Name: 38f1e5ce4eedd59fbeb0a0d676d26dfe8a3313189ab9b9e4a5a1ed6721b73a14

2 years agoImprovement to the way that affinity is determined for columns of a
drh [Thu, 25 Apr 2024 23:26:11 +0000 (23:26 +0000)] 
Improvement to the way that affinity is determined for columns of a
compound subquery.  The affinity is the affinity of the left-most
arm of the compound subquery that has an affinity other than NONE, adjusted
to accommodate the data types coming out of the other arms.

FossilOrigin-Name: e6df846f36209bac3e420dd80ce2bbbd87ab7a20b8063fce05f78a3c7ab6027e

2 years agoFurther improvements to the computation of affinity for compound subqueries: compound-subquery-affinity
drh [Thu, 25 Apr 2024 17:52:10 +0000 (17:52 +0000)] 
Further improvements to the computation of affinity for compound subqueries:
make sure that the selected affinity is compatible with a literal values in
arms to the left of the arm that is used to determine affinity.

FossilOrigin-Name: bbdf22e3d989f42b963f1f2f219dfeac11db786f17ac27097ab72f72e7638a2a

2 years agoBack out the previous change on this branch. In its place: Determine the
drh [Thu, 25 Apr 2024 16:55:53 +0000 (16:55 +0000)] 
Back out the previous change on this branch.  In its place:  Determine the
affinity of a subquery by the left-most arm of the subquery that has an
affinity other than NONE.  In other words, scan from left to right looking
for an arm of the compound subquery with an affinity of BLOB, TEXT, INTEGER,
or REAL and pick the first one found.  Or stay with NONE if no arm has a
defined affinity.  Test cases added.

FossilOrigin-Name: b8ec8511b1968bbc1472b3e2e21f0fef1d5becebeb31f9d13ee3ca9e13abb1e5

2 years agowasm: add a makefile comment about the static sqlite3.h/c version info injected into...
stephan [Thu, 25 Apr 2024 06:52:19 +0000 (06:52 +0000)] 
wasm: add a makefile comment about the static sqlite3.h/c version info injected into the JS files possibly differing from the runtime-emited version info when a user provides their own sqlite3.c.

FossilOrigin-Name: d99a01a0f6e1f70f70c9a0625aeaa8a8015eba352bcfb3978eafca6df10ba5a8

2 years agoAn experimental minor tweak to the way affinities are computed for compound
drh [Wed, 24 Apr 2024 19:49:52 +0000 (19:49 +0000)] 
An experimental minor tweak to the way affinities are computed for compound
subqueries, when the actual affinity is ambiguous.

FossilOrigin-Name: 779723ad792ca24dd07b7a1425303c76b44bb173e718a33c26c9f7644e9912cb

2 years agoIf a RETURNING clause contains a subquery that references the table that is
drh [Wed, 24 Apr 2024 16:36:37 +0000 (16:36 +0000)] 
If a RETURNING clause contains a subquery that references the table that is
being updated in the statement that includes the RETURNING clause, then mark
the subquery as correlated sot hat it is recomputed for each result and not
just computed once and reused.  See
[forum:/forumpost/2c83569ce8945d39|forum post 2c83569ce8945d39].

FossilOrigin-Name: 9ea6bcc8fdf6aadb756ec5bcaaa7af314167f8973bdd32fd23f83bd964f0c21e

2 years agoFix a case where a corrupt stat4 record could go unrecognized due to integer overflow.
dan [Wed, 24 Apr 2024 14:18:20 +0000 (14:18 +0000)] 
Fix a case where a corrupt stat4 record could go unrecognized due to integer overflow.

FossilOrigin-Name: 240a4a48b27a2b1070bba6d7da76a8df8e3f1808e262045d7ad2cf910df08f3d

2 years agoAdd comments linking the assert() added in [cef4d9e3ba586735] to the places
drh [Wed, 24 Apr 2024 11:51:51 +0000 (11:51 +0000)] 
Add comments linking the assert() added in [cef4d9e3ba586735] to the places
where the precondition that the assert() tests are actually required.

FossilOrigin-Name: 6f0e7e195275aeb4aefd9da20348af35e3ef7f0a6b2768a34824daeace16eff1

2 years agoAvoid slowdown when exprNodeIsConstant() is called on deeply nested SQL functions.
dan [Wed, 24 Apr 2024 11:40:47 +0000 (11:40 +0000)] 
Avoid slowdown when exprNodeIsConstant() is called on deeply nested SQL functions.

FossilOrigin-Name: 1c0b0345451853846076467831884f951c92ec79476be40ce7f7b766fd2d8fc1

2 years agoEnsure that temporary SrcItem objects created by trigger processing have
drh [Wed, 24 Apr 2024 11:21:27 +0000 (11:21 +0000)] 
Ensure that temporary SrcItem objects created by trigger processing have
either SrcItem.zName or SrcItem.pSelect defined.  Every SrcItem should have
one or the other.

FossilOrigin-Name: cef4d9e3ba586735598f03eb5e8f29072c9e6f62b0d34ddd2fb3ed1795f6e21c

2 years agoRemove an undocumented feature from the JS Worker1.open API because it relies on...
stephan [Wed, 24 Apr 2024 06:43:17 +0000 (06:43 +0000)] 
Remove an undocumented feature from the JS Worker1.open API because it relies on broken behavior which has no VFS-agnostic workaround.

FossilOrigin-Name: 3a640038c70c8511e7051af83aa35d163c4f96f05c5064cffd3e4e2e63cd44a9

2 years agoFix a problem with vector IN operators used with an index where the affinities
drh [Tue, 23 Apr 2024 12:02:03 +0000 (12:02 +0000)] 
Fix a problem with vector IN operators used with an index where the affinities
and collations for the various vector terms are different.

FossilOrigin-Name: 86e8c782e7494377de3c27b750cd83a7eb2302c1182ee2004d3864db50fca557

2 years agoFix an uninitialized variable problem in the new code on this branch. vector-in-fix
dan [Tue, 23 Apr 2024 11:56:20 +0000 (11:56 +0000)] 
Fix an uninitialized variable problem in the new code on this branch.

FossilOrigin-Name: 85625b38718c6e4cf7aa97fa3c52153bd25c810b68f19e7924e1f4b709c6a05d

2 years agoRemove some dead WASM-side code.
stephan [Tue, 23 Apr 2024 06:49:47 +0000 (06:49 +0000)] 
Remove some dead WASM-side code.

FossilOrigin-Name: 0a07ee27bd6021a6fc1d81133012592351530ffcf6ae09322ea74624cff910df

2 years agoMinor touchups in JS docs and exception messages.
stephan [Tue, 23 Apr 2024 06:36:28 +0000 (06:36 +0000)] 
Minor touchups in JS docs and exception messages.

FossilOrigin-Name: 9e7fc9370dfca121244f7a2941e8de629b277f1799f8de08a43ff1d86f94b6f5

2 years agoWhen running the 'dist' target in ext/wasm for an SEE-capable build, ensure that...
stephan [Tue, 23 Apr 2024 05:38:49 +0000 (05:38 +0000)] 
When running the 'dist' target in ext/wasm for an SEE-capable build, ensure that the resulting zip file and directory name include '-see'.

FossilOrigin-Name: 04c552b12e3b77b9dfd83838d35ce19a37ed024a8c18a2000ada10cf3d1eb6ad

2 years agoAdd extra tests for aborting conflicts in the sessions module.
dan [Mon, 22 Apr 2024 20:09:17 +0000 (20:09 +0000)] 
Add extra tests for aborting conflicts in the sessions module.

FossilOrigin-Name: b4a6d32662acacb7767cfb9b8e040e6eb1f99322cb7d0cd44e6265e9ac2fb2e8

2 years agoMinor cleanups to [8fbda563d2f5].
stephan [Mon, 22 Apr 2024 17:03:52 +0000 (17:03 +0000)] 
Minor cleanups to [8fbda563d2f5].

FossilOrigin-Name: 5ee2594b657b96aea9e482a175820dcbacfa9298da45b38cf17f39ad076d3f7f

2 years agoExtend the JS/WASM SEE build support by (A) filtering SEE-related bits out of the...
stephan [Mon, 22 Apr 2024 16:46:37 +0000 (16:46 +0000)] 
Extend the JS/WASM SEE build support by (A) filtering SEE-related bits out of the JS when not building with SEE and (B) accepting an optional key/textkey/hexkey option to the sqlite3.oo1.DB and subclass constructors to create/open SEE-encrypted databases with. Demonstrate SEE in the test app using the kvvfs. This obviates the changes made in [5c505ee8a7].

FossilOrigin-Name: 8fbda563d2f56f8dd3f695a5711e4356de79035f332270db45d4b33ed52fdfd2

2 years agoExtra robustness in the code that causes cursors to return NULL when they
drh [Mon, 22 Apr 2024 13:31:24 +0000 (13:31 +0000)] 
Extra robustness in the code that causes cursors to return NULL when they
are participating in an OUTER JOIN.

FossilOrigin-Name: 672c2869ef48e08447d37b0d76a1850cdafbe30ca1906ec98c55e3ab496fd9a6

2 years agoFor sqlite3.oo1.DB JavaScript classes, bypass execution of any on-open() SQL in SEE...
stephan [Mon, 22 Apr 2024 11:48:03 +0000 (11:48 +0000)] 
For sqlite3.oo1.DB JavaScript classes, bypass execution of any on-open() SQL in SEE-capable builds because it would necessarily run before the client has an opportunity to provide their decryption key, which would leave the db handle in an unusable state and cause the ctor to throw. This currently affects only the OPFS VFSes. We may want to consider extending the ctor options object to optionally accept an SEE key and apply it when opening the db.

FossilOrigin-Name: 5c505ee8a73f4b4a7053d98a12024d98340676f6ae9982311f9f88a9b46c8ae2

2 years agoContinuation of the fix at [8c0f69e0e4ae0a44]: If a viaCoroutine FROM clause
drh [Mon, 22 Apr 2024 00:42:47 +0000 (00:42 +0000)] 
Continuation of the fix at [8c0f69e0e4ae0a44]: If a viaCoroutine FROM clause
term is participating in a RIGHT or FULL JOIN, we have to create an
always-NULL pseudo-cursor for that term when processing the RIGHT join.
dbsqlfuzz 6fd1ff3a64bef4a6c092e8d757548e95698b0df5.

FossilOrigin-Name: e1040e51ebd04f2a076f477b6f240f849afb10f543ebe518e09d6842cc3cb38e

2 years agoFix an indentation problem in debugging routine sqlite3ShowSrcList(). No
drh [Sun, 21 Apr 2024 23:35:58 +0000 (23:35 +0000)] 
Fix an indentation problem in debugging routine sqlite3ShowSrcList().  No
changes to production code.

FossilOrigin-Name: 5560df2726fed215c98d602c5f6ebbf3c5ae23f8ba1074291c509bf446fdfe66

2 years agoSlight performance improvement for the new code on this branch.
dan [Sat, 20 Apr 2024 19:19:30 +0000 (19:19 +0000)] 
Slight performance improvement for the new code on this branch.

FossilOrigin-Name: 500c67f1341fe2a7e7333d525c90df201cc73a683b943ad5c1e41d4a4f639043

2 years agoFix a problem where an expression like (a, b) IN (SELECT ...) might not use an index...
dan [Sat, 20 Apr 2024 15:14:06 +0000 (15:14 +0000)] 
Fix a problem where an expression like (a, b) IN (SELECT ...) might not use an index on (a, b) if the affinities and collation sequences of "a" and "b" are not identical.

FossilOrigin-Name: 4d870fd8b5450047a7486fc023d1ac9439642e8ed91eadfd5026c4cda7cc9179

2 years agoCorrect handling of OUTER JOIN when on or the other operand is a subquery
drh [Thu, 18 Apr 2024 16:11:01 +0000 (16:11 +0000)] 
Correct handling of OUTER JOIN when on or the other operand is a subquery
implemented using the VALUES-as-coroutine optimization.
dbsqlfuzz bde3bf80aedf25afa56e2997a0545a314765d3f8.

FossilOrigin-Name: 8c0f69e0e4ae0a446838cc193bfd4395fd251f3c7659b35ac388e5a0a7650a66

2 years agoThe first assert() added in [0ebc65481f4a3e79] is not necessarily true in a
drh [Mon, 15 Apr 2024 20:43:21 +0000 (20:43 +0000)] 
The first assert() added in [0ebc65481f4a3e79] is not necessarily true in a
corrupt database file.  So add a term to make it true.

FossilOrigin-Name: 6b21cccdeec92db9f6ce3dd7ea5e61b8b46650cc1e550271aa51bdc619f55b11

2 years agoIf a build fails in testrunner.tcl, do not attempt to run the jobs that
drh [Fri, 12 Apr 2024 18:46:34 +0000 (18:46 +0000)] 
If a build fails in testrunner.tcl, do not attempt to run the jobs that
depend on that build.  Instead, report those jobs as having been skipped.

FossilOrigin-Name: b40580be719a129ecd1aa3c69d1086c967d063920fdd48617c864e73c059abc1

2 years agoFixes and new tests logic to ensure that the btree overflow page cache is
drh [Fri, 12 Apr 2024 15:02:16 +0000 (15:02 +0000)] 
Fixes and new tests logic to ensure that the btree overflow page cache is
only used when it is consistent.  This resolves the malfunction observed
in [forum:/forumpost/284955a3cd454a15|forum post 284955a3cd454a15].

FossilOrigin-Name: 5dede50d9e7b6942df9f7b00fbfeaa2103c36c5da01d63d88136fb0ef4b7d26d

2 years agoAdd assert() statements to help verify the overflow page cache. btree-ovfl-cache
drh [Fri, 12 Apr 2024 13:05:36 +0000 (13:05 +0000)] 
Add assert() statements to help verify the overflow page cache.

FossilOrigin-Name: 0ebc65481f4a3e7974558adea51c620a025bc0e76c0a139e549b56c5abe0cabb

2 years agoNew assert() statements to verify the correctness of the BTCF_AtLast flag
drh [Fri, 12 Apr 2024 12:32:09 +0000 (12:32 +0000)] 
New assert() statements to verify the correctness of the BTCF_AtLast flag
on btree cursors.

FossilOrigin-Name: 4efecd6167de71500c90b63155eba1b8567c90e9d1e282fbea54130f9ee21813

2 years agoTest case for the fix in the previous check-in.
drh [Fri, 12 Apr 2024 11:28:35 +0000 (11:28 +0000)] 
Test case for the fix in the previous check-in.

FossilOrigin-Name: 0cf4d835dae260b01178e94e77be6b8a130f2031e898ef79ceba8df6c2bba58f

2 years agoMark the BTree cell overflow cache as invalid whenever the rowid goes invalid.
drh [Fri, 12 Apr 2024 02:57:52 +0000 (02:57 +0000)] 
Mark the BTree cell overflow cache as invalid whenever the rowid goes invalid.

FossilOrigin-Name: 74c9e19c92c887012aebbe96450f6ed7a60ba22d6e3edbaa39a0f989fb7f2901

2 years agoFix handling of the SQLITE_OMIT_WAL check in one place. Resolves [forum:87cc13302de16...
stephan [Thu, 11 Apr 2024 19:08:12 +0000 (19:08 +0000)] 
Fix handling of the SQLITE_OMIT_WAL check in one place. Resolves [forum:87cc13302de160eb|forum post 87cc13302de160eb].

FossilOrigin-Name: 5dae6e6df4921f42e45c6c8de40853ab63f53a4bd1d9088a8cdac957ce62f196

2 years agoFix a "shift exponent is too large" usan error that could occur in the fts3 snippet...
dan [Tue, 9 Apr 2024 19:23:18 +0000 (19:23 +0000)] 
Fix a "shift exponent is too large" usan error that could occur in the fts3 snippet() function when a query phrase contains more than 64 tokens.

FossilOrigin-Name: 6d2c7ac4ecfc1ec408cb1820985a70650d7cc5613b4b8fd1829f68ea48fce6a3

2 years agoAvoid some performance problems in the recover extension when recovering strategicall...
dan [Tue, 9 Apr 2024 15:09:54 +0000 (15:09 +0000)] 
Avoid some performance problems in the recover extension when recovering strategically corrupted databases.

FossilOrigin-Name: e66a834bbab9d71e02b70588ad4c71eae2e13b50e299b0269d488402bc4a7fc5

2 years agoThe read-only CHECK-constraint optimization of [34ddf02d3d21151b] inhibits the
drh [Tue, 9 Apr 2024 13:57:27 +0000 (13:57 +0000)] 
The read-only CHECK-constraint optimization of [34ddf02d3d21151b] inhibits the
xfer optimization for tables with CHECK constraints.  However, the xfer
optimization is required for correct operation of VACUUM INTO on tables that
contain generated columns. Fix this by ignoring CHECK constraints when
qualifying the xfer optimization while running VACUUM.  Problem reported by
[forum:/forumpost/3ec177d68fe7fa2c|forum post 3ec177d68fe7fa2c].

FossilOrigin-Name: a6e26e778812c8409fca77183e24d3b70189c4d02fce10c7e74cd4ccc8c8ea97

2 years agoUpdate tests in returning1.test to account for [c7896e88].
dan [Mon, 8 Apr 2024 17:55:15 +0000 (17:55 +0000)] 
Update tests in returning1.test to account for [c7896e88].

FossilOrigin-Name: c02956cd5cbf87027ba201b5d273e0efd429836ee6cabdc2f6d5b8096c876b7b

2 years agoEnhance the WHERE-clause push-down optimization so that it is able to
drh [Mon, 8 Apr 2024 11:50:07 +0000 (11:50 +0000)] 
Enhance the WHERE-clause push-down optimization so that it is able to
push down WHERE clause terms that contain uncorrelated subqueries.

FossilOrigin-Name: 69ec714b2d698acf9e37635256c01b233ce32f22e8323e226441d5ddd948a940

2 years agoFix a harmless compiler warning in the ICU extension due to [acddbc489d5231da].
drh [Mon, 8 Apr 2024 11:45:15 +0000 (11:45 +0000)] 
Fix a harmless compiler warning in the ICU extension due to [acddbc489d5231da].

FossilOrigin-Name: 3d8750e88558f8ea6a1523a5add4ccca3262e31f348b603e56ab193d81908995

2 years agoEnhancements to the fuzzer invariant checker to turn optimizations on and pushdown-subquery
drh [Mon, 8 Apr 2024 06:37:19 +0000 (06:37 +0000)] 
Enhancements to the fuzzer invariant checker to turn optimizations on and
off.

FossilOrigin-Name: 67594481379824823105939fea2ce1fe280667f6db91735ac78b4b6164a78dab

2 years agoMerge trunk testing enhancements into the pushdown-subquery branch.
drh [Sun, 7 Apr 2024 18:55:57 +0000 (18:55 +0000)] 
Merge trunk testing enhancements into the pushdown-subquery branch.

FossilOrigin-Name: 287ff24b26a512ff7648679767e68244f6eef95df6a49c46ed1f2594030ed523

2 years agoOmit all rowid-in-view restrictions from the fuzzinvariant.c test module
drh [Sun, 7 Apr 2024 18:36:32 +0000 (18:36 +0000)] 
Omit all rowid-in-view restrictions from the fuzzinvariant.c test module
as they are no longer necessary, as of the previous check-in.

FossilOrigin-Name: 6431538f0bb3bb8606786f3c3e5c055c4bc387098dd3bdc8a94f6fda61c47f52

2 years agoIf SQLITE_ALLOW_ROWID_IN_VIEW is set to 2, then all rowids for views return
drh [Sun, 7 Apr 2024 18:23:30 +0000 (18:23 +0000)] 
If SQLITE_ALLOW_ROWID_IN_VIEW is set to 2, then all rowids for views return
a value of NULL.

FossilOrigin-Name: 0a53dde21403aa6de11c5085c16def3f95046c5629daf2675b075e4d6683ef94