]> git.ipfire.org Git - thirdparty/sqlite.git/log
thirdparty/sqlite.git
4 years agoFix the IN-early-out optimization so that it works even for the corner case
drh [Thu, 29 Apr 2021 15:49:34 +0000 (15:49 +0000)] 
Fix the IN-early-out optimization so that it works even for the corner case
where the NULL bypass fires before the affinity of the LHS operator has been
set.  Fix for the problem described in
[forum:/forumpost/6a3ec138e9|forum post 6a3ec138e9].

FossilOrigin-Name: eb40248ce606b792a02e4e0b7dd826a82891c5f4c9793f3ca5d332e593109525

4 years agoEnhanced "PRAGMA vdbe_trace=on" output associated with the seekHit flag.
drh [Thu, 29 Apr 2021 13:58:28 +0000 (13:58 +0000)] 
Enhanced "PRAGMA vdbe_trace=on" output associated with the seekHit flag.

FossilOrigin-Name: 683950009300657b0321d7d3f77f2585a28696ff93cedef399d1cd4aa484b2d4

4 years agoFix harmless compiler warnings.
drh [Thu, 29 Apr 2021 13:37:36 +0000 (13:37 +0000)] 
Fix harmless compiler warnings.
See [forum:/forumpost/256140e470|forum post 256140e470].

FossilOrigin-Name: 1b8da7924cc78710ae4bbe12b57140fdaeae5efb0e6ac10073ae9c98b7f8d7a4

4 years agoUpdate test/fuzzdata8.db with recent dbsqlfuzz finds.
drh [Thu, 29 Apr 2021 10:48:50 +0000 (10:48 +0000)] 
Update test/fuzzdata8.db with recent dbsqlfuzz finds.

FossilOrigin-Name: bce2ea393a872b5b70ef3b9cedce3d406725dcc56d8800ee4f7ec29562cc3f9b

4 years agoIgnore the TEMP or TEMPORARY keyword on CREATE statements which parsing
drh [Wed, 28 Apr 2021 17:37:26 +0000 (17:37 +0000)] 
Ignore the TEMP or TEMPORARY keyword on CREATE statements which parsing
the schema out of an existing database file.  Those keywords should never be
there.  This change simply adds robustness in case a legacy or damaged database
is seen.

FossilOrigin-Name: 65ec39f0f092fe29e1d4e9e96cf07a73d2ef7ce2c41b6f1cd3ab23546ada0e67

4 years agoAdjust a VDBE coverage macros due to the enhancement at [506333742103c1f4].
drh [Wed, 28 Apr 2021 15:43:36 +0000 (15:43 +0000)] 
Adjust a VDBE coverage macros due to the enhancement at [506333742103c1f4].

FossilOrigin-Name: daed59b4f96a6899d2404274ad985be3f22f407c1502b3f8ffd7977441a9fe9a

4 years agoFurther improvements to the handling of RETURNING clauses on changes
drh [Tue, 27 Apr 2021 17:18:10 +0000 (17:18 +0000)] 
Further improvements to the handling of RETURNING clauses on changes
to TEMP tables with triggers.
dbsqlfuzz 683913e98f54fe4f14e8dd11a48011f73bdca58d

FossilOrigin-Name: ff3538ae37a02f4f36a15cddd1245171e724aac9c84b2e576980fd3806302775

4 years agoRETURNING bug fix: Correctly deal with RETURNING statements on changes to
drh [Tue, 27 Apr 2021 13:04:18 +0000 (13:04 +0000)] 
RETURNING bug fix:  Correctly deal with RETURNING statements on changes to
TEMP tables that also have triggers.
dbsqlfuzz 78b9400770ef8cc7d9427dfba26f4fcf46ea7dc2

FossilOrigin-Name: d0b15eccbfe1e50c3daf7b2fd4769a52bba35d553b07e462ca3f5f22df6742fd

4 years agoFix a segfault that could occur when querying a corrupt data structures with an fts5t...
dan [Tue, 27 Apr 2021 11:28:57 +0000 (11:28 +0000)] 
Fix a segfault that could occur when querying a corrupt data structures with an fts5token table.

