1831 lines
		
	
	
		
			115 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			1831 lines
		
	
	
		
			115 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <html><head>
 | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | |
| <meta http-equiv="content-type" content="text/html; charset=UTF-8">
 | |
| <link href="sqlite.css" rel="stylesheet">
 | |
| <title>SQLite Older News</title>
 | |
| <!-- path= -->
 | |
| </head>
 | |
| <body>
 | |
| <div class=nosearch>
 | |
| <a href="index.html">
 | |
| <img class="logo" src="images/sqlite370_banner.gif" alt="SQLite" border="0">
 | |
| </a>
 | |
| <div><!-- IE hack to prevent disappearing logo --></div>
 | |
| <div class="tagline desktoponly">
 | |
| Small. Fast. Reliable.<br>Choose any three.
 | |
| </div>
 | |
| <div class="menu mainmenu">
 | |
| <ul>
 | |
| <li><a href="index.html">Home</a>
 | |
| <li class='mobileonly'><a href="javascript:void(0)" onclick='toggle_div("submenu")'>Menu</a>
 | |
| <li class='wideonly'><a href='about.html'>About</a>
 | |
| <li class='desktoponly'><a href="docs.html">Documentation</a>
 | |
| <li class='desktoponly'><a href="download.html">Download</a>
 | |
| <li class='wideonly'><a href='copyright.html'>License</a>
 | |
| <li class='desktoponly'><a href="support.html">Support</a>
 | |
| <li class='desktoponly'><a href="prosupport.html">Purchase</a>
 | |
| <li class='search' id='search_menubutton'>
 | |
| <a href="javascript:void(0)" onclick='toggle_search()'>Search</a>
 | |
| </ul>
 | |
| </div>
 | |
| <div class="menu submenu" id="submenu">
 | |
| <ul>
 | |
| <li><a href='about.html'>About</a>
 | |
| <li><a href='docs.html'>Documentation</a>
 | |
| <li><a href='download.html'>Download</a>
 | |
| <li><a href='support.html'>Support</a>
 | |
| <li><a href='prosupport.html'>Purchase</a>
 | |
| </ul>
 | |
| </div>
 | |
| <div class="searchmenu" id="searchmenu">
 | |
| <form method="GET" action="search">
 | |
| <select name="s" id="searchtype">
 | |
| <option value="d">Search Documentation</option>
 | |
| <option value="c">Search Changelog</option>
 | |
| </select>
 | |
| <input type="text" name="q" id="searchbox" value="">
 | |
| <input type="submit" value="Go">
 | |
| </form>
 | |
| </div>
 | |
| </div>
 | |
| <script>
 | |
| function toggle_div(nm) {
 | |
| var w = document.getElementById(nm);
 | |
| if( w.style.display=="block" ){
 | |
| w.style.display = "none";
 | |
| }else{
 | |
| w.style.display = "block";
 | |
| }
 | |
| }
 | |
| function toggle_search() {
 | |
| var w = document.getElementById("searchmenu");
 | |
| if( w.style.display=="block" ){
 | |
| w.style.display = "none";
 | |
| } else {
 | |
| w.style.display = "block";
 | |
| setTimeout(function(){
 | |
| document.getElementById("searchbox").focus()
 | |
| }, 30);
 | |
| }
 | |
| }
 | |
| function div_off(nm){document.getElementById(nm).style.display="none";}
 | |
| window.onbeforeunload = function(e){div_off("submenu");}
 | |
| /* Disable the Search feature if we are not operating from CGI, since */
 | |
| /* Search is accomplished using CGI and will not work without it. */
 | |
| if( !location.origin || !location.origin.match || !location.origin.match(/http/) ){
 | |
| document.getElementById("search_menubutton").style.display = "none";
 | |
| }
 | |
| /* Used by the Hide/Show button beside syntax diagrams, to toggle the */
 | |
| function hideorshow(btn,obj){
 | |
| var x = document.getElementById(obj);
 | |
| var b = document.getElementById(btn);
 | |
| if( x.style.display!='none' ){
 | |
| x.style.display = 'none';
 | |
| b.innerHTML='show';
 | |
| }else{
 | |
| x.style.display = '';
 | |
| b.innerHTML='hide';
 | |
| }
 | |
| return false;
 | |
| }
 | |
| </script>
 | |
| </div>
 | |
| <?xml version="1.0" encoding="Windows-1252"?>
 | |
| 
 | |
| 
 | |
| <a name="2015_11_02"></a><h3>2015-11-02 - Release 3.9.2</h3><blockquote>
 | |
| <p>SQLite <a href="releaselog/3_9_2.html">version 3.9.2</a> is a patch release fixing two obscure bugs.
 | |
| (Details: <a href="https://www.sqlite.org/src/tktview?name=8a2adec166">(1)</a>,
 | |
| <a href="https://www.sqlite.org/src/tktview?name=ac661962a2">(2)</a>).
 | |
| Upgrade only if you are having problems.
 | |
| </blockquote><hr width="50%"><a name="2015_10_16"></a><h3>2015-10-16 - Release 3.9.1</h3><blockquote>
 | |
| <p>SQLite <a href="releaselog/3_9_1.html">version 3.9.1</a> is a
 | |
| <a href="https://www.sqlite.org/src/vpatch?from=version-3.9.0&to=version-3.9.1">small patch</a>
 | |
| to <a href="releaselog/3_9_0.html">version 3.9.0</a> that includes
 | |
| a few simple build script and #ifdef tweaks to make the code easier to 
 | |
| compile on a wider variety of platform.  There are no functional changes, 
 | |
| except for a single
 | |
| <a href="https://www.sqlite.org/src/info/57eec374ae1d0a1d4a">minor bug-fix</a> in 
 | |
| <a href="json1.html">the json1 extension</a> to stop it from recognizing form-feed 
 | |
| (ASCII 0x0c) as a whitespace character, in conformance with 
 | |
| <a href="http://www.rfc-editor.org/rfc/rfc7159.txt">RFC7159</a>.
 | |
| </blockquote><hr width="50%"><a name="2015_10_14"></a><h3>2015-10-14 - Release 3.9.0</h3><blockquote>
 | |
| <p>SQLite version 3.9.0 is a regularly schedule maintenance release.
 | |
| Key changes include:
 | |
| <ul>
 | |
| <li>Begin using <a href="http://semver.org/">semantic versioning</a>.
 | |
| <li><a href="json1.html">JSON SQL functions</a>
 | |
| <li>The <a href="fts5.html">FTS5</a> full-text search engine
 | |
| <li>Support for <a href="expridx.html">indexes on expressions</a>
 | |
| <li>Support for <a href="vtab.html#tabfunc2">table-valued functions</a>
 | |
| </ul>
 | |
| See the <a href="releaselog/3_9_0.html">change log</a> for a long and more complete list
 | |
| of changes.
 | |
| </blockquote><hr width="50%"><a name="2015_07_29"></a><h3>2015-07-29 - Release 3.8.11.1</h3><blockquote>
 | |
| <p>SQLite version 3.8.11.1 is a patch release that fixes two arcane
 | |
|    issues that were reported shortly after 3.8.11 was released.  Upgrade
 | |
|    from 3.8.11 only in the unlikely event that one of these obscure
 | |
|    issues affect your code.
 | |
| </blockquote><hr width="50%"><a name="2015_07_27"></a><h3>2015-07-27 - Release 3.8.11</h3><blockquote>
 | |
| <p>SQLite version 3.8.11 is a regularly scheduled maintenance release.
 | |
|    See the <a href="releaselog/3_8_11.html">change log</a> for details.
 | |
| </blockquote><hr width="50%"><a name="2015_05_20"></a><h3>2015-05-20 - Release 3.8.10.2</h3><blockquote>
 | |
| <p>Yikes!  Index corruption after a sequence of valid SQL statements!
 | |
| <p>It has been many years since anything like 
 | |
|    <a href="https://www.sqlite.org/src/info/34cd55d6">this bug</a> has snuck into
 | |
|    an official SQLite release.  But for the pasts seven months
 | |
|    (<a href="releaselog/3_8_7.html">version 3.8.7</a> through <a href="releaselog/3_8_10_1.html">version 3.8.10.1</a>)
 | |
|    if you do an INSERT into a carefully
 | |
|    crafted schema in which there are two nested triggers that convert
 | |
|    an index key value from TEXT to INTEGER and then back
 | |
|    to TEXT again, the INTEGER value might get inserted as the index
 | |
|    key instead of the correct TEXT, resulting in index corruption.
 | |
|    This patch release adds a single line of code to fix the problem.
 | |
| <p>If you do actually encounter this problem, running <a href="lang_reindex.html">REINDEX</a> on the
 | |
|    damaged indexes will clear it.
 | |
| </blockquote><hr width="50%"><a name="2015_05_09"></a><h3>2015-05-09 - Release 3.8.10.1</h3><blockquote>
 | |
| <p>The 3.8.10 release did not add the new <a href="compile.html#enable_dbstat_vtab">SQLITE_ENABLE_DBSTAT_VTAB</a>
 | |
|    compile-time option to the <a href="c3ref/compileoption_get.html">sqlite3_compileoption_used()</a> interface.
 | |
|    This patch release fixes that omission.  And while we are at it,
 | |
|    the associated <a href="dbstat.html">dbstat virtual table</a> was enhanced slightly and a
 | |
|    harmless compiler warning was fixed.</p>
 | |
| 
 | |
| <p>   <p>There is no reason to upgrade from version 3.8.10 unless you are
 | |
|    using the new <a href="compile.html#enable_dbstat_vtab">SQLITE_ENABLE_DBSTAT_VTAB</a> compile-time option.
 | |
| </blockquote><hr width="50%"><a name="2015_05_07"></a><h3>2015-05-07 - Release 3.8.10</h3><blockquote>
 | |
| <p>SQLite version 3.8.10 is a regularly scheduled maintenance release.
 | |
|    This release features performance improvements, fixes to several
 | |
|    arcane bugs found by the AFL fuzzer, the new "sqldiff.exe" command-line
 | |
|    utility, improvements to the documentation, and other enhancements.
 | |
|    See the <a href='releaselog/3_8_10.html'>release notes</a> for 
 | |
|    additional information.
 | |
| </blockquote><hr width="50%"><a name="2015_04_08"></a><h3>2015-04-08 - Release 3.8.9</h3><blockquote>
 | |
| <p>SQLite version 3.8.9 is a regularly scheduled maintenance release.
 | |
|    New features in this release include the 
 | |
|    <a href="pragma.html#pragma_index_xinfo">PRAGMA index_xinfo</a> command, the <a href="c3ref/status.html">sqlite3_status64()</a> interface,
 | |
|    and the ".dbinfo" command of the <a href="cli.html">command-line shell</a>.
 | |
|    See the <a href='releaselog/3_8_9.html'>release notes</a> for
 | |
|    additional information.
 | |
| </blockquote><hr width="50%"><a name="2015_02_25"></a><h3>2015-02-25 - Release 3.8.8.3</h3><blockquote>
 | |
| <p>The 3.8.8.3 patch release fixes an obscure problem in the SQLite code
 | |
|    generator that can cause incorrect results when the qualifying expression
 | |
|    of a <a href="partialindex.html">partial index</a> is used inside the ON clause of a LEFT JOIN.
 | |
|    This problem has been in the code since support for partial indexes
 | |
|    was first added in version 3.8.0.  However, it is difficult to imagine
 | |
|    a valid reason to every put the qualifying constraint inside the ON
 | |
|    clause of a LEFT JOIN, and so this issue has never come up before.</p>
 | |
| 
 | |
| <p><p>Any applications that is vulnerable to this bug would have encountered
 | |
|    problems already.  Hence, upgrading from the previous release is optional.
 | |
| </blockquote><hr width="50%"><a name="2015_01_30"></a><h3>2015-01-30 - Release 3.8.8.2</h3><blockquote>
 | |
| <p>The 3.8.8.2 patch release fixes a single minor problem:  It ensures
 | |
|    that the <a href="c3ref/wal_checkpoint.html">sqlite3_wal_checkpoint(TRUNCATE)</a> operation will always truncate
 | |
|    the <a href="wal.html">write-ahead log</a> even if log had already been reset and contained
 | |
|    no new content.  It is unclear if this is a bug fix or a new feature.</p>
 | |
| 
 | |
| <p><p>Something like this would normally go into the next regularly scheduled
 | |
|    release, but a prominent SQLite user needed the change in a hurry so
 | |
|    we were happy to rush it out via this patch.</p>
 | |
| 
 | |
| <p><p>There is no reason to upgrade unless you actually need the enhanced
 | |
|    behavior of <a href="c3ref/wal_checkpoint.html">sqlite3_wal_checkpoint(TRUNCATE)</a>.
 | |
| </blockquote><hr width="50%"><a name="2015_01_20"></a><h3>2015-01-20 - Release 3.8.8.1</h3><blockquote>
 | |
| <p>Within hours of releasing version 3.8.8, a bug was reported against
 | |
|    the 10-month-old 3.8.4 release.  As that bug exists in all subsequent
 | |
|    releases, the decision was made to issue a small patch to the
 | |
|    3.8.8 before it came into widespread use.</p>
 | |
| 
 | |
| <p><p>See ticket
 | |
|    <a href="https://www.sqlite.org/src/info/f97c4637102a3ae72b7911">f97c4637102a3ae72b7911</a>
 | |
|    for a description of the bug.</p>
 | |
| 
 | |
| <p><p>The changes between versions 3.8.8 and 3.8.8.1 are minimal.
 | |
| </blockquote><hr width="50%"><a name="2015_01_16"></a><h3>2015-01-16 - Release 3.8.8</h3><blockquote>
 | |
| <p>SQLite <a href="releaselog/3_8_8.html">version 3.8.8</a> is a regularly schedule maintenance release of
 | |
|    SQLite.</p>
 | |
| 
 | |
| <p><p>There are no dramatic new features or performance enhancements in this
 | |
|    release, merely incremental improvements.  Most of the performance gain
 | |
|    in this release comes from refactoring the B-Tree rebalancing logic to
 | |
|    avoid unnecessary memcpy() operations.  New features include the
 | |
|    <a href="pragma.html#pragma_data_version">PRAGMA data_version</a> statement and the ability to accept a
 | |
|    <a href="lang_select.html#values">VALUES clause</a> with no arbitrary limit on the number of rows.
 | |
|    Several obscure bugs have been fixed, including some multithreading
 | |
|    races and a work-around for a compiler bug on some Macs.</p>
 | |
| 
 | |
| <p><p>See the <a href="releaselog/3_8_8.html">change log</a> for a longer list of
 | |
|    enhancements and bug fixes.
 | |
| </blockquote><hr width="50%"><a name="2014_12_09"></a><h3>2014-12-09 - Release 3.8.7.4</h3><blockquote>
 | |
| <p>SQLite <a href="releaselog/3_8_7_4.html">version 3.8.7.4</a> an unscheduled bug-fix release.  Changes from
 | |
|    the previous release and from <a href="releaselog/3_8_7.html">version 3.8.7</a> are minimal.</p>
 | |
| 
 | |
| <p><p>This release fixes adds in a mutex that is required by the changes of
 | |
|    the 3.8.7.3 patch but was accidentally omitted.  The mutex was not required
 | |
|    by any of the internal SQLite tests, but Firefox crashes without it.
 | |
|    Test cases have been added to ensure that mutex is never again missed.
 | |
| </blockquote><hr width="50%"><a name="2014_12_06"></a><h3>2014-12-06 - Release 3.8.7.3</h3><blockquote>
 | |
| <p>SQLite <a href="releaselog/3_8_7_3.html">version 3.8.7.3</a> an unscheduled bug-fix release.  Changes from
 | |
|    the previous release and from <a href="releaselog/3_8_7.html">version 3.8.7</a> are minimal.</p>
 | |
| 
 | |
| <p><p>This release fixes two obscure bugs that can result in incorrect
 | |
|    query results and/or application crashes, but not (as far as we can
 | |
|    tell) security vulnerabilities.  Both bugs have been latent in the
 | |
|    code across multiple prior releases and have never before been encountered,
 | |
|    so they are unlikely to cause problems.  Nevertheless
 | |
|    it seems prudent to publish fixes for them both.  See the
 | |
|    change log for details.
 | |
| </blockquote><hr width="50%"><a name="2014_11_19"></a><h3>2014-11-19 - Release 3.8.7.2</h3><blockquote>
 | |
| <p>SQLite <a href="releaselog/3_8_7_2.html">version 3.8.7.2</a> is a patch and bug-fix release.  Changes from
 | |
|    the previous release are minimal.</p>
 | |
| 
 | |
| <p><p>The primary reason for this release is to enhance the <a href="lang_transaction.html">ROLLBACK</a> command
 | |
|    so that it allows running queries on the same database connection to 
 | |
|    continue running as long as the ROLLBACK does not change the schema.
 | |
|    In all previous versions of SQLite, a ROLLBACK would cause pending
 | |
|    queries to stop immediately and return <a href="rescode.html#abort">SQLITE_ABORT</a> or
 | |
