]> git.ipfire.org Git - thirdparty/sqlite.git/log
thirdparty/sqlite.git
3 years agoOne minor change for an exceptional case in sqlite3_error_offset(). improved-error-context
drh [Sat, 25 Dec 2021 00:19:46 +0000 (00:19 +0000)] 
One minor change for an exceptional case in sqlite3_error_offset().

FossilOrigin-Name: c93609a8b9dc2e656bb4360138606e269fd323469f7666dbc3bbc699e431313e

3 years agoAdd the sqlite3_error_offset() interface. Use it in the CLI to provide
drh [Fri, 24 Dec 2021 20:22:13 +0000 (20:22 +0000)] 
Add the sqlite3_error_offset() interface.  Use it in the CLI to provide
better context for error messages.

FossilOrigin-Name: b518ce77439852759bc0901071f36d622b1314c9bf3d29c279dfcc405188b975

3 years agoFix a minor problem in the CLI introduced by [d156123885abe6bf], apparently.
drh [Fri, 24 Dec 2021 19:44:11 +0000 (19:44 +0000)] 
Fix a minor problem in the CLI introduced by [d156123885abe6bf], apparently.

FossilOrigin-Name: 37e6e10f4364f556c7503c80408fc62895cdccdd0372fb2b63aaca02c3a1ee30

3 years agoRaise an error if a schema name is attached to the table-alias name of a
drh [Fri, 24 Dec 2021 13:30:22 +0000 (13:30 +0000)] 
Raise an error if a schema name is attached to the table-alias name of a
subquery or view.  See
[forum:/forumpost/021a33600b|forum post 021a33600b] for the bug report.

FossilOrigin-Name: 8af8c153f8c3fe16db1c2280571e005838c4ea3c48929ad7660a1686e49ed255

3 years agoReduce the size of the compiled binary by a couple of hundred bytes by
drh [Thu, 23 Dec 2021 00:16:06 +0000 (00:16 +0000)] 
Reduce the size of the compiled binary by a couple of hundred bytes by
using a thigher packing of a transformation table in date.c.
Suggested by [forum:/forumpost/4f6efbb2a9|forum post 4f6efbb2a9].

FossilOrigin-Name: c75ba4fa644d338d22813c17172b9975411fe6197e07fd584e3209e3beb78036

3 years agoUpdate the README.md to instruct the user to remove the final comment line
drh [Tue, 21 Dec 2021 16:59:45 +0000 (16:59 +0000)] 
Update the README.md to instruct the user to remove the final comment line
from the "manifest" file before using it to compute the check-in hash.

FossilOrigin-Name: 7b4f9d95a95f685ea4ee045e43c67b1a5c70e908e357b0b41d522699255663ce

3 years agoIn the json1 extension, which compiling it separately, ensure that either
drh [Mon, 20 Dec 2021 23:46:44 +0000 (23:46 +0000)] 
In the json1 extension, which compiling it separately, ensure that either
SQLITE_DEBUG macro or the NDEBUG macro is set prior to including assert.h.
If neither macro is defined, then assert() statement do generate code but
VVA() statements do not, and that is a deadly combination.
[forum:/forumpost/858dee399e|forum post 858dee399e]

FossilOrigin-Name: d9f814a6402ca7fd999bbb847dc354b52ab9b97cae0c932344584d26c9430f24

3 years agoRemove old script ext/fts3/mkfts3amal.tcl, as it doesn't work.
dan [Mon, 20 Dec 2021 17:00:42 +0000 (17:00 +0000)] 
Remove old script ext/fts3/mkfts3amal.tcl, as it doesn't work.

FossilOrigin-Name: 9e33ee24b3793b3d7faf7421279d16217f8b09b1e92bfdc771f902f2f1e1b7d6

3 years agoImproved documentation for the sqlite3_vtab_collation() interface.
drh [Fri, 17 Dec 2021 23:56:43 +0000 (23:56 +0000)] 
Improved documentation for the sqlite3_vtab_collation() interface.

FossilOrigin-Name: 826f84a92d3b1f760560bff72c911a2c664737820af0c9114eb3494df7b8e878

3 years agoFix windowC tests to specify little-endian or big-endian UTF16, for
drh [Thu, 16 Dec 2021 19:50:02 +0000 (19:50 +0000)] 
Fix windowC tests to specify little-endian or big-endian UTF16, for
cross-platform portability.
[forum post 559b84a5c6|forum:/forumpost/559b84a5c6]

FossilOrigin-Name: adf3a1e6f7575964e467f6813ff980e802cf5a37aaa9e1736af702c493f276b1

3 years agoGive the correct prefix to tests in the windowC.test module.
drh [Thu, 16 Dec 2021 19:43:16 +0000 (19:43 +0000)] 
Give the correct prefix to tests in the windowC.test module.

FossilOrigin-Name: fb43456324c26879767b08febf1b5a2b46a289f25398a3872f81d845afd5d84e

3 years agoIn the CLI, omit the ".oom" command (only available in debug builds) and
drh [Thu, 16 Dec 2021 17:57:21 +0000 (17:57 +0000)] 
In the CLI, omit the ".oom" command (only available in debug builds) and
disable the experimental ".expert" commmand in --safe mode.

