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

4 years agoEnhance the EXPLAIN QUERY PLAN output to use symbolic names to describe
drh [Tue, 23 Mar 2021 01:06:02 +0000 (01:06 +0000)] 
Enhance the EXPLAIN QUERY PLAN output to use symbolic names to describe
subqueries, where possible, instead of cryptic subquery index numbers.
And in other ways, make the EQP output cleaner and easier to read.  Little
code is changed, but many of the test results had to be tweaked to align
with the new output format.

FossilOrigin-Name: f8e28308fdb45fbdef30003320d653410d69bb8ec92eef35c4245a99e2d0603b

4 years agoMerge recent fixes from trunk. eqp-improvements
drh [Mon, 22 Mar 2021 18:53:26 +0000 (18:53 +0000)] 
Merge recent fixes from trunk.

FossilOrigin-Name: 4a343698b4ec3364b0eecb7fa074512ecac8b586aff1f977ca77f215e96e0ce5

4 years agoIncrease the version number to 3.36.0 to begin the next development cycle.
drh [Mon, 22 Mar 2021 16:50:39 +0000 (16:50 +0000)] 
Increase the version number to 3.36.0 to begin the next development cycle.

FossilOrigin-Name: 5cee689d647087a5e796da2acb247a4f469a8b39b54f59bb4ad2386647cef1bd

4 years agoFix an assert() that in preupdate-hook logic (not normally built) that same-as-3.35.3
drh [Sun, 21 Mar 2021 18:23:48 +0000 (18:23 +0000)] 
Fix an assert() that in preupdate-hook logic (not normally built) that
can be false when running VACUUM on a corrupt database file under
PRAGMA writable_schema=ON.

FossilOrigin-Name: 6bb2134027a12801de8e0c73482d94682f902024800a7e426614f65a2fe4f64c

4 years agoAdd a better comment and an assert() on the code inside sqlite3CreateIndex()
drh [Sun, 21 Mar 2021 17:52:47 +0000 (17:52 +0000)] 
Add a better comment and an assert() on the code inside sqlite3CreateIndex()
that REPLACE indexes come at the end of the index list.
[forum:/forumpost/ceb51d83f7|forum post ceb51d83f7]

FossilOrigin-Name: 71e4da136bd1b5b75a699d69fbaaaec0f9dd1a87e2a9d049a55154892b06647b

4 years agoFix the "box" output mode in the shell when statement returns zero-column
drh [Sat, 20 Mar 2021 23:15:52 +0000 (23:15 +0000)] 
Fix the "box" output mode in the shell when statement returns zero-column
rows (for example from "PRAGMA incremental_vacuum").

FossilOrigin-Name: 34439fe3aeea7cbbc817245d39c345a7f5df7a82ac15ee4d71bb9a4d818198ed

4 years agoUse the canonical name, not the AS name, when showing the MATERIALIZE or
drh [Sat, 20 Mar 2021 15:46:01 +0000 (15:46 +0000)] 
Use the canonical name, not the AS name, when showing the MATERIALIZE or
CO-ROUTINE lines for a CTE.

FossilOrigin-Name: 1b83e232c490fe6e9f999d30399faebfac6094bf940dc21dc459ed2c97657cb2

4 years agoRevise tests cases to align with the new EXPLAIN QUERY PLAN output.
drh [Sat, 20 Mar 2021 15:11:29 +0000 (15:11 +0000)] 
Revise tests cases to align with the new EXPLAIN QUERY PLAN output.

FossilOrigin-Name: 50fbd532602d2c316813046ed6be8be2991c281eb5f295c4c28520a0de73862c

4 years agoFix a faulty assert() in the OP_SkipScan opcode.
drh [Sat, 20 Mar 2021 01:00:26 +0000 (01:00 +0000)] 
Fix a faulty assert() in the OP_SkipScan opcode.
dbsqlfuzz a15a9b2ca82e812ad52f62c86cc93dca0dc72f01.
Test cases in TH3.

FossilOrigin-Name: 1805b9aaf1172e36e08271f78ebb7676bba9f3c4c28e077ee94cc31b8e7ec741