|    <a href="rescode.html#abort_rollback">SQLITE_ABORT_ROLLBACK</a>. Pending queries still abort if the ROLLBACK
 | |
|    changes the database schema, but as of this patch release, the queries
 | |
|    are allowed to continue running if the schema is unmodified.</p>
 | |
| 
 | |
| <p><p>In addition to the ROLLBACK enhancement, this patch release also
 | |
|    includes fixes for three obscure bugs.  See the 
 | |
|    <a href="releaselog/3_8_7_2.html">change log</a> for details.
 | |
| </blockquote><hr width="50%"><a name="2014_10_30"></a><h3>2014-10-30 - Release 3.8.7.1</h3><blockquote>
 | |
| <p>SQLite <a href="releaselog/3_8_7_1.html">version 3.8.7.1</a> is a bug-fix release.</p>
 | |
| 
 | |
| <p><p>The primary reason for this bug-fix release is to address a problem with
 | |
|    updating the value of fields at the end of a table that were added
 | |
|    using <a href="lang_altertable.html">ALTER TABLE ADD COLUMN</a>.  This problem
 | |
|    <a href="https://www.sqlite.org/src/info/43107840f1c02">1</a> first appeared in the
 | |
|    3.8.7 release.</p>
 | |
| 
 | |
| <p><p>Another minor annoyance in the 3.8.7 release was the fact that the
 | |
|    Android build tried to use the strchrnul() function from the standard
 | |
|    C library but that function is not available on Android.  Android builds
 | |
|    had to add -DHAVE_STRCHRNUL=0 to work around the problem.  This patch
 | |
|    fixes that so that Android builds should now work without any changes.</p>
 | |
| 
 | |
| <p><p>The operation of <a href="pragma.html#pragma_journal_mode">PRAGMA journal_mode=TRUNCATE</a> has been enhanced so that
 | |
|    it invokes fsync() after truncating the journal file when
 | |
|    <a href="pragma.html#pragma_synchronous">PRAGMA synchronous=FULL</a>.  This helps to preserve transaction durability
 | |
|    in the case of a power loss occurring shortly after commit.</p>
 | |
| 
 | |
| <p><p>Finally, a couple of long-standing and obscure problems associated with run
 | |
|    UPDATE and DELETE on VIEWs were fixed.</p>
 | |
| 
 | |
| <p><p>The <a href="https://www.sqlite.org/src/vdiff?from=e4ab094f8afce0817f4074e823fabe59fc29ebb4&to=83afe23e553e802c0947c80d0ffdd120423e7c52&sbs=1">changes from 3.8.7</a> are minimal.
 | |
| </blockquote><hr width="50%"><a name="2014_10_17"></a><h3>2014-10-17 - Release 3.8.7</h3><blockquote>
 | |
| <p>SQLite <a href="releaselog/3_8_7.html">version 3.8.7</a> is a regularly scheduled maintenance release.
 | |
|    Upgrading from all prior versions is recommended.</p>
 | |
| 
 | |
| <p><p>Most of the changes from the previous release have been micro-optimizations
 | |
|    designed to help SQLite run a little faster.  Each individual optimization
 | |
|    has an unmeasurably small performance impact.  But the improvements add up.
 | |
|    Measured on a well-defined workload (which the SQLite developers use
 | |
|    as a proxy for a typical application workload) using cachegrind on Linux
 | |
|    and compiled with gcc 4.8.1 and -Os on x64 linux, the current release 
 | |
|    does over 20% more work for the same number of CPU cycles compared to the
 | |
|    previous release.  Cachegrind is not a real CPU, and the workload
 | |
|    used for measurement is only a proxy.  So your performance may vary.
 | |
|    We expect to see about half the measured and reported improvement in
 | |
|    real-world applications. 10% is less than 20% but it is still pretty
 | |
|    good, we think.</p>
 | |
| 
 | |
| <p><p>This release includes a new set of C-language interfaces that have
 | |
|    unsigned 64-bit instead of signed 32-bit length parameters.  The new
 | |
|    APIs do not provide any new capabilities.  But they do make it easier
 | |
|    to write applications that are more resistant to integer overflow
 | |
|    vulnerabilities.</p>
 | |
| 
 | |
| <p><p>This release also includes a new sorter that is able to use multiple
 | |
|    threads to help with large sort operations.  (Sort operations are
 | |
|    sometimes required to implement ORDER BY and/or GROUP BY clauses and
 | |
|    are almost always required for CREATE INDEX.)  The multi-threads sorter
 | |
|    is turned off by default and must be enabled using the
 | |
|    <a href="pragma.html#pragma_threads">PRAGMA threads</a> SQL command.  Note that the multi-threaded sorter
 | |
|    provides faster real-time performance for large sorts, but it also
 | |
|    uses more CPU cycles and more energy.
 | |
| </blockquote><hr width="50%"><a name="2014_08_15"></a><h3>2014-08-15 - Release 3.8.6</h3><blockquote>
 | |
| <p>SQLite <a href="releaselog/3_8_6.html">version 3.8.6</a> is a regularly scheduled maintenance release.
 | |
|    Upgrading from all previous versions is recommended.</p>
 | |
| 
 | |
| <p><p>This release contains the usual assortment of obscure bug fixes.
 | |
|    One bug, however, deserves special attention.
 | |
|    A problem appeared in the <a href="lang_createindex.html">CREATE INDEX</a> command beginning with
 | |
|    <a href="releaselog/3_8_2.html">version 3.8.2</a> (2013-12-06) that allowed, under some circumstances,
 | |
|    a UNIQUE index to be created on a column that was not unique.  Once
 | |
|    the index was created, no new non-unique entries could be inserted, but
 | |
|    preexisting non-unique entries would remain.  See ticket
 | |
|    <a href="http://www.sqlite.org/src/info/9a6daf340df99ba93c">9a6daf340df99ba93c</a>
 | |
|    for further information.  In addition to fixing this bug, the
 | |
|    <a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a> command has been enhanced to detect
 | |
|    non-uniqueness in UNIQUE indices, so that if this bug did introduce
 | |
|    any problems in databases, those problems can be easily detected.</p>
 | |
| 
 | |
| <p><p>Other noteworthy changes include the addition of support for
 | |
|    <a href="lang_expr.html#hexint">hexadecimal integers</a> (ex: 0x1234), and performance enhancements
 | |
|    to the <a href="lang_expr.html#in_op">IN operator</a> which, according to 
 | |
|    <a href="http://www.mail-archive.com/sqlite-users%40sqlite.org/msg85350.html">mailing list reports</a>,
 | |
|    help some queries run up to five times faster.</p>
 | |
| 
 | |
| <p><p>Version 3.8.6 uses 25% fewer CPU cycles than version 3.8.0 from
 | |
|    approximately one year ago, according to <a href="http://valgrind.org/">valgrind</a>
 | |
|    and the
 | |
|    <a href="http://www.sqlite.org/src/artifact/d29c8048beb7e">test/speedtest1.c</a>
 | |
|    test program.
 | |
|    On the other hand,
 | |
|    the compiled binary for version 3.8.6 is about 5% larger than 3.8.0.
 | |
|    The size increase is 
 | |
|    due in part to the addition of new features such as <a href="withoutrowid.html">WITHOUT ROWID</a>
 | |
|    tables and <a href="lang_with.html">common table expressions</a>.
 | |
| </blockquote><hr width="50%"><a name="2014_06_04"></a><h3>2014-06-04 - Release 3.8.5</h3><blockquote>
 | |
| <p>SQLite <a href="releaselog/3_8_5.html">version 3.8.5</a> is a regularly scheduled maintenance release.
 | |
|    Upgrading from the previous version is recommended.</p>
 | |
| 
 | |
| <p><p>Version 3.8.5 fixes more than a dozen obscure bugs.  None of these
 | |
|    bugs should be a problem for existing applications.  Nor do any of
 | |
|    the bugs represent a security vulnerability.  Nevertheless, upgrading
 | |
|    is recommended to prevent future problems.</p>
 | |
| 
 | |
| <p><p>In addition to bug fixes, the 3.8.5 release adds improvements to the
 | |
|    query planner, especially regarding sorting using indices and handling 
 | |
|    OR terms
 | |
|    in the WHERE clause for WITHOUT ROWID tables.  The ".system" and
 | |
|    ".once" dot-commands were added to the command-line interface.  And
 | |
|    there were enhancements to the FTS4 and RTREE virtual tables.  See
 | |
|    the change log for details.
 | |
| </blockquote><hr width="50%"><a name="2014_04_03"></a><h3>2014-04-03 - Release 3.8.4.3</h3><blockquote>
 | |
| <p>The optimizations added in <a href="releaselog/3_8_4.html">version 3.8.4</a> caused some queries that involve
 | |
|    subqueries in the FROM clause, DISTINCT, and ORDER BY clauses, to give an incorrect
 | |
|    result.  See
 | |
|    <a href="http://www.sqlite.org/src/info/98825a79ce145686392d8074032ae54863aa21a3">ticket 98825a79ce145</a>
 | |
|    for details.
 | |
|    This release adds a 
 | |
|    <a href="http://www.sqlite.org/src/fdiff?sbs=1&v1=7d539cedb1c&v2=ebad891b7494d&smhdr">one-character change</a>
 | |
|    to a single line of code to fix the problem.
 | |
| </blockquote><hr width="50%"><a name="2014_03_26"></a><h3>2014-03-26 - Release 3.8.4.2</h3><blockquote>
 | |
| <p>The code changes that resulted in the performance improvements
 | |
|    in <a href="releaselog/3_8_4.html">version 3.8.4</a> missed a single buffer overflow test, which could
 | |
|    result in a read past the end of a buffer while searching a database
 | |
|    that is corrupted in a particular way.  <a href="releaselog/3_8_4_2.html">Version 3.8.4.2</a> fixes that
 | |
|    problem using a
 | |
|    <a href="http://www.sqlite.org/src/fdiff?v1=e45e3f9daf38c5be&v2=714df4e1c82f629d&sbs=1">one-line patch</a>.</p>
 | |
| 
 | |
| <p><p>We are not aware of any problems in <a href="releaselog/3_8_4.html">version 3.8.4</a>
 | |
|    when working with well-formed database files.  The problem fixed by this
 | |
|    release only comes up when reading corrupt database files.
 | |
| </blockquote><hr width="50%"><a name="2014_03_11"></a><h3>2014-03-11 - Release 3.8.4.1</h3><blockquote>
 | |
| <p>SQLite <a href="releaselog/3_8_4_1.html">version 3.8.4.1</a> is a patch against <a href="releaselog/3_8_4.html">version 3.8.4</a> that fixes
 | |
|    two minor issues:
 | |
| <ol>
 | |
| <li> Work around a C-preprocessor macro conflict that causes compilation
 | |
|      problems for some configurations of Visual Studio.
 | |
| <li> Adjust the cost computation for the <a href="optoverview.html#skipscan">skip-scan optimization</a> for
 | |
|      improved performance.
 | |
| </ol>
 | |
| Both of these issues came to light within minutes of tagging the previous
 | |
| release.  Neither issue is serious but they can be annoying.  Hence, the
 | |
| decision was made to do a quick patch release to address both issues.
 | |
| </blockquote><hr width="50%"><a name="2014_03_10"></a><h3>2014-03-10 - Release 3.8.4</h3><blockquote>
 | |
| <p>SQLite <a href="releaselog/3_8_4.html">version 3.8.4</a> is a maintenance release featuring performance
 | |
|    enhancements and fixes for a number of obscure bugs.
 | |
|    There are no significant new features in SQLite version 3.8.4.
 | |
|    However, the number of CPU cycles (measured by valgrind) needed to 
 | |
|    do many common operations has be reduced by about 12% relative to the
 | |
|    previous release, and by about 25% relative to <a href="releaselog/3_7_16.html">version 3.7.16</a>
 | |
|    from approximately one year ago.</p>
 | |
| 
 | |
| <p><p>Version 3.8.4 of SQLite fixes several corner-case bugs that were
 | |
|    found since the previous release.  These bugs were unlikely to appear
 | |
|    in practice, and none represent a security vulnerability. 
 | |
|    Nevertheless, developers are encouraged to upgrade from all prior releases.
 | |
| </blockquote><hr width="50%"><a name="2014_02_11"></a><h3>2014-02-11 - Release 3.8.3.1</h3><blockquote>
 | |
| <p>SQLite <a href="releaselog/3_8_3_1.html">version 3.8.3.1</a> fixes a bug present in versions 3.8.1,
 | |
|    3.8.2 and 3.8.3 that can cause queries to omit valid output rows.
 | |
|    Upgrading from those versions is recommended.</p>
 | |
| 
 | |
| <p><p>The problem only comes up if SQLite is compiled with either the
 | |
|    <a href="compile.html#enable_stat3">SQLITE_ENABLE_STAT3</a> or <a href="compile.html#enable_stat4">SQLITE_ENABLE_STAT4</a> compile-time options.
 | |
|    In that case, if a query has a WHERE clause that contains expressions
 | |
|    like this:
 | |
|    <blockquote>
 | |
| WHERE (expr1 OR expr2 OR ... OR exprN) AND column IS NOT NULL
 | |
|    </blockquote>
 | |
|    Where all of expr1 through exprN are suitable for use by indexes,
 | |
|    then during query planning SQLite might mistakenly converted
 | |
|    the "column IS NOT NULL" term into "column>NULL".  But the latter
 | |
|    term is never true, and so the query would return no rows.</p>
 | |
| 
 | |
| <p><p>The trouble ticket for this bug is
 | |
|    [<a href="http://www.sqlite.org/src/info/4c86b126f2">4c86b126f2</a>].
 | |
|    It is recommended that all users upgrade to avoid this problem.
 | |
| </blockquote><hr width="50%"><a name="2014_02_03"></a><h3>2014-02-03 - Release 3.8.3</h3><blockquote>
 | |
|   <p>SQLite <a href="releaselog/3_8_3.html">version 3.8.3</a> is a regularly scheduled maintenance release.
 | |
|   Upgrading from the previous release is optional.</p>
 | |
| 
 | |
| <p>  <p>The most visible change in version 3.8.3 is the addition of
 | |
|   support for <a href="lang_with.html">common table expressions</a>.  It is now possible to write a
 | |
|   single <a href="lang_select.html">SELECT</a> statement that will query a tree or graph, using either
 | |
|   a depth-first or a breadth-first search.  A single SQLite query will 
 | |
|   even <a href="lang_with.html#sudoku">solve Sudoku puzzles</a> or <a href="lang_with.html#mandelbrot">compute the Mandelbrot set</a>.  As part
 | |
|   of this change, SQLite now accepts a <a href="lang_select.html#values">VALUES clause</a> anyplace that
 | |
|   a <a href="lang_select.html">SELECT</a> statement is valid.</p>
 | |
| 
 | |
| <p>  <p>This release also includes many small performance enhancements which
 | |
|   should give a small speed boost to legacy applications.  And there are
 | |
|   other minor enhancements such as the addition of the <a href="lang_corefunc.html#printf">printf()</a> SQL
 | |
|   function.  See the <a href="releaselog/3_8_3.html">change log</a> for details.
 | |
| </blockquote><hr width="50%"><a name="2013_12_06"></a><h3>2013-12-06 - Release 3.8.2</h3><blockquote>
 | |
|   <p>SQLite <a href="releaselog/3_8_2.html">version 3.8.2</a> is a regularly scheduled maintenance release.
 | |
|   Upgrading from the previous release is optional.</p>
 | |
| 
 | |
| <p>  <p>Version 3.8.2 adds support for <a href="withoutrowid.html">WITHOUT ROWID</a> tables.  This is a
 | |
|   significant extension to SQLite.  Database files that contain WITHOUT ROWID
 | |
|   tables are not readable or writable by prior versions of SQLite, however
 | |
|   databases that do not use WITHOUT ROWID tables are fully backwards 
 | |
|   and forwards compatible.</p>
 | |
| 
 | |
| <p>  <p>The 3.8.2 release contains a potentially incompatible change.  In
 | |
|   all prior versions of SQLite, a <a href="lang_expr.html#castexpr">cast</a> from a very large positive 
 | |
|   floating point number into an integer resulted in the most negative integer.
 | |
|   In other words, CAST(+99.9e99 to INT) would yield -9223372036854775808.
 | |
|   This behavior came about because it is what x86/x64 hardware does 
 | |
|   for the equivalent cast in the C language.  But the behavior is
 | |
|   bizarre.  And so it has been changed effective with this release so that
 | |
|   a cast from a floating point number into an integer returns the integer
 | |
|   between the floating point value and zero that is closest to the floating
 | |
|   point value.  Hence, CAST(+99.9e99 to INT) now returns +9223372036854775807.
 | |
|   Since routines like <a href="c3ref/column_blob.html">sqlite3_column_int64()</a> do an implicit cast if the
 | |
|   value being accessed is really a floating point number, they are also
 | |
|   affected by this change.</p>
 | |
| 
 | |