FossilOrigin-Name: 5cda1f7da885afdfda8683c59e78fec8da1a05c7a4fde573e89db5f872fcfb20

3 years agoNew defenses against OOM and corrupt database problems in the CLI.
drh [Thu, 16 Dec 2021 17:35:27 +0000 (17:35 +0000)] 
New defenses against OOM and corrupt database problems in the CLI.

FossilOrigin-Name: 5c9fd7fde16d8e335488b8bf5c691961d2636201b034d1f29d25de8708de291d

3 years agoFix a typo in the result of one of the new test cases.
drh [Thu, 16 Dec 2021 17:21:34 +0000 (17:21 +0000)] 
Fix a typo in the result of one of the new test cases.

FossilOrigin-Name: 4d02a129c4781c97981748f3c69564e1320d8085dfba4c207e54793390cd64ab

3 years agoFix fts3 and fts4 so that they can still be used even if the other is dropped by...
dan [Thu, 16 Dec 2021 15:29:49 +0000 (15:29 +0000)] 
Fix fts3 and fts4 so that they can still be used even if the other is dropped by a call to sqlite3_drop_modules().

FossilOrigin-Name: a0a8d6c9f0e91996003626e4f80dfac278e3c5bddd9ace5d442061e6c95e49dc

3 years agoFix a memory leak in the CLI that occurs after an error in the ".open" command.
drh [Thu, 16 Dec 2021 14:59:25 +0000 (14:59 +0000)] 
Fix a memory leak in the CLI that occurs after an error in the ".open" command.

FossilOrigin-Name: d156123885abe6bf23c3530de99be257f82ef85b89fbe019568ac60fa1ed5bb7

3 years agoFix harmless compiler warning in the new Bloom filter logic.
drh [Thu, 16 Dec 2021 14:36:36 +0000 (14:36 +0000)] 
Fix harmless compiler warning in the new Bloom filter logic.

FossilOrigin-Name: 9406d95d3fbaf0d8e65623adb790845f78a7456fb32aafd7fa4f74eda2f2dacc

3 years agoImproved robustness against OOM in the expert extension.
drh [Thu, 16 Dec 2021 14:26:16 +0000 (14:26 +0000)] 
Improved robustness against OOM in the expert extension.

FossilOrigin-Name: e732c429bafeffaf7e0f458213089c073c262a39eabb41b291e5006078ca7f98

3 years agoFix a potential NULL pointer dereference in the CLI logic for printing the
drh [Thu, 16 Dec 2021 13:56:04 +0000 (13:56 +0000)] 
Fix a potential NULL pointer dereference in the CLI logic for printing the
schema of virtual tables.

FossilOrigin-Name: fe44ebf6be47e1c7f2458297669dbd2b882a31595ea8759f7e8bb024ffc44d11

3 years agoAdd more tests for OOM conditions in the CLI.
drh [Thu, 16 Dec 2021 13:29:28 +0000 (13:29 +0000)] 
Add more tests for OOM conditions in the CLI.

FossilOrigin-Name: b6fa402d159b2475a7b99ef6a5180d7bf800f90afe28cea726d346d071405045

3 years agoSimplify the generation of the sqlite3_index_info object during query planning
drh [Wed, 15 Dec 2021 20:48:15 +0000 (20:48 +0000)] 
Simplify the generation of the sqlite3_index_info object during query planning
for virtual tables.

FossilOrigin-Name: 241dc0428a6e0238c57e2449e98ea60047e777e29c83a4ebe6da16f7cba40e19

3 years agoEnhance the virtual table query planner so that it is able to deal with
drh [Tue, 14 Dec 2021 20:13:28 +0000 (20:13 +0000)] 
Enhance the virtual table query planner so that it is able to deal with
ORDER BY terms that contain COLLATE clauses as long as the specified
collation matches the virtual table.  This is especially important for
UNION ALL since a "COLLATE binary" is added to ORDER BY clauses if no
COLLATE clause exists in the original SQL.

FossilOrigin-Name: 5c3d398d20b86a1558720e995eddf11403aec2d160590571fa9525fe8f6efff9

3 years agoMinor fix to the ORDER BY elimination logic in generate_series().
drh [Tue, 14 Dec 2021 18:11:46 +0000 (18:11 +0000)] 
Minor fix to the ORDER BY elimination logic in generate_series().

FossilOrigin-Name: a2e50712fca9dff1b8d19631f792270c82da3c8696a5d9890cf0d1e13e950d60

3 years agoOmit the return value from sqlite3VdbeSerialGet() for a size reduction
drh [Tue, 14 Dec 2021 00:36:09 +0000 (00:36 +0000)] 
Omit the return value from sqlite3VdbeSerialGet() for a size reduction
and performance improvement.

FossilOrigin-Name: 788e79f881d443fc1b3a213a7ba4f19bfd245e96c15bb21fcb6bffd92c4320b8

3 years agoSmall performance optimization and code size reduction in moveToRoot().
drh [Mon, 13 Dec 2021 19:59:55 +0000 (19:59 +0000)] 
Small performance optimization and code size reduction in moveToRoot().