FossilOrigin-Name: cbedfa05501f3eb9750fb21e2ab8516f8f14c479c847f454e52572af278aab71

4 years agoBetter error messages on showdb.
drh [Tue, 27 Apr 2021 00:05:03 +0000 (00:05 +0000)] 
Better error messages on showdb.

FossilOrigin-Name: 7e18e114b245d17aa259ea9ab42752ccc9ad5303bbac8d8e46928dd10319f545

4 years agoImproved robustness of the "showdb" debugging program when it is parsing
drh [Mon, 26 Apr 2021 23:57:02 +0000 (23:57 +0000)] 
Improved robustness of the "showdb" debugging program when it is parsing
corrupt database files.

FossilOrigin-Name: 3eabac2ee50fd70b22a927d3d2934718a15e1f666d8d271b854579156c8b01de

4 years agoNew dbsqlfuzz cases added to test/fuzzdata8.db.
drh [Mon, 26 Apr 2021 22:30:49 +0000 (22:30 +0000)] 
New dbsqlfuzz cases added to test/fuzzdata8.db.

FossilOrigin-Name: 88d20500c516fe89ad1cd42f7366ca190c3790f911f11ab332b86b675f5f69ba

4 years agoFix the [/info/df1d6482f9e92daf|UNION ALL flattener optimization] so that it
drh [Mon, 26 Apr 2021 21:23:01 +0000 (21:23 +0000)] 
Fix the [/info/df1d6482f9e92daf|UNION ALL flattener optimization] so that it
works better with recursive CTEs.
dbsqlfuzz 88ed5c66789fced139d148aed823cba7c0926dd7

FossilOrigin-Name: f80d7bb2c305c1dd4658767660b33259032c048a91f18c654a6bda7332c54a0c

4 years agoAdd ALWAYS() to branches that are no longer reachable due to recent
drh [Mon, 26 Apr 2021 21:00:51 +0000 (21:00 +0000)] 
Add ALWAYS() to branches that are no longer reachable due to recent
enhancements.

FossilOrigin-Name: 63c50fbdeed831ba450d1dce67e968a7daa2b69ac1270eb271fb1e1873d4a07e

4 years agorefix altertab.test
larrybr [Mon, 26 Apr 2021 20:18:08 +0000 (20:18 +0000)] 
refix altertab.test

FossilOrigin-Name: db032156932fb0dcae5ffb7cbdfb711079daa595713fcb254f09f8ef90c81d95

4 years agoFix a problem that could cause a crash in sqlite3BtreeDelete() when operating on...
dan [Mon, 26 Apr 2021 15:32:36 +0000 (15:32 +0000)] 
Fix a problem that could cause a crash in sqlite3BtreeDelete() when operating on a corrupt database file.

FossilOrigin-Name: 6c6334660dfe81cc33a14b87b25d748b1c98b0702b7bc6db2e3ced16dc992740

4 years agoMore aggressive detection of OOM errors in resolveAlias().
drh [Mon, 26 Apr 2021 15:28:06 +0000 (15:28 +0000)] 
More aggressive detection of OOM errors in resolveAlias().
dbsqlfuzz 7f96832c2ef7ee472022ed805b064e55e41094b2

FossilOrigin-Name: e99faf4f82746761c389e24db1b00ee94b9f849e7bcb29517fa0ca10290afc41

4 years agoWhen doing the optimization that attempts to avoid sorting on a
drh [Mon, 26 Apr 2021 14:32:48 +0000 (14:32 +0000)] 
When doing the optimization that attempts to avoid sorting on a
GROUP BY, do not assume that the values in an index on an expression are
non-NULL.  Bug discovered by Wang Ke's fuzzer and reported at
[forum:/forumpost/74330094d8|forum post 74330094d8].

FossilOrigin-Name: 7178dc3a32c3a4a33e437fd5026f6f72e4809ceb7d2cd12a25a74b80d5c95d33

4 years agoDo not initialize eponymous virtual tables when parsing the schema. This can happen...
dan [Mon, 26 Apr 2021 14:09:48 +0000 (14:09 +0000)] 
Do not initialize eponymous virtual tables when parsing the schema. This can happen if the db is corrupt.