| <p>  <p>Besides the two changes mentioned above, the 3.8.2 release also 
 | |
|   includes a number of performance enhancements.  The
 | |
|   <a href="optoverview.html#skipscan">skip-scan optimization</a> is now available for databases that have been
 | |
|   processed by <a href="lang_analyze.html">ANALYZE</a>.  Constant SQL functions are now factored out of
 | |
|   inner loops, which can result in a significant speedup for queries that
 | |
|   contain WHERE clause terms like "date>datetime('now','-2 days')".  And
 | |
|   various high-runner internal routines have been refactored for reduced
 | |
|   CPU load.
 | |
| </blockquote><hr width="50%"><a name="2013_10_17"></a><h3>2013-10-17 - Release 3.8.1</h3><blockquote>
 | |
|   <p>SQLite <a href="releaselog/3_8_1.html">version 3.8.1</a> is a regularly scheduled maintenance release.
 | |
|   Upgrading from the previous release is optional, though you should upgrade
 | |
|   if you are using <a href="partialindex.html">partial indices</a> as there was a 
 | |
|   <a href="http://www.sqlite.org/src/info/a5c8ed66ca">bug</a> related to partial
 | |
|   indices in the previous release that could result in an incorrect answer
 | |
|   for count(*) queries.</p>
 | |
| 
 | |
| <p>  <p>The <a href="queryplanner-ng.html">next generation query planner</a> that was premiered in the previous
 | |
|   release continues to work well.  
 | |
|   The new query planner has been tweaked slightly
 | |
|   in the current release to help it make better decisions in some
 | |
|   cases, but is largely unchanged.  Two new SQL functions, <a href="lang_corefunc.html#likelihood">likelihood()</a> and
 | |
|   <a href="lang_corefunc.html#unlikely">unlikely()</a>, have been added to allow developers to give hints to the
 | |
|   query planner without forcing the query planner into a particular decision.</p>
 | |
| 
 | |
| <p>  <p>Version 3.8.1 is the first SQLite release to take into account the
 | |
|   estimated size of table and index rows when choosing a query plan.
 | |
|   Row size estimates are based on the declared datatypes of columns.
 | |
|   For example, a column of type VARCHAR(1000) is assumed
 | |
|   to use much more space than a column of type INT.  The datatype-based
 | |
|   row size estimate can be
 | |
|   overridden by appending a term of the form "sz=NNN" (where NNN is the
 | |
|   average row size in bytes) to the end of the <a href="fileformat2.html#stat1tab">sqlite_stat1.stat</a>
 | |
|   record for a table or index.  Currently, row sizes are only used to help the
 | |
|   query planner choose between a table or one of its indices when doing a
 | |
|   table scan or a count(*) operation, though future releases are likely
 | |
|   to use the estimated row size in other contexts as well.  The new
 | |
|   <a href="pragma.html#pragma_stats">PRAGMA stats</a> statement can be used to view row size estimates.</p>
 | |
| 
 | |
| <p>  <p>Version 3.8.1 adds the <a href="compile.html#enable_stat4">SQLITE_ENABLE_STAT4</a> compile-time option.
 | |
|   STAT4 is very similar to STAT3 in that it uses samples from indices to 
 | |
|   try to guess how many rows of the index will be satisfy by WHERE clause
 | |
|   constraints.  The difference is that STAT4 samples all columns of the
 | |
|   index whereas the older STAT3 only sampled the left-most column.  Users
 | |
|   of STAT3 are encouraged to upgrade to STAT4.  Application developers should
 | |
|   use STAT3 and STAT4 with caution since both options, by design, violate 
 | |
|   the <a href="queryplanner-ng.html#qpstab">query planner stability guarantee</a>, making it more difficult to ensure
 | |
|   uniform performance is widely-deployed and mass-produced embedded
 | |
|   applications.
 | |
| </blockquote><hr width="50%"><a name="2013_09_03"></a><h3>2013-09-03 - Release 3.8.0.2</h3><blockquote>
 | |
|   <p>SQLite <a href="releaselog/3_8_0_2.html">version 3.8.0.2</a> contains a one-line fix to a bug in the
 | |
|   new optimization that tries to omit unused LEFT JOINs from a query.
 | |
| </blockquote><hr width="50%"><a name="2013_08_29"></a><h3>2013-08-29 - Release 3.8.0.1</h3><blockquote>
 | |
|   <p>SQLite <a href="releaselog/3_8_0_1.html">version 3.8.0.1</a> fixes some obscure bugs that were uncovered by
 | |
|   users in the 3.8.0 release.  Changes from 3.8.0 are minimal.
 | |
| </blockquote><hr width="50%"><a name="2013_08_26"></a><h3>2013-08-26 - Release 3.8.0</h3><blockquote>
 | |
|   <b>Do not fear the zero!</b></p>
 | |
| 
 | |
| <p>  <p>SQLite <a href="releaselog/3_8_0.html">version 3.8.0</a> might easily have been called "3.7.18" instead.
 | |
|   However, this release features the cutover of the
 | |
|   <a href="queryplanner-ng.html">next generation query planner</a> or <a href="queryplanner-ng.html">NGQP</a>, and there is a small chance of
 | |
|   <a href="queryplanner-ng.html#hazards">breaking legacy programs</a> that
 | |
|   rely on undefined behavior in previous SQLite releases, and so the
 | |
|   minor version number was incremented for that reason.
 | |
|   But the risks are low and there is a <a href="queryplanner-ng.html#howtofix">query planner checklist</a> is 
 | |
|   available to application developers to aid in avoiding problems.</p>
 | |
| 
 | |
| <p>  <p>SQLite <a href="releaselog/3_8_0.html">version 3.8.0</a> is actually one of the most heavily tested
 | |
|   SQLite releases ever.  Thousands and thousands of beta copies have
 | |
|   be downloaded, and presumably tested, and there have been no problem
 | |
|   reports.</p>
 | |
| 
 | |
| <p>  <p>In addition to the <a href="queryplanner-ng.html">next generation query planner</a>, the 3.8.0 release
 | |
|   adds support for <a href="partialindex.html">partial indices</a>, as well as several other new features.
 | |
|   See the <a href="releaselog/3_8_0.html">change log</a> for further detail.
 | |
| </blockquote><hr width="50%"><a name="2013_05_20"></a><h3>2013-05-20 - Release 3.7.17</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_17.html">version 3.7.17</a> is a regularly schedule maintenance release.
 | |
|   Visit the <a href="releaselog/3_7_17.html">change log</a> for a full explanation of the
 | |
|   changes in this release.</p>
 | |
| 
 | |
| <p>  There are many bug fixes in version 3.7.17.  But this does not indicate
 | |
|   that 3.7.16 was a problematic release.  All of the bugs in 3.7.17 are 
 | |
|   obscure and are unlikely to impact any particular application.  And most 
 | |
|   of the bugs that are fixed in 3.7.17 predate 3.7.16 and have been in 
 | |
|   the code for years without ever before being noticed.
 | |
|   Nevertheless, due to the large number of fixes,
 | |
|   all users are encouraged to upgrade when possible.
 | |
| </blockquote><hr width="50%"><a name="2013_04_12"></a><h3>2013-04-12 - Release 3.7.16.2</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_16_2.html">version 3.7.16.2</a> fixes a long-standing flaw in the Windows
 | |
|   OS interface that
 | |
|   can result in database corruption under a rare race condition.
 | |
|   See <a href="http://www.sqlite.org/src/info/7ff3120e4f">http://www.sqlite.org/src/info/7ff3120e4f</a> for a full description
 | |
|   of the problem.</p>
 | |
| 
 | |
| <p>  As far as we know, this bug has never been seen in the wild.  The
 | |
|   problem was discovered by the SQLite developers while writing stress tests
 | |
|   for a separate component of SQLite.  Those stress tests have not yet
 | |
|   found any problems with the component they were intended to verify, but 
 | |
|   they did find the bug which is the subject of this patch release.</p>
 | |
| 
 | |
| <p>  Other than updates to version numbers, the only difference between this
 | |
|   release and 3.7.16.1 is a two-character change in a single identifier,
 | |
|   which is contained in the windows-specific OS interface logic.  There 
 | |
|   are no changes in this release (other than version numbers) for platforms
 | |
|   other than Windows.
 | |
| </blockquote><hr width="50%"><a name="2013_03_29"></a><h3>2013-03-29 - Release 3.7.16.1</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_16_1.html">version 3.7.16.1</a> is a bug fix release that fixes a few problems
 | |
|   that were present in the previous releases.</p>
 | |
| 
 | |
| <p>  The primary motivation for version 3.7.16.1 is to fix a bug in the
 | |
|   query optimizer that was introduced as part of <a href="releaselog/3_7_15.html">version 3.7.15</a>.  The
 | |
|   query optimizer was being a little overzealous in optimizing out some
 | |
|   ORDER BY clauses, which resulted in sorting being omitted on occasions
 | |
|   where sorting is required to get the correct answer.  See
 | |
|   ticket <a href="http://www.sqlite.org/src/info/a179fe7465">a179fe7465</a> for
 | |
|   details.</p>
 | |
| 
 | |
| <p>  In addition to the ORDER BY fix, several other patches to fix obscure
 | |
|   (and mostly harmless) bugs and to fix spelling errors in source code
 | |
|   comments are also included in this release.
 | |
| </blockquote><hr width="50%"><a name="2013_03_18"></a><h3>2013-03-18 - Release 3.7.16</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_16.html">version 3.7.16</a> is a regularly scheduled release of SQLite.
 | |
|   This release contains several language enhancements and improvements
 | |
|   to the query optimizer.  A list of the major enhancements and optimizations
 | |
|   can be see on the <a href="releaselog/3_7_16.html">change log</a>.</p>
 | |
| 
 | |
| <p>  There was one important bug fix
 | |
|   (see <a href="http://www.sqlite.org/src/info/fc7bd6358f">Ticket fc7bd6358f</a>)
 | |
|   that addresses an incorrect query result that could have occurred in
 | |
|   a three-way join where the join constraints compared INTEGER columns
 | |
|   to TEXT columns.  This issue had been in the code for time out of mind
 | |
|   and had never before been reported, so we surmise that it is very obscure.
 | |
|   Nevertheless, all users are advised to upgrade to avoid any future problems
 | |
|   associated with this issue.
 | |
| </blockquote><hr width="50%"><a name="2013_01_09"></a><h3>2013-01-09 - Release 3.7.15.2</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_15_2.html">version 3.7.15.2</a> is a patch release that fixes a single bug
 | |
|   that was introduced in version <a href="releaselog/3_7_15.html">version 3.7.15</a>.  The fix is a 4-character
 | |
|   edit to a single line of code.  Other than this 4-character change and
 | |
|   the update of the version number, nothing has changed from
 | |
|   <a href="releaselog/3_7_15_1.html">version 3.7.15.1</a>.
 | |
| </blockquote><hr width="50%"><a name="2012_12_19"></a><h3>2012-12-19 - Release 3.7.15.1</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_15_1.html">version 3.7.15.1</a> is a patch release that fixes a single bug
 | |
|   that was introduced in version <a href="releaselog/3_7_15.html">version 3.7.15</a>.  The fix involved changing
 | |
|   two lines of code and adding a single assert().  This release also includes
 | |
|   some new test cases to prevent a regression of the bug, and the version
 | |
|   number is increased, of course.  But otherwise, nothing has changed from
 | |
|   <a href="releaselog/3_7_15.html">version 3.7.15</a>.
 | |
| </blockquote><hr width="50%"><a name="2012_12_12"></a><h3>2012-12-12 - Release 3.7.15</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_15.html">version 3.7.15</a> is a regularly schedule release of SQLite.  This
 | |
|   release contains several improvements to the query planner and optimizer
 | |
|   and one important bug fix.  This is the first release to officially
 | |
|   support Windows 8 Phone.</p>
 | |
| 
 | |
| <p>  The important bug fix is a problem that can lead to segfaults when using
 | |
|   <a href="sharedcache.html">shared cache mode</a> on a schema that contains a <a href="lang_expr.html#collateop">COLLATE operator</a> within
 | |
|   a <a href="lang_createtable.html#ckconst">CHECK constraint</a> or within a <a href="lang_createview.html">view</a>.  Collating functions are associated
 | |
|   with individual database connections.  But a pointer to the collating function
 | |
|   was also being cached within expressions.  If an expression was part of the
 | |
|   schema and contained a cached collating function, it would point to the
 | |
|   collating function in the database connection that originally parsed the
 | |
|   schema.  If that database connection closed while other database 
 | |
|   connections using the same shared cache continued to operate, they other
 | |
|   database connections would try to use the deallocated collating function
 | |
|   in the database connection that closed.  The fix in version 3.7.15 was to
 | |
|   not cache collating function pointers in the expression structure but 
 | |
|   instead look them up each time a new statement is prepared.</p>
 | |
| 
 | |
| <p>  This release also contains some important enhancements to the query planner
 | |
|   which should (we hope) make some queries run faster.  The enhancements
 | |
|   include:</p>
 | |
| 
 | |
| <p>  <ol><li><p>When doing a full-table scan, try to use an index instead of
 | |
|   the original table, under the theory that indices contain less information
 | |
|   and are thus smaller and hence require less disk I/O to scan.</p></p>
 | |
| 
 | |
| <p>  <li><p>Enhance the <a href="lang_expr.html#in_op">IN operator</a> to allow it to make use of 
 | |
|   indices that have <a href="datatype3.html#affinity">numeric affinity</a>.</p></p>
 | |
| 
 | |
| <p>  <li><p>Do a better job of recognizing when an ORDER BY clause can be 
 | |
|   implemented using indices - especially in cases where the ORDER BY clause
 | |
|   contains terms from two or more tables in a join.</p>
 | |
|   </ol>
 | |
| </blockquote><hr width="50%"><a name="2012_10_04"></a><h3>2012-10-04 - Release 3.7.14.1</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_14_1.html">version 3.7.14.1</a> is a patch release.  Changes from the baseline
 | |
|   version 3.7.14 are minimal and are restricted to fixing three bugs.</p>
 | |
| 
 | |
| <p>  One of the fixed bugs is a long-standing issue with the TCL interface.
 | |
|   Another is an external compiler bug that SQLite merely works around and
 | |
|   that only comes up if you are using the VisualStudio-2012 compiler to
 | |
|   generate WinRT applications on ARM with optimizations enabled.  The
 | |
|   third problem is an SQLite core bug, introduced in version 3.7.14, that
 | |
|   can cause a segfault if a query contains a LEFT JOIN that contains an OR
 | |
|   in the ON clause.
 | |
| </blockquote><hr width="50%"><a name="2012_09_03"></a><h3>2012-09-03 - Release 3.7.14</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_14.html">version 3.7.14</a> is a regularly scheduled maintenance release
 | |
|   of SQLite.  The previous release continues to work well.  Upgrading
 | |
|   is optional.</p>
 | |
| 
 | |
| <p>  Version 3.7.14 drops native support for OS/2.  We are not aware of any
 | |
|   active projects that were using SQLite on OS/2 and since the SQLite
 | |
|   developers had no way of testing on OS/2 it seemed like it was time
 | |
|   to simply remove the OS/2 code from the SQLite tree.  If there are
 | |
|   OS/2 projects out there that still need SQLite support, they can
 | |
|   continue to maintain their own private <a href="vfs.html">VFS</a> which can be linked to
 | |
|   SQLite at start-time using the <a href="c3ref/vfs_find.html">sqlite3_vfs_register()</a> interface.</p>
 | |
| 
 | |
| <p>  The <a href="c3ref/close.html">sqlite3_close_v2()</a> interface has been added.  The sqlite3_close_v2()
 | |
|   interface differs from sqlite3_close() in that it is designed to work
 | |
|   better for host language that use a garbage collector.  With the older
 | |
|   sqlite3_close() interface, the associated <a href="c3ref/stmt.html">prepared statements</a> and
 | |
|   <a href="c3ref/backup.html">sqlite3_backup</a> objects must be destroyed before the database connection.
 | |
|   With the newer sqlite3_close_v2() interface, the objects can be destroyed
 | |
|   in any order.</p>
 | |
| 
 | |
| <p>  This release also includes performance improvements to the sort algorithm
 | |
|   that is used to implement ORDER BY and CREATE INDEX.  And the query planner
 | |
|   has been enhanced to better use covering indices on queries that use OR
 | |
|   terms in the WHERE clause.
 | |
| </blockquote><hr width="50%"><a name="2012_06_11"></a><h3>2012-06-11 - Release 3.7.13</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_13.html">version 3.7.13</a> adds support for WinRT and metro style
 | |
|   applications for Microsoft Windows 8.  The 3.7.13 release is
 | |
|   coming sooner than is usual after the previous release in order to get
 | |
|   this new capability into the hands of developers.  To use SQLite in 
 | |
|   a metro style application, compile with the -DSQLITE_OS_WINRT flag.
 | |
|   Because of the increased application security and safety requirements
 | |
|   of WinRT, all database
 | |
|   filenames should be full pathnames.  Note that SQLite is not capable
 | |
