]> git.ipfire.org Git - thirdparty/sqlite.git/log
thirdparty/sqlite.git
4 years agoFix an undefined signed integer overflow in fts5.
dan [Tue, 13 Apr 2021 17:45:36 +0000 (17:45 +0000)] 
Fix an undefined signed integer overflow in fts5.

FossilOrigin-Name: e6f0adb00da84561e686a8db83858c7fd6b008756dd1aef807ea68f878ca3db7

4 years agoDo not leave a WITHOUT ROWID table without a primary key index structure
drh [Tue, 13 Apr 2021 13:48:31 +0000 (13:48 +0000)] 
Do not leave a WITHOUT ROWID table without a primary key index structure
due to an OOM error.  This prevents downstream troubles in the case of
PRAGMA writable_schema=ON.
dbsqlfuzz 69fb32cc82d59b4d790881566e3f6c727e616122

FossilOrigin-Name: 608b6644b932c4d0c26ab870322639deefde4606f9e335575f99995bc7ed08b5

4 years agoThe SQLITE_NoSchemaError flag should not apply to OOM errors while parsing the
drh [Tue, 13 Apr 2021 13:20:55 +0000 (13:20 +0000)] 
The SQLITE_NoSchemaError flag should not apply to OOM errors while parsing the
schema.

FossilOrigin-Name: 9cc484ad1a42f0821e53be6df46b1811dc8059e5aaf2f6c3e667105a55893b97

4 years agoEarlier detection empty_result_callbacks in sqlite3InitCallbac() to avoid
drh [Tue, 13 Apr 2021 13:01:07 +0000 (13:01 +0000)] 
Earlier detection empty_result_callbacks in sqlite3InitCallbac() to avoid
problems with corrupt schemas an writable_schema=ON.
dbsqlfuzz ca4ca43bdb22eab9859de4979aec615af851e111.

FossilOrigin-Name: fb305fe077a0058861427f107957fcc3d2b1443cdd11a7f145df138ca3bb9f4e

4 years agoIn the rtreedepth() function, detect OOM when converting a zeroblob() on
drh [Tue, 13 Apr 2021 12:28:55 +0000 (12:28 +0000)] 
In the rtreedepth() function, detect OOM when converting a zeroblob() on
input.  dbsqlfuzz ed23eda7cc3a8a054f85ea19d55c59ba2ca72744.

FossilOrigin-Name: 69f843c8fa6e21500b5777169c3b394453ba818b4e32427428480dca5b4ed615

4 years agoFix an error in the inversion function for json_group_array().
drh [Tue, 13 Apr 2021 01:12:32 +0000 (01:12 +0000)] 
Fix an error in the inversion function for json_group_array().
dbsqlfuzz 68a4b0f668b7bc27235e3f1c5cff8a2d94cfa17e.

FossilOrigin-Name: e718a62ed1d5ba9b1404ba67fae1ad731809e2ebd9253edc57d2b34a19fbef24

4 years agoFix a faulty assert() inside sqlite3ExprDup().
drh [Mon, 12 Apr 2021 23:18:18 +0000 (23:18 +0000)] 
Fix a faulty assert() inside sqlite3ExprDup().

FossilOrigin-Name: 59812e7ef705226c801f95ec7f78cc931f9957ffb66715607d63874813b280cb

4 years agoFix an assert() in OP_ParseSchema so that it works even after an OOM.
drh [Mon, 12 Apr 2021 22:39:46 +0000 (22:39 +0000)] 
Fix an assert() in OP_ParseSchema so that it works even after an OOM.

FossilOrigin-Name: 79b883537910274518cadbda7b5088811f59287b9385fc28ab54d837d41b995a

4 years agoAvoid taking the address of a NULL pointer following an OOM in FTS5. Doing
drh [Mon, 12 Apr 2021 18:32:33 +0000 (18:32 +0000)] 
Avoid taking the address of a NULL pointer following an OOM in FTS5.  Doing
so is harmless in actual practice, but it technically UB so we want to
avoid it.

FossilOrigin-Name: 1cfcd9dceb56b5987e6900a36a0ec092f0e1b13a7e754b8c3d8efb943e5bcc66

4 years agoAdd an assert() to show that the SF_Resolved flag does not get set if
drh [Mon, 12 Apr 2021 17:34:03 +0000 (17:34 +0000)] 
Add an assert() to show that the SF_Resolved flag does not get set if
errors are being suppressed.

FossilOrigin-Name: f455c5b0bda3d303f9269db37efaa8ff0b356622b2df0a7544f83bb334118180

4 years agoFix a segfault that could occur if the ORDER BY clause of a compound SELECT contains...
dan [Mon, 12 Apr 2021 16:59:28 +0000 (16:59 +0000)] 
Fix a segfault that could occur if the ORDER BY clause of a compound SELECT contains a sub-select that uses one or more window functions.

FossilOrigin-Name: 5ba15ebb34c3af85ef6c54bbb3acb57176d629cda83774881b2a6467e138e904

4 years agoFix the display of SrcList in the sqlite3TreeView debugging routines.
drh [Mon, 12 Apr 2021 12:58:55 +0000 (12:58 +0000)] 
Fix the display of SrcList in the sqlite3TreeView debugging routines.

FossilOrigin-Name: 28ecb3810b40ca58c2e04a752bbc2234c64c27185aef2cb3fe7c933082dc2578

4 years agoAvoid an assert() failure when a compound scalar sub-select is, due to a "WHERE ...
dan [Mon, 12 Apr 2021 12:02:49 +0000 (12:02 +0000)] 
Avoid an assert() failure when a compound scalar sub-select is, due to a "WHERE (sub-select) AND (... OR ...)" clause, coded twice by the code generator.

