Commit Graph

22929 Commits

Author SHA1 Message Date
dan
11a6e9d9f0 Fix an assert() in fts3 that might fail when handing corrupt records.
FossilOrigin-Name: d0e2d6742f314f71562e404980aad20de6b17e0b04c08582c18bbc4fd0360751
2021-04-16 11:25:37 +00:00
drh
81e5a9a6df Fix the comment on the implementation of the pi() SQL function. No changes
to code.

FossilOrigin-Name: 5620bd466eb10fd4daf51af9b88d8221f981dc0ceabfa84a0e1d5c817f635429
2021-04-16 11:05:19 +00:00
larrybr
5ae13144ef Dial back assumptions on compile option defaults to reflect actual conditionals.
FossilOrigin-Name: cb3127725dbb9490f9bb3a95d7fd52acd78390981ee8b7c6da35bdfb84ad0359
2021-04-16 10:25:54 +00:00
drh
34c11e2f4b Do not invoke sqlite3ExprAffinity() if there is a possibility that the Expr
is incomplete due to a prior OOM.
dbsqlfuzz b8a824706914488bd236da51118eb9174ceb870f

FossilOrigin-Name: e8a1515b44380cc52aca1838814ca398012e4e9cf5728d40b404546e812a39b7
2021-04-16 01:03:16 +00:00
larrybr
cf5ad4210e Merge from (forked) trunk. Handle compile options that differ from default by being 0.
FossilOrigin-Name: 6eb83f83d280f82bd225972f52c52922257303740a968457ff0be08d43993d59
2021-04-15 23:43:25 +00:00
dan
9988db8302 Fix a bad interaction between constant propagation and transitive term handling causing patterns like "WHERE unlikely(t1.x=t1.y) AND t1.y=?" to return non-matching rows.
FossilOrigin-Name: 2363a14ca723c0343fbe350f6c19787a7a47c2289fd9af136c97a451b53b5226
2021-04-15 19:09:19 +00:00
dan
37d4ec86bf Add extra test case for OOM handling in where.c.
FossilOrigin-Name: 7163de3dea0445bf25dba47a54c50f35bb5c7edc7bdae9630b51c1ca970ec6cf
2021-04-15 13:26:29 +00:00
drh
d784cc893c Make sure the WhereInfo.pExprMods list is properly cleared when existing
sqlite3WhereBegin() early due to an OOM fault.
dbsqlfuzz 1247a51318047aba42e7f6991dfa62577cb7a151.

FossilOrigin-Name: 0e19af72d84f96245cb4a5cfc37232579b6f5fdebd525f8b6515a4f2cc84e273
2021-04-15 12:56:44 +00:00
larrybr
f8fb27f4a9 Bring pragma compile_options up to date. And make mkctimec.tcl help do so.
FossilOrigin-Name: 63ea3e298c575a408e5c5e12368292c966db6dcffcb6e1c770734f28b8757635
2021-04-15 00:26:34 +00:00
dan
385b982865 Prevent an assert() from failing if sqlite3_blob_reopen() is called on a blob-handle that has already hit an SQLITE_CORRUPT error.
FossilOrigin-Name: b5dc7aba036cfd6d09c68dd17608328063634ca99ff341f97bab2dc2a1f59b11
2021-04-14 15:25:10 +00:00
dan
8505d73dc0 Fix a potential crash when using json_group_array() as a window function.
FossilOrigin-Name: 3c266690c753d093c2cb74138a46ed69276d85cd119d687a6858c84211e84eaf
2021-04-14 12:11:39 +00:00
drh
f817189e1b Fix an assert() in the code generator for expressions so that it is valid
even after an OOM.

FossilOrigin-Name: 427e83eb583a4f63650912f078122e7373fe8c7ea11acfdab464d748b4235261
2021-04-14 11:20:44 +00:00
dan
304cbc17c2 Fix an undefined signed integer overflow in fts5.
FossilOrigin-Name: e6f0adb00da84561e686a8db83858c7fd6b008756dd1aef807ea68f878ca3db7
2021-04-13 17:45:36 +00:00
drh
3bb9d75aa6 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
2021-04-13 13:48:31 +00:00
drh
569143c851 The SQLITE_NoSchemaError flag should not apply to OOM errors while parsing the
schema.

FossilOrigin-Name: 9cc484ad1a42f0821e53be6df46b1811dc8059e5aaf2f6c3e667105a55893b97
2021-04-13 13:20:55 +00:00
drh
6000e08d33 Earlier detection empty_result_callbacks in sqlite3InitCallbac() to avoid
problems with corrupt schemas an writable_schema=ON.
dbsqlfuzz ca4ca43bdb22eab9859de4979aec615af851e111.