|   of accessing databases outside the installation directory and application
 | |
|   data directory.  This restriction is another security and safety feature
 | |
|   of WinRT. Apart from these restrictions, SQLite should work exactly
 | |
|   the same on WinRT as it does on every other system.</p>
 | |
| 
 | |
| <p>  Also in this release: when a database is opened using <a href="uri.html">URI filenames</a>
 | |
|   and the <a href="uri.html#coreqp">mode=memory</a> query parameter 
 | |
|   then the database is an in-memory database, just as if it had
 | |
|   been named ":memory:".  But, if shared cache mode is enabled, then
 | |
|   all other database connections that specify the same URI filename
 | |
|   will connect to the same in-memory database.  This allows two or more
 | |
|   database connections (in the same process) to share the same in-memory
 | |
|   database.</p>
 | |
| 
 | |
| <p>  This release also includes some corner-case performance optimizations
 | |
|   that are obscure yet significant to an important subset of SQLite users.
 | |
|   Getting these performance optimizations into circulation quickly is
 | |
|   yet another reason for making this release so soon following the previous.</p>
 | |
| 
 | |
| <p>  The next release of SQLite is scheduled to occur after the usual
 | |
|   2 or 3 month interval.
 | |
| </blockquote><hr width="50%"><a name="2012_05_22"></a><h3>2012-05-22 - Patch Release 3.7.12.1</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_12_1.html">version 3.7.12.1</a> is a patch release for <a href="releaselog/3_7_12.html">version 3.7.12</a> that
 | |
|   fixes a <a href="http://www.sqlite.org/src/info/c2ad16f997ee9c">bug</a> that was
 | |
|   introduced in version 3.7.12 and that can
 | |
|   cause a segfault for certain obscure nested aggregate queries.
 | |
|   There are very few changes in 3.7.12.1, and upgrading is only needed for
 | |
|   applications that do nested aggregate queries.
 | |
| </blockquote><hr width="50%"><a name="2012_05_14"></a><h3>2012-05-14 - Version 3.7.12</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_12.html">version 3.7.12</a> is a regularly scheduled maintenance release.
 | |
|   This release contains several new optimizations and bug fixes and upgrading
 | |
|   is recommended.  See the <a href="releaselog/3_7_12.html">change summary</a> for details.
 | |
| </blockquote><hr width="50%"><a name="2012_03_20"></a><h3>2012-03-20 - Version 3.7.11</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_11.html">version 3.7.11</a> is a regularly scheduled maintenance release
 | |
|   which was rushed out early due to a 
 | |
|   <a href="http://www.sqlite.org/src/info/b7c8682cc1">bug in the query optimizer</a>
 | |
|   introduced in the previous release.  The bug is obscure - it changes
 | |
|   a LEFT JOIN into an INNER JOIN in some cases when there is a 3-way join
 | |
|   and OR terms in the WHERE clause.  But it was considered serious enough to
 | |
|   rush out a fix.  Apart from this one problem, SQLite <a href="releaselog/3_7_10.html">version 3.7.10</a> has
 | |
|   not given any trouble.  Upgrading to <a href="releaselog/3_7_11.html">version 3.7.11</a> from versions
 | |
|   3.7.6.3, 3.7.7, 3.7.7.1, 3.7.8, or 3.7.9 is
 | |
|   optional.  Upgrading from other releases, including the previous release
 | |
|   3.7.10, is recommended.</p>
 | |
| 
 | |
| <p>  Other enhancements found in this release are enumerated in the
 | |
|   <a href="releaselog/3_7_11.html">change log</a>.
 | |
| </blockquote><hr width="50%"><a name="2012_01_16"></a><h3>2012-01-16 - Version 3.7.10</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_10.html">version 3.7.10</a> is a regularly scheduled maintenance release.
 | |
|   Upgrading from version 3.7.6.3, 3.7.7, 3.7.7.1, 3.7.8, or 3.7.9 is
 | |
|   optional.  Upgrading from other releases is recommended.</p>
 | |
| 
 | |
| <p>  The <a href="c3ref/c_config_covering_index_scan.html#sqliteconfigpcache">SQLITE_CONFIG_PCACHE</a> mechanism has been replaced with
 | |
|   <a href="c3ref/c_config_covering_index_scan.html#sqliteconfigpcache2">SQLITE_CONFIG_PCACHE2</a>.  If you do not know what this mechanism
 | |
|   is (it is an extreme corner-case and is seldom used) then this 
 | |
|   change will not effect you in the least.</p>
 | |
| 
 | |
| <p>  The default <a href="fileformat2.html#schemaformat">schema format number</a> for new database files has changed
 | |
|   from 1 to 4.  SQLite has been able to generate and read database files
 | |
|   using schema format 4 for six years.  But up unto now, the default
 | |
|   schema format has been 1 so that older versions of SQLite could read
 | |
|   and write databases generated by newer versions of SQLite.  But those
 | |
|   older versions of SQLite have become so scarce now that it seems 
 | |
|   reasonable to make the new format the default.</p>
 | |
| 
 | |
| <p>  SQLite is changing some of the assumptions it makes above the behavior
 | |
|   of disk drives and flash memory devices during a sudden power loss.
 | |
|   This change is completely transparent to applications.
 | |
|   Read about the <a href="psow.html">powersafe overwrite</a> property for additional information.</p>
 | |
| 
 | |
| <p>  Lots of new interfaces have been added in this release:
 | |
|   <ul>
 | |
|   <li> <a href="c3ref/db_release_memory.html">sqlite3_db_release_memory()</a>
 | |
|   <li> <a href="pragma.html#pragma_shrink_memory">PRAGMA shrink_memory</a>
 | |
|   <li> <a href="c3ref/db_filename.html">sqlite3_db_filename()</a>
 | |
|   <li> <a href="c3ref/stmt_busy.html">sqlite3_stmt_busy()</a>
 | |
|   <li> <a href="c3ref/uri_boolean.html">sqlite3_uri_boolean()</a>
 | |
|   <li> <a href="c3ref/uri_boolean.html">sqlite3_uri_int64()</a>
 | |
|   </ul></p>
 | |
| 
 | |
| <p>  The <a href="pragma.html#pragma_cache_size">PRAGMA cache_size</a> statement has been enhanced.  Formerly, you would
 | |
|   use this statement to tell SQLite how many pages of the database files it
 | |
|   should hold in its cache at once.  The total memory requirement would
 | |
|   depend on the database page size. Now, if you give <a href="pragma.html#pragma_cache_size">PRAGMA cache_size</a>
 | |
|   a negative value -N, it will allocate roughly N 
 | |
|   <a href="http://en.wikipedia.org/wiki/Kibibyte">kibibytes</a> of memory to cache,
 | |
|   divided up according to page size.  This enhancement allows programs to
 | |
|   more easily control their memory usage.</p>
 | |
| 
 | |
| <p>  There have been several obscure bug fixes.  One noteworthy bug,
 | |
|   ticket <a href="http://www.sqlite.org/src/info/ff5be73dee">ff5be73dee</a>,
 | |
|   could in theory result in a corrupt database file if a power loss
 | |
|   occurred at just the wrong moment on an unusually cantankerous disk
 | |
|   drive.  But that is mostly a theoretical concern and is very unlikely
 | |
|   to happen in practice.  The bug was found during laboratory testing
 | |
|   and has never been observed to occur in the wild.
 | |
| </blockquote><hr width="50%"><a name="2011_11_01"></a><h3>2011-11-01 - Version 3.7.9</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_9.html">version 3.7.9</a> is a regularly scheduled maintenance release.
 | |
|   Upgrading from version 3.7.6.3, 3.7.7, 3.7.7.1, and 3.7.8 is optional.
 | |
|   Upgrading from other versions is recommended.</p>
 | |
| 
 | |
| <p>  The <a href="compile.html#enable_stat2">SQLITE_ENABLE_STAT2</a> compile-time option is now a no-op.  The enhanced
 | |
|   query-planner functionality formerly available using SQLITE_ENABLE_STAT2
 | |
|   is now available through <a href="compile.html#enable_stat3">SQLITE_ENABLE_STAT3</a>.  The enhanced query planning
 | |
|   is still disabled by default.  However, future releases of SQLite might
 | |
|   convert STAT3 from an enable-option to a disable-option so that it is 
 | |
|   available by default and is only omitted upon request.</p>
 | |
| 
 | |
| <p>  The <a href="fts3.html#fts4">FTS4</a> full-text search engine has been enhanced such that tokens in
 | |
|   the search string that begin with "^" must be the first token in their
 | |
|   respective columns in order to match.   Formerly, "^" characters in the
 | |
|   search string were simply ignored.  Hence, if a legacy application was
 | |
|   including "^" characters in FTS4 search strings, thinking that they would
 | |
|   always be ignored, then those legacy applications might break with this
 | |
|   update.  The fix is simply remove the "^" characters from the search 
 | |
|   string.</p>
 | |
| 
 | |
| <p>  See the <a href="releaselog/3_7_9.html">change summary</a> for additional changes associated
 | |
|   with this release.  
 | |
| </blockquote><hr width="50%"><a name="2011__eptember_19"></a><h3>2011-September-19 - Version 3.7.8</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_8.html">version 3.7.8</a> is a quarterly maintenance release.  Upgrading from
 | |
|   versions 3.7.6.3, 3.7.7, or 3.7.7.1 is optional.  Upgrading from other
 | |
|   versions is recommended.</p>
 | |
| 
 | |
| <p>  This release features a new "external merge sort" algorithm used to
 | |
|   implement ORDER BY and GROUP BY and also to presort the content of an
 | |
|   index for CREATE INDEX.  The new algorithm does approximately the same
 | |
|   number of comparisons and I/Os as before, but the I/Os are much more
 | |
|   sequential and so runtimes are greatly reduced when the size of the
 | |
|   set being sorted is larger than the filesystem cache.  The performance 
 | |
|   improvement can be dramatic - orders of magnitude faster 
 | |
|   for large CREATE INDEX commands.  On the other hand, 
 | |
|   the code is slightly slower (1% or 2%)
 | |
|   for a small CREATE INDEX.  Since CREATE INDEX is not an
 | |
|   operation that commonly occurs on a speed-critical path, we feel that 
 | |
|   this tradeoff is a good one.  The slight slowdown for small CREATE INDEX
 | |
|   statements might be recovered in a future release.  ORDER BY and GROUP BY
 | |
|   operations should now be faster for all cases, large and small.</p>
 | |
| 
 | |
| <p>  The query planner has been enhanced to do a better job of handling
 | |
|   the DISTINCT keyword on SELECT statements.</p>
 | |
| 
 | |
| <p>  There has been a lot of work on the default <a href="vfs.html">VFSes</a>.  The unix VFS has
 | |
|   been enhanced to include more overrideable system calls - a feature requested
 | |
|   by Chromium to make it easier to build SQLite into a sandbox.  The
 | |
|   windows VFS has been enhanced to be more resistant to interference from
 | |
|   anti-virus software.</p>
 | |
| 
 | |
| <p>  Every version of SQLite is better tested than the previous, and 3.7.8
 | |
|   is no exception to this rule.  Version 3.7.8 has been used internally by
 | |
|   the SQLite team for mission critical functions and has performed flawlessly.
 | |
|   And, of course, it passes our rigorous <a href="testing.html">testing</a> procedures with no
 | |
|   problems detected.  Version 3.7.8 is recommended for all new development.
 | |
| </blockquote><hr width="50%"><a name="2011_06_28"></a><h3>2011-06-28 - Version 3.7.7.1</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_7_1.html">version 3.7.7.1</a> adds a one-line bug fix to 3.7.7 to fix
 | |
|   <a href="http://www.sqlite.org/src/info/25ee812710">a problem</a>
 | |
|   causing <a href="pragma.html#pragma_case_sensitive_like">PRAGMA case_sensitive_like</a> statements compiled using the legacy
 | |
|   <a href="c3ref/prepare.html">sqlite3_prepare()</a> interface to fail with an <a href="rescode.html#schema">SQLITE_SCHEMA</a> error. Because
 | |
|   <a href="c3ref/exec.html">sqlite3_exec()</a> uses sqlite3_prepare() internally, the problem also affects
 | |
|   sqlite3_exec().</p>
 | |
| 
 | |
| <p>  Upgrading from 3.7.7 is only required for applications that use "PRAGMA
 | |
|   case_sensitive_like" and the sqlite3_prepare() (or sqlite3_exec()) interface.
 | |
| </blockquote><hr width="50%"><a name="2011_06_24"></a><h3>2011-06-24 - Version 3.7.7</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_7.html">version 3.7.7</a> is a regularly scheduled bi-monthly maintenance
 | |
|   release.  Upgrading from version 3.7.6.3 is optional.  Upgrading from all
 | |
|   prior releases is recommended.</p>
 | |
| 
 | |
| <p>  This release adds support for naming database files using <a href="uri.html">URI filenames</a>.
 | |
|   URI filenames are disabled by default (for backwards compatibility) but
 | |
|   applications are encouraged to enable them since incompatibilities are
 | |
|   likely to be exceedingly rare and the feature is useful.  See the 
 | |
|   <a href="uri.html">URI filename documentation</a> for details.</p>
 | |
| 
 | |
| <p>  Most of the other enhancements in this release involve 
 | |
|   <a href="vtab.html">virtual tables</a>.  The virtual table interface has been enhanced to
 | |
|   support <a href="lang_savepoint.html">SAVEPOINT</a> and <a href="lang_conflict.html">ON CONFLICT</a> clause processing, and the built-in 
 | |
|   <a href="rtree.html">RTREE</a> and <a href="fts3.html">FTS3/FTS4</a> have been augmented to take advantage of 
 | |
|   the new capability.  This means, for example, that it is now possible
 | |
|   to use the <a href="lang_replace.html">REPLACE</a> command on <a href="fts3.html">FTS3/FTS4</a> and <a href="rtree.html">RTREE</a> tables.</p>
 | |
| 
 | |
| <p>  The <a href="fts3.html#fts4">FTS4</a> full-text index extension has been enhanced to support
 | |
|   the <a href="fts3.html#fts4prefix">FTS4 prefix option</a> and the <a href="fts3.html#fts4order">FTS4 order option</a>.  These two enhancements
 | |
|   are provided in support of search-as-you-type interfaces where search
 | |
|   results begin to appear after the first keystroke in the "search" box
 | |
|   and are refined with each subsequent keystroke.  The way this is done is
 | |
|   to do a separate full-text search after each key stroke, and add the
 | |
|   "*" wildcard at the end of the word currently being typed.  So, for
 | |
|   example, if the text typed so far is "fast da" and the next character
 | |
|   typed is "t", then the application does a full-text search of the
 | |
|   pattern "fast dat*" and displays the results.  Such capability has
 | |
|   always existed.  What is new is that the <a href="fts3.html#fts4prefix">FTS4 prefix option</a> allows
 | |
|   the search to be very fast (a matter of milliseconds) even for difficult
 | |
|   cases such as "t*" or "th*".</p>
 | |
| 
 | |
| <p>  There has been a fair amount of work done on the FTS4 module for this
 | |
|   release.  But the core SQLite code has changed little and the previous
 | |
|   release has not given any problems, so we expect this to be a very
 | |
|   stable release.
 | |
| </blockquote><hr width="50%"><a name="2011_05_19"></a><h3>2011-05-19 - Version 3.7.6.3</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_6_3.html">version 3.7.6.3</a> is a patch release that fixes a 
 | |
|   <a href="http://www.sqlite.org/src/info/2d1a5c67df">single bug</a>
 | |
|   associated with <a href="wal.html">WAL mode</a>.  The bug has been in SQLite ever since WAL
 | |
|   was added, but the problem is very obscure and so nobody has noticed
 | |
|   before now.  Nevertheless, all users are encouraged to upgrade to
 | |
|   version 3.7.6.3 or later.</p>
 | |
| 
 | |
| <p>  The bug is this:
 | |
|   If the <a href="pragma.html#pragma_cache_size">cache_size</a> is set very small (less than 10) and SQLite comes
 | |
|   under memory pressure and if a multi-statement transaction is started
 | |
|   in which the last statement prior to COMMIT is a SELECT statement and if
 | |
|   a <a href="wal.html#ckpt">checkpoint</a> occurs right after the transaction commit, then
 | |
|   it might happen that the transaction will be silently rolled back instead
 | |
|   of being committed.</p>
 | |
| 
 | |
| <p>  The default setting for <a href="pragma.html#pragma_cache_size">cache_size</a> is 2000. So in most situations, this
 | |
|   bug will never appear.  But sometimes programmers set <a href="pragma.html#pragma_cache_size">cache_size</a> to
 | |
|   very small values on gadgets and other low-memory devices in order to
 | |
|   save memory space.  Such applications are vulnerable.
 | |
|   Note that this bug does <u>not</u> cause database corruption.  It is
 | |
|   as if <a href="lang_transaction.html">ROLLBACK</a> were being run instead of <a href="lang_transaction.html">COMMIT</a> in some cases.</p>
 | |