FossilOrigin-Name: cb8c41aa20bb351c4c712ed7a3617187ceeb0905ede1e6f561bc1d89f31c95ea

4 years agoSkip test when no JSON.
larrybr [Sun, 25 Apr 2021 23:13:04 +0000 (23:13 +0000)] 
Skip test when no JSON.

FossilOrigin-Name: 6fcb2438f88a70ed67e19103bfa263a6c98b06962207f153559c9516d8c7b5d5

4 years agoMake window range queries more robust against corrupt database files.
drh [Sat, 24 Apr 2021 23:40:05 +0000 (23:40 +0000)] 
Make window range queries more robust against corrupt database files.
dbsqlfuzz f22df3a7b2aab0937a415484514fc2f68a293c99.

FossilOrigin-Name: 506333742103c1f440db5da819a36f3b518f7b49e94a7b74419b02bbcadc5a78

4 years agoTreat byte-order marks (BOMs) at the start of a token as whitespace.
drh [Sat, 24 Apr 2021 12:24:08 +0000 (12:24 +0000)] 
Treat byte-order marks (BOMs) at the start of a token as whitespace.
This enhancement is inspired by
[forum:/forumpost/ed8f696a20|forum post ed8f696a20].

FossilOrigin-Name: 3d55c21c167631f42d155aadec544e629bd078de9992aa5a74694d08bc52052b

4 years agoFix testcase altertab-25.1 due to check-in [c7909e8e0d0577c6] disallowing
drh [Sat, 24 Apr 2021 12:20:10 +0000 (12:20 +0000)] 
Fix testcase altertab-25.1 due to check-in [c7909e8e0d0577c6] disallowing
ALTER TABLE on eponymous virtual tables.

FossilOrigin-Name: 32255e39cbde65492d88177464cee9e10cb20cf3105208416be131e2c89b63e1

4 years agoFix harmless compiler warnings in fuzzcheck.
drh [Fri, 23 Apr 2021 13:57:53 +0000 (13:57 +0000)] 
Fix harmless compiler warnings in fuzzcheck.

FossilOrigin-Name: e7b4ffecc610c494ebd506977402ec48cc799780f96c6293c0ccf27697160aa1

4 years agoEnhance the --load-dbsql and related options of fuzzcheck so that if the
drh [Fri, 23 Apr 2021 12:58:16 +0000 (12:58 +0000)] 
Enhance the --load-dbsql and related options of fuzzcheck so that if the
argument is a single - then filenames are read from standard input.

FossilOrigin-Name: e1548802b6de7037baf388d27a7f3658abafe07b6f48d5ec97e5f644303592d8

4 years agoGive a better final output line for the --spinner option on fuzzcheck.
drh [Fri, 23 Apr 2021 12:16:16 +0000 (12:16 +0000)] 
Give a better final output line for the --spinner option on fuzzcheck.

FossilOrigin-Name: 93729614e21ee674b83b0d2babb71bb758f1a2ec55bf9bda057fb7739f2e14e0

4 years agoNew dbsqlfuzz cases added to test/fuzzdata8.db.
drh [Fri, 23 Apr 2021 11:50:23 +0000 (11:50 +0000)] 
New dbsqlfuzz cases added to test/fuzzdata8.db.

FossilOrigin-Name: 8da88508932e475c8c6af1553268ff02e3e013b78ccc94b14532ec928fc62537

4 years agoFix an assert() in fts5_index.c that may fail if the database records are corrupt.
dan [Fri, 23 Apr 2021 11:37:01 +0000 (11:37 +0000)] 
Fix an assert() in fts5_index.c that may fail if the database records are corrupt.

FossilOrigin-Name: dfadb96edfef1d49e48a659264b9eb8d7f98d95d159d95c92c30dd4ba6c6e739

4 years agoImproved OOM detection in sqlite3ExprCheckIN().
drh [Fri, 23 Apr 2021 00:59:38 +0000 (00:59 +0000)] 
Improved OOM detection in sqlite3ExprCheckIN().
dbsqlfuzz 46ae2d8f473ac672f3042cc14ab67aeab9ffa6c2

FossilOrigin-Name: fac12115a994a1b4347586e68faf38895ee9cb588eaa84c6f71cf9afd4c488b4