FossilOrigin-Name: a4e3f13329332f91a250bc18459fd4100990a1ac0516f8a0a6b21ff117db9795

4 years agoFix harmless comment typo in main.c.
drh [Mon, 12 Apr 2021 11:51:32 +0000 (11:51 +0000)] 
Fix harmless comment typo in main.c.

FossilOrigin-Name: 785a553e71e2ecf108ec4140d470d718ceeb2d03896f7aab36ce10cf0e99e72e

4 years agoAdd NEVER() to a branch that is no longer reachable due to
drh [Sun, 11 Apr 2021 00:11:56 +0000 (00:11 +0000)] 
Add NEVER() to a branch that is no longer reachable due to
check-in [a1d823f6879ce1ac].

FossilOrigin-Name: 5fda21feda2448de880088f4f53f20875ef02b47172c48091638b80173f983d7

4 years agoAvoid an uninitialized-memory valgrind error by tightening up corruption
dan [Sat, 10 Apr 2021 20:27:06 +0000 (20:27 +0000)] 
Avoid an uninitialized-memory valgrind error by tightening up corruption
detection in internal routine defragmentPage().

FossilOrigin-Name: 8096f7aee497f852b1404e13cdc8bafb54fcf6c540cd58addbc01eb2e27011b3

4 years agoAdd NEVER() to a branch that became unreachable with
drh [Sat, 10 Apr 2021 20:21:28 +0000 (20:21 +0000)] 
Add NEVER() to a branch that became unreachable with
check-in [58f36af2271517ab].

FossilOrigin-Name: e07ce463967521ab53463b21f80c8f90c337c15c250f69c3fccc1305f54f32df

4 years agoAvoid invoking sqlite3Atoi64() will a null pointer following an error
drh [Sat, 10 Apr 2021 15:34:30 +0000 (15:34 +0000)] 
Avoid invoking sqlite3Atoi64() will a null pointer following an error
from ExpandBlob().

FossilOrigin-Name: 780412f2ca7576ce90861b2bd499f953504125b200e9aeae685def4a943f9d2b

4 years agoFix a problem with handling expressions like "(col IS NULL AND <expr1>) OR col =...
dan [Sat, 10 Apr 2021 14:49:45 +0000 (14:49 +0000)] 
Fix a problem with handling expressions like "(col IS NULL AND <expr1>) OR col == NULL" in WHERE clauses.

FossilOrigin-Name: 40852ca8e215e51f63652a67817361b835b6fbbff7f66af50089af91007505f1

4 years agoRefactor NameContext.nErr into nNcErr to avoid confusion with Parse.nErr.
drh [Sat, 10 Apr 2021 13:37:04 +0000 (13:37 +0000)] 
Refactor NameContext.nErr into nNcErr to avoid confusion with Parse.nErr.
Do not abandon sqlite3ResolveExprList() on nNcErr if nErr is still zero
as we might have hit a problem with ORDER BY resolution that should be a
suppressed error.  dbsqlfuzz 41b9dad40919d3549ca7e52d893da81a6dded4ad

FossilOrigin-Name: 7d674970741bd9b228b818c701c1ae010b90cc287a4c60a872f18b66353d164d

4 years agoRemove a NEVER() in a corruption detection conditional in allocatePage().
drh [Fri, 9 Apr 2021 22:34:59 +0000 (22:34 +0000)] 
Remove a NEVER() in a corruption detection conditional in allocatePage().
dbsqlfuzz 9c61c33802600b2b01dfb09b0386ceb4ade02a19

FossilOrigin-Name: c174f5d32b8c6bbad102065b2d5acae70ddb153f863a2842da836cf7db3f683f

4 years agoRemove an ALWAYS() that is actually reachable following an OOM on an
drh [Fri, 9 Apr 2021 22:20:20 +0000 (22:20 +0000)] 
Remove an ALWAYS() that is actually reachable following an OOM on an
UPDATE FROM of a virtual table.
dbsqlfuzz aa03237ef7c4a028c7cdaf8bbcde2b62e2bcd36e

FossilOrigin-Name: 49eac38926b3391b185d20fae6588c213f7f020f028173d4a4aa3c7a62b94140

4 years agoHave the VFS in memdb.c return SQLITE_IOERR_NOMEM instead of SQLITE_NOMEM when an...
dan [Fri, 9 Apr 2021 20:50:40 +0000 (20:50 +0000)] 
Have the VFS in memdb.c return SQLITE_IOERR_NOMEM instead of SQLITE_NOMEM when an OOM error is encountered. This is required to get the pager module to handle such OOM errors correctly in some cases.

FossilOrigin-Name: 09c96b4c026746f285a8aef5199bd247ecca590095ee42dde4f4dfa4996ce0bd

4 years agoFix a use-after-free error that could occur when processing "SELECT aggregate(DISTINC...
dan [Thu, 8 Apr 2021 20:29:12 +0000 (20:29 +0000)] 
Fix a use-after-free error that could occur when processing "SELECT aggregate(DISTINCT <expr>)..." queries.

FossilOrigin-Name: 0e4789860b81c31d3a6d1f9f8340042ce1d08a82bf6119c783fcab85180b1b63

4 years agoRemove an ALWAYS() that might be false under very unusual circumstances.
drh [Thu, 8 Apr 2021 19:56:58 +0000 (19:56 +0000)] 
Remove an ALWAYS() that might be false under very unusual circumstances.
dbsqlfuzz 300261f469ace7ecc57ed32ea7b0de3ea9d7dbf.  Test case in TH3.