FossilOrigin-Name: cdcde00b2d68eeb35c472fdfd4c4508551f6722054394b43cc97eaf01ad7181d

3 years agoAdd NEVER() on an unreachable branch in the Bloom filter pull-down logic.
drh [Mon, 13 Dec 2021 18:53:10 +0000 (18:53 +0000)] 
Add NEVER() on an unreachable branch in the Bloom filter pull-down logic.

FossilOrigin-Name: 471070462593faba865d8d05ee89161b340145351e2fa0bfbaa766d974e932d6

3 years agoFix an off-by-one error in the Bloom filter pulldown logic, found by OSSFuzz.
drh [Mon, 13 Dec 2021 18:43:46 +0000 (18:43 +0000)] 
Fix an off-by-one error in the Bloom filter pulldown logic, found by OSSFuzz.
Also fix over-length source code lines in the immediate vicinity.

FossilOrigin-Name: 027626521c02be06ef61e8229bde49d20cb3f1cb600c4cb127c5f139b9de8858

3 years agoRemove unused code.
drh [Mon, 13 Dec 2021 00:02:59 +0000 (00:02 +0000)] 
Remove unused code.

FossilOrigin-Name: b98b24f26518fb362e776bbaef80910bed66b654239e7c76d4b234033ef4174b

3 years agoDo not allow early evaluation of Bloom filters that use the IN operator as
drh [Sat, 11 Dec 2021 17:10:58 +0000 (17:10 +0000)] 
Do not allow early evaluation of Bloom filters that use the IN operator as
the machinery to deal with the IN operator is not available.
dbsqlfuzz 5b51c247518278f79a45cea978702e86e86cd4f9.

FossilOrigin-Name: 799db7cb2e0d73031182d26a0e5919368f9f9823df81cb2863bfe79eca344f5c

3 years agoFactor out the logic that does quoting for the SQL quote() function, so that
drh [Fri, 10 Dec 2021 21:01:24 +0000 (21:01 +0000)] 
Factor out the logic that does quoting for the SQL quote() function, so that
it might be reused for other purposes.

FossilOrigin-Name: 8e98ba1eeb1a5a61b7cb2de337ef8bca3d07494266a50d62b9c6bc60ad0a955f

3 years agoRename the internal routine constructBloomFilter() to
drh [Fri, 10 Dec 2021 17:36:16 +0000 (17:36 +0000)] 
Rename the internal routine constructBloomFilter() to
sqlite3ConstructBloomFilter(). OSSFuzz is reporting a crash with a garbled
stack that we cannot reproduce. Perhaps the original "constructBloomFilter()"
name is colliding with some internal name used by OSSFuzz. We'll see if this
rename clears the problem.

FossilOrigin-Name: 403e7312dd9a3fe493a21aceb82e387d6f152622d66c1b403c881597713e8cc3

3 years agoAdd support for Bloom-filters as a performance optimization for joins.
drh [Thu, 9 Dec 2021 20:06:18 +0000 (20:06 +0000)] 
Add support for Bloom-filters as a performance optimization for joins.

FossilOrigin-Name: 633bfeeea2bccdd44126acf3f61ecca163c9d933bdc787a2c18a697dc9406882

3 years agoRemove unused code and fix comments. Final cleanup before merging. bloom-filter
drh [Thu, 9 Dec 2021 19:42:52 +0000 (19:42 +0000)] 
Remove unused code and fix comments.  Final cleanup before merging.

FossilOrigin-Name: ce42039f5647b1f276acf5d9911528ecb47df1544a587def72c8cd6b2f664289

3 years agoEnable bloom filters for the right table of a LEFT JOIN. Fix unreachable
drh [Thu, 9 Dec 2021 18:44:03 +0000 (18:44 +0000)] 
Enable bloom filters for the right table of a LEFT JOIN.  Fix unreachable
branches.

FossilOrigin-Name: d342ab722de1fc3f34219c9755253db9d88eb50a6fa5cc257207008b00e7fc03

3 years agoAdd ".mode off" and ".mode count" to the CLI.
drh [Thu, 9 Dec 2021 16:26:45 +0000 (16:26 +0000)] 
Add ".mode off" and ".mode count" to the CLI.

FossilOrigin-Name: 1eefd957ff35e961685db565f7ef116c566a04574c5bedad7298b3cc69dd72d2

3 years agoAdd ".mode off" and ".mode count" to the CLI.
drh [Thu, 9 Dec 2021 16:17:43 +0000 (16:17 +0000)] 
Add ".mode off" and ".mode count" to the CLI.

FossilOrigin-Name: b11f4d080aa9e6f694e2ec401e871f42bf25997e8e8bf77fa9b6014a50466e3c

3 years agoNew test cases added to test/fuzzdata8.db
drh [Thu, 9 Dec 2021 14:15:39 +0000 (14:15 +0000)] 
New test cases added to test/fuzzdata8.db

FossilOrigin-Name: 7046877006259a0073cca4ddb4541321d373c462eac9924be26b5ae224075732

3 years agoDo not attempt to reprepare a prepared statement that returns SQLITE_SCHEMA
drh [Thu, 9 Dec 2021 14:09:47 +0000 (14:09 +0000)] 
Do not attempt to reprepare a prepared statement that returns SQLITE_SCHEMA
if there was an OOM.  This enhancement supercedes check-in
[fee469925231d074].