4 years agoChange a memcpy() into a memmove() to prevent a warning about overlapping
drh [Thu, 22 Apr 2021 20:01:02 +0000 (20:01 +0000)] 
Change a memcpy() into a memmove() to prevent a warning about overlapping
regions passed to memcpy() in case of some obscure and unlikely database
corruption.

FossilOrigin-Name: bab132cbd18a529389a0315e60f30ccf1b565823116e0ec9b4f7684db1914c80

4 years agoFix harmless compiler warnings of unused function parameters in FTS5.
drh [Thu, 22 Apr 2021 19:34:31 +0000 (19:34 +0000)] 
Fix harmless compiler warnings of unused function parameters in FTS5.

FossilOrigin-Name: 14273915979f8fbf80111e795b5511a6ee24638896b9d434d6ccf4bf7f7a7f62

4 years agoFurther tweaks for comments in sqlite3session.h.
dan [Thu, 22 Apr 2021 18:52:36 +0000 (18:52 +0000)] 
Further tweaks for comments in sqlite3session.h.

FossilOrigin-Name: 553ada28f356d773c145b502163d766285e73fd4f64dc05f98e3e43ade806331

4 years agoChange to comments in sqlite3session.h. No changes to code.
dan [Thu, 22 Apr 2021 18:39:02 +0000 (18:39 +0000)] 
Change to comments in sqlite3session.h. No changes to code.

FossilOrigin-Name: 353ebb71c4113a35a92011c72f9c1d6c56f3bf681d94426a6a73e40f219ff2f4

4 years agoRaise an error on an attempt to rename an eponymous virtual table.
drh [Thu, 22 Apr 2021 18:02:48 +0000 (18:02 +0000)] 
Raise an error on an attempt to rename an eponymous virtual table.

FossilOrigin-Name: c7909e8e0d0577c6109f13c0b14fb565239aae8af8963d659f363e124f3437fc

4 years agoAdd the experimental sqlite3session_changeset_size() API.
dan [Thu, 22 Apr 2021 17:55:42 +0000 (17:55 +0000)] 
Add the experimental sqlite3session_changeset_size() API.

FossilOrigin-Name: 3de544d495fee553d95fde3fb656745d633138115d25ed39760a1ea7c8c3fae6

4 years agoAdd the sqlite3session_object_config() API. Current used to enable/disable collecting... session-changeset-size
dan [Thu, 22 Apr 2021 17:40:28 +0000 (17:40 +0000)] 
Add the sqlite3session_object_config() API. Current used to enable/disable collecting data for sqlite3session_changeset_size().

FossilOrigin-Name: 4d5fd2151e024d11289b6c4fbce2996d8d07b2b5a1c953ef895c237e79d3aa55

4 years agoImproved handling of errors in ALTER TABLE RENAME.
drh [Thu, 22 Apr 2021 16:54:34 +0000 (16:54 +0000)] 
Improved handling of errors in ALTER TABLE RENAME.
dbsqlfuzz 3e3e2e076e53d02288f80af41a11143a6ddf8c88

FossilOrigin-Name: 9c7a449f52a391506ebf4a8efa4ff27e6e97bd8da4b300a5c0dd942a209fe474

4 years agoFix the date/time translation logic in the zipfile extension so that it
drh [Thu, 22 Apr 2021 14:43:16 +0000 (14:43 +0000)] 
Fix the date/time translation logic in the zipfile extension so that it
works with boundary cases. See
[forum:/forumpost/d82289d69f|forum post d82289d69f] for the trouble report.

FossilOrigin-Name: c8de5f061359c174e143e5e81ade8aa9b7d71ba57287459cf0f4f2c94459c345

4 years agoEnsure that the typedefs for specific-length integers in zipfile.c are
drh [Thu, 22 Apr 2021 13:59:54 +0000 (13:59 +0000)] 
Ensure that the typedefs for specific-length integers in zipfile.c are
correct.

FossilOrigin-Name: f1f2a49007e938ea7a00dda6f8898b1cd38525c0de1e1cac00a7aebcd7b625f5

4 years agoIn the whereLoopXfer() routine, ensure that the destination is fully
drh [Thu, 22 Apr 2021 12:38:30 +0000 (12:38 +0000)] 
In the whereLoopXfer() routine, ensure that the destination is fully
initialized even if an OOM error occurs.