| 
 | |
| <p>  <b>Bug Details</b></p>
 | |
| 
 | |
| <p>  Transactions commit in WAL mode by adding a record onto the end of
 | |
|   the WAL (the write-ahead log) that contains a "commit" flag.  So to
 | |
|   commit a transaction, SQLite takes all the pages that have changed
 | |
|   during that transaction, appends them to the WAL, and sets the commit
 | |
|   flag on the last page.  Now, if SQLite comes under memory pressure, it
 | |
|   might try to free up memory space by writing changed pages to the WAL
 | |
|   prior to the commit.  We call this "spilling" the cache to WAL.  There 
 | |
|   is nothing wrong with spilling cache to WAL.  But if the
 | |
|   memory pressure is severe, it might be that by the time <a href="lang_transaction.html">COMMIT</a> is run,
 | |
|   all changed pages for the transaction have already been spilled to WAL
 | |
|   and there are no pages left to be written to WAL.
 | |
|   And with no unwritten pages, there was nothing to put the commit flag
 | |
|   on.  And without a commit flag, the transaction would end up being
 | |
|   rolled back.</p>
 | |
| 
 | |
| <p>  The fix to this problem was that if all changed pages has already
 | |
|   been written to the WAL when the commit was started, then page 1 of
 | |
|   the database will be written to the WAL again, so that there will always
 | |
|   be a page available on which to set the commit flag.
 | |
| </blockquote><hr width="50%"><a name="2011_04_17"></a><h3>2011-04-17 - Version 3.7.6.2</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_6_2.html">version 3.7.6.2</a> adds a one-line bug fix to 3.7.6.1 that enables
 | |
|   pthreads to work correctly on NetBSD.  The problem was a faulty function
 | |
|   signature for the open system call.  The problem does not appear to have
 | |
|   any adverse impact on any system other than NetBSD.</p>
 | |
| 
 | |
| <p>  Upgrading from version 3.7.6.1 is only needed on NetBSD.
 | |
| </blockquote><hr width="50%"><a name="2011_04_13"></a><h3>2011-04-13 - Version 3.7.6.1</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_6_1.html">version 3.7.6.1</a> fixes a single bug in 3.7.6 that can cause a
 | |
|   segfault if <a href="c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlsizehint">SQLITE_FCNTL_SIZE_HINT</a> is used on a unix build that has
 | |
|   SQLITE_ENABLE_LOCKING_MODE set to 0 and is compiled with
 | |
|   HAVE_POSIX_FALLOCATE.</p>
 | |
| 
 | |
| <p>  Upgrading from 3.7.6 is only needed for users effected by the 
 | |
|   configuration-specific bug described above.  There are no other changes
 | |
|   to the code.
 | |
| </blockquote><hr width="50%"><a name="2011_04_12"></a><h3>2011-04-12 - Version 3.7.6</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_6.html">version 3.7.6</a> is a regularly scheduled bi-monthly maintenance
 | |
|   release of SQLite.  Upgrading from version 3.7.5 is optional.  Upgrading
 | |
|   releases prior to 3.7.5 is recommended.
 | |
| </blockquote><hr width="50%"><a name="2011_02_01"></a><h3>2011-02-01 - Version 3.7.5</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_5.html">version 3.7.5</a> is a regularly scheduled bi-monthly maintenance
 | |
|   release of SQLite.  Due to the discovery and fix of 
 | |
|   <a href="http://www.sqlite.org/src/tktview?name=5d863f876e">an obscure bug</a>
 | |
|   that could cause database corruption, upgrading from all prior
 | |
|   releases of SQLite is recommended.  This bug was found during code
 | |
|   review and has not been observed in the wild.</p>
 | |
| 
 | |
| <p>  This release adds new <a href="c3ref/c_dbstatus_options.html#sqlitedbstatuslookasidehit">opcodes</a> for the
 | |
|   <a href="c3ref/db_status.html">sqlite3_db_status()</a> interface that allow more precise measurement of
 | |
|   how the <a href="malloc.html#lookaside">lookaside memory allocator</a> is performing, which can be useful
 | |
|   for tuning in applications with very tight memory constraints.</p>
 | |
| 
 | |
| <p>  The <a href="c3ref/mprintf.html">sqlite3_vsnprintf()</a> interface was added.  This routine is simply
 | |
|   a varargs version of the long-standing <a href="c3ref/mprintf.html">sqlite3_snprintf()</a> interface.</p>
 | |
| 
 | |
| <p>  The output from <a href="c3ref/profile.html">sqlite3_trace()</a> interface has been enhanced to work
 | |
|   better (and faster) in systems that use recursive extensions such as
 | |
|   <a href="fts3.html">FTS3</a> or <a href="rtree.html">RTREE</a>.</p>
 | |
| 
 | |
| <p>  Testing with Valgrind shows that this release of SQLite is about 1%
 | |
|   or 2% faster than the previous release for most operations.</p>
 | |
| 
 | |
| <p>  A fork of the popular ADO.NET adaptor for SQLite known as System.Data.SQLite
 | |
|   is now available on <a href="http://System.Data.SQLite.org/">http://System.Data.SQLite.org/</a>.  The originator
 | |
|   of System.Data.SQLite, Robert Simpson, is aware of this fork, has
 | |
|   expressed his approval, and has commit privileges on the new Fossil
 | |
|   repository.  The SQLite development team intends to maintain
 | |
|   System.Data.SQLite moving forward.
 | |
| </blockquote><hr width="50%"><a name="2010_12_08"></a><h3>2010-12-08 - Version 3.7.4</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_4.html">version 3.7.4</a> is a regularly scheduled bi-monthly maintenance
 | |
|   release of SQLite.  Upgrading from <a href="releaselog/3_7_2.html">version 3.7.2</a> and <a href="releaselog/3_7_3.html">version 3.7.3</a>
 | |
|   is optional.  Upgrading from all other SQLite releases is recommended.</p>
 | |
| 
 | |
| <p>  This release features <a href="fts3.html">full-text search</a> enhancements.  The older 
 | |
|   <a href="fts3.html">FTS3</a> virtual table is still fully supported, and should also run
 | |
|   faster.  In addition, the new <a href="fts3.html#fts4">FTS4</a> virtual table is added.  FTS4
 | |
|   follows the same syntax as FTS3 but holds additional metadata which
 | |
|   facilitates some performance improvements and more advanced 
 | |
|   <a href="fts3.html#matchinfo">matchinfo()</a> output.  Look for further full-text search enhancements
 | |
|   in subsequent releases.</p>
 | |
| 
 | |
| <p>  Also in this release, the <a href="eqp.html">EXPLAIN QUERY PLAN</a> output has been enhanced
 | |
|   and new documentation is provided so that application developers can
 | |
|   more easily understand how SQLite is performing their queries.</p>
 | |
| 
 | |
| <p>  Thanks to an account from the folks at <a href="http://www.devio.us/">http://www.devio.us/</a>, OpenBSD
 | |
|   has been added to the list of platforms upon which we 
 | |
|   <a href="testing.html">test SQLite</a> prior to every release.  That list of platforms
 | |
|   now includes:</p>
 | |
| 
 | |
| <p>  <ul>
 | |
|   <li> Linux x86 & x86_64
 | |
|   <li> MacOS 10.5 & 10.6
 | |
|   <li> MacOS 10.2 PowerPC
 | |
|   <li> WinXP and Win7
 | |
|   <li> Android 2.2
 | |
|   <li> OpenBSD 4.7
 | |
|   </ul></p>
 | |
| 
 | |
| <p>  The previous release of SQLite (<a href="releaselog/3_7_3.html">version 3.7.3</a>) has proven to be very
 | |
|   robust.  The only serious issue discovered was
 | |
|   <a href="http://www.sqlite.org/src/info/80ba201079">ticket 80ba201079</a> that
 | |
|   describes an incorrect query result that can occur under very 
 | |
|   unusual circumstances.  The ticket description contains details of the
 | |
|   problem.  Suffice it to say here that the problem is very obscure and
 | |
|   is unlikely to effect most applications and so upgrading is optional.
 | |
|   The problem is fixed, of course, in this release.
 | |
| </blockquote><hr width="50%"><a name="2010__ctober_08"></a><h3>2010-October-08 - Version 3.7.3</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_3.html">version 3.7.3</a> is a regularly scheduled bi-monthly maintenance
 | |
|   release of SQLite.  Upgrading from <a href="releaselog/3_7_2.html">version 3.7.2</a> is optional.
 | |
|   Upgrading from all other releases is recommended.</p>
 | |
| 
 | |
| <p>  This release adds two new interfaces (really just variations on existing
 | |
|   interfaces).  The <a href="c3ref/create_function.html">sqlite3_create_function_v2()</a> interface adds a 
 | |
|   destructor for the application-data pointer.  The new 
 | |
|   <a href="c3ref/hard_heap_limit64.html">sqlite3_soft_heap_limit64()</a> interface allows the soft heap limit to
 | |
|   be set to a value greater than 2<sup>31</sup>. </p>
 | |
| 
 | |
| <p>  The <a href="rtree.html">RTREE</a> extension has been enhanced with the ability to have an
 | |
|   <a href="rtree.html#customquery">application-defined query region</a>.  This might
 | |
|   be used, for example, to locate all objects within 
 | |
|   the field of view of a camera.</p>
 | |
| 
 | |
| <p>  The 3.7.3 release also includes some performance enhancements, including
 | |
|   query planner improvements, documentation updates,
 | |
|   and fixes to some very obscure bugs.
 | |
| </blockquote><hr width="50%"><a name="2010__ugust_24"></a><h3>2010-August-24 - Version 3.7.2</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_2.html">version 3.7.2</a> fixes a long-standing bug that can cause the
 | |
|   database <a href="fileformat2.html#freelist">free-page list</a> to go corrupt if <a href="pragma.html#pragma_incremental_vacuum">incremental_vacuum</a> is used
 | |
|   multiple times to
 | |
|   partially reduce the size of a database file that contains many hundreds
 | |
|   of unused database pages.  The original bug reports together with links
 | |
|   to the patch that fixes it can be seen 
 | |
|   <a href="http://www.sqlite.org/src/info/5e10420e8d">here</a>.</p>
 | |
| 
 | |
| <p>  This bug has been in the code for at least a year and possibly longer.
 | |
|   The bug has nothing to do with the versions 3.7.1 or 3.7.0 or any other
 | |
|   recent release.  The fact that the bug was discovered (and fixed)
 | |
|   within hours of the 3.7.1 release is purely a coincidence.</p>
 | |
| 
 | |
| <p>  The bug is impossible to hit without using <a href="pragma.html#pragma_incremental_vacuum">incremental_vacuum</a> and is
 | |
|   very difficult to hit even with incremental_vacuum.  And the kind of
 | |
|   corruption that the bug causes can usually be fixed 
 | |
|   simply by running <a href="lang_vacuum.html">VACUUM</a>.  Nevertheless, because the bug can result
 | |
|   in database corruption, it is recommended that all SQLite users upgrade
 | |
|   to version 3.7.2 or later.
 | |
| </blockquote><hr width="50%"><a name="2010__ugust_23"></a><h3>2010-August-23 - Version 3.7.1</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_1.html">version 3.7.1</a> is a stabilization release for the 3.7.x series.
 | |
|   Other than the filesize-in-header bug that was fixed in <a href="releaselog/3_7_0_1.html">version 3.7.0.1</a>,
 | |
|   no major problems have been seen in 3.7.0.  Some minor corner-case
 | |
|   performance regressions have been fixed.  A typo in the OS/2 interface
 | |
|   has been repaired.</p>
 | |
| 
 | |
| <p>  A biggest part of the 3.7.1 release is a cleanup and refactoring of
 | |
|   the pager module within SQLite.  This refactoring should have no
 | |
|   application-visible effects.  The purpose was to reorganize the code
 | |
|   in ways that make it easier to prove correctness.</p>
 | |
| 
 | |
| <p>  The 3.7.1 release adds new experimental methods for obtained more 
 | |
|   detailed memory usage information and for controlling database file
 | |
|   fragmentation.  And the query planner now does a better job of
 | |
|   optimizing the <a href="lang_expr.html#like">LIKE</a> and <a href="lang_expr.html#glob">GLOB</a> operators.</p>
 | |
| 
 | |
| <p>  This release increases the maximum size of database pages from 32KiB to
 | |
|   64KiB.  A database with 64KiB pages will not be readable or writable by
 | |
|   older versions of SQLite.  Note that further increases in page size
 | |
|   are not feasible since the <a href="fileformat2.html">file format</a> uses 16-bit offsets to structures
 | |
|   within each page.
 | |
| </blockquote><hr width="50%"><a name="2010__ugust_04"></a><h3>2010-August-04 - Version 3.7.0.1</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_0_1.html">version 3.7.0.1</a> is a patch release to fix a bug in the new
 | |
|   filesize-in-header feature of the <a href="fileformat2.html">SQLite file format</a>
 | |
|   that could cause database corruption if the same database file is
 | |
|   written alternately with version 3.7.0 and version 3.6.23.1 or earlier.
 | |
|   A performance regression was also fixed in this release.
 | |
| </blockquote><hr width="50%"><a name="2010_07_22"></a><h3>2010-07-22 - Version 3.7.0</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_7_0.html">version 3.7.0</a> is a major release of SQLite that features
 | |
|   a new transaction control mechanism using a <a href="wal.html">write-ahead log</a> or <a href="wal.html">WAL</a>.
 | |
|   The traditional rollback-journal is still used as the default so there
 | |
|   should be no visible change for legacy programs.  But newer programs
 | |
|   can take advantage of improved performance and concurrency by enabling
 | |
|   the WAL journaling mode.</p>
 | |
| 
 | |
| <p>  SQLite version 3.7.0 also contains some query planner enhancements and
 | |
|   a few obscure bug fixes, but the only really big change is the addition
 | |
|   of WAL mode.
 | |
| </blockquote><hr width="50%"><a name="2010_03_30"></a><h3>2010-03-30 - Version 3.6.23.1</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_6_23_1.html">version 3.6.23.1</a> is a patch release to fix a bug in the
 | |
|   offsets() function of <a href="fts3.html">FTS3</a> at the request of the Mozilla.  
 | |
| </blockquote><hr width="50%"><a name="2010_03_09"></a><h3>2010-03-09 - Version 3.6.23</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_6_23.html">version 3.6.23</a> is a regular bimonthly release of SQLite.
 | |
|   Upgrading from the prior release is purely optional.</p>
 | |
| 
 | |
| <p>  This release contains new pragmas: the <a href="pragma.html#pragma_secure_delete">secure_delete pragma</a>, and
 | |
|   the <a href="pragma.html#pragma_compile_options">compile_options pragma</a>.
 | |
|   There are a new SQL functions: <a href="lang_corefunc.html#sqlite_compileoption_used">sqlite_compileoption_used()</a>
 | |
|   and <a href="lang_corefunc.html#sqlite_compileoption_get">sqlite_compileoption_get()</a>.
 | |
|   New C/C++ interfaces: <a href="c3ref/compileoption_get.html">sqlite3_compileoption_used()</a>,
 | |
|   <a href="c3ref/compileoption_get.html">sqlite3_compileoption_get()</a>, <a href="c3ref/c_config_covering_index_scan.html#sqliteconfiglog">SQLITE_CONFIG_LOG</a>, and
 | |
|   <a href="c3ref/log.html">sqlite3_log()</a>.</p>
 | |
| 
 | |
| <p>  This release also includes several minor bug fixes and performance
 | |
|   improvements.  Support for <a href="compile.html#omit_floating_point">SQLITE_OMIT_FLOATING_POINT</a> is enhanced.
 | |
|   There are on-going improvements to <a href="fts3.html">FTS3</a>.</p>
 | |
| 
 | |
| <p>  The ".genfkey" command in the <a href="cli.html">Command Line Interface</a> has been
 | |
|   removed.  SQLite has supported standard SQL <a href="foreignkeys.html">foreign key constraints</a>
 | |
|   since <a href="releaselog/3_6_19.html">version 3.6.19</a> and so the ".genfkey" command was seen as
 | |
|   an anachronism.
 | |
| </blockquote><hr width="50%"><a name="2010_01_06"></a><h3>2010-01-06 - Version 3.6.22</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_6_22.html">version 3.6.22</a> is a bug-fix release.  Two bugs have been fixed
 | |
|   that might cause incorrect query results.  
 | |
|   <ul>
 | |
|   <li>Ticket <a href="http://www.sqlite.org/src/info/31338dca7e">31338dca7e</a>
 | |
|   describes a
 | |
|   problem with queries that have a WHERE clause of the form (x AND y) OR z
 | |
|   where x and z come from one table of a join and y comes from a different
 | |
|   table.
 | |
|   <li> Ticket <a href="http://www.sqlite.org/src/info/eb5548a849">eb5548a849</a>
 | |
|   describes
 | |
|   a problem where the use of the CAST operator in the WHERE clause can lead
 | |
|   to incorrect results if the column being cast to a new datatype is also
 | |
