Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add user documentation for the "pragma auto_vacuum" command. (CVS 2084) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
fe200eaf373998574cc059086bfc93d6 |
User & Date: | danielk1977 2004-11-10 05:48:57.000 |
Context
2004-11-10
| ||
11:55 | Ensure tables cannot be created/dropped when btree cursors are open. (CVS 2085) (check-in: 8e5c2e5df8 user: danielk1977 tags: trunk) | |
05:48 | Add user documentation for the "pragma auto_vacuum" command. (CVS 2084) (check-in: fe200eaf37 user: danielk1977 tags: trunk) | |
2004-11-09
| ||
16:13 | Have "DEFAULT CURRENT_TIME" & co. work even if SQLITE_OMIT_DATETIME_FUNCS is defined. (CVS 2083) (check-in: f81b9c1c02 user: danielk1977 tags: trunk) | |
Changes
Changes to main.mk.
︙ | ︙ | |||
367 368 369 370 371 372 373 | sed \ -e '/^#/d' \ -e 's,\\,\\\\,g' \ -e 's,",\\",g' \ -e 's,^,",' \ -e 's,$$,\\n",' \ $(TOP)/tool/spaceanal.tcl >spaceanal_tcl.h | | | 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 | sed \ -e '/^#/d' \ -e 's,\\,\\\\,g' \ -e 's,",\\",g' \ -e 's,^,",' \ -e 's,$$,\\n",' \ $(TOP)/tool/spaceanal.tcl >spaceanal_tcl.h $(TCCX) $(TCL_FLAGS) -DTCLSH=2 -DSQLITE_TEST=1 -o \ sqlite3_analyzer$(EXE) $(TESTSRC) $(TOP)/src/tclsqlite.c \ libsqlite3.a $(LIBTCL) $(THREADLIB) # Rules used to build documentation # arch.html: $(TOP)/www/arch.tcl tclsh $(TOP)/www/arch.tcl >arch.html |
︙ | ︙ | |||
434 435 436 437 438 439 440 441 442 443 444 445 446 447 | index.html: $(TOP)/www/index.tcl last_change tclsh $(TOP)/www/index.tcl >index.html lang.html: $(TOP)/www/lang.tcl tclsh $(TOP)/www/lang.tcl >lang.html lockingv3.html: $(TOP)/www/lockingv3.tcl tclsh $(TOP)/www/lockingv3.tcl >lockingv3.html oldnews.html: $(TOP)/www/oldnews.tcl tclsh $(TOP)/www/oldnews.tcl >oldnews.html omitted.html: $(TOP)/www/omitted.tcl | > > > | 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 | index.html: $(TOP)/www/index.tcl last_change tclsh $(TOP)/www/index.tcl >index.html lang.html: $(TOP)/www/lang.tcl tclsh $(TOP)/www/lang.tcl >lang.html pragma.html: $(TOP)/www/pragma.tcl tclsh $(TOP)/www/pragma.tcl >pragma.html lockingv3.html: $(TOP)/www/lockingv3.tcl tclsh $(TOP)/www/lockingv3.tcl >lockingv3.html oldnews.html: $(TOP)/www/oldnews.tcl tclsh $(TOP)/www/oldnews.tcl >oldnews.html omitted.html: $(TOP)/www/omitted.tcl |
︙ | ︙ | |||
505 506 507 508 509 510 511 512 513 514 515 516 517 518 | lang.html \ lockingv3.html \ mingw.html \ nulls.html \ oldnews.html \ omitted.html \ opcode.html \ quickstart.html \ speed.html \ sqlite.gif \ sqlite.html \ support.html \ tclsqlite.html \ vdbe.html \ | > | 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 | lang.html \ lockingv3.html \ mingw.html \ nulls.html \ oldnews.html \ omitted.html \ opcode.html \ pragma.html \ quickstart.html \ speed.html \ sqlite.gif \ sqlite.html \ support.html \ tclsqlite.html \ vdbe.html \ |
︙ | ︙ |
Changes to www/c_interface.tcl.
1 2 3 | # # Run this Tcl script to generate the sqlite.html file. # | | | 1 2 3 4 5 6 7 8 9 10 11 | # # Run this Tcl script to generate the sqlite.html file. # set rcsid {$Id: c_interface.tcl,v 1.42 2004/11/10 05:48:57 danielk1977 Exp $} source common.tcl header {The C language interface to the SQLite library} puts { <h2>The C language interface to the SQLite library</h2> <p>The SQLite library is designed to be very easy to use from a C or C++ program. This document gives an overview of the C/C++ |
︙ | ︙ | |||
132 133 134 135 136 137 138 | <p>But if the i-th parameter is NULL we will get:</p> <blockquote><pre> argv[i] == 0 </pre></blockquote> <p>The names of the columns are contained in first <i>argc</i> entries of the fourth argument. | | | | 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | <p>But if the i-th parameter is NULL we will get:</p> <blockquote><pre> argv[i] == 0 </pre></blockquote> <p>The names of the columns are contained in first <i>argc</i> entries of the fourth argument. If the <a href="pragma.html#pragma_show_datatypes">SHOW_DATATYPES</a> pragma is on (it is off by default) then the second <i>argc</i> entries in the 4th argument are the datatypes for the corresponding columns. </p> <p>If the <a href="pragma.html#pragma_empty_result_callbacks"> EMPTY_RESULT_CALLBACKS</a> pragma is set to ON and the result of a query is an empty set, then the callback is invoked once with the third parameter (argv) set to 0. In other words <blockquote><pre> argv == 0 </pre></blockquote> The second parameter (argc) |
︙ | ︙ |
Changes to www/common.tcl.
︙ | ︙ | |||
51 52 53 54 55 56 57 | </table>} set date [lrange $rcsid 3 4] if {$date!=""} { puts "<small><i>This page last modified on $date</i></small>" } puts {</body></html>} } | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | </table>} set date [lrange $rcsid 3 4] if {$date!=""} { puts "<small><i>This page last modified on $date</i></small>" } puts {</body></html>} } # The following two procs, Syntax and Section, are used to ensure # consistent formatting in the "lang.html" and "pragma.html" pages. # proc Syntax {args} { puts {<table cellpadding="10">} foreach {rule body} $args { puts "<tr><td align=\"right\" valign=\"top\">" puts "<i><font color=\"#ff3434\">$rule</font></i> ::=</td>" regsub -all < $body {%LT} body regsub -all > $body {%GT} body regsub -all %LT $body {</font></b><i><font color="#ff3434">} body regsub -all %GT $body {</font></i><b><font color="#2c2cf0">} body regsub -all {[]|[*?]} $body {</font></b>&<b><font color="#2c2cf0">} body regsub -all "\n" [string trim $body] "<br>\n" body regsub -all "\n *" $body "\n\\ \\ \\ \\ " body regsub -all {[|,.*()]} $body {<big>&</big>} body regsub -all { = } $body { <big>=</big> } body regsub -all {STAR} $body {<big>*</big>} body ## These metacharacters must be handled to undo being ## treated as SQL punctuation characters above. regsub -all {RPPLUS} $body {</font></b>)+<b><font color="#2c2cf0">} body regsub -all {LP} $body {</font></b>(<b><font color="#2c2cf0">} body regsub -all {RP} $body {</font></b>)<b><font color="#2c2cf0">} body ## Place the left-hand side of the rule in the 2nd table column. puts "<td><b><font color=\"#2c2cf0\">$body</font></b></td></tr>" } puts {</table>} } proc Section {name {label {}}} { puts "\n<hr />" if {$label!=""} { puts "<a name=\"$label\"></a>" } puts "<h1>$name</h1>\n" } |
Changes to www/docs.tcl.
1 2 3 | # This script generates the "docs.html" page that describes various # sources of documentation available for SQLite. # | | | 1 2 3 4 5 6 7 8 9 10 11 | # This script generates the "docs.html" page that describes various # sources of documentation available for SQLite. # set rcsid {$Id: docs.tcl,v 1.7 2004/11/10 05:48:57 danielk1977 Exp $} source common.tcl header {SQLite Documentation} puts { <h2>Available Documentation</h2> <table width="100%" cellpadding="5"> } |
︙ | ︙ | |||
23 24 25 26 27 28 29 30 31 32 33 34 35 36 | A very quick introduction to programming with SQLite. } doc {SQL Syntax} {lang.html} { This document describes the SQL language that is understood by SQLite. } doc {Version 2 C/C++ API} {c_interface.html} { A description of the C/C++ interface bindings for SQLite through version 2.8 } doc {SQLite Version 3} {version3.html} { A summary of of the changes between SQLite version 2.8 and SQLite version 3.0. | > > > > > | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | A very quick introduction to programming with SQLite. } doc {SQL Syntax} {lang.html} { This document describes the SQL language that is understood by SQLite. } doc {Pragma commands} {pragma.html} { This document describes SQLite performance tuning options and other special purpose database commands. } doc {Version 2 C/C++ API} {c_interface.html} { A description of the C/C++ interface bindings for SQLite through version 2.8 } doc {SQLite Version 3} {version3.html} { A summary of of the changes between SQLite version 2.8 and SQLite version 3.0. |
︙ | ︙ |
Changes to www/faq.tcl.
1 2 3 | # # Run this script to generated a faq.html output file # | | | 1 2 3 4 5 6 7 8 9 10 11 | # # Run this script to generated a faq.html output file # set rcsid {$Id: faq.tcl,v 1.27 2004/11/10 05:48:57 danielk1977 Exp $} source common.tcl header {SQLite Frequently Asked Questions</title>} set cnt 1 proc faq {question answer} { set ::faq($::cnt) [list [string trim $question] [string trim $answer]] incr ::cnt |
︙ | ︙ | |||
395 396 397 398 399 400 401 402 403 404 405 406 407 408 | run the VACUUM command (version 2.8.1 and later). VACUUM will reconstruct the database from scratch. This will leave the database with an empty free-list and a file that is minimal in size. Note, however, that the VACUUM can take some time to run (around a half second per megabyte on the Linux box where SQLite is developed) and it can use up to twice as much temporary disk space as the original file while it is running. </p> } faq { Can I use SQLite in my commercial product without paying royalties? } { <p>Yes. SQLite is in the public domain. No claim of ownership is made to any part of the code. You can do anything you want with it.</p> | > > > > | 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 | run the VACUUM command (version 2.8.1 and later). VACUUM will reconstruct the database from scratch. This will leave the database with an empty free-list and a file that is minimal in size. Note, however, that the VACUUM can take some time to run (around a half second per megabyte on the Linux box where SQLite is developed) and it can use up to twice as much temporary disk space as the original file while it is running. </p> <p>As of SQLite version 3.1, an alternative to using the VACUUM command is auto-vacuum mode, enabled using the <a href="pragma.html#pragma_auto_vacuum">auto_vacuum pragma</a>.</p> } faq { Can I use SQLite in my commercial product without paying royalties? } { <p>Yes. SQLite is in the public domain. No claim of ownership is made to any part of the code. You can do anything you want with it.</p> |
︙ | ︙ |
Changes to www/lang.tcl.
1 2 3 | # # Run this Tcl script to generate the sqlite.html file. # | | | 1 2 3 4 5 6 7 8 9 10 11 | # # Run this Tcl script to generate the sqlite.html file. # set rcsid {$Id: lang.tcl,v 1.75 2004/11/10 05:48:57 danielk1977 Exp $} source common.tcl header {Query Language Understood by SQLite} puts { <h2>SQL As Understood By SQLite</h2> <p>The SQLite library understands most of the standard SQL language. But it does <a href="omitted.html">omit some features</a> |
︙ | ︙ | |||
26 27 28 29 30 31 32 | <p>SQLite implements the follow syntax:</p> <p><ul> } foreach {section} [lsort -index 0 -dictionary { | | | | | | | | | | | | | | | | | | | | | | | | | | | > | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 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 | <p>SQLite implements the follow syntax:</p> <p><ul> } foreach {section} [lsort -index 0 -dictionary { {{CREATE TABLE} #createtable} {{CREATE INDEX} #createindex} {VACUUM #vacuum} {{DROP TABLE} #droptable} {{DROP INDEX} #dropindex} {INSERT #insert} {REPLACE #replace} {DELETE #delete} {UPDATE #update} {SELECT #select} {comment #comment} {COPY #copy} {EXPLAIN #explain} {expression #expr} {{BEGIN TRANSACTION} #transaction} {{COMMIT TRANSACTION} #transaction} {{END TRANSACTION} #transaction} {{ROLLBACK TRANSACTION} #transaction} {PRAGMA pragma.html} {{ON CONFLICT clause} #conflict} {{CREATE VIEW} #createview} {{DROP VIEW} #dropview} {{CREATE TRIGGER} #createtrigger} {{DROP TRIGGER} #droptrigger} {{ATTACH DATABASE} #attach} {{DETACH DATABASE} #detach} }] { foreach {s_title s_tag} $section {} puts "<li><a href=\"$s_tag\">$s_title</a></li>" } puts {</ul></p> <p>Details on the implementation of each command are provided in the sequel.</p> } proc Operator {name} { return "<font color=\"#2c2cf0\"><big>$name</big></font>" } proc Nonterminal {name} { return "<i><font color=\"#ff3434\">$name</font></i>" } proc Keyword {name} { return "<font color=\"#2c2cf0\">$name</font>" } proc Example {text} { puts "<blockquote><pre>$text</pre></blockquote>" } Section {ATTACH DATABASE} attach |
︙ | ︙ | |||
1268 1269 1270 1271 1272 1273 1274 | overrides any algorithm specified in a CREATE TABLE or CREATE INDEX. If no algorithm is specified anywhere, the ABORT algorithm is used.</p> } # <p>For additional information, see # <a href="conflict.html">conflict.html</a>.</p> | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 | overrides any algorithm specified in a CREATE TABLE or CREATE INDEX. If no algorithm is specified anywhere, the ABORT algorithm is used.</p> } # <p>For additional information, see # <a href="conflict.html">conflict.html</a>.</p> Section REPLACE replace Syntax {sql-statement} { REPLACE INTO [<database-name> .] <table-name> [( <column-list> )] VALUES ( <value-list> ) | REPLACE INTO [<database-name> .] <table-name> [( <column-list> )] <select-statement> } |
︙ | ︙ | |||
1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 | reloading the original database file from the copy. This eliminates free pages, aligns table data to be contiguous, and otherwise cleans up the database file structure. It is not possible to perform the same process on an attached database file.</p> <p>This command will fail if there is an active transaction. This command has no effect on an in-memory database.</p> } Section {SQLite keywords} keywords puts { <p>The following keywords are used by SQLite. Most are either reserved | > > > > | 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 | reloading the original database file from the copy. This eliminates free pages, aligns table data to be contiguous, and otherwise cleans up the database file structure. It is not possible to perform the same process on an attached database file.</p> <p>This command will fail if there is an active transaction. This command has no effect on an in-memory database.</p> <p>As of SQLite version 3.1, an alternative to using the VACUUM command is auto-vacuum mode, enabled using the <a href="pragma.html#pragma_auto_vacuum">auto_vacuum pragma</a>.</p> } Section {SQLite keywords} keywords puts { <p>The following keywords are used by SQLite. Most are either reserved |
︙ | ︙ |
Added www/pragma.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 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 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 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 | # # Run this Tcl script to generate the pragma.html file. # set rcsid {$Id: pragma.tcl,v 1.1 2004/11/10 05:48:57 danielk1977 Exp $} source common.tcl header {Pragma statements supported by SQLite} puts { <p>The <a href="#syntax">PRAGMA command</a> is a special command used to modify the operation of the SQLite library or to query the library for internal (non-table) data. The PRAGMA command is issued using the same interface as other SQLite commands (e.g. SELECT, INSERT) but is different different in the following important respects: </p> <ul> <li>Specific pragma statements may be removed and others added in future releases of SQLite. Use with caution! <li>No error messages are generated if an unknown pragma is issued. Unknown pragmas are simply ignored. This means if there is a typo in a pragma statement the library does not inform the user of the fact. <li>Some pragmas take effect during the SQL compilation stage, not the execution stage. This means if using the C-language sqlite3_compile(), sqlite3_step(), sqlite3_finalize() API (or similar in a wrapper interface), the pragma may be applied to the library during the sqlite3_compile() call. <li>The pragma command is unlikely to be compatible with any other SQL engine. </ul> <p>The available pragma's fall into three basic categories:</p> <ul> <li>Pragmas used to <a href="#schema">query the schema</a> of the current database. <li>Pragmas used to <a href="#modify">modify the operation</a> of the SQLite library in some manner, or to query for the current mode of operation. <li>Pragmas used to <a href="#debug">debug the library</a> and verify that database files are not corrupted. </ul> } Section {PRAGMA command syntax} syntax Syntax {sql-statement} { PRAGMA <name> [= <value>] | PRAGMA <function>(<arg>) } puts { <p>The pragmas that take an integer <b><i>value</i></b> also accept symbolic names. The strings "<b>on</b>", "<b>true</b>", and "<b>yes</b>" are equivalent to <b>1</b>. The strings "<b>off</b>", "<b>false</b>", and "<b>no</b>" are equivalent to <b>0</b>. These strings are case- insensitive, and do not require quotes. An unrecognized string will be treated as <b>1</b>, and will not generate an error. When the <i>value</i> is returned it is as an integer.</p> } Section {Pragmas used to modify library operation} modify puts { <ul> <a name="pragma_auto_vacuum"></a> <li><p><b>PRAGMA auto_vacuum; <br>PRAGMA auto_vacuum = </b><i>0 | 1</i><b>;</b></p> <p> Query or set the auto-vacuum flag in the database.</p> <p>Normally, when a transaction that deletes data from a database is committed, the database file remains the same size. Unused database file pages are marked as such and reused later on, when data is inserted into the database. In this mode the <a href="lang.html#vacuum">VACUUM</a> command is used to reclaim unused space.</p> <p>When the auto-vacuum flag is set, the database file shrinks when a transaction that deletes data is committed (The VACUUM command is not useful in a database with the auto-vacuum flag set). To support this functionality the database stores extra information internally, resulting in slightly larger database files than would otherwise be possible.</p> <p>It is only possible to modify the value of the auto-vacuum flag before any tables have been created in the database. No error message is returned if an attempt to modify the auto-vacuum flag is made after one or more tables have been created. </p></li> <a name="pragma_cache_size"></a> <li><p><b>PRAGMA cache_size; <br>PRAGMA cache_size = </b><i>Number-of-pages</i><b>;</b></p> <p>Query or change the maximum number of database disk pages that SQLite will hold in memory at once. Each page uses about 1.5K of memory. The default cache size is 2000. If you are doing UPDATEs or DELETEs that change many rows of a database and you do not mind if SQLite uses more memory, you can increase the cache size for a possible speed improvement.</p> <p>When you change the cache size using the cache_size pragma, the change only endures for the current session. The cache size reverts to the default value when the database is closed and reopened. Use the <a href="#pragma_default_cache_size"><b>default_cache_size</b></a> pragma to check the cache size permanently.</p></li> <a name="pragma_default_cache_size"></a> <li><p><b>PRAGMA default_cache_size; <br>PRAGMA default_cache_size = </b><i>Number-of-pages</i><b>;</b></p> <p>Query or change the maximum number of database disk pages that SQLite will hold in memory at once. Each page uses 1K on disk and about 1.5K in memory. This pragma works like the <a href="#pragma_cache_size"><b>cache_size</b></a> pragma with the additional feature that it changes the cache size persistently. With this pragma, you can set the cache size once and that setting is retained and reused every time you reopen the database.</p></li> <a name="pragma_default_synchronous"></a> <li><p><b>PRAGMA default_synchronous; <br>PRAGMA default_synchronous = FULL; </b>(2)<b> <br>PRAGMA default_synchronous = NORMAL; </b>(1)<b> <br>PRAGMA default_synchronous = OFF; </b>(0)</p> <p>Query or change the setting of the "synchronous" flag in the database. The first (query) form will return the setting as an integer. When synchronous is FULL (2), the SQLite database engine will pause at critical moments to make sure that data has actually been written to the disk surface before continuing. This ensures that if the operating system crashes or if there is a power failure, the database will be uncorrupted after rebooting. FULL synchronous is very safe, but it is also slow. When synchronous is NORMAL (1, the default), the SQLite database engine will still pause at the most critical moments, but less often than in FULL mode. There is a very small (though non-zero) chance that a power failure at just the wrong time could corrupt the database in NORMAL mode. But in practice, you are more likely to suffer a catastrophic disk failure or some other unrecoverable hardware fault. So NORMAL is the default mode. With synchronous OFF (0), SQLite continues without pausing as soon as it has handed data off to the operating system. If the application running SQLite crashes, the data will be safe, but the database might become corrupted if the operating system crashes or the computer loses power before that data has been written to the disk surface. On the other hand, some operations are as much as 50 or more times faster with synchronous OFF. </p> <p>This pragma changes the synchronous mode persistently. Once changed, the mode stays as set even if the database is closed and reopened. The <a href="#pragma_synchronous"><b>synchronous</b></a> pragma does the same thing but only applies the setting to the current session. </p></li> <a name="pragma_default_temp_store"></a> <li><p><b>PRAGMA default_temp_store; <br>PRAGMA default_temp_store = DEFAULT; </b>(0)<b> <br>PRAGMA default_temp_store = MEMORY; </b>(2)<b> <br>PRAGMA default_temp_store = FILE;</b> (1)</p> <p>Query or change the setting of the "<b>temp_store</b>" flag stored in the database. When temp_store is DEFAULT (0), the compile-time value of the symbol TEMP_STORE is used for the temporary database. When temp_store is MEMORY (2), an in-memory database is used. When temp_store is FILE (1), a temporary database file on disk will be used. It is possible for the library compile-time symbol TEMP_STORE to override this setting. The following table summarizes this:</p> <table cellpadding="2"> <tr><th>TEMP_STORE</th><th>temp_store</th><th>temp database location</th></tr> <tr><td align="center">0</td><td align="center"><em>any</em></td><td align="center">file</td></tr> <tr><td align="center">1</td><td align="center">0</td><td align="center">file</td></tr> <tr><td align="center">1</td><td align="center">1</td><td align="center">file</td></tr> <tr><td align="center">1</td><td align="center">2</td><td align="center">memory</td></tr> <tr><td align="center">2</td><td align="center">0</td><td align="center">memory</td></tr> <tr><td align="center">2</td><td align="center">1</td><td align="center">file</td></tr> <tr><td align="center">2</td><td align="center">2</td><td align="center">memory</td></tr> <tr><td align="center">3</td><td align="center"><em>any</em></td><td align="center">memory</td></tr> </table> <p>This pragma changes the temp_store mode for whenever the database is opened in the future. The temp_store mode for the current session is unchanged. Use the <a href="#pragma_temp_store"><b>temp_store</b></a> pragma to change the temp_store mode for the current session.</p></li> <a name="pragma_synchronous"></a> <li><p><b>PRAGMA synchronous; <br>PRAGMA synchronous = FULL; </b>(2)<b> <br>PRAGMA synchronous = NORMAL; </b>(1)<b> <br>PRAGMA synchronous = OFF;</b> (0)</p> <p>Query or change the setting of the "synchronous" flag affecting the database for the duration of the current database connection. The synchronous flag reverts to its default value when the database is closed and reopened. For additional information on the synchronous flag, see the description of the <a href="#pragma_default_synchronous"> <b>default_synchronous</b></a> pragma.</p> </li> <a name="pragma_temp_store"></a> <li><p><b>PRAGMA temp_store; <br>PRAGMA temp_store = DEFAULT; </b>(0)<b> <br>PRAGMA temp_store = MEMORY; </b>(2)<b> <br>PRAGMA temp_store = FILE;</b> (1)</p> <p>Query or change the setting of the "temp_store" flag affecting the database for the duration of the current database connection. The temp_store flag reverts to its default value when the database is closed and reopened. For additional information on the temp_store flag, see the description of the <a href="#pragma_default_temp_store"> <b>default_temp_store</b></a> pragma. Note that it is possible for the library compile-time options to override this setting. </p> <p>When the temp_store setting is changed, all existing temporary tables, indices, triggers, and viewers are immediately deleted. </p> </li> </ul> } Section {Pragma's used to query the database schema} schema puts { <ul> <li><p><b>PRAGMA database_list;</b></p> <p>For each open database, invoke the callback function once with information about that database. Arguments include the index and the name the database was attached with. The first row will be for the main database. The second row will be for the database used to store temporary tables.</p></li> <li><p><b>PRAGMA foreign_key_list(</b><i>table-name</i><b>);</b></p> <p>For each foreign key that references a column in the argument table, invoke the callback function with information about that foreign key. The callback function will be invoked once for each column in each foreign key.</p></li> <li><p><b>PRAGMA index_info(</b><i>index-name</i><b>);</b></p> <p>For each column that the named index references, invoke the callback function once with information about that column, including the column name, and the column number.</p></li> <li><p><b>PRAGMA index_list(</b><i>table-name</i><b>);</b></p> <p>For each index on the named table, invoke the callback function once with information about that index. Arguments include the index name and a flag to indicate whether or not the index must be unique.</p></li> <li><p><b>PRAGMA table_info(</b><i>table-name</i><b>);</b></p> <p>For each column in the named table, invoke the callback function once with information about that column, including the column name, data type, whether or not the column can be NULL, and the default value for the column.</p></li> </ul> } Section {Pragma's used to debug the library} debug puts { <ul> <li><p><b>PRAGMA integrity_check;</b></p> <p>The command does an integrity check of the entire database. It looks for out-of-order records, missing pages, malformed records, and corrupt indices. If any problems are found, then a single string is returned which is a description of all problems. If everything is in order, "ok" is returned.</p></li> <li><p><b>PRAGMA parser_trace = ON; </b>(1)<b> <br>PRAGMA parser_trace = OFF;</b> (0)</p> <p>Turn tracing of the SQL parser inside of the SQLite library on and off. This is used for debugging. This only works if the library is compiled without the NDEBUG macro. </p></li> <a name="pragma_vdbe_trace"></a> <li><p><b>PRAGMA vdbe_trace = ON; </b>(1)<b> <br>PRAGMA vdbe_trace = OFF;</b> (0)</p> <p>Turn tracing of the virtual database engine inside of the SQLite library on and off. This is used for debugging. See the <a href="vdbe.html#trace">VDBE documentation</a> for more information.</p></li> </ul> } |
Changes to www/vdbe.tcl.
1 2 3 | # # Run this Tcl script to generate the vdbe.html file. # | | | 1 2 3 4 5 6 7 8 9 10 11 | # # Run this Tcl script to generate the vdbe.html file. # set rcsid {$Id: vdbe.tcl,v 1.13 2004/11/10 05:48:57 danielk1977 Exp $} source common.tcl header {The Virtual Database Engine of SQLite} puts { <h2>The Virtual Database Engine of SQLite</h2> <blockquote><b> This document describes the virtual machine used in SQLite version 2.8.0. |
︙ | ︙ | |||
299 300 301 302 303 304 305 | program, which the VDBE appends when it prepares a program to run.</p> <a name="trace"> <h2>Tracing VDBE Program Execution</h2> <p>If the SQLite library is compiled without the NDEBUG preprocessor | | | 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 | program, which the VDBE appends when it prepares a program to run.</p> <a name="trace"> <h2>Tracing VDBE Program Execution</h2> <p>If the SQLite library is compiled without the NDEBUG preprocessor macro, then the PRAGMA <a href="pragma.html#pragma_vdbe_trace">vdbe_trace </a> causes the VDBE to trace the execution of programs. Though this feature was originally intended for testing and debugging, it can also be useful in learning about how the VDBE operates. Use "<tt>PRAGMA vdbe_trace=ON;</tt>" to turn tracing on and "<tt>PRAGMA vdbe_trace=OFF</tt>" to turn tracing back off. Like this:</p> } |
︙ | ︙ |