FossilOrigin-Name: c4258708c08c5b1956052f9febbf22c1e94c8352a25059063746921d2cc373b7

4 years agoThe new OP_Null opcode from check-in [8b54102a00852b72] was not coded
drh [Wed, 21 Apr 2021 23:13:26 +0000 (23:13 +0000)] 
The new OP_Null opcode from check-in [8b54102a00852b72] was not coded
correctly.  This check-in attempts to fix that.

FossilOrigin-Name: 02af30aab24878c4382a8863512b816889400104549b51df6a632767fee48d04

4 years agoAdd the experimental sqlite3session_changeset_size() API.
dan [Wed, 21 Apr 2021 20:52:17 +0000 (20:52 +0000)] 
Add the experimental sqlite3session_changeset_size() API.

FossilOrigin-Name: b5564a6fd54875db1de884fdc0e5eeabcd6aa5595ad03a8a60843503e830a2d8

4 years agoAdd recent dbsqlfuzz test cases to test/fuzzdata8.db.
drh [Wed, 21 Apr 2021 12:03:36 +0000 (12:03 +0000)] 
Add recent dbsqlfuzz test cases to test/fuzzdata8.db.

FossilOrigin-Name: 6fe50dcc239d2d1fc2a38aa705f4c75cbe26b3e48d098537306d96d6a4005659

4 years agoInitialize the key registers in the skip-scan optimization to NULL, in case
drh [Wed, 21 Apr 2021 11:58:45 +0000 (11:58 +0000)] 
Initialize the key registers in the skip-scan optimization to NULL, in case
the query is run on a corrupt database that causes the initialization of the
key to be bypassed.
dbsqlfuzz 62fdf2bece00d24cac8a4edf2cf562e6eeac779d

FossilOrigin-Name: 8b54102a00852b72783b5b2f336c7a093adbdc8e1b94d46b7d315ae6e5d9476b

4 years agoFix a problem allowing SQL variables to be used expressions within the second and...
dan [Wed, 21 Apr 2021 11:32:22 +0000 (11:32 +0000)] 
Fix a problem allowing SQL variables to be used expressions within the second and subsequent ON CONFLICT clauses of an UPSERT within a trigger.

FossilOrigin-Name: 2a28910a17dc5b3ce43062fdf879f9622f6ec2db19ed780fa7fe5cae781be7b7

4 years agoRemove a testcase() that is no longer relevant due to the previous check-in.
drh [Tue, 20 Apr 2021 22:48:25 +0000 (22:48 +0000)] 
Remove a testcase() that is no longer relevant due to the previous check-in.

FossilOrigin-Name: ca70c8ac72c9fe3b92f8e63151229bebdccc769c5c4d603ad4f466dc4bcd11e0

4 years agoMore aggressive detection of database corruption in the rebuildPage() routine.
drh [Tue, 20 Apr 2021 20:48:15 +0000 (20:48 +0000)] 
More aggressive detection of database corruption in the rebuildPage() routine.

FossilOrigin-Name: a18c65068b16eae3c0725356d7f4775774b23e248c700cef8c15f23459fba68f

4 years agoUpdate an assert() in btree.c that may fail with a corrupt database.
dan [Tue, 20 Apr 2021 13:31:51 +0000 (13:31 +0000)] 
Update an assert() in btree.c that may fail with a corrupt database.

FossilOrigin-Name: d74bf88c5a027cf080a2892a3538fe5104952b5b3759a6eba1b1a98a75ddf5f4

4 years agoIn the sqlite3SelectDup() routine, do not do an incomplete duplication due
drh [Tue, 20 Apr 2021 12:14:12 +0000 (12:14 +0000)] 
In the sqlite3SelectDup() routine, do not do an incomplete duplication due
to OOM.  This in turn requires several new NEVER() and ALWAYS() macros for
unreachable branches.

FossilOrigin-Name: a61c0e6b78bd39f55464fafd257e68effded64995a66e8fa2d686e8c507ebe43