|   used in the same WHERE clause without being cast.
 | |
|   </ul>
 | |
|   Both bugs are obscure,
 | |
|   but because they could arise in an application after deployment, it is
 | |
|   recommended that all applications upgrade SQLite to version 3.6.22.</p>
 | |
| 
 | |
| <p>  This release also includes other minor bug fixes and performance
 | |
|   enhancements, especially in the <a href="fts3.html">FTS3</a> extension.
 | |
| </blockquote><hr width="50%"><a name="2009_12_07"></a><h3>2009-12-07 - Version 3.6.21</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_6_21.html">version 3.6.21</a> focuses on performance optimization.  For
 | |
|   a certain set of traces, this version uses 12% fewer CPU instructions
 | |
|   than the previous release (as measured by Valgrind).  In addition, the
 | |
|   <a href="fts3.html">FTS3</a> extension has been through an extensive cleanup and rework and
 | |
|   the <a href="c3ref/profile.html">sqlite3_trace()</a> interface has been modified to insert 
 | |
|   <a href="lang_expr.html#varparam">bound parameter</a> values into its output.
 | |
| </blockquote><hr width="50%"><a name="2009_11_04"></a><h3>2009-11-04 - Version 3.6.20</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_6_20.html">version 3.6.20</a> is a general maintenance release.  The
 | |
|   query planner has been enhanced to work better with bound parameters
 | |
|   in LIKE and GLOB operators and in range constraints and various minor
 | |
|   bugs have been fixed.  Upgrading from 3.6.19 is optional.
 | |
| </blockquote><hr width="50%"><a name="2009_10_14"></a><h3>2009-10-14 - Version 3.6.19</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_6_19.html">version 3.6.19</a> adds native support for
 | |
|   <a href="foreignkeys.html">foreign key constraints</a>, including deferred constraints and
 | |
|   cascading deletes.  Enforcement of foreign keys is disabled by
 | |
|   default for backwards compatibility and must be turned on using
 | |
|   the <a href="pragma.html#pragma_foreign_keys">foreign_keys pragma</a>.</p>
 | |
| 
 | |
| <p>  Version 3.6.19 also adds support for the
 | |
|   <a href="lang_expr.html#isisnot">IS and IS NOT operators</a>.  Formerly, SQLite (as most
 | |
|   other SQL database engines) supported IS NULL and IS NOT NULL.  The
 | |
|   IS and IS NOT operators are generalizations that allow the right-hand
 | |
|   side to be an arbitrary expression.  IS and IS NOT work the same as
 | |
|   == (equals) and != (not equals) except that with IS and IS NOT the
 | |
|   NULL values compare equal to one another.
 | |
| </blockquote><hr width="50%"><a name="2009_09_11"></a><h3>2009-09-11 - Version 3.6.18</h3><blockquote>
 | |
|   Beginning with this release, the SQLite source code is tracked and
 | |
|   managed using the <a href="http://www.fossil-scm.org/">Fossil</a>
 | |
|   distributed configuration management system.  SQLite was previously
 | |
|   versioned using CVS.  The entire CVS history has been imported into
 | |
|   Fossil.  The older CVS repository remains on the website but is
 | |
|   read-only.</p>
 | |
| 
 | |
| <p>  There are two major enhancements in SQLite version 3.6.18.  The first
 | |
|   is a series or refinements to the query planner that help SQLite to
 | |
|   choose better plans for joins where in the past it was selecting suboptimal
 | |
|   query plans.  The <a href="compile.html#enable_stat2">SQLITE_ENABLE_STAT2</a> compile-time option has been
 | |
|   added to cause SQLite to collect histogram data on indices when the
 | |
|   <a href="lang_analyze.html">ANALYZE</a> command is run.  The use of histograms improve the query
 | |
|   planning performance even more.</p>
 | |
| 
 | |
| <p>  The second major enhancement is that SQLite now support recursive
 | |
|   triggers.  The older non-recursive behavior of triggers is still the
 | |
|   default behavior.  Recursive triggers are activated using the
 | |
|   <a href="pragma.html#pragma_recursive_triggers">recursive_triggers pragma</a>.  In addition to allowing triggers to
 | |
|   call themselves (either directly or indirectly) the new capability
 | |
|   also fires DELETE triggers on rows that are removed from a table
 | |
|   as a result of <a href="lang_conflict.html">REPLACE</a> conflict resolution processing.</p>
 | |
| 
 | |
| <p>  Non-recursive triggers are still the default behavior since this
 | |
|   is least likely to cause problems for existing applications.  However,
 | |
|   we anticipate that triggers will become
 | |
|   recursive by default beginning with release 3.7.0.  At that point,
 | |
|   applications that want to continue using the older non-recursive
 | |
|   trigger behavior will need to use the <a href="pragma.html#pragma_recursive_triggers">recursive_triggers pragma</a>
 | |
|   to disable recursive triggers.</p>
 | |
| 
 | |
| <p>  This version of SQLite also contains bug fixes, though none of the
 | |
|   bugs are serious and all are obscure, so upgrading is optional.</p>
 | |
| 
 | |
| <p>  The SQLite core continues to have <a href="testing.html#coverage">100% branch test coverage</a>
 | |
|   and so despite the many changes in this release, the developers 
 | |
|   believe that this version of SQLite is stable and ready for production
 | |
|   use.
 | |
| </blockquote><hr width="50%"><a name="2009_08_10"></a><h3>2009-08-10 - Version 3.6.17</h3><blockquote>
 | |
|   This is a monthly maintenance release with a focus of bug fixes,
 | |
|   performance improvements, and increased test coverage.  This is the
 | |
|   first release of SQLite since <a href="testing.html#coverage">100% branch test coverage</a>
 | |
|   was achieved on the SQLite core.  </p>
 | |
| 
 | |
| <p>  In addition, a new interface <a href="c3ref/stricmp.html">sqlite3_strnicmp()</a> is provided for the
 | |
|   convenience of extension writers.</p>
 | |
| 
 | |
| <p>  None of the bugs fixed in this release are serious.  All bugs are
 | |
|   obscure.  Upgrading is optional.
 | |
| </blockquote><hr width="50%"><a name="2009_07_25"></a><h3>2009-07-25 - 100% Branch Test Coverage</h3><blockquote>
 | |
|   A subset of the <a href="th3.html">TH3</a> test suite was measured by gcov to provide
 | |
|   <a href="testing.html#coverage">100% branch test coverage</a> over the SQLite core
 | |
|   (exclusive of the VFS backend and of extensions such as FTS3 and RTREE)
 | |
|   when compiled for SuSE 10.1 Linux on x86.  The SQLite developers pledge
 | |
|   to maintain branch test coverage at 100% in all future releases.
 | |
|   Ongoing work will strive for 100% branch test coverage on the 
 | |
|   operating-system backends and extensions as well.
 | |
| </blockquote><hr width="50%"><a name="2009_06_27"></a><h3>2009-06-27 - Version 3.6.16</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_6_16.html">version 3.6.16</a> is another general maintenance release containing
 | |
|   performance and robustness enhancements.  A single notable bug was fixed
 | |