FossilOrigin-Name: fb305fe077a0058861427f107957fcc3d2b1443cdd11a7f145df138ca3bb9f4e
2021-04-13 13:01:07 +00:00
drh
b3d2ba7cb0 In the rtreedepth() function, detect OOM when converting a zeroblob() on
input.  dbsqlfuzz ed23eda7cc3a8a054f85ea19d55c59ba2ca72744.

FossilOrigin-Name: 69f843c8fa6e21500b5777169c3b394453ba818b4e32427428480dca5b4ed615
2021-04-13 12:28:55 +00:00
drh
0e5cd34915 Fix an error in the inversion function for json_group_array().
dbsqlfuzz 68a4b0f668b7bc27235e3f1c5cff8a2d94cfa17e.

FossilOrigin-Name: e718a62ed1d5ba9b1404ba67fae1ad731809e2ebd9253edc57d2b34a19fbef24
2021-04-13 01:12:32 +00:00
drh
5cc9daf8a2 Fix a faulty assert() inside sqlite3ExprDup().
FossilOrigin-Name: 59812e7ef705226c801f95ec7f78cc931f9957ffb66715607d63874813b280cb
2021-04-12 23:18:18 +00:00
drh
4aab6fae57 Fix an assert() in OP_ParseSchema so that it works even after an OOM.
FossilOrigin-Name: 79b883537910274518cadbda7b5088811f59287b9385fc28ab54d837d41b995a
2021-04-12 22:39:46 +00:00
drh
f1f12661c3 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
2021-04-12 18:32:33 +00:00
drh
9920bf975b Add an assert() to show that the SF_Resolved flag does not get set if
errors are being suppressed.

FossilOrigin-Name: f455c5b0bda3d303f9269db37efaa8ff0b356622b2df0a7544f83bb334118180
2021-04-12 17:34:03 +00:00
dan
d487e37367 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
2021-04-12 16:59:28 +00:00
drh
ff37491874 Fix the display of SrcList in the sqlite3TreeView debugging routines.
FossilOrigin-Name: 28ecb3810b40ca58c2e04a752bbc2234c64c27185aef2cb3fe7c933082dc2578
2021-04-12 12:58:55 +00:00
dan
cd0b245934 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
2021-04-12 12:02:49 +00:00
drh
1d6d737cb7 Fix harmless comment typo in main.c.
FossilOrigin-Name: 785a553e71e2ecf108ec4140d470d718ceeb2d03896f7aab36ce10cf0e99e72e
2021-04-12 11:51:32 +00:00
drh
0003d87893 Add NEVER() to a branch that is no longer reachable due to
check-in [a1d823f6879ce1ac].

FossilOrigin-Name: 5fda21feda2448de880088f4f53f20875ef02b47172c48091638b80173f983d7
2021-04-11 00:11:56 +00:00
dan
7f65b7af42 Avoid an uninitialized-memory valgrind error by tightening up corruption
detection in internal routine defragmentPage().

FossilOrigin-Name: 8096f7aee497f852b1404e13cdc8bafb54fcf6c540cd58addbc01eb2e27011b3
2021-04-10 20:27:06 +00:00
drh
21c7ccb9ba Add NEVER() to a branch that became unreachable with
check-in [58f36af2271517ab].

FossilOrigin-Name: e07ce463967521ab53463b21f80c8f90c337c15c250f69c3fccc1305f54f32df
2021-04-10 20:21:28 +00:00
drh
1fd1cc4433 Avoid invoking sqlite3Atoi64() will a null pointer following an error
from ExpandBlob().

FossilOrigin-Name: 780412f2ca7576ce90861b2bd499f953504125b200e9aeae685def4a943f9d2b
2021-04-10 15:34:30 +00:00
dan
677e62aacd Fix a problem with handling expressions like "(col IS NULL AND <expr1>) OR col == NULL" in WHERE clauses.
FossilOrigin-Name: 40852ca8e215e51f63652a67817361b835b6fbbff7f66af50089af91007505f1
2021-04-10 14:49:45 +00:00
drh
050611a79b 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
2021-04-10 13:37:04 +00:00
drh
d78fe4e1a4 Remove a NEVER() in a corruption detection conditional in allocatePage().
dbsqlfuzz 9c61c33802600b2b01dfb09b0386ceb4ade02a19

FossilOrigin-Name: c174f5d32b8c6bbad102065b2d5acae70ddb153f863a2842da836cf7db3f683f
2021-04-09 22:34:59 +00:00
drh
2be1f2afe8 Remove an ALWAYS() that is actually reachable following an OOM on an
UPDATE FROM of a virtual table.
dbsqlfuzz aa03237ef7c4a028c7cdaf8bbcde2b62e2bcd36e