FossilOrigin-Name: 94fdbeffaf501daf30dc7fae7cef5c2bfdb3a9b055562adfc04374a9fc899c8d

3 years agoAdd SQLITE_TESTCTRL_LOGEST and enhance the LogEst utility program.
drh [Thu, 9 Dec 2021 01:28:15 +0000 (01:28 +0000)] 
Add SQLITE_TESTCTRL_LOGEST and enhance the LogEst utility program.
Improvements to testability of bloom filters.

FossilOrigin-Name: 88b43d798cc5aa59855e92d3e658aee9f0a5def6ffbc5db77af048d75ecdf8cc

3 years agoClarity tweak for date.c
larrybr [Wed, 8 Dec 2021 20:36:08 +0000 (20:36 +0000)] 
Clarity tweak for date.c

FossilOrigin-Name: db58b2def014bdb146751110488a088767530ca2557baf73d6181a2558bbe6d3

3 years agoImprovements on the decision of whether or not to use a Bloom filter.
drh [Wed, 8 Dec 2021 19:50:45 +0000 (19:50 +0000)] 
Improvements on the decision of whether or not to use a Bloom filter.

FossilOrigin-Name: 0fb2a4e08f518cb38ea3edc6a084d1e4874fd622ba3cf9101b49b3e7dc1a3f2b

3 years agoEnhance the sqlite3SrcListAppendFromTerm() routine so that it sets the
drh [Wed, 8 Dec 2021 18:50:30 +0000 (18:50 +0000)] 
Enhance the sqlite3SrcListAppendFromTerm() routine so that it sets the
Parser error on an OOM, causing an earlier unwind of the stack.

FossilOrigin-Name: fee469925231d074c17b948605143cfbb2e9595851a797995e7331f1ab2a61ca

3 years agoMerge the WhereClause fix from trunk
drh [Wed, 8 Dec 2021 16:15:41 +0000 (16:15 +0000)] 
Merge the WhereClause fix from trunk

FossilOrigin-Name: d3250256772e3348abe887c0ca3550a6647cce3804c9456a9d0112aea7ee1c46

3 years agoIn the WhereClause object, do not assume that all TERM_VIRTUAL terms appear
drh [Wed, 8 Dec 2021 16:07:22 +0000 (16:07 +0000)] 
In the WhereClause object, do not assume that all TERM_VIRTUAL terms appear
at the end of the list, because that is no longer true.  Instead, keep a
separate nBase count that is the size of the list excluding the tail of
virtual terms.  Use nBase instead of nTerm when scanning terms that are not
virtual.  Add assert()s to validate correctness of WhereClause.

FossilOrigin-Name: 6024682ca467fa4fe49608772b0bbfa2f8a419b32cebfa715941073c8b29da49

3 years agoDo not generate a Bloom filter if it cannot be used prior to the next seek,
drh [Tue, 7 Dec 2021 22:37:50 +0000 (22:37 +0000)] 
Do not generate a Bloom filter if it cannot be used prior to the next seek,
as that leads to a misleading EXPLAIN QUERY PLAN.

FossilOrigin-Name: 2739ed5192058fbcc816ecbc252be687efc606e038bfcd6cf71194a3f4f5684e

3 years agoImproved EXPLAIN QUERY PLAN output for Bloom filters.
drh [Mon, 6 Dec 2021 23:07:59 +0000 (23:07 +0000)] 
Improved EXPLAIN QUERY PLAN output for Bloom filters.

FossilOrigin-Name: 00070e1fff6aec3d7c7b121f2b02bbca38a1664aca9afc3fb7e293f07fd1704f

3 years agoAdd SQLITE_STMTSTATUS_FILTER_HIT and _MISS for tracking the effectiveness
drh [Mon, 6 Dec 2021 21:45:31 +0000 (21:45 +0000)] 
Add SQLITE_STMTSTATUS_FILTER_HIT and _MISS for tracking the effectiveness
of Bloom filters.

FossilOrigin-Name: 24ba535d200fc8a99dd8e66c6d100b5f6ae442098bafb152008429398eefe3e7

3 years agoOmit the OP_FilterInit opcode. Use OP_Blob to initialize each Bloom filter
drh [Mon, 6 Dec 2021 20:16:53 +0000 (20:16 +0000)] 
Omit the OP_FilterInit opcode.  Use OP_Blob to initialize each Bloom filter
instead.  Size the Bloom filter based on sqlite_stat1 size estimates rather
than a run-time measurement for improved testability.

FossilOrigin-Name: 8a9036ee617a6ad93bfe827b0789773c49d3d45b085cb76fa4b9b20a41b79b97

3 years agoMerge trunk fixes into the bloom-filter branch.
drh [Mon, 6 Dec 2021 19:11:31 +0000 (19:11 +0000)] 
Merge trunk fixes into the bloom-filter branch.

FossilOrigin-Name: edacf8034dc6bd892038c220c480ea512dbb4005db2a6b1f8e679e8a4929c6ed