FossilOrigin-Name: 466f508973e7adc983a4c9bd7c86b4d9269e3b990183fc7f95a50fe72b832ad0

4 years agoHandle the corruption fixed by the previous commit in a different way so as to also...
dan [Thu, 8 Apr 2021 19:39:00 +0000 (19:39 +0000)] 
Handle the corruption fixed by the previous commit in a different way so as to also fix dbsqlfuzz crash 753de0a0ac5b25b18f1e4d41e650d3333cdc270c.

FossilOrigin-Name: cb27ce25095ab9b5acbe4bf010c7f6d8a71191c2f79b3bf3e63d8655b4fe0769

4 years agoHandle a special case of corruption that can present if "PRAGMA writable_schema=1...
dan [Thu, 8 Apr 2021 15:19:46 +0000 (15:19 +0000)] 
Handle a special case of corruption that can present if "PRAGMA writable_schema=1" is set. Fix for dbsqlfuzz test case 6229ad63de49e3ba0630aaf0058868f36008bcca.

FossilOrigin-Name: 58f36af2271517abafa9f4a46f2a5f97e66c001675c17868282197d599603d1b

4 years agoHardden the filter_over grammar rule against OOM faults.
drh [Thu, 8 Apr 2021 14:15:26 +0000 (14:15 +0000)] 
Hardden the filter_over grammar rule against OOM faults.
dbsqlfuzz e47c54502a9c36778a5ed553199d5870e2ebd9f2

FossilOrigin-Name: f375f541efee520042be83548ad96dfa889e2c349eda5db7612ac2336dd4e4f9

4 years agoRemove an incorrect assert() from sqlite3EndTable().
drh [Thu, 8 Apr 2021 13:52:11 +0000 (13:52 +0000)] 
Remove an incorrect assert() from sqlite3EndTable().
dbsqlfuzz 4af45bcda779592449b1985433bca90b0e683b9b.

FossilOrigin-Name: 38a1085cbd5b6dd5f418efa15c6da05de781f794b8f3dad3f871c96019fed099

4 years agoFix an obscure memory leak in FTS3. dbsqlfuzz 26a51001beeff35649d2e328b05ec06f93c577a5
drh [Thu, 8 Apr 2021 13:41:20 +0000 (13:41 +0000)] 
Fix an obscure memory leak in FTS3.  dbsqlfuzz 26a51001beeff35649d2e328b05ec06f93c577a5

FossilOrigin-Name: be7cd9ebb1ba360c60469073b2e526cb1cceea702e43fcc07f47b47986908c8f

4 years agoDo not allow the use of rowid for views and subqueries unless compiled
drh [Wed, 7 Apr 2021 18:17:53 +0000 (18:17 +0000)] 
Do not allow the use of rowid for views and subqueries unless compiled
with -DSQLITE_ALLOW_ROWID_IN_VIEW.

FossilOrigin-Name: a2ddb89b206c13876d34c5f9e3db41cda72d6eb3fea31ffa8cc6daa1e1580e16

4 years agoAdd the SQLITE_ALLOW_ROWID_IN_VIEW option to omitttest.tcl. no-rowid-on-view
drh [Wed, 7 Apr 2021 18:08:23 +0000 (18:08 +0000)] 
Add the SQLITE_ALLOW_ROWID_IN_VIEW option to omitttest.tcl.

FossilOrigin-Name: 83b8e4c281c5295950fbf2330a45193b73054b0749b51a6c2c4fbc79a7a5f82d

4 years agoAlso prohibit the use of rowid from a subquery. Add the
drh [Wed, 7 Apr 2021 15:45:01 +0000 (15:45 +0000)] 
Also prohibit the use of rowid from a subquery.  Add the
SQLITE_ALLOW_ROWID_IN_VIEW compile-time option to restore legacy behavior
in case somebody actually needs it.

FossilOrigin-Name: 14b1d56ef84b0e62b7f9c4e5f7f985ca10e770c8db59f54004ad892c2a2dcbfb

4 years agoUnnecessary local variable initialization to fix a harmless compiler warning.
drh [Wed, 7 Apr 2021 13:20:34 +0000 (13:20 +0000)] 
Unnecessary local variable initialization to fix a harmless compiler warning.

FossilOrigin-Name: c22e47c77a35ebcd1fdfc0caea9119dd5e24e76d5fdd0f2ffbb58205a7242297

4 years agoIn FTS3, if the xBegin method fails to start a transaction due to an OOM
drh [Wed, 7 Apr 2021 12:59:09 +0000 (12:59 +0000)] 
In FTS3, if the xBegin method fails to start a transaction due to an OOM
error, then make sure that the virtual table is left in a consistent state.
dbsqlfuzz 85ef48423fda4eef79a551654445d8ef3537a590.

FossilOrigin-Name: dd553578333f49950a197fe894d02e08cce011c9ae1a7270604186af204dcf6d

4 years agoFix an assert in the automatic-index constructor that can be false following
drh [Wed, 7 Apr 2021 12:36:58 +0000 (12:36 +0000)] 
Fix an assert in the automatic-index constructor that can be false following
an OOM error.  dbsqlfuzz ee04d66c627ed5b5301e0ce09e24db47e0f1544e.

FossilOrigin-Name: cc6463fe6d23febeea5171f9a1bcb1e5f980f7f44b7e85022d5fd8662b471160

4 years agoEarlier detection of page 1 on the freelist (which is impossible) and
drh [Wed, 7 Apr 2021 12:21:35 +0000 (12:21 +0000)] 
Earlier detection of page 1 on the freelist (which is impossible) and
reporting of that as database corruption.
dbsqlfuzz 6fe6c504b320be5e3eed66896cb0db28bfb38a93.