FossilOrigin-Name: 49eac38926b3391b185d20fae6588c213f7f020f028173d4a4aa3c7a62b94140
2021-04-09 22:20:20 +00:00
dan
a3a91dd5f1 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
2021-04-09 20:50:40 +00:00
dan
bfd6f1bcd5 Fix a use-after-free error that could occur when processing "SELECT aggregate(DISTINCT <expr>)..." queries.
FossilOrigin-Name: 0e4789860b81c31d3a6d1f9f8340042ce1d08a82bf6119c783fcab85180b1b63
2021-04-08 20:29:12 +00:00
drh
55938b5fa0 Remove an ALWAYS() that might be false under very unusual circumstances.
dbsqlfuzz 300261f469ace7ecc57ed32ea7b0de3ea9d7dbf.  Test case in TH3.

FossilOrigin-Name: 466f508973e7adc983a4c9bd7c86b4d9269e3b990183fc7f95a50fe72b832ad0
2021-04-08 19:56:58 +00:00
dan
f5ea93b432 Handle the corruption fixed by the previous commit in a different way so as to also fix dbsqlfuzz crash 753de0a0ac5b25b18f1e4d41e650d3333cdc270c.
FossilOrigin-Name: cb27ce25095ab9b5acbe4bf010c7f6d8a71191c2f79b3bf3e63d8655b4fe0769
2021-04-08 19:39:00 +00:00
dan
1bae648b73 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
2021-04-08 15:19:46 +00:00
drh
d4f7ec7663 Hardden the filter_over grammar rule against OOM faults.
dbsqlfuzz e47c54502a9c36778a5ed553199d5870e2ebd9f2

FossilOrigin-Name: f375f541efee520042be83548ad96dfa889e2c349eda5db7612ac2336dd4e4f9
2021-04-08 14:15:26 +00:00
drh
a77d52f63c Remove an incorrect assert() from sqlite3EndTable().
dbsqlfuzz 4af45bcda779592449b1985433bca90b0e683b9b.

FossilOrigin-Name: 38a1085cbd5b6dd5f418efa15c6da05de781f794b8f3dad3f871c96019fed099
2021-04-08 13:52:11 +00:00
drh
6af2a728e4 Fix an obscure memory leak in FTS3. dbsqlfuzz 26a51001beeff35649d2e328b05ec06f93c577a5
FossilOrigin-Name: be7cd9ebb1ba360c60469073b2e526cb1cceea702e43fcc07f47b47986908c8f
2021-04-08 13:41:20 +00:00
drh
4ad9673d00 Do not allow the use of rowid for views and subqueries unless compiled
with -DSQLITE_ALLOW_ROWID_IN_VIEW.

FossilOrigin-Name: a2ddb89b206c13876d34c5f9e3db41cda72d6eb3fea31ffa8cc6daa1e1580e16
2021-04-07 18:17:53 +00:00
drh
a875b72d6b Add the SQLITE_ALLOW_ROWID_IN_VIEW option to omitttest.tcl.
FossilOrigin-Name: 83b8e4c281c5295950fbf2330a45193b73054b0749b51a6c2c4fbc79a7a5f82d
2021-04-07 18:08:23 +00:00
drh
6e5020e8da 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
2021-04-07 15:45:01 +00:00
drh
252d582a35 Unnecessary local variable initialization to fix a harmless compiler warning.
FossilOrigin-Name: c22e47c77a35ebcd1fdfc0caea9119dd5e24e76d5fdd0f2ffbb58205a7242297
2021-04-07 13:20:34 +00:00
drh
e7e7481a29 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
2021-04-07 12:59:09 +00:00
drh
d6a33de77c Fix an assert in the automatic-index constructor that can be false following
an OOM error.  dbsqlfuzz ee04d66c627ed5b5301e0ce09e24db47e0f1544e.

FossilOrigin-Name: cc6463fe6d23febeea5171f9a1bcb1e5f980f7f44b7e85022d5fd8662b471160
2021-04-07 12:36:58 +00:00
drh
0781219fd2 Earlier detection of page 1 on the freelist (which is impossible) and
reporting of that as database corruption.
dbsqlfuzz 6fe6c504b320be5e3eed66896cb0db28bfb38a93.

FossilOrigin-Name: b1bf0d987578160f002035ff41ec7c82011288f1c0449414a4b3da39b20f871c
2021-04-07 12:21:35 +00:00
dan
755ed41f5a Fix a possible crash that could occur when executing a drop column operation on a corrupt database schema.
FossilOrigin-Name: c337849416c588142a5066db3feb1716b7a9d02536bdb73cc9da7d162c0d5494
2021-04-07 12:02:30 +00:00