Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Documentation changes prior to the release of 3.3.7. (CVS 3347) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
c276cca2aafc1b417e12ba7119c65902 |
User & Date: | drh 2006-08-12 14:38:47.000 |
Context
2006-08-12
| ||
14:42 | Version 3.3.7 (CVS 3348) (check-in: 85434a4b96 user: drh tags: trunk) | |
14:38 | Documentation changes prior to the release of 3.3.7. (CVS 3347) (check-in: c276cca2aa user: drh tags: trunk) | |
13:28 | Fix a bug in out-of-memory processing introduced by check-in (3336). (CVS 3346) (check-in: 8d98a205cb user: drh tags: trunk) | |
Changes
Changes to VERSION.
|
| | | 1 | 3.3.7 |
Changes to www/capi3ref.tcl.
|
| | | 1 2 3 4 5 6 7 8 | set rcsid {$Id: capi3ref.tcl,v 1.42 2006/08/12 14:38:47 drh Exp $} source common.tcl header {C/C++ Interface For SQLite Version 3} puts { <h2>C/C++ Interface For SQLite Version 3</h2> } proc api {name prototype desc {notused x}} { |
︙ | ︙ | |||
62 63 64 65 66 67 68 | Aggregate functions use this routine to allocate a structure for storing their state. The first time this routine is called for a particular aggregate, a new structure of size nBytes is allocated, zeroed, and returned. On subsequent calls (for the same aggregate instance) the same buffer is returned. The implementation of the aggregate can use the returned buffer to accumulate data. | | > | 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | Aggregate functions use this routine to allocate a structure for storing their state. The first time this routine is called for a particular aggregate, a new structure of size nBytes is allocated, zeroed, and returned. On subsequent calls (for the same aggregate instance) the same buffer is returned. The implementation of the aggregate can use the returned buffer to accumulate data. The buffer is freed automatically by SQLite when the query that invoked the aggregate function terminates. } api {} { int sqlite3_aggregate_count(sqlite3_context*); } { This function is deprecated. It continues to exist so as not to break any legacy code that might happen to use it. But it should not |
︙ | ︙ | |||
88 89 90 91 92 93 94 | int sqlite3_bind_null(sqlite3_stmt*, int); int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*)); int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int n, void(*)(void*)); #define SQLITE_STATIC ((void(*)(void *))0) #define SQLITE_TRANSIENT ((void(*)(void *))-1) } { In the SQL strings input to sqlite3_prepare() and sqlite3_prepare16(), | | > | 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | int sqlite3_bind_null(sqlite3_stmt*, int); int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*)); int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int n, void(*)(void*)); #define SQLITE_STATIC ((void(*)(void *))0) #define SQLITE_TRANSIENT ((void(*)(void *))-1) } { In the SQL strings input to sqlite3_prepare() and sqlite3_prepare16(), one or more literals can be replace by a parameter "?" or ":AAA" or "@AAA" or "\$VVV" where AAA is an alphanumeric identifier and VVV is a variable name according to the syntax rules of the TCL programming language. The values of these parameters (also called "host parameter names") can be set using the sqlite3_bind_*() routines. The first argument to the sqlite3_bind_*() routines always is a pointer to the sqlite3_stmt structure returned from sqlite3_prepare(). The second |
︙ | ︙ | |||
119 120 121 122 123 124 125 | The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and sqlite3_bind_text16() is a destructor used to dispose of the BLOB or text after SQLite has finished with it. If the fifth argument is the special value SQLITE_STATIC, then the library assumes that the information is in static, unmanaged space and does not need to be freed. If the fifth argument has the value SQLITE_TRANSIENT, then SQLite makes its | | > | 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and sqlite3_bind_text16() is a destructor used to dispose of the BLOB or text after SQLite has finished with it. If the fifth argument is the special value SQLITE_STATIC, then the library assumes that the information is in static, unmanaged space and does not need to be freed. If the fifth argument has the value SQLITE_TRANSIENT, then SQLite makes its own private copy of the data immediately, before the sqlite3_bind_*() routine returns. The sqlite3_bind_*() routines must be called after sqlite3_prepare() or sqlite3_reset() and before sqlite3_step(). Bindings are not cleared by the sqlite3_reset() routine. Unbound parameters are interpreted as NULL. These routines return SQLITE_OK on success or an error code if |
︙ | ︙ | |||
144 145 146 147 148 149 150 | the argument. } api {} { const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int n); } { Return the name of the n-th parameter in the precompiled statement. | | | > > | 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 | the argument. } api {} { const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int n); } { Return the name of the n-th parameter in the precompiled statement. Parameters of the form ":AAA" or "@AAA" or "\$VVV" have a name which is the string ":AAA" or "\$VVV". In other words, the initial ":" or "$" or "@" is included as part of the name. Parameters of the form "?" have no name. The first bound parameter has an index of 1, not 0. If the value n is out of range or if the n-th parameter is nameless, then NULL is returned. The returned string is always in the UTF-8 encoding. } api {} { |
︙ | ︙ | |||
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 | Sqlite is re-entrant, so the busy handler may start a new query. (It is not clear why anyone would every want to do this, but it is allowed, in theory.) But the busy handler may not close the database. Closing the database from a busy handler will delete data structures out from under the executing query and will probably result in a coredump. } api {} { int sqlite3_busy_timeout(sqlite3*, int ms); } { This routine sets a busy handler that sleeps for a while when a table is locked. The handler will sleep multiple times until at least "ms" milliseconds of sleeping have been done. After "ms" milliseconds of sleeping, the handler returns 0 which causes sqlite3_exec() to return SQLITE_BUSY. Calling this routine with an argument less than or equal to zero turns off all busy handlers. } api {} { int sqlite3_changes(sqlite3*); } { This function returns the number of database rows that were changed (or inserted or deleted) by the most recently completed | > > > > > > > > > > | 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 | Sqlite is re-entrant, so the busy handler may start a new query. (It is not clear why anyone would every want to do this, but it is allowed, in theory.) But the busy handler may not close the database. Closing the database from a busy handler will delete data structures out from under the executing query and will probably result in a coredump. There can only be a single busy handler defined for each database connection. Setting a new busy handler clears any previous one. Note that calling sqlite3_busy_timeout() will also set or clear the busy handler. } api {} { int sqlite3_busy_timeout(sqlite3*, int ms); } { This routine sets a busy handler that sleeps for a while when a table is locked. The handler will sleep multiple times until at least "ms" milliseconds of sleeping have been done. After "ms" milliseconds of sleeping, the handler returns 0 which causes sqlite3_exec() to return SQLITE_BUSY. Calling this routine with an argument less than or equal to zero turns off all busy handlers. There can only be a single busy handler for a particular database connection. If another busy handler was defined (using sqlite3_busy_handler()) prior to calling this routine, that other busy handler is cleared. } api {} { int sqlite3_changes(sqlite3*); } { This function returns the number of database rows that were changed (or inserted or deleted) by the most recently completed |
︙ | ︙ | |||
545 546 547 548 549 550 551 552 553 554 555 556 557 558 | int sqlite3_complete(const char *sql); int sqlite3_complete16(const void *sql); } { These functions return true if the given input string comprises one or more complete SQL statements. The argument must be a nul-terminated UTF-8 string for sqlite3_complete() and a nul-terminated UTF-16 string for sqlite3_complete16(). } {} api {} { int sqlite3_create_collation( sqlite3*, const char *zName, int pref16, | > > > > > | 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 | int sqlite3_complete(const char *sql); int sqlite3_complete16(const void *sql); } { These functions return true if the given input string comprises one or more complete SQL statements. The argument must be a nul-terminated UTF-8 string for sqlite3_complete() and a nul-terminated UTF-16 string for sqlite3_complete16(). These routines do not check to see if the SQL statement is well-formed. They only check to see that the statement is terminated by a semicolon that is not part of a string literal and is not inside the body of a trigger. } {} api {} { int sqlite3_create_collation( sqlite3*, const char *zName, int pref16, |
︙ | ︙ |
Changes to www/changes.tcl.
︙ | ︙ | |||
20 21 22 23 24 25 26 27 28 29 30 31 32 33 | if {[regexp {\(([0-9.]+)\)} $date all vers]} { set label [string map {. _} $vers] puts "<A NAME=\"version_$label\">" } puts "<DT><B>$date</B></DT>" puts "<DD><P><UL>$desc</UL></P></DD>" } chng {2006 June 6 (3.3.6)} { <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> | > > > > > > > > > > > > > > | 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 | if {[regexp {\(([0-9.]+)\)} $date all vers]} { set label [string map {. _} $vers] puts "<A NAME=\"version_$label\">" } puts "<DT><B>$date</B></DT>" puts "<DD><P><UL>$desc</UL></P></DD>" } chng {2006 August 12 (3.3.7)} { <li>Added support for <a href="http://www.sqlite.org/cvstrac/wiki?p=VirtualTables">virtual tables</a> (beta)</li> <li>Added support for <a href="http://www.sqlite.org/cvstrac/wiki?p=LoadableExtensions"> dynamically loaded extensions</a> (beta)</li> <li>The <a href="capi3ref.html#sqlite3_interrupt">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. } chng {2006 June 6 (3.3.6)} { <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> |
︙ | ︙ |
Changes to www/formatchng.tcl.
1 2 3 | # # Run this Tcl script to generate the formatchng.html file. # | | | 1 2 3 4 5 6 7 8 9 10 11 | # # Run this Tcl script to generate the formatchng.html file. # set rcsid {$Id: formatchng.tcl,v 1.19 2006/08/12 14:38:47 drh Exp $ } source common.tcl header {File Format Changes in SQLite} puts { <h2>File Format Changes in SQLite</h2> <p> Every effort is made to keep SQLite fully backwards compatible from |
︙ | ︙ | |||
228 229 230 231 232 233 234 235 236 237 238 239 240 241 | a database file created by SQLite 3.2.8 and merely modified by version 3.3.0 or later will retain the old format. Except, the VACUUM command recreates the database so running VACUUM on 3.3.0 or later will change the file format to the latest edition.</p> </td> </tr> </table> </blockquote> <p> To perform a database reload, have ready versions of the <b>sqlite</b> command-line utility for both the old and new version of SQLite. Call these two executables "<b>sqlite-old</b>" | > > > > > > > > > > > > > > > > > > > > | 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 | a database file created by SQLite 3.2.8 and merely modified by version 3.3.0 or later will retain the old format. Except, the VACUUM command recreates the database so running VACUUM on 3.3.0 or later will change the file format to the latest edition.</p> </td> </tr> <tr> <td valign="top">3.3.6 to 3.3.7</td> <td valign="top">2006-Aug-12</td> <td><p>The previous file format change has caused so much grief that the default behavior has been changed back to the original file format. This means that DESC option on indices is ignored by default that the more efficient encoding of boolean values is not used. In that way, older versions of SQLite can read and write databases created by newer versions. If the new features are desired, they can be enabled using pragma: "PRAGMA legacy_file_format=OFF".</p> <p>To be clear: both old and new file formats continue to be understood and continue to work. But the old file format is used by default instead of the new. This might change again in some future release - we may go back to generating the new file format by default - but probably not until all users have upgraded to a version of SQLite that will understand the new file format. That might take several years.</p></td> </tr> </table> </blockquote> <p> To perform a database reload, have ready versions of the <b>sqlite</b> command-line utility for both the old and new version of SQLite. Call these two executables "<b>sqlite-old</b>" |
︙ | ︙ |
Changes to www/index.tcl.
︙ | ︙ | |||
61 62 63 64 65 66 67 68 69 70 71 72 73 74 | proc newsitem {date title text} { puts "<h3>$date - $title</h3>" regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt puts "<p>$txt</p>" puts "<hr width=\"50%\">" } newsitem {2006-Jun-19} {New Book About SQLite} { <a href="http://www.apress.com/book/bookDisplay.html?bID=10130"> <i>The Definitive Guide to SQLite</i></a>, a new book by <a href="http://www.mikesclutter.com">Mike Owens</a>. is now available from <a href="http://www.apress.com">Apress</a>. The books covers the latest SQLite internals as well as | > > > > > > > > > > | 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | proc newsitem {date title text} { puts "<h3>$date - $title</h3>" regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt puts "<p>$txt</p>" puts "<hr width=\"50%\">" } newsitem {2006-Aug-12} {Version 3.3.7} { Version 3.3.7 includes support for loadable extensions and virtual tables. But both features are still considered "beta" and their APIs are subject to change in a future release. This release is mostly to make available the minor bug fixes that have accumulated since 3.3.6. Upgrading is not necessary. Do so only if you encounter one of the obscure bugs that have been fixed or if you want to try out the new features. } newsitem {2006-Jun-19} {New Book About SQLite} { <a href="http://www.apress.com/book/bookDisplay.html?bID=10130"> <i>The Definitive Guide to SQLite</i></a>, a new book by <a href="http://www.mikesclutter.com">Mike Owens</a>. is now available from <a href="http://www.apress.com">Apress</a>. The books covers the latest SQLite internals as well as |
︙ | ︙ | |||
84 85 86 87 88 89 90 | newsitem {2006-Apr-5} {Version 3.3.5} { This release fixes many minor bugs and documentation typos and provides some minor new features and performance enhancements. Upgrade only if you are having problems or need one of the new features. } | < < < < < < < < < < < < | | 94 95 96 97 98 99 100 101 102 103 104 105 106 | newsitem {2006-Apr-5} {Version 3.3.5} { This release fixes many minor bugs and documentation typos and provides some minor new features and performance enhancements. Upgrade only if you are having problems or need one of the new features. } puts { <p align="right"><a href="oldnews.html">Old news...</a></p> </td></tr></table> } footer {$Id: index.tcl,v 1.142 2006/08/12 14:38:47 drh Exp $} |
Changes to www/oldnews.tcl.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #!/usr/bin/tclsh source common.tcl header {SQLite Older News} proc newsitem {date title text} { puts "<h3>$date - $title</h3>" regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt puts "<p>$txt</p>" puts "<hr width=\"50%\">" } newsitem {2006-Jan-24} {Version 3.3.2 beta} { More bug fixes and performance improvements as we move closer to a production-ready version 3.3.x. } newsitem {2006-Jan-16} {Version 3.3.1 alpha} { | > > > > > > > > > > > > | 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 | #!/usr/bin/tclsh source common.tcl header {SQLite Older News} proc newsitem {date title text} { puts "<h3>$date - $title</h3>" regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt puts "<p>$txt</p>" puts "<hr width=\"50%\">" } newsitem {2006-Feb-11} {Version 3.3.4} { This release fixes several bugs, including a a blunder that might cause a deadlock on multithreaded systems. Anyone using SQLite in a multithreaded environment should probably upgrade. } newsitem {2006-Jan-31} {Version 3.3.3 stable} { There have been no major problems discovered in version 3.3.2, so we hereby declare the new APIs and language features to be stable and supported. } newsitem {2006-Jan-24} {Version 3.3.2 beta} { More bug fixes and performance improvements as we move closer to a production-ready version 3.3.x. } newsitem {2006-Jan-16} {Version 3.3.1 alpha} { |
︙ | ︙ | |||
332 333 334 335 336 337 338 | changes to both the C-language API and the underlying file format that will enable SQLite to better support internationalization. The first beta is schedule for release on 2004-July-01. Plans are to continue to support SQLite version 2.8 with bug fixes. But all new development will occur in version 3.0. } | | | 344 345 346 347 348 349 350 351 | changes to both the C-language API and the underlying file format that will enable SQLite to better support internationalization. The first beta is schedule for release on 2004-July-01. Plans are to continue to support SQLite version 2.8 with bug fixes. But all new development will occur in version 3.0. } footer {$Id: oldnews.tcl,v 1.16 2006/08/12 14:38:47 drh Exp $} |