FossilOrigin-Name: b1bf0d987578160f002035ff41ec7c82011288f1c0449414a4b3da39b20f871c

4 years agoFix a possible crash that could occur when executing a drop column operation on a...
dan [Wed, 7 Apr 2021 12:02:30 +0000 (12:02 +0000)] 
Fix a possible crash that could occur when executing a drop column operation on a corrupt database schema.

FossilOrigin-Name: c337849416c588142a5066db3feb1716b7a9d02536bdb73cc9da7d162c0d5494

4 years agoFix seg-fault upon appendvfs attempt to open non-existent file.
larrybr [Wed, 7 Apr 2021 09:31:32 +0000 (09:31 +0000)] 
Fix seg-fault upon appendvfs attempt to open non-existent file.

FossilOrigin-Name: 04f6439f4d9b9b1f717c3aa243a93585df7e7844c216fab5d15bebb050ab00b1

4 years agoDo not apply the optimization that omits DISTINCT if all result terms are
drh [Tue, 6 Apr 2021 23:29:41 +0000 (23:29 +0000)] 
Do not apply the optimization that omits DISTINCT if all result terms are
part of a UNIQUE index if the index is also a partial index.
Fix for the bug reported by
[forum:/forumpost/66954e9ece|forum post 66954e9ece].

FossilOrigin-Name: c2f940b02883e165172a4ca21c7095ffbef84ddc5367853dfeca93fda20d6056

4 years agoDetect OOM earlier in the geopoly extension.
drh [Tue, 6 Apr 2021 22:56:28 +0000 (22:56 +0000)] 
Detect OOM earlier in the geopoly extension.
dbsqlfuzz 0986e7b020e6137fc6b96331f91d15753d18e42d.

FossilOrigin-Name: 7237117595a3519717a0a4b03eb427c6ec55b214e7ecd6d0f63a613adec355d4

4 years agoModify the drop column code to handle WITHOUT ROWID tables for which a single column...
dan [Tue, 6 Apr 2021 21:20:39 +0000 (21:20 +0000)] 
Modify the drop column code to handle WITHOUT ROWID tables for which a single column appears more than once in the primary key.

FossilOrigin-Name: e0d2507021c5a04016c442f954b542c0920678737ae7c710eb8ac50d6337db1c

4 years agoRaise an error if a query tries to access the "rowid" of a view, as views
drh [Tue, 6 Apr 2021 19:13:44 +0000 (19:13 +0000)] 
Raise an error if a query tries to access the "rowid" of a view, as views
do not have rowids.

FossilOrigin-Name: 7a73c6166bb1d9f2e2de280fa4e973db152caaf6cc76b8e6a92cfe9560ddc224

4 years agoRestructure a loop in window.c to avoid hitting an assert() following an OOM. dbsqlfu...
dan [Tue, 6 Apr 2021 18:40:27 +0000 (18:40 +0000)] 
Restructure a loop in window.c to avoid hitting an assert() following an OOM. dbsqlfuzz test case 6ef74a9659de87e9be3d8694ad062c448aa7ef1d.

FossilOrigin-Name: 887c19a15ba60a5dc375dda7e289d476ba24d4adb38086a013df9709b88f32a7

4 years agoUpdate an assert statement that could fail when using "PRAGMA writable_schema = 1...
dan [Tue, 6 Apr 2021 18:02:17 +0000 (18:02 +0000)] 
Update an assert statement that could fail when using "PRAGMA writable_schema = 1" to access a database with a corrupt schema.

FossilOrigin-Name: 55cad6f628a4313c6652b36474c3397f097ac5c2503ae94605c030a54dc40916

4 years agoFix issue with failing --enable-debug --enable-fts5 build.
dan [Tue, 6 Apr 2021 17:51:18 +0000 (17:51 +0000)] 
Fix issue with failing --enable-debug --enable-fts5 build.

FossilOrigin-Name: e7491acc0c93b7b0b5a27130d956bb23f876b90ced11cdd416a86727af076ee1

4 years agoNew test cases added to fuzzdata8.db.
drh [Tue, 6 Apr 2021 16:55:30 +0000 (16:55 +0000)] 
New test cases added to fuzzdata8.db.

FossilOrigin-Name: 039ad662dd899048da04238c05b8cf384323f6e8c1087b96428ea9e20726c8c0

4 years agoSilence an msan warning triggered by a corrupt database by initializing a local varia...
dan [Tue, 6 Apr 2021 16:42:05 +0000 (16:42 +0000)] 
Silence an msan warning triggered by a corrupt database by initializing a local variable in sqlite3Insert().

FossilOrigin-Name: f64deecee1691cf21b4f3d27d8490ecc8eae65cf26df7a22f8d15317f0cecd5b

4 years agoAvoid a use-after-free that may occur when accessing a corrupt database schema with...
dan [Tue, 6 Apr 2021 16:16:15 +0000 (16:16 +0000)] 
Avoid a use-after-free that may occur when accessing a corrupt database schema with "PRAGMA writable_schema = 1" set.

FossilOrigin-Name: a1d823f6879ce1acfd251de35ffdfdf5ce7d8e0552205c2c4a1fee179e3a6972

4 years agoRemove some test routines from release builds of fts5.
dan [Tue, 6 Apr 2021 14:46:50 +0000 (14:46 +0000)] 
Remove some test routines from release builds of fts5.

FossilOrigin-Name: 3088bf15ca53fac3bad94f241e648836631b6d801d42837c238ff27d85074ca4

