Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Added news for 3.16.0. Typo fixes and last-minute changes. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
eb70d3b29565e88954dfd71db5885cd2 |
User & Date: | drh 2017-01-02 11:56:44.744 |
Context
2017-01-02
| ||
12:02 | Add hashes and a chronology entry for the 3.16.0 release. (check-in: b01be9ce27 user: drh tags: trunk, release, version-3.16.0) | |
11:56 | Added news for 3.16.0. Typo fixes and last-minute changes. (check-in: eb70d3b295 user: drh tags: trunk) | |
2016-12-31
| ||
19:55 | Remove the not-found.html document. (check-in: 35ec903c39 user: drh tags: trunk) | |
Changes
Changes to pages/changes.in.
︙ | ︙ | |||
17 18 19 20 21 22 23 | proc chng {date desc {options {}}} { global nChng aChng xrefChng set aChng($nChng) [list $date $desc $options] set xrefChng($date) $nChng incr nChng } | | | | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | proc chng {date desc {options {}}} { global nChng aChng xrefChng set aChng($nChng) [list $date $desc $options] set xrefChng($date) $nChng incr nChng } chng {2017-01-02 (3.16.0)} { <li>Uses 9% fewer CPU cycles. (See the [CPU performance measurement] report for details on how the this performance increase was computed.) <li>Added experimental support for [PRAGMA functions]. <li>Added the [SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE] option to [sqlite3_db_config()]. <li>Enhance the [date and time functions] so that the 'unixepoch' modifier works for the full span of supported dates. <li>Changed the default configuration of the [lookaside memory allocator] from 500 slots of 128 bytes each into 125 slots of 512 bytes each. <li>Enhanced "WHERE x NOT NULL" [partial indexes] so that they are usable if the "x" column appears in a LIKE or GLOB operator. <li>Enhanced [sqlite3_interrupt()] so that it interrupts [checkpoint] operations that are in process. <li>Enhanced the [LIKE] and [GLOB] matching algorithm to be faster for cases when the pattern contains multiple wildcards. <li>Added the [SQLITE_FCNTL_WIN32_GET_HANDLE] file control opcode. <li>Added ".mode quote" to the [command-line shell]. <li>Added ".lint fkey-indexes" to the [command-line shell]. <li>Added the [.imposter dot-command] to the [command-line shell]. <li>Added the [https://www.sqlite.org/src/file/ext/misc/remember.c | remember(V,PTR)] SQL function as a [loadable extension]. <li>Rename the [SQLITE_OMIT_BUILTIN_TEST] compile-time option to [SQLITE_UNTESTABLE] to better reflect the implications of using it. |
︙ | ︙ |
Changes to pages/cpu.in.
︙ | ︙ | |||
68 69 70 71 72 73 74 | no test program can exactly mirror the behavior of all applications. <p> The speedtest1.c program is updated from time to time as the SQLite developers' understanding of what constitutes "typical" usage evolves. | < > > > | | | | | 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | no test program can exactly mirror the behavior of all applications. <p> The speedtest1.c program is updated from time to time as the SQLite developers' understanding of what constitutes "typical" usage evolves. <h2>Performance Measurement</h2> <p> [http://valgrind.org/docs/manual/cg-manual.html|Cachegrind] is used to measure performance because it gives answers that are repeatable to 7 or more significant digits. In comparison, actual (wall-clock) run times are scarcely repeatable beyond one significant digit. <tcl>hd_fragment microopt microoptimizations</tcl> <h2>Microoptimizations</h2> <p> The high repeatability of cachegrind allows the SQLite developers to implement and measure "microoptimizations". A microoptimization is a change to the code that results in a very small performance increase. Typical micro-optimizations reduce the number of CPU cycles by 0.1% or 0.05% or even less. Such improvements are impossible to measure with real-world timings. But hundreds or thousands of microoptimizations add up, resulting in measurable real-world performance gains. <h1>Performance Measurement Workflow</h1> <p> As SQLite developers edit the SQLite source code, they run the [https://www.sqlite.org/src/file/tool/speed-check.sh | speed-check.sh] |
︙ | ︙ |
Changes to pages/news.in.
︙ | ︙ | |||
14 15 16 17 18 19 20 21 22 23 24 25 26 27 | hd_puts "<h3>$date - $title</h3>" regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt regsub -all {[Tt]icket #(\d+)} $txt \ {<a href="http://www.sqlite.org/cvstrac/tktview?tn=\1">\0</a>} txt hd_resolve "<blockquote>$txt</blockquote>" hd_puts "<hr width=\"50%\">" } newsitem {2016-11-28} {Release 3.15.2} { SQLite [version 3.15.2] is a bug-fix patch release that fixes several minor issues in the 3.15.0 and 3.15.1 releases. } newsitem {2016-11-04} {Release 3.15.1} { | > > > > > > > > > > > > > > > > > > | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | hd_puts "<h3>$date - $title</h3>" regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt regsub -all {[Tt]icket #(\d+)} $txt \ {<a href="http://www.sqlite.org/cvstrac/tktview?tn=\1">\0</a>} txt hd_resolve "<blockquote>$txt</blockquote>" hd_puts "<hr width=\"50%\">" } newsitem {2017-01-02} {Release 3.16.0} { SQLite [version 3.16.0] is a regularly schedule maintenance release. <p> This release includes many [microoptimizations] that collectively reduce the CPU cycle count by about 9%, add there have been important enhancements to the [command-line shell]. <p>Support for [PRAGMA functions] is added, so that many pragma statements can be used as part of a larger SQL query. This is considered an experimental feature. We do not anticipate any changes to the [PRAGMA function] interface, but will keep continue to call this interface "experimental" for a few release cycles in case unforeseen issues arise. <p>See the [version 3.16.0|change log] for other enhancements. } newsitem {2016-11-28} {Release 3.15.2} { SQLite [version 3.15.2] is a bug-fix patch release that fixes several minor issues in the 3.15.0 and 3.15.1 releases. } newsitem {2016-11-04} {Release 3.15.1} { |
︙ | ︙ | |||
137 138 139 140 141 142 143 144 | the Firefox developers at Mozilla. The differences from version 3.10.0 are minimal. } newsitem {2016-01-06} {Release 3.10.0} { <p>SQLite [version 3.10.0] is a regularly scheduled maintenance release. } | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 155 156 157 158 159 160 161 162 163 164 165 | the Firefox developers at Mozilla. The differences from version 3.10.0 are minimal. } newsitem {2016-01-06} {Release 3.10.0} { <p>SQLite [version 3.10.0] is a regularly scheduled maintenance release. } </tcl> <a href="oldnews.html">Old news...</a> |
Changes to pages/oldnews.in.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?xml version="1.0" encoding="Windows-1252"?> <title>SQLite Older News</title> <tcl> proc newsitem {date title text} { regsub -all {[^a-z0-9]} $date _ tag hd_puts "<a name=\"$tag\"></a>" hd_puts "<h3>$date - $title</h3>" regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt hd_resolve "<blockquote>$txt</blockquote>" hd_puts "<hr width=\"50%\">" } newsitem {2014-12-09} {Release 3.8.7.4} { <p>SQLite [version 3.8.7.4] an unscheduled bug-fix release. Changes from the previous release and from [version 3.8.7] are minimal. <p>This release fixes adds in a mutex that is required by the changes of the 3.8.7.3 patch but was accidentally omitted. The mutex was not required | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | <?xml version="1.0" encoding="Windows-1252"?> <title>SQLite Older News</title> <tcl> proc newsitem {date title text} { regsub -all {[^a-z0-9]} $date _ tag hd_puts "<a name=\"$tag\"></a>" hd_puts "<h3>$date - $title</h3>" regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt hd_resolve "<blockquote>$txt</blockquote>" hd_puts "<hr width=\"50%\">" } newsitem {2015-11-02} {Release 3.9.2} { <p>SQLite [version 3.9.2] is a patch release fixing two obscure bugs. (Details: [https://www.sqlite.org/src/tktview?name=8a2adec166|(1)], [https://www.sqlite.org/src/tktview?name=ac661962a2|(2)]). Upgrade only if you are having problems. } newsitem {2015-10-16} {Release 3.9.1} { <p>SQLite [version 3.9.1] is a [https://www.sqlite.org/src/vpatch?from=version-3.9.0&to=version-3.9.1|small patch] to [version 3.9.0] that includes a few simple build script and #ifdef tweaks to make the code easier to compile on a wider variety of platform. There are no functional changes, except for a single [https://www.sqlite.org/src/info/57eec374ae1d0a1d4a|minor bug-fix] in [the json1 extension] to stop it from recognizing form-feed (ASCII 0x0c) as a whitespace character, in conformance with [http://www.rfc-editor.org/rfc/rfc7159.txt|RFC7159]. } newsitem {2015-10-14} {Release 3.9.0} { <p>SQLite version 3.9.0 is a regularly schedule maintenance release. Key changes include: <ul> <li>Begin using [http://semver.org/|semantic versioning]. <li>[json1|JSON SQL functions] <li>The [FTS5] full-text search engine <li>Support for [indexes on expressions] <li>Support for [table-valued functions] </ul> See the [version 3.9.0|change log] for a long and more complete list of changes. } newsitem {2015-07-29} {Release 3.8.11.1} { <p>SQLite version 3.8.11.1 is a patch release that fixes two arcane issues that were reported shortly after 3.8.11 was released. Upgrade from 3.8.11 only in the unlikely event that one of these obscure issues affect your code. } newsitem {2015-07-27} {Release 3.8.11} { <p>SQLite version 3.8.11 is a regularly scheduled maintenance release. See the [version 3.8.11|change log] for details. } newsitem {2015-05-20} {Release 3.8.10.2} { <p>Yikes! Index corruption after a sequence of valid SQL statements! <p>It has been many years since anything like [https://www.sqlite.org/src/info/34cd55d6|this bug] has snuck into an official SQLite release. But for the pasts seven months ([version 3.8.7] through [version 3.8.10.1]) if you do an INSERT into a carefully crafted schema in which there are two nested triggers that convert an index key value from TEXT to INTEGER and then back to TEXT again, the INTEGER value might get inserted as the index key instead of the correct TEXT, resulting in index corruption. This patch release adds a single line of code to fix the problem. <p>If you do actually encounter this problem, running [REINDEX] on the damaged indexes will clear it. } newsitem {2015-05-09} {Release 3.8.10.1} { <p>The 3.8.10 release did not add the new [SQLITE_ENABLE_DBSTAT_VTAB] compile-time option to the [sqlite3_compileoption_used()] interface. This patch release fixes that omission. And while we are at it, the associated [dbstat virtual table] was enhanced slightly and a harmless compiler warning was fixed. <p>There is no reason to upgrade from version 3.8.10 unless you are using the new [SQLITE_ENABLE_DBSTAT_VTAB] compile-time option. } newsitem {2015-05-07} {Release 3.8.10} { <p>SQLite version 3.8.10 is a regularly scheduled maintenance release. This release features performance improvements, fixes to several arcane bugs found by the AFL fuzzer, the new "sqldiff.exe" command-line utility, improvements to the documentation, and other enhancements. See the <a href='releaselog/3_8_10.html'>release notes</a> for additional information. } newsitem {2015-04-08} {Release 3.8.9} { <p>SQLite version 3.8.9 is a regularly scheduled maintenance release. New features in this release include the [PRAGMA index_xinfo] command, the [sqlite3_status64()] interface, and the ".dbinfo" command of the [command-line shell]. See the <a href='releaselog/3_8_9.html'>release notes</a> for additional information. } newsitem {2015-02-25} {Release 3.8.8.3} { <p>The 3.8.8.3 patch release fixes an obscure problem in the SQLite code generator that can cause incorrect results when the qualifying expression of a [partial index] is used inside the ON clause of a LEFT JOIN. This problem has been in the code since support for partial indexes was first added in version 3.8.0. However, it is difficult to imagine a valid reason to every put the qualifying constraint inside the ON clause of a LEFT JOIN, and so this issue has never come up before. <p>Any applications that is vulnerable to this bug would have encountered problems already. Hence, upgrading from the previous release is optional. } newsitem {2015-01-30} {Release 3.8.8.2} { <p>The 3.8.8.2 patch release fixes a single minor problem: It ensures that the [sqlite3_wal_checkpoint(TRUNCATE)] operation will always truncate the [write-ahead log] even if log had already been reset and contained no new content. It is unclear if this is a bug fix or a new feature. <p>Something like this would normally go into the next regularly scheduled release, but a prominent SQLite user needed the change in a hurry so we were happy to rush it out via this patch. <p>There is no reason to upgrade unless you actually need the enhanced behavior of [sqlite3_wal_checkpoint(TRUNCATE)]. } newsitem {2015-01-20} {Release 3.8.8.1} { <p>Within hours of releasing version 3.8.8, a bug was reported against the 10-month-old 3.8.4 release. As that bug exists in all subsequent releases, the decision was made to issue a small patch to the 3.8.8 before it came into widespread use. <p>See ticket [https://www.sqlite.org/src/info/f97c4637102a3ae72b7911|f97c4637102a3ae72b7911] for a description of the bug. <p>The changes between versions 3.8.8 and 3.8.8.1 are minimal. } newsitem {2015-01-16} {Release 3.8.8} { <p>SQLite [version 3.8.8] is a regularly schedule maintenance release of SQLite. <p>There are no dramatic new features or performance enhancements in this release, merely incremental improvements. Most of the performance gain in this release comes from refactoring the B-Tree rebalancing logic to avoid unnecessary memcpy() operations. New features include the [PRAGMA data_version] statement and the ability to accept a [VALUES clause] with no arbitrary limit on the number of rows. Several obscure bugs have been fixed, including some multithreading races and a work-around for a compiler bug on some Macs. <p>See the [version 3.8.8|change log] for a longer list of enhancements and bug fixes. } newsitem {2014-12-09} {Release 3.8.7.4} { <p>SQLite [version 3.8.7.4] an unscheduled bug-fix release. Changes from the previous release and from [version 3.8.7] are minimal. <p>This release fixes adds in a mutex that is required by the changes of the 3.8.7.3 patch but was accidentally omitted. The mutex was not required |
︙ | ︙ |
Changes to pages/pragma.in.
︙ | ︙ | |||
150 151 152 153 154 155 156 | or "main" or "temp" for the main and the TEMP databases. ^If the optional schema name is omitted, "main" is assumed. ^In some pragmas, the schema name is meaningless and is simply ignored. In the documentation below, pragmas for which the schema name is meaningful are shown with a "<i>schema.</i>" prefix.</p> <tcl> | | | 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | or "main" or "temp" for the main and the TEMP databases. ^If the optional schema name is omitted, "main" is assumed. ^In some pragmas, the schema name is meaningless and is simply ignored. In the documentation below, pragmas for which the schema name is meaningful are shown with a "<i>schema.</i>" prefix.</p> <tcl> Section {PRAGMA functions} pragfunc {{PRAGMA functions} {PRAGMA function}} </tcl> <p> PRAGMAs that return results and that have no side-effects can be accessed from ordinary [SELECT] statements as [table-valued functions]. For each participating PRAGMA, the corresponding table-valued function has the same name as the PRAGMA with a 7-character "pragma_" prefix. |
︙ | ︙ | |||
206 207 208 209 210 211 212 | <li><p> This feature could be used to implement [https://en.wikipedia.org/wiki/Information_schema | information schema] by first creating a separate schema using <blockquote><pre> [ATTACH] ':memory:' AS 'information_schema'; </pre></blockquote> | | | 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 | <li><p> This feature could be used to implement [https://en.wikipedia.org/wiki/Information_schema | information schema] by first creating a separate schema using <blockquote><pre> [ATTACH] ':memory:' AS 'information_schema'; </pre></blockquote> Then creating [VIEW|VIEWs] in that schema that implement the official information schema tables using table-valued PRAGMA functions. <li><p> This feature is experimental and is subject to change. Further documentation will become available if and when the table-valued functions for PRAGMAs feature becomes officially supported. <li><p> |
︙ | ︙ |
Changes to pages/selfcontained.in.
︙ | ︙ | |||
32 33 34 35 36 37 38 | <li>realloc() <li>free() </ul> <p>But those routines are optional can can be omitted using a [SQLITE_ZERO_MALLOC|compile-time option]. <p> | | | 32 33 34 35 36 37 38 39 40 41 42 43 44 | <li>realloc() <li>free() </ul> <p>But those routines are optional can can be omitted using a [SQLITE_ZERO_MALLOC|compile-time option]. <p> Default SQLite builds contain appropriate [VFS|VFS objects] for talking to underlying operating system, and those VFS objects will contain operating system calls such as open(), read(), write(), fsync(), and so forth. All of these interfaces are readily available on most platforms, and custom VFSes can be designed to run SQLite on even the most austere embedded devices. |