Documentation Source Text

Hex Artifact Content
Login

Artifact dd01779088290c06bb2e83a6c8ed68f4cc3dd8ba:


0000: 3c 74 69 74 6c 65 3e 53 51 4c 69 74 65 20 44 6f  <title>SQLite Do
0010: 63 75 6d 65 6e 74 61 74 69 6f 6e 3c 2f 74 69 74  cumentation</tit
0020: 6c 65 3e 0a 0a 3c 68 31 20 61 6c 69 67 6e 3d 22  le>..<h1 align="
0030: 63 65 6e 74 65 72 22 3e 43 61 74 65 67 6f 72 69  center">Categori
0040: 63 61 6c 20 49 6e 64 65 78 20 4f 66 20 53 51 4c  cal Index Of SQL
0050: 69 74 65 20 44 6f 63 75 6d 65 6e 74 73 3c 2f 68  ite Documents</h
0060: 31 3e 0a 0a 3c 74 61 62 6c 65 20 77 69 64 74 68  1>..<table width
0070: 3d 22 31 30 30 25 22 20 63 65 6c 6c 70 61 64 64  ="100%" cellpadd
0080: 69 6e 67 3d 22 35 22 3e 0a 0a 3c 74 63 6c 3e 0a  ing="5">..<tcl>.
0090: 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b 63 61 74  hd_keywords {cat
00a0: 65 67 6f 72 69 63 61 6c 20 6c 69 73 74 69 6e 67  egorical listing
00b0: 20 6f 66 20 53 51 4c 69 74 65 20 64 6f 63 75 6d   of SQLite docum
00c0: 65 6e 74 73 7d 0a 70 72 6f 63 20 64 6f 63 20 7b  ents}.proc doc {
00d0: 6e 61 6d 65 20 75 72 6c 20 64 65 73 63 7d 20 7b  name url desc} {
00e0: 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c 74 72 3e  .  hd_puts {<tr>
00f0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
0100: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 7d   align="right">}
0110: 0a 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b  .  regsub -all {
0120: 20 2b 7d 20 24 6e 61 6d 65 20 7b 5c 26 6e 62 73   +} $name {\&nbs
0130: 70 3b 7d 20 6e 61 6d 65 0a 20 20 68 64 5f 70 75  p;} name.  hd_pu
0140: 74 73 20 22 3c 61 20 68 72 65 66 3d 5c 22 24 75  ts "<a href=\"$u
0150: 72 6c 5c 22 3e 24 6e 61 6d 65 3c 2f 61 3e 3c 2f  rl\">$name</a></
0160: 74 64 3e 22 0a 20 20 68 64 5f 70 75 74 73 20 7b  td>".  hd_puts {
0170: 3c 74 64 20 77 69 64 74 68 3d 22 31 30 22 3e 3c  <td width="10"><
0180: 2f 74 64 3e 7d 0a 20 20 68 64 5f 70 75 74 73 20  /td>}.  hd_puts 
0190: 7b 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  {<td valign="top
01a0: 22 20 61 6c 69 67 6e 3d 22 6c 65 66 74 22 3e 7d  " align="left">}
01b0: 0a 20 20 68 64 5f 72 65 73 6f 6c 76 65 20 24 64  .  hd_resolve $d
01c0: 65 73 63 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c  esc.  hd_puts {<
01d0: 2f 74 64 3e 3c 2f 74 72 3e 7d 0a 7d 0a 0a 70 72  /td></tr>}.}..pr
01e0: 6f 63 20 68 65 61 64 69 6e 67 20 7b 74 65 78 74  oc heading {text
01f0: 20 7b 63 61 70 74 69 6f 6e 20 7b 7d 7d 7d 20 7b   {caption {}}} {
0200: 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c 74 72 3e  .  hd_puts {<tr>
0210: 3c 74 64 20 63 6f 6c 73 70 61 6e 3d 33 20 73 74  <td colspan=3 st
0220: 79 6c 65 3d 22 70 61 64 64 69 6e 67 3a 20 33 65  yle="padding: 3e
0230: 78 20 30 20 32 65 78 20 30 22 3e 7d 0a 20 20 68  x 0 2ex 0">}.  h
0240: 64 5f 70 75 74 73 20 22 3c 62 3e 24 74 65 78 74  d_puts "<b>$text
0250: 3c 2f 62 3e 22 0a 20 20 69 66 20 7b 24 63 61 70  </b>".  if {$cap
0260: 74 69 6f 6e 20 6e 65 20 22 22 7d 20 7b 0a 20 20  tion ne ""} {.  
0270: 20 20 68 64 5f 70 75 74 73 20 7b 3c 62 72 20 2f    hd_puts {<br /
0280: 3e 7d 0a 20 20 20 20 68 64 5f 70 75 74 73 20 22  >}.    hd_puts "
0290: 24 63 61 70 74 69 6f 6e 22 0a 20 20 7d 0a 7d 0a  $caption".  }.}.
02a0: 0a 68 65 61 64 69 6e 67 20 7b 4f 76 65 72 76 69  .heading {Overvi
02b0: 65 77 20 44 6f 63 75 6d 65 6e 74 73 7d 0a 0a 64  ew Documents}..d
02c0: 6f 63 20 7b 41 62 6f 75 74 20 53 51 4c 69 74 65  oc {About SQLite
02d0: 7d 20 7b 61 62 6f 75 74 2e 68 74 6d 6c 7d 20 7b  } {about.html} {
02e0: 0a 20 20 41 20 68 69 67 68 2d 6c 65 76 65 6c 20  .  A high-level 
02f0: 6f 76 65 72 76 69 65 77 20 6f 66 20 77 68 61 74  overview of what
0300: 20 53 51 4c 69 74 65 20 69 73 20 61 6e 64 20 77   SQLite is and w
0310: 68 79 20 79 6f 75 20 6d 69 67 68 74 20 62 65 0a  hy you might be.
0320: 20 20 69 6e 74 65 72 65 73 74 65 64 20 69 6e 20    interested in 
0330: 75 73 69 6e 67 20 69 74 2e 0a 7d 0a 0a 64 6f 63  using it..}..doc
0340: 20 7b 41 70 70 72 6f 70 72 69 61 74 65 20 55 73   {Appropriate Us
0350: 65 73 20 46 6f 72 20 53 51 4c 69 74 65 7d 20 7b  es For SQLite} {
0360: 77 68 65 6e 74 6f 75 73 65 2e 68 74 6d 6c 7d 20  whentouse.html} 
0370: 7b 0a 20 20 54 68 69 73 20 64 6f 63 75 6d 65 6e  {.  This documen
0380: 74 20 64 65 73 63 72 69 62 65 73 20 73 69 74 75  t describes situ
0390: 61 74 69 6f 6e 73 20 77 68 65 72 65 20 53 51 4c  ations where SQL
03a0: 69 74 65 20 69 73 20 61 6e 20 61 70 70 72 6f 70  ite is an approp
03b0: 72 69 61 74 65 0a 20 20 64 61 74 61 62 61 73 65  riate.  database
03c0: 20 65 6e 67 69 6e 65 20 74 6f 20 75 73 65 20 76   engine to use v
03d0: 65 72 73 75 73 20 73 69 74 75 61 74 69 6f 6e 73  ersus situations
03e0: 20 77 68 65 72 65 20 61 20 63 6c 69 65 6e 74 2f   where a client/
03f0: 73 65 72 76 65 72 0a 20 20 64 61 74 61 62 61 73  server.  databas
0400: 65 20 65 6e 67 69 6e 65 20 6d 69 67 68 74 20 62  e engine might b
0410: 65 20 61 20 62 65 74 74 65 72 20 63 68 6f 69 63  e a better choic
0420: 65 2e 0a 7d 0a 64 6f 63 20 7b 44 69 73 74 69 6e  e..}.doc {Distin
0430: 63 74 69 76 65 20 46 65 61 74 75 72 65 73 7d 20  ctive Features} 
0440: 7b 64 69 66 66 65 72 65 6e 74 2e 68 74 6d 6c 7d  {different.html}
0450: 20 7b 0a 20 20 54 68 69 73 20 64 6f 63 75 6d 65   {.  This docume
0460: 6e 74 20 65 6e 75 6d 65 72 61 74 65 73 20 61 6e  nt enumerates an
0470: 64 20 64 65 73 63 72 69 62 65 73 20 73 6f 6d 65  d describes some
0480: 20 6f 66 20 74 68 65 20 66 65 61 74 75 72 65 73   of the features
0490: 20 6f 66 0a 20 20 53 51 4c 69 74 65 20 74 68 61   of.  SQLite tha
04a0: 74 20 6d 61 6b 65 20 69 74 20 64 69 66 66 65 72  t make it differ
04b0: 65 6e 74 20 66 72 6f 6d 20 6f 74 68 65 72 20 53  ent from other S
04c0: 51 4c 20 64 61 74 61 62 61 73 65 20 65 6e 67 69  QL database engi
04d0: 6e 65 73 2e 0a 7d 0a 64 6f 63 20 7b 48 6f 77 20  nes..}.doc {How 
04e0: 53 51 4c 69 74 65 20 49 73 20 54 65 73 74 65 64  SQLite Is Tested
04f0: 7d 20 7b 74 65 73 74 69 6e 67 2e 68 74 6d 6c 7d  } {testing.html}
0500: 20 7b 0a 20 20 54 68 65 20 72 65 6c 69 61 62 69   {.  The reliabi
0510: 6c 69 74 79 20 61 6e 64 20 72 6f 62 75 73 74 6e  lity and robustn
0520: 65 73 73 20 6f 66 20 53 51 4c 69 74 65 20 69 73  ess of SQLite is
0530: 20 61 63 68 69 65 76 65 64 20 69 6e 20 6c 61 72   achieved in lar
0540: 67 65 20 70 61 72 74 0a 20 20 62 79 20 74 68 6f  ge part.  by tho
0550: 72 6f 75 67 68 20 61 6e 64 20 63 61 72 65 66 75  rough and carefu
0560: 6c 20 74 65 73 74 69 6e 67 2e 20 20 54 68 69 73  l testing.  This
0570: 20 64 6f 63 75 6d 65 6e 74 20 69 64 65 6e 74 69   document identi
0580: 66 69 65 73 20 74 68 65 0a 20 20 6d 61 6e 79 20  fies the.  many 
0590: 74 65 73 74 73 20 74 68 61 74 20 6f 63 63 75 72  tests that occur
05a0: 20 62 65 66 6f 72 65 20 65 76 65 72 79 20 72 65   before every re
05b0: 6c 65 61 73 65 20 6f 66 20 53 51 4c 69 74 65 2e  lease of SQLite.
05c0: 0a 7d 0a 64 6f 63 20 7b 43 6f 70 79 72 69 67 68  .}.doc {Copyrigh
05d0: 74 7d 20 7b 63 6f 70 79 72 69 67 68 74 2e 68 74  t} {copyright.ht
05e0: 6d 6c 7d 20 7b 0a 20 20 53 51 4c 69 74 65 20 69  ml} {.  SQLite i
05f0: 73 20 69 6e 20 74 68 65 20 70 75 62 6c 69 63 20  s in the public 
0600: 64 6f 6d 61 69 6e 2e 20 20 54 68 69 73 20 64 6f  domain.  This do
0610: 63 75 6d 65 6e 74 20 64 65 73 63 72 69 62 65 73  cument describes
0620: 20 77 68 61 74 20 74 68 61 74 20 6d 65 61 6e 73   what that means
0630: 0a 20 20 61 6e 64 20 74 68 65 20 69 6d 70 6c 69  .  and the impli
0640: 63 61 74 69 6f 6e 73 20 66 6f 72 20 63 6f 6e 74  cations for cont
0650: 72 69 62 75 74 6f 72 73 2e 0a 7d 0a 64 6f 63 20  ributors..}.doc 
0660: 7b 46 72 65 71 75 65 6e 74 6c 79 20 41 73 6b 65  {Frequently Aske
0670: 64 20 51 75 65 73 74 69 6f 6e 73 7d 20 7b 66 61  d Questions} {fa
0680: 71 2e 68 74 6d 6c 7d 20 7b 0a 20 20 54 68 65 20  q.html} {.  The 
0690: 74 69 74 6c 65 20 6f 66 20 74 68 65 20 64 6f 63  title of the doc
06a0: 75 6d 65 6e 74 20 73 61 79 73 20 61 6c 6c 2e 2e  ument says all..
06b0: 2e 0a 7d 0a 64 6f 63 20 7b 42 6f 6f 6b 73 20 41  ..}.doc {Books A
06c0: 62 6f 75 74 20 53 51 4c 69 74 65 7d 20 7b 62 6f  bout SQLite} {bo
06d0: 6f 6b 73 2e 68 74 6d 6c 7d 20 7b 0a 20 20 41 20  oks.html} {.  A 
06e0: 6c 69 73 74 20 6f 66 20 69 6e 64 65 70 65 6e 64  list of independ
06f0: 65 6e 74 6c 79 20 77 72 69 74 74 65 6e 20 62 6f  ently written bo
0700: 6f 6b 73 20 61 62 6f 75 74 20 53 51 4c 69 74 65  oks about SQLite
0710: 2e 0a 7d 0a 64 6f 63 20 7b 41 6c 70 68 61 62 65  ..}.doc {Alphabe
0720: 74 69 63 61 6c 20 4c 69 73 74 69 6e 67 20 4f 66  tical Listing Of
0730: 20 44 6f 63 75 6d 65 6e 74 73 7d 20 7b 64 6f 63   Documents} {doc
0740: 6c 69 73 74 2e 68 74 6d 6c 7d 20 7b 0a 20 20 41  list.html} {.  A
0750: 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20 74 69 74   list of all tit
0760: 6c 65 64 20 70 61 67 65 73 20 6f 6e 20 74 68 69  led pages on thi
0770: 73 20 77 65 62 73 69 74 65 2c 20 73 6f 72 74 65  s website, sorte
0780: 64 20 62 79 20 74 69 74 6c 65 2e 0a 7d 0a 64 6f  d by title..}.do
0790: 63 20 7b 57 65 62 73 69 74 65 20 4b 65 79 77 6f  c {Website Keywo
07a0: 72 64 20 49 6e 64 65 78 7d 20 7b 6b 65 79 77 6f  rd Index} {keywo
07b0: 72 64 5f 69 6e 64 65 78 2e 68 74 6d 6c 7d 20 7b  rd_index.html} {
07c0: 0a 20 20 41 20 63 72 6f 73 73 2d 72 65 66 65 72  .  A cross-refer
07d0: 65 6e 63 65 20 66 72 6f 6d 20 6b 65 79 77 6f 72  ence from keywor
07e0: 64 73 20 74 6f 20 76 61 72 69 6f 75 73 20 70 61  ds to various pa
07f0: 67 65 73 20 77 69 74 68 69 6e 20 74 68 69 73 20  ges within this 
0800: 77 65 62 73 69 74 65 2e 0a 7d 0a 64 6f 63 20 7b  website..}.doc {
0810: 50 65 72 6d 75 74 65 64 20 54 69 74 6c 65 20 49  Permuted Title I
0820: 6e 64 65 78 7d 20 7b 73 69 74 65 6d 61 70 2e 68  ndex} {sitemap.h
0830: 74 6d 6c 23 70 69 6e 64 65 78 7d 20 7b 0a 20 20  tml#pindex} {.  
0840: 41 6c 73 6f 20 6b 6e 6f 77 6e 20 61 73 20 61 20  Also known as a 
0850: 22 6b 65 79 77 6f 72 64 20 69 6e 20 63 6f 6e 74  "keyword in cont
0860: 65 78 74 22 20 6f 72 20 22 4b 57 49 43 22 20 69  ext" or "KWIC" i
0870: 6e 64 65 78 20 6f 72 20 61 73 20 61 20 63 6f 6e  ndex or as a con
0880: 63 6f 72 64 61 6e 63 65 2c 0a 20 20 74 68 69 73  cordance,.  this
0890: 20 64 6f 63 75 6d 65 6e 74 20 69 73 20 61 20 6c   document is a l
08a0: 69 73 74 69 6e 67 20 6f 66 20 61 6c 6c 20 6f 74  isting of all ot
08b0: 68 65 72 20 64 6f 63 75 6d 65 6e 74 73 20 73 6f  her documents so
08c0: 72 74 65 64 20 62 79 20 6b 65 79 77 6f 72 64 2e  rted by keyword.
08d0: 0a 7d 0a 0a 0a 68 65 61 64 69 6e 67 20 7b 53 51  .}...heading {SQ
08e0: 4c 69 74 65 20 50 72 6f 67 72 61 6d 6d 69 6e 67  Lite Programming
08f0: 20 49 6e 74 65 72 66 61 63 65 73 7d 20 7b 0a 20   Interfaces} {. 
0900: 20 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 64   Documentation d
0910: 65 73 63 72 69 62 69 6e 67 20 74 68 65 20 41 50  escribing the AP
0920: 49 73 20 75 73 65 64 20 74 6f 20 70 72 6f 67 72  Is used to progr
0930: 61 6d 20 53 51 4c 69 74 65 2c 20 61 6e 64 20 74  am SQLite, and t
0940: 68 65 20 53 51 4c 0a 20 20 64 69 61 6c 65 63 74  he SQL.  dialect
0950: 20 74 68 61 74 20 69 74 20 69 6e 74 65 72 70 72   that it interpr
0960: 65 74 73 2e 0a 7d 0a 0a 64 6f 63 20 7b 53 51 4c  ets..}..doc {SQL
0970: 69 74 65 20 49 6e 20 35 20 4d 69 6e 75 74 65 73  ite In 5 Minutes
0980: 20 4f 72 20 4c 65 73 73 7d 20 7b 71 75 69 63 6b   Or Less} {quick
0990: 73 74 61 72 74 2e 68 74 6d 6c 7d 20 7b 0a 20 20  start.html} {.  
09a0: 41 20 76 65 72 79 20 71 75 69 63 6b 20 69 6e 74  A very quick int
09b0: 72 6f 64 75 63 74 69 6f 6e 20 74 6f 20 70 72 6f  roduction to pro
09c0: 67 72 61 6d 6d 69 6e 67 20 77 69 74 68 20 53 51  gramming with SQ
09d0: 4c 69 74 65 2e 0a 7d 0a 64 6f 63 20 7b 49 6e 74  Lite..}.doc {Int
09e0: 72 6f 64 75 63 74 69 6f 6e 20 74 6f 20 74 68 65  roduction to the
09f0: 20 43 2f 43 2b 2b 20 41 50 49 20 7d 20 7b 63 69   C/C++ API } {ci
0a00: 6e 74 72 6f 2e 68 74 6d 6c 7d 20 7b 0a 20 20 54  ntro.html} {.  T
0a10: 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 69 6e 74  his document int
0a20: 72 6f 64 75 63 65 73 20 74 68 65 20 43 2f 43 2b  roduces the C/C+
0a30: 2b 20 41 50 49 2e 20 55 73 65 72 73 20 73 68 6f  + API. Users sho
0a40: 75 6c 64 20 72 65 61 64 20 74 68 69 73 20 64 6f  uld read this do
0a50: 63 75 6d 65 6e 74 20 0a 20 20 62 65 66 6f 72 65  cument .  before
0a60: 20 74 68 65 20 43 2f 43 2b 2b 20 41 50 49 20 52   the C/C++ API R
0a70: 65 66 65 72 65 6e 63 65 20 47 75 69 64 65 20 6c  eference Guide l
0a80: 69 6e 6b 65 64 20 62 65 6c 6f 77 2e 0a 7d 0a 64  inked below..}.d
0a90: 6f 63 20 7b 48 6f 77 20 54 6f 20 43 6f 6d 70 69  oc {How To Compi
0aa0: 6c 65 20 53 51 4c 69 74 65 7d 20 7b 68 6f 77 74  le SQLite} {howt
0ab0: 6f 63 6f 6d 70 69 6c 65 2e 68 74 6d 6c 7d 20 7b  ocompile.html} {
0ac0: 0a 20 20 49 6e 73 74 72 75 63 74 69 6f 6e 73 20  .  Instructions 
0ad0: 61 6e 64 20 68 69 6e 74 73 20 66 6f 72 20 63 6f  and hints for co
0ae0: 6d 70 69 6c 69 6e 67 20 53 51 4c 69 74 65 20 43  mpiling SQLite C
0af0: 20 63 6f 64 65 20 61 6e 64 20 69 6e 74 65 67 72   code and integr
0b00: 61 74 69 6e 67 0a 20 20 74 68 61 74 20 63 6f 64  ating.  that cod
0b10: 65 20 77 69 74 68 20 79 6f 75 72 20 6f 77 6e 20  e with your own 
0b20: 61 70 70 6c 69 63 61 74 69 6f 6e 2e 0a 7d 0a 64  application..}.d
0b30: 6f 63 20 7b 43 2f 43 2b 2b 20 41 50 49 20 52 65  oc {C/C++ API Re
0b40: 66 65 72 65 6e 63 65 7d 20 7b 63 33 72 65 66 2f  ference} {c3ref/
0b50: 69 6e 74 72 6f 2e 68 74 6d 6c 7d 20 7b 0a 20 20  intro.html} {.  
0b60: 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 64 65  This document de
0b70: 73 63 72 69 62 65 73 20 65 61 63 68 20 41 50 49  scribes each API
0b80: 20 66 75 6e 63 74 69 6f 6e 20 73 65 70 61 72 61   function separa
0b90: 74 65 6c 79 2e 0a 7d 0a 64 6f 63 20 7b 52 65 73  tely..}.doc {Res
0ba0: 75 6c 74 20 43 6f 64 65 73 7d 20 7b 72 65 73 63  ult Codes} {resc
0bb0: 6f 64 65 2e 68 74 6d 6c 7d 20 7b 0a 20 20 41 20  ode.html} {.  A 
0bc0: 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74  description of t
0bd0: 68 65 20 6d 65 61 6e 69 6e 67 73 20 6f 66 20 74  he meanings of t
0be0: 68 65 20 6e 75 6d 65 72 69 63 20 72 65 73 75 6c  he numeric resul
0bf0: 74 20 63 6f 64 65 73 0a 20 20 72 65 74 75 72 6e  t codes.  return
0c00: 65 64 20 62 79 20 76 61 72 69 6f 75 73 20 43 2f  ed by various C/
0c10: 43 2b 2b 20 69 6e 74 65 72 66 61 63 65 73 2e 0a  C++ interfaces..
0c20: 7d 0a 64 6f 63 20 7b 54 63 6c 20 41 50 49 7d 20  }.doc {Tcl API} 
0c30: 7b 74 63 6c 73 71 6c 69 74 65 2e 68 74 6d 6c 7d  {tclsqlite.html}
0c40: 20 7b 0a 20 20 41 20 64 65 73 63 72 69 70 74 69   {.  A descripti
0c50: 6f 6e 20 6f 66 20 74 68 65 20 54 43 4c 20 69 6e  on of the TCL in
0c60: 74 65 72 66 61 63 65 20 62 69 6e 64 69 6e 67 73  terface bindings
0c70: 20 66 6f 72 20 53 51 4c 69 74 65 2e 0a 7d 0a 64   for SQLite..}.d
0c80: 6f 63 20 7b 53 51 4c 20 53 79 6e 74 61 78 7d 20  oc {SQL Syntax} 
0c90: 7b 6c 61 6e 67 2e 68 74 6d 6c 7d 20 7b 0a 20 20  {lang.html} {.  
0ca0: 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 64 65  This document de
0cb0: 73 63 72 69 62 65 73 20 74 68 65 20 53 51 4c 20  scribes the SQL 
0cc0: 6c 61 6e 67 75 61 67 65 20 74 68 61 74 20 69 73  language that is
0cd0: 20 75 6e 64 65 72 73 74 6f 6f 64 20 62 79 0a 20   understood by. 
0ce0: 20 53 51 4c 69 74 65 2e 20 20 0a 7d 0a 64 6f 63   SQLite.  .}.doc
0cf0: 20 7b 50 72 61 67 6d 61 20 63 6f 6d 6d 61 6e 64   {Pragma command
0d00: 73 7d 20 7b 70 72 61 67 6d 61 2e 68 74 6d 6c 7d  s} {pragma.html}
0d10: 20 7b 0a 20 20 54 68 69 73 20 64 6f 63 75 6d 65   {.  This docume
0d20: 6e 74 20 64 65 73 63 72 69 62 65 73 20 53 51 4c  nt describes SQL
0d30: 69 74 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 20  ite performance 
0d40: 74 75 6e 69 6e 67 20 6f 70 74 69 6f 6e 73 20 61  tuning options a
0d50: 6e 64 20 6f 74 68 65 72 20 0a 20 20 73 70 65 63  nd other .  spec
0d60: 69 61 6c 20 70 75 72 70 6f 73 65 20 64 61 74 61  ial purpose data
0d70: 62 61 73 65 20 63 6f 6d 6d 61 6e 64 73 2e 0a 7d  base commands..}
0d80: 0a 64 6f 63 20 7b 44 61 74 61 54 79 70 65 73 7d  .doc {DataTypes}
0d90: 20 7b 64 61 74 61 74 79 70 65 33 2e 68 74 6d 6c   {datatype3.html
0da0: 7d 20 7b 0a 20 20 53 51 4c 69 74 65 20 76 65 72  } {.  SQLite ver
0db0: 73 69 6f 6e 20 33 20 69 6e 74 72 6f 64 75 63 65  sion 3 introduce
0dc0: 73 20 74 68 65 20 63 6f 6e 63 65 70 74 20 6f 66  s the concept of
0dd0: 20 6d 61 6e 69 66 65 73 74 20 74 79 70 69 6e 67   manifest typing
0de0: 2c 20 77 68 65 72 65 20 74 68 65 0a 20 20 74 79  , where the.  ty
0df0: 70 65 20 6f 66 20 61 20 76 61 6c 75 65 20 69 73  pe of a value is
0e00: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
0e10: 20 74 68 65 20 76 61 6c 75 65 20 69 74 73 65 6c   the value itsel
0e20: 66 2c 20 6e 6f 74 20 74 68 65 20 63 6f 6c 75 6d  f, not the colum
0e30: 6e 20 74 68 61 74 0a 20 20 69 74 20 69 73 20 73  n that.  it is s
0e40: 74 6f 72 65 64 20 69 6e 2e 0a 20 20 54 68 69 73  tored in..  This
0e50: 20 70 61 67 65 20 64 65 73 63 72 69 62 65 73 20   page describes 
0e60: 64 61 74 61 20 74 79 70 69 6e 67 20 66 6f 72 20  data typing for 
0e70: 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33  SQLite version 3
0e80: 20 69 6e 20 66 75 72 74 68 65 72 20 64 65 74 61   in further deta
0e90: 69 6c 2e 0a 7d 0a 0a 68 65 61 64 69 6e 67 20 7b  il..}..heading {
0ea0: 53 51 4c 69 74 65 20 46 65 61 74 75 72 65 73 20  SQLite Features 
0eb0: 61 6e 64 20 45 78 74 65 6e 73 69 6f 6e 73 7d 20  and Extensions} 
0ec0: 7b 0a 20 20 50 61 67 65 73 20 64 65 73 63 72 69  {.  Pages descri
0ed0: 62 69 6e 67 20 73 70 65 63 69 66 69 63 20 66 65  bing specific fe
0ee0: 61 74 75 72 65 73 20 6f 72 20 65 78 74 65 6e 73  atures or extens
0ef0: 69 6f 6e 20 6d 6f 64 75 6c 65 73 20 6f 66 20 53  ion modules of S
0f00: 51 4c 69 74 65 2e 0a 7d 0a 64 6f 63 20 7b 38 2b  QLite..}.doc {8+
0f10: 33 20 46 69 6c 65 6e 61 6d 65 73 7d 20 7b 73 68  3 Filenames} {sh
0f20: 6f 72 74 6e 61 6d 65 73 2e 68 74 6d 6c 7d 20 7b  ortnames.html} {
0f30: 0a 20 20 48 6f 77 20 74 6f 20 6d 61 6b 65 20 53  .  How to make S
0f40: 51 4c 69 74 65 20 77 6f 72 6b 20 6f 6e 20 66 69  QLite work on fi
0f50: 6c 65 73 79 73 74 65 6d 73 20 74 68 61 74 20 6f  lesystems that o
0f60: 6e 6c 79 20 73 75 70 70 6f 72 74 20 0a 20 20 38  nly support .  8
0f70: 2b 33 20 66 69 6c 65 6e 61 6d 65 73 2e 0a 7d 0a  +3 filenames..}.
0f80: 64 6f 63 20 7b 41 75 74 6f 69 6e 63 72 65 6d 65  doc {Autoincreme
0f90: 6e 74 7d 20 7b 61 75 74 6f 69 6e 63 2e 68 74 6d  nt} {autoinc.htm
0fa0: 6c 7d 20 7b 0a 20 20 41 20 64 65 73 63 72 69 70  l} {.  A descrip
0fb0: 74 69 6f 6e 20 6f 66 20 74 68 65 20 41 55 54 4f  tion of the AUTO
0fc0: 49 4e 43 52 45 4d 45 4e 54 20 6b 65 79 77 6f 72  INCREMENT keywor
0fd0: 64 20 69 6e 20 53 51 4c 69 74 65 2c 20 77 68 61  d in SQLite, wha
0fe0: 74 20 69 74 20 64 6f 65 73 2c 0a 20 20 77 68 79  t it does,.  why
0ff0: 20 69 74 20 69 73 20 73 6f 6d 65 74 69 6d 65 73   it is sometimes
1000: 20 75 73 65 66 75 6c 2c 20 61 6e 64 20 77 68 79   useful, and why
1010: 20 69 74 20 73 68 6f 75 6c 64 20 62 65 20 61 76   it should be av
1020: 6f 69 64 65 64 20 69 66 20 6e 6f 74 0a 20 20 73  oided if not.  s
1030: 74 72 69 63 74 6c 79 20 6e 65 63 65 73 73 61 72  trictly necessar
1040: 79 2e 0a 7d 0a 64 6f 63 20 7b 42 61 63 6b 75 70  y..}.doc {Backup
1050: 20 41 50 49 7d 20 7b 62 61 63 6b 75 70 2e 68 74   API} {backup.ht
1060: 6d 6c 7d 20 7b 0a 20 20 54 68 65 20 5b 73 71 6c  ml} {.  The [sql
1070: 69 74 65 33 5f 62 61 63 6b 75 70 5f 69 6e 69 74  ite3_backup_init
1080: 20 7c 20 6f 6e 6c 69 6e 65 2d 62 61 63 6b 75 70   | online-backup
1090: 20 69 6e 74 65 72 66 61 63 65 5d 20 63 61 6e 20   interface] can 
10a0: 62 65 20 75 73 65 64 20 74 6f 0a 20 20 63 6f 70  be used to.  cop
10b0: 79 20 63 6f 6e 74 65 6e 74 20 66 72 6f 6d 20 61  y content from a
10c0: 20 64 69 73 6b 20 66 69 6c 65 20 69 6e 74 6f 20   disk file into 
10d0: 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74  an in-memory dat
10e0: 61 62 61 73 65 20 6f 72 20 76 69 63 65 0a 20 20  abase or vice.  
10f0: 76 65 72 73 61 20 61 6e 64 20 69 74 20 63 61 6e  versa and it can
1100: 20 6d 61 6b 65 20 61 20 68 6f 74 20 62 61 63 6b   make a hot back
1110: 75 70 20 6f 66 20 61 20 6c 69 76 65 20 64 61 74  up of a live dat
1120: 61 62 61 73 65 2e 20 20 54 68 69 73 20 61 70 70  abase.  This app
1130: 6c 69 63 61 74 69 6f 6e 0a 20 20 6e 6f 74 65 20  lication.  note 
1140: 67 69 76 65 73 20 65 78 61 6d 70 6c 65 73 20 6f  gives examples o
1150: 66 20 68 6f 77 2e 0a 7d 0a 64 6f 63 20 7b 43 6f  f how..}.doc {Co
1160: 6d 6d 61 6e 64 2d 4c 69 6e 65 20 53 68 65 6c 6c  mmand-Line Shell
1170: 7d 20 7b 63 6c 69 2e 68 74 6d 6c 7d 20 7b 0a 20  } {cli.html} {. 
1180: 20 4e 6f 74 65 73 20 6f 6e 20 75 73 69 6e 67 20   Notes on using 
1190: 74 68 65 20 22 73 71 6c 69 74 65 33 2e 65 78 65  the "sqlite3.exe
11a0: 22 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 69  " command-line i
11b0: 6e 74 65 72 66 61 63 65 20 74 68 61 74 0a 20 20  nterface that.  
11c0: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 63  can be used to c
11d0: 72 65 61 74 65 2c 20 6d 6f 64 69 66 79 2c 20 61  reate, modify, a
11e0: 6e 64 20 71 75 65 72 79 20 61 72 62 69 74 72 61  nd query arbitra
11f0: 72 79 20 53 51 4c 69 74 65 0a 20 20 64 61 74 61  ry SQLite.  data
1200: 62 61 73 65 20 66 69 6c 65 73 2e 0a 7d 0a 64 6f  base files..}.do
1210: 63 20 7b 45 72 72 6f 72 20 61 6e 64 20 57 61 72  c {Error and War
1220: 6e 69 6e 67 20 4c 6f 67 7d 20 7b 65 72 72 6c 6f  ning Log} {errlo
1230: 67 2e 68 74 6d 6c 7d 20 7b 0a 20 20 53 51 4c 69  g.html} {.  SQLi
1240: 74 65 20 73 75 70 70 6f 72 74 73 20 61 6e 20 22  te supports an "
1250: 65 72 72 6f 72 20 61 6e 64 20 77 61 72 6e 69 6e  error and warnin
1260: 67 20 6c 6f 67 22 20 64 65 73 69 67 6e 20 74 6f  g log" design to
1270: 20 63 61 70 74 75 72 65 20 69 6e 66 6f 72 6d 61   capture informa
1280: 74 69 6f 6e 0a 20 20 61 62 6f 75 74 20 73 75 73  tion.  about sus
1290: 70 69 63 69 6f 75 73 20 61 6e 64 2f 6f 72 20 65  picious and/or e
12a0: 72 72 6f 72 20 65 76 65 6e 74 73 20 64 75 72 69  rror events duri
12b0: 6e 67 20 6f 70 65 72 61 74 69 6f 6e 2e 20 20 45  ng operation.  E
12c0: 6d 62 65 64 64 65 64 20 61 70 70 6c 69 63 61 74  mbedded applicat
12d0: 69 6f 6e 73 0a 20 20 61 72 65 20 65 6e 63 6f 75  ions.  are encou
12e0: 72 61 67 65 64 20 74 6f 20 65 6e 61 62 6c 65 20  raged to enable 
12f0: 74 68 65 20 65 72 72 6f 72 20 61 6e 64 20 77 61  the error and wa
1300: 72 6e 69 6e 67 20 6c 6f 67 20 74 6f 20 68 65 6c  rning log to hel
1310: 70 20 77 69 74 68 20 64 65 62 75 67 67 69 6e 67  p with debugging
1320: 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 70  .  application p
1330: 72 6f 62 6c 65 6d 73 20 74 68 61 74 20 61 72 69  roblems that ari
1340: 73 65 20 69 6e 20 74 68 65 20 66 69 65 6c 64 2e  se in the field.
1350: 20 20 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20    This document 
1360: 65 78 70 6c 61 69 6e 73 20 68 6f 77 0a 20 20 74  explains how.  t
1370: 6f 20 64 6f 20 74 68 61 74 2e 0a 7d 0a 64 6f 63  o do that..}.doc
1380: 20 7b 46 6f 72 65 69 67 6e 20 4b 65 79 20 53 75   {Foreign Key Su
1390: 70 70 6f 72 74 7d 20 7b 66 6f 72 65 69 67 6e 6b  pport} {foreignk
13a0: 65 79 73 2e 68 74 6d 6c 7d 20 7b 0a 20 20 54 68  eys.html} {.  Th
13b0: 69 73 20 64 6f 63 75 6d 65 6e 74 20 64 65 73 63  is document desc
13c0: 72 69 62 65 73 20 74 68 65 20 73 75 70 70 6f 72  ribes the suppor
13d0: 74 20 66 6f 72 20 66 6f 72 65 69 67 6e 20 6b 65  t for foreign ke
13e0: 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 69 6e  y constraints in
13f0: 74 72 6f 64 75 63 65 64 0a 20 20 69 6e 20 76 65  troduced.  in ve
1400: 72 73 69 6f 6e 20 33 2e 36 2e 31 39 2e 0a 7d 0a  rsion 3.6.19..}.
1410: 64 6f 63 20 7b 46 75 6c 6c 20 54 65 78 74 20 53  doc {Full Text S
1420: 65 61 72 63 68 7d 20 7b 66 74 73 33 2e 68 74 6d  earch} {fts3.htm
1430: 6c 7d 20 7b 0a 20 20 41 20 64 65 73 63 72 69 70  l} {.  A descrip
1440: 74 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69  tion of the SQLi
1450: 74 65 20 46 75 6c 6c 20 54 65 78 74 20 53 65 61  te Full Text Sea
1460: 72 63 68 20 28 46 54 53 33 29 20 65 78 74 65 6e  rch (FTS3) exten
1470: 73 69 6f 6e 2e 0a 7d 0a 64 6f 63 20 7b 49 6e 74  sion..}.doc {Int
1480: 65 72 6e 61 6c 20 76 65 72 73 75 73 20 45 78 74  ernal versus Ext
1490: 65 72 6e 61 6c 20 42 6c 6f 62 20 53 74 6f 72 61  ernal Blob Stora
14a0: 67 65 7d 20 7b 69 6e 74 65 72 6e 2d 76 2d 65 78  ge} {intern-v-ex
14b0: 74 65 72 6e 2d 62 6c 6f 62 2e 68 74 6d 6c 7d 20  tern-blob.html} 
14c0: 7b 0a 20 20 53 68 6f 75 6c 64 20 79 6f 75 20 73  {.  Should you s
14d0: 74 6f 72 65 20 6c 61 72 67 65 20 42 4c 4f 42 73  tore large BLOBs
14e0: 20 64 69 72 65 63 74 6c 79 20 69 6e 20 74 68 65   directly in the
14f0: 20 64 61 74 61 62 61 73 65 2c 20 6f 72 20 73 74   database, or st
1500: 6f 72 65 20 74 68 65 6d 0a 20 20 69 6e 20 66 69  ore them.  in fi
1510: 6c 65 73 20 61 6e 64 20 6a 75 73 74 20 72 65 63  les and just rec
1520: 6f 72 64 20 74 68 65 20 66 69 6c 65 6e 61 6d 65  ord the filename
1530: 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65   in the database
1540: 3f 20 20 54 68 69 73 20 64 6f 63 75 6d 65 6e 74  ?  This document
1550: 0a 20 20 73 65 65 6b 73 20 74 6f 20 73 68 65 64  .  seeks to shed
1560: 20 6c 69 67 68 74 20 6f 6e 20 74 68 61 74 20 71   light on that q
1570: 75 65 73 74 69 6f 6e 2e 0a 7d 0a 64 6f 63 20 7b  uestion..}.doc {
1580: 4c 69 6d 69 74 73 20 49 6e 20 53 51 4c 69 74 65  Limits In SQLite
1590: 7d 20 7b 6c 69 6d 69 74 73 2e 68 74 6d 6c 7d 20  } {limits.html} 
15a0: 7b 0a 20 20 54 68 69 73 20 64 6f 63 75 6d 65 6e  {.  This documen
15b0: 74 20 64 65 73 63 72 69 62 65 73 20 6c 69 6d 69  t describes limi
15c0: 74 61 74 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  tations of SQLit
15d0: 65 20 28 74 68 65 20 6d 61 78 69 6d 75 6d 20 6c  e (the maximum l
15e0: 65 6e 67 74 68 20 6f 66 20 61 0a 20 20 73 74 72  ength of a.  str
15f0: 69 6e 67 20 6f 72 20 62 6c 6f 62 2c 20 74 68 65  ing or blob, the
1600: 20 6d 61 78 69 6d 75 6d 20 73 69 7a 65 20 6f 66   maximum size of
1610: 20 61 20 64 61 74 61 62 61 73 65 2c 20 74 68 65   a database, the
1620: 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20   maximum number 
1630: 6f 66 0a 20 20 74 61 62 6c 65 73 20 69 6e 20 61  of.  tables in a
1640: 20 64 61 74 61 62 61 73 65 2c 20 65 74 63 2e 29   database, etc.)
1650: 20 61 6e 64 20 68 6f 77 20 74 68 65 73 65 20 6c   and how these l
1660: 69 6d 69 74 73 20 63 61 6e 20 62 65 20 61 6c 74  imits can be alt
1670: 65 72 65 64 20 61 74 0a 20 20 63 6f 6d 70 69 6c  ered at.  compil
1680: 65 2d 74 69 6d 65 20 61 6e 64 20 72 75 6e 2d 74  e-time and run-t
1690: 69 6d 65 2e 0a 7d 0a 64 6f 63 20 7b 4d 65 6d 6f  ime..}.doc {Memo
16a0: 72 79 2d 4d 61 70 70 65 64 20 49 2f 4f 7d 20 7b  ry-Mapped I/O} {
16b0: 6d 6d 61 70 2e 68 74 6d 6c 7d 20 7b 0a 20 20 53  mmap.html} {.  S
16c0: 51 4c 69 74 65 20 73 75 70 70 6f 72 74 73 20 6d  QLite supports m
16d0: 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f  emory-mapped I/O
16e0: 2e 20 20 4c 65 61 72 6e 20 68 6f 77 20 74 6f 20  .  Learn how to 
16f0: 65 6e 61 62 6c 65 20 6d 65 6d 6f 72 79 2d 6d 61  enable memory-ma
1700: 70 70 65 64 0a 20 20 49 2f 4f 20 61 6e 64 20 61  pped.  I/O and a
1710: 62 6f 75 74 20 74 68 65 20 76 61 72 69 6f 75 73  bout the various
1720: 20 61 64 76 61 6e 74 61 67 65 73 20 61 6e 64 20   advantages and 
1730: 64 69 73 61 64 76 61 6e 74 61 67 65 73 20 74 6f  disadvantages to
1740: 20 75 73 69 6e 67 0a 20 20 6d 65 6d 6f 72 79 2d   using.  memory-
1750: 6d 61 70 70 65 64 20 49 2f 4f 20 69 6e 20 74 68  mapped I/O in th
1760: 69 73 20 64 6f 63 75 6d 65 6e 74 2e 0a 7d 0a 64  is document..}.d
1770: 6f 63 20 7b 4d 75 6c 74 69 2d 74 68 72 65 61 64  oc {Multi-thread
1780: 65 64 20 50 72 6f 67 72 61 6d 73 20 61 6e 64 20  ed Programs and 
1790: 53 51 4c 69 74 65 7d 20 7b 74 68 72 65 61 64 73  SQLite} {threads
17a0: 61 66 65 2e 68 74 6d 6c 7d 20 7b 0a 20 20 53 51  afe.html} {.  SQ
17b0: 4c 69 74 65 20 69 73 20 73 61 66 65 20 74 6f 20  Lite is safe to 
17c0: 75 73 65 20 69 6e 20 6d 75 6c 74 69 2d 74 68 72  use in multi-thr
17d0: 65 61 64 65 64 20 70 72 6f 67 72 61 6d 73 2e 20  eaded programs. 
17e0: 20 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 0a 20   This document. 
17f0: 20 70 72 6f 76 69 64 65 73 20 74 68 65 20 64 65   provides the de
1800: 74 61 69 6c 73 20 61 6e 64 20 68 69 6e 74 73 20  tails and hints 
1810: 6f 6e 20 68 6f 77 20 74 6f 20 6d 61 78 69 6d 69  on how to maximi
1820: 7a 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e 0a  ze performance..
1830: 7d 0a 64 6f 63 20 7b 4e 75 6c 6c 20 48 61 6e 64  }.doc {Null Hand
1840: 6c 69 6e 67 7d 20 7b 6e 75 6c 6c 73 2e 68 74 6d  ling} {nulls.htm
1850: 6c 7d 20 7b 0a 20 20 44 69 66 66 65 72 65 6e 74  l} {.  Different
1860: 20 53 51 4c 20 64 61 74 61 62 61 73 65 20 65 6e   SQL database en
1870: 67 69 6e 65 73 20 68 61 6e 64 6c 65 20 4e 55 4c  gines handle NUL
1880: 4c 73 20 69 6e 20 64 69 66 66 65 72 65 6e 74 20  Ls in different 
1890: 77 61 79 73 2e 20 20 54 68 65 0a 20 20 53 51 4c  ways.  The.  SQL
18a0: 20 73 74 61 6e 64 61 72 64 73 20 61 72 65 20 61   standards are a
18b0: 6d 62 69 67 75 6f 75 73 2e 20 20 54 68 69 73 20  mbiguous.  This 
18c0: 28 63 69 72 63 61 20 32 30 30 33 29 20 64 6f 63  (circa 2003) doc
18d0: 75 6d 65 6e 74 20 64 65 73 63 72 69 62 65 73 0a  ument describes.
18e0: 20 20 68 6f 77 20 53 51 4c 69 74 65 20 68 61 6e    how SQLite han
18f0: 64 6c 65 73 20 4e 55 4c 4c 73 20 69 6e 20 63 6f  dles NULLs in co
1900: 6d 70 61 72 69 73 6f 6e 20 77 69 74 68 20 6f 74  mparison with ot
1910: 68 65 72 20 53 51 4c 20 64 61 74 61 62 61 73 65  her SQL database
1920: 20 65 6e 67 69 6e 65 73 2e 0a 7d 0a 64 6f 63 20   engines..}.doc 
1930: 7b 50 61 72 74 69 61 6c 20 49 6e 64 65 78 65 73  {Partial Indexes
1940: 7d 20 7b 70 61 72 74 69 61 6c 69 6e 64 65 78 2e  } {partialindex.
1950: 68 74 6d 6c 7d 20 7b 0a 20 20 41 20 70 61 72 74  html} {.  A part
1960: 69 61 6c 20 69 6e 64 65 78 20 69 73 20 61 6e 20  ial index is an 
1970: 69 6e 64 65 78 20 74 68 61 74 20 6f 6e 6c 79 20  index that only 
1980: 63 6f 76 65 72 73 20 61 20 73 75 62 73 65 74 20  covers a subset 
1990: 6f 66 20 74 68 65 20 72 6f 77 73 20 69 6e 0a 20  of the rows in. 
19a0: 20 61 20 74 61 62 6c 65 2e 20 20 4c 65 61 72 6e   a table.  Learn
19b0: 20 68 6f 77 20 74 6f 20 75 73 65 20 70 61 72 74   how to use part
19c0: 69 61 6c 20 69 6e 64 65 78 65 73 20 69 6e 20 53  ial indexes in S
19d0: 51 4c 69 74 65 20 66 72 6f 6d 20 74 68 69 73 20  QLite from this 
19e0: 64 6f 63 75 6d 65 6e 74 2e 0a 7d 0a 64 6f 63 20  document..}.doc 
19f0: 7b 52 2d 54 72 65 65 73 7d 20 7b 72 74 72 65 65  {R-Trees} {rtree
1a00: 2e 68 74 6d 6c 7d 20 7b 0a 20 20 41 20 64 65 73  .html} {.  A des
1a10: 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65 20  cription of the 
1a20: 53 51 4c 69 74 65 20 52 2d 54 72 65 65 20 65 78  SQLite R-Tree ex
1a30: 74 65 6e 73 69 6f 6e 2e 20 41 6e 20 52 2d 54 72  tension. An R-Tr
1a40: 65 65 20 69 73 20 61 20 73 70 65 63 69 61 6c 69  ee is a speciali
1a50: 7a 65 64 0a 20 20 64 61 74 61 20 73 74 72 75 63  zed.  data struc
1a60: 74 75 72 65 20 74 68 61 74 20 73 75 70 70 6f 72  ture that suppor
1a70: 74 73 20 66 61 73 74 20 6d 75 6c 74 69 2d 64 69  ts fast multi-di
1a80: 6d 65 6e 73 69 6f 6e 61 6c 20 72 61 6e 67 65 20  mensional range 
1a90: 71 75 65 72 69 65 73 20 6f 66 74 65 6e 0a 20 20  queries often.  
1aa0: 75 73 65 64 20 69 6e 20 67 65 6f 73 70 61 74 69  used in geospati
1ab0: 61 6c 20 73 79 73 74 65 6d 73 2e 0a 7d 0a 64 6f  al systems..}.do
1ac0: 63 20 7b 52 75 6e 2d 54 69 6d 65 20 4c 6f 61 64  c {Run-Time Load
1ad0: 61 62 6c 65 20 45 78 74 65 6e 73 69 6f 6e 73 7d  able Extensions}
1ae0: 20 7b 6c 6f 61 64 65 78 74 2e 68 74 6d 6c 7d 20   {loadext.html} 
1af0: 7b 0a 20 20 41 20 67 65 6e 65 72 61 6c 20 6f 76  {.  A general ov
1b00: 65 72 76 69 65 77 20 6f 6e 20 68 6f 77 20 72 75  erview on how ru
1b10: 6e 2d 74 69 6d 65 20 6c 6f 61 64 61 62 6c 65 20  n-time loadable 
1b20: 65 78 74 65 6e 73 69 6f 6e 73 20 77 6f 72 6b 2c  extensions work,
1b30: 20 68 6f 77 20 74 68 65 79 0a 20 20 61 72 65 20   how they.  are 
1b40: 63 6f 6d 70 69 6c 65 64 2c 20 61 6e 64 20 68 6f  compiled, and ho
1b50: 77 20 64 65 76 65 6c 6f 70 65 72 73 20 63 61 6e  w developers can
1b60: 20 63 72 65 61 74 65 20 74 68 65 69 72 20 6f 77   create their ow
1b70: 6e 20 72 75 6e 2d 74 69 6d 65 20 6c 6f 61 64 61  n run-time loada
1b80: 62 6c 65 0a 20 20 65 78 74 65 6e 73 69 6f 6e 73  ble.  extensions
1b90: 20 66 6f 72 20 53 51 4c 69 74 65 2e 0a 7d 0a 64   for SQLite..}.d
1ba0: 6f 63 20 7b 53 68 61 72 65 64 20 43 61 63 68 65  oc {Shared Cache
1bb0: 20 4d 6f 64 65 7d 20 7b 73 68 61 72 65 64 63 61   Mode} {sharedca
1bc0: 63 68 65 2e 68 74 6d 6c 7d 20 7b 0a 20 20 56 65  che.html} {.  Ve
1bd0: 72 73 69 6f 6e 20 33 2e 33 2e 30 20 61 6e 64 20  rsion 3.3.0 and 
1be0: 6c 61 74 65 72 20 73 75 70 70 6f 72 74 73 20 74  later supports t
1bf0: 68 65 20 61 62 69 6c 69 74 79 20 66 6f 72 20 74  he ability for t
1c00: 77 6f 20 6f 72 20 6d 6f 72 65 0a 20 20 64 61 74  wo or more.  dat
1c10: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1c20: 73 20 74 6f 20 73 68 61 72 65 20 74 68 65 20 73  s to share the s
1c30: 61 6d 65 20 70 61 67 65 20 61 6e 64 20 73 63 68  ame page and sch
1c40: 65 6d 61 20 63 61 63 68 65 2e 0a 20 20 54 68 69  ema cache..  Thi
1c50: 73 20 66 65 61 74 75 72 65 20 69 73 20 75 73 65  s feature is use
1c60: 66 75 6c 20 66 6f 72 20 63 65 72 74 61 69 6e 20  ful for certain 
1c70: 73 70 65 63 69 61 6c 69 7a 65 64 20 61 70 70 6c  specialized appl
1c80: 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 64 6f 63 20  ications..}.doc 
1c90: 7b 55 6e 6c 6f 63 6b 20 4e 6f 74 69 66 79 7d 20  {Unlock Notify} 
1ca0: 7b 75 6e 6c 6f 63 6b 5f 6e 6f 74 69 66 79 2e 68  {unlock_notify.h
1cb0: 74 6d 6c 7d 20 7b 0a 20 20 54 68 65 20 22 75 6e  tml} {.  The "un
1cc0: 6c 6f 63 6b 20 6e 6f 74 69 66 79 22 20 66 65 61  lock notify" fea
1cd0: 74 75 72 65 20 63 61 6e 20 62 65 20 75 73 65 64  ture can be used
1ce0: 20 69 6e 20 63 6f 6e 6a 75 6e 63 74 69 6f 6e 20   in conjunction 
1cf0: 77 69 74 68 0a 20 20 5b 73 68 61 72 65 64 20 63  with.  [shared c
1d00: 61 63 68 65 20 6d 6f 64 65 5d 20 74 6f 20 6d 6f  ache mode] to mo
1d10: 72 65 20 65 66 66 69 63 69 65 6e 74 6c 79 20 6d  re efficiently m
1d20: 61 6e 61 67 65 20 72 65 73 6f 75 72 63 65 20 63  anage resource c
1d30: 6f 6e 66 6c 69 63 74 20 28 64 61 74 61 62 61 73  onflict (databas
1d40: 65 0a 20 20 74 61 62 6c 65 20 6c 6f 63 6b 73 29  e.  table locks)
1d50: 2e 0a 7d 0a 64 6f 63 20 7b 55 52 49 20 46 69 6c  ..}.doc {URI Fil
1d60: 65 6e 61 6d 65 73 7d 20 7b 75 72 69 2e 68 74 6d  enames} {uri.htm
1d70: 6c 7d 20 7b 0a 20 20 54 68 65 20 6e 61 6d 65 73  l} {.  The names
1d80: 20 6f 66 20 64 61 74 61 62 61 73 65 20 66 69 6c   of database fil
1d90: 65 73 20 63 61 6e 20 62 65 20 73 70 65 63 69 66  es can be specif
1da0: 69 65 64 20 75 73 69 6e 67 20 65 69 74 68 65 72  ied using either
1db0: 20 61 6e 20 6f 72 64 69 6e 61 72 79 0a 20 20 66   an ordinary.  f
1dc0: 69 6c 65 6e 61 6d 65 20 6f 72 20 61 20 55 52 49  ilename or a URI
1dd0: 2e 20 20 55 73 69 6e 67 20 55 52 49 20 66 69 6c  .  Using URI fil
1de0: 65 6e 61 6d 65 73 20 70 72 6f 76 69 64 65 73 20  enames provides 
1df0: 61 64 64 69 74 69 6f 6e 61 6c 20 63 61 70 61 62  additional capab
1e00: 69 6c 69 74 69 65 73 2c 0a 20 20 61 73 20 74 68  ilities,.  as th
1e10: 69 73 20 64 6f 63 75 6d 65 6e 74 20 64 65 73 63  is document desc
1e20: 72 69 62 65 73 2e 0a 7d 0a 64 6f 63 20 7b 57 49  ribes..}.doc {WI
1e30: 54 48 4f 55 54 20 52 4f 57 49 44 20 54 61 62 6c  THOUT ROWID Tabl
1e40: 65 73 7d 20 7b 77 69 74 68 6f 75 74 72 6f 77 69  es} {withoutrowi
1e50: 64 2e 68 74 6d 6c 7d 20 7b 0a 20 20 54 68 65 20  d.html} {.  The 
1e60: 57 49 54 48 4f 55 54 20 52 4f 57 49 44 20 6f 70  WITHOUT ROWID op
1e70: 74 69 6d 69 7a 61 74 69 6f 6e 20 69 73 20 61 20  timization is a 
1e80: 6f 70 74 69 6f 6e 20 74 68 61 74 20 63 61 6e 20  option that can 
1e90: 73 6f 6d 65 74 69 6d 65 73 20 72 65 73 75 6c 74  sometimes result
1ea0: 0a 20 20 69 6e 20 73 6d 61 6c 6c 65 72 20 61 6e  .  in smaller an
1eb0: 64 20 66 61 73 74 65 72 20 64 61 74 61 62 61 73  d faster databas
1ec0: 65 73 2e 0a 7d 0a 64 6f 63 20 7b 57 72 69 74 65  es..}.doc {Write
1ed0: 2d 41 68 65 61 64 20 4c 6f 67 20 28 57 41 4c 29  -Ahead Log (WAL)
1ee0: 20 4d 6f 64 65 7d 20 7b 77 61 6c 2e 68 74 6d 6c   Mode} {wal.html
1ef0: 7d 20 7b 0a 20 20 54 72 61 6e 73 61 63 74 69 6f  } {.  Transactio
1f00: 6e 20 63 6f 6e 74 72 6f 6c 20 75 73 69 6e 67 20  n control using 
1f10: 61 20 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f  a write-ahead lo
1f20: 67 20 6f 66 66 65 72 73 20 6d 6f 72 65 20 63 6f  g offers more co
1f30: 6e 63 75 72 72 65 6e 63 79 20 61 6e 64 0a 20 20  ncurrency and.  
1f40: 69 73 20 6f 66 74 65 6e 20 66 61 73 74 65 72 20  is often faster 
1f50: 74 68 61 6e 20 74 68 65 20 64 65 66 61 75 6c 74  than the default
1f60: 20 72 6f 6c 6c 62 61 63 6b 20 74 72 61 6e 73 61   rollback transa
1f70: 63 74 69 6f 6e 73 2e 20 20 54 68 69 73 20 64 6f  ctions.  This do
1f80: 63 75 6d 65 6e 74 0a 20 20 65 78 70 6c 61 69 6e  cument.  explain
1f90: 73 20 68 6f 77 20 74 6f 20 75 73 65 20 57 41 4c  s how to use WAL
1fa0: 20 6d 6f 64 65 20 66 6f 72 20 69 6d 70 72 6f 76   mode for improv
1fb0: 65 64 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e 0a  ed performance..
1fc0: 7d 0a 0a 68 65 61 64 69 6e 67 20 7b 41 64 76 6f  }..heading {Advo
1fd0: 63 61 63 79 7d 20 7b 0a 20 20 44 6f 63 75 6d 65  cacy} {.  Docume
1fe0: 6e 74 73 20 74 68 61 74 20 73 74 72 69 76 65 20  nts that strive 
1ff0: 74 6f 20 65 6e 63 6f 75 72 61 67 65 20 74 68 65  to encourage the
2000: 20 75 73 65 20 6f 66 20 53 51 4c 69 74 65 2e 0a   use of SQLite..
2010: 7d 0a 64 6f 63 20 7b 53 51 4c 69 74 65 20 41 73  }.doc {SQLite As
2020: 20 41 6e 20 41 70 70 6c 69 63 61 74 69 6f 6e 20   An Application 
2030: 46 69 6c 65 20 46 6f 72 6d 61 74 7d 20 7b 61 70  File Format} {ap
2040: 70 66 69 6c 65 66 6f 72 6d 61 74 2e 68 74 6d 6c  pfileformat.html
2050: 7d 20 7b 0a 20 20 54 68 69 73 20 61 72 74 69 63  } {.  This artic
2060: 6c 65 20 61 64 76 6f 63 61 74 65 73 20 75 73 69  le advocates usi
2070: 6e 67 20 53 51 4c 69 74 65 20 61 73 20 61 6e 20  ng SQLite as an 
2080: 61 70 70 6c 69 63 61 74 69 6f 6e 20 66 69 6c 65  application file
2090: 20 66 6f 72 6d 61 74 0a 20 20 69 6e 20 70 6c 61   format.  in pla
20a0: 63 65 20 6f 66 20 58 4d 4c 20 6f 72 20 4a 53 4f  ce of XML or JSO
20b0: 4e 20 6f 72 20 61 20 22 70 69 6c 65 2d 6f 66 2d  N or a "pile-of-
20c0: 66 69 6c 65 22 2e 0a 7d 0a 64 6f 63 20 7b 57 65  file"..}.doc {We
20d0: 6c 6c 20 4b 6e 6f 77 6e 20 55 73 65 72 73 7d 20  ll Known Users} 
20e0: 7b 66 61 6d 6f 75 73 2e 68 74 6d 6c 7d 20 7b 0a  {famous.html} {.
20f0: 20 20 54 68 69 73 20 70 61 67 65 20 6c 69 73 74    This page list
2100: 73 20 61 20 73 6d 61 6c 6c 20 73 75 62 73 65 74  s a small subset
2110: 20 6f 66 20 74 68 65 20 6d 61 6e 79 20 74 68 6f   of the many tho
2120: 75 73 61 6e 64 73 20 6f 66 20 64 65 76 69 63 65  usands of device
2130: 73 0a 20 20 61 6e 64 20 61 70 70 6c 69 63 61 74  s.  and applicat
2140: 69 6f 6e 20 70 72 6f 67 72 61 6d 73 20 74 68 61  ion programs tha
2150: 74 20 6d 61 6b 65 20 75 73 65 20 6f 66 20 53 51  t make use of SQ
2160: 4c 69 74 65 2e 0a 7d 0a 0a 0a 68 65 61 64 69 6e  Lite..}...headin
2170: 67 20 7b 53 51 4c 69 74 65 20 54 65 63 68 6e 69  g {SQLite Techni
2180: 63 61 6c 2f 44 65 73 69 67 6e 20 44 6f 63 75 6d  cal/Design Docum
2190: 65 6e 74 61 74 69 6f 6e 7d 20 7b 0a 20 20 54 68  entation} {.  Th
21a0: 65 73 65 20 64 6f 63 75 6d 65 6e 74 73 20 61 72  ese documents ar
21b0: 65 20 6f 72 69 65 6e 74 65 64 20 74 6f 77 61 72  e oriented towar
21c0: 64 20 64 65 73 63 72 69 62 69 6e 67 20 74 68 65  d describing the
21d0: 20 69 6e 74 65 72 6e 61 6c 0a 20 20 69 6d 70 6c   internal.  impl
21e0: 65 6d 65 6e 74 61 74 69 6f 6e 20 64 65 74 61 69  ementation detai
21f0: 6c 73 20 61 6e 64 20 6f 70 65 72 61 74 69 6f 6e  ls and operation
2200: 20 6f 66 20 53 51 4c 69 74 65 2e 20 20 0a 7d 0a   of SQLite.  .}.
2210: 0a 64 6f 63 20 7b 48 6f 77 20 44 61 74 61 62 61  .doc {How Databa
2220: 73 65 20 43 6f 72 72 75 70 74 69 6f 6e 20 43 61  se Corruption Ca
2230: 6e 20 4f 63 63 75 72 7d 20 7b 68 6f 77 74 6f 63  n Occur} {howtoc
2240: 6f 72 72 75 70 74 2e 68 74 6d 6c 7d 20 7b 0a 20  orrupt.html} {. 
2250: 20 53 51 4c 69 74 65 20 69 73 20 68 69 67 68 6c   SQLite is highl
2260: 79 20 72 65 73 69 73 74 65 6e 74 20 74 6f 20 64  y resistent to d
2270: 61 74 61 62 61 73 65 20 63 6f 72 72 75 70 74 69  atabase corrupti
2280: 6f 6e 2e 20 20 42 75 74 20 61 70 70 6c 69 63 61  on.  But applica
2290: 74 69 6f 6e 2c 0a 20 20 4f 53 2c 20 61 6e 64 20  tion,.  OS, and 
22a0: 68 61 72 64 77 61 72 65 20 62 75 67 73 20 63 61  hardware bugs ca
22b0: 6e 20 73 74 69 6c 6c 20 72 65 73 75 6c 74 20 69  n still result i
22c0: 6e 20 63 6f 72 72 75 70 74 20 64 61 74 61 62 61  n corrupt databa
22d0: 73 65 20 66 69 6c 65 73 2e 0a 20 20 54 68 69 73  se files..  This
22e0: 20 61 72 74 69 63 6c 65 20 64 65 73 63 72 69 62   article describ
22f0: 65 73 20 6d 61 6e 79 20 6f 66 20 74 68 65 20 77  es many of the w
2300: 61 79 73 20 74 68 61 74 20 53 51 4c 69 74 65 20  ays that SQLite 
2310: 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 0a 20  database files. 
2320: 20 63 61 6e 20 67 6f 20 63 6f 72 72 75 70 74 2e   can go corrupt.
2330: 0a 7d 0a 0a 64 6f 63 20 7b 54 65 6d 70 6f 72 61  .}..doc {Tempora
2340: 72 79 20 46 69 6c 65 73 20 55 73 65 64 20 42 79  ry Files Used By
2350: 20 53 51 4c 69 74 65 7d 20 7b 74 65 6d 70 66 69   SQLite} {tempfi
2360: 6c 65 73 2e 68 74 6d 6c 7d 20 7b 0a 20 20 53 51  les.html} {.  SQ
2370: 4c 69 74 65 20 63 61 6e 20 70 6f 74 65 6e 74 69  Lite can potenti
2380: 61 6c 6c 79 20 75 73 65 20 6d 61 6e 79 20 64 69  ally use many di
2390: 66 66 65 72 65 6e 74 20 74 65 6d 70 6f 72 61 72  fferent temporar
23a0: 79 20 66 69 6c 65 73 20 77 68 65 6e 0a 20 20 70  y files when.  p
23b0: 72 6f 63 65 73 73 69 6e 67 20 63 65 72 74 61 69  rocessing certai
23c0: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  n SQL statements
23d0: 2e 20 20 54 68 69 73 20 64 6f 63 75 6d 65 6e 74  .  This document
23e0: 20 64 65 73 63 72 69 62 65 73 20 74 68 65 0a 20   describes the. 
23f0: 20 6d 61 6e 79 20 6b 69 6e 64 73 20 6f 66 20 74   many kinds of t
2400: 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 20 74  emporary files t
2410: 68 61 74 20 53 51 4c 69 74 65 20 75 73 65 73 20  hat SQLite uses 
2420: 61 6e 64 20 6f 66 66 65 72 73 20 73 75 67 67 65  and offers sugge
2430: 73 74 69 6f 6e 73 0a 20 20 66 6f 72 20 61 76 6f  stions.  for avo
2440: 69 64 69 6e 67 20 74 68 65 6d 20 6f 6e 20 73 79  iding them on sy
2450: 73 74 65 6d 73 20 77 68 65 72 65 20 63 72 65 61  stems where crea
2460: 74 69 6e 67 20 61 20 74 65 6d 70 6f 72 61 72 79  ting a temporary
2470: 20 66 69 6c 65 20 69 73 20 61 6e 0a 20 20 65 78   file is an.  ex
2480: 70 65 6e 73 69 76 65 20 6f 70 65 72 61 74 69 6f  pensive operatio
2490: 6e 2e 0a 7d 0a 0a 64 6f 63 20 7b 49 6e 2d 4d 65  n..}..doc {In-Me
24a0: 6d 6f 72 79 20 44 61 74 61 62 61 73 65 73 7d 20  mory Databases} 
24b0: 7b 69 6e 6d 65 6d 6f 72 79 64 62 2e 68 74 6d 6c  {inmemorydb.html
24c0: 7d 20 7b 0a 20 20 53 51 4c 69 74 65 20 6e 6f 72  } {.  SQLite nor
24d0: 6d 61 6c 6c 79 20 73 74 6f 72 65 73 20 63 6f 6e  mally stores con
24e0: 74 65 6e 74 20 69 6e 20 61 20 64 69 73 6b 20 66  tent in a disk f
24f0: 69 6c 65 2e 20 20 48 6f 77 65 76 65 72 2c 20 69  ile.  However, i
2500: 74 20 63 61 6e 20 61 6c 73 6f 0a 20 20 62 65 20  t can also.  be 
2510: 75 73 65 64 20 61 73 20 61 6e 20 69 6e 2d 6d 65  used as an in-me
2520: 6d 6f 72 79 20 64 61 74 61 62 61 73 65 20 65 6e  mory database en
2530: 67 69 6e 65 2e 20 20 54 68 69 73 20 64 6f 63 75  gine.  This docu
2540: 6d 65 6e 74 20 65 78 70 6c 61 69 6e 73 20 68 6f  ment explains ho
2550: 77 2e 0a 7d 0a 0a 64 6f 63 20 7b 48 6f 77 20 53  w..}..doc {How S
2560: 51 4c 69 74 65 20 49 6d 70 6c 65 6d 65 6e 74 73  QLite Implements
2570: 20 41 74 6f 6d 69 63 20 43 6f 6d 6d 69 74 7d 20   Atomic Commit} 
2580: 7b 61 74 6f 6d 69 63 63 6f 6d 6d 69 74 2e 68 74  {atomiccommit.ht
2590: 6d 6c 7d 20 7b 0a 20 20 41 20 64 65 73 63 72 69  ml} {.  A descri
25a0: 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 6c 6f 67  ption of the log
25b0: 69 63 20 77 69 74 68 69 6e 20 53 51 4c 69 74 65  ic within SQLite
25c0: 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73   that implements
25d0: 0a 20 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20  .  transactions 
25e0: 77 69 74 68 20 61 74 6f 6d 69 63 20 63 6f 6d 6d  with atomic comm
25f0: 69 74 2c 20 65 76 65 6e 20 69 6e 20 74 68 65 20  it, even in the 
2600: 66 61 63 65 20 6f 66 20 70 6f 77 65 72 0a 20 20  face of power.  
2610: 66 61 69 6c 75 72 65 73 2e 0a 7d 0a 0a 64 6f 63  failures..}..doc
2620: 20 7b 44 79 6e 61 6d 69 63 20 4d 65 6d 6f 72 79   {Dynamic Memory
2630: 20 41 6c 6c 6f 63 61 74 69 6f 6e 20 69 6e 20 53   Allocation in S
2640: 51 4c 69 74 65 7d 20 7b 6d 61 6c 6c 6f 63 2e 68  QLite} {malloc.h
2650: 74 6d 6c 7d 20 7b 0a 20 20 53 51 4c 69 74 65 20  tml} {.  SQLite 
2660: 68 61 73 20 61 20 73 6f 70 68 69 73 74 69 63 61  has a sophistica
2670: 74 65 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ted memory alloc
2680: 61 74 69 6f 6e 20 73 75 62 73 79 73 74 65 6d 20  ation subsystem 
2690: 74 68 61 74 20 63 61 6e 20 62 65 0a 20 20 63 6f  that can be.  co
26a0: 6e 66 69 67 75 72 65 64 20 61 6e 64 20 63 75 73  nfigured and cus
26b0: 74 6f 6d 69 7a 65 64 20 74 6f 20 6d 65 65 74 20  tomized to meet 
26c0: 6d 65 6d 6f 72 79 20 75 73 61 67 65 20 72 65 71  memory usage req
26d0: 75 69 72 65 6d 65 6e 74 73 20 6f 66 20 74 68 65  uirements of the
26e0: 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 61  .  application a
26f0: 6e 64 20 74 68 61 74 20 69 73 20 72 6f 62 75 73  nd that is robus
2700: 74 20 61 67 61 69 6e 73 74 20 6f 75 74 2d 6f 66  t against out-of
2710: 2d 6d 65 6d 6f 72 79 20 63 6f 6e 64 69 74 69 6f  -memory conditio
2720: 6e 73 20 61 6e 64 0a 20 20 6c 65 61 6b 2d 66 72  ns and.  leak-fr
2730: 65 65 2e 20 20 54 68 69 73 20 64 6f 63 75 6d 65  ee.  This docume
2740: 6e 74 20 70 72 6f 76 69 64 65 73 20 74 68 65 20  nt provides the 
2750: 64 65 74 61 69 6c 73 2e 0a 7d 0a 0a 64 6f 63 20  details..}..doc 
2760: 7b 43 75 73 74 6f 6d 69 7a 69 6e 67 20 41 6e 64  {Customizing And
2770: 20 50 6f 72 74 69 6e 67 20 53 51 4c 69 74 65 7d   Porting SQLite}
2780: 20 7b 63 75 73 74 6f 6d 62 75 69 6c 64 2e 68 74   {custombuild.ht
2790: 6d 6c 7d 20 7b 0a 20 20 54 68 69 73 20 64 6f 63  ml} {.  This doc
27a0: 75 6d 65 6e 74 20 65 78 70 6c 61 69 6e 73 20 68  ument explains h
27b0: 6f 77 20 74 6f 20 63 75 73 74 6f 6d 69 7a 65 20  ow to customize 
27c0: 74 68 65 20 62 75 69 6c 64 20 6f 66 20 53 51 4c  the build of SQL
27d0: 69 74 65 20 61 6e 64 0a 20 20 68 6f 77 20 74 6f  ite and.  how to
27e0: 20 70 6f 72 74 20 53 51 4c 69 74 65 20 74 6f 20   port SQLite to 
27f0: 6e 65 77 20 70 6c 61 74 66 6f 72 6d 73 2e 0a 7d  new platforms..}
2800: 0a 0a 64 6f 63 20 7b 4c 6f 63 6b 69 6e 67 20 41  ..doc {Locking A
2810: 6e 64 20 43 6f 6e 63 75 72 72 65 6e 63 79 3c 62  nd Concurrency<b
2820: 72 3e 49 6e 20 53 51 4c 69 74 65 20 56 65 72 73  r>In SQLite Vers
2830: 69 6f 6e 20 33 7d 20 7b 6c 6f 63 6b 69 6e 67 76  ion 3} {lockingv
2840: 33 2e 68 74 6d 6c 7d 20 7b 0a 20 20 41 20 64 65  3.html} {.  A de
2850: 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 68 6f 77  scription of how
2860: 20 74 68 65 20 6e 65 77 20 6c 6f 63 6b 69 6e 67   the new locking
2870: 20 63 6f 64 65 20 69 6e 20 76 65 72 73 69 6f 6e   code in version
2880: 20 33 20 69 6e 63 72 65 61 73 65 73 0a 20 20 63   3 increases.  c
2890: 6f 6e 63 75 72 72 65 6e 63 79 20 61 6e 64 20 64  oncurrency and d
28a0: 65 63 72 65 61 73 65 73 20 74 68 65 20 70 72 6f  ecreases the pro
28b0: 62 6c 65 6d 20 6f 66 20 77 72 69 74 65 72 20 73  blem of writer s
28c0: 74 61 72 76 61 74 69 6f 6e 2e 0a 7d 0a 0a 64 6f  tarvation..}..do
28d0: 63 20 7b 49 73 6f 6c 61 74 69 6f 6e 20 49 6e 20  c {Isolation In 
28e0: 53 51 4c 69 74 65 7d 20 7b 69 73 6f 6c 61 74 69  SQLite} {isolati
28f0: 6f 6e 2e 68 74 6d 6c 7d 20 7b 0a 20 20 57 68 65  on.html} {.  Whe
2900: 6e 20 77 65 20 73 61 79 20 74 68 61 74 20 53 51  n we say that SQ
2910: 4c 69 74 65 20 74 72 61 6e 73 61 63 74 69 6f 6e  Lite transaction
2920: 73 20 61 72 65 20 22 73 65 72 69 61 6c 69 7a 61  s are "serializa
2930: 62 6c 65 22 20 77 68 61 74 20 65 78 61 63 74 6c  ble" what exactl
2940: 79 0a 20 20 64 6f 65 73 20 74 68 61 74 20 6d 65  y.  does that me
2950: 61 6e 3f 20 20 48 6f 77 20 61 6e 64 20 77 68 65  an?  How and whe
2960: 6e 20 61 72 65 20 63 68 61 6e 67 65 73 20 6d 61  n are changes ma
2970: 64 65 20 76 69 73 69 62 6c 65 20 77 69 74 68 69  de visible withi
2980: 6e 20 74 68 65 0a 20 20 73 61 6d 65 20 64 61 74  n the.  same dat
2990: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
29a0: 20 61 6e 64 20 74 6f 20 6f 74 68 65 72 20 64 61   and to other da
29b0: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
29c0: 6e 73 3f 0a 7d 0a 0a 64 6f 63 20 7b 4f 76 65 72  ns?.}..doc {Over
29d0: 76 69 65 77 20 4f 66 20 54 68 65 20 4f 70 74 69  view Of The Opti
29e0: 6d 69 7a 65 72 7d 20 7b 6f 70 74 6f 76 65 72 76  mizer} {optoverv
29f0: 69 65 77 2e 68 74 6d 6c 7d 20 7b 0a 20 20 41 20  iew.html} {.  A 
2a00: 71 75 69 63 6b 20 6f 76 65 72 76 69 65 77 20 6f  quick overview o
2a10: 66 20 74 68 65 20 76 61 72 69 6f 75 73 20 71 75  f the various qu
2a20: 65 72 79 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  ery optimization
2a30: 73 20 74 68 61 74 20 61 72 65 0a 20 20 61 74 74  s that are.  att
2a40: 65 6d 70 74 65 64 20 62 79 20 74 68 65 20 53 51  empted by the SQ
2a50: 4c 69 74 65 20 63 6f 64 65 20 67 65 6e 65 72 61  Lite code genera
2a60: 74 6f 72 2e 0a 7d 0a 64 6f 63 20 7b 54 68 65 20  tor..}.doc {The 
2a70: 4e 65 78 74 2d 47 65 6e 65 72 61 74 69 6f 6e 20  Next-Generation 
2a80: 51 75 65 72 79 20 50 6c 61 6e 6e 65 72 7d 20 7b  Query Planner} {
2a90: 71 75 65 72 79 70 6c 61 6e 6e 65 72 2d 6e 67 2e  queryplanner-ng.
2aa0: 68 74 6d 6c 7d 20 7b 0a 20 20 41 64 64 69 74 69  html} {.  Additi
2ab0: 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
2ac0: 20 61 62 6f 75 74 20 74 68 65 20 53 51 4c 69 74   about the SQLit
2ad0: 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 2c  e query planner,
2ae0: 20 61 6e 64 20 69 6e 20 70 61 72 74 69 63 75 6c   and in particul
2af0: 61 72 0a 20 20 74 68 65 20 72 65 64 65 73 69 67  ar.  the redesig
2b00: 6e 20 6f 66 20 74 68 65 20 71 75 65 72 79 20 70  n of the query p
2b10: 6c 61 6e 6e 65 72 20 74 68 61 74 20 6f 63 63 75  lanner that occu
2b20: 72 72 65 64 20 66 6f 72 20 76 65 72 73 69 6f 6e  rred for version
2b30: 20 33 2e 38 2e 30 2e 0a 7d 0a 0a 64 6f 63 20 7b   3.8.0..}..doc {
2b40: 41 72 63 68 69 74 65 63 74 75 72 65 7d 20 7b 61  Architecture} {a
2b50: 72 63 68 2e 68 74 6d 6c 7d 20 7b 0a 20 20 41 6e  rch.html} {.  An
2b60: 20 61 72 63 68 69 74 65 63 74 75 72 61 6c 20 6f   architectural o
2b70: 76 65 72 76 69 65 77 20 6f 66 20 74 68 65 20 53  verview of the S
2b80: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2c 20 75  QLite library, u
2b90: 73 65 66 75 6c 20 66 6f 72 20 74 68 6f 73 65 20  seful for those 
2ba0: 77 68 6f 20 77 61 6e 74 0a 20 20 74 6f 20 68 61  who want.  to ha
2bb0: 63 6b 20 74 68 65 20 63 6f 64 65 2e 0a 7d 0a 64  ck the code..}.d
2bc0: 6f 63 20 7b 56 44 42 45 20 4f 70 63 6f 64 65 73  oc {VDBE Opcodes
2bd0: 7d 20 7b 6f 70 63 6f 64 65 2e 68 74 6d 6c 7d 20  } {opcode.html} 
2be0: 7b 0a 20 20 54 68 69 73 20 64 6f 63 75 6d 65 6e  {.  This documen
2bf0: 74 20 69 73 20 61 6e 20 61 75 74 6f 6d 61 74 69  t is an automati
2c00: 63 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 64 20  cally generated 
2c10: 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74  description of t
2c20: 68 65 20 76 61 72 69 6f 75 73 0a 20 20 6f 70 63  he various.  opc
2c30: 6f 64 65 73 20 74 68 61 74 20 74 68 65 20 56 44  odes that the VD
2c40: 42 45 20 75 6e 64 65 72 73 74 61 6e 64 73 2e 20  BE understands. 
2c50: 20 50 72 6f 67 72 61 6d 6d 65 72 73 20 63 61 6e   Programmers can
2c60: 20 75 73 65 20 74 68 69 73 20 64 6f 63 75 6d 65   use this docume
2c70: 6e 74 20 61 73 0a 20 20 61 20 72 65 66 65 72 65  nt as.  a refere
2c80: 6e 63 65 20 74 6f 20 62 65 74 74 65 72 20 75 6e  nce to better un
2c90: 64 65 72 73 74 61 6e 64 20 74 68 65 20 6f 75 74  derstand the out
2ca0: 70 75 74 20 6f 66 20 45 58 50 4c 41 49 4e 20 6c  put of EXPLAIN l
2cb0: 69 73 74 69 6e 67 73 20 66 72 6f 6d 0a 20 20 53  istings from.  S
2cc0: 51 4c 69 74 65 2e 0a 7d 0a 64 6f 63 20 7b 56 69  QLite..}.doc {Vi
2cd0: 72 74 75 61 6c 20 46 69 6c 65 73 79 73 74 65 6d  rtual Filesystem
2ce0: 7d 20 7b 76 66 73 2e 68 74 6d 6c 7d 20 7b 0a 20  } {vfs.html} {. 
2cf0: 20 54 68 65 20 22 56 46 53 22 20 6f 62 6a 65 63   The "VFS" objec
2d00: 74 20 69 73 20 74 68 65 20 69 6e 74 65 72 66 61  t is the interfa
2d10: 63 65 20 62 65 74 77 65 65 6e 20 74 68 65 20 53  ce between the S
2d20: 51 4c 69 74 65 20 63 6f 72 65 20 61 6e 64 20 74  QLite core and t
2d30: 68 65 0a 20 20 75 6e 64 65 72 6c 79 69 6e 67 20  he.  underlying 
2d40: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
2d50: 2e 20 20 4c 65 61 72 6e 20 6d 6f 72 65 20 61 62  .  Learn more ab
2d60: 6f 75 74 20 68 6f 77 20 74 68 65 20 56 46 53 20  out how the VFS 
2d70: 6f 62 6a 65 63 74 0a 20 20 77 6f 72 6b 73 20 61  object.  works a
2d80: 6e 64 20 68 6f 77 20 74 6f 20 63 72 65 61 74 65  nd how to create
2d90: 20 6e 65 77 20 56 46 53 20 6f 62 6a 65 63 74 73   new VFS objects
2da0: 20 66 72 6f 6d 20 74 68 69 73 20 61 72 74 69 63   from this artic
2db0: 6c 65 2e 0a 7d 0a 64 6f 63 20 7b 56 69 72 74 75  le..}.doc {Virtu
2dc0: 61 6c 20 54 61 62 6c 65 73 7d 20 7b 76 74 61 62  al Tables} {vtab
2dd0: 2e 68 74 6d 6c 7d 20 7b 0a 20 20 54 68 69 73 20  .html} {.  This 
2de0: 61 72 74 69 63 6c 65 20 64 65 73 63 72 69 62 65  article describe
2df0: 73 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  s the virtual ta
2e00: 62 6c 65 20 6d 65 63 68 61 6e 69 73 6d 20 61 6e  ble mechanism an
2e10: 64 20 41 50 49 20 69 6e 20 53 51 4c 69 74 65 20  d API in SQLite 
2e20: 61 6e 64 20 68 6f 77 0a 20 20 69 74 20 63 61 6e  and how.  it can
2e30: 20 62 65 20 75 73 65 64 20 74 6f 20 61 64 64 20   be used to add 
2e40: 6e 65 77 20 63 61 70 61 62 69 6c 69 74 69 65 73  new capabilities
2e50: 20 74 6f 20 74 68 65 20 63 6f 72 65 20 53 51 4c   to the core SQL
2e60: 69 74 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a  ite library..}..
2e70: 64 6f 63 20 7b 53 51 4c 69 74 65 20 46 69 6c 65  doc {SQLite File
2e80: 20 46 6f 72 6d 61 74 7d 20 7b 66 69 6c 65 66 6f   Format} {filefo
2e90: 72 6d 61 74 32 2e 68 74 6d 6c 7d 20 7b 0a 20 20  rmat2.html} {.  
2ea0: 41 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66  A description of
2eb0: 20 74 68 65 20 66 6f 72 6d 61 74 20 75 73 65 64   the format used
2ec0: 20 66 6f 72 20 53 51 4c 69 74 65 20 64 61 74 61   for SQLite data
2ed0: 62 61 73 65 20 61 6e 64 20 6a 6f 75 72 6e 61 6c  base and journal
2ee0: 20 66 69 6c 65 73 2c 20 61 6e 64 0a 20 20 6f 74   files, and.  ot
2ef0: 68 65 72 20 64 65 74 61 69 6c 73 20 72 65 71 75  her details requ
2f00: 69 72 65 64 20 74 6f 20 63 72 65 61 74 65 20 73  ired to create s
2f10: 6f 66 74 77 61 72 65 20 74 6f 20 72 65 61 64 20  oftware to read 
2f20: 61 6e 64 20 77 72 69 74 65 20 53 51 4c 69 74 65  and write SQLite
2f30: 20 0a 20 20 64 61 74 61 62 61 73 65 73 20 77 69   .  databases wi
2f40: 74 68 6f 75 74 20 75 73 69 6e 67 20 53 51 4c 69  thout using SQLi
2f50: 74 65 2e 0a 7d 0a 0a 64 6f 63 20 7b 43 6f 6d 70  te..}..doc {Comp
2f60: 69 6c 61 74 69 6f 6e 20 4f 70 74 69 6f 6e 73 7d  ilation Options}
2f70: 20 7b 63 6f 6d 70 69 6c 65 2e 68 74 6d 6c 7d 20   {compile.html} 
2f80: 7b 0a 20 20 54 68 69 73 20 64 6f 63 75 6d 65 6e  {.  This documen
2f90: 74 20 64 65 73 63 72 69 62 65 73 20 74 68 65 20  t describes the 
2fa0: 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 6f 70 74  compile time opt
2fb0: 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 62 65  ions that may be
2fc0: 20 73 65 74 20 74 6f 20 0a 20 20 6d 6f 64 69 66   set to .  modif
2fd0: 79 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 65  y the default be
2fe0: 68 61 76 69 6f 72 20 6f 66 20 74 68 65 20 6c 69  havior of the li
2ff0: 62 72 61 72 79 20 6f 72 20 6f 6d 69 74 20 6f 70  brary or omit op
3000: 74 69 6f 6e 61 6c 20 66 65 61 74 75 72 65 73 0a  tional features.
3010: 20 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 72 65    in order to re
3020: 64 75 63 65 20 62 69 6e 61 72 79 20 73 69 7a 65  duce binary size
3030: 2e 0a 7d 0a 0a 68 65 61 64 69 6e 67 20 7b 55 70  ..}..heading {Up
3040: 67 72 61 64 69 6e 67 20 53 51 4c 69 74 65 2c 20  grading SQLite, 
3050: 42 61 63 6b 77 61 72 64 73 20 43 6f 6d 70 61 74  Backwards Compat
3060: 69 62 69 6c 69 74 79 7d 0a 0a 64 6f 63 20 7b 4d  ibility}..doc {M
3070: 6f 76 69 6e 67 20 46 72 6f 6d 20 53 51 4c 69 74  oving From SQLit
3080: 65 20 33 2e 35 20 74 6f 20 33 2e 36 7d 20 7b 33  e 3.5 to 3.6} {3
3090: 35 74 6f 33 36 2e 68 74 6d 6c 7d 20 7b 0a 20 20  5to36.html} {.  
30a0: 41 20 64 6f 63 75 6d 65 6e 74 20 64 65 73 63 72  A document descr
30b0: 69 62 69 6e 67 20 74 68 65 20 64 69 66 66 65 72  ibing the differ
30c0: 65 6e 63 65 73 20 62 65 74 77 65 65 6e 20 53 51  ences between SQ
30d0: 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 35  Lite version 3.5
30e0: 2e 39 0a 20 20 61 6e 64 20 33 2e 36 2e 30 2e 0a  .9.  and 3.6.0..
30f0: 7d 0a 64 6f 63 20 7b 4d 6f 76 69 6e 67 20 46 72  }.doc {Moving Fr
3100: 6f 6d 20 53 51 4c 69 74 65 20 33 2e 34 20 74 6f  om SQLite 3.4 to
3110: 20 33 2e 35 7d 20 7b 33 34 74 6f 33 35 2e 68 74   3.5} {34to35.ht
3120: 6d 6c 7d 20 7b 0a 20 20 41 20 64 6f 63 75 6d 65  ml} {.  A docume
3130: 6e 74 20 64 65 73 63 72 69 62 69 6e 67 20 74 68  nt describing th
3140: 65 20 64 69 66 66 65 72 65 6e 63 65 73 20 62 65  e differences be
3150: 74 77 65 65 6e 20 53 51 4c 69 74 65 20 76 65 72  tween SQLite ver
3160: 73 69 6f 6e 20 33 2e 34 2e 32 0a 20 20 61 6e 64  sion 3.4.2.  and
3170: 20 33 2e 35 2e 30 2e 0a 7d 0a 64 6f 63 20 7b 52   3.5.0..}.doc {R
3180: 65 6c 65 61 73 65 20 48 69 73 74 6f 72 79 7d 20  elease History} 
3190: 7b 63 68 61 6e 67 65 73 2e 68 74 6d 6c 7d 20 7b  {changes.html} {
31a0: 0a 20 20 41 20 63 68 72 6f 6e 6f 6c 6f 67 79 20  .  A chronology 
31b0: 6f 66 20 53 51 4c 69 74 65 20 72 65 6c 65 61 73  of SQLite releas
31c0: 65 73 20 67 6f 69 6e 67 20 62 61 63 6b 20 74 6f  es going back to
31d0: 20 76 65 72 73 69 6f 6e 20 31 2e 30 2e 30 0a 7d   version 1.0.0.}
31e0: 0a 64 6f 63 20 7b 42 61 63 6b 77 61 72 64 73 20  .doc {Backwards 
31f0: 43 6f 6d 70 61 74 69 62 69 6c 69 74 79 7d 20 7b  Compatibility} {
3200: 66 6f 72 6d 61 74 63 68 6e 67 2e 68 74 6d 6c 7d  formatchng.html}
3210: 20 7b 0a 20 20 54 68 69 73 20 64 6f 63 75 6d 65   {.  This docume
3220: 6e 74 20 64 65 74 61 69 6c 73 20 61 6c 6c 20 6f  nt details all o
3230: 66 20 74 68 65 20 69 6e 63 6f 6d 70 61 74 69 62  f the incompatib
3240: 6c 65 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68  le changes to th
3250: 65 20 53 51 4c 69 74 65 0a 20 20 66 69 6c 65 20  e SQLite.  file 
3260: 66 6f 72 6d 61 74 20 74 68 61 74 20 68 61 76 65  format that have
3270: 20 6f 63 63 75 72 72 65 64 20 73 69 6e 63 65 20   occurred since 
3280: 76 65 72 73 69 6f 6e 20 31 2e 30 2e 30 2e 0a 7d  version 1.0.0..}
3290: 0a 0a 64 6f 63 20 7b 50 72 69 76 61 74 65 20 42  ..doc {Private B
32a0: 72 61 6e 63 68 65 73 7d 20 7b 70 72 69 76 61 74  ranches} {privat
32b0: 65 62 72 61 6e 63 68 2e 68 74 6d 6c 7d 20 7b 0a  ebranch.html} {.
32c0: 20 20 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20    This document 
32d0: 73 75 67 67 65 73 74 73 20 70 72 6f 63 65 64 75  suggests procedu
32e0: 72 65 73 20 66 6f 72 20 6d 61 69 6e 74 61 69 6e  res for maintain
32f0: 69 6e 67 20 61 20 70 72 69 76 61 74 65 20 62 72  ing a private br
3300: 61 6e 63 68 0a 20 20 6f 72 20 66 6f 72 6b 20 6f  anch.  or fork o
3310: 66 20 53 51 4c 69 74 65 20 61 6e 64 20 6b 65 65  f SQLite and kee
3320: 70 69 6e 67 20 74 68 61 74 20 62 72 61 6e 63 68  ping that branch
3330: 20 6f 72 20 66 6f 72 6b 20 69 6e 20 73 79 6e 63   or fork in sync
3340: 20 77 69 74 68 20 74 68 65 0a 20 20 70 75 62 6c   with the.  publ
3350: 69 63 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65  ic SQLite source
3360: 20 74 72 65 65 2e 0a 7d 0a 0a 0a 68 65 61 64 69   tree..}...headi
3370: 6e 67 20 7b 4f 62 73 6f 6c 65 74 65 20 44 6f 63  ng {Obsolete Doc
3380: 75 6d 65 6e 74 73 7d 20 7b 0a 20 20 54 68 65 20  uments} {.  The 
3390: 66 6f 6c 6c 6f 77 69 6e 67 20 64 6f 63 75 6d 65  following docume
33a0: 6e 74 73 20 61 72 65 20 6e 6f 20 6c 6f 6e 67 65  nts are no longe
33b0: 72 20 63 75 72 72 65 6e 74 20 61 6e 64 20 61 72  r current and ar
33c0: 65 20 72 65 74 61 69 6e 65 64 0a 20 20 66 6f 72  e retained.  for
33d0: 20 68 69 73 74 6f 72 69 63 61 6c 20 72 65 66 65   historical refe
33e0: 72 65 6e 63 65 20 6f 6e 6c 79 2e 0a 20 20 54 68  rence only..  Th
33f0: 65 73 65 20 64 6f 63 75 6d 65 6e 74 73 20 67 65  ese documents ge
3400: 6e 65 72 61 6c 6c 79 20 70 65 72 74 61 69 6e 20  nerally pertain 
3410: 74 6f 20 6f 75 74 2d 6f 66 2d 64 61 74 65 2c 20  to out-of-date, 
3420: 6f 62 73 6f 6c 65 74 65 2c 20 61 6e 64 2f 6f 72  obsolete, and/or
3430: 0a 20 20 64 65 70 72 65 63 61 74 65 64 20 66 65  .  deprecated fe
3440: 61 74 75 72 65 73 20 61 6e 64 20 65 78 74 65 6e  atures and exten
3450: 73 69 6f 6e 73 2e 0a 7d 0a 64 6f 63 20 7b 41 73  sions..}.doc {As
3460: 79 6e 63 68 72 6f 6e 6f 75 73 20 49 4f 20 4d 6f  ynchronous IO Mo
3470: 64 65 7d 20 7b 61 73 79 6e 63 76 66 73 2e 68 74  de} {asyncvfs.ht
3480: 6d 6c 7d 20 7b 0a 20 20 54 68 69 73 20 70 61 67  ml} {.  This pag
3490: 65 20 64 65 73 63 72 69 62 65 73 20 74 68 65 20  e describes the 
34a0: 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 49 4f 20  asynchronous IO 
34b0: 65 78 74 65 6e 73 69 6f 6e 20 64 65 76 65 6c 6f  extension develo
34c0: 70 65 64 20 61 6c 6f 6e 67 73 69 64 65 0a 20 20  ped alongside.  
34d0: 53 51 4c 69 74 65 2e 20 55 73 69 6e 67 20 61 73  SQLite. Using as
34e0: 79 6e 63 68 72 6f 6e 6f 75 73 20 49 4f 20 63 61  ynchronous IO ca
34f0: 6e 20 63 61 75 73 65 20 53 51 4c 69 74 65 20 74  n cause SQLite t
3500: 6f 20 61 70 70 65 61 72 20 6d 6f 72 65 20 72 65  o appear more re
3510: 73 70 6f 6e 73 69 76 65 0a 20 20 62 79 20 64 65  sponsive.  by de
3520: 6c 65 67 61 74 69 6e 67 20 64 61 74 61 62 61 73  legating databas
3530: 65 20 77 72 69 74 65 73 20 74 6f 20 61 20 62 61  e writes to a ba
3540: 63 6b 67 72 6f 75 6e 64 20 74 68 72 65 61 64 2e  ckground thread.
3550: 20 20 3c 69 3e 4e 42 3a 20 20 54 68 69 73 0a 20    <i>NB:  This. 
3560: 20 65 78 74 65 6e 73 69 6f 6e 20 69 73 20 64 65   extension is de
3570: 70 72 65 63 61 74 65 64 2e 20 20 5b 57 41 4c 20  precated.  [WAL 
3580: 6d 6f 64 65 5d 20 69 73 20 72 65 63 6f 6d 6d 65  mode] is recomme
3590: 6e 64 65 64 20 61 73 20 61 20 72 65 70 6c 61 63  nded as a replac
35a0: 65 6d 65 6e 74 2e 3c 2f 69 3e 0a 7d 0a 64 6f 63  ement.</i>.}.doc
35b0: 20 7b 56 65 72 73 69 6f 6e 20 32 20 43 2f 43 2b   {Version 2 C/C+
35c0: 2b 20 41 50 49 7d 20 7b 63 5f 69 6e 74 65 72 66  + API} {c_interf
35d0: 61 63 65 2e 68 74 6d 6c 7d 20 7b 0a 20 20 41 20  ace.html} {.  A 
35e0: 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74  description of t
35f0: 68 65 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61  he C/C++ interfa
3600: 63 65 20 62 69 6e 64 69 6e 67 73 20 66 6f 72 20  ce bindings for 
3610: 53 51 4c 69 74 65 20 74 68 72 6f 75 67 68 20 76  SQLite through v
3620: 65 72 73 69 6f 6e 20 0a 20 20 32 2e 38 0a 7d 0a  ersion .  2.8.}.
3630: 64 6f 63 20 7b 56 65 72 73 69 6f 6e 20 32 20 44  doc {Version 2 D
3640: 61 74 61 54 79 70 65 73 20 7d 20 7b 64 61 74 61  ataTypes } {data
3650: 74 79 70 65 73 2e 68 74 6d 6c 7d 20 7b 0a 20 20  types.html} {.  
3660: 41 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66  A description of
3670: 20 68 6f 77 20 53 51 4c 69 74 65 20 76 65 72 73   how SQLite vers
3680: 69 6f 6e 20 32 20 68 61 6e 64 6c 65 73 20 53 51  ion 2 handles SQ
3690: 4c 20 64 61 74 61 74 79 70 65 73 2e 0a 20 20 53  L datatypes..  S
36a0: 68 6f 72 74 20 73 75 6d 6d 61 72 79 3a 20 20 45  hort summary:  E
36b0: 76 65 72 79 74 68 69 6e 67 20 69 73 20 61 20 73  verything is a s
36c0: 74 72 69 6e 67 2e 0a 7d 0a 64 6f 63 20 7b 56 44  tring..}.doc {VD
36d0: 42 45 20 54 75 74 6f 72 69 61 6c 7d 20 7b 76 64  BE Tutorial} {vd
36e0: 62 65 2e 68 74 6d 6c 7d 20 7b 0a 20 20 54 68 65  be.html} {.  The
36f0: 20 56 44 42 45 20 69 73 20 74 68 65 20 73 75 62   VDBE is the sub
3700: 73 79 73 74 65 6d 20 77 69 74 68 69 6e 20 53 51  system within SQ
3710: 4c 69 74 65 20 74 68 61 74 20 64 6f 65 73 20 74  Lite that does t
3720: 68 65 20 61 63 74 75 61 6c 20 77 6f 72 6b 20 6f  he actual work o
3730: 66 0a 20 20 65 78 65 63 75 74 69 6e 67 20 53 51  f.  executing SQ
3740: 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 20 54  L statements.  T
3750: 68 69 73 20 70 61 67 65 20 64 65 73 63 72 69 62  his page describ
3760: 65 73 20 74 68 65 20 70 72 69 6e 63 69 70 6c 65  es the principle
3770: 73 20 6f 66 20 6f 70 65 72 61 74 69 6f 6e 0a 20  s of operation. 
3780: 20 66 6f 72 20 74 68 65 20 56 44 42 45 20 69 6e   for the VDBE in
3790: 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20   SQLite version 
37a0: 32 2e 37 2e 20 20 54 68 69 73 20 69 73 20 65 73  2.7.  This is es
37b0: 73 65 6e 74 69 61 6c 20 72 65 61 64 69 6e 67 20  sential reading 
37c0: 66 6f 72 20 61 6e 79 6f 6e 65 0a 20 20 77 68 6f  for anyone.  who
37d0: 20 77 61 6e 74 20 74 6f 20 6d 6f 64 69 66 79 20   want to modify 
37e0: 74 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63  the SQLite sourc
37f0: 65 73 2e 0a 7d 0a 64 6f 63 20 7b 53 51 4c 69 74  es..}.doc {SQLit
3800: 65 20 56 65 72 73 69 6f 6e 20 33 7d 20 7b 76 65  e Version 3} {ve
3810: 72 73 69 6f 6e 33 2e 68 74 6d 6c 7d 20 7b 0a 20  rsion3.html} {. 
3820: 20 41 20 73 75 6d 6d 61 72 79 20 6f 66 20 74 68   A summary of th
3830: 65 20 63 68 61 6e 67 65 73 20 62 65 74 77 65 65  e changes betwee
3840: 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  n SQLite version
3850: 20 32 2e 38 20 61 6e 64 20 53 51 4c 69 74 65 20   2.8 and SQLite 
3860: 76 65 72 73 69 6f 6e 20 33 2e 30 2e 0a 7d 0a 64  version 3.0..}.d
3870: 6f 63 20 7b 56 65 72 73 69 6f 6e 20 33 20 43 2f  oc {Version 3 C/
3880: 43 2b 2b 20 41 50 49 7d 20 7b 63 61 70 69 33 2e  C++ API} {capi3.
3890: 68 74 6d 6c 7d 20 7b 0a 20 20 41 20 73 75 6d 6d  html} {.  A summ
38a0: 61 72 79 20 6f 66 20 74 68 65 20 41 50 49 20 72  ary of the API r
38b0: 65 6c 61 74 65 64 20 63 68 61 6e 67 65 73 20 62  elated changes b
38c0: 65 74 77 65 65 6e 20 53 51 4c 69 74 65 20 76 65  etween SQLite ve
38d0: 72 73 69 6f 6e 20 32 2e 38 20 61 6e 64 20 0a 20  rsion 2.8 and . 
38e0: 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20   SQLite version 
38f0: 33 2e 30 2e 20 0a 7d 0a 64 6f 63 20 7b 53 70 65  3.0. .}.doc {Spe
3900: 65 64 20 43 6f 6d 70 61 72 69 73 6f 6e 7d 20 7b  ed Comparison} {
3910: 73 70 65 65 64 2e 68 74 6d 6c 7d 20 7b 0a 20 20  speed.html} {.  
3920: 54 68 65 20 73 70 65 65 64 20 6f 66 20 76 65 72  The speed of ver
3930: 73 69 6f 6e 20 32 2e 37 2e 36 20 6f 66 20 53 51  sion 2.7.6 of SQ
3940: 4c 69 74 65 20 69 73 20 63 6f 6d 70 61 72 65 64  Lite is compared
3950: 20 61 67 61 69 6e 73 74 20 50 6f 73 74 67 72 65   against Postgre
3960: 53 51 4c 20 61 6e 64 0a 20 20 4d 79 53 51 4c 2e  SQL and.  MySQL.
3970: 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 2f 74 61 62  .}..</tcl>.</tab
3980: 6c 65 3e 0a                                      le>.