4 years agoImprovement to check-in [d564d8882ef18b55] to detect the OOM fault even
drh [Mon, 19 Apr 2021 20:36:13 +0000 (20:36 +0000)] 
Improvement to check-in [d564d8882ef18b55] to detect the OOM fault even
if it occurs deep down inside the duplicated expression.

FossilOrigin-Name: 3e863cd09355abd80c1053d6d4dabb55841f806e3c418f923d67d36bf8313cb0

4 years agoAn improvement to check-in [1a341378ab24a509] that omits the new
drh [Mon, 19 Apr 2021 19:59:16 +0000 (19:59 +0000)] 
An improvement to check-in [1a341378ab24a509] that omits the new
Walker.bWalkWinDefn boolean (which is not always initialized) and uses
a special value for xSelectCallback2 instead.

FossilOrigin-Name: bef2238de9550de84d4cd1c970a542b43db288d73d09a3c3ced7f98bb3188fd3

4 years agoEnsure that a WITHOUT ROWID table does not have the .iPKey field set, even if
drh [Mon, 19 Apr 2021 18:03:52 +0000 (18:03 +0000)] 
Ensure that a WITHOUT ROWID table does not have the .iPKey field set, even if
an OOM error occurs while parsing a schema in PRAGMA writable_schema=ON mode.
Add extra assert() statements to triple-check that this never happens.
dbsqlfuzz 803bb1f63d6f3bd6c14db568494d6e96be8f1ec9.

FossilOrigin-Name: 41228350a620a7de1ee748a4e19a96749c4d39418853fe8b68c43cf401dbd7cd

4 years agoRemove fts5 test functions fts5_expr(), fts5_expr_tcl(), fts5_isalnum() and fts5_fold...
dan [Mon, 19 Apr 2021 16:45:09 +0000 (16:45 +0000)] 
Remove fts5 test functions fts5_expr(), fts5_expr_tcl(), fts5_isalnum() and fts5_fold() from release builds.

FossilOrigin-Name: c68a6c6c898d2acd1f7032ff98f8f3f99eb0b37ffbc6ee88d0dd7badf55a0e0a

4 years agoIn the query flattener, avoid invalidating an expression if an OOM occurs.
drh [Mon, 19 Apr 2021 15:05:27 +0000 (15:05 +0000)] 
In the query flattener, avoid invalidating an expression if an OOM occurs.
This prevents problems in higher-level routines that might not check for
the OOM after processing a subquery.
dbsqlfuzz fb70fa8602421f87673e0670b0712ff2b5240ea0

FossilOrigin-Name: d564d8882ef18b55ebf93e838426b485281c7ebe3a9b321a2f984ed0f229cc25

4 years agoEnsure that all records are updated by setting the OPFLAG_SAVEPOSITION flag when...
dan [Sun, 18 Apr 2021 05:30:39 +0000 (05:30 +0000)] 
Ensure that all records are updated by setting the OPFLAG_SAVEPOSITION flag when updating records as part of ALTER TABLE DROP COLUMN.

FossilOrigin-Name: 354a4db5cb769c6aed386f43ee26d7e42342e92f781eef100c09751dc5b51751

4 years agoRemove a couple of NEVER() macros from the code for walking window lists.
dan [Sat, 17 Apr 2021 20:13:53 +0000 (20:13 +0000)] 
Remove a couple of NEVER() macros from the code for walking window lists.

FossilOrigin-Name: 4ec9ef4bcd12bd9ba5e1a2424f75479070d12c25f1272548c6cf3f89be826b8c

4 years agoBring in permutations mod.
larrybr [Sat, 17 Apr 2021 20:04:40 +0000 (20:04 +0000)] 
Bring in permutations mod.

FossilOrigin-Name: 7a1316f32c857b5ec9e50c5d341f977f998dbf404f4758e3fe317fd8ef25f41e

4 years agoDo not run external_reader.test as part of permutation "journaltest", as it requires...
dan [Sat, 17 Apr 2021 19:59:14 +0000 (19:59 +0000)] 
Do not run external_reader.test as part of permutation "journaltest", as it requires wal mode.

FossilOrigin-Name: 9f5f16cf093cd8b8c7649f664eaf2ad8128fd50e182720dbddf05a6d9227c037