3 years agoFix an OOB read that could occur in fts5 when processing corrupt records.
dan [Mon, 6 Dec 2021 18:57:02 +0000 (18:57 +0000)] 
Fix an OOB read that could occur in fts5 when processing corrupt records.

FossilOrigin-Name: bb9b1a15f7e80483162049dfd981d059dc69d03348b521f7ac164a8cd3ae3cc4

3 years agoDo not allow SQLITE_LIMIT_LENGTH to be set lower than 1 as an
drh [Mon, 6 Dec 2021 15:40:24 +0000 (15:40 +0000)] 
Do not allow SQLITE_LIMIT_LENGTH to be set lower than 1 as an
SQLITE_LIMIT_LENGTH of 0 causes lots of unnecessary problems for
users of the sqlite3_str object.

FossilOrigin-Name: 8fd5b8ec4ab9b5554d27f25a4638d56e347eab78b60900f24b15a815d3731330

3 years agoDo not allow certain dangerous ".testctrl" commands in safe mode.
drh [Mon, 6 Dec 2021 15:24:36 +0000 (15:24 +0000)] 
Do not allow certain dangerous ".testctrl" commands in safe mode.

FossilOrigin-Name: 080e72d119b836c49916201bf135445aa7d53cefe40a47437a93448c4d0f41cd

3 years agoFix SQLITE_TESTCTRL_IMPOSTER so that it is a harmless no-op if the schema
drh [Mon, 6 Dec 2021 15:08:30 +0000 (15:08 +0000)] 
Fix SQLITE_TESTCTRL_IMPOSTER so that it is a harmless no-op if the schema
parameter is invalid.

FossilOrigin-Name: 2d9a45ab10aaad681e11d639195430c0988b6ca1b96db6bf0b31b889e88a5430

3 years agoAttempt to vary the size of Bloom filters based on an estimate of how many
drh [Mon, 6 Dec 2021 13:07:28 +0000 (13:07 +0000)] 
Attempt to vary the size of Bloom filters based on an estimate of how many
keys the filter will hold.

FossilOrigin-Name: a7adcf69088cba4b86cc5731a45c9a5263af4355bc0a38f5225cab421c915f7f

3 years agoRun as many Bloom filters as possible before index lookups.
drh [Sun, 5 Dec 2021 20:19:47 +0000 (20:19 +0000)] 
Run as many Bloom filters as possible before index lookups.

FossilOrigin-Name: 06f6fefd67086896bc49272c6319545ff6c6792f18babe23aced27b60b032119

3 years agoTry to run all Bloom filters before any Seeks. This gives a small performance
drh [Sun, 5 Dec 2021 00:45:55 +0000 (00:45 +0000)] 
Try to run all Bloom filters before any Seeks.  This gives a small performance
gain on the Star-Schema Benchmark.

FossilOrigin-Name: 5be2470f8755ef454f813c880e659bdbf82f2396be9320cf3079cd4ca8e81a19

3 years agoMiscellaneous cleanup of the new Bloom-filter code.
drh [Sat, 4 Dec 2021 21:11:18 +0000 (21:11 +0000)] 
Miscellaneous cleanup of the new Bloom-filter code.

FossilOrigin-Name: 201b6dd875b0ae2bbc9969b098e88abfc09e37b59e857decd41f2dcbeeb13e01

3 years agoAdd VdbeCoverage() macros. Adjust the Bloom-filter hash function so that it
drh [Sat, 4 Dec 2021 18:45:08 +0000 (18:45 +0000)] 
Add VdbeCoverage() macros.  Adjust the Bloom-filter hash function so that it
correctly deals with zero-blobs.

FossilOrigin-Name: 629ee2e3e3125bfd2af435c6713d49e46691213ad15db0a5e93a63a77f1130c2

3 years agoApply the Bloom filter only on those terms of an index that have equality
drh [Sat, 4 Dec 2021 14:24:30 +0000 (14:24 +0000)] 
Apply the Bloom filter only on those terms of an index that have equality
constraints.

FossilOrigin-Name: a70429596a3c6a413b03118b0d800521b3526d99dcf88a48acc3189b51518d82

3 years agoAdd the "WITH BLOOM FILTER" clause to the EXPLAIN QUERY PLAN output for
drh [Sat, 4 Dec 2021 13:52:08 +0000 (13:52 +0000)] 
Add the "WITH BLOOM FILTER" clause to the EXPLAIN QUERY PLAN output for
cases were a Bloom filter is used.

FossilOrigin-Name: 8e078c0e404fe4b3661dd4a11a992a8914c99e2a144cecc417421cbd68fa08cc

3 years agoFirst attempt to use Bloom filters to optimize star-schema queries.
drh [Sat, 4 Dec 2021 13:43:57 +0000 (13:43 +0000)] 
First attempt to use Bloom filters to optimize star-schema queries.

FossilOrigin-Name: 28161fba9bcde5ae4b36b22d766c881b795af111a3a323c90f6149d0fea9297d

3 years agoMerge the sqlite3WhereBegin() simplification from trunk.
drh [Fri, 3 Dec 2021 19:10:17 +0000 (19:10 +0000)] 
Merge the sqlite3WhereBegin() simplification from trunk.

