Mon Sep 15 18:25:00 GMT 2008
Version 3.6.2-1 of the SQLite library has been uploaded.
SQLite is a C library providing local database storage with a SQL
interface. Unlike most SQL database systems, SQLite does not accept
connections from remote users. Access to the database requires access
to the file system hosting it; SQLite thus relies on the operating
system's file security for access control. In exchange for this
limitation, you get a smaller, faster database engine that's easy to
embed within a program.
This is a big jump over the previous version on the mirrors, 3.5.1.
Nearly a year separates these versions!
* Dropped support for the SQLITE_OMIT_MEMORY_ALLOCATION compile-time
* Always open files using FILE_FLAG_RANDOM_ACCESS under windows.
* The 3rd parameter of the built-in SUBSTR() function is now
* 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
* 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
* 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.
* 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
* 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.
* 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.
* 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.
* Fix a bug (ticket #2927) in the register allocation for compound
selects - introduced by the new VM code in version 3.5.5.
* ALTER TABLE uses double-quotes instead of single-quotes for
* Use the WHERE clause to reduce the size of a materialized VIEW in
an UPDATE or DELETE statement. (Optimization)
* Do not apply the flattening optimization if the outer query is an
aggregate and the inner query contains ORDER BY. (Ticket #2943)
* Additional OS/2 updates
* Added an experimental power-of-two, first-fit memory allocator.
* Remove all instances of sprintf() from the code
* Accept "Z" as the zulu timezone at the end of date strings
* Fix a bug in the LIKE optimizer that occurs when the last
character before the first wildcard is an upper-case "Z"
* Added the "bitvec" object for keeping track of which pages have
been journalled. Improves speed and reduces memory consumption,
especially for large database files.
* Get the SQLITE_ENABLE_LOCKING_STYLE macro working again on MacOSX.
* Store the statement journal in the temporary file directory
instead of colocated with the database file.
* Many improvements and cleanups to the configure script
* Expose SQLite's internal pseudo-random number generator (PRNG) via
the sqlite3_randomness() interface
* New interface sqlite3_context_db_handle() that returns the
database connection handle that has invoked an application-defined
* New interface sqlite3_limit() allows size and length limits to be
set on a per-connection basis and at run-time.
* Improved crash-robustness: write the database page size into the
rollback journal header.
* Allow the VACUUM command to change the page size of a database
* The xAccess() method of the VFS is allowed to return -1 to signal
a memory allocation error.
* Performance improvement: The OP_IdxDelete opcode uses unpacked
records, obviating the need for one OP_MakeRecord opcode call for
each index record deleted.
* Performance improvement: Constant subexpressions are factored out
* Performance improvement: Results of OP_Column are reused rather
than issuing multiple OP_Column opcodes.
* Fix a bug in the RTRIM collating sequence.
* Fix a bug in the SQLITE_SECURE_DELETE option that was causing
Firefox crashes. Make arrangements to always test
SQLITE_SECURE_DELETE prior to each release.
* Other miscellaneous performance enhancements.
* Other miscellaneous minor bug fixes.
* Added experimental support for the journal_mode PRAGMA and
* Journal mode PERSIST is the default behavior in exclusive locking
* 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. (Ticket #3060)
* Make sure that when a connection blocks on a RESERVED lock that it
is able to continue after the lock is released. (Ticket #3093)
* 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....
* Modifications to the virtual file system interface to support a
wider range of embedded systems. See 35to36.html for additional
information. *** Potentially incompatible change ***
* All C-preprocessor macros used to control compile-time options now
begin with the prefix "SQLITE_". This may require changes to
applications that compile SQLite using their own makefiles and
with custom compile-time options, hence we mark this as a ***
Potentially incompatible change ***
* The SQLITE_MUTEX_APPDEF compile-time option is no longer
supported. Alternative mutex implementations can now be added at
run-time using the sqlite3_config() interface with the
SQLITE_CONFIG_MUTEX verb. *** Potentially incompatible change ***
* 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, we mark that as a ***
Potentially incompatible change ***
* 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
* 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 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
* Split the pager subsystem into separate pager and pcache
* Factor out indentifier resolution procedures into separate files.
* Bug fixes
If you have questions or comments, please send them to the cygwin
mailing list at: firstname.lastname@example.org .
*** CYGWIN-ANNOUNCE UNSUBSCRIBE INFO ***
If you want to unsubscribe from the cygwin-announce mailing list, look
at the "List-Unsubscribe: " tag in the email header of this message.
Send email to the address specified there. It will be in the format:
If you need more information on unsubscribing, start reading here:
Please read *all* of the information on unsubscribing that is available
starting at this URL.
More information about the Cygwin-announce