diff options
Diffstat (limited to '')
-rw-r--r-- | www/oldnews.html | 1855 |
1 files changed, 1855 insertions, 0 deletions
diff --git a/www/oldnews.html b/www/oldnews.html new file mode 100644 index 0000000..30a2415 --- /dev/null +++ b/www/oldnews.html @@ -0,0 +1,1855 @@ +<!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; +} +var antiRobot = 0; +function antiRobotGo(){ +if( antiRobot!=3 ) return; +antiRobot = 7; +var j = document.getElementById("mtimelink"); +if(j && j.hasAttribute("data-href")) j.href=j.getAttribute("data-href"); +} +function antiRobotDefense(){ +document.body.onmousedown=function(){ +antiRobot |= 2; +antiRobotGo(); +document.body.onmousedown=null; +} +document.body.onmousemove=function(){ +antiRobot |= 2; +antiRobotGo(); +document.body.onmousemove=null; +} +setTimeout(function(){ +antiRobot |= 1; +antiRobotGo(); +}, 100) +antiRobotGo(); +} +antiRobotDefense(); +</script> +<?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 can 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%"> +<p align="center"><small><i>This page last modified on <a href="https://sqlite.org/docsrc/honeypot" id="mtimelink" data-href="https://sqlite.org/docsrc/finfo/pages/oldnews.in?m=b255cc82f4af93bcb">2022-08-10 18:45:48</a> UTC </small></i></p> + |