FossilOrigin-Name: 41ba2dfdd3a18671fc78d60935a16fa50f36af3d6481eff2ca9fba88e7093997

3 years agoFactor the noop-join-elimination optimization out of the sqlite3WhereBegin()
drh [Fri, 3 Dec 2021 18:53:53 +0000 (18:53 +0000)] 
Factor the noop-join-elimination optimization out of the sqlite3WhereBegin()
routine and into a separate "no-inline" subroutine, in order to reduce the
complexity of sqlite3WhereBegin() and thereby encourage C compilers to
inline sqlite3WhereCodeOneLoopStart().

FossilOrigin-Name: 6225e9abcb0261fefca4a26530524ffc449f937f8ae1ece718af2c3c3d73d78d

3 years agoMerge recent trunk enhancements into the bloom-filter branch.
drh [Fri, 3 Dec 2021 16:02:05 +0000 (16:02 +0000)] 
Merge recent trunk enhancements into the bloom-filter branch.

FossilOrigin-Name: 11d97fb8be6b5155f38df130d7e828edd0f381e32f651458939b1cb9cb973fff

3 years agoFix exprAnalyze() after recent performance enhancements so that it is able
drh [Fri, 3 Dec 2021 15:48:42 +0000 (15:48 +0000)] 
Fix exprAnalyze() after recent performance enhancements so that it is able
to handle IF_NULL_ROW opcode correctly, again.

FossilOrigin-Name: 8029e6bab508bf0b8ec1df00a829c5d4de2a84d66dc56b9ff03da879ceef7788

3 years agoFix unreachable branches resulting from prior optimizations.
drh [Fri, 3 Dec 2021 14:57:05 +0000 (14:57 +0000)] 
Fix unreachable branches resulting from prior optimizations.

FossilOrigin-Name: f3d6853ee80be2dc6d7236d98b850beb0e1931a624d4f5b194c8db742cde7ec5

3 years agoFix an over-length source code line in build.c. No logic changes.
drh [Fri, 3 Dec 2021 14:43:49 +0000 (14:43 +0000)] 
Fix an over-length source code line in build.c.  No logic changes.

FossilOrigin-Name: b9db5c5fc618a36d70ea2aced9c96094d665935b5c15a987013334f1bd79eb00

3 years agoPerformance optimization in the B-Tree cursor allocator btreeCursor(), making
drh [Fri, 3 Dec 2021 13:42:41 +0000 (13:42 +0000)] 
Performance optimization in the B-Tree cursor allocator btreeCursor(), making
it about 800K CPU cycles faster in speedtest1, and reducing the executable
size by about 100 bytes.

FossilOrigin-Name: 9df939716ace8cfe60340bbe83fc52d452ea40c29c856c588f9a1b8973282391

3 years agoOptimizations to exprAnalyze() and sqlite3WhereExprUsage() save about 1.5
drh [Thu, 2 Dec 2021 18:15:16 +0000 (18:15 +0000)] 
Optimizations to exprAnalyze() and sqlite3WhereExprUsage() save about 1.5
million CPU cycles for speedtest1, and result in a smaller binary.

FossilOrigin-Name: 1f2252e65dc5847c82246fab87dcad035bf594ba7c45362de87a009b7ebcf2d6

3 years agoMove the TK_IS token so that it is adjacent to the TK_IN token, as this
drh [Thu, 2 Dec 2021 14:28:36 +0000 (14:28 +0000)] 
Move the TK_IS token so that it is adjacent to the TK_IN token, as this
allows the C compiler to optimize better, resulting in a slightly smaller
and faster executable.

FossilOrigin-Name: 8832fa9088414a8d285a457a4effad0b7d610a87ca73cfb5c5812e784649761e

3 years agoIn the shell tool, avoid modifying internal data structures until after the arguments...
dan [Thu, 2 Dec 2021 14:16:30 +0000 (14:16 +0000)] 
In the shell tool, avoid modifying internal data structures until after the arguments to ".open" have been parsed.

FossilOrigin-Name: fcc509d325dabe06275e7804183bb8b4ba6470a45b443bc8292eecd0974e6367

3 years agoRemove an unnecessary branch from exprAnalyze(), resulting in a small
drh [Thu, 2 Dec 2021 13:45:10 +0000 (13:45 +0000)] 
Remove an unnecessary branch from exprAnalyze(), resulting in a small
performance gain.

FossilOrigin-Name: 3312be1db3519074393573265459f6a1eeabce541a9ef4d93689529ea2b8f739

3 years agoSmall performance optimization in sqlite3WhereClauseClear().
drh [Thu, 2 Dec 2021 12:55:05 +0000 (12:55 +0000)] 
Small performance optimization in sqlite3WhereClauseClear().

FossilOrigin-Name: 080b35e62e5c6bb4ea162bc75232b81e54da5e3e01e762127e228400e8afef1d

3 years agoMore small performance optimizations for sqlite3WhereGetMask().
drh [Thu, 2 Dec 2021 12:34:05 +0000 (12:34 +0000)] 
More small performance optimizations for sqlite3WhereGetMask().

FossilOrigin-Name: 3de2c557d915d1b4a9b0e540d5e80ffb243e7123d0ec65c5052f4d6f1cce56b2

