summaryrefslogtreecommitdiffstats
path: root/www/oldnews.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 14:07:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 14:07:11 +0000
commit63847496f14c813a5d80efd5b7de0f1294ffe1e3 (patch)
tree01c7571c7c762ceee70638549a99834fdd7c411b /www/oldnews.html
parentInitial commit. (diff)
downloadsqlite3-63847496f14c813a5d80efd5b7de0f1294ffe1e3.tar.xz
sqlite3-63847496f14c813a5d80efd5b7de0f1294ffe1e3.zip
Adding upstream version 3.45.1.upstream/3.45.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'www/oldnews.html')
-rw-r--r--www/oldnews.html1854
1 files changed, 1854 insertions, 0 deletions
diff --git a/www/oldnews.html b/www/oldnews.html
new file mode 100644
index 0000000..72ab66c
--- /dev/null
+++ b/www/oldnews.html
@@ -0,0 +1,1854 @@
+<!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="https://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="https://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="https://www.sqlite.org/src/info/98825a79ce145686392d8074032ae54863aa21a3">ticket 98825a79ce145</a>
+ for details.
+ This release adds a
+ <a href="https://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="https://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
+ &#91;<a href="https://www.sqlite.org/src/info/4c86b126f2">4c86b126f2</a>&#93;.
+ 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="https://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="https://www.sqlite.org/src/info/7ff3120e4f">https://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="https://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="https://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="https://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="https://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="https://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 "&#94;" must be the first token in their
+ respective columns in order to match. Formerly, "&#94;" characters in the
+ search string were simply ignored. Hence, if a legacy application was
+ including "&#94;" 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 "&#94;" 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="https://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="https://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="https://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 &amp; x86_64
+ <li> MacOS 10.5 &amp; 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="https://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="https://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="https://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="https://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="https://link.springer.com/book/10.1007/978-1-4302-3226-1">The Definitive Guide to SQLite</a></i>,
+ a 2nd edition book by Mike Owens and Grant Allen,
+ 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="https://developers.google.com/open-source/osa#2005-google-oreilly-open-source-award-winners">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="releaselog/3_1_0.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="releaselog/3_1_1.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="releaselog/3_1_0.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.<br>
+ Obsolete URL: https://www.sqlite.org/php2004/page-001.html <br>
+ Slides 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.<br>
+ Obsolete URL: https://www.sqlite.org/tclconf2004/page-001.html <br>
+ Slides 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=8f0737bda1">2023-12-05 14:43:20</a> UTC </small></i></p>
+