Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Enhance the change log to use ordered-lists rather than unnumber-lists to make it easier for people to refer to a specific item in the change log. Also fixed a minor typo on item 7 of the current change log. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
bfd46de16bc7f1603e878e91199491ad |
User & Date: | drh 2017-07-31 20:31:27.684 |
Context
2017-08-01
| ||
01:23 | Update the speed-and-size spreadsheet with the latest test numbers. (check-in: 17d120e496 user: drh tags: trunk) | |
2017-07-31
| ||
20:31 | Enhance the change log to use ordered-lists rather than unnumber-lists to make it easier for people to refer to a specific item in the change log. Also fixed a minor typo on item 7 of the current change log. (check-in: bfd46de16b user: drh tags: trunk) | |
20:19 | Mention the column-name fix in the change log for 3.20.0. (check-in: 86057a37ce user: drh tags: trunk) | |
Changes
Changes to pages/changes.in.
︙ | ︙ | |||
24 25 26 27 28 29 30 | chng {2017-08-01 (3.20.0)} { <li> Update the text of error messages returned by [sqlite3_errmsg()] for some error codes. <li> Add new [pointer passing interfaces]. <li> Backwards-incompatible changes to some extensions in order to take advantage of the improved security offered by the new [pointer passing interfaces]: | | | | | | | | | | 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 | chng {2017-08-01 (3.20.0)} { <li> Update the text of error messages returned by [sqlite3_errmsg()] for some error codes. <li> Add new [pointer passing interfaces]. <li> Backwards-incompatible changes to some extensions in order to take advantage of the improved security offered by the new [pointer passing interfaces]: <ol type='a'> <li> [Extending FTS5] → requires [sqlite3_bind_pointer()] to find the fts5_api pointer. <li> [carray(PTR,N)] → requires [sqlite3_bind_pointer()] to set the PTR parameter. <li> [https://www.sqlite.org/src/file/ext/misc/remember.c|remember(V,PTR)] → requires [sqlite3_bind_pointer()] to set the PTR parameter. </ol> <li> Added the [SQLITE_STMT virtual table] extension. <li> Added the [COMPLETION extension] - designed to suggest tab-completions for interactive user interfaces. This is a work in progress. Expect further enhancements in future releases. <li> Added the [UNION virtual table] extension. <li> The built-in [date and time functions] have been enhanced so that they can be used in [CHECK constraints], in [indexes on expressions], and in the WHERE clauses of [partial indexes], provided that they do not use the 'now', 'localtime', or 'utc' keywords. [date/time special case|Futher information]. <li> Added the [sqlite3_prepare_v3()] and [sqlite3_prepare16_v3()] interfaces with the extra "prepFlags" parameters. <li> Provide the [SQLITE_PREPARE_PERSISTENT] flag for [sqlite3_prepare_v3()] and use it to limit [lookaside memory] misuse by [FTS3], [FTS5], and the [R-Tree extension]. <li> Added the [PRAGMA secure_delete=FAST] 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 [free-page list] but will be purged from all b-tree pages. <li> Enhancements to the [command-line shell]: <ol type='a'> <li> Add support for tab-completion using the [COMPLETION extension], for both readline and linenoise. <li> Add the ".cd" command. <li> Enhance the "[.schema]" command to show the schema of all attached databases. <li> Enhance "[.tables]" so that it shows the schema names for all attached if the name is anything other than "main". <li> The "[.import]" command ignores an initial UTF-8 BOM. <li> Added the "--newlines" option to the "[.dump]" command to cause U+000a and U+000d characters to be output literally rather than escaped using the [replace()] 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 [flattening optimization] for a sub-query on the RHS of a LEFT JOIN if that subquery reads data from a [virtual table] as doing so prevents the query planner from creating [automatic indexes] on the results of the sub-query, which can slow down the query. </ol> <li> Add [SQLITE_STMTSTATUS_REPREPARE], [SQLITE_STMTSTATUS_RUN], and [SQLITE_STMTSTATUS_MEMUSED] options for the [sqlite3_stmt_status()] interface. <li> Provide [PRAGMA functions] for [PRAGMA integrity_check], [PRAGMA quick_check], and [PRAGMA foreign_key_check]. <li> Add the -withoutnulls option to the [TCL interface eval method]. |
︙ | ︙ | |||
258 259 260 261 262 263 264 | <p><b>Hashes:</b> <li>SQLITE_SOURCE_ID: "2017-03-28 18:48:43 424a0d380332858ee55bdebc4af3789f74e70a2b3ba1cf29d84b9b4bcf3e2e37" <li>SHA3-256 for sqlite3.c: cbf322df1f76be57fb3be84f3da1fc71d1d3dfdb7e7c2757fb0ff630b3bc2e5d } chng {2017-02-13 (3.17.0)} { <li>Approximately 25% better performance from the [R-Tree extension]. | | | | 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 | <p><b>Hashes:</b> <li>SQLITE_SOURCE_ID: "2017-03-28 18:48:43 424a0d380332858ee55bdebc4af3789f74e70a2b3ba1cf29d84b9b4bcf3e2e37" <li>SHA3-256 for sqlite3.c: cbf322df1f76be57fb3be84f3da1fc71d1d3dfdb7e7c2757fb0ff630b3bc2e5d } chng {2017-02-13 (3.17.0)} { <li>Approximately 25% better performance from the [R-Tree extension]. <ol type='a'> <li> Uses compiler built-ins (ex: __builtin_bswap32() or _byteswap_ulong()) for byteswapping when available. <li> Uses the [sqlite3_blob] 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 [SQLITE_DEFAULT_LOOKASIDE] compile-time option. <li>Increase the default [lookaside memory allocator|lookaside] 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. |
︙ | ︙ | |||
428 429 430 431 432 433 434 | chng {2016-10-14 (3.15.0)} { <li> Added support for [row values]. <li> Allow [deterministic SQL functions] in the WHERE clause of a [partial index]. <li> Added the "[modeof|modeof=<i>filename</i>]" URI parameter on the unix VFS <li> Added support for [SQLITE_DBCONFIG_MAINDBNAME]. <li> Added the ability to [VACUUM] an [ATTACH|ATTACH-ed] database. <li> Enhancements to the [command-line shell]: | | | | 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 | chng {2016-10-14 (3.15.0)} { <li> Added support for [row values]. <li> Allow [deterministic SQL functions] in the WHERE clause of a [partial index]. <li> Added the "[modeof|modeof=<i>filename</i>]" URI parameter on the unix VFS <li> Added support for [SQLITE_DBCONFIG_MAINDBNAME]. <li> Added the ability to [VACUUM] an [ATTACH|ATTACH-ed] database. <li> Enhancements to the [command-line shell]: <ol type='a'> <li> Add the ".testcase" and ".check" [dot-commands]. <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 [fts5vocab] 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 ([sqlite3_prepare_v2()]). <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 |
︙ | ︙ | |||
1500 1501 1502 1503 1504 1505 1506 | <li>SHA1 for sqlite3.c: 6422c7d69866f5ea3db0968f67ee596e7114544e } chng {2013-10-17 (3.8.1)} { <li>Added the [unlikely()] and [likelihood()] SQL functions to be used as hints to the query planner. <li>Enhancements to the query planner: | | | | 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 | <li>SHA1 for sqlite3.c: 6422c7d69866f5ea3db0968f67ee596e7114544e } chng {2013-10-17 (3.8.1)} { <li>Added the [unlikely()] and [likelihood()] 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 [soft_heap_limit pragma]. <li>Added support for [SQLITE_ENABLE_STAT4] <li>Added support for "sz=NNN" parameters at the end of [sqlite_stat1 | sqlite_stat1.stat] 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. |
︙ | ︙ | |||
1829 1830 1831 1832 1833 1834 1835 | 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: | | | | 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 | 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 [busy_timeout pragma]. <li>Added the [instr()] SQL function. <li>Added the [SQLITE_FCNTL_BUSYHANDLER] file control, used to allow VFS implementations to get access to the busy handler callback. <li>The xDelete method in the built-in [VFS | VFSes] now return SQLITE_IOERR_DELETE_NOENT if the file to be deleted does not exist. <li>Enhanced support for QNX. |
︙ | ︙ | |||
2388 2389 2390 2391 2392 2393 2394 | <li>The SQL output resulting from [sqlite3_trace()] is now modified to include the values of [bound parameters]. <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: | | | | 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 | <li>The SQL output resulting from [sqlite3_trace()] is now modified to include the values of [bound parameters]. <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 [ifnull()] and [coalesce()] 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 [substr()] 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 [fts3 | FTS3 documentation] is now available. <li>The [SQLITE_SECURE_DELETE] compile-time option fixed to make sure that content is deleted even when the [truncate optimization] applies. <li>Improvements to "dot-command" handling in the [Command Line Interface]. <li>Other minor bug fixes and documentation enhancements. |
︙ | ︙ | |||
2979 2980 2981 2982 2983 2984 2985 | 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 [http://www.icu-project.org/ | International Components for Unicode (ICU)] to the full-text search extensions. | | | 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 | 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 [http://www.icu-project.org/ | International Components for Unicode (ICU)] to the full-text search extensions. </ol><p> <ul type="circle"> <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 [sqlite3_column_blob()] |
︙ | ︙ | |||
3057 3058 3059 3060 3061 3062 3063 | <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: | | | | 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 | <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 |
︙ | ︙ | |||
3158 3159 3160 3161 3162 3163 3164 | 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: | | | | 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 | 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> |
︙ | ︙ | |||
4694 4695 4696 4697 4698 4699 4700 | foreach {date desc options} $aChng($i) break if {[regexp {\(([0-9.]+)\)} $date all vers]} { set label [string map {. _} $vers] hd_fragment version_$label } hd_puts "<h3>$date</h3>" regsub -all {\yROOT/} $desc {} d2 | | | | 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 | foreach {date desc options} $aChng($i) break if {[regexp {\(([0-9.]+)\)} $date all vers]} { set label [string map {. _} $vers] hd_fragment version_$label } hd_puts "<h3>$date</h3>" regsub -all {\yROOT/} $desc {} d2 hd_resolve "<p><ol class='lessindent'>$d2\n" foreach {key value} $options { if {$key=="backport"} { if {[info exists xrefChng($value)]} {set value $xrefChng($value)} set c2 $aChng([expr {$i+$value}]) regexp {([-0-9]+) \((3\.\d+[.0-9]+)[ a-zA-Z]*\)} [lindex $c2 0] all xdate xvers set d2 [lindex $c2 1] regsub {(<p>[^\n]*\n)?<li>SQLITE_SOURCE_ID.*$} $d2 {} d2 hd_resolve "<p><b>Bug fixes backported into patch release $xvers ($xdate):</b></p>\n" hd_resolve "$d2\n" } } hd_resolve "</ol></p>\n" if {[regexp {([-0-9]+) \((3\.\d+[.0-9]+)[ a-zA-Z]*\)} $date all dateonly vers]} { set tag [string trim [string map {. _} $vers]] file mkdir $DEST/releaselog set filename releaselog/$tag.html hd_open_aux $filename if {[string match *-00* $dateonly]} { set hdr "SQLite Release $vers (Pending)" |
︙ | ︙ | |||
4730 4731 4732 4733 4734 4735 4736 | hd_enable_main 0 hd_puts "<h2>$hdr</h2>" regsub -all {<a href="(?!http:)} $desc {<a href="../} desc foreach {key value} $options { if {$key=="inadditionto"} { set d2 [lindex $aChng([expr {$i+$value}]) 1] regsub {(<p>[^\n]*\n)?<li>SQLITE_SOURCE_ID.*$} $d2 {} d2 | | | | | | | 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 | hd_enable_main 0 hd_puts "<h2>$hdr</h2>" regsub -all {<a href="(?!http:)} $desc {<a href="../} desc foreach {key value} $options { if {$key=="inadditionto"} { set d2 [lindex $aChng([expr {$i+$value}]) 1] regsub {(<p>[^\n]*\n)?<li>SQLITE_SOURCE_ID.*$} $d2 {} d2 hd_resolve "<p><ol class='lessindent'>$d2</ol></p>" } } regsub -all {\yROOT/\y} $desc {../} d2 hd_resolve "<p><ol class='lessindent'>$d2\n" foreach {key value} $options { if {$key=="patchagainst"} { if {[info exists xrefChng($value)]} {set value $xrefChng($value)} set c2 $aChng([expr {$i+$value}]) regexp {([-0-9]+) \((3\.\d+[.0-9]+)[ a-zA-Z]*\)} [lindex $c2 0] all date vers set d2 [lindex $c2 1] regsub -all {\yROOT/} $d2 {../} d2 regsub {(<p>[^\n]*\n)?<li>SQLITE_SOURCE_ID.*$} $d2 {} d2 hd_resolve "</ol></p>\n" hd_resolve "<p><b>Changes carried forward from version $vers ($date):</b></p>\n" hd_resolve "<p><ol class='lessindent'>$d2\n" } if {$key=="backport"} { if {[info exists xrefChng($value)]} {set value $xrefChng($value)} set c2 $aChng([expr {$i+$value}]) regexp {([-0-9]+) \((3\.\d+\.[.0-9]+)[ a-zA-Z]*\)} [lindex $c2 0] all date vers set d2 [lindex $c2 1] regsub {(<p>[^\n]*\n)?<li>SQLITE_SOURCE_ID.*$} $d2 {} d2 hd_resolve "<p><b>Bug fixes backported into patch release $vers ($date):</b></p>\n" hd_resolve "$d2\n" } } hd_resolve "</ol></p>\n" hd_resolve { <p>A [complete list of SQLite releases] in a single page and a [chronology] are both also available. A detailed history of every check-in is available at <a href="http://www.sqlite.org/src/timeline"> SQLite version control site</a>.</p> |
︙ | ︙ |