* 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.
(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...
2008 Feb 6 (3.5.6)
* Fix a bug ( ticket #2913) that prevented virtual tables from working
in a LEFT JOIN. The problem was introduced into shortly before the
3.5.5 release.
* Bring the OS/2 porting layer up-to-date.
* Add the new sqlite3_result_error_code() API and use it in the
implementation of ATTACH so that proper error codes are returned when
an ATTACH fails.
2008 Jan 31 (3.5.5)
* Convert the underlying virtual machine to be a register-based machine
rather than a stack-based machine. The only user-visible change is in
the output of EXPLAIN.
* Add the build-in RTRIM collating sequence.
2007 Dec 14 (3.5.4)
* Fix a critical bug in UPDATE or DELETE that occurs when an OR REPLACE
clause or a trigger causes rows in the same table to be deleted as
side effects. (See ticket #2832.) The most likely result of this bug
is a segmentation fault, though database corruption is a possibility.
* Bring the processing of ORDER BY into compliance with the SQL standard
for case where a result alias and a table column name are in conflict.
Correct behavior is to prefer the result alias. Older versions of
SQLite incorrectly picked the table column. (See ticket #2822.)
* The VACUUM command preserves the setting of the legacy_file_format
pragma. ( Ticket #2804.)
* Productize and officially support the group_concat() SQL function.
* Better optimization of some IN operator expressions.
* Add the ability to change the auto_vacuum status of a database by
setting the auto_vaccum pragma and VACUUMing the database.
* Prefix search in FTS3 is much more efficient.
* Relax the SQL statement length restriction in the CLI so that the
".dump" output of databases with very large BLOBs and strings can be
played back to recreate the database.
* Other small bug fixes and optimizations.
2007 Nov 27 (3.5.3)
* Move website and documentation files out of the source tree into a
separate CM system.
* Fix a long-standing bug in INSERT INTO ... SELECT ... statements where
the SELECT is compound.
* Fix a long-standing bug in RAISE(IGNORE) as used in BEFORE triggers.
* Fixed the operator precedence for the ~ operator.
* On win32, do not return an error when attempting to delete a file that
does not exist.
* Allow collating sequence names to be quoted.
* Modify the TCL interface to use sqlite3_prepare_v2().
* Fix multiple bugs that can occur following a malloc() failure.
* sqlite3_step() returns SQLITE_MISUSE instead of crashing when called
with a NULL parameter.
* FTS3 now uses the SQLite memory allocator exclusively. The FTS3
amalgamation can now be appended to the SQLite amalgamation to
generate a super-amalgamation containing both.
* The DISTINCT keyword now will sometimes use an INDEX if an appropriate
index is available and the optimizer thinks its use might be
advantageous.
the file lemon.c uses the same identifiers (B_TRUE, B_FALSE) as the
<sys/types.h> header, and therefore fails to build.
Changes since 3.4.2:
2007 Nov 05 (3.5.2)
* Dropped support for the SQLITE_OMIT_MEMORY_ALLOCATION compile-time
option.
* Always open files using FILE_FLAG_RANDOM_ACCESS under windows.
* The 3rd parameter of the built-in SUBSTR() function is now
optional.
* Bug fix: do not invoke the authorizer when reparsing the schema
after a schema change.
* Added the experimental malloc-free memory allocator in mem3.c.
* Virtual machine stores 64-bit integer and floating point constants
in binary instead of text for a performance boost.
* Fix a race condition in test_async.c.
* Added the ".timer" command to the CLI
2007 Oct 04 (3.5.1)
* Nota Bene: We are not using terms "alpha" or "beta" on this release
because the code is stable and because if we use those terms,
nobody will upgrade. However, we still reserve the right to make
incompatible changes to the new VFS interface in future releases.
* Fix a bug in the handling of SQLITE_FULL errors that could lead to
database corruption. [11]Ticket #2686.
* The test_async.c drive now does full file locking and works
correctly when used simultaneously by multiple processes on the
same database.
* The CLI ignores whitespace (including comments) at the end of lines
* Make sure the query optimizer checks dependences on all terms of a
compound SELECT statement. [12]Ticket #2640.
* Add demonstration code showing how to build a VFS for a raw mass
storage without a filesystem.
* Added an output buffer size parameter to the xGetTempname() method
of the VFS layer.
* Sticky SQLITE_FULL or SQLITE_IOERR errors in the pager are reset
when a new transaction is started.
2007 Sep 04 (3.5.0) alpha
* Redesign the OS interface layer. See [13]34to35.html for details.
*** Potentially incompatible change ***
* The [14]sqlite3_release_memory(), [15]sqlite3_soft_heap_limit(),
and [16]sqlite3_enable_shared_cache() interfaces now work cross all
threads in the process, not just the single thread in which they
are invoked. *** Potentially incompatible change ***
* Added the [17]sqlite3_open_v2() interface.
* Reimplemented the memory allocation subsystem and made it
replacable at compile-time.
* Created a new mutex subsystem and made it replacable at
compile-time.
* The same database connection may now be used simultaneously by
separate threads.
While stress-testing the soft_heap_limit feature, a bug that could
lead to database corruption was discovered and fixed. Though the
consequences of this bug are severe, the chances of hitting it in
a typical application are remote. Upgrading is recommended only if
you use the sqlite3_soft_heap_limit interface.
This release fixes a bug in VACUUM that can lead to database
corruption. The bug was introduced in version 3.3.14. Upgrading is
recommended for all users. Also included are a slew of other more
routine enhancements and bug fixes.
pkgsrc note: 3 selftests are failing due to some loss of accuracy
in floating point calculations. The upstream fix is to disable the
selftests in question (see sqlite ticket #2570).
2007 June 18 (3.4.0)
* Fix a bug that can lead to database corruption if an SQLITE_BUSY
error occurs in the middle of an explicit transaction and that
transaction is later committed. Ticket #2409. See the
CorruptionFollowingBusyError wiki page for details.
* Fix a bug that can lead to database corruption if autovacuum mode
is on and a malloc() failure follows a CREATE TABLE or CREATE INDEX
statement which itself follows a cache overflow inside a transaction.
See ticket #2418.
* Added explicit upper bounds on the sizes and quantities of things
SQLite can process. This change might cause compatibility problems
for applications that use SQLite in the extreme, which is why the
current release is 3.4.0 instead of 3.3.18.
* Added support for Incremental BLOB I/O.
* Added the zeroblob API and the zeroblob() SQL function.
* Added support for Incremental Vacuum.
* Added the SQLITE_MIXED_ENDIAN_64BIT_FLOAT compile-time option to
suppport ARM7 processors with goofy endianness.
* Removed all instances of sprintf() and strcpy() from the core
library.
* Added support for International Components for Unicode (ICU) to
the full-text search extensions.
* In the windows OS driver, reacquire a SHARED lock if an attempt
to acquire an EXCLUSIVE lock fails. Ticket #2354
* Fix the REPLACE() function so that it returns NULL if the second
argument is an empty string. Ticket #2324.
* Document the hazards of type coversions in sqlite3_column_blob()
and related APIs. Fix unnecessary type conversions. Ticket #2321.
* Internationalization of the TRIM() function. Ticket #2323
* Use memmove() instead of memcpy() when moving between memory
regions that might overlap. Ticket #2334
* Fix an optimizer bug involving subqueries in a compound SELECT
that has both an ORDER BY and a LIMIT clause. Ticket #2339.
* Make sure the sqlite3_snprintf() interface does not zero-terminate
the buffer if the buffer size is less than 1. Ticket #2341
* Fix the built-in printf logic so that it prints "NaN" not "Inf"
for floating-point NaNs. Ticket #2345
* When converting BLOB to TEXT, use the text encoding of the main
database. Ticket #2349
* Keep the full precision of integers (if possible) when casting
to NUMERIC. Ticket #2364
* Fix a bug in the handling of UTF16 codepoint 0xE000
* Consider explicit collate clauses when matching WHERE constraints
to indices in the query optimizer. Ticket #2391
* Fix the query optimizer to correctly handle constant expressions
in the ON clause of a LEFT JOIN. Ticket #2403
* Fix the query optimizer to handle rowid comparisions to NULL
correctly. Ticket #2404
* Fix many potental segfaults that could be caused by malicious
SQL statements.
2007 April 25 (3.3.17)
* When the "write_version" value of the database
header is larger than what the library understands,
make the database read-only instead of unreadable.
* Other minor bug fixes
2007 April 18 (3.3.16)
* Fix a bug that caused VACUUM to fail if NULLs
appeared in a UNIQUE column.
* Reinstate performance improvements that were added
in 3.3.14 but regressed in 3.3.15.
* Fix problems with the handling of ORDER BY expressions
on compound SELECT statements in subqueries.
* Fix a potential segfault when destroying locks on
WinCE in a multi-threaded environment.
* Documentation updates.
2007 April 9 (3.3.15)
* Fix a bug introduced in 3.3.14 that caused a rollback
of CREATE TEMP TABLE to leave the database connection
wedged.
* Fix a bug that caused an extra NULL row to be
returned when a descending query was interrupted by
a change to the database.
* The FOR EACH STATEMENT clause on a trigger now
causes a syntax error. It used to be silently ignored.
* Fix an obscure and relatively harmless problem that
might have caused a resource leak following an I/O
error.
* Many improvements to the test suite. Test coverage
now exceeded 98%
2007 April 2 (3.3.14)
* Fix a bug in 3.3.13 that could cause a segfault
when the IN operator is used one one term of a
two-column index and the right-hand side of the IN
operator contains a NULL.
* Added a new OS interface method for determining
the sector size of underlying media: sqlite3OsSectorSize().
* A new algorithm for statements of the form INSERT
INTO table1 SELECT * FROM table2 is faster and
reduces fragmentation. VACUUM uses statements of
this form and thus runs faster and defragments
better.
* Performance enhancements through reductions in disk I/O:
* Do not read the last page of an overflow chain
when deleting the row - just add that page to
the freelist.
* Do not store pages being deleted in the rollback journal.
* Do not read in the (meaningless) content of
pages extracted from the freelist.
* Do not flush the page cache (and thus avoiding
a cache refill) unless another process changes
the underlying database file.
* Truncate rather than delete the rollback
journal when committing a transaction in
exclusive access mode, or when committing the
TEMP database.
* Added support for exclusive access mode using
"PRAGMA locking_mode=EXCLUSIVE"
* Use heap space instead of stack space for large
buffers in the pager - useful on embedded platforms
with stack-space limitations.
* Add a makefile target "sqlite3.c" that builds an
amalgamation containing the core SQLite library C
code in a single file.
* Get the library working correctly when compiled
with GCC option "-fstrict-aliasing".
* Removed the vestigal SQLITE_PROTOCOL error.
* Improvements to test coverage, other minor bugs
fixed, memory leaks plugged, code refactored and/or
recommented in places for easier reading.
changes:
-fixed bugs which can lead to database corruption under obscure and
difficult to reproduce circumstances
-new sqlite3_prepare_v2() API
-bug fixes in the command-line shell
-enhancements to the query optimizer
pkgsrc change: fix a selftest which couldn't work as intended due to
misuse of O_APPEND
Version 3.3.8 adds support for full-text search using the FTS1
module. There are also minor bug fixes. Upgrade only if you want
to try out the new full-text search capabilities or if you are
having problems with 3.3.7.
Version 3.3.7 includes support for loadable extensions and virtual
tables. But both features are still considered "beta" and their
APIs are subject to change in a future release. This release is
mostly to make available the minor bug fixes that have accumulated
since 3.3.6. Upgrading is not necessary. Do so only if you encounter
one of the obscure bugs that have been fixed or if you want to try
out the new features.
2006-Jun-6 - Version 3.3.6
Changes include improved tolerance for windows virus scanners and
faster :memory: databases. There are also fixes for several obscure
bugs. Upgrade if you are having problems.
2006-Apr-5 - Version 3.3.5
This release fixes many minor bugs and documentation typos and
provides some minor new features and performance enhancements.
Upgrade only if you are having problems or need one of the new
features.
changes:
adds support for CHECK constraints, DESC indices, separate
REAL and INTEGER column affinities, a new OS interface layer design, and
many other changes
pkgsrc note:
a selftest fails on NetBSD/i386: a loss of precision is not detected in
the sum() function. Reason is that the code assumes that a "long double"
keeps more significant bits than a "long long int" which is not true here.
This is not a regression to 3.2.x which did just wrap on int overflows.
2005 September 24 (3.2.7)
* GROUP BY now considers NULLs to be equal again, as it should
* Now compiles on Solaris and OpenBSD and other Unix variants that lack the
fdatasync() function
* Now compiles on MSVC++6 again
* Fix uninitialized variables causing malfunctions for various obscure queries
* Correctly compute a LEFT OUTER JOINs that is constrained on the left table only
2005 September 17 (3.2.6)
* Fix a bug that can cause database corruption if a VACUUM (or autovacuum) fails
and is rolled back on a database that is larger than 1GiB
* LIKE optiization now works for columns with COLLATE NOCASE
* ORDER BY and GROUP BY now use bounded memory
* Added support for COUNT(DISTINCT expr)
* Change the way SUM() handles NULL values in order to comply with the SQL standard
* Use fdatasync() instead of fsync() where possible in order to speed up commits
slightly
* Use of the CROSS keyword in a join turns off the table reordering optimization
* Added the experimental and undocumented EXPLAIN QUERY PLAN capability
* Use the unicode API in windows
2005 August 27 (3.2.5)
* Fix a bug effecting DELETE and UPDATE statements that changed more than 40960
rows.
* Change the makefile so that it no longer requires GNUmake extensions
* Fix the --enable-threadsafe option on the configure script
* Fix a code generator bug that occurs when the left-hand side of an IN operator is
constant and the right-hand side is a SELECT statement
* The PRAGMA synchronous=off statement now disables syncing of the master journal
file in addition to the normal rollback journals
2005 August 24 (3.2.4)
* Fix a bug introduced in the previous release that can cause a segfault while
generating code for complex WHERE clauses.
* Allow floating point literals to begin or end with a decimal point.
2005 August 21 (3.2.3)
* Added support for the CAST operator
* Tcl interface allows BLOB values to be transferred to user-defined functions
* Added the "transaction" method to the Tcl interface
* Allow the DEFAULT value of a column to call functions that have constant operands
* Added the ANALYZE command for gathering statistics on indices and using those
statistics when picking an index in the optimizer
* Remove the limit (formerly 100) on the number of terms in the WHERE clause
* The right-hand side of the IN operator can now be a list of expressions instead
of just a list of constants
* Rework the optimizer so that it is able to make better use of indices
* The order of tables in a join is adjusted automatically to make better use of
indices
* The IN operator is now a candidate for optimization even if the left-hand side is
not the left-most term of the index. Multiple IN operators can be used with the
same index.
* WHERE clause expressions using BETWEEN and OR are now candidates for optimization
* Added the "case_sensitive_like" pragma and the SQLITE_CASE_SENSITIVE_LIKE
compile-time option to set its default value to "on".
* Use indices to help with GLOB expressions and LIKE expressions too when the
case_sensitive_like pragma is enabled
* Added support for grave-accent quoting for compatibility with MySQL
* Improved test coverage
from the announcement:
This release includes numerous minor bug fixes, speed improvements, and
code size reductions. There is no reason to upgrade unless you are having
problems or unless you just want to.
2005 March 29 (3.2.1)
* Fix a memory allocation error in the new ADD COLUMN comment.
* Documentation updates
2005 March 21 (3.2.0)
* Added support for ALTER TABLE ADD COLUMN.
* Added support for the "T" separator in ISO-8601 date/time strings.
* Improved support for Cygwin.
* Numerous bug fixes and documentation updates.
2005 March 16 (3.1.6)
* Fix a bug that could cause database corruption when inserting
record into tables with around 125 columns.
* sqlite3_step() is now much more likely to invoke the busy
handler and less likely to return SQLITE_BUSY.
* Fix memory leaks that used to occur after a malloc() failure.
2005 March 11 (3.1.5)
* The ioctl on OS-X to control syncing to disk is F_FULLFSYNC,
not F_FULLSYNC. The previous release had it wrong.
2005 March 10 (3.1.4)
* Fix a bug in autovacuum that could cause database corruption
if a CREATE UNIQUE INDEX fails because of a constraint violation.
This problem only occurs if the new autovacuum feature introduced
in version 3.1 is turned on.
* The F_FULLSYNC ioctl (currently only supported on OS-X) is
disabled if the synchronous pragma is set to something other
than "full".
* Add additional forward compatibility to the future version 3.2
database file format.
* Fix a bug in WHERE clauses of the form (rowid<'2')
* New SQLITE_OMIT_... compile-time options added
* Updates to the man page
* Remove the use of strcasecmp() from the shell
* Windows DLL exports symbols Tclsqlite_Init and Sqlite_Init
2005 February 19 (3.1.3)
* Fix a problem with VACUUM on databases from which tables containing AUTOINCREMENT
have been dropped.
* Add forward compatibility to the future version 3.2 database file format.
* Documentation updates
2005 February 15 (3.1.2)
* Fix a bug that can lead to database corruption if there are two open connections
to the same database and one connection does a VACUUM and the second makes some
change to the database.
* Allow "?" parameters in the LIMIT clause.
* Fix VACUUM so that it works with AUTOINCREMENT.
* Fix a race condition in AUTOVACUUM that can lead to corrupt databases
* Add a numeric version number to the sqlite3.h include file.
* Other minor bug fixes and performance enhancements.
2005 February 1 (3.1.1 BETA)
* Automatic caching of prepared statements in the TCL interface
* ATTACH and DETACH as well as some other operations cause existing prepared
statements to expire.
* Numerious minor bug fixes
2005 January 21 (3.1.0 ALPHA)
* Autovacuum support added
* CURRENT_TIME, CURRENT_DATE, and CURRENT_TIMESTAMP added
* Support for the EXISTS clause added.
* Support for correlated subqueries added.
* Added the ESCAPE clause on the LIKE operator.
* Support for ALTER TABLE ... RENAME TABLE ... added
* AUTOINCREMENT keyword supported on INTEGER PRIMARY KEY
* Many SQLITE_OMIT_ macros inserts to omit features at compile-time and reduce the
library footprint.
* The REINDEX command was added.
* The engine no longer consults the main table if it can get all the information it
needs from an index.
* Many nuisance bugs fixed.
with sqlite version 2 (everything in this package ends in `3'). DESCR:
SQLite is a C library that implements an SQL database engine. Programs
that link with the SQLite library can have SQL database access without
running a separate RDBMS process. The distribution comes with a standalone
command-line access program (sqlite) that can be used to administer an
SQLite database and which serves as an example of how to use the SQLite
library.
SQLite is not a client library used to connect to a big database server.
SQLite is the server. The SQLite library reads and writes directly to and
from the database files on disk.