|   (ticket #3929).  This bug cause cause INSERT or UPDATE statements to fail
 | |
|   on indexed tables that have AFTER triggers that modify the same table and
 | |
|   index.
 | |
| </blockquote><hr width="50%"><a name="2009_06_15"></a><h3>2009-06-15 - Version 3.6.15</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_6_15.html">version 3.6.15</a> is a general maintenance release containing
 | |
|   performance and robustness enhancements and fixes for various obscure
 | |
|   bugs.  
 | |
| </blockquote><hr width="50%"><a name="2009_05_25"></a><h3>2009-05-25 - Version 3.6.14.2</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_6_14_2.html">version 3.6.14.2</a> fixes an obscure bug in the code generator
 | |
|   (ticket #3879)
 | |
|   section of SQLite which can potentially cause incorrect query results.
 | |
|   The changes from the prior release consist of only this one bug fix,
 | |
|   check-in [6676]
 | |
|   and a change to the version number text.</p>
 | |
| 
 | |
| <p>  The bug was introduced in version 3.6.14.  It is recommended that
 | |
|   users of version 3.6.14 and 3.6.14.1 upgrade to this release.  Applications
 | |
|   are unlikely to hit this bug, but since it is difficult to predict which
 | |
|   applications might hit it and which might not, we recommend that all
 | |
|   users of 3.6.14 and 3.5.14.1 upgrade to this release.
 | |
| </blockquote><hr width="50%"><a name="2009_05_19"></a><h3>2009-05-19 - Version 3.6.14.1</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_6_14_1.html">version 3.6.14.1</a> is a patch release to <a href="releaselog/3_6_14.html">version 3.6.14</a> with
 | |
|   minimal changes that fixes three bugs.  Upgrading is only necessary 
 | |
|   for users who are impacted by one or more of those bugs.
 | |
| </blockquote><hr width="50%"><a name="2009_05_07"></a><h3>2009-05-07 - Version 3.6.14</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_6_14.html">version 3.6.14</a> provides new performance enhancements in
 | |
|   the btree and pager layers and in the query optimizer.  Certain
 | |
|   workloads can be as much as twice as fast as the previous release,
 | |
|   though 10% faster is a more typical result.</p>
 | |
| 
 | |
| <p>  Queries against <a href="vtab.html">virtual tables</a> that contain OR and IN operators
 | |
|   in the WHERE clause are now able to use indexing.</p>
 | |
| 
 | |
| <p>  A new optional <a href="asyncvfs.html">asynchronous I/O backend</a> is available for
 | |
|   unix and windows.  The asynchronous backend gives the illusion of faster
 | |
|   response time by pushing slow write operations into a background thread.
 | |
|   The tradeoff for faster response time is that more memory is required
 | |
|   (to hold the content of the pending writes) and if a power failure or
 | |
|   program crash occurs, some transactions that appeared to have committed
 | |
|   might end up being rolled back upon restart.</p>
 | |
| 
 | |
| <p>  This release also contains many minor bug fixes, documentation enhancements,
 | |
|   new test cases, and cleanups and simplifications to the source code.</p>
 | |
| 
 | |
| <p>  There is no compelling reason to upgrade from versions 3.6.12 or
 | |
|   3.6.13 if those prior versions are working.  Though many users may
 | |
|   benefit from the improved performance.
 | |
| </blockquote><hr width="50%"><a name="2008_12_16"></a><h3>2008-12-16 - Version 3.6.7</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_6_7.html">version 3.6.7</a> contains a major cleanup of the Unix driver,
 | |
|   and support for the new Proxy Locking mechanism on Mac OS X.  Though
 | |
|   the Unix driver is reorganized, its functionality is the same and so
 | |
|   applications should not notice a difference.
 | |
| </blockquote><hr width="50%"><a name="2008_11_26"></a><h3>2008-11-26 - Version 3.6.6.2</h3><blockquote>
 | |
|   This release fixes a bug that was introduced into SQLite <a href="releaselog/3_6_6.html">version 3.6.6</a>
 | |
|   and which seems like it might be able to cause database corruption.  This
 | |
|   bug was detected during stress testing.  It has not been seen in the wild.
 | |
|   An analysis of the problem suggests that the bug might be able to cause
 | |
|   database corruption, however focused efforts to find a real-world test
 | |
|   cases that actually causes database corruption have so far been unsuccessful.
 | |
|   Hence, the likelihood of this bug causing problems is low.  Nevertheless,
 | |
|   we have decided to do an emergency branch release out of an abundance of
 | |
|   caution.</p>
 | |
| 
 | |
| <p>  The <a href="releaselog/3_6_6_2.html">version 3.6.6.2</a> release also fixes an obscure memory leak that
 | |
|   can occur following a disk I/O error.
 | |
| </blockquote><hr width="50%"><a name="2008_11_22"></a><h3>2008-11-22 - Version 3.6.6.1</h3><blockquote>
 | |
|   This release fixes a bug that was introduced into SQLite <a href="releaselog/3_6_4.html">version 3.6.4</a>
 | |
|   and that can cause database corruption in obscure cases.  This bug has
 | |
|   never been seen in the wild; it was first detected by internal stress
 | |
|   tests and required substantial analysis before it could be shown to 
 | |
|   potentially lead to corruption.  So we feel that SQLite versions 3.6.4,
 | |
|   3.6.5, and 3.6.6 are safe to use for development work.  But upgrading
 | |
|   to this patch release or later is recommended prior to deploying
 | |
|   products that incorporate SQLite.</p>
 | |
| 
 | |
| <p>  We have taken the unusual step of issuing a patch release in order to
 | |
|   get the fix for this bug into circulation quickly.  SQLite version 3.6.7
 | |
|   will continue on its normal path of development with an anticipated
 | |
|   release in mid December.  
 | |
| </blockquote><hr width="50%"><a name="2008_11_19"></a><h3>2008-11-19 - Version 3.6.6</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_6_5.html">version 3.6.5</a> is released.  This is a quick turn-around release
 | |
|   that fixes a bug in virtual tables and FTS3 that snuck into
 | |
|   <a href="releaselog/3_6_5.html">version 3.6.5</a>.  This release also adds the new
 | |
|   application-defined page cache mechanism.
 | |
| </blockquote><hr width="50%"><a name="2008_11_12"></a><h3>2008-11-12 - Version 3.6.5</h3><blockquote>
 | |
|   SQLite <a href="releaselog/3_6_5.html">version 3.6.5</a> is released.  There are various minor feature
 | |
|   enhancements and numerous obscure bug fixes. 
 | |
|   The <a href="releaselog/3_6_5.html">change log</a> contains the details.  Upgrading is
 | |
|   optional.
 | |
| </blockquote><hr width="50%"><a name="2008_11_01"></a><h3>2008-11-01 - Bloomberg Joins SQLite Consortium</h3><blockquote>
 | |
|   The SQLite developers are honored to announce that
 | |
|   <a href="http://www.bloomberg.com/">Bloomberg</a> has joined the
 | |
|   <a href="consortium.html">SQLite Consortium</a>.
 | |
| </blockquote><hr width="50%"><a name="2008_10_15"></a><h3>2008-10-15 - Version 3.6.4</h3><blockquote>
 | |
|   SQLite version 3.6.4 adds new features designed to help applications
 | |
|   detect when indices are not being used on query.  There are also some
 | |
|   important performance improvements.  Upgrading is optional.
 | |
| </blockquote><hr width="50%"><a name="2008_09_22"></a><h3>2008-09-22 - Version 3.6.3</h3><blockquote>
 | |
|   SQLite version 3.6.3 fixes a bug in SELECT DISTINCT that was introduced
 | |
|   by the previous version.  No new features are added.  Upgrading is
 | |
|   recommended for all applications that make use of DISTINCT.
 | |
| </blockquote><hr width="50%"><a name="2008_08_30"></a><h3>2008-08-30 - Version 3.6.2</h3><blockquote>
 | |
|   SQLite version 3.6.2 contains rewrites of the page-cache subsystem and
 | |
|   the procedures for matching identifiers to table columns in SQL statements.
 | |
|   These changes are designed to better modularize the code and make it more
 | |
|   maintainable and reliable moving forward.  Nearly 5000 non-comment lines 
 | |
|   of core code (about 11.3%) have changed
 | |
|   from the previous release.  Nevertheless, there should be no
 | |
|   application-visible changes, other than bug fixes.
 | |
| </blockquote><hr width="50%"><a name="2008_08_06"></a><h3>2008-08-06 - Version 3.6.1</h3><blockquote>
 | |
|   SQLite version 3.6.1 is a stabilization and performance enhancement
 | |
|   release.  
 | |
| </blockquote><hr width="50%"><a name="2008_07_16"></a><h3>2008-07-16 - Version 3.6.0 beta</h3><blockquote>
 | |
|   Version 3.6.0 makes changes to the <a href="c3ref/vfs.html">VFS</a> object in order
 | |
|   to make SQLite more easily portable to a wider variety of platforms.
 | |
|   There are potential incompatibilities with some legacy applications.
 | |
|   See the <a href="35to36.html">35to36.html</a> document for details.</p>
 | |
| 
 | |
| <p>  Many new interfaces are introduced in version 3.6.0.  The code is
 | |
|   very well tested and is appropriate for use in stable systems.  We
 | |
|   have attached the "beta" designation only so that we can make tweaks to
 | |
|   the new interfaces in the next release without having to declare an
 | |
|   incompatibility.
 | |
| </blockquote><hr width="50%"><a name="2008_05_12"></a><h3>2008-05-12 - Version 3.5.9</h3><blockquote>
 | |
|   Version 3.5.9 adds a new experimental <a href="pragma.html#syntax">PRAGMA</a>: <a href="pragma.html#pragma_journal_mode">journal_mode</a>.
 | |
|   Setting the journal mode to PERSIST can provide performance improvement
 | |
|   on systems where deleting a file is expensive.  The PERSIST journal
 | |
|   mode is still considered experimental and should be used with caution
 | |
|   pending further testing.</p>
 | |
| 
 | |
| <p>  Version 3.5.9 is intended to be the last stable release prior to
 | |
|   version 3.6.0.  Version 3.6.0 will make incompatible changes to the
 | |
|   <a href="c3ref/vfs.html">sqlite3_vfs</a> VFS layer in order to address deficiencies in the original
 | |
|   design.  These incompatibilities will only effect programmers who
 | |
|   write their own custom VFS layers (typically embedded device builders).
 | |
|   The planned VFS changes will be much smaller
 | |
|   than the changes that occurred on the 
 | |
|   <a href="34to35.html">3.4.2 to 3.5.0 transaction</a> that occurred last
 | |
|   September.</p>
 | |
| 
 | |
| <p>  This release of SQLite is considered stable and ready for production use.
 | |
| </blockquote><hr width="50%"><a name="2008_04_16"></a><h3>2008-04-16 - Version 3.5.8</h3><blockquote>
 | |
|   Version 3.5.8 includes some important new performance optimizations
 | |
|   in the virtual machine code generator, including constant subexpression
 | |
|   factoring and common subexpression elimination.  This release also
 | |
|   creates new public interfaces:
 | |
|   <a href="c3ref/randomness.html">sqlite3_randomness()</a> provides access to SQLite's internal
 | |
|   pseudo-random number generator, <a href="c3ref/limit.html">sqlite3_limit()</a> allows size
 | |
|   limits to be set at run-time on a per-connection basis, and
 | |
|   <a href="c3ref/context_db_handle.html">sqlite3_context_db_handle()</a> is a convenience routine that allows
 | |
|   an application-defined SQL function implementation to retrieve
 | |
|   its <a href="c3ref/sqlite3.html">database connection</a> handle.</p>
 | |
| 
 | |
| <p>  This release of SQLite is considered stable and ready for production use.
 | |
| </blockquote><hr width="50%"><a name="2008_03_17"></a><h3>2008-03-17 - Version 3.5.7</h3><blockquote>
 | |
|   Version 3.5.7 fixes several minor and obscure bugs, especially 
 | |
|   in the autoconf-generated makefile.  Upgrading is optional.
 | |
|   This release of SQLite is considered stable and ready for production use.
 | |
| </blockquote><hr width="50%"><a name="2008_02_06"></a><h3>2008-02-06 - Version 3.5.6</h3><blockquote>
 | |
|   Version 3.5.6 fixes a minor regression in 3.5.5 - a regression that
 | |
|   had nothing to do with the massive change of the virtual machine
 | |
|   to a register-based design.
 | |
|   No problems have been reported with the new virtual machine.  This
 | |
|   release of SQLite is considered stable and ready for production use.
 | |
| </blockquote><hr width="50%"><a name="2008_01_31"></a><h3>2008-01-31 - Version 3.5.5</h3><blockquote>
 | |
|   Version 3.5.5 changes over 8% of the core source code of SQLite in order
 | |
|   to convert the internal virtual machine from a stack-based design into
 | |
|   a register-based design.  This change will allow future optimizations
 | |
|   and will avoid an entire class of stack overflow bugs that have caused
 | |
|   problems in the past.  Even though this change is large, extensive testing
 | |
|   has found zero errors in the new virtual machine and so we believe this
 | |
|   to be a very stable release.
 | |
| </blockquote><hr width="50%"><a name="2007_12_14"></a><h3>2007-12-14 - Version 3.5.4</h3><blockquote>
 | |
|   Version 3.5.4 fixes a long-standing but obscure bug in UPDATE and
 | |
|   DELETE which might cause database corruption.  (See ticket #2832.)
 | |
|   Upgrading is recommended for all users.</p>
 | |
| 
 | |
| <p>  This release also brings the processing of ORDER BY statements into
 | |
|   compliance with standard SQL.  This could, in theory, cause problems
 | |
|   for existing applications that depend on the older, buggy behavior.
 | |
|   See ticket #2822 for additional information.
 | |
| </blockquote><hr width="50%"><a name="2007_12_12"></a><h3>2007-12-12 - SQLite Consortium Announced</h3><blockquote>
 | |
|   The <a href="consortium.html">SQLite Consortium</a> was launched
 | |
|   today with <a href="http://www.mozilla.org/">Mozilla</a> and
 | |
|   <a href="http://www.symbian.com/">Symbian</a> as charter members.
 | |
|   As noted in the <a href="pressrelease-20071212.html">press release</a>,
 | |
|   the Consortium's goal is to promote the continuing vitality and
 | |
|   independence of SQLite.  
 | |
| </blockquote><hr width="50%"><a name="2007_11_27"></a><h3>2007-11-27 - Version 3.5.3</h3><blockquote>
 | |
|   This is an incremental release that fixes several minor problems.
 | |
|   Upgrading is optional.  If Version 3.5.2 or 3.5.1 is working fine
 | |
|   for you, then there is no pressing need to change to 3.5.3.</p>
 | |
| 
 | |
| <p>  The prebuilt binaries and the amalgamation found on the 
 | |
|   <a href="download.html">download</a> page include the FTS3 fulltext
 | |
|   search extension module.  We are doing this on an experimental
 | |
|   basis and are not promising to provide prebuilt binaries with
 | |
|   FTS3 in the future.
 | |
| </blockquote><hr width="50%"><a name="2007_11_05"></a><h3>2007-11-05 - Version 3.5.2</h3><blockquote>
 | |
|   This is an incremental release that fixes several minor problems,
 | |
|   adds some obscure features, and provides some performance tweaks.  
 | |
|   Upgrading is optional.</p>
 | |
| 
 | |
| <p>  The experimental compile-time option
 | |
|   <a href="compile.html#omitfeatures">SQLITE_OMIT_MEMORY_ALLOCATION</a> is no longer supported.  On the other
 | |
|   hand, it is now possible to compile SQLite so that it uses a static
 | |
|   array for all its dynamic memory allocation needs and never calls
 | |
|   malloc.  Expect to see additional radical changes to the memory 
 | |
|   allocation subsystem in future releases.
 | |
| </blockquote><hr width="50%"><a name="2007_10_04"></a><h3>2007-10-04 - Version 3.5.1</h3><blockquote>
 | |
|   Fix a long-standing bug that might cause database corruption if a
 | |
|   disk-full error occurs in the middle of a transaction and that
 | |
|   transaction is not rolled back.
 | |
|   Ticket #2686.</p>
 | |
| 
 | |
| <p>  The new VFS layer is stable.  However, we still reserve the right to
 | |
|   make tweaks to the interface definition of the VFS if necessary.
 | |
| </blockquote><hr width="50%"><a name="2007_09_04"></a><h3>2007-09-04 - Version 3.5.0 alpha</h3><blockquote>
 | |
|   The OS interface layer and the memory allocation subsystems in
 | |
|   SQLite have been reimplemented.  The published API is largely unchanged
 | |
|   but the (unpublished) OS interface has been modified extensively.  
 | |
|   Applications that implement their own OS interface will require
 | |
|   modification.  See
 | |
|   <a href="34to35.html">34to35.html</a> for details.<p></p>
 | |
| 
 | |
| <p>  This is a large change.  Approximately 10% of the source code was
 | |
|   modified.  We are calling this first release "alpha" in order to give
 | |
|   the user community time to test and evaluate the changes before we
 | |
|   freeze the new design.
 | |
| </blockquote><hr width="50%"><a name="2007_08_13"></a><h3>2007-08-13 - Version 3.4.2</h3><blockquote>
 | |
|   While stress-testing the 
 | |
|   <a href="c3ref/soft_heap_limit.html">soft_heap_limit</a>
 | |
|   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 
 | |
|   <a href="c3ref/soft_heap_limit.html">sqlite3_soft_heap_limit</a>
 | |
|   interface.
 | |
| </blockquote><hr width="50%"><a name="2007_07_20"></a><h3>2007-07-20 - Version 3.4.1</h3><blockquote>
 | |
|   This release fixes a bug in <a href="lang_vacuum.html">VACUUM</a> that
 | |
|   can lead to database corruption.  The bug was introduced in version 
 | |
|   <a href="changes.html#version_3_3_14">3.3.14</a>.
 | |
|   Upgrading is recommended for all users.  Also included are a slew of
 | |
|   other more routine
 | |
|   <a href="changes.html#version_3_4_1">enhancements and bug fixes</a>.
 | |
| </blockquote><hr width="50%"><a name="2007_06_18"></a><h3>2007-06-18 - Version 3.4.0</h3><blockquote>
 | |
|   This release fixes two separate bugs either of which 
 | |
|   can lead to database corruption.  Upgrading
 | |
|   is strongly recommended.  If you must continue using an older version
 | |
|   of SQLite, please at least read about how to avoid these bugs
 | |
|   at CorruptionFollowingBusyError and ticket #2418
 | |
|   <p>
 | |
|   This release also adds explicit <a href="limits.html">limits</a> on the
 | |
|   sizes and quantities of things SQLite will handle.  The new limits might
 | |
|   causes compatibility problems for existing applications that
 | |
|   use excessively large strings, BLOBs, tables, or SQL statements. 
 | |
|   The new limits can be increased at compile-time to work around any problems
 | |
|   that arise.  Nevertheless, the version number of this release is
 | |
|   3.4.0 instead of 3.3.18 in order to call attention to the possible
 | |
|   incompatibility.
 | |
|   </p>
 | |
|   There are also new features, including
 | |
|   <a href="c3ref/blob_open.html">incremental BLOB I/O</a> and
 | |
|   <a href="pragma.html#pragma_incremental_vacuum">incremental vacuum</a>.
 | |
|   See the <a href="changes.html#version_3_4_0">change log</a> 
 | |
|   for additional information.
 | |
| </blockquote><hr width="50%"><a name="2007_04_25"></a><h3>2007-04-25 - Version 3.3.17</h3><blockquote>
 | |
|   This version fixes a bug in the forwards-compatibility logic of SQLite
 | |
|   that was causing a database to become unreadable when it should have
 | |
|   been read-only.  Upgrade from 3.3.16 only if you plan to deploy into
 | |
|   a product that might need to be upgraded in the future.  For day to day
 | |
|   use, it probably does not matter.
 | |
| </blockquote><hr width="50%"><a name="2007_04_18"></a><h3>2007-04-18 - Version 3.3.16</h3><blockquote>
 | |
|   Performance improvements added in 3.3.14 but mistakenly turned off
 | |
|   in 3.3.15 have been reinstated.  A bug has been fixed that prevented 
 | |
|   VACUUM from running if a NULL value was in a UNIQUE column.
 | |
| </blockquote><hr width="50%"><a name="2007_04_09"></a><h3>2007-04-09 - Version 3.3.15</h3><blockquote>
 | |
|   An annoying bug introduced in 3.3.14 has been fixed.  There are
 | |
|   also many enhancements to the test suite.  
 | |
| </blockquote><hr width="50%"><a name="2007_04_02"></a><h3>2007-04-02 - Version 3.3.14</h3><blockquote>
 | |
|   This version focuses on performance improvements.  If you recompile
 | |
|   the amalgamation using GCC option -O3 (the precompiled binaries
 | |
|   use -O2) you may see performance
 | |
|   improvements of 35% or more over version 3.3.13 depending on your
 | |
|   workload.  This version also
 | |
|   adds support for <a href="pragma.html#pragma_locking_mode">
 | |
|   exclusive access mode</a>.
 | |
| </blockquote><hr width="50%"><a name="2007_02_13"></a><h3>2007-02-13 - Version 3.3.13</h3><blockquote>
 | |
|   This version fixes a subtle bug in the ORDER BY optimizer that can 
 | |
|   occur when using joins.  There are also a few minor enhancements.
 | |
|   Upgrading is recommended.
 | |
| </blockquote><hr width="50%"><a name="2007_01_27"></a><h3>2007-01-27 - Version 3.3.12</h3><blockquote>
 | |
|   The first published build of the previous version used the wrong
 | |
|   set of source files.  Consequently, many people downloaded a build
 | |
|   that was labeled as "3.3.11" but was really 3.3.10.  Version 3.3.12
 | |
|   is released to clear up the ambiguity.  A couple more bugs have
 | |
|   also been fixed and <a href="pragma.html#pragma_integrity_check">
 | |
|   PRAGMA integrity_check</a> has been enhanced.
 | |
| </blockquote><hr width="50%"><a name="2007_01_22"></a><h3>2007-01-22 - Version 3.3.11</h3><blockquote>
 | |
|   Version 3.3.11 fixes for a few more problems in version 3.3.9 that
 | |
|   version 3.3.10 failed to catch.  Upgrading is recommended.
 | |
| </blockquote><hr width="50%"><a name="2007_01_09"></a><h3>2007-01-09 - Version 3.3.10</h3><blockquote>
 | |
|   Version 3.3.10 fixes several bugs that were introduced by the previous
 | |
|   release.  Upgrading is recommended.
 | |
| </blockquote><hr width="50%"><a name="2007_01_04"></a><h3>2007-01-04 - Version 3.3.9</h3><blockquote>
 | |
|   Version 3.3.9 fixes bugs that can lead to database corruption under
 | |
|   obscure and difficult to reproduce circumstances.  See
 | |
|   DatabaseCorruption in the
 | |
|   wiki for details.
 | |
|   This release also adds the new
 | |
|   <a href="c3ref/prepare.html">sqlite3_prepare_v2()</a>
 | |
|   API and includes important bug fixes in the command-line
 | |
|   shell and enhancements to the query optimizer.  Upgrading is
 | |
|   recommended.
 | |
| </blockquote><hr width="50%"><a name="2006_10_09"></a><h3>2006-10-09 - Version 3.3.8</h3><blockquote>
 | |
|   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.
 | |
| </blockquote><hr width="50%"><a name="2006_08_12"></a><h3>2006-08-12 - Version 3.3.7</h3><blockquote>
 | |
|   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.
 | |
| </blockquote><hr width="50%"><a name="2006_06_19"></a><h3>2006-06-19 - New Book About SQLite</h3><blockquote>
 | |
|   <i><a href="http://www.apress.com/book/bookDisplay.html?bID=10130">The Definitive Guide to SQLite</a></i>,
 | |
|   a new book by
 | |
|   <a href="http://www.mikesclutter.com">Mike Owens</a>
 | |
|   is now available from <a href="http://www.apress.com">Apress</a>.
 | |
|   The books covers the latest SQLite internals as well as
 | |
|   the native C interface and bindings for PHP, Python,
 | |
|   Perl, Ruby, Tcl, and Java.  Recommended.
 | |
| </blockquote><hr width="50%"><a name="2006_06_6"></a><h3>2006-06-6 - Version 3.3.6</h3><blockquote>
 | |
|   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.
 | |
| </blockquote><hr width="50%"><a name="2006_04_5"></a><h3>2006-04-5 - Version 3.3.5</h3><blockquote>
 | |
|   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.
 | |
| </blockquote><hr width="50%"><a name="2006_02_11"></a><h3>2006-02-11 - Version 3.3.4</h3><blockquote>
 | |
|   This release fixes several bugs, including a 
 | |
|   blunder that might cause a deadlock on multithreaded systems.
 | |
|   Anyone using SQLite in a multithreaded environment should probably upgrade.
 | |
| </blockquote><hr width="50%"><a name="2006_01_31"></a><h3>2006-01-31 - Version 3.3.3 stable</h3><blockquote>
 | |
|   There have been no major problems discovered in version 3.3.2, so
 | |
|   we hereby declare the new APIs and language features to be stable
 | |
|   and supported.
 | |
| </blockquote><hr width="50%"><a name="2006_01_24"></a><h3>2006-01-24 - Version 3.3.2 beta</h3><blockquote>
 | |
|   More bug fixes and performance improvements as we move closer to
 | |
|   a production-ready version 3.3.x.
 | |
| </blockquote><hr width="50%"><a name="2006_01_16"></a><h3>2006-01-16 - Version 3.3.1 alpha</h3><blockquote>
 | |
|   Many bugs found in last week's alpha release have now been fixed and
 | |
|   the library is running much faster again.</p>
 | |
| 
 | |
| <p>  Database connections can now be moved between threads as long as the
 | |
|   connection holds no locks at the time it is moved.  Thus the common
 | |
|   paradigm of maintaining a pool of database connections and handing
 | |
|   them off to transient worker threads is now supported.
 | |
|   Please help test this new feature.
 | |
|   See the MultiThreading wiki page for additional
 | |
|   information.
 | |
| </blockquote><hr width="50%"><a name="2006_01_10"></a><h3>2006-01-10 - Version 3.3.0 alpha</h3><blockquote>
 | |
|   Version 3.3.0 adds support for CHECK constraints, DESC indices,
 | |
|   separate REAL and INTEGER column affinities, a new OS interface layer
 | |
|   design, and many other changes.  The code passed a regression
 | |
|   test but should still be considered alpha.  Please report any
 | |
|   problems.</p>
 | |
| 
 | |
| <p>  The file format for version 3.3.0 has changed slightly to support
 | |
|   descending indices and
 | |
|   a more efficient encoding of boolean values.  SQLite 3.3.0 will read and
 | |
|   write legacy databases created with any prior version of SQLite 3.  But
 | |
|   databases created by version 3.3.0 will not be readable or writable
 | |
|   by earlier versions of the SQLite.  The older file format can be
 | |
|   specified at compile-time for those rare cases where it is needed.
 | |
| </blockquote><hr width="50%"><a name="2005_12_19"></a><h3>2005-12-19 - Versions 3.2.8 and 2.8.17</h3><blockquote>
 | |
|   These versions contain one-line changes to 3.2.7 and 2.8.16 to fix a bug
 | |
|   that has been present since March of 2002 and version 2.4.0.
 | |
|   That bug might possibly cause database corruption if a large INSERT or
 | |
|   UPDATE statement within a multi-statement transaction fails due to a
 | |
|   uniqueness constraint but the containing transaction commits.
 | |
| </blockquote><hr width="50%"><a name="2005_09_24"></a><h3>2005-09-24 - Version 3.2.7</h3><blockquote>
 | |
|   This version fixes several minor and obscure bugs.
 | |
|   Upgrade only if you are having problems.
 | |
| </blockquote><hr width="50%"><a name="2005_09_16"></a><h3>2005-09-16 - Version 3.2.6 - Critical Bug Fix</h3><blockquote>
 | |
|   This version fixes a bug that can result in database
 | |
|   corruption if a VACUUM of a 1 gigabyte or larger database fails
 | |
|   (perhaps do to running out of disk space or an unexpected power loss)
 | |
|   and is later rolled back.
 | |
|   <p>
 | |
|   Also in this release:
 | |
|   The ORDER BY and GROUP BY processing was rewritten to use less memory.
 | |
|   Support for COUNT(DISTINCT) was added.  The LIKE operator can now be
 | |
|   used by the optimizer on columns with COLLATE NOCASE.
 | |
| </blockquote><hr width="50%"><a name="2005_08_27"></a><h3>2005-08-27 - Version 3.2.5</h3><blockquote>
 | |
|   This release fixes a few more lingering bugs in the new code.
 | |
|   We expect that this release will be stable and ready for production use.
 | |
| </blockquote><hr width="50%"><a name="2005_08_24"></a><h3>2005-08-24 - Version 3.2.4</h3><blockquote>
 | |
|   This release fixes a bug in the new optimizer that can lead to segfaults
 | |
|   when parsing very complex WHERE clauses.
 | |
| </blockquote><hr width="50%"><a name="2005_08_21"></a><h3>2005-08-21 - Version 3.2.3</h3><blockquote>
 | |
|   This release adds the <a href="lang_analyze.html">ANALYZE</a> command,
 | |
|   the <a href="lang_expr.html">CAST</a> operator, and many
 | |
|   very substantial improvements to the query optimizer.  See the
 | |
|   <a href="changes.html#version_3_2_3">change log</a> for additional
 | |
|   information.
 | |
| </blockquote><hr width="50%"><a name="2005_08_02"></a><h3>2005-08-02 - 2005 Open Source Award for SQLite</h3><blockquote>
 | |
|   SQLite and its primary author D. Richard Hipp have been honored with
 | |
|   a <a href="http://osdir.com/Article6677.phtml">2005 Open Source Award</a>
 | |
|   from Google and O'Reilly.<br clear="right">
 | |
| </blockquote><hr width="50%"><a name="2005_06_13"></a><h3>2005-06-13 - Version 3.2.2</h3><blockquote>
 | |
|   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.
 | |
| </blockquote><hr width="50%"><a name="2005_03_29"></a><h3>2005-03-29 - Version 3.2.1</h3><blockquote>
 | |
|   This release fixes a memory allocation problem in the new
 | |
|   <a href="lang_altertable.html">ALTER TABLE ADD COLUMN</a>
 | |
|   command.
 | |
| </blockquote><hr width="50%"><a name="2005_03_21"></a><h3>2005-03-21 - Version 3.2.0</h3><blockquote>
 | |
|   The primary purpose for version 3.2.0 is to add support for
 | |
|   <a href="lang_altertable.html">ALTER TABLE ADD COLUMN</a>.
 | |
|   The new ADD COLUMN capability is made
 | |
|   possible by AOL developers supporting and embracing great
 | |
|   open-source software.  Thanks, AOL!</p>
 | |
| 
 | |
| <p>  Version 3.2.0 also fixes an obscure but serious bug that was discovered
 | |
|   just prior to release.  If you have a multi-statement transaction and
 | |
|   within that transaction an UPDATE or INSERT statement fails due to a
 | |
|   constraint, then you try to rollback the whole transaction, the rollback
 | |
|   might not work correctly.  See
 | |
|   Ticket #1171 for details.  Upgrading is recommended for all users.
 | |
| </blockquote><hr width="50%"><a name="2005_03_16"></a><h3>2005-03-16 - Version 3.1.6</h3><blockquote>
 | |
|   Version 3.1.6 fixes a critical bug that can cause database corruption
 | |
|   when inserting rows into tables with around 125 columns. This bug was
 | |
|   introduced in version 3.0.0.  See
 | |
|   Ticket #1163 for additional information.
 | |
| </blockquote><hr width="50%"><a name="2005_03_11"></a><h3>2005-03-11 - Versions 3.1.4 and 3.1.5 Released</h3><blockquote>
 | |
|   Version 3.1.4 fixes a critical bug that could cause database corruption
 | |
|   if the autovacuum mode of version 3.1.0 is turned on (it is off by
 | |
|   default) and a CREATE UNIQUE INDEX is executed within a transaction but
 | |
|   fails because the indexed columns are not unique.  Anyone using the
 | |
|   autovacuum feature and unique indices should upgrade.</p>
 | |
| 
 | |
| <p>  Version 3.1.5 adds the ability to disable
 | |
|   the F_FULLFSYNC ioctl() in OS-X by setting "PRAGMA synchronous=on" instead
 | |
|   of the default "PRAGMA synchronous=full".  There was an attempt to add
 | |
|   this capability in 3.1.4 but it did not work due to a spelling error.
 | |
| </blockquote><hr width="50%"><a name="2005_02_19"></a><h3>2005-02-19 - Version 3.1.3 Released</h3><blockquote>
 | |
|   Version 3.1.3 cleans up some minor issues discovered in version 3.1.2.
 | |
| </blockquote><hr width="50%"><a name="2005_02_15"></a><h3>2005-02-15 - Versions 2.8.16 and 3.1.2 Released</h3><blockquote>
 | |
|   A critical bug in the VACUUM command that can lead to database
 | |
|   corruption has been fixed in both the 2.x branch and the main
 | |
|   3.x line.  This bug has existed in all prior versions of SQLite.
 | |
|   Even though it is unlikely you will ever encounter this bug,
 | |
|   it is suggested that all users upgrade.  See
 | |
|   ticket #1116 for additional information.</p>
 | |
| 
 | |
| <p>  Version 3.1.2 is also the first stable release of the 3.1
 | |
|   series.  SQLite 3.1 features added support for correlated
 | |
|   subqueries, autovacuum, autoincrement, ALTER TABLE, and
 | |
|   other enhancements.  See the 
 | |
|   <a href="http://www.sqlite.org/releasenotes310.html">release notes
 | |
|   for version 3.1.0</a> for a detailed description of the
 | |
|   changes available in the 3.1 series.
 | |
| </blockquote><hr width="50%"><a name="2005_02_01"></a><h3>2005-02-01 - Version 3.1.1 (beta) Released</h3><blockquote>
 | |
|   Version 3.1.1 (beta) is now available on the
 | |
|   website.  Version 3.1.1 is fully backwards compatible with the 3.0 series
 | |
|   and features many new features including Autovacuum and correlated
 | |
|   subqueries.  The
 | |
|   <a href="http://www.sqlite.org/releasenotes310.html">release notes</a>
 | |
|   From version 3.1.0 apply equally to this release beta.  A stable release
 | |
|   is expected within a couple of weeks.
 | |
| </blockquote><hr width="50%"><a name="2005_01_21"></a><h3>2005-01-21 - Version 3.1.0 (alpha) Released</h3><blockquote>
 | |
|   Version 3.1.0 (alpha) is now available on the
 | |
|   website.  Version 3.1.0 is fully backwards compatible with the 3.0 series
 | |
|   and features many new features including Autovacuum and correlated
 | |
|   subqueries.  See the
 | |
|   <a href="http://www.sqlite.org/releasenotes310.html">release notes</a>
 | |
|   for details.</p>
 | |
| 
 | |
| <p>  This is an alpha release.  A beta release is expected in about a week
 | |
|   with the first stable release to follow after two more weeks.
 | |
| </blockquote><hr width="50%"><a name="2004_11_09"></a><h3>2004-11-09 - SQLite at the 2004 International PHP Conference</h3><blockquote>
 | |
|   There was a talk on the architecture of SQLite and how to optimize
 | |
|   SQLite queries at the 2004 International PHP Conference in Frankfurt,
 | |
|   Germany.
 | |
|   <a href="http://www.sqlite.org/php2004/page-001.html">
 | |
|   Slides</a> from that talk are available.
 | |
| </blockquote><hr width="50%"><a name="2004_10_11"></a><h3>2004-10-11 - Version 3.0.8</h3><blockquote>
 | |
|   Version 3.0.8 of SQLite contains several code optimizations and minor
 | |
|   bug fixes and adds support for DEFERRED, IMMEDIATE, and EXCLUSIVE
 | |
|   transactions.  This is an incremental release.  There is no reason
 | |
|   to upgrade from version 3.0.7 if that version is working for you.
 | |
| </blockquote><hr width="50%"><a name="2004_10_10"></a><h3>2004-10-10 - SQLite at the 11<sup><small>th</small></sup>
 | |
| Annual Tcl/Tk Conference</h3><blockquote>
 | |
|   There will be a talk on the use of SQLite in Tcl/Tk at the
 | |
|   11<sup><small>th</small></sup> Tcl/Tk Conference this week in
 | |
|   New Orleans.  Visit <a href="http://www.tcl-lang.org/community/tcl2004/">http://www.tcl-lang.org/community/tcl2004/</a>
 | |
|   for details.
 | |
|   <a href="http://www.sqlite.org/tclconf2004/page-001.html">
 | |
|   Slides</a> from the talk are available.
 | |
| </blockquote><hr width="50%"><a name="2004_09_18"></a><h3>2004-09-18 - Version 3.0.7</h3><blockquote>
 | |
|   Version 3.0 has now been in use by multiple projects for several
 | |
|   months with no major difficulties.   We consider it stable and
 | |
|   ready for production use. 
 | |
| </blockquote><hr width="50%"><a name="2004_09_02"></a><h3>2004-09-02 - Version 3.0.6 (beta)</h3><blockquote>
 | |
|   Because of some important changes to sqlite3_step(),
 | |
|   we have decided to
 | |
|   do an additional beta release prior to the first "stable" release.
 | |
|   If no serious problems are discovered in this version, we will
 | |
|   release version 3.0 "stable" in about a week.
 | |
| </blockquote><hr width="50%"><a name="2004_08_29"></a><h3>2004-08-29 - Version 3.0.5 (beta)</h3><blockquote>
 | |
|   The fourth beta release of SQLite version 3.0 is now available.
 | |
|   The next release is expected to be called "stable".
 | |
| </blockquote><hr width="50%"><a name="2004_08_08"></a><h3>2004-08-08 - Version 3.0.4 (beta)</h3><blockquote>
 | |
|   The third beta release of SQLite version 3.0 is now available.
 | |
|   This new beta fixes several bugs including a database corruption
 | |
|   problem that can occur when doing a DELETE while a SELECT is pending.
 | |
|   Expect at least one more beta before version 3.0 goes final.
 | |
| </blockquote><hr width="50%"><a name="2004_07_22"></a><h3>2004-07-22 - Version 3.0.3 (beta)</h3><blockquote>
 | |
|   The second beta release of SQLite version 3.0 is now available.
 | |
|   This new beta fixes many bugs and adds support for databases with
 | |
|   varying page sizes.  The next 3.0 release will probably be called
 | |
|   a final or stable release.</p>
 | |
| 
 | |
| <p>  Version 3.0 adds support for internationalization and a new
 | |
|   more compact file format. 
 | |
|   <a href="version3.html">Details.</a>
 | |
|   The API and file format have been fixed since 3.0.2.  All
 | |
|   regression tests pass (over 100000 tests) and the test suite
 | |
|   exercises over 95% of the code.</p>
 | |
| 
 | |
| <p>  SQLite version 3.0 is made possible in part by AOL
 | |
|   developers supporting and embracing great Open-Source Software.
 | |
| </blockquote><hr width="50%"><a name="2004_07_22"></a><h3>2004-07-22 - Version 2.8.15</h3><blockquote>
 | |
|   SQLite version 2.8.15 is a maintenance release for the version 2.8
 | |
|   series.  Version 2.8 continues to be maintained with bug fixes, but
 | |
|   no new features will be added to version 2.8.  All the changes in
 | |
|   this release are minor.  If you are not having problems, there is
 | |
|   there is no reason to upgrade.
 | |
| </blockquote><hr width="50%"><a name="2004_06_30"></a><h3>2004-06-30 - Version 3.0.2 (beta) Released</h3><blockquote>
 | |
|   The first beta release of SQLite version 3.0 is now available.
 | |
|   Version 3.0 adds support for internationalization and a new
 | |
|   more compact file format. 
 | |
|   <a href="version3.html">Details.</a>
 | |
|   As of this release, the API and file format are frozen.  All
 | |
|   regression tests pass (over 100000 tests) and the test suite
 | |
|   exercises over 95% of the code.</p>
 | |
| 
 | |
| <p>  SQLite version 3.0 is made possible in part by AOL
 | |
|   developers supporting and embracing great Open-Source Software.
 | |
| </blockquote><hr width="50%"><a name="2004_06_25"></a><h3>2004-06-25 - Website hacked</h3><blockquote>
 | |
|   The www.sqlite.org website was hacked sometime around 2004-06-22
 | |
|   because the lead SQLite developer failed to properly patch CVS.
 | |
|   Evidence suggests that the attacker was unable to elevate privileges
 | |
|   above user "cvs".  Nevertheless, as a precaution the entire website
 | |
|   has been reconstructed from scratch on a fresh machine.  All services
 | |
|   should be back to normal as of 2004-06-28.
 | |
| </blockquote><hr width="50%"><a name="2004_06_18"></a><h3>2004-06-18 - Version 3.0.0 (alpha) Released</h3><blockquote>
 | |
|   The first alpha release of SQLite version 3.0 is available for
 | |
|   public review and comment.  Version 3.0 enhances internationalization support
 | |
|   through the use of UTF-16 and user-defined text collating sequences.
 | |
|   BLOBs can now be stored directly, without encoding.
 | |
|   A new file format results in databases that are 25% smaller (depending
 | |
|   on content).  The code is also a little faster.  In spite of the many
 | |
|   new features, the library footprint is still less than 240KB
 | |
|   (x86, gcc -O1).
 | |
|   <a href="version3.html">Additional information</a>.</p>
 | |
| 
 | |
| <p>  Our intent is to freeze the file format and API on 2004-07-01.
 | |
|   Users are encouraged to review and evaluate this alpha release carefully 
 | |
|   and submit any feedback prior to that date.</p>
 | |
| 
 | |
| <p>  The 2.8 series of SQLite will continue to be supported with bug
 | |
|   fixes for the foreseeable future.
 | |
| </blockquote><hr width="50%"><a name="2004_06_09"></a><h3>2004-06-09 - Version 2.8.14 Released</h3><blockquote>
 | |
|   SQLite version 2.8.14 is a patch release to the stable 2.8 series.
 | |
|   There is no reason to upgrade if 2.8.13 is working ok for you.
 | |
|   This is only a bug-fix release.  Most development effort is
 | |
|   going into version 3.0.0 which is due out soon.
 | |
| </blockquote><hr width="50%"><a name="2004_05_31"></a><h3>2004-05-31 - CVS Access Temporarily Disabled</h3><blockquote>
 | |
|   Anonymous access to the CVS repository will be suspended
 | |
|   for 2 weeks beginning on 2004-06-04.  Everyone will still
 | |
|   be able to download
 | |
|   prepackaged source bundles, create or modify trouble tickets, or view
 | |
|   change logs during the CVS service interruption. Full open access to the
 | |
|   CVS repository will be restored on 2004-06-18.
 | |
| </blockquote><hr width="50%"><a name="2004_04_23"></a><h3>2004-04-23 - Work Begins On SQLite Version 3</h3><blockquote>
 | |
|   Work has begun on version 3 of SQLite.  Version 3 is a major
 | |
|   changes to both the C-language API and the underlying file format
 | |
|   that will enable SQLite to better support internationalization.
 | |
|   The first beta is schedule for release on 2004-07-01.</p>
 | |
| 
 | |
| <p>  Plans are to continue to support SQLite version 2.8 with
 | |
|   bug fixes.  But all new development will occur in version 3.0.
 | |
| </blockquote><hr width="50%">
 | |
| 
 |