* Fix a problem with WAL mode which could cause transactions to silently
rollback if the cache_size is set very small (less than 10) and SQLite comes
under memory pressure.
* Fix a bug in 3.7.6 that only appears if the SQLITE_FCNTL_SIZE_HINT file
control is used with a build of SQLite that makes use of the
HAVE_POSIX_FALLOCATE compile-time option and which has
SQLITE_ENABLE_LOCKING_MODE turned off.
* Added the sqlite3_wal_checkpoint_v2() interface and enhanced the
wal_checkpoint pragma to support blocking checkpoints.
* Improvements to the query planner so that it makes better estimates of plan
costs and hence does a better job of choosing the right plan, especially when
SQLITE_ENABLE_STAT2 is used.
* Fix a bug which prevented deferred foreign key constraints from being
enforced when sqlite3_finalize() was not called by one statement with a
failed foreign key constraint prior to another statement with foreign key
constraints running.
* Integer arithmetic operations that would have resulted in overflow are now
performed using floating-point instead.
* Increased the version number on the VFS object to 3 and added new methods
xSetSysCall, xGetSysCall, and xNextSysCall used for doing full-coverage
testing.
* Increase the maximum value of SQLITE_MAX_ATTACHED from 30 to 62 (though the
default value remains at 10).
* Enhancements to FTS4:
- Added the fts4aux table
- Added support for compressed FTS4 content
* Enhance the ANALYZE command to support the name of an index as its argument,
in order to analyze just that one index.
* Added the "unix-excl" built-in VFS on unix and unix-like platforms.
* Added the sqlite3_vsnprintf() interface.
* Added the SQLITE_DBSTATUS_LOOKASIDE_HIT, SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE,
and SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL options for the sqlite3_db_status()
interface.
* Added the SQLITE_OMIT_AUTORESET compile-time option.
* Added the SQLITE_DEFAULT_FOREIGN_KEYS compile-time option.
* Updates to sqlite3_stmt_readonly() so that its result is well-defined for all
prepared statements and so that it works with VACUUM.
* Added the "-heap" option to the command-line shell
* Fix a bug involving frequent changes in and out of WAL mode and VACUUM that
could (in theory) cause database corruption.
* Enhance the sqlite3_trace() mechanism so that nested SQL statements such as
might be generated by virtual tables are shown but are shown in comments and
without parameter expansion. This greatly improves tracing output when using
the FTS3/4 and/or RTREE virtual tables.
* Change the xFileControl() methods on all built-in VFSes to return
SQLITE_NOTFOUND instead of SQLITE_ERROR for an unrecognized operation code.
* The SQLite core invokes the SQLITE_FCNTL_SYNC_OMITTED file control to the VFS
in place of a call to xSync if the database has PRAGMA synchronous set to OFF.
* Added the sqlite3_blob_reopen() interface to allow an existing sqlite3_blob
object to be rebound to a new row.
* Use the new sqlite3_blob_reopen() interface to improve the performance of FTS.
* VFSes that do not support shared memory are allowed to access WAL databases
if PRAGMA locking_mode is set to EXCLUSIVE.
* Enhancements to EXPLAIN QUERY PLAN.
* Added the sqlite3_stmt_readonly() interface.
* Added PRAGMA checkpoint_fullfsync.
* Added the SQLITE_FCNTL_FILE_POINTER option to sqlite3_file_control().
* Added support for FTS4 and enhancements to the FTS matchinfo() function.
* Added the test_superlock.c module which provides example code for obtaining
an exclusive lock to a rollback or WAL database.
* Added the test_multiplex.c module which provides an example VFS that provides
multiplexing (sharding) of a DB, splitting it over multiple files of fixed
size.
* A very obscure bug associated with the or optimization was fixed.
* Added the sqlite3_create_function_v2() interface that includes a destructor
callback.
* Added support for custom r-tree queries using application-supplied callback
routines to define the boundary of the query region.
* The default page cache strives more diligently to avoid using memory beyond
what is allocated to it by SQLITE_CONFIG_PAGECACHE. Or if using page cache
is allocating from the heap, it strives to avoid going over the
sqlite3_soft_heap_limit64(), even if SQLITE_ENABLE_MEMORY_MANAGEMENT is not
set.
* Added the sqlite3_soft_heap_limit64() interface as a replacement for
sqlite3_soft_heap_limit().
* The ANALYZE command now gathers statistics on tables even if they have no
indices.
* Tweaks to the query planner to help it do a better job of finding the most
efficient query plan for each query.
* Enhanced the internal text-to-numeric conversion routines so that they work
with UTF8 or UTF16, thereby avoiding some UTF16-to-UTF8 text conversions.
* Fix a problem that was causing excess memory usage with large WAL
transactions in win32 systems.
* The interface between the VDBE and B-Tree layer is enhanced such that the
VDBE provides hints to the B-Tree layer letting the B-Tree layer know when it
is safe to use hashing instead of B-Trees for transient tables.
* Miscellaneous documentation enhancements.
* Fix an old and very obscure bug that can lead to corruption of the database
free-page list when incremental_vacuum is used.
Changes 3.7.1:
* Added new commands SQLITE_DBSTATUS_SCHEMA_USED and SQLITE_DBSTATUS_STMT_USED
to the sqlite3_db_status() interface, in order to report out the amount of
memory used to hold the schema and prepared statements of a connection.
* Increase the maximum size of a database pages from 32KiB to 64KiB.
* Use the LIKE optimization even if the right-hand side string contains no
wildcards.
* Added the SQLITE_FCNTL_CHUNK_SIZE verb to the sqlite3_file_control()
interface for both unix and windows, to cause database files to grow in
large chunks in order to reduce disk fragmentation.
* Fixed a bug in the query planner that caused performance regresssions
relative to 3.6.23.1 on some complex joins.
* Fixed a typo in the OS/2 backend.
* Refactored the pager module.
* The SQLITE_MAX_PAGE_SIZE compile-time option is now silently ignored.
The maximum page size is hard-coded at 65536 bytes.
* Fix a potential database corruption problem that can result if the same
database file is alternately written by version 3.7.0 and 3.6.23.1.
* Fix a possible performance regression caused by the introduction of automatic
indexing.
* Added support for write-ahead logging.
* Query planner enhancement - automatic transient indices are created when
doing so reduces the estimated query time.
* Query planner enhancement - the ORDER BY becomes a no-op if the query also
contains a GROUP BY clause that forces the correct output order.
* Add the SQLITE_DBSTATUS_CACHE_USED verb for sqlite3_db_status().
* The logical database size is now stored in the database header so that bytes
can be appended to the end of the database file without corrupting it and so
that SQLite will work correctly on systems that lack support for ftruncate().
* Added the secure_delete pragma
* Added the sqlite3_compileoption_used() and sqlite3_compileoption_get()
interfaces as well as the compile_options pragma and the
sqlite_compileoption_used() and sqlite_compileoption_get() SQL functions.
* Added the sqlite3_log() interface together with the SQLITE_CONFIG_LOG verb
to sqlite3_config(). The ".log" command is added to the Command Line Interface
* Improvements to FTS3
* Improvements and bug-fixes in support for SQLITE_OMIT_FLOATING_POINT
* The integrity_check pragma is enhanced to detect out-of-order rowids
* The ".genfkey" operator has been removed from the Command Line Interface
* Updates to the co-hosted Lemon LALR(1) parser generator. (These updates did not affect SQLite.)
* Various minor bug fixes and performance enhancements
* Fix bugs that can (rarely) lead to incorrect query results when the CAST
or OR operators are used in the WHERE clause of a query.
* Continuing enhancements and improvements to FTS3.
* Other miscellanous bug fixes.
changes:
-SQL output resulting from sqlite3_trace() is now modified to include
the values of bound parameters
-Performance optimizations targetting a specific use case from a single
high-profile user
-FTS3 extension has undergone a major rework and cleanup
-fixed the SQLITE_SECURE_DELETE compile-time option
-Improvements to "dot-command" handling in the Command Line Interface
-Other minor bug fixes and documentation enhancements
way to build sqlite3 according to upstream.
It should give a small performance increase due to static inlining,
but more importantly lets us avoid manual maintenance of sqlite3.h.
Bump revisions for sqlite3 and sqlite3-tcl.
* Optimizer enhancement: prepared statements are automatically re-compiled when
a binding on the RHS of a LIKE operator changes or when any range constraint
changes under SQLITE_ENABLE_STAT2.
* Various minor bug fixes and documentation enhancements.
* Added support for foreign key constraints. Foreign key constraints are
disabled by default. Use the foreign_keys pragma to turn them on.
* Generalized the IS and IS NOT operators to take arbitrary expressions on
their right-hand side.
* The TCL Interface has been enhanced to use the Non-Recursive Engine (NRE)
interface to the TCL interpreter when linked against TCL 8.6 or later.
* Fix a bug introduced in 3.6.18 that can lead to a segfault when an attempt
is made to write on a read-only database.
===> Building for sqlite3-3.6.18
tclsh ./tool/mksqlite3h.tcl . >sqlite3.h
tclsh: not found
gmake: *** [sqlite3.h] Error 127
Upstream didn't ship a pregenerated sqlite3.h. Committed as patch-ab.
* Versioning of the SQLite source code has transitioned from CVS to Fossil.
* Query planner enhancements.
* The SQLITE_ENABLE_STAT2 compile-time option causes the ANALYZE command to
collect a small histogram of each index, to help SQLite better select among
competing range query indices.
* Recursive triggers can be enabled using the PRAGMA recursive_triggers
statement.
* Delete triggers fire when rows are removed due to a REPLACE conflict
resolution. This feature is only enabled when recursive triggers are enabled.
* Added the SQLITE_OPEN_SHAREDCACHE and SQLITE_OPEN_PRIVATECACHE flags for
sqlite3_open_v2() used to override the global shared cache mode settings for
individual database connections.
* Added improved version identification features: C-Preprocessor macro
SQLITE_SOURCE_ID, C/C++ interface sqlite3_sourceid(), and SQL function
sqlite_source_id().
* Obscure bug fix on triggers
* Expose the sqlite3_strnicmp() interface for use by extensions and
applications.
* Remove the restriction on virtual tables and shared cache mode. Virtual
tables and shared cache can now be used at the same time.
* Many code simplifications and obscure bug fixes in support of providing 100%
branch test coverage.
* Fix a bug that occastionally causes INSERT or UPDATE operations to fail on
an indexed table that has a self-modifying trigger.
* Other minor bug fixes and performance optimizations.
* Fix a bug in group_concat().
* Fix a performance bug in the pager cache.
* Fix a bug in the sqlite3_backup implementation that can lead to a corrupt
backup database.
* Added the optional asynchronous VFS module.
* Enhanced the query optimizer so that virtual tables are able to make use of
OR and IN operators in the WHERE clause.
* Speed improvements in the btree and pager layers.
* Added the SQLITE_HAVE_ISNAN compile-time option which will cause the isnan()
function from the standard math library to be used instead of SQLite's own
home-brew NaN checker.
* Countless minor bug fixes, documentation improvements, new and improved
test cases, and code simplifications and cleanups.
* Fix a bug in version 3.6.12 that causes a segfault when running a count(*)
on the sqlite_master table of an empty database.
* Fix a bug in version 3.6.12 that causes a segfault that when inserting into
a table using a DEFAULT value where there is a function as part of the
DEFAULT value expression.
* Fix data structure alignment issues on Sparc.
* Other minor bug fixes.
* Fixed a bug that caused database corruption when an incremental vacuum is
rolled back in an in-memory database.
* Added the sqlite3_unlock_notify() interface.
* Added the reverse unordered selects pragma.
* The default page size on windows is automatically adjusted to match the
capabilities of the underlying filesystem.
* Add the new ".genfkey" command in the CLI for generating triggers to
implement foreign key constraints.
* Performance improvements for "count(*)" queries.
* Reduce the amount of heap memory used, especially by TRIGGERs.
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
(Please give the pkgs you commit a least a minimal testing. Since
sqlite3-tcl is needed to run the sqlite selftests the least I'd expect
is to build that as well.)
* Added the hot-backup interface.
* Added new commands ".backup" and ".restore" to the CLI.
* Added new methods backup and restore to the TCL interface.
* Improvements to the syntax bubble diagrams
* Various minor bug fixes
* Fix two bugs, which when combined might result in incorrect query results.
Both bugs were harmless by themselves; only when they team up do they cause
problems.
Changes 3.6.8:
* Added support for nested transactions.
* Enhanced the query optimizer so that it is able to use multiple indices
to efficiently process OR-connected constraints in a WHERE clause.
* Added support for parentheses in FTS3 query patterns using
the SQLITE_ENABLE_FTS3_PARENTHESIS compile-time option.