4 years agoFix incorrect RETURNING test cases in wherelimit.test
dan [Tue, 6 Apr 2021 13:57:23 +0000 (13:57 +0000)] 
Fix incorrect RETURNING test cases in wherelimit.test

FossilOrigin-Name: 20d21ff9be558c5f7773efa4efba7d36752f56c9a0caf1fd9c601aab5562dcef

4 years agoEarlier detection of OOM errors during window function processing.
drh [Tue, 6 Apr 2021 13:56:46 +0000 (13:56 +0000)] 
Earlier detection of OOM errors during window function processing.
dbsqlfuzz b08676f5a0437552c95d2a5d7ef285f8c451ea35.

FossilOrigin-Name: 8e04f52e32c9655b703ab0a6dc6d57e6bd134db9e7168807b7b2ce81974f9274

4 years agoHandle "RETURNING rowid" clauses attached to INSERTs on views without causing an...
dan [Tue, 6 Apr 2021 13:53:10 +0000 (13:53 +0000)] 
Handle "RETURNING rowid" clauses attached to INSERTs on views without causing an assert() to fail. Fixes dbsqlfuzz crash 0081f863d7b2002045ac2361879fc80dfebb98f1.

FossilOrigin-Name: 9c5b7386d013a7f22a93c69722c4648e2ab60eef180f48b5470bfea6fa74b3da

4 years agoFurther improvements (subsequent to [d91450847a3a3a72]) to handling of attempts
drh [Tue, 6 Apr 2021 13:03:06 +0000 (13:03 +0000)] 
Further improvements (subsequent to [d91450847a3a3a72]) to handling of attempts
to delete a journal using the memdb VFS.
dbsqlfuzz ac61dab357279a6a531de067f040e9a4828d2df0.

FossilOrigin-Name: a0839406426a0d8ec52cc3116ea7d8b582344b44f3f8c9365bbf5187370c3386

4 years agoEarlier detection and handling of OOM problems.
drh [Tue, 6 Apr 2021 12:50:24 +0000 (12:50 +0000)] 
Earlier detection and handling of OOM problems.
dbsqlfuzz 39f2963ea5559aa3a16e24e0e3cb42aac85a7371.

FossilOrigin-Name: 8d46df73132e46abb32b9dc129b6beb978d34dac3d372fb004ca283b0832d04c

4 years agoRelax an assertion on the sqlite3WhereEnd() routine after dbsqlfuzz found
drh [Mon, 5 Apr 2021 22:42:15 +0000 (22:42 +0000)] 
Relax an assertion on the sqlite3WhereEnd() routine after dbsqlfuzz found
a counter-example.

FossilOrigin-Name: e6b591e76523034c41884b39d71d4b721f1df709bdafd842e2d4b4084c158ec0

4 years agoAdd a missing CORRUPT_DB to an assert in the OP_ResultRow opcode.
drh [Mon, 5 Apr 2021 22:30:56 +0000 (22:30 +0000)] 
Add a missing CORRUPT_DB to an assert in the OP_ResultRow opcode.

FossilOrigin-Name: 82f92d79e1901911b0ce57d0aa30d462847748159443c7db8af16e6b37e8212c

4 years agoAdjust the README.md file so that build instructions work for Fossil version
drh [Mon, 5 Apr 2021 19:23:18 +0000 (19:23 +0000)] 
Adjust the README.md file so that build instructions work for Fossil version
2.12 and later.  [forum:/forumpost/51f28bb701|Forum post 51f28bb701].

FossilOrigin-Name: 51f87adc7f90935484eadad82f751f1df8c1607d463dae9589a71aeda2184b3a

