]>
git.ipfire.org Git - thirdparty/sqlite.git/log
drh [Sat, 16 Jan 2021 20:22:11 +0000 (20:22 +0000)]
Improved handling of vector equalities in the EXISTS-to-IN translator.
FossilOrigin-Name:
ef49ee4a3766146963bfb6b013472f9836afb9c5b0d21a8533871cf961139e38
drh [Sat, 16 Jan 2021 18:55:10 +0000 (18:55 +0000)]
Give the EXISTS-to-IN optimization the ability to handle some cases that
involve vector comparisons, instead of throwing a mysterious error in those
cases.
FossilOrigin-Name:
87e78a19bb3ae1caf57aeeae53a5ab4efdccb57265f25d5c19b62eae53747aff
drh [Sat, 16 Jan 2021 18:22:10 +0000 (18:22 +0000)]
Add debugging output about the EXISTS-to-IN optimization when
the ".wheretrace" flag has the 0x20 bit set.
FossilOrigin-Name:
0dad5ce34ad8a59200b013453c9334f8898e07f2c0107c8c734ecc34b67de572
dan [Fri, 15 Jan 2021 17:51:56 +0000 (17:51 +0000)]
Add OOM injection tests for new code on this branch.
FossilOrigin-Name:
9a181dbaedcc2117e670e679ca94ed6d1fabd90c835671dee36424dd0646c4e5
dan [Fri, 15 Jan 2021 16:37:32 +0000 (16:37 +0000)]
Update header comments for routines added by this branch.
FossilOrigin-Name:
950030d679933f9ccd2b86ee650a4a78d338278a3629f0d289cca720a43e686b
dan [Fri, 15 Jan 2021 15:32:09 +0000 (15:32 +0000)]
Ensure the EXISTS->IN transformation preserves the collation sequence of the comparison operation.
FossilOrigin-Name:
a373baae12c914e48fd84de77998e301fdd3da43b06b9d64ac24a14418ed48cd
drh [Fri, 15 Jan 2021 15:21:27 +0000 (15:21 +0000)]
Fix a potential NULL pointer dereference following OOM.
FossilOrigin-Name:
8ce3cb90965771530c0021173d98720fc4c76bb99e69f7a879f80471dea0aace
drh [Fri, 15 Jan 2021 15:17:14 +0000 (15:17 +0000)]
Add a new optimizer disabling bit to close off the exists-to-in optimization,
for testing purposes.
FossilOrigin-Name:
a80c9a076d31729282004ca372913c9fdbfb6e74711fbb8c5dc12ee0ecba2b87
drh [Fri, 15 Jan 2021 14:25:06 +0000 (14:25 +0000)]
Small performance improvement in the EXISTS-to-IN translator for the
common case where the EXISTS operator is not found in the WHERE clause.
FossilOrigin-Name:
dcb7772d7695ddbc0fe89e06c07ff4a6ae4fa05de914e2ec10b5cc07a62ed49f
drh [Fri, 15 Jan 2021 14:15:31 +0000 (14:15 +0000)]
Merge the latest trunk enhancements into the exists-to-in branch.
FossilOrigin-Name:
13c4c9088cc8a2426e30a2ad1e9b9969407249281c6ed16653d43a0e6852a2e4
dan [Fri, 15 Jan 2021 11:39:46 +0000 (11:39 +0000)]
Add simple tests (and a fix) for the change on this branch.
FossilOrigin-Name:
897f3f40267dc922f0fda287484435e1fd8709bade3e87c3829e2f945bb5e4aa
drh [Thu, 14 Jan 2021 20:57:47 +0000 (20:57 +0000)]
Improvements to the min/max optimization. Fix for a performance
regression introduced at [
b8ba2f17f938c035 ] reported by
[forum:/forumpost/
4050026ab8 |forum post
4050026ab8 ]
FossilOrigin-Name:
249a71cc6822d6bdd5bb9e727aac81c6549693b418e9c0987b96850ee332c940
dan [Thu, 14 Jan 2021 20:50:40 +0000 (20:50 +0000)]
Allow the planner to convert an EXISTS(SELECT...) expression in a WHERE clause to the equivalent IN(...) expression in situations where this is possible and advantageous.
FossilOrigin-Name:
9f90a88221d0694951c353e58efce342eb0b868b8ca6a4469c8205e5c7855b24
drh [Thu, 14 Jan 2021 00:53:14 +0000 (00:53 +0000)]
The early-out of the inner loop on the min/max optimization was overly
aggressive for the cases where there is a join and outer loops contain
IN operators. Fix this. Test case in TH3.
FossilOrigin-Name:
ccd3bae14b6b47bb0f9622700c04db989f76ce65e10e0709964cfd0675eca762
drh [Wed, 13 Jan 2021 21:05:07 +0000 (21:05 +0000)]
drh [Wed, 13 Jan 2021 19:28:17 +0000 (19:28 +0000)]
Expand the number of optimization-disable bits from 16 to 32. Use one of
the new bits to disable the min/max optimization, so that we can more easily
verify that we get the same answer both with and within that optimization.
FossilOrigin-Name:
fd0c9a123b58b7b134ed67f26dbb4196b61e56227f078422cc7e9a3497054c2d
drh [Wed, 13 Jan 2021 15:23:17 +0000 (15:23 +0000)]
Further enhancements to the min/max optimization of
[/info/
b8ba2f17f938c035 |check-in
b8ba2f17f938c035 ] to fix the performance
regression identified by
[forum:/forumpost/
623f571482 |forum post
623f571482 ].
FossilOrigin-Name:
188772a1dbaf066fbddd39c718fdd87478b19a920622f4640bcb79d4ef065331
drh [Wed, 13 Jan 2021 12:59:20 +0000 (12:59 +0000)]
cli: Omit surplus whitespace at the end of lines in .explain output.
FossilOrigin-Name:
11e4eb095746602961a178044809a68a77ba7b367596997bef726e54062423d9
drh [Wed, 13 Jan 2021 11:44:51 +0000 (11:44 +0000)]
In the .selecttrace output, show the ORDER BY clause added by the Min/Max
optimization.
FossilOrigin-Name:
db0ecfe66433f8915b6eb16d3735a4a0d0f8e0bbc395bc9c1364387506fc4657
drh [Tue, 12 Jan 2021 16:26:36 +0000 (16:26 +0000)]
Merge the ParseCleanup enhancement to trunk.
FossilOrigin-Name:
35824c1bcbd89ae4a94acfbe511bfbd888c418b981819e72bc9a991fc82d136c
drh [Tue, 12 Jan 2021 15:30:01 +0000 (15:30 +0000)]
Fix a potential use-after-free following an OOM in sqlite3ParserAddCleanup()
and add a mechanism to detect situations where this might occur in the
future.
FossilOrigin-Name:
38ef8ab9830e12acd2c710e113939b1f8dced02612c6933c37a3c948a4030d0a
drh [Tue, 12 Jan 2021 14:23:03 +0000 (14:23 +0000)]
dan [Tue, 12 Jan 2021 14:19:12 +0000 (14:19 +0000)]
Fix for the top-level configure script so that it works with tcl 8.7.
FossilOrigin-Name:
4810f814ff13db31b95b471d53e9654ecde286c23d10984e3cc8788d79ee79ee
drh [Mon, 11 Jan 2021 20:37:02 +0000 (20:37 +0000)]
Add a linked list of ParseCleanup objects to the end of a Parse object and
use that list as a place to put other sub-objects that need to be deallocated.
Have a single such list for infrequently used sub-objects is more efficient
than doing an a separate check for each kind of sub-object.
FossilOrigin-Name:
affa2b7b316941b8a6c4d0d1ff212c81a593faf1d05d129e14d2b70d73a25c59
drh [Sat, 9 Jan 2021 19:10:04 +0000 (19:10 +0000)]
New CLI command: ".stats vmstep" enables the display of the virtual-machine
step count only, after each command. Useful for optimization problems.
FossilOrigin-Name:
49dfce469e6a17111b349e53578479daf783064200bf0eec5bf8a91d3553b19f
drh [Sat, 9 Jan 2021 18:24:33 +0000 (18:24 +0000)]
More detailed compile-time testing before attempting to use atomic load
intrinsics. See
[forum:/forumpost/
fc0237a39b30ac0a |forum post
fc0237a39b30ac0a ].
FossilOrigin-Name:
5204c2c4a7b73a64764b0d2d1d7c53709bb64e0d2685a829c7bf31af13bab5e7
drh [Fri, 8 Jan 2021 19:53:18 +0000 (19:53 +0000)]
Fix an issue with sha3_query() when the first argument contains blank
SQL statements.
FossilOrigin-Name:
24baab9a9faab50c26d7167821031cd66aaf784baefbc0f92354ae54ac43a714
dan [Thu, 7 Jan 2021 16:59:35 +0000 (16:59 +0000)]
Update cksumvfs to check that the xCurrentTimeGetInt64 method of the underlying VFS is not NULL before invoking it.
FossilOrigin-Name:
c71f6cadcc8c2172ad4113bbe4026aac4ebb8a91485454e8a14de32d197a93aa
dan [Thu, 7 Jan 2021 16:29:34 +0000 (16:29 +0000)]
drh [Thu, 7 Jan 2021 16:10:14 +0000 (16:10 +0000)]
Fix harmless typos in comments per
[forum:/forumpost/
7849e58dd5 |forum post
7849e58dd5 ]
FossilOrigin-Name:
d1e22e2f76cce7eb9f9029646176daef2d9e41c7bb1d3e1da182fbdd0096605c
dan [Mon, 4 Jan 2021 18:28:29 +0000 (18:28 +0000)]
Add extra test for handling of embedded nul characters in the fts4 unicode61 tokenizer.
FossilOrigin-Name:
c2c2c7e945f5d5700d91b8e779117e70e388ffc613912a434885ae27f5fe4e22
drh [Sat, 2 Jan 2021 23:56:37 +0000 (23:56 +0000)]
In Lemon, factor the parser stack overflow detection logic out of the
yy_reduce() subroutine and into the main parser routine, so that when overflow
is detected, it can exit immediately. This saves a single conditional in
the main loop of the parser.
FossilOrigin-Name:
203c049c662380411522d0c7c493201331bbb2792a7c5b12684f04f532a0695d
drh [Fri, 1 Jan 2021 22:06:17 +0000 (22:06 +0000)]
Avoid allocating space to hold the prepared statements for CREATE statements
when parsing the schema of an existing database, since those prepared
statements are never used.. This helps to make startup faster,
FossilOrigin-Name:
d01e9f2d00dc439c529cd8885a219fcddbaad73b9f471b020e2a0c18e2add69b
drh [Fri, 1 Jan 2021 21:02:37 +0000 (21:02 +0000)]
Faster and smaller test to ensure that the sqlite_schema.sql field is always
a CREATE statement of some kind.
FossilOrigin-Name:
76de2bb04b1c02a6c0300cd61d9b3d2477d845aa0d1cdb9dbe4f354b9fedd923
drh [Fri, 1 Jan 2021 20:04:34 +0000 (20:04 +0000)]
Change the unions of the Table.addColOffset field from characters to bytes.
This makes the query that implements ALTER TABLE ADD COLUMN more complex and
slightly slower, but also makes CREATE TABLE statement parsing faster by
avoiding a call to sqlite3UtfCharLen(). Since, CREATE TABLE parsing is far
more common than ALTER TABLE, this is a net win for performance.
FossilOrigin-Name:
6f25f2529f1495a26129d7d407979906e4962b2de351f901d41cb037d05ba780
drh [Fri, 1 Jan 2021 19:17:01 +0000 (19:17 +0000)]
Use the column name hash to improve performance of column name collision
detection while parsing CREATE TABLE statements.
FossilOrigin-Name:
d02820f03575e4633a7917427f11c19f99bd7b92f37d0ffe6fdc2418ad729813
drh [Fri, 1 Jan 2021 18:32:15 +0000 (18:32 +0000)]
Modify the makefile rule for "startup" so that it always builds with
-Os and -DSQLITE_THREADSAFE=0 and no other options, for consistency of
performance.
FossilOrigin-Name:
5ac939e0adc923378173297e934c3664254a4fefbcddcc842bf4cc42dbaacf4f
drh [Fri, 1 Jan 2021 18:23:56 +0000 (18:23 +0000)]
Size reduction and performance increase in sqlite3Prepare().
FossilOrigin-Name:
41f45c8e894f48049325ccfef12cec0887b636bfad5d531a47628eb9e8612924
drh [Fri, 1 Jan 2021 17:01:33 +0000 (17:01 +0000)]
Small size reduction and performance improvement in sqlite3VdbeMakeReady()
by linking the new prepared statement into the prepared statement list sooner
rather than later.
FossilOrigin-Name:
2996e800a02967f9d0e27c816cf0b7b581a25634f94abcf167f27b019e1515e5
drh [Fri, 1 Jan 2021 16:43:26 +0000 (16:43 +0000)]
Streamline processing of the authenticator callback for the common case
when there is no callback.
FossilOrigin-Name:
d3196685d958bf22b5c362e96bbf8e1df58cc09cc3abc4bfa94bb33bc28c61aa
drh [Fri, 1 Jan 2021 15:13:17 +0000 (15:13 +0000)]
Add the "startup" test program designed to measure startup performance,
and in particular schema parsing time.
FossilOrigin-Name:
7b3b31efb0047c5a461f487905cffba2b0ddb1518a6e757ca092eb40e1e2cd49
drh [Fri, 1 Jan 2021 01:44:06 +0000 (01:44 +0000)]
Do not attempt to take a pointer to the ceil() and floor() functions as
those routines are intrinsics on some versions of MSVC.
FossilOrigin-Name:
e5d7209e118a84537a85c0c9cd2b7ca4cd6ccf04181dc840b19339b4c93840cd
drh [Wed, 30 Dec 2020 13:20:27 +0000 (13:20 +0000)]
drh [Wed, 30 Dec 2020 13:10:57 +0000 (13:10 +0000)]
New test cases for cursor renumbering in the UNION ALL query flattener.
FossilOrigin-Name:
270babf259750f3d6c490a08df608a101b24b3c06b9e8a938a0e09a854af6a20
drh [Tue, 29 Dec 2020 15:06:26 +0000 (15:06 +0000)]
Do not set the P3 parameter on OP_RowCell when copying an index btree, as
P3 is not used in that case.
FossilOrigin-Name:
eef070a4aadf02a845d0ed00767be049d3b76e811e24797a116776fa836d1b03
drh [Mon, 28 Dec 2020 21:42:38 +0000 (21:42 +0000)]
Fix missing comma in ctime.c that would cause the ENABLE_MATH_FUNCTIONS
output rw to merge with whatever row followed. Problem reported in
[forum:/forumpost/
aacac97680 |forum post
aacac97680 ].
FossilOrigin-Name:
328bc4a01dd67096be49c8b5a656109ad2839a7959d1b00c02a96bfbcb44ec18
dan [Wed, 23 Dec 2020 16:46:39 +0000 (16:46 +0000)]
Add the sqlite3session_memory_used() API to the sessions module. For querying the amount of heap memory currently being used by a session object.
FossilOrigin-Name:
823f75c2e448b649cbe9e174be21524ae3f580beedced65701ad49a2dcc5ee19
dan [Tue, 22 Dec 2020 20:35:22 +0000 (20:35 +0000)]
Fix SQLITE_OMIT_WINDOWFUNC builds by moving declaration of sqlite3ExpandSubquery out of "ifndef SQLITE_OMIT_WINDOWFUNC" block.
FossilOrigin-Name:
9587fa8b29fc2f91d751a71b909f574014656f24d276b4974f47fcc18dbadcb8
mistachkin [Tue, 22 Dec 2020 19:57:53 +0000 (19:57 +0000)]
dan [Tue, 22 Dec 2020 16:23:29 +0000 (16:23 +0000)]
Fix a problem handling sub-queries with both a correlated WHERE clause and a "HAVING 0" clause where the parent query is itself an aggregate.
FossilOrigin-Name:
f62f983b56623f0ec34f9a54ce1c21b013a20399162f5ee6ee43b23f10c2ecd5
drh [Tue, 22 Dec 2020 14:54:20 +0000 (14:54 +0000)]
Simplification to the aggregate-function analysis error detection logic at
the end of sqlite3Select().
FossilOrigin-Name:
82884438e30ad8241f8249927fe92e0856d78b64d7ade38f3d5bb1c931d958d0
dan [Mon, 21 Dec 2020 19:50:10 +0000 (19:50 +0000)]
Fix problems with joining UNION ALL sub-queries against other sub-queries that contain LEFT JOIN.
FossilOrigin-Name:
d554f710a5abbe64022f47a14ef67227c861a8f0991d85d240434e9a709cf8b8
dan [Mon, 21 Dec 2020 18:39:58 +0000 (18:39 +0000)]
Fix a problem when flattening joins between a UNION ALL sub-query and another sub-query that uses more than one window function.
FossilOrigin-Name:
ef9733fe1c6b31849a5da1037d21915f82e0e4ab42d1a23ead8a121012f1bace
drh [Mon, 21 Dec 2020 14:51:33 +0000 (14:51 +0000)]
Enhance documentation to show that "ro" is the correct way to say "readonly"
in the mode= query parameter.
FossilOrigin-Name:
788b96851d9ced84757c48dc3e0414cab27ee7e50e9730dab30b2e42a7762397
drh [Mon, 21 Dec 2020 12:14:59 +0000 (12:14 +0000)]
Add the --timer option to fuzzcheck. Get the --timeout option working in
fuzzcheck when running dbsql tests.
FossilOrigin-Name:
3b0c9b41a877c7344ef3b7c5b6981436005716e25b41b1a1ffc145520243abd3
drh [Sun, 20 Dec 2020 14:51:17 +0000 (14:51 +0000)]
Always declare the sqlite3WhereTrace variable, even for non-debug builds.
FossilOrigin-Name:
88d93ee380b6fd87474545f20ade874ba05c784c787ce9c45ebfcffed3795308
dan [Sat, 19 Dec 2020 15:39:10 +0000 (15:39 +0000)]
Fix a broken assert() in fts5 that could be triggered by corrupt database records.
FossilOrigin-Name:
b79f59f9ad897d5bd4b9d17e6219bc765b02450bfe14dc020485f221ba6b02cb
drh [Sat, 19 Dec 2020 13:58:06 +0000 (13:58 +0000)]
Allow UNION ALL sub-queriesto be flattened even if the parent query is a join.
FossilOrigin-Name:
df1d6482f9e92dafdca1948e96eef52d8646eef9c356394afabe431d6357dd34
dan [Fri, 18 Dec 2020 18:04:44 +0000 (18:04 +0000)]
Fix for the previous fix in the case where a UNION ALL sub-query is joined against some other compound query.
FossilOrigin-Name:
63c5cfb9ae8f4598a523bed2a60c0e69172179952961a573113fcf756c06551d
dan [Fri, 18 Dec 2020 16:13:39 +0000 (16:13 +0000)]
When flattening UNION ALL subqueries into a join query, ensure that separate cursor numbers are used for each segment of the newly flattened query.
FossilOrigin-Name:
c510377b0b052e400f2ee4f20220b61cdf74ee44b9bb9e6490787c88dd4c55aa
dan [Thu, 17 Dec 2020 17:17:12 +0000 (17:17 +0000)]
Fix a part of the header comment for flattenSubquery().
FossilOrigin-Name:
dc0937ce9d5569e3409b2b036a9f15b896125f4eb2eec30e3f0bbe4a92bcd0ad
dan [Thu, 17 Dec 2020 16:48:04 +0000 (16:48 +0000)]
Add test cases and minor fixes to this branch.
FossilOrigin-Name:
5d6dc29d5f81738b07e4fee652fb2343fc409c2545f2f4667e8ee82d1a75f721
drh [Thu, 17 Dec 2020 15:17:42 +0000 (15:17 +0000)]
In the CLI, add the ".filectrl data_version" command. And put the various
".filectrl" subcommands in alphabetical order.
FossilOrigin-Name:
3434452148eef39ba3ba2f40a6fedb6ec4f5157cbc2763b3ec90ec7f2b126382
dan [Thu, 17 Dec 2020 11:24:26 +0000 (11:24 +0000)]
Fix a problem with sqlite3_expanded_sql() that could occur with statements that use both numbered (e.g. "?1") and unnumbered (i.e. "?") parameters.
FossilOrigin-Name:
2a6cd6833e44dd6a2ac388815f43be6508f6fa6db5e451e964276a6c87e6c5ae
drh [Wed, 16 Dec 2020 21:09:45 +0000 (21:09 +0000)]
Enhance the sqlite3BtreeTransferRow() routine so that it does more careful
checks for corrupt database pages.
FossilOrigin-Name:
85952e71175dae73c4e587a3b80783825d91fe8567a819e072da651c1ff4131b
dan [Wed, 16 Dec 2020 20:00:46 +0000 (20:00 +0000)]
Allow sub-queries that use UNION ALL to be flattened, even if the parent query is a join. Still some problems on this branch.
FossilOrigin-Name:
00e4bf74d3dfb87666a2266905f7d1a2afc6eb088d22cfd4f38f048733d6b936
drh [Wed, 16 Dec 2020 14:20:45 +0000 (14:20 +0000)]
Remove an unnecessary and incorrect #ifdef. Fix harmless compiler warnings.
FossilOrigin-Name:
31cd1bbfa5b06723288d99d1cb423f88353bdef770b82e9103f71a796d66f660
drh [Wed, 16 Dec 2020 13:17:32 +0000 (13:17 +0000)]
Fix a typo in the sqlite3_free_filename() documentation.
FossilOrigin-Name:
48301edc90fe5811df0394b106edce7726d0ea86ac562c9f4db511b812a76433
dan [Tue, 15 Dec 2020 19:27:20 +0000 (19:27 +0000)]
Fix another integer overflow triggered by a corrupt database in recently modified vacuum code.
FossilOrigin-Name:
4e2dd2a53364f1fed48b995fd5d2642472585f6da5e4735e9da193ba7ff45514
dan [Tue, 15 Dec 2020 16:28:07 +0000 (16:28 +0000)]
When the -statstep option is passed to the "rbu" executable, print out memory stats right before exiting, as well as every -statstep steps.
FossilOrigin-Name:
94f81b51176566409b7d16b30d861f48ad15bb43a145df6e02e0880f7c348109
dan [Tue, 15 Dec 2020 13:55:38 +0000 (13:55 +0000)]
Change an fts5 assert() that can be triggered by a corrupt database to an if() condition.
FossilOrigin-Name:
ea0a7f103a6f6a9e57d7377140ff9f372bf2b156f86f148291fb05a7030f2b36
drh [Mon, 14 Dec 2020 15:39:12 +0000 (15:39 +0000)]
Enhance UPSERT so that it allows multiple ON CONFLICT clauses and does
not require a conflict target for DO UPDATE.
FossilOrigin-Name:
6b01a24daab1e5bcb0768ebf994368d941b1dfc217bf6b661211d900331e68cf
dan [Mon, 14 Dec 2020 15:25:14 +0000 (15:25 +0000)]
Fix an integer overflow problem in new VACUUM code.
FossilOrigin-Name:
59b4367fd852ba1bfefdff99a27b11657495a3f114ed6f85fdcf6c532f4a19fa
drh [Mon, 14 Dec 2020 13:52:03 +0000 (13:52 +0000)]
drh [Sat, 12 Dec 2020 00:43:52 +0000 (00:43 +0000)]
More test cases. No new problems discovered.
FossilOrigin-Name:
f34dd67e2d0dfc9e3b5d49148fb0162853119c097cbc3fe961878875ba98d8e3
drh [Sat, 12 Dec 2020 00:28:15 +0000 (00:28 +0000)]
New test cases with corresponding bug fixes.
FossilOrigin-Name:
f22c21a94ca4cad0217f91c1a5a275bc348cb6ba0f3a54c927533bc8d8c96a90
drh [Fri, 11 Dec 2020 19:36:19 +0000 (19:36 +0000)]
Begin adding test cases. Fix one bug found so far. More are pending.
FossilOrigin-Name:
aadd67ddf2a191629b5356395f75e4556aac904a6e2f6b83742fa4f26e4253a4
dan [Fri, 11 Dec 2020 19:01:24 +0000 (19:01 +0000)]
Fix an assert() broken by recent changes to vacuum.
FossilOrigin-Name:
dd058da85ca54ae70e26cb0bdc75ff42998d4a8b29a5e2dcac44ee0e45776a85
drh [Fri, 11 Dec 2020 17:11:56 +0000 (17:11 +0000)]
drh [Fri, 11 Dec 2020 16:49:51 +0000 (16:49 +0000)]
Bug fixes so that legacy tests pass. New tests for new functionality have
not yet been added.
FossilOrigin-Name:
aa76790e58cea9a2b707f5912fd66c76545e7417442553fc13c87f773a2fe1dd
dan [Fri, 11 Dec 2020 16:03:19 +0000 (16:03 +0000)]
Add an "#ifndef SQLITE_AMALGAMATION" block around the typedef for u64 in shathree.c.
FossilOrigin-Name:
b411f29e1a6415f4a241777c45591b8389e746cd8b40d9b225e073bcb0a3bdbf
drh [Fri, 11 Dec 2020 14:34:58 +0000 (14:34 +0000)]
Fix the configure script on the autoconf distribution so that the
--disable-threadsafe option works. See
[https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=244459|FreeBSD bug 244459].
FossilOrigin-Name:
e64ff2cce3c03ba27c3bf410948ece1424113e727870015eb3806b75d0d21f94
dan [Fri, 11 Dec 2020 14:22:44 +0000 (14:22 +0000)]
Fix the expert extension so that it handles generated columns correctly.
FossilOrigin-Name:
c2ae7ba6f8f4b10bd734051a0cfa8ed9675bd58c82ede4e9eadfd7cbcc03b82d
drh [Fri, 11 Dec 2020 01:17:06 +0000 (01:17 +0000)]
Logic is in place to handle multiple ON CONFLICT clauses, but it does not work.
Any use of ON CONFLICT will likely lead to memory faults. This is an
incremental check-in to save my place.
FossilOrigin-Name:
155142314feb007d526f8f67723636fd50dc52d1cd4d3a67dd93b105c9d5c2be
drh [Thu, 10 Dec 2020 20:31:25 +0000 (20:31 +0000)]
Use an iterator for the index loop in sqlite3GenerateConstraintChecks().
The idea is that this iterator can be enhanced to traverse the indexes in
any order, as required by multi-index UPSERT.
FossilOrigin-Name:
64a4a91ecc5dcde3fa07d3cf038c74b9ede63d36628ecfb35203a9dfbbfe113c
dan [Thu, 10 Dec 2020 19:54:13 +0000 (19:54 +0000)]
dan [Thu, 10 Dec 2020 19:51:39 +0000 (19:51 +0000)]
Changes to avoid loading large records into memory within VACUUM.
FossilOrigin-Name:
56a54258560fab715b83967634b2bd4c04be43cded112b46e85da9f99ee02f7c
dan [Thu, 10 Dec 2020 19:20:15 +0000 (19:20 +0000)]
Fix minor issues with new code on this branch.
FossilOrigin-Name:
f7fa76d0963e7b34026dc20c920bfbf7961033fe2b99503f6857157595f86823
dan [Thu, 10 Dec 2020 18:07:01 +0000 (18:07 +0000)]
dan [Thu, 10 Dec 2020 18:06:24 +0000 (18:06 +0000)]
Better integrate the changes on this branch with OP_Insert and OP_IdxInsert.
FossilOrigin-Name:
101cef14910d6e865a94bc870aed599321b893188062a9a61d70a9434992cf23
drh [Thu, 10 Dec 2020 13:49:00 +0000 (13:49 +0000)]
Add an optional function to the chsumvfs extension. When activated by
the SQLITE_CKSUMVFS_INIT_FUNCNAME macro, this function will invoke the
file-control that sets the number of reserved bytes to 8. This can be
used to initialize a cksumvfs database file by programming languages
that do not have access to the sqlite3_file_control() interface.
FossilOrigin-Name:
01841fb4bf3d6c5fd5bcbc7d1338998c50f69f84ca475fba7cf764d636714678
drh [Thu, 10 Dec 2020 12:49:26 +0000 (12:49 +0000)]
The DO UPDATE code generator searches for the correct ON CONFLICT clause to
use.
FossilOrigin-Name:
a47e35ee2d901baaa37e7229d190f934e1b0bd3510147cd4a2a49c4a1411416a
mistachkin [Wed, 9 Dec 2020 23:35:51 +0000 (23:35 +0000)]
Fix compilation issues with MSVC related to C99.
FossilOrigin-Name:
c0de6c1fb2c486be1da01e5e4ca8c5634ba37822e418d57f272e018c3e3fc0a2
dan [Wed, 9 Dec 2020 20:33:51 +0000 (20:33 +0000)]
Transfer large index or WITHOUT ROWID records between b-trees when vacuuming without loading them into memory.
FossilOrigin-Name:
dfd4ca6891a893d0e9551689954d3e79114d5565f8a5264f96ad1d64fe1d6280
drh [Wed, 9 Dec 2020 20:30:47 +0000 (20:30 +0000)]
For upsert, the constraint check code generator uses a copy of the index list
for the target table, which can potentially be reordered.
FossilOrigin-Name:
3194c00c2c6a32bdfd5acc9fda5b38ae131d20cd3b7aea8512a41b2e76808f6a
dan [Wed, 9 Dec 2020 16:49:28 +0000 (16:49 +0000)]
Add tests for a 'delete' command on a contentless table where values that weren't actually inserted are NULL.
FossilOrigin-Name:
818c647cec7063b33b6c5de3e23599a1d61439fa6e9bf6c974b2522a5a9e1b44
dan [Wed, 9 Dec 2020 16:32:11 +0000 (16:32 +0000)]
Avoid loading large intkey rows when VACUUMing, even if the page-size is changing.
FossilOrigin-Name:
0d2c3776065dc94119899ae4164995193b82fca7ac31868f3141b729d0b65ab9
drh [Wed, 9 Dec 2020 13:11:02 +0000 (13:11 +0000)]
Improved comments in sqliteInt.h. No changes to code.
FossilOrigin-Name:
8ccb8d1d55fa5aaf625c30f0e7c10aa403d79b5574dbdfa3fd0271a4e546f7e3
drh [Wed, 9 Dec 2020 01:34:48 +0000 (01:34 +0000)]
Initialize all terms in the ON CONFLICT clause stack.
FossilOrigin-Name:
5e683fd1cbde53f37cf8a2b1e981191e2b29e3376db554691767f33c37c7547e
dan [Tue, 8 Dec 2020 20:19:07 +0000 (20:19 +0000)]
Experimental changes to vacuum to avoid loading large records entirely into memory. Currently only works in limited cases only - for rowid tables when the page-size does not change.
FossilOrigin-Name:
c90e063ca9ddcdd1e9f1a2e25a3f7d6e7ee798373ad8acf65b90536b0a124c0d