3 years agoSmall performance optimization in sqlite3WhereGetMask().
drh [Thu, 2 Dec 2021 04:00:45 +0000 (04:00 +0000)] 
Small performance optimization in sqlite3WhereGetMask().

FossilOrigin-Name: 7edec54ab045c0493fc5d27d47d7bf0e08d3b0b298f428646fd3f0ee24dfcade

3 years agoSmall performance enhancement for whereScanInit().
drh [Thu, 2 Dec 2021 02:22:35 +0000 (02:22 +0000)] 
Small performance enhancement for whereScanInit().

FossilOrigin-Name: ed84e124c6097b756ca687ac64df7ee801d14b16c835f1a9e8b336f785157d85

3 years agoPerformance improvement in query planning.
drh [Thu, 2 Dec 2021 01:30:16 +0000 (01:30 +0000)] 
Performance improvement in query planning.

FossilOrigin-Name: ca59533bbb7f21d7b39dee7999d3f36ac516f8c75b2203039beeb2852ada42d4

3 years agoMerge trunk fixes into the bloom-filter branch.
drh [Wed, 1 Dec 2021 21:07:05 +0000 (21:07 +0000)] 
Merge trunk fixes into the bloom-filter branch.

FossilOrigin-Name: 0864bfbf079a98beaa484911edb17c3dc728e78eca231d4247b282fd824cc098

3 years agoCheck for foreign key constraint errors prior to returning the results from
drh [Wed, 1 Dec 2021 19:17:14 +0000 (19:17 +0000)] 
Check for foreign key constraint errors prior to returning the results from
a RETURNING clause.  See [forum:/forumpost/793beaf322|forum post 793beaf322].

FossilOrigin-Name: a818ba2ed635b91e279dde44236fc7446a33db2b46c9409b67021248c01bf4e5

3 years agoAdd a Bloom filter to the automatic-index mechanism.
drh [Wed, 1 Dec 2021 16:31:02 +0000 (16:31 +0000)] 
Add a Bloom filter to the automatic-index mechanism.

FossilOrigin-Name: 50ac4de1d7cbb586ea7969e1ae80ea8b021e194edc2fa7db19374b4ee9369bee

3 years agoAdd the "static" qualifier to some internal functions in code for various SQLite...
dan [Wed, 1 Dec 2021 11:03:50 +0000 (11:03 +0000)] 
Add the "static" qualifier to some internal functions in code for various SQLite extensions.

FossilOrigin-Name: 8c986782547211098eb0e4e722eda0097421223af279381373d0055211b5e9d2

3 years agoIn the automatic index generator logic, be more precise about when a
drh [Tue, 30 Nov 2021 14:07:58 +0000 (14:07 +0000)] 
In the automatic index generator logic, be more precise about when a
partial automatic index is allowed in order to capture more cases where it
is legal to use a partial automatic index.

FossilOrigin-Name: 664b461bb5063d98047fc2e51a3827235cd9f55ca2e23cb66e719eac53fb5437

3 years agoMerge in the proposed date/time function enhancements: (1) Add the
drh [Mon, 29 Nov 2021 18:09:54 +0000 (18:09 +0000)] 
Merge in the proposed date/time function enhancements:  (1) Add the
unixepoch() function, (2) the 'auto' modifier and (3) the 'julianday' modifier.

FossilOrigin-Name: 19c51b46e4095ee28badb10f4e08bbd330bda320c9a8806e93b8fc60ba211a2e

3 years agoBump the version number up to 3.38.0 in order to begin the next development
drh [Mon, 29 Nov 2021 17:55:12 +0000 (17:55 +0000)] 
Bump the version number up to 3.38.0 in order to begin the next development
cycle.

FossilOrigin-Name: 8ad1fcaa1b734e32d8d67c4cca7a23d2b9717ae5c7c2c5ad5a3411a503ee23ae

3 years agoAdd the unixepoch() function and the 'auto' and 'julianday' modifiers. unixepoch
drh [Mon, 29 Nov 2021 17:23:27 +0000 (17:23 +0000)] 
Add the unixepoch() function and the 'auto' and 'julianday' modifiers.

FossilOrigin-Name: 559fdc0aa76f4c207f99f7b0cee42043b402dc388165817529d9963b115a798c

3 years agoFollowing a prior error, an ALWAYS() in sqlite3ExprCanBeNull() might be false.
drh [Sun, 28 Nov 2021 19:54:38 +0000 (19:54 +0000)] 
Following a prior error, an ALWAYS() in sqlite3ExprCanBeNull() might be false.
dbsqlfuzz 5dbec6678a20e7595a34dfdd869a3b9722b3ca43.

FossilOrigin-Name: 4e207401acce1bdc17025f2d55bd94234b435e286cd43e1eda03b6949a2a91d3

3 years agoVersion 3.37.0 version-3.37.0
drh [Sat, 27 Nov 2021 14:13:22 +0000 (14:13 +0000)] 
Version 3.37.0

FossilOrigin-Name: bd41822c7424d393a30e92ff6cb254d25c26769889c1499a18a0b9339f5d6c8a