4 years agoDo not allow floating point rounding errors to cause a window function xInverse(...
dan [Mon, 5 Apr 2021 19:05:18 +0000 (19:05 +0000)] 
Do not allow floating point rounding errors to cause a window function xInverse() function to be invoked before the corresponding xStep() call.

FossilOrigin-Name: 7a19fed4f222bc6c20e13a1367c8235916d21ba5e6f5a31cd26842efe748e744

4 years agoFix an assert() that can be false when doing an incremental vacuum on a
drh [Mon, 5 Apr 2021 17:50:38 +0000 (17:50 +0000)] 
Fix an assert() that can be false when doing an incremental vacuum on a
corrupt database file.  dbsqlfuzz cced0668cfd4da4eb2382cb9dd26c17c64aaff76.

FossilOrigin-Name: 15b801016fa204b8e4b7c89e236adb73dd57687959d825664de5097370b24030

4 years agoAvoid coding unindexed WHERE constraints if an equivalent transitive term has already...
dan [Mon, 5 Apr 2021 16:20:59 +0000 (16:20 +0000)] 
Avoid coding unindexed WHERE constraints if an equivalent transitive term has already been coded by an outer loop.

FossilOrigin-Name: 644bb77f8bb2c3499db7c280440c92fd2649a98ce714ae0d5d690eabfdc04326

4 years agoDo not invoke the xDelete method when converting to PRAGMA journal_mode=OFF
drh [Mon, 5 Apr 2021 13:41:42 +0000 (13:41 +0000)] 
Do not invoke the xDelete method when converting to PRAGMA journal_mode=OFF
if the underlying VFS does not support that method.
dbsqlfuzz 39d6af88ef5242f866c4f9b21ede330c5c1e36a8.

FossilOrigin-Name: d91450847a3a3a7217f8f5947adea9a4d12cf77607d40f9724d6ba093919b524

4 years agoAs a continuation of [1f66a85b7757754f], ensure that an OOM that occurs
drh [Mon, 5 Apr 2021 11:39:55 +0000 (11:39 +0000)] 
As a continuation of [1f66a85b7757754f], ensure that an OOM that occurs
while checking the validity of the schema is reported out as SQLITE_NOMEM
and not as SQLITE_SCHEMA.

FossilOrigin-Name: 5045c8a748f0065638d0ff4f6e3ccd124183fbc518cb9b0418d125b04dbc1491

4 years agoFix an assert() in sqlite3BtreeLast() that needs an "|| CORRUPT_DB" term.
drh [Sun, 4 Apr 2021 23:56:15 +0000 (23:56 +0000)] 
Fix an assert() in sqlite3BtreeLast() that needs an "|| CORRUPT_DB" term.
Dbsqlfuzz case b92b72e4de80b5140c30ab71372ca719b8feb618.

FossilOrigin-Name: ad718388a1f6e25ceba43a40160fac0d9d9d3f26888e98d7b9db478c0b1780be

4 years agoAvoid compile error when SQLITE_OMIT_VIRTUALTABLE defined.
larrybr [Sun, 4 Apr 2021 14:22:02 +0000 (14:22 +0000)] 
Avoid compile error when SQLITE_OMIT_VIRTUALTABLE defined.

FossilOrigin-Name: 0ee0ef476ba9e17794c088a1347a136df3eb1ef864da884cfe81e3b2e94e9719

4 years agoMake shell .parameter feature type-agnostic. Hush harmless compiler warning.
larrybr [Sun, 4 Apr 2021 12:52:58 +0000 (12:52 +0000)] 
Make shell .parameter feature type-agnostic. Hush harmless compiler warning.

FossilOrigin-Name: 35cf295e026d067c9f059fde6b150e65163fe171d37501eb1e5742e691793340

4 years agoImproved robustness to OOM conditions in the window function logic.
drh [Sat, 3 Apr 2021 23:30:33 +0000 (23:30 +0000)] 
Improved robustness to OOM conditions in the window function logic.
dbsqlfuzz 0c123f7d80b29beaafc8411c12129e46f7ffdac3.

FossilOrigin-Name: 35ff7cbf547d41109b7cd4217a5439b3b4a1a4c310309c572c88f596fbc1b099

4 years agoTake care not to change an SQLITE_NOMEM error into SQLITE_SCHEMA.
drh [Sat, 3 Apr 2021 20:35:08 +0000 (20:35 +0000)] 
Take care not to change an SQLITE_NOMEM error into SQLITE_SCHEMA.

FossilOrigin-Name: 1f66a85b7757754ff9aa0a626f66250c5fabc5fc8ab67bbc4b2ae8e6d9231a72

4 years agoFix a crash in handling queries of the form "SELECT aggregate(DISTINCT tbl.col) FROM...
dan [Sat, 3 Apr 2021 19:23:59 +0000 (19:23 +0000)] 
Fix a crash in handling queries of the form "SELECT aggregate(DISTINCT tbl.col) FROM ... LEFT JOIN tbl ...". Fixes a problem introduced by [ef4ac0ddd297bbd3].

FossilOrigin-Name: 0dcf808ddf23da834da724d88b1715ed06565f1f1290713ff42a3fcf6ffb802e

4 years agoCorrectly capture the error when a RETURNING clause appears on an
drh [Fri, 2 Apr 2021 20:43:26 +0000 (20:43 +0000)] 
Correctly capture the error when a RETURNING clause appears on an
attempt to UPDATE an eponymous virtual table.
dbsqlfuzz 486f791cbe2dc45839310073e71367a1d8ad22dd.

FossilOrigin-Name: 778a9a6e6f8d960fd55ac9be7eea20b1875a46192db85e63dddc61b632b30173

4 years agoAdd experimental SQLITE_FCNTL_EXTERNAL_READER file control.
dan [Fri, 2 Apr 2021 19:55:48 +0000 (19:55 +0000)] 
Add experimental SQLITE_FCNTL_EXTERNAL_READER file control.

FossilOrigin-Name: e16da5af822ef31d7e05992403cf9787fbb3d9abb0b5283aba55ea07e1830a72

4 years agoFix a problem with the geopoly_bbox() function.
drh [Fri, 2 Apr 2021 18:59:13 +0000 (18:59 +0000)] 
Fix a problem with the geopoly_bbox() function.

FossilOrigin-Name: f3a2eb979f1003e8249e613b34afd345f157c0d54b4f05ea0db230ef70e71351

4 years agoWhen resolving names in the RETURNING clause, do not accept trigger names
drh [Wed, 31 Mar 2021 23:56:55 +0000 (23:56 +0000)] 
When resolving names in the RETURNING clause, do not accept trigger names
even within subquires.  See
[forum:/info/34c81d83c9177f46|forum post 34c81d83c9177f46] for context.

FossilOrigin-Name: fd4ea3f626b6e4957d56c2369be711895735cfc37cfde65650a6682ad5a3eb1a

4 years agoWhen resolving column names in the RETURNING clause, do not ignore an
drh [Wed, 31 Mar 2021 17:42:24 +0000 (17:42 +0000)] 
When resolving column names in the RETURNING clause, do not ignore an
incorrect table name qualifier.  Raise an error instead.
See [forum:forumpost/85aef8bc01|forum post 85aef8bc01] for context.

FossilOrigin-Name: 51d5c50b2fb373e4c7ddb7e26657c26ad39dc9c2fc629bba5c2522b4150d8fac

4 years agoDefer deletion of expressions that are optimized out by the AND optimizer
drh [Wed, 31 Mar 2021 13:31:33 +0000 (13:31 +0000)] 
Defer deletion of expressions that are optimized out by the AND optimizer
in the sqlite3ExprAnd() routine until the corresponding Parse object is
deleted.  This avoids a dangling pointer in AggInfo if sqlite3ExprAnd()
is invoked by the push-down optimization.  The dangling pointer appears
to be harmless in release builds, only showing up in debug builds.
Problem found by dbsqlfuzz.

FossilOrigin-Name: c36b43589abd9f62a709bdb47b8748e0c1e8743487a3d83d1eb35eb06b65d763

4 years agoEnsure that negative numbers may not be used in frame offset clauses even if they...
dan [Wed, 31 Mar 2021 11:31:19 +0000 (11:31 +0000)] 
Ensure that negative numbers may not be used in frame offset clauses even if they are initially text value. e.g. (RANGE BETWEEN '-1' PRECEDING ...).

FossilOrigin-Name: 8b681b274dd01c3e0f76d5bbddcbb2450c6d9475b9cfa0db961a3ab5edf51db1

4 years agoRaise an error if a term of the form "TABLE.*" appears in the RETURNING clause,
drh [Tue, 30 Mar 2021 01:52:21 +0000 (01:52 +0000)] 
Raise an error if a term of the form "TABLE.*" appears in the RETURNING clause,
as SQLite does not (yet) know how to handle that.
Ticket [132994c8b1063bfb].

FossilOrigin-Name: 3039bcaff95bb5d096c80b5eefdaeda6abd1d1337e829f32fd28a968f663f481

4 years agoDo not do the EXISTS-to-IN transformation if the sub-select has LIMIT clause.
dan [Mon, 29 Mar 2021 20:28:27 +0000 (20:28 +0000)] 
Do not do the EXISTS-to-IN transformation if the sub-select has LIMIT clause.

FossilOrigin-Name: d07e246f9b6d4d7aef63a6debcb7ab2832bff6f80a245f50bcebb3f8de1bacc7

4 years agoAdd "#ifdef SQLITE_DEBUG" blocks around test variables sqlite3_fts5_may_be_corrupt...
dan [Mon, 29 Mar 2021 20:04:31 +0000 (20:04 +0000)] 
Add "#ifdef SQLITE_DEBUG" blocks around test variables sqlite3_fts5_may_be_corrupt and sqlite3_fts3_may_be_corrupt.

FossilOrigin-Name: 004559544e661f9afa60306c4ac6842c29a8630b3663d62aa0cdc637f176932e

4 years agoSimplify the comparison opcodes in the bytecode engine, for a performance
drh [Mon, 29 Mar 2021 20:01:04 +0000 (20:01 +0000)] 
Simplify the comparison opcodes in the bytecode engine, for a performance
improvement.

FossilOrigin-Name: f2af5868be83c65dbc593dafd4357fdb7d5d740128e9225dd1b2de16947012b3

4 years agoFix VDBE coverage macros. compare-opcode-opt
drh [Mon, 29 Mar 2021 19:47:39 +0000 (19:47 +0000)] 
Fix VDBE coverage macros.

FossilOrigin-Name: ebe100de55ccdf6abccde5d8e6e96099b6e8dc3527f1441265e2b86b6661a66b

4 years agoOmit the SQLITE_STOREP2 and SQLITE_KEEPNULL options from the comparison
drh [Mon, 29 Mar 2021 18:53:47 +0000 (18:53 +0000)] 
Omit the SQLITE_STOREP2 and SQLITE_KEEPNULL options from the comparison
opcodes, allowing them to run faster.  This required refactoring the
vector comparison logic, which in turn required changing OP_ElseNotEq into
OP_ElseEq.

FossilOrigin-Name: 380b46054b6a9b67e57357815e8e94057253fa3cce838ae76e5d5031c6bd26b2

4 years agoAdd the OP_ZeroOrNull opcode and use it to compute boolean values for
drh [Mon, 29 Mar 2021 14:40:48 +0000 (14:40 +0000)] 
Add the OP_ZeroOrNull opcode and use it to compute boolean values for
scalar comparisons, rather than the SQLITE_STOREP2 parameter to the comparison
opcode.

FossilOrigin-Name: 93781b6f10a94fb273204b95156a8b90e07071f28c89e7966c659a0f44f60e98

4 years agoThe comparison opcodes (ex: OP_Eq) now set the iCompare flag so that the
drh [Mon, 29 Mar 2021 13:47:20 +0000 (13:47 +0000)] 
The comparison opcodes (ex: OP_Eq) now set the iCompare flag so that the
result of comparison can be used by subsequent OP_Jump or OP_ElseNotEq
opcodes.

FossilOrigin-Name: bd00df8f07b7163b0712590d2bb517e838a36c994dc47d7b39b5a07d14e6e6af

4 years agoAlternative implementation of the comparison opcode speed-up of
drh [Sun, 28 Mar 2021 23:37:56 +0000 (23:37 +0000)] 
Alternative implementation of the comparison opcode speed-up of
check-in [4a8805d9a66dc888] that should pass muster with UBSAN.

FossilOrigin-Name: afb18f64541effaeaada2d72c7c91adfe5ec3e2b1418c0bc281083125fb5badb

4 years agoDocument the "%token" directive for Lemon. This directive has been in place
drh [Sun, 28 Mar 2021 20:44:01 +0000 (20:44 +0000)] 
Document the "%token" directive for Lemon.  This directive has been in place
for a while, but was previously undocumented.

FossilOrigin-Name: 36624d3740a8d095eee061bcc5037deabddb88a53444ec1a956a8af7684efa43

4 years agoFor the sqlite3_bind_text16 TCL binding used for testing, ensure that there
drh [Sat, 27 Mar 2021 16:21:34 +0000 (16:21 +0000)] 
For the sqlite3_bind_text16 TCL binding used for testing, ensure that there
are at least 3 terminating zeros, so that there will always be a \u0000
character even if the original byte sequence is an odd number of bytes.

FossilOrigin-Name: c23d092f37c535f88a47e9f55aa7b2fd40cfd5c50eec9191a68073d7f9141ecd

4 years agoIn the sqlite3_bind_text and sqlite3_bind_text16 TCL commands of the test
drh [Fri, 26 Mar 2021 23:59:37 +0000 (23:59 +0000)] 
In the sqlite3_bind_text and sqlite3_bind_text16 TCL commands of the test
suite, ensure that the string is zero-terminated if the size argument is
negative.

FossilOrigin-Name: f472fd64434cb2eac169587faa34bec489bc82002d529bc72dbfbba5251e5517

4 years agoRemove old testcases() macros. Also remove surplus end-of-line whitespace.
drh [Wed, 24 Mar 2021 23:30:06 +0000 (23:30 +0000)] 
Remove old testcases() macros.  Also remove surplus end-of-line whitespace.

FossilOrigin-Name: 54b41915ed8ef993b4116b2de00f3f4bba7570a1d28ad6bb93ba158a6b89eff3

4 years agoComment improvements to on the distinct-agg optimization. Show a line in
drh [Wed, 24 Mar 2021 19:44:01 +0000 (19:44 +0000)] 
Comment improvements to on the distinct-agg optimization.  Show a line in
the EQP output when using an ephemeral table to implement DISTINCT on an
aggregate.

FossilOrigin-Name: 037ca79e6032ca962b4f6182187bc12a7d91170d73630c8cd6fb191d2c183ee4

4 years agoImprovements to distinct aggregates such that they can sometimes avoid
drh [Wed, 24 Mar 2021 17:28:11 +0000 (17:28 +0000)] 
Improvements to distinct aggregates such that they can sometimes avoid
using an ephermeral table to test for duplicates if the column that is
distinct is part of an index.

FossilOrigin-Name: ef4ac0ddd297bbd38351410c5a387e1628561b3f1bec9e4c2c9d76fbe29f955a

4 years agoFix a harmless compiler warning.
drh [Wed, 24 Mar 2021 17:04:32 +0000 (17:04 +0000)] 
Fix a harmless compiler warning.

FossilOrigin-Name: 26b005a95e4f3e378e3bc40f57321ffbab72b6fc990d13b56b3121990d325f63

4 years agoFix a problem with renaming a column when there is a quoted string immediately follow...
dan [Tue, 23 Mar 2021 22:15:34 +0000 (22:15 +0000)] 
Fix a problem with renaming a column when there is a quoted string immediately following the column name somewhere in the schema.

FossilOrigin-Name: 4719fae6262aa3563f3df6aca0170c6d847bb18ab7b0e6e7609a0e7b6f0c6b1b

4 years agoAdd an ALWAYS() on a branch that is always taken.
drh [Tue, 23 Mar 2021 21:02:24 +0000 (21:02 +0000)] 
Add an ALWAYS() on a branch that is always taken.

FossilOrigin-Name: 0646d2260c523d368e3f6bc3d110a9011d35ce83bd6751ad412d8fd9a253cb7a

4 years agoTest result adjustments in test/misc7.test due to the EQP format change.
drh [Tue, 23 Mar 2021 19:39:27 +0000 (19:39 +0000)] 
Test result adjustments in test/misc7.test due to the EQP format change.

FossilOrigin-Name: d3ade8c7fe58e05af9d44a79478776b050a680c1338188f2d4b222b937e682ea

4 years agoWhen doing schema updates, try to convert (incorrect) double-quoted strings
drh [Tue, 23 Mar 2021 16:34:13 +0000 (16:34 +0000)] 
When doing schema updates, try to convert (incorrect) double-quoted strings
into (SQL-standard) single-quoted strings.

FossilOrigin-Name: 0770470488e140fa21cb5097c26d58e21da85544af8b69faced1670bbc6d6089

4 years agoTweaks to test/scanstatus.test to account for the new EQP format.
drh [Tue, 23 Mar 2021 15:39:02 +0000 (15:39 +0000)] 
Tweaks to test/scanstatus.test to account for the new EQP format.

FossilOrigin-Name: 2eb28afd01f43143a9c0cd6cea68f3095f993952d54ee06b781514a7754490cd

4 years agoChanges to test/analyzeG.test to conform to the new EXPLAIN QUERY PLAN syntax.
drh [Tue, 23 Mar 2021 15:07:17 +0000 (15:07 +0000)] 
Changes to test/analyzeG.test to conform to the new EXPLAIN QUERY PLAN syntax.

FossilOrigin-Name: d8afde1bf1d41a349a161a293533a9fdf23ff23b8f1bcc323e79e806c5c526f1

4 years agoFix a test case in bigmmap.test so that it works with the new
drh [Tue, 23 Mar 2021 14:33:35 +0000 (14:33 +0000)] 
Fix a test case in bigmmap.test so that it works with the new
EXPLAIN QUERY PLAN output format.

FossilOrigin-Name: 9ac064fe2aee4aa1423e7c8043dfec52ecf2af3e8361ebb7d9c104cca82b4d23

4 years agoAdd the ExprList.nAlloc column and use it to make the sqlite3ExprListAppend()
drh [Tue, 23 Mar 2021 14:27:35 +0000 (14:27 +0000)] 
Add the ExprList.nAlloc column and use it to make the sqlite3ExprListAppend()
routine much faster.

FossilOrigin-Name: 1d3c4662c2f522ac695d97441324069f3fc65f3fa0b87194c7094dfb8cd549f2