Updated: sqlite3-3.6.2-1

Warren Young warren@etr-usa.com
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
       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.

     * 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
       quoting filenames.
     * 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
       SQL function.
     * 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
       of loops.
     * 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
       persistent journal.
     * 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.
       SQLITE_STATUS_SCRATCH_SIZE to the sqlite3_status() interface.
       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: cygwin@cygwin.com .


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 mailing list