4 years agoAllow more time for perf tests when instrumented. Condition another on feature it...
larrybr [Sat, 17 Apr 2021 18:43:29 +0000 (18:43 +0000)] 
Allow more time for perf tests when instrumented. Condition another on feature it needs.

FossilOrigin-Name: f0dd9cf2d7045d3634294bcf2722d3d7b0a6c4c3ef713b0f7f54fbe31432027f

4 years agoAdd new dbsqlfuzz cases to test/fuzzdata8.db.
drh [Sat, 17 Apr 2021 18:39:39 +0000 (18:39 +0000)] 
Add new dbsqlfuzz cases to test/fuzzdata8.db.

FossilOrigin-Name: d18793e589a4ee7706e994a1f3d24ba7df190467d92fa6ac040258f4debc149d

4 years agoFix cases where code in expr.c was failing to handle OOM failures that occurred while...
dan [Sat, 17 Apr 2021 14:42:37 +0000 (14:42 +0000)] 
Fix cases where code in expr.c was failing to handle OOM failures that occurred while processing sub-select expressions.

FossilOrigin-Name: 62efe2eee34fdb147cc456290576d8fc3801487867c78aadd4485f85468d9ffc

4 years agoEnsure that variables are not used in the WINDOW clause of a query inside
drh [Sat, 17 Apr 2021 13:46:23 +0000 (13:46 +0000)] 
Ensure that variables are not used in the WINDOW clause of a query inside
of a trigger.  dbsqlfuzz d9cf66100064952b66951845dfab41de1c124611

FossilOrigin-Name: 1a341378ab24a5091e6cf03b9e957d11b2bfe5c711835e8c583785f8fa0125d3

4 years agoAdd geopoly to $::sqlite_options() and use it to pass more tests.
larrybr [Fri, 16 Apr 2021 23:43:22 +0000 (23:43 +0000)] 
Add geopoly to $::sqlite_options() and use it to pass more tests.

FossilOrigin-Name: 23da5016b66f3947cc902dbe2766ea9f5a00f85312a652b536ab51d657446ab7

4 years agoPerformance optimizations in the code generator, especially in name
drh [Fri, 16 Apr 2021 22:53:57 +0000 (22:53 +0000)] 
Performance optimizations in the code generator, especially in name
resolution.

FossilOrigin-Name: ab83a99899ceae931b43e0c4b3f8f8b83bc832f1568de5692c0d038c968f8a87

4 years agoMake a test conditioned on feature used.
larrybr [Fri, 16 Apr 2021 21:29:07 +0000 (21:29 +0000)] 
Make a test conditioned on feature used.

FossilOrigin-Name: 31afda7ac3081d05fc9b6d080abeba1296327d0c480bbb4bc5f65c3168cd34ac

4 years agoAdd new dbsqlfuzz-generated cases to test/fuzzdata8.db.
drh [Fri, 16 Apr 2021 19:25:47 +0000 (19:25 +0000)] 
Add new dbsqlfuzz-generated cases to test/fuzzdata8.db.

FossilOrigin-Name: 1ac0a056a07895cc4ae62d01cbba5525402be3af3b8f97fd1dfaba2236ef912b

4 years agoFix another undefined behaviour in fts3 that could follow an OOM error.
dan [Fri, 16 Apr 2021 17:09:58 +0000 (17:09 +0000)] 
Fix another undefined behaviour in fts3 that could follow an OOM error.

FossilOrigin-Name: fac3ff857c4abdb44f59849af80d93a5bd4b64f088e5164fb5ad0be8d14748b7

4 years agoAvoid signed integer overflow when finding snippets in fts3 by using 64-bit integer...
dan [Fri, 16 Apr 2021 16:55:28 +0000 (16:55 +0000)] 
Avoid signed integer overflow when finding snippets in fts3 by using 64-bit integer offsets.

FossilOrigin-Name: 4cc09a872f627f4a2b94345bef07cd49c3ec3627f8d78c1eb091741cdb4ec0b3

4 years agoRemove an ALWAYS() from a branch in sqlite3ExprAddCollateToken() which can
drh [Fri, 16 Apr 2021 12:33:52 +0000 (12:33 +0000)] 
Remove an ALWAYS() from a branch in sqlite3ExprAddCollateToken() which can
be false following an OOM.
dbsqlfuzz 9e8516bf1e786c84e520ae43141b75b7399f8618.

