6048 lines
349 KiB
HTML
6048 lines
349 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html><head>
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||
|
<link href="sqlite.css" rel="stylesheet">
|
||
|
<title>Release History Of SQLite</title>
|
||
|
<!-- path= -->
|
||
|
</head>
|
||
|
<body>
|
||
|
<div class=nosearch>
|
||
|
<a href="index.html">
|
||
|
<img class="logo" src="images/sqlite370_banner.gif" alt="SQLite" border="0">
|
||
|
</a>
|
||
|
<div><!-- IE hack to prevent disappearing logo --></div>
|
||
|
<div class="tagline desktoponly">
|
||
|
Small. Fast. Reliable.<br>Choose any three.
|
||
|
</div>
|
||
|
<div class="menu mainmenu">
|
||
|
<ul>
|
||
|
<li><a href="index.html">Home</a>
|
||
|
<li class='mobileonly'><a href="javascript:void(0)" onclick='toggle_div("submenu")'>Menu</a>
|
||
|
<li class='wideonly'><a href='about.html'>About</a>
|
||
|
<li class='desktoponly'><a href="docs.html">Documentation</a>
|
||
|
<li class='desktoponly'><a href="download.html">Download</a>
|
||
|
<li class='wideonly'><a href='copyright.html'>License</a>
|
||
|
<li class='desktoponly'><a href="support.html">Support</a>
|
||
|
<li class='desktoponly'><a href="prosupport.html">Purchase</a>
|
||
|
<li class='search' id='search_menubutton'>
|
||
|
<a href="javascript:void(0)" onclick='toggle_search()'>Search</a>
|
||
|
</ul>
|
||
|
</div>
|
||
|
<div class="menu submenu" id="submenu">
|
||
|
<ul>
|
||
|
<li><a href='about.html'>About</a>
|
||
|
<li><a href='docs.html'>Documentation</a>
|
||
|
<li><a href='download.html'>Download</a>
|
||
|
<li><a href='support.html'>Support</a>
|
||
|
<li><a href='prosupport.html'>Purchase</a>
|
||
|
</ul>
|
||
|
</div>
|
||
|
<div class="searchmenu" id="searchmenu">
|
||
|
<form method="GET" action="search">
|
||
|
<select name="s" id="searchtype">
|
||
|
<option value="d">Search Documentation</option>
|
||
|
<option value="c">Search Changelog</option>
|
||
|
</select>
|
||
|
<input type="text" name="q" id="searchbox" value="">
|
||
|
<input type="submit" value="Go">
|
||
|
</form>
|
||
|
</div>
|
||
|
</div>
|
||
|
<script>
|
||
|
function toggle_div(nm) {
|
||
|
var w = document.getElementById(nm);
|
||
|
if( w.style.display=="block" ){
|
||
|
w.style.display = "none";
|
||
|
}else{
|
||
|
w.style.display = "block";
|
||
|
}
|
||
|
}
|
||
|
function toggle_search() {
|
||
|
var w = document.getElementById("searchmenu");
|
||
|
if( w.style.display=="block" ){
|
||
|
w.style.display = "none";
|
||
|
} else {
|
||
|
w.style.display = "block";
|
||
|
setTimeout(function(){
|
||
|
document.getElementById("searchbox").focus()
|
||
|
}, 30);
|
||
|
}
|
||
|
}
|
||
|
function div_off(nm){document.getElementById(nm).style.display="none";}
|
||
|
window.onbeforeunload = function(e){div_off("submenu");}
|
||
|
/* Disable the Search feature if we are not operating from CGI, since */
|
||
|
/* Search is accomplished using CGI and will not work without it. */
|
||
|
if( !location.origin || !location.origin.match || !location.origin.match(/http/) ){
|
||
|
document.getElementById("search_menubutton").style.display = "none";
|
||
|
}
|
||
|
/* Used by the Hide/Show button beside syntax diagrams, to toggle the */
|
||
|
function hideorshow(btn,obj){
|
||
|
var x = document.getElementById(obj);
|
||
|
var b = document.getElementById(btn);
|
||
|
if( x.style.display!='none' ){
|
||
|
x.style.display = 'none';
|
||
|
b.innerHTML='show';
|
||
|
}else{
|
||
|
x.style.display = '';
|
||
|
b.innerHTML='hide';
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
</script>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<h1 align=center>Release History</h1>
|
||
|
|
||
|
<p>
|
||
|
This page provides a high-level summary of changes to SQLite.
|
||
|
For more detail, see the Fossil checkin logs at
|
||
|
<a href="http://www.sqlite.org/src/timeline">
|
||
|
http://www.sqlite.org/src/timeline</a> and
|
||
|
<a href="http://www.sqlite.org/src/timeline?t=release">
|
||
|
http://www.sqlite.org/src/timeline?t=release</a>.
|
||
|
See the <a href="chronology.html">chronology</a> a succinct listing of releases.
|
||
|
</p>
|
||
|
|
||
|
<a name="version_3_33_0"></a>
|
||
|
<h3>2020-08-14 (3.33.0)</h3><p><ol class='lessindent'>
|
||
|
<li> Support for <a href="lang_update.html#upfrom">UPDATE FROM</a> following the PostgreSQL syntax.
|
||
|
<li> Increase the maximum size of database files to 281 TB.
|
||
|
<li> Extended the <a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a> statement so that it can optionally be
|
||
|
limited to verifying just a single table and its indexes, rather than the
|
||
|
entire database file.
|
||
|
<li> Added the <a href="floatingpoint.html#decext">decimal extension</a> for doing arbitrary-precision decimal arithmetic.
|
||
|
<li> Enhancements to the <a href="floatingpoint.html#ieee754ext">ieee754 extension</a> for working with IEEE 754 binary64 numbers.
|
||
|
<li> <a href="cli.html">CLI</a> enhancements:
|
||
|
<ol type="a">
|
||
|
<li> Added four new <a href="cli.html#dotmode">output modes</a>: "box", "json", "markdown",
|
||
|
and "table".
|
||
|
<li> The "column" output mode automatically expands columns to
|
||
|
contain the longest output row and automatically turns
|
||
|
".header" on if it has not been previously set.
|
||
|
<li> The "quote" output mode honors ".separator"
|
||
|
<li> The <a href="floatingpoint.html#decext">decimal extension</a> and the <a href="floatingpoint.html#ieee754ext">ieee754 extension</a> are built-in to the CLI
|
||
|
</ol>
|
||
|
<li> Query planner improvements:
|
||
|
<ol type="a">
|
||
|
<li> Add the ability to find a
|
||
|
full-index-scan query plan for queries using <a href="lang_indexedby.html">INDEXED BY</a>
|
||
|
which previously would fail with "no query solution".
|
||
|
<li> Do a better job of
|
||
|
detecting missing, incomplete, and/or dodgy <a href="fileformat2.html#stat1tab">sqlite_stat1</a>
|
||
|
data and generates good query plans in spite of the
|
||
|
misinformation.
|
||
|
<li> Improved performance of queries like "SELECT min(x) FROM t WHERE y IN (?,?,?)"
|
||
|
assuming an index on t(x,y).
|
||
|
</ol>
|
||
|
<li> In <a href="wal.html">WAL mode</a>, if a writer crashes and leaves the <a href="walformat.html#shm">shm file</a> in an inconsistent
|
||
|
state, subsequent transactions are now able to recover the shm file even if
|
||
|
there are active read transactions. Before this enhancement, shm file recovery
|
||
|
that scenario would result in an <a href="rescode.html#protocol">SQLITE_PROTOCOL</a> error.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: 2020-08-14 13:23:32 fca8dc8b578f215a969cd899336378966156154710873e68b3d9ac5881b0ff3f
|
||
|
<li>SHA3-256 for sqlite3.c: d00b7fffa6d33af2303430eaf394321da2960604d25a4471c7af566344f2abf9
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_32_3"></a>
|
||
|
<h3>2020-06-18 (3.32.3)</h3><p><ol class='lessindent'>
|
||
|
<li> Various minor bug fixes including fixes for tickets
|
||
|
<a href="https://www.sqlite.org/src/info/8f157e8010b22af0">8f157e8010b22af0</a>,
|
||
|
<a href="https://www.sqlite.org/src/info/9fb26d37cefaba40">9fb26d37cefaba40</a>,
|
||
|
<a href="https://www.sqlite.org/src/info/e367f31901ea8700">e367f31901ea8700</a>,
|
||
|
<a href="https://www.sqlite.org/src/info/b706351ce2ecf59a">b706351ce2ecf59a</a>,
|
||
|
<a href="https://www.sqlite.org/src/info/7c6d876f84e6e7e2">7c6d876f84e6e7e2</a>, and
|
||
|
<a href="https://www.sqlite.org/src/info/c8d3b9f0a750a529">c8d3b9f0a750a529</a>.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: 2020-06-18 14:00:33 7ebdfa80be8e8e73324b8d66b3460222eb74c7e9dfd655b48d6ca7e1933cc8fd
|
||
|
<li>SHA3-256 for sqlite3.c: b62b77ee1c561a69a71bb557694aaa5141f1714c1ff6cc1ba8aa8733c92d4f52
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_32_2"></a>
|
||
|
<h3>2020-06-04 (3.32.2)</h3><p><ol class='lessindent'>
|
||
|
<li> Fix a long-standing bug in the byte-code engine that can cause a
|
||
|
<a href="lang_transaction.html">COMMIT</a> command report as success when in fact it failed
|
||
|
to commit. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/810dc8038872e212">810dc8038872e212</a>
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: 2020-06-04 12:58:43 ec02243ea6ce33b090870ae55ab8aa2534b54d216d45c4aa2fdbb00e86861e8c
|
||
|
<li>SHA3-256 for sqlite3.c: f17a2a57f7eebc72d405f3b640b4a49bcd02364a9c36e04feeb145eccafa3f8d
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_32_1"></a>
|
||
|
<h3>2020-05-25 (3.32.1)</h3><p><ol class='lessindent'>
|
||
|
<li> Fix two long-standing bugs that allow malicious SQL statements
|
||
|
to crash the process that is running SQLite. These bugs were announced
|
||
|
by a third-party approximately 24 hours after the 3.32.0 release but are
|
||
|
not specific to the 3.32.0 release.
|
||
|
<li> Other minor compiler-warning fixes and whatnot.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: 2020-05-25 16:19:56 0c1fcf4711a2e66c813aed38cf41cd3e2123ee8eb6db98118086764c4ba83350
|
||
|
<li>SHA3-256 for sqlite3.c: f695ae21abf045e4ee77980a67ab2c6e03275009e593ee860a2eabf840482372
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_32_0"></a>
|
||
|
<h3>2020-05-22 (3.32.0)</h3><p><ol class='lessindent'>
|
||
|
<li> Added support for <a href="lang_analyze.html#approx">approximate ANALYZE</a> using the
|
||
|
<a href="pragma.html#pragma_analysis_limit">PRAGMA analysis_limit</a> command.
|
||
|
<li> Added the <a href="bytecodevtab.html">bytecode virtual table</a>.
|
||
|
<li> Add the <a href="cksumvfs.html">checksum VFS shim</a> to the set of run-time loadable
|
||
|
extensions included in the source tree.
|
||
|
<li> Added the <a href="lang_corefunc.html#iif">iif() SQL function</a>.
|
||
|
<li> INSERT and UPDATE statements now always apply <a href="datatype3.html#affinity">column affinity</a>
|
||
|
before computing <a href="lang_createtable.html#ckconst">CHECK constraints</a>. This bug fix could, in
|
||
|
theory, cause problems for legacy databases with unorthodox
|
||
|
CHECK constraints the require the input type for an INSERT
|
||
|
is different from the declared column type. See ticket
|
||
|
<a href="https://sqlite.org/src/info/86ba67afafded936">86ba67afafded936</a>
|
||
|
for more information.
|
||
|
<li> Added the <a href="c3ref/create_filename.html">sqlite3_create_filename()</a>, <a href="c3ref/create_filename.html">sqlite3_free_filename()</a>,
|
||
|
and <a href="c3ref/database_file_object.html">sqlite3_database_file_object()</a>
|
||
|
interfaces to better support of <a href="vfs.html#shim">VFS shim</a> implementations.
|
||
|
<li> Increase the <a href="limits.html#max_variable_number">default upper bound</a>
|
||
|
on the number of <a href="lang_expr.html#varparam">parameters</a> from 999 to 32766.
|
||
|
<li> Added code for the <a href="uintcseq.html">UINT collating sequence</a> as an optional
|
||
|
<a href="loadext.html">loadable extension</a>.
|
||
|
<li> Enhancements to the <a href="cli.html">CLI</a>:
|
||
|
<ol type="a">
|
||
|
<li> Add options to the <a href="cli.html#csv">.import</a> command: --csv, --ascii, --skip
|
||
|
<li> The <a href="cli.html#dump">.dump</a> command now accepts multiple LIKE-pattern arguments
|
||
|
and outputs the union of all matching tables.
|
||
|
<li> Add the .oom command in debugging builds
|
||
|
<li> Add the --bom option to the <a href="cli.html#dotexcel">.excel</a>, <a href="cli.html#dotoutput">.output</a>, and <a href="cli.html#dotoutput">.once</a>
|
||
|
commands.
|
||
|
<li> Enhance the .filectrl command to support the --schema option.
|
||
|
<li> The <a href="uintcseq.html">UINT collating sequence</a> extension is automatically loaded
|
||
|
</ol>
|
||
|
<li> The <a href="lang_expr.html#like">ESCAPE</a> clause of a <a href="lang_expr.html#like">LIKE</a> operator now overrides wildcard
|
||
|
characters, so that the behavior matches what PostgreSQL does.
|
||
|
<li>SQLITE_SOURCE_ID: 2020-05-22 17:46:16 5998789c9c744bce92e4cff7636bba800a75574243d6977e1fc8281e360f8d5a
|
||
|
<li>SHA3-256 for sqlite3.c: 33ed868b21b62ce1d0352ed88bdbd9880a42f29046497a222df6459fc32a356f
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_31_1"></a>
|
||
|
<h3>2020-01-27 (3.31.1)</h3><p><ol class='lessindent'>
|
||
|
<li> Revert the data layout for an internal-use-only SQLite data structure.
|
||
|
Applications that use SQLite should never reference internal SQLite
|
||
|
data structures, but some do anyhow, and a change to one such
|
||
|
data structure in 3.30.0 broke a popular and widely-deployed
|
||
|
application. Reverting that change in SQLite, at least temporarily,
|
||
|
gives developers of misbehaving applications time to fix their code.
|
||
|
<li> Fix a typos in the sqlite3ext.h header file that prevented the
|
||
|
<a href="c3ref/stmt_isexplain.html">sqlite3_stmt_isexplain()</a> and <a href="c3ref/value_blob.html">sqlite3_value_frombind()</a> interfaces
|
||
|
from being called from <a href="loadext.html">run-time loadable extensions</a>.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6
|
||
|
<li>SHA3-256 for sqlite3.c: de465c64f09529429a38cbdf637acce4dfda6897f93e3db3594009e0fed56d27
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_31_0"></a>
|
||
|
<h3>2020-01-22 (3.31.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Add support for <a href="gencol.html">generated columns</a>.
|
||
|
<li>Add the <a href="c3ref/hard_heap_limit64.html">sqlite3_hard_heap_limit64()</a> interface and the corresponding
|
||
|
<a href="pragma.html#pragma_hard_heap_limit">PRAGMA hard_heap_limit</a> command.
|
||
|
<li>Enhance the <a href="pragma.html#pragma_function_list">function_list pragma</a> to show the number of arguments on each
|
||
|
function, the type of function (scalar, aggregate, window), and the function
|
||
|
property flags <a href="c3ref/c_deterministic.html#sqlitedeterministic">SQLITE_DETERMINISTIC</a>, <a href="c3ref/c_deterministic.html#sqlitedirectonly">SQLITE_DIRECTONLY</a>,
|
||
|
<a href="c3ref/c_deterministic.html#sqliteinnocuous">SQLITE_INNOCUOUS</a>, and/or <a href="c3ref/c_deterministic.html#sqlitesubtype">SQLITE_SUBTYPE</a>.
|
||
|
<li>Add the <a href="dbstat.html#dbstatagg">aggregated mode</a> feature to the
|
||
|
<a href="dbstat.html">DBSTAT virtual table</a>.
|
||
|
<li>Add the <a href="c3ref/open.html#opennofollow">SQLITE_OPEN_NOFOLLOW</a> option to <a href="c3ref/open.html">sqlite3_open_v2()</a> that
|
||
|
prevents SQLite from opening symbolic links.
|
||
|
<li>Added the "#-N" array notation for <a href="json1.html#jsonpath">JSON function path arguments</a>.
|
||
|
<li>Added the <a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfigtrustedschema">SQLITE_DBCONFIG_TRUSTED_SCHEMA</a> connection setting which is
|
||
|
also controllable via the new <a href="pragma.html#pragma_trusted_schema">trusted_schema pragma</a> and at compile-time
|
||
|
using the <a href="compile.html#trusted_schema">-DSQLITE_TRUSTED_SCHEMA</a> compile-time option.
|
||
|
<li>Added APIs <a href="c3ref/filename_database.html">sqlite3_filename_database()</a>, <a href="c3ref/filename_database.html">sqlite3_filename_journal()</a>, and
|
||
|
<a href="c3ref/filename_database.html">sqlite3_filename_wal()</a> which are useful for specialized extensions.
|
||
|
<li>Add the <a href="c3ref/uri_boolean.html">sqlite3_uri_key()</a> interface.
|
||
|
<li>Upgraded the <a href="c3ref/uri_boolean.html">sqlite3_uri_parameter()</a> function so that it works with the
|
||
|
rollback journal or WAL filename in addition to the database filename.
|
||
|
<li>Provide the ability to tag <a href="appfunc.html">application-defined SQL functions</a> with
|
||
|
new properties <a href="c3ref/c_deterministic.html#sqliteinnocuous">SQLITE_INNOCUOUS</a> or <a href="c3ref/c_deterministic.html#sqlitedirectonly">SQLITE_DIRECTONLY</a>.
|
||
|
<li>Add new verbs to <a href="c3ref/vtab_config.html">sqlite3_vtab_config()</a> so that the <a href="vtab.html#xconnect">xConnect</a> method
|
||
|
of virtual tables can declare the virtual table as
|
||
|
<a href="c3ref/c_vtab_constraint_support.html#sqlitevtabinnocuous">SQLITE_VTAB_INNOCUOUS</a> or <a href="c3ref/c_vtab_constraint_support.html#sqlitevtabdirectonly">SQLITE_VTAB_DIRECTONLY</a>.
|
||
|
<li>Faster response to <a href="c3ref/interrupt.html">sqlite3_interrupt()</a>.
|
||
|
<li>Added the <a href="https://sqlite.org/src/file/ext/misc/uuid.c">uuid.c</a> extension module
|
||
|
implementing functions for processing RFC-4122 UUIDs.
|
||
|
<li>The <a href="malloc.html#lookaside">lookaside memory allocator</a> is enhanced to support two separate memory
|
||
|
pools with different sized allocations in each pool. This allows more memory
|
||
|
allocations to be covered by lookaside while at the same time reducing the
|
||
|
heap memory usage to 48KB per connection, down from 120KB.
|
||
|
<li>The <a href="pragma.html#pragma_legacy_file_format">legacy_file_format pragma</a> is deactivated. It is now a no-op. In its place,
|
||
|
the <a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfiglegacyfileformat">SQLITE_DBCONFIG_LEGACY_FILE_FORMAT</a> option to <a href="c3ref/db_config.html">sqlite3_db_config()</a> is
|
||
|
provided. The legacy_file_format pragma is deactivated because (1) it is
|
||
|
rarely useful and (2) it is incompatible with <a href="lang_vacuum.html">VACUUM</a> in schemas that have
|
||
|
tables with both generated columns and descending indexes.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/6484e6ce678fffab">6484e6ce678fffab</a>
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: 2020-01-22 18:38:59 f6affdd41608946fcfcea914ece149038a8b25a62bbe719ed2561c649b86d824
|
||
|
<li>SHA3-256 for sqlite3.c: a5fca0b9f8cbf80ac89b97193378c719d4af4b7d647729d8df9c0c0fca7b1388
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_30_1"></a>
|
||
|
<h3>2019-10-10 (3.30.1)</h3><p><ol class='lessindent'>
|
||
|
<li> Fix a bug in the <a href="optoverview.html#flattening">query flattener</a> that might cause a segfault
|
||
|
for nested queries that use the new
|
||
|
<a href="lang_aggfunc.html#aggfilter">FILTER clause on aggregate functions</a>.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/1079ad19993d13fa">1079ad19993d13fa</a>
|
||
|
<li> Cherrypick fixes for other obscure problems found since the 3.30.0
|
||
|
release
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: 2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3df1b0b
|
||
|
<li>SHA3-256 for sqlite3.c: f96fafe4c110ed7d77fc70a7d690e5edd1e64fefb84b3b5969a722d885de1f2d
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_30_0"></a>
|
||
|
<h3>2019-10-04 (3.30.0)</h3><p><ol class='lessindent'>
|
||
|
<li> Add support for the <a href="lang_aggfunc.html#aggfilter">FILTER clause on aggregate functions</a>.
|
||
|
<li> Add support for the <a href="lang_select.html#nullslast">NULLS FIRST</a> and <a href="lang_select.html#nullslast">NULLS LAST</a> syntax in <a href="lang_select.html#orderby">ORDER BY</a> clauses.
|
||
|
<li> The <a href="pragma.html#pragma_index_info">index_info</a> and <a href="pragma.html#pragma_index_xinfo">index_xinfo</a> pragmas are enhanced to provide
|
||
|
information about the on-disk representation of <a href="withoutrowid.html">WITHOUT ROWID</a>
|
||
|
tables.
|
||
|
<li> Add the <a href="c3ref/drop_modules.html">sqlite3_drop_modules()</a> interface, allowing applications
|
||
|
to disable automatically loaded virtual tables that they do not
|
||
|
need.
|
||
|
<li> Improvements to the <a href="cli.html#recover">.recover dot-command</a> in the <a href="cli.html">CLI</a> so that
|
||
|
it recovers more content from corrupt database files.
|
||
|
<li> Enhance the <a href="rbu.html">RBU</a> extension to support <a href="expridx.html">indexes on expressions</a>.
|
||
|
<li> Change the schema parser so that it will error out if any of
|
||
|
the type, name, and tbl_name columns of the <a href="schematab.html">sqlite_master table</a>
|
||
|
have been corrupted and the database connection is not in
|
||
|
<a href="pragma.html#pragma_writable_schema">writable_schema</a> mode.
|
||
|
<li> The <a href="pragma.html#pragma_function_list">PRAGMA function_list</a>, <a href="pragma.html#pragma_module_list">PRAGMA module_list</a>, and
|
||
|
<a href="pragma.html#pragma_pragma_list">PRAGMA pragma_list</a> commands are now
|
||
|
enabled in all builds by default. Disable them using
|
||
|
<a href="compile.html#omit_introspection_pragmas">-DSQLITE_OMIT_INTROSPECTION_PRAGMAS</a>.
|
||
|
<li> Add the <a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfigenableview">SQLITE_DBCONFIG_ENABLE_VIEW</a> option for <a href="c3ref/db_config.html">sqlite3_db_config()</a>.
|
||
|
<li> Added the <a href="tclsqlite.html">TCL Interface</a> <a href="tclsqlite.html#config">config method</a> in order to be able to
|
||
|
disable <a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfigenableview">SQLITE_DBCONFIG_ENABLE_VIEW</a> as well as control other
|
||
|
<a href="c3ref/db_config.html">sqlite3_db_config()</a> options from TCL.
|
||
|
<li> Added the <a href="c3ref/c_deterministic.html#sqlitedirectonly">SQLITE_DIRECTONLY</a> flag for
|
||
|
<a href="appfunc.html">application-defined SQL functions</a> to prevent those functions from
|
||
|
being used inside triggers and views.
|
||
|
<li> The legacy <a href="compile.html#enable_stat3">SQLITE_ENABLE_STAT3</a> compile-time option is now a no-op.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: 2019-10-04 15:03:17 c20a35336432025445f9f7e289d0cc3e4003fb17f45a4ce74c6269c407c6e09f
|
||
|
<li>SHA3-256 for sqlite3.c: f04393dd47205a4ee2b98ff737dc51a3fdbcc14c055b88d58f5b27d0672158f5
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_29_0"></a>
|
||
|
<h3>2019-07-10 (3.29.0)</h3><p><ol class='lessindent'>
|
||
|
<li> Added the <a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfigdqsdml">SQLITE_DBCONFIG_DQS_DML</a> and <a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfigdqsddl">SQLITE_DBCONFIG_DQS_DDL</a>
|
||
|
actions to <a href="c3ref/db_config.html">sqlite3_db_config()</a> for activating and deactivating
|
||
|
the <a href="quirks.html#dblquote">double-quoted string literal</a> misfeature. Both default to "on"
|
||
|
for legacy compatibility, but developers are encouraged to turn them
|
||
|
"off", perhaps using the <a href="compile.html#dqs">-DSQLITE_DQS=0</a> compile-time option.
|
||
|
<li> <a href="compile.html#dqs">-DSQLITE_DQS=0</a> is now a <a href="compile.html#rcmd">recommended compile-time option</a>.
|
||
|
<li> Improvements to the <a href="optoverview.html">query planner</a>:
|
||
|
<ol type="a">
|
||
|
<li> Improved optimization of AND and OR operators when one or the other
|
||
|
operand is a constant.
|
||
|
<li> Enhancements to the <a href="optoverview.html#like_opt">LIKE optimization</a> for cases when the left-hand
|
||
|
side column has numeric affinity.
|
||
|
</ol>
|
||
|
<li> Added the "<a href="https://sqlite.org/src/file/ext/misc/dbdata.c">sqlite_dbdata</a>"
|
||
|
virtual table for extracting raw low-level content from an SQLite database,
|
||
|
even a database that is corrupt.
|
||
|
<li> Improvements to rounding behavior, so that the results of rounding
|
||
|
binary numbers using the <a href="lang_corefunc.html#round">round()</a> function are closer to what people
|
||
|
who are used to thinking in decimal actually expect.
|
||
|
<li> Enhancements to the <a href="cli.html">CLI</a>:
|
||
|
<ol type="a">
|
||
|
<li> Add the ".recover" command which tries to recover as much content
|
||
|
as possible from a corrupt database file.
|
||
|
<li> Add the ".filectrl" command useful for testing.
|
||
|
<li> Add the long-standing ".testctrl" command to the ".help" menu.
|
||
|
<li> Added the ".dbconfig" command
|
||
|
</ol>
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: 2019-07-10 17:32:03 fc82b73eaac8b36950e527f12c4b5dc1e147e6f4ad2217ae43ad82882a88bfa6
|
||
|
<li>SHA3-256 for sqlite3.c: d9a5daf7697a827f4b2638276ce639fa04e8e8bb5fd3a6b683cfad10f1c81b12
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_28_0"></a>
|
||
|
<h3>2019-04-16 (3.28.0)</h3><p><ol class='lessindent'>
|
||
|
<li> Enhanced <a href="windowfunctions.html">window functions</a>:
|
||
|
<ol type="a">
|
||
|
<li> Add support the <a href="windowfunctions.html#wexcls">EXCLUDE clause</a>.
|
||
|
<li> Add support for <a href="windowfunctions.html#wchaining">window chaining</a>.
|
||
|
<li> Add support for <a href="windowfunctions.html#grouptype">GROUPS frames</a>.
|
||
|
<li> Add support for "<a href="windowfunctions.html#exprrange"><expr> PRECEDING</a>" and
|
||
|
"<a href="windowfunctions.html#exprrange"><expr> FOLLOWING</a>" boundaries
|
||
|
in RANGE <a href="windowfunctions.html#framespec">frames</a>.
|
||
|
</ol>
|
||
|
<li> Added the new <a href="c3ref/stmt_isexplain.html">sqlite3_stmt_isexplain(S)</a> interface for determining
|
||
|
whether or not a <a href="c3ref/stmt.html">prepared statement</a> is an <a href="lang_explain.html">EXPLAIN</a>.
|
||
|
<li> Enhanced <a href="lang_vacuum.html#vacuuminto">VACUUM INTO</a> so that it works for read-only databases.
|
||
|
<li> New query optimizations:
|
||
|
<ol type="a">
|
||
|
<li> Enable the <a href="optoverview.html#like_opt">LIKE optimization</a> for cases when the ESCAPE keyword
|
||
|
is present and <a href="pragma.html#pragma_case_sensitive_like">PRAGMA case_sensitive_like</a> is on.
|
||
|
<li> In queries that are driven by a <a href="partialindex.html">partial index</a>, avoid unnecessary
|
||
|
tests of the constraint named in the WHERE clause of the partial
|
||
|
index, since we know that constraint must always be true.
|
||
|
</ol>
|
||
|
<li> Enhancements to the <a href="tclsqlite.html">TCL Interface</a>:
|
||
|
<ol type="a">
|
||
|
<li> Added the -returntype option to the <a href="tclsqlite.html#function">function method</a>.
|
||
|
<li> Added the new <a href="tclsqlite.html#bind_fallback">bind_fallback method</a>.
|
||
|
</ol>
|
||
|
<li> Enhancements to the <a href="cli.html">CLI</a>:
|
||
|
<ol type="a">
|
||
|
<li> Added support for <a href="lang_expr.html#varparam">bound parameters</a> and the <a href="cli.html#param">.parameter command</a>.
|
||
|
<li> Fix the <a href="cli.html#fileio">readfile()</a> function so that it returns
|
||
|
an empty BLOB rather than throwing an out-of-memory error when
|
||
|
reading an empty file.
|
||
|
<li> Fix the <a href="cli.html#fileio">writefile()</a> function so that when it
|
||
|
creates new directories along the path of a new file, it gives them
|
||
|
umask permissions rather than the same permissions as the file.
|
||
|
<li> Change <a href="cli.html#arinsup">--update option</a> in the <a href="cli.html#sqlar">.archive command</a> so that it skips
|
||
|
files that are already in the archive and are unchanged. Add the
|
||
|
new --insert option that works like --update used to work.
|
||
|
</ol>
|
||
|
<li> Added the <a href="https://sqlite.org/src/file/ext/misc/fossildelta.c">fossildelta.c</a>
|
||
|
extension that can create, apply, and deconstruct the
|
||
|
<a href="https://fossil-scm.org/fossil/doc/trunk/www/delta_format.wiki">Fossil DVCS file delta format</a>
|
||
|
that is used by the <a href="rbu.html">RBU extension</a>.
|
||
|
<li> Added the <a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfigwritableschema">SQLITE_DBCONFIG_WRITABLE_SCHEMA</a> verb for the <a href="c3ref/db_config.html">sqlite3_db_config()</a>
|
||
|
interface, that does the same work as <a href="pragma.html#pragma_writable_schema">PRAGMA writable_schema</a> without using the
|
||
|
SQL parser.
|
||
|
<li> Added the <a href="c3ref/value_blob.html">sqlite3_value_frombind()</a> API for determining if the argument
|
||
|
to an SQL function is from a <a href="lang_expr.html#varparam">bound parameter</a>.
|
||
|
<li> Security and compatibilities enhancements to <a href="fts3.html#f3tknzr">fts3_tokenizer()</a>:
|
||
|
<ol type="a">
|
||
|
<li> The <a href="fts3.html#f3tknzr">fts3_tokenizer()</a> function always returns NULL
|
||
|
unless either the legacy application-defined FTS3 tokenizers interface
|
||
|
are enabled using
|
||
|
the <a href="c3ref/db_config.html">sqlite3_db_config</a>(<a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfigenablefts3tokenizer">SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER</a>)
|
||
|
setting, or unless the first argument to fts3_tokenizer() is a <a href="lang_expr.html#varparam">bound parameter</a>.
|
||
|
<li> The two-argument version of <a href="fts3.html#f3tknzr">fts3_tokenizer()</a> accepts a pointer to the
|
||
|
tokenizer method object even without
|
||
|
the <a href="c3ref/db_config.html">sqlite3_db_config</a>(<a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfigenablefts3tokenizer">SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER</a>) setting
|
||
|
if the second argument is a <a href="lang_expr.html#varparam">bound parameter</a>
|
||
|
</ol>
|
||
|
<li> Improved robustness against corrupt database files.
|
||
|
<li> Miscellaneous performance enhancements
|
||
|
<li> Established a Git mirror of the offical SQLite source tree.
|
||
|
The canonical sources for SQLite are maintained using the
|
||
|
<a href="https://fossil-scm.org/">Fossil DVCS</a> at <a href="https://sqlite.org/src">https://sqlite.org/src</a>.
|
||
|
The Git mirror can be seen at <a href="https://github.com/sqlite/sqlite">https://github.com/sqlite/sqlite</a>.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: 2019-04-16 19:49:53 884b4b7e502b4e991677b53971277adfaf0a04a284f8e483e2553d0f83156b50
|
||
|
<li>SHA3-256 for sqlite3.c: 411efca996b65448d9798eb203d6ebe9627b7161a646f5d00911e2902a57b2e9
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_27_2"></a>
|
||
|
<h3>2019-02-25 (3.27.2)</h3><p><ol class='lessindent'>
|
||
|
<li> Fix a bug in the IN operator that was introduced by an
|
||
|
attempted optimization in version 3.27.0. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/df46dfb631f75694">df46dfb631f75694</a>
|
||
|
<li> Fix a bug causing a crash when a <a href="windowfunctions.html">window function</a> is misused. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/4feb3159c6bc3f7e33959">4feb3159c6bc3f7e33959</a>.
|
||
|
<li> Fix various documentation typos
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7
|
||
|
<li>SHA3-256 for sqlite3.c: 1dbae33bff261f979d0042338f72c9e734b11a80720fb32498bae9150cc576e7
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_27_1"></a>
|
||
|
<h3>2019-02-08 (3.27.1)</h3><p><ol class='lessindent'>
|
||
|
<li> Fix a bug in the query optimizer: an adverse interaction between
|
||
|
the <a href="optoverview.html#or_opt">OR optimization</a> and the optimization that tries to use values
|
||
|
read directly from an <a href="expridx.html">expression index</a> instead of recomputing the
|
||
|
expression.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/4e8e4857d32d401f">4e8e4857d32d401f</a>
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: 2019-02-08 13:17:39 0eca3dd3d38b31c92b49ca2d311128b74584714d9e7de895b1a6286ef959a1dd
|
||
|
<li>SHA3-256 for sqlite3.c: 11c14992660d5ac713ea8bea48dc5e6123f26bc8d3075fe5585d1a217d090233
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_27_0"></a>
|
||
|
<h3>2019-02-07 (3.27.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the <a href="lang_vacuum.html#vacuuminto">VACUUM INTO</a> command
|
||
|
<li>Issue an SQLITE_WARNING message on the <a href="errlog.html">error log</a> if a
|
||
|
<a href="quirks.html#dblquote">double-quoted string literal</a> is used.
|
||
|
<li>The <a href="c3ref/expanded_sql.html">sqlite3_normalized_sql()</a> interface works on any prepared statement
|
||
|
created using <a href="c3ref/prepare.html">sqlite3_prepare_v2()</a> or <a href="c3ref/prepare.html">sqlite3_prepare_v3()</a>. It is no
|
||
|
longer necessary to use <a href="c3ref/prepare.html">sqlite3_prepare_v3()</a> with <a href="c3ref/c_prepare_normalize.html#sqlitepreparenormalize">SQLITE_PREPARE_NORMALIZE</a>
|
||
|
in order to use <a href="c3ref/expanded_sql.html">sqlite3_normalized_sql()</a>.
|
||
|
<li>Added the remove_diacritics=2 option to <a href="fts3.html">FTS3</a> and <a href="fts5.html">FTS5</a>.
|
||
|
<li>Added the <a href="c3ref/c_prepare_normalize.html#sqlitepreparenovtab">SQLITE_PREPARE_NO_VTAB</a> option to <a href="c3ref/prepare.html">sqlite3_prepare_v3()</a>.
|
||
|
Use that option to prevent circular references to <a href="vtab.html#xshadowname">shadow tables</a> from
|
||
|
causing resource leaks.
|
||
|
<li>Enhancements to the <a href="c3ref/deserialize.html">sqlite3_deserialize()</a> interface:
|
||
|
<ol type="a">
|
||
|
<li> Add the <a href="c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlsizelimit">SQLITE_FCNTL_SIZE_LIMIT</a> <a href="c3ref/file_control.html">file-control</a> for
|
||
|
setting an upper bound on the size of the in-memory database created
|
||
|
by sqlite3_deserialize. The default upper bound is 1GiB, or whatever
|
||
|
alternative value is specified by
|
||
|
<a href="c3ref/config.html">sqlite3_config</a>(<a href="c3ref/c_config_covering_index_scan.html#sqliteconfigmemdbmaxsize">SQLITE_CONFIG_MEMDB_MAXSIZE</a>)
|
||
|
and/or <a href="compile.html#memdb_default_maxsize">SQLITE_MEMDB_DEFAULT_MAXSIZE</a>.
|
||
|
<li> Honor the <a href="c3ref/c_deserialize_freeonclose.html">SQLITE_DESERIALIZE_READONLY</a> flag, which was previously described
|
||
|
in the documentation, but was previously a no-op.
|
||
|
<li> Enhance the "deserialize" command of the <a href="tclsqlite.html">TCL Interface</a> to give it
|
||
|
new "--maxsize N" and "--readonly BOOLEAN" options.
|
||
|
</ol>
|
||
|
<li>Enhancements to the <a href="cli.html">CLI</a>, mostly to support testing and debugging
|
||
|
of the SQLite library itself:
|
||
|
<ol type="a">
|
||
|
<li> Add support for ".open --hexdb". The
|
||
|
"<a href="https://sqlite.org/src/doc/trunk/tool/dbtotxt.md">dbtotxt</a>" utility
|
||
|
program used to generate the text for the "hexdb" is added to the
|
||
|
source tree.
|
||
|
<li> Add support for the "--maxsize N" option on ".open --deserialize".
|
||
|
<li> Add the "--memtrace" command-line option, to show all memory allocations
|
||
|
and deallocations.
|
||
|
<li> Add the ".eqp trace" option on builds with SQLITE_DEBUG, to enable
|
||
|
bytecode program listing with indentation and
|
||
|
<a href="pragma.html#pragma_vdbe_trace">PRAGMA vdbe_trace</a> all in one step.
|
||
|
<li> Add the ".progress" command for accessing
|
||
|
the <a href="c3ref/progress_handler.html">sqlite3_progress_handler()</a> interface.
|
||
|
<li> Add the "--async" option to the ".backup" command.
|
||
|
<li> Add options "--expanded", "--normalized", "--plain", "--profile", "--row",
|
||
|
"--stmt", and "--close" to the ".trace" command.
|
||
|
</ol>
|
||
|
<li> Increased robustness against malicious SQL that is run against a
|
||
|
maliciously corrupted database.
|
||
|
<p><b>Bug fixes:</b>
|
||
|
<li>Do not use a partial index to do a table scan on an IN operator.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/1d958d90596593a774">1d958d90596593a774</a>.
|
||
|
<li>Fix the <a href="optoverview.html#flattening">query flattener</a> so that it works on queries that contain
|
||
|
subqueries that use <a href="windowfunctions.html">window functions</a>.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/f09fcd17810f65f717">709fcd17810f65f717</a>
|
||
|
<li>Ensure that ALTER TABLE modifies table and column names embedded in WITH
|
||
|
clauses that are part of views and triggers.
|
||
|
<li>Fix a parser bug that prevented the use of parentheses around table-valued
|
||
|
functions.
|
||
|
<li>Fix a problem with the <a href="optoverview.html#or_opt">OR optimization</a> on <a href="expridx.html">indexes on expressions</a>.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/d96eba87698a428c1d">d96eba87698a428c1d</a>.
|
||
|
<li>Fix a problem with the
|
||
|
<a href="optoverview.html#leftjoinreduction">LEFT JOIN strength reduction optimization</a> in which the optimization
|
||
|
was being applied inappropriately due to an IS NOT NULL operator.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/5948e09b8c415bc45d">5948e09b8c415bc45d</a>.
|
||
|
<li>Fix the <a href="lang_replace.html">REPLACE</a> command so that it is no longer able to sneak a
|
||
|
NULL value into a NOT NULL column even if the NOT NULL column has a default
|
||
|
value of NULL.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/e6f1f2e34dceeb1ed6">e6f1f2e34dceeb1ed6</a>
|
||
|
<li>Fix a problem with the use of <a href="windowfunctions.html">window functions</a> used within
|
||
|
<a href="lang_expr.html#cosub">correlated subqueries</a>.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/d0866b26f83e9c55e3">d0866b26f83e9c55e3</a>
|
||
|
<li>Fix the <a href="lang_altertable.html#altertabmvcol">ALTER TABLE RENAME COLUMN</a> command so that it works for tables
|
||
|
that have redundant UNIQUE constraints.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/bc8d94f0fbd633fd9a">bc8d94f0fbd633fd9a</a>
|
||
|
<li>Fix a bug that caused <a href="lang_corefunc.html#zeroblob">zeroblob</a> values to be truncated when inserted into
|
||
|
a table that uses an <a href="expridx.html">expression index</a>.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/bb4bdb9f7f654b0bb9">bb4bdb9f7f654b0bb9</a>
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2019-02-07 17:02:52 97744701c3bd414e6c9d7182639d8c2ce7cf124c4fce625071ae65658ac61713
|
||
|
"
|
||
|
<li>SHA3-256 for sqlite3.c: ca011a10ee8515b33e5643444b98ee3d74dc45d3ac766c3700320def52bc6aba
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_26_0"></a>
|
||
|
<h3>2018-12-01 (3.26.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Optimization: When doing an <a href="lang_update.html">UPDATE</a> on a table with <a href="expridx.html">indexes on expressions</a>,
|
||
|
do not update the expression indexes if they do not refer to any of the columns
|
||
|
of the table being updated.
|
||
|
<li>Allow the <a href="vtab.html#xbestindex">xBestIndex()</a> method of <a href="vtab.html">virtual table</a> implementations to return
|
||
|
<a href="rescode.html#constraint">SQLITE_CONSTRAINT</a> to indicate that the proposed query plan is unusable and
|
||
|
should not be given further consideration.
|
||
|
<li>Added the <a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfigdefensive">SQLITE_DBCONFIG_DEFENSIVE</a> option which disables the ability to
|
||
|
create corrupt database files using ordinary SQL.
|
||
|
<li>Added support for read-only <a href="vtab.html#xshadowname">shadow tables</a> when the <a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfigdefensive">SQLITE_DBCONFIG_DEFENSIVE</a>
|
||
|
option is enabled.
|
||
|
<li>Added the <a href="pragma.html#pragma_legacy_alter_table">PRAGMA legacy_alter_table</a> command, which if enabled causes the
|
||
|
<a href="lang_altertable.html">ALTER TABLE</a> command to behave like older version of SQLite (prior to
|
||
|
version 3.25.0) for compatibility.
|
||
|
<li>Added <a href="pragma.html#pragma_table_xinfo">PRAGMA table_xinfo</a> that works just like <a href="pragma.html#pragma_table_info">PRAGMA table_info</a>
|
||
|
except that it also shows <a href="vtab.html#hiddencol">hidden columns</a> in virtual tables.
|
||
|
<li>Added the <a href="https://sqlite.org/src/file/ext/misc/explain.c">explain virtual table</a>
|
||
|
as a run-time loadable extension.
|
||
|
<li>Add a limit counter to the query planner to prevent excessive
|
||
|
<a href="c3ref/prepare.html">sqlite3_prepare()</a> times for certain pathological SQL inputs.
|
||
|
<li>Added support for the <a href="c3ref/expanded_sql.html">sqlite3_normalized_sql()</a> interface, when compiling
|
||
|
with SQLITE_ENABLE_NORMALIZE.
|
||
|
<li>Enhanced triggers so that they can use <a href="vtab.html#tabfunc2">table-valued functions</a> that
|
||
|
exist in schemas other than the schema where the trigger is defined.
|
||
|
<li>Enhancements to the <a href="cli.html">CLI</a>:
|
||
|
<ol type="a">
|
||
|
<li>Improvements to the ".help" command.
|
||
|
<li>The SQLITE_HISTORY environment variable, if it exists,
|
||
|
specifies the name of the command-line editing history file
|
||
|
<li>The --deserialize option associated with opening a new database cause the
|
||
|
database file to be read into memory and accessed using the
|
||
|
<a href="c3ref/deserialize.html">sqlite3_deserialize()</a> API. This simplifies running tests on a database
|
||
|
without modifying the file on disk.
|
||
|
</ol>
|
||
|
<li>Enhancements to the <a href="geopoly.html">geopoly</a> extension:
|
||
|
<ol type="a">
|
||
|
<li>Always stores polygons
|
||
|
using the binary format, which is faster and uses less space.
|
||
|
<li>Added the <a href="geopoly.html#regpoly">geopoly_regular()</a> function.
|
||
|
<li>Added the <a href="geopoly.html#ccw">geopoly_ccw()</a> function.
|
||
|
</ol>
|
||
|
<li>Enhancements to the <a href="sessionintro.html">session</a> extension:
|
||
|
<ol type="a">
|
||
|
<li>Added the <a href="session/c_changesetapply_invert.html">SQLITE_CHANGESETAPPLY_INVERT</a> flag
|
||
|
<li>Added the <a href="session/sqlite3changeset_start.html">sqlite3changeset_start_v2()</a> interface and the
|
||
|
<a href="session/c_changesetstart_invert.html">SQLITE_CHANGESETSTART_INVERT</a> flag.
|
||
|
<li>Added the
|
||
|
<a href="https://sqlite.org/src/file/ext/session/changesetfuzz.c">changesetfuzz.c</a>
|
||
|
test-case generator utility.
|
||
|
</ol>
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2018-12-01 12:34:55 bf8c1b2b7a5960c282e543b9c293686dccff272512d08865f4600fb58238b4f9"
|
||
|
<li>SHA3-256 for sqlite3.c: 72c08830da9b5d1cb397c612c0e870d7f5eb41a323b41aa3d8aa5ae9ccedb2c4
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_25_3"></a>
|
||
|
<h3>2018-11-05 (3.25.3)</h3><p><ol class='lessindent'>
|
||
|
<li> Disallow the use of <a href="windowfunctions.html">window functions</a> in the recursive part of
|
||
|
a CTE. Ticket <a href="https://sqlite.org/src/info/e8275b415a2f03bee">e8275b415a2f03bee</a>
|
||
|
<li> Fix the behavior of typeof() and length() on virtual tables. Ticket
|
||
|
<a href="https://sqlite.org/src/info/69d642332d25aa3b7315a6d385">69d642332d25aa3b7315a6d385</a>
|
||
|
<li> Strengthen defenses against deliberately corrupted database files.
|
||
|
<li> Fix a problem in the query planner that results when a row-value expression
|
||
|
is used with a PRIMARY KEY with redundant columns. Ticket
|
||
|
<a href="https://sqlite.org/src/info/1a84668dcfdebaf12415d">1a84668dcfdebaf12415d</a>
|
||
|
<li> Fix the query planner so that it works correctly for IS NOT NULL operators
|
||
|
in the ON clause of a LEFT JOIN with the SQLITE_ENABLE_STAT4 compile-time option.
|
||
|
<a href="https://sqlite.org/src/info/65eb38f6e46de8c75e188a17ec">65eb38f6e46de8c75e188a17ec</a>
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2018-11-05 20:37:38 89e099fbe5e13c33e683bef07361231ca525b88f7907be7092058007b75036f2"
|
||
|
<li>SHA3-256 for sqlite3.c: 45586e4df74de3a43f3a1f8c7a78c3c3f02edce01af7d10cafe68bb94476a5c5
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_25_2"></a>
|
||
|
<h3>2018-09-25 (3.25.2)</h3><p><ol class='lessindent'>
|
||
|
<li> Add the <a href="pragma.html#pragma_legacy_alter_table">PRAGMA legacy_alter_table=ON</a> command that causes the
|
||
|
"ALTER TABLE RENAME" command to behave as it did in SQLite versions 3.24.0
|
||
|
and earlier: references to the renamed table inside the bodies of triggers
|
||
|
and views are not updated. This new pragma provides a compatibility
|
||
|
work around for older programs that expected the older, wonky behavior
|
||
|
of ALTER TABLE RENAME.
|
||
|
<li> Fix a problem with the new <a href="windowfunctions.html">window functions</a> implementation that caused
|
||
|
a malfunction when complicated expressions involving window functions were used
|
||
|
inside of a view.
|
||
|
<li> Fixes for various other compiler warnings and minor problems associated
|
||
|
with obscure configurations.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2018-09-25 19:08:10 fb90e7189ae6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792d1c7"
|
||
|
<li>SHA3-256 for sqlite3.c: 34c23ff91631ae10354f8c9d62fd7d65732b3d7f3acfd0bbae31ff4a62fe28af
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_25_1"></a>
|
||
|
<h3>2018-09-18 (3.25.1)</h3><p><ol class='lessindent'>
|
||
|
<li> Extra sanity checking added to ALTER TABLE in the 3.25.0 release
|
||
|
sometimes raises a false-positive
|
||
|
when the table being modified has a trigger that
|
||
|
updates a virtual table. The false-positive caused the ALTER
|
||
|
TABLE to rollback, thus leaving the schema unchanged.
|
||
|
Ticket <a href="https://sqlite.org/src/info/b41031ea2b537237">b41031ea2b537237</a>.
|
||
|
<li> The fix in the 3.25.0 release for the endless-loop in the byte-code
|
||
|
associated with the ORDER BY LIMIT optimization did not work for
|
||
|
some queries involving window functions. An additional correction
|
||
|
is required. Ticket
|
||
|
<a href="https://sqlite.org/src/info/510cde277783b5fb">510cde277783b5fb</a>
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2018-09-18 20:20:44 2ac9003de44da7dafa3fbb1915ac5725a9275c86bf2f3b7aa19321bf1460b386"
|
||
|
<li>SHA3-256 for sqlite3.c: 1b2302e7a54cc99c84ff699a299f61f069a28e1ed090b89e4430ca80ae2aab06
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_25_0"></a>
|
||
|
<h3>2018-09-15 (3.25.0)</h3><p><ol class='lessindent'>
|
||
|
<li> Add support for <a href="windowfunctions.html">window functions</a>
|
||
|
<li> Enhancements the <a href="lang_altertable.html">ALTER TABLE</a> command:
|
||
|
<ol type="a">
|
||
|
<li> Add support for renaming columns within a table using
|
||
|
ALTER TABLE <i>table</i> RENAME COLUMN <i>oldname</i> TO <i>newname</i>.
|
||
|
<li> Fix table rename feature so that it also updates references
|
||
|
to the renamed table in <a href="lang_createtrigger.html">triggers</a> and <a href="lang_createview.html">views</a>.
|
||
|
</ol>
|
||
|
<li> Query optimizer improvements:
|
||
|
<ol type="a">
|
||
|
<li> Avoid unnecessary loads of columns in an aggregate query that
|
||
|
are not within an aggregate function and that are not part
|
||
|
of the GROUP BY clause.
|
||
|
<li> The IN-early-out optimization: When doing a look-up on a
|
||
|
multi-column index and an IN operator is used on a column
|
||
|
other than the left-most column, then if no rows match against
|
||
|
the first IN value, check to make sure there exist rows that
|
||
|
match the columns to the right before continuing with the
|
||
|
next IN value.
|
||
|
<li> Use the transitive property to try to propagate constant
|
||
|
values within the WHERE clause. For example, convert
|
||
|
"a=99 AND b=a" into "a=99 AND b=99".
|
||
|
</ol>
|
||
|
<li> Use a separate mutex on every inode in the unix <a href="vfs.html">VFS</a>, rather than
|
||
|
a single mutex shared among them all, for slightly better concurrency
|
||
|
in multi-threaded environments.
|
||
|
<li> Enhance the <a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a> command for improved detection
|
||
|
of problems on the page freelist.
|
||
|
<li> Output infinity as 1e999 in the ".dump" command of the
|
||
|
<a href="cli.html">command-line shell</a>.
|
||
|
<li> Added the <a href="c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntldataversion">SQLITE_FCNTL_DATA_VERSION</a> file-control.
|
||
|
<li> Added the <a href="geopoly.html">Geopoly module</a>
|
||
|
<p><b>Bug fixes:</b>
|
||
|
<li> The ORDER BY LIMIT optimization might have caused an infinite loop
|
||
|
in the byte code of the prepared statement under very obscure
|
||
|
circumstances,
|
||
|
due to a confluence of minor defects in the query optimizer.
|
||
|
Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/9936b2fa443fec03ff25">9936b2fa443fec03ff25</a>
|
||
|
<li> On an UPSERT when the order of constraint checks is rearranged,
|
||
|
ensure that the affinity transformations on the inserted content
|
||
|
occur before any of the constraint checks. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/79cad5e4b2e219dd197242e9e">79cad5e4b2e219dd197242e9e</a>.
|
||
|
<li> Avoid using a prepared statement for ".stats on" command of the
|
||
|
<a href="cli.html">CLI</a> after it has been closed by the ".eqp full" logicc. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/7be932dfa60a8a6b3b26bcf76">7be932dfa60a8a6b3b26bcf76</a>.
|
||
|
<li> The LIKE optimization was generating incorrect byte-code and hence
|
||
|
getting the wrong answer
|
||
|
if the left-hand operand has numeric affinity and the right-hand-side
|
||
|
pattern is '/%' or if the pattern begins with the ESCAPE character.
|
||
|
Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/c94369cae9b561b1f996d0054b">c94369cae9b561b1f996d0054b</a>
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2018-09-15 04:01:47 b63af6c3bd33152742648d5d2e8dc5d5fcbcdd27df409272b6aea00a6f761760"
|
||
|
<li>SHA3-256 for sqlite3.c: 989e3ff37f2b5eea8e42205f808ccf0ba86c6ea6aa928ad2c011f33a108ac45d
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_24_0"></a>
|
||
|
<h3>2018-06-04 (3.24.0)</h3><p><ol class='lessindent'>
|
||
|
<li> Add support for PostgreSQL-style <a href="lang_upsert.html">UPSERT</a>.
|
||
|
<li> Add support for <a href="rtree.html#auxcol">auxiliary columns in r-tree tables</a>.
|
||
|
<li> Add C-language APIs for discovering SQL keywords used by
|
||
|
SQLite: <a href="c3ref/keyword_check.html">sqlite3_keyword_count()</a>, <a href="c3ref/keyword_check.html">sqlite3_keyword_name()</a>, and
|
||
|
<a href="c3ref/keyword_check.html">sqlite3_keyword_check()</a>.
|
||
|
<li> Add C-language APIs for dynamic strings based on the
|
||
|
<a href="c3ref/str.html">sqlite3_str</a> object.
|
||
|
<li> Enhance <a href="lang_altertable.html">ALTER TABLE</a> so that it recognizes "true" and "false" as
|
||
|
valid arguments to DEFAULT.
|
||
|
<li> Add the sorter-reference optimization as a compile-time option.
|
||
|
Only available if compiled with SQLITE_ENABLE_SORTER_REFERENCES.
|
||
|
<li> Improve the format of the <a href="eqp.html">EXPLAIN QUERY PLAN</a> raw output, so that
|
||
|
it gives better information about the query plan and about the
|
||
|
relationships between the various components of the plan.
|
||
|
<li> Added the <a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfigresetdatabase">SQLITE_DBCONFIG_RESET_DATABASE</a> option to the
|
||
|
<a href="c3ref/db_config.html">sqlite3_db_config()</a> API.
|
||
|
<p><b><a href="cli.html">CLI</a> Enhancements:</b>
|
||
|
<li> Automatically intercepts the raw <a href="eqp.html">EXPLAIN QUERY PLAN</a>
|
||
|
output and reformats it into an ASCII-art graph.
|
||
|
<li> Lines that begin with "#" and that are not in the middle of an
|
||
|
SQL statement are interpreted as comments.
|
||
|
<li> Added the --append option to the ".backup" command.
|
||
|
<li> Added the ".dbconfig" command.
|
||
|
<p><b>Performance:</b>
|
||
|
<li> <a href="lang_update.html">UPDATE</a> avoids unnecessary low-level disk writes when the contents
|
||
|
of the database file do not actually change.
|
||
|
For example, "UPDATE t1 SET x=25 WHERE y=?" generates no extra
|
||
|
disk I/O if the value in column x is already 25. Similarly,
|
||
|
when doing <a href="lang_update.html">UPDATE</a> on records that span multiple pages, only
|
||
|
the subset of pages that actually change are written to disk.
|
||
|
This is a low-level performance optimization only and does not
|
||
|
affect the behavior of TRIGGERs or other higher level SQL
|
||
|
structures.
|
||
|
<li> Queries that use ORDER BY and LIMIT now try to avoid computing
|
||
|
rows that cannot possibly come in under the LIMIT. This can greatly
|
||
|
improve performance of ORDER BY LIMIT queries, especially when the
|
||
|
LIMIT is small relative to the number of unrestricted output rows.
|
||
|
<li> The <a href="optoverview.html#or_opt">OR optimization</a> is allowed to proceed
|
||
|
even if the OR expression has also been converted into an IN
|
||
|
expression. Uses of the OR optimization are now also
|
||
|
<a href="eqp.html#or-opt">more clearly shown</a> in the <a href="eqp.html">EXPLAIN QUERY PLAN</a> output.
|
||
|
<li> The query planner is more aggressive about using
|
||
|
<a href="optoverview.html#autoindex">automatic indexes</a> for views and subqueries for which it is
|
||
|
not possible to create a persistent index.
|
||
|
<li> Make use of the one-pass UPDATE and DELETE query plans in the
|
||
|
<a href="rtree.html">R-Tree extension</a> where appropriate.
|
||
|
<li> Performance improvements in the LEMON-generated parser.
|
||
|
<p><b>Bug fixes:</b>
|
||
|
<li> For the right-hand table of a LEFT JOIN, compute the values
|
||
|
of expressions directly rather than loading precomputed values
|
||
|
out of an <a href="expridx.html">expression index</a> as the expression index might
|
||
|
not contain the correct value. Ticket
|
||
|
<a href="https://sqlite.org/src/info/7fa8049685b50b5aeb0c2">7fa8049685b50b5aeb0c2</a>
|
||
|
<li> Do not attempt to use terms from the WHERE clause to enable
|
||
|
indexed lookup of the right-hand table of a LEFT JOIN. Ticket
|
||
|
<a href="https://sqlite.org/src/info/4ba5abf65c5b0f9a96a7a">4ba5abf65c5b0f9a96a7a</a>
|
||
|
<li> Fix a memory leak that can occur following a failure to open error
|
||
|
in the <a href="csv.html">CSV virtual table</a>
|
||
|
<li> Fix a long-standing problem wherein a corrupt schema on the
|
||
|
<a href="fileformat2.html#seqtab">sqlite_sequence</a> table used by <a href="autoinc.html">AUTOINCREMENT</a> can lead to
|
||
|
a crash. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/d8dc2b3a58cd5dc29">d8dc2b3a58cd5dc2918a1</a>
|
||
|
<li> Fix the <a href="json1.html#jeach">json_each()</a> function so that it returns
|
||
|
valid results on its "fullkey" column when the input is a simple value
|
||
|
rather than an array or object.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2018-06-04 19:24:41 c7ee0833225bfd8c5ec2f9bf62b97c4e04d03bd9566366d5221ac8fb199a87ca"
|
||
|
<li>SHA3-256 for sqlite3.c: 0d384704e1c66026228336d1e91771d295bf688c9c44c7a44f25a4c16c26ab3c
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_23_1"></a>
|
||
|
<h3>2018-04-10 (3.23.1)</h3><p><ol class='lessindent'>
|
||
|
<li> Fix two problems in the new <a href="optoverview.html#leftjoinreduction">LEFT JOIN strength reduction optimization</a>.
|
||
|
Tickets <a href="https://sqlite.org/src/info/1e39b966ae9ee739">1e39b966ae9ee739</a>
|
||
|
and <a href="https://sqlite.org/src/info/fac496b61722daf2">fac496b61722daf2</a>.
|
||
|
<li> Fix misbehavior of the FTS5 xBestIndex method. Ticket
|
||
|
<a href="https://sqlite.org/src/info/2b8aed9f7c9e61e8">2b8aed9f7c9e61e8</a>.
|
||
|
<li> Fix a harmless reference to an uninitialized virtual machine register.
|
||
|
Ticket <a href="https://sqlite.org/src/info/093420fc0eb7cba7">093420fc0eb7cba7</a>.
|
||
|
<li> Fix the <a href="cli.html">CLI</a> so that it builds with -DSQLITE_UNTESTABLE
|
||
|
<li> Fix the <a href="https://sqlite.org/src/file/ext/misc/eval.c">eval.c</a> extension
|
||
|
so that it works with <a href="pragma.html#pragma_empty_result_callbacks">PRAGMA empty_result_callbacks=ON</a>.
|
||
|
<li> Fix the <a href="series.html">generate_series</a> virtual table so that it correctly returns
|
||
|
no rows if any of its constraints are NULL.
|
||
|
<li> Performance enhancements in the parser.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2018-04-10 17:39:29 4bb2294022060e61de7da5c227a69ccd846ba330e31626ebcd59a94efd148b3b"
|
||
|
<li>SHA3-256 for sqlite3.c: 65750d1e506f416a0b0b9dd22d171379679c733e3460549754dc68c92705b5dc
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_23_0"></a>
|
||
|
<h3>2018-04-02 (3.23.0)</h3><p><ol class='lessindent'>
|
||
|
<li> Add the <a href="c3ref/serialize.html">sqlite3_serialize()</a> and <a href="c3ref/deserialize.html">sqlite3_deserialize()</a> interfaces when
|
||
|
the <a href="compile.html#enable_deserialize">SQLITE_ENABLE_DESERIALIZE</a> compile-time option is used.
|
||
|
<li> Recognize TRUE and FALSE as constants. (For compatibility, if there
|
||
|
exist columns named "true" or "false", then the identifiers refer to the
|
||
|
columns rather than Boolean constants.)
|
||
|
<li> Support operators IS TRUE, IS FALSE, IS NOT TRUE, and IS NOT FALSE.
|
||
|
<li> Added the <a href="c3ref/c_dbstatus_options.html#sqlitedbstatuscachespill">SQLITE_DBSTATUS_CACHE_SPILL</a> option to <a href="c3ref/db_status.html">sqlite3_db_status()</a> for
|
||
|
reporting the number of cache spills that have occurred.
|
||
|
<li> The "alternate-form-2" flag ("!") on the <a href="printf.html">built-in printf</a> implementation
|
||
|
now causes string substitutions to measure the width and precision in
|
||
|
characters instead of bytes.
|
||
|
<li> If the <a href="vtab.html#xcolumn">xColumn</a> method in a <a href="vtab.html">virtual table</a> implementation returns
|
||
|
an error message using <a href="c3ref/result_blob.html">sqlite3_result_error()</a> then give that error
|
||
|
message preference over internally-generated messages.
|
||
|
<li> Added the -A command-line option to the <a href="cli.html">CLI</a> to make it easier to manage
|
||
|
<a href="sqlar.html">SQLite Archive files</a>.
|
||
|
<li> Add support for INSERT OR REPLACE, INSERT OR IGNORE, and UPDATE OR REPLACE
|
||
|
in the <a href="zipfile.html">Zipfile virtual table</a>.
|
||
|
<li> Enhance the <a href="session/sqlite3changeset_apply.html">sqlite3changeset_apply()</a> interface so that it is hardened
|
||
|
against attacks from deliberately corrupted <a href="sessionintro.html#changeset">changeset</a> objects.
|
||
|
<li> Added the <a href="https://sqlite.org/src/file/ext/misc/normalize.c">sqlite3_normalize()</a>
|
||
|
extension function.
|
||
|
<li> Query optimizer enhancements:
|
||
|
<ol type='a'>
|
||
|
<li> Improve the <a href="optoverview.html#omitnoopjoin">omit-left-join optimization</a> so that it works in cases where
|
||
|
the right-hand table is UNIQUE but not necessarily NOT NULL.
|
||
|
<li> Improve the <a href="optoverview.html#pushdown">push-down optimization</a> so that it works for many LEFT JOINs.
|
||
|
<li> Add the <a href="optoverview.html#leftjoinreduction">LEFT JOIN strength reduction optimization</a> that converts a LEFT
|
||
|
JOIN into an ordinary JOIN if there exist terms in the WHERE clause
|
||
|
that would prevent the extra all-NULL row of the LEFT JOIN from
|
||
|
appearing in the output set.
|
||
|
<li> Avoid unnecessary writes to the sqlite_sequence table when an
|
||
|
<a href="autoinc.html">AUTOINCREMENT</a> table is updated with an rowid that is less than the
|
||
|
maximum.
|
||
|
</ol>
|
||
|
<li> Bug fixes:
|
||
|
<ol type='a'>
|
||
|
<li> Fix the parser to accept valid <a href="rowvalue.html">row value</a> syntax.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/7310e2fb3d046a5">7310e2fb3d046a5</a>
|
||
|
<li> Fix the query planner so that it takes into account dependencies in
|
||
|
the arguments to table-valued functions in subexpressions in
|
||
|
the WHERE clause.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/80177f0c226ff54">80177f0c226ff54</a>
|
||
|
<li> Fix incorrect result with complex OR-connected WHERE and STAT4.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/ec32177c99ccac2">ec32177c99ccac2</a>
|
||
|
<li> Fix potential corruption in <a href="expridx.html">indexes on expressions</a> due to automatic
|
||
|
datatype conversions.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/343634942dd54ab">343634942dd54ab</a>
|
||
|
<li> Assertion fault in FTS4.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/d6ec09eccf68cfc">d6ec09eccf68cfc</a>
|
||
|
<li> Incorrect result on the less-than operator in <a href="rowvalue.html">row values</a>.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/f484b65f3d62305">f484b65f3d62305</a>
|
||
|
<li> Always interpret non-zero floating-point values as TRUE, even if
|
||
|
the integer part is zero.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/36fae083b450e3a">36fae083b450e3a</a>
|
||
|
<li> Fix an issue in the fsdir(PATH) <a href="vtab.html#tabfunc2">table-valued function</a> to the
|
||
|
<a href="https://sqlite.org/src/file/ext/misc/fileio.c">fileio.c</a> extension,
|
||
|
that caused a segfault if the fsdir() table was used as the inner table
|
||
|
of a join. Problem reported on the mailing list and fixed by check-in
|
||
|
<a href="https://www.sqlite.org/src/info/7ce4e71c1b7251be">7ce4e71c1b7251be</a>
|
||
|
<li> Issue an error rather instead of an assertion-fault or null-pointer
|
||
|
dereference when the sqlite_master table is corrupted so that the
|
||
|
sqlite_sequence table root page is really a btree-index page. Check-in
|
||
|
<a href="https://www.sqlite.org/src/info/525deb7a67fbd647">525deb7a67fbd647</a>
|
||
|
<li> Fix the <a href="lang_analyze.html">ANALYZE</a> command so that it computes statistics on tables
|
||
|
whose names begin with "sqlite". Check-in
|
||
|
<a href="https://sqlite.org/src/info/0249d9aecf69948d">0249d9aecf69948d</a>
|
||
|
</ol>
|
||
|
<li> Additional fixes for issues detected by
|
||
|
<a href="https://github.com/google/oss-fuzz">OSSFuzz</a>:
|
||
|
<ol type='a'>
|
||
|
<li> Fix a possible infinite loop on VACUUM for corrupt database files.
|
||
|
Check-in <a href="https://www.sqlite.org/src/info/27754b74ddf64">27754b74ddf64</a>
|
||
|
<li> Disallow <a href="lang_expr.html#varparam">parameters</a> in the <a href="lang_with.html">WITH clause</a> of triggers and views.
|
||
|
Check-in <a href="https://www.sqlite.org/src/info/b918d4b4e546d">b918d4b4e546d</a>
|
||
|
<li> Fix a potential memory leak in <a href="rowvalue.html">row value</a> processing.
|
||
|
Check-in <a href="https://www.sqlite.org/src/info/2df6bbf1b8ca8">2df6bbf1b8ca8</a>
|
||
|
<li> Improve the performance of the <a href="lang_corefunc.html#replace">replace() SQL function</a> for cases where
|
||
|
there are many substitutions on megabyte-sized strings, in an attempt
|
||
|
to avoid OSSFuzz timeouts during testing.
|
||
|
Check-in <a href="https://www.sqlite.org/src/info/fab2c2b07b5d3">fab2c2b07b5d3</a>
|
||
|
<li> Provide an appropriate error message when the sqlite_master table
|
||
|
contains a CREATE TABLE AS statement. Formerly this caused either an
|
||
|
assertion fault or null pointer dereference. Problem found by OSSFuzz
|
||
|
on the GDAL project. Check-in
|
||
|
<a href="https://www.sqlite.org/src/info/d75e67654aa96">d75e67654aa96</a>
|
||
|
<li> Incorrect assert() statement removed. Check-in
|
||
|
<a href="https://www.sqlite.org/src/info/823779d31eb09cda">823779d31eb09cda</a>.
|
||
|
<li> Fix a problem with using the <a href="optoverview.html#like_opt">LIKE optimization</a> on an
|
||
|
<a href="lang_createtable.html#rowid">INTEGER PRIMARY KEY</a>. Check-in
|
||
|
<a href="https://www.sqlite.org/src/info/b850dd159918af56">b850dd159918af56</a>.
|
||
|
</ol>
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2018-04-02 11:04:16 736b53f57f70b23172c30880186dce7ad9baa3b74e3838cae5847cffb98f5cd2"
|
||
|
<li>SHA3-256 for sqlite3.c: 4bed3dc2dc905ff55e2c21fd2725551fc0ca50912a9c96c6af712a4289cb24fa
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_22_0"></a>
|
||
|
<h3>2018-01-22 (3.22.0)</h3><p><ol class='lessindent'>
|
||
|
<li> The output of <a href="c3ref/trace_v2.html">sqlite3_trace_v2()</a> now shows each individual SQL statement
|
||
|
run within a trigger.
|
||
|
<li> Add the ability to read from <a href="wal.html">WAL mode</a> databases even if the application
|
||
|
lacks write permission on the database and its containing directory, as long as
|
||
|
the -shm and -wal files exist in that directory.
|
||
|
<li> Added the <a href="rtree.html#rtreecheck">rtreecheck()</a> scalar SQL function to the <a href="rtree.html">R-Tree extension</a>.
|
||
|
<li> Added the <a href="c3ref/vtab_nochange.html">sqlite3_vtab_nochange()</a> and <a href="c3ref/value_blob.html">sqlite3_value_nochange()</a> interfaces
|
||
|
to help virtual table implementations optimize UPDATE operations.
|
||
|
<li> Added the <a href="c3ref/vtab_collation.html">sqlite3_vtab_collation()</a> interface.
|
||
|
<li> Added support for the <a href="fts5.html#carrotq">"^" initial token syntax</a> in FTS5.
|
||
|
<li> New extensions:
|
||
|
<ol type='a'>
|
||
|
<li> The <a href="zipfile.html">Zipfile virtual table</a> can read and write a
|
||
|
<a href="https://en.wikipedia.org/wiki/Zip_(file_format)">ZIP Archive</a>.
|
||
|
<li> Added the fsdir(PATH) <a href="vtab.html#tabfunc2">table-valued function</a> to the
|
||
|
<a href="https://sqlite.org/src/file/ext/misc/fileio.c">fileio.c</a> extension,
|
||
|
for listing the files in a directory.
|
||
|
<li> The <a href="https://sqlite.org/src/file/ext/misc/btreeinfo.c">sqlite_btreeinfo</a>
|
||
|
eponymous virtual table for introspecting and estimating the sizes of
|
||
|
the btrees in a database.
|
||
|
<li> The <a href="https://sqlite.org/src/file/ext/misc/appendvfs.c">Append VFS</a> is a
|
||
|
<a href="vfs.html#shim">VFS shim</a> that allows an SQLite database to be appended to some other
|
||
|
file. This allows (for example) a database to be appended to an
|
||
|
executable that then opens and reads the database.
|
||
|
</ol>
|
||
|
<li> Query planner enhancements:
|
||
|
<ol type='a'>
|
||
|
<li> The optimization that uses an index to quickly compute an
|
||
|
aggregate min() or max() is extended to work with
|
||
|
<a href="expridx.html">indexes on expressions</a>.
|
||
|
<li> The decision of whether to implement a FROM-clause subquery
|
||
|
as a co-routine or using <a href="optoverview.html#flattening">query flattening</a>
|
||
|
now considers whether
|
||
|
the result set of the outer query is "complex" (if it
|
||
|
contains functions or expression subqueries). A complex result
|
||
|
set biases the decision toward the use of co-routines.
|
||
|
<li> The planner avoids query plans that use indexes with unknown
|
||
|
collating functions.
|
||
|
<li> The planner omits unused LEFT JOINs even if they are not the
|
||
|
right-most joins of a query.
|
||
|
</ol>
|
||
|
<li> Other performance optimizations:
|
||
|
<ol type='a'>
|
||
|
<li> A smaller and faster implementation of text to floating-point
|
||
|
conversion subroutine: sqlite3AtoF().
|
||
|
<li> The <a href="lemon.html">Lemon parser generator</a> creates a faster parser.
|
||
|
<li> Use the strcspn() C-library routine to speed up the LIKE and
|
||
|
GLOB operators.
|
||
|
</ol>
|
||
|
<li> Improvements to the <a href="cli.html">command-line shell</a>:
|
||
|
<ol type='a'>
|
||
|
<li> The ".schema" command shows the structure of virtual tables.
|
||
|
<li> Added support for reading and writing
|
||
|
<a href="sqlar.html">SQLite Archive</a> files using
|
||
|
the <a href="cli.html#sqlar">.archive command</a>.
|
||
|
<li> Added the experimental <a href="cli.html#expert">.expert command</a>
|
||
|
<li> Added the ".eqp trigger" variant of the ".eqp" command
|
||
|
<li> Enhance the ".lint fkey-indexes" command so that it works with
|
||
|
<a href="withoutrowid.html">WITHOUT ROWID</a> tables.
|
||
|
<li> If the filename argument to the shell is a ZIP archive rather than
|
||
|
an SQLite database, then the shell automatically opens that ZIP
|
||
|
archive using the <a href="zipfile.html">Zipfile virtual table</a>.
|
||
|
<li> Added the <a href="cli.html#editfunc">edit() SQL function</a>.
|
||
|
<li> Added the <a href="cli.html#exexcel*">.excel command</a> to simplify exporting
|
||
|
database content to a spreadsheet.
|
||
|
<li> Databases are opened using
|
||
|
<a href="https://sqlite.org/src/file/ext/misc/appendvfs.c">Append VFS</a> when
|
||
|
the --append flag is used on the command line or with the
|
||
|
.open command.
|
||
|
</ol>
|
||
|
<li> Enhance the <a href="compile.html#enable_update_delete_limit">SQLITE_ENABLE_UPDATE_DELETE_LIMIT</a> compile-time option so
|
||
|
that it works for <a href="withoutrowid.html">WITHOUT ROWID</a> tables.
|
||
|
<li> Provide the <a href="lang_corefunc.html#sqlite_offset">sqlite_offset(X)</a> SQL function that returns
|
||
|
the byte offset into the database file to the beginning of the record
|
||
|
holding value X, when compiling with <a href="compile.html#enable_offset_sql_func">-DSQLITE_ENABLE_OFFSET_SQL_FUNC</a>.
|
||
|
<li> Bug fixes:
|
||
|
<ol type='a'>
|
||
|
<li> Infinite loop on an UPDATE that uses an OR operator in the WHERE clause.
|
||
|
Problem introduced with 3.17.0 and reported on the mailing list about
|
||
|
one year later. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/47b2581aa9bfecec">47b2581aa9bfecec</a>.
|
||
|
<li> Incorrect query results when the skip-ahead-distinct optimization is
|
||
|
used.
|
||
|
Ticket <a href="https://sqlite.org/src/info/ef9318757b152e3a">ef9318757b152e3a</a>.
|
||
|
<li> Incorrect query results on a join with a ORDER BY DESC. Ticket
|
||
|
<a href="https://sqlite.org/src/info/123c9ba32130a6c9">123c9ba32130a6c9</a>.
|
||
|
<li> Inconsistent result set column names between CREATE TABLE AS
|
||
|
and a simple SELECT. Ticket
|
||
|
<a href="https://sqlite.org/src/info/3b4450072511e621">3b4450072511e621</a>
|
||
|
<li> Assertion fault when doing REPLACE on an index on an expression.
|
||
|
Ticket <a href="https://sqlite.org/src/info/dc3f932f5a147771">dc3f932f5a147771</a>
|
||
|
<li> Assertion fault when doing an IN operator on a constant index.
|
||
|
Ticket <a href="https://sqlite.org/src/info/aa98619ad08ddcab">aa98619ad08ddcab</a>
|
||
|
</ol>
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2171d"
|
||
|
<li>SHA3-256 for sqlite3.c: 206df47ebc49cd1710ac0dd716ce5de5854826536993f4feab7a49d136b85069
|
||
|
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_21_0"></a>
|
||
|
<h3>2017-10-24 (3.21.0)</h3><p><ol class='lessindent'>
|
||
|
<li> Take advantage of the atomic-write capabilities in the
|
||
|
<a href="https://en.wikipedia.org/wiki/F2FS">F2FS filesystem</a> when available, for
|
||
|
greatly reduced transaction overhead. This currently requires the
|
||
|
<a href="compile.html#enable_batch_atomic_write">SQLITE_ENABLE_BATCH_ATOMIC_WRITE</a> compile-time option.
|
||
|
<li> Allow <a href="lang_attach.html">ATTACH</a> and <a href="lang_detach.html">DETACH</a> commands to work inside of a transaction.
|
||
|
<li> Allow <a href="vtab.html#worid">WITHOUT ROWID virtual tables</a> to be writable if the PRIMARY KEY
|
||
|
contains exactly one column.
|
||
|
<li> The "fsync()" that occurs after the header is written in a WAL reset
|
||
|
now uses the sync settings for checkpoints. This means it will use a
|
||
|
"fullfsync" on macs if <a href="pragma.html#pragma_checkpoint_fullfsync">PRAGMA checkpoint_fullfsync</a> set on.
|
||
|
<li> The <a href="c3ref/libversion.html">sqlite3_sourceid()</a> function tries to detect if the source code has
|
||
|
been modified from what is checked into version control and if there are
|
||
|
modifications, the last four characters of the version hash are shown as
|
||
|
"alt1" or "alt2". The objective is to detect accidental and/or careless
|
||
|
edits. A forger can subvert this feature.
|
||
|
<li> Improved de-quoting of column names for <a href="lang_createtable.html#createtabas">CREATE TABLE AS</a> statements with
|
||
|
an aggregate query on the right-hand side.
|
||
|
<li> Fewer "stat()" system calls issued by the unix VFS.
|
||
|
<li> Enhanced the <a href="optoverview.html#like_opt">LIKE optimization</a> so that it works with an <a href="lang_expr.html#like">ESCAPE</a> clause.
|
||
|
<li> Enhanced <a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a> and <a href="pragma.html#pragma_quick_check">PRAGMA quick_check</a> to detect obscure
|
||
|
row corruption that they were formerly missing. Also update both pragmas
|
||
|
so that they return error text rather than SQLITE_CORRUPT when encountering
|
||
|
corruption in <a href="fileformat2.html#record_format">records</a>.
|
||
|
<li> The query planner now prefers to implement FROM-clause subqueries using
|
||
|
<a href="optoverview.html#coroutines">co-routines</a> rather using the <a href="optoverview.html#flattening">query flattener</a> optimization. Support for
|
||
|
the use of co-routines for subqueries may no longer be disabled.
|
||
|
<li> Pass information about !=, IS, IS NOT, NOT NULL, and IS NULL constraints
|
||
|
into the <a href="vtab.html#xbestindex">xBestIndex</a> method of virtual tables.
|
||
|
<li> Enhanced the <a href="csv.html">CSV virtual table</a> so that it accepts the last row of
|
||
|
input if the final new-line character is missing.
|
||
|
<li> Remove the rarely-used "scratch" memory allocator. Replace it with the
|
||
|
<a href="c3ref/c_config_covering_index_scan.html#sqliteconfigsmallmalloc">SQLITE_CONFIG_SMALL_MALLOC</a> configuration setting that gives SQLite
|
||
|
a hint that large memory allocations should be avoided when possible.
|
||
|
<li> Added the
|
||
|
<a href="https://sqlite.org/src/file/ext/misc/unionvtab.c">swarm virtual table</a>
|
||
|
to the existing union virtual table extension.
|
||
|
<li> Added the
|
||
|
<a href="https://sqlite.org/src/file/src/dbpage.c">sqlite_dbpage virtual table</a>
|
||
|
for providing direct access to pages
|
||
|
of the database file. The source code is built into the <a href="amalgamation.html">amalgamation</a> and
|
||
|
is activated using the <a href="compile.html#enable_dbpage_vtab">-DSQLITE_ENABLE_DBPAGE_VTAB</a> compile-time option.
|
||
|
<li> Add a new type of fts5vocab virtual table - "instance" - that provides
|
||
|
direct access to an FTS5 full-text index at the lowest possible level.
|
||
|
<li> Remove a call to rand_s() in the Windows VFS since it was causing problems
|
||
|
in Firefox on some older laptops.
|
||
|
<li> The <a href="https://sqlite.org/src/finfo?name=src/shell.c">src/shell.c</a> source code
|
||
|
to the <a href="cli.html">command-line shell</a> is no longer under version control. That file
|
||
|
is now generated as part of the build process.
|
||
|
<li> Miscellaneous <a href="cpu.html#microopt">microoptimizations</a> reduce CPU usage by about 2.1%.
|
||
|
<li> Bug fixes:
|
||
|
<ol type="a">
|
||
|
<li> Fix a faulty assert() statement discovered by OSSFuzz.
|
||
|
Ticket <a href="https://sqlite.org/src/info/cb91bf4290c211d">cb91bf4290c211d</a>
|
||
|
<li> Fix an obscure memory leak in <a href="c3ref/result_blob.html">sqlite3_result_pointer()</a>.
|
||
|
Ticket <a href="https://sqlite.org/src/info/7486aa54b968e9b">7486aa54b968e9b</a>
|
||
|
<li> Avoid a possible use-after-free error by deferring schema resets until
|
||
|
after the query planner has finished running.
|
||
|
Ticket <a href="https://sqlite.org/src/info/be436a7f4587ce5">be436a7f4587ce5</a>
|
||
|
<li> Only use indexes-on-expressions to optimize ORDER BY or GROUP BY if
|
||
|
the COLLATE is correct.
|
||
|
Ticket <a href="https://sqlite.org/src/info/e20dd54ab0e4383">e20dd54ab0e4383</a>
|
||
|
<li> Fix an assertion fault that was coming up when the expression in an
|
||
|
index-on-expressions is really a constant.
|
||
|
Ticket <a href="https://sqlite.org/src/info/aa98619ad08ddca">aa98619ad08ddca</a>
|
||
|
<li> Fix an assertion fault that could occur following
|
||
|
<a href="pragma.html#pragma_reverse_unordered_selects">PRAGMA reverse_unordered_selects</a>.
|
||
|
Ticket <a href="https://sqlite.org/src/info/cb91bf4290c211d">cb91bf4290c211d</a>
|
||
|
<li> Fix a segfault that can occur for queries that use table-valued functions
|
||
|
in an IN or EXISTS subquery.
|
||
|
Ticket <a href="https://sqlite.org/src/info/b899b6042f97f5">b899b6042f97f5</a>
|
||
|
<li> Fix a potential integer overflow problem when compiling a particular
|
||
|
horrendous common table expression. This was another problem discovered
|
||
|
by OSSFuzz. Check-in <a href="https://sqlite.org/src/info/6ee8cb6ae5">6ee8cb6ae5</a>.
|
||
|
<li> Fix a potential out-of-bound read when querying a corrupt database file,
|
||
|
a problem detected by Natalie Silvanovich of Google Project Zero.
|
||
|
Check-in <a href="https://sqlite.org/src/info/04925dee41a21f">04925dee41a21f</a>.
|
||
|
</ol>
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2017-10-24 18:55:49 1a584e499906b5c87ec7d43d4abce641fdf017c42125b083109bc77c4de48827"
|
||
|
<li>SHA3-256 for sqlite3.c: 84c181c0283d0320f488357fc8aab51898370c157601459ebee49d779036fe03
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_20_1"></a>
|
||
|
<h3>2017-08-24 (3.20.1)</h3><p><ol class='lessindent'>
|
||
|
<li> Fix a potential memory leak in the new <a href="c3ref/result_blob.html">sqlite3_result_pointer()</a> interface.
|
||
|
Ticket <a href="https://sqlite.org/src/info/7486aa54b968e9b5">7486aa54b968e9b5</a>.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2017-08-24 16:21:36 8d3a7ea6c5690d6b7c3767558f4f01b511c55463e3f9e64506801fe9b74dce34"
|
||
|
<li>SHA3-256 for sqlite3.c: 93b1a6d69b48dc39697d1d3a1e4c30b55da0bdd2cad0c054462f91081832954a
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_20_0"></a>
|
||
|
<h3>2017-08-01 (3.20.0)</h3><p><ol class='lessindent'>
|
||
|
<li> Update the text of error messages returned by <a href="c3ref/errcode.html">sqlite3_errmsg()</a> for some
|
||
|
error codes.
|
||
|
<li> Add new <a href="bindptr.html">pointer passing interfaces</a>.
|
||
|
<li> Backwards-incompatible changes to some extensions in order to take
|
||
|
advantage of the improved security offered by the new
|
||
|
<a href="bindptr.html">pointer passing interfaces</a>:
|
||
|
<ol type='a'>
|
||
|
<li> <a href="fts5.html#extending_fts5">Extending FTS5</a> → requires <a href="c3ref/bind_blob.html">sqlite3_bind_pointer()</a> to find
|
||
|
the fts5_api pointer.
|
||
|
<li> <a href="carray.html">carray(PTR,N)</a> → requires <a href="c3ref/bind_blob.html">sqlite3_bind_pointer()</a> to set the PTR parameter.
|
||
|
<li> <a href="https://www.sqlite.org/src/file/ext/misc/remember.c">remember(V,PTR)</a>
|
||
|
→ requires <a href="c3ref/bind_blob.html">sqlite3_bind_pointer()</a> to set the PTR parameter.
|
||
|
</ol>
|
||
|
<li> Added the <a href="stmt.html">SQLITE_STMT virtual table</a> extension.
|
||
|
<li> Added the <a href="completion.html">COMPLETION extension</a> - designed to suggest
|
||
|
tab-completions for interactive user interfaces. This is a work in progress.
|
||
|
Expect further enhancements in future releases.
|
||
|
<li> Added the <a href="unionvtab.html">UNION virtual table</a> extension.
|
||
|
<li> The built-in <a href="lang_datefunc.html">date and time functions</a> have been enhanced so that they can be
|
||
|
used in <a href="lang_createtable.html#ckconst">CHECK constraints</a>, in <a href="expridx.html">indexes on expressions</a>, and in the WHERE clauses
|
||
|
of <a href="partialindex.html">partial indexes</a>, provided that they do not use the 'now', 'localtime', or
|
||
|
'utc' keywords. <a href="deterministic.html#dtexception">More information</a>.
|
||
|
<li> Added the <a href="c3ref/prepare.html">sqlite3_prepare_v3()</a> and <a href="c3ref/prepare.html">sqlite3_prepare16_v3()</a> interfaces
|
||
|
with the extra "prepFlags" parameters.
|
||
|
<li> Provide the <a href="c3ref/c_prepare_normalize.html#sqlitepreparepersistent">SQLITE_PREPARE_PERSISTENT</a> flag for <a href="c3ref/prepare.html">sqlite3_prepare_v3()</a> and
|
||
|
use it to limit <a href="malloc.html#lookaside">lookaside memory</a> misuse by <a href="fts3.html">FTS3</a>, <a href="fts5.html">FTS5</a>, and the
|
||
|
<a href="rtree.html">R-Tree extension</a>.
|
||
|
<li> Added the <a href="pragma.html#pragma_secure_delete">PRAGMA secure_delete=FAST</a> command. When secure_delete is
|
||
|
set to FAST, old content is overwritten with zeros as long as that does
|
||
|
not increase the amount of I/O. Deleted content might still persist on
|
||
|
the <a href="fileformat2.html#freelist">free-page list</a> but will be purged from all b-tree pages.
|
||
|
<li> Enhancements to the <a href="cli.html">command-line shell</a>:
|
||
|
<ol type='a'>
|
||
|
<li> Add support for tab-completion using the <a href="completion.html">COMPLETION extension</a>, for
|
||
|
both readline and linenoise.
|
||
|
<li> Add the ".cd" command.
|
||
|
<li> Enhance the "<a href="cli.html#dschema">.schema</a>" command to show the schema of all attached
|
||
|
databases.
|
||
|
<li> Enhance "<a href="cli.html#dtables">.tables</a>" so that it shows the schema names for all attached
|
||
|
if the name is anything other than "main".
|
||
|
<li> The "<a href="cli.html#csv">.import</a>" command ignores an initial UTF-8 BOM.
|
||
|
<li> Added the "--newlines" option to the "<a href="cli.html#dump">.dump</a>" command to cause U+000a and
|
||
|
U+000d characters to be output literally rather than escaped using the
|
||
|
<a href="lang_corefunc.html#replace">replace()</a> function.
|
||
|
</ol>
|
||
|
<li> Query planner enhancements:
|
||
|
<ol type='a'>
|
||
|
<li> When generating individual loops for each ORed term of an OR scan,
|
||
|
move any constant WHERE expressions outside of the loop, as is
|
||
|
done for top-level loops.
|
||
|
<li> The query planner examines the values of bound parameters to help
|
||
|
determine if a partial index is usable.
|
||
|
<li> When deciding between two plans with the same estimated cost, bias
|
||
|
the selection toward the one that does not use the sorter.
|
||
|
<li> Evaluate WHERE clause constraints involving correlated subqueries
|
||
|
last, in the hope that they never have be evaluated at all.
|
||
|
<li> Do not use the <a href="optoverview.html#flattening">flattening optimization</a> for a sub-query on the RHS
|
||
|
of a LEFT JOIN if that subquery reads data from a <a href="vtab.html">virtual table</a> as
|
||
|
doing so prevents the query planner from creating <a href="optoverview.html#autoindex">automatic indexes</a>
|
||
|
on the results of the sub-query, which can slow down the query.
|
||
|
</ol>
|
||
|
<li> Add <a href="c3ref/c_stmtstatus_counter.html#sqlitestmtstatusreprepare">SQLITE_STMTSTATUS_REPREPARE</a>, <a href="c3ref/c_stmtstatus_counter.html#sqlitestmtstatusrun">SQLITE_STMTSTATUS_RUN</a>,
|
||
|
and <a href="c3ref/c_stmtstatus_counter.html#sqlitestmtstatusmemused">SQLITE_STMTSTATUS_MEMUSED</a> options for the
|
||
|
<a href="c3ref/stmt_status.html">sqlite3_stmt_status()</a> interface.
|
||
|
<li> Provide <a href="pragma.html#pragfunc">PRAGMA functions</a> for
|
||
|
<a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a>, <a href="pragma.html#pragma_quick_check">PRAGMA quick_check</a>, and
|
||
|
<a href="pragma.html#pragma_foreign_key_check">PRAGMA foreign_key_check</a>.
|
||
|
<li> Add the -withoutnulls option to the <a href="tclsqlite.html#eval">TCL interface eval method</a>.
|
||
|
<li> Enhance the <a href="sqlanalyze.html">sqlite3_analyzer.exe</a> utility program so that it shows
|
||
|
the number of bytes of metadata on btree pages.
|
||
|
<li> The <a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfigenableqpsg">SQLITE_DBCONFIG_ENABLE_QPSG</a> run-time option and the
|
||
|
<a href="compile.html#enable_qpsg">SQLITE_ENABLE_QPSG</a> compile-time option enable the
|
||
|
<a href="queryplanner-ng.html#qpstab">query planner stability guarantee</a>. See also ticket
|
||
|
<a href="https://www.sqlite.org/src/info/892fc34f173e99d8">892fc34f173e99d8</a>
|
||
|
<li> Miscellaneous optimizations result in a 2% reduction in <a href="cpu.html">CPU cycles used</a>.
|
||
|
<p><b>Bug Fixes:</b>
|
||
|
<li> Fix the behavior of <a href="c3ref/column_name.html">sqlite3_column_name()</a> for queries that use the
|
||
|
<a href="optoverview.html#flattening">flattening optimization</a> so that the result is consistent with other
|
||
|
queries that do not use that optimization, and with PostgreSQL, MySQL,
|
||
|
and SQLServer. Ticket <a href="https://sqlite.org/src/info/de3403bf5ae">de3403bf5ae</a>.
|
||
|
<li> Fix the query planner so that it knows not to use <a href="optoverview.html#autoindex">automatic indexes</a>
|
||
|
on the right table of LEFT JOIN if the WHERE clause uses the <a href="lang_expr.html#isisnot">IS operator</a>.
|
||
|
Fix for <a href="https://sqlite.org/src/info/ce68383bf6aba">ce68383bf6aba</a>.
|
||
|
<li> Ensure that the query planner knows that any column of a
|
||
|
<a href="optoverview.html#flattening">flattened</a> LEFT JOIN can be NULL even
|
||
|
if that column is labeled with "NOT NULL". Fix for ticket
|
||
|
<a href="https://sqlite.org/src/info/892fc34f173e99d8">892fc34f173e99d8</a>.
|
||
|
<li> Fix rare false-positives in <a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a> when run on a database connection
|
||
|
with <a href="lang_attach.html">attached databases</a>. Ticket
|
||
|
<a href="https://sqlite.org/src/info/a4e06e75a9ab61a12">a4e06e75a9ab61a12</a>
|
||
|
<li> Fix a bug (discovered by OSSFuzz) that causes an assertion fault if certain
|
||
|
dodgy CREATE TABLE declarations are used. Ticket
|
||
|
<a href="https://sqlite.org/src/info/bc115541132dad136">bc115541132dad136</a>
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2017-08-01 13:24:15 9501e22dfeebdcefa783575e47c60b514d7c2e0cad73b2a496c0bc4b680900a8"
|
||
|
<li>SHA3-256 for sqlite3.c: 79b7f3b977360456350219cba0ba0e5eb55910565eab68ea83edda2f968ebe95
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_18_2"></a>
|
||
|
<h3>2017-06-17 (3.18.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug that might cause duplicate output rows when an IN operator is
|
||
|
used in the WHERE clause.
|
||
|
Ticket <a href="https://sqlite.org/src/info/61fe9745">61fe9745</a>.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2017-06-17 09:59:36 036ebf729e4b21035d7f4f8e35a6f705e6bf99887889e2dc14ebf2242e7930dd"
|
||
|
<li>SHA3-256 for sqlite3.c: b0bd014f2776b9f9508a3fc6432f70e2436bf54475369f88f0aeef75b0eec93e
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_18_1"></a>
|
||
|
<h3>2017-06-16 (3.18.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug associated with <a href="pragma.html#pragma_auto_vacuum">auto_vacuum</a> that can lead to database
|
||
|
corruption. The bug was introduced in <a href="#version_3_16_0">version 3.16.0</a> (2017-01-02).
|
||
|
Ticket <a href="https://sqlite.org/src/info/fda22108">fda22108</a>.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2017-06-16 13:41:15 77bb46233db03a3338bacf7e56f439be3dfd1926ea0c44d252eeafa7a7b31c06"
|
||
|
<li>SHA3-256 for sqlite3.c: 334eaf776db9d09a4e69d6012c266bc837107edc2c981739ef82081cb11c5723
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_19_3"></a>
|
||
|
<h3>2017-06-08 (3.19.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug associated with <a href="pragma.html#pragma_auto_vacuum">auto_vacuum</a> that can lead to database
|
||
|
corruption. The bug was introduced in <a href="#version_3_16_0">version 3.16.0</a> (2017-01-02).
|
||
|
Ticket <a href="https://sqlite.org/src/info/fda22108">fda22108</a>.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2017-06-08 14:26:16 0ee482a1e0eae22e08edc8978c9733a96603d4509645f348ebf55b579e89636b"
|
||
|
<li>SHA3-256 for sqlite3.c: 368f1d31272b1739f804bcfa5485e5de62678015c4adbe575003ded85c164bb8
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_19_2"></a>
|
||
|
<h3>2017-05-25 (3.19.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix more bugs in the LEFT JOIN <a href="optoverview.html#flattening">flattening optimization</a>. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/7fde638e94287d2c">7fde638e94287d2c</a>.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2017-05-25 16:50:27 edb4e819b0c058c7d74d27ebd14cc5ceb2bad6a6144a486a970182b7afe3f8b9"
|
||
|
<li>SHA3-256 for sqlite3.c: 1be0c457869c1f7eba58c3b5097b9ec307a15be338308bee8e5be8570bcf5d1e
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_19_1"></a>
|
||
|
<h3>2017-05-24 (3.19.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug in the LEFT JOIN <a href="optoverview.html#flattening">flattening optimization</a>. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/cad1ab4cb7b0fc">cad1ab4cb7b0fc</a>.
|
||
|
<li>Remove a surplus semicolon that was causing problems for older versions of MSVC.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2017-05-24 13:08:33 f6d7b988f40217821a382bc298180e9e6794f3ed79a83c6ef5cae048989b3f86"
|
||
|
<li>SHA3-256 for sqlite3.c: 996b2aff37b6e0c6663d0312cd921bbdf6826c989cbbb07dadde5e9672889bca
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_19_0"></a>
|
||
|
<h3>2017-05-22 (3.19.0)</h3><p><ol class='lessindent'>
|
||
|
<li> The <a href="c3ref/c_alter_table.html">SQLITE_READ</a> <a href="c3ref/set_authorizer.html">authorizer callback</a> is invoked once
|
||
|
with a column name that is an empty string
|
||
|
for every table referenced in a query from which no columns are extracted.
|
||
|
<li> When using an index on an expression, try to use expression values already
|
||
|
available in the index, rather than loading the original columns and recomputing
|
||
|
the expression.
|
||
|
<li> Enhance the <a href="optoverview.html#flattening">flattening optimization</a> so that it is able to flatten views
|
||
|
on the right-hand side of a LEFT JOIN.
|
||
|
<li> Use <a href="lang_corefunc.html#replace">replace()</a> instead of <a href="lang_corefunc.html#char">char()</a> for escaping newline and carriage-return
|
||
|
characters embedded in strings in the .dump output from the <a href="cli.html">command-line shell</a>.
|
||
|
<li> Avoid unnecessary foreign key processing in UPDATE statements that do not
|
||
|
touch the columns that are constrained by the foreign keys.
|
||
|
<li> On a DISTINCT query that uses an index, try to skip ahead to the next distinct
|
||
|
entry using the index rather than stepping through rows, when an appropriate
|
||
|
index is available.
|
||
|
<li> Avoid unnecessary invalidation of <a href="c3ref/blob.html">sqlite3_blob</a> handles when making
|
||
|
changes to unrelated tables.
|
||
|
<li> Transfer any terms of the HAVING clause that use only columns mentioned in
|
||
|
the GROUP BY clause over to the WHERE clause for faster processing.
|
||
|
<li> Reuse the same materialization of a VIEW if that VIEW appears more than
|
||
|
once in the same query.
|
||
|
<li> Enhance <a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a> so that it identifies tables that have two
|
||
|
or more rows with the same <a href="lang_createtable.html#rowid">rowid</a>.
|
||
|
<li> Enhance the <a href="fts5.html">FTS5</a> query syntax so that <a href="fts5.html#fts5_column_filters">column filters</a>
|
||
|
may be applied to arbitrary expressions.
|
||
|
<li> Enhance the <a href="json1.html#jex">json_extract()</a> function to cache and reuse parses of JSON
|
||
|
input text.
|
||
|
<li> Added the <a href="https://sqlite.org/src/file/ext/misc/anycollseq.c">anycollseq.c</a>
|
||
|
<a href="loadext.html">loadable extension</a> that allows a generic SQLite database connection to
|
||
|
read a schema that contains unknown and/or
|
||
|
application-specific <a href="datatype3.html#collation">collating sequences</a>.
|
||
|
<p><b>Bug Fixes:</b>
|
||
|
<li> Fix a problem in <a href="lang_replace.html">REPLACE</a> that can result in a corrupt database containing
|
||
|
two or more rows with the same <a href="lang_createtable.html#rowid">rowid</a>. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/f68dc596c4e6018d">f68dc596c4e6018d</a>.
|
||
|
<li> Fix a problem in <a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a> that was causing a subsequent
|
||
|
<a href="lang_vacuum.html">VACUUM</a> to behave suboptimally.
|
||
|
<li> Fix the <a href="pragma.html#pragma_foreign_key_check">PRAGMA foreign_key_check</a> command so that it works correctly with
|
||
|
foreign keys on <a href="withoutrowid.html">WITHOUT ROWID</a> tables.
|
||
|
<li> Fix a bug in the b-tree logic that can result in incorrect duplicate answers
|
||
|
for IN operator queries. Ticket
|
||
|
<a href="https://sqlite.org/src/info/61fe9745">61fe9745</a>
|
||
|
<li> Disallow leading zeros in numeric constants in JSON. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/b93be8729a895a528e2">b93be8729a895a528e2</a>.
|
||
|
<li> Disallow control characters inside of strings in JSON. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/6c9b5514077fed34551">6c9b5514077fed34551</a>.
|
||
|
<li> Limit the depth of recursion for JSON objects and arrays in order to avoid
|
||
|
excess stack usage in the recursive descent parser. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/981329adeef51011052">981329adeef51011052</a>.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2017-05-22 13:58:13 28a94eb282822cad1d1420f2dad6bf65e4b8b9062eda4a0b9ee8270b2c608e40"
|
||
|
<li>SHA3-256 for sqlite3.c: c30326aa1a9cc342061b755725eac9270109acf878bc59200dd4b1cea6bc2908
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_18_0"></a>
|
||
|
<h3>2017-03-30 (3.18.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the <a href="pragma.html#pragma_optimize">PRAGMA optimize</a> command
|
||
|
<li>The SQLite version identifier returned by the <a href="lang_corefunc.html#sqlite_source_id">sqlite_source_id()</a> SQL function
|
||
|
and the <a href="c3ref/libversion.html">sqlite3_sourceid()</a> C API and found in the <a href="c3ref/c_source_id.html">SQLITE_SOURCE_ID</a> macro is
|
||
|
now a 64-digit SHA3-256 hash instead of a 40-digit SHA1 hash.
|
||
|
<li>Added the <a href="json1.html#jpatch">json_patch()</a> SQL function to the <a href="json1.html">JSON1 extension</a>.
|
||
|
<li>Enhance the <a href="optoverview.html#like_opt">LIKE optimization</a> so that it works for arbitrary expressions on
|
||
|
the left-hand side as long as the LIKE pattern on the right-hand side does not
|
||
|
begin with a digit or minus sign.
|
||
|
<li>Added the <a href="c3ref/set_last_insert_rowid.html">sqlite3_set_last_insert_rowid()</a> interface and use the new interface in
|
||
|
the <a href="fts3.html">FTS3</a>, <a href="fts3.html#fts4">FTS4</a>, and <a href="fts5.html">FTS5</a> extensions to ensure that the <a href="c3ref/last_insert_rowid.html">sqlite3_last_insert_rowid()</a>
|
||
|
interface always returns reasonable values.
|
||
|
<li>Enhance <a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a> and <a href="pragma.html#pragma_quick_check">PRAGMA quick_check</a> so that they verify
|
||
|
<a href="lang_createtable.html#ckconst">CHECK constraints</a>.
|
||
|
<li>Enhance the query plans for joins to detect empty tables early and
|
||
|
halt without doing unnecessary work.
|
||
|
<li>Enhance the <a href="c3ref/mprintf.html">sqlite3_mprintf()</a> family of interfaces and the <a href="lang_corefunc.html#printf">printf SQL function</a>
|
||
|
to put comma separators at the thousands marks for integers, if the "," format modifier
|
||
|
is used in between the "%" and the "d" (example: "%,d").
|
||
|
<li>Added the -D<a href="compile.html#max_memory">SQLITE_MAX_MEMORY</a>=<i>N</i> compile-time option.
|
||
|
<li>Added the <a href="cli.html#sha3sum">.sha3sum dot-command</a> and the <a href="cli.html#selftest">.selftest dot-command</a>
|
||
|
to the <a href="cli.html">command-line shell</a>
|
||
|
<li>Begin enforcing <a href="c3ref/c_limit_attached.html#sqlitelimitvdbeop">SQLITE_LIMIT_VDBE_OP</a>. This can be used, for example, to prevent
|
||
|
excessively large prepared statements in systems that accept SQL queries from
|
||
|
untrusted users.
|
||
|
<li>Various performance improvements.
|
||
|
<p><b>Bug Fixes:</b>
|
||
|
<li>Ensure that indexed expressions with collating sequences are handled correctly.
|
||
|
Fix for ticket <a href="https://www.sqlite.org/src/info/eb703ba7b50c1a5">eb703ba7b50c1a5</a>.
|
||
|
<li>Fix a bug in the 'start of ...' modifiers for the <a href="lang_datefunc.html">date and time functions</a>.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/6097cb92745327a1">6097cb92745327a1</a>
|
||
|
<li>Fix a potential segfault in complex recursive triggers, resulting from a
|
||
|
bug in the OP_Once opcode introduced as part of a performance optimization in
|
||
|
version 3.15.0.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/06796225f59c057c">06796225f59c057c</a>
|
||
|
<li>In the <a href="rbu.html">RBU extension</a>, add extra sync operations to avoid the possibility of
|
||
|
corruption following a power failure.
|
||
|
<li>The <a href="c3ref/trace_v2.html">sqlite3_trace_v2()</a> output for nested SQL statements should always begin
|
||
|
with a "--" comment marker.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2017-03-28 18:48:43 424a0d380332858ee55bdebc4af3789f74e70a2b3ba1cf29d84b9b4bcf3e2e37"
|
||
|
<li>SHA3-256 for sqlite3.c: cbf322df1f76be57fb3be84f3da1fc71d1d3dfdb7e7c2757fb0ff630b3bc2e5d
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_17_0"></a>
|
||
|
<h3>2017-02-13 (3.17.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Approximately 25% better performance from the <a href="rtree.html">R-Tree extension</a>.
|
||
|
<ol type='a'>
|
||
|
<li> Uses compiler built-ins (ex: __builtin_bswap32() or _byteswap_ulong())
|
||
|
for byteswapping when available.
|
||
|
<li> Uses the <a href="c3ref/blob.html">sqlite3_blob</a> key/value access object instead of SQL
|
||
|
for pulling content out of R-Tree nodes
|
||
|
<li> Other miscellaneous enhancements such as loop unrolling.
|
||
|
</ol>
|
||
|
<li>Add the <a href="compile.html#default_lookaside">SQLITE_DEFAULT_LOOKASIDE</a> compile-time option.
|
||
|
<li>Increase the default <a href="malloc.html#lookaside">lookaside</a>
|
||
|
size from 512,125 to 1200,100
|
||
|
as this provides better performance while only adding 56KB
|
||
|
of extra memory per connection. Memory-sensitive
|
||
|
applications can restore the old
|
||
|
default at compile-time, start-time, or run-time.
|
||
|
<li>Use compiler built-ins __builtin_sub_overflow(), __builtin_add_overflow(),
|
||
|
and __builtin_mul_overflow() when available. (All compiler
|
||
|
built-ins can be omitted with the <a href="compile.html#disable_intrinsic">SQLITE_DISABLE_INTRINSIC</a> compile-time
|
||
|
option.)
|
||
|
<li>Added the <a href="compile.html#enable_null_trim">SQLITE_ENABLE_NULL_TRIM</a> compile-time option, which
|
||
|
can result in significantly smaller database files for some
|
||
|
applications, at the risk of being incompatible with older
|
||
|
versions of SQLite.
|
||
|
<li>Change <a href="compile.html#default_pcache_initsz">SQLITE_DEFAULT_PCACHE_INITSZ</a> from 100 to 20, for
|
||
|
improved performance.
|
||
|
<li>Added the SQLITE_UINT64_TYPE compile-time option as an
|
||
|
analog to SQLITE_INT64_TYPE.
|
||
|
<li>Perform some <a href="lang_update.html">UPDATE</a> operations in a single pass instead of
|
||
|
in two passes.
|
||
|
<li>Enhance the <a href="sessionintro.html">session extension</a> to support <a href="withoutrowid.html">WITHOUT ROWID</a>
|
||
|
tables.
|
||
|
<li>Fixed performance problems and potential stack overflows
|
||
|
when creating <a href="lang_createview.html">views</a> from multi-row VALUES clauses with
|
||
|
hundreds of thousands of rows.
|
||
|
<li>Added the <a href="https://www.sqlite.org/src/file/ext/misc/sha1.c">sha1.c</a>
|
||
|
extension.
|
||
|
<li>In the <a href="cli.html">command-line shell</a>, enhance the ".mode" command so that it
|
||
|
restores the default column and row separators for modes "line",
|
||
|
"list", "column", and "tcl".
|
||
|
<li>Enhance the <a href="compile.html#direct_overflow_read">SQLITE_DIRECT_OVERFLOW_READ</a> option so that it works
|
||
|
in <a href="wal.html">WAL mode</a> as long as the pages being read are not in the WAL file.
|
||
|
<li>Enhance the
|
||
|
<a href="lemon.html">Lemon parser generator</a>
|
||
|
so that it can store the parser object as a stack variable rather than
|
||
|
allocating space from the heap and make use of that enhancement in
|
||
|
the <a href="amalgamation.html">amalgamation</a>.
|
||
|
<li>Other performance improvements. Uses about <a href="cpu.html">6.5% fewer CPU cycles</a>.
|
||
|
<p><b>Bug Fixes:</b>
|
||
|
<li>Throw an error if the ON clause of a LEFT JOIN references tables
|
||
|
to the right of the ON clause. This is the same behavior as
|
||
|
PostgreSQL. Formerly, SQLite silently converted the LEFT JOIN
|
||
|
into an INNER JOIN. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/25e335f802dd">25e335f802dd</a>.
|
||
|
<li>Use the correct affinity for columns of automatic indexes. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/7ffd1ca1d2ad4ec">7ffd1ca1d2ad4ec</a>.
|
||
|
<li>Ensure that the <a href="c3ref/blob_reopen.html">sqlite3_blob_reopen()</a> interface can correctly
|
||
|
handle short rows. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/e6e962d6b0f06f46e">e6e962d6b0f06f46e</a>.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2017-02-13 16:02:40 ada05cfa86ad7f5645450ac7a2a21c9aa6e57d2c"
|
||
|
<li>SHA1 for sqlite3.c: cc7d708bb073c44102a59ed63ce6142da1f174d1
|
||
|
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_16_2"></a>
|
||
|
<h3>2017-01-06 (3.16.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix the <a href="lang_replace.html">REPLACE</a> statement for
|
||
|
<a href="withoutrowid.html">WITHOUT ROWID</a> tables that lack secondary indexes so that
|
||
|
it works correctly with triggers and foreign keys. This was a new bug
|
||
|
caused by performance optimizations added in version 3.16.0.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/30027b613b4">30027b613b4</a>
|
||
|
<li>Fix the <a href="c3ref/value_blob.html">sqlite3_value_text()</a> interface so that it correctly
|
||
|
translates content generated by <a href="lang_corefunc.html#zeroblob">zeroblob()</a> into a string of all
|
||
|
0x00 characters. This is a long-standing issue discovered after the
|
||
|
3.16.1 release by <a href="https://github.com/google/oss-fuzz">OSS-Fuzz</a>
|
||
|
<li>Fix the bytecode generator to deal with a subquery in the FROM clause
|
||
|
that is itself a UNION ALL where one side of the UNION ALL is a view
|
||
|
that contains an ORDER BY. This is a long-standing issue that was
|
||
|
discovered after the release of 3.16.1. See ticket
|
||
|
<a href="https://www.sqlite.org/src/info/190c2507">190c2507</a>.
|
||
|
<li>Adjust the <a href="c3ref/column_count.html">sqlite3_column_count()</a> API so it more often returns the same
|
||
|
values for <a href="pragma.html#syntax">PRAGMA</a> statements as it did in prior releases, to
|
||
|
minimize disruption to applications that might be using that
|
||
|
interface in unexpected ways.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2017-01-06 16:32:41 a65a62893ca8319e89e48b8a38cf8a59c69a8209"
|
||
|
<li>SHA1 for sqlite3.c: 2bebdc3f24911c0d12b6d6c0123c3f84d6946b08
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_16_1"></a>
|
||
|
<h3>2017-01-03 (3.16.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug concerning the use of <a href="rowvalue.html">row values</a> within <a href="lang_createtrigger.html">triggers</a>
|
||
|
(see ticket <a href="https://www.sqlite.org/src/info/8c9458e7">8c9458e7</a>)
|
||
|
that was in version 3.15.0 but was not reported until moments after the 3.16.0
|
||
|
release was published.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2017-01-03 18:27:03 979f04392853b8053817a3eea2fc679947b437fd"
|
||
|
<li>SHA1 for sqlite3.c: 354f6223490b30fd5320b4066b1535e4ce33988d
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_16_0"></a>
|
||
|
<h3>2017-01-02 (3.16.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Uses 9% fewer CPU cycles. (See the <a href="cpu.html">CPU performance measurement</a> report for
|
||
|
details on how this performance increase was computed.)
|
||
|
<li>Added experimental support for <a href="pragma.html#pragfunc">PRAGMA functions</a>.
|
||
|
<li>Added the <a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfignockptonclose">SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE</a> option to <a href="c3ref/db_config.html">sqlite3_db_config()</a>.
|
||
|
<li>Enhance the <a href="lang_datefunc.html">date and time functions</a> so that the 'unixepoch' modifier works
|
||
|
for the full span of supported dates.
|
||
|
<li>Changed the default configuration of the <a href="malloc.html#lookaside">lookaside memory allocator</a> from
|
||
|
500 slots of 128 bytes each into 125 slots of 512 bytes each.
|
||
|
<li>Enhanced "WHERE x NOT NULL" <a href="partialindex.html">partial indexes</a> so that they are usable if
|
||
|
the "x" column appears in a LIKE or GLOB operator.
|
||
|
<li>Enhanced <a href="c3ref/interrupt.html">sqlite3_interrupt()</a> so that it interrupts <a href="wal.html#ckpt">checkpoint</a> operations that
|
||
|
are in process.
|
||
|
<li>Enhanced the <a href="lang_expr.html#like">LIKE</a> and <a href="lang_expr.html#glob">GLOB</a> matching algorithm to be faster
|
||
|
for cases when the pattern contains multiple wildcards.
|
||
|
<li>Added the <a href="c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlwin32gethandle">SQLITE_FCNTL_WIN32_GET_HANDLE</a> file control opcode.
|
||
|
<li>Added ".mode quote" to the <a href="cli.html">command-line shell</a>.
|
||
|
<li>Added ".lint fkey-indexes" to the <a href="cli.html">command-line shell</a>.
|
||
|
<li>Added the <a href="imposter.html#dotimposter">.imposter dot-command</a> to the <a href="cli.html">command-line shell</a>.
|
||
|
<li>Added the <a href="https://www.sqlite.org/src/file/ext/misc/remember.c">remember(V,PTR)</a>
|
||
|
SQL function as a <a href="loadext.html">loadable extension</a>.
|
||
|
<li>Rename the <a href="compile.html#omit_builtin_test">SQLITE_OMIT_BUILTIN_TEST</a> compile-time option to
|
||
|
<a href="compile.html#untestable">SQLITE_UNTESTABLE</a> to better reflect the implications of using it.
|
||
|
<p><b>Bug Fixes:</b>
|
||
|
<li>Fix a long-standing bug in the query planner that caused incorrect results
|
||
|
on a LEFT JOIN where the left-hand table is a subquery and the join constraint
|
||
|
is a bare column name coming from the left-hand subquery. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/2df0107b">2df0107b</a>.
|
||
|
<li>Correctly handle the integer literal -0x8000000000000000 in the query planner.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2017-01-02 11:57:58 04ac0b75b1716541b2b97704f4809cb7ef19cccf"
|
||
|
<li>SHA1 for sqlite3.c: e2920fb885569d14197c9b7958e6f1db573ee669
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_15_2"></a>
|
||
|
<h3>2016-11-28 (3.15.2)</h3><p><ol class='lessindent'>
|
||
|
<li> Multiple bug fixes to the <a href="rowvalue.html">row value</a> logic that was introduced in version 3.15.0.
|
||
|
<li> Fix a NULL pointer dereference in ATTACH/DETACH following a maliciously constructed
|
||
|
syntax error. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/2f1b168ab4d4844">2f1b168ab4d4844</a>.
|
||
|
<li> Fix a crash that can occur following an out-of-memory condition
|
||
|
in the built-in <a href="lang_corefunc.html#instr">instr()</a> function.
|
||
|
<li> In the <a href="json1.html">JSON extension</a>, fix the JSON validator so that it correctly rejects
|
||
|
invalid backslash escapes within strings.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2016-11-28 19:13:37 bbd85d235f7037c6a033a9690534391ffeacecc8"
|
||
|
<li>SHA1 for sqlite3.c: 06d77b42a3e70609f8d4bbb97caf53652f1082cb
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_15_1"></a>
|
||
|
<h3>2016-11-04 (3.15.1)</h3><p><ol class='lessindent'>
|
||
|
<li> Added <a href="c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlwin32gethandle">SQLITE_FCNTL_WIN32_GET_HANDLE</a> file control opcode.
|
||
|
<li> Fix the <a href="lang_vacuum.html">VACUUM</a> command so that it spills excess content to disk rather
|
||
|
than holding everything in memory, and possible causing an out-of-memory
|
||
|
error for larger database files. This fixes an issue introduced by
|
||
|
version 3.15.0.
|
||
|
<li> Fix a case (present since 3.8.0 - 2013-08-26)
|
||
|
where OR-connected terms in the ON clause of a LEFT JOIN
|
||
|
might cause incorrect results. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/34a579141b2c5ac">34a579141b2c5ac</a>.
|
||
|
<li> Fix a case where the use of <a href="rowvalue.html">row values</a> in the ON clause of a LEFT JOIN
|
||
|
might cause incorrect results. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/fef4bb4bd9185ec8f">fef4bb4bd9185ec8f</a>.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2016-11-04 12:08:49 1136863c76576110e710dd5d69ab6bf347c65e36"
|
||
|
<li>SHA1 for sqlite3.c: e7c26a7be3e431dd06898f8d262c4ef240c07366
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_15_0"></a>
|
||
|
<h3>2016-10-14 (3.15.0)</h3><p><ol class='lessindent'>
|
||
|
<li> Added support for <a href="rowvalue.html">row values</a>.
|
||
|
<li> Allow <a href="deterministic.html">deterministic SQL functions</a> in the WHERE clause of a <a href="partialindex.html">partial index</a>.
|
||
|
<li> Added the "<a href="uri.html#urimodeof">modeof=<i>filename</i></a>" URI parameter on the unix VFS
|
||
|
<li> Added support for <a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfigmaindbname">SQLITE_DBCONFIG_MAINDBNAME</a>.
|
||
|
<li> Added the ability to <a href="lang_vacuum.html">VACUUM</a> an <a href="lang_attach.html">ATTACH-ed</a> database.
|
||
|
<li> Enhancements to the <a href="cli.html">command-line shell</a>:
|
||
|
<ol type='a'>
|
||
|
<li> Add the ".testcase" and ".check" <a href="cli.html#dotcmd">dot-commands</a>.
|
||
|
<li> Added the --new option to the ".open" dot-command, causing
|
||
|
any prior content in the database to be purged prior to
|
||
|
opening.
|
||
|
</ol>
|
||
|
<li> Enhance the <a href="fts5.html#the_fts5vocab_virtual_table_module">fts5vocab</a> virtual table to handle "ORDER BY term" efficiently.
|
||
|
<li> Miscellaneous micro-optimizations reduce CPU usage by more than 7%
|
||
|
on common workloads. Most optimization in this release has been on the
|
||
|
front-end (<a href="c3ref/prepare.html">sqlite3_prepare_v2()</a>).
|
||
|
<p><b>Bug Fixes:</b>
|
||
|
<li> The multiply operator now correctly detects 64-bit integer overflow
|
||
|
and promotes to floating point in all corner-cases. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/1ec41379c9c1e400">1ec41379c9c1e400</a>.
|
||
|
<li> Correct handling of columns with redundant unique indexes when those
|
||
|
columns are used on the LHS of an <a href="lang_expr.html#in_op">IN operator</a>. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/0eab1ac759">0eab1ac759</a>.
|
||
|
<li> Skip NULL entries on range queries in <a href="expridx.html">indexes on expressions</a>.
|
||
|
Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/tktview/4baa46491212947">4baa46491212947</a>.
|
||
|
<li> Ensure that the <a href="autoinc.html">AUTOINCREMENT</a> counters in the sqlite_sequence
|
||
|
table are initialized doing "Xfer Optimization" on "INSERT ... SELECT"
|
||
|
statements. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/7b3328086a5c116c">7b3328086a5c116c</a>.
|
||
|
<li> Make sure the ORDER BY LIMIT optimization
|
||
|
(from check-in <a href="https://www.sqlite.org/src/info/559733b09e9630fa">559733b09e</a>)
|
||
|
works with IN operators on INTEGER PRIMARY KEYs. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/96c1454cbfd9509">96c1454c</a>
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2016-10-14 10:20:30 707875582fcba352b4906a595ad89198d84711d8"
|
||
|
<li>SHA1 for sqlite3.c: fba106f8f6493c66eeed08a2dfff0907de54ae76
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_14_2"></a>
|
||
|
<h3>2016-09-12 (3.14.2)</h3><p><ol class='lessindent'>
|
||
|
<li> Improved support for using the STDCALL calling convention in winsqlite3.dll.
|
||
|
<li> Fix the <a href="c3ref/trace_v2.html">sqlite3_trace_v2()</a> interface so that it is disabled if either the
|
||
|
callback or the mask arguments are zero, in accordance with the documentation.
|
||
|
<li> Fix commenting errors and improve the comments generated on <a href="lang_explain.html">EXPLAIN</a> listings
|
||
|
when the <a href="compile.html#enable_explain_comments">-DSQLITE_ENABLE_EXPLAIN_COMMENTS</a> compile-time option is used.
|
||
|
<li> Fix the ".read" command in the <a href="cli.html">command-line shell</a> so that it understands
|
||
|
that its input is not interactive.
|
||
|
<li> Correct affinity computations for a SELECT on the RHS of an IN operator.
|
||
|
Fix for ticket <a href="https://sqlite.org/src/info/199df4168c">199df4168c</a>.
|
||
|
<li> The ORDER BY LIMIT optimization is not valid unless the inner-most IN operator
|
||
|
loop is actually used by the query plan. Fix for
|
||
|
ticket <a href="https://sqlite.org/src/info/0c4df46116e90f92">0c4df46116e90f92</a>.
|
||
|
<li> Fix an internal code generator problem that was causing some <a href="lang_delete.html">DELETE</a> operations
|
||
|
to no-op. Ticket <a href="https://sqlite.org/src/info/ef360601">ef360601</a>
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2016-09-12 18:50:49 29dbef4b8585f753861a36d6dd102ca634197bd6"
|
||
|
<li>SHA1 for sqlite3.c: bcc4a1989db45e7f223191f2d0f66c1c28946383
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_14_1"></a>
|
||
|
<h3>2016-08-11 (3.14.1)</h3><p><ol class='lessindent'>
|
||
|
<li>A performance enhancement to the page-cache "truncate" operation
|
||
|
reduces <a href="lang_transaction.html">COMMIT</a> time by dozens of milliseconds on systems with a
|
||
|
large <a href="pragma.html#pragma_cache_size">page cache</a>.
|
||
|
<li>Fix to the --rbu option of <a href="sqldiff.html">sqldiff</a>.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2016-08-11 18:53:32 a12d8059770df4bca59e321c266410344242bf7b"
|
||
|
<li>SHA1 for sqlite3.c: d545b24892278272ce4e40e0567d69c8babf12ea
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_14"></a>
|
||
|
<h3>2016-08-08 (3.14)</h3><p><ol class='lessindent'>
|
||
|
<div style="width:280px;float:right;padding:10px;margin:0px 10px;">
|
||
|
<img src='images/sqlitepie.jpg' width=280 height=250></img><br>
|
||
|
<center>Celebrating the SQLite "<big>π</big> release"
|
||
|
with a home-baked pie.</center>
|
||
|
</div>
|
||
|
<li>Added support for <a href="vtab.html#worid">WITHOUT ROWID virtual tables</a>.
|
||
|
<li>Improved the query planner so that the <a href="optoverview.html#or_opt">OR optimization</a> can
|
||
|
be used on <a href="vtab.html">virtual tables</a> even if one or more of the disjuncts
|
||
|
use the <a href="lang_expr.html#like">LIKE</a>, <a href="lang_expr.html#glob">GLOB</a>, <a href="lang_expr.html#regexp">REGEXP</a>, <a href="lang_expr.html#match">MATCH</a> operators.
|
||
|
<li>Added the <a href="csv.html">CSV virtual table</a> for reading
|
||
|
<a href="https://www.ietf.org/rfc/rfc4180.txt">RFC 4180</a> formatted comma-separated
|
||
|
value files.
|
||
|
<li>Added the <a href="carray.html">carray() table-valued function</a> extension.
|
||
|
<li>Enabled <a href="loadext.html#persist">persistent loadable extensions</a> using the new
|
||
|
<a href="rescode.html#ok_load_permanently">SQLITE_OK_LOAD_PERMANENTLY</a> return code from the extension
|
||
|
entry point.
|
||
|
<li>Added the <a href="c3ref/c_dbstatus_options.html#sqlitedbstatuscacheusedshared">SQLITE_DBSTATUS_CACHE_USED_SHARED</a> option to <a href="c3ref/db_status.html">sqlite3_db_status()</a>.
|
||
|
<li>Add the
|
||
|
<a href="https://www.sqlite.org/src/artifact?ci=trunk&filename=ext/misc/vfsstat.c">vfsstat.c</a>
|
||
|
loadable extension - a VFS shim that measures I/O
|
||
|
together with an <a href="vtab.html#epovtab">eponymous virtual table</a> that provides access to the measurements.
|
||
|
<li>Improved algorithm for running queries with both an ORDER BY and a LIMIT where
|
||
|
only the inner-most loop naturally generates rows in the correct order.
|
||
|
<li>Enhancements to <a href="lemon.html">Lemon parser generator</a>, so that it generates a
|
||
|
faster parser.
|
||
|
<li>The <a href="pragma.html#pragma_compile_options">PRAGMA compile_options</a> command now attempts to show the version number
|
||
|
of the compiler that generated the library.
|
||
|
<li>Enhance <a href="pragma.html#pragma_table_info">PRAGMA table_info</a> so that it provides information about
|
||
|
<a href="vtab.html#epovtab">eponymous virtual tables</a>.
|
||
|
<li>Added the "win32-none" VFS, analogous to the "unix-none" VFS, that works like
|
||
|
the default "win32" VFS except that it ignores all file locks.
|
||
|
<li>The query planner uses a full scan of a <a href="partialindex.html">partial index</a> instead of a
|
||
|
full scan of the main table, in cases where that makes sense.
|
||
|
<li>Allow <a href="vtab.html#tabfunc2">table-valued functions</a> to appear on the right-hand side of an <a href="lang_expr.html#in_op">IN operator</a>.
|
||
|
<li>Created the <a href="dbhash.html">dbhash.exe</a> command-line utility.
|
||
|
<li>Added two new C-language interfaces: <a href="c3ref/expanded_sql.html">sqlite3_expanded_sql()</a> and
|
||
|
<a href="c3ref/trace_v2.html">sqlite3_trace_v2()</a>. These new interfaces subsume the functions of
|
||
|
<a href="c3ref/profile.html">sqlite3_trace()</a> and <a href="c3ref/profile.html">sqlite3_profile()</a> which are now deprecated.
|
||
|
<li>Added the <a href="json1.html#jquote">json_quote()</a> SQL function to <a href="json1.html">the json1 extension</a>.
|
||
|
<li>Disable the <a href="c3ref/set_authorizer.html">authorizer callback</a> while reparsing the schema.
|
||
|
<li>Added the <a href="compile.html#enable_unknown_sql_function">SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION</a> compile-time option and turned that
|
||
|
option on by default when building the <a href="cli.html">command-line shell</a>.
|
||
|
<p><b>Bug Fixes:</b>
|
||
|
<li>Fix the <a href="lang_altertable.html">ALTER TABLE</a> command so that it does not corrupt <a href="lang_createindex.html#descidx">descending indexes</a>
|
||
|
when adding a column to a <a href="pragma.html#pragma_legacy_file_format">legacy file format</a> database. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/f68bf68513a1c15f">f68bf68513a1c15f</a>
|
||
|
<li>Fix a NULL-pointer dereference/crash that could occurs when a transitive WHERE
|
||
|
clause references a non-existent collating sequence. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/e8d439c77685eca6">e8d439c77685eca6</a>.
|
||
|
<li>Improved the cost estimation for an index scan which includes a WHERE clause
|
||
|
that can be partially or fully evaluated using columns in the index and without
|
||
|
having to do a table lookup. This fixes a performance regression that occurred
|
||
|
for some obscure queries following the ORDER BY LIMIT optimization introduced
|
||
|
in <a href="#version_3_12_0">version 3.12.0</a>.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2016-08-08 13:40:27 d5e98057028abcf7217d0d2b2e29bbbcdf09d6de"
|
||
|
<li>SHA1 for sqlite3.c: 234a3275d03a287434ace3ccdf1afb208e6b0e92
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_13_0"></a>
|
||
|
<h3>2016-05-18 (3.13.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Postpone I/O associated with TEMP files for as long as possible, with the hope
|
||
|
that the I/O can ultimately be avoided completely.
|
||
|
<li>Merged the <a href="sessionintro.html">session</a> extension into trunk.
|
||
|
<li>Added the ".auth ON|OFF" command to the <a href="cli.html">command-line shell</a>.
|
||
|
<li>Added the "--indent" option to the ".schema" and ".fullschema" commands of
|
||
|
the <a href="cli.html">command-line shell</a>, to turn on pretty-printing.
|
||
|
<li>Added the ".eqp full" option to the <a href="cli.html">command-line shell</a>, that does both <a href="lang_explain.html">EXPLAIN</a>
|
||
|
and <a href="eqp.html">EXPLAIN QUERY PLAN</a> on each statement that is evaluated.
|
||
|
<li>Improved unicode filename handling in the <a href="cli.html">command-line shell</a> on Windows.
|
||
|
<li>Improved resistance against goofy query planner decisions caused by
|
||
|
incomplete or incorrect modifications to the <a href="fileformat2.html#stat1tab">sqlite_stat1</a>
|
||
|
table by the application.
|
||
|
<li>Added the <a href="c3ref/db_config.html">sqlite3_db_config</a>(db,<a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfigenableloadextension">SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION</a>) interface
|
||
|
which allows the <a href="c3ref/load_extension.html">sqlite3_load_extension()</a> C-API to be enabled while keeping the
|
||
|
<a href="lang_corefunc.html#load_extension">load_extension()</a> SQL function disabled for security.
|
||
|
<li>Change the <a href="tempfiles.html#tempdir">temporary directory search algorithm</a> on Unix to allow directories with
|
||
|
write and execute permission, but without read permission, to serve as temporary
|
||
|
directories. Apply this same standard to the "." fallback directory.
|
||
|
<p><b>Bug Fixes:</b>
|
||
|
<li>Fix a problem with the multi-row one-pass DELETE optimization that was
|
||
|
causing it to compute incorrect answers with a self-referential subquery in
|
||
|
the WHERE clause. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/dc6ebeda9396087">dc6ebeda9396087</a>
|
||
|
<li>Fix a possible segfault with DELETE when table is a <a href="rowidtable.html">rowid table</a> with an
|
||
|
<a href="lang_createtable.html#rowid">INTEGER PRIMARY KEY</a> and the WHERE clause contains a OR and
|
||
|
the table has one or more indexes that are able to trigger the OR optimization,
|
||
|
but none of the indexes reference any table columns other than the INTEGER PRIMARY KEY.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/16c9801ceba49">16c9801ceba49</a>.
|
||
|
<li>When checking for the WHERE-clause push-down optimization, verify that all terms
|
||
|
of the compound inner SELECT are non-aggregate, not just the last term. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/f7f8c97e97597">f7f8c97e97597</a>.
|
||
|
<li>Fix a locking race condition in Windows that can occur when two or more processes
|
||
|
attempt to recover the same <a href="fileformat2.html#hotjrnl">hot journal</a> at the same time.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2016-05-18 10:57:30 fc49f556e48970561d7ab6a2f24fdd7d9eb81ff2"
|
||
|
<li>SHA1 for sqlite3.c: 9b9171b1e6ce7a980e6b714e9c0d9112657ad552
|
||
|
|
||
|
<p><b>Bug fixes backported into patch release 3.12.2 (2016-04-18):</b></p>
|
||
|
|
||
|
<li>Fix a backwards compatibility problem in version 3.12.0 and 3.12.1:
|
||
|
Columns declared as <tt>"INTEGER" PRIMARY KEY</tt> (with quotes around
|
||
|
the datatype keyword) were not being recognized as an
|
||
|
<a href="lang_createtable.html#rowid">INTEGER PRIMARY KEY</a>, which resulted in an incompatible database file.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/7d7525cb01b68">7d7525cb01b68</a>
|
||
|
<li>Fix a bug (present since <a href="#version_3_9_0">version 3.9.0</a>) that can cause the <a href="lang_delete.html">DELETE</a>
|
||
|
operation to miss rows if <a href="pragma.html#pragma_reverse_unordered_selects">PRAGMA reverse_unordered_selects</a> is turned on.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/a306e56ff68b8fa5">a306e56ff68b8fa5</a>
|
||
|
<li>Fix a bug in the code generator that can cause incorrect results if
|
||
|
two or more <a href="vtab.html">virtual tables</a> are joined and the virtual table used in
|
||
|
outer loop of the join has an <a href="lang_expr.html#in_op">IN operator</a> constraint.
|
||
|
<li>Correctly interpret negative "PRAGMA cache_size" values when determining
|
||
|
the cache size used for sorting large amounts of data.
|
||
|
|
||
|
<p><b>Bug fixes backported into patch release 3.12.1 (2016-04-08):</b></p>
|
||
|
|
||
|
<li>Fix a boundary condition error introduced by version 3.12.0
|
||
|
that can result in a crash during heavy <a href="lang_savepoint.html">SAVEPOINT</a> usage.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/7f7f8026eda38">7f7f8026eda38</a>.
|
||
|
<li>Fix <a href="lang_createview.html">views</a> so that they inherit column datatypes from the
|
||
|
table that they are defined against, when possible.
|
||
|
<li>Fix the query planner so that IS and IS NULL operators are able
|
||
|
to drive an index on a LEFT OUTER JOIN.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_12_2"></a>
|
||
|
<h3>2016-04-18 (3.12.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a backwards compatibility problem in version 3.12.0 and 3.12.1:
|
||
|
Columns declared as <tt>"INTEGER" PRIMARY KEY</tt> (with quotes around
|
||
|
the datatype keyword) were not being recognized as an
|
||
|
<a href="lang_createtable.html#rowid">INTEGER PRIMARY KEY</a>, which resulted in an incompatible database file.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/7d7525cb01b68">7d7525cb01b68</a>
|
||
|
<li>Fix a bug (present since <a href="#version_3_9_0">version 3.9.0</a>) that can cause the <a href="lang_delete.html">DELETE</a>
|
||
|
operation to miss rows if <a href="pragma.html#pragma_reverse_unordered_selects">PRAGMA reverse_unordered_selects</a> is turned on.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/a306e56ff68b8fa5">a306e56ff68b8fa5</a>
|
||
|
<li>Fix a bug in the code generator that can cause incorrect results if
|
||
|
two or more <a href="vtab.html">virtual tables</a> are joined and the virtual table used in
|
||
|
outer loop of the join has an <a href="lang_expr.html#in_op">IN operator</a> constraint.
|
||
|
<li>Correctly interpret negative "PRAGMA cache_size" values when determining
|
||
|
the cache size used for sorting large amounts of data.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2016-04-18 17:30:31 92dc59fd5ad66f646666042eb04195e3a61a9e8e"
|
||
|
<li>SHA1 for sqlite3.c: de5a5898ebd3a3477d4652db143746d008b24c83
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_12_1"></a>
|
||
|
<h3>2016-04-08 (3.12.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a boundary condition error introduced by version 3.12.0
|
||
|
that can result in a crash during heavy <a href="lang_savepoint.html">SAVEPOINT</a> usage.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/7f7f8026eda38">7f7f8026eda38</a>.
|
||
|
<li>Fix <a href="lang_createview.html">views</a> so that they inherit column datatypes from the
|
||
|
table that they are defined against, when possible.
|
||
|
<li>Fix the query planner so that IS and IS NULL operators are able
|
||
|
to drive an index on a LEFT OUTER JOIN.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2016-04-08 15:09:49 fe7d3b75fe1bde41511b323925af8ae1b910bc4d"
|
||
|
<li>SHA1 for sqlite3.c: ebb18593350779850e3e1a930eb84a70fca8c1d1
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_9_3"></a>
|
||
|
<h3>2016-04-01 (3.9.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Backport a
|
||
|
<a href="https://www.sqlite.org/src/info/c648539b52ca28c0">simple query planner optimization</a>
|
||
|
that allows the IS operator
|
||
|
to drive an index on a LEFT OUTER JOIN. No other changes from the
|
||
|
<a href="#version_3_9_2">version 3.9.2</a> baseline.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_12_0"></a>
|
||
|
<h3>2016-03-29 (3.12.0)</h3><p><ol class='lessindent'>
|
||
|
<p><b>Potentially Disruptive Change:</b>
|
||
|
<li>The <a href="compile.html#default_page_size">SQLITE_DEFAULT_PAGE_SIZE</a> is increased from 1024 to 4096.
|
||
|
The <a href="compile.html#default_cache_size">SQLITE_DEFAULT_CACHE_SIZE</a> is changed from 2000 to -2000 so
|
||
|
the same amount of cache memory is used by default.
|
||
|
See the application note on the
|
||
|
<a href="pgszchng2016.html">version 3.12.0 page size change</a> for further information.
|
||
|
<p><b>Performance enhancements:</b>
|
||
|
<li>Enhancements to the <a href="lemon.html">Lemon parser generator</a>
|
||
|
so that it creates a smaller and faster SQL parser.
|
||
|
<li>Only create <font color="red">master journal</font> files if two or more attached databases are all
|
||
|
modified, do not have <a href="pragma.html#pragma_synchronous">PRAGMA synchronous</a> set to OFF, and
|
||
|
do not have the <a href="pragma.html#pragma_journal_mode">journal_mode</a> set to OFF, MEMORY, or WAL.
|
||
|
<li>Only create <a href="tempfiles.html#stmtjrnl">statement journal</a> files when their size exceeds a threshold.
|
||
|
Otherwise the journal is held in memory and no I/O occurs. The threshold
|
||
|
can be configured at compile-time using <a href="compile.html#stmtjrnl_spill">SQLITE_STMTJRNL_SPILL</a> or at
|
||
|
start-time using <a href="c3ref/config.html">sqlite3_config</a>(<a href="c3ref/c_config_covering_index_scan.html#sqliteconfigstmtjrnlspill">SQLITE_CONFIG_STMTJRNL_SPILL</a>).
|
||
|
<li>The query planner is able to optimize IN operators on <a href="vtab.html">virtual tables</a>
|
||
|
even if the <a href="vtab.html#xbestindex">xBestIndex</a> method does not set the
|
||
|
sqlite3_index_constraint_usage.omit flag of the
|
||
|
virtual table column to the left of the IN operator.
|
||
|
<li>The query planner now does a better job of optimizing <a href="vtab.html">virtual table</a>
|
||
|
accesses in a 3-way or higher join where constraints on the virtual
|
||
|
table are split across two or more other tables of the join.
|
||
|
<li>More efficient handling of <a href="appfunc.html">application-defined SQL functions</a>, especially
|
||
|
in cases where the application defines hundreds or thousands of
|
||
|
custom functions.
|
||
|
<li>The query planner considers the LIMIT clause when estimating the cost
|
||
|
of ORDER BY.
|
||
|
<li>The configure script (on unix) automatically detects
|
||
|
pread() and pwrite() and sets compile-time options to use those OS
|
||
|
interfaces if they are available.
|
||
|
<li>Reduce the amount of memory needed to hold the schema.
|
||
|
<li>Other miscellaneous micro-optimizations for improved performance and reduced
|
||
|
memory usage.
|
||
|
<p><b>New Features:</b>
|
||
|
<li>Added the <a href="c3ref/c_dbconfig_defensive.html#sqlitedbconfigenablefts3tokenizer">SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER</a> option to <a href="c3ref/db_config.html">sqlite3_db_config()</a>
|
||
|
which allows the two-argument version of the <a href="fts3.html#f3tknzr">fts3_tokenizer()</a> SQL function to
|
||
|
be enabled or disabled at run-time.
|
||
|
<li>Added the <a href="https://www.sqlite.org/src/artifact/d7cc99350?ln=403-443">sqlite3rbu_bp_progress()</a>
|
||
|
interface to the <a href="rbu.html">RBU</a> extension.
|
||
|
<li>The <a href="pragma.html#pragma_defer_foreign_keys">PRAGMA defer_foreign_keys=ON</a> statement now also disables
|
||
|
<a href="foreignkeys.html#fk_actions">RESTRICT actions</a> on foreign key.
|
||
|
<li>Added the <a href="c3ref/system_errno.html">sqlite3_system_errno()</a> interface.
|
||
|
<li>Added the <a href="compile.html#default_synchronous">SQLITE_DEFAULT_SYNCHRONOUS</a> and <a href="compile.html#default_wal_synchronous">SQLITE_DEFAULT_WAL_SYNCHRONOUS</a>
|
||
|
compile-time options. The <a href="compile.html#default_synchronous">SQLITE_DEFAULT_SYNCHRONOUS</a> compile-time option
|
||
|
replaces the <a href="compile.html#extra_durable">SQLITE_EXTRA_DURABLE</a> option, which is no longer supported.
|
||
|
<li>Enhanced the ".stats" command in the <a href="cli.html">command-line shell</a> to show more
|
||
|
information about I/O performance obtained from /proc, when available.
|
||
|
<p><b>Bug fixes:</b>
|
||
|
<li>Make sure the <a href="c3ref/get_auxdata.html">sqlite3_set_auxdata()</a> values from multiple triggers
|
||
|
within a single statement do not interfere with one another.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/dc9b1c91">dc9b1c91</a>.
|
||
|
<li>Fix the code generator for expressions of the form "x IN (SELECT...)" where
|
||
|
the SELECT statement on the RHS is a correlated subquery.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/5e3c886796e5512e">5e3c886796e5512e</a>.
|
||
|
<li>Fix a harmless TSAN warning associated with the <a href="c3ref/db_readonly.html">sqlite3_db_readonly()</a> interface.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2016-03-29 10:14:15 e9bb4cf40f4971974a74468ef922bdee481c988b"
|
||
|
<li>SHA1 for sqlite3.c: cba2be96d27cb51978cd4a200397a4ad178986eb
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_11_1"></a>
|
||
|
<h3>2016-03-03 (3.11.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Improvements to the Makefiles and build scripts used by VisualStudio.
|
||
|
<li>Fix an <a href="fts5.html">FTS5</a> issue in which the 'optimize' command could cause index corruption.
|
||
|
<li>Fix a buffer overread that might occur if <a href="fts5.html">FTS5</a> is used to query a corrupt
|
||
|
database file.
|
||
|
<li>Increase the maximum "scope" value for the <a href="spellfix1.html">spellfix1</a> extension from 6 to 30.
|
||
|
<li>SQLITE_SOURCE_ID: "2016-03-03 16:17:53 f047920ce16971e573bc6ec9a48b118c9de2b3a7"
|
||
|
<li>SHA1 for sqlite3.c: 3da832fd2af36eaedb05d61a8f4c2bb9f3d54265
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_11_0"></a>
|
||
|
<h3>2016-02-15 (3.11.0)</h3><p><ol class='lessindent'>
|
||
|
<p><b>General improvements:</b>
|
||
|
<li>Enhanced <a href="wal.html">WAL mode</a> so that it works efficiently with transactions that are
|
||
|
larger than the <a href="pragma.html#pragma_cache_size">cache_size</a>.
|
||
|
<li>Added the <a href="fts5.html#the_detail_option">FTS5 detail option</a>.
|
||
|
<li>Added the "EXTRA" option to <a href="pragma.html#pragma_synchronous">PRAGMA synchronous</a> that does a sync of the
|
||
|
containing directory when a rollback journal is unlinked in DELETE mode,
|
||
|
for better durability. The <a href="compile.html#extra_durable">SQLITE_EXTRA_DURABLE</a> compile-time option enables
|
||
|
<a href="pragma.html#pragma_synchronous">PRAGMA synchronous=EXTRA</a> by default.
|
||
|
<li>Enhanced the <a href="optoverview.html">query planner</a> so that it is able to use
|
||
|
a <a href="queryplanner.html#covidx">covering index</a> as part of the <a href="optoverview.html#or_opt">OR optimization</a>.
|
||
|
<li>Avoid recomputing <a href="lang_createtable.html#notnullconst">NOT NULL</a> and <a href="lang_createtable.html#ckconst">CHECK constraints</a> on unchanged
|
||
|
columns in <a href="lang_update.html">UPDATE</a> statement.
|
||
|
<li>Many micro-optimizations, resulting in a library that is
|
||
|
faster than the previous release.
|
||
|
<p><b>Enhancements to the <a href="cli.html">command-line shell</a>:</b>
|
||
|
<li>By default, the shell is now in "auto-explain" mode. The output of
|
||
|
<a href="lang_explain.html">EXPLAIN</a> commands is automatically formatted.
|
||
|
<li>Added the ".vfslist" <a href="cli.html#dotcmd">dot-command</a>.
|
||
|
<li>The <a href="compile.html#enable_explain_comments">SQLITE_ENABLE_EXPLAIN_COMMENTS</a> compile-time option is now turned
|
||
|
on by default in the standard builds.
|
||
|
<p><b>Enhancements to the <a href="tclsqlite.html">TCL Interface</a>:</b>
|
||
|
<li>If a database connection is opened with the "-uri 1" option, then
|
||
|
<a href="uri.html">URI filenames</a> are honored by the "backup" and "restore" commands.
|
||
|
<li>Added the "-sourceid" option to the "sqlite3" command.
|
||
|
<p><b>Makefile improvements:</b>
|
||
|
<li>Improved pthreads detection in configure scripts.
|
||
|
<li>Add the ability to do MSVC Windows builds from the <a href="download.html">amalgamation tarball</a>.
|
||
|
<p><b>Bug fixes</b>
|
||
|
<li>Fix an issue with incorrect sharing of VDBE temporary registers between
|
||
|
co-routines that could cause incorrect query results in obscure cases. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/d06a25c84454a">d06a25c84454a</a>.
|
||
|
<li>Fix a problem in the <a href="c3ref/result_subtype.html">sqlite3_result_subtype()</a> interface that could
|
||
|
cause problems for the <a href="json1.html">json1</a> extension under obscure circumstances.
|
||
|
Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/f45ac567eaa9f9">f45ac567eaa9f9</a>.
|
||
|
<li>Escape control characters in JSON strings. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/ad2559db380abf8">ad2559db380abf8</a>.
|
||
|
<li>Reenable the xCurrentTime and xGetLastError methods in the built-in
|
||
|
unix <a href="vfs.html">VFSes</a> as long as <a href="compile.html#omit_deprecated">SQLITE_OMIT_DEPRECATED</a> is not defined.
|
||
|
<p><b>Backwards Compatibility:</b>
|
||
|
<li>Because of continuing security concerns, the two-argument version of
|
||
|
of the seldom-used and little-known <a href="fts3.html#f3tknzr">fts3_tokenizer()</a> function is
|
||
|
disabled unless SQLite is compiled with the <a href="compile.html#enable_fts3_tokenizer">SQLITE_ENABLE_FTS3_TOKENIZER</a>.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2016-02-15 17:29:24 3d862f207e3adc00f78066799ac5a8c282430a5f"
|
||
|
<li>SHA1 for sqlite3.c: df01436c5fcfe72d1a95bc172158219796e1a90b
|
||
|
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_10_2"></a>
|
||
|
<h3>2016-01-20 (3.10.2)</h3><p><ol class='lessindent'>
|
||
|
<p><b>Critical bug fix:</b>
|
||
|
<li>Version 3.10.0 introduced a case-folding bug in the <a href="lang_expr.html#like">LIKE</a> operator which is fixed
|
||
|
by this patch release. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/80369eddd5c94">80369eddd5c94</a>.
|
||
|
<p><b>Other miscellaneous bug fixes:</b>
|
||
|
<li>Fix a use-after-free that can occur when SQLite is compiled with -DSQLITE_HAS_CODEC.
|
||
|
<li>Fix the build so that it works with -DSQLITE_OMIT_WAL.
|
||
|
<li>Fix the configure script for the amalgamation so that the --readline option works again
|
||
|
on Raspberry PIs.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2016-01-20 15:27:19 17efb4209f97fb4971656086b138599a91a75ff9"
|
||
|
<li>SHA1 for sqlite3.c: f7088b19d97cd7a1c805ee95c696abd54f01de4f
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_10_1"></a>
|
||
|
<h3>2016-01-14 (3.10.1)</h3><p><ol class='lessindent'>
|
||
|
<p><b>New feature:</b>
|
||
|
<li>Add the <a href="c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntljournalpointer">SQLITE_FCNTL_JOURNAL_POINTER</a> file control.
|
||
|
<p><b>Bug fix:</b>
|
||
|
<li>Fix a 16-month-old bug in the query planner that could generate incorrect results
|
||
|
when a scalar subquery attempts to use the <a href="queryplanner.html#partialsort">block sorting</a> optimization. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/cb3aa0641d9a4">cb3aa0641d9a4</a>.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2016-01-13 21:41:56 254419c36766225ca542ae873ed38255e3fb8588"
|
||
|
<li>SHA1 for sqlite3.c: 1398ba8e4043550a533cdd0834bfdad1c9eab0f4
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_10_0"></a>
|
||
|
<h3>2016-01-06 (3.10.0)</h3><p><ol class='lessindent'>
|
||
|
<p><b>General improvements:</b>
|
||
|
<li>Added support for <a href="lang_expr.html#like">LIKE</a>, <a href="lang_expr.html#glob">GLOB</a>, and <a href="lang_expr.html#regexp">REGEXP</a> operators on <a href="vtab.html">virtual tables</a>.
|
||
|
<li>Added the <a href="vtab.html#colUsed">colUsed field</a> to <a href="c3ref/index_info.html">sqlite3_index_info</a> for use by
|
||
|
the <a href="vtab.html#xbestindex">sqlite3_module.xBestIndex</a> method.
|
||
|
<li>Enhance the <a href="pragma.html#pragma_cache_spill">PRAGMA cache_spill</a> statement to accept a 32-bit integer
|
||
|
parameter which is the threshold below which cache spilling is prohibited.
|
||
|
<li>On unix, if a symlink to a database file is opened, then the corresponding
|
||
|
journal files are based on the actual filename, not the symlink name.
|
||
|
<li>Added the "--transaction" option to <a href="sqldiff.html">sqldiff</a>.
|
||
|
<li>Added the <a href="c3ref/db_cacheflush.html">sqlite3_db_cacheflush()</a> interface.
|
||
|
<li>Added the <a href="c3ref/strlike.html">sqlite3_strlike()</a> interface.
|
||
|
<li>When using <a href="mmap.html">memory-mapped I/O</a> map the database file read-only so that stray pointers
|
||
|
and/or array overruns in the application cannot accidentally modify the database file.
|
||
|
<li>Added the <em>experimental</em> <a href="c3ref/snapshot_get.html">sqlite3_snapshot_get()</a>, <a href="c3ref/snapshot_open.html">sqlite3_snapshot_open()</a>,
|
||
|
and <a href="c3ref/snapshot_free.html">sqlite3_snapshot_free()</a> interfaces. These are subject to change or removal in
|
||
|
a subsequent release.
|
||
|
<li>Enhance the <a href="lang_datefunc.html#localtime">'utc' modifier</a> in the <a href="lang_datefunc.html">date and time functions</a> so that it is a no-op if
|
||
|
the date/time is known to already be in UTC. (This is not a compatibility break since
|
||
|
the behavior has long been documented as "undefined" in that case.)
|
||
|
<li>Added the <a href="json1.html#jgrouparray">json_group_array()</a> and <a href="json1.html#jgroupobject">json_group_object()</a> SQL functions in the
|
||
|
<a href="json1.html#jmini">json</a> extension.
|
||
|
<li>Added the <a href="compile.html#like_doesnt_match_blobs">SQLITE_LIKE_DOESNT_MATCH_BLOBS</a> compile-time option.
|
||
|
<li>Many small performance optimizations.
|
||
|
<p><b>Portability enhancements:</b>
|
||
|
<li>Work around a sign-extension bug in the optimizer of the HP C compiler on HP/UX.
|
||
|
<a href="https://www.sqlite.org/src/fdiff?sbs=1&v1=869c95b0fc73026d&v2=232c242a0ccb3d67">(details)</a>
|
||
|
<p><b>Enhancements to the <a href="cli.html">command-line shell</a>:</b>
|
||
|
<li>Added the ".changes ON|OFF" and ".vfsinfo" <a href="cli.html#dotcmd">dot-commands</a>.
|
||
|
<li>Translate between MBCS and UTF8 when
|
||
|
running in <a href="https://en.wikipedia.org/wiki/Cmd.exe">cmd.exe</a> on Windows.
|
||
|
<p><b>Enhancements to makefiles:</b>
|
||
|
<li>Added the --enable-editline and --enable-static-shell options
|
||
|
to the various autoconf-generated configure scripts.
|
||
|
<li>Omit all use of "awk" in the makefiles, to make building easier for MSVC users.
|
||
|
<p><b>Important fixes:</b>
|
||
|
<li>Fix inconsistent integer to floating-point comparison operations that
|
||
|
could result in a corrupt index if the index is created on a table
|
||
|
column that contains both large integers and floating point values
|
||
|
of similar magnitude. Ticket
|
||
|
<a href="https://www.sqlite.org/src/tktview?name=38a97a87a6">38a97a87a6</a>.
|
||
|
<li>Fix an infinite-loop in the query planner that could occur on
|
||
|
malformed <a href="lang_with.html">common table expressions</a>.
|
||
|
<li>Various bug fixes in the <a href="sqldiff.html">sqldiff</a> tool.
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2016-01-06 11:01:07 fd0a50f0797d154fefff724624f00548b5320566"
|
||
|
<li>SHA1 for sqlite3.c: b92ca988ebb6df02ac0c8f866dbf3256740408ac
|
||
|
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_9_2"></a>
|
||
|
<h3>2015-11-02 (3.9.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix the schema parser so that it interprets certain
|
||
|
(obscure and ill-formed)
|
||
|
CREATE TABLE statements the same as legacy. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/ac661962a2aeab3c331">ac661962a2aeab3c331</a>
|
||
|
<li>Fix a query planner problem that could result in an incorrect
|
||
|
answer due to the use of <a href="optoverview.html#autoindex">automatic indexing</a> in subqueries in
|
||
|
the FROM clause of a correlated scalar subqueries. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/8a2adec1">8a2adec1</a>.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID: "2015-11-02 18:31:45 bda77dda9697c463c3d0704014d51627fceee328"
|
||
|
<li>SHA1 for sqlite3.c: 1c4013876f50bbaa3e6f0f98e0147c76287684c1
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_9_1"></a>
|
||
|
<h3>2015-10-16 (3.9.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix <a href="json1.html">the json1 extension</a> so that it does <u>not</u> recognize ASCII form-feed as a
|
||
|
whitespace character, in order to comply with RFC-7159. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/57eec374ae1d0a1d">57eec374ae1d0a1d</a>
|
||
|
<li>Add a few #ifdef and build script changes to address compilation issues that
|
||
|
appeared after the 3.9.0 release.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID: ""2015-10-16 17:31:12 767c1727fec4ce11b83f25b3f1bfcfe68a2c8b02"
|
||
|
<li>SHA1 for sqlite3.c: 5e6d1873a32d82c2cf8581f143649940cac8ae49
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_9_0"></a>
|
||
|
<h3>2015-10-14 (3.9.0)</h3><p><ol class='lessindent'>
|
||
|
<p><b>Policy Changes:</b>
|
||
|
<li>The <a href="versionnumbers.html">version numbering conventions</a> for SQLite are revised to use the
|
||
|
emerging standard of <a href="http://semver.org/">semantic versioning</a>.
|
||
|
<p><b>New Features And Enhancements:</b>
|
||
|
<li>Added <a href="json1.html">the json1 extension</a> module in the source tree, and in the <a href="amalgamation.html">amalgamation</a>.
|
||
|
Enable support using the <a href="compile.html#enable_json1">SQLITE_ENABLE_JSON1</a> compile-time option.
|
||
|
<li>Added <a href="fts5.html">Full Text Search version 5 (FTS5)</a> to the <a href="amalgamation.html">amalgamation</a>, enabled
|
||
|
using <a href="compile.html#enable_fts5">SQLITE_ENABLE_FTS5</a>. FTS5 will be considered "experimental" (subject
|
||
|
to incompatible changes) for at least one more release cycle.
|
||
|
<li>The <a href="lang_createview.html">CREATE VIEW</a> statement now accepts an optional list of
|
||
|
column names following the view name.
|
||
|
<li>Added support for <a href="expridx.html">indexes on expressions</a>.
|
||
|
<li>Added support for <a href="vtab.html#tabfunc2">table-valued functions</a> in the FROM clause of a
|
||
|
<a href="lang_select.html">SELECT</a> statement.
|
||
|
<li>Added support for <a href="vtab.html#epovtab">eponymous virtual tables</a>.
|
||
|
<li>A <a href="lang_createview.html">VIEW</a> may now reference undefined tables and functions when
|
||
|
initially created. Missing tables and functions are reported when
|
||
|
the VIEW is used in a query.
|
||
|
<li>Added the <a href="c3ref/value_subtype.html">sqlite3_value_subtype()</a> and <a href="c3ref/result_subtype.html">sqlite3_result_subtype()</a>
|
||
|
interfaced (used by <a href="json1.html">the json1 extension</a>).
|
||
|
<li>The query planner is now able to use <a href="partialindex.html">partial indexes</a> that contain
|
||
|
AND-connected terms in the WHERE clause.
|
||
|
<li>The sqlite3_analyzer.exe utility is updated to report the depth of
|
||
|
each btree and to show the average fanout for indexes and
|
||
|
WITHOUT ROWID tables.
|
||
|
<li>Enhanced the <a href="dbstat.html">dbstat virtual table</a> so that it can be used as a
|
||
|
<a href="vtab.html#tabfunc2">table-valued function</a> where the argument is the schema to be
|
||
|
analyzed.
|
||
|
<p><b>Other changes:</b>
|
||
|
<li>The <a href="c3ref/aggregate_count.html">sqlite3_memory_alarm()</a> interface, which has been deprecated and
|
||
|
undocumented for 8 years, is changed into a no-op.
|
||
|
<p><b>Important fixes:</b>
|
||
|
<li>Fixed a critical bug in the
|
||
|
<a href="https://www.sqlite.org/see/doc/trunk/www/readme.wiki">SQLite Encryption Extension</a> that
|
||
|
could cause the database to become unreadable and unrecoverable if a <a href="lang_vacuum.html">VACUUM</a> command
|
||
|
changed the size of the encryption nonce.
|
||
|
<li>Added a memory barrier in the implementation of
|
||
|
<a href="c3ref/initialize.html">sqlite3_initialize()</a> to help ensure that it is thread-safe.
|
||
|
<li>Fix the <a href="optoverview.html#or_opt">OR optimization</a> so that it always ignores subplans that
|
||
|
do not use an index.
|
||
|
<li>Do not apply the WHERE-clause pushdown optimization on terms that originate
|
||
|
in the ON or USING clause of a LEFT JOIN. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/c2a19d81652f40568c">c2a19d81652f40568c</a>.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID: "2015-10-14 12:29:53 a721fc0d89495518fe5612e2e3bbc60befd2e90d"
|
||
|
<li>SHA1 for sqlite3.c: c03e47e152ddb9c342b84ffb39448bf4a2bd4288
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_11_1"></a>
|
||
|
<h3>2015-07-29 (3.8.11.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Restore an undocumented side-effect of <a href="pragma.html#pragma_cache_size">PRAGMA cache_size</a>: force
|
||
|
the database schema to be parsed if the database has not been previously accessed.
|
||
|
<li>Fix a long-standing problem in <a href="c3ref/changes.html">sqlite3_changes()</a> for <a href="withoutrowid.html">WITHOUT ROWID</a>
|
||
|
tables that was reported a few hours after the 3.8.11 release.
|
||
|
<li>SQLITE_SOURCE_ID: "2015-07-29 20:00:57 cf538e2783e468bbc25e7cb2a9ee64d3e0e80b2f"
|
||
|
<li>SHA1 for sqlite3.c: 3be71d99121fe5b17f057011025bcf84e7cc6c84
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_11"></a>
|
||
|
<h3>2015-07-27 (3.8.11)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the experimental <a href="rbu.html">RBU</a> extension. Note that this extension is experimental
|
||
|
and subject to change in incompatible ways.
|
||
|
<li>Added the experimental <a href="fts5.html">FTS5</a> extension. Note that this extension is experimental
|
||
|
and subject to change in incompatible ways.
|
||
|
<li>Added the <a href="c3ref/value_dup.html">sqlite3_value_dup()</a> and <a href="c3ref/value_dup.html">sqlite3_value_free()</a> interfaces.
|
||
|
<li>Enhance the <a href="spellfix1.html">spellfix1</a> extension to support <a href="lang_conflict.html">ON CONFLICT</a> clauses.
|
||
|
<li>The <a href="lang_expr.html#isisnot">IS operator</a> is now able to drive indexes.
|
||
|
<li>Enhance the query planner to permit <a href="optoverview.html#autoindex">automatic indexing</a> on FROM-clause
|
||
|
subqueries that are implemented by co-routine.
|
||
|
<li>Disallow the use of "rowid" in <a href="lang_with.html">common table expressions</a>.
|
||
|
<li>Added the <a href="pragma.html#pragma_cell_size_check">PRAGMA cell_size_check</a> command for better and earlier
|
||
|
detection of database file corruption.
|
||
|
<li>Added the <a href="fts3.html#matchinfo-b">matchinfo 'b' flag</a> to the <a href="fts3.html#matchinfo">matchinfo()</a> function in <a href="fts3.html">FTS3</a>.
|
||
|
<li>Improved fuzz-testing of database files, with fixes for problems found.
|
||
|
<li>Add the fuzzcheck test program and automatically run this program
|
||
|
using both SQL and database test cases on "make test".
|
||
|
<li>Added the <a href="c3ref/c_mutex_fast.html">SQLITE_MUTEX_STATIC_VFS1</a> static mutex and use it in the
|
||
|
Windows <a href="vfs.html">VFS</a>.
|
||
|
<li>The <a href="c3ref/profile.html">sqlite3_profile()</a> callback is invoked (by <a href="c3ref/reset.html">sqlite3_reset()</a> or
|
||
|
<a href="c3ref/finalize.html">sqlite3_finalize()</a>) for statements that did not run to completion.
|
||
|
<li>Enhance the page cache so that it can preallocate a block of memory to
|
||
|
use for the initial set page cache lines. Set the default preallocation
|
||
|
to 100 pages. Yields about a 5% performance increase on common workloads.
|
||
|
<li>Miscellaneous micro-optimizations result in 22.3% more work for the same
|
||
|
number of CPU cycles relative to the previous release.
|
||
|
SQLite now runs twice as fast as <a href="#version_3_8_0">version 3.8.0</a> and three times as
|
||
|
fast as <a href="#version_3_3_9">version 3.3.9</a>.
|
||
|
(Measured using
|
||
|
<a href="http://valgrind.org/docs/manual/cg-manual.html">cachegrind</a> on the
|
||
|
<a href="http://www.sqlite.org/src/artifact/83f6b3318f7ee">speedtest1.c</a> workload on
|
||
|
Ubuntu 14.04 x64 with gcc 4.8.2 and -Os. Your performance may vary.)
|
||
|
<li>Added the <a href="c3ref/result_blob.html">sqlite3_result_zeroblob64()</a> and <a href="c3ref/bind_blob.html">sqlite3_bind_zeroblob64()</a>
|
||
|
interfaces.
|
||
|
<p><b>Important bug fixes:</b>
|
||
|
<li>Fix <a href="lang_createtable.html#createtabas">CREATE TABLE AS</a> so that columns of type TEXT never end up
|
||
|
holding an INT value. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/f2ad7de056ab1dc9200">f2ad7de056ab1dc9200</a>
|
||
|
<li>Fix <a href="lang_createtable.html#createtabas">CREATE TABLE AS</a> so that it does not leave NULL entries in the
|
||
|
<a href="schematab.html">sqlite_master table</a> if the SELECT statement on the right-hand side
|
||
|
aborts with an error. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/873cae2b6e25b">873cae2b6e25b</a>
|
||
|
<li>Fix the <a href="optoverview.html#skipscan">skip-scan optimization</a> so that it works correctly when
|
||
|
the <a href="optoverview.html#or_opt">OR optimization</a> is used on <a href="withoutrowid.html">WITHOUT ROWID</a> tables. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/8fd39115d8f46">8fd39115d8f46</a>
|
||
|
<li>Fix the <a href="c3ref/memory_highwater.html">sqlite3_memory_used()</a> and <a href="c3ref/memory_highwater.html">sqlite3_memory_highwater()</a> interfaces
|
||
|
so that they actually do provide a 64-bit answer.
|
||
|
|
||
|
<p><b>Hashes:</b>
|
||
|
<li>SQLITE_SOURCE_ID: "2015-07-27 13:49:41 b8e92227a469de677a66da62e4361f099c0b79d0"
|
||
|
<li>SHA1 for sqlite3.c: 719f6891abcd9c459b5460b191d731cd12a3643e
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_10_2"></a>
|
||
|
<h3>2015-05-20 (3.8.10.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix an index corruption issue introduced by <a href="#version_3_8_7">version 3.8.7</a>. An index
|
||
|
with a TEXT key can be corrupted by an <a href="lang_insert.html">INSERT</a> into the corresponding
|
||
|
table if the table has two nested triggers that convert the key value to INTEGER
|
||
|
and back to TEXT again.
|
||
|
Ticket <a href="https://www.sqlite.org/src/info/34cd55d68e0e6e7c9a0711aab81a2ee3c354b4c0">34cd55d68e0</a>
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID: "2015-05-20 18:17:19 2ef4f3a5b1d1d0c4338f8243d40a2452cc1f7fe4"
|
||
|
<li>SHA1 for sqlite3.c: 638abb77965332c956dbbd2c8e4248e84da4eb63
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_10_1"></a>
|
||
|
<h3>2015-05-09 (3.8.10.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Make <a href="c3ref/compileoption_get.html">sqlite3_compileoption_used()</a> responsive to the <a href="compile.html#enable_dbstat_vtab">SQLITE_ENABLE_DBSTAT_VTAB</a>
|
||
|
compile-time option.
|
||
|
<li>Fix a harmless warning in the <a href="cli.html">command-line shell</a> on some versions of MSVC.
|
||
|
<li>Fix minor issues with the <a href="dbstat.html">dbstat virtual table</a>.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID: "2015-05-09 12:14:55 05b4b1f2a937c06c90db70c09890038f6c98ec40"
|
||
|
<li>SHA1 for sqlite3.c: 85e4e1c08c7df28ef61bb9759a0d466e0eefbaa2
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_10"></a>
|
||
|
<h3>2015-05-07 (3.8.10)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the <a href="sqldiff.html">sqldiff.exe</a> utility program for computing the differences between two
|
||
|
SQLite database files.
|
||
|
<li>Added the <a href="fts3.html#matchinfo-y">matchinfo y flag</a> to the
|
||
|
<a href="fts3.html#matchinfo">matchinfo()</a> function of <a href="fts3.html">FTS3</a>.
|
||
|
<li>Performance improvements for <a href="lang_select.html#orderby">ORDER BY</a>, <a href="lang_vacuum.html">VACUUM</a>, <a href="lang_createindex.html">CREATE INDEX</a>,
|
||
|
<a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a>, and <a href="pragma.html#pragma_quick_check">PRAGMA quick_check</a>.
|
||
|
<li>Fix many obscure problems discovered while <a href="testing.html#fuzztesting">SQL fuzzing</a>.
|
||
|
<li>Identify all methods for important objects in the interface documentation.
|
||
|
(<a href="c3ref/context.html">example</a>)
|
||
|
<li>Made the <a href="testing.html#aflfuzz">American Fuzzy Lop fuzzer</a>
|
||
|
a standard part of SQLite's <a href="testing.html">testing strategy</a>.
|
||
|
<li>Add the ".binary" and ".limits" commands to the <a href="cli.html">command-line shell</a>.
|
||
|
<li>Make the <a href="dbstat.html">dbstat virtual table</a> part of standard builds when
|
||
|
compiled with the <a href="compile.html#enable_dbstat_vtab">SQLITE_ENABLE_DBSTAT_VTAB</a> option.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID: "2015-05-07 11:53:08 cf975957b9ae671f34bb65f049acf351e650d437"
|
||
|
<li>SHA1 for sqlite3.c: 0b34f0de356a3f21b9dfc761f3b7821b6353c570
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_9"></a>
|
||
|
<h3>2015-04-08 (3.8.9)</h3><p><ol class='lessindent'>
|
||
|
<li>Add VxWorks-7 as an officially supported and tested platform.
|
||
|
<li>Added the <a href="c3ref/status.html">sqlite3_status64()</a> interface.
|
||
|
<li>Fix memory size tracking so that it works even if SQLite uses more
|
||
|
than 2GiB of memory.
|
||
|
<li>Added the <a href="pragma.html#pragma_index_xinfo">PRAGMA index_xinfo</a> command.
|
||
|
<li>Fix a potential 32-bit integer overflow problem in the
|
||
|
<a href="c3ref/blob_read.html">sqlite3_blob_read()</a> and <a href="c3ref/blob_write.html">sqlite3_blob_write()</a> interfaces.
|
||
|
<li>Ensure that prepared statements automatically reset on extended
|
||
|
error codes of SQLITE_BUSY and SQLITE_LOCKED even when compiled
|
||
|
using <a href="compile.html#omit_autoreset">SQLITE_OMIT_AUTORESET</a>.
|
||
|
<li>Correct miscounts in the sqlite3_analyzer.exe utility related
|
||
|
to WITHOUT ROWID tables.
|
||
|
<li>Added the ".dbinfo" command to the <a href="cli.html">command-line shell</a>.
|
||
|
<li>Improve the performance of fts3/4 queries that use the OR operator
|
||
|
and at least one auxiliary fts function.
|
||
|
<li>Fix a bug in the fts3 snippet() function causing it to omit
|
||
|
leading separator characters from snippets that begin with the
|
||
|
first token in a column.
|
||
|
<li>SQLITE_SOURCE_ID: "2015-04-08 12:16:33 8a8ffc862e96f57aa698f93de10dee28e69f6e09"
|
||
|
<li>SHA1 for sqlite3.c: 49f1c3ae347e1327b5aaa6c7f76126bdf09c6f42
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_8_3"></a>
|
||
|
<h3>2015-02-25 (3.8.8.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug (ticket
|
||
|
<a href="https://www.sqlite.org/src/info/2326c258d02ead33">2326c258d02ead33</a>) that can lead
|
||
|
to incorrect results if the qualifying constraint of a <a href="partialindex.html">partial index</a> appears in the
|
||
|
ON clause of a LEFT JOIN.
|
||
|
<li>Added the ability to link against the
|
||
|
"<a href="https://github.com/antirez/linenoise">linenoise</a>"
|
||
|
command-line editing library in unix builds of the <a href="cli.html">command-line shell</a>.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID: "2015-02-25 13:29:11 9d6c1880fb75660bbabd693175579529785f8a6b"
|
||
|
<li>SHA1 for sqlite3.c: 74ee38c8c6fd175ec85a47276dfcefe8a262827a
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_8_2"></a>
|
||
|
<h3>2015-01-30 (3.8.8.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Enhance <a href="c3ref/wal_checkpoint_v2.html">sqlite3_wal_checkpoint_v2(TRUNCATE)</a> interface so that it truncates the
|
||
|
WAL file even if there is no checkpoint work to be done.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID: "2015-01-30 14:30:45 7757fc721220e136620a89c9d28247f28bbbc098"
|
||
|
<li>SHA1 for sqlite3.c: 85ce79948116aa9a087ec345c9d2ce2c1d3cd8af
|
||
|
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_8_1"></a>
|
||
|
<h3>2015-01-20 (3.8.8.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug in the sorting logic, present since version 3.8.4, that can cause
|
||
|
output to appear in the wrong order on queries that contains an ORDER BY clause,
|
||
|
a LIMIT clause, and that have approximately 60 or more columns in the result set.
|
||
|
Ticket <a href="https://www.sqlite.org/src/tktview?name=f97c4637102a3ae72b79">f97c4637102a3ae72b79</a>.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID: "2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55"
|
||
|
<li>SHA1 for sqlite3.c: 33987fb50dcc09f1429a653d6b47672f5a96f19e
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_8"></a>
|
||
|
<h3>2015-01-16 (3.8.8)</h3><p><ol class='lessindent'>
|
||
|
<p><b>New Features:</b>
|
||
|
<li>Added the <a href="pragma.html#pragma_data_version">PRAGMA data_version</a> command that can be used to determine if
|
||
|
a database file has been modified by another process.
|
||
|
<li>Added the <a href="c3ref/c_checkpoint_full.html">SQLITE_CHECKPOINT_TRUNCATE</a> option to the
|
||
|
<a href="c3ref/wal_checkpoint_v2.html">sqlite3_wal_checkpoint_v2()</a> interface, with corresponding enhancements
|
||
|
to <a href="pragma.html#pragma_wal_checkpoint">PRAGMA wal_checkpoint</a>.
|
||
|
<li>Added the <a href="c3ref/stmt_scanstatus.html">sqlite3_stmt_scanstatus()</a> interface, available only when
|
||
|
compiled with <a href="compile.html#enable_stmt_scanstatus">SQLITE_ENABLE_STMT_SCANSTATUS</a>.
|
||
|
<li>The <a href="c3ref/table_column_metadata.html">sqlite3_table_column_metadata()</a> is enhanced to work correctly on
|
||
|
<a href="withoutrowid.html">WITHOUT ROWID</a> tables and to check for the existence of a
|
||
|
a table if the column name parameter is NULL. The interface is now
|
||
|
also included in the build by default, without requiring
|
||
|
the <a href="compile.html#enable_column_metadata">SQLITE_ENABLE_COLUMN_METADATA</a> compile-time option.
|
||
|
<li>Added the <a href="compile.html#enable_api_armor">SQLITE_ENABLE_API_ARMOR</a> compile-time option.
|
||
|
<li>Added the <a href="compile.html#reverse_unordered_selects">SQLITE_REVERSE_UNORDERED_SELECTS</a> compile-time option.
|
||
|
<li>Added the <a href="compile.html#sorter_pmasz">SQLITE_SORTER_PMASZ</a> compile-time option and <a href="c3ref/c_config_covering_index_scan.html#sqliteconfigpmasz">SQLITE_CONFIG_PMASZ</a>
|
||
|
start-time option.
|
||
|
<li>Added the <a href="c3ref/c_config_covering_index_scan.html#sqliteconfigpcachehdrsz">SQLITE_CONFIG_PCACHE_HDRSZ</a> option to <a href="c3ref/config.html">sqlite3_config()</a>
|
||
|
which makes it easier for applications to determine the appropriate
|
||
|
amount of memory for use with <a href="c3ref/c_config_covering_index_scan.html#sqliteconfigpagecache">SQLITE_CONFIG_PAGECACHE</a>.
|
||
|
<li>The number of rows in a <a href="lang_select.html#values">VALUES clause</a> is no longer limited by
|
||
|
<a href="c3ref/c_limit_attached.html#sqlitelimitcompoundselect">SQLITE_LIMIT_COMPOUND_SELECT</a>.
|
||
|
<li>Added the <a href="https://www.sqlite.org/src/artifact/f971962e92ebb8b0">eval.c</a>
|
||
|
<a href="loadext.html">loadable extension</a> that implements an eval() SQL function that will recursively
|
||
|
evaluate SQL.
|
||
|
<p><b>Performance Enhancements:</b>
|
||
|
<li>Reduce the number of memcpy() operations involved in balancing a b-tree,
|
||
|
for 3.2% overall performance boost.
|
||
|
<li>Improvements to cost estimates for the <a href="optoverview.html#skipscan">skip-scan optimization</a>.
|
||
|
<li>The <a href="optoverview.html#autoindex">automatic indexing</a> optimization is now capable of generating
|
||
|
a <a href="partialindex.html">partial index</a> if that is appropriate.
|
||
|
<p><b>Bug fixes:</b>
|
||
|
<li>Ensure durability following a power loss with
|
||
|
"PRAGMA journal_mode=TRUNCATE" by calling fsync() right after truncating
|
||
|
the journal file.
|
||
|
<li>The query planner now recognizes that any column in the right-hand
|
||
|
table of a LEFT JOIN can be NULL, even if that column has a NOT NULL
|
||
|
constraint. Avoid trying to optimize out NULL tests in those cases.
|
||
|
Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/6f2222d550f5b0ee7ed">6f2222d550f5b0ee7ed</a>.
|
||
|
<li>Make sure ORDER BY puts rows in ascending order even if the DISTINCT
|
||
|
operator is implemented using a descending index. Fix for ticket
|
||
|
<a href="https://www.sqlite.org/src/info/c5ea805691bfc4204b1cb9e">c5ea805691bfc4204b1cb9e</a>.
|
||
|
<li>Fix data races that might occur under stress when running with many threads
|
||
|
in <a href="sharedcache.html">shared cache mode</a> where some of the threads are opening and
|
||
|
closing connections.
|
||
|
<li>Fix obscure crash bugs found by
|
||
|
<a href="http://lcamtuf.coredump.cx/afl/">american fuzzy lop</a>. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/a59ae93ee990a55">a59ae93ee990a55</a>.
|
||
|
<li>Work around a GCC optimizer bug (for gcc 4.2.1 on MacOS 10.7) that caused the
|
||
|
<a href="rtree.html">R-Tree extension</a> to compute incorrect results when compiled with -O3.
|
||
|
<p><b>Other changes:</b>
|
||
|
<li>Disable the use of the strchrnul() C-library routine unless it is
|
||
|
specifically enabled using the -DHAVE_STRCHRNULL compile-time option.
|
||
|
<li>Improvements to the effectiveness and accuracy of the
|
||
|
<a href="lang_corefunc.html#likelihood">likelihood()</a>, <a href="lang_corefunc.html#likely">likely()</a>, and <a href="lang_corefunc.html#unlikely">unlikely()</a> SQL hint functions.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID: "2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf"
|
||
|
<li>SHA1 for sqlite3.c: 91aea4cc722371d58aae3d22e94d2a4165276905
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_7_4"></a>
|
||
|
<h3>2014-12-09 (3.8.7.4)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fix: Add in a mutex that was omitted from the previous release.
|
||
|
<li>SQLITE_SOURCE_ID: "2014-12-09 01:34:36 f66f7a17b78ba617acde90fc810107f34f1a1f2e"
|
||
|
<li>SHA1 for sqlite3.c: 0a56693a3c24aa3217098afab1b6fecccdedfd23
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_7_3"></a>
|
||
|
<h3>2014-12-05 (3.8.7.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fix: Ensure the cached KeyInfo objects (an internal abstraction not visible to the
|
||
|
application) do not go stale when operating in <a href="sharedcache.html">shared cache mode</a> and frequently closing
|
||
|
and reopening some database connections while leaving other database connections on the
|
||
|
same shared cache open continuously. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/e4a18565a36884b00edf">e4a18565a36884b00edf</a>.
|
||
|
<li>Bug fix: Recognize that any column in the right-hand table of a LEFT JOIN can be
|
||
|
NULL even if the column has a NOT NULL constraint. Do not apply optimizations that
|
||
|
assume the column is never NULL. Ticket
|
||
|
<a href="https://www.sqlite.org/src/info/6f2222d550f5b0ee7ed">6f2222d550f5b0ee7ed</a>.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID: "2014-12-05 22:29:24 647e77e853e81a5effeb4c33477910400a67ba86"
|
||
|
<li>SHA1 for sqlite3.c: 3ad2f5ba3a4a3e3e51a1dac9fda9224b359f0261
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_7_2"></a>
|
||
|
<h3>2014-11-18 (3.8.7.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Enhance the <a href="lang_transaction.html">ROLLBACK</a> command so that pending queries are allowed to continue as long
|
||
|
as the schema is unchanged. Formerly, a ROLLBACK would cause all pending queries to
|
||
|
fail with an <a href="rescode.html#abort">SQLITE_ABORT</a> or <a href="rescode.html#abort_rollback">SQLITE_ABORT_ROLLBACK</a> error. That error is still returned
|
||
|
if the ROLLBACK modifies the schema.
|
||
|
<li>Bug fix: Make sure that NULL results from OP_Column are fully and completely NULL and
|
||
|
do not have the MEM_Ephem bit set.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/094d39a4c95ee4">094d39a4c95ee4</a>.
|
||
|
<li>Bug fix: The %c format in sqlite3_mprintf() is able to handle precisions greater than 70.
|
||
|
<li>Bug fix: Do not automatically remove the DISTINCT keyword from a SELECT that forms
|
||
|
the right-hand side of an IN operator since it is necessary if the SELECT also
|
||
|
contains a LIMIT.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/db87229497">db87229497</a>.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID: "2014-11-18 20:57:56 2ab564bf9655b7c7b97ab85cafc8a48329b27f93"
|
||
|
<li>SHA1 for sqlite3.c: b2a68d5783f48dba6a8cb50d8bf69b238c5ec53a
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_7_1"></a>
|
||
|
<h3>2014-10-29 (3.8.7.1)</h3><p><ol class='lessindent'>
|
||
|
<li>In <a href="pragma.html#pragma_journal_mode">PRAGMA journal_mode=TRUNCATE</a> mode, call fsync() immediately after truncating
|
||
|
the journal file to ensure that the transaction is durable across a power loss.
|
||
|
<li>Fix an assertion fault that can occur when updating the NULL value of a field
|
||
|
at the end of a table that was added using <a href="lang_altertable.html">ALTER TABLE ADD COLUMN</a>.
|
||
|
<li>Do not attempt to use the strchrnul() function from the standard C library unless
|
||
|
the HAVE_STRCHRNULL compile-time option is set.
|
||
|
<li>Fix a couple of problems associated with running an UPDATE or DELETE on a
|
||
|
<a href="lang_createview.html">VIEW</a> with a <a href="lang_createtable.html#rowid">rowid</a> in the WHERE clause.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID: "2014-10-29 13:59:56 3b7b72c4685aa5cf5e675c2c47ebec10d9704221"
|
||
|
<li>SHA1 for sqlite3.c: 2d25bd1a73dc40f538f3a81c28e6efa5999bdf0c
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_7"></a>
|
||
|
<h3>2014-10-17 (3.8.7)</h3><p><ol class='lessindent'>
|
||
|
<p><b>Performance Enhancements:</b>
|
||
|
<li>Many micro-optimizations result in 20.3% more work for the same number
|
||
|
of CPU cycles relative to the previous release.
|
||
|
The cumulative performance increase since <a href="#version_3_8_0">version 3.8.0</a> is 61%.
|
||
|
(Measured using
|
||
|
<a href="http://valgrind.org/docs/manual/cg-manual.html">cachegrind</a> on the
|
||
|
<a href="http://www.sqlite.org/src/artifact/83f6b3318f7ee">speedtest1.c</a> workload on
|
||
|
Ubuntu 13.10 x64 with gcc 4.8.1 and -Os. Your performance may vary.)
|
||
|
<li>The sorter can use auxiliary helper threads to increase real-time response.
|
||
|
This feature is off by default and may be
|
||
|
enabled using the <a href="pragma.html#pragma_threads">PRAGMA threads</a> command or the <a href="compile.html#default_worker_threads">SQLITE_DEFAULT_WORKER_THREADS</a>
|
||
|
compile-time option.
|
||
|
<li>Enhance the <a href="optoverview.html#skipscan">skip-scan</a> optimization so that it is able to skip index terms that
|
||
|
occur in the middle of the index, not just as the left-hand side of the index.
|
||
|
<li>Improved optimization of <a href="lang_expr.html#castexpr">CAST</a> operators.
|
||
|
<li>Various improvements in how the query planner uses <a href="fileformat2.html#stat4tab">sqlite_stat4</a>
|
||
|
information to estimate plan costs.
|
||
|
<p><b>New Features:</b>
|
||
|
<li>Added new interfaces with 64-bit length parameters:
|
||
|
<a href="c3ref/free.html">sqlite3_malloc64()</a>,
|
||
|
<a href="c3ref/free.html">sqlite3_realloc64()</a>,
|
||
|
<a href="c3ref/bind_blob.html">sqlite3_bind_blob64()</a>,
|
||
|
<a href="c3ref/result_blob.html">sqlite3_result_blob64()</a>,
|
||
|
<a href="c3ref/bind_blob.html">sqlite3_bind_text64()</a>, and
|
||
|
<a href="c3ref/result_blob.html">sqlite3_result_text64()</a>.
|
||
|
<li>Added the new interface <a href="c3ref/free.html">sqlite3_msize()</a> that returns the size of a memory allocation
|
||
|
obtained from <a href="c3ref/free.html">sqlite3_malloc64()</a> and its variants.
|
||
|
<li>Added the <a href="c3ref/c_limit_attached.html#sqlitelimitworkerthreads">SQLITE_LIMIT_WORKER_THREADS</a> option to <a href="c3ref/limit.html">sqlite3_limit()</a> and
|
||
|
<a href="pragma.html#pragma_threads">PRAGMA threads</a> command for configuring the number of available worker threads.
|
||
|
<li>The <a href="spellfix1.html">spellfix1</a> extension allows the application to optionally specify the rowid for
|
||
|
each INSERT.
|
||
|
<li>Added the <a href="http://www.sqlite.org/src/doc/trunk/ext/userauth/user-auth.txt">User Authentication</a>
|
||
|
extension.
|
||
|
<p><b>Bug Fixes:</b>
|
||
|
<li>Fix a bug in the <a href="partialindex.html">partial index</a> implementation that might result in an incorrect
|
||
|
answer if a partial index is used in a subquery or in a <a href="lang_createview.html">view</a>.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/98d973b8f5">98d973b8f5</a>.
|
||
|
<li>Fix a query planner bug that might cause a table to be scanned in the wrong direction
|
||
|
(thus reversing the order of output) when a DESC index is used to implement the ORDER BY
|
||
|
clause on a query that has an identical GROUP BY clause.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/ba7cbfaedc7e6">ba7cbfaedc7e6</a>.
|
||
|
<li>Fix a bug in <a href="c3ref/profile.html">sqlite3_trace()</a> that was causing it to sometimes fail to print
|
||
|
an SQL statement if that statement needed to be re-prepared.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/11d5aa455e0d98f3c1e6a08">11d5aa455e0d98f3c1e6a08</a>
|
||
|
<li>Fix a faulty assert() statement.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/369d57fb8e5ccdff06f1">369d57fb8e5ccdff06f1</a>
|
||
|
<p><b>Test, Debug, and Analysis Changes:</b>
|
||
|
<li>Show ASCII-art abstract syntax tree diagrams using the ".selecttrace"
|
||
|
and ".wheretrace" commands in the
|
||
|
<a href="cli.html">command-line shell</a> when compiled with <a href="compile.html#debug">SQLITE_DEBUG</a>, SQLITE_ENABLE_SELECTTRACE,
|
||
|
and SQLITE_ENABLE_WHERETRACE. Also provide the sqlite3TreeViewExpr() and
|
||
|
sqlite3TreeViewSelect() entry points that can be invoked from with the
|
||
|
debugger to show the parse tree when stopped at a breakpoint.
|
||
|
<li>Drop support for SQLITE_ENABLE_TREE_EXPLAIN. The SELECTTRACE mechanism provides
|
||
|
more useful diagnostics information.
|
||
|
<li>New options to the <a href="cli.html">command-line shell</a> for configuring auxiliary
|
||
|
memory usage: --pagecache, --lookaside, and --scratch.
|
||
|
<li>SQLITE_SOURCE_ID: "2014-10-17 11:24:17 e4ab094f8afce0817f4074e823fabe59fc29ebb4"
|
||
|
<li>SHA1 for sqlite3.c: 56dcf5e931a9e1fa12fc2d600cd91d3bf9b639cd
|
||
|
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_6"></a>
|
||
|
<h3>2014-08-15 (3.8.6)</h3><p><ol class='lessindent'>
|
||
|
<li>Added support for <a href="lang_expr.html#hexint">hexadecimal integer literals</a> in the SQL parser.
|
||
|
(Ex: 0x123abc)
|
||
|
<li>Enhanced the <a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a> command to detect <a href="lang_createtable.html#uniqueconst">UNIQUE</a> and
|
||
|
<a href="lang_createtable.html#notnullconst">NOT NULL</a> constraint violations.
|
||
|
<li>Increase the maximum value of <a href="limits.html#max_attached">SQLITE_MAX_ATTACHED</a> from 62 to 125.
|
||
|
<li>Increase the timeout in <a href="wal.html">WAL mode</a> before issuing an <a href="rescode.html#protocol">SQLITE_PROTOCOL</a>
|
||
|
error from 1 second to 10 seconds.
|
||
|
<li>Added the <a href="lang_corefunc.html#likely">likely(X)</a> SQL function.
|
||
|
<li>The <a href="fts3.html#unicode61">unicode61</a> tokenizer is now included in <a href="fts3.html#fts4">FTS4</a> by default.
|
||
|
<li>Trigger automatic reprepares on all prepared statements when <a href="lang_analyze.html">ANALYZE</a> is
|
||
|
run.
|
||
|
<li>Added a new
|
||
|
<a href="loadext.html">loadable extension</a> source code file to the source tree:
|
||
|
<a href="http://www.sqlite.org/src/finfo?name=ext/misc/fileio.c">fileio.c</a>
|
||
|
<li>Add extension functions <a href="cli.html#fileio">readfile(X) and writefile(X,Y)</a>
|
||
|
(using code copy/pasted from fileio.c in the previous bullet) to the
|
||
|
<a href="cli.html">command-line shell</a>.
|
||
|
<li>Added the <a href="cli.html#fullschema">.fullschema</a> dot-command to the <a href="cli.html">command-line shell</a>.
|
||
|
<p><b>Performance Enhancements:</b>
|
||
|
<li>Deactivate the <a href="lang_select.html#distinct">DISTINCT</a> keyword on subqueries on the
|
||
|
right-hand side of the <a href="lang_expr.html#in_op">IN operator</a>.
|
||
|
<li>Add the capability of evaluating an <a href="lang_expr.html#in_op">IN operator</a> as a sequence
|
||
|
of comparisons as an alternative to using a table lookup. Use the sequence
|
||
|
of comparisons implementation in circumstances where it is likely to be
|
||
|
faster, such as when the right-hand side of the IN operator
|
||
|
is small and/or changes frequently.
|
||
|
<li>The query planner now uses <a href="fileformat2.html#stat4tab">sqlite_stat4</a> information (created by <a href="lang_analyze.html">ANALYZE</a>)
|
||
|
to help determine if the <a href="optoverview.html#skipscan">skip-scan optimization</a> is appropriate.
|
||
|
<li>Ensure that the query planner never tries to use a self-made transient
|
||
|
index in place of a schema-defined index.
|
||
|
<li>Other minor tweaks to improve the quality of <a href="opcode.html">VDBE</a> code.
|
||
|
<p><b>Bug Fixes:</b>
|
||
|
<li>Fix a bug in <a href="lang_createindex.html">CREATE UNIQUE INDEX</a>, introduced when <a href="withoutrowid.html">WITHOUT ROWID</a>
|
||
|
support added in version 3.8.2, that allows a non-unique NOT NULL column to be
|
||
|
given a UNIQUE index.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/9a6daf340df99ba93c">9a6daf340df99ba93c</a>
|
||
|
<li>Fix a bug in <a href="rtree.html">R-Tree extension</a>, introduced in the previous release,
|
||
|
that can cause an
|
||
|
incorrect results for queries that use the rowid of the R-Tree on the
|
||
|
left-hand side of an <a href="lang_expr.html#in_op">IN operator</a>.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/d2889096e7bdeac6">d2889096e7bdeac6</a>.
|
||
|
<li>Fix the <a href="c3ref/stmt_busy.html">sqlite3_stmt_busy()</a> interface so that it gives the correct answer
|
||
|
for <a href="lang_transaction.html">ROLLBACK</a> statements that have been stepped but never reset.
|
||
|
<li>Fix a bug in that would cause a null pointer to be dereferenced
|
||
|
if a column with a DEFAULT that is an aggregate function tried to usee its
|
||
|
DEFAULT.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/3a88d85f36704eebe1">3a88d85f36704eebe1</a>
|
||
|
<li>CSV output from the <a href="cli.html">command-line shell</a> now always uses CRNL for the
|
||
|
row separator and avoids inserting CR in front of NLs contained in
|
||
|
data.
|
||
|
<li>Fix a <a href="datatype3.html#affinity">column affinity</a> problem with the <a href="lang_expr.html#in_op">IN operator</a>.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/9a8b09f8e6">9a8b09f8e6</a>.
|
||
|
<li>Fix the <a href="lang_analyze.html">ANALYZE</a> command so that it adds correct samples for
|
||
|
<a href="withoutrowid.html">WITHOUT ROWID</a> tables in the <a href="fileformat2.html#stat4tab">sqlite_stat4</a> table.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/b2fa5424e6fcb15">b2fa5424e6fcb15</a>.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID: "2014-08-15 11:46:33 9491ba7d738528f168657adb43a198238abde19e"
|
||
|
<li>SHA1 for sqlite3.c: 72c64f05cd9babb9c0f9b3c82536d83be7804b1c
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_5"></a>
|
||
|
<h3>2014-06-04 (3.8.5)</h3><p><ol class='lessindent'>
|
||
|
<li>Added support for <a href="queryplanner.html#partialsort">partial sorting by index</a>.
|
||
|
<li>Enhance the query planner so that it always prefers an index that uses a superset of
|
||
|
WHERE clause terms relative to some other index.
|
||
|
<li>Improvements to the <a href="fts3.html#*fts4automergecmd">automerge command</a> of <a href="fts3.html#fts4">FTS4</a> to better control the index size
|
||
|
for a full-text index that is subject to a large number of updates.
|
||
|
<li>Added the <a href="rtree.html#xquery">sqlite3_rtree_query_callback()</a> interface to <a href="rtree.html">R-Tree extension</a>
|
||
|
<li>Added new <a href="uri.html#coreqp">URI query parameters</a> "nolock" and "immutable".
|
||
|
<li>Use less memory by not remembering CHECK constraints on read-only
|
||
|
database connections.
|
||
|
<li>Enable the <a href="queryplanner.html#or_in_where">OR optimization</a> for <a href="withoutrowid.html">WITHOUT ROWID</a> tables.
|
||
|
<li>Render expressions of the form "x IN (?)" (with a single value in
|
||
|
the list on the right-hand side of the IN operator) as if they where "x==?",
|
||
|
Similarly optimize "x NOT IN (?)"
|
||
|
<li>Add the ".system" and ".once" commands to the <a href="cli.html">command-line shell</a>.
|
||
|
<li>Added the <a href="c3ref/c_iocap_atomic.html">SQLITE_IOCAP_IMMUTABLE</a> bit to the set of bits that can be returned by
|
||
|
the xDeviceCharacteristics method of a <a href="vfs.html">VFS</a>.
|
||
|
<li>Added the <a href="c3ref/c_testctrl_always.html">SQLITE_TESTCTRL_BYTEORDER</a> test control.
|
||
|
<p><b>Bug Fixes:</b>
|
||
|
<li>OFFSET clause ignored on queries without a FROM clause.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/07d6a0453d">07d6a0453d</a>
|
||
|
<li>Assertion fault on queries involving expressions of the form
|
||
|
"x IN (?)". Ticket <a href="http://www.sqlite.org/src/info/e39d032577">e39d032577</a>.
|
||
|
<li>Incorrect column datatype reported.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/a8a0d2996a">a8a0d2996a</a>
|
||
|
<li>Duplicate row returned on a query against a table with more than
|
||
|
16 indices, each on a separate column, and all used via OR-connected constraints.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/10fb063b11">10fb063b11</a>
|
||
|
<li>Partial index causes assertion fault on UPDATE OR REPLACE.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/2ea3e9fe63">2ea3e9fe63</a>
|
||
|
<li>Crash when calling undocumented SQL function sqlite_rename_parent()
|
||
|
with NULL parameters.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/264b970c4379fd">264b970c43</a>
|
||
|
<li>ORDER BY ignored if the query has an identical GROUP BY.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/b75a9ca6b0499">b75a9ca6b0</a>
|
||
|
<li>The group_concat(x,'') SQL function returns NULL instead of an empty string
|
||
|
when all inputs are empty strings.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/55746f9e65f85">55746f9e65</a>
|
||
|
<li>Fix a bug in the VDBE code generator that caused crashes when
|
||
|
doing an INSERT INTO ... SELECT statement where the number of columns
|
||
|
being inserted is larger than the number of columns in the destination
|
||
|
table.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/e9654505cfda9">e9654505cfd</a>
|
||
|
<li>Fix a problem in CSV import in the <a href="cli.html">command-line shell</a>
|
||
|
where if the leftmost field of the first row
|
||
|
in the CSV file was both zero bytes in size and unquoted no data would
|
||
|
be imported.
|
||
|
<li>Fix a problem in FTS4 where the left-most column that contained
|
||
|
the <a href="fts3.html#fts4notindexed">notindexed column</a> name as a prefix
|
||
|
was not indexed rather than the column whose name matched exactly.
|
||
|
<li>Fix the <a href="c3ref/db_readonly.html">sqlite3_db_readonly()</a> interface so that it returns true if
|
||
|
the database is read-only due to the file format write version number
|
||
|
being too large.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID: "2014-06-04 14:06:34 b1ed4f2a34ba66c29b130f8d13e9092758019212"
|
||
|
<li>SHA1 for sqlite3.c: 7bc194957238c61b1a47f301270286be5bc5208c
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_4_3"></a>
|
||
|
<h3>2014-04-03 (3.8.4.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Add a
|
||
|
<a href="http://www.sqlite.org/src/fdiff?sbs=1&v1=7d539cedb1c&v2=ebad891b7494d&smhdr">one-character fix</a>
|
||
|
for a problem that might cause incorrect query results on a query that mixes
|
||
|
DISTINCT, GROUP BY in a subquery, and ORDER BY.
|
||
|
<a href="http://www.sqlite.org/src/info/98825a79ce1456863">Ticket 98825a79ce14</a>.
|
||
|
<li>SQLITE_SOURCE_ID: "2014-04-03 16:53:12 a611fa96c4a848614efe899130359c9f6fb889c3"
|
||
|
<li>SHA1 for sqlite3.c: 310a1faeb9332a3cd8d1f53b4a2e055abf537bdc
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_4_2"></a>
|
||
|
<h3>2014-03-26 (3.8.4.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a potential buffer overread that could result when trying to search a
|
||
|
corrupt database file.
|
||
|
<li>SQLITE_SOURCE_ID: "2014-03-26 18:51:19 02ea166372bdb2ef9d8dfbb05e78a97609673a8e"
|
||
|
<li>SHA1 for sqlite3.c: 4685ca86c2ea0649ed9f59a500013e90b3fe6d03
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_4_1"></a>
|
||
|
<h3>2014-03-11 (3.8.4.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Work around a C-preprocessor macro conflict that breaks the build for some
|
||
|
configurations with Microsoft Visual Studio.
|
||
|
<li>When computing the cost of the <a href="optoverview.html#skipscan">skip-scan optimization</a>, take into account the
|
||
|
fact that multiple seeks are required.
|
||
|
<li>SQLITE_SOURCE_ID: "2014-03-11 15:27:36 018d317b1257ce68a92908b05c9c7cf1494050d0"
|
||
|
<li>SHA1 for sqlite3.c: d5cd1535053a50aa8633725e3595740b33709ac5
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_4"></a>
|
||
|
<h3>2014-03-10 (3.8.4)</h3><p><ol class='lessindent'>
|
||
|
<li>Code optimization and refactoring for improved performance.
|
||
|
<li>Add the ".clone" and ".save" commands to the command-line shell.
|
||
|
<li>Update the banner on the command-line shell to alert novice users when they
|
||
|
are using an ephemeral in-memory database.
|
||
|
<li>Fix editline support in the command-line shell.
|
||
|
<li>Add support for coverage testing of VDBE programs using the
|
||
|
<a href="c3ref/c_testctrl_always.html">SQLITE_TESTCTRL_VDBE_COVERAGE</a> verb of <a href="c3ref/test_control.html">sqlite3_test_control()</a>.
|
||
|
<li>Update the _FILE_OFFSET_BITS macro so that builds work again on QNX.
|
||
|
<li>Change the datatype of SrcList.nSrc from type u8 to type int to work around
|
||
|
an issue in the C compiler on AIX.
|
||
|
<li>Get extension loading working on Cygwin.
|
||
|
<li>Bug fix: Fix the <a href="lang_corefunc.html#char">char()</a> SQL function so that it returns an empty string
|
||
|
rather than an "out of memory" error when called with zero arguments.
|
||
|
<li>Bug fix: DISTINCT now recognizes that a <a href="lang_corefunc.html#zeroblob">zeroblob</a> and a blob of all
|
||
|
0x00 bytes are the same thing.
|
||
|
<a href="http://www.sqlite.org/src/info/fccbde530a">Ticket [fccbde530a]</a>
|
||
|
<li>Bug fix: Compute the correct answer for queries that contain an IS NOT NULL
|
||
|
term in the WHERE clause and also contain an OR term in the WHERE clause and
|
||
|
are compiled with <a href="compile.html#enable_stat4">SQLITE_ENABLE_STAT4</a>.
|
||
|
<a href="http://www.sqlite.org/src/info/4c86b126f2">Ticket [4c86b126f2]</a>
|
||
|
<li>Bug fix: Make sure "rowid" columns are correctly resolved in joins between
|
||
|
normal tables and WITHOUT ROWID tables.
|
||
|
<a href="http://www.sqlite.org/src/info/c34d0557f7">Ticket [c34d0557f7]</a>
|
||
|
<li>Bug fix: Make sure the same temporary registers are not used in concurrent
|
||
|
co-routines used to implement compound SELECT statements containing ORDER
|
||
|
BY clauses, as such use can lead to incorrect answers.
|
||
|
<a href="http://www.sqlite.org/src/info/8c63ff0eca">Ticket [8c63ff0eca]</a>
|
||
|
<li>Bug fix: Ensure that "ORDER BY random()" clauses do not get optimized out.
|
||
|
<a href="http://www.sqlite.org/src/info/65bdeb9739">Ticket [65bdeb9739]</a>
|
||
|
<li>Bug fix: Repair a name-resolution error that can occur in sub-select statements
|
||
|
contained within a TRIGGER.
|
||
|
<a href="http://www.sqlite.org/src/info/4ef7e3cfca">Ticket [4ef7e3cfca]</a>
|
||
|
<li>Bug fix: Fix column default values expressions of the form
|
||
|
"DEFAULT(-(-9223372036854775808))" so that they work correctly, initializing
|
||
|
the column to a floating point value approximately equal to
|
||
|
+9223372036854775808.0.
|
||
|
<li>SQLITE_SOURCE_ID: "2014-03-10 12:20:37 530a1ee7dc2435f80960ce4710a3c2d2bfaaccc5"
|
||
|
<li>SHA1 for sqlite3.c: b0c22e5f15f5ba2afd017ecd990ea507918afe1c
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_3_1"></a>
|
||
|
<h3>2014-02-11 (3.8.3.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug (ticket <a href="http://www.sqlite.org/src/info/4c86b126f2">4c86b126f2</a>)
|
||
|
that causes rows to go missing on some queries with OR clauses and
|
||
|
IS NOT NULL operators in the WHERE clause, when 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 are used.
|
||
|
<li>Fix a harmless compiler warning that was causing problems for VS2013.
|
||
|
<li>SQLITE_SOURCE_ID: "2014-02-11 14:52:19 ea3317a4803d71d88183b29f1d3086f46d68a00e"
|
||
|
<li>SHA1 for sqlite3.c: 990004ef2d0eec6a339e4caa562423897fe02bf0
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_3"></a>
|
||
|
<h3>2014-02-03 (3.8.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Added support for <a href="lang_with.html">common table expressions</a> and the <a href="lang_with.html">WITH clause</a>.
|
||
|
<li>Added the <a href="lang_corefunc.html#printf">printf()</a> SQL function.
|
||
|
<li>Added <a href="c3ref/c_deterministic.html#sqlitedeterministic">SQLITE_DETERMINISTIC</a> as an optional bit in the 4th argument to the
|
||
|
<a href="c3ref/create_function.html">sqlite3_create_function()</a> and related interfaces, providing applications with
|
||
|
the ability to create new functions that can be factored out of inner loops when
|
||
|
they have constant arguments.
|
||
|
<li>Add <a href="rescode.html#readonly_dbmoved">SQLITE_READONLY_DBMOVED</a> error code, returned at the beginning of a
|
||
|
transaction, to indicate that the underlying database file has been renamed
|
||
|
or moved out from under SQLite.
|
||
|
<li>Allow arbitrary expressions, including function calls and subqueries, in
|
||
|
the filename argument to <a href="lang_attach.html">ATTACH</a>.
|
||
|
<li>Allow a <a href="lang_select.html#values">VALUES clause</a> to be used anywhere a <a href="lang_select.html">SELECT</a> statement is valid.
|
||
|
<li>Reseed the PRNG used by <a href="c3ref/randomness.html">sqlite3_randomness(N,P)</a> when invoked with N==0.
|
||
|
Automatically reseed after a fork() on unix.
|
||
|
<li>Enhance the <a href="spellfix1.html">spellfix1</a> virtual table so that it can search efficiently by rowid.
|
||
|
<li>Performance enhancements.
|
||
|
<li>Improvements to the comments in the VDBE byte-code display when running <a href="lang_explain.html">EXPLAIN</a>.
|
||
|
<li>Add the "%token_class" directive to <a href="lemon.html">Lemon parser generator</a> and use it to simplify
|
||
|
the grammar.
|
||
|
<li>Change the <a href="lemon.html">Lemon</a> source code to avoid calling C-library functions that OpenBSD
|
||
|
considers dangerous. (Ex: sprintf).
|
||
|
<li>Bug fix: In the <a href="cli.html">command-line shell</a> CSV import feature, do not end a field
|
||
|
when an escaped double-quote occurs at the end of a CRLN line.
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2014-02-03 13:52:03 e816dd924619db5f766de6df74ea2194f3e3b538"
|
||
|
<li>SHA1 for sqlite3.c: 98a07da78f71b0275e8d9c510486877adc31dbee
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_2"></a>
|
||
|
<h3>2013-12-06 (3.8.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Changed the defined behavior for the <a href="lang_expr.html#castexpr">CAST expression</a> when floating point values
|
||
|
greater than +9223372036854775807 are cast into into integers so that the
|
||
|
result is the largest possible integer, +9223372036854775807, instead of
|
||
|
the smallest possible integer, -9223372036854775808. After this change,
|
||
|
CAST(9223372036854775809.0 as INT) yields +9223372036854775807 instead
|
||
|
of -9223372036854775808.
|
||
|
<b><big>←</big> Potentially Incompatible Change!</b>
|
||
|
<li>Added support for <a href="withoutrowid.html">WITHOUT ROWID</a> tables.
|
||
|
<li>Added the <a href="optoverview.html#skipscan">skip-scan optimization</a> to the query planner.
|
||
|
<li>Extended the <a href="vtab.html">virtual table</a> interface, and in particular the
|
||
|
<a href="c3ref/index_info.html">sqlite3_index_info</a> object to allow a virtual table to report its estimate
|
||
|
on the number of rows that will be returned by a query.
|
||
|
<li>Update the <a href="rtree.html">R-Tree extension</a> to make use of the enhanced virtual table
|
||
|
interface.
|
||
|
<li>Add the <a href="compile.html#enable_explain_comments">SQLITE_ENABLE_EXPLAIN_COMMENTS</a> compile-time option.
|
||
|
<li>Enhanced the comments that are inserted into <a href="lang_explain.html">EXPLAIN</a> output when the
|
||
|
<a href="compile.html#enable_explain_comments">SQLITE_ENABLE_EXPLAIN_COMMENTS</a> compile-time option is enabled.
|
||
|
<li>Performance enhancements in the VDBE, especially to the OP_Column opcode.
|
||
|
<li>Factor constant subexpressions in inner loops out to the initialization code
|
||
|
in prepared statements.
|
||
|
<li>Enhanced the ".explain" output formatting of the <a href="cli.html">command-line shell</a>
|
||
|
so that loops are indented to better show the structure of the program.
|
||
|
<li>Enhanced the ".timer" feature of the <a href="cli.html">command-line shell</a> so that it
|
||
|
shows wall-clock time in addition to system and user times.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2013-12-06 14:53:30 27392118af4c38c5203a04b8013e1afdb1cebd0d"
|
||
|
<li>SHA1 for sqlite3.c: 6422c7d69866f5ea3db0968f67ee596e7114544e
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_1"></a>
|
||
|
<h3>2013-10-17 (3.8.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the <a href="lang_corefunc.html#unlikely">unlikely()</a> and <a href="lang_corefunc.html#likelihood">likelihood()</a> SQL functions to be used
|
||
|
as hints to the query planner.
|
||
|
<li>Enhancements to the query planner:
|
||
|
<ol type='a'>
|
||
|
<li>Take into account the fact WHERE clause terms that cannot be used with indices
|
||
|
still probably reduce the number of output rows.
|
||
|
<li>Estimate the sizes of table and index rows and use the smallest applicable B-Tree
|
||
|
for full scans and "count(*)" operations.
|
||
|
</ol>
|
||
|
<li>Added the <a href="pragma.html#pragma_soft_heap_limit">soft_heap_limit pragma</a>.
|
||
|
<li>Added support for <a href="compile.html#enable_stat4">SQLITE_ENABLE_STAT4</a>
|
||
|
<li>Added support for "sz=NNN" parameters at the end of
|
||
|
<a href="fileformat2.html#stat1tab">sqlite_stat1.stat</a> fields
|
||
|
used to specify the average length in bytes for table and index rows.
|
||
|
<li>Avoid running foreign-key constraint checks on an UPDATE if none of the
|
||
|
modified columns are associated with foreign keys.
|
||
|
<li>Added the <a href="compile.html#minimum_file_descriptor">SQLITE_MINIMUM_FILE_DESCRIPTOR</a> compile-time option
|
||
|
<li>Added the win32-longpath VFS on windows, permitting filenames up to 32K
|
||
|
characters in length.
|
||
|
<li>The <a href="lang_datefunc.html">Date And Time Functions</a> are enhanced so that the current time
|
||
|
(ex: julianday('now')) is always the same for multiple function invocations
|
||
|
within the same <a href="c3ref/step.html">sqlite3_step()</a> call.
|
||
|
<li>Add the "totype.c" extension, implementing the tointeger() and toreal()
|
||
|
SQL functions.
|
||
|
<li><a href="fts3.html#fts4">FTS4</a> queries are better able to make use of docid<$limit constraints to
|
||
|
limit the amount of I/O required.
|
||
|
<li>Added the hidden <a href="fts3.html#f4alid">fts4aux languageid column</a> to the <a href="fts3.html#fts4aux">fts4aux</a> virtual table.
|
||
|
<li>The <a href="lang_vacuum.html">VACUUM</a> command packs the database about 1% tighter.
|
||
|
<li>The sqlite3_analyzer utility program is updated to provide better descriptions
|
||
|
and to compute a more accurate estimate for "Non-sequential pages"
|
||
|
<li>Refactor the implementation of PRAGMA statements to improve parsing performance.
|
||
|
<li>The directory used to hold temporary files on unix can now be set using
|
||
|
the SQLITE_TMPDIR environment variable, which takes precedence over the
|
||
|
TMPDIR environment variable. The <a href="c3ref/temp_directory.html">sqlite3_temp_directory</a> global variable
|
||
|
still has higher precedence than both environment variables, however.
|
||
|
<li>Added the <a href="pragma.html#pragma_stats">PRAGMA stats</a> statement.
|
||
|
<li><b>Bug fix:</b> Return the correct answer for "SELECT count(*) FROM table" even if
|
||
|
there is a <a href="partialindex.html">partial index</a> on the table. Ticket
|
||
|
<a href="http://www.sqlite.org/src/info/a5c8ed66ca">a5c8ed66ca</a>.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2013-10-17 12:57:35 c78be6d786c19073b3a6730dfe3fb1be54f5657a"
|
||
|
<li>SHA1 for sqlite3.c: 0a54d76566728c2ba96292a49b138e4f69a7c391
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_0_2"></a>
|
||
|
<h3>2013-09-03 (3.8.0.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug in the optimization that attempts to omit unused LEFT JOINs
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2013-09-03 17:11:13 7dd4968f235d6e1ca9547cda9cf3bd570e1609ef"
|
||
|
<li>SHA1 for sqlite3.c: 6cf0c7b46975a87a0dc3fba69c229a7de61b0c21
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_0_1"></a>
|
||
|
<h3>2013-08-29 (3.8.0.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix an off-by-one error that caused quoted empty string at the end of a
|
||
|
CRNL-terminated line of CSV input to be misread by the command-line shell.
|
||
|
<li>Fix a query planner bug involving a LEFT JOIN with a BETWEEN or LIKE/GLOB
|
||
|
constraint and then another INNER JOIN to the right that involves an OR constraint.
|
||
|
<li>Fix a query planner bug that could result in a segfault when querying tables
|
||
|
with a UNIQUE or PRIMARY KEY constraint with more than four columns.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2013-08-29 17:35:01 352362bc01660edfbda08179d60f09e2038a2f49"
|
||
|
<li>SHA1 for sqlite3.c: 99906bf63e6cef63d6f3d7f8526ac4a70e76559e
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_8_0"></a>
|
||
|
<h3>2013-08-26 (3.8.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Add support for <a href="partialindex.html">partial indexes</a></li>
|
||
|
<li>Cut-over to the <a href="queryplanner-ng.html">next generation query planner</a> for faster and better query plans.
|
||
|
<li>The <a href="eqp.html">EXPLAIN QUERY PLAN</a> output no longer shows an estimate of the number of
|
||
|
rows generated by each loop in a join.
|
||
|
<li>Added the <a href="fts3.html#fts4notindexed">FTS4 notindexed option</a>, allowing non-indexed columns in an FTS4 table.
|
||
|
<li>Added the <a href="c3ref/c_stmtstatus_counter.html#sqlitestmtstatusvmstep">SQLITE_STMTSTATUS_VM_STEP</a> option to <a href="c3ref/stmt_status.html">sqlite3_stmt_status()</a>.
|
||
|
<li>Added the <a href="pragma.html#pragma_cache_spill">cache_spill pragma</a>.
|
||
|
<li>Added the <a href="pragma.html#pragma_query_only">query_only pragma</a>.
|
||
|
<li>Added the <a href="pragma.html#pragma_defer_foreign_keys">defer_foreign_keys pragma</a> and the
|
||
|
<a href="c3ref/db_status.html">sqlite3_db_status</a>(db, <a href="c3ref/c_dbstatus_options.html#sqlitedbstatusdeferredfks">SQLITE_DBSTATUS_DEFERRED_FKS</a>,...) C-language interface.
|
||
|
<li>Added the "percentile()" function as a <a href="loadext.html">loadable extension</a> in the ext/misc
|
||
|
subdirectory of the source tree.
|
||
|
<li>Added the <a href="compile.html#allow_uri_authority">SQLITE_ALLOW_URI_AUTHORITY</a> compile-time option.
|
||
|
<li>Add the <a href="c3ref/cancel_auto_extension.html">sqlite3_cancel_auto_extension(X)</a> interface.
|
||
|
<li>A running SELECT statement that lacks a FROM clause (or any other statement that
|
||
|
never reads or writes from any database file) will not prevent a read
|
||
|
transaction from closing.
|
||
|
<li>Add the <a href="compile.html#default_automatic_index">SQLITE_DEFAULT_AUTOMATIC_INDEX</a> compile-time option. Setting this option
|
||
|
to 0 disables automatic indices by default.
|
||
|
<li>Issue an <a href="rescode.html#warning_autoindex">SQLITE_WARNING_AUTOINDEX</a> warning on the <a href="c3ref/c_config_covering_index_scan.html#sqliteconfiglog">SQLITE_CONFIG_LOG</a> whenever
|
||
|
the query planner uses an automatic index.
|
||
|
<li>Added the <a href="compile.html#fts3_max_expr_depth">SQLITE_FTS3_MAX_EXPR_DEPTH</a> compile-time option.
|
||
|
<li>Added an optional 5th parameter defining the collating sequence to the
|
||
|
next_char() extension SQL function.
|
||
|
<li>The <a href="rescode.html#busy_snapshot">SQLITE_BUSY_SNAPSHOT</a> extended error code is returned in WAL mode when
|
||
|
a read transaction cannot be upgraded to a write transaction because the read is
|
||
|
on an older snapshot.
|
||
|
<li>Enhancements to the sqlite3_analyzer utility program to provide size
|
||
|
information separately for each individual index of a table, in addition to
|
||
|
the aggregate size.
|
||
|
<li>Allow read transactions to be freely opened and closed by SQL statements run
|
||
|
from within the implementation of <a href="appfunc.html">application-defined SQL functions</a> if the
|
||
|
function is called by a SELECT statement that does not access any database table.
|
||
|
<li>Disable the use of posix_fallocate() on all (unix) systems unless the
|
||
|
HAVE_POSIX_FALLOCATE compile-time option is used.
|
||
|
<li>Update the ".import" command in the <a href="cli.html">command-line shell</a> to support multi-line
|
||
|
fields and correct RFC-4180 quoting and to issue warning and/or error messages
|
||
|
if the input text is not strictly RFC-4180 compliant.
|
||
|
<li>Bug fix: In the <a href="fts3.html#unicode61">unicode61</a> tokenizer of <a href="fts3.html#fts4">FTS4</a>, treat all private code points
|
||
|
as identifier symbols.
|
||
|
<li>Bug fix: Bare identifiers in ORDER BY clauses bind more tightly to output column
|
||
|
names, but identifiers in expressions bind more tightly to input column names.
|
||
|
Identifiers in GROUP BY clauses always prefer output column names, however.
|
||
|
<li>Bug fixes: Multiple problems in the legacy query optimizer were fixed by the
|
||
|
move to <a href="queryplanner-ng.html">NGQP</a>.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2013-08-26 04:50:08 f64cd21e2e23ed7cff48f7dafa5e76adde9321c2"
|
||
|
<li>SHA1 for sqlite3.c: b7347f4b4c2a840e6ba12040093d606bd16ea21e
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_17"></a>
|
||
|
<h3>2013-05-20 (3.7.17)</h3><p><ol class='lessindent'>
|
||
|
<li>Add support for <a href="mmap.html">memory-mapped I/O</a>.
|
||
|
<li>Add the <a href="c3ref/strglob.html">sqlite3_strglob()</a> convenience interface.
|
||
|
<li>Assigned the integer at offset 68 in the <a href="fileformat2.html#database_header">database header</a> as the
|
||
|
<a href="fileformat2.html#appid">Application ID</a> for when SQLite is used as an <a href="appfileformat.html">application file-format</a>.
|
||
|
Added the <a href="pragma.html#pragma_application_id">PRAGMA application_id</a> command to query and set the Application ID.
|
||
|
<li>Report rollback recovery in the <a href="errlog.html">error log</a> as SQLITE_NOTICE_RECOVER_ROLLBACK.
|
||
|
Change the error log code for WAL recover from
|
||
|
SQLITE_OK to SQLITE_NOTICE_RECOVER_WAL.
|
||
|
<li>Report the risky uses of <a href="howtocorrupt.html#unlink">unlinked database files</a> and
|
||
|
<a href="howtocorrupt.html#alias">database filename aliasing</a> as SQLITE_WARNING messages in the <a href="errlog.html">error log</a>.
|
||
|
<li>Added the <a href="compile.html#trace_size_limit">SQLITE_TRACE_SIZE_LIMIT</a> compile-time option.
|
||
|
<li>Increase the default value of <a href="compile.html#max_schema_retry">SQLITE_MAX_SCHEMA_RETRY</a> to 50 and make sure
|
||
|
that it is honored in every place that a schema change might force a statement
|
||
|
retry.
|
||
|
<li>Add a new test harness called "mptester" used to verify correct operation
|
||
|
when multiple processes are using the same database file at the same time.
|
||
|
<li>Enhance the <a href="loadext.html">extension loading</a> mechanism to be more flexible (while
|
||
|
still maintaining backwards compatibility) in two ways:
|
||
|
<ol>
|
||
|
<li>If the default entry point "sqlite3_extension_init" is not present in
|
||
|
the loadable extension, also try an entry point "sqlite3_X_init" where
|
||
|
"X" is based on the shared library filename. This allows every extension
|
||
|
to have a different entry point, which allows them to be statically linked
|
||
|
with no code changes.
|
||
|
<li>The shared library filename passed to <a href="c3ref/load_extension.html">sqlite3_load_extension()</a> may
|
||
|
omit the filename suffix, and an appropriate architecture-dependent
|
||
|
suffix (".so", ".dylib", or ".dll") will be added automatically.
|
||
|
</ol>
|
||
|
<li>Added many new loadable extensions to the source tree, including
|
||
|
amatch, closure, fuzzer, ieee754, nextchar, regexp, spellfix,
|
||
|
and wholenumber. See header comments on each extension source file
|
||
|
for further information about what that extension does.
|
||
|
<li>Enhance <a href="fts3.html">FTS3</a> to avoid using excess stack space when there are a huge
|
||
|
number of terms on the right-hand side of the MATCH operator. A side-effect
|
||
|
of this change is that the MATCH operator can only accommodate 12 NEAR
|
||
|
operators at a time.
|
||
|
<li>Enhance the <a href="fts3.html#fts4aux">fts4aux</a> virtual table so that it can be a TEMP table.
|
||
|
<li>Added the <a href="fts3.html#fts3tok">fts3tokenize virtual table</a> to the <a href="fts3.html">full-text search</a> logic.
|
||
|
<li>Query planner enhancement: Use the transitive property of constraints
|
||
|
to move constraints into the outer loops of a join whenever possible,
|
||
|
thereby reducing the amount of work that needs to occur in inner loops.
|
||
|
<li>Discontinue the use of posix_fallocate() on unix, as it does not work on all
|
||
|
filesystems.
|
||
|
<li>Improved tracing and debugging facilities in the Windows <a href="vfs.html">VFS</a>.
|
||
|
<li>Bug fix: Fix a potential <b>database corruption bug</b>
|
||
|
in <a href="sharedcache.html">shared cache mode</a> when one
|
||
|
<a href="c3ref/sqlite3.html">database connection</a> is closed while another is in the middle of a write
|
||
|
transaction.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/e636a050b7">e636a050b7</a>
|
||
|
<li>Bug fix:
|
||
|
Only consider AS names from the result set as candidates for resolving
|
||
|
identifiers in the WHERE clause if there are no other matches. In the
|
||
|
ORDER BY clause, AS names take priority over any column names.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/2500cdb9be05">2500cdb9be05</a>
|
||
|
<li>Bug fix: Do not allow a virtual table to cancel the ORDER BY clause unless
|
||
|
all outer loops are guaranteed to return no more than one row result.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/ba82a4a41eac1">ba82a4a41eac1</a>.
|
||
|
<li>Bug fix: Do not suppress the ORDER BY clause on a virtual table query if
|
||
|
an IN constraint is used.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/f69b96e3076e">f69b96e3076e</a>.
|
||
|
<li>Bug fix: The <a href="cli.html">command-line shell</a> gives an exit code of 0 when terminated
|
||
|
using the ".quit" command.
|
||
|
<li>Bug fix: Make sure <a href="pragma.html#syntax">PRAGMA</a> statements appear in <a href="c3ref/profile.html">sqlite3_trace()</a> output.
|
||
|
<li>Bug fix: When a <a href="lang_select.html#compound">compound query</a> that uses an ORDER BY clause
|
||
|
with a <a href="lang_expr.html#collateop">COLLATE operator</a>, make sure that the sorting occurs
|
||
|
according to the specified collation and that the comparisons associate with
|
||
|
the compound query use the native collation. Ticket
|
||
|
<a href="http://www.sqlite.org/src/info/6709574d2a8d8">6709574d2a8d8</a>.
|
||
|
<li>Bug fix: Makes sure the <a href="c3ref/set_authorizer.html">authorizer</a> callback gets
|
||
|
a valid pointer to the string "ROWID" for the column-name parameter when
|
||
|
doing an <a href="lang_update.html">UPDATE</a> that changes the rowid. Ticket
|
||
|
<a href="http://www.sqlite.org/src/info/0eb70d77cb05bb2272">0eb70d77cb05bb2272</a>
|
||
|
<li>Bug fix: Do not move WHERE clause terms inside OR expressions that are
|
||
|
contained within an ON clause of a LEFT JOIN. Ticket
|
||
|
<a href="http://www.sqlite.org/src/info/f2369304e4">f2369304e4</a>
|
||
|
<li>Bug fix: Make sure an error is always reported when attempting to preform
|
||
|
an operation that requires a <a href="datatype3.html#collation">collating sequence</a> that is missing.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/0fc59f908b">0fc59f908b</a>
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668"
|
||
|
<li>SHA1 for sqlite3.c: 246987605d0503c700a08b9ee99a6b5d67454aab
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_16_2"></a>
|
||
|
<h3>2013-04-12 (3.7.16.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug (present since version 3.7.13) that could result in database corruption
|
||
|
on windows if two or more processes try to access the same database file at the
|
||
|
same time and immediately after third process crashed in the middle of committing
|
||
|
to that same file. See ticket
|
||
|
<a href="http://www.sqlite.org/src/info/7ff3120e4f">7ff3120e4f</a> for further
|
||
|
information.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2013-04-12 11:52:43 cbea02d93865ce0e06789db95fd9168ebac970c7"
|
||
|
<li>SHA1 for sqlite3.c: d466b54789dff4fb0238b9232e74896deaefab94
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_16_1"></a>
|
||
|
<h3>2013-03-29 (3.7.16.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix for a bug in the ORDER BY optimizer that was introduced in
|
||
|
<a href="#version_3_7_15">version 3.7.15</a> which would sometimes optimize out the sorting step
|
||
|
when in fact the sort was required.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/a179fe7465">a179fe7465</a>
|
||
|
<li>Fix a long-standing bug in the <a href="lang_expr.html#castexpr">CAST expression</a> that would recognize UTF16
|
||
|
characters as digits even if their most-significant-byte was not zero.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/689137afb6da41">689137afb6da41</a>.
|
||
|
<li>Fix a bug in the NEAR operator of <a href="fts3.html">FTS3</a> when applied to subfields.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/38b1ae018f">38b1ae018f</a>.
|
||
|
<li>Fix a long-standing bug in the storage engine that would (very rarely)
|
||
|
cause a spurious report of an SQLITE_CORRUPT error but which was otherwise
|
||
|
harmless.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/6bfb98dfc0c">6bfb98dfc0c</a>.
|
||
|
<li>The SQLITE_OMIT_MERGE_SORT option has been removed. The merge sorter is
|
||
|
now a required component of SQLite.
|
||
|
<li>Fixed lots of spelling errors in the source-code comments
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2013-03-29 13:44:34 527231bc67285f01fb18d4451b28f61da3c4e39d"
|
||
|
<li>SHA1 for sqlite3.c: 7a91ceceac9bcf47ceb8219126276e5518f7ff5a
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_16"></a>
|
||
|
<h3>2013-03-18 (3.7.16)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the <a href="pragma.html#pragma_foreign_key_check">PRAGMA foreign_key_check</a> command.
|
||
|
<li>Added new extended error codes for all SQLITE_CONSTRAINT errors
|
||
|
<li>Added the SQLITE_READONLY_ROLLBACK extended error code for when a database
|
||
|
cannot be opened because it needs rollback recovery but is read-only.
|
||
|
<li>Added SQL functions <a href="lang_corefunc.html#unicode">unicode(A)</a> and <a href="lang_corefunc.html#char">char(X1,...,XN)</a>.
|
||
|
<li>Performance improvements for <a href="pragma.html#pragma_incremental_vacuum">PRAGMA incremental_vacuum</a>, especially in
|
||
|
cases where the number of free pages is greater than what will fit on a
|
||
|
single trunk page of the freelist.
|
||
|
<li>Improved optimization of queries containing aggregate min() or max().
|
||
|
<li>Enhance virtual tables so that they can potentially use an index when
|
||
|
the WHERE clause contains the IN operator.
|
||
|
<li>Allow indices to be used for sorting even if prior terms of the index
|
||
|
are constrained by IN operators in the WHERE clause.
|
||
|
<li>Enhance the <a href="pragma.html#pragma_table_info">PRAGMA table_info</a> command so that the "pk" column is an
|
||
|
increasing integer to show the order of columns in the primary key.
|
||
|
<li>Enhance the query optimizer to exploit transitive join constraints.
|
||
|
<li>Performance improvements in the query optimizer.
|
||
|
<li>Allow the error message from <a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a> to be longer than
|
||
|
20000 bytes.
|
||
|
<li>Improved name resolution for deeply nested queries.
|
||
|
<li>Added the test_regexp.c module as a demonstration of how to implement
|
||
|
the REGEXP operator.
|
||
|
<li>Improved error messages in the <a href="rtree.html">RTREE</a> extension.
|
||
|
<li>Enhance the <a href="cli.html">command-line shell</a> so that a non-zero argument to the
|
||
|
".exit" command causes the shell to exit immediately without cleanly
|
||
|
shutting down the database connection.
|
||
|
<li>Improved error messages for invalid boolean arguments to dot-commands
|
||
|
in the <a href="cli.html">command-line shell</a>.
|
||
|
<li>Improved error messages for "foreign key mismatch" showing the names of
|
||
|
the two tables involved.
|
||
|
<li>Remove all uses of umask() in the unix VFS.
|
||
|
<li>Added the <a href="pragma.html#pragma_vdbe_addoptrace">PRAGMA vdbe_addoptrace</a> and <a href="pragma.html#pragma_vdbe_debug">PRAGMA vdbe_debug</a> commands.
|
||
|
<li>Change to use strncmp() or the equivalent instead of memcmp() when
|
||
|
comparing non-zero-terminated strings.
|
||
|
<li>Update cygwin interfaces to omit deprecated API calls.
|
||
|
<li>Enhance the <a href="spellfix1.html">spellfix1</a> extension so that the edit distance cost table can
|
||
|
be changed at runtime by inserting a string like 'edit_cost_table=TABLE'
|
||
|
into the "command" field.
|
||
|
|
||
|
<li>Bug fix: repair a long-standing problem that could cause incorrect query
|
||
|
results in a 3-way or larger join that compared INTEGER fields against TEXT
|
||
|
fields in two or more places.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/fc7bd6358f">fc7bd6358f</a>
|
||
|
<li>Bug fix: Issue an error message if the 16-bit reference counter on a
|
||
|
view overflows due to an overly complex query.
|
||
|
<li>Bug fix: Avoid leaking memory on LIMIT and OFFSET clauses in deeply
|
||
|
nested UNION ALL queries.
|
||
|
<li>Bug fix: Make sure the schema is up-to-date prior to running pragmas
|
||
|
table_info, index_list, index_info, and foreign_key_list.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2013-03-18 11:39:23 66d5f2b76750f3520eb7a495f6247206758f5b90"
|
||
|
<li>SHA1 for sqlite3.c: 7308ab891ca1b2ebc596025cfe4dc36f1ee89cf6
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_15_2"></a>
|
||
|
<h3>2013-01-09 (3.7.15.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug, introduced in <a href="#version_3_7_15">version 3.7.15</a>, that causes an ORDER BY clause
|
||
|
to be optimized out of a three-way join when the ORDER BY is actually
|
||
|
required.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/598f5f7596b055">598f5f7596b055</a>
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2013-01-09 11:53:05 c0e09560d26f0a6456be9dd3447f5311eb4f238f"
|
||
|
<li>SHA1 for sqlite3.c: 5741f47d1bc38aa0a8c38f09e60a5fe0031f272d
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_15_1"></a>
|
||
|
<h3>2012-12-19 (3.7.15.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug, introduced in <a href="#version_3_7_15">version 3.7.15</a>, that causes a segfault if
|
||
|
the AS name of a result column of a SELECT statement is used as a logical
|
||
|
term in the WHERE clause. Ticket
|
||
|
<a href="http://www.sqlite.org/src/info/a7b7803e8d1e869">a7b7803e8d1e869</a>.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2012-12-19 20:39:10 6b85b767d0ff7975146156a99ad673f2c1a23318"
|
||
|
<li>SHA1 for sqlite3.c: bbbaa68061e925bd4d7d18d7e1270935c5f7e39a
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_15"></a>
|
||
|
<h3>2012-12-12 (3.7.15)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the <a href="c3ref/errcode.html">sqlite3_errstr()</a> interface.
|
||
|
<li>Avoid invoking the <a href="c3ref/profile.html">sqlite3_trace()</a> callback multiple times when a
|
||
|
statement is automatically reprepared due to <a href="rescode.html#schema">SQLITE_SCHEMA</a> errors.
|
||
|
<li>Added support for Windows Phone 8 platforms
|
||
|
<li>Enhance IN operator processing to make use of indices with numeric
|
||
|
affinities.
|
||
|
<li>Do full-table scans using covering indices when possible, under the
|
||
|
theory that an index will be smaller and hence can be scanned with
|
||
|
less I/O.
|
||
|
<li>Enhance the query optimizer so that ORDER BY clauses are more aggressively
|
||
|
optimized, especially in joins where various terms of the ORDER BY clause
|
||
|
come from separate tables of the join.
|
||
|
<li>Add the ability to implement FROM clause subqueries as coroutines rather
|
||
|
that manifesting the subquery into a temporary table.
|
||
|
<li>Enhancements the command-line shell:
|
||
|
<ol type='a'>
|
||
|
<li>Added the ".print" command
|
||
|
<li>Negative numbers in the ".width" command cause right-alignment
|
||
|
<li>Add the ".wheretrace" command when compiled with SQLITE_DEBUG
|
||
|
</ol>
|
||
|
<li>Added the <a href="pragma.html#pragma_busy_timeout">busy_timeout pragma</a>.
|
||
|
<li>Added the <a href="lang_corefunc.html#instr">instr()</a> SQL function.
|
||
|
<li>Added the <a href="c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlbusyhandler">SQLITE_FCNTL_BUSYHANDLER</a> file control, used to allow VFS
|
||
|
implementations to get access to the busy handler callback.
|
||
|
<li>The xDelete method in the built-in <a href="vfs.html">VFSes</a> now return
|
||
|
SQLITE_IOERR_DELETE_NOENT if the file to be deleted does not exist.
|
||
|
<li>Enhanced support for QNX.
|
||
|
<li>Work around an optimizer bug in the MSVC compiler when targeting ARM.
|
||
|
<li>Bug fix: Avoid various concurrency problems in <a href="sharedcache.html">shared cache mode</a>.
|
||
|
<li>Bug fix: Avoid a deadlock or crash if the <a href="backup.html">backup API</a>, <a href="sharedcache.html">shared cache</a>,
|
||
|
and the SQLite Encryption Extension are all used at once.
|
||
|
<li>Bug fix: SQL functions created using the TCL interface honor the
|
||
|
"nullvalue" setting.
|
||
|
<li>Bug fix: Fix a 32-bit overflow problem on CREATE INDEX for databases
|
||
|
larger than 16GB.
|
||
|
<li>Bug fix: Avoid segfault when using the <a href="lang_expr.html#collateop">COLLATE operator</a> inside of a
|
||
|
<a href="lang_createtable.html#ckconst">CHECK constraint</a> or <a href="lang_createview.html">view</a> in <a href="sharedcache.html">shared cache mode</a>.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2012-12-12 13:36:53 cd0b37c52658bfdf992b1e3dc467bae1835a94ae"
|
||
|
<li>SHA1 for sqlite3.c: 2b413611f5e3e3b6ef5f618f2a9209cdf25cbcff"
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_14_1"></a>
|
||
|
<h3>2012-10-04 (3.7.14.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug (ticket
|
||
|
<a href="www.sqlite.org/src/tktview/d02e1406a58ea02d">[d02e1406a58ea02d]]</a>)
|
||
|
that causes a segfault on a LEFT JOIN that includes an OR in the ON clause.
|
||
|
<li>Work around a bug in the optimizer in the VisualStudio-2012 compiler that
|
||
|
causes invalid code to be generated when compiling SQLite on ARM.
|
||
|
<li>Fix the TCL interface so that the "nullvalue" setting is honored for
|
||
|
TCL implementations of SQL functions.
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2012-10-04 19:37:12 091570e46d04e84b67228e0bdbcd6e1fb60c6bdb"
|
||
|
<li>SHA1 for sqlite3.c: 62aaecaacab3a4bf4a8fe4aec1cfdc1571fe9a44
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_14"></a>
|
||
|
<h3>2012-09-03 (3.7.14)</h3><p><ol class='lessindent'>
|
||
|
<li>Drop built-in support for OS/2. If you need to upgrade an OS/2
|
||
|
application to use this or a later version of SQLite,
|
||
|
then add an application-defined <a href="vfs.html">VFS</a> using the
|
||
|
<a href="c3ref/vfs_find.html">sqlite3_vfs_register()</a> interface. The code removed in this release can
|
||
|
serve as a baseline for the application-defined VFS.
|
||
|
<li>Ensure that floating point values are preserved exactly when reconstructing
|
||
|
a database from the output of the ".dump" command of the
|
||
|
<a href="cli.html">command-line shell</a>.
|
||
|
<li>Added the <a href="c3ref/close.html">sqlite3_close_v2()</a> interface.
|
||
|
<li>Updated the <a href="cli.html">command-line shell</a> so that it can be built using
|
||
|
<a href="compile.html#omit_floating_point">SQLITE_OMIT_FLOATING_POINT</a> and <a href="compile.html#omit_autoinit">SQLITE_OMIT_AUTOINIT</a>.
|
||
|
<li>Improvements to the windows makefiles and build processes.
|
||
|
<li>Enhancements to <a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a> and <a href="pragma.html#pragma_quick_check">PRAGMA quick_check</a> so that
|
||
|
they can optionally check just a single attached database instead of all
|
||
|
attached databases.
|
||
|
<li>Enhancements to <a href="wal.html">WAL mode</a> processing that ensure that at least one
|
||
|
valid read-mark is available at all times, so that read-only processes
|
||
|
can always read the database.
|
||
|
<li>Performance enhancements in the sorter used by ORDER BY and CREATE INDEX.
|
||
|
<li>Added the <a href="compile.html#disable_fts4_deferred">SQLITE_DISABLE_FTS4_DEFERRED</a> compile-time option.
|
||
|
<li>Better handling of aggregate queries where the aggregate functions are
|
||
|
contained within subqueries.
|
||
|
<li>Enhance the query planner so that it will try to use a <a href="queryplanner.html#covidx">covering index</a>
|
||
|
on queries that make use of <a href="optoverview.html#or_opt">or optimization</a>.
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2012-09-03 15:42:36 c0d89d4a9752922f9e367362366efde4f1b06f2a"
|
||
|
<li>SHA1 for sqlite3.c: 5fdf596b29bb426001f28b488ff356ae14d5a5a6
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_13"></a>
|
||
|
<h3>2012-06-11 (3.7.13)</h3><p><ol class='lessindent'>
|
||
|
<li><a href="inmemorydb.html">In-memory databases</a> that are specified using
|
||
|
<a href="uri.html">URI filenames</a> are allowed to use <a href="sharedcache.html#inmemsharedcache">shared cache</a>,
|
||
|
so that the same
|
||
|
in-memory database can be accessed from multiple database connections.
|
||
|
<li>Recognize and use the <a href="uri.html#coreqp">mode=memory</a> query parameter in
|
||
|
<a href="uri.html">URI filenames</a>.
|
||
|
<li>Avoid resetting the schema of <a href="sharedcache.html">shared cache</a> connections when any one
|
||
|
connection closes. Instead, wait for the last connection to close before
|
||
|
resetting the schema.
|
||
|
<li>In the <a href="rtree.html">RTREE</a> extension, when rounding 64-bit floating point numbers
|
||
|
to 32-bit for storage, always round in a direction that causes the
|
||
|
bounding box to get larger.
|
||
|
<li>Adjust the unix driver to avoid unnecessary calls to fchown().
|
||
|
<li>Add interfaces sqlite3_quota_ferror() and sqlite3_quota_file_available()
|
||
|
to the test_quota.c module.
|
||
|
<li>The <a href="c3ref/create_module.html">sqlite3_create_module()</a> and <a href="c3ref/create_module.html">sqlite3_create_module_v2()</a> interfaces
|
||
|
return SQLITE_MISUSE on any attempt to overload or replace a <a href="vtab.html">virtual table</a>
|
||
|
module. The destructor is always called in this case, in accordance with
|
||
|
historical and current documentation.
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2012-06-11 02:05:22 f5b5a13f7394dc143aa136f1d4faba6839eaa6dc"
|
||
|
<li>SHA1 for sqlite3.c: ff0a771d6252545740ba9685e312b0e3bb6a641b
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_12_1"></a>
|
||
|
<h3>2012-05-22 (3.7.12.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug
|
||
|
<a href="http://www.sqlite.org/src/info/c2ad16f997ee9c">(ticket c2ad16f997)</a>
|
||
|
in the 3.7.12 release that can cause a segfault for certain
|
||
|
obscure nested aggregate queries.
|
||
|
<li>Fix various other minor test script problems.
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2012-05-22 02:45:53 6d326d44fd1d626aae0e8456e5fa2049f1ce0789"
|
||
|
<li>SHA1 for sqlite3.c: d494e8d81607f0515d4f386156fb0fd86d5ba7df
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_12"></a>
|
||
|
<h3>2012-05-14 (3.7.12)</h3><p><ol class='lessindent'>
|
||
|
<li>Add the <a href="c3ref/c_dbstatus_options.html#sqlitedbstatuscachewrite">SQLITE_DBSTATUS_CACHE_WRITE</a> option for <a href="c3ref/db_status.html">sqlite3_db_status()</a>.
|
||
|
<li>Optimize the <a href="lang_corefunc.html#typeof">typeof()</a> and <a href="lang_corefunc.html#length">length()</a> SQL functions so that they avoid
|
||
|
unnecessary reading of database content from disk.
|
||
|
<li>Add the <a href="fts3.html#*fts4mergecmd">FTS4 "merge" command</a>, the <a href="fts3.html#*fts4automergecmd">FTS4 "automerge" command</a>, and
|
||
|
the <a href="fts3.html#*fts4ickcmd">FTS4 "integrity-check" command</a>.
|
||
|
<li>Report the name of specific <a href="lang_createtable.html#ckconst">CHECK</a> constraints that fail.
|
||
|
<li>In the command-line shell, use popen() instead of fopen() if the first
|
||
|
character of the argument to the ".output" command is "|".
|
||
|
<li>Make use of OVERLAPPED in the windows <a href="vfs.html">VFS</a> to avoid some system calls
|
||
|
and thereby obtain a performance improvement.
|
||
|
<li>More aggressive optimization of the AND operator when one side or the
|
||
|
other is always false.
|
||
|
<li>Improved performance of queries with many OR-connected terms in the
|
||
|
WHERE clause that can all be indexed.
|
||
|
<li>Add the <a href="compile.html#rtree_int_only">SQLITE_RTREE_INT_ONLY</a> compile-time option to force the
|
||
|
<a href="rtree.html">R*Tree Extension Module</a> to use integer instead of
|
||
|
floating point values for both storage and computation.
|
||
|
<li>Enhance the <a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a> command to use much less memory when
|
||
|
processing multi-gigabyte databases.
|
||
|
<li>New interfaces added to the test_quota.c add-on module.
|
||
|
<li>Added the ".trace" dot-command to the command-line shell.
|
||
|
<li>Allow virtual table constructors to be invoked recursively.
|
||
|
<li>Improved optimization of ORDER BY clauses on compound queries.
|
||
|
<li>Improved optimization of aggregate subqueries contained within an
|
||
|
aggregate query.
|
||
|
<li>Bug fix: Fix the <a href="lang_savepoint.html">RELEASE</a> command so that it does not cancel pending
|
||
|
queries. This repairs a problem introduced in 3.7.11.
|
||
|
<li>Bug fix: Do not discard the DISTINCT as superfluous unless a subset of
|
||
|
the result set is subject to a UNIQUE constraint <em>and</em> it none
|
||
|
of the columns in that subset can be NULL.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/385a5b56b9">385a5b56b9</a>.
|
||
|
<li>Bug fix: Do not optimize away an ORDER BY clause that has the same terms
|
||
|
as a UNIQUE index unless those terms are also NOT NULL.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/2a5629202f">2a5629202f</a>.
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2012-05-14 01:41:23 8654aa9540fe9fd210899d83d17f3f407096c004"
|
||
|
<li>SHA1 for sqlite3.c: 57e2104a0f7b3f528e7f6b7a8e553e2357ccd2e1
|
||
|
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_11"></a>
|
||
|
<h3>2012-03-20 (3.7.11)</h3><p><ol class='lessindent'>
|
||
|
<li>Enhance the <a href="lang_insert.html">INSERT</a> syntax to allow multiple rows to be inserted
|
||
|
via the VALUES clause.
|
||
|
<li>Enhance the <a href="lang_createvtab.html">CREATE VIRTUAL TABLE</a> command to support the
|
||
|
IF NOT EXISTS clause.
|
||
|
<li>Added the <a href="c3ref/stricmp.html">sqlite3_stricmp()</a> interface as a counterpart to
|
||
|
<a href="c3ref/stricmp.html">sqlite3_strnicmp()</a>.
|
||
|
<li>Added the <a href="c3ref/db_readonly.html">sqlite3_db_readonly()</a> interface.
|
||
|
<li>Added the <a href="c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlpragma">SQLITE_FCNTL_PRAGMA</a> file control, giving <a href="vfs.html">VFS</a> implementations
|
||
|
the ability to add new <a href="pragma.html#syntax">PRAGMA</a> statements or to override built-in
|
||
|
PRAGMAs.
|
||
|
<li>Queries of the form: "SELECT max(x), y FROM table" returns the
|
||
|
value of y on the same row that contains the maximum x value.
|
||
|
<li>Added support for the <a href="fts3.html#*fts4languageid">FTS4 languageid option</a>.
|
||
|
<li>Documented support for the <a href="fts3.html#*fts4content">FTS4 content option</a>. This feature has
|
||
|
actually been in the code since <a href="#version_3_7_9">version 3.7.9</a> but is only now considered
|
||
|
to be officially supported.
|
||
|
<li>Pending statements no longer block <a href="lang_transaction.html">ROLLBACK</a>. Instead, the pending
|
||
|
statement will return SQLITE_ABORT upon next access after the ROLLBACK.
|
||
|
<li>Improvements to the handling of CSV inputs in the <a href="cli.html">command-line shell</a>
|
||
|
<li>Fix a <a href="http://www.sqlite.org/src/info/b7c8682cc1">bug</a> introduced
|
||
|
in <a href="#version_3_7_10">version 3.7.10</a> that might cause a LEFT JOIN
|
||
|
to be incorrectly converted into an INNER JOIN if the WHERE clause
|
||
|
indexable terms connected by OR.
|
||
|
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2012-03-20 11:35:50 00bb9c9ce4f465e6ac321ced2a9d0062dc364669"
|
||
|
<li>SHA1 for sqlite3.c: d460d7eda3a9dccd291aed2a9fda868b9b120a10
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_10"></a>
|
||
|
<h3>2012-01-16 (3.7.10)</h3><p><ol class='lessindent'>
|
||
|
<li>The default <a href="fileformat2.html#schemaformat">schema format number</a> is changed from 1 to 4.
|
||
|
This means that, unless
|
||
|
the <a href="pragma.html#pragma_legacy_file_format">PRAGMA legacy_file_format=ON</a> statement is
|
||
|
run, newly created database files will be unreadable by version of SQLite
|
||
|
prior to 3.3.0 (2006-01-10). It also means that the <a href="lang_createindex.html#descidx">descending indices</a>
|
||
|
are enabled by default.
|
||
|
<li>The sqlite3_pcache_methods structure and the <a href="c3ref/c_config_covering_index_scan.html#sqliteconfigpcache">SQLITE_CONFIG_PCACHE</a>
|
||
|
and <a href="c3ref/c_config_covering_index_scan.html#sqliteconfiggetpcache">SQLITE_CONFIG_GETPCACHE</a> configuration parameters are deprecated.
|
||
|
They are replaced by a new <a href="c3ref/pcache_methods2.html">sqlite3_pcache_methods2</a> structure and
|
||
|
<a href="c3ref/c_config_covering_index_scan.html#sqliteconfigpcache2">SQLITE_CONFIG_PCACHE2</a> and <a href="c3ref/c_config_covering_index_scan.html#sqliteconfiggetpcache2">SQLITE_CONFIG_GETPCACHE2</a> configuration
|
||
|
parameters.
|
||
|
<li>Added the <a href="psow.html">powersafe overwrite</a> property to the VFS interface. Provide
|
||
|
the <a href="c3ref/c_iocap_atomic.html">SQLITE_IOCAP_POWERSAFE_OVERWRITE</a> I/O capability, the
|
||
|
<a href="compile.html#powersafe_overwrite">SQLITE_POWERSAFE_OVERWRITE</a> compile-time option, and the
|
||
|
"psow=BOOLEAN" query parameter for <a href="uri.html">URI filenames</a>.
|
||
|
<li>Added the <a href="c3ref/db_release_memory.html">sqlite3_db_release_memory()</a> interface and the
|
||
|
<a href="pragma.html#pragma_shrink_memory">shrink_memory pragma</a>.
|
||
|
<li>Added the <a href="c3ref/db_filename.html">sqlite3_db_filename()</a> interface.
|
||
|
<li>Added the <a href="c3ref/stmt_busy.html">sqlite3_stmt_busy()</a> interface.
|
||
|
<li>Added the <a href="c3ref/uri_boolean.html">sqlite3_uri_boolean()</a> and <a href="c3ref/uri_boolean.html">sqlite3_uri_int64()</a> interfaces.
|
||
|
<li>If the argument to <a href="pragma.html#pragma_cache_size">PRAGMA cache_size</a> is negative N, that means to use
|
||
|
approximately -1024*N bytes of memory for the page cache regardless of
|
||
|
the page size.
|
||
|
<li>Enhanced the default memory allocator to make use of _msize() on windows,
|
||
|
malloc_size() on Mac, and malloc_usable_size() on Linux.
|
||
|
<li>Enhanced the query planner to support index queries with range constraints
|
||
|
on the rowid.
|
||
|
<li>Enhanced the query planner flattening logic to allow UNION ALL compounds
|
||
|
to be promoted upwards to replace a simple wrapper SELECT even if the
|
||
|
compounds are joins.
|
||
|
<li>Enhanced the query planner so that the xfer optimization can be used with
|
||
|
INTEGER PRIMARY KEY ON CONFLICT as long as the destination table is
|
||
|
initially empty.
|
||
|
<li>Enhanced the windows <a href="vfs.html">VFS</a> so that all system calls can be overridden
|
||
|
using the xSetSystemCall interface.
|
||
|
<li>Updated the "unix-dotfile" <a href="vfs.html">VFS</a> to use locking directories with mkdir()
|
||
|
and rmdir() instead of locking files with open() and unlink().
|
||
|
<li>Enhancements to the test_quota.c extension to support stdio-like interfaces
|
||
|
with quotas.
|
||
|
<li>Change the unix <a href="vfs.html">VFS</a> to be tolerant of read() system calls that return
|
||
|
less then the full number of requested bytes.
|
||
|
<li>Change both unix and windows <a href="vfs.html">VFSes</a> to report a sector size of 4096
|
||
|
instead of the old default of 512.
|
||
|
<li>In the <a href="tclsqlite.html">TCL Interface</a>, add the -uri option to the "sqlite3" TCL command
|
||
|
used for creating new database connection objects.
|
||
|
<li>Added the <a href="c3ref/c_testctrl_always.html">SQLITE_TESTCTRL_EXPLAIN_STMT</a> test-control option with the
|
||
|
<a href="compile.html#enable_tree_explain">SQLITE_ENABLE_TREE_EXPLAIN</a> compile-time option to enable the
|
||
|
<a href="cli.html">command-line shell</a> to display ASCII-art parse trees of SQL statements
|
||
|
that it processes, for debugging and analysis.
|
||
|
<li><b>Bug fix:</b>
|
||
|
Add an additional xSync when restarting a WAL in order to prevent an
|
||
|
exceedingly unlikely but theoretically possible
|
||
|
database corruption following power-loss.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/ff5be73dee">ff5be73dee</a>.
|
||
|
<li><b>Bug fix:</b>
|
||
|
Change the VDBE so that all registers are initialized to Invalid
|
||
|
instead of NULL.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/7bbfb7d442">7bbfb7d442</a>
|
||
|
<li><b>Bug fix:</b>
|
||
|
Fix problems that can result from 32-bit integer overflow.
|
||
|
Ticket <a href="http://www.sqlite.org/src/info/ac0ff496b7e2">ac00f496b7e2</a>
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2012-01-16 13:28:40 ebd01a8deffb5024a5d7494eef800d2366d97204"
|
||
|
<li>SHA1 for sqlite3.c: 6497cbbaad47220bd41e2e4216c54706e7ae95d4
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_9"></a>
|
||
|
<h3>2011-11-01 (3.7.9)</h3><p><ol class='lessindent'>
|
||
|
<li>If a search token (on the right-hand side of the MATCH operator) in
|
||
|
<a href="fts3.html#fts4">FTS4</a> begins with "^" then that token must be the first in its field
|
||
|
of the document. <b>** Potentially Incompatible Change **</b>
|
||
|
<li>Added options <a href="c3ref/c_dbstatus_options.html#sqlitedbstatuscachehit">SQLITE_DBSTATUS_CACHE_HIT</a> and <a href="c3ref/c_dbstatus_options.html#sqlitedbstatuscachemiss">SQLITE_DBSTATUS_CACHE_MISS</a>
|
||
|
to the <a href="c3ref/db_status.html">sqlite3_db_status()</a> interface.
|
||
|
<li>Removed support for <a href="compile.html#enable_stat2">SQLITE_ENABLE_STAT2</a>, replacing it with the much
|
||
|
more capable <a href="compile.html#enable_stat3">SQLITE_ENABLE_STAT3</a> option.
|
||
|
<li>Enhancements to the sqlite3_analyzer utility program, including the
|
||
|
--pageinfo and --stats options and support for multiplexed databases.
|
||
|
<li>Enhance the <a href="c3ref/data_count.html">sqlite3_data_count()</a> interface so that it can be used to
|
||
|
determine if SQLITE_DONE has been seen on the prepared statement.
|
||
|
<li>Added the <a href="c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntloverwrite">SQLITE_FCNTL_OVERWRITE</a> file-control by which the SQLite core
|
||
|
indicates to the VFS that the current transaction will overwrite the
|
||
|
entire database file.
|
||
|
<li>Increase the default <a href="malloc.html#lookaside">lookaside memory allocator</a> allocation size from
|
||
|
100 to 128 bytes.
|
||
|
<li>Enhanced the query planner so that it can factor terms in and out of
|
||
|
OR expressions in the WHERE clause in an effort to find better indices.
|
||
|
<li>Added the <a href="compile.html#direct_overflow_read">SQLITE_DIRECT_OVERFLOW_READ</a> compile-time option, causing
|
||
|
<a href="fileformat2.html#ovflpgs">overflow pages</a> to be read directly from the database file,
|
||
|
bypassing the <a href="c3ref/pcache_methods2.html">page cache</a>.
|
||
|
<li>Remove limits on the magnitude of precision and width value in the
|
||
|
format specifiers of the <a href="c3ref/mprintf.html">sqlite3_mprintf()</a> family of string rendering
|
||
|
routines.
|
||
|
<li>Fix a bug that prevent <a href="lang_altertable.html">ALTER TABLE ... RENAME</a> from working
|
||
|
on some virtual tables in a database with a UTF16 encoding.
|
||
|
<li>Fix a bug in ASCII-to-float conversion that causes slow performance and
|
||
|
incorrect results when converting numbers with ridiculously large exponents.
|
||
|
<li>Fix a bug that causes incorrect results in aggregate queries that use
|
||
|
multiple aggregate functions whose arguments contain complicated expressions
|
||
|
that differ only in the case of string literals contained within those
|
||
|
expressions.
|
||
|
<li>Fix a bug that prevented the <a href="pragma.html#pragma_page_count">page_count</a> and <a href="pragma.html#pragma_quick_check">quick_check</a> pragmas from
|
||
|
working correctly if their names were capitalized.
|
||
|
<li>Fix a bug that caused <a href="lang_vacuum.html">VACUUM</a> to fail if the <a href="pragma.html#pragma_count_changes">count_changes pragma</a> was
|
||
|
engaged.
|
||
|
<li>Fix a bug in <a href="vtab.html">virtual table</a> implementation that causes a crash if
|
||
|
an <a href="fts3.html#fts4">FTS4</a> table is <a href="lang_droptable.html">dropped</a> inside a transaction and
|
||
|
a <a href="lang_savepoint.html">SAVEPOINT</a> occurs afterwards.
|
||
|
<li>SQLITE_SOURCE_ID:
|
||
|
"2011-11-01 00:52:41 c7c6050ef060877ebe77b41d959e9df13f8c9b5e"
|
||
|
<li>SHA1 for sqlite3.c: becd16877f4f9b281b91c97e106089497d71bb47
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_8"></a>
|
||
|
<h3>2011-09-19 (3.7.8)</h3><p><ol class='lessindent'>
|
||
|
<li> Orders of magnitude performance improvement for <a href="lang_createindex.html">CREATE INDEX</a> on
|
||
|
very large tables.
|
||
|
<li> Improved the windows VFS to better defend against interference
|
||
|
from anti-virus software.
|
||
|
<li> Improved query plan optimization when the DISTINCT keyword is present.
|
||
|
<li> Allow more system calls to be overridden in the unix VFS - to provide
|
||
|
better support for chromium sandboxes.
|
||
|
<li> Increase the default size of a lookahead cache line from 100 to 128 bytes.
|
||
|
<li> Enhancements to the test_quota.c module so that it can track
|
||
|
preexisting files.
|
||
|
<li> Bug fix: Virtual tables now handle IS NOT NULL constraints correctly.
|
||
|
<li> Bug fixes: Correctly handle nested correlated subqueries used with
|
||
|
indices in a WHERE clause.
|
||
|
<li> SQLITE_SOURCE_ID:
|
||
|
"2011-09-19 14:49:19 3e0da808d2f5b4d12046e05980ca04578f581177"
|
||
|
<li> SHA1 for sqlite3.c: bfcd74a655636b592c5dba6d0d5729c0f8e3b4de
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_7_1"></a>
|
||
|
<h3>2011-06-28 (3.7.7.1)</h3><p><ol class='lessindent'>
|
||
|
<li> Fix <a href="http://www.sqlite.org/src/info/25ee812710">a bug</a> causing
|
||
|
<a href="pragma.html#pragma_case_sensitive_like">PRAGMA case_sensitive_like</a> statements compiled using sqlite3_prepare()
|
||
|
to fail with an <a href="rescode.html#schema">SQLITE_SCHEMA</a> error.
|
||
|
<li> SQLITE_SOURCE_ID:
|
||
|
"2011-06-28 17:39:05 af0d91adf497f5f36ec3813f04235a6e195a605f"
|
||
|
<li> SHA1 for sqlite3.c: d47594b8a02f6cf58e91fb673e96cb1b397aace0
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_7"></a>
|
||
|
<h3>2011-06-23 (3.7.7)</h3><p><ol class='lessindent'>
|
||
|
<li> Add support for <a href="uri.html">URI filenames</a>
|
||
|
<li> Add the <a href="c3ref/vtab_config.html">sqlite3_vtab_config()</a> interface in
|
||
|
support of <a href="lang_conflict.html">ON CONFLICT</a> clauses with <a href="vtab.html">virtual tables</a>.
|
||
|
<li> Add the <a href="vtab.html#xsavepoint">xSavepoint</a>, <a href="vtab.html#xsavepoint">xRelease</a> and <a href="vtab.html#xsavepoint">xRollbackTo</a> methods in
|
||
|
<a href="vtab.html">virtual tables</a> in support of <a href="lang_savepoint.html">SAVEPOINT</a> for virtual tables.
|
||
|
<li> Update the built-in <a href="fts3.html">FTS3/FTS4</a> and <a href="rtree.html">RTREE</a> virtual tables to support
|
||
|
<a href="lang_conflict.html">ON CONFLICT</a> clauses and <a href="lang_replace.html">REPLACE</a>.
|
||
|
<li> Avoid unnecessary reparsing of the database schema.
|
||
|
<li> Added support for the <a href="fts3.html#fts4prefix">FTS4 prefix option</a> and the <a href="fts3.html#fts4order">FTS4 order option</a>.
|
||
|
<li> Allow <a href="wal.html">WAL-mode</a> databases to be opened read-only as long as
|
||
|
there is an existing read/write connection.
|
||
|
<li> Added support for <a href="shortnames.html">short filenames</a>.
|
||
|
<li> SQLITE_SOURCE_ID:
|
||
|
"2011-06-23 19:49:22 4374b7e83ea0a3fbc3691f9c0c936272862f32f2"
|
||
|
<li> SHA1 for sqlite3.c: 5bbe79e206ae5ffeeca760dbd0d66862228db551
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_6_3"></a>
|
||
|
<h3>2011-05-19 (3.7.6.3)</h3><p><ol class='lessindent'>
|
||
|
<li> Fix a problem with <a href="wal.html">WAL mode</a> which could cause transactions to
|
||
|
silently rollback 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.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_6_2"></a>
|
||
|
<h3>2011-04-17 (3.7.6.2)</h3><p><ol class='lessindent'>
|
||
|
<li> Fix the function prototype for the open(2) system call to agree with
|
||
|
POSIX. Without this fix, pthreads does not work correctly on NetBSD.
|
||
|
<li> SQLITE_SOURCE_ID:
|
||
|
"2011-04-17 17:25:17 154ddbc17120be2915eb03edc52af1225eb7cb5e"
|
||
|
<li> SHA1 for sqlite3.c: 806577fd524dd5f3bfd8d4d27392ed2752bc9701
|
||
|
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_6_1"></a>
|
||
|
<h3>2011-04-13 (3.7.6.1)</h3><p><ol class='lessindent'>
|
||
|
<li> Fix a bug in 3.7.6 that only appears if the <a href="c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlsizehint">SQLITE_FCNTL_SIZE_HINT</a>
|
||
|
file control is used with a build of SQLite that makes use of the
|
||
|
HAVE_POSIX_FALLOCATE compile-time option and which has
|
||
|
SQLITE_ENABLE_LOCKING_MODE turned off.
|
||
|
<li> SQLITE_SOURCE_ID:
|
||
|
"2011-04-13 14:40:25 a35e83eac7b185f4d363d7fa51677f2fdfa27695"
|
||
|
<li> SHA1 for sqlite3.c: b81bfa27d3e09caf3251475863b1ce6dd9f6ab66
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_6"></a>
|
||
|
<h3>2011-04-12 (3.7.6)</h3><p><ol class='lessindent'>
|
||
|
<li> Added the <a href="c3ref/wal_checkpoint_v2.html">sqlite3_wal_checkpoint_v2()</a> interface and enhanced the
|
||
|
<a href="pragma.html#pragma_wal_checkpoint">wal_checkpoint pragma</a> to support blocking checkpoints.
|
||
|
<li> Improvements to the query planner so that it makes better estimates of
|
||
|
plan costs and hence does a better job of choosing the right plan,
|
||
|
especially when <a href="compile.html#enable_stat2">SQLITE_ENABLE_STAT2</a> is used.
|
||
|
<li> Fix a bug which prevented deferred foreign key constraints from being
|
||
|
enforced when <a href="c3ref/finalize.html">sqlite3_finalize()</a> was not
|
||
|
called by one statement with a failed foreign key constraint prior to
|
||
|
another statement with foreign key constraints running.
|
||
|
<li> Integer arithmetic operations that would have resulted in overflow
|
||
|
are now performed using floating-point instead.
|
||
|
<li> Increased the version number on the <a href="c3ref/vfs.html">VFS object</a> to
|
||
|
3 and added new methods xSetSysCall, xGetSysCall, and xNextSysCall
|
||
|
used for doing full-coverage testing.
|
||
|
<li> Increase the maximum value of <a href="limits.html#max_attached">SQLITE_MAX_ATTACHED</a> from 30 to 62
|
||
|
(though the default value remains at 10).
|
||
|
<li> Enhancements to FTS4:
|
||
|
<ol type="a">
|
||
|
<li> Added the <a href="fts3.html#fts4aux">fts4aux</a> table
|
||
|
<li> Added support for <a href="fts3.html#*fts4compression">compressed FTS4 content</a>
|
||
|
</ol>
|
||
|
<li> Enhance the <a href="lang_analyze.html">ANALYZE</a> command to support the name of an index
|
||
|
as its argument, in order to analyze just that one index.
|
||
|
<li> Added the "unix-excl" built-in VFS on unix and unix-like platforms.
|
||
|
<li> SQLITE_SOURCE_ID:
|
||
|
"2011-04-12 01:58:40 f9d43fa363d54beab6f45db005abac0a7c0c47a7"
|
||
|
<li> SHA1 for sqlite3.c: f38df08547efae0ff4343da607b723f588bbd66b
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_5"></a>
|
||
|
<h3>2011-02-01 (3.7.5)</h3><p><ol class='lessindent'>
|
||
|
<li> Added the <a href="c3ref/mprintf.html">sqlite3_vsnprintf()</a> interface.
|
||
|
<li> Added the <a href="c3ref/c_dbstatus_options.html#sqlitedbstatuslookasidehit">SQLITE_DBSTATUS_LOOKASIDE_HIT</a>,
|
||
|
<a href="c3ref/c_dbstatus_options.html#sqlitedbstatuslookasidemisssize">SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE</a>, and
|
||
|
<a href="c3ref/c_dbstatus_options.html#sqlitedbstatuslookasidemissfull">SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL</a> options for the
|
||
|
<a href="c3ref/db_status.html">sqlite3_db_status()</a> interface.
|
||
|
<li> Added the <a href="compile.html#omit_autoreset">SQLITE_OMIT_AUTORESET</a> compile-time option.
|
||
|
<li> Added the <a href="compile.html#default_foreign_keys">SQLITE_DEFAULT_FOREIGN_KEYS</a> compile-time option.
|
||
|
<li> Updates to <a href="c3ref/stmt_readonly.html">sqlite3_stmt_readonly()</a> so that its result is well-defined
|
||
|
for all prepared statements and so that it works with <a href="lang_vacuum.html">VACUUM</a>.
|
||
|
<li> Added the "-heap" option to the <a href="cli.html">command-line shell</a>
|
||
|
<li> Fix <a href="http://www.sqlite.org/src/info/5d863f876e">a bug</a> involving
|
||
|
frequent changes in and out of WAL mode and
|
||
|
VACUUM that could (in theory) cause database corruption.
|
||
|
<li> Enhance the <a href="c3ref/profile.html">sqlite3_trace()</a> mechanism so that nested SQL statements
|
||
|
such as might be generated by virtual tables are shown but are shown
|
||
|
in comments and without parameter expansion. This
|
||
|
greatly improves tracing output when using the FTS3/4 and/or RTREE
|
||
|
virtual tables.
|
||
|
<li> Change the xFileControl() methods on all built-in VFSes to return
|
||
|
<a href="rescode.html#notfound">SQLITE_NOTFOUND</a> instead of <a href="rescode.html#error">SQLITE_ERROR</a> for an unrecognized
|
||
|
operation code.
|
||
|
<li> The SQLite core invokes the <a href="c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlsyncomitted">SQLITE_FCNTL_SYNC_OMITTED</a>
|
||
|
<a href="c3ref/file_control.html">file control</a>
|
||
|
to the VFS in place of a call to xSync if the database has
|
||
|
<a href="pragma.html#pragma_synchronous">PRAGMA synchronous</a> set to OFF.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_4"></a>
|
||
|
<h3>2010-12-07 (3.7.4)</h3><p><ol class='lessindent'>
|
||
|
<li> Added the <a href="c3ref/blob_reopen.html">sqlite3_blob_reopen()</a> interface to allow an existing
|
||
|
<a href="c3ref/blob.html">sqlite3_blob</a> object to be rebound to a new row.
|
||
|
<li> Use the new <a href="c3ref/blob_reopen.html">sqlite3_blob_reopen()</a> interface to improve the performance
|
||
|
of FTS.
|
||
|
<li> <a href="c3ref/vfs.html">VFSes</a> that do not support shared memory are allowed
|
||
|
to access <a href="wal.html">WAL</a> databases if <a href="pragma.html#pragma_locking_mode">PRAGMA locking_mode</a> is set to EXCLUSIVE.
|
||
|
<li> Enhancements to <a href="eqp.html">EXPLAIN QUERY PLAN</a>.
|
||
|
<li> Added the <a href="c3ref/stmt_readonly.html">sqlite3_stmt_readonly()</a> interface.
|
||
|
<li> Added <a href="pragma.html#pragma_checkpoint_fullfsync">PRAGMA checkpoint_fullfsync</a>.
|
||
|
<li> Added the <a href="c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlfilepointer">SQLITE_FCNTL_FILE_POINTER</a> option
|
||
|
to <a href="c3ref/file_control.html">sqlite3_file_control()</a>.
|
||
|
<li> Added support for <a href="fts3.html#fts4">FTS4</a> and enhancements
|
||
|
to the FTS <a href="fts3.html#matchinfo">matchinfo()</a> function.
|
||
|
<li> Added the test_superlock.c module which provides example
|
||
|
code for obtaining an exclusive lock to a rollback
|
||
|
or WAL database.
|
||
|
<li> Added the test_multiplex.c module which provides
|
||
|
an example VFS that provides multiplexing (sharding)
|
||
|
of a DB, splitting it over multiple files of fixed size.
|
||
|
<li> A <a href="http://www.sqlite.org/src/info/80ba201079">very obscure bug</a>
|
||
|
associated with the <a href="optoverview.html#or_opt">or optimization</a> was fixed.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_3"></a>
|
||
|
<h3>2010-10-08 (3.7.3)</h3><p><ol class='lessindent'>
|
||
|
<li> Added the <a href="c3ref/create_function.html">sqlite3_create_function_v2()</a> interface that includes a
|
||
|
destructor callback.
|
||
|
<li> Added support for <a href="rtree.html#customquery">custom r-tree queries</a> using application-supplied
|
||
|
callback routines to define the boundary of the query region.
|
||
|
<li> The default page cache strives more diligently to avoid using memory
|
||
|
beyond what is allocated to it by <a href="c3ref/c_config_covering_index_scan.html#sqliteconfigpagecache">SQLITE_CONFIG_PAGECACHE</a>. Or if
|
||
|
using page cache is allocating from the heap, it strives to avoid
|
||
|
going over the <a href="c3ref/hard_heap_limit64.html">sqlite3_soft_heap_limit64()</a>, even if
|
||
|
<a href="compile.html#enable_memory_management">SQLITE_ENABLE_MEMORY_MANAGEMENT</a> is not set.
|
||
|
<li> Added the <a href="c3ref/hard_heap_limit64.html">sqlite3_soft_heap_limit64()</a> interface as a replacement for
|
||
|
<a href="c3ref/soft_heap_limit.html">sqlite3_soft_heap_limit()</a>.
|
||
|
<li> The <a href="lang_analyze.html">ANALYZE</a> command now gathers statistics on tables even if they
|
||
|
have no indices.
|
||
|
<li> Tweaks to the query planner to help it do a better job of finding the
|
||
|
most efficient query plan for each query.
|
||
|
<li> Enhanced the internal text-to-numeric conversion routines so that they
|
||
|
work with UTF8 or UTF16, thereby avoiding some UTF16-to-UTF8 text
|
||
|
conversions.
|
||
|
<li> Fix a problem that was causing excess memory usage with large <a href="wal.html">WAL</a>
|
||
|
transactions in win32 systems.
|
||
|
<li> The interface between the VDBE and B-Tree layer is enhanced such that
|
||
|
the VDBE provides hints to the B-Tree layer letting the B-Tree layer
|
||
|
know when it is safe to use hashing instead of B-Trees for transient
|
||
|
tables.
|
||
|
<li> Miscellaneous documentation enhancements.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_2"></a>
|
||
|
<h3>2010-08-24 (3.7.2)</h3><p><ol class='lessindent'>
|
||
|
<li> Fix an <a href="http://www.sqlite.org/src/info/5e10420e8d">
|
||
|
old and very obscure bug</a> that can lead to corruption of the
|
||
|
database <a href="fileformat2.html#freelist">free-page list</a> when <a href="pragma.html#pragma_incremental_vacuum">incremental_vacuum</a> is used.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_1"></a>
|
||
|
<h3>2010-08-23 (3.7.1)</h3><p><ol class='lessindent'>
|
||
|
<li> Added new commands <a href="c3ref/c_dbstatus_options.html#sqlitedbstatusschemaused">SQLITE_DBSTATUS_SCHEMA_USED</a> and
|
||
|
<a href="c3ref/c_dbstatus_options.html#sqlitedbstatusstmtused">SQLITE_DBSTATUS_STMT_USED</a> to the <a href="c3ref/db_status.html">sqlite3_db_status()</a> interface, in
|
||
|
order to report out the amount of memory used to hold the schema and
|
||
|
prepared statements of a connection.
|
||
|
<li> Increase the maximum size of a database pages from 32KiB to 64KiB.
|
||
|
<li> Use the <a href="optoverview.html#like_opt">LIKE optimization</a> even if the right-hand side string contains
|
||
|
no wildcards.
|
||
|
<li> Added the <a href="c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlchunksize">SQLITE_FCNTL_CHUNK_SIZE</a> verb to the <a href="c3ref/file_control.html">sqlite3_file_control()</a>
|
||
|
interface for both unix and windows, to cause database files to grow in
|
||
|
large chunks in order to reduce disk fragmentation.
|
||
|
<li> Fixed a bug in the query planner that caused performance regressions
|
||
|
relative to 3.6.23.1 on some complex joins.
|
||
|
<li> Fixed a typo in the OS/2 backend.
|
||
|
<li> Refactored the pager module.
|
||
|
<li> The SQLITE_MAX_PAGE_SIZE compile-time option is now silently ignored.
|
||
|
The maximum page size is hard-coded at 65536 bytes.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_0_1"></a>
|
||
|
<h3>2010-08-04 (3.7.0.1)</h3><p><ol class='lessindent'>
|
||
|
<li> Fix a potential database corruption bug that can occur if version 3.7.0
|
||
|
and version 3.6.23.1 alternately write to the same database file.
|
||
|
<a href="http://www.sqlite.org/src/info/51ae9cad317a1">
|
||
|
Ticket [51ae9cad317a1]</a>
|
||
|
<li> Fix a performance regression related to the query planner enhancements
|
||
|
of version 3.7.0.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_7_0"></a>
|
||
|
<h3>2010-07-21 (3.7.0)</h3><p><ol class='lessindent'>
|
||
|
<li> Added support for <a href="wal.html">write-ahead logging</a>.
|
||
|
<li> Query planner enhancement - automatic transient indices are created
|
||
|
when doing so reduces the estimated query time.
|
||
|
<li> Query planner enhancement - the ORDER BY becomes a no-op if the query
|
||
|
also contains a GROUP BY clause that forces the correct output order.
|
||
|
<li> Add the <a href="c3ref/c_dbstatus_options.html#sqlitedbstatuscacheused">SQLITE_DBSTATUS_CACHE_USED</a> verb for <a href="c3ref/db_status.html">sqlite3_db_status()</a>.
|
||
|
<li> The logical database size is now stored in the database header so that
|
||
|
bytes can be appended to the end of the database file without corrupting
|
||
|
it and so that SQLite will work correctly on systems that lack support
|
||
|
for ftruncate().
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_23_1"></a>
|
||
|
<h3>2010-03-26 (3.6.23.1)</h3><p><ol class='lessindent'>
|
||
|
<li> Fix a bug in the offsets() function of <a href="fts3.html">FTS3</a>
|
||
|
<li> Fix a missing "sync" that when omitted could lead to database
|
||
|
corruption if a power failure or OS crash occurred just as a
|
||
|
ROLLBACK operation was finishing.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_23"></a>
|
||
|
<h3>2010-03-09 (3.6.23)</h3><p><ol class='lessindent'>
|
||
|
<li> Added the <a href="pragma.html#pragma_secure_delete">secure_delete pragma</a>.
|
||
|
<li> Added the <a href="c3ref/compileoption_get.html">sqlite3_compileoption_used()</a> and
|
||
|
<a href="c3ref/compileoption_get.html">sqlite3_compileoption_get()</a> interfaces as well as the
|
||
|
<a href="pragma.html#pragma_compile_options">compile_options pragma</a> and the <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> SQL functions.
|
||
|
<li> Added the <a href="c3ref/log.html">sqlite3_log()</a> interface together with the
|
||
|
<a href="c3ref/c_config_covering_index_scan.html#sqliteconfiglog">SQLITE_CONFIG_LOG</a> verb to <a href="c3ref/config.html">sqlite3_config()</a>. The ".log" command
|
||
|
is added to the <a href="cli.html">Command Line Interface</a>.
|
||
|
<li> Improvements to <a href="fts3.html">FTS3</a>.
|
||
|
<li> Improvements and bug-fixes in support for <a href="compile.html#omit_floating_point">SQLITE_OMIT_FLOATING_POINT</a>.
|
||
|
<li> The <a href="pragma.html#pragma_integrity_check">integrity_check pragma</a> is enhanced to detect out-of-order rowids.
|
||
|
<li> The ".genfkey" operator has been removed from the
|
||
|
<a href="cli.html">Command Line Interface</a>.
|
||
|
<li> Updates to the co-hosted <a href="lemon.html">Lemon LALR(1) parser generator</a>. (These
|
||
|
updates did not affect SQLite.)
|
||
|
<li> Various minor bug fixes and performance enhancements.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_22"></a>
|
||
|
<h3>2010-01-06 (3.6.22)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix bugs that can (rarely) lead to incorrect query results when
|
||
|
the CAST or OR operators are used in the WHERE clause of a query.
|
||
|
<li>Continuing enhancements and improvements to <a href="fts3.html">FTS3</a>.
|
||
|
<li>Other miscellaneous bug fixes.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_21"></a>
|
||
|
<h3>2009-12-07 (3.6.21)</h3><p><ol class='lessindent'>
|
||
|
<li>The SQL output resulting from <a href="c3ref/profile.html">sqlite3_trace()</a> is now modified to include
|
||
|
the values of <a href="lang_expr.html#varparam">bound parameters</a>.
|
||
|
<li>Performance optimizations targeting a specific use case from
|
||
|
a single high-profile user of SQLite. A 12% reduction in the number of
|
||
|
CPU operations is achieved (as measured by Valgrind). Actual performance
|
||
|
improvements in practice may vary depending on workload. Changes
|
||
|
include:
|
||
|
<ol type='a'>
|
||
|
<li>The <a href="lang_corefunc.html#ifnull">ifnull()</a> and <a href="lang_corefunc.html#coalesce">coalesce()</a> SQL functions are now implemented
|
||
|
using in-line VDBE code rather than calling external functions, so that
|
||
|
unused arguments need never be evaluated.
|
||
|
<li>The <a href="lang_corefunc.html#substr">substr()</a> SQL function does not bother to measure the length
|
||
|
its entire input string if it is only computing a prefix
|
||
|
<li>Unnecessary OP_IsNull, OP_Affinity, and OP_MustBeInt VDBE opcodes
|
||
|
are suppressed
|
||
|
<li>Various code refactorizations for performance
|
||
|
</ol>
|
||
|
<li>The FTS3 extension has undergone a major rework and cleanup.
|
||
|
New <a href="fts3.html">FTS3 documentation</a> is now available.
|
||
|
<li>The <a href="compile.html#secure_delete">SQLITE_SECURE_DELETE</a> compile-time option fixed to make sure that
|
||
|
content is deleted even when the <a href="lang_delete.html#truncateopt">truncate optimization</a> applies.
|
||
|
<li>Improvements to "dot-command" handling in the
|
||
|
<a href="cli.html">Command Line Interface</a>.
|
||
|
<li>Other minor bug fixes and documentation enhancements.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_20"></a>
|
||
|
<h3>2009-11-04 (3.6.20)</h3><p><ol class='lessindent'>
|
||
|
<li>Optimizer enhancement: <a href="c3ref/stmt.html">prepared statements</a> are automatically
|
||
|
re-compiled when a binding on the RHS of a LIKE operator changes or
|
||
|
when any range constraint changes under <a href="compile.html#enable_stat2">SQLITE_ENABLE_STAT2</a>.
|
||
|
<li>Various minor bug fixes and documentation enhancements.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_16_1"></a>
|
||
|
<h3>2009-10-30 (3.6.16.1)</h3><p><ol class='lessindent'>
|
||
|
<li>A small patch to version 3.6.16 to fix
|
||
|
<a href="http://www.sqlite.org/src/info/6b00e0a34c">the OP_If bug</a>.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_19"></a>
|
||
|
<h3>2009-10-14 (3.6.19)</h3><p><ol class='lessindent'>
|
||
|
<li>Added support for <a href="foreignkeys.html">foreign key constraints</a>. Foreign key constraints
|
||
|
are disabled by default. Use the <a href="pragma.html#pragma_foreign_keys">foreign_keys pragma</a> to turn them on.
|
||
|
<li>Generalized the IS and IS NOT operators to take arbitrary expressions
|
||
|
on their right-hand side.
|
||
|
<li>The <a href="tclsqlite.html">TCL Interface</a> has been enhanced to use the
|
||
|
<a href="http://www.tcl-lang.org/cgi-bin/tct/tip/322.html">Non-Recursive Engine (NRE)</a>
|
||
|
interface to the TCL interpreter when linked against TCL 8.6 or later.
|
||
|
<li>Fix a bug introduced in 3.6.18 that can lead to a segfault when an
|
||
|
attempt is made to write on a read-only database.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_18"></a>
|
||
|
<h3>2009-09-11 (3.6.18)</h3><p><ol class='lessindent'>
|
||
|
<li>Versioning of the SQLite source code has transitioned from CVS to
|
||
|
<a href="http://www.fossil-scm.org/">Fossil</a>.
|
||
|
<li>Query planner enhancements.
|
||
|
<li>The <a href="compile.html#enable_stat2">SQLITE_ENABLE_STAT2</a> compile-time option causes the <a href="lang_analyze.html">ANALYZE</a>
|
||
|
command to collect a small histogram of each index, to help SQLite better
|
||
|
select among competing range query indices.
|
||
|
<li>Recursive triggers can be enabled using the <a href="pragma.html#pragma_recursive_triggers">PRAGMA recursive_triggers</a>
|
||
|
statement.
|
||
|
<li>Delete triggers fire when rows are removed due to a
|
||
|
<a href="lang_conflict.html">REPLACE conflict resolution</a>. This feature is only
|
||
|
enabled when recursive triggers are enabled.
|
||
|
<li>Added the <a href="c3ref/c_open_autoproxy.html">SQLITE_OPEN_SHAREDCACHE</a> and <a href="c3ref/c_open_autoproxy.html">SQLITE_OPEN_PRIVATECACHE</a>
|
||
|
flags for <a href="c3ref/open.html">sqlite3_open_v2()</a> used to override the global
|
||
|
<a href="sharedcache.html">shared cache mode</a> settings for individual database connections.
|
||
|
<li>Added improved version identification features:
|
||
|
C-Preprocessor macro <a href="c3ref/c_source_id.html">SQLITE_SOURCE_ID</a>,
|
||
|
C/C++ interface <a href="c3ref/libversion.html">sqlite3_sourceid()</a>, and SQL function <a href="lang_corefunc.html#sqlite_source_id">sqlite_source_id()</a>.
|
||
|
<li>Obscure bug fix on triggers
|
||
|
(<a href="http://www.sqlite.org/src/info/efc02f9779">[efc02f9779]</a>).
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_17"></a>
|
||
|
<h3>2009-08-10 (3.6.17)</h3><p><ol class='lessindent'>
|
||
|
<li>Expose the <a href="c3ref/stricmp.html">sqlite3_strnicmp()</a> interface for use by extensions and
|
||
|
applications.
|
||
|
<li>Remove the restriction on <a href="vtab.html">virtual tables</a> and <a href="sharedcache.html">shared cache mode</a>.
|
||
|
Virtual tables and shared cache can now be used at the same time.
|
||
|
<li>Many code simplifications and obscure bug fixes in support of
|
||
|
providing <a href="testing.html#coverage">100% branch test coverage</a>.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_16"></a>
|
||
|
<h3>2009-06-27 (3.6.16)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug (ticket #3929) that occasionally causes INSERT or UPDATE
|
||
|
operations to fail on an indexed table that has a self-modifying trigger.
|
||
|
<li>Other minor bug fixes and performance optimizations.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_15"></a>
|
||
|
<h3>2009-06-15 (3.6.15)</h3><p><ol class='lessindent'>
|
||
|
<li>Refactor the internal representation of SQL expressions so that they
|
||
|
use less memory on embedded platforms.
|
||
|
<li>Reduce the amount of stack space used
|
||
|
<li>Fix an 64-bit alignment bug on HP/UX and Sparc
|
||
|
<li>The <a href="c3ref/create_function.html">sqlite3_create_function()</a> family of interfaces now return
|
||
|
<a href="rescode.html#misuse">SQLITE_MISUSE</a> instead of <a href="rescode.html#error">SQLITE_ERROR</a> when passed invalid
|
||
|
parameter combinations.
|
||
|
<li>When new tables are created using CREATE TABLE ... AS SELECT ... the
|
||
|
datatype of the columns is the simplified SQLite datatype (TEXT, INT,
|
||
|
REAL, NUMERIC, or BLOB) instead of a copy of the original datatype from
|
||
|
the source table.
|
||
|
<li>Resolve race conditions when checking for a hot rollback journal.
|
||
|
<li>The <a href="c3ref/initialize.html">sqlite3_shutdown()</a> interface frees all mutexes under windows.
|
||
|
<li>Enhanced robustness against corrupt database files
|
||
|
<li>Continuing improvements to the test suite and fixes to obscure
|
||
|
bugs and inconsistencies that the test suite improvements are
|
||
|
uncovering.
|
||
|
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_14_2"></a>
|
||
|
<h3>2009-05-25 (3.6.14.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a code generator bug introduced in <a href="#version_3_6_14">version 3.6.14</a>. This bug
|
||
|
can cause incorrect query results under obscure circumstances.
|
||
|
Ticket #3879.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_14_1"></a>
|
||
|
<h3>2009-05-19 (3.6.14.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug in <a href="lang_aggfunc.html#groupconcat">group_concat()</a>, ticket #3841
|
||
|
<li>Fix a performance bug in the pager cache, ticket #3844
|
||
|
<li>Fix a bug in the <a href="c3ref/backup.html">sqlite3_backup</a> implementation that can lead
|
||
|
to a corrupt backup database. Ticket #3858.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_14"></a>
|
||
|
<h3>2009-05-07 (3.6.14)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the optional <a href="asyncvfs.html">asynchronous VFS</a> module.</li>
|
||
|
<li>Enhanced the query optimizer so that <a href="vtab.html">virtual tables</a> are able to
|
||
|
make use of OR and IN operators in the WHERE clause.</li>
|
||
|
<li>Speed improvements in the btree and pager layers.</li>
|
||
|
<li>Added the <a href="compile.html#have_isnan">SQLITE_HAVE_ISNAN</a> compile-time option which will cause
|
||
|
the isnan() function from the standard math library to be used instead
|
||
|
of SQLite's own home-brew NaN checker.</li>
|
||
|
<li>Countless minor bug fixes, documentation improvements, new and
|
||
|
improved test cases, and code simplifications and cleanups.</p>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_13"></a>
|
||
|
<h3>2009-04-13 (3.6.13)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug in <a href="#version_3_6_12">version 3.6.12</a> that causes a segfault when running
|
||
|
a count(*) on the sqlite_master table of an empty database. Ticket #3774.
|
||
|
<li>Fix a bug in <a href="#version_3_6_12">version 3.6.12</a> that causes a segfault that when
|
||
|
inserting into a table using a DEFAULT value where there is a
|
||
|
function as part of the DEFAULT value expression. Ticket #3791.
|
||
|
<li>Fix data structure alignment issues on Sparc. Ticket #3777.
|
||
|
<li>Other minor bug fixes.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_12"></a>
|
||
|
<h3>2009-03-31 (3.6.12)</h3><p><ol class='lessindent'>
|
||
|
<li>Fixed a bug that caused database corruption when an <a href="pragma.html#pragma_incremental_vacuum">incremental_vacuum</a> is
|
||
|
rolled back in an in-memory database. Ticket #3761.
|
||
|
<li>Added the <a href="c3ref/unlock_notify.html">sqlite3_unlock_notify()</a> interface.
|
||
|
<li>Added the <a href="pragma.html#pragma_reverse_unordered_selects">reverse_unordered_selects pragma</a>.
|
||
|
<li>The default page size on windows is automatically adjusted to match the
|
||
|
capabilities of the underlying filesystem.
|
||
|
<li>Add the new ".genfkey" command in the <a href="cli.html">CLI</a> for generating triggers to
|
||
|
implement foreign key constraints.
|
||
|
<li>Performance improvements for "count(*)" queries.
|
||
|
<li>Reduce the amount of heap memory used, especially by TRIGGERs.
|
||
|
<li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_11"></a>
|
||
|
<h3>2009-02-18 (3.6.11)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the <a href="c3ref/backup_finish.html#sqlite3backupinit">hot-backup interface</a>.
|
||
|
<li>Added new commands ".backup" and ".restore" to the <a href="cli.html">CLI</a>.
|
||
|
<li>Added new methods <a href="tclsqlite.html#backup">backup</a> and
|
||
|
<a href="tclsqlite.html#restore">restore</a> to the TCL interface.
|
||
|
<li>Improvements to the <a href="syntaxdiagrams.html">syntax bubble
|
||
|
diagrams</a>
|
||
|
<li>Various minor bug fixes
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_10"></a>
|
||
|
<h3>2009-01-15 (3.6.10)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a cache coherency problem that could lead to database corruption.
|
||
|
Ticket #3584.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_9"></a>
|
||
|
<h3>2009-01-14 (3.6.9)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix two bugs, which when combined might result in incorrect
|
||
|
query results. Both bugs were harmless by themselves; only when
|
||
|
they team up do they cause problems. Ticket #3581.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_8"></a>
|
||
|
<h3>2009-01-12 (3.6.8)</h3><p><ol class='lessindent'>
|
||
|
<li>Added support for <a href="lang_savepoint.html">nested transactions</a></li>
|
||
|
<li>Enhanced the query optimizer so that it is able to use
|
||
|
multiple indices to efficiently process
|
||
|
<a href="optoverview.html#or_opt">OR-connected constraints</a>
|
||
|
in a WHERE clause.</li>
|
||
|
<li>Added support for parentheses in FTS3 query patterns using the
|
||
|
<a href="compile.html#enable_fts3_parenthesis">SQLITE_ENABLE_FTS3_PARENTHESIS</a> compile-time option.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_7"></a>
|
||
|
<h3>2008-12-16 (3.6.7)</h3><p><ol class='lessindent'>
|
||
|
<li>Reorganize the Unix interface in os_unix.c</li>
|
||
|
<li>Added support for "Proxy Locking" on Mac OS X.</li>
|
||
|
<li>Changed the prototype of the <a href="c3ref/auto_extension.html">sqlite3_auto_extension()</a> interface in a
|
||
|
way that is backwards compatible but which might cause warnings in new
|
||
|
builds of applications that use that interface.</li>
|
||
|
<li>Changed the signature of the xDlSym method of the <a href="c3ref/vfs.html">sqlite3_vfs</a> object
|
||
|
in a way that is backwards compatible but which might cause
|
||
|
compiler warnings.</li>
|
||
|
<li>Added superfluous casts and variable initializations in order
|
||
|
to suppress nuisance compiler warnings.</li>
|
||
|
<li>Fixes for various minor bugs.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_6_2"></a>
|
||
|
<h3>2008-11-26 (3.6.6.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug in the b-tree delete algorithm that seems like it might be
|
||
|
able to cause database corruption. The bug was first introduced in
|
||
|
<a href="#version_3_6_6">version 3.6.6</a> by check-in [5899] on 2008-11-13.</li>
|
||
|
<li>Fix a memory leak that can occur following a disk I/O error.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_6_1"></a>
|
||
|
<h3>2008-11-22 (3.6.6.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug in the page cache that can lead database corruption following
|
||
|
a rollback. This bug was first introduced in <a href="#version_3_6_4">version 3.6.4</a>.</li>
|
||
|
<li>Two other very minor bug fixes</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_6"></a>
|
||
|
<h3>2008-11-19 (3.6.6)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a #define that prevented <a href="malloc.html#memsys5">memsys5</a> from compiling</li>
|
||
|
<li>Fix a problem in the virtual table commit mechanism that was causing
|
||
|
a crash in FTS3. Ticket #3497.</li>
|
||
|
<li>Add the <a href="c3ref/pcache_methods2.html">application-defined page cache</a></li>
|
||
|
<li>Added built-in support for VxWorks</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_5"></a>
|
||
|
<h3>2008-11-12 (3.6.5)</h3><p><ol class='lessindent'>
|
||
|
<li>Add the MEMORY option to the <a href="pragma.html#pragma_journal_mode">journal_mode pragma</a>.</li>
|
||
|
<li>Added the <a href="c3ref/db_mutex.html">sqlite3_db_mutex()</a> interface.</li>
|
||
|
<li>Added the <a href="compile.html#omit_truncate_optimization">SQLITE_OMIT_TRUNCATE_OPTIMIZATION</a> compile-time option.</li>
|
||
|
<li>Fixed the <a href="lang_delete.html#truncateopt">truncate optimization</a> so that <a href="c3ref/changes.html">sqlite3_changes()</a> and
|
||
|
<a href="c3ref/total_changes.html">sqlite3_total_changes()</a> interfaces and the <a href="pragma.html#pragma_count_changes">count_changes pragma</a>
|
||
|
return the correct values.</li>
|
||
|
<li>Added the <a href="c3ref/errcode.html">sqlite3_extended_errcode()</a> interface.</li>
|
||
|
<li>The <a href="lang_transaction.html">COMMIT</a> command now succeeds even if there are pending queries.
|
||
|
It returns <a href="rescode.html#busy">SQLITE_BUSY</a> if there are pending incremental BLOB I/O requests.
|
||
|
<li>The error code is changed to <a href="rescode.html#busy">SQLITE_BUSY</a> (instead of <a href="rescode.html#error">SQLITE_ERROR</a>)
|
||
|
when an attempt is made to <a href="lang_transaction.html">ROLLBACK</a> while one or more queries are
|
||
|
still pending.</li>
|
||
|
<li>Drop all support for the <a href="malloc.html#memsysx">experimental memory allocators</a> memsys4 and
|
||
|
memsys6.</li>
|
||
|
<li>Added the <a href="compile.html#zero_malloc">SQLITE_ZERO_MALLOC</a> compile-time option.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_4"></a>
|
||
|
<h3>2008-10-15 (3.6.4)</h3><p><ol class='lessindent'>
|
||
|
<li>Add option support for LIMIT and ORDER BY clauses on <a href="lang_delete.html">DELETE</a> and
|
||
|
<a href="lang_update.html">UPDATE</a> statements. Only works if SQLite is compiled with
|
||
|
<a href="compile.html#enable_update_delete_limit">SQLITE_ENABLE_UPDATE_DELETE_LIMIT</a>.
|
||
|
<li>Added the <a href="c3ref/stmt_status.html">sqlite3_stmt_status()</a> interface for performance monitoring.</li>
|
||
|
<li>Add the <a href="lang_indexedby.html">INDEXED BY</a> clause.</li>
|
||
|
<li>The LOCKING_STYLE extension is now enabled by default on Mac OS X</li>
|
||
|
<li>Added the TRUNCATE option to <a href="pragma.html#pragma_journal_mode">PRAGMA journal_mode</a></li>
|
||
|
<li>Performance enhancements to tree balancing logic in the B-Tree layer.</li>
|
||
|
<li>Added the
|
||
|
<a href="http://www.sqlite.org/src/finfo?name=tool/genfkey.c">
|
||
|
source code</a> and
|
||
|
<a href="http://www.sqlite.org/src/finfo?name=tool/genfkey.README">
|
||
|
documentation</a> for the <b>genfkey</b> program for automatically generating
|
||
|
triggers to enforce foreign key constraints.</li>
|
||
|
<li>Added the <a href="compile.html#omit_truncate_optimization">SQLITE_OMIT_TRUNCATE_OPTIMIZATION</a> compile-time option.</li>
|
||
|
<li>The <a href="lang.html">SQL language documentation</a> is converted to use
|
||
|
<a href="syntaxdiagrams.html">syntax diagrams</a> instead of BNF.</li>
|
||
|
<li>Other minor bug fixes</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_3"></a>
|
||
|
<h3>2008-09-22 (3.6.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix for a bug in the SELECT DISTINCT logic that was introduced by the
|
||
|
prior version.</li>
|
||
|
<li>Other minor bug fixes</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_2"></a>
|
||
|
<h3>2008-08-30 (3.6.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Split the pager subsystem into separate pager and pcache subsystems.</li>
|
||
|
<li>Factor out identifier resolution procedures into separate files.</li>
|
||
|
<li>Bug fixes</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_6_1"></a>
|
||
|
<h3>2008-08-06 (3.6.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the <a href="malloc.html#lookaside">lookaside memory allocator</a> for a speed improvement in excess
|
||
|
of 15% on some workloads. (Your mileage may vary.)</li>
|
||
|
<li>Added the <a href="c3ref/c_config_covering_index_scan.html#sqliteconfiglookaside">SQLITE_CONFIG_LOOKASIDE</a> verb to <a href="c3ref/config.html">sqlite3_config()</a> to control
|
||
|
the default lookaside configuration.</li>
|
||
|
<li>Added verbs <a href="c3ref/c_status_malloc_count.html#sqlitestatuspagecachesize">SQLITE_STATUS_PAGECACHE_SIZE</a> and
|
||
|
<a href="c3ref/c_status_malloc_count.html#sqlitestatusscratchsize">SQLITE_STATUS_SCRATCH_SIZE</a> to the <a href="c3ref/status.html">sqlite3_status()</a> interface.
|
||
|
<li>Modified <a href="c3ref/c_config_covering_index_scan.html#sqliteconfigpagecache">SQLITE_CONFIG_PAGECACHE</a> and <a href="c3ref/c_config_covering_index_scan.html#sqliteconfigscratch">SQLITE_CONFIG_SCRATCH</a> to remove
|
||
|
the "+4" magic number in the buffer size computation.
|
||
|
<li>Added the <a href="c3ref/db_config.html">sqlite3_db_config()</a> and <a href="c3ref/db_status.html">sqlite3_db_status()</a> interfaces for
|
||
|
controlling and monitoring the lookaside allocator separately on each
|
||
|
<a href="c3ref/sqlite3.html">database connection</a>.</li>
|
||
|
<li>Numerous other performance enhancements</li>
|
||
|
<li>Miscellaneous minor bug fixes</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2008-07-16 (3.6.0 beta)</h3><p><ol class='lessindent'>
|
||
|
<li>Modifications to the <a href="c3ref/vfs.html">virtual file system</a> interface
|
||
|
to support a wider range of embedded systems.
|
||
|
See <a href="35to36.html">35to36.html</a> for additional information.
|
||
|
<font color="red">*** Potentially incompatible change ***</font></li>
|
||
|
<li>All C-preprocessor macros used to control compile-time options
|
||
|
now begin with the prefix "SQLITE_". This may require changes to
|
||
|
applications that compile SQLite using their own makefiles and with
|
||
|
custom compile-time options, hence we mark this as a
|
||
|
<font color="red">*** Potentially incompatible change ***</font></li>
|
||
|
<li>The SQLITE_MUTEX_APPDEF compile-time option is no longer supported.
|
||
|
Alternative mutex implementations can now be added at run-time using
|
||
|
the <a href="c3ref/config.html">sqlite3_config()</a> interface with the <a href="c3ref/c_config_covering_index_scan.html#sqliteconfigmutex">SQLITE_CONFIG_MUTEX</a> verb.
|
||
|
<font color="red">*** Potentially incompatible change ***</font></li>
|
||
|
<li>The handling of IN and NOT IN operators that contain a NULL on their
|
||
|
right-hand side expression is brought into compliance with the SQL
|
||
|
standard and with other SQL database engines. This is a bug fix,
|
||
|
but as it has the potential to break legacy applications that depend
|
||
|
on the older buggy behavior, we mark that as a
|
||
|
<font color="red">*** Potentially incompatible change ***</font></li>
|
||
|
<li>The result column names generated for compound subqueries have been
|
||
|
simplified to show only the name of the column of the original table and
|
||
|
omit the table name. This makes SQLite operate more like other SQL
|
||
|
database engines.</li>
|
||
|
<li>Added the <a href="c3ref/config.html">sqlite3_config()</a> interface for doing run-time configuration
|
||
|
of the entire SQLite library.</li>
|
||
|
<li>Added the <a href="c3ref/status.html">sqlite3_status()</a> interface used for querying run-time status
|
||
|
information about the overall SQLite library and its subsystems.</li>
|
||
|
<li>Added the <a href="c3ref/initialize.html">sqlite3_initialize()</a> and <a href="c3ref/initialize.html">sqlite3_shutdown()</a> interfaces.</li>
|
||
|
<li>The <a href="c3ref/c_open_autoproxy.html">SQLITE_OPEN_NOMUTEX</a> option was added to <a href="c3ref/open.html">sqlite3_open_v2()</a>.</li>
|
||
|
<li>Added the <a href="pragma.html#pragma_page_count">PRAGMA page_count</a> command.</li>
|
||
|
<li>Added the <a href="c3ref/next_stmt.html">sqlite3_next_stmt()</a> interface.</li>
|
||
|
<li>Added a new <a href="rtree.html">R*Tree virtual table</a></li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_5_9"></a>
|
||
|
<h3>2008-05-14 (3.5.9)</h3><p><ol class='lessindent'>
|
||
|
<li>Added <em>experimental</em>
|
||
|
support for the <a href="pragma.html#pragma_journal_mode">journal_mode</a> PRAGMA and persistent journal.</li>
|
||
|
<li><a href="pragma.html#pragma_journal_mode">Journal mode PERSIST</a> is the default behavior in
|
||
|
<a href="pragma.html#pragma_locking_mode">exclusive locking mode</a>.</li>
|
||
|
<li>Fix a performance regression on LEFT JOIN (see ticket #3015)
|
||
|
that was mistakenly introduced in <a href="#version_3_5_8">version 3.5.8</a>.</li>
|
||
|
<li>Performance enhancement: Reengineer the internal routines used
|
||
|
to interpret and render variable-length integers.</li>
|
||
|
<li>Fix a buffer-overrun problem in <a href="c3ref/mprintf.html">sqlite3_mprintf()</a> which occurs
|
||
|
when a string without a zero-terminator is passed to "%.*s".</li>
|
||
|
<li>Always convert IEEE floating point NaN values into NULL during
|
||
|
processing. (Ticket #3060)</li>
|
||
|
<li>Make sure that when a connection blocks on a RESERVED lock that
|
||
|
it is able to continue after the lock is released. (Ticket #3093)</li>
|
||
|
<li>The "configure" scripts should now automatically configure Unix
|
||
|
systems for large file support. Improved error messages for
|
||
|
when large files are encountered and large file support is disabled.</li>
|
||
|
<li>Avoid cache pages leaks following disk-full or I/O errors</li>
|
||
|
<li>And, many more minor bug fixes and performance enhancements....</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_5_8"></a>
|
||
|
<h3>2008-04-16 (3.5.8)</h3><p><ol class='lessindent'>
|
||
|
<li>Expose SQLite's internal pseudo-random number generator (PRNG)
|
||
|
via the <a href="c3ref/randomness.html">sqlite3_randomness()</a> interface</li>
|
||
|
<li>New interface <a href="c3ref/context_db_handle.html">sqlite3_context_db_handle()</a> that returns the
|
||
|
<a href="c3ref/sqlite3.html">database connection</a> handle that has invoked an application-defined
|
||
|
SQL function.</li>
|
||
|
<li>New interface <a href="c3ref/limit.html">sqlite3_limit()</a> allows size and length limits to be
|
||
|
set on a per-connection basis and at run-time.</li>
|
||
|
<li>Improved crash-robustness: write the database page size into the rollback
|
||
|
journal header.</li>
|
||
|
<li>Allow the <a href="lang_vacuum.html">VACUUM</a> command to change the page size of a database file.</li>
|
||
|
<li>The xAccess() method of the VFS is allowed to return -1 to signal
|
||
|
a memory allocation error.</li>
|
||
|
<li>Performance improvement: The OP_IdxDelete opcode uses unpacked records,
|
||
|
obviating the need for one OP_MakeRecord opcode call for each index
|
||
|
record deleted.</li>
|
||
|
<li>Performance improvement: Constant subexpressions are factored out of
|
||
|
loops.</li>
|
||
|
<li>Performance improvement: Results of OP_Column are reused rather than
|
||
|
issuing multiple OP_Column opcodes.</li>
|
||
|
<li>Fix a bug in the RTRIM collating sequence.</li>
|
||
|
<li>Fix a bug in the SQLITE_SECURE_DELETE option that was causing
|
||
|
Firefox crashes. Make arrangements to always test SQLITE_SECURE_DELETE
|
||
|
prior to each release.</li>
|
||
|
<li>Other miscellaneous performance enhancements.</li>
|
||
|
<li>Other miscellaneous minor bug fixes.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_5_7"></a>
|
||
|
<h3>2008-03-17 (3.5.7)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug (ticket #2927) in the register allocation for
|
||
|
compound selects - introduced by the new VM code in version 3.5.5.</li>
|
||
|
<li>ALTER TABLE uses double-quotes instead of single-quotes for quoting
|
||
|
filenames.</li>
|
||
|
<li>Use the WHERE clause to reduce the size of a materialized VIEW in
|
||
|
an UPDATE or DELETE statement. (Optimization)</li>
|
||
|
<li>Do not apply the flattening optimization if the outer query is an
|
||
|
aggregate and the inner query contains ORDER BY. (Ticket #2943)</li>
|
||
|
<li>Additional OS/2 updates</li>
|
||
|
<li>Added an experimental power-of-two, first-fit memory allocator.</li>
|
||
|
<li>Remove all instances of sprintf() from the code</li>
|
||
|
<li>Accept "Z" as the zulu timezone at the end of date strings</li>
|
||
|
<li>Fix a bug in the LIKE optimizer that occurs when the last character
|
||
|
before the first wildcard is an upper-case "Z"</li>
|
||
|
<li>Added the "bitvec" object for keeping track of which pages have
|
||
|
been journalled. Improves speed and reduces memory consumption, especially
|
||
|
for large database files.</li>
|
||
|
<li>Get the SQLITE_ENABLE_LOCKING_STYLE macro working again on Mac OS X.</li>
|
||
|
<li>Store the statement journal in the temporary file directory instead of
|
||
|
collocated with the database file.</li>
|
||
|
<li>Many improvements and cleanups to the configure script</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_5_6"></a>
|
||
|
<h3>2008-02-06 (3.5.6)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug (ticket #2913)
|
||
|
that prevented virtual tables from working in a LEFT JOIN.
|
||
|
The problem was introduced into shortly before the 3.5.5 release.</li>
|
||
|
<li>Bring the OS/2 porting layer up-to-date.</li>
|
||
|
<li>Add the new <a href="c3ref/result_blob.html">sqlite3_result_error_code()</a> API and use it in the
|
||
|
implementation of <a href="lang_attach.html">ATTACH</a> so that proper error codes are returned
|
||
|
when an <a href="lang_attach.html">ATTACH</a> fails.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_5_5"></a>
|
||
|
<h3>2008-01-31 (3.5.5)</h3><p><ol class='lessindent'>
|
||
|
<li>Convert the underlying virtual machine to be a register-based machine
|
||
|
rather than a stack-based machine. The only user-visible change
|
||
|
is in the output of EXPLAIN.</li>
|
||
|
<li>Add the build-in RTRIM collating sequence.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_5_4"></a>
|
||
|
<h3>2007-12-14 (3.5.4)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a critical bug in UPDATE or DELETE that occurs when an
|
||
|
OR REPLACE clause or a trigger causes rows in the same table to
|
||
|
be deleted as side effects. (See ticket #2832.) The most likely
|
||
|
result of this bug is a segmentation fault, though database
|
||
|
corruption is a possibility.</li>
|
||
|
<li>Bring the processing of ORDER BY into compliance with the
|
||
|
SQL standard for case where a result alias and a table column name
|
||
|
are in conflict. Correct behavior is to prefer the result alias.
|
||
|
Older versions of SQLite incorrectly picked the table column.
|
||
|
(See ticket #2822.)</li>
|
||
|
<li>The <a href="lang_vacuum.html">VACUUM</a> command preserves
|
||
|
the setting of the
|
||
|
<a href="pragma.html#pragma_legacy_file_format">legacy_file_format pragma</a>.
|
||
|
(Ticket #2804.)</li>
|
||
|
<li>Productize and officially support the group_concat() SQL function.</li>
|
||
|
<li>Better optimization of some IN operator expressions.</li>
|
||
|
<li>Add the ability to change the
|
||
|
<a href="pragma.html#pragma_auto_vacuum">auto_vacuum</a> status of a
|
||
|
database by setting the auto_vaccum pragma and VACUUMing the database.</li>
|
||
|
<li>Prefix search in FTS3 is much more efficient.</li>
|
||
|
<li>Relax the SQL statement length restriction in the CLI so that
|
||
|
the ".dump" output of databases with very large BLOBs and strings can
|
||
|
be played back to recreate the database.</li>
|
||
|
<li>Other small bug fixes and optimizations.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_5_3"></a>
|
||
|
<h3>2007-11-27 (3.5.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Move website and documentation files out of the source tree into
|
||
|
a <a href="http://www.sqlite.org/docsrc/">separate CM system</a>.
|
||
|
<li>Fix a long-standing bug in INSERT INTO ... SELECT ... statements
|
||
|
where the SELECT is compound.
|
||
|
<li>Fix a long-standing bug in RAISE(IGNORE) as used in BEFORE triggers.
|
||
|
<li>Fixed the operator precedence for the ~ operator.
|
||
|
<li>On Win32, do not return an error when attempting to delete a file
|
||
|
that does not exist.
|
||
|
<li>Allow collating sequence names to be quoted.
|
||
|
<li>Modify the TCL interface to use <a href="c3ref/prepare.html">sqlite3_prepare_v2()</a>.
|
||
|
<li>Fix multiple bugs that can occur following a malloc() failure.
|
||
|
<li><a href="c3ref/step.html">sqlite3_step()</a> returns <a href="rescode.html#misuse">SQLITE_MISUSE</a> instead of crashing when
|
||
|
called with a NULL parameter.
|
||
|
<li>FTS3 now uses the SQLite memory allocator exclusively. The
|
||
|
FTS3 amalgamation can now be appended to the SQLite amalgamation to
|
||
|
generate a super-amalgamation containing both.
|
||
|
<li>The DISTINCT keyword now will sometimes use an INDEX if an
|
||
|
appropriate index is available and the optimizer thinks its use
|
||
|
might be advantageous.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_5_2"></a>
|
||
|
<h3>2007-11-05 (3.5.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Dropped support for the <a href="compile.html#omitfeatures">SQLITE_OMIT_MEMORY_ALLOCATION</a> compile-time
|
||
|
option.
|
||
|
<li>Always open files using FILE_FLAG_RANDOM_ACCESS under Windows.
|
||
|
<li>The 3rd parameter of the built-in SUBSTR() function is now optional.
|
||
|
<li>Bug fix: do not invoke the authorizer when reparsing the schema after
|
||
|
a schema change.
|
||
|
<li>Added the experimental malloc-free memory allocator in mem3.c.
|
||
|
<li>Virtual machine stores 64-bit integer and floating point constants
|
||
|
in binary instead of text for a performance boost.
|
||
|
<li>Fix a race condition in test_async.c.
|
||
|
<li>Added the ".timer" command to the CLI
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_5_1"></a>
|
||
|
<h3>2007-10-04 (3.5.1)</h3><p><ol class='lessindent'>
|
||
|
<li><i><b>Nota Bene:</b> We are not using terms "alpha" or "beta" on this
|
||
|
release because the code is stable and because if we use those terms,
|
||
|
nobody will upgrade. However, we still reserve the right to make
|
||
|
incompatible changes to the new VFS interface in future releases.</i></li>
|
||
|
|
||
|
<li>Fix a bug in the handling of <a href="rescode.html#full">SQLITE_FULL</a> errors that could lead
|
||
|
to database corruption. Ticket #2686.
|
||
|
<li>The test_async.c drive now does full file locking and works correctly
|
||
|
when used simultaneously by multiple processes on the same database.
|
||
|
<li>The CLI ignores whitespace (including comments) at the end of lines
|
||
|
<li>Make sure the query optimizer checks dependencies on all terms of
|
||
|
a compound SELECT statement. Ticket #2640.
|
||
|
<li>Add demonstration code showing how to build a VFS for a raw
|
||
|
mass storage without a filesystem.
|
||
|
<li>Added an output buffer size parameter to the xGetTempname() method
|
||
|
of the VFS layer.
|
||
|
<li>Sticky <a href="rescode.html#full">SQLITE_FULL</a> or <a href="rescode.html#ioerr">SQLITE_IOERR</a> errors in the pager are reset
|
||
|
when a new transaction is started.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_5_0"></a>
|
||
|
<h3>2007-09-04 (3.5.0) alpha</h3><p><ol class='lessindent'>
|
||
|
<li>Redesign the OS interface layer. See
|
||
|
<a href="34to35.html">34to35.html</a> for details.
|
||
|
<font color="red">*** Potentially incompatible change ***</font>
|
||
|
<li>The <a href="c3ref/release_memory.html">sqlite3_release_memory()</a>, <a href="c3ref/soft_heap_limit.html">sqlite3_soft_heap_limit()</a>,
|
||
|
and <a href="c3ref/enable_shared_cache.html">sqlite3_enable_shared_cache()</a> interfaces now work cross all
|
||
|
threads in the process, not just the single thread in which they
|
||
|
are invoked.
|
||
|
<font color="red">*** Potentially incompatible change ***</font>
|
||
|
<li>Added the <a href="c3ref/open.html">sqlite3_open_v2()</a> interface.
|
||
|
<li>Reimplemented the memory allocation subsystem and made it
|
||
|
replaceable at compile-time.
|
||
|
<li>Created a new mutex subsystem and made it replicable at
|
||
|
compile-time.
|
||
|
<li>The same database connection may now be used simultaneously by
|
||
|
separate threads.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_4_2"></a>
|
||
|
<h3>2007-08-13 (3.4.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a database corruption bug that might occur if a ROLLBACK command
|
||
|
is executed in <a href="pragma.html#pragma_auto_vacuum">auto-vacuum mode</a>
|
||
|
and a very small <a href="c3ref/soft_heap_limit.html">sqlite3_soft_heap_limit</a> is set.
|
||
|
Ticket #2565.
|
||
|
|
||
|
<li>Add the ability to run a full regression test with a small
|
||
|
<a href="c3ref/soft_heap_limit.html">sqlite3_soft_heap_limit</a>.
|
||
|
|
||
|
<li>Fix other minor problems with using small soft heap limits.
|
||
|
|
||
|
<li>Work-around for
|
||
|
<a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32575">GCC bug 32575</a>.
|
||
|
|
||
|
<li>Improved error detection of misused aggregate functions.
|
||
|
|
||
|
<li>Improvements to the amalgamation generator script so that all symbols
|
||
|
are prefixed with either SQLITE_PRIVATE or SQLITE_API.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_4_1"></a>
|
||
|
<h3>2007-07-20 (3.4.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug in <a href="lang_vacuum.html">VACUUM</a> that can lead to
|
||
|
database corruptio if two
|
||
|
processes are connected to the database at the same time and one
|
||
|
VACUUMs then the other then modifies the database.</li>
|
||
|
<li>The expression "+column" is now considered the same as "column"
|
||
|
when computing the collating sequence to use on the expression.</li>
|
||
|
<li>In the <a href="tclsqlite.html">TCL language interface</a>,
|
||
|
"@variable" instead of "$variable" always binds as a blob.</li>
|
||
|
<li>Added <a href="pragma.html#pragma_freelist_count">PRAGMA freelist_count</a>
|
||
|
for determining the current size of the freelist.</li>
|
||
|
<li>The <a href="pragma.html#pragma_auto_vacuum">
|
||
|
PRAGMA auto_vacuum=incremental</a> setting is now persistent.</li>
|
||
|
<li>Add FD_CLOEXEC to all open files under Unix.</li>
|
||
|
<li>Fix a bug in the <a href="optoverview.html#minmax">
|
||
|
min()/max() optimization</a> when applied to
|
||
|
descending indices.</li>
|
||
|
<li>Make sure the TCL language interface works correctly with 64-bit
|
||
|
integers on 64-bit machines.</li>
|
||
|
<li>Allow the value -9223372036854775808 as an integer literal in SQL
|
||
|
statements.</li>
|
||
|
<li>Add the capability of "hidden" columns in virtual tables.</li>
|
||
|
<li>Use the macro SQLITE_PRIVATE (defaulting to "static") on all
|
||
|
internal functions in the amalgamation.</li>
|
||
|
<li>Add pluggable tokenizers and <a href="http://www.icu-project.org/">ICU</a>
|
||
|
tokenization support to FTS2</li>
|
||
|
<li>Other minor bug fixes and documentation enhancements</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_4_0"></a>
|
||
|
<h3>2007-06-18 (3.4.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug that can lead to database corruption if an <a href="rescode.html#busy">SQLITE_BUSY</a> error
|
||
|
occurs in the middle of an explicit transaction and that transaction
|
||
|
is later committed. Ticket #2409.
|
||
|
<li>Fix a bug that can lead to database corruption if autovacuum mode is
|
||
|
on and a malloc() failure follows a CREATE TABLE or CREATE INDEX statement
|
||
|
which itself follows a cache overflow inside a transaction. See
|
||
|
ticket #2418.
|
||
|
</li>
|
||
|
<li>Added explicit <a href="limits.html">upper bounds</a> on the sizes and
|
||
|
quantities of things SQLite can process. This change might cause
|
||
|
compatibility problems for
|
||
|
applications that use SQLite in the extreme, which is why the current
|
||
|
release is 3.4.0 instead of 3.3.18.</li>
|
||
|
<li>Added support for <a href="c3ref/blob_open.html">Incremental BLOB I/O</a>.</li>
|
||
|
<li>Added the <a href="c3ref/bind_blob.html">sqlite3_bind_zeroblob()</a> API</a>
|
||
|
and the <a href="lang_expr.html#zeroblob">zeroblob()</a> SQL function.</li>
|
||
|
<li>Added support for <a href="pragma.html#pragma_incremental_vacuum">
|
||
|
Incremental Vacuum</a>.</li>
|
||
|
<li>Added the SQLITE_MIXED_ENDIAN_64BIT_FLOAT compile-time option to support
|
||
|
ARM7 processors with goofy endianness.</li>
|
||
|
<li>Removed all instances of sprintf() and strcpy() from the core library.</li>
|
||
|
<li>Added support for
|
||
|
<a href="http://www.icu-project.org/">International Components for Unicode (ICU)</a>
|
||
|
to the full-text search extensions.
|
||
|
<li>In the Windows OS driver, reacquire a SHARED lock if an attempt to
|
||
|
acquire an EXCLUSIVE lock fails. Ticket #2354</li>
|
||
|
<li>Fix the REPLACE() function so that it returns NULL if the second argument
|
||
|
is an empty string. Ticket #2324.</li>
|
||
|
<li>Document the hazards of type conversions in
|
||
|
<a href="c3ref/column_blob.html">sqlite3_column_blob()</a>
|
||
|
and related APIs. Fix unnecessary type conversions. Ticket #2321.</li>
|
||
|
<li>Internationalization of the TRIM() function. Ticket #2323</li>
|
||
|
<li>Use memmove() instead of memcpy() when moving between memory regions
|
||
|
that might overlap. Ticket #2334</li>
|
||
|
<li>Fix an optimizer bug involving subqueries in a compound SELECT that has
|
||
|
both an ORDER BY and a LIMIT clause. Ticket #2339.</li>
|
||
|
<li>Make sure the <a href="c3ref/mprintf.html">sqlite3_snprintf()</a>
|
||
|
interface does not zero-terminate the buffer if the buffer size is
|
||
|
less than 1. Ticket #2341</li>
|
||
|
<li>Fix the built-in printf logic so that it prints "NaN" not "Inf" for
|
||
|
floating-point NaNs. Ticket #2345</li>
|
||
|
<li>When converting BLOB to TEXT, use the text encoding of the main database.
|
||
|
Ticket #2349</li>
|
||
|
<li>Keep the full precision of integers (if possible) when casting to
|
||
|
NUMERIC. Ticket #2364</li>
|
||
|
<li>Fix a bug in the handling of UTF16 codepoint 0xE000</li>
|
||
|
<li>Consider explicit collate clauses when matching WHERE constraints
|
||
|
to indices in the query optimizer. Ticket #2391</li>
|
||
|
<li>Fix the query optimizer to correctly handle constant expressions in
|
||
|
the ON clause of a LEFT JOIN. Ticket #2403</li>
|
||
|
<li>Fix the query optimizer to handle rowid comparisons to NULL
|
||
|
correctly. Ticket #2404</li>
|
||
|
<li>Fix many potential segfaults that could be caused by malicious SQL
|
||
|
statements.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_3_17"></a>
|
||
|
<h3>2007-04-25 (3.3.17)</h3><p><ol class='lessindent'>
|
||
|
<li>When the "write_version" value of the database header is larger than
|
||
|
what the library understands, make the database read-only instead of
|
||
|
unreadable.</li>
|
||
|
<li>Other minor bug fixes</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_3_16"></a>
|
||
|
<h3>2007-04-18 (3.3.16)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug that caused VACUUM to fail if NULLs appeared in a
|
||
|
UNIQUE column.</li>
|
||
|
<li>Reinstate performance improvements that were added in
|
||
|
<a href="#version_3_3_14">Version 3.3.14</a>
|
||
|
but regressed in <a href="#version_3_3_15">Version 3.3.15</a>.</li>
|
||
|
<li>Fix problems with the handling of ORDER BY expressions on
|
||
|
compound SELECT statements in subqueries.</li>
|
||
|
<li>Fix a potential segfault when destroying locks on WinCE in
|
||
|
a multi-threaded environment.</li>
|
||
|
<li>Documentation updates.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_3_15"></a>
|
||
|
<h3>2007-04-09 (3.3.15)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug introduced in 3.3.14 that caused a rollback of
|
||
|
CREATE TEMP TABLE to leave the database connection wedged.</li>
|
||
|
<li>Fix a bug that caused an extra NULL row to be returned when
|
||
|
a descending query was interrupted by a change to the database.</li>
|
||
|
<li>The FOR EACH STATEMENT clause on a trigger now causes a syntax
|
||
|
error. It used to be silently ignored.</li>
|
||
|
<li>Fix an obscure and relatively harmless problem that might have caused
|
||
|
a resource leak following an I/O error.</li>
|
||
|
<li>Many improvements to the test suite. Test coverage now exceeded 98%</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_3_14"></a>
|
||
|
<h3>2007-04-02 (3.3.14)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug (ticket #2273)
|
||
|
that could cause a segfault when the IN operator
|
||
|
is used one one term of a two-column index and the right-hand side of
|
||
|
the IN operator contains a NULL.</li>
|
||
|
<li>Added a new OS interface method for determining the sector size
|
||
|
of underlying media: sqlite3OsSectorSize().</li>
|
||
|
<li>A new algorithm for statements of the form
|
||
|
INSERT INTO <i>table1</i> SELECT * FROM <i>table2</i>
|
||
|
is faster and reduces fragmentation. VACUUM uses statements of
|
||
|
this form and thus runs faster and defragments better.</li>
|
||
|
<li>Performance enhancements through reductions in disk I/O:
|
||
|
<ol type='a'>
|
||
|
<li>Do not read the last page of an overflow chain when
|
||
|
deleting the row - just add that page to the freelist.</li>
|
||
|
<li>Do not store pages being deleted in the
|
||
|
rollback journal.</li>
|
||
|
<li>Do not read in the (meaningless) content of
|
||
|
pages extracted from the freelist.</li>
|
||
|
<li>Do not flush the page cache (and thus avoiding
|
||
|
a cache refill) unless another process changes the underlying
|
||
|
database file.</li>
|
||
|
<li>Truncate rather than delete the rollback journal when committing
|
||
|
a transaction in exclusive access mode, or when committing the TEMP
|
||
|
database.</li>
|
||
|
</ol></li>
|
||
|
<li>Added support for exclusive access mode using
|
||
|
<a href="pragma.html#pragma_locking_mode">
|
||
|
"PRAGMA locking_mode=EXCLUSIVE"</a></li>
|
||
|
<li>Use heap space instead of stack space for large buffers in the
|
||
|
pager - useful on embedded platforms with stack-space
|
||
|
limitations.</li>
|
||
|
<li>Add a makefile target "sqlite3.c" that builds an amalgamation containing
|
||
|
the core SQLite library C code in a single file.</li>
|
||
|
<li>Get the library working correctly when compiled
|
||
|
with GCC option "-fstrict-aliasing".</li>
|
||
|
<li>Removed the vestigal SQLITE_PROTOCOL error.</li>
|
||
|
<li>Improvements to test coverage, other minor bugs fixed,
|
||
|
memory leaks plugged,
|
||
|
code refactored and/or recommended in places for easier reading.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_3_13"></a>
|
||
|
<h3>2007-02-13 (3.3.13)</h3><p><ol class='lessindent'>
|
||
|
<li>Add a "fragmentation" measurement in the output of sqlite3_analyzer.</li>
|
||
|
<li>Add the COLLATE operator used to explicitly set the collating sequence
|
||
|
used by an expression. This feature is considered experimental pending
|
||
|
additional testing.</li>
|
||
|
<li>Allow up to 64 tables in a join - the old limit was 32.</li>
|
||
|
<li>Added two new experimental functions:
|
||
|
<a href="lang_expr.html#randomblobFunc">randomBlob()</a> and
|
||
|
<a href="lang_expr.html#hexFunc">hex()</a>.
|
||
|
Their intended use is to facilitate generating
|
||
|
<a href="http://en.wikipedia.org/wiki/UUID">UUIDs</a>.
|
||
|
</li>
|
||
|
<li>Fix a problem where
|
||
|
<a href="pragma.html#pragma_count_changes">PRAGMA count_changes</a> was
|
||
|
causing incorrect results for updates on tables with triggers</li>
|
||
|
<li>Fix a bug in the ORDER BY clause optimizer for joins where the
|
||
|
left-most table in the join is constrained by a UNIQUE index.</li>
|
||
|
<li>Fixed a bug in the "copy" method of the TCL interface.</li>
|
||
|
<li>Bug fixes in fts1 and fts2 modules.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_3_12"></a>
|
||
|
<h3>2007-01-27 (3.3.12)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix another bug in the IS NULL optimization that was added in
|
||
|
version 3.3.9.</li>
|
||
|
<li>Fix an assertion fault that occurred on deeply nested views.</li>
|
||
|
<li>Limit the amount of output that
|
||
|
<a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a>
|
||
|
generates.</li>
|
||
|
<li>Minor syntactic changes to support a wider variety of compilers.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_3_11"></a>
|
||
|
<h3>2007-01-22 (3.3.11)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix another bug in the implementation of the new
|
||
|
<a href="c3ref/prepare.html">sqlite3_prepare_v2()</a> API.
|
||
|
We'll get it right eventually...</li>
|
||
|
<li>Fix a bug in the IS NULL optimization that was added in version 3.3.9 -
|
||
|
the bug was causing incorrect results on certain LEFT JOINs that included
|
||
|
in the WHERE clause an IS NULL constraint for the right table of the
|
||
|
LEFT JOIN.</li>
|
||
|
<li>Make AreFileApisANSI() a no-op macro in WinCE since WinCE does not
|
||
|
support this function.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_3_10"></a>
|
||
|
<h3>2007-01-09 (3.3.10)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix bugs in the implementation of the new
|
||
|
<a href="c3ref/prepare.html">sqlite3_prepare_v2()</a> API
|
||
|
that can lead to segfaults.</li>
|
||
|
<li>Fix 1-second round-off errors in the
|
||
|
strftime() function</li>
|
||
|
<li>Enhance the Windows OS layer to provide detailed error codes</li>
|
||
|
<li>Work around a win2k problem so that SQLite can use single-character
|
||
|
database file names</li>
|
||
|
<li>The
|
||
|
<a href="pragma.html#pragma_user_version">user_version</a> and
|
||
|
<a href="pragma.html#pragma_schema_version">schema_version</a> pragmas
|
||
|
correctly set their column names in the result set</li>
|
||
|
<li>Documentation updates</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_3_9"></a>
|
||
|
<h3>2007-01-04 (3.3.9)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix bugs in pager.c that could lead to database corruption if two
|
||
|
processes both try to recover a hot journal at the same instant</li>
|
||
|
<li>Added the <a href="c3ref/prepare.html">sqlite3_prepare_v2()</a>
|
||
|
API.</li>
|
||
|
<li>Fixed the ".dump" command in the command-line shell to show
|
||
|
indices, triggers and views again.</li>
|
||
|
<li>Change the table_info pragma so that it returns NULL for the default
|
||
|
value if there is no default value</li>
|
||
|
<li>Support for non-ASCII characters in win95 filenames</li>
|
||
|
<li>Query optimizer enhancements:
|
||
|
<ol type='a'>
|
||
|
<li>Optimizer does a better job of using indices to satisfy ORDER BY
|
||
|
clauses that sort on the integer primary key</li>
|
||
|
<li>Use an index to satisfy an IS NULL operator in the WHERE clause</li>
|
||
|
<li>Fix a bug that was causing the optimizer to miss an OR optimization
|
||
|
opportunity</li>
|
||
|
<li>The optimizer has more freedom to reorder tables in the FROM clause
|
||
|
even in there are LEFT joins.</li>
|
||
|
</ol>
|
||
|
<li>Extension loading supported added to WinCE</li>
|
||
|
<li>Allow constraint names on the DEFAULT clause in a table definition</li>
|
||
|
<li>Added the ".bail" command to the command-line shell</li>
|
||
|
<li>Make CSV (comma separate value) output from the command-line shell
|
||
|
more closely aligned to accepted practice</li>
|
||
|
<li>Experimental FTS2 module added</li>
|
||
|
<li>Use sqlite3_mprintf() instead of strdup() to avoid libc dependencies</li>
|
||
|
<li>VACUUM uses a temporary file in the official TEMP folder, not in the
|
||
|
same directory as the original database</li>
|
||
|
<li>The prefix on temporary filenames on Windows is changed from "sqlite"
|
||
|
to "etilqs".</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_3_8"></a>
|
||
|
<h3>2006-10-09 (3.3.8)</h3><p><ol class='lessindent'>
|
||
|
<li>Support for full text search using the FTS1 module (beta)</li>
|
||
|
<li>Added Mac OS X locking patches (beta - disabled by default)</li>
|
||
|
<li>Introduce extended error codes and add error codes for various
|
||
|
kinds of I/O errors.</li>
|
||
|
<li>Added support for IF EXISTS on CREATE/DROP TRIGGER/VIEW</li>
|
||
|
<li>Fix the regression test suite so that it works with Tcl8.5</li>
|
||
|
<li>Enhance sqlite3_set_authorizer() to provide notification of calls to
|
||
|
SQL functions.</li>
|
||
|
<li>Added experimental API: sqlite3_auto_extension()</li>
|
||
|
<li>Various minor bug fixes</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_3_7"></a>
|
||
|
<h3>2006-08-12 (3.3.7)</h3><p><ol class='lessindent'>
|
||
|
<li>Added support for virtual tables (beta)</li>
|
||
|
<li>Added support for dynamically loaded extensions (beta)</li>
|
||
|
<li>The
|
||
|
<a href="c3ref/interrupt.html">sqlite3_interrupt()</a>
|
||
|
routine can be called for a different thread</li>
|
||
|
<li>Added the <a href="lang_expr.html#match">MATCH</a> operator.</li>
|
||
|
<li>The default file format is now 1.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_3_6"></a>
|
||
|
<h3>2006-06-06 (3.3.6)</h3><p><ol class='lessindent'>
|
||
|
<li>Plays better with virus scanners on Windows</li>
|
||
|
<li>Faster :memory: databases</li>
|
||
|
<li>Fix an obscure segfault in UTF-8 to UTF-16 conversions</li>
|
||
|
<li>Added driver for OS/2</li>
|
||
|
<li>Correct column meta-information returned for aggregate queries</li>
|
||
|
<li>Enhanced output from EXPLAIN QUERY PLAN</li>
|
||
|
<li>LIMIT 0 now works on subqueries</li>
|
||
|
<li>Bug fixes and performance enhancements in the query optimizer</li>
|
||
|
<li>Correctly handle NULL filenames in ATTACH and DETACH</li>
|
||
|
<li>Improved syntax error messages in the parser</li>
|
||
|
<li>Fix type coercion rules for the IN operator</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_3_5"></a>
|
||
|
<h3>2006-04-05 (3.3.5)</h3><p><ol class='lessindent'>
|
||
|
<li>CHECK constraints use conflict resolution algorithms correctly.</li>
|
||
|
<li>The SUM() function throws an error on integer overflow.</li>
|
||
|
<li>Choose the column names in a compound query from the left-most SELECT
|
||
|
instead of the right-most.</li>
|
||
|
<li>The sqlite3_create_collation() function
|
||
|
honors the SQLITE_UTF16_ALIGNED flag.</li>
|
||
|
<li>SQLITE_SECURE_DELETE compile-time option causes deletes to overwrite
|
||
|
old data with zeros.</li>
|
||
|
<li>Detect integer overflow in abs().</li>
|
||
|
<li>The random() function provides 64 bits of randomness instead of
|
||
|
only 32 bits.</li>
|
||
|
<li>Parser detects and reports automaton stack overflow.</li>
|
||
|
<li>Change the round() function to return REAL instead of TEXT.</li>
|
||
|
<li>Allow WHERE clause terms on the left table of a LEFT OUTER JOIN to
|
||
|
contain aggregate subqueries.</li>
|
||
|
<li>Skip over leading spaces in text to numeric conversions.</li>
|
||
|
<li>Various minor bug and documentation typo fixes and
|
||
|
performance enhancements.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_3_4"></a>
|
||
|
<h3>2006-02-11 (3.3.4)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a blunder in the Unix mutex implementation that can lead to
|
||
|
deadlock on multithreaded systems.</li>
|
||
|
<li>Fix an alignment problem on 64-bit machines</li>
|
||
|
<li>Added the fullfsync pragma.</li>
|
||
|
<li>Fix an optimizer bug that could have caused some unusual LEFT OUTER JOINs
|
||
|
to give incorrect results.</li>
|
||
|
<li>The SUM function detects integer overflow and converts to accumulating
|
||
|
an approximate result using floating point numbers</li>
|
||
|
<li>Host parameter names can begin with '@' for compatibility with SQL Server.
|
||
|
</li>
|
||
|
<li>Other miscellaneous bug fixes</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_3_3"></a>
|
||
|
<h3>2006-01-31 (3.3.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Removed support for an ON CONFLICT clause on CREATE INDEX - it never
|
||
|
worked correctly so this should not present any backward compatibility
|
||
|
problems.</li>
|
||
|
<li>Authorizer callback now notified of ALTER TABLE ADD COLUMN commands</li>
|
||
|
<li>After any changes to the TEMP database schema, all prepared statements
|
||
|
are invalidated and must be recreated using a new call to
|
||
|
sqlite3_prepare()</li>
|
||
|
<li>Other minor bug fixes in preparation for the first stable release
|
||
|
of version 3.3</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2006-01-24 (3.3.2 beta)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fixes and speed improvements. Improved test coverage.</li>
|
||
|
<li>Changes to the OS-layer interface: mutexes must now be recursive.</li>
|
||
|
<li>Discontinue the use of thread-specific data for out-of-memory
|
||
|
exception handling</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2006-01-16 (3.3.1 alpha)</h3><p><ol class='lessindent'>
|
||
|
<li>Countless bug fixes</li>
|
||
|
<li>Speed improvements</li>
|
||
|
<li>Database connections can now be used by multiple threads, not just
|
||
|
the thread in which they were created.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2006-01-11 (3.3.0 alpha)</h3><p><ol class='lessindent'>
|
||
|
<li>CHECK constraints</li>
|
||
|
<li>IF EXISTS and IF NOT EXISTS clauses on CREATE/DROP TABLE/INDEX.</li>
|
||
|
<li>DESC indices</li>
|
||
|
<li>More efficient encoding of boolean values resulting in smaller database
|
||
|
files</li>
|
||
|
<li>More aggressive <a href="compile.html#omit_floating_point">SQLITE_OMIT_FLOATING_POINT</a></li>
|
||
|
<li>Separate INTEGER and REAL affinity</li>
|
||
|
<li>Added a virtual function layer for the OS interface</li>
|
||
|
<li>"exists" method added to the TCL interface</li>
|
||
|
<li>Improved response to out-of-memory errors</li>
|
||
|
<li>Database cache can be optionally shared between connections
|
||
|
in the same thread</li>
|
||
|
<li>Optional READ UNCOMMITTED isolation (instead of the default
|
||
|
isolation level of SERIALIZABLE) and table level locking when
|
||
|
database connections share a common cache.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_2_8"></a>
|
||
|
<h3>2005-12-19 (3.2.8)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix an obscure bug that can cause database corruption under the
|
||
|
following unusual circumstances: A large INSERT or UPDATE statement which
|
||
|
is part of an even larger transaction fails due to a uniqueness constraint
|
||
|
but the containing transaction commits.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_17"></a>
|
||
|
<h3>2005-12-19 (2.8.17)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix an obscure bug that can cause database corruption under the
|
||
|
following unusual circumstances: A large INSERT or UPDATE statement which
|
||
|
is part of an even larger transaction fails due to a uniqueness contraint
|
||
|
but the containing transaction commits.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_2_7"></a>
|
||
|
<h3>2005-09-24 (3.2.7)</h3><p><ol class='lessindent'>
|
||
|
<li>GROUP BY now considers NULLs to be equal again, as it should
|
||
|
</li>
|
||
|
<li>Now compiles on Solaris and OpenBSD and other Unix variants
|
||
|
that lack the fdatasync() function</li>
|
||
|
<li>Now compiles on MSVC++6 again</li>
|
||
|
<li>Fix uninitialized variables causing malfunctions for various obscure
|
||
|
queries</li>
|
||
|
<li>Correctly compute a LEFT OUTER JOINs that is constrained on the
|
||
|
left table only</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_2_6"></a>
|
||
|
<h3>2005-09-17 (3.2.6)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug that can cause database corruption if a VACUUM (or
|
||
|
autovacuum) fails and is rolled back on a database that is
|
||
|
larger than 1GiB</li>
|
||
|
<li>LIKE optimization now works for columns with COLLATE NOCASE</li>
|
||
|
<li>ORDER BY and GROUP BY now use bounded memory</li>
|
||
|
<li>Added support for COUNT(DISTINCT expr)</li>
|
||
|
<li>Change the way SUM() handles NULL values in order to comply with
|
||
|
the SQL standard</li>
|
||
|
<li>Use fdatasync() instead of fsync() where possible in order to speed
|
||
|
up commits slightly</li>
|
||
|
<li>Use of the CROSS keyword in a join turns off the table reordering
|
||
|
optimization</li>
|
||
|
<li>Added the experimental and undocumented EXPLAIN QUERY PLAN capability</li>
|
||
|
<li>Use the unicode API in Windows</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_2_5"></a>
|
||
|
<h3>2005-08-27 (3.2.5)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug effecting DELETE and UPDATE statements that changed
|
||
|
more than 40960 rows.</li>
|
||
|
<li>Change the makefile so that it no longer requires GNUmake extensions</li>
|
||
|
<li>Fix the --enable-threadsafe option on the configure script</li>
|
||
|
<li>Fix a code generator bug that occurs when the left-hand side of an IN
|
||
|
operator is constant and the right-hand side is a SELECT statement</li>
|
||
|
<li>The PRAGMA synchronous=off statement now disables syncing of the
|
||
|
master journal file in addition to the normal rollback journals</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_2_4"></a>
|
||
|
<h3>2005-08-24 (3.2.4)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug introduced in the previous release
|
||
|
that can cause a segfault while generating code
|
||
|
for complex WHERE clauses.</li>
|
||
|
<li>Allow floating point literals to begin or end with a decimal point.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_2_3"></a>
|
||
|
<h3>2005-08-21 (3.2.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Added support for the CAST operator</li>
|
||
|
<li>Tcl interface allows BLOB values to be transferred to user-defined
|
||
|
functions</li>
|
||
|
<li>Added the "transaction" method to the Tcl interface</li>
|
||
|
<li>Allow the DEFAULT value of a column to call functions that have constant
|
||
|
operands</li>
|
||
|
<li>Added the ANALYZE command for gathering statistics on indices and
|
||
|
using those statistics when picking an index in the optimizer</li>
|
||
|
<li>Remove the limit (formerly 100) on the number of terms in the
|
||
|
WHERE clause</li>
|
||
|
<li>The right-hand side of the IN operator can now be a list of expressions
|
||
|
instead of just a list of constants</li>
|
||
|
<li>Rework the optimizer so that it is able to make better use of indices</li>
|
||
|
<li>The order of tables in a join is adjusted automatically to make
|
||
|
better use of indices</li>
|
||
|
<li>The IN operator is now a candidate for optimization even if the left-hand
|
||
|
side is not the left-most term of the index. Multiple IN operators can be
|
||
|
used with the same index.</li>
|
||
|
<li>WHERE clause expressions using BETWEEN and OR are now candidates
|
||
|
for optimization</li>
|
||
|
<li>Added the "case_sensitive_like" pragma and the SQLITE_CASE_SENSITIVE_LIKE
|
||
|
compile-time option to set its default value to "on".</li>
|
||
|
<li>Use indices to help with GLOB expressions and LIKE expressions too
|
||
|
when the case_sensitive_like pragma is enabled</li>
|
||
|
<li>Added support for grave-accent quoting for compatibility with MySQL</li>
|
||
|
<li>Improved test coverage</li>
|
||
|
<li>Dozens of minor bug fixes</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_2_2"></a>
|
||
|
<h3>2005-06-12 (3.2.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the sqlite3_db_handle() API</li>
|
||
|
<li>Added the sqlite3_get_autocommit() API</li>
|
||
|
<li>Added a REGEXP operator to the parser. There is no function to back
|
||
|
up this operator in the standard build but users can add their own using
|
||
|
sqlite3_create_function()</li>
|
||
|
<li>Speed improvements and library footprint reductions.</li>
|
||
|
<li>Fix byte alignment problems on 64-bit architectures.</li>
|
||
|
<li>Many, many minor bug fixes and documentation updates.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_2_1"></a>
|
||
|
<h3>2005-03-29 (3.2.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a memory allocation error in the new ADD COLUMN comment.</li>
|
||
|
<li>Documentation updates</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_2_0"></a>
|
||
|
<h3>2005-03-21 (3.2.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Added support for ALTER TABLE ADD COLUMN.</li>
|
||
|
<li>Added support for the "T" separator in ISO-8601 date/time strings.</li>
|
||
|
<li>Improved support for Cygwin.</li>
|
||
|
<li>Numerous bug fixes and documentation updates.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_1_6"></a>
|
||
|
<h3>2005-03-17 (3.1.6)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug that could cause database corruption when inserting
|
||
|
record into tables with around 125 columns.</li>
|
||
|
<li>sqlite3_step() is now much more likely to invoke the busy handler
|
||
|
and less likely to return SQLITE_BUSY.</li>
|
||
|
<li>Fix memory leaks that used to occur after a malloc() failure.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_1_5"></a>
|
||
|
<h3>2005-03-11 (3.1.5)</h3><p><ol class='lessindent'>
|
||
|
<li>The ioctl on Mac OS X to control syncing to disk is F_FULLFSYNC,
|
||
|
not F_FULLSYNC. The previous release had it wrong.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_1_4"></a>
|
||
|
<h3>2005-03-11 (3.1.4)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug in autovacuum that could cause database corruption if
|
||
|
a CREATE UNIQUE INDEX fails because of a constraint violation.
|
||
|
This problem only occurs if the new autovacuum feature introduced in
|
||
|
version 3.1 is turned on.</li>
|
||
|
<li>The F_FULLSYNC ioctl (currently only supported on Mac OS X) is disabled
|
||
|
if the synchronous pragma is set to something other than "full".</li>
|
||
|
<li>Add additional forward compatibility to the future version 3.2 database
|
||
|
file format.</li>
|
||
|
<li>Fix a bug in WHERE clauses of the form (rowid<'2')</li>
|
||
|
<li>New <a href="compile.html#omitfeatures">SQLITE_OMIT_...</a> compile-time options added</li>
|
||
|
<li>Updates to the man page</li>
|
||
|
<li>Remove the use of strcasecmp() from the shell</li>
|
||
|
<li>Windows DLL exports symbols Tclsqlite_Init and Sqlite_Init</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_1_3"></a>
|
||
|
<h3>2005-02-19 (3.1.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a problem with VACUUM on databases from which tables containing
|
||
|
AUTOINCREMENT have been dropped.</li>
|
||
|
<li>Add forward compatibility to the future version 3.2 database file
|
||
|
format.</li>
|
||
|
<li>Documentation updates</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_1_2"></a>
|
||
|
<h3>2005-02-15 (3.1.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug that can lead to database corruption if there are two
|
||
|
open connections to the same database and one connection does a VACUUM
|
||
|
and the second makes some change to the database.</li>
|
||
|
<li>Allow "?" parameters in the LIMIT clause.</li>
|
||
|
<li>Fix VACUUM so that it works with AUTOINCREMENT.</li>
|
||
|
<li>Fix a race condition in AUTOVACUUM that can lead to corrupt databases</li>
|
||
|
<li>Add a numeric version number to the sqlite3.h include file.</li>
|
||
|
<li>Other minor bug fixes and performance enhancements.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_16"></a>
|
||
|
<h3>2005-02-15 (2.8.16)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug that can lead to database corruption if there are two
|
||
|
open connections to the same database and one connection does a VACUUM
|
||
|
and the second makes some change to the database.</li>
|
||
|
<li>Correctly handle quoted names in CREATE INDEX statements.</li>
|
||
|
<li>Fix a naming conflict between sqlite.h and sqlite3.h.</li>
|
||
|
<li>Avoid excess heap usage when copying expressions.</li>
|
||
|
<li>Other minor bug fixes.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2005-02-01 (3.1.1 BETA)</h3><p><ol class='lessindent'>
|
||
|
<li>Automatic caching of prepared statements in the TCL interface</li>
|
||
|
<li>ATTACH and DETACH as well as some other operations cause existing
|
||
|
prepared statements to expire.</li>
|
||
|
<li>Numerous minor bug fixes</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2005-01-21 (3.1.0 ALPHA)</h3><p><ol class='lessindent'>
|
||
|
<li>Autovacuum support added</li>
|
||
|
<li>CURRENT_TIME, CURRENT_DATE, and CURRENT_TIMESTAMP added</li>
|
||
|
<li>Support for the EXISTS clause added.</li>
|
||
|
<li>Support for correlated subqueries added.</li>
|
||
|
<li>Added the ESCAPE clause on the LIKE operator.</li>
|
||
|
<li>Support for ALTER TABLE ... RENAME TABLE ... added</li>
|
||
|
<li>AUTOINCREMENT keyword supported on INTEGER PRIMARY KEY</li>
|
||
|
<li>Many SQLITE_OMIT_ macros inserts to omit features at compile-time
|
||
|
and reduce the library footprint.</li>
|
||
|
<li>The REINDEX command was added.</li>
|
||
|
<li>The engine no longer consults the main table if it can get
|
||
|
all the information it needs from an index.</li>
|
||
|
<li>Many nuisance bugs fixed.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_0_8"></a>
|
||
|
<h3>2004-10-12 (3.0.8)</h3><p><ol class='lessindent'>
|
||
|
<li>Add support for DEFERRED, IMMEDIATE, and EXCLUSIVE transactions.</li>
|
||
|
<li>Allow new user-defined functions to be created when there are
|
||
|
already one or more precompiled SQL statements.<li>
|
||
|
<li>Fix portability problems for MinGW/MSYS.</li>
|
||
|
<li>Fix a byte alignment problem on 64-bit Sparc machines.</li>
|
||
|
<li>Fix the ".import" command of the shell so that it ignores \r
|
||
|
characters at the end of lines.</li>
|
||
|
<li>The "csv" mode option in the shell puts strings inside double-quotes.</li>
|
||
|
<li>Fix typos in documentation.</li>
|
||
|
<li>Convert array constants in the code to have type "const".</li>
|
||
|
<li>Numerous code optimizations, specially optimizations designed to
|
||
|
make the code footprint smaller.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_3_0_7"></a>
|
||
|
<h3>2004-09-18 (3.0.7)</h3><p><ol class='lessindent'>
|
||
|
<li>The BTree module allocates large buffers using malloc() instead of
|
||
|
off of the stack, in order to play better on machines with limited
|
||
|
stack space.</li>
|
||
|
<li>Fixed naming conflicts so that versions 2.8 and 3.0 can be
|
||
|
linked and used together in the same ANSI-C source file.</li>
|
||
|
<li>New interface: sqlite3_bind_parameter_index()</li>
|
||
|
<li>Add support for wildcard parameters of the form: "?nnn"</li>
|
||
|
<li>Fix problems found on 64-bit systems.</li>
|
||
|
<li>Removed encode.c file (containing unused routines) from the
|
||
|
version 3.0 source tree.</li>
|
||
|
<li>The sqlite3_trace() callbacks occur before each statement
|
||
|
is executed, not when the statement is compiled.</li>
|
||
|
<li>Makefile updates and miscellaneous bug fixes.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2004-09-02 (3.0.6 beta)</h3><p><ol class='lessindent'>
|
||
|
<li>Better detection and handling of corrupt database files.</li>
|
||
|
<li>The sqlite3_step() interface returns SQLITE_BUSY if it is unable
|
||
|
to commit a change because of a lock</li>
|
||
|
<li>Combine the implementations of LIKE and GLOB into a single
|
||
|
pattern-matching subroutine.</li>
|
||
|
<li>Miscellaneous code size optimizations and bug fixes</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2004-08-29 (3.0.5 beta)</h3><p><ol class='lessindent'>
|
||
|
<li>Support for ":AAA" style bind parameter names.</li>
|
||
|
<li>Added the new sqlite3_bind_parameter_name() interface.</li>
|
||
|
<li>Support for TCL variable names embedded in SQL statements in the
|
||
|
TCL bindings.</li>
|
||
|
<li>The TCL bindings transfer data without necessarily doing a conversion
|
||
|
to a string.</li>
|
||
|
<li>The database for TEMP tables is not created until it is needed.</li>
|
||
|
<li>Add the ability to specify an alternative temporary file directory
|
||
|
using the "sqlite_temp_directory" global variable.</li>
|
||
|
<li>A compile-time option (SQLITE_BUSY_RESERVED_LOCK) causes the busy
|
||
|
handler to be called when there is contention for a RESERVED lock.</li>
|
||
|
<li>Various bug fixes and optimizations</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2004-08-09 (3.0.4 beta)</h3><p><ol class='lessindent'>
|
||
|
<li>CREATE TABLE and DROP TABLE now work correctly as prepared statements.</li>
|
||
|
<li>Fix a bug in VACUUM and UNIQUE indices.</li>
|
||
|
<li>Add the ".import" command to the command-line shell.</li>
|
||
|
<li>Fix a bug that could cause index corruption when an attempt to
|
||
|
delete rows of a table is blocked by a pending query.</li>
|
||
|
<li>Library size optimizations.</li>
|
||
|
<li>Other minor bug fixes.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_15"></a>
|
||
|
<h3>2004-07-22 (2.8.15)</h3><p><ol class='lessindent'>
|
||
|
<li>This is a maintenance release only. Various minor bugs have been
|
||
|
fixed and some portability enhancements are added.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2004-07-22 (3.0.3 beta)</h3><p><ol class='lessindent'>
|
||
|
<li>The second beta release for SQLite 3.0.</li>
|
||
|
<li>Add support for "PRAGMA page_size" to adjust the page size of
|
||
|
the database.</li>
|
||
|
<li>Various bug fixes and documentation updates.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2004-06-30 (3.0.2 beta)</h3><p><ol class='lessindent'>
|
||
|
<li>The first beta release for SQLite 3.0.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2004-06-22 (3.0.1 alpha)</h3><p><ol class='lessindent'>
|
||
|
<li><font color="red"><b>
|
||
|
*** Alpha Release - Research And Testing Use Only ***</b></font>
|
||
|
<li>Lots of bug fixes.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2004-06-18 (3.0.0 alpha)</h3><p><ol class='lessindent'>
|
||
|
<li><font color="red"><b>
|
||
|
*** Alpha Release - Research And Testing Use Only ***</b></font>
|
||
|
<li>Support for internationalization including UTF-8, UTF-16, and
|
||
|
user defined collating sequences.</li>
|
||
|
<li>New file format that is 25% to 35% smaller for typical use.</li>
|
||
|
<li>Improved concurrency.</li>
|
||
|
<li>Atomic commits for ATTACHed databases.</li>
|
||
|
<li>Remove cruft from the APIs.</li>
|
||
|
<li>BLOB support.</li>
|
||
|
<li>64-bit rowids.</li>
|
||
|
<li><a href="version3.html">More information</a>.
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_14"></a>
|
||
|
<h3>2004-06-09 (2.8.14)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix the min() and max() optimizer so that it works when the FROM
|
||
|
clause consists of a subquery.</li>
|
||
|
<li>Ignore extra whitespace at the end of of "." commands in the shell.</li>
|
||
|
<li>Bundle sqlite_encode_binary() and sqlite_decode_binary() with the
|
||
|
library.</li>
|
||
|
<li>The TEMP_STORE and DEFAULT_TEMP_STORE pragmas now work.</li>
|
||
|
<li>Code changes to compile cleanly using OpenWatcom.</li>
|
||
|
<li>Fix VDBE stack overflow problems with INSTEAD OF triggers and
|
||
|
NULLs in IN operators.</li>
|
||
|
<li>Add the global variable sqlite_temp_directory which if set defines the
|
||
|
directory in which temporary files are stored.</li>
|
||
|
<li>sqlite_interrupt() plays well with VACUUM.</li>
|
||
|
<li>Other minor bug fixes.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_13"></a>
|
||
|
<h3>2004-03-08 (2.8.13)</h3><p><ol class='lessindent'>
|
||
|
<li>Refactor parts of the code in order to make the code footprint
|
||
|
smaller. The code is now also a little bit faster.</li>
|
||
|
<li>sqlite_exec() is now implemented as a wrapper around sqlite_compile()
|
||
|
and sqlite_step().</li>
|
||
|
<li>The built-in min() and max() functions now honor the difference between
|
||
|
NUMERIC and TEXT datatypes. Formerly, min() and max() always assumed
|
||
|
their arguments were of type NUMERIC.</li>
|
||
|
<li>New HH:MM:SS modifier to the built-in date/time functions.</li>
|
||
|
<li>Experimental sqlite_last_statement_changes() API added. Fixed
|
||
|
the last_insert_rowid() function so that it works correctly with
|
||
|
triggers.</li>
|
||
|
<li>Add functions prototypes for the database encryption API.</li>
|
||
|
<li>Fix several nuisance bugs.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_12"></a>
|
||
|
<h3>2004-02-08 (2.8.12)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug that will might corrupt the rollback journal if a power failure
|
||
|
or external program halt occurs in the middle of a COMMIT. The corrupt
|
||
|
journal can lead to database corruption when it is rolled back.</li>
|
||
|
<li>Reduce the size and increase the speed of various modules, especially
|
||
|
the virtual machine.</li>
|
||
|
<li>Allow "<expr> IN <table>" as a shorthand for
|
||
|
"<expr> IN (SELECT * FROM <table>".</li>
|
||
|
<li>Optimizations to the sqlite_mprintf() routine.</li>
|
||
|
<li>Make sure the MIN() and MAX() optimizations work within subqueries.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_11"></a>
|
||
|
<h3>2004-01-14 (2.8.11)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug in how the IN operator handles NULLs in subqueries. The bug
|
||
|
was introduced by the previous release.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_10"></a>
|
||
|
<h3>2004-01-14 (2.8.10)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a potential database corruption problem on Unix caused by the fact
|
||
|
that all POSIX advisory locks are cleared whenever you close() a file.
|
||
|
The work around it to embargo all close() calls while locks are
|
||
|
outstanding.</li>
|
||
|
<li>Performance enhancements on some corner cases of COUNT(*).</li>
|
||
|
<li>Make sure the in-memory backend response sanely if malloc() fails.</li>
|
||
|
<li>Allow sqlite_exec() to be called from within user-defined SQL
|
||
|
functions.</li>
|
||
|
<li>Improved accuracy of floating-point conversions using "long double".</li>
|
||
|
<li>Bug fixes in the experimental date/time functions.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_9"></a>
|
||
|
<h3>2004-01-06 (2.8.9)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a 32-bit integer overflow problem that could result in corrupt
|
||
|
indices in a database if large negative numbers (less than -2147483648)
|
||
|
were inserted into an indexed numeric column.</li>
|
||
|
<li>Fix a locking problem on multi-threaded Linux implementations.</li>
|
||
|
<li>Always use "." instead of "," as the decimal point even if the locale
|
||
|
requests ",".</li>
|
||
|
<li>Added UTC to localtime conversions to the experimental date/time
|
||
|
functions.</li>
|
||
|
<li>Bug fixes to date/time functions.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_8"></a>
|
||
|
<h3>2003-12-18 (2.8.8)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a critical bug introduced into 2.8.0 which could cause
|
||
|
database corruption.</li>
|
||
|
<li>Fix a problem with 3-way joins that do not use indices</li>
|
||
|
<li>The VACUUM command now works with the non-callback API</li>
|
||
|
<li>Improvements to the "PRAGMA integrity_check" command</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_7"></a>
|
||
|
<h3>2003-12-04 (2.8.7)</h3><p><ol class='lessindent'>
|
||
|
<li>Added experimental sqlite_bind() and sqlite_reset() APIs.</li>
|
||
|
<li>If the name of the database is an empty string, open a new database
|
||
|
in a temporary file that is automatically deleted when the database
|
||
|
is closed.</li>
|
||
|
<li>Performance enhancements in the <a href="lemon.html">Lemon</a>-generated parser</li>
|
||
|
<li>Experimental date/time functions revised.</li>
|
||
|
<li>Disallow temporary indices on permanent tables.</li>
|
||
|
<li>Documentation updates and typo fixes</li>
|
||
|
<li>Added experimental sqlite_progress_handler() callback API</li>
|
||
|
<li>Removed support for the Oracle8 outer join syntax.</li>
|
||
|
<li>Allow GLOB and LIKE operators to work as functions.</li>
|
||
|
<li>Other minor documentation and makefile changes and bug fixes.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_6"></a>
|
||
|
<h3>2003-08-22 (2.8.6)</h3><p><ol class='lessindent'>
|
||
|
<li>Moved the CVS repository to www.sqlite.org</li>
|
||
|
<li>Update the NULL-handling documentation.</li>
|
||
|
<li>Experimental date/time functions added.</li>
|
||
|
<li>Bug fix: correctly evaluate a view of a view without segfaulting.</li>
|
||
|
<li>Bug fix: prevent database corruption if you dropped a
|
||
|
trigger that had the same name as a table.</li>
|
||
|
<li>Bug fix: allow a VACUUM (without segfaulting) on an empty
|
||
|
database after setting the EMPTY_RESULT_CALLBACKS pragma.</li>
|
||
|
<li>Bug fix: if an integer value will not fit in a 32-bit int, store it in
|
||
|
a double instead.</li>
|
||
|
<li>Bug fix: Make sure the journal file directory entry is committed to disk
|
||
|
before writing the database file.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_5"></a>
|
||
|
<h3>2003-07-22 (2.8.5)</h3><p><ol class='lessindent'>
|
||
|
<li>Make LIMIT work on a compound SELECT statement.</li>
|
||
|
<li>LIMIT 0 now shows no rows. Use LIMIT -1 to see all rows.</li>
|
||
|
<li>Correctly handle comparisons between an INTEGER PRIMARY KEY and
|
||
|
a floating point number.</li>
|
||
|
<li>Fix several important bugs in the new ATTACH and DETACH commands.</li>
|
||
|
<li>Updated the <a href="nulls.html">NULL-handling document</a>.</li>
|
||
|
<li>Allow NULL arguments in sqlite_compile() and sqlite_step().</li>
|
||
|
<li>Many minor bug fixes</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_4"></a>
|
||
|
<h3>2003-06-29 (2.8.4)</h3><p><ol class='lessindent'>
|
||
|
<li>Enhanced the "PRAGMA integrity_check" command to verify indices.</li>
|
||
|
<li>Added authorization hooks for the new ATTACH and DETACH commands.</li>
|
||
|
<li>Many documentation updates</li>
|
||
|
<li>Many minor bug fixes</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_3"></a>
|
||
|
<h3>2003-06-04 (2.8.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a problem that will corrupt the indices on a table if you
|
||
|
do an INSERT OR REPLACE or an UPDATE OR REPLACE on a table that
|
||
|
contains an INTEGER PRIMARY KEY plus one or more indices.</li>
|
||
|
<li>Fix a bug in Windows locking code so that locks work correctly
|
||
|
when simultaneously accessed by Win95 and WinNT systems.</li>
|
||
|
<li>Add the ability for INSERT and UPDATE statements to refer to the
|
||
|
"rowid" (or "_rowid_" or "oid") columns.</li>
|
||
|
<li>Other important bug fixes</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_2"></a>
|
||
|
<h3>2003-05-17 (2.8.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a problem that will corrupt the database file if you drop a
|
||
|
table from the main database that has a TEMP index.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_1"></a>
|
||
|
<h3>2003-05-17 (2.8.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Reactivated the VACUUM command that reclaims unused disk space in
|
||
|
a database file.</li>
|
||
|
<li>Added the ATTACH and DETACH commands to allow interacting with multiple
|
||
|
database files at the same time.</li>
|
||
|
<li>Added support for TEMP triggers and indices.</li>
|
||
|
<li>Added support for in-memory databases.</li>
|
||
|
<li>Removed the experimental sqlite_open_aux_file(). Its function is
|
||
|
subsumed in the new ATTACH command.</li>
|
||
|
<li>The precedence order for ON CONFLICT clauses was changed so that
|
||
|
ON CONFLICT clauses on BEGIN statements have a higher precedence than
|
||
|
ON CONFLICT clauses on constraints.
|
||
|
<li>Many, many bug fixes and compatibility enhancements.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_8_0"></a>
|
||
|
<h3>2003-02-16 (2.8.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Modified the journal file format to make it more resistant to corruption
|
||
|
that can occur after an OS crash or power failure.</li>
|
||
|
<li>Added a new C/C++ API that does not use callback for returning data.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_7_6"></a>
|
||
|
<h3>2003-01-25 (2.7.6)</h3><p><ol class='lessindent'>
|
||
|
<li>Performance improvements. The library is now much faster.</li>
|
||
|
<li>Added the <b>sqlite_set_authorizer()</b> API. Formal documentation has
|
||
|
not been written - see the source code comments for instructions on
|
||
|
how to use this function.</li>
|
||
|
<li>Fix a bug in the GLOB operator that was preventing it from working
|
||
|
with upper-case letters.</li>
|
||
|
<li>Various minor bug fixes.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_7_5"></a>
|
||
|
<h3>2002-12-28 (2.7.5)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix an uninitialized variable in pager.c which could (with a probability
|
||
|
of about 1 in 4 billion) result in a corrupted database.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_7_4"></a>
|
||
|
<h3>2002-12-17 (2.7.4)</h3><p><ol class='lessindent'>
|
||
|
<li>Database files can now grow to be up to 2^41 bytes. The old limit
|
||
|
was 2^31 bytes.</li>
|
||
|
<li>The optimizer will now scan tables in the reverse if doing so will
|
||
|
satisfy an ORDER BY ... DESC clause.</li>
|
||
|
<li>The full pathname of the database file is now remembered even if
|
||
|
a relative path is passed into sqlite_open(). This allows
|
||
|
the library to continue operating correctly after a chdir().</li>
|
||
|
<li>Speed improvements in the VDBE.</li>
|
||
|
<li>Lots of little bug fixes.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_7_3"></a>
|
||
|
<h3>2002-10-31 (2.7.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Various compiler compatibility fixes.</li>
|
||
|
<li>Fix a bug in the "expr IN ()" operator.</li>
|
||
|
<li>Accept column names in parentheses.</li>
|
||
|
<li>Fix a problem with string memory management in the VDBE</li>
|
||
|
<li>Fix a bug in the "table_info" pragma"</li>
|
||
|
<li>Export the sqlite_function_type() API function in the Windows DLL</li>
|
||
|
<li>Fix locking behavior under Windows</li>
|
||
|
<li>Fix a bug in LEFT OUTER JOIN</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_7_2"></a>
|
||
|
<h3>2002-09-25 (2.7.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Prevent journal file overflows on huge transactions.</li>
|
||
|
<li>Fix a memory leak that occurred when sqlite_open() failed.</li>
|
||
|
<li>Honor the ORDER BY and LIMIT clause of a SELECT even if the
|
||
|
result set is used for an INSERT.</li>
|
||
|
<li>Do not put write locks on the file used to hold TEMP tables.</li>
|
||
|
<li>Added documentation on SELECT DISTINCT and on how SQLite handles NULLs.</li>
|
||
|
<li>Fix a problem that was causing poor performance when many thousands
|
||
|
of SQL statements were executed by a single sqlite_exec() call.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_7_1"></a>
|
||
|
<h3>2002-08-31 (2.7.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug in the ORDER BY logic that was introduced in version 2.7.0</li>
|
||
|
<li>C-style comments are now accepted by the tokenizer.</li>
|
||
|
<li>INSERT runs a little faster when the source is a SELECT statement.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_7_0"></a>
|
||
|
<h3>2002-08-25 (2.7.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Make a distinction between numeric and text values when sorting.
|
||
|
Text values sort according to memcmp(). Numeric values sort in
|
||
|
numeric order.</li>
|
||
|
<li>Allow multiple simultaneous readers under Windows by simulating
|
||
|
the reader/writers locks that are missing from Win95/98/ME.</li>
|
||
|
<li>An error is now returned when trying to start a transaction if
|
||
|
another transaction is already active.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_6_3"></a>
|
||
|
<h3>2002-08-13 (2.6.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Add the ability to read both little-endian and big-endian databases.
|
||
|
So a database created under SunOS or Mac OS X can be read and written
|
||
|
under Linux or Windows and vice versa.</li>
|
||
|
<li>Convert to the new website: http://www.sqlite.org/</li>
|
||
|
<li>Allow transactions to span Linux Threads</li>
|
||
|
<li>Bug fix in the processing of the ORDER BY clause for GROUP BY queries</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_6_2"></a>
|
||
|
<h3>2002-07-31 (2.6.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Text files read by the COPY command can now have line terminators
|
||
|
of LF, CRLF, or CR.</li>
|
||
|
<li>SQLITE_BUSY is handled correctly if encountered during database
|
||
|
initialization.</li>
|
||
|
<li>Fix to UPDATE triggers on TEMP tables.</li>
|
||
|
<li>Documentation updates.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_6_1"></a>
|
||
|
<h3>2002-07-19 (2.6.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Include a static string in the library that responds to the RCS
|
||
|
"ident" command and which contains the library version number.</li>
|
||
|
<li>Fix an assertion failure that occurred when deleting all rows of
|
||
|
a table with the "count_changes" pragma turned on.</li>
|
||
|
<li>Better error reporting when problems occur during the automatic
|
||
|
2.5.6 to 2.6.0 database format upgrade.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_6_0"></a>
|
||
|
<h3>2002-07-18 (2.6.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Change the format of indices to correct a design flaw the originated
|
||
|
with version 2.1.0. <font color="red">*** This is an incompatible
|
||
|
file format change ***</font> When version 2.6.0 or later of the
|
||
|
library attempts to open a database file created by version 2.5.6 or
|
||
|
earlier, it will automatically and irreversibly convert the file format.
|
||
|
<b>Make backup copies of older database files before opening them with
|
||
|
version 2.6.0 of the library.</b>
|
||
|
</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_5_6"></a>
|
||
|
<h3>2002-07-07 (2.5.6)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix more problems with rollback. Enhance the test suite to exercise
|
||
|
the rollback logic extensively in order to prevent any future problems.
|
||
|
</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_5_5"></a>
|
||
|
<h3>2002-07-06 (2.5.5)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug which could cause database corruption during a rollback.
|
||
|
This bugs was introduced in version 2.4.0 by the freelist
|
||
|
optimization of checkin [410].</li>
|
||
|
<li>Fix a bug in aggregate functions for VIEWs.</li>
|
||
|
<li>Other minor changes and enhancements.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_5_4"></a>
|
||
|
<h3>2002-07-01 (2.5.4)</h3><p><ol class='lessindent'>
|
||
|
<li>Make the "AS" keyword optional again.</li>
|
||
|
<li>The datatype of columns now appear in the 4th argument to the
|
||
|
callback.</li>
|
||
|
<li>Added the <b>sqlite_open_aux_file()</b> API, though it is still
|
||
|
mostly undocumented and untested.</li>
|
||
|
<li>Added additional test cases and fixed a few bugs that those
|
||
|
test cases found.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_5_3"></a>
|
||
|
<h3>2002-06-25 (2.5.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fix: Database corruption can occur due to the optimization
|
||
|
that was introduced in version 2.4.0 (check-in [410]). The problem
|
||
|
should now be fixed. The use of versions 2.4.0 through 2.5.2 is
|
||
|
not recommended.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_5_2"></a>
|
||
|
<h3>2002-06-25 (2.5.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the new <b>SQLITE_TEMP_MASTER</b> table which records the schema
|
||
|
for temporary tables in the same way that <b>SQLITE_MASTER</b> does for
|
||
|
persistent tables.</li>
|
||
|
<li>Added an optimization to UNION ALL</li>
|
||
|
<li>Fixed a bug in the processing of LEFT OUTER JOIN</li>
|
||
|
<li>The LIMIT clause now works on subselects</li>
|
||
|
<li>ORDER BY works on subselects</li>
|
||
|
<li>There is a new TypeOf() function used to determine if an expression
|
||
|
is numeric or text.</li>
|
||
|
<li>Autoincrement now works for INSERT from a SELECT.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_5_1"></a>
|
||
|
<h3>2002-06-19 (2.5.1)</h3><p><ol class='lessindent'>
|
||
|
<li>The query optimizer now attempts to implement the ORDER BY clause
|
||
|
using an index. Sorting is still used if not suitable index is
|
||
|
available.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_5_0"></a>
|
||
|
<h3>2002-06-17 (2.5.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Added support for row triggers.</li>
|
||
|
<li>Added SQL-92 compliant handling of NULLs.</li>
|
||
|
<li>Add support for the full SQL-92 join syntax and LEFT OUTER JOINs.</li>
|
||
|
<li>Double-quoted strings interpreted as column names not text literals.</li>
|
||
|
<li>Parse (but do not implement) foreign keys.</li>
|
||
|
<li>Performance improvements in the parser, pager, and WHERE clause code
|
||
|
generator.</li>
|
||
|
<li>Make the LIMIT clause work on subqueries. (ORDER BY still does not
|
||
|
work, though.)</li>
|
||
|
<li>Added the "%Q" expansion to sqlite_*_printf().</li>
|
||
|
<li>Bug fixes too numerous to mention (see the change log).</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_4_12"></a>
|
||
|
<h3>2002-05-10 (2.4.12)</h3><p><ol class='lessindent'>
|
||
|
<li>Added logic to detect when the library API routines are called out
|
||
|
of sequence.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_4_11"></a>
|
||
|
<h3>2002-05-08 (2.4.11)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fix: Column names in the result set were not being generated
|
||
|
correctly for some (rather complex) VIEWs. This could cause a
|
||
|
segfault under certain circumstances.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_4_10"></a>
|
||
|
<h3>2002-05-03 (2.4.10)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fix: Generate correct column headers when a compound SELECT is used
|
||
|
as a subquery.</li>
|
||
|
<li>Added the sqlite_encode_binary() and sqlite_decode_binary() functions to
|
||
|
the source tree. But they are not yet linked into the library.</li>
|
||
|
<li>Documentation updates.</li>
|
||
|
<li>Export the sqlite_changes() function from Windows DLLs.</li>
|
||
|
<li>Bug fix: Do not attempt the subquery flattening optimization on queries
|
||
|
that lack a FROM clause. To do so causes a segfault.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_4_9"></a>
|
||
|
<h3>2002-04-22 (2.4.9)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug that was causing the precompiled binary of SQLITE.EXE to
|
||
|
report "out of memory" under Windows 98.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_4_8"></a>
|
||
|
<h3>2002-04-20 (2.4.8)</h3><p><ol class='lessindent'>
|
||
|
<li>Make sure VIEWs are created after their corresponding TABLEs in the
|
||
|
output of the <b>.dump</b> command in the shell.</li>
|
||
|
<li>Speed improvements: Do not do synchronous updates on TEMP tables.</li>
|
||
|
<li>Many improvements and enhancements to the shell.</li>
|
||
|
<li>Make the GLOB and LIKE operators functions that can be overridden
|
||
|
by a programmer. This allows, for example, the LIKE operator to
|
||
|
be changed to be case sensitive.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_4_7"></a>
|
||
|
<h3>2002-04-12 (2.4.7)</h3><p><ol class='lessindent'>
|
||
|
<li>Add the ability to put TABLE.* in the column list of a
|
||
|
SELECT statement.</li>
|
||
|
<li>Permit SELECT statements without a FROM clause.</li>
|
||
|
<li>Added the <b>last_insert_rowid()</b> SQL function.</li>
|
||
|
<li>Do not count rows where the IGNORE conflict resolution occurs in
|
||
|
the row count.</li>
|
||
|
<li>Make sure functions expressions in the VALUES clause of an INSERT
|
||
|
are correct.</li>
|
||
|
<li>Added the <b>sqlite_changes()</b> API function to return the number
|
||
|
of row that changed in the most recent operation.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_4_6"></a>
|
||
|
<h3>2002-04-02 (2.4.6)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fix: Correctly handle terms in the WHERE clause of a join that
|
||
|
do not contain a comparison operator.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_4_5"></a>
|
||
|
<h3>2002-04-02 (2.4.5)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fix: Correctly handle functions that appear in the WHERE clause
|
||
|
of a join.</li>
|
||
|
<li>When the PRAGMA vdbe_trace=ON is set, correctly print the P3 operand
|
||
|
value when it is a pointer to a structure rather than a pointer to
|
||
|
a string.</li>
|
||
|
<li>When inserting an explicit NULL into an INTEGER PRIMARY KEY, convert
|
||
|
the NULL value into a unique key automatically.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_4_4"></a>
|
||
|
<h3>2002-03-30 (2.4.4)</h3><p><ol class='lessindent'>
|
||
|
<li>Allow "VIEW" to be a column name</li>
|
||
|
<li>Added support for CASE expressions (patch from Dan Kennedy)</li>
|
||
|
<li>Added RPMS to the delivery (patches from Doug Henry)</li>
|
||
|
<li>Fix typos in the documentation</li>
|
||
|
<li>Cut over configuration management to a new CVS repository with
|
||
|
its own CVSTrac bug tracking system.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_4_3"></a>
|
||
|
<h3>2002-03-23 (2.4.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug in SELECT that occurs when a compound SELECT is used as a
|
||
|
subquery in the FROM of a SELECT.</li>
|
||
|
<li>The <b>sqlite_get_table()</b> function now returns an error if you
|
||
|
give it two or more SELECTs that return different numbers of columns.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_4_2"></a>
|
||
|
<h3>2002-03-20 (2.4.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fix: Fix an assertion failure that occurred when ROWID was a column
|
||
|
in a SELECT statement on a view.</li>
|
||
|
<li>Bug fix: Fix an uninitialized variable in the VDBE that would could an
|
||
|
assert failure.</li>
|
||
|
<li>Make the os.h header file more robust in detecting when the compile is
|
||
|
for Windows and when it is for Unix.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_4_1"></a>
|
||
|
<h3>2002-03-13 (2.4.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Using an unnamed subquery in a FROM clause would cause a segfault.</li>
|
||
|
<li>The parser now insists on seeing a semicolon or the end of input before
|
||
|
executing a statement. This avoids an accidental disaster if the
|
||
|
WHERE keyword is misspelled in an UPDATE or DELETE statement.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_4_0"></a>
|
||
|
<h3>2002-03-11 (2.4.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Change the name of the sanity_check PRAGMA to <b>integrity_check</b>
|
||
|
and make it available in all compiles.</li>
|
||
|
<li>SELECT min() or max() of an indexed column with no WHERE or GROUP BY
|
||
|
clause is handled as a special case which avoids a complete table scan.</li>
|
||
|
<li>Automatically generated ROWIDs are now sequential.</li>
|
||
|
<li>Do not allow dot-commands of the command-line shell to occur in the
|
||
|
middle of a real SQL command.</li>
|
||
|
<li>Modifications to the <a href="lemon.html">Lemon parser generator</a> so that the parser tables
|
||
|
are 4 times smaller.</li>
|
||
|
<li>Added support for user-defined functions implemented in C.</li>
|
||
|
<li>Added support for new functions: <b>coalesce()</b>, <b>lower()</b>,
|
||
|
<b>upper()</b>, and <b>random()</b>
|
||
|
<li>Added support for VIEWs.</li>
|
||
|
<li>Added the subquery flattening optimizer.</li>
|
||
|
<li>Modified the B-Tree and Pager modules so that disk pages that do not
|
||
|
contain real data (free pages) are not journaled and are not
|
||
|
written from memory back to the disk when they change. This does not
|
||
|
impact database integrity, since the
|
||
|
pages contain no real data, but it does make large INSERT operations
|
||
|
about 2.5 times faster and large DELETEs about 5 times faster.</li>
|
||
|
<li>Made the CACHE_SIZE pragma persistent</li>
|
||
|
<li>Added the SYNCHRONOUS pragma</li>
|
||
|
<li>Fixed a bug that was causing updates to fail inside of transactions when
|
||
|
the database contained a temporary table.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_3_3"></a>
|
||
|
<h3>2002-02-19 (2.3.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Allow identifiers to be quoted in square brackets, for compatibility
|
||
|
with MS-Access.</li>
|
||
|
<li>Added support for sub-queries in the FROM clause of a SELECT.</li>
|
||
|
<li>More efficient implementation of sqliteFileExists() under Windows.
|
||
|
(by Joel Luscy)</li>
|
||
|
<li>The VALUES clause of an INSERT can now contain expressions, including
|
||
|
scalar SELECT clauses.</li>
|
||
|
<li>Added support for CREATE TABLE AS SELECT</li>
|
||
|
<li>Bug fix: Creating and dropping a table all within a single
|
||
|
transaction was not working.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_3_2"></a>
|
||
|
<h3>2002-02-14 (2.3.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fix: There was an incorrect assert() in pager.c. The real code was
|
||
|
all correct (as far as is known) so everything should work OK if you
|
||
|
compile with -DNDEBUG=1. When asserts are not disabled, there
|
||
|
could be a fault.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_3_1"></a>
|
||
|
<h3>2002-02-13 (2.3.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fix: An assertion was failing if "PRAGMA full_column_names=ON;" was
|
||
|
set and you did a query that used a rowid, like this:
|
||
|
"SELECT rowid, * FROM ...".</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_3_0"></a>
|
||
|
<h3>2002-02-03 (2.3.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a serious bug in the INSERT command which was causing data to go
|
||
|
into the wrong columns if the data source was a SELECT and the INSERT
|
||
|
clauses specified its columns in some order other than the default.</li>
|
||
|
<li>Added the ability to resolve constraint conflicts is ways other than
|
||
|
an abort and rollback. See the documentation on the "ON CONFLICT"
|
||
|
clause for details.</li>
|
||
|
<li>Temporary files are now automatically deleted by the operating system
|
||
|
when closed. There are no more dangling temporary files on a program
|
||
|
crash. (If the OS crashes, fsck will delete the file after reboot
|
||
|
under Unix. I do not know what happens under Windows.)</li>
|
||
|
<li>NOT NULL constraints are honored.</li>
|
||
|
<li>The COPY command puts NULLs in columns whose data is '\N'.</li>
|
||
|
<li>In the COPY command, backslash can now be used to escape a newline.</li>
|
||
|
<li>Added the SANITY_CHECK pragma.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_2_5"></a>
|
||
|
<h3>2002-01-28 (2.2.5)</h3><p><ol class='lessindent'>
|
||
|
<li>Important bug fix: the IN operator was not working if either the
|
||
|
left-hand or right-hand side was derived from an INTEGER PRIMARY KEY.</li>
|
||
|
<li>Do not escape the backslash '\' character in the output of the
|
||
|
<b>sqlite</b> command-line access program.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_2_4"></a>
|
||
|
<h3>2002-01-22 (2.2.4)</h3><p><ol class='lessindent'>
|
||
|
<li>The label to the right of an AS in the column list of a SELECT can now
|
||
|
be used as part of an expression in the WHERE, ORDER BY, GROUP BY, and/or
|
||
|
HAVING clauses.</li>
|
||
|
<li>Fix a bug in the <b>-separator</b> command-line option to the <b>sqlite</b>
|
||
|
command.</li>
|
||
|
<li>Fix a problem with the sort order when comparing upper-case strings against
|
||
|
characters greater than 'Z' but less than 'a'.</li>
|
||
|
<li>Report an error if an ORDER BY or GROUP BY expression is constant.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_2_3"></a>
|
||
|
<h3>2002-01-16 (2.2.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix warning messages in VC++ 7.0. (Patches from nicolas352001)</li>
|
||
|
<li>Make the library thread-safe. (The code is there and appears to work
|
||
|
but has not been stressed.)</li>
|
||
|
<li>Added the new <b>sqlite_last_insert_rowid()</b> API function.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_2_2"></a>
|
||
|
<h3>2002-01-14 (2.2.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fix: An assertion was failing when a temporary table with an index
|
||
|
had the same name as a permanent table created by a separate process.</li>
|
||
|
<li>Bug fix: Updates to tables containing an INTEGER PRIMARY KEY and an
|
||
|
index could fail.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_2_1"></a>
|
||
|
<h3>2002-01-09 (2.2.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fix: An attempt to delete a single row of a table with a WHERE
|
||
|
clause of "ROWID=x" when no such rowid exists was causing an error.</li>
|
||
|
<li>Bug fix: Passing in a NULL as the 3rd parameter to <b>sqlite_open()</b>
|
||
|
would sometimes cause a coredump.</li>
|
||
|
<li>Bug fix: DROP TABLE followed by a CREATE TABLE with the same name all
|
||
|
within a single transaction was causing a coredump.</li>
|
||
|
<li>Makefile updates from A. Rottmann</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_2_0"></a>
|
||
|
<h3>2001-12-22 (2.2.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Columns of type INTEGER PRIMARY KEY are actually used as the primary
|
||
|
key in underlying B-Tree representation of the table.</li>
|
||
|
<li>Several obscure, unrelated bugs were found and fixed while
|
||
|
implemented the integer primary key change of the previous bullet.</li>
|
||
|
<li>Added the ability to specify "*" as part of a larger column list in
|
||
|
the result section of a SELECT statement. For example:
|
||
|
<nobr>"<b>SELECT rowid, * FROM table1;</b>"</nobr>.</li>
|
||
|
<li>Updates to comments and documentation.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_1_7"></a>
|
||
|
<h3>2001-12-15 (2.1.7)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug in <b>CREATE TEMPORARY TABLE</b> which was causing the
|
||
|
table to be initially allocated in the main database file instead
|
||
|
of in the separate temporary file. This bug could cause the library
|
||
|
to suffer an assertion failure and it could cause "page leaks" in the
|
||
|
main database file.
|
||
|
<li>Fix a bug in the b-tree subsystem that could sometimes cause the first
|
||
|
row of a table to be repeated during a database scan.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_1_6"></a>
|
||
|
<h3>2001-12-14 (2.1.6)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix the locking mechanism yet again to prevent
|
||
|
<b>sqlite_exec()</b> from returning SQLITE_PROTOCOL
|
||
|
unnecessarily. This time the bug was a race condition in
|
||
|
the locking code. This change affects both POSIX and Windows users.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_1_5"></a>
|
||
|
<h3>2001-12-06 (2.1.5)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix for another problem (unrelated to the one fixed in 2.1.4)
|
||
|
that sometimes causes <b>sqlite_exec()</b> to return SQLITE_PROTOCOL
|
||
|
unnecessarily. This time the bug was
|
||
|
in the POSIX locking code and should not effect Windows users.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_1_4"></a>
|
||
|
<h3>2001-12-05 (2.1.4)</h3><p><ol class='lessindent'>
|
||
|
<li>Sometimes <b>sqlite_exec()</b> would return SQLITE_PROTOCOL when it
|
||
|
should have returned SQLITE_BUSY.</li>
|
||
|
<li>The fix to the previous bug uncovered a deadlock which was also
|
||
|
fixed.</li>
|
||
|
<li>Add the ability to put a single .command in the second argument
|
||
|
of the sqlite shell</li>
|
||
|
<li>Updates to the FAQ</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_1_3"></a>
|
||
|
<h3>2001-11-24 (2.1.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix the behavior of comparison operators
|
||
|
(ex: "<b><</b>", "<b>==</b>", etc.)
|
||
|
so that they are consistent with the order of entries in an index.</li>
|
||
|
<li>Correct handling of integers in SQL expressions that are larger than
|
||
|
what can be represented by the machine integer.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_1_2"></a>
|
||
|
<h3>2001-11-23 (2.1.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Changes to support 64-bit architectures.</li>
|
||
|
<li>Fix a bug in the locking protocol.</li>
|
||
|
<li>Fix a bug that could (rarely) cause the database to become
|
||
|
unreadable after a DROP TABLE due to corruption to the SQLITE_MASTER
|
||
|
table.</li>
|
||
|
<li>Change the code so that version 2.1.1 databases that were rendered
|
||
|
unreadable by the above bug can be read by this version of
|
||
|
the library even though the SQLITE_MASTER table is (slightly)
|
||
|
corrupted.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_1_1"></a>
|
||
|
<h3>2001-11-13 (2.1.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fix: Sometimes arbitrary strings were passed to the callback
|
||
|
function when the actual value of a column was NULL.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_1_0"></a>
|
||
|
<h3>2001-11-12 (2.1.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Change the format of data records so that records up to 16MB in size
|
||
|
can be stored.</li>
|
||
|
<li>Change the format of indices to allow for better query optimization.</li>
|
||
|
<li>Implement the "LIMIT ... OFFSET ..." clause on SELECT statements.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_0_8"></a>
|
||
|
<h3>2001-11-03 (2.0.8)</h3><p><ol class='lessindent'>
|
||
|
<li>Made selected parameters in API functions <b>const</b>. This should
|
||
|
be fully backwards compatible.</li>
|
||
|
<li>Documentation updates</li>
|
||
|
<li>Simplify the design of the VDBE by restricting the number of sorters
|
||
|
and lists to 1.
|
||
|
In practice, no more than one sorter and one list was ever used anyhow.
|
||
|
</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_0_7"></a>
|
||
|
<h3>2001-10-22 (2.0.7)</h3><p><ol class='lessindent'>
|
||
|
<li>Any UTF-8 character or ISO8859 character can be used as part of
|
||
|
an identifier.</li>
|
||
|
<li>Patches from Christian Werner to improve ODBC compatibility and to
|
||
|
fix a bug in the round() function.</li>
|
||
|
<li>Plug some memory leaks that use to occur if malloc() failed.
|
||
|
We have been and continue to be memory leak free as long as
|
||
|
malloc() works.</li>
|
||
|
<li>Changes to some test scripts so that they work on Windows in
|
||
|
addition to Unix.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_0_6"></a>
|
||
|
<h3>2001-10-19 (2.0.6)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the EMPTY_RESULT_CALLBACKS pragma</li>
|
||
|
<li>Support for UTF-8 and ISO8859 characters in column and table names.</li>
|
||
|
<li>Bug fix: Compute correct table names with the FULL_COLUMN_NAMES pragma
|
||
|
is turned on.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_0_5"></a>
|
||
|
<h3>2001-10-15 (2.0.5)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the COUNT_CHANGES pragma.</li>
|
||
|
<li>Changes to the FULL_COLUMN_NAMES pragma to help out the ODBC driver.</li>
|
||
|
<li>Bug fix: "SELECT count(*)" was returning NULL for empty tables.
|
||
|
Now it returns 0.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_0_4"></a>
|
||
|
<h3>2001-10-13 (2.0.4)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fix: an obscure and relatively harmless bug was causing one of
|
||
|
the tests to fail when gcc optimizations are turned on. This release
|
||
|
fixes the problem.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_0_3"></a>
|
||
|
<h3>2001-10-13 (2.0.3)</h3><p><ol class='lessindent'>
|
||
|
<li>Bug fix: the <b>sqlite_busy_timeout()</b> function was delaying 1000
|
||
|
times too long before failing.</li>
|
||
|
<li>Bug fix: an assertion was failing if the disk holding the database
|
||
|
file became full or stopped accepting writes for some other reason.
|
||
|
New tests were added to detect similar problems in the future.</li>
|
||
|
<li>Added new operators: <b>&</b> (bitwise-and)
|
||
|
<b>|</b> (bitwise-or), <b>~</b> (ones-complement),
|
||
|
<b><<</b> (shift left), <b>>></b> (shift right).</li>
|
||
|
<li>Added new functions: <b>round()</b> and <b>abs()</b>.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_0_2"></a>
|
||
|
<h3>2001-10-09 (2.0.2)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix two bugs in the locking protocol. (One was masking the other.)</li>
|
||
|
<li>Removed some unused "#include <unistd.h>" that were causing problems
|
||
|
for VC++.</li>
|
||
|
<li>Fixed <b>sqlite.h</b> so that it is usable from C++</li>
|
||
|
<li>Added the FULL_COLUMN_NAMES pragma. When set to "ON", the names of
|
||
|
columns are reported back as TABLE.COLUMN instead of just COLUMN.</li>
|
||
|
<li>Added the TABLE_INFO() and INDEX_INFO() pragmas to help support the
|
||
|
ODBC interface.</li>
|
||
|
<li>Added support for TEMPORARY tables and indices.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_0_1"></a>
|
||
|
<h3>2001-10-02 (2.0.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Remove some C++ style comments from btree.c so that it will compile
|
||
|
using compilers other than gcc.</li>
|
||
|
<li>The ".dump" output from the shell does not work if there are embedded
|
||
|
newlines anywhere in the data. This is an old bug that was carried
|
||
|
forward from version 1.0. To fix it, the ".dump" output no longer
|
||
|
uses the COPY command. It instead generates INSERT statements.</li>
|
||
|
<li>Extend the expression syntax to support "expr NOT NULL" (with a
|
||
|
space between the "NOT" and the "NULL") in addition to "expr NOTNULL"
|
||
|
(with no space).</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_2_0_0"></a>
|
||
|
<h3>2001-09-28 (2.0.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Automatically build binaries for Linux and Windows and put them on
|
||
|
the website.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2001-09-28 (2.0-alpha-4)</h3><p><ol class='lessindent'>
|
||
|
<li>Incorporate makefile patches form A. Rottmann to use LIBTOOL</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2001-09-27 (2.0-alpha-3)</h3><p><ol class='lessindent'>
|
||
|
<li>SQLite now honors the UNIQUE keyword in CREATE UNIQUE INDEX. Primary
|
||
|
keys are required to be unique.</li>
|
||
|
<li>File format changed back to what it was for alpha-1</li>
|
||
|
<li>Fixes to the rollback and locking behavior</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2001-09-20 (2.0-alpha-2)</h3><p><ol class='lessindent'>
|
||
|
<li>Initial release of version 2.0. The idea of renaming the library
|
||
|
to "SQLus" was abandoned in favor of keeping the "SQLite" name and
|
||
|
bumping the major version number.</li>
|
||
|
<li>The pager and btree subsystems added back. They are now the only
|
||
|
available backend.</li>
|
||
|
<li>The Dbbe abstraction and the GDBM and memory drivers were removed.</li>
|
||
|
<li>Copyright on all code was disclaimed. The library is now in the
|
||
|
public domain.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_32"></a>
|
||
|
<h3>2001-07-23 (1.0.32)</h3><p><ol class='lessindent'>
|
||
|
<li>Pager and btree subsystems removed. These will be used in a follow-on
|
||
|
SQL server library named "SQLus".</li>
|
||
|
<li>Add the ability to use quoted strings as table and column names in
|
||
|
expressions.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_31"></a>
|
||
|
<h3>2001-04-15 (1.0.31)</h3><p><ol class='lessindent'>
|
||
|
<li>Pager subsystem added but not yet used.</li>
|
||
|
<li>More robust handling of out-of-memory errors.</li>
|
||
|
<li>New tests added to the test suite.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_30"></a>
|
||
|
<h3>2001-04-06 (1.0.30)</h3><p><ol class='lessindent'>
|
||
|
<li>Remove the <b>sqlite_encoding</b> TCL variable that was introduced
|
||
|
in the previous version.</li>
|
||
|
<li>Add options <b>-encoding</b> and <b>-tcl-uses-utf</b> to the
|
||
|
<b>sqlite</b> TCL command.</li>
|
||
|
<li>Add tests to make sure that tclsqlite was compiled using Tcl header
|
||
|
files and libraries that match.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_29"></a>
|
||
|
<h3>2001-04-05 (1.0.29)</h3><p><ol class='lessindent'>
|
||
|
<li>The library now assumes data is stored as UTF-8 if the --enable-utf8
|
||
|
option is given to configure. The default behavior is to assume
|
||
|
iso8859-x, as it has always done. This only makes a difference for
|
||
|
LIKE and GLOB operators and the LENGTH and SUBSTR functions.</li>
|
||
|
<li>If the library is not configured for UTF-8 and the Tcl library
|
||
|
is one of the newer ones that uses UTF-8 internally,
|
||
|
then a conversion from UTF-8 to iso8859 and
|
||
|
back again is done inside the TCL interface.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_28"></a>
|
||
|
<h3>2001-04-04 (1.0.28)</h3><p><ol class='lessindent'>
|
||
|
<li>Added limited support for transactions. At this point, transactions
|
||
|
will do table locking on the GDBM backend. There is no support (yet)
|
||
|
for rollback or atomic commit.</li>
|
||
|
<li>Added special column names ROWID, OID, and _ROWID_ that refer to the
|
||
|
unique random integer key associated with every row of every table.</li>
|
||
|
<li>Additional tests added to the regression suite to cover the new ROWID
|
||
|
feature and the TCL interface bugs mentioned below.</li>
|
||
|
<li>Changes to the <a href="lemon.html">Lemon parser generator</a> to help it work better when
|
||
|
compiled using MSVC.</li>
|
||
|
<li>Bug fixes in the TCL interface identified by Oleg Oleinick.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_27"></a>
|
||
|
<h3>2001-03-20 (1.0.27)</h3><p><ol class='lessindent'>
|
||
|
<li>When doing DELETE and UPDATE, the library used to write the record
|
||
|
numbers of records to be deleted or updated into a temporary file.
|
||
|
This is changed so that the record numbers are held in memory.</li>
|
||
|
<li>The DELETE command without a WHILE clause just removes the database
|
||
|
files from the disk, rather than going through and deleting record
|
||
|
by record.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_26"></a>
|
||
|
<h3>2001-03-20 (1.0.26)</h3><p><ol class='lessindent'>
|
||
|
<li>A serious bug fixed on Windows. Windows users should upgrade.
|
||
|
No impact to Unix.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_25"></a>
|
||
|
<h3>2001-03-15 (1.0.25)</h3><p><ol class='lessindent'>
|
||
|
<li>Modify the test scripts to identify tests that depend on system
|
||
|
load and processor speed and
|
||
|
to warn the user that a failure of one of those (rare) tests does
|
||
|
not necessarily mean the library is malfunctioning. No changes to
|
||
|
code.
|
||
|
</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_24"></a>
|
||
|
<h3>2001-03-14 (1.0.24)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug which was causing
|
||
|
the UPDATE command to fail on systems where "malloc(0)" returns
|
||
|
NULL. The problem does not appear on Windows, Linux, or HPUX but does
|
||
|
cause the library to fail on QNX.
|
||
|
</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_23"></a>
|
||
|
<h3>2001-02-20 (1.0.23)</h3><p><ol class='lessindent'>
|
||
|
<li>An unrelated (and minor) bug from Mark Muranwski fixed. The algorithm
|
||
|
for figuring out where to put temporary files for a "memory:" database
|
||
|
was not working quite right.
|
||
|
</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_22"></a>
|
||
|
<h3>2001-02-19 (1.0.22)</h3><p><ol class='lessindent'>
|
||
|
<li>The previous fix was not quite right. This one seems to work better.
|
||
|
</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_21"></a>
|
||
|
<h3>2001-02-19 (1.0.21)</h3><p><ol class='lessindent'>
|
||
|
<li>The UPDATE statement was not working when the WHERE clause contained
|
||
|
some terms that could be satisfied using indices and other terms that
|
||
|
could not. Fixed.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_20"></a>
|
||
|
<h3>2001-02-11 (1.0.20)</h3><p><ol class='lessindent'>
|
||
|
<li>Merge development changes into the main trunk. Future work toward
|
||
|
using a BTree file structure will use a separate CVS source tree. This
|
||
|
CVS tree will continue to support the GDBM version of SQLite only.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_19"></a>
|
||
|
<h3>2001-02-06 (1.0.19)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a strange (but valid) C declaration that was causing problems
|
||
|
for QNX. No logical changes.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_18"></a>
|
||
|
<h3>2001-01-04 (1.0.18)</h3><p><ol class='lessindent'>
|
||
|
<li>Print the offending SQL statement when an error occurs.</li>
|
||
|
<li>Do not require commas between constraints in CREATE TABLE statements.</li>
|
||
|
<li>Added the "-echo" option to the shell.</li>
|
||
|
<li>Changes to comments.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_17"></a>
|
||
|
<h3>2000-12-10 (1.0.17)</h3><p><ol class='lessindent'>
|
||
|
<li>Rewrote <b>sqlite_complete()</b> to make it faster.</li>
|
||
|
<li>Minor tweaks to other code to make it run a little faster.</li>
|
||
|
<li>Added new tests for <b>sqlite_complete()</b> and for memory leaks.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_16"></a>
|
||
|
<h3>2000-11-28 (1.0.16)</h3><p><ol class='lessindent'>
|
||
|
<li>Documentation updates. Mostly fixing of typos and spelling errors.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_15"></a>
|
||
|
<h3>2000-10-23 (1.0.15)</h3><p><ol class='lessindent'>
|
||
|
<li>Documentation updates</li>
|
||
|
<li>Some sanity checking code was removed from the inner loop of vdbe.c
|
||
|
to help the library to run a little faster. The code is only
|
||
|
removed if you compile with -DNDEBUG.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_14"></a>
|
||
|
<h3>2000-10-19 (1.0.14)</h3><p><ol class='lessindent'>
|
||
|
<li>Added a "memory:" backend driver that stores its database in an
|
||
|
in-memory hash table.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_13"></a>
|
||
|
<h3>2000-10-19 (1.0.13)</h3><p><ol class='lessindent'>
|
||
|
<li>Break out the GDBM driver into a separate file in anticipation
|
||
|
to added new drivers.</li>
|
||
|
<li>Allow the name of a database to be prefixed by the driver type.
|
||
|
For now, the only driver type is "gdbm:".</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_12"></a>
|
||
|
<h3>2000-10-17 (1.0.12)</h3><p><ol class='lessindent'>
|
||
|
<li>Fixed an off-by-one error that was causing a coredump in
|
||
|
the '%q' format directive of the new
|
||
|
<b>sqlite_..._printf()</b> routines.</li>
|
||
|
<li>Added the <b>sqlite_interrupt()</b> interface.</li>
|
||
|
<li>In the shell, <b>sqlite_interrupt()</b> is invoked when the
|
||
|
user presses Control-C</li>
|
||
|
<li>Fixed some instances where <b>sqlite_exec()</b> was
|
||
|
returning the wrong error code.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_10"></a>
|
||
|
<h3>2000-10-11 (1.0.10)</h3><p><ol class='lessindent'>
|
||
|
<li>Added notes on how to compile for Windows95/98.</li>
|
||
|
<li>Removed a few variables that were not being used. Etc.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_9"></a>
|
||
|
<h3>2000-10-09 (1.0.9)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the <b>sqlite_..._printf()</b> interface routines.</li>
|
||
|
<li>Modified the <b>sqlite</b> shell program to use the new interface
|
||
|
routines.</li>
|
||
|
<li>Modified the <b>sqlite</b> shell program to print the schema for
|
||
|
the built-in SQLITE_MASTER table, if explicitly requested.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_8"></a>
|
||
|
<h3>2000-09-30 (1.0.8)</h3><p><ol class='lessindent'>
|
||
|
<li>Begin writing documentation on the TCL interface.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-09-29 (Not Released)</h3><p><ol class='lessindent'>
|
||
|
<li>Added the <b>sqlite_get_table()</b> API</li>
|
||
|
<li>Updated the documentation for due to the above change.</li>
|
||
|
<li>Modified the <b>sqlite</b> shell to make use of the new
|
||
|
sqlite_get_table() API in order to print a list of tables
|
||
|
in multiple columns, similar to the way "ls" prints filenames.</li>
|
||
|
<li>Modified the <b>sqlite</b> shell to print a semicolon at the
|
||
|
end of each CREATE statement in the output of the ".schema" command.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-09-21 (Not Released)</h3><p><ol class='lessindent'>
|
||
|
<li>Change the tclsqlite "eval" method to return a list of results if
|
||
|
no callback script is specified.</li>
|
||
|
<li>Change tclsqlite.c to use the Tcl_Obj interface</li>
|
||
|
<li>Add tclsqlite.c to the libsqlite.a library</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_5"></a>
|
||
|
<h3>2000-09-14 (1.0.5)</h3><p><ol class='lessindent'>
|
||
|
<li>Changed the print format for floating point values from "%g" to "%.15g".
|
||
|
</li>
|
||
|
<li>Changed the comparison function so that numbers in exponential notation
|
||
|
(ex: 1.234e+05) sort in numerical order.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_4"></a>
|
||
|
<h3>2000-08-28 (1.0.4)</h3><p><ol class='lessindent'>
|
||
|
<li>Added functions <b>length()</b> and <b>substr()</b>.</li>
|
||
|
<li>Fix a bug in the <b>sqlite</b> shell program that was causing
|
||
|
a coredump when the output mode was "column" and the first row
|
||
|
of data contained a NULL.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_3"></a>
|
||
|
<h3>2000-08-22 (1.0.3)</h3><p><ol class='lessindent'>
|
||
|
<li>In the sqlite shell, print the "Database opened READ ONLY" message
|
||
|
to stderr instead of stdout.</li>
|
||
|
<li>In the sqlite shell, now print the version number on initial startup.</li>
|
||
|
<li>Add the <b>sqlite_version[]</b> string constant to the library</li>
|
||
|
<li>Makefile updates</li>
|
||
|
<li>Bug fix: incorrect VDBE code was being generated for the following
|
||
|
circumstance: a query on an indexed table containing a WHERE clause with
|
||
|
an IN operator that had a subquery on its right-hand side.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0_1"></a>
|
||
|
<h3>2000-08-18 (1.0.1)</h3><p><ol class='lessindent'>
|
||
|
<li>Fix a bug in the configure script.</li>
|
||
|
<li>Minor revisions to the website.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<a name="version_1_0"></a>
|
||
|
<h3>2000-08-17 (1.0)</h3><p><ol class='lessindent'>
|
||
|
<li>Change the <b>sqlite</b> program so that it can read
|
||
|
databases for which it lacks write permission. (It used to
|
||
|
refuse all access if it could not write.)</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-08-09</h3><p><ol class='lessindent'>
|
||
|
<li>Treat carriage returns as white space.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-08-08</h3><p><ol class='lessindent'>
|
||
|
<li>Added pattern matching to the ".table" command in the "sqlite"
|
||
|
command shell.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-08-04</h3><p><ol class='lessindent'>
|
||
|
<li>Documentation updates</li>
|
||
|
<li>Added "busy" and "timeout" methods to the Tcl interface</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-08-03</h3><p><ol class='lessindent'>
|
||
|
<li>File format version number was being stored in sqlite_master.tcl
|
||
|
multiple times. This was harmless, but unnecessary. It is now fixed.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-08-02</h3><p><ol class='lessindent'>
|
||
|
<li>The file format for indices was changed slightly in order to work
|
||
|
around an inefficiency that can sometimes come up with GDBM when
|
||
|
there are large indices having many entries with the same key.
|
||
|
<font color="red">** Incompatible Change **</font></li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-08-01</h3><p><ol class='lessindent'>
|
||
|
<li>The parser's stack was overflowing on a very long UPDATE statement.
|
||
|
This is now fixed.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-07-31</h3><p><ol class='lessindent'>
|
||
|
<li>Finish the <a href="vdbe.html">VDBE tutorial</a>.</li>
|
||
|
<li>Added documentation on compiling to WinNT.</li>
|
||
|
<li>Fix a configuration program for WinNT.</li>
|
||
|
<li>Fix a configuration problem for HPUX.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-07-29</h3><p><ol class='lessindent'>
|
||
|
<li>Better labels on column names of the result.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-07-28</h3><p><ol class='lessindent'>
|
||
|
<li>Added the <b>sqlite_busy_handler()</b>
|
||
|
and <b>sqlite_busy_timeout()</b> interface.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-06-23</h3><p><ol class='lessindent'>
|
||
|
<li>Begin writing the <a href="vdbe.html">VDBE tutorial</a>.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-06-21</h3><p><ol class='lessindent'>
|
||
|
<li>Clean up comments and variable names. Changes to documentation.
|
||
|
No functional changes to the code.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-06-19</h3><p><ol class='lessindent'>
|
||
|
<li>Column names in UPDATE statements were case sensitive.
|
||
|
This mistake has now been fixed.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-06-18</h3><p><ol class='lessindent'>
|
||
|
<li>Added the concatenate string operator (||)</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-06-12</h3><p><ol class='lessindent'>
|
||
|
<li>Added the fcnt() function to the SQL interpreter. The fcnt() function
|
||
|
returns the number of database "Fetch" operations that have occurred.
|
||
|
This function is designed for use in test scripts to verify that
|
||
|
queries are efficient and appropriately optimized. Fcnt() has no other
|
||
|
useful purpose, as far as I know.</li>
|
||
|
<li>Added a bunch more tests that take advantage of the new fcnt() function.
|
||
|
The new tests did not uncover any new problems.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-06-08</h3><p><ol class='lessindent'>
|
||
|
<li>Added lots of new test cases</li>
|
||
|
<li>Fix a few bugs discovered while adding test cases</li>
|
||
|
<li>Begin adding lots of new documentation</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-06-06</h3><p><ol class='lessindent'>
|
||
|
<li>Added compound select operators: <B>UNION</b>, <b>UNION ALL</B>,
|
||
|
<b>INTERSECT</b>, and <b>EXCEPT</b></li>
|
||
|
<li>Added support for using <b>(SELECT ...)</b> within expressions</li>
|
||
|
<li>Added support for <b>IN</b> and <b>BETWEEN</b> operators</li>
|
||
|
<li>Added support for <b>GROUP BY</b> and <b>HAVING</b></li>
|
||
|
<li>NULL values are now reported to the callback as a NULL pointer
|
||
|
rather than an empty string.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-06-03</h3><p><ol class='lessindent'>
|
||
|
<li>Added support for default values on columns of a table.</li>
|
||
|
<li>Improved test coverage. Fixed a few obscure bugs found by the
|
||
|
improved tests.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-06-02</h3><p><ol class='lessindent'>
|
||
|
<li>All database files to be modified by an UPDATE, INSERT or DELETE are
|
||
|
now locked before any changes are made to any files.
|
||
|
This makes it safe (I think) to access
|
||
|
the same database simultaneously from multiple processes.</li>
|
||
|
<li>The code appears stable so we are now calling it "beta".</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-06-01</h3><p><ol class='lessindent'>
|
||
|
<li>Better support for file locking so that two or more processes
|
||
|
(or threads)
|
||
|
can access the same database simultaneously. More work needed in
|
||
|
this area, though.</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-05-31</h3><p><ol class='lessindent'>
|
||
|
<li>Added support for aggregate functions (Ex: <b>COUNT(*)</b>, <b>MIN(...)</b>)
|
||
|
to the SELECT statement.</li>
|
||
|
<li>Added support for <B>SELECT DISTINCT ...</B></li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-05-30</h3><p><ol class='lessindent'>
|
||
|
<li>Added the <b>LIKE</b> operator.</li>
|
||
|
<li>Added a <b>GLOB</b> operator: similar to <B>LIKE</B>
|
||
|
but it uses Unix shell globbing wildcards instead of the '%'
|
||
|
and '_' wildcards of SQL.</li>
|
||
|
<li>Added the <B>COPY</b> command patterned after
|
||
|
<a href="http://www.postgresql.org/">PostgreSQL</a> so that SQLite
|
||
|
can now read the output of the <b>pg_dump</b> database dump utility
|
||
|
of PostgreSQL.</li>
|
||
|
<li>Added a <B>VACUUM</B> command that calls the
|
||
|
<b>gdbm_reorganize()</b> function on the underlying database
|
||
|
files.</li>
|
||
|
<li>And many, many bug fixes...</li>
|
||
|
|
||
|
</ol></p>
|
||
|
<h3>2000-05-29</h3><p><ol class='lessindent'>
|
||
|
<li>Initial Public Release of Alpha code</li>
|
||
|
|
||
|
</ol></p>
|
||
|
|
||
|
</dl>
|
||
|
|