Subject: CVS commit: pkgsrc
From: Adam Ciarcinski
Date: 2018-06-07 09:36:49
Message id:

Log Message:
sqlite3: updated to 3.24.0

SQLite Release 3.24.0:
Add support for PostgreSQL-style UPSERT.
Add support for auxiliary columns in r-tree tables.
Add C-language APIs for discovering SQL keywords used by SQLite: \ 
sqlite3_keyword_count(), sqlite3_keyword_name(), and sqlite3_keyword_check().
Add C-language APIs for dynamic strings based on the sqlite3_str object.
Enhance ALTER TABLE so that it recognizes "true" and "false" \ 
as valid arguments to DEFAULT.
Add the sorter-reference optimization as a compile-time option. Only available \ 
Improve the format of the EXPLAIN QUERY PLAN raw output, so that it gives better \ 
information about the query plan and about the relationships between the various \ 
components of the plan.
Added the SQLITE_DBCONFIG_RESET_DATABASE option to the sqlite3_db_config() API.
CLI Enhancements:

Automatically intercepts the raw EXPLAIN QUERY PLAN output and reformats it into \ 
an ASCII-art graph.
Lines that begin with "#" and that are not in the middle of an SQL \ 
statement are interpreted as comments.
Added the --append option to the ".backup" command.
Added the ".dbconfig" command.

UPDATE avoids unnecessary low-level disk writes when the contents of the \ 
database file do not actually change. For example, "UPDATE t1 SET x=25 \ 
WHERE y=?" generates no extra disk I/O if the value in column x is already \ 
25. Similarly, when doing UPDATE on records that span multiple pages, only the \ 
subset of pages that actually change are written to disk. This is a low-level \ 
performance optimization only and does not affect the behavior of TRIGGERs or \ 
other higher level SQL structures.
Queries that use ORDER BY and LIMIT now try to avoid computing rows that cannot \ 
possibly come in under the LIMIT. This can greatly improve performance of ORDER \ 
BY LIMIT queries, especially when the LIMIT is small relative to the number of \ 
unrestricted output rows.
The OR optimization is allowed to proceed even if the OR expression has also \ 
been converted into an IN expression. Uses of the OR optimization are now also \ 
more clearly shown in the EXPLAIN QUERY PLAN output.
The query planner is more aggressive about using automatic indexes for views and \ 
subqueries for which it is not possible to create a persistent index.
Make use of the one-pass UPDATE and DELETE query plans in the R-Tree extension \ 
where appropriate.
Performance improvements in the LEMON-generated parser.
Bug fixes:

For the right-hand table of a LEFT JOIN, compute the values of expressions \ 
directly rather than loading precomputed values out of an expression index as \ 
the expression index might not contain the correct value.
Do not attempt to use terms from the WHERE clause to enable indexed lookup of \ 
the right-hand table of a LEFT JOIN.
Fix a memory leak that can occur following a failure to open error in the CSV \ 
virtual table
Fix a long-standing problem wherein a corrupt schema on the sqlite_sequence \ 
table used by AUTOINCREMENT can lead to a crash.
Fix the json_each() function so that it returns valid results on its \ 
"fullkey" column when the input is a simple value rather than an array \ 
or object.