2024-01-17 09:24:19 by Adam Ciarcinski | Files touched by this commit (6) |  |
Log message:
sqlite3: updated to 3.45.0
SQLite Release 3.45.0 On 2024-01-15
Added the SQLITE_RESULT_SUBTYPE property for application-defined SQL functions. \
All application defined SQL functions that invokes sqlite3_result_subtype() must \
be registered with this new property. Failure to do so might cause the call to \
sqlite3_result_subtype() to behave as a no-op. Compile with \
-DSQLITE_STRICT_SUBTYPE=1 to cause an SQL error to be raised if a function that \
is not SQLITE_RESULT_SUBTYPE tries invokes sqlite3_result_subtype(). The use of \
-DSQLITE_STRICT_SUBTYPE=1 is a recommended compile-time option for every \
application that makes use of subtypes.
Enhancements to the JSON SQL functions:
All JSON functions are rewritten to use a new internal parse tree format called \
JSONB. The new parse-tree format is serializable and hence can be stored in the \
database to avoid unnecessary re-parsing whenever the JSON value is used.
New versions of JSON-generating functions generate binary JSONB instead of JSON text.
The json_valid() function adds an optional second argument that specifies what \
it means for the first argument to be "well-formed".
Add the FTS5 tokendata option to the FTS5 virtual table.
The SQLITE_DIRECT_OVERFLOW_READ optimization is now enabled by default. Disable \
it at compile-time using -DSQLITE_DIRECT_OVERFLOW_READ=0.
Query planner improvements:
Do not allow the transitive constraint optimization to trick the query planner \
into using a range constraint when a better equality constraint is available. \
(Forum post 2568d1f6e6.)
The query planner now does a better job of disregarding indexes that ANALYZE \
identifies as low-quality. (Forum post 6f0958b03b.)
Increase the default value for SQLITE_MAX_PAGE_COUNT from 1073741824 to 4294967294.
Enhancements to the CLI:
Improvements to the display of UTF-8 content on Windows
Automatically detect playback of ".dump" scripts and make appropriate \
changes to settings such as ".dbconfig defensive off" and \
".dbconfig dqs_dll on".
|
2023-11-25 22:07:39 by Adam Ciarcinski | Files touched by this commit (8) |  |
Log message:
sqlite3: updated to 3.44.2
3.44.1 (2023-11-22):
Change the CLI so that it uses UTF-16 for console I/O on Windows. This enables \
proper display of unicode text on old Windows7 machines.
Other obscure bug fixes.
3.44.2 (2023-11-24):
Fix a mistake in the CLI that was introduced by the fix (item 15 above) in 3.44.1.
Fix a problem in FTS5 that was discovered during internal fuzz testing only \
minutes after the 3.44.1 release was tagged.
Fix incomplete assert() statements that the fuzzer discovered the day after the \
previous release.
Fix a couple of harmless compiler warnings that appeared in debug builds with GCC 16.
|
2023-11-01 21:46:04 by Adam Ciarcinski | Files touched by this commit (6) |  |
Log message:
sqlite3: updated to 3.44.0
SQLite Release 3.44.0 On 2023-11-01
Aggregate functions can now include an ORDER BY clause after their last \
parameter. The arguments to the function are processed in the order specified. \
This can be important for functions like string_agg() and json_group_array().
Add support for the concat() and concat_ws() scalar SQL functions, compatible \
with PostgreSQL, SQLServer, and MySQL.
Add support for the string_agg() aggregate SQL function, compatible with \
PostgreSQL and SQLServer.
New conversion letters on the strftime() SQL function: %e %F %I %k %l %p %P %R %T %u
Add new C-language APIs: sqlite3_get_clientdata() and sqlite3_set_clientdata().
Many errors associated with CREATE TABLE are now raised when the CREATE TABLE \
statement itself is run, rather than being deferred until the first time the \
table is actually used.
The PRAGMA integrity_check command now verifies the consistency of the content \
in various built-in virtual tables using the new xIntegrity method. This works \
for the FTS3, FTS4, FTS5, RTREE, and GEOPOLY extensions.
The SQLITE_DBCONFIG_DEFENSIVE setting now prevents PRAGMA writable_schema from \
being turned on. Previously writable_schema could be turned on, but would not \
actually allow the schema to be writable. Now it simply cannot be turned on.
Tag the built-in FTS3, FTS4, FTS5, RTREE, and GEOPOLY virtual tables as \
SQLITE_VTAB_INNOCUOUS so that they can be used inside of triggers in \
high-security deployments.
The PRAGMA case_sensitive_like statement is deprecated, as its use when the \
schema contains LIKE operators can lead to reports of database corruption by \
PRAGMA integrity_check.
SQLITE_USE_SEH (Structured Exception Handling) is now enabled by default \
whenever SQLite is built using the Microsoft C compiler. It can be disabled \
using -DSQLITE_USE_SEH=0
Query planner optimizations:
In partial index scans, if the WHERE clause implies a constant value for a table \
column, replace occurrences of that table column with the constant. This \
increases the likelihood of the partial index being a covering index.
Disable the view-scan optimization (added in version 3.42.0 - item 1c) as it was \
causing multiple performance regressions. In its place, reduce the estimated row \
count for DISTINCT subqueries by a factor of 8.
SQLite now performs run-time detection of whether or not the underlying hardware \
supports "long double" with precision greater than "double" \
and uses appropriate floating-point routines depending on what it discovered.
The CLI for Windows now defaults to using UTF-8 for both input and output on \
platforms that support it. The --no-utf8 option is available to disable UTF8 \
support.
|
2023-10-10 18:16:49 by Adam Ciarcinski | Files touched by this commit (6) |  |
Log message:
sqlite3: updated to 3.43.2
Changes in this specific patch release, version 3.43.2 (2023-10-10):
Fix a couple of obscure UAF errors and an obscure memory leak.
Omit the use of the sprintf() function from the standard library in the CLI, as \
this now generates warnings on some platforms.
Avoid conversion of a double into unsigned long long integer, as some platforms \
do not do such conversions correctly.
|
2023-09-12 21:28:13 by Adam Ciarcinski | Files touched by this commit (7) |  |
Log message:
sqlite3: updated to 3.43.1
3.43.1
Fix a regression in the way that the sum(), avg(), and total() aggregate \
functions handle infinities.
Fix a bug in the json_array_length() function that occurs when the argument \
comes directly from json_remove().
Fix the omit-unused-subquery-columns optimization (introduced in in version \
3.42.0) so that it works correctly if the subquery is a compound where one arm \
is DISTINCT and the other is not.
Other minor fixes.
|
2023-08-25 08:48:00 by Adam Ciarcinski | Files touched by this commit (6) |  |
Log message:
databases/sqlite3* devel/lemon: updated to 2.43.0
SQLite Release 3.43.0 On 2023-08-24
Add support for Contentless-Delete FTS5 Indexes. This is a variety of FTS5 \
full-text search index that omits storing the content that is being indexed \
while also allowing records to be deleted.
Enhancements to the date and time functions:
Added new time shift modifiers of the form ±YYYY-MM-DD HH:MM:SS.SSS.
Added the timediff() SQL function.
Added the octet_length(X) SQL function.
Added the sqlite3_stmt_explain() API.
Query planner enhancements:
Generalize the LEFT JOIN strength reduction optimization so that it works for \
RIGHT and FULL JOINs as well. Rename it to OUTER JOIN strength reduction.
Enhance the theorem prover in the OUTER JOIN strength reduction optimization so \
that it returns fewer false-negatives.
Enhancements to the decimal extension:
New function decimal_pow2(N) returns the N-th power of 2 for integer N between \
-20000 and +20000.
New function decimal_exp(X) works like decimal(X) except that it returns the \
result in exponential notation - with a "e+NN" at the end.
If X is a floating-point value, then the decimal(X) function now does a full \
expansion of that value into its exact decimal equivalent.
Performance enhancements to JSON processing results in a 2x performance \
improvement for some kinds of processing on large JSON strings.
New makefile target "verify-source" checks to ensure that there are no \
unintentional changes in the source tree. (Works for canonical source code only \
- not for precompiled amalgamation tarballs.)
Added the SQLITE_USE_SEH compile-time option that enables Structured Exception \
Handling on Windows while working with the memory-mapped shm file that is part \
of WAL mode processing. This option is enabled by default when building on \
Windows using Makefile.msc.
The VFS for unix now assumes that the nanosleep() system call is available \
unless compiled with -DHAVE_NANOSLEEP=0.
|
2023-05-17 14:29:58 by Adam Ciarcinski | Files touched by this commit (8) |  |
Log message:
sqlite3: updated to 3.42.0
SQLite Release 3.42.0 On 2023-05-16
Add the FTS5 secure-delete command. This option causes all forensic traces to be \
removed from the FTS5 inverted index when content is deleted.
Enhance the JSON SQL functions to support JSON5 extensions.
The SQLITE_CONFIG_LOG and SQLITE_CONFIG_PCACHE_HDRSZ calls to sqlite3_config() \
are now allowed to occur after sqlite3_initialize().
New sqlite3_db_config() options: SQLITE_DBCONFIG_STMT_SCANSTATUS and \
SQLITE_DBCONFIG_REVERSE_SCANORDER.
Query planner improvements:
Enable the "count-of-view" optimization by default.
Avoid computing unused columns in subqueries.
Improvements to the push-down optimization.
Enhancements to the CLI:
Add the --unsafe-testing command-line option. Without this option, some \
dot-commands (ex: ".testctrl") are now disabled because those commands \
that are intended for testing only and can cause malfunctions misused.
Allow commands ".log on" and ".log off", even in --safe mode.
"--" as a command-line argument means all subsequent arguments that \
start with "-" are interpreted as normal non-option argument.
Magic parameters ":inf" and ":nan" bind to floating point \
literals Infinity and NaN, respectively.
The --utf8 command-line option omits all translation to or from MBCS on the \
Windows console for interactive sessions, and sets the console code page for \
UTF-8 I/O during such sessions. The --utf8 option is a no-op on all other \
platforms.
Add the ability for application-defined SQL functions to have the same name as \
join keywords: CROSS, FULL, INNER, LEFT, NATURAL, OUTER, or RIGHT.
Enhancements to PRAGMA integrity_check:
Detect and raise an error when a NaN value is stored in a NOT NULL column.
Improved error message output identifies the root page of a b-tree when an error \
is found within a b-tree.
Allow the session extension to be configured to capture changes from tables that \
lack an explicit ROWID.
Added the subsecond modifier to the date and time functions.
Negative values passed into sqlite3_sleep() are henceforth interpreted as 0.
The maximum recursion depth for JSON arrays and objects is lowered from 2000 to 1000.
Extended the built-in printf() function so the comma option now works with \
floating-point conversions in addition to integer conversions.
Miscellaneous bug fixes and performance optimizations
|
2023-03-28 15:01:41 by Adam Ciarcinski | Files touched by this commit (7) |  |
Log message:
sqlite3: updated to 3.41.2
version 3.41.2 (2023-03-22):
Multiple fixes for reads past the end of memory buffers (NB: reads not writes) \
in the following circumstances:
When processing a corrupt database file using the non-standard \
SQLITE_ENABLE_STAT4 compile-time option.
In the CLI when the sqlite3_error_offset() routine returns an out-of-range value \
(see also the fix to sqlite3_error_offset() below).
In the recovery extension.
In FTS3 when processing a corrupt database file.
Fix the sqlite3_error_offset() so that it does not return out-of-range values \
when reporting errors associated with generated columns.
Multiple fixes in the query optimizer for problems that cause incorrect results \
for bizarre, fuzzer-generated queries.
Increase the size of the reference counter in the page cache object to 64 bits \
to ensure that the counter never overflows.
Fix a performance regression caused by a bug fix in patch release 3.41.1.
Fix a few incorrect assert() statements.
|
2023-03-12 11:34:33 by Adam Ciarcinski | Files touched by this commit (7) |  |
Log message:
sqlite3: updated to 3.41.1
version 3.41.1 (2023-03-10):
Provide compile-time options -DHAVE_LOG2=0 and -DHAVE_LOG10=0 to enable SQLite \
to be compiled on systems that omit the standard library functions log2() and \
log10(), repectively.
Ensure that the datatype for column t1.x in "CREATE TABLE t1 AS SELECT \
CAST(7 AS INT) AS x;" continues to be INT and is not NUM, for historical \
compatibility.
Enhance PRAGMA integrity_check to detect when extra bytes appear at the end of \
an index record.
Fix various obscure bugs reported by the user community. See the timeline of \
changes for details.
|
2023-02-24 09:34:38 by Adam Ciarcinski | Files touched by this commit (7) |  |
Log message:
sqlite3: updated to 3.41.0
SQLite Release 3.41.0 On 2023-02-21
Query planner improvements:
Make use of indexed expressions within an aggregate query that includes a GROUP \
BY clause.
The query planner has improved awareness of when an index is a covering index \
and adjusts predicted runtimes accordingly.
The query planner is more aggressive about using co-routines rather than \
materializing subqueries and views.
Queries against the built-in table-valued functions json_tree() and json_each() \
will now usually treat "ORDER BY rowid" as a no-op.
Enhance the ability of the query planner to use indexed expressions even if the \
expression has been modified by the constant-propagation optimization. (See \
forum thread 0a539c7.)
Add the built-in unhex() SQL function.
Add the base64 and base85 application-defined functions as an extension and \
include that extension in the CLI.
Add the sqlite3_stmt_scanstatus_v2() interface. (This interface is only \
available if SQLite is compiled using SQLITE_ENABLE_STMT_SCANSTATUS.)
In-memory databases created using sqlite3_deserialize() now report their \
filename as an empty string, not as 'x'.
Changes to the CLI:
Add the new base64() and base85() SQL functions
Enhanced EXPLAIN QUERY PLAN output using the new sqlite3_stmt_scanstatus_v2() \
interface when compiled using SQLITE_ENABLE_STMT_SCANSTATUS.
The ".scanstats est" command provides query planner estimates in profiles.
The continuation prompt indicates if the input is currently inside of a string \
literal, identifier literal, comment, trigger definition, etc.
Enhance the --safe command-line option to disallow dangerous SQL functions.
The double-quoted string misfeature is now disabled by default for CLI builds. \
Legacy use cases can reenable the misfeature at run-time using the \
".dbconfig dqs_dml on" and ".dbconfig dqs_ddl on" commands.
Enhance the PRAGMA integrity_check command so that it detects when text strings \
in a table are equivalent to but not byte-for-byte identical to the same strings \
in the index.
Enhance the carray table-valued function so that it is able to bind an array of \
BLOB objects.
Added the sqlite3_is_interrupted() interface.
Long-running calls to sqlite3_prepare() and similar now invoke the progress \
handler callback and react to sqlite3_interrupt().
The sqlite3_vtab_in_first() and sqlite3_vtab_in_next() functions are enhanced so \
that they reliably detect if they are invoked on a parameter that was not \
selected for multi-value IN processing using sqlite3_vtab_in(). They return \
SQLITE_ERROR instead of SQLITE_MISUSE in this case.
The parser now ignores excess parentheses around a subquery on the right-hand \
side of an IN operator, so that SQLite now works the same as PostgreSQL in this \
regard. Formerly, SQLite treated the subquery as an expression with an implied \
"LIMIT 1".
Added the SQLITE_FCNTL_RESET_CACHE option to the sqlite3_file_control() API.
Makefile improvements:
The new makefile target "sqlite3r.c" builds an amalgamation that \
includes the recovery extension.
New makefile targets "devtest" and "releasetest" for running \
a quick developmental test prior to doing a check-in and for doing a full \
release test, respectively.
Miscellaneous performance enhancements.
|