* 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.
* Reorganize the Unix interface in os_unix.c
* Added support for "Proxy Locking" on MacOSX.
* Changed the prototype of the sqlite3_auto_extension() interface in a way
that is backwards compatible but which might cause warnings in new
builds of applications that use that interface.
* Changed the signature of the xDlSym method of the sqlite3_vfs object in
a way that is backwards compatible but which might cause compiler
warnings.
* Added superfluous casts and variable initializations in order to
suppress nuisance compiler warnings.
* Fixes for various minor bugs.
* Fix a bug in the b-tree delete algorithm that seems like it might
be able to cause database corruption. The bug was first introduced in
version 3.6.6.
* Fix a memory leak that can occur following a disk I/O error.
* Fix a bug in the page cache that can lead database corruption following
a rollback. This bug was first introduced in version 3.6.4.
* Two other very minor bug fixes
* Fix a define that prevented memsys5 from compiling
* Fix a problem in the virtual table commit mechanism that was causing
a crash in FTS3.
* Add the application-defined page cache
* Added built-in support for VxWorks
Changes 3.6.5:
* Add the MEMORY option to the journal_mode pragma.
* Added the sqlite3_db_mutex() interface.
* Added the SQLITE_OMIT_TRUNCATE_OPTIMIZATION compile-time option.
* Fixed the truncate optimization so that sqlite3_changes() and
sqlite3_total_changes() interfaces and the count_changes pragma return
the correct values.
* Added the sqlite3_extended_errcode() interface.
* The COMMIT command now succeeds even if there are pending queries. It returns * SQLITE_BUSY if there are pending incremental BLOB I/O requests.
* The error code is changed to SQLITE_BUSY (instead of SQLITE_ERROR) when
an attempt is made to ROLLBACK while one or more queries are still pending.
* Drop all support for the experimental memory allocators memsys4 and memsys6.
* Added the SQLITE_ZERO_MALLOC compile-time option.
* Add option support for LIMIT and ORDER BY clauses on DELETE and UPDATE
statements. Only works if SQLite is compiled with
SQLITE_ENABLE_UPDATE_DELETE_LIMIT.
* Added the sqlite3_stmt_status() interface for performance monitoring.
* Add the INDEXED BY clause.
* The LOCKING_STYLE extension is now enabled by default on Mac OS-X
* Added the TRUNCATE option to PRAGMA journal_mode
* Performance enhancements to tree balancing logic in the B-Tree layer.
* Added the source code and documentation for the genfkey program for
automatically generating triggers to enforce foreign key constraints.
* Added the SQLITE_OMIT_TRUNCATE_OPTIMIZATION compile-time option.
* The SQL language documentation is converted to use syntax diagrams
instead of BNF.
* Other minor bug fixes
* Split the pager subsystem into separate pager and pcache subsystems.
* Factor out indentifier resolution procedures into separate files.
* Bug fixes.
* Added the lookaside memory allocator for a speed improvement in excess of 15%
on some workloads. (Your mileage may vary.)
* Added the SQLITE_CONFIG_LOOKASIDE verb to sqlite3_config() to control the
default lookaside configuration.
* Added verbs SQLITE_STATUS_PAGECACHE_SIZE and SQLITE_STATUS_SCRATCH_SIZE to
the sqlite3_status() interface.
* Modified SQLITE_CONFIG_PAGECACHE and SQLITE_CONFIG_SCRATCH to remove the "+4"
magic number in the buffer size computation.
* Added the sqlite3_db_config() and sqlite3_db_status() interfaces for
controlling and monitoring the lookaside allocator separately on each
database connection.
* Numerious other performance enhancements
* Miscellaneous minor bug fixes
* Modifications to the virtual file system interface to support a wider range
of embedded systems.
* All C-preprocessor macros used to control compile-time options now begin
with the prefix "SQLITE_".
* The SQLITE_MUTEX_APPDEF compile-time option is no longer supported.
* The handling of IN and NOT IN operators that contain a NULL on their
right-hand side expression is brought into compliance with the SQL standard
and with other SQL database engines. This is a bug fix, but as it has the
potential to break legacy applications that depend on the older buggy
behavior.
* The result column names generated for compound subqueries have been
simplified to show only the name of the column of the original table and
omit the table name. This makes SQLite operate more like other SQL database
engines.
* Added the sqlite3_config() interface for doing run-time configuration of the
entire SQLite library.
* Added the sqlite3_status() interface used for querying run-time status
information about the overall SQLite library and its subsystems.
* Added the sqlite3_initialize() and sqlite3_shutdown() interfaces.
* The SQLITE_OPEN_NOMUTEX option was added to sqlite3_open_v2().
* Added the PRAGMA page_count command.
* Added the sqlite3_next_stmt() interface.
* Added a new R*Tree virtual table
* Added experimental support for the journal_mode PRAGMA and persistent
journal.
* Journal mode PERSIST is the default behavior in exclusive locking mode.
* Fix a performance regression on LEFT JOIN (see ticket #3015) that was
mistakenly introduced in version 3.5.8.
* Performance enhancement: Reengineer the internal routines used to
interpret and render variable-length integers.
* Fix a buffer-overrun problem in sqlite3_mprintf() which occurs when
a string without a zero-terminator is passed to "%.*s".
* Always convert IEEE floating point NaN values into NULL during
processing.
* Make sure that when a connection blocks on a RESERVED lock that it is
able to continue after the lock is released.
* The "configure" scripts should now automatically configure unix systems
for large file support. Improved error messages for when large files are
encountered and large file support is disabled.
* Avoid cache pages leaks following disk-full or I/O errors
* And, many more minor bug fixes and performance enhancements...