3 years agoFix a harmless comment typo.
drh [Sat, 27 Nov 2021 12:03:51 +0000 (12:03 +0000)] 
Fix a harmless comment typo.

FossilOrigin-Name: 7c567338ae4dd31097e9ae5c693b84369c35c5a52534797e8186b4be7297ba78

3 years agoAdd platform "Darwin-arm64" to test/releasetest_data.tcl.
drh [Fri, 26 Nov 2021 20:26:37 +0000 (20:26 +0000)] 
Add platform "Darwin-arm64" to test/releasetest_data.tcl.

FossilOrigin-Name: 1d5c9aacb8ab6349935561cc12734cf348c12c86e4663ddc7af113b3ed0f6186

3 years agoImproved defenses against integer overflow when computing the size of a
drh [Fri, 26 Nov 2021 17:10:18 +0000 (17:10 +0000)] 
Improved defenses against integer overflow when computing the size of a
memory allocations.  No bugs were fixed here.  But perhaps future bugs will
be prevented.

FossilOrigin-Name: eb878c01f317f09e8ef6b1bd2ec8d6d5cd6ce0bdfe9da7fa7d92d2047cc9d9e4

3 years agoFixes to internal comments. No changes to code or documentation.
drh [Fri, 26 Nov 2021 15:08:55 +0000 (15:08 +0000)] 
Fixes to internal comments.  No changes to code or documentation.

FossilOrigin-Name: 1489b196ce82cddf7360aff6c89219ca25e666187f0f5ff6419ba3b504cdef8d

3 years agoAvoid splitting Failure-Detection test cases in wapptest.tcl.
dan [Wed, 24 Nov 2021 21:16:32 +0000 (21:16 +0000)] 
Avoid splitting Failure-Detection test cases in wapptest.tcl.

FossilOrigin-Name: 654e6cf8ab493d48b1827bb8100d4e4366a8e889e647c233a9b1b1278a7133d0

3 years agoUpdate Makefile.msc to support target "tcltest" in the same way as the autoconf build...
dan [Wed, 24 Nov 2021 11:33:01 +0000 (11:33 +0000)] 
Update Makefile.msc to support target "tcltest" in the same way as the autoconf build system.

FossilOrigin-Name: 0f131b92252afc95c8c2d160d4be9ac2a737a610ee355efcd819f1af3bae3c56

3 years agoChanges a test pattern for RBU so that it works regardless of whether newer
drh [Tue, 23 Nov 2021 22:28:09 +0000 (22:28 +0000)] 
Changes a test pattern for RBU so that it works regardless of whether newer
TCL versions are used.

FossilOrigin-Name: 5a9921c92ade9e13c3e49c50325c96e3264f3ad352a187387a960783a68bc9d3

3 years agoFix a compiler warning in the dbserialize method of the TCL interface.
drh [Tue, 23 Nov 2021 12:59:25 +0000 (12:59 +0000)] 
Fix a compiler warning in the dbserialize method of the TCL interface.

FossilOrigin-Name: ba71d030fef4cd4251dc882acc6897dbf9aaba498652900c491b082add87404f

3 years agoExclude two recently added tests in where.test from valgrind runs. They fail due...
dan [Tue, 23 Nov 2021 11:34:43 +0000 (11:34 +0000)] 
Exclude two recently added tests in where.test from valgrind runs. They fail due to the subtly different handling of real numbers under valgrind.

FossilOrigin-Name: e842d2085b295ef1c927611f5d3b211fb6b513ca2676c074fe90331da81734eb

3 years agoOmit wal mode tests in memdb1.test for builds and configurations that do not support...
dan [Mon, 22 Nov 2021 16:50:41 +0000 (16:50 +0000)] 
Omit wal mode tests in memdb1.test for builds and configurations that do not support wal mode.

FossilOrigin-Name: 0f13c0d9fd7757c6e0b845a285c0047d2c60293354335660d19d80ad799646fc

3 years agoOmit wal mode tests in vacuum-into.test for builds and configurations that do not...
dan [Mon, 22 Nov 2021 16:48:42 +0000 (16:48 +0000)] 
Omit wal mode tests in vacuum-into.test for builds and configurations that do not support wal mode.

FossilOrigin-Name: 65de17635468791678b9d205552a4faec2d6c3b7d330c559b6f81ab072254533

3 years agoDo not attempt to run the tests in alterfault.est with SQLITE_OMIT_ALTERTABLE builds.
dan [Mon, 22 Nov 2021 16:43:53 +0000 (16:43 +0000)] 
Do not attempt to run the tests in alterfault.est with SQLITE_OMIT_ALTERTABLE builds.

FossilOrigin-Name: 6f6f31c7df6831af28a24e69f744beeade739bb7bbb0810d5bbe592e4cd75e3d

3 years agoFix a typo in memdb1.test preventing tests from passing with -DSQLITE_DEFAULT_AUTOVAC...
dan [Mon, 22 Nov 2021 16:27:36 +0000 (16:27 +0000)] 
Fix a typo in memdb1.test preventing tests from passing with -DSQLITE_DEFAULT_AUTOVACUUM=1 builds.

FossilOrigin-Name: eff4187c50790827d05bb28867cc6546196e7eee3b4c4de54b4e68bfb4e2830e