FossilOrigin-Name: 6af4e6d054efd8445e1010aabd584f36e70dfad0de13bd0e2f1761cad4d9a7d6

4 years agoFix an assert() in whereLoopAddOr() that can be wrong if an OOM occurs in
drh [Fri, 16 Apr 2021 12:13:39 +0000 (12:13 +0000)] 
Fix an assert() in whereLoopAddOr() that can be wrong if an OOM occurs in
an OR constraint on a virtual table if one of the terms of the OR is an IN
operator.  dbsqlfuzz 5ee7350b40014f5a878c5d6e76913a2d619f5146

FossilOrigin-Name: 5cb40e53edcb1e54cde0e54c38a647144bc3158435df0161f95c89732de086e6

4 years agoFix an assert() in fts3 that might fail when handing corrupt records.
dan [Fri, 16 Apr 2021 11:25:37 +0000 (11:25 +0000)] 
Fix an assert() in fts3 that might fail when handing corrupt records.

FossilOrigin-Name: d0e2d6742f314f71562e404980aad20de6b17e0b04c08582c18bbc4fd0360751

4 years agoFix the comment on the implementation of the pi() SQL function. No changes
drh [Fri, 16 Apr 2021 11:05:19 +0000 (11:05 +0000)] 
Fix the comment on the implementation of the pi() SQL function.  No changes
to code.

FossilOrigin-Name: 5620bd466eb10fd4daf51af9b88d8221f981dc0ceabfa84a0e1d5c817f635429

4 years agoDo not invoke sqlite3ExprAffinity() if there is a possibility that the Expr
drh [Fri, 16 Apr 2021 01:03:16 +0000 (01:03 +0000)] 
Do not invoke sqlite3ExprAffinity() if there is a possibility that the Expr
is incomplete due to a prior OOM.
dbsqlfuzz b8a824706914488bd236da51118eb9174ceb870f

FossilOrigin-Name: e8a1515b44380cc52aca1838814ca398012e4e9cf5728d40b404546e812a39b7

4 years agoFix a bad interaction between constant propagation and transitive term handling causi...
dan [Thu, 15 Apr 2021 19:09:19 +0000 (19:09 +0000)] 
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

4 years agoAdd extra test case for OOM handling in where.c.
dan [Thu, 15 Apr 2021 13:26:29 +0000 (13:26 +0000)] 
Add extra test case for OOM handling in where.c.

FossilOrigin-Name: 7163de3dea0445bf25dba47a54c50f35bb5c7edc7bdae9630b51c1ca970ec6cf

4 years agoMake sure the WhereInfo.pExprMods list is properly cleared when existing
drh [Thu, 15 Apr 2021 12:56:44 +0000 (12:56 +0000)] 
Make sure the WhereInfo.pExprMods list is properly cleared when existing
sqlite3WhereBegin() early due to an OOM fault.
dbsqlfuzz 1247a51318047aba42e7f6991dfa62577cb7a151.

FossilOrigin-Name: 0e19af72d84f96245cb4a5cfc37232579b6f5fdebd525f8b6515a4f2cc84e273

4 years agoPrevent an assert() from failing if sqlite3_blob_reopen() is called on a blob-handle...
dan [Wed, 14 Apr 2021 15:25:10 +0000 (15:25 +0000)] 
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

4 years agoFix a potential crash when using json_group_array() as a window function.
dan [Wed, 14 Apr 2021 12:11:39 +0000 (12:11 +0000)] 
Fix a potential crash when using json_group_array() as a window function.

FossilOrigin-Name: 3c266690c753d093c2cb74138a46ed69276d85cd119d687a6858c84211e84eaf

4 years agoFix an assert() in the code generator for expressions so that it is valid
drh [Wed, 14 Apr 2021 11:20:44 +0000 (11:20 +0000)] 
Fix an assert() in the code generator for expressions so that it is valid
even after an OOM.

FossilOrigin-Name: 427e83eb583a4f63650912f078122e7373fe8c7ea11acfdab464d748b4235261

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