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 | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: | c276cca2aafc1b417e12ba7119c65902 |
User & Date: | drh 2006-08-12 14:38:47 |
Context
2006-08-12
| ||
14:42 | Version 3.3.7 (CVS 3348) check-in: 85434a4b user: drh tags: trunk | |
14:38 | Documentation changes prior to the release of 3.3.7. (CVS 3347) check-in: c276cca2 user: drh tags: trunk | |
13:28 | Fix a bug in out-of-memory processing introduced by check-in (3336). (CVS 3346) check-in: 8d98a205 user: drh tags: trunk | |
Changes
Changes to VERSION.
1 |
3.3.6
|
| |
1 |
3.3.7
|
Changes to www/capi3ref.tcl.
1 2 3 4 5 6 7 8 .. 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 .. 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 ... 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 ... 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 ... 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 ... 545 546 547 548 549 550 551 552 553 554 555 556 557 558 |
set rcsid {$Id: capi3ref.tcl,v 1.41 2006/06/26 21:35:46 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}} { ................................................................................ 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 allocated is freed automatically by SQLite. } 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 ................................................................................ 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 "\$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 ................................................................................ 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 before returning. 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 ................................................................................ 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 "\$VVV" have a name which is the string ":AAA" or "\$VVV". In other words, the initial ":" or "$" is included as part of the name. Parameters of the form "?" have no name. 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 {} { ................................................................................ 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 ................................................................................ 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, |
| | > | > | > | | > > > > > > > > > > > > > > > > > |
1 2 3 4 5 6 7 8 .. 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 .. 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 ... 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 ... 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 ... 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 ... 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 |
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}} { ................................................................................ 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 ................................................................................ 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 ................................................................................ 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 ................................................................................ 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 {} { ................................................................................ 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 ................................................................................ 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
4
5
6
7
8
9
10
11
...
228
229
230
231
232
233
234
235
236
237
238
239
240
241
|
# # Run this Tcl script to generate the formatchng.html file. # set rcsid {$Id: formatchng.tcl,v 1.18 2006/06/27 12:24:14 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 ................................................................................ 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>" |
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
1
2
3
4
5
6
7
8
9
10
11
...
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
|
# # 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 ................................................................................ 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
..
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
|
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 ................................................................................ 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. } 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. } puts { <p align="right"><a href="oldnews.html">Old news...</a></p> </td></tr></table> } footer {$Id: index.tcl,v 1.141 2006/07/02 10:21:36 drh Exp $} |
>
>
>
>
>
>
>
>
>
>
<
<
<
<
<
<
<
<
<
<
<
<
|
|
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
..
94
95
96
97
98
99
100
101
102
103
104
105
106
|
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 ................................................................................ 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.
5
6
7
8
9
10
11
12
13
14
15
16
17
18
...
332
333
334
335
336
337
338
339
|
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} { ................................................................................ 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.15 2006/06/27 11:14:13 drh Exp $} |
>
>
>
>
>
>
>
>
>
>
>
>
|
|
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
...
344
345
346
347
348
349
350
351
|
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} { ................................................................................ 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 $} |