Documentation Source Text

Hex Artifact Content
Login

Artifact 5acc56137dba52fdfd74065075e7c3f0388b2d18:


0000: 3c 74 69 74 6c 65 3e 43 6f 6d 70 69 6c 65 2d 74  <title>Compile-t
0010: 69 6d 65 20 4f 70 74 69 6f 6e 73 3c 2f 74 69 74  ime Options</tit
0020: 6c 65 3e 0a 3c 74 63 6c 3e 68 64 5f 6b 65 79 77  le>.<tcl>hd_keyw
0030: 6f 72 64 73 20 7b 63 6f 6d 70 69 6c 65 2d 74 69  ords {compile-ti
0040: 6d 65 20 6f 70 74 69 6f 6e 73 7d 3c 2f 74 63 6c  me options}</tcl
0050: 3e 0a 0a 3c 74 61 62 6c 65 5f 6f 66 5f 63 6f 6e  >..<table_of_con
0060: 74 65 6e 74 73 3e 0a 0a 3c 68 31 3e 4f 76 65 72  tents>..<h1>Over
0070: 76 69 65 77 3c 2f 68 31 3e 0a 0a 3c 70 3e 0a 46  view</h1>..<p>.F
0080: 6f 72 20 6d 6f 73 74 20 70 75 72 70 6f 73 65 73  or most purposes
0090: 2c 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65 20  , SQLite can be 
00a0: 62 75 69 6c 74 20 6a 75 73 74 20 66 69 6e 65 20  built just fine 
00b0: 75 73 69 6e 67 20 74 68 65 20 64 65 66 61 75 6c  using the defaul
00c0: 74 0a 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 70  t.compilation op
00d0: 74 69 6f 6e 73 2e 20 48 6f 77 65 76 65 72 2c 20  tions. However, 
00e0: 69 66 20 72 65 71 75 69 72 65 64 2c 20 74 68 65  if required, the
00f0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
0100: 74 69 6f 6e 73 0a 64 6f 63 75 6d 65 6e 74 65 64  tions.documented
0110: 20 62 65 6c 6f 77 20 63 61 6e 20 62 65 20 75 73   below can be us
0120: 65 64 20 74 6f 20 0a 3c 61 20 68 72 65 66 3d 22  ed to .<a href="
0130: 23 6f 6d 69 74 66 65 61 74 75 72 65 73 22 3e 6f  #omitfeatures">o
0140: 6d 69 74 20 53 51 4c 69 74 65 20 66 65 61 74 75  mit SQLite featu
0150: 72 65 73 3c 2f 61 3e 20 28 72 65 73 75 6c 74 69  res</a> (resulti
0160: 6e 67 20 69 6e 0a 61 20 5b 72 65 6c 66 6f 6f 74  ng in.a [relfoot
0170: 70 72 69 6e 74 20 7c 20 73 6d 61 6c 6c 65 72 20  print | smaller 
0180: 63 6f 6d 70 69 6c 65 64 20 6c 69 62 72 61 72 79  compiled library
0190: 20 73 69 7a 65 5d 29 20 6f 72 20 74 6f 20 63 68   size]) or to ch
01a0: 61 6e 67 65 20 74 68 65 0a 3c 61 20 68 72 65 66  ange the.<a href
01b0: 3d 22 23 64 65 66 61 75 6c 74 73 22 3e 64 65 66  ="#defaults">def
01c0: 61 75 6c 74 20 76 61 6c 75 65 73 3c 2f 61 3e 20  ault values</a> 
01d0: 6f 66 20 73 6f 6d 65 20 70 61 72 61 6d 65 74 65  of some paramete
01e0: 72 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 45 76  rs..</p>..<p>.Ev
01f0: 65 72 79 20 65 66 66 6f 72 74 20 68 61 73 20 62  ery effort has b
0200: 65 65 6e 20 6d 61 64 65 20 74 6f 20 65 6e 73 75  een made to ensu
0210: 72 65 20 74 68 61 74 20 74 68 65 20 76 61 72 69  re that the vari
0220: 6f 75 73 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73  ous combinations
0230: 0a 6f 66 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20  .of compilation 
0240: 6f 70 74 69 6f 6e 73 20 77 6f 72 6b 20 68 61 72  options work har
0250: 6d 6f 6e 69 6f 75 73 6c 79 20 61 6e 64 20 70 72  moniously and pr
0260: 6f 64 75 63 65 20 61 20 77 6f 72 6b 69 6e 67 20  oduce a working 
0270: 6c 69 62 72 61 72 79 2e 0a 4e 65 76 65 72 74 68  library..Neverth
0280: 65 6c 65 73 73 2c 20 69 74 20 69 73 20 73 74 72  eless, it is str
0290: 6f 6e 67 6c 79 20 72 65 63 6f 6d 6d 65 6e 64 65  ongly recommende
02a0: 64 20 74 68 61 74 20 74 68 65 20 53 51 4c 69 74  d that the SQLit
02b0: 65 20 74 65 73 74 2d 73 75 69 74 65 0a 62 65 20  e test-suite.be 
02c0: 65 78 65 63 75 74 65 64 20 74 6f 20 63 68 65 63  executed to chec
02d0: 6b 20 66 6f 72 20 65 72 72 6f 72 73 20 62 65 66  k for errors bef
02e0: 6f 72 65 20 75 73 69 6e 67 20 61 6e 20 53 51 4c  ore using an SQL
02f0: 69 74 65 20 6c 69 62 72 61 72 79 20 62 75 69 6c  ite library buil
0300: 74 0a 77 69 74 68 20 6e 6f 6e 2d 73 74 61 6e 64  t.with non-stand
0310: 61 72 64 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20  ard compilation 
0320: 6f 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 0a 3c  options..</p>..<
0330: 74 63 6c 3e 0a 70 72 6f 63 20 43 4f 4d 50 49 4c  tcl>.proc COMPIL
0340: 45 5f 4f 50 54 49 4f 4e 20 7b 6e 61 6d 65 20 74  E_OPTION {name t
0350: 65 78 74 7d 20 7b 0a 20 20 69 66 20 7b 5b 72 65  ext} {.  if {[re
0360: 67 65 78 70 20 7b 28 53 51 4c 49 54 45 7c 48 41  gexp {(SQLITE|HA
0370: 56 45 29 5f 28 5b 41 2d 5a 30 2d 39 5f 5d 2b 29  VE)_([A-Z0-9_]+)
0380: 7d 20 24 6e 61 6d 65 20 61 6c 6c 20 70 72 65 66  } $name all pref
0390: 69 78 20 6c 61 62 65 6c 5d 7d 20 7b 0a 20 20 20  ix label]} {.   
03a0: 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 5b 73 74   hd_fragment [st
03b0: 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 24 6c 61  ring tolower $la
03c0: 62 65 6c 5d 0a 20 20 20 20 68 64 5f 6b 65 79 77  bel].    hd_keyw
03d0: 6f 72 64 73 20 24 61 6c 6c 20 2d 44 24 61 6c 6c  ords $all -D$all
03e0: 0a 20 20 7d 0a 20 20 69 66 20 7b 5b 72 65 67 65  .  }.  if {[rege
03f0: 78 70 20 7b 5e 59 59 28 5b 41 2d 5a 30 2d 39 5f  xp {^YY([A-Z0-9_
0400: 5d 2b 29 7d 20 24 6e 61 6d 65 20 61 6c 6c 20 6c  ]+)} $name all l
0410: 61 62 65 6c 5d 7d 20 7b 0a 20 20 20 20 68 64 5f  abel]} {.    hd_
0420: 66 72 61 67 6d 65 6e 74 20 5b 73 74 72 69 6e 67  fragment [string
0430: 20 74 6f 6c 6f 77 65 72 20 24 61 6c 6c 5d 0a 20   tolower $all]. 
0440: 20 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 24     hd_keywords $
0450: 61 6c 6c 0a 20 20 7d 0a 20 20 68 64 5f 70 75 74  all.  }.  hd_put
0460: 73 20 3c 70 3e 3c 62 3e 24 6e 61 6d 65 3c 2f 62  s <p><b>$name</b
0470: 3e 3c 2f 70 3e 0a 20 20 72 65 67 73 75 62 20 2d  ></p>.  regsub -
0480: 61 6c 6c 20 22 5c 6e 5c 5c 73 2a 5c 6e 22 20 24  all "\n\\s*\n" $
0490: 74 65 78 74 20 22 3c 2f 70 3e 5c 6e 5c 6e 3c 70  text "</p>\n\n<p
04a0: 3e 22 20 74 65 78 74 0a 20 20 68 64 5f 72 65 73  >" text.  hd_res
04b0: 6f 6c 76 65 20 3c 62 6c 6f 63 6b 71 75 6f 74 65  olve <blockquote
04c0: 3e 3c 70 3e 24 74 65 78 74 3c 2f 70 3e 3c 2f 62  ><p>$text</p></b
04d0: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 68 64  lockquote>.}..hd
04e0: 5f 66 72 61 67 6d 65 6e 74 20 72 63 6d 64 20 7b  _fragment rcmd {
04f0: 72 65 63 6f 6d 6d 65 6e 64 65 64 20 63 6f 6d 70  recommended comp
0500: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
0510: 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 68 31 3e 52 65  }.</tcl>..<h1>Re
0520: 63 6f 6d 6d 65 6e 64 65 64 20 43 6f 6d 70 69 6c  commended Compil
0530: 65 2d 74 69 6d 65 20 4f 70 74 69 6f 6e 73 3c 2f  e-time Options</
0540: 68 31 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c  h1>..<p>The foll
0550: 6f 77 69 6e 67 20 63 6f 6d 70 69 6c 65 2d 74 69  owing compile-ti
0560: 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 72  me options are r
0570: 65 63 6f 6d 6d 65 6e 64 65 64 20 66 6f 72 20 61  ecommended for a
0580: 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74  pplications that
0590: 0a 61 72 65 20 61 62 6c 65 20 74 6f 20 75 73 65  .are able to use
05a0: 20 74 68 65 6d 2c 20 69 6e 20 6f 72 64 65 72 20   them, in order 
05b0: 74 6f 20 6d 69 6e 69 6d 69 7a 65 64 20 74 68 65  to minimized the
05c0: 20 6e 75 6d 62 65 72 20 6f 66 20 43 50 55 20 63   number of CPU c
05d0: 79 63 6c 65 73 20 61 6e 64 0a 74 68 65 20 62 79  ycles and.the by
05e0: 74 65 73 20 6f 66 20 6d 65 6d 6f 72 79 20 75 73  tes of memory us
05f0: 65 64 20 62 79 20 53 51 4c 69 74 65 2e 0a 4e 6f  ed by SQLite..No
0600: 74 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 63  t all of these c
0610: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
0620: 6f 6e 73 20 61 72 65 20 75 73 61 62 6c 65 20 62  ons are usable b
0630: 79 20 65 76 65 72 79 20 61 70 70 6c 69 63 61 74  y every applicat
0640: 69 6f 6e 2e 0a 46 6f 72 20 65 78 61 6d 70 6c 65  ion..For example
0650: 2c 20 74 68 65 20 53 51 4c 49 54 45 5f 54 48 52  , the SQLITE_THR
0660: 45 41 44 53 41 46 45 3d 30 20 6f 70 74 69 6f 6e  EADSAFE=0 option
0670: 20 69 73 20 6f 6e 6c 79 20 75 73 61 62 6c 65 20   is only usable 
0680: 62 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a  by applications.
0690: 74 68 61 74 20 6e 65 76 65 72 20 61 63 63 65 73  that never acces
06a0: 73 20 53 51 4c 69 74 65 20 66 72 6f 6d 20 6d 6f  s SQLite from mo
06b0: 72 65 20 74 68 61 6e 20 6f 6e 65 20 74 68 72 65  re than one thre
06c0: 61 64 20 61 74 20 61 20 74 69 6d 65 2e 20 20 41  ad at a time.  A
06d0: 6e 64 20 74 68 65 0a 53 51 4c 49 54 45 5f 4f 4d  nd the.SQLITE_OM
06e0: 49 54 5f 50 52 4f 47 45 53 53 5f 43 41 4c 4c 42  IT_PROGESS_CALLB
06f0: 41 43 4b 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6e  ACK option is on
0700: 6c 79 20 75 73 61 62 6c 65 20 62 79 20 61 70 70  ly usable by app
0710: 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 0a 64  lications that.d
0720: 6f 65 20 6e 6f 74 20 75 73 65 20 74 68 65 20 5b  oe not use the [
0730: 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73  sqlite3_progress
0740: 5f 68 61 6e 64 6c 65 72 28 29 5d 20 69 6e 74 65  _handler()] inte
0750: 72 66 61 63 65 2e 20 20 41 6e 64 20 73 6f 20 66  rface.  And so f
0760: 6f 72 74 68 2e 0a 0a 3c 70 3e 49 74 20 69 73 20  orth...<p>It is 
0770: 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 74 65  impossible to te
0780: 73 74 20 65 76 65 72 79 20 70 6f 73 73 69 62 6c  st every possibl
0790: 65 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66  e combination of
07a0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f 70   compile-time.op
07b0: 74 69 6f 6e 73 20 66 6f 72 20 53 51 4c 69 74 65  tions for SQLite
07c0: 2e 20 20 42 75 74 20 74 68 65 20 66 6f 6c 6c 6f  .  But the follo
07d0: 77 69 6e 67 20 73 65 74 20 6f 66 20 63 6f 6d 70  wing set of comp
07e0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
07f0: 20 69 73 0a 6f 6e 65 20 63 6f 6e 66 69 67 75 72   is.one configur
0800: 61 74 69 6f 6e 20 74 68 61 74 20 69 73 20 61 6c  ation that is al
0810: 77 61 79 73 20 66 75 6c 6c 79 20 74 65 73 74 65  ways fully teste
0820: 64 2e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70 3e  d...<ol>.<li><p>
0830: 3c 62 3e 5b 53 51 4c 49 54 45 5f 54 48 52 45 41  <b>[SQLITE_THREA
0840: 44 53 41 46 45 3d 30 5d 3c 2f 62 3e 2e 0a 53 65  DSAFE=0]</b>..Se
0850: 74 74 69 6e 67 20 2d 44 53 51 4c 49 54 45 5f 54  tting -DSQLITE_T
0860: 48 52 45 41 44 53 41 46 45 3d 30 20 63 61 75 73  HREADSAFE=0 caus
0870: 65 73 20 61 6c 6c 20 6f 66 20 74 68 65 20 6d 75  es all of the mu
0880: 74 65 78 20 61 6e 64 20 74 68 72 65 61 64 2d 73  tex and thread-s
0890: 61 66 65 74 79 20 6c 6f 67 69 63 0a 69 6e 20 53  afety logic.in S
08a0: 51 4c 69 74 65 20 74 6f 20 62 65 20 6f 6d 69 74  QLite to be omit
08b0: 74 65 64 2e 20 20 54 68 69 73 20 69 73 20 74 68  ted.  This is th
08c0: 65 20 73 69 6e 67 6c 65 20 63 6f 6d 70 69 6c 65  e single compile
08d0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68 61  -time option tha
08e0: 74 20 6d 61 6b 65 73 0a 74 68 65 20 6d 6f 73 74  t makes.the most
08f0: 20 64 69 66 66 65 72 65 6e 63 65 20 69 6e 20 6f   difference in o
0900: 70 74 69 6d 69 7a 69 6e 67 20 74 68 65 20 70 65  ptimizing the pe
0910: 72 66 6f 72 6d 61 6e 63 65 20 6f 66 20 53 51 4c  rformance of SQL
0920: 69 74 65 2e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e  ite...<li><p><b>
0930: 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  [SQLITE_DEFAULT_
0940: 4d 45 4d 53 54 41 54 55 53 3d 30 5d 3c 2f 62 3e  MEMSTATUS=0]</b>
0950: 2e 0a 54 68 69 73 20 73 65 74 74 69 6e 67 20 63  ..This setting c
0960: 61 75 73 65 73 20 74 68 65 20 5b 73 71 6c 69 74  auses the [sqlit
0970: 65 33 5f 73 74 61 74 75 73 28 29 5d 20 69 6e 74  e3_status()] int
0980: 65 72 66 61 63 65 73 20 74 68 61 74 20 74 72 61  erfaces that tra
0990: 63 6b 20 6d 65 6d 6f 72 79 20 75 73 61 67 65 0a  ck memory usage.
09a0: 74 6f 20 62 65 20 64 69 73 61 62 6c 65 64 2e 20  to be disabled. 
09b0: 20 54 68 69 73 20 68 65 6c 70 73 20 74 68 65 20   This helps the 
09c0: 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  [sqlite3_malloc(
09d0: 29 5d 20 72 6f 75 74 69 6e 65 73 20 72 75 6e 20  )] routines run 
09e0: 6d 75 63 68 20 66 61 73 74 65 72 2c 0a 61 6e 64  much faster,.and
09f0: 20 73 69 6e 63 65 20 53 51 4c 69 74 65 20 75 73   since SQLite us
0a00: 65 73 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  es [sqlite3_mall
0a10: 6f 63 28 29 5d 20 69 6e 74 65 72 6e 61 6c 6c 79  oc()] internally
0a20: 2c 20 74 68 69 73 20 68 65 6c 70 73 20 74 6f 20  , this helps to 
0a30: 6d 61 6b 65 20 74 68 65 0a 65 6e 74 69 72 65 20  make the.entire 
0a40: 6c 69 62 72 61 72 79 20 66 61 73 74 65 72 2e 0a  library faster..
0a50: 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49  .<li><p><b>[SQLI
0a60: 54 45 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f 53  TE_DEFAULT_WAL_S
0a70: 59 4e 43 48 52 4f 4e 4f 55 53 3d 31 5d 3c 2f 62  YNCHRONOUS=1]</b
0a80: 3e 2e 0a 46 6f 72 20 6d 61 78 69 6d 75 6d 20 64  >..For maximum d
0a90: 61 74 61 62 61 73 65 20 73 61 66 65 74 79 20 66  atabase safety f
0aa0: 6f 6c 6c 6f 77 69 6e 67 20 61 20 70 6f 77 65 72  ollowing a power
0ab0: 20 6c 6f 73 65 2c 20 74 68 65 20 73 65 74 74 69   lose, the setti
0ac0: 6e 67 20 6f 66 0a 5b 50 52 41 47 4d 41 20 73 79  ng of.[PRAGMA sy
0ad0: 6e 63 68 72 6f 6e 6f 75 73 3d 46 55 4c 4c 5d 20  nchronous=FULL] 
0ae0: 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2e 20  is recommended. 
0af0: 20 48 6f 77 65 76 65 72 2c 20 69 6e 20 5b 57 41   However, in [WA
0b00: 4c 20 6d 6f 64 65 5d 2c 20 63 6f 6d 70 6c 65 74  L mode], complet
0b10: 65 0a 64 61 74 61 62 61 73 65 20 69 6e 74 65 67  e.database integ
0b20: 72 69 74 79 20 69 73 20 67 75 61 72 61 6e 74 65  rity is guarante
0b30: 65 64 20 77 69 74 68 20 5b 50 52 41 47 4d 41 20  ed with [PRAGMA 
0b40: 73 79 6e 63 68 72 6f 6e 6f 75 73 3d 4e 4f 52 4d  synchronous=NORM
0b50: 41 4c 5d 2e 20 20 57 69 74 68 0a 5b 50 52 41 47  AL].  With.[PRAG
0b60: 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d 4e  MA synchronous=N
0b70: 4f 52 4d 41 4c 5d 20 69 6e 20 5b 57 41 4c 20 6d  ORMAL] in [WAL m
0b80: 6f 64 65 5d 2c 20 72 65 63 65 6e 74 20 63 68 61  ode], recent cha
0b90: 6e 67 65 73 20 74 6f 20 74 68 65 20 64 61 74 61  nges to the data
0ba0: 62 61 73 65 20 6d 69 67 68 74 0a 62 65 20 72 6f  base might.be ro
0bb0: 6c 6c 65 64 20 62 61 63 6b 20 62 79 20 61 20 70  lled back by a p
0bc0: 6f 77 65 72 20 6c 6f 73 73 2c 20 62 75 74 20 74  ower loss, but t
0bd0: 68 65 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c  he database will
0be0: 20 6e 6f 74 20 62 65 20 63 6f 72 72 75 70 74 65   not be corrupte
0bf0: 64 2e 0a 46 75 72 74 68 65 72 6d 6f 72 65 2c 20  d..Furthermore, 
0c00: 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d 6d  transaction comm
0c10: 69 74 20 69 73 20 6d 75 63 68 20 66 61 73 74 65  it is much faste
0c20: 72 20 69 6e 20 57 41 4c 20 6d 6f 64 65 20 75 73  r in WAL mode us
0c30: 69 6e 67 0a 73 79 6e 63 68 72 6f 6e 6f 75 73 3d  ing.synchronous=
0c40: 4e 4f 52 4d 41 4c 20 74 68 61 6e 20 77 69 74 68  NORMAL than with
0c50: 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 79 6e   the default syn
0c60: 63 68 72 6f 6e 6f 75 73 3d 46 55 4c 4c 2e 20 20  chronous=FULL.  
0c70: 46 6f 72 20 74 68 65 73 65 0a 72 65 61 73 6f 6e  For these.reason
0c80: 73 2c 20 69 74 20 69 73 20 72 65 63 6f 6d 6d 65  s, it is recomme
0c90: 6e 64 65 64 20 74 68 61 74 20 74 68 65 20 73 79  nded that the sy
0ca0: 6e 63 68 72 6f 6e 6f 75 73 20 73 65 74 74 69 6e  nchronous settin
0cb0: 67 20 62 65 20 63 68 61 6e 67 65 64 20 66 72 6f  g be changed fro
0cc0: 6d 0a 46 55 4c 4c 20 74 6f 20 4e 4f 52 4d 41 4c  m.FULL to NORMAL
0cd0: 20 77 68 65 6e 20 73 77 69 74 63 68 69 6e 67 20   when switching 
0ce0: 74 6f 20 57 41 4c 20 6d 6f 64 65 2e 20 20 54 68  to WAL mode.  Th
0cf0: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  is compile-time 
0d00: 6f 70 74 69 6f 6e 20 77 69 6c 6c 0a 61 63 63 6f  option will.acco
0d10: 6d 70 6c 69 73 68 20 74 68 61 74 2e 0a 0a 3c 6c  mplish that...<l
0d20: 69 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f  i><p><b>[SQLITE_
0d30: 4c 49 4b 45 5f 44 4f 45 53 4e 54 5f 4d 41 54 43  LIKE_DOESNT_MATC
0d40: 48 5f 42 4c 4f 42 53 5d 3c 2f 62 3e 2e 0a 48 69  H_BLOBS]</b>..Hi
0d50: 73 74 6f 72 69 63 61 6c 6c 79 2c 20 53 51 4c 69  storically, SQLi
0d60: 74 65 20 68 61 73 20 61 6c 6c 6f 77 65 64 20 42  te has allowed B
0d70: 4c 4f 42 20 6f 70 65 72 61 6e 64 73 20 74 6f 20  LOB operands to 
0d80: 74 68 65 20 5b 4c 49 4b 45 5d 20 61 6e 64 20 5b  the [LIKE] and [
0d90: 47 4c 4f 42 5d 0a 6f 70 65 72 61 74 6f 72 73 2e  GLOB].operators.
0da0: 20 20 42 75 74 20 68 61 76 69 6e 67 20 61 20 42    But having a B
0db0: 4c 4f 42 20 61 73 20 61 6e 20 6f 70 65 72 61 6e  LOB as an operan
0dc0: 64 20 6f 66 20 5b 4c 49 4b 45 5d 20 6f 72 20 5b  d of [LIKE] or [
0dd0: 47 4c 4f 42 5d 20 63 6f 6d 70 6c 69 63 61 74 65  GLOB] complicate
0de0: 73 0a 61 6e 64 20 73 6c 6f 77 73 20 74 68 65 20  s.and slows the 
0df0: 5b 4c 49 4b 45 20 6f 70 74 69 6d 69 7a 61 74 69  [LIKE optimizati
0e00: 6f 6e 5d 2e 20 20 57 68 65 6e 20 74 68 69 73 20  on].  When this 
0e10: 6f 70 74 69 6f 6e 20 69 73 20 73 65 74 2c 20 69  option is set, i
0e20: 74 20 6d 65 61 6e 73 20 74 68 61 74 0a 74 68 65  t means that.the
0e30: 20 4c 49 4b 45 20 61 6e 64 20 47 4c 4f 42 20 6f   LIKE and GLOB o
0e40: 70 65 72 61 74 6f 72 73 20 61 6c 77 61 79 73 20  perators always 
0e50: 72 65 74 75 72 6e 20 46 41 4c 53 45 20 69 66 20  return FALSE if 
0e60: 65 69 74 68 65 72 20 6f 70 65 72 61 6e 64 20 69  either operand i
0e70: 73 20 61 20 42 4c 4f 42 2e 0a 54 68 61 74 20 73  s a BLOB..That s
0e80: 69 6d 70 6c 69 66 69 65 73 20 74 68 65 20 69 6d  implifies the im
0e90: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
0ea0: 74 68 65 20 5b 4c 49 4b 45 20 6f 70 74 69 6d 69  the [LIKE optimi
0eb0: 7a 61 74 69 6f 6e 5d 20 61 6e 64 20 61 6c 6c 6f  zation] and allo
0ec0: 77 73 0a 71 75 65 72 69 65 73 20 74 68 61 74 20  ws.queries that 
0ed0: 75 73 65 20 74 68 65 20 5b 4c 49 4b 45 20 6f 70  use the [LIKE op
0ee0: 74 69 6d 69 7a 61 74 69 6f 6e 5d 20 74 6f 20 72  timization] to r
0ef0: 75 6e 20 66 61 73 74 65 72 2e 0a 0a 3c 6c 69 3e  un faster...<li>
0f00: 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 4d 41  <p><b>[SQLITE_MA
0f10: 58 5f 45 58 50 52 5f 44 45 50 54 48 3d 30 5d 3c  X_EXPR_DEPTH=0]<
0f20: 2f 62 3e 2e 0a 53 65 74 74 69 6e 67 20 74 68 65  /b>..Setting the
0f30: 20 6d 61 78 69 6d 75 6d 20 65 78 70 72 65 73 73   maximum express
0f40: 69 6f 6e 20 70 61 72 73 65 2d 74 72 65 65 20 64  ion parse-tree d
0f50: 65 70 74 68 20 74 6f 20 7a 65 72 6f 20 64 69 73  epth to zero dis
0f60: 61 62 6c 65 73 20 61 6c 6c 20 63 68 65 63 6b 69  ables all checki
0f70: 6e 67 0a 6f 66 20 74 68 65 20 65 78 70 72 65 73  ng.of the expres
0f80: 73 69 6f 6e 20 70 61 72 73 65 2d 74 72 65 65 20  sion parse-tree 
0f90: 64 65 70 74 68 2c 20 77 68 69 63 68 20 73 69 6d  depth, which sim
0fa0: 70 6c 69 66 69 65 73 20 74 68 65 20 63 6f 64 65  plifies the code
0fb0: 20 72 65 73 75 6c 74 69 6e 67 20 69 6e 0a 66 61   resulting in.fa
0fc0: 73 74 65 72 20 65 78 65 63 75 74 69 6f 6e 2c 20  ster execution, 
0fd0: 61 6e 64 20 68 65 6c 70 73 20 74 68 65 20 70 61  and helps the pa
0fe0: 72 73 65 20 74 72 65 65 20 74 6f 20 75 73 65 20  rse tree to use 
0ff0: 6c 65 73 73 20 6d 65 6d 6f 72 79 2e 0a 0a 3c 6c  less memory...<l
1000: 69 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f  i><p><b>[SQLITE_
1010: 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45 5d 3c 2f  OMIT_DECLTYPE]</
1020: 62 3e 2e 0a 42 79 20 6f 6d 69 74 74 69 6e 67 20  b>..By omitting 
1030: 74 68 65 20 28 73 65 6c 64 6f 6d 2d 6e 65 65 64  the (seldom-need
1040: 65 64 29 20 61 62 69 6c 69 74 79 20 74 6f 20 72  ed) ability to r
1050: 65 74 75 72 6e 20 74 68 65 20 64 65 63 6c 61 72  eturn the declar
1060: 65 64 20 74 79 70 65 20 6f 66 0a 63 6f 6c 75 6d  ed type of.colum
1070: 6e 73 20 66 72 6f 6d 20 74 68 65 20 72 65 73 75  ns from the resu
1080: 6c 74 20 73 65 74 20 6f 66 20 71 75 65 72 79 2c  lt set of query,
1090: 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
10a0: 6d 65 6e 74 73 5d 20 63 61 6e 20 62 65 20 6d 61  ments] can be ma
10b0: 64 65 0a 74 6f 20 63 6f 6e 73 75 6d 65 20 6c 65  de.to consume le
10c0: 73 73 20 6d 65 6d 6f 72 79 2e 0a 0a 3c 6c 69 3e  ss memory...<li>
10d0: 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 4f 4d  <p><b>[SQLITE_OM
10e0: 49 54 5f 44 45 50 52 45 43 41 54 45 44 5d 3c 2f  IT_DEPRECATED]</
10f0: 62 3e 2e 0a 4f 6d 69 74 74 69 6e 67 20 64 65 70  b>..Omitting dep
1100: 72 65 63 61 74 65 64 20 69 6e 74 65 72 66 61 63  recated interfac
1110: 65 73 20 61 6e 64 20 66 65 61 74 75 72 65 73 20  es and features 
1120: 77 69 6c 6c 20 6e 6f 74 20 68 65 6c 70 20 53 51  will not help SQ
1130: 4c 69 74 65 20 74 6f 0a 72 75 6e 20 61 6e 79 20  Lite to.run any 
1140: 66 61 73 74 65 72 2e 20 20 49 74 20 77 69 6c 6c  faster.  It will
1150: 20 72 65 64 75 63 65 20 74 68 65 20 6c 69 62 72   reduce the libr
1160: 61 72 79 20 66 6f 6f 74 70 72 69 6e 74 2c 20 68  ary footprint, h
1170: 6f 77 65 76 65 72 2e 20 20 41 6e 64 0a 69 74 20  owever.  And.it 
1180: 69 73 20 74 68 65 20 72 69 67 68 74 20 74 68 69  is the right thi
1190: 6e 67 20 74 6f 20 64 6f 2e 0a 0a 3c 6c 69 3e 3c  ng to do...<li><
11a0: 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 4f 4d 49  p><b>[SQLITE_OMI
11b0: 54 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c 42  T_PROGRESS_CALLB
11c0: 41 43 4b 5d 3c 2f 62 3e 2e 0a 54 68 65 20 70 72  ACK]</b>..The pr
11d0: 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72 20 63  ogress handler c
11e0: 61 6c 6c 62 61 63 6b 20 63 6f 75 6e 74 65 72 20  allback counter 
11f0: 6d 75 73 74 20 62 65 20 63 68 65 63 6b 65 64 20  must be checked 
1200: 69 6e 20 74 68 65 20 69 6e 6e 65 72 20 6c 6f 6f  in the inner loo
1210: 70 0a 6f 66 20 74 68 65 20 5b 62 79 74 65 63 6f  p.of the [byteco
1220: 64 65 20 65 6e 67 69 6e 65 5d 2e 20 20 42 79 20  de engine].  By 
1230: 6f 6d 69 74 74 69 6e 67 20 74 68 69 73 20 69 6e  omitting this in
1240: 74 65 72 66 61 63 65 2c 20 61 20 73 69 6e 67 6c  terface, a singl
1250: 65 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 0a 69 73  e conditional.is
1260: 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68   removed from th
1270: 65 20 69 6e 6e 65 72 20 6c 6f 6f 70 20 6f 66 20  e inner loop of 
1280: 74 68 65 20 5b 62 79 74 65 63 6f 64 65 20 65 6e  the [bytecode en
1290: 67 69 6e 65 5d 2c 20 68 65 6c 70 69 6e 67 20 53  gine], helping S
12a0: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 0a 74 6f  QL statements.to
12b0: 20 72 75 6e 20 73 6c 69 67 68 74 6c 79 20 66 61   run slightly fa
12c0: 73 74 65 72 2e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62  ster...<li><p><b
12d0: 3e 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 48  >[SQLITE_OMIT_SH
12e0: 41 52 45 44 5f 43 41 43 48 45 5d 3c 2f 62 3e 2e  ARED_CACHE]</b>.
12f0: 0a 4f 6d 69 74 74 69 6e 67 20 74 68 65 20 70 6f  .Omitting the po
1300: 73 73 69 62 69 6c 69 74 79 20 6f 66 20 75 73 69  ssibility of usi
1310: 6e 67 20 5b 73 68 61 72 65 64 20 63 61 63 68 65  ng [shared cache
1320: 5d 20 61 6c 6c 6f 77 73 20 6d 61 6e 79 20 63 6f  ] allows many co
1330: 6e 64 69 74 69 6f 6e 61 6c 73 0a 69 6e 20 70 65  nditionals.in pe
1340: 72 66 6f 72 6d 61 6e 63 65 2d 63 72 69 74 69 63  rformance-critic
1350: 61 6c 20 73 65 63 74 69 6f 6e 73 20 6f 66 20 74  al sections of t
1360: 68 65 20 63 6f 64 65 20 74 6f 20 62 65 20 65 6c  he code to be el
1370: 69 6d 69 6e 61 74 65 64 2e 20 20 54 68 69 73 20  iminated.  This 
1380: 63 61 6e 0a 67 69 76 65 20 61 20 6e 6f 74 69 63  can.give a notic
1390: 61 62 6c 65 20 69 6d 70 72 6f 76 65 6d 65 6e 74  able improvement
13a0: 20 69 6e 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e   in performance.
13b0: 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 57 68 65 6e 20  .</ol>..<p>When 
13c0: 61 6c 6c 20 6f 66 20 74 68 65 20 72 65 63 6f 6d  all of the recom
13d0: 6d 65 6e 64 65 64 20 63 6f 6d 70 69 6c 65 2d 74  mended compile-t
13e0: 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 62 6f 76  ime options abov
13f0: 65 20 61 72 65 20 75 73 65 64 2c 0a 74 68 65 20  e are used,.the 
1400: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 77  SQLite library w
1410: 69 6c 6c 20 62 65 20 61 70 70 72 6f 78 69 6d 61  ill be approxima
1420: 74 65 6c 79 20 33 25 20 73 6d 61 6c 6c 65 72 20  tely 3% smaller 
1430: 61 6e 64 20 75 73 65 20 61 62 6f 75 74 20 35 25  and use about 5%
1440: 20 66 65 77 65 72 0a 43 50 55 20 63 79 63 6c 65   fewer.CPU cycle
1450: 73 2e 20 20 53 6f 20 74 68 65 73 65 20 6f 70 74  s.  So these opt
1460: 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 6d 61 6b 65  ions do not make
1470: 20 61 20 68 75 67 65 20 64 69 66 66 65 72 65 6e   a huge differen
1480: 63 65 2e 20 20 42 75 74 20 69 6e 20 0a 73 6f 6d  ce.  But in .som
1490: 65 20 64 65 73 69 67 6e 20 73 69 74 75 61 74 69  e design situati
14a0: 6f 6e 73 2c 20 65 76 65 72 79 20 6c 69 74 74 6c  ons, every littl
14b0: 65 20 62 69 74 20 68 65 6c 70 73 2e 0a 0a 3c 61  e bit helps...<a
14c0: 20 6e 61 6d 65 3d 22 6f 73 63 6f 6e 66 69 67 22   name="osconfig"
14d0: 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 50 6c 61 74 66  ></a>.<h1> Platf
14e0: 6f 72 6d 20 43 6f 6e 66 69 67 75 72 61 74 69 6f  orm Configuratio
14f0: 6e 3c 2f 68 31 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f  n</h1>..<tcl>.CO
1500: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 5f 48  MPILE_OPTION {_H
1510: 41 56 45 5f 53 51 4c 49 54 45 5f 43 4f 4e 46 49  AVE_SQLITE_CONFI
1520: 47 5f 48 7d 20 7b 0a 20 20 49 66 20 74 68 65 20  G_H} {.  If the 
1530: 5f 48 41 56 45 5f 53 51 4c 49 54 45 5f 43 4f 4e  _HAVE_SQLITE_CON
1540: 46 49 47 5f 48 20 6d 61 63 72 6f 20 69 73 20 64  FIG_H macro is d
1550: 65 66 69 6e 65 64 0a 20 20 74 68 65 6e 20 74 68  efined.  then th
1560: 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65 20  e SQLite source 
1570: 63 6f 64 65 20 77 69 6c 6c 20 61 74 74 65 6d 70  code will attemp
1580: 74 20 74 6f 20 23 69 6e 63 6c 75 64 65 20 61 20  t to #include a 
1590: 66 69 6c 65 20 6e 61 6d 65 64 20 22 63 6f 6e 66  file named "conf
15a0: 69 67 2e 68 22 2e 0a 20 20 54 68 65 20 22 63 6f  ig.h"..  The "co
15b0: 6e 66 69 67 2e 68 22 20 66 69 6c 65 20 75 73 75  nfig.h" file usu
15c0: 61 6c 6c 79 20 63 6f 6e 74 61 69 6e 73 20 6f 74  ally contains ot
15d0: 68 65 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  her configuratio
15e0: 6e 20 6f 70 74 69 6f 6e 73 2c 20 65 73 70 65 63  n options, espec
15f0: 69 61 6c 6c 79 0a 20 20 22 48 41 56 45 5f 3c 69  ially.  "HAVE_<i
1600: 3e 49 4e 54 45 52 46 41 43 45 3c 2f 69 3e 22 20  >INTERFACE</i>" 
1610: 74 79 70 65 20 6f 70 74 69 6f 6e 73 20 67 65 6e  type options gen
1620: 65 72 61 74 65 64 20 62 79 20 61 75 74 6f 63 6f  erated by autoco
1630: 6e 66 20 73 63 72 69 70 74 73 2e 0a 7d 0a 0a 43  nf scripts..}..C
1640: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48  OMPILE_OPTION {H
1650: 41 56 45 5f 46 44 41 54 41 53 59 4e 43 7d 20 7b  AVE_FDATASYNC} {
1660: 0a 20 20 49 66 20 74 68 65 20 48 41 56 45 5f 46  .  If the HAVE_F
1670: 44 41 54 41 53 59 4e 43 20 63 6f 6d 70 69 6c 65  DATASYNC compile
1680: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20  -time option is 
1690: 74 72 75 65 2c 20 74 68 65 6e 20 74 68 65 20 64  true, then the d
16a0: 65 66 61 75 6c 74 20 5b 56 46 53 5d 0a 20 20 66  efault [VFS].  f
16b0: 6f 72 20 75 6e 69 78 20 73 79 73 74 65 6d 73 20  or unix systems 
16c0: 77 69 6c 6c 20 61 74 74 65 6d 70 74 20 74 6f 20  will attempt to 
16d0: 75 73 65 20 66 64 61 74 61 73 79 6e 63 28 29 20  use fdatasync() 
16e0: 69 6e 73 74 65 61 64 20 6f 66 20 66 73 79 6e 63  instead of fsync
16f0: 28 29 20 77 68 65 72 65 0a 20 20 61 70 70 72 6f  () where.  appro
1700: 70 72 69 61 74 65 2e 20 20 49 66 20 74 68 69 73  priate.  If this
1710: 20 66 6c 61 67 20 69 73 20 6d 69 73 73 69 6e 67   flag is missing
1720: 20 6f 72 20 66 61 6c 73 65 2c 20 74 68 65 6e 20   or false, then 
1730: 66 73 79 6e 63 28 29 20 69 73 20 61 6c 77 61 79  fsync() is alway
1740: 73 20 75 73 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  s used..}..COMPI
1750: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f  LE_OPTION {HAVE_
1760: 47 4d 54 49 4d 45 5f 52 7d 20 7b 0a 20 20 49 66  GMTIME_R} {.  If
1770: 20 74 68 65 20 48 41 56 45 5f 47 4d 54 49 4d 45   the HAVE_GMTIME
1780: 5f 52 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75  _R option is tru
1790: 65 20 61 6e 64 20 69 66 20 5b 53 51 4c 49 54 45  e and if [SQLITE
17a0: 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f 46  _OMIT_DATETIME_F
17b0: 55 4e 43 53 5d 20 69 73 20 74 72 75 65 2c 0a 20  UNCS] is true,. 
17c0: 20 74 68 65 6e 20 74 68 65 20 43 55 52 52 45 4e   then the CURREN
17d0: 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f  T_TIME, CURRENT_
17e0: 44 41 54 45 2c 20 61 6e 64 20 43 55 52 52 45 4e  DATE, and CURREN
17f0: 54 5f 54 49 4d 45 53 54 41 4d 50 20 6b 65 79 77  T_TIMESTAMP keyw
1800: 6f 72 64 73 20 77 69 6c 6c 20 75 73 65 0a 20 20  ords will use.  
1810: 74 68 65 20 74 68 72 65 61 64 73 61 66 65 20 22  the threadsafe "
1820: 67 6d 74 69 6d 65 5f 72 28 29 22 20 69 6e 74 65  gmtime_r()" inte
1830: 72 66 61 63 65 20 72 61 74 68 65 72 20 74 68 61  rface rather tha
1840: 6e 20 22 67 6d 74 69 6d 65 28 29 22 2e 20 20 49  n "gmtime()".  I
1850: 6e 20 74 68 65 20 75 73 75 61 6c 20 63 61 73 65  n the usual case
1860: 0a 20 20 77 68 65 72 65 20 5b 53 51 4c 49 54 45  .  where [SQLITE
1870: 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f 46  _OMIT_DATETIME_F
1880: 55 4e 43 53 5d 20 69 73 20 6e 6f 74 20 64 65 66  UNCS] is not def
1890: 69 6e 65 64 20 6f 72 20 69 73 20 66 61 6c 73 65  ined or is false
18a0: 2c 20 74 68 65 6e 20 74 68 65 0a 20 20 62 75 69  , then the.  bui
18b0: 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e 64 20  lt-in [date and 
18c0: 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d 20  time functions] 
18d0: 61 72 65 20 75 73 65 64 20 74 6f 20 69 6d 70 6c  are used to impl
18e0: 65 6d 65 6e 74 20 74 68 65 20 43 55 52 52 45 4e  ement the CURREN
18f0: 54 5f 54 49 4d 45 2c 0a 20 20 43 55 52 52 45 4e  T_TIME,.  CURREN
1900: 54 5f 44 41 54 45 2c 20 61 6e 64 20 43 55 52 52  T_DATE, and CURR
1910: 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 6b 65  ENT_TIMESTAMP ke
1920: 79 77 6f 72 64 73 20 61 6e 64 20 6e 65 69 74 68  ywords and neith
1930: 65 72 20 67 6d 74 69 6d 65 5f 72 28 29 20 6e 6f  er gmtime_r() no
1940: 72 0a 20 20 67 6d 74 69 6d 65 28 29 20 69 73 20  r.  gmtime() is 
1950: 65 76 65 72 20 63 61 6c 6c 65 64 2e 0a 7d 0a 0a  ever called..}..
1960: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
1970: 48 41 56 45 5f 49 53 4e 41 4e 7d 20 7b 0a 20 20  HAVE_ISNAN} {.  
1980: 49 66 20 74 68 65 20 48 41 56 45 5f 49 53 4e 41  If the HAVE_ISNA
1990: 4e 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65  N option is true
19a0: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 69 6e  , then SQLite in
19b0: 76 6f 6b 65 73 20 74 68 65 20 73 79 73 74 65 6d  vokes the system
19c0: 20 6c 69 62 72 61 72 79 20 69 73 6e 61 6e 28 29   library isnan()
19d0: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 64  .  function to d
19e0: 65 74 65 72 6d 69 6e 65 20 69 66 20 61 20 64 6f  etermine if a do
19f0: 75 62 6c 65 2d 70 72 65 63 69 73 69 6f 6e 20 66  uble-precision f
1a00: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61  loating point va
1a10: 6c 75 65 20 69 73 20 61 20 4e 61 4e 2e 0a 20 20  lue is a NaN..  
1a20: 49 66 20 48 41 56 45 5f 49 53 4e 41 4e 20 69 73  If HAVE_ISNAN is
1a30: 20 75 6e 64 65 66 69 6e 65 64 20 6f 72 20 66 61   undefined or fa
1a40: 6c 73 65 2c 20 74 68 65 6e 20 53 51 4c 69 74 65  lse, then SQLite
1a50: 20 73 75 62 73 74 69 74 75 74 65 73 20 69 74 73   substitutes its
1a60: 20 6f 77 6e 20 68 6f 6d 65 2d 67 72 6f 77 6e 0a   own home-grown.
1a70: 20 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e    implementation
1a80: 20 6f 66 20 69 73 6e 61 6e 28 29 2e 0a 7d 0a 0a   of isnan()..}..
1a90: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
1aa0: 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f 52  HAVE_LOCALTIME_R
1ab0: 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48 41 56  } {.  If the HAV
1ac0: 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f 52 20 6f 70  E_LOCALTIME_R op
1ad0: 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20 74 68  tion is true, th
1ae0: 65 6e 20 53 51 4c 69 74 65 20 75 73 65 73 20 74  en SQLite uses t
1af0: 68 65 20 74 68 72 65 61 64 73 61 66 65 0a 20 20  he threadsafe.  
1b00: 6c 6f 63 61 6c 74 69 6d 65 5f 72 28 29 20 6c 69  localtime_r() li
1b10: 62 72 61 72 79 20 72 6f 75 74 69 6e 65 20 69 6e  brary routine in
1b20: 73 74 65 61 64 20 6f 66 20 6c 6f 63 61 6c 74 69  stead of localti
1b30: 6d 65 28 29 0a 20 20 74 6f 20 68 65 6c 70 20 69  me().  to help i
1b40: 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 5b 6c 6f  mplement the [lo
1b50: 63 61 6c 74 69 6d 65 20 6d 6f 64 69 66 69 65 72  caltime modifier
1b60: 5d 0a 20 20 74 6f 20 74 68 65 20 62 75 69 6c 74  ].  to the built
1b70: 2d 69 6e 20 5b 64 61 74 65 20 61 6e 64 20 74 69  -in [date and ti
1b80: 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d 2e 0a 7d  me functions]..}
1b90: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1ba0: 20 7b 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45   {HAVE_LOCALTIME
1bb0: 5f 53 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48  _S} {.  If the H
1bc0: 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f 53 20  AVE_LOCALTIME_S 
1bd0: 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20  option is true, 
1be0: 74 68 65 6e 20 53 51 4c 69 74 65 20 75 73 65 73  then SQLite uses
1bf0: 20 74 68 65 20 74 68 72 65 61 64 73 61 66 65 0a   the threadsafe.
1c00: 20 20 6c 6f 63 61 6c 74 69 6d 65 5f 73 28 29 20    localtime_s() 
1c10: 6c 69 62 72 61 72 79 20 72 6f 75 74 69 6e 65 20  library routine 
1c20: 69 6e 73 74 65 61 64 20 6f 66 20 6c 6f 63 61 6c  instead of local
1c30: 74 69 6d 65 28 29 0a 20 20 74 6f 20 68 65 6c 70  time().  to help
1c40: 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 5b   implement the [
1c50: 6c 6f 63 61 6c 74 69 6d 65 20 6d 6f 64 69 66 69  localtime modifi
1c60: 65 72 5d 0a 20 20 74 6f 20 74 68 65 20 62 75 69  er].  to the bui
1c70: 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e 64 20  lt-in [date and 
1c80: 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d 2e  time functions].
1c90: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
1ca0: 4f 4e 20 7b 48 41 56 45 5f 4d 41 4c 4c 4f 43 5f  ON {HAVE_MALLOC_
1cb0: 55 53 41 42 4c 45 5f 53 49 5a 45 7d 20 7b 0a 20  USABLE_SIZE} {. 
1cc0: 20 49 66 20 74 68 65 20 48 41 56 45 5f 4d 41 4c   If the HAVE_MAL
1cd0: 4c 4f 43 5f 55 53 41 42 4c 45 5f 53 49 5a 45 20  LOC_USABLE_SIZE 
1ce0: 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20  option is true, 
1cf0: 74 68 65 6e 20 53 51 4c 69 74 65 20 74 72 69 65  then SQLite trie
1d00: 73 20 75 73 65 73 20 74 68 65 0a 20 20 6d 61 6c  s uses the.  mal
1d10: 6c 6f 63 5f 75 73 61 62 6c 65 5f 73 69 7a 65 28  loc_usable_size(
1d20: 29 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 66  ) interface to f
1d30: 69 6e 64 20 74 68 65 20 73 69 7a 65 20 6f 66 20  ind the size of 
1d40: 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  a memory allocat
1d50: 69 6f 6e 20 6f 62 74 61 69 6e 65 64 0a 20 20 66  ion obtained.  f
1d60: 72 6f 6d 20 74 68 65 20 73 74 61 6e 64 61 72 64  rom the standard
1d70: 2d 6c 69 62 72 61 72 79 20 6d 61 6c 6c 6f 63 28  -library malloc(
1d80: 29 20 6f 72 20 72 65 61 6c 6c 6f 63 28 29 20 72  ) or realloc() r
1d90: 6f 75 74 69 6e 65 73 2e 20 20 54 68 69 73 20 6f  outines.  This o
1da0: 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 0a 20 20  ption is only.  
1db0: 61 70 70 6c 69 63 61 62 6c 65 20 69 66 20 74 68  applicable if th
1dc0: 65 20 73 74 61 6e 64 61 72 64 2d 6c 69 62 72 61  e standard-libra
1dd0: 72 79 20 6d 61 6c 6c 6f 63 28 29 20 69 73 20 75  ry malloc() is u
1de0: 73 65 64 2e 20 20 4f 6e 20 41 70 70 6c 65 20 73  sed.  On Apple s
1df0: 79 73 74 65 6d 73 2c 0a 20 20 22 7a 6f 6e 65 20  ystems,.  "zone 
1e00: 6d 61 6c 6c 6f 63 22 20 69 73 20 75 73 65 64 20  malloc" is used 
1e10: 69 6e 73 74 65 61 64 2c 20 61 6e 64 20 73 6f 20  instead, and so 
1e20: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e  this option is n
1e30: 6f 74 20 61 70 70 6c 69 63 61 62 6c 65 2e 20 20  ot applicable.  
1e40: 41 6e 64 2c 20 6f 66 0a 20 20 63 6f 75 72 73 65  And, of.  course
1e50: 2c 20 69 66 20 74 68 65 20 61 70 70 6c 69 63 61  , if the applica
1e60: 74 69 6f 6e 20 73 75 70 70 6c 69 65 73 20 69 74  tion supplies it
1e70: 73 20 6f 77 6e 20 6d 61 6c 6c 6f 63 20 69 6d 70  s own malloc imp
1e80: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 75 73 69 6e  lementation usin
1e90: 67 0a 20 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  g.  [SQLITE_CONF
1ea0: 49 47 5f 4d 41 4c 4c 4f 43 5d 20 74 68 65 6e 20  IG_MALLOC] then 
1eb0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 68 61 73 20  this option has 
1ec0: 6e 6f 20 65 66 66 65 63 74 2e 0a 20 20 3c 70 3e  no effect..  <p>
1ed0: 0a 20 20 49 66 20 74 68 65 20 48 41 56 45 5f 4d  .  If the HAVE_M
1ee0: 41 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f 53 49 5a  ALLOC_USABLE_SIZ
1ef0: 45 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6d 69 74  E option is omit
1f00: 74 65 64 20 6f 72 20 69 73 20 66 61 6c 73 65 2c  ted or is false,
1f10: 20 74 68 65 6e 20 53 51 4c 69 74 65 20 0a 20 20   then SQLite .  
1f20: 75 73 65 73 20 61 20 77 72 61 70 70 65 72 20 61  uses a wrapper a
1f30: 72 6f 75 6e 64 20 73 79 73 74 65 6d 20 6d 61 6c  round system mal
1f40: 6c 6f 63 28 29 20 61 6e 64 20 72 65 61 6c 6c 6f  loc() and reallo
1f50: 63 28 29 20 74 68 61 74 20 65 6e 6c 61 72 67 65  c() that enlarge
1f60: 73 20 65 61 63 68 20 61 6c 6c 6f 63 61 74 69 6f  s each allocatio
1f70: 6e 0a 20 20 62 79 20 38 20 62 79 74 65 73 20 61  n.  by 8 bytes a
1f80: 6e 64 20 77 72 69 74 65 73 20 74 68 65 20 73 69  nd writes the si
1f90: 7a 65 20 6f 66 20 74 68 65 20 61 6c 6c 6f 63 61  ze of the alloca
1fa0: 74 69 6f 6e 20 69 6e 20 74 68 65 20 69 6e 69 74  tion in the init
1fb0: 69 61 6c 20 38 20 62 79 74 65 73 2c 20 61 6e 64  ial 8 bytes, and
1fc0: 0a 20 20 74 68 65 6e 20 53 51 4c 69 74 65 20 61  .  then SQLite a
1fd0: 6c 73 6f 20 69 6d 70 6c 65 6d 65 6e 74 73 20 69  lso implements i
1fe0: 74 73 20 6f 77 6e 20 68 6f 6d 65 2d 67 72 6f 77  ts own home-grow
1ff0: 6e 20 76 65 72 73 69 6f 6e 20 6f 66 20 6d 61 6c  n version of mal
2000: 6c 6f 63 5f 75 73 61 62 6c 65 5f 73 69 7a 65 28  loc_usable_size(
2010: 29 0a 20 20 74 68 61 74 20 63 6f 6e 73 75 6c 74  ).  that consult
2020: 73 20 74 68 61 74 20 38 2d 62 79 74 65 20 70 72  s that 8-byte pr
2030: 65 66 69 78 20 74 6f 20 66 69 6e 64 20 74 68 65  efix to find the
2040: 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69 7a 65   allocation size
2050: 2e 20 20 54 68 69 73 20 61 70 70 72 6f 61 63 68  .  This approach
2060: 0a 20 20 77 6f 72 6b 73 20 62 75 74 20 69 74 20  .  works but it 
2070: 69 73 20 73 75 62 6f 70 74 69 6d 61 6c 2e 20 20  is suboptimal.  
2080: 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 61 72 65  Applications are
2090: 20 65 6e 63 6f 75 72 61 67 65 64 20 74 6f 20 75   encouraged to u
20a0: 73 65 0a 20 20 48 41 56 45 5f 4d 41 4c 4c 4f 43  se.  HAVE_MALLOC
20b0: 5f 55 53 41 42 4c 45 5f 53 49 5a 45 20 77 68 65  _USABLE_SIZE whe
20c0: 6e 65 76 65 72 20 70 6f 73 73 69 62 6c 65 2e 0a  never possible..
20d0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
20e0: 4e 20 7b 48 41 56 45 5f 53 54 52 43 48 52 4e 55  N {HAVE_STRCHRNU
20f0: 4c 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48 41  L} {.  If the HA
2100: 56 45 5f 53 54 52 43 48 52 4e 55 4c 20 6f 70 74  VE_STRCHRNUL opt
2110: 69 6f 6e 20 69 73 20 74 72 75 65 2c 20 74 68 65  ion is true, the
2120: 6e 20 53 51 4c 69 74 65 20 75 73 65 73 20 74 68  n SQLite uses th
2130: 65 20 73 74 72 63 68 72 6e 75 6c 28 29 20 6c 69  e strchrnul() li
2140: 62 72 61 72 79 0a 20 20 66 75 6e 63 74 69 6f 6e  brary.  function
2150: 2e 20 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f  .  If this optio
2160: 6e 20 69 73 20 6d 69 73 73 69 6e 67 20 6f 72 20  n is missing or 
2170: 66 61 6c 73 65 2c 20 74 68 65 6e 20 53 51 4c 69  false, then SQLi
2180: 74 65 20 73 75 62 73 74 69 74 75 74 65 73 20 69  te substitutes i
2190: 74 73 20 6f 77 6e 0a 20 20 68 6f 6d 65 2d 67 72  ts own.  home-gr
21a0: 6f 77 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  own implementati
21b0: 6f 6e 20 6f 66 20 73 74 72 63 68 72 6e 75 6c 28  on of strchrnul(
21c0: 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  )..}..COMPILE_OP
21d0: 54 49 4f 4e 20 7b 48 41 56 45 5f 55 53 4c 45 45  TION {HAVE_USLEE
21e0: 50 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48 41  P} {.  If the HA
21f0: 56 45 5f 55 53 4c 45 45 50 20 6f 70 74 69 6f 6e  VE_USLEEP option
2200: 20 69 73 20 74 72 75 65 2c 20 74 68 65 6e 20 74   is true, then t
2210: 68 65 20 64 65 66 61 75 6c 74 20 75 6e 69 78 20  he default unix 
2220: 56 46 53 20 75 73 65 73 20 74 68 65 0a 20 20 75  VFS uses the.  u
2230: 73 6c 65 65 70 28 29 20 73 79 73 74 65 6d 20 63  sleep() system c
2240: 61 6c 6c 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  all to implement
2250: 20 74 68 65 20 78 53 6c 65 65 70 20 6d 65 74 68   the xSleep meth
2260: 6f 64 2e 20 20 49 66 20 74 68 69 73 20 6f 70 74  od.  If this opt
2270: 69 6f 6e 20 69 73 0a 20 20 75 6e 64 65 66 69 6e  ion is.  undefin
2280: 65 64 20 6f 72 20 66 61 6c 73 65 2c 20 74 68 65  ed or false, the
2290: 6e 20 78 53 6c 65 65 70 20 6f 6e 20 75 6e 69 78  n xSleep on unix
22a0: 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20   is implemented 
22b0: 75 73 69 6e 67 20 73 6c 65 65 70 28 29 20 77 68  using sleep() wh
22c0: 69 63 68 0a 20 20 6d 65 61 6e 73 20 74 68 61 74  ich.  means that
22d0: 20 5b 73 71 6c 69 74 65 33 5f 73 6c 65 65 70 28   [sqlite3_sleep(
22e0: 29 5d 20 77 69 6c 6c 20 68 61 76 65 20 61 20 6d  )] will have a m
22f0: 69 6e 69 6d 75 6d 20 77 61 69 74 20 69 6e 74 65  inimum wait inte
2300: 72 76 61 6c 20 6f 66 20 31 30 30 30 0a 20 20 6d  rval of 1000.  m
2310: 69 6c 6c 69 73 65 63 6f 6e 64 73 20 72 65 67 61  illiseconds rega
2320: 72 64 6c 65 73 73 20 6f 66 20 69 74 73 20 61 72  rdless of its ar
2330: 67 75 6d 65 6e 74 2e 20 20 0a 7d 0a 0a 43 4f 4d  gument.  .}..COM
2340: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56  PILE_OPTION {HAV
2350: 45 5f 55 54 49 4d 45 7d 20 7b 0a 20 20 49 66 20  E_UTIME} {.  If 
2360: 74 68 65 20 48 41 56 45 5f 55 54 49 4d 45 20 6f  the HAVE_UTIME o
2370: 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20 74  ption is true, t
2380: 68 65 6e 20 74 68 65 20 62 75 69 6c 74 2d 69 6e  hen the built-in
2390: 20 62 75 74 20 6e 6f 6e 2d 73 74 61 6e 64 61 72   but non-standar
23a0: 64 0a 20 20 22 75 6e 69 78 2d 64 6f 74 66 69 6c  d.  "unix-dotfil
23b0: 65 22 20 56 46 53 20 77 69 6c 6c 20 75 73 65 20  e" VFS will use 
23c0: 74 68 65 20 75 74 69 6d 65 28 29 20 73 79 73 74  the utime() syst
23d0: 65 6d 20 63 61 6c 6c 2c 20 69 6e 73 74 65 61 64  em call, instead
23e0: 20 6f 66 20 75 74 69 6d 65 73 28 29 2c 0a 20 20   of utimes(),.  
23f0: 74 6f 20 73 65 74 20 74 68 65 20 6c 61 73 74 20  to set the last 
2400: 61 63 63 65 73 73 20 74 69 6d 65 20 6f 6e 20 74  access time on t
2410: 68 65 20 6c 6f 63 6b 20 66 69 6c 65 2e 0a 7d 0a  he lock file..}.
2420: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
2430: 7b 53 51 4c 49 54 45 5f 42 59 54 45 4f 52 44 45  {SQLITE_BYTEORDE
2440: 52 3d 3c 69 3e 28 30 7c 31 32 33 34 7c 34 33 32  R=<i>(0|1234|432
2450: 31 29 3c 2f 69 3e 7d 20 7b 0a 20 20 53 51 4c 69  1)</i>} {.  SQLi
2460: 74 65 20 6e 65 65 64 73 20 74 6f 20 6b 6e 6f 77  te needs to know
2470: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 62   if the native b
2480: 79 74 65 20 6f 72 64 65 72 20 6f 66 20 74 68 65  yte order of the
2490: 20 74 61 72 67 65 74 20 43 50 55 20 69 73 0a 20   target CPU is. 
24a0: 20 62 69 67 2d 65 6e 64 69 61 6e 20 6f 72 20 6c   big-endian or l
24b0: 69 74 74 6c 65 2d 65 6e 64 69 6e 67 2e 20 20 54  ittle-ending.  T
24c0: 68 65 20 53 51 4c 49 54 45 5f 42 59 54 45 4f 52  he SQLITE_BYTEOR
24d0: 44 45 52 20 70 72 65 70 72 6f 63 65 73 73 6f 72  DER preprocessor
24e0: 20 69 73 20 73 65 74 0a 20 20 74 6f 20 34 33 32   is set.  to 432
24f0: 31 20 66 6f 72 20 62 69 67 2d 65 6e 64 69 61 6e  1 for big-endian
2500: 20 6d 61 63 68 69 6e 65 73 20 61 6e 64 20 31 32   machines and 12
2510: 33 34 20 66 6f 72 20 6c 69 74 74 6c 65 2d 65 6e  34 for little-en
2520: 64 69 61 6e 20 6d 61 63 68 69 6e 65 73 2c 20 6f  dian machines, o
2530: 72 0a 20 20 69 74 20 63 61 6e 20 62 65 20 30 20  r.  it can be 0 
2540: 74 6f 20 6d 65 61 6e 20 74 68 61 74 20 74 68 65  to mean that the
2550: 20 62 79 74 65 20 6f 72 64 65 72 20 6d 75 73 74   byte order must
2560: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20 61   be determined a
2570: 74 20 72 75 6e 2d 74 69 6d 65 2e 0a 20 20 54 68  t run-time..  Th
2580: 65 72 65 20 61 72 65 20 23 69 66 64 65 66 73 20  ere are #ifdefs 
2590: 69 6e 20 74 68 65 20 63 6f 64 65 20 74 68 61 74  in the code that
25a0: 20 73 65 74 20 53 51 4c 49 54 45 5f 42 59 54 45   set SQLITE_BYTE
25b0: 4f 52 44 45 52 20 61 75 74 6f 6d 61 74 69 63 61  ORDER automatica
25c0: 6c 6c 79 0a 20 20 66 6f 72 20 61 6c 6c 20 63 6f  lly.  for all co
25d0: 6d 6d 6f 6e 20 70 6c 61 74 66 6f 72 6d 73 20 61  mmon platforms a
25e0: 6e 64 20 63 6f 6d 70 69 6c 65 72 73 2e 20 20 48  nd compilers.  H
25f0: 6f 77 65 76 65 72 2c 20 69 74 20 6d 61 79 20 62  owever, it may b
2600: 65 20 61 64 76 61 6e 74 61 67 65 6f 75 73 0a 20  e advantageous. 
2610: 20 74 6f 20 73 65 74 20 53 51 4c 49 54 45 5f 42   to set SQLITE_B
2620: 59 54 45 4f 52 44 45 52 20 61 70 70 72 6f 70 72  YTEORDER appropr
2630: 69 61 74 65 6c 79 20 77 68 65 6e 20 63 6f 6d 70  iately when comp
2640: 69 6c 69 6e 67 20 53 51 4c 69 74 65 20 66 6f 72  iling SQLite for
2650: 20 6f 62 73 63 75 72 65 0a 20 20 74 61 72 67 65   obscure.  targe
2660: 74 73 2e 20 20 49 66 20 74 68 65 20 74 61 72 67  ts.  If the targ
2670: 65 74 20 62 79 74 65 20 6f 72 64 65 72 20 63 61  et byte order ca
2680: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
2690: 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  ed at compile-ti
26a0: 6d 65 2c 0a 20 20 74 68 65 6e 20 53 51 4c 69 74  me,.  then SQLit
26b0: 65 20 66 61 6c 6c 73 20 62 61 63 6b 20 74 6f 20  e falls back to 
26c0: 64 6f 69 6e 67 20 72 75 6e 2d 74 69 6d 65 20 63  doing run-time c
26d0: 68 65 63 6b 73 2c 20 77 68 69 63 68 20 61 6c 77  hecks, which alw
26e0: 61 79 73 20 77 6f 72 6b 2c 20 74 68 6f 75 67 68  ays work, though
26f0: 0a 20 20 77 69 74 68 20 61 20 73 6d 61 6c 6c 20  .  with a small 
2700: 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e 61  performance pena
2710: 6c 74 79 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  lty..}.</tcl>..<
2720: 61 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 73  a name="defaults
2730: 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 4f 70 74 69  "></a>.<h1> Opti
2740: 6f 6e 73 20 54 6f 20 53 65 74 20 44 65 66 61 75  ons To Set Defau
2750: 6c 74 20 50 61 72 61 6d 65 74 65 72 20 56 61 6c  lt Parameter Val
2760: 75 65 73 3c 2f 68 31 3e 0a 0a 3c 74 63 6c 3e 0a  ues</h1>..<tcl>.
2770: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
2780: 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  {SQLITE_DEFAULT_
2790: 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58 3d  AUTOMATIC_INDEX=
27a0: 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74  <i>&lt;0 or 1&gt
27b0: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
27c0: 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73  macro determines
27d0: 20 74 68 65 20 69 6e 69 74 69 61 6c 20 73 65 74   the initial set
27e0: 74 69 6e 67 20 66 6f 72 20 5b 50 52 41 47 4d 41  ting for [PRAGMA
27f0: 20 61 75 74 6f 6d 61 74 69 63 5f 69 6e 64 65 78   automatic_index
2800: 5d 0a 20 20 66 6f 72 20 6e 65 77 6c 79 20 6f 70  ].  for newly op
2810: 65 6e 65 64 20 5b 64 61 74 61 62 61 73 65 20 63  ened [database c
2820: 6f 6e 6e 65 63 74 69 6f 6e 73 5d 2e 0a 20 20 46  onnections]..  F
2830: 6f 72 20 61 6c 6c 20 76 65 72 73 69 6f 6e 73 20  or all versions 
2840: 6f 66 20 53 51 4c 69 74 65 20 74 68 72 6f 75 67  of SQLite throug
2850: 68 20 33 2e 37 2e 31 37 2c 0a 20 20 61 75 74 6f  h 3.7.17,.  auto
2860: 6d 61 74 69 63 20 69 6e 64 69 63 65 73 20 61 72  matic indices ar
2870: 65 20 6e 6f 72 6d 61 6c 6c 79 20 65 6e 61 62 6c  e normally enabl
2880: 65 64 20 66 6f 72 20 6e 65 77 20 64 61 74 61 62  ed for new datab
2890: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20  ase connections 
28a0: 69 66 0a 20 20 74 68 69 73 20 63 6f 6d 70 69 6c  if.  this compil
28b0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73  e-time option is
28c0: 20 6f 6d 69 74 74 65 64 2e 0a 20 20 48 6f 77 65   omitted..  Howe
28d0: 76 65 72 2c 20 74 68 61 74 20 6d 69 67 68 74 20  ver, that might 
28e0: 63 68 61 6e 67 65 20 69 6e 20 66 75 74 75 72 65  change in future
28f0: 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c   releases of SQL
2900: 69 74 65 2e 0a 20 20 3c 70 3e 53 65 65 20 61 6c  ite..  <p>See al
2910: 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54  so: [SQLITE_OMIT
2920: 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58  _AUTOMATIC_INDEX
2930: 5d 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ].}..COMPILE_OPT
2940: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41  ION {SQLITE_DEFA
2950: 55 4c 54 5f 41 55 54 4f 56 41 43 55 55 4d 3d 3c  ULT_AUTOVACUUM=<
2960: 69 3e 26 6c 74 3b 30 20 6f 72 20 31 20 6f 72 20  i>&lt;0 or 1 or 
2970: 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  2&gt;</i>} {.  T
2980: 68 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d  his macro determ
2990: 69 6e 65 73 20 69 66 20 53 51 4c 69 74 65 20 63  ines if SQLite c
29a0: 72 65 61 74 65 73 20 64 61 74 61 62 61 73 65 73  reates databases
29b0: 20 77 69 74 68 20 74 68 65 20 0a 20 20 5b 61 75   with the .  [au
29c0: 74 6f 5f 76 61 63 75 75 6d 5d 20 66 6c 61 67 20  to_vacuum] flag 
29d0: 73 65 74 20 62 79 20 64 65 66 61 75 6c 74 20 74  set by default t
29e0: 6f 20 4f 46 46 20 28 30 29 2c 20 46 55 4c 4c 20  o OFF (0), FULL 
29f0: 28 31 29 2c 20 6f 72 0a 20 20 49 4e 43 52 45 4d  (1), or.  INCREM
2a00: 45 4e 54 41 4c 20 28 32 29 2e 20 54 68 65 20 64  ENTAL (2). The d
2a10: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20  efault value is 
2a20: 30 20 6d 65 61 6e 69 6e 67 20 74 68 61 74 20 64  0 meaning that d
2a30: 61 74 61 62 61 73 65 73 0a 20 20 61 72 65 20 63  atabases.  are c
2a40: 72 65 61 74 65 64 20 77 69 74 68 20 61 75 74 6f  reated with auto
2a50: 2d 76 61 63 75 75 6d 20 74 75 72 6e 65 64 20 6f  -vacuum turned o
2a60: 66 66 2e 0a 20 20 49 6e 20 61 6e 79 20 63 61 73  ff..  In any cas
2a70: 65 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69  e the compile-ti
2a80: 6d 65 20 64 65 66 61 75 6c 74 20 6d 61 79 20 62  me default may b
2a90: 65 20 6f 76 65 72 72 69 64 64 65 6e 20 62 79 20  e overridden by 
2aa0: 74 68 65 20 0a 20 20 5b 50 52 41 47 4d 41 20 61  the .  [PRAGMA a
2ab0: 75 74 6f 5f 76 61 63 75 75 6d 5d 20 63 6f 6d 6d  uto_vacuum] comm
2ac0: 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  and..}..COMPILE_
2ad0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
2ae0: 45 46 41 55 4c 54 5f 43 41 43 48 45 5f 53 49 5a  EFAULT_CACHE_SIZ
2af0: 45 3d 3c 69 3e 26 6c 74 3b 4e 26 67 74 3b 3c 2f  E=<i>&lt;N&gt;</
2b00: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63  i>} {.  This mac
2b10: 72 6f 20 73 65 74 73 20 74 68 65 20 64 65 66 61  ro sets the defa
2b20: 75 6c 74 20 6d 61 78 69 6d 75 6d 20 73 69 7a 65  ult maximum size
2b30: 20 6f 66 20 74 68 65 20 70 61 67 65 2d 63 61 63   of the page-cac
2b40: 68 65 20 66 6f 72 20 65 61 63 68 20 61 74 74 61  he for each atta
2b50: 63 68 65 64 0a 20 20 64 61 74 61 62 61 73 65 2e  ched.  database.
2b60: 20 20 41 20 70 6f 73 69 74 69 76 65 20 76 61 6c    A positive val
2b70: 75 65 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68  ue means that th
2b80: 65 20 6c 69 6d 69 74 20 69 73 20 4e 20 70 61 67  e limit is N pag
2b90: 65 2e 20 20 49 66 20 4e 20 69 73 20 6e 65 67 61  e.  If N is nega
2ba0: 74 69 76 65 0a 20 20 74 68 61 74 20 6d 65 61 6e  tive.  that mean
2bb0: 73 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 63  s to limit the c
2bc0: 61 63 68 65 20 73 69 7a 65 20 74 6f 20 2d 4e 2a  ache size to -N*
2bd0: 31 30 32 34 20 62 79 74 65 73 2e 0a 20 20 54 68  1024 bytes..  Th
2be0: 65 20 73 75 67 67 65 73 74 65 64 20 6d 61 78 69  e suggested maxi
2bf0: 6d 75 6d 20 63 61 63 68 65 20 73 69 7a 65 20 63  mum cache size c
2c00: 61 6e 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e  an be overridden
2c10: 20 62 79 20 74 68 65 20 0a 20 20 5b 50 52 41 47   by the .  [PRAG
2c20: 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 5d 20 63  MA cache_size] c
2c30: 6f 6d 6d 61 6e 64 2e 20 54 68 65 20 64 65 66 61  ommand. The defa
2c40: 75 6c 74 20 76 61 6c 75 65 20 69 73 20 2d 32 30  ult value is -20
2c50: 30 30 2c 20 77 68 69 63 68 20 74 72 61 6e 73 6c  00, which transl
2c60: 61 74 65 73 0a 20 20 69 6e 74 6f 20 61 20 6d 61  ates.  into a ma
2c70: 78 69 6d 75 6d 20 6f 66 20 32 30 34 38 30 30 30  ximum of 2048000
2c80: 20 62 79 74 65 73 20 70 65 72 20 63 61 63 68 65   bytes per cache
2c90: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
2ca0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41  ION {SQLITE_DEFA
2cb0: 55 4c 54 5f 46 49 4c 45 5f 46 4f 52 4d 41 54 3d  ULT_FILE_FORMAT=
2cc0: 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 34 26 67 74  <i>&lt;1 or 4&gt
2cd0: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20 64  ;</i>} {.  The d
2ce0: 65 66 61 75 6c 74 20 5b 73 63 68 65 6d 61 20 66  efault [schema f
2cf0: 6f 72 6d 61 74 20 6e 75 6d 62 65 72 5d 20 75 73  ormat number] us
2d00: 65 64 20 62 79 20 53 51 4c 69 74 65 20 77 68 65  ed by SQLite whe
2d10: 6e 20 63 72 65 61 74 69 6e 67 0a 20 20 6e 65 77  n creating.  new
2d20: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 20   database files 
2d30: 69 73 20 73 65 74 20 62 79 20 74 68 69 73 20 6d  is set by this m
2d40: 61 63 72 6f 2e 20 20 54 68 65 20 73 63 68 65 6d  acro.  The schem
2d50: 61 20 66 6f 72 6d 61 74 73 20 61 72 65 20 61 6c  a formats are al
2d60: 6c 0a 20 20 76 65 72 79 20 73 69 6d 69 6c 61 72  l.  very similar
2d70: 2e 20 20 54 68 65 20 64 69 66 66 65 72 65 6e 63  .  The differenc
2d80: 65 20 62 65 74 77 65 65 6e 20 66 6f 72 6d 61 74  e between format
2d90: 73 20 31 20 61 6e 64 20 34 20 69 73 20 74 68 61  s 1 and 4 is tha
2da0: 74 20 66 6f 72 6d 61 74 0a 20 20 34 20 75 6e 64  t format.  4 und
2db0: 65 72 73 74 61 6e 64 73 20 5b 64 65 73 63 65 6e  erstands [descen
2dc0: 64 69 6e 67 20 69 6e 64 69 63 65 73 5d 20 61 6e  ding indices] an
2dd0: 64 20 68 61 73 20 61 20 74 69 67 68 74 65 72 20  d has a tighter 
2de0: 65 6e 63 6f 64 69 6e 67 20 66 6f 72 0a 20 20 62  encoding for.  b
2df0: 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 73 2e 0a 0a  oolean values...
2e00: 20 20 41 6c 6c 20 76 65 72 73 69 6f 6e 73 20 6f    All versions o
2e10: 66 20 53 51 4c 69 74 65 20 73 69 6e 63 65 20 33  f SQLite since 3
2e20: 2e 33 2e 30 20 28 32 30 30 36 2d 30 31 2d 31 30  .3.0 (2006-01-10
2e30: 29 0a 20 20 63 61 6e 20 72 65 61 64 20 61 6e 64  ).  can read and
2e40: 20 77 72 69 74 65 20 61 6e 79 20 73 63 68 65 6d   write any schem
2e50: 61 20 66 6f 72 6d 61 74 0a 20 20 62 65 74 77 65  a format.  betwe
2e60: 65 6e 20 31 20 61 6e 64 20 34 2e 20 20 42 75 74  en 1 and 4.  But
2e70: 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20   older versions 
2e80: 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68 74 20  of SQLite might 
2e90: 6e 6f 74 20 62 65 20 61 62 6c 65 20 74 6f 0a 20  not be able to. 
2ea0: 20 72 65 61 64 20 66 6f 72 6d 61 74 73 20 67 72   read formats gr
2eb0: 65 61 74 65 72 20 74 68 61 6e 20 31 2e 20 20 53  eater than 1.  S
2ec0: 6f 20 74 68 61 74 20 6f 6c 64 65 72 20 76 65 72  o that older ver
2ed0: 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20  sions of SQLite 
2ee0: 77 69 6c 6c 0a 20 20 62 65 20 61 62 6c 65 20 74  will.  be able t
2ef0: 6f 20 72 65 61 64 20 61 6e 64 20 77 72 69 74 65  o read and write
2f00: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 20   database files 
2f10: 63 72 65 61 74 65 64 20 62 79 20 6e 65 77 65 72  created by newer
2f20: 20 76 65 72 73 69 6f 6e 73 0a 20 20 6f 66 20 53   versions.  of S
2f30: 51 4c 69 74 65 2c 20 74 68 65 20 64 65 66 61 75  QLite, the defau
2f40: 6c 74 20 73 63 68 65 6d 61 20 66 6f 72 6d 61 74  lt schema format
2f50: 20 77 61 73 20 73 65 74 20 74 6f 20 31 20 66 6f   was set to 1 fo
2f60: 72 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  r SQLite version
2f70: 73 0a 20 20 74 68 72 6f 75 67 68 20 33 2e 37 2e  s.  through 3.7.
2f80: 39 20 28 32 30 31 31 2d 31 31 2d 30 31 29 2e 20  9 (2011-11-01). 
2f90: 20 42 65 67 69 6e 6e 69 6e 67 20 77 69 74 68 20   Beginning with 
2fa0: 0a 20 20 5b 76 65 72 73 69 6f 6e 20 33 2e 37 2e  .  [version 3.7.
2fb0: 31 30 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e 37  10] ([dateof:3.7
2fc0: 2e 31 30 5d 29 2c 20 74 68 65 20 64 65 66 61 75  .10]), the defau
2fd0: 6c 74 0a 20 20 73 63 68 65 6d 61 20 66 6f 72 6d  lt.  schema form
2fe0: 61 74 20 69 73 20 34 2e 0a 0a 20 20 54 68 65 20  at is 4...  The 
2ff0: 73 63 68 65 6d 61 20 66 6f 72 6d 61 74 20 6e 75  schema format nu
3000: 6d 62 65 72 20 66 6f 72 20 61 20 6e 65 77 20 64  mber for a new d
3010: 61 74 61 62 61 73 65 20 63 61 6e 20 62 65 20 73  atabase can be s
3020: 65 74 20 61 74 20 72 75 6e 74 69 6d 65 20 75 73  et at runtime us
3030: 69 6e 67 0a 20 20 74 68 65 20 5b 50 52 41 47 4d  ing.  the [PRAGM
3040: 41 20 6c 65 67 61 63 79 5f 66 69 6c 65 5f 66 6f  A legacy_file_fo
3050: 72 6d 61 74 5d 20 63 6f 6d 6d 61 6e 64 2e 0a 7d  rmat] command..}
3060: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
3070: 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   {SQLITE_DEFAULT
3080: 5f 46 49 4c 45 5f 50 45 52 4d 49 53 53 49 4f 4e  _FILE_PERMISSION
3090: 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20  S=<i>N</i>} {.  
30a0: 54 68 65 20 64 65 66 61 75 6c 74 20 6e 75 6d 65  The default nume
30b0: 72 69 63 20 66 69 6c 65 20 70 65 72 6d 69 73 73  ric file permiss
30c0: 69 6f 6e 73 20 66 6f 72 20 6e 65 77 6c 79 20 63  ions for newly c
30d0: 72 65 61 74 65 64 20 64 61 74 61 62 61 73 65 20  reated database 
30e0: 66 69 6c 65 73 0a 20 20 75 6e 64 65 72 20 75 6e  files.  under un
30f0: 69 78 2e 20 20 49 66 20 6e 6f 74 20 73 70 65 63  ix.  If not spec
3100: 69 66 69 65 64 2c 20 74 68 65 20 64 65 66 61 75  ified, the defau
3110: 6c 74 20 69 73 20 30 36 34 34 20 77 68 69 63 68  lt is 0644 which
3120: 20 6d 65 61 6e 73 20 74 68 61 74 0a 20 20 74 68   means that.  th
3130: 65 20 66 69 6c 65 73 20 69 73 20 67 6c 6f 62 61  e files is globa
3140: 6c 6c 79 20 72 65 61 64 61 62 6c 65 20 62 75 74  lly readable but
3150: 20 6f 6e 6c 79 20 77 72 69 74 61 62 6c 65 20 62   only writable b
3160: 79 20 74 68 65 20 63 72 65 61 74 6f 72 2e 0a 7d  y the creator..}
3170: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
3180: 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   {SQLITE_DEFAULT
3190: 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 53 3d 3c 69  _FOREIGN_KEYS=<i
31a0: 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c  >&lt;0 or 1&gt;<
31b0: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
31c0: 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 77  cro determines w
31d0: 68 65 74 68 65 72 20 65 6e 66 6f 72 63 65 6d 65  hether enforceme
31e0: 6e 74 20 6f 66 20 0a 20 20 5b 66 6f 72 65 69 67  nt of .  [foreig
31f0: 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74  n key constraint
3200: 73 5d 20 69 73 20 65 6e 61 62 6c 65 64 20 6f 72  s] is enabled or
3210: 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66   disabled by def
3220: 61 75 6c 74 20 66 6f 72 0a 20 20 6e 65 77 20 64  ault for.  new d
3230: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
3240: 6f 6e 73 2e 20 20 45 61 63 68 20 64 61 74 61 62  ons.  Each datab
3250: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63  ase connection c
3260: 61 6e 20 61 6c 77 61 79 73 20 74 75 72 6e 0a 20  an always turn. 
3270: 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20   enforcement of 
3280: 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73  foreign key cons
3290: 74 72 61 69 6e 74 73 20 6f 6e 20 61 6e 64 20 6f  traints on and o
32a0: 66 66 20 61 6e 64 20 72 75 6e 2d 74 69 6d 65 20  ff and run-time 
32b0: 75 73 69 6e 67 0a 20 20 74 68 65 20 5b 66 6f 72  using.  the [for
32c0: 65 69 67 6e 5f 6b 65 79 73 20 70 72 61 67 6d 61  eign_keys pragma
32d0: 5d 2e 20 20 45 6e 66 6f 72 63 65 6d 65 6e 74 20  ].  Enforcement 
32e0: 6f 66 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63  of foreign key c
32f0: 6f 6e 73 74 72 61 69 6e 74 73 0a 20 20 69 73 20  onstraints.  is 
3300: 6e 6f 72 6d 61 6c 6c 79 20 6f 66 66 20 62 79 20  normally off by 
3310: 64 65 66 61 75 6c 74 2c 20 62 75 74 20 69 66 20  default, but if 
3320: 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  this compile-tim
3330: 65 20 70 61 72 61 6d 65 74 65 72 20 69 73 0a 20  e parameter is. 
3340: 20 73 65 74 20 74 6f 20 31 2c 20 65 6e 66 6f 72   set to 1, enfor
3350: 63 65 6d 65 6e 74 20 6f 66 20 66 6f 72 65 69 67  cement of foreig
3360: 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74  n key constraint
3370: 73 20 77 69 6c 6c 20 62 65 20 6f 6e 20 62 79 20  s will be on by 
3380: 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a 43 4f 4d 50  default..}..COMP
3390: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
33a0: 54 45 5f 44 45 46 41 55 4c 54 5f 4d 4d 41 50 5f  TE_DEFAULT_MMAP_
33b0: 53 49 5a 45 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b  SIZE=<i>N</i>} {
33c0: 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65  .  This macro se
33d0: 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 6c  ts the default l
33e0: 69 6d 69 74 20 6f 6e 20 74 68 65 20 61 6d 6f 75  imit on the amou
33f0: 6e 74 20 6f 66 20 6d 65 6d 6f 72 79 20 74 68 61  nt of memory tha
3400: 74 0a 20 20 77 69 6c 6c 20 62 65 20 75 73 65 64  t.  will be used
3410: 20 66 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61 70 70   for memory-mapp
3420: 65 64 20 49 2f 4f 0a 20 20 66 6f 72 20 65 61 63  ed I/O.  for eac
3430: 68 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20  h open database 
3440: 66 69 6c 65 2e 20 20 49 66 20 74 68 65 20 3c 69  file.  If the <i
3450: 3e 4e 3c 2f 69 3e 0a 20 20 69 73 20 7a 65 72 6f  >N</i>.  is zero
3460: 2c 20 74 68 65 6e 20 6d 65 6d 6f 72 79 20 6d 61  , then memory ma
3470: 70 70 65 64 20 49 2f 4f 20 69 73 20 64 69 73 61  pped I/O is disa
3480: 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e  bled by default.
3490: 20 20 54 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65    This.  compile
34a0: 2d 74 69 6d 65 20 6c 69 6d 69 74 20 61 6e 64 20  -time limit and 
34b0: 74 68 65 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  the [SQLITE_MAX_
34c0: 4d 4d 41 50 5f 53 49 5a 45 5d 20 63 61 6e 20 62  MMAP_SIZE] can b
34d0: 65 20 6d 6f 64 69 66 69 65 64 20 0a 20 20 61 74  e modified .  at
34e0: 20 73 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e   start-time usin
34f0: 67 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33  g the.  [sqlite3
3500: 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45  _config]([SQLITE
3510: 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a  _CONFIG_MMAP_SIZ
3520: 45 5d 29 20 63 61 6c 6c 2c 20 6f 72 20 61 74 20  E]) call, or at 
3530: 72 75 6e 2d 74 69 6d 65 0a 20 20 75 73 69 6e 67  run-time.  using
3540: 20 74 68 65 20 5b 6d 6d 61 70 5f 73 69 7a 65 20   the [mmap_size 
3550: 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50  pragma]..}..COMP
3560: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
3570: 54 45 5f 44 45 46 41 55 4c 54 5f 4a 4f 55 52 4e  TE_DEFAULT_JOURN
3580: 41 4c 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d 3c 69  AL_SIZE_LIMIT=<i
3590: 3e 26 6c 74 3b 62 79 74 65 73 26 67 74 3b 3c 2f  >&lt;bytes&gt;</
35a0: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  i>} {.  This opt
35b0: 69 6f 6e 20 73 65 74 73 20 74 68 65 20 73 69 7a  ion sets the siz
35c0: 65 20 6c 69 6d 69 74 20 6f 6e 20 5b 72 6f 6c 6c  e limit on [roll
35d0: 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20 66 69  back journal] fi
35e0: 6c 65 73 20 69 6e 0a 20 20 5b 6a 6f 75 72 6e 61  les in.  [journa
35f0: 6c 5f 6d 6f 64 65 20 70 72 61 67 6d 61 20 7c 20  l_mode pragma | 
3600: 70 65 72 73 69 73 74 65 6e 74 20 6a 6f 75 72 6e  persistent journ
3610: 61 6c 20 6d 6f 64 65 5d 20 61 6e 64 0a 20 20 5b  al mode] and.  [
3620: 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 20 7c 20 65  locking_mode | e
3630: 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b 69 6e 67  xclusive locking
3640: 20 6d 6f 64 65 5d 20 61 6e 64 20 6f 6e 20 74 68   mode] and on th
3650: 65 20 73 69 7a 65 20 6f 66 20 74 68 65 0a 20 20  e size of the.  
3660: 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f 67 20  write-ahead log 
3670: 66 69 6c 65 20 69 6e 20 5b 57 41 4c 20 6d 6f 64  file in [WAL mod
3680: 65 5d 2e 20 57 68 65 6e 20 74 68 69 73 20 0a 20  e]. When this . 
3690: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
36a0: 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 20  tion is omitted 
36b0: 74 68 65 72 65 20 69 73 20 6e 6f 20 75 70 70 65  there is no uppe
36c0: 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65 0a 20  r bound on the. 
36d0: 20 73 69 7a 65 20 6f 66 20 74 68 65 20 72 6f 6c   size of the rol
36e0: 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 73 20 6f  lback journals o
36f0: 72 20 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f  r write-ahead lo
3700: 67 73 2e 20 20 0a 20 20 54 68 65 20 6a 6f 75 72  gs.  .  The jour
3710: 6e 61 6c 20 66 69 6c 65 20 73 69 7a 65 20 6c 69  nal file size li
3720: 6d 69 74 0a 20 20 63 61 6e 20 62 65 20 63 68 61  mit.  can be cha
3730: 6e 67 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65  nged at run-time
3740: 20 75 73 69 6e 67 20 74 68 65 20 5b 6a 6f 75 72   using the [jour
3750: 6e 61 6c 5f 73 69 7a 65 5f 6c 69 6d 69 74 20 70  nal_size_limit p
3760: 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  ragma]..}..COMPI
3770: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
3780: 45 5f 44 45 46 41 55 4c 54 5f 4c 4f 43 4b 49 4e  E_DEFAULT_LOCKIN
3790: 47 5f 4d 4f 44 45 3d 3c 69 3e 26 6c 74 3b 31 20  G_MODE=<i>&lt;1 
37a0: 6f 72 20 30 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  or 0&gt;</i>} {.
37b0: 20 20 49 66 20 73 65 74 20 74 6f 20 31 2c 20 74    If set to 1, t
37c0: 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20  hen the default 
37d0: 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 5d 20 69  [locking_mode] i
37e0: 73 20 73 65 74 20 74 6f 20 45 58 43 4c 55 53 49  s set to EXCLUSI
37f0: 56 45 2e 0a 20 20 49 66 20 6f 6d 69 74 74 65 64  VE..  If omitted
3800: 20 6f 72 20 73 65 74 20 74 6f 20 30 20 74 68 65   or set to 0 the
3810: 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 5b 6c  n the default [l
3820: 6f 63 6b 69 6e 67 5f 6d 6f 64 65 5d 20 69 73 20  ocking_mode] is 
3830: 4e 4f 52 4d 41 4c 2e 0a 7d 0a 0a 43 4f 4d 50 49  NORMAL..}..COMPI
3840: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
3850: 45 5f 44 45 46 41 55 4c 54 5f 4c 4f 4f 4b 41 53  E_DEFAULT_LOOKAS
3860: 49 44 45 3d 3c 69 3e 53 5a 2c 4e 3c 2f 69 3e 7d  IDE=<i>SZ,N</i>}
3870: 20 7b 0a 20 20 53 65 74 73 20 74 68 65 20 64 65   {.  Sets the de
3880: 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 74 68  fault size of th
3890: 65 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d  e [lookaside mem
38a0: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 6d  ory allocator] m
38b0: 65 6d 6f 72 79 20 70 6f 6f 6c 0a 20 20 74 6f 20  emory pool.  to 
38c0: 4e 20 65 6e 74 72 69 65 73 20 6f 66 20 53 5a 20  N entries of SZ 
38d0: 62 79 74 65 73 20 65 61 63 68 2e 20 20 54 68 69  bytes each.  Thi
38e0: 73 20 73 65 74 74 69 6e 67 20 63 61 6e 20 62 65  s setting can be
38f0: 20 6d 6f 64 69 66 69 65 64 20 61 74 0a 20 20 73   modified at.  s
3900: 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e 67 20  tart-time using 
3910: 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d  [sqlite3_config]
3920: 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  ([SQLITE_CONFIG_
3930: 4c 4f 4f 4b 41 53 49 44 45 5d 29 20 61 6e 64 2f  LOOKASIDE]) and/
3940: 6f 72 0a 20 20 61 73 20 65 61 63 68 20 5b 64 61  or.  as each [da
3950: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
3960: 6e 5d 20 69 73 20 6f 70 65 6e 65 64 20 75 73 69  n] is opened usi
3970: 6e 67 0a 20 20 5b 73 71 6c 69 74 65 33 5f 64 62  ng.  [sqlite3_db
3980: 5f 63 6f 6e 66 69 67 5d 28 64 62 2c 20 5b 53 51  _config](db, [SQ
3990: 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f  LITE_DBCONFIG_LO
39a0: 4f 4b 41 53 49 44 45 5d 29 2e 0a 7d 0a 0a 43 4f  OKASIDE])..}..CO
39b0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
39c0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d 45 4d  LITE_DEFAULT_MEM
39d0: 53 54 41 54 55 53 3d 3c 69 3e 26 6c 74 3b 31 20  STATUS=<i>&lt;1 
39e0: 6f 72 20 30 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  or 0&gt;</i>} {.
39f0: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20    This macro is 
3a00: 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e  used to determin
3a10: 65 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  e whether or not
3a20: 20 74 68 65 20 66 65 61 74 75 72 65 73 20 65 6e   the features en
3a30: 61 62 6c 65 64 20 61 6e 64 0a 20 20 64 69 73 61  abled and.  disa
3a40: 62 6c 65 64 20 75 73 69 6e 67 20 74 68 65 20 53  bled using the S
3a50: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d  QLITE_CONFIG_MEM
3a60: 53 54 41 54 55 53 20 61 72 67 75 6d 65 6e 74 20  STATUS argument 
3a70: 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  to [sqlite3_conf
3a80: 69 67 28 29 5d 0a 20 20 61 72 65 20 61 76 61 69  ig()].  are avai
3a90: 6c 61 62 6c 65 20 62 79 20 64 65 66 61 75 6c 74  lable by default
3aa0: 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 61  . The default va
3ab0: 6c 75 65 20 69 73 20 31 20 28 5b 53 51 4c 49 54  lue is 1 ([SQLIT
3ac0: 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54  E_CONFIG_MEMSTAT
3ad0: 55 53 5d 0a 20 20 72 65 6c 61 74 65 64 20 66 65  US].  related fe
3ae0: 61 74 75 72 65 73 20 65 6e 61 62 6c 65 64 29 2e  atures enabled).
3af0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3b00: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55  ON {SQLITE_DEFAU
3b10: 4c 54 5f 50 43 41 43 48 45 5f 49 4e 49 54 53 5a  LT_PCACHE_INITSZ
3b20: 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54  =<i>N</i>} {.  T
3b30: 68 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d  his macro determ
3b40: 69 6e 65 73 20 74 68 65 20 6e 75 6d 62 65 72 20  ines the number 
3b50: 6f 66 20 70 61 67 65 73 20 69 6e 69 74 69 61 6c  of pages initial
3b60: 6c 79 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 20  ly allocated by 
3b70: 74 68 65 20 0a 20 20 70 61 67 65 20 63 61 63 68  the .  page cach
3b80: 65 20 6d 6f 64 75 6c 65 20 77 68 65 6e 20 5b 53  e module when [S
3b90: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47  QLITE_CONFIG_PAG
3ba0: 45 43 41 43 48 45 5d 20 63 6f 6e 66 69 67 75 72  ECACHE] configur
3bb0: 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 69 73 0a  ation option is.
3bc0: 20 20 6e 6f 74 20 75 73 65 20 61 6e 64 20 6d 65    not use and me
3bd0: 6d 6f 72 79 20 66 6f 72 20 74 68 65 20 70 61 67  mory for the pag
3be0: 65 20 63 61 63 68 65 20 69 73 20 6f 62 74 61 69  e cache is obtai
3bf0: 6e 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65  ned from [sqlite
3c00: 33 5f 6d 61 6c 6c 6f 63 28 29 5d 0a 20 20 69 6e  3_malloc()].  in
3c10: 73 74 65 61 64 2e 20 20 54 68 65 20 6e 75 6d 62  stead.  The numb
3c20: 65 72 20 6f 66 20 70 61 67 65 73 20 73 65 74 20  er of pages set 
3c30: 62 79 20 74 68 69 73 20 6d 61 63 72 6f 20 61 72  by this macro ar
3c40: 65 20 61 6c 6c 6f 63 61 74 65 64 20 69 6e 20 61  e allocated in a
3c50: 20 73 69 6e 67 6c 65 0a 20 20 61 6c 6c 6f 63 61   single.  alloca
3c60: 74 69 6f 6e 2c 20 77 68 69 63 68 20 72 65 64 75  tion, which redu
3c70: 63 65 73 20 74 68 65 20 6c 6f 61 64 20 6f 6e 20  ces the load on 
3c80: 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  the memory alloc
3c90: 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ator..}..COMPILE
3ca0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
3cb0: 44 45 46 41 55 4c 54 5f 50 41 47 45 5f 53 49 5a  DEFAULT_PAGE_SIZ
3cc0: 45 3d 3c 69 3e 26 6c 74 3b 62 79 74 65 73 26 67  E=<i>&lt;bytes&g
3cd0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  t;</i>} {.  This
3ce0: 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20 74   macro is used t
3cf0: 6f 20 73 65 74 20 74 68 65 20 64 65 66 61 75 6c  o set the defaul
3d00: 74 20 70 61 67 65 2d 73 69 7a 65 20 75 73 65 64  t page-size used
3d10: 20 77 68 65 6e 20 61 0a 20 20 64 61 74 61 62 61   when a.  databa
3d20: 73 65 20 69 73 20 63 72 65 61 74 65 64 2e 20 54  se is created. T
3d30: 68 65 20 76 61 6c 75 65 20 61 73 73 69 67 6e 65  he value assigne
3d40: 64 20 6d 75 73 74 20 62 65 20 61 20 70 6f 77 65  d must be a powe
3d50: 72 20 6f 66 20 32 2e 20 54 68 65 0a 20 20 64 65  r of 2. The.  de
3d60: 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 34  fault value is 4
3d70: 30 39 36 2e 20 54 68 65 20 63 6f 6d 70 69 6c 65  096. The compile
3d80: 2d 74 69 6d 65 20 64 65 66 61 75 6c 74 20 6d 61  -time default ma
3d90: 79 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e 20  y be overridden 
3da0: 61 74 20 0a 20 20 72 75 6e 74 69 6d 65 20 62 79  at .  runtime by
3db0: 20 74 68 65 20 5b 50 52 41 47 4d 41 20 70 61 67   the [PRAGMA pag
3dc0: 65 5f 73 69 7a 65 5d 20 63 6f 6d 6d 61 6e 64 2e  e_size] command.
3dd0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3de0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55  ON {SQLITE_DEFAU
3df0: 4c 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 3d 3c  LT_SYNCHRONOUS=<
3e00: 69 3e 26 6c 74 3b 30 2d 33 26 67 74 3b 3c 2f 69  i>&lt;0-3&gt;</i
3e10: 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  >} {.  This macr
3e20: 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65  o determines the
3e30: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6f   default value o
3e40: 66 20 74 68 65 0a 20 20 5b 50 52 41 47 4d 41 20  f the.  [PRAGMA 
3e50: 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 20 73 65 74  synchronous] set
3e60: 74 69 6e 67 2e 20 20 49 66 20 6e 6f 74 20 6f 76  ting.  If not ov
3e70: 65 72 72 69 64 64 65 6e 20 61 74 20 63 6f 6d 70  erridden at comp
3e80: 69 6c 65 2d 74 69 6d 65 2c 0a 20 20 74 68 65 20  ile-time,.  the 
3e90: 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20  default setting 
3ea0: 69 73 20 32 20 28 46 55 4c 4c 29 2e 0a 7d 0a 0a  is 2 (FULL)..}..
3eb0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
3ec0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57  SQLITE_DEFAULT_W
3ed0: 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 3d 3c  AL_SYNCHRONOUS=<
3ee0: 69 3e 26 6c 74 3b 30 2d 33 26 67 74 3b 3c 2f 69  i>&lt;0-3&gt;</i
3ef0: 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  >} {.  This macr
3f00: 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65  o determines the
3f10: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6f   default value o
3f20: 66 20 74 68 65 0a 20 20 5b 50 52 41 47 4d 41 20  f the.  [PRAGMA 
3f30: 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 20 73 65 74  synchronous] set
3f40: 74 69 6e 67 20 66 6f 72 20 64 61 74 61 62 61 73  ting for databas
3f50: 65 20 66 69 6c 65 73 20 74 68 61 74 20 6f 70 65  e files that ope
3f60: 6e 20 69 6e 0a 20 20 5b 57 41 4c 20 6d 6f 64 65  n in.  [WAL mode
3f70: 5d 2e 20 20 49 66 20 6e 6f 74 20 6f 76 65 72 72  ].  If not overr
3f80: 69 64 64 65 6e 20 61 74 20 63 6f 6d 70 69 6c 65  idden at compile
3f90: 2d 74 69 6d 65 2c 20 74 68 69 73 20 76 61 6c 75  -time, this valu
3fa0: 65 20 69 73 20 74 68 65 0a 20 20 73 61 6d 65 20  e is the.  same 
3fb0: 61 73 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55  as [SQLITE_DEFAU
3fc0: 4c 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 5d 2e  LT_SYNCHRONOUS].
3fd0: 0a 20 20 3c 70 3e 0a 20 20 49 66 20 53 51 4c 49  .  <p>.  If SQLI
3fe0: 54 45 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f 53  TE_DEFAULT_WAL_S
3ff0: 59 4e 43 48 52 4f 4e 4f 55 53 20 64 69 66 66 65  YNCHRONOUS diffe
4000: 72 73 20 66 72 6f 6d 20 53 51 4c 49 54 45 5f 44  rs from SQLITE_D
4010: 45 46 41 55 4c 54 5f 53 59 4e 43 48 52 4f 4e 4f  EFAULT_SYNCHRONO
4020: 55 53 2c 0a 20 20 61 6e 64 20 69 66 20 74 68 65  US,.  and if the
4030: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 68 61 73   application has
4040: 20 6e 6f 74 20 6d 6f 64 69 66 69 65 64 20 74 68   not modified th
4050: 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 73 65  e synchronous se
4060: 74 74 69 6e 67 20 66 6f 72 0a 20 20 74 68 65 20  tting for.  the 
4070: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 75 73  database file us
4080: 69 6e 67 20 74 68 65 20 5b 50 52 41 47 4d 41 20  ing the [PRAGMA 
4090: 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 20 73 74 61  synchronous] sta
40a0: 74 65 6d 65 6e 74 2c 20 74 68 65 6e 0a 20 20 74  tement, then.  t
40b0: 68 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 73  he synchronous s
40c0: 65 74 74 69 6e 67 20 69 73 20 63 68 61 6e 67 65  etting is change
40d0: 64 20 74 6f 20 76 61 6c 75 65 20 64 65 66 69 6e  d to value defin
40e0: 65 64 20 62 79 0a 20 20 53 51 4c 49 54 45 5f 44  ed by.  SQLITE_D
40f0: 45 46 41 55 4c 54 5f 57 41 4c 5f 53 59 4e 43 48  EFAULT_WAL_SYNCH
4100: 52 4f 4e 4f 55 53 20 77 68 65 6e 20 74 68 65 20  RONOUS when the 
4110: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
4120: 69 6f 6e 20 73 77 69 74 63 68 65 73 0a 20 20 69  ion switches.  i
4130: 6e 74 6f 20 57 41 4c 20 6d 6f 64 65 20 66 6f 72  nto WAL mode for
4140: 20 74 68 65 20 66 69 72 73 74 20 74 69 6d 65 2e   the first time.
4150: 0a 20 20 49 66 20 74 68 65 20 53 51 4c 49 54 45  .  If the SQLITE
4160: 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f 53 59 4e  _DEFAULT_WAL_SYN
4170: 43 48 52 4f 4e 4f 55 53 20 76 61 6c 75 65 20 69  CHRONOUS value i
4180: 73 20 6e 6f 74 20 6f 76 65 72 72 69 64 64 65 6e  s not overridden
4190: 20 61 74 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69   at.  compile-ti
41a0: 6d 65 2c 20 74 68 65 6e 20 69 74 20 77 69 6c 6c  me, then it will
41b0: 20 61 6c 77 61 79 73 20 62 65 20 74 68 65 20 73   always be the s
41c0: 61 6d 65 20 61 73 0a 20 20 5b 53 51 4c 49 54 45  ame as.  [SQLITE
41d0: 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43 48 52 4f  _DEFAULT_SYNCHRO
41e0: 4e 4f 55 53 5d 20 61 6e 64 20 73 6f 20 6e 6f 20  NOUS] and so no 
41f0: 61 75 74 6f 6d 61 74 69 63 20 73 79 6e 63 68 72  automatic synchr
4200: 6f 6e 6f 75 73 20 73 65 74 74 69 6e 67 0a 20 20  onous setting.  
4210: 63 68 61 6e 67 65 73 20 77 69 6c 6c 20 65 76 65  changes will eve
4220: 72 20 6f 63 63 75 72 2e 0a 7d 0a 0a 43 4f 4d 50  r occur..}..COMP
4230: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
4240: 54 45 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f 41  TE_DEFAULT_WAL_A
4250: 55 54 4f 43 48 45 43 4b 50 4f 49 4e 54 3d 3c 69  UTOCHECKPOINT=<i
4260: 3e 26 6c 74 3b 70 61 67 65 73 26 67 74 3b 3c 2f  >&lt;pages&gt;</
4270: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63  i>} {.  This mac
4280: 72 6f 20 73 65 74 73 20 74 68 65 20 64 65 66 61  ro sets the defa
4290: 75 6c 74 20 70 61 67 65 20 63 6f 75 6e 74 20 66  ult page count f
42a0: 6f 72 20 74 68 65 20 5b 57 41 4c 5d 0a 20 20 5b  or the [WAL].  [
42b0: 63 68 65 63 6b 70 6f 69 6e 74 69 6e 67 20 7c 20  checkpointing | 
42c0: 61 75 74 6f 6d 61 74 69 63 20 63 68 65 63 6b 70  automatic checkp
42d0: 6f 69 6e 74 69 6e 67 5d 20 66 65 61 74 75 72 65  ointing] feature
42e0: 2e 20 20 49 66 20 75 6e 73 70 65 63 69 66 69 65  .  If unspecifie
42f0: 64 2c 0a 20 20 74 68 65 20 64 65 66 61 75 6c 74  d,.  the default
4300: 20 70 61 67 65 20 63 6f 75 6e 74 20 69 73 20 31   page count is 1
4310: 30 30 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  000..}..COMPILE_
4320: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
4330: 45 46 41 55 4c 54 5f 57 4f 52 4b 45 52 5f 54 48  EFAULT_WORKER_TH
4340: 52 45 41 44 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20  READS=<i>N</i>} 
4350: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73  {.  This macro s
4360: 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  ets the default 
4370: 76 61 6c 75 65 20 66 6f 72 0a 20 20 74 68 65 20  value for.  the 
4380: 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f  [SQLITE_LIMIT_WO
4390: 52 4b 45 52 5f 54 48 52 45 41 44 53 5d 20 70 61  RKER_THREADS] pa
43a0: 72 61 6d 65 74 65 72 2e 20 20 54 68 65 20 5b 53  rameter.  The [S
43b0: 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b  QLITE_LIMIT_WORK
43c0: 45 52 5f 54 48 52 45 41 44 53 5d 0a 20 20 70 61  ER_THREADS].  pa
43d0: 72 61 6d 65 74 65 72 20 73 65 74 73 20 74 68 65  rameter sets the
43e0: 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20   maximum number 
43f0: 6f 66 20 61 75 78 69 6c 69 61 72 79 20 74 68 72  of auxiliary thr
4400: 65 61 64 73 20 74 68 61 74 20 61 20 73 69 6e 67  eads that a sing
4410: 6c 65 0a 20 20 5b 70 72 65 70 61 72 65 64 20 73  le.  [prepared s
4420: 74 61 74 65 6d 65 6e 74 5d 20 77 69 6c 6c 20 6c  tatement] will l
4430: 61 75 6e 63 68 20 74 6f 20 61 73 73 69 73 74 20  aunch to assist 
4440: 69 74 20 77 69 74 68 20 61 20 71 75 65 72 79 2e  it with a query.
4450: 20 20 49 66 20 6e 6f 74 20 73 70 65 63 69 66 69    If not specifi
4460: 65 64 2c 0a 20 20 74 68 65 20 64 65 66 61 75 6c  ed,.  the defaul
4470: 74 20 6d 61 78 69 6d 75 6d 20 69 73 20 30 2e 0a  t maximum is 0..
4480: 20 20 54 68 65 20 76 61 6c 75 65 20 73 65 74 20    The value set 
4490: 68 65 72 65 20 63 61 6e 6e 6f 74 20 62 65 20 6d  here cannot be m
44a0: 6f 72 65 20 74 68 61 6e 20 5b 53 51 4c 49 54 45  ore than [SQLITE
44b0: 5f 4d 41 58 5f 57 4f 52 4b 45 52 5f 54 48 52 45  _MAX_WORKER_THRE
44c0: 41 44 53 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ADS]..}..COMPILE
44d0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
44e0: 45 58 54 52 41 5f 44 55 52 41 42 4c 45 7d 20 7b  EXTRA_DURABLE} {
44f0: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 45 58  .  The SQLITE_EX
4500: 54 52 41 5f 44 55 52 41 42 4c 45 20 63 6f 6d 70  TRA_DURABLE comp
4510: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
4520: 74 68 61 74 20 75 73 65 64 20 74 6f 20 63 61 75  that used to cau
4530: 73 65 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20  se the default. 
4540: 20 5b 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f   [PRAGMA synchro
4550: 6e 6f 75 73 5d 20 73 65 74 74 69 6e 67 20 74 6f  nous] setting to
4560: 20 62 65 20 45 58 54 52 41 2c 20 72 61 74 68 65   be EXTRA, rathe
4570: 72 20 74 68 61 6e 20 46 55 4c 4c 2e 20 20 54 68  r than FULL.  Th
4580: 69 73 20 6f 70 74 69 6f 6e 0a 20 20 69 73 20 6e  is option.  is n
4590: 6f 20 6c 6f 6e 67 65 72 20 73 75 70 70 6f 72 74  o longer support
45a0: 65 64 2e 20 20 55 73 65 0a 20 20 5b 53 51 4c 49  ed.  Use.  [SQLI
45b0: 54 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43 48  TE_DEFAULT_SYNCH
45c0: 52 4f 4e 4f 55 53 7c 53 51 4c 49 54 45 5f 44 45  RONOUS|SQLITE_DE
45d0: 46 41 55 4c 54 5f 53 59 4e 43 48 52 4f 4e 4f 55  FAULT_SYNCHRONOU
45e0: 53 3d 33 5d 20 69 6e 73 74 65 61 64 2e 0a 7d 0a  S=3] instead..}.
45f0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
4600: 7b 53 51 4c 49 54 45 5f 46 54 53 33 5f 4d 41 58  {SQLITE_FTS3_MAX
4610: 5f 45 58 50 52 5f 44 45 50 54 48 3d 3c 69 3e 4e  _EXPR_DEPTH=<i>N
4620: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d  </i>} {.  This m
4630: 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 6d 61  acro sets the ma
4640: 78 69 6d 75 6d 20 64 65 70 74 68 20 6f 66 20 74  ximum depth of t
4650: 68 65 20 73 65 61 72 63 68 20 74 72 65 65 20 74  he search tree t
4660: 68 61 74 20 63 6f 72 72 65 73 70 6f 6e 64 73 20  hat corresponds 
4670: 74 6f 0a 20 20 74 68 65 20 72 69 67 68 74 2d 68  to.  the right-h
4680: 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65 20  and side of the 
4690: 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72 20 69  MATCH operator i
46a0: 6e 20 61 6e 20 5b 46 54 53 33 5d 20 6f 72 20 5b  n an [FTS3] or [
46b0: 46 54 53 34 5d 20 66 75 6c 6c 2d 74 65 78 74 0a  FTS4] full-text.
46c0: 20 20 69 6e 64 65 78 2e 20 20 54 68 65 20 66 75    index.  The fu
46d0: 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20 75  ll-text search u
46e0: 73 65 73 20 61 20 72 65 63 75 72 73 69 76 65 20  ses a recursive 
46f0: 61 6c 67 6f 72 69 74 68 6d 2c 20 73 6f 20 74 68  algorithm, so th
4700: 65 20 64 65 70 74 68 20 6f 66 0a 20 20 74 68 65  e depth of.  the
4710: 20 74 72 65 65 20 69 73 20 6c 69 6d 69 74 65 64   tree is limited
4720: 20 74 6f 20 70 72 65 76 65 6e 74 20 75 73 69 6e   to prevent usin
4730: 67 20 74 6f 6f 20 6d 75 63 68 20 73 74 61 63 6b  g too much stack
4740: 20 73 70 61 63 65 2e 20 20 54 68 65 20 64 65 66   space.  The def
4750: 61 75 6c 74 0a 20 20 6c 69 6d 69 74 20 69 73 20  ault.  limit is 
4760: 31 32 2e 20 20 54 68 69 73 20 6c 69 6d 69 74 20  12.  This limit 
4770: 69 73 20 73 75 66 66 69 63 69 65 6e 74 20 66 6f  is sufficient fo
4780: 72 20 75 70 20 74 6f 20 34 30 39 35 20 73 65 61  r up to 4095 sea
4790: 72 63 68 20 74 65 72 6d 73 20 6f 6e 20 74 68 65  rch terms on the
47a0: 0a 20 20 72 69 67 68 74 2d 68 61 6e 64 20 73 69  .  right-hand si
47b0: 64 65 20 6f 66 20 74 68 65 20 4d 41 54 43 48 20  de of the MATCH 
47c0: 6f 70 65 72 61 74 6f 72 20 61 6e 64 20 69 74 20  operator and it 
47d0: 68 6f 6c 64 73 20 73 74 61 63 6b 20 73 70 61 63  holds stack spac
47e0: 65 20 75 73 61 67 65 20 74 6f 20 0a 20 20 6c 65  e usage to .  le
47f0: 73 73 20 74 68 61 6e 20 32 30 30 30 20 62 79 74  ss than 2000 byt
4800: 65 73 2e 0a 20 20 3c 70 3e 0a 20 20 46 6f 72 20  es..  <p>.  For 
4810: 6f 72 64 69 6e 61 72 79 20 46 54 53 33 2f 46 54  ordinary FTS3/FT
4820: 53 34 20 71 75 65 72 69 65 73 2c 20 74 68 65 20  S4 queries, the 
4830: 73 65 61 72 63 68 20 74 72 65 65 20 64 65 70 74  search tree dept
4840: 68 20 69 73 20 61 70 70 72 6f 78 69 6d 61 74 65  h is approximate
4850: 6c 79 0a 20 20 74 68 65 20 62 61 73 65 2d 32 20  ly.  the base-2 
4860: 6c 6f 67 61 72 69 74 68 6d 20 6f 66 20 74 68 65  logarithm of the
4870: 20 6e 75 6d 62 65 72 20 6f 66 20 74 65 72 6d 73   number of terms
4880: 20 69 6e 20 74 68 65 20 72 69 67 68 74 2d 68 61   in the right-ha
4890: 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65 0a 20  nd side of the. 
48a0: 20 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72 2e   MATCH operator.
48b0: 20 20 48 6f 77 65 76 65 72 2c 20 66 6f 72 20 5b    However, for [
48c0: 70 68 72 61 73 65 20 71 75 65 72 69 65 73 5d 20  phrase queries] 
48d0: 61 6e 64 20 5b 4e 45 41 52 20 71 75 65 72 69 65  and [NEAR querie
48e0: 73 5d 20 74 68 65 0a 20 20 73 65 61 72 63 68 20  s] the.  search 
48f0: 74 72 65 65 20 64 65 70 74 68 20 69 73 20 6c 69  tree depth is li
4900: 6e 65 61 72 20 69 6e 20 74 68 65 20 6e 75 6d 62  near in the numb
4910: 65 72 20 6f 66 20 72 69 67 68 74 2d 68 61 6e 64  er of right-hand
4920: 20 73 69 64 65 20 74 65 72 6d 73 2e 0a 20 20 53   side terms..  S
4930: 6f 20 74 68 65 20 64 65 66 61 75 6c 74 20 64 65  o the default de
4940: 70 74 68 20 6c 69 6d 69 74 20 6f 66 20 31 32 20  pth limit of 12 
4950: 69 73 20 73 75 66 66 69 63 69 65 6e 74 20 66 6f  is sufficient fo
4960: 72 20 75 70 20 74 6f 20 34 30 39 35 20 6f 72 64  r up to 4095 ord
4970: 69 6e 61 72 79 0a 20 20 74 65 72 6d 73 20 6f 6e  inary.  terms on
4980: 20 61 20 4d 41 54 43 48 2c 20 69 74 20 69 73 20   a MATCH, it is 
4990: 6f 6e 6c 79 20 73 75 66 66 69 63 69 65 6e 74 20  only sufficient 
49a0: 66 6f 72 20 31 31 20 6f 72 20 31 32 20 70 68 72  for 11 or 12 phr
49b0: 61 73 65 20 6f 72 20 4e 45 41 52 0a 20 20 74 65  ase or NEAR.  te
49c0: 72 6d 73 2e 20 20 45 76 65 6e 20 73 6f 2c 20 74  rms.  Even so, t
49d0: 68 65 20 64 65 66 61 75 6c 74 20 69 73 20 6d 6f  he default is mo
49e0: 72 65 20 74 68 61 6e 20 65 6e 6f 75 67 68 20 66  re than enough f
49f0: 6f 72 20 6d 6f 73 74 20 61 70 70 6c 69 63 61 74  or most applicat
4a00: 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ion..}..COMPILE_
4a10: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4c  OPTION {SQLITE_L
4a20: 49 4b 45 5f 44 4f 45 53 4e 54 5f 4d 41 54 43 48  IKE_DOESNT_MATCH
4a30: 5f 42 4c 4f 42 53 7d 20 7b 0a 20 20 54 68 69 73  _BLOBS} {.  This
4a40: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
4a50: 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20  tion causes the 
4a60: 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 20  [LIKE] operator 
4a70: 74 6f 20 61 6c 77 61 79 73 20 72 65 74 75 72 6e  to always return
4a80: 20 0a 20 20 46 61 6c 73 65 20 69 66 20 65 69 74   .  False if eit
4a90: 68 65 72 20 6f 70 65 72 61 6e 64 20 69 73 20 61  her operand is a
4aa0: 20 42 4c 4f 42 2e 20 20 54 68 65 20 64 65 66 61   BLOB.  The defa
4ab0: 75 6c 74 20 62 65 68 61 76 69 6f 72 20 6f 66 20  ult behavior of 
4ac0: 5b 4c 49 4b 45 5d 20 0a 20 20 69 73 20 74 68 61  [LIKE] .  is tha
4ad0: 74 20 42 4c 4f 42 20 6f 70 65 72 61 6e 64 73 20  t BLOB operands 
4ae0: 61 72 65 20 63 61 73 74 20 74 6f 20 54 45 58 54  are cast to TEXT
4af0: 20 62 65 66 6f 72 65 20 74 68 65 20 63 6f 6d 70   before the comp
4b00: 61 72 69 73 6f 6e 20 69 73 20 64 6f 6e 65 2e 0a  arison is done..
4b10: 20 20 3c 70 3e 0a 20 20 54 68 69 73 20 63 6f 6d    <p>.  This com
4b20: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
4b30: 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20 72 75   makes SQLite ru
4b40: 6e 20 6d 6f 72 65 20 65 66 66 69 63 69 65 6e 74  n more efficient
4b50: 6c 79 20 77 68 65 6e 20 70 72 6f 63 65 73 73 69  ly when processi
4b60: 6e 67 0a 20 20 71 75 65 72 69 65 73 20 74 68 61  ng.  queries tha
4b70: 74 20 75 73 65 20 74 68 65 20 5b 4c 49 4b 45 5d  t use the [LIKE]
4b80: 20 6f 70 65 72 61 74 6f 72 2c 20 61 74 20 74 68   operator, at th
4b90: 65 20 65 78 70 65 6e 73 65 20 6f 66 20 62 72 65  e expense of bre
4ba0: 61 6b 69 6e 67 20 62 61 63 6b 77 61 72 64 73 0a  aking backwards.
4bb0: 20 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e    compatibility.
4bc0: 20 20 48 6f 77 65 76 65 72 2c 20 74 68 65 20 62    However, the b
4bd0: 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69  ackwards compati
4be0: 62 69 6c 69 74 79 20 62 72 65 61 6b 20 6d 61 79  bility break may
4bf0: 20 62 65 20 6f 6e 6c 79 0a 20 20 61 20 74 65 63   be only.  a tec
4c00: 68 6e 69 63 61 6c 69 74 79 2e 20 20 54 68 65 72  hnicality.  Ther
4c10: 65 20 77 61 73 20 61 20 6c 6f 6e 67 2d 73 74 61  e was a long-sta
4c20: 6e 64 69 6e 67 20 62 75 67 20 69 6e 20 74 68 65  nding bug in the
4c30: 20 5b 4c 49 4b 45 5d 20 70 72 6f 63 65 73 73 69   [LIKE] processi
4c40: 6e 67 20 6c 6f 67 69 63 0a 20 20 28 73 65 65 20  ng logic.  (see 
4c50: 5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e 73 71 6c  [https://www.sql
4c60: 69 74 65 2e 6f 72 67 2f 73 72 63 2f 69 6e 66 6f  ite.org/src/info
4c70: 2f 30 35 66 34 33 62 65 38 66 64 64 61 39 66 5d  /05f43be8fdda9f]
4c80: 29 20 74 68 61 74 20 63 61 75 73 65 64 20 69 74  ) that caused it
4c90: 20 74 6f 0a 20 20 6d 69 73 62 65 68 61 76 69 6f   to.  misbehavio
4ca0: 72 20 66 6f 72 20 42 4c 4f 42 20 6f 70 65 72 61  r for BLOB opera
4cb0: 6e 64 73 20 61 6e 64 20 6e 6f 62 6f 64 79 20 6f  nds and nobody o
4cc0: 62 73 65 72 76 65 64 20 74 68 61 74 20 62 75 67  bserved that bug
4cd0: 20 69 6e 20 6e 65 61 72 6c 79 0a 20 20 31 30 20   in nearly.  10 
4ce0: 79 65 61 72 73 20 6f 66 20 61 63 74 69 76 65 20  years of active 
4cf0: 75 73 65 2e 20 20 53 6f 20 66 6f 72 20 6d 6f 72  use.  So for mor
4d00: 65 20 75 73 65 72 73 2c 20 69 74 20 69 73 20 70  e users, it is p
4d10: 72 6f 62 61 62 6c 79 20 73 61 66 65 20 74 6f 0a  robably safe to.
4d20: 20 20 65 6e 61 62 6c 65 20 74 68 69 73 20 63 6f    enable this co
4d30: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
4d40: 6e 20 61 6e 64 20 74 68 65 72 65 62 79 20 73 61  n and thereby sa
4d50: 76 65 20 61 20 6c 69 74 74 6c 65 20 43 50 55 20  ve a little CPU 
4d60: 74 69 6d 65 0a 20 20 6f 6e 20 4c 49 4b 45 20 71  time.  on LIKE q
4d70: 75 65 72 69 65 73 2e 0a 20 20 3c 70 3e 0a 20 20  ueries..  <p>.  
4d80: 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  This compile-tim
4d90: 65 20 6f 70 74 69 6f 6e 20 61 66 66 65 63 74 73  e option affects
4da0: 20 74 68 65 20 53 51 4c 20 5b 4c 49 4b 45 5d 20   the SQL [LIKE] 
4db0: 6f 70 65 72 61 74 6f 72 20 6f 6e 6c 79 20 61 6e  operator only an
4dc0: 64 20 68 61 73 0a 20 20 6e 6f 20 69 6d 70 61 63  d has.  no impac
4dd0: 74 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69 74 65  t on the [sqlite
4de0: 33 5f 73 74 72 6c 69 6b 65 28 29 5d 20 43 2d 6c  3_strlike()] C-l
4df0: 61 6e 67 75 61 67 65 20 69 6e 74 65 72 66 61 63  anguage interfac
4e00: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
4e10: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 41 58  TION {SQLITE_MAX
4e20: 5f 4d 4d 41 50 5f 53 49 5a 45 3d 3c 69 3e 4e 3c  _MMAP_SIZE=<i>N<
4e30: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
4e40: 63 72 6f 20 73 65 74 73 20 61 20 68 61 72 64 20  cro sets a hard 
4e50: 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74  upper bound on t
4e60: 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 61 64 64  he amount of add
4e70: 72 65 73 73 20 73 70 61 63 65 20 74 68 61 74 0a  ress space that.
4e80: 20 20 63 61 6e 20 62 65 20 75 73 65 64 20 62 79    can be used by
4e90: 20 61 6e 79 20 73 69 6e 67 6c 65 20 64 61 74 61   any single data
4ea0: 62 61 73 65 20 66 6f 72 20 6d 65 6d 6f 72 79 2d  base for memory-
4eb0: 6d 61 70 70 65 64 20 49 2f 4f 2e 0a 20 20 53 65  mapped I/O..  Se
4ec0: 74 74 69 6e 67 20 74 68 69 73 20 76 61 6c 75 65  tting this value
4ed0: 20 74 6f 20 30 20 63 6f 6d 70 6c 65 74 65 6c 79   to 0 completely
4ee0: 20 64 69 73 61 62 6c 65 73 20 6d 65 6d 6f 72 79   disables memory
4ef0: 2d 6d 61 70 70 65 64 20 49 2f 4f 20 61 6e 64 0a  -mapped I/O and.
4f00: 20 20 63 61 75 73 65 73 20 6c 6f 67 69 63 20 61    causes logic a
4f10: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 6d  ssociated with m
4f20: 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f  emory-mapped I/O
4f30: 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 20 66   to be omitted f
4f40: 72 6f 6d 20 74 68 65 0a 20 20 62 75 69 6c 64 2e  rom the.  build.
4f50: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 6f    This option do
4f60: 65 73 20 63 68 61 6e 67 65 20 74 68 65 20 64 65  es change the de
4f70: 66 61 75 6c 74 20 6d 65 6d 6f 72 79 2d 6d 61 70  fault memory-map
4f80: 70 65 64 20 49 2f 4f 20 61 64 64 72 65 73 73 0a  ped I/O address.
4f90: 20 20 73 70 61 63 65 20 73 69 7a 65 20 28 73 65    space size (se
4fa0: 74 20 62 79 20 5b 53 51 4c 49 54 45 5f 44 45 46  t by [SQLITE_DEF
4fb0: 41 55 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20  AULT_MMAP_SIZE] 
4fc0: 6f 72 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e  or.  sqlite3_con
4fd0: 66 69 67 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  fig([SQLITE_CONF
4fe0: 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 6f  IG_MMAP_SIZE]) o
4ff0: 72 20 74 68 65 0a 20 20 72 75 6e 2d 74 69 6d 65  r the.  run-time
5000: 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49   memory-mapped I
5010: 2f 4f 20 61 64 64 72 65 73 73 20 73 70 61 63 65  /O address space
5020: 20 73 69 7a 65 20 28 73 65 74 20 62 79 0a 20 20   size (set by.  
5030: 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e  sqlite3_file_con
5040: 74 72 6f 6c 28 5b 53 51 4c 49 54 45 5f 46 43 4e  trol([SQLITE_FCN
5050: 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 6f  TL_MMAP_SIZE]) o
5060: 72 0a 20 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70  r.  [PRAGMA mmap
5070: 5f 73 69 7a 65 5d 29 20 61 73 20 6c 6f 6e 67 20  _size]) as long 
5080: 61 73 20 74 68 6f 73 65 20 6f 74 68 65 72 20 73  as those other s
5090: 65 74 74 69 6e 67 73 20 61 72 65 20 6c 65 73 73  ettings are less
50a0: 20 74 68 61 6e 20 74 68 65 0a 20 20 6d 61 78 69   than the.  maxi
50b0: 6d 75 6d 20 76 61 6c 75 65 20 64 65 66 69 6e 65  mum value define
50c0: 64 20 68 65 72 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  d here..}..COMPI
50d0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
50e0: 45 5f 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45 54  E_MAX_SCHEMA_RET
50f0: 52 59 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20  RY=<i>N</i>} {. 
5100: 20 57 68 65 6e 65 76 65 72 20 74 68 65 20 64 61   Whenever the da
5110: 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 63 68  tabase schema ch
5120: 61 6e 67 65 73 2c 20 70 72 65 70 61 72 65 64 20  anges, prepared 
5130: 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 61  statements are a
5140: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 20 20 72  utomatically.  r
5150: 65 70 72 65 70 61 72 65 64 20 74 6f 20 61 63 63  eprepared to acc
5160: 6f 6d 6d 6f 64 61 74 65 20 74 68 65 20 6e 65 77  ommodate the new
5170: 20 73 63 68 65 6d 61 2e 20 20 54 68 65 72 65 20   schema.  There 
5180: 69 73 20 61 20 72 61 63 65 20 63 6f 6e 64 69 74  is a race condit
5190: 69 6f 6e 20 68 65 72 65 0a 20 20 69 6e 20 74 68  ion here.  in th
51a0: 61 74 20 69 66 20 6f 6e 65 20 74 68 72 65 61 64  at if one thread
51b0: 20 69 73 20 63 6f 6e 73 74 61 6e 74 6c 79 20 63   is constantly c
51c0: 68 61 6e 67 69 6e 67 20 74 68 65 20 73 63 68 65  hanging the sche
51d0: 6d 61 2c 20 61 6e 6f 74 68 65 72 20 74 68 72 65  ma, another thre
51e0: 61 64 0a 20 20 6d 69 67 68 74 20 73 70 69 6e 20  ad.  might spin 
51f0: 6f 6e 20 72 65 70 61 72 73 65 73 20 61 6e 64 20  on reparses and 
5200: 72 65 70 72 65 70 61 72 61 74 69 6f 6e 73 20 6f  repreparations o
5210: 66 20 61 20 70 72 65 70 61 72 65 64 20 73 74 61  f a prepared sta
5220: 74 65 6d 65 6e 74 20 61 6e 64 0a 20 20 6e 65 76  tement and.  nev
5230: 65 72 20 67 65 74 20 61 6e 79 20 72 65 61 6c 20  er get any real 
5240: 77 6f 72 6b 20 64 6f 6e 65 2e 20 20 54 68 69 73  work done.  This
5250: 20 70 61 72 61 6d 65 74 65 72 20 70 72 65 76 65   parameter preve
5260: 6e 74 73 20 61 6e 20 69 6e 66 69 6e 69 74 65 20  nts an infinite 
5270: 6c 6f 6f 70 0a 20 20 62 79 20 66 6f 72 63 69 6e  loop.  by forcin
5280: 67 20 74 68 65 20 73 70 69 6e 6e 69 6e 67 20 74  g the spinning t
5290: 68 72 65 61 64 20 74 6f 20 67 69 76 65 20 75 70  hread to give up
52a0: 20 61 66 74 65 72 20 61 20 66 69 78 65 64 20 6e   after a fixed n
52b0: 75 6d 62 65 72 20 6f 66 20 61 74 74 65 6d 70 74  umber of attempt
52c0: 73 0a 20 20 61 74 20 72 65 63 6f 6d 70 69 6c 69  s.  at recompili
52d0: 6e 67 20 74 68 65 20 70 72 65 70 61 72 65 64 20  ng the prepared 
52e0: 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20  statement.  The 
52f0: 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20  default setting 
5300: 69 73 20 35 30 20 77 68 69 63 68 20 69 73 0a 20  is 50 which is. 
5310: 20 6d 6f 72 65 20 74 68 61 6e 20 61 64 65 71 75   more than adequ
5320: 61 74 65 20 66 6f 72 20 6d 6f 73 74 20 61 70 70  ate for most app
5330: 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f  lications..}..CO
5340: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
5350: 4c 49 54 45 5f 4d 41 58 5f 57 4f 52 4b 45 52 5f  LITE_MAX_WORKER_
5360: 54 48 52 45 41 44 53 3d 3c 69 3e 4e 3c 2f 69 3e  THREADS=<i>N</i>
5370: 7d 20 7b 0a 20 20 53 65 74 20 61 6e 20 75 70 70  } {.  Set an upp
5380: 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65 20  er bound on the 
5390: 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 5d 28  [sqlite3_limit](
53a0: 64 62 2c 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54  db,[SQLITE_LIMIT
53b0: 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 5d  _WORKER_THREADS]
53c0: 2c 4e 29 0a 20 20 73 65 74 74 69 6e 67 20 74 68  ,N).  setting th
53d0: 61 74 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68  at determines th
53e0: 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72  e maximum number
53f0: 20 6f 66 20 61 75 78 69 6c 69 61 72 79 20 74 68   of auxiliary th
5400: 72 65 61 64 73 20 74 68 61 74 20 61 20 73 69 6e  reads that a sin
5410: 67 6c 65 0a 20 20 5b 70 72 65 70 61 72 65 64 20  gle.  [prepared 
5420: 73 74 61 74 65 6d 65 6e 74 5d 20 77 69 6c 6c 20  statement] will 
5430: 75 73 65 20 74 6f 20 61 69 64 20 77 69 74 68 20  use to aid with 
5440: 43 50 55 2d 69 6e 74 65 6e 73 69 76 65 20 63 6f  CPU-intensive co
5450: 6d 70 75 74 61 74 69 6f 6e 73 0a 20 20 28 6d 6f  mputations.  (mo
5460: 73 74 6c 79 20 73 6f 72 74 69 6e 67 29 2e 20 20  stly sorting).  
5470: 53 65 65 20 61 6c 73 6f 20 74 68 65 20 5b 53 51  See also the [SQ
5480: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 4f 52  LITE_DEFAULT_WOR
5490: 4b 45 52 5f 54 48 52 45 41 44 53 5d 20 6f 70 74  KER_THREADS] opt
54a0: 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ions..}..COMPILE
54b0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
54c0: 4d 49 4e 49 4d 55 4d 5f 46 49 4c 45 5f 44 45 53  MINIMUM_FILE_DES
54d0: 43 52 49 50 54 4f 52 3d 3c 69 3e 4e 3c 2f 69 3e  CRIPTOR=<i>N</i>
54e0: 7d 20 7b 0a 20 20 54 68 65 20 75 6e 69 78 20 5b  } {.  The unix [
54f0: 56 46 53 5d 20 77 69 6c 6c 20 6e 65 76 65 72 20  VFS] will never 
5500: 75 73 65 20 61 20 66 69 6c 65 20 64 65 73 63 72  use a file descr
5510: 69 70 74 6f 72 20 6c 65 73 73 20 74 68 61 6e 20  iptor less than 
5520: 3c 69 3e 4e 3c 2f 69 3e 2e 20 20 54 68 65 0a 20  <i>N</i>.  The. 
5530: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6f   default value o
5540: 66 20 3c 69 3e 4e 3c 2f 69 3e 20 69 73 20 33 2e  f <i>N</i> is 3.
5550: 0a 20 20 3c 70 3e 0a 20 20 41 76 6f 69 64 69 6e  .  <p>.  Avoidin
5560: 67 20 74 68 65 20 75 73 65 20 6f 66 20 6c 6f 77  g the use of low
5570: 2d 6e 75 6d 62 65 72 65 64 20 66 69 6c 65 20 64  -numbered file d
5580: 65 73 63 72 69 70 74 6f 72 73 20 69 73 20 61 20  escriptors is a 
5590: 64 65 66 65 6e 73 65 20 61 67 61 69 6e 73 74 0a  defense against.
55a0: 20 20 61 63 63 69 64 65 6e 74 61 6c 20 64 61 74    accidental dat
55b0: 61 62 61 73 65 20 63 6f 72 72 75 70 74 69 6f 6e  abase corruption
55c0: 2e 20 20 49 66 20 61 20 64 61 74 61 62 61 73 65  .  If a database
55d0: 20 66 69 6c 65 20 77 61 73 20 6f 70 65 6e 65 64   file was opened
55e0: 20 75 73 69 6e 67 0a 20 20 66 69 6c 65 20 64 65   using.  file de
55f0: 73 63 72 69 70 74 6f 72 20 32 2c 20 66 6f 72 20  scriptor 2, for 
5600: 65 78 61 6d 70 6c 65 2c 20 61 6e 64 20 74 68 65  example, and the
5610: 6e 20 61 6e 20 61 73 73 65 72 74 28 29 20 66 61  n an assert() fa
5620: 69 6c 65 64 20 61 6e 64 20 69 6e 76 6f 6b 65 64  iled and invoked
5630: 0a 20 20 77 72 69 74 65 28 32 2c 2e 2e 2e 29 2c  .  write(2,...),
5640: 20 74 68 61 74 20 77 6f 75 6c 64 20 6c 69 6b 65   that would like
5650: 6c 79 20 63 61 75 73 65 20 64 61 74 61 62 61 73  ly cause databas
5660: 65 20 63 6f 72 72 75 70 74 69 6f 6e 20 62 79 20  e corruption by 
5670: 6f 76 65 72 77 72 69 74 69 6e 67 0a 20 20 70 61  overwriting.  pa
5680: 72 74 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  rt of the databa
5690: 73 65 20 66 69 6c 65 20 77 69 74 68 20 74 68 65  se file with the
56a0: 20 61 73 73 65 72 74 69 6f 6e 20 65 72 72 6f 72   assertion error
56b0: 20 6d 65 73 73 61 67 65 2e 20 20 55 73 69 6e 67   message.  Using
56c0: 20 6f 6e 6c 79 0a 20 20 68 69 67 68 65 72 2d 76   only.  higher-v
56d0: 61 6c 75 65 64 20 66 69 6c 65 20 64 65 73 63 72  alued file descr
56e0: 69 70 74 6f 72 73 20 61 76 6f 69 64 73 20 74 68  iptors avoids th
56f0: 69 73 20 70 6f 74 65 6e 74 69 61 6c 20 70 72 6f  is potential pro
5700: 62 6c 65 6d 2e 20 20 54 68 65 20 0a 20 20 70 72  blem.  The .  pr
5710: 6f 74 65 63 74 69 6f 6e 20 61 67 61 69 6e 73 74  otection against
5720: 0a 20 20 75 73 69 6e 67 20 6c 6f 77 2d 6e 75 6d  .  using low-num
5730: 62 65 72 65 64 20 66 69 6c 65 20 64 65 73 63 72  bered file descr
5740: 69 70 74 6f 72 73 20 63 61 6e 20 62 65 20 64 69  iptors can be di
5750: 73 61 62 6c 65 64 20 62 79 20 73 65 74 74 69 6e  sabled by settin
5760: 67 20 74 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65  g this.  compile
5770: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 6f 20  -time option to 
5780: 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  0..}..COMPILE_OP
5790: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 50 4f 57  TION {SQLITE_POW
57a0: 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45  ERSAFE_OVERWRITE
57b0: 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67  =<i>&lt;0 or 1&g
57c0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  t;</i>} {.  This
57d0: 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20   option changes 
57e0: 74 68 65 20 64 65 66 61 75 6c 74 20 61 73 73 75  the default assu
57f0: 6d 70 74 69 6f 6e 20 61 62 6f 75 74 20 5b 70 6f  mption about [po
5800: 77 65 72 73 61 66 65 20 6f 76 65 72 77 72 69 74  wersafe overwrit
5810: 65 5d 0a 20 20 66 6f 72 20 74 68 65 20 75 6e 64  e].  for the und
5820: 65 72 6c 79 69 6e 67 20 66 69 6c 65 73 79 73 74  erlying filesyst
5830: 65 6d 73 20 66 6f 72 20 74 68 65 20 75 6e 69 78  ems for the unix
5840: 20 61 6e 64 20 77 69 6e 64 6f 77 73 20 5b 56 46   and windows [VF
5850: 53 65 73 5d 2e 0a 20 20 53 65 74 74 69 6e 67 20  Ses]..  Setting 
5860: 53 51 4c 49 54 45 5f 50 4f 57 45 52 53 41 46 45  SQLITE_POWERSAFE
5870: 5f 4f 56 45 52 57 52 49 54 45 20 74 6f 20 31 20  _OVERWRITE to 1 
5880: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
5890: 20 61 73 73 75 6d 65 20 74 68 61 74 0a 20 20 61   assume that.  a
58a0: 70 70 6c 69 63 61 74 69 6f 6e 2d 6c 65 76 65 6c  pplication-level
58b0: 20 77 72 69 74 65 73 20 63 61 6e 6e 6f 74 20 63   writes cannot c
58c0: 68 61 6e 67 65 73 20 62 79 74 65 73 20 6f 75 74  hanges bytes out
58d0: 73 69 64 65 20 74 68 65 20 72 61 6e 67 65 20 6f  side the range o
58e0: 66 0a 20 20 62 79 74 65 73 20 77 72 69 74 74 65  f.  bytes writte
58f0: 6e 20 65 76 65 6e 20 69 66 20 74 68 65 20 77 72  n even if the wr
5900: 69 74 65 20 6f 63 63 75 72 73 20 6a 75 73 74 20  ite occurs just 
5910: 62 65 66 6f 72 65 20 61 20 70 6f 77 65 72 20 6c  before a power l
5920: 6f 73 73 2e 0a 20 20 57 69 74 68 20 53 51 4c 49  oss..  With SQLI
5930: 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45  TE_POWERSAFE_OVE
5940: 52 57 52 49 54 45 20 73 65 74 20 74 6f 20 30 2c  RWRITE set to 0,
5950: 20 53 51 4c 69 74 65 20 61 73 73 75 6d 65 73 20   SQLite assumes 
5960: 74 68 61 74 20 6f 74 68 65 72 0a 20 20 62 79 74  that other.  byt
5970: 65 73 20 69 6e 20 74 68 65 20 73 61 6d 65 20 73  es in the same s
5980: 65 63 74 6f 72 20 77 69 74 68 20 61 20 77 72 69  ector with a wri
5990: 74 74 65 6e 20 62 79 74 65 20 6d 69 67 68 74 20  tten byte might 
59a0: 62 65 20 63 68 61 6e 67 65 64 20 6f 72 20 0a 20  be changed or . 
59b0: 20 64 61 6d 61 67 65 64 20 62 79 20 61 20 70 6f   damaged by a po
59c0: 77 65 72 20 6c 6f 73 73 2e 0a 7d 0a 0a 43 4f 4d  wer loss..}..COM
59d0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
59e0: 49 54 45 5f 52 45 56 45 52 53 45 5f 55 4e 4f 52  ITE_REVERSE_UNOR
59f0: 44 45 52 45 44 5f 53 45 4c 45 43 54 53 7d 20 7b  DERED_SELECTS} {
5a00: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
5a10: 61 75 73 65 73 20 74 68 65 20 5b 50 52 41 47 4d  auses the [PRAGM
5a20: 41 20 72 65 76 65 72 73 65 5f 75 6e 6f 72 64 65  A reverse_unorde
5a30: 72 65 64 5f 73 65 6c 65 63 74 73 5d 20 73 65 74  red_selects] set
5a40: 74 69 6e 67 20 74 6f 20 62 65 0a 20 20 65 6e 61  ting to be.  ena
5a50: 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e  bled by default.
5a60: 20 20 57 68 65 6e 20 65 6e 61 62 6c 65 64 2c 20    When enabled, 
5a70: 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65  [SELECT] stateme
5a80: 6e 74 73 20 74 68 61 74 20 6c 61 63 6b 20 61 6e  nts that lack an
5a90: 0a 20 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75  .  ORDER BY clau
5aa0: 73 65 20 77 69 6c 6c 20 72 75 6e 20 69 6e 20 72  se will run in r
5ab0: 65 76 65 72 73 65 20 6f 72 64 65 72 2e 3c 70 3e  everse order.<p>
5ac0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
5ad0: 73 20 75 73 65 66 75 6c 20 66 6f 72 20 64 65 74  s useful for det
5ae0: 65 63 74 69 6e 67 20 77 68 65 6e 20 61 70 70 6c  ecting when appl
5af0: 69 63 61 74 69 6f 6e 73 20 28 69 6e 63 6f 72 72  ications (incorr
5b00: 65 63 74 6c 79 29 0a 20 20 61 73 73 75 6d 65 20  ectly).  assume 
5b10: 74 68 61 74 20 74 68 65 20 6f 72 64 65 72 20 6f  that the order o
5b20: 66 20 72 6f 77 73 20 69 6e 20 61 20 53 45 4c 45  f rows in a SELE
5b30: 43 54 20 77 69 74 68 6f 75 74 20 61 6e 20 4f 52  CT without an OR
5b40: 44 45 52 20 42 59 20 63 6c 61 75 73 65 0a 20 20  DER BY clause.  
5b50: 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 74  will always be t
5b60: 68 65 20 73 61 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50  he same..}..COMP
5b70: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
5b80: 54 45 5f 53 4f 52 54 45 52 5f 50 4d 41 53 5a 3d  TE_SORTER_PMASZ=
5b90: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66  <i>N</i>} {.  If
5ba0: 20 6d 75 6c 74 69 2d 74 68 72 65 61 64 65 64 20   multi-threaded 
5bb0: 70 72 6f 63 65 73 73 69 6e 67 20 69 73 20 65 6e  processing is en
5bc0: 61 62 6c 65 64 20 76 69 61 20 74 68 65 0a 20 20  abled via the.  
5bd0: 5b 50 52 41 47 4d 41 20 74 68 72 65 61 64 73 5d  [PRAGMA threads]
5be0: 20 73 65 74 74 69 6e 67 2c 20 74 68 65 6e 20 73   setting, then s
5bf0: 6f 72 74 20 6f 70 65 72 61 74 69 6f 6e 73 20 77  ort operations w
5c00: 69 6c 6c 0a 20 20 61 74 74 65 6d 70 74 20 74 6f  ill.  attempt to
5c10: 20 73 74 61 72 74 20 68 65 6c 70 65 72 20 74 68   start helper th
5c20: 72 65 61 64 73 20 77 68 65 6e 20 74 68 65 20 61  reads when the a
5c30: 6d 6f 75 6e 74 20 6f 66 20 63 6f 6e 74 65 6e 74  mount of content
5c40: 0a 20 20 74 6f 20 62 65 20 73 6f 72 74 65 64 20  .  to be sorted 
5c50: 65 78 63 65 65 64 73 20 74 68 65 20 6d 69 6e 69  exceeds the mini
5c60: 6d 75 6d 20 6f 66 20 74 68 65 20 5b 63 61 63 68  mum of the [cach
5c70: 65 5f 73 69 7a 65 5d 20 61 6e 64 20 50 4d 41 20  e_size] and PMA 
5c80: 53 69 7a 65 0a 20 20 64 65 74 65 72 6d 69 6e 65  Size.  determine
5c90: 64 20 62 79 20 74 68 65 20 5b 53 51 4c 49 54 45  d by the [SQLITE
5ca0: 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 5d 20 73  _CONFIG_PMASZ] s
5cb0: 74 61 72 74 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  tart-time option
5cc0: 2e 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65  ..  This compile
5cd0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 73 65 74  -time option set
5ce0: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  s the default va
5cf0: 6c 75 65 20 66 6f 72 20 74 68 65 0a 20 20 5b 53  lue for the.  [S
5d00: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41  QLITE_CONFIG_PMA
5d10: 53 5a 5d 20 73 74 61 72 74 2d 74 69 6d 65 20 6f  SZ] start-time o
5d20: 70 74 69 6f 6e 2e 0a 20 20 54 68 65 20 64 65 66  ption..  The def
5d30: 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 32 35  ault value is 25
5d40: 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  0..}..COMPILE_OP
5d50: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 54 4d  TION {SQLITE_STM
5d60: 54 4a 52 4e 4c 5f 53 50 49 4c 4c 3d 3c 69 3e 4e  TJRNL_SPILL=<i>N
5d70: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20 53 51  </i>} {.  The SQ
5d80: 4c 49 54 45 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50  LITE_STMTJRNL_SP
5d90: 49 4c 4c 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  ILL compile-time
5da0: 20 6f 70 74 69 6f 6e 20 64 65 74 65 72 6d 69 6e   option determin
5db0: 65 73 20 74 68 65 0a 20 20 64 65 66 61 75 6c 74  es the.  default
5dc0: 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68 65 20   setting of the 
5dd0: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53  [SQLITE_CONFIG_S
5de0: 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 5d 20 73  TMTJRNL_SPILL] s
5df0: 74 61 72 74 2d 74 69 6d 65 0a 20 20 73 65 74 74  tart-time.  sett
5e00: 69 6e 67 2e 20 20 54 68 61 74 20 73 65 74 74 69  ing.  That setti
5e10: 6e 67 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68  ng determines th
5e20: 65 20 73 69 7a 65 20 74 68 72 65 73 68 6f 6c 64  e size threshold
5e30: 20 61 62 6f 76 65 20 77 68 69 63 68 0a 20 20 5b   above which.  [
5e40: 73 74 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e 61  statement journa
5e50: 6c 73 5d 20 61 72 65 20 6d 6f 76 65 64 20 66 72  ls] are moved fr
5e60: 6f 6d 20 6d 65 6d 6f 72 79 20 74 6f 20 64 69 73  om memory to dis
5e70: 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  k..}..COMPILE_OP
5e80: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e  TION {SQLITE_WIN
5e90: 33 32 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54  32_MALLOC} {.  T
5ea0: 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c  his option enabl
5eb0: 65 73 20 74 68 65 20 75 73 65 20 6f 66 20 74 68  es the use of th
5ec0: 65 20 57 69 6e 64 6f 77 73 20 48 65 61 70 20 41  e Windows Heap A
5ed0: 50 49 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72  PI functions for
5ee0: 20 6d 65 6d 6f 72 79 0a 20 20 61 6c 6c 6f 63 61   memory.  alloca
5ef0: 74 69 6f 6e 20 69 6e 73 74 65 61 64 20 6f 66 20  tion instead of 
5f00: 74 68 65 20 73 74 61 6e 64 61 72 64 20 6c 69 62  the standard lib
5f10: 72 61 72 79 20 6d 61 6c 6c 6f 63 28 29 20 61 6e  rary malloc() an
5f20: 64 20 66 72 65 65 28 29 20 72 6f 75 74 69 6e 65  d free() routine
5f30: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
5f40: 54 49 4f 4e 20 7b 59 59 53 54 41 43 4b 44 45 50  TION {YYSTACKDEP
5f50: 54 48 3d 3c 69 3e 26 6c 74 3b 6d 61 78 5f 64 65  TH=<i>&lt;max_de
5f60: 70 74 68 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20  pth&gt;</i>} {. 
5f70: 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73   This macro sets
5f80: 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70   the maximum dep
5f90: 74 68 20 6f 66 20 74 68 65 20 4c 41 4c 52 28 31  th of the LALR(1
5fa0: 29 20 73 74 61 63 6b 20 75 73 65 64 20 62 79 0a  ) stack used by.
5fb0: 20 20 74 68 65 20 53 51 4c 20 70 61 72 73 65 72    the SQL parser
5fc0: 20 77 69 74 68 69 6e 20 53 51 4c 69 74 65 2e 20   within SQLite. 
5fd0: 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   The default val
5fe0: 75 65 20 69 73 20 31 30 30 2e 20 20 41 20 74 79  ue is 100.  A ty
5ff0: 70 69 63 61 6c 0a 20 20 61 70 70 6c 69 63 61 74  pical.  applicat
6000: 69 6f 6e 20 77 69 6c 6c 20 75 73 65 20 6c 65 73  ion will use les
6010: 73 20 74 68 61 6e 20 61 62 6f 75 74 20 32 30 20  s than about 20 
6020: 6c 65 76 65 6c 73 20 6f 66 20 74 68 65 20 73 74  levels of the st
6030: 61 63 6b 2e 0a 20 20 44 65 76 65 6c 6f 70 65 72  ack..  Developer
6040: 73 20 77 68 6f 73 65 20 61 70 70 6c 69 63 61 74  s whose applicat
6050: 69 6f 6e 73 20 63 6f 6e 74 61 69 6e 20 53 51 4c  ions contain SQL
6060: 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74   statements that
6070: 20 0a 20 20 6e 65 65 64 20 6d 6f 72 65 20 74 68   .  need more th
6080: 61 6e 20 31 30 30 20 4c 41 4c 52 28 31 29 20 73  an 100 LALR(1) s
6090: 74 61 63 6b 20 65 6e 74 72 69 65 73 20 73 68 6f  tack entries sho
60a0: 75 6c 64 20 73 65 72 69 6f 75 73 6c 79 0a 20 20  uld seriously.  
60b0: 63 6f 6e 73 69 64 65 72 20 72 65 66 61 63 74 6f  consider refacto
60c0: 72 69 6e 67 20 74 68 65 69 72 20 53 51 4c 20 61  ring their SQL a
60d0: 73 20 69 74 20 69 73 20 6c 69 6b 65 6c 79 20 74  s it is likely t
60e0: 6f 20 62 65 20 77 65 6c 6c 20 62 65 79 6f 6e 64  o be well beyond
60f0: 0a 20 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f  .  the ability o
6100: 66 20 61 6e 79 20 68 75 6d 61 6e 20 74 6f 20 63  f any human to c
6110: 6f 6d 70 72 65 68 65 6e 64 2e 0a 7d 0a 3c 2f 74  omprehend..}.</t
6120: 63 6c 3e 0a 0a 3c 68 31 3e 20 4f 70 74 69 6f 6e  cl>..<h1> Option
6130: 73 20 54 6f 20 53 65 74 20 53 69 7a 65 20 4c 69  s To Set Size Li
6140: 6d 69 74 73 3c 2f 68 31 3e 0a 0a 3c 70 3e 54 68  mits</h1>..<p>Th
6150: 65 72 65 20 61 72 65 20 63 6f 6d 70 69 6c 65 2d  ere are compile-
6160: 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 74 68 61  time options tha
6170: 74 20 77 69 6c 6c 20 73 65 74 20 75 70 70 65 72  t will set upper
6180: 20 62 6f 75 6e 64 73 0a 6f 6e 20 74 68 65 20 73   bounds.on the s
6190: 69 7a 65 73 20 6f 66 20 76 61 72 69 6f 75 73 20  izes of various 
61a0: 73 74 72 75 63 74 75 72 65 73 20 69 6e 20 53 51  structures in SQ
61b0: 4c 69 74 65 2e 20 20 54 68 65 20 63 6f 6d 70 69  Lite.  The compi
61c0: 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e 73 20  le-time.options 
61d0: 6e 6f 72 6d 61 6c 6c 79 20 73 65 74 20 61 20 68  normally set a h
61e0: 61 72 64 20 75 70 70 65 72 20 62 6f 75 6e 64 20  ard upper bound 
61f0: 74 68 61 74 20 63 61 6e 20 62 65 20 63 68 61 6e  that can be chan
6200: 67 65 64 0a 61 74 20 72 75 6e 2d 74 69 6d 65 20  ged.at run-time 
6210: 6f 6e 20 69 6e 64 69 76 69 64 75 61 6c 20 5b 64  on individual [d
6220: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
6230: 6f 6e 73 5d 20 75 73 69 6e 67 20 74 68 65 0a 5b  ons] using the.[
6240: 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d  sqlite3_limit()]
6250: 20 69 6e 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a   interface.</p>.
6260: 0a 3c 70 3e 54 68 65 20 63 6f 6d 70 69 6c 65 2d  .<p>The compile-
6270: 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 66 6f 72  time options for
6280: 20 73 65 74 74 69 6e 67 20 75 70 70 65 72 20 62   setting upper b
6290: 6f 75 6e 64 73 20 61 72 65 0a 5b 6c 69 6d 69 74  ounds are.[limit
62a0: 73 20 7c 20 64 6f 63 75 6d 65 6e 74 65 64 20 73  s | documented s
62b0: 65 70 61 72 61 74 65 6c 79 5d 2e 20 20 54 68 65  eparately].  The
62c0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 73 20 61 20   following is a 
62d0: 6c 69 73 74 20 6f 66 0a 74 68 65 20 61 76 61 69  list of.the avai
62e0: 6c 61 62 6c 65 20 73 65 74 74 69 6e 67 73 3a 3c  lable settings:<
62f0: 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 20 5b  /p>..<ul>.<li> [
6300: 53 51 4c 49 54 45 5f 4d 41 58 5f 41 54 54 41 43  SQLITE_MAX_ATTAC
6310: 48 45 44 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  HED]  </li>.<li>
6320: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c   [SQLITE_MAX_COL
6330: 55 4d 4e 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  UMN]  </li>.<li>
6340: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4d   [SQLITE_MAX_COM
6350: 50 4f 55 4e 44 5f 53 45 4c 45 43 54 5d 20 20 3c  POUND_SELECT]  <
6360: 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  /li>.<li> [SQLIT
6370: 45 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48  E_MAX_EXPR_DEPTH
6380: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
6390: 51 4c 49 54 45 5f 4d 41 58 5f 46 55 4e 43 54 49  QLITE_MAX_FUNCTI
63a0: 4f 4e 5f 41 52 47 5d 20 20 3c 2f 6c 69 3e 0a 3c  ON_ARG]  </li>.<
63b0: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  li> [SQLITE_MAX_
63c0: 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c  LENGTH]  </li>.<
63d0: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  li> [SQLITE_MAX_
63e0: 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e  LIKE_PATTERN_LEN
63f0: 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  GTH]  </li>.<li>
6400: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 50 41 47   [SQLITE_MAX_PAG
6410: 45 5f 43 4f 55 4e 54 5d 20 20 3c 2f 6c 69 3e 0a  E_COUNT]  </li>.
6420: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58  <li> [SQLITE_MAX
6430: 5f 53 51 4c 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f  _SQL_LENGTH]  </
6440: 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  li>.<li> [SQLITE
6450: 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55  _MAX_VARIABLE_NU
6460: 4d 42 45 52 5d 20 20 3c 2f 6c 69 3e 0a 3c 2f 75  MBER]  </li>.</u
6470: 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 63 6f 6e  l>..<a name="con
6480: 74 72 6f 6c 66 65 61 74 75 72 65 73 22 3e 3c 2f  trolfeatures"></
6490: 61 3e 0a 3c 68 31 3e 20 4f 70 74 69 6f 6e 73 20  a>.<h1> Options 
64a0: 54 6f 20 43 6f 6e 74 72 6f 6c 20 4f 70 65 72 61  To Control Opera
64b0: 74 69 6e 67 20 43 68 61 72 61 63 74 65 72 69 73  ting Characteris
64c0: 74 69 63 73 3c 2f 68 31 3e 0a 0a 3c 74 63 6c 3e  tics</h1>..<tcl>
64d0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
64e0: 7b 53 51 4c 49 54 45 5f 34 5f 42 59 54 45 5f 41  {SQLITE_4_BYTE_A
64f0: 4c 49 47 4e 45 44 5f 4d 41 4c 4c 4f 43 7d 20 7b  LIGNED_MALLOC} {
6500: 0a 20 20 4f 6e 20 6d 6f 73 74 20 73 79 73 74 65  .  On most syste
6510: 6d 73 2c 20 74 68 65 20 6d 61 6c 6c 6f 63 28 29  ms, the malloc()
6520: 20 73 79 73 74 65 6d 20 63 61 6c 6c 20 72 65 74   system call ret
6530: 75 72 6e 73 20 61 20 62 75 66 66 65 72 20 74 68  urns a buffer th
6540: 61 74 20 69 73 0a 20 20 61 6c 69 67 6e 65 64 20  at is.  aligned 
6550: 74 6f 20 61 6e 20 38 2d 62 79 74 65 20 62 6f 75  to an 8-byte bou
6560: 6e 64 61 72 79 2e 20 20 42 75 74 20 6f 6e 20 73  ndary.  But on s
6570: 6f 6d 65 20 73 79 73 74 65 6d 73 20 28 65 78 3a  ome systems (ex:
6580: 20 77 69 6e 64 6f 77 73 29 20 6d 61 6c 6c 6f 63   windows) malloc
6590: 28 29 0a 20 20 72 65 74 75 72 6e 73 20 34 2d 62  ().  returns 4-b
65a0: 79 74 65 20 61 6c 69 67 6e 65 64 20 70 6f 69 6e  yte aligned poin
65b0: 74 65 72 2e 20 20 54 68 69 73 20 63 6f 6d 70 69  ter.  This compi
65c0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 6d  le-time option m
65d0: 75 73 74 20 62 65 20 75 73 65 64 0a 20 20 6f 6e  ust be used.  on
65e0: 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 72 65   systems that re
65f0: 74 75 72 6e 20 34 2d 62 79 74 65 20 61 6c 69 67  turn 4-byte alig
6600: 6e 65 64 20 70 6f 69 6e 74 65 72 73 20 66 72 6f  ned pointers fro
6610: 6d 20 6d 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 43  m malloc()..}..C
6620: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
6630: 51 4c 49 54 45 5f 43 41 53 45 5f 53 45 4e 53 49  QLITE_CASE_SENSI
6640: 54 49 56 45 5f 4c 49 4b 45 7d 20 7b 0a 20 20 49  TIVE_LIKE} {.  I
6650: 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  f this option is
6660: 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 74   present, then t
6670: 68 65 20 62 75 69 6c 74 2d 69 6e 20 5b 4c 49 4b  he built-in [LIK
6680: 45 5d 20 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c  E] operator will
6690: 20 62 65 0a 20 20 63 61 73 65 20 73 65 6e 73 69   be.  case sensi
66a0: 74 69 76 65 2e 20 20 54 68 69 73 20 73 61 6d 65  tive.  This same
66b0: 20 65 66 66 65 63 74 20 63 61 6e 20 62 65 20 61   effect can be a
66c0: 63 68 69 65 76 65 64 20 61 74 20 72 75 6e 2d 74  chieved at run-t
66d0: 69 6d 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20  ime using.  the 
66e0: 5b 63 61 73 65 5f 73 65 6e 73 69 74 69 76 65 5f  [case_sensitive_
66f0: 6c 69 6b 65 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a  like pragma]..}.
6700: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
6710: 7b 53 51 4c 49 54 45 5f 44 49 52 45 43 54 5f 4f  {SQLITE_DIRECT_O
6720: 56 45 52 46 4c 4f 57 5f 52 45 41 44 7d 20 7b 0a  VERFLOW_READ} {.
6730: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
6740: 6f 6e 20 69 73 20 70 72 65 73 65 6e 74 2c 20 63  on is present, c
6750: 6f 6e 74 65 6e 74 20 63 6f 6e 74 61 69 6e 65 64  ontent contained
6760: 20 69 6e 0a 20 20 5b 6f 76 65 72 66 6c 6f 77 20   in.  [overflow 
6770: 70 61 67 65 73 5d 20 6f 66 20 74 68 65 20 64 61  pages] of the da
6780: 74 61 62 61 73 65 20 66 69 6c 65 20 69 73 20 72  tabase file is r
6790: 65 61 64 20 64 69 72 65 63 74 6c 79 20 66 72 6f  ead directly fro
67a0: 6d 20 64 69 73 6b 2c 0a 20 20 62 79 70 61 73 73  m disk,.  bypass
67b0: 69 6e 67 20 74 68 65 20 5b 70 61 67 65 20 63 61  ing the [page ca
67c0: 63 68 65 5d 2c 20 64 75 72 69 6e 67 20 72 65 61  che], during rea
67d0: 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20  d transactions. 
67e0: 20 49 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 73   In applications
67f0: 0a 20 20 74 68 61 74 20 64 6f 20 61 20 6c 6f 74  .  that do a lot
6800: 20 6f 66 20 72 65 61 64 73 20 6f 66 20 6c 61 72   of reads of lar
6810: 67 65 20 42 4c 4f 42 73 2c 20 74 68 69 73 20 6f  ge BLOBs, this o
6820: 70 74 69 6f 6e 20 6d 69 67 68 74 20 69 6d 70 72  ption might impr
6830: 6f 76 65 20 72 65 61 64 0a 20 20 70 65 72 66 6f  ove read.  perfo
6840: 72 6d 61 6e 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  rmance..}..COMPI
6850: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
6860: 45 5f 48 41 56 45 5f 49 53 4e 41 4e 7d 20 7b 0a  E_HAVE_ISNAN} {.
6870: 20 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e    If this option
6880: 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65   is present, the
6890: 6e 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 75 73  n SQLite will us
68a0: 65 20 74 68 65 20 69 73 6e 61 6e 28 29 20 66 75  e the isnan() fu
68b0: 6e 63 74 69 6f 6e 20 66 72 6f 6d 0a 20 20 74 68  nction from.  th
68c0: 65 20 73 79 73 74 65 6d 20 6d 61 74 68 20 6c 69  e system math li
68d0: 62 72 61 72 79 2e 20 20 54 68 69 73 20 69 73 20  brary.  This is 
68e0: 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74 68 65  an alias for the
68f0: 20 5b 48 41 56 45 5f 49 53 4e 41 4e 5d 20 63 6f   [HAVE_ISNAN] co
6900: 6e 66 69 67 75 72 61 74 69 6f 6e 0a 20 20 6f 70  nfiguration.  op
6910: 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tion..}..COMPILE
6920: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
6930: 4f 53 5f 4f 54 48 45 52 3d 3c 69 3e 26 6c 74 3b  OS_OTHER=<i>&lt;
6940: 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20  0 or 1&gt;</i>} 
6950: 7b 0a 20 20 54 68 65 20 6f 70 74 69 6f 6e 20 63  {.  The option c
6960: 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20  auses SQLite to 
6970: 6f 6d 69 74 20 69 74 73 20 62 75 69 6c 74 2d 69  omit its built-i
6980: 6e 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  n operating syst
6990: 65 6d 20 69 6e 74 65 72 66 61 63 65 73 0a 20 20  em interfaces.  
69a0: 66 6f 72 20 55 6e 69 78 2c 20 57 69 6e 64 6f 77  for Unix, Window
69b0: 73 2c 20 61 6e 64 20 4f 53 2f 32 2e 20 20 54 68  s, and OS/2.  Th
69c0: 65 20 72 65 73 75 6c 74 69 6e 67 20 6c 69 62 72  e resulting libr
69d0: 61 72 79 20 77 69 6c 6c 20 68 61 76 65 20 6e 6f  ary will have no
69e0: 20 64 65 66 61 75 6c 74 0a 20 20 5b 73 71 6c 69   default.  [sqli
69f0: 74 65 33 5f 76 66 73 20 7c 20 6f 70 65 72 61 74  te3_vfs | operat
6a00: 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74 65 72  ing system inter
6a10: 66 61 63 65 5d 2e 20 20 41 70 70 6c 69 63 61 74  face].  Applicat
6a20: 69 6f 6e 73 20 6d 75 73 74 20 75 73 65 0a 20 20  ions must use.  
6a30: 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 72 65 67  [sqlite3_vfs_reg
6a40: 69 73 74 65 72 28 29 5d 20 74 6f 20 72 65 67 69  ister()] to regi
6a50: 73 74 65 72 20 61 6e 20 61 70 70 72 6f 70 72 69  ster an appropri
6a60: 61 74 65 20 69 6e 74 65 72 66 61 63 65 20 62 65  ate interface be
6a70: 66 6f 72 65 0a 20 20 75 73 69 6e 67 20 53 51 4c  fore.  using SQL
6a80: 69 74 65 2e 20 20 41 70 70 6c 69 63 61 74 69 6f  ite.  Applicatio
6a90: 6e 73 20 6d 75 73 74 20 61 6c 73 6f 20 73 75 70  ns must also sup
6aa0: 70 6c 79 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ply implementati
6ab0: 6f 6e 73 20 66 6f 72 20 74 68 65 0a 20 20 5b 73  ons for the.  [s
6ac0: 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29  qlite3_os_init()
6ad0: 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 6f  ] and [sqlite3_o
6ae0: 73 5f 65 6e 64 28 29 5d 20 69 6e 74 65 72 66 61  s_end()] interfa
6af0: 63 65 73 2e 20 20 54 68 65 20 75 73 75 61 6c 20  ces.  The usual 
6b00: 70 72 61 63 74 69 63 65 0a 20 20 69 73 20 66 6f  practice.  is fo
6b10: 72 20 74 68 65 20 73 75 70 70 6c 69 65 64 20 5b  r the supplied [
6b20: 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28  sqlite3_os_init(
6b30: 29 5d 20 74 6f 20 69 6e 76 6f 6b 65 20 5b 73 71  )] to invoke [sq
6b40: 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74  lite3_vfs_regist
6b50: 65 72 28 29 5d 2e 0a 20 20 53 51 4c 69 74 65 20  er()]..  SQLite 
6b60: 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c  will automatical
6b70: 6c 79 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74  ly invoke [sqlit
6b80: 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 77 68  e3_os_init()] wh
6b90: 65 6e 20 69 74 20 69 6e 69 74 69 61 6c 69 7a 65  en it initialize
6ba0: 73 2e 0a 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  s...  This optio
6bb0: 6e 20 69 73 20 74 79 70 69 63 61 6c 6c 79 20 75  n is typically u
6bc0: 73 65 64 20 77 68 65 6e 20 62 75 69 6c 64 69 6e  sed when buildin
6bd0: 67 20 53 51 4c 69 74 65 20 66 6f 72 20 61 6e 20  g SQLite for an 
6be0: 65 6d 62 65 64 64 65 64 0a 20 20 70 6c 61 74 66  embedded.  platf
6bf0: 6f 72 6d 20 77 69 74 68 20 61 20 63 75 73 74 6f  orm with a custo
6c00: 6d 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  m operating syst
6c10: 65 6d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  em..}..COMPILE_O
6c20: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 45  PTION {SQLITE_SE
6c30: 43 55 52 45 5f 44 45 4c 45 54 45 7d 20 7b 0a 20  CURE_DELETE} {. 
6c40: 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   This compile-ti
6c50: 6d 65 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65  me option change
6c60: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 65  s the default se
6c70: 74 74 69 6e 67 20 6f 66 20 74 68 65 0a 20 20 5b  tting of the.  [
6c80: 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 70 72  secure_delete pr
6c90: 61 67 6d 61 5d 2e 20 20 57 68 65 6e 20 74 68 69  agma].  When thi
6ca0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 74 20  s option is not 
6cb0: 75 73 65 64 2c 20 73 65 63 75 72 65 5f 64 65 6c  used, secure_del
6cc0: 65 74 65 20 64 65 66 61 75 6c 74 73 0a 20 20 74  ete defaults.  t
6cd0: 6f 20 6f 66 66 2e 20 20 57 68 65 6e 20 74 68 69  o off.  When thi
6ce0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73  s option is pres
6cf0: 65 6e 74 2c 20 73 65 63 75 72 65 5f 64 65 6c 65  ent, secure_dele
6d00: 74 65 20 64 65 66 61 75 6c 74 73 20 74 6f 20 6f  te defaults to o
6d10: 6e 2e 0a 0a 20 20 54 68 65 20 73 65 63 75 72 65  n...  The secure
6d20: 5f 64 65 6c 65 74 65 20 73 65 74 74 69 6e 67 20  _delete setting 
6d30: 63 61 75 73 65 73 20 64 65 6c 65 74 65 64 20 63  causes deleted c
6d40: 6f 6e 74 65 6e 74 20 74 6f 20 62 65 20 6f 76 65  ontent to be ove
6d50: 72 77 72 69 74 74 65 6e 20 77 69 74 68 0a 20 20  rwritten with.  
6d60: 7a 65 72 6f 73 2e 20 20 54 68 65 72 65 20 69 73  zeros.  There is
6d70: 20 61 20 73 6d 61 6c 6c 20 70 65 72 66 6f 72 6d   a small perform
6d80: 61 6e 63 65 20 70 65 6e 61 6c 74 79 20 73 69 6e  ance penalty sin
6d90: 63 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 49 2f  ce additional I/
6da0: 4f 0a 20 20 6d 75 73 74 20 6f 63 63 75 72 2e 20  O.  must occur. 
6db0: 20 4f 6e 20 74 68 65 20 6f 74 68 65 72 20 68 61   On the other ha
6dc0: 6e 64 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74  nd, secure_delet
6dd0: 65 20 63 61 6e 20 70 72 65 76 65 6e 74 20 66 72  e can prevent fr
6de0: 61 67 6d 65 6e 74 73 20 6f 66 20 0a 20 20 73 65  agments of .  se
6df0: 6e 73 69 74 69 76 65 20 69 6e 66 6f 72 6d 61 74  nsitive informat
6e00: 69 6f 6e 20 66 72 6f 6d 20 6c 69 6e 67 65 72 69  ion from lingeri
6e10: 6e 67 20 69 6e 20 75 6e 75 73 65 64 20 70 61 72  ng in unused par
6e20: 74 73 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  ts of the databa
6e30: 73 65 20 66 69 6c 65 20 0a 20 20 61 66 74 65 72  se file .  after
6e40: 20 69 74 20 68 61 73 20 62 65 65 6e 20 64 65 6c   it has been del
6e50: 65 74 65 64 2e 20 20 53 65 65 20 74 68 65 20 64  eted.  See the d
6e60: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e 20  ocumentation on 
6e70: 74 68 65 0a 20 20 5b 73 65 63 75 72 65 5f 64 65  the.  [secure_de
6e80: 6c 65 74 65 20 70 72 61 67 6d 61 5d 20 66 6f 72  lete pragma] for
6e90: 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f   additional info
6ea0: 72 6d 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50  rmation..}..COMP
6eb0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
6ec0: 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 3c 69  TE_THREADSAFE=<i
6ed0: 3e 26 6c 74 3b 30 20 6f 72 20 31 20 6f 72 20 32  >&lt;0 or 1 or 2
6ee0: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
6ef0: 69 73 20 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f  is option contro
6f00: 6c 73 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  ls whether or no
6f10: 74 20 63 6f 64 65 20 69 73 20 69 6e 63 6c 75 64  t code is includ
6f20: 65 64 20 69 6e 20 53 51 4c 69 74 65 20 74 6f 0a  ed in SQLite to.
6f30: 20 20 65 6e 61 62 6c 65 20 69 74 20 74 6f 20 6f    enable it to o
6f40: 70 65 72 61 74 65 20 73 61 66 65 6c 79 20 69 6e  perate safely in
6f50: 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64   a multithreaded
6f60: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 20 20 54   environment.  T
6f70: 68 65 0a 20 20 64 65 66 61 75 6c 74 20 69 73 20  he.  default is 
6f80: 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
6f90: 45 3d 31 20 77 68 69 63 68 20 69 73 20 73 61 66  E=1 which is saf
6fa0: 65 20 66 6f 72 20 75 73 65 20 69 6e 20 61 20 6d  e for use in a m
6fb0: 75 6c 74 69 74 68 72 65 61 64 65 64 0a 20 20 65  ultithreaded.  e
6fc0: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 20 20 57 68 65  nvironment.  Whe
6fd0: 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  n compiled with 
6fe0: 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
6ff0: 45 3d 30 20 61 6c 6c 20 6d 75 74 65 78 69 6e 67  E=0 all mutexing
7000: 20 63 6f 64 65 0a 20 20 69 73 20 6f 6d 69 74 74   code.  is omitt
7010: 65 64 20 61 6e 64 20 69 74 20 69 73 20 75 6e 73  ed and it is uns
7020: 61 66 65 20 74 6f 20 75 73 65 20 53 51 4c 69 74  afe to use SQLit
7030: 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65  e in a multithre
7040: 61 64 65 64 20 70 72 6f 67 72 61 6d 2e 0a 20 20  aded program..  
7050: 57 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69  When compiled wi
7060: 74 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44  th SQLITE_THREAD
7070: 53 41 46 45 3d 32 2c 20 53 51 4c 69 74 65 20 63  SAFE=2, SQLite c
7080: 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 61 20  an be used in a 
7090: 6d 75 6c 74 69 74 68 72 65 61 64 65 64 0a 20 20  multithreaded.  
70a0: 70 72 6f 67 72 61 6d 20 73 6f 20 6c 6f 6e 67 20  program so long 
70b0: 61 73 20 6e 6f 20 74 77 6f 20 74 68 72 65 61 64  as no two thread
70c0: 73 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65  s attempt to use
70d0: 20 74 68 65 20 73 61 6d 65 0a 20 20 5b 64 61 74   the same.  [dat
70e0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
70f0: 5d 20 28 6f 72 20 61 6e 79 20 5b 70 72 65 70 61  ] (or any [prepa
7100: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73 5d 20  red statements] 
7110: 64 65 72 69 76 65 64 20 66 72 6f 6d 0a 20 20 74  derived from.  t
7120: 68 61 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e  hat database con
7130: 6e 65 63 74 69 6f 6e 29 20 61 74 20 74 68 65 20  nection) at the 
7140: 73 61 6d 65 20 74 69 6d 65 2e 0a 0a 20 20 54 6f  same time...  To
7150: 20 70 75 74 20 69 74 20 61 6e 6f 74 68 65 72 20   put it another 
7160: 77 61 79 2c 20 53 51 4c 49 54 45 5f 54 48 52 45  way, SQLITE_THRE
7170: 41 44 53 41 46 45 3d 31 20 73 65 74 73 20 74 68  ADSAFE=1 sets th
7180: 65 20 64 65 66 61 75 6c 74 0a 20 20 5b 74 68 72  e default.  [thr
7190: 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20  eading mode] to 
71a0: 53 65 72 69 61 6c 69 7a 65 64 2e 20 20 53 51 4c  Serialized.  SQL
71b0: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32  ITE_THREADSAFE=2
71c0: 20 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c   sets the defaul
71d0: 74 0a 20 20 5b 74 68 72 65 61 64 69 6e 67 20 6d  t.  [threading m
71e0: 6f 64 65 5d 20 74 6f 20 4d 75 6c 74 69 2d 74 68  ode] to Multi-th
71f0: 72 65 61 64 65 64 2e 20 20 41 6e 64 20 53 51 4c  readed.  And SQL
7200: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30  ITE_THREADSAFE=0
7210: 20 73 65 74 73 20 74 68 65 0a 20 20 5b 74 68 72   sets the.  [thr
7220: 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20  eading mode] to 
7230: 53 69 6e 67 6c 65 2d 74 68 72 65 61 64 65 64 2e  Single-threaded.
7240: 0a 0a 20 20 54 68 65 20 76 61 6c 75 65 20 6f 66  ..  The value of
7250: 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
7260: 46 45 20 63 61 6e 20 62 65 20 64 65 74 65 72 6d  FE can be determ
7270: 69 6e 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65  ined at run-time
7280: 0a 20 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71  .  using the [sq
7290: 6c 69 74 65 33 5f 74 68 72 65 61 64 73 61 66 65  lite3_threadsafe
72a0: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a 0a  ()] interface...
72b0: 20 20 57 68 65 6e 20 53 51 4c 69 74 65 20 68 61    When SQLite ha
72c0: 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20  s been compiled 
72d0: 77 69 74 68 20 53 51 4c 49 54 45 5f 54 48 52 45  with SQLITE_THRE
72e0: 41 44 53 41 46 45 3d 31 20 6f 72 0a 20 20 53 51  ADSAFE=1 or.  SQ
72f0: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
7300: 32 20 74 68 65 6e 20 74 68 65 20 5b 74 68 72 65  2 then the [thre
7310: 61 64 69 6e 67 20 6d 6f 64 65 5d 0a 20 20 63 61  ading mode].  ca
7320: 6e 20 62 65 20 61 6c 74 65 72 65 64 20 61 74 20  n be altered at 
7330: 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 20 74  run-time using t
7340: 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  he [sqlite3_conf
7350: 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  ig()] interface 
7360: 74 6f 67 65 74 68 65 72 0a 20 20 77 69 74 68 20  together.  with 
7370: 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 76 65 72  one of these ver
7380: 62 73 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c  bs:..  <ul>.  <l
7390: 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  i>[SQLITE_CONFIG
73a0: 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 5d 0a 20  _SINGLETHREAD]. 
73b0: 20 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e   <li>[SQLITE_CON
73c0: 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 5d  FIG_MULTITHREAD]
73d0: 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43  .  <li>[SQLITE_C
73e0: 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a 45 44  ONFIG_SERIALIZED
73f0: 5d 0a 20 20 3c 2f 75 6c 3e 0a 0a 20 20 54 68 65  ].  </ul>..  The
7400: 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f   [SQLITE_OPEN_NO
7410: 4d 55 54 45 58 5d 20 61 6e 64 0a 20 20 5b 53 51  MUTEX] and.  [SQ
7420: 4c 49 54 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55  LITE_OPEN_FULLMU
7430: 54 45 58 5d 20 66 6c 61 67 73 20 74 6f 20 5b 73  TEX] flags to [s
7440: 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29  qlite3_open_v2()
7450: 5d 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 75 73  ] can also be us
7460: 65 64 0a 20 20 74 6f 20 61 64 6a 75 73 74 20 74  ed.  to adjust t
7470: 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f  he [threading mo
7480: 64 65 5d 20 6f 66 20 69 6e 64 69 76 69 64 75 61  de] of individua
7490: 6c 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  l [database conn
74a0: 65 63 74 69 6f 6e 73 5d 0a 20 20 61 74 20 72 75  ections].  at ru
74b0: 6e 2d 74 69 6d 65 2e 0a 0a 20 20 4e 6f 74 65 20  n-time...  Note 
74c0: 74 68 61 74 20 77 68 65 6e 20 53 51 4c 69 74 65  that when SQLite
74d0: 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74   is compiled wit
74e0: 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  h SQLITE_THREADS
74f0: 41 46 45 3d 30 2c 20 74 68 65 20 63 6f 64 65 0a  AFE=0, the code.
7500: 20 20 74 6f 20 6d 61 6b 65 20 53 51 4c 69 74 65    to make SQLite
7510: 20 74 68 72 65 61 64 73 61 66 65 20 69 73 20 6f   threadsafe is o
7520: 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20  mitted from the 
7530: 62 75 69 6c 64 2e 20 20 57 68 65 6e 20 74 68 69  build.  When thi
7540: 73 20 6f 63 63 75 72 73 2c 0a 20 20 69 74 20 69  s occurs,.  it i
7550: 73 20 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20  s impossible to 
7560: 63 68 61 6e 67 65 20 74 68 65 20 5b 74 68 72 65  change the [thre
7570: 61 64 69 6e 67 20 6d 6f 64 65 5d 20 61 74 20 73  ading mode] at s
7580: 74 61 72 74 2d 74 69 6d 65 20 6f 72 20 72 75 6e  tart-time or run
7590: 2d 74 69 6d 65 2e 0a 0a 20 20 53 65 65 20 74 68  -time...  See th
75a0: 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64  e [threading mod
75b0: 65 5d 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  e] documentation
75c0: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
75d0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 20 20 6f 6e  information.  on
75e0: 20 61 73 70 65 63 74 73 20 6f 66 20 75 73 69 6e   aspects of usin
75f0: 67 20 53 51 4c 69 74 65 20 69 6e 20 61 20 6d 75  g SQLite in a mu
7600: 6c 74 69 74 68 72 65 61 64 65 64 20 65 6e 76 69  ltithreaded envi
7610: 72 6f 6e 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50  ronment..}..COMP
7620: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7630: 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3d 3c 69  TE_TEMP_STORE=<i
7640: 3e 26 6c 74 3b 30 20 74 68 72 6f 75 67 68 20 33  >&lt;0 through 3
7650: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
7660: 69 73 20 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f  is option contro
7670: 6c 73 20 77 68 65 74 68 65 72 20 74 65 6d 70 6f  ls whether tempo
7680: 72 61 72 79 20 66 69 6c 65 73 20 61 72 65 20 73  rary files are s
7690: 74 6f 72 65 64 20 6f 6e 20 64 69 73 6b 20 6f 72  tored on disk or
76a0: 0a 20 20 69 6e 20 6d 65 6d 6f 72 79 2e 20 20 54  .  in memory.  T
76b0: 68 65 20 6d 65 61 6e 69 6e 67 73 20 66 6f 72 20  he meanings for 
76c0: 76 61 72 69 6f 75 73 20 73 65 74 74 69 6e 67 73  various settings
76d0: 20 6f 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65   of this compile
76e0: 2d 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 61  -time.  option a
76f0: 72 65 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 0a  re as follows:..
7700: 20 20 3c 74 61 62 6c 65 20 63 65 6c 6c 70 61 64    <table cellpad
7710: 64 69 6e 67 3d 22 32 22 20 62 6f 72 64 65 72 3d  ding="2" border=
7720: 22 31 22 3e 0a 20 20 3c 74 72 3e 3c 74 68 3e 53  "1">.  <tr><th>S
7730: 51 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45  QLITE_TEMP_STORE
7740: 3c 2f 74 68 3e 3c 74 68 3e 4d 65 61 6e 69 6e 67  </th><th>Meaning
7750: 3c 2f 74 68 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72  </th></tr>.  <tr
7760: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
7770: 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 41 6c  er">0</td><td>Al
7780: 77 61 79 73 20 75 73 65 20 74 65 6d 70 6f 72 61  ways use tempora
7790: 72 79 20 66 69 6c 65 73 3c 2f 74 64 3e 3c 2f 74  ry files</td></t
77a0: 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69  r>.  <tr><td ali
77b0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74  gn="center">1</t
77c0: 64 3e 3c 74 64 3e 55 73 65 20 66 69 6c 65 73 20  d><td>Use files 
77d0: 62 79 20 64 65 66 61 75 6c 74 20 62 75 74 20 61  by default but a
77e0: 6c 6c 6f 77 20 74 68 65 0a 20 20 5b 50 52 41 47  llow the.  [PRAG
77f0: 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 5d 20 63  MA temp_store] c
7800: 6f 6d 6d 61 6e 64 20 74 6f 20 6f 76 65 72 72 69  ommand to overri
7810: 64 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c  de</td></tr>.  <
7820: 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  tr><td align="ce
7830: 6e 74 65 72 22 3e 32 3c 2f 74 64 3e 3c 74 64 3e  nter">2</td><td>
7840: 55 73 65 20 6d 65 6d 6f 72 79 20 62 79 20 64 65  Use memory by de
7850: 66 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f 77 20  fault but allow 
7860: 74 68 65 0a 20 20 5b 50 52 41 47 4d 41 20 74 65  the.  [PRAGMA te
7870: 6d 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e  mp_store] comman
7880: 64 20 74 6f 20 6f 76 65 72 72 69 64 65 3c 2f 74  d to override</t
7890: 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74  d></tr>.  <tr><t
78a0: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
78b0: 3e 33 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79  >3</td><td>Alway
78c0: 73 20 75 73 65 20 6d 65 6d 6f 72 79 3c 2f 74 64  s use memory</td
78d0: 3e 3c 2f 74 72 3e 0a 20 20 3c 2f 74 61 62 6c 65  ></tr>.  </table
78e0: 3e 0a 0a 20 20 54 68 65 20 64 65 66 61 75 6c 74  >..  The default
78f0: 20 73 65 74 74 69 6e 67 20 69 73 20 31 2e 20 20   setting is 1.  
7900: 0a 20 20 41 64 64 69 74 69 6f 6e 61 6c 20 69 6e  .  Additional in
7910: 66 6f 72 6d 61 74 69 6f 6e 20 63 61 6e 20 62 65  formation can be
7920: 20 66 6f 75 6e 64 20 69 6e 20 5b 74 65 6d 70 73   found in [temps
7930: 74 6f 72 65 20 7c 20 74 65 6d 70 66 69 6c 65 73  tore | tempfiles
7940: 2e 68 74 6d 6c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  .html]..}..COMPI
7950: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
7960: 45 5f 54 52 41 43 45 5f 53 49 5a 45 5f 4c 49 4d  E_TRACE_SIZE_LIM
7970: 49 54 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20  IT=<i>N</i>} {. 
7980: 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69   If this macro i
7990: 73 20 64 65 66 69 6e 65 64 20 74 6f 20 61 20 70  s defined to a p
79a0: 6f 73 69 74 69 76 65 20 69 6e 74 65 67 65 72 20  ositive integer 
79b0: 3c 69 3e 4e 3c 2f 69 3e 2c 20 74 68 65 6e 20 74  <i>N</i>, then t
79c0: 68 65 20 6c 65 6e 67 74 68 20 6f 66 0a 20 20 73  he length of.  s
79d0: 74 72 69 6e 67 73 20 61 6e 64 20 42 4c 4f 42 20  trings and BLOB 
79e0: 74 68 61 74 20 61 72 65 20 65 78 70 61 6e 64 65  that are expande
79f0: 64 20 69 6e 74 6f 20 70 61 72 61 6d 65 74 65 72  d into parameter
7a00: 73 20 69 6e 20 74 68 65 20 6f 75 74 70 75 74 20  s in the output 
7a10: 6f 66 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74 72  of.  [sqlite3_tr
7a20: 61 63 65 28 29 5d 20 69 73 20 6c 69 6d 69 74 65  ace()] is limite
7a30: 64 20 74 6f 20 3c 69 3e 4e 3c 2f 69 3e 20 62 79  d to <i>N</i> by
7a40: 74 65 73 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c  tes.  .}..COMPIL
7a50: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7a60: 5f 55 53 45 5f 55 52 49 7d 20 7b 0a 20 20 54 68  _USE_URI} {.  Th
7a70: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
7a80: 20 74 68 65 20 5b 55 52 49 20 66 69 6c 65 6e 61   the [URI filena
7a90: 6d 65 5d 20 70 72 6f 63 65 73 73 20 6c 6f 67 69  me] process logi
7aa0: 63 20 74 6f 20 62 65 20 65 6e 61 62 6c 65 64 20  c to be enabled 
7ab0: 62 79 20 0a 20 20 64 65 66 61 75 6c 74 2e 20 20  by .  default.  
7ac0: 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e  .}..</tcl>..<a n
7ad0: 61 6d 65 3d 22 65 6e 61 62 6c 65 66 65 61 74 75  ame="enablefeatu
7ae0: 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 4f  res"></a>.<h1> O
7af0: 70 74 69 6f 6e 73 20 54 6f 20 45 6e 61 62 6c 65  ptions To Enable
7b00: 20 46 65 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c   Features Normal
7b10: 6c 79 20 54 75 72 6e 65 64 20 4f 66 66 3c 2f 68  ly Turned Off</h
7b20: 31 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c  1>..<tcl>.COMPIL
7b30: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7b40: 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f  _ALLOW_URI_AUTHO
7b50: 52 49 54 59 7d 20 7b 0a 20 20 5b 55 52 49 20 66  RITY} {.  [URI f
7b60: 69 6c 65 6e 61 6d 65 73 5d 20 6e 6f 72 6d 61 6c  ilenames] normal
7b70: 6c 79 20 74 68 72 6f 77 73 20 61 6e 20 65 72 72  ly throws an err
7b80: 6f 72 20 69 66 20 74 68 65 20 61 75 74 68 6f 72  or if the author
7b90: 69 74 79 20 73 65 63 74 69 6f 6e 20 69 73 0a 20  ity section is. 
7ba0: 20 6e 6f 74 20 65 69 74 68 65 72 20 65 6d 70 74   not either empt
7bb0: 79 20 6f 72 20 22 6c 6f 63 61 6c 68 6f 73 74 22  y or "localhost"
7bc0: 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 66 20 53  .  However, if S
7bd0: 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65  QLite is compile
7be0: 64 20 77 69 74 68 0a 20 20 74 68 65 20 53 51 4c  d with.  the SQL
7bf0: 49 54 45 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55  ITE_ALLOW_URI_AU
7c00: 54 48 4f 52 49 54 59 20 63 6f 6d 70 69 6c 65 2d  THORITY compile-
7c10: 74 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65  time option, the
7c20: 6e 20 74 68 65 20 55 52 49 20 69 73 0a 20 20 63  n the URI is.  c
7c30: 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 61 20  onverted into a 
7c40: 55 6e 69 66 6f 72 6d 20 4e 61 6d 69 6e 67 20 43  Uniform Naming C
7c50: 6f 6e 76 65 6e 74 69 6f 6e 20 28 55 4e 43 29 20  onvention (UNC) 
7c60: 66 69 6c 65 6e 61 6d 65 20 61 6e 64 20 70 61 73  filename and pas
7c70: 73 65 64 0a 20 20 64 6f 77 6e 20 74 6f 20 74 68  sed.  down to th
7c80: 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65  e underlying ope
7c90: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 74 68  rating system th
7ca0: 61 74 20 77 61 79 2e 20 20 0a 20 20 3c 70 3e 0a  at way.  .  <p>.
7cb0: 20 20 53 6f 6d 65 20 66 75 74 75 72 65 20 76 65    Some future ve
7cc0: 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65  rsions of SQLite
7cd0: 20 6d 61 79 20 63 68 61 6e 67 65 20 74 6f 20 65   may change to e
7ce0: 6e 61 62 6c 65 20 74 68 69 73 20 66 65 61 74 75  nable this featu
7cf0: 72 65 0a 20 20 62 79 20 64 65 66 61 75 6c 74 2e  re.  by default.
7d00: 0a 7d 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  .}.COMPILE_OPTIO
7d10: 4e 20 7b 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f  N {SQLITE_ALLOW_
7d20: 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53  COVERING_INDEX_S
7d30: 43 41 4e 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20  CAN=<i>&lt;0 or 
7d40: 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  1&gt;</i>} {.  T
7d50: 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73  his C-preprocess
7d60: 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e 65   macro determine
7d70: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 65  s the default se
7d80: 74 74 69 6e 67 20 6f 66 20 74 68 65 0a 20 20 5b  tting of the.  [
7d90: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f  SQLITE_CONFIG_CO
7da0: 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41  VERING_INDEX_SCA
7db0: 4e 5d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  N] configuration
7dc0: 20 73 65 74 74 69 6e 67 2e 20 20 49 74 20 64 65   setting.  It de
7dd0: 66 61 75 6c 74 73 0a 20 20 74 6f 20 31 20 28 6f  faults.  to 1 (o
7de0: 6e 29 20 77 68 69 63 68 20 6d 65 61 6e 73 20 74  n) which means t
7df0: 68 61 74 20 63 6f 76 65 72 69 6e 67 20 69 6e 64  hat covering ind
7e00: 69 63 65 73 20 61 72 65 20 75 73 65 64 20 66 6f  ices are used fo
7e10: 72 20 66 75 6c 6c 20 74 61 62 6c 65 0a 20 20 73  r full table.  s
7e20: 63 61 6e 73 20 77 68 65 72 65 20 70 6f 73 73 69  cans where possi
7e30: 62 6c 65 2c 20 69 6e 20 6f 72 64 65 72 20 74 6f  ble, in order to
7e40: 20 72 65 64 75 63 65 20 49 2f 4f 20 61 6e 64 20   reduce I/O and 
7e50: 69 6d 70 72 6f 76 65 20 70 65 72 66 6f 72 6d 61  improve performa
7e60: 6e 63 65 2e 0a 20 20 48 6f 77 65 76 65 72 2c 20  nce..  However, 
7e70: 74 68 65 20 75 73 65 20 6f 66 20 61 20 63 6f 76  the use of a cov
7e80: 65 72 69 6e 67 20 69 6e 64 65 78 20 66 6f 72 20  ering index for 
7e90: 61 20 66 75 6c 6c 20 73 63 61 6e 20 77 69 6c 6c  a full scan will
7ea0: 20 63 61 75 73 65 20 72 65 73 75 6c 74 73 0a 20   cause results. 
7eb0: 20 74 6f 20 61 70 70 65 61 72 20 69 6e 20 61 20   to appear in a 
7ec0: 64 69 66 66 65 72 65 6e 74 20 6f 72 64 65 72 20  different order 
7ed0: 66 72 6f 6d 20 6c 65 67 61 63 79 2c 20 77 68 69  from legacy, whi
7ee0: 63 68 20 63 6f 75 6c 64 20 63 61 75 73 65 20 73  ch could cause s
7ef0: 6f 6d 65 0a 20 20 28 69 6e 63 6f 72 72 65 63 74  ome.  (incorrect
7f00: 6c 79 2d 63 6f 64 65 64 29 20 6c 65 67 61 63 79  ly-coded) legacy
7f10: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f   applications to
7f20: 20 62 72 65 61 6b 2e 20 20 48 65 6e 63 65 2c 20   break.  Hence, 
7f30: 74 68 65 20 63 6f 76 65 72 69 6e 67 0a 20 20 69  the covering.  i
7f40: 6e 64 65 78 20 73 63 61 6e 20 6f 70 74 69 6f 6e  ndex scan option
7f50: 20 63 61 6e 20 62 65 20 64 69 73 61 62 6c 65 64   can be disabled
7f60: 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65   at compile-time
7f70: 20 6f 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74   on systems that
7f80: 20 77 68 61 74 0a 20 20 74 6f 20 6d 69 6e 69 6d   what.  to minim
7f90: 69 7a 65 20 74 68 65 69 72 20 72 69 73 6b 20 6f  ize their risk o
7fa0: 66 20 65 78 70 6f 73 69 6e 67 20 65 72 72 6f 72  f exposing error
7fb0: 73 20 69 6e 20 6c 65 67 61 63 79 20 61 70 70 6c  s in legacy appl
7fc0: 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d  ications..}..COM
7fd0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
7fe0: 49 54 45 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e  ITE_ENABLE_8_3_N
7ff0: 41 4d 45 53 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72  AMES=<i>&lt;1 or
8000: 20 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   2&gt;</i>} {.  
8010: 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f  If this C-prepro
8020: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20  cessor macro is 
8030: 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 65 78  defined, then ex
8040: 74 72 61 20 63 6f 64 65 20 69 73 0a 20 20 69 6e  tra code is.  in
8050: 63 6c 75 64 65 64 20 74 68 61 74 20 61 6c 6c 6f  cluded that allo
8060: 77 73 20 53 51 4c 69 74 65 20 74 6f 20 66 75 6e  ws SQLite to fun
8070: 63 74 69 6f 6e 20 6f 6e 20 61 20 66 69 6c 65 73  ction on a files
8080: 79 73 74 65 6d 20 74 68 61 74 0a 20 20 6f 6e 6c  ystem that.  onl
8090: 79 20 73 75 70 70 6f 72 74 20 38 2b 33 20 66 69  y support 8+3 fi
80a0: 6c 65 6e 61 6d 65 73 2e 20 20 49 66 20 74 68 65  lenames.  If the
80b0: 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73 20 6d   value of this m
80c0: 61 63 72 6f 20 69 73 20 31 2c 0a 20 20 74 68 65  acro is 1,.  the
80d0: 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 65  n the default be
80e0: 68 61 76 69 6f 72 20 69 73 20 74 6f 20 63 6f 6e  havior is to con
80f0: 74 69 6e 75 65 20 74 6f 20 75 73 65 20 6c 6f 6e  tinue to use lon
8100: 67 20 66 69 6c 65 6e 61 6d 65 73 20 61 6e 64 0a  g filenames and.
8110: 20 20 74 6f 20 6f 6e 6c 79 20 75 73 65 20 38 2b    to only use 8+
8120: 33 20 66 69 6c 65 6e 61 6d 65 73 20 69 66 20 74  3 filenames if t
8130: 68 65 20 0a 20 20 64 61 74 61 62 61 73 65 20 63  he .  database c
8140: 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6f 70 65  onnection is ope
8150: 6e 65 64 20 75 73 69 6e 67 20 5b 55 52 49 20 66  ned using [URI f
8160: 69 6c 65 6e 61 6d 65 73 5d 20 77 69 74 68 0a 20  ilenames] with. 
8170: 20 74 68 65 20 22 3c 74 74 3e 38 5f 33 5f 6e 61   the "<tt>8_3_na
8180: 6d 65 73 3d 31 3c 2f 74 74 3e 22 20 71 75 65 72  mes=1</tt>" quer
8190: 79 20 70 61 72 61 6d 65 74 65 72 2e 20 20 49 66  y parameter.  If
81a0: 20 74 68 65 20 76 61 6c 75 65 20 6f 66 0a 20 20   the value of.  
81b0: 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20 32 2c  this macro is 2,
81c0: 20 74 68 65 6e 20 74 68 65 20 75 73 65 20 6f 66   then the use of
81d0: 20 38 2b 33 20 66 69 6c 65 6e 61 6d 65 73 20 62   8+3 filenames b
81e0: 65 63 6f 6d 65 73 20 74 68 65 20 64 65 66 61 75  ecomes the defau
81f0: 6c 74 0a 20 20 62 75 74 20 6d 61 79 20 62 65 20  lt.  but may be 
8200: 64 69 73 61 62 6c 65 64 20 6f 6e 20 75 73 69 6e  disabled on usin
8210: 67 20 74 68 65 20 3c 74 74 3e 38 5f 33 5f 6e 61  g the <tt>8_3_na
8220: 6d 65 73 3d 30 3c 2f 74 74 3e 20 71 75 65 72 79  mes=0</tt> query
8230: 20 70 61 72 61 6d 65 74 65 72 2e 0a 7d 0a 0a 43   parameter..}..C
8240: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8250: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 41 50 49  QLITE_ENABLE_API
8260: 5f 41 52 4d 4f 52 7d 20 7b 0a 20 20 57 68 65 6e  _ARMOR} {.  When
8270: 20 64 65 66 69 6e 65 64 2c 20 74 68 69 73 20 43   defined, this C
8280: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
8290: 63 72 6f 20 61 63 74 69 76 61 74 65 73 20 65 78  cro activates ex
82a0: 74 72 61 20 63 6f 64 65 20 74 68 61 74 0a 20 20  tra code that.  
82b0: 61 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65  attempts to dete
82c0: 63 74 20 6d 69 73 75 73 65 20 6f 66 20 74 68 65  ct misuse of the
82d0: 20 53 51 4c 69 74 65 20 41 50 49 2c 20 73 75 63   SQLite API, suc
82e0: 68 20 61 73 20 70 61 73 73 69 6e 67 20 69 6e 20  h as passing in 
82f0: 4e 55 4c 4c 0a 20 20 70 6f 69 6e 74 65 72 73 20  NULL.  pointers 
8300: 74 6f 20 72 65 71 75 69 72 65 64 20 70 61 72 61  to required para
8310: 6d 65 74 65 72 73 20 6f 72 20 75 73 69 6e 67 20  meters or using 
8320: 6f 62 6a 65 63 74 73 20 61 66 74 65 72 20 74 68  objects after th
8330: 65 79 20 68 61 76 65 20 62 65 65 6e 0a 20 20 64  ey have been.  d
8340: 65 73 74 72 6f 79 65 64 2e 0a 7d 0a 0a 43 4f 4d  estroyed..}..COM
8350: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
8360: 49 54 45 5f 45 4e 41 42 4c 45 5f 41 54 4f 4d 49  ITE_ENABLE_ATOMI
8370: 43 5f 57 52 49 54 45 7d 20 7b 0a 20 20 49 66 20  C_WRITE} {.  If 
8380: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
8390: 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66  sor macro is def
83a0: 69 6e 65 64 20 61 6e 64 20 69 66 20 74 68 65 0a  ined and if the.
83b0: 20 20 78 44 65 76 69 63 65 43 68 61 72 61 63 74    xDeviceCharact
83c0: 65 72 69 73 74 69 63 73 20 6d 65 74 68 6f 64 20  eristics method 
83d0: 6f 66 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  of [sqlite3_io_m
83e0: 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 66  ethods] object f
83f0: 6f 72 0a 20 20 61 20 64 61 74 61 62 61 73 65 20  or.  a database 
8400: 66 69 6c 65 20 72 65 70 6f 72 74 73 20 28 76 69  file reports (vi
8410: 61 20 6f 6e 65 20 6f 66 20 74 68 65 20 5b 53 51  a one of the [SQ
8420: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
8430: 43 5d 20 62 69 74 73 29 0a 20 20 74 68 61 74 20  C] bits).  that 
8440: 74 68 65 20 66 69 6c 65 73 79 73 74 65 6d 20 73  the filesystem s
8450: 75 70 70 6f 72 74 73 20 61 74 6f 6d 69 63 20 77  upports atomic w
8460: 72 69 74 65 73 20 61 6e 64 20 69 66 20 61 20 74  rites and if a t
8470: 72 61 6e 73 61 63 74 69 6f 6e 0a 20 20 69 6e 76  ransaction.  inv
8480: 6f 6c 76 65 73 20 61 20 63 68 61 6e 67 65 20 74  olves a change t
8490: 6f 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20  o only a single 
84a0: 70 61 67 65 20 6f 66 20 74 68 65 20 64 61 74 61  page of the data
84b0: 62 61 73 65 20 66 69 6c 65 2c 0a 20 20 74 68 65  base file,.  the
84c0: 6e 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  n the transactio
84d0: 6e 20 63 6f 6d 6d 69 74 73 20 77 69 74 68 20 6a  n commits with j
84e0: 75 73 74 20 61 20 73 69 6e 67 6c 65 20 77 72 69  ust a single wri
84f0: 74 65 20 72 65 71 75 65 73 74 20 6f 66 0a 20 20  te request of.  
8500: 61 20 73 69 6e 67 6c 65 20 70 61 67 65 20 6f 66  a single page of
8510: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e   the database an
8520: 64 20 6e 6f 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f  d no rollback jo
8530: 75 72 6e 61 6c 20 69 73 20 63 72 65 61 74 65 64  urnal is created
8540: 0a 20 20 6f 72 20 77 72 69 74 74 65 6e 2e 20 20  .  or written.  
8550: 4f 6e 20 66 69 6c 65 73 79 73 74 65 6d 73 20 74  On filesystems t
8560: 68 61 74 20 73 75 70 70 6f 72 74 20 61 74 6f 6d  hat support atom
8570: 69 63 20 77 72 69 74 65 73 2c 20 74 68 69 73 0a  ic writes, this.
8580: 20 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 63    optimization c
8590: 61 6e 20 72 65 73 75 6c 74 20 69 6e 20 73 69 67  an result in sig
85a0: 6e 69 66 69 63 61 6e 74 20 73 70 65 65 64 20 69  nificant speed i
85b0: 6d 70 72 6f 76 65 6d 65 6e 74 73 20 66 6f 72 0a  mprovements for.
85c0: 20 20 73 6d 61 6c 6c 20 75 70 64 61 74 65 73 2e    small updates.
85d0: 20 20 48 6f 77 65 76 65 72 2c 20 66 65 77 20 66    However, few f
85e0: 69 6c 65 73 79 73 74 65 6d 73 20 73 75 70 70 6f  ilesystems suppo
85f0: 72 74 20 74 68 69 73 20 63 61 70 61 62 69 6c 69  rt this capabili
8600: 74 79 0a 20 20 61 6e 64 20 74 68 65 20 63 6f 64  ty.  and the cod
8610: 65 20 70 61 74 68 73 20 74 68 61 74 20 63 68 65  e paths that che
8620: 63 6b 20 66 6f 72 20 74 68 69 73 20 63 61 70 61  ck for this capa
8630: 62 69 6c 69 74 79 20 73 6c 6f 77 20 64 6f 77 6e  bility slow down
8640: 20 77 72 69 74 65 0a 20 20 70 65 72 66 6f 72 6d   write.  perform
8650: 61 6e 63 65 20 6f 6e 20 73 79 73 74 65 6d 73 20  ance on systems 
8660: 74 68 61 74 20 6c 61 63 6b 20 61 74 6f 6d 69 63  that lack atomic
8670: 20 77 72 69 74 65 20 63 61 70 61 62 69 6c 69 74   write capabilit
8680: 79 2c 20 73 6f 20 74 68 69 73 0a 20 20 66 65 61  y, so this.  fea
8690: 74 75 72 65 20 69 73 20 64 69 73 61 62 6c 65 64  ture is disabled
86a0: 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a   by default..}..
86b0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
86c0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f  SQLITE_ENABLE_CO
86d0: 4c 55 4d 4e 5f 4d 45 54 41 44 41 54 41 7d 20 7b  LUMN_METADATA} {
86e0: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 43 2d 70  .  When this C-p
86f0: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
8700: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 53 51  o is defined, SQ
8710: 4c 69 74 65 20 69 6e 63 6c 75 64 65 73 20 73 6f  Lite includes so
8720: 6d 65 0a 20 20 61 64 64 69 74 69 6f 6e 61 6c 20  me.  additional 
8730: 41 50 49 73 20 74 68 61 74 20 70 72 6f 76 69 64  APIs that provid
8740: 65 20 63 6f 6e 76 65 6e 69 65 6e 74 20 61 63 63  e convenient acc
8750: 65 73 73 20 74 6f 20 6d 65 74 61 2d 64 61 74 61  ess to meta-data
8760: 20 61 62 6f 75 74 0a 20 20 74 61 62 6c 65 73 20   about.  tables 
8770: 61 6e 64 20 71 75 65 72 69 65 73 2e 20 20 54 68  and queries.  Th
8780: 65 20 41 50 49 73 20 74 68 61 74 20 61 72 65 20  e APIs that are 
8790: 65 6e 61 62 6c 65 64 20 62 79 20 74 68 69 73 20  enabled by this 
87a0: 6f 70 74 69 6f 6e 20 61 72 65 3a 0a 0a 20 20 3c  option are:..  <
87b0: 75 6c 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  ul>.  <li> [sqli
87c0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
87d0: 61 73 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69  ase_name()] </li
87e0: 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65  >.  <li> [sqlite
87f0: 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
8800: 65 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69  e_name16()] </li
8810: 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65  >.  <li> [sqlite
8820: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
8830: 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c  ame()] </li>.  <
8840: 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  li> [sqlite3_col
8850: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36  umn_table_name16
8860: 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e  ()] </li>.  <li>
8870: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
8880: 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 29 5d 20  _origin_name()] 
8890: 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71  </li>.  <li> [sq
88a0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
88b0: 67 69 6e 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f  gin_name16()] </
88c0: 6c 69 3e 0a 20 20 3c 2f 75 6c 3e 0a 7d 0a 0a 43  li>.  </ul>.}..C
88d0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
88e0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 44 42 53  QLITE_ENABLE_DBS
88f0: 54 41 54 5f 56 54 41 42 7d 20 7b 0a 20 20 54 68  TAT_VTAB} {.  Th
8900: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
8910: 73 20 74 68 65 20 5b 64 62 73 74 61 74 20 76 69  s the [dbstat vi
8920: 72 74 75 61 6c 20 74 61 62 6c 65 5d 2e 0a 7d 0a  rtual table]..}.
8930: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
8940: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45  {SQLITE_ENABLE_E
8950: 58 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53 7d  XPLAIN_COMMENTS}
8960: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
8970: 20 61 64 64 73 20 65 78 74 72 61 20 6c 6f 67 69   adds extra logi
8980: 63 20 74 6f 20 53 51 4c 69 74 65 20 74 68 61 74  c to SQLite that
8990: 20 69 6e 73 65 72 74 73 20 63 6f 6d 6d 65 6e 74   inserts comment
89a0: 20 74 65 78 74 20 69 6e 74 6f 20 74 68 65 0a 20   text into the. 
89b0: 20 6f 75 74 70 75 74 20 6f 66 20 5b 45 58 50 4c   output of [EXPL
89c0: 41 49 4e 5d 2e 20 20 54 68 65 73 65 20 65 78 74  AIN].  These ext
89d0: 72 61 20 63 6f 6d 6d 65 6e 74 73 20 75 73 65 20  ra comments use 
89e0: 65 78 74 72 61 20 6d 65 6d 6f 72 79 2c 20 74 68  extra memory, th
89f0: 75 73 0a 20 20 6d 61 6b 69 6e 67 20 5b 70 72 65  us.  making [pre
8a00: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73  pared statements
8a10: 5d 20 6c 61 72 67 65 72 20 61 6e 64 20 76 65 72  ] larger and ver
8a20: 79 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f 77 65  y slightly slowe
8a30: 72 2c 20 61 6e 64 20 73 6f 20 74 68 65 79 20 61  r, and so they a
8a40: 72 65 0a 20 20 74 75 72 6e 65 64 20 6f 66 66 20  re.  turned off 
8a50: 62 79 20 64 65 66 61 75 6c 74 20 61 6e 64 20 69  by default and i
8a60: 6e 20 6d 6f 73 74 20 61 70 70 6c 69 63 61 74 69  n most applicati
8a70: 6f 6e 2e 20 20 42 75 74 20 73 6f 6d 65 20 61 70  on.  But some ap
8a80: 70 6c 69 63 61 74 69 6f 6e 73 2c 20 73 75 63 68  plications, such
8a90: 0a 20 20 61 73 20 74 68 65 20 5b 63 6f 6d 6d 61  .  as the [comma
8aa0: 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c 5d 20 66  nd-line shell] f
8ab0: 6f 72 20 53 51 4c 69 74 65 2c 20 76 61 6c 75 65  or SQLite, value
8ac0: 20 63 6c 61 72 69 74 79 20 6f 66 20 45 58 50 4c   clarity of EXPL
8ad0: 41 49 4e 20 6f 75 74 70 75 74 0a 20 20 6f 76 65  AIN output.  ove
8ae0: 72 20 72 61 77 20 70 65 72 66 6f 72 6d 61 6e 63  r raw performanc
8af0: 65 20 61 6e 64 20 73 6f 20 74 68 69 73 20 63 6f  e and so this co
8b00: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
8b10: 6e 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 74  n is available t
8b20: 6f 20 74 68 65 6d 2e 0a 20 20 54 68 65 20 53 51  o them..  The SQ
8b30: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45 58 50 4c  LITE_ENABLE_EXPL
8b40: 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53 20 63 6f 6d  AIN_COMMENTS com
8b50: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
8b60: 20 69 73 20 61 6c 73 6f 20 65 6e 61 62 6c 65 64   is also enabled
8b70: 0a 20 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  .  automatically
8b80: 20 69 66 20 5b 53 51 4c 49 54 45 5f 44 45 42 55   if [SQLITE_DEBU
8b90: 47 5d 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a 7d  G] is enabled..}
8ba0: 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  ...COMPILE_OPTIO
8bb0: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
8bc0: 5f 46 54 53 33 7d 20 7b 0a 20 20 57 68 65 6e 20  _FTS3} {.  When 
8bd0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
8be0: 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 61  efined in the [a
8bf0: 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76 65  malgamation], ve
8c00: 72 73 69 6f 6e 20 33 0a 20 20 6f 66 20 74 68 65  rsion 3.  of the
8c10: 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72 63   full-text searc
8c20: 68 20 65 6e 67 69 6e 65 20 69 73 20 61 64 64 65  h engine is adde
8c30: 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20 61  d to the build a
8c40: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a  utomatically..}.
8c50: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
8c60: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46  {SQLITE_ENABLE_F
8c70: 54 53 33 5f 50 41 52 45 4e 54 48 45 53 49 53 7d  TS3_PARENTHESIS}
8c80: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
8c90: 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20 71 75   modifies the qu
8ca0: 65 72 79 20 70 61 74 74 65 72 6e 20 70 61 72 73  ery pattern pars
8cb0: 65 72 20 69 6e 20 46 54 53 33 20 73 75 63 68 20  er in FTS3 such 
8cc0: 74 68 61 74 20 69 74 0a 20 20 73 75 70 70 6f 72  that it.  suppor
8cd0: 74 73 20 6f 70 65 72 61 74 6f 72 73 20 41 4e 44  ts operators AND
8ce0: 20 61 6e 64 20 4e 4f 54 20 28 69 6e 20 61 64 64   and NOT (in add
8cf0: 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 75 73 75  ition to the usu
8d00: 61 6c 20 4f 52 20 61 6e 64 20 4e 45 41 52 29 0a  al OR and NEAR).
8d10: 20 20 61 6e 64 20 61 6c 73 6f 20 61 6c 6c 6f 77    and also allow
8d20: 73 20 71 75 65 72 79 20 65 78 70 72 65 73 73 69  s query expressi
8d30: 6f 6e 73 20 74 6f 20 63 6f 6e 74 61 69 6e 20 6e  ons to contain n
8d40: 65 73 74 65 64 20 70 61 72 65 6e 74 68 65 73 69  ested parenthesi
8d50: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
8d60: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
8d70: 42 4c 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a  BLE_FTS3_TOKENIZ
8d80: 45 52 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  ER} {.  This opt
8d90: 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20  ion enables the 
8da0: 74 77 6f 2d 61 72 67 75 6d 65 6e 74 20 76 65 72  two-argument ver
8db0: 73 69 6f 6e 20 6f 66 20 74 68 65 20 5b 66 74 73  sion of the [fts
8dc0: 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 5d 0a 20  3_tokenizer()]. 
8dd0: 20 69 6e 74 65 72 66 61 63 65 2e 20 20 54 68 65   interface.  The
8de0: 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
8df0: 20 74 6f 20 66 74 73 33 5f 74 6f 6b 65 6e 69 7a   to fts3_tokeniz
8e00: 65 72 28 29 20 69 73 20 73 75 70 70 6f 73 65 20  er() is suppose 
8e10: 74 6f 20 62 65 20 61 0a 20 20 70 6f 69 6e 74 65  to be a.  pointe
8e20: 72 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20  r to a function 
8e30: 28 65 6e 63 6f 64 65 64 20 61 73 20 61 20 42 4c  (encoded as a BL
8e40: 4f 42 29 20 74 68 61 74 20 69 6d 70 6c 65 6d 65  OB) that impleme
8e50: 6e 74 73 20 61 6e 0a 20 20 61 70 70 6c 69 63 61  nts an.  applica
8e60: 74 69 6f 6e 20 64 65 66 69 6e 65 64 20 74 6f 6b  tion defined tok
8e70: 65 6e 69 7a 65 72 2e 20 20 49 66 20 68 6f 73 74  enizer.  If host
8e80: 69 6c 65 20 61 63 74 6f 72 73 20 61 72 65 20 61  ile actors are a
8e90: 62 6c 65 20 74 6f 20 72 75 6e 0a 20 20 74 68 65  ble to run.  the
8ea0: 20 74 77 6f 2d 61 72 67 75 6d 65 6e 74 20 76 65   two-argument ve
8eb0: 72 73 69 6f 6e 20 6f 66 20 66 74 73 33 5f 74 6f  rsion of fts3_to
8ec0: 6b 65 6e 69 7a 65 72 28 29 20 77 69 74 68 20 61  kenizer() with a
8ed0: 6e 20 61 72 62 69 74 72 61 72 79 20 73 65 63 6f  n arbitrary seco
8ee0: 6e 64 0a 20 20 61 72 67 75 6d 65 6e 74 2c 20 74  nd.  argument, t
8ef0: 68 65 79 20 63 6f 75 6c 64 20 75 73 65 20 63 72  hey could use cr
8f00: 61 73 68 20 6f 72 20 74 61 6b 65 20 63 6f 6e 74  ash or take cont
8f10: 72 6f 6c 20 6f 66 20 74 68 65 20 70 72 6f 63 65  rol of the proce
8f20: 73 73 2e 20 0a 20 20 3c 70 3e 0a 20 20 42 65 63  ss. .  <p>.  Bec
8f30: 61 75 73 65 20 6f 66 20 73 65 63 75 72 69 74 79  ause of security
8f40: 20 63 6f 6e 63 65 72 6e 73 2c 20 74 68 65 20 74   concerns, the t
8f50: 77 6f 2d 61 72 67 75 6d 65 6e 74 20 66 74 73 33  wo-argument fts3
8f60: 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 66 65 61  _tokenizer() fea
8f70: 74 75 72 65 20 0a 20 20 77 61 73 20 64 69 73 61  ture .  was disa
8f80: 62 6c 65 64 20 62 65 67 69 6e 6e 69 6e 67 20 77  bled beginning w
8f90: 69 74 68 20 5b 56 65 72 73 69 6f 6e 20 33 2e 31  ith [Version 3.1
8fa0: 31 2e 30 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e  1.0] ([dateof:3.
8fb0: 31 31 2e 30 5d 29 0a 20 20 75 6e 6c 65 73 73 20  11.0]).  unless 
8fc0: 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  this compile-tim
8fd0: 65 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  e option is used
8fe0: 2e 0a 20 20 5b 56 65 72 73 69 6f 6e 20 33 2e 31  ..  [Version 3.1
8ff0: 32 2e 30 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e  2.0] ([dateof:3.
9000: 31 32 2e 30 5d 29 20 61 64 64 65 64 20 74 68 65  12.0]) added the
9010: 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f   .  [sqlite3_db_
9020: 63 6f 6e 66 69 67 5d 28 64 62 2c 5b 53 51 4c 49  config](db,[SQLI
9030: 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42  TE_DBCONFIG_ENAB
9040: 4c 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45  LE_FTS3_TOKENIZE
9050: 52 5d 2c 31 2c 30 29 20 69 6e 74 65 72 66 61 63  R],1,0) interfac
9060: 65 0a 20 20 74 68 61 74 20 61 63 74 69 76 61 74  e.  that activat
9070: 65 73 20 74 68 65 20 74 77 6f 2d 61 72 67 75 6d  es the two-argum
9080: 65 6e 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 5b  ent version of [
9090: 66 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29  fts3_tokenizer()
90a0: 5d 0a 20 20 66 6f 72 20 61 20 73 70 65 63 69 66  ].  for a specif
90b0: 69 63 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  ic [database con
90c0: 6e 65 63 74 69 6f 6e 5d 20 61 74 20 72 75 6e 2d  nection] at run-
90d0: 74 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  time..}..COMPILE
90e0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
90f0: 45 4e 41 42 4c 45 5f 46 54 53 34 7d 20 7b 0a 20  ENABLE_FTS4} {. 
9100: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
9110: 6e 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20  n is defined in 
9120: 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f  the [amalgamatio
9130: 6e 5d 2c 20 76 65 72 73 69 6f 6e 73 20 33 20 61  n], versions 3 a
9140: 6e 64 20 34 0a 20 20 6f 66 20 74 68 65 20 66 75  nd 4.  of the fu
9150: 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20 65  ll-text search e
9160: 6e 67 69 6e 65 20 69 73 20 61 64 64 65 64 20 74  ngine is added t
9170: 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f  o the build auto
9180: 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f  matically..}..CO
9190: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
91a0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 35  LITE_ENABLE_FTS5
91b0: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
91c0: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
91d0: 64 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61  d in the [amalga
91e0: 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e  mation], version
91f0: 73 20 35 0a 20 20 6f 66 20 74 68 65 20 66 75 6c  s 5.  of the ful
9200: 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20 65 6e  l-text search en
9210: 67 69 6e 65 20 28 5b 66 74 73 35 5d 29 20 69 73  gine ([fts5]) is
9220: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75   added to the bu
9230: 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ild automaticall
9240: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
9250: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
9260: 42 4c 45 5f 49 43 55 7d 20 7b 0a 20 20 54 68 69  BLE_ICU} {.  Thi
9270: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
9280: 74 68 65 20 0a 20 20 5b 68 74 74 70 3a 2f 2f 77  the .  [http://w
9290: 77 77 2e 69 63 75 2d 70 72 6f 6a 65 63 74 2e 6f  ww.icu-project.o
92a0: 72 67 2f 20 7c 20 49 6e 74 65 72 6e 61 74 69 6f  rg/ | Internatio
92b0: 6e 61 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73 20 66  nal Components f
92c0: 6f 72 20 55 6e 69 63 6f 64 65 5d 0a 20 20 6f 72  or Unicode].  or
92d0: 20 22 49 43 55 22 20 65 78 74 65 6e 73 69 6f 6e   "ICU" extension
92e0: 20 74 6f 20 53 51 4c 69 74 65 20 74 6f 20 62 65   to SQLite to be
92f0: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75   added to the bu
9300: 69 6c 64 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c  ild.  .}..COMPIL
9310: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
9320: 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43 45 7d  _ENABLE_IOTRACE}
9330: 20 7b 0a 20 20 57 68 65 6e 20 62 6f 74 68 20 74   {.  When both t
9340: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 61  he SQLite core a
9350: 6e 64 20 74 68 65 20 5b 43 6f 6d 6d 61 6e 64 20  nd the [Command 
9360: 4c 69 6e 65 20 49 6e 74 65 72 66 61 63 65 5d 20  Line Interface] 
9370: 28 43 4c 49 29 20 61 72 65 20 62 6f 74 68 20 0a  (CLI) are both .
9380: 20 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20    compiled with 
9390: 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 74 68 65  this option, the
93a0: 6e 20 74 68 65 20 43 4c 49 20 70 72 6f 76 69 64  n the CLI provid
93b0: 65 73 20 61 6e 20 65 78 74 72 61 20 63 6f 6d 6d  es an extra comm
93c0: 61 6e 64 0a 20 20 6e 61 6d 65 64 20 22 2e 69 6f  and.  named ".io
93d0: 74 72 61 63 65 22 20 74 68 61 74 20 70 72 6f 76  trace" that prov
93e0: 69 64 65 73 20 61 20 6c 6f 77 2d 6c 65 76 65 6c  ides a low-level
93f0: 20 6c 6f 67 20 6f 66 20 49 2f 4f 20 61 63 74 69   log of I/O acti
9400: 76 69 74 79 2e 0a 20 20 54 68 69 73 20 6f 70 74  vity..  This opt
9410: 69 6f 6e 20 69 73 20 65 78 70 65 72 69 6d 65 6e  ion is experimen
9420: 74 61 6c 20 61 6e 64 20 6d 61 79 20 62 65 20 64  tal and may be d
9430: 69 73 63 6f 6e 74 69 6e 75 65 64 20 69 6e 20 61  iscontinued in a
9440: 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 2e   future release.
9450: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9460: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
9470: 45 5f 4a 53 4f 4e 31 7d 20 7b 0a 20 20 57 68 65  E_JSON1} {.  Whe
9480: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
9490: 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20   defined in the 
94a0: 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20  [amalgamation], 
94b0: 74 68 65 0a 20 20 5b 4a 53 4f 4e 20 53 51 4c 20  the.  [JSON SQL 
94c0: 66 75 6e 63 74 69 6f 6e 73 5d 20 61 72 65 20 61  functions] are a
94d0: 64 64 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c  dded to the buil
94e0: 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e  d automatically.
94f0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9500: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
9510: 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 7d  E_LOCKING_STYLE}
9520: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
9530: 20 65 6e 61 62 6c 65 73 20 61 64 64 69 74 69 6f   enables additio
9540: 6e 61 6c 20 6c 6f 67 69 63 20 69 6e 20 74 68 65  nal logic in the
9550: 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20 6c 61   OS interface la
9560: 79 65 72 20 66 6f 72 0a 20 20 4d 61 63 20 4f 53  yer for.  Mac OS
9570: 20 58 2e 20 54 68 65 20 61 64 64 69 74 69 6f 6e   X. The addition
9580: 61 6c 20 6c 6f 67 69 63 20 61 74 74 65 6d 70 74  al logic attempt
9590: 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74  s to determine t
95a0: 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 0a 20  he type of the. 
95b0: 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 69 6c 65   underlying file
95c0: 73 79 73 74 65 6d 20 61 6e 64 20 63 68 6f 6f 73  system and choos
95d0: 65 20 61 6e 64 20 61 6c 74 65 72 6e 61 74 69 76  e and alternativ
95e0: 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61 74 65  e locking strate
95f0: 67 79 0a 20 20 74 68 61 74 20 77 6f 72 6b 73 20  gy.  that works 
9600: 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 20 74 68  correctly for th
9610: 61 74 20 66 69 6c 65 73 79 73 74 65 6d 20 74 79  at filesystem ty
9620: 70 65 2e 20 46 69 76 65 20 6c 6f 63 6b 69 6e 67  pe. Five locking
9630: 20 73 74 72 61 74 65 67 69 65 73 20 0a 20 20 61   strategies .  a
9640: 72 65 20 61 76 61 69 6c 61 62 6c 65 3a 0a 0a 20  re available:.. 
9650: 20 3c 75 6c 3e 0a 20 20 20 20 3c 6c 69 3e 20 50   <ul>.    <li> P
9660: 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79  OSIX locking sty
9670: 6c 65 2e 20 54 68 69 73 20 69 73 20 74 68 65 20  le. This is the 
9680: 64 65 66 61 75 6c 74 20 6c 6f 63 6b 69 6e 67 20  default locking 
9690: 73 74 79 6c 65 20 61 6e 64 20 74 68 65 0a 20 20  style and the.  
96a0: 20 20 20 20 20 20 20 73 74 79 6c 65 20 75 73 65         style use
96b0: 64 20 62 79 20 6f 74 68 65 72 20 28 6e 6f 6e 20  d by other (non 
96c0: 4d 61 63 20 4f 53 20 58 29 20 55 6e 69 78 65 73  Mac OS X) Unixes
96d0: 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61  . Locks are obta
96e0: 69 6e 65 64 20 61 6e 64 20 0a 20 20 20 20 20 20  ined and .      
96f0: 20 20 20 72 65 6c 65 61 73 65 64 20 75 73 69 6e     released usin
9700: 67 20 74 68 65 20 66 63 6e 74 6c 28 29 20 73 79  g the fcntl() sy
9710: 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20  stem call...    
9720: 3c 6c 69 3e 20 41 46 50 20 6c 6f 63 6b 69 6e 67  <li> AFP locking
9730: 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63   style. This loc
9740: 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73  king style is us
9750: 65 64 20 66 6f 72 20 6e 65 74 77 6f 72 6b 20 66  ed for network f
9760: 69 6c 65 20 0a 20 20 20 20 20 20 20 20 20 73 79  ile .         sy
9770: 73 74 65 6d 73 20 74 68 61 74 20 75 73 65 20 74  stems that use t
9780: 68 65 20 41 46 50 20 28 41 70 70 6c 65 20 46 69  he AFP (Apple Fi
9790: 6c 69 6e 67 20 50 72 6f 74 6f 63 6f 6c 29 20 70  ling Protocol) p
97a0: 72 6f 74 6f 63 6f 6c 2e 20 4c 6f 63 6b 73 0a 20  rotocol. Locks. 
97b0: 20 20 20 20 20 20 20 20 61 72 65 20 6f 62 74 61          are obta
97c0: 69 6e 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 20  ined by calling 
97d0: 74 68 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63  the library func
97e0: 74 69 6f 6e 20 5f 41 46 50 46 53 53 65 74 4c 6f  tion _AFPFSSetLo
97f0: 63 6b 28 29 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20  ck()...    <li> 
9800: 46 6c 6f 63 6b 20 6c 6f 63 6b 69 6e 67 20 73 74  Flock locking st
9810: 79 6c 65 2e 20 54 68 69 73 20 69 73 20 75 73 65  yle. This is use
9820: 64 20 66 6f 72 20 66 69 6c 65 2d 73 79 73 74 65  d for file-syste
9830: 6d 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 0a 20  ms that do not. 
9840: 20 20 20 20 20 20 20 20 73 75 70 70 6f 72 74 20          support 
9850: 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74  POSIX locking st
9860: 79 6c 65 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f  yle. Locks are o
9870: 62 74 61 69 6e 65 64 20 61 6e 64 20 72 65 6c 65  btained and rele
9880: 61 73 65 64 20 75 73 69 6e 67 0a 20 20 20 20 20  ased using.     
9890: 20 20 20 20 74 68 65 20 66 6c 6f 63 6b 28 29 20      the flock() 
98a0: 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20  system call...  
98b0: 20 20 3c 6c 69 3e 20 44 6f 74 2d 66 69 6c 65 20    <li> Dot-file 
98c0: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54  locking style. T
98d0: 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  his locking styl
98e0: 65 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 6e  e is used when n
98f0: 65 69 74 68 65 72 0a 20 20 20 20 20 20 20 20 20  either.         
9900: 66 6c 6f 63 6b 20 6e 6f 72 20 50 4f 53 49 58 20  flock nor POSIX 
9910: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73 20 61  locking styles a
9920: 72 65 20 73 75 70 70 6f 72 74 65 64 20 62 79 20  re supported by 
9930: 74 68 65 20 66 69 6c 65 20 73 79 73 74 65 6d 2e  the file system.
9940: 0a 20 20 20 20 20 20 20 20 20 44 61 74 61 62 61  .         Databa
9950: 73 65 20 6c 6f 63 6b 73 20 61 72 65 20 6f 62 74  se locks are obt
9960: 61 69 6e 65 64 20 62 79 20 63 72 65 61 74 69 6e  ained by creatin
9970: 67 20 61 6e 64 20 65 6e 74 72 79 20 69 6e 20 74  g and entry in t
9980: 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d 0a 20  he file-system. 
9990: 20 20 20 20 20 20 20 20 61 74 20 61 20 77 65 6c          at a wel
99a0: 6c 2d 6b 6e 6f 77 6e 20 6c 6f 63 61 74 69 6f 6e  l-known location
99b0: 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65   relative to the
99c0: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 28   database file (
99d0: 61 20 22 64 6f 74 2d 66 69 6c 65 22 29 0a 20 20  a "dot-file").  
99e0: 20 20 20 20 20 20 20 61 6e 64 20 72 65 6c 69 6e         and relin
99f0: 71 75 69 73 68 65 64 20 62 79 20 64 65 6c 65 74  quished by delet
9a00: 69 6e 67 20 74 68 65 20 73 61 6d 65 20 66 69 6c  ing the same fil
9a10: 65 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 4e 6f 20  e...    <li> No 
9a20: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 49  locking style. I
9a30: 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 61 62  f none of the ab
9a40: 6f 76 65 20 63 61 6e 20 62 65 20 73 75 70 70 6f  ove can be suppo
9a50: 72 74 65 64 2c 20 74 68 69 73 20 0a 20 20 20 20  rted, this .    
9a60: 20 20 20 20 20 6c 6f 63 6b 69 6e 67 20 73 74 79       locking sty
9a70: 6c 65 20 69 73 20 75 73 65 64 2e 20 4e 6f 20 64  le is used. No d
9a80: 61 74 61 62 61 73 65 20 6c 6f 63 6b 69 6e 67 20  atabase locking 
9a90: 6d 65 63 68 61 6e 69 73 6d 20 69 73 20 75 73 65  mechanism is use
9aa0: 64 2e 20 57 68 65 6e 0a 20 20 20 20 20 20 20 20  d. When.        
9ab0: 20 74 68 69 73 20 73 79 73 74 65 6d 20 69 73 20   this system is 
9ac0: 75 73 65 64 20 69 74 20 69 73 20 6e 6f 74 20 73  used it is not s
9ad0: 61 66 65 20 66 6f 72 20 61 20 73 69 6e 67 6c 65  afe for a single
9ae0: 20 64 61 74 61 62 61 73 65 20 74 6f 20 62 65 0a   database to be.
9af0: 20 20 20 20 20 20 20 20 20 61 63 63 65 73 73 65           accesse
9b00: 64 20 62 79 20 6d 75 6c 74 69 70 6c 65 20 63 6c  d by multiple cl
9b10: 69 65 6e 74 73 2e 0a 20 20 3c 2f 75 6c 3e 0a 0a  ients..  </ul>..
9b20: 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20    Additionally, 
9b30: 66 69 76 65 20 65 78 74 72 61 20 5b 56 46 53 5d  five extra [VFS]
9b40: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
9b50: 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 61 73   are provided as
9b60: 20 77 65 6c 6c 20 61 73 20 74 68 65 0a 20 20 64   well as the.  d
9b70: 65 66 61 75 6c 74 2e 20 42 79 20 73 70 65 63 69  efault. By speci
9b80: 66 79 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65  fying one of the
9b90: 20 65 78 74 72 61 20 56 46 53 20 69 6d 70 6c 65   extra VFS imple
9ba0: 6d 65 6e 74 61 74 69 6f 6e 73 20 0a 20 20 77 68  mentations .  wh
9bb0: 65 6e 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69  en calling [sqli
9bc0: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20  te3_open_v2()], 
9bd0: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  an application m
9be0: 61 79 20 62 79 70 61 73 73 20 74 68 65 20 66 69  ay bypass the fi
9bf0: 6c 65 2d 73 79 73 74 65 6d 0a 20 20 64 65 74 65  le-system.  dete
9c00: 63 74 69 6f 6e 20 6c 6f 67 69 63 20 61 6e 64 20  ction logic and 
9c10: 65 78 70 6c 69 63 69 74 6c 79 20 73 65 6c 65 63  explicitly selec
9c20: 74 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f  t one of the abo
9c30: 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  ve locking style
9c40: 73 2e 20 54 68 65 0a 20 20 66 69 76 65 20 65 78  s. The.  five ex
9c50: 74 72 61 20 5b 56 46 53 5d 20 69 6d 70 6c 65 6d  tra [VFS] implem
9c60: 65 6e 74 61 74 69 6f 6e 73 20 61 72 65 20 63 61  entations are ca
9c70: 6c 6c 65 64 20 22 75 6e 69 78 2d 70 6f 73 69 78  lled "unix-posix
9c80: 22 2c 20 22 75 6e 69 78 2d 61 66 70 22 2c 0a 20  ", "unix-afp",. 
9c90: 20 22 75 6e 69 78 2d 66 6c 6f 63 6b 22 2c 20 22   "unix-flock", "
9ca0: 75 6e 69 78 2d 64 6f 74 66 69 6c 65 22 20 61 6e  unix-dotfile" an
9cb0: 64 20 22 75 6e 69 78 2d 6e 6f 6e 65 22 2e 0a 7d  d "unix-none"..}
9cc0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
9cd0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
9ce0: 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e  MEMORY_MANAGEMEN
9cf0: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
9d00: 6f 6e 20 61 64 64 73 20 65 78 74 72 61 20 6c 6f  on adds extra lo
9d10: 67 69 63 20 74 6f 20 53 51 4c 69 74 65 20 74 68  gic to SQLite th
9d20: 61 74 20 61 6c 6c 6f 77 73 20 69 74 20 74 6f 20  at allows it to 
9d30: 72 65 6c 65 61 73 65 20 75 6e 75 73 65 64 0a 20  release unused. 
9d40: 20 6d 65 6d 6f 72 79 20 75 70 6f 6e 20 72 65 71   memory upon req
9d50: 75 65 73 74 2e 20 20 54 68 69 73 20 6f 70 74 69  uest.  This opti
9d60: 6f 6e 20 6d 75 73 74 20 62 65 20 65 6e 61 62 6c  on must be enabl
9d70: 65 64 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20  ed in order for 
9d80: 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72  the.  [sqlite3_r
9d90: 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d  elease_memory()]
9da0: 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 77 6f   interface to wo
9db0: 72 6b 2e 20 20 49 66 20 74 68 69 73 20 63 6f 6d  rk.  If this com
9dc0: 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f 70 74 69  pile-time.  opti
9dd0: 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65 64 2c 20  on is not used, 
9de0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c  the [sqlite3_rel
9df0: 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69  ease_memory()] i
9e00: 6e 74 65 72 66 61 63 65 20 69 73 20 61 20 0a 20  nterface is a . 
9e10: 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50 49   no-op..}..COMPI
9e20: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
9e30: 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33  E_ENABLE_MEMSYS3
9e40: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
9e50: 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64 65 20  n includes code 
9e60: 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74 20 69  in SQLite that i
9e70: 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61 6c 74  mplements an alt
9e80: 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d 6f 72  ernative.  memor
9e90: 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 54 68  y allocator.  Th
9ea0: 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6d  is alternative m
9eb0: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
9ec0: 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65 64 0a  is only engaged.
9ed0: 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51 4c 49    when the [SQLI
9ee0: 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 20  TE_CONFIG_HEAP] 
9ef0: 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74  option to [sqlit
9f00: 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73 20  e3_config()] is 
9f10: 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70 6c 79  used to.  supply
9f20: 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b 20 6f   a large chunk o
9f30: 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 77 68  f memory from wh
9f40: 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61  ich all memory a
9f50: 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65 0a 20  llocations are. 
9f60: 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20 4d 45   taken..  The ME
9f70: 4d 53 59 53 33 20 6d 65 6d 6f 72 79 20 61 6c 6c  MSYS3 memory all
9f80: 6f 63 61 74 6f 72 20 75 73 65 73 20 61 20 68 79  ocator uses a hy
9f90: 62 72 69 64 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  brid allocation 
9fa0: 61 6c 67 6f 72 69 74 68 6d 20 0a 20 20 70 61 74  algorithm .  pat
9fb0: 74 65 72 6e 65 64 20 61 66 74 65 72 20 64 6c 6d  terned after dlm
9fc0: 61 6c 6c 6f 63 28 29 2e 20 20 20 4f 6e 6c 79 20  alloc().   Only 
9fd0: 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f 45 4e  one of SQLITE_EN
9fe0: 41 42 4c 45 5f 4d 45 4d 53 59 53 33 20 61 6e 64  ABLE_MEMSYS3 and
9ff0: 20 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c   .  SQLITE_ENABL
a000: 45 5f 4d 45 4d 53 59 53 35 20 6d 61 79 20 62 65  E_MEMSYS5 may be
a010: 20 65 6e 61 62 6c 65 64 20 61 74 20 6f 6e 63 65   enabled at once
a020: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
a030: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
a040: 4c 45 5f 4d 45 4d 53 59 53 35 7d 20 7b 0a 20 20  LE_MEMSYS5} {.  
a050: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e 63 6c  This option incl
a060: 75 64 65 73 20 63 6f 64 65 20 69 6e 20 53 51 4c  udes code in SQL
a070: 69 74 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65  ite that impleme
a080: 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69  nts an alternati
a090: 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ve.  memory allo
a0a0: 63 61 74 6f 72 2e 20 20 54 68 69 73 20 61 6c 74  cator.  This alt
a0b0: 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20  ernative memory 
a0c0: 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f 6e 6c  allocator is onl
a0d0: 79 20 65 6e 67 61 67 65 64 0a 20 20 77 68 65 6e  y engaged.  when
a0e0: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e   the [SQLITE_CON
a0f0: 46 49 47 5f 48 45 41 50 5d 20 6f 70 74 69 6f 6e  FIG_HEAP] option
a100: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e   to [sqlite3_con
a110: 66 69 67 28 29 5d 20 69 73 20 75 73 65 64 20 74  fig()] is used t
a120: 6f 0a 20 20 73 75 70 70 6c 79 20 61 20 6c 61 72  o.  supply a lar
a130: 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f  ge chunk of memo
a140: 72 79 20 66 72 6f 6d 20 77 68 69 63 68 20 61 6c  ry from which al
a150: 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  l memory allocat
a160: 69 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b 65 6e  ions are.  taken
a170: 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59 53 35 20  ..  The MEMSYS5 
a180: 6d 6f 64 75 6c 65 20 72 6f 75 6e 64 73 20 61 6c  module rounds al
a190: 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 75 70  l allocations up
a1a0: 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70 6f 77   to the next pow
a1b0: 65 72 0a 20 20 6f 66 20 74 77 6f 20 61 6e 64 20  er.  of two and 
a1c0: 75 73 65 73 20 61 20 66 69 72 73 74 2d 66 69 74  uses a first-fit
a1d0: 2c 20 62 75 64 64 79 2d 61 6c 6c 6f 63 61 74 6f  , buddy-allocato
a1e0: 72 20 61 6c 67 6f 72 69 74 68 6d 0a 20 20 74 68  r algorithm.  th
a1f0: 61 74 20 70 72 6f 76 69 64 65 73 20 73 74 72 6f  at provides stro
a200: 6e 67 20 67 75 61 72 61 6e 74 65 65 73 20 61 67  ng guarantees ag
a210: 61 69 6e 73 74 20 66 72 61 67 6d 65 6e 74 61 74  ainst fragmentat
a220: 69 6f 6e 20 61 6e 64 20 62 72 65 61 6b 64 6f 77  ion and breakdow
a230: 6e 0a 20 20 73 75 62 6a 65 63 74 20 74 6f 20 63  n.  subject to c
a240: 65 72 74 61 69 6e 20 6f 70 65 72 61 74 69 6e 67  ertain operating
a250: 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 7d 0a   constraints..}.
a260: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
a270: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4e  {SQLITE_ENABLE_N
a280: 55 4c 4c 5f 54 52 49 4d 7d 20 7b 0a 20 20 54 68  ULL_TRIM} {.  Th
a290: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
a2a0: 73 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f  s an optimizatio
a2b0: 6e 20 74 68 61 74 20 6f 6d 69 74 73 20 4e 55 4c  n that omits NUL
a2c0: 4c 20 63 6f 6c 75 6d 6e 73 20 61 74 0a 20 20 74  L columns at.  t
a2d0: 68 65 20 65 6e 64 73 20 6f 66 20 72 6f 77 73 2c  he ends of rows,
a2e0: 20 66 6f 72 20 61 20 73 70 61 63 65 20 73 61 76   for a space sav
a2f0: 69 6e 67 73 20 6f 6e 20 64 69 73 6b 2e 0a 20 20  ings on disk..  
a300: 3c 70 3e 0a 20 20 44 61 74 61 62 61 73 65 73 20  <p>.  Databases 
a310: 67 65 6e 65 72 61 74 65 64 20 77 69 74 68 20 74  generated with t
a320: 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c  his option enabl
a330: 65 64 20 61 72 65 20 6e 6f 74 20 72 65 61 64 61  ed are not reada
a340: 62 6c 65 0a 20 20 62 79 20 53 51 4c 69 74 65 20  ble.  by SQLite 
a350: 76 65 72 73 69 6f 6e 20 33 2e 31 2e 36 20 28 5b  version 3.1.6 ([
a360: 64 61 74 65 6f 66 3a 33 2e 31 2e 36 5d 29 20 61  dateof:3.1.6]) a
a370: 6e 64 20 65 61 72 6c 69 65 72 2e 20 20 41 6c 73  nd earlier.  Als
a380: 6f 2c 0a 20 20 64 61 74 61 62 61 73 65 73 20 67  o,.  databases g
a390: 65 6e 65 72 61 74 65 64 20 77 69 74 68 20 74 68  enerated with th
a3a0: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
a3b0: 64 20 61 72 65 20 70 72 6f 6e 65 20 74 6f 0a 20  d are prone to. 
a3c0: 20 74 72 69 67 67 65 72 69 6e 67 20 74 68 65 0a   triggering the.
a3d0: 20 20 5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e 73    [https://www.s
a3e0: 71 6c 69 74 65 2e 6f 72 67 2f 73 72 63 2f 69 6e  qlite.org/src/in
a3f0: 66 6f 2f 65 36 65 39 36 32 64 36 62 30 66 30 36  fo/e6e962d6b0f06
a400: 66 34 36 65 7c 65 36 65 39 36 32 64 36 62 30 66  f46e|e6e962d6b0f
a410: 30 36 66 34 36 5d 0a 20 20 62 75 67 20 69 6e 20  06f46].  bug in 
a420: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f  the [sqlite3_blo
a430: 62 5f 72 65 6f 70 65 6e 28 29 5d 20 69 6e 74 65  b_reopen()] inte
a440: 72 66 61 63 65 2e 20 20 46 6f 72 20 74 68 6f 73  rface.  For thos
a450: 65 20 72 65 61 73 6f 6e 73 2c 0a 20 20 74 68 69  e reasons,.  thi
a460: 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 69  s optimization i
a470: 73 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65  s disabled by de
a480: 66 61 75 6c 74 2e 20 20 48 6f 77 65 76 65 72 2c  fault.  However,
a490: 20 74 68 69 73 20 6f 70 74 69 6d 69 7a 61 74 69   this optimizati
a4a0: 6f 6e 0a 20 20 6d 61 79 20 62 65 20 65 6e 61 62  on.  may be enab
a4b0: 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 20 69  led by default i
a4c0: 6e 20 61 20 66 75 74 75 72 65 20 72 65 6c 65 61  n a future relea
a4d0: 73 65 20 6f 66 20 53 51 4c 69 74 65 2e 0a 7d 0a  se of SQLite..}.
a4e0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
a4f0: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 50  {SQLITE_ENABLE_P
a500: 52 45 55 50 44 41 54 45 5f 48 4f 4f 4b 7d 20 7b  REUPDATE_HOOK} {
a510: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65  .  This option e
a520: 6e 61 62 6c 65 73 20 0a 20 20 5b 73 71 6c 69 74  nables .  [sqlit
a530: 65 33 5f 70 72 65 75 70 64 61 74 65 5f 68 6f 6f  e3_preupdate_hoo
a540: 6b 7c 73 65 76 65 72 61 6c 20 6e 65 77 20 41 50  k|several new AP
a550: 49 73 5d 20 74 68 61 74 20 70 72 6f 76 69 64 65  Is] that provide
a560: 20 63 61 6c 6c 62 61 63 6b 73 0a 20 20 70 72 69   callbacks.  pri
a570: 6f 72 20 74 6f 20 61 6e 79 20 63 68 61 6e 67 65  or to any change
a580: 20 74 6f 20 61 20 5b 72 6f 77 69 64 20 74 61 62   to a [rowid tab
a590: 6c 65 5d 2e 20 20 54 68 65 20 63 61 6c 6c 62 61  le].  The callba
a5a0: 63 6b 73 20 63 61 6e 20 62 65 20 75 73 65 64 0a  cks can be used.
a5b0: 20 20 74 6f 20 72 65 63 6f 72 64 20 74 68 65 20    to record the 
a5c0: 73 74 61 74 65 20 6f 66 20 74 68 65 20 72 6f 77  state of the row
a5d0: 20 62 65 66 6f 72 65 20 74 68 65 20 63 68 61 6e   before the chan
a5e0: 67 65 20 6f 63 63 75 72 73 2e 0a 20 20 3c 70 3e  ge occurs..  <p>
a5f0: 54 68 65 20 61 63 74 69 6f 6e 20 6f 66 20 74 68  The action of th
a600: 65 20 70 72 65 75 70 64 61 74 65 20 68 6f 6f 6b  e preupdate hook
a610: 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 74   is similar to t
a620: 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 75 70  he.  [sqlite3_up
a630: 64 61 74 65 5f 68 6f 6f 6b 7c 75 70 64 61 74 65  date_hook|update
a640: 20 68 6f 6f 6b 5d 20 65 78 63 65 70 74 20 74 68   hook] except th
a650: 61 74 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  at the callback 
a660: 69 73 0a 20 20 69 6e 76 6f 6b 65 64 20 62 65 66  is.  invoked bef
a670: 6f 72 65 20 74 68 65 20 63 68 61 6e 67 65 2c 20  ore the change, 
a680: 6e 6f 74 20 61 66 74 65 72 77 61 72 64 73 2c 20  not afterwards, 
a690: 61 6e 64 20 74 68 65 20 70 72 65 75 70 64 61 74  and the preupdat
a6a0: 65 0a 20 20 68 6f 6f 6b 20 69 6e 74 65 72 66 61  e.  hook interfa
a6b0: 63 65 73 20 61 72 65 20 6f 6d 69 74 74 65 64 20  ces are omitted 
a6c0: 75 6e 6c 65 73 73 20 74 68 69 73 20 63 6f 6d 70  unless this comp
a6d0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
a6e0: 69 73 0a 20 20 75 73 65 64 2e 0a 20 20 3c 70 3e  is.  used..  <p>
a6f0: 54 68 65 20 70 72 65 75 70 64 61 74 65 20 68 6f  The preupdate ho
a700: 6f 6b 20 69 6e 74 65 72 66 61 63 65 73 20 77 65  ok interfaces we
a710: 72 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 61 64  re originally ad
a720: 64 65 64 20 74 6f 0a 20 20 73 75 70 70 6f 72 74  ded to.  support
a730: 20 74 68 65 20 5b 73 65 73 73 69 6f 6e 5d 20 65   the [session] e
a740: 78 74 65 6e 73 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d  xtension..}..COM
a750: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
a760: 49 54 45 5f 45 4e 41 42 4c 45 5f 52 42 55 7d 20  ITE_ENABLE_RBU} 
a770: 7b 0a 20 20 45 6e 61 62 6c 65 20 74 68 65 20 63  {.  Enable the c
a780: 6f 64 65 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e  ode the implemen
a790: 74 73 20 74 68 65 20 5b 52 42 55 20 65 78 74 65  ts the [RBU exte
a7a0: 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  nsion]..}..COMPI
a7b0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
a7c0: 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45 7d 20  E_ENABLE_RTREE} 
a7d0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
a7e0: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
a7f0: 20 69 6e 63 6c 75 64 65 20 73 75 70 70 6f 72 74   include support
a800: 20 66 6f 72 20 74 68 65 0a 20 20 5b 72 74 72 65   for the.  [rtre
a810: 65 20 7c 20 52 2a 54 72 65 65 20 69 6e 64 65 78  e | R*Tree index
a820: 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a   extension]..}..
a830: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a840: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 45  SQLITE_ENABLE_SE
a850: 53 53 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20  SSION} {.  This 
a860: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74  option enables t
a870: 68 65 20 5b 73 65 73 73 69 6f 6e 20 65 78 74 65  he [session exte
a880: 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  nsion]..}..COMPI
a890: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
a8a0: 45 5f 45 4e 41 42 4c 45 5f 53 54 4d 54 5f 53 43  E_ENABLE_STMT_SC
a8b0: 41 4e 53 54 41 54 55 53 7d 20 7b 0a 20 20 54 68  ANSTATUS} {.  Th
a8c0: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
a8d0: 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  s the [sqlite3_s
a8e0: 74 6d 74 5f 73 63 61 6e 73 74 61 74 75 73 28 29  tmt_scanstatus()
a8f0: 5d 20 69 6e 74 65 72 66 61 63 65 2e 20 20 54 68  ] interface.  Th
a900: 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 73 74 6d  e.  [sqlite3_stm
a910: 74 5f 73 63 61 6e 73 74 61 74 75 73 28 29 5d 20  t_scanstatus()] 
a920: 69 6e 74 65 72 66 61 63 65 20 69 73 20 6e 6f 72  interface is nor
a930: 6d 61 6c 6c 79 20 6f 6d 69 74 74 65 64 20 66 72  mally omitted fr
a940: 6f 6d 20 74 68 65 20 62 75 69 6c 64 0a 20 20 62  om the build.  b
a950: 65 63 61 75 73 65 20 69 74 20 69 6d 70 6f 73 65  ecause it impose
a960: 73 20 61 20 73 6d 61 6c 6c 20 70 65 72 66 6f 72  s a small perfor
a970: 6d 61 6e 63 65 20 70 65 6e 61 6c 74 79 2c 20 65  mance penalty, e
a980: 76 65 6e 20 6f 6e 20 73 74 61 74 65 6d 65 6e 74  ven on statement
a990: 73 20 74 68 61 74 0a 20 20 64 6f 20 6e 6f 74 20  s that.  do not 
a9a0: 75 73 65 20 74 68 65 20 66 65 61 74 75 72 65 2e  use the feature.
a9b0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
a9c0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 52 54 52 45 45  ON {SQLITE_RTREE
a9d0: 5f 49 4e 54 5f 4f 4e 4c 59 7d 20 7b 0a 20 20 49  _INT_ONLY} {.  I
a9e0: 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  f this option is
a9f0: 20 75 73 65 64 20 74 6f 67 65 74 68 65 72 20 77   used together w
aa00: 69 74 68 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42  ith [SQLITE_ENAB
aa10: 4c 45 5f 52 54 52 45 45 5d 20 74 68 65 6e 20 74  LE_RTREE] then t
aa20: 68 65 0a 20 20 5b 72 74 72 65 65 20 7c 20 52 2a  he.  [rtree | R*
aa30: 54 72 65 65 20 65 78 74 65 6e 73 69 6f 6e 5d 20  Tree extension] 
aa40: 77 69 6c 6c 20 6f 6e 6c 79 20 73 74 6f 72 65 20  will only store 
aa50: 33 32 2d 62 69 74 20 73 69 67 6e 65 64 20 69 6e  32-bit signed in
aa60: 74 65 67 65 72 0a 20 20 63 6f 6f 72 64 69 6e 61  teger.  coordina
aa70: 74 65 73 20 61 6e 64 20 61 6c 6c 20 69 6e 74 65  tes and all inte
aa80: 72 6e 61 6c 20 63 6f 6d 70 75 74 61 74 69 6f 6e  rnal computation
aa90: 73 20 77 69 6c 6c 20 62 65 20 64 6f 6e 65 20 75  s will be done u
aaa0: 73 69 6e 67 20 69 6e 74 65 67 65 72 73 0a 20 20  sing integers.  
aab0: 69 6e 73 74 65 61 64 20 6f 66 20 66 6c 6f 61 74  instead of float
aac0: 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72  ing point number
aad0: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
aae0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
aaf0: 42 4c 45 5f 53 51 4c 4c 4f 47 7d 20 7b 0a 20 20  BLE_SQLLOG} {.  
ab00: 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62  This option enab
ab10: 6c 65 73 20 65 78 74 72 61 20 63 6f 64 65 20 28  les extra code (
ab20: 65 73 70 65 63 69 61 6c 6c 79 20 74 68 65 20 5b  especially the [
ab30: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 51  SQLITE_CONFIG_SQ
ab40: 4c 4c 4f 47 5d 0a 20 20 6f 70 74 69 6f 6e 20 74  LLOG].  option t
ab50: 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  o [sqlite3_confi
ab60: 67 28 29 5d 29 20 74 68 61 74 20 63 61 6e 20 62  g()]) that can b
ab70: 65 20 75 73 65 64 20 74 6f 20 63 72 65 61 74 65  e used to create
ab80: 20 6c 6f 67 73 20 6f 66 20 61 6c 6c 0a 20 20 53   logs of all.  S
ab90: 51 4c 69 74 65 20 70 72 6f 63 65 73 73 69 6e 67  QLite processing
aba0: 20 70 65 72 66 6f 72 6d 65 64 20 62 79 20 61 6e   performed by an
abb0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20 20 54   application.  T
abc0: 68 65 73 65 20 6c 6f 67 73 20 63 61 6e 20 62 65  hese logs can be
abd0: 20 75 73 65 66 75 6c 0a 20 20 69 6e 20 64 6f 69   useful.  in doi
abe0: 6e 67 20 6f 66 66 2d 6c 69 6e 65 20 61 6e 61 6c  ng off-line anal
abf0: 79 73 69 73 20 6f 66 20 74 68 65 20 62 65 68 61  ysis of the beha
ac00: 76 69 6f 72 20 6f 66 20 61 6e 20 61 70 70 6c 69  vior of an appli
ac10: 63 61 74 69 6f 6e 2c 20 61 6e 64 20 65 73 70 65  cation, and espe
ac20: 63 69 61 6c 6c 79 0a 20 20 66 6f 72 20 70 65 72  cially.  for per
ac30: 66 6f 72 6d 61 6e 63 65 20 61 6e 61 6c 79 73 69  formance analysi
ac40: 73 2e 20 20 49 6e 20 6f 72 64 65 72 20 66 6f 72  s.  In order for
ac50: 20 74 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42   the SQLITE_ENAB
ac60: 4c 45 5f 53 51 4c 4c 4f 47 20 6f 70 74 69 6f 6e  LE_SQLLOG option
ac70: 20 74 6f 20 0a 20 20 62 65 20 75 73 65 66 75 6c   to .  be useful
ac80: 2c 20 73 6f 6d 65 20 65 78 74 72 61 20 63 6f 64  , some extra cod
ac90: 65 20 69 73 20 72 65 71 75 69 72 65 64 2e 20 20  e is required.  
aca0: 54 68 65 20 0a 20 20 3c 61 20 68 72 65 66 3d 22  The .  <a href="
acb0: 68 74 74 70 3a 2f 2f 77 77 77 2e 73 71 6c 69 74  http://www.sqlit
acc0: 65 2e 6f 72 67 2f 73 72 63 2f 64 6f 63 2f 74 72  e.org/src/doc/tr
acd0: 75 6e 6b 2f 73 72 63 2f 74 65 73 74 5f 73 71 6c  unk/src/test_sql
ace0: 6c 6f 67 2e 63 22 3e 22 74 65 73 74 5f 73 71 6c  log.c">"test_sql
acf0: 6c 6f 67 2e 63 22 3c 2f 61 3e 0a 20 20 73 6f 75  log.c"</a>.  sou
ad00: 72 63 65 20 63 6f 64 65 0a 20 20 66 69 6c 65 20  rce code.  file 
ad10: 69 6e 20 74 68 65 20 53 51 4c 69 74 65 20 73 6f  in the SQLite so
ad20: 75 72 63 65 20 74 72 65 65 20 69 73 20 61 20 77  urce tree is a w
ad30: 6f 72 6b 69 6e 67 20 65 78 61 6d 70 6c 65 20 6f  orking example o
ad40: 66 20 74 68 65 20 72 65 71 75 69 72 65 64 20 65  f the required e
ad50: 78 74 72 61 0a 20 20 63 6f 64 65 2e 20 20 4f 6e  xtra.  code.  On
ad60: 20 75 6e 69 78 20 61 6e 64 20 77 69 6e 64 6f 77   unix and window
ad70: 73 20 73 79 73 74 65 6d 73 2c 20 61 20 64 65 76  s systems, a dev
ad80: 65 6c 6f 70 65 72 20 63 61 6e 20 61 70 70 65 6e  eloper can appen
ad90: 64 20 74 68 65 20 74 65 78 74 20 6f 66 20 74 68  d the text of th
ada0: 65 0a 20 20 22 74 65 73 74 5f 73 71 6c 6c 6f 67  e.  "test_sqllog
adb0: 2e 63 22 20 73 6f 75 72 63 65 20 63 6f 64 65 20  .c" source code 
adc0: 66 69 6c 65 20 74 6f 20 74 68 65 20 65 6e 64 20  file to the end 
add0: 6f 66 20 61 6e 20 22 73 71 6c 69 74 65 33 2e 63  of an "sqlite3.c
ade0: 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 2c 0a  " amalgamation,.
adf0: 20 20 72 65 63 6f 6d 70 69 6c 65 20 74 68 65 20    recompile the 
ae00: 61 70 70 6c 69 63 61 74 69 6f 6e 20 75 73 69 6e  application usin
ae10: 67 20 74 68 65 20 2d 44 53 51 4c 49 54 45 5f 45  g the -DSQLITE_E
ae20: 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 20 6f 70 74  NABLE_SQLLOG opt
ae30: 69 6f 6e 2c 20 74 68 65 6e 20 0a 20 20 63 6f 6e  ion, then .  con
ae40: 74 72 6f 6c 20 6c 6f 67 67 69 6e 67 20 75 73 69  trol logging usi
ae50: 6e 67 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  ng environment v
ae60: 61 72 69 61 62 6c 65 73 2e 20 20 53 65 65 20 74  ariables.  See t
ae70: 68 65 20 68 65 61 64 65 72 20 63 6f 6d 6d 65 6e  he header commen
ae80: 74 20 6f 6e 20 0a 20 20 74 68 65 20 22 74 65 73  t on .  the "tes
ae90: 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f 75 72  t_sqllog.c" sour
aea0: 63 65 20 66 69 6c 65 20 66 6f 72 20 61 64 64 69  ce file for addi
aeb0: 74 69 6f 6e 61 6c 20 64 65 74 61 69 6c 2e 20 20  tional detail.  
aec0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
aed0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
aee0: 45 5f 53 54 41 54 32 7d 20 7b 0a 20 20 54 68 69  E_STAT2} {.  Thi
aef0: 73 20 6f 70 74 69 6f 6e 20 75 73 65 64 20 74 6f  s option used to
af00: 20 63 61 75 73 65 20 74 68 65 20 5b 41 4e 41 4c   cause the [ANAL
af10: 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20  YZE] command to 
af20: 63 6f 6c 6c 65 63 74 0a 20 20 69 6e 64 65 78 20  collect.  index 
af30: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 69  histogram data i
af40: 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f  n the <b>sqlite_
af50: 73 74 61 74 32 3c 2f 62 3e 20 74 61 62 6c 65 2e  stat2</b> table.
af60: 20 20 42 75 74 20 74 68 61 74 0a 20 20 66 75 6e    But that.  fun
af70: 63 74 69 6f 6e 61 6c 69 74 79 20 77 61 73 20 73  ctionality was s
af80: 75 70 65 72 63 65 64 65 64 20 62 79 20 5b 53 51  uperceded by [SQ
af90: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54  LITE_ENABLE_STAT
afa0: 33 5d 20 61 73 20 6f 66 0a 20 20 53 51 4c 69 74  3] as of.  SQLit
afb0: 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 37 2e 39  e [version 3.7.9
afc0: 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e 37 2e 39  ] ([dateof:3.7.9
afd0: 5d 29 2e 20 20 0a 20 20 54 68 65 20 53 51 4c 49  ]).  .  The SQLI
afe0: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 32 20  TE_ENABLE_STAT2 
aff0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
b000: 69 6f 6e 0a 20 20 69 73 20 6e 6f 77 20 61 20 6e  ion.  is now a n
b010: 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  o-op..}..COMPILE
b020: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
b030: 45 4e 41 42 4c 45 5f 53 54 41 54 33 7d 20 7b 0a  ENABLE_STAT3} {.
b040: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64    This option ad
b050: 64 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f  ds additional lo
b060: 67 69 63 20 74 6f 20 74 68 65 20 5b 41 4e 41 4c  gic to the [ANAL
b070: 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 61 6e 64  YZE] command and
b080: 20 74 6f 0a 20 20 74 68 65 20 5b 71 75 65 72 79   to.  the [query
b090: 20 70 6c 61 6e 6e 65 72 5d 20 74 68 61 74 20 63   planner] that c
b0a0: 61 6e 20 68 65 6c 70 20 53 51 4c 69 74 65 20 74  an help SQLite t
b0b0: 6f 20 63 68 6f 73 65 20 61 20 62 65 74 74 65 72  o chose a better
b0c0: 20 71 75 65 72 79 20 70 6c 61 6e 0a 20 20 75 6e   query plan.  un
b0d0: 64 65 72 20 63 65 72 74 61 69 6e 20 73 69 74 75  der certain situ
b0e0: 61 74 69 6f 6e 73 2e 20 20 54 68 65 20 5b 41 4e  ations.  The [AN
b0f0: 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69  ALYZE] command i
b100: 73 20 65 6e 68 61 6e 63 65 64 20 74 6f 20 63 6f  s enhanced to co
b110: 6c 6c 65 63 74 0a 20 20 68 69 73 74 6f 67 72 61  llect.  histogra
b120: 6d 20 64 61 74 61 20 66 72 6f 6d 20 74 68 65 20  m data from the 
b130: 6c 65 66 74 2d 6d 6f 73 74 20 63 6f 6c 75 6d 6e  left-most column
b140: 20 6f 66 20 65 61 63 68 20 69 6e 64 65 78 20 61   of each index a
b150: 6e 64 20 73 74 6f 72 65 20 74 68 61 74 20 64 61  nd store that da
b160: 74 61 0a 20 20 69 6e 20 74 68 65 20 5b 73 71 6c  ta.  in the [sql
b170: 69 74 65 5f 73 74 61 74 33 5d 20 74 61 62 6c 65  ite_stat3] table
b180: 2e 20 20 54 68 65 20 71 75 65 72 79 20 70 6c 61  .  The query pla
b190: 6e 6e 65 72 20 77 69 6c 6c 20 74 68 65 6e 20 75  nner will then u
b1a0: 73 65 20 74 68 65 0a 20 20 68 69 73 74 6f 67 72  se the.  histogr
b1b0: 61 6d 20 64 61 74 61 20 74 6f 20 68 65 6c 70 20  am data to help 
b1c0: 69 74 20 6d 61 6b 65 20 62 65 74 74 65 72 20 69  it make better i
b1d0: 6e 64 65 78 20 63 68 6f 69 63 65 73 2e 20 20 4e  ndex choices.  N
b1e0: 6f 74 65 2c 20 68 6f 77 65 76 65 72 2c 0a 20 20  ote, however,.  
b1f0: 74 68 61 74 20 74 68 65 20 75 73 65 20 6f 66 20  that the use of 
b200: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 69  histogram data i
b210: 6e 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20  n query planner 
b220: 76 69 6f 6c 61 74 65 73 20 74 68 65 0a 20 20 5b  violates the.  [
b230: 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 73 74  query planner st
b240: 61 62 69 6c 69 74 79 20 67 75 61 72 61 6e 74 65  ability guarante
b250: 65 5d 20 77 68 69 63 68 20 69 73 20 69 6d 70 6f  e] which is impo
b260: 72 74 61 6e 74 20 74 6f 20 73 6f 6d 65 20 61 70  rtant to some ap
b270: 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 20 20 3c 70  plications..  <p
b280: 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  >.}..COMPILE_OPT
b290: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
b2a0: 4c 45 5f 53 54 41 54 34 7d 20 7b 0a 20 20 54 68  LE_STAT4} {.  Th
b2b0: 69 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 61  is option adds a
b2c0: 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20  dditional logic 
b2d0: 74 6f 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d  to the [ANALYZE]
b2e0: 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 6f 0a   command and to.
b2f0: 20 20 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61    the [query pla
b300: 6e 6e 65 72 5d 20 74 68 61 74 20 63 61 6e 20 68  nner] that can h
b310: 65 6c 70 20 53 51 4c 69 74 65 20 74 6f 20 63 68  elp SQLite to ch
b320: 6f 73 65 20 61 20 62 65 74 74 65 72 20 71 75 65  ose a better que
b330: 72 79 20 70 6c 61 6e 0a 20 20 75 6e 64 65 72 20  ry plan.  under 
b340: 63 65 72 74 61 69 6e 20 73 69 74 75 61 74 69 6f  certain situatio
b350: 6e 73 2e 20 20 54 68 65 20 5b 41 4e 41 4c 59 5a  ns.  The [ANALYZ
b360: 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 6e  E] command is en
b370: 68 61 6e 63 65 64 20 74 6f 20 63 6f 6c 6c 65 63  hanced to collec
b380: 74 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61  t.  histogram da
b390: 74 61 20 66 72 6f 6d 20 61 6c 6c 20 63 6f 6c 75  ta from all colu
b3a0: 6d 6e 73 20 6f 66 20 65 76 65 72 79 20 69 6e 64  mns of every ind
b3b0: 65 78 20 61 6e 64 20 73 74 6f 72 65 20 74 68 61  ex and store tha
b3c0: 74 20 64 61 74 61 0a 20 20 69 6e 20 74 68 65 20  t data.  in the 
b3d0: 5b 73 71 6c 69 74 65 5f 73 74 61 74 34 5d 20 74  [sqlite_stat4] t
b3e0: 61 62 6c 65 2e 20 20 54 68 65 20 71 75 65 72 79  able.  The query
b3f0: 20 70 6c 61 6e 6e 65 72 20 77 69 6c 6c 20 74 68   planner will th
b400: 65 6e 20 75 73 65 20 74 68 65 0a 20 20 68 69 73  en use the.  his
b410: 74 6f 67 72 61 6d 20 64 61 74 61 20 74 6f 20 68  togram data to h
b420: 65 6c 70 20 69 74 20 6d 61 6b 65 20 62 65 74 74  elp it make bett
b430: 65 72 20 69 6e 64 65 78 20 63 68 6f 69 63 65 73  er index choices
b440: 2e 20 20 54 68 65 20 64 6f 77 6e 73 69 64 65 20  .  The downside 
b450: 6f 66 0a 20 20 74 68 69 73 20 63 6f 6d 70 69 6c  of.  this compil
b460: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73  e-time option is
b470: 20 74 68 61 74 20 69 74 20 76 69 6f 6c 61 74 65   that it violate
b480: 73 20 74 68 65 0a 20 20 5b 71 75 65 72 79 20 70  s the.  [query p
b490: 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c 69 74 79  lanner stability
b4a0: 20 67 75 61 72 61 6e 74 65 65 5d 20 6d 61 6b 69   guarantee] maki
b4b0: 6e 67 20 69 74 20 6d 6f 72 65 20 64 69 66 66 69  ng it more diffi
b4c0: 63 75 6c 74 20 74 6f 20 65 6e 73 75 72 65 0a 20  cult to ensure. 
b4d0: 20 63 6f 6e 73 69 73 74 65 6e 74 20 70 65 72 66   consistent perf
b4e0: 6f 72 6d 61 6e 63 65 20 69 6e 20 6d 61 73 73 2d  ormance in mass-
b4f0: 70 72 6f 64 75 63 65 64 20 61 70 70 6c 69 63 61  produced applica
b500: 74 69 6f 6e 73 2e 0a 20 20 3c 70 3e 0a 20 20 53  tions..  <p>.  S
b510: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41  QLITE_ENABLE_STA
b520: 54 34 20 69 73 20 61 6e 20 65 6e 68 61 6e 63 65  T4 is an enhance
b530: 6d 65 6e 74 20 6f 66 20 5b 53 51 4c 49 54 45 5f  ment of [SQLITE_
b540: 45 4e 41 42 4c 45 5f 53 54 41 54 33 5d 2e 20 20  ENABLE_STAT3].  
b550: 53 54 41 54 33 0a 20 20 6f 6e 6c 79 20 72 65 63  STAT3.  only rec
b560: 6f 72 64 65 64 20 68 69 73 74 6f 67 72 61 6d 20  orded histogram 
b570: 64 61 74 61 20 66 6f 72 20 74 68 65 20 6c 65 66  data for the lef
b580: 74 2d 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20 6f 66  t-most column of
b590: 20 65 61 63 68 20 69 6e 64 65 78 0a 20 20 77 68   each index.  wh
b5a0: 65 72 65 61 73 20 74 68 65 20 53 54 41 54 34 20  ereas the STAT4 
b5b0: 65 6e 68 61 6e 63 65 6d 65 6e 74 20 72 65 63 6f  enhancement reco
b5c0: 72 64 73 20 68 69 73 74 6f 67 72 61 6d 20 64 61  rds histogram da
b5d0: 74 61 20 66 72 6f 6d 20 61 6c 6c 20 63 6f 6c 75  ta from all colu
b5e0: 6d 6e 73 0a 20 20 6f 66 20 65 61 63 68 20 69 6e  mns.  of each in
b5f0: 64 65 78 2e 0a 20 20 54 68 65 20 5b 53 51 4c 49  dex..  The [SQLI
b600: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33 5d  TE_ENABLE_STAT3]
b610: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
b620: 74 69 6f 6e 20 69 73 20 61 20 6e 6f 2d 6f 70 20  tion is a no-op 
b630: 61 6e 64 20 69 73 20 69 67 6e 6f 72 65 64 0a 20  and is ignored. 
b640: 20 69 66 20 74 68 65 20 53 51 4c 49 54 45 5f 45   if the SQLITE_E
b650: 4e 41 42 4c 45 5f 53 54 41 54 34 20 63 6f 6d 70  NABLE_STAT4 comp
b660: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
b670: 69 73 20 75 73 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  is used..}..COMP
b680: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
b690: 54 45 5f 45 4e 41 42 4c 45 5f 54 52 45 45 5f 45  TE_ENABLE_TREE_E
b6a0: 58 50 4c 41 49 4e 7d 20 7b 0a 20 20 54 68 69 73  XPLAIN} {.  This
b6b0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
b6c0: 74 69 6f 6e 20 69 73 20 6e 6f 20 6c 6f 6e 67 65  tion is no longe
b6d0: 72 20 75 73 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  r used..}..COMPI
b6e0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
b6f0: 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f  E_ENABLE_UPDATE_
b700: 44 45 4c 45 54 45 5f 4c 49 4d 49 54 7d 20 7b 0a  DELETE_LIMIT} {.
b710: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
b720: 61 62 6c 65 73 20 61 6e 20 6f 70 74 69 6f 6e 61  ables an optiona
b730: 6c 20 4f 52 44 45 52 20 42 59 20 61 6e 64 20 4c  l ORDER BY and L
b740: 49 4d 49 54 20 63 6c 61 75 73 65 20 6f 6e 20 0a  IMIT clause on .
b750: 20 20 5b 55 50 44 41 54 45 5d 20 61 6e 64 20 5b    [UPDATE] and [
b760: 44 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65 6e  DELETE] statemen
b770: 74 73 2e 0a 0a 20 20 3c 70 3e 49 66 20 74 68 69  ts...  <p>If thi
b780: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
b790: 6e 65 64 2c 20 74 68 65 6e 20 69 74 20 6d 75 73  ned, then it mus
b7a0: 74 20 61 6c 73 6f 20 62 65 20 0a 20 20 64 65 66  t also be .  def
b7b0: 69 6e 65 64 20 77 68 65 6e 20 75 73 69 6e 67 20  ined when using 
b7c0: 74 68 65 20 27 6c 65 6d 6f 6e 27 20 74 6f 6f 6c  the 'lemon' tool
b7d0: 20 74 6f 20 67 65 6e 65 72 61 74 65 20 61 20 70   to generate a p
b7e0: 61 72 73 65 2e 63 0a 20 20 66 69 6c 65 2e 20 42  arse.c.  file. B
b7f0: 65 63 61 75 73 65 20 6f 66 20 74 68 69 73 2c 20  ecause of this, 
b800: 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20  this option may 
b810: 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68 65  only be used whe
b820: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73  n the library is
b830: 20 62 75 69 6c 74 0a 20 20 66 72 6f 6d 20 73 6f   built.  from so
b840: 75 72 63 65 2c 20 6e 6f 74 20 66 72 6f 6d 20 74  urce, not from t
b850: 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  he [amalgamation
b860: 5d 20 6f 72 20 66 72 6f 6d 20 74 68 65 20 63 6f  ] or from the co
b870: 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a 20 20 70 72  llection of.  pr
b880: 65 2d 70 61 63 6b 61 67 65 64 20 43 20 66 69 6c  e-packaged C fil
b890: 65 73 20 70 72 6f 76 69 64 65 64 20 66 6f 72 20  es provided for 
b8a0: 6e 6f 6e 2d 55 6e 69 78 20 6c 69 6b 65 20 70 6c  non-Unix like pl
b8b0: 61 74 66 6f 72 6d 73 20 6f 6e 20 74 68 65 20 77  atforms on the w
b8c0: 65 62 73 69 74 65 2e 0a 20 20 3c 2f 70 3e 0a 7d  ebsite..  </p>.}
b8d0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
b8e0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
b8f0: 55 4e 4b 4e 4f 57 4e 5f 53 51 4c 5f 46 55 4e 43  UNKNOWN_SQL_FUNC
b900: 54 49 4f 4e 7d 20 7b 0a 20 20 57 68 65 6e 20 74  TION} {.  When t
b910: 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  he SQLITE_ENABLE
b920: 5f 55 4e 4b 4e 4f 57 4e 5f 53 51 4c 5f 46 55 4e  _UNKNOWN_SQL_FUN
b930: 43 54 49 4f 4e 20 63 6f 6d 70 69 6c 65 2d 74 69  CTION compile-ti
b940: 6d 65 20 6f 70 74 69 6f 6e 20 69 73 0a 20 20 61  me option is.  a
b950: 63 74 69 76 61 74 65 64 2c 20 53 51 4c 69 74 65  ctivated, SQLite
b960: 20 77 69 6c 6c 20 73 75 70 70 72 65 73 73 20 22   will suppress "
b970: 75 6e 6b 6e 6f 77 6e 20 66 75 6e 63 74 69 6f 6e  unknown function
b980: 22 20 65 72 72 6f 72 73 20 77 68 65 6e 20 72 75  " errors when ru
b990: 6e 6e 69 6e 67 0a 20 20 61 6e 20 5b 45 58 50 4c  nning.  an [EXPL
b9a0: 41 49 4e 5d 20 6f 72 20 5b 45 58 50 4c 41 49 4e  AIN] or [EXPLAIN
b9b0: 20 51 55 45 52 59 20 50 4c 41 4e 5d 2e 20 20 49   QUERY PLAN].  I
b9c0: 6e 73 74 65 61 64 20 6f 66 20 74 68 72 6f 77 69  nstead of throwi
b9d0: 6e 67 20 61 6e 20 65 72 72 6f 72 2c 0a 20 20 53  ng an error,.  S
b9e0: 51 4c 69 74 65 20 77 69 6c 6c 20 69 6e 73 65 72  QLite will inser
b9f0: 74 20 61 20 73 75 62 73 74 69 74 75 74 65 20 6e  t a substitute n
ba00: 6f 2d 6f 70 20 66 75 6e 63 74 69 6f 6e 20 6e 61  o-op function na
ba10: 6d 65 64 20 22 75 6e 6b 6e 6f 77 6e 28 29 22 2e  med "unknown()".
ba20: 0a 20 20 54 68 65 20 73 75 62 73 74 69 74 75 74  .  The substitut
ba30: 69 6f 6e 20 6f 66 20 22 75 6e 6b 6e 6f 77 6e 28  ion of "unknown(
ba40: 29 22 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 75  )" in place of u
ba50: 6e 72 65 63 6f 67 6e 69 7a 65 64 20 66 75 6e 63  nrecognized func
ba60: 74 69 6f 6e 73 0a 20 20 6f 6e 6c 79 20 6f 63 63  tions.  only occ
ba70: 75 72 73 20 6f 6e 20 5b 45 58 50 4c 41 49 4e 5d  urs on [EXPLAIN]
ba80: 20 61 6e 64 20 5b 45 58 50 4c 41 49 4e 20 51 55   and [EXPLAIN QU
ba90: 45 52 59 20 50 4c 41 4e 5d 2c 20 6e 6f 74 20 6f  ERY PLAN], not o
baa0: 6e 20 6f 72 64 69 6e 61 72 79 0a 20 20 73 74 61  n ordinary.  sta
bab0: 74 65 6d 65 6e 74 73 2e 0a 20 20 3c 70 3e 0a 20  tements..  <p>. 
bac0: 20 57 68 65 6e 20 75 73 65 64 20 69 6e 20 74 68   When used in th
bad0: 65 20 5b 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20  e [command-line 
bae0: 73 68 65 6c 6c 5d 2c 20 74 68 65 0a 20 20 53 51  shell], the.  SQ
baf0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e  LITE_ENABLE_UNKN
bb00: 4f 57 4e 5f 53 51 4c 5f 46 55 4e 43 54 49 4f 4e  OWN_SQL_FUNCTION
bb10: 20 66 65 61 74 75 72 65 20 61 6c 6c 6f 77 73 20   feature allows 
bb20: 53 51 4c 20 74 65 78 74 20 74 68 61 74 20 63 6f  SQL text that co
bb30: 6e 74 61 69 6e 73 0a 20 20 61 70 70 6c 69 63 61  ntains.  applica
bb40: 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 66 75 6e  tion-defined fun
bb50: 63 74 69 6f 6e 73 20 74 6f 20 62 65 20 70 61 73  ctions to be pas
bb60: 74 65 64 20 69 6e 74 6f 20 74 68 65 20 73 68 65  ted into the she
bb70: 6c 6c 20 66 6f 72 20 0a 20 20 61 6e 61 6c 79 73  ll for .  analys
bb80: 69 73 20 61 6e 64 20 64 65 62 75 67 67 69 6e 67  is and debugging
bb90: 20 77 69 74 68 6f 75 74 20 68 61 76 69 6e 67 20   without having 
bba0: 74 6f 20 63 72 65 61 74 65 20 61 6e 64 20 6c 6f  to create and lo
bbb0: 61 64 20 61 6e 0a 20 20 65 78 74 65 6e 73 69 6f  ad an.  extensio
bbc0: 6e 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74  n that implement
bbd0: 73 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  s the applicatio
bbe0: 6e 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69  n-defined functi
bbf0: 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ons..}..COMPILE_
bc00: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
bc10: 4e 41 42 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54  NABLE_UNLOCK_NOT
bc20: 49 46 59 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  IFY} {.  This op
bc30: 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65  tion enables the
bc40: 20 5b 73 71 6c 69 74 65 33 5f 75 6e 6c 6f 63 6b   [sqlite3_unlock
bc50: 5f 6e 6f 74 69 66 79 28 29 5d 20 69 6e 74 65 72  _notify()] inter
bc60: 66 61 63 65 20 61 6e 64 0a 20 20 69 74 73 20 61  face and.  its a
bc70: 73 73 6f 63 69 61 74 65 64 20 66 75 6e 63 74 69  ssociated functi
bc80: 6f 6e 61 6c 69 74 79 2e 20 20 53 65 65 20 74 68  onality.  See th
bc90: 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  e documentation 
bca0: 74 69 74 6c 65 64 0a 20 20 5b 55 73 69 6e 67 20  titled.  [Using 
bcb0: 74 68 65 20 53 51 4c 69 74 65 20 55 6e 6c 6f 63  the SQLite Unloc
bcc0: 6b 20 4e 6f 74 69 66 69 63 61 74 69 6f 6e 20 46  k Notification F
bcd0: 65 61 74 75 72 65 5d 20 66 6f 72 20 61 64 64 69  eature] for addi
bce0: 74 69 6f 6e 61 6c 0a 20 20 69 6e 66 6f 72 6d 61  tional.  informa
bcf0: 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tion..}..COMPILE
bd00: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
bd10: 53 4f 55 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69  SOUNDEX} {.  Thi
bd20: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
bd30: 20 74 68 65 20 5b 73 6f 75 6e 64 65 78 28 29 20   the [soundex() 
bd40: 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 7d  SQL function]..}
bd50: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
bd60: 20 7b 53 51 4c 49 54 45 5f 55 53 45 5f 46 43 4e   {SQLITE_USE_FCN
bd70: 54 4c 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54 68  TL_TRACE} {.  Th
bd80: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
bd90: 20 53 51 4c 69 74 65 20 74 6f 20 69 73 73 75 65   SQLite to issue
bda0: 20 65 78 74 72 61 20 5b 53 51 4c 49 54 45 5f 46   extra [SQLITE_F
bdb0: 43 4e 54 4c 5f 54 52 41 43 45 5d 20 66 69 6c 65  CNTL_TRACE] file
bdc0: 20 63 6f 6e 74 72 6f 6c 73 0a 20 20 74 6f 20 70   controls.  to p
bdd0: 72 6f 76 69 64 65 20 73 75 70 70 6c 65 6d 65 6e  rovide supplemen
bde0: 74 61 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  tary information
bdf0: 20 74 6f 20 74 68 65 20 56 46 53 2e 20 20 54 68   to the VFS.  Th
be00: 65 20 22 76 66 73 6c 6f 67 2e 63 22 20 65 78 74  e "vfslog.c" ext
be10: 65 6e 73 69 6f 6e 0a 20 20 6d 61 6b 65 73 20 75  ension.  makes u
be20: 73 65 20 6f 66 20 74 68 69 73 20 74 6f 20 70 72  se of this to pr
be30: 6f 76 69 64 65 20 65 6e 68 61 6e 63 65 64 20 6c  ovide enhanced l
be40: 6f 67 73 20 6f 66 20 56 46 53 20 61 63 74 69 76  ogs of VFS activ
be50: 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ity..}..COMPILE_
be60: 4f 50 54 49 4f 4e 20 7b 59 59 54 52 41 43 4b 4d  OPTION {YYTRACKM
be70: 41 58 53 54 41 43 4b 44 45 50 54 48 7d 20 7b 0a  AXSTACKDEPTH} {.
be80: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
be90: 75 73 65 73 20 74 68 65 20 4c 41 4c 52 28 31 29  uses the LALR(1)
bea0: 20 70 61 72 73 65 72 20 73 74 61 63 6b 20 64 65   parser stack de
beb0: 70 74 68 20 74 6f 20 62 65 20 74 72 61 63 6b 65  pth to be tracke
bec0: 64 0a 20 20 61 6e 64 20 72 65 70 6f 72 74 65 64  d.  and reported
bed0: 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69   using the [sqli
bee0: 74 65 33 5f 73 74 61 74 75 73 5d 28 5b 53 51 4c  te3_status]([SQL
bef0: 49 54 45 5f 53 54 41 54 55 53 5f 50 41 52 53 45  ITE_STATUS_PARSE
bf00: 52 5f 53 54 41 43 4b 5d 2c 2e 2e 2e 29 0a 20 20  R_STACK],...).  
bf10: 69 6e 74 65 72 66 61 63 65 2e 20 20 53 51 4c 69  interface.  SQLi
bf20: 74 65 27 73 20 4c 41 4c 52 28 31 29 20 70 61 72  te's LALR(1) par
bf30: 73 65 72 20 68 61 73 20 61 20 66 69 78 65 64 20  ser has a fixed 
bf40: 73 74 61 63 6b 20 64 65 70 74 68 0a 20 20 28 64  stack depth.  (d
bf50: 65 74 65 72 6d 69 6e 65 64 20 61 74 20 63 6f 6d  etermined at com
bf60: 70 69 6c 65 2d 74 69 6d 65 20 75 73 69 6e 67 20  pile-time using 
bf70: 74 68 65 20 5b 59 59 53 54 41 43 4b 44 45 50 54  the [YYSTACKDEPT
bf80: 48 5d 20 6f 70 74 69 6f 6e 73 29 2e 0a 20 20 54  H] options)..  T
bf90: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62  his option can b
bfa0: 65 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 64  e used to help d
bfb0: 65 74 65 72 6d 69 6e 65 20 69 66 20 61 6e 20 61  etermine if an a
bfc0: 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 0a 20 20  pplication is.  
bfd0: 67 65 74 74 69 6e 67 20 63 6c 6f 73 65 20 74 6f  getting close to
bfe0: 20 65 78 63 65 65 64 69 6e 67 20 74 68 65 20 6d   exceeding the m
bff0: 61 78 69 6d 75 6d 20 4c 41 4c 52 28 31 29 20 73  aximum LALR(1) s
c000: 74 61 63 6b 20 64 65 70 74 68 2e 0a 7d 0a 3c 2f  tack depth..}.</
c010: 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 64  tcl>..<a name="d
c020: 69 73 61 62 6c 65 66 65 61 74 75 72 65 73 22 3e  isablefeatures">
c030: 3c 2f 61 3e 0a 3c 68 31 3e 20 4f 70 74 69 6f 6e  </a>.<h1> Option
c040: 73 20 54 6f 20 44 69 73 61 62 6c 65 20 46 65 61  s To Disable Fea
c050: 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20 54  tures Normally T
c060: 75 72 6e 65 64 20 4f 6e 3c 2f 68 31 3e 0a 0a 3c  urned On</h1>..<
c070: 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  tcl>.COMPILE_OPT
c080: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41  ION {SQLITE_DISA
c090: 42 4c 45 5f 4c 46 53 7d 20 7b 0a 20 20 49 66 20  BLE_LFS} {.  If 
c0a0: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
c0b0: 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66  sor macro is def
c0c0: 69 6e 65 64 2c 20 6c 61 72 67 65 20 66 69 6c 65  ined, large file
c0d0: 20 73 75 70 70 6f 72 74 0a 20 20 69 73 20 64 69   support.  is di
c0e0: 73 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  sabled..}..COMPI
c0f0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
c100: 45 5f 44 49 53 41 42 4c 45 5f 44 49 52 53 59 4e  E_DISABLE_DIRSYN
c110: 43 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43  C} {.  If this C
c120: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
c130: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20  cro is defined, 
c140: 64 69 72 65 63 74 6f 72 79 20 73 79 6e 63 73 0a  directory syncs.
c150: 20 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e 20    are disabled. 
c160: 20 53 51 4c 69 74 65 20 74 79 70 69 63 61 6c 6c   SQLite typicall
c170: 79 20 61 74 74 65 6d 70 74 73 20 74 6f 20 73 79  y attempts to sy
c180: 6e 63 20 74 68 65 20 70 61 72 65 6e 74 0a 20 20  nc the parent.  
c190: 64 69 72 65 63 74 6f 72 79 20 77 68 65 6e 20 61  directory when a
c1a0: 20 66 69 6c 65 20 69 73 20 64 65 6c 65 74 65 64   file is deleted
c1b0: 20 74 6f 20 65 6e 73 75 72 65 20 74 68 65 20 64   to ensure the d
c1c0: 69 72 65 63 74 6f 72 79 0a 20 20 65 6e 74 72 69  irectory.  entri
c1d0: 65 73 20 61 72 65 20 75 70 64 61 74 65 64 20 69  es are updated i
c1e0: 6d 6d 65 64 69 61 74 65 6c 79 20 6f 6e 20 64 69  mmediately on di
c1f0: 73 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  sk..}..COMPILE_O
c200: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49  PTION {SQLITE_DI
c210: 53 41 42 4c 45 5f 46 54 53 33 5f 55 4e 49 43 4f  SABLE_FTS3_UNICO
c220: 44 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  DE} {.  If this 
c230: 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C-preprocessor m
c240: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c  acro is defined,
c250: 20 74 68 65 20 5b 75 6e 69 63 6f 64 65 36 31 5d   the [unicode61]
c260: 20 74 6f 6b 65 6e 69 7a 65 72 0a 20 20 69 6e 20   tokenizer.  in 
c270: 5b 46 54 53 33 5d 20 69 73 20 6f 6d 69 74 74 65  [FTS3] is omitte
c280: 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64  d from the build
c290: 20 61 6e 64 20 69 73 20 75 6e 61 76 61 69 6c 61   and is unavaila
c2a0: 62 6c 65 20 74 6f 20 0a 20 20 61 70 70 6c 69 63  ble to .  applic
c2b0: 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  ations..}..COMPI
c2c0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
c2d0: 45 5f 44 49 53 41 42 4c 45 5f 46 54 53 34 5f 44  E_DISABLE_FTS4_D
c2e0: 45 46 45 52 52 45 44 7d 20 7b 0a 20 20 49 66 20  EFERRED} {.  If 
c2f0: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
c300: 73 6f 72 20 6d 61 63 72 6f 20 64 69 73 61 62 6c  sor macro disabl
c310: 65 73 20 74 68 65 20 22 64 65 66 65 72 72 65 64  es the "deferred
c320: 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69 7a 61   token" optimiza
c330: 74 69 6f 6e 0a 20 20 69 6e 20 5b 46 54 53 34 5d  tion.  in [FTS4]
c340: 2e 20 20 54 68 65 20 22 64 65 66 65 72 72 65 64  .  The "deferred
c350: 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69 7a 61   token" optimiza
c360: 74 69 6f 6e 20 61 76 6f 69 64 73 20 6c 6f 61 64  tion avoids load
c370: 69 6e 67 20 6d 61 73 73 69 76 65 0a 20 20 70 6f  ing massive.  po
c380: 73 74 69 6e 67 20 6c 69 73 74 73 20 66 6f 72 20  sting lists for 
c390: 74 65 72 6d 73 20 74 68 61 74 20 61 72 65 20 69  terms that are i
c3a0: 6e 20 6d 6f 73 74 20 64 6f 63 75 6d 65 6e 74 73  n most documents
c3b0: 20 6f 66 20 74 68 65 20 63 6f 6c 6c 65 63 74 69   of the collecti
c3c0: 6f 6e 0a 20 20 61 6e 64 20 69 6e 73 74 65 61 64  on.  and instead
c3d0: 20 73 69 6d 70 6c 79 20 73 63 61 6e 73 20 66 6f   simply scans fo
c3e0: 72 20 74 68 6f 73 65 20 74 6f 6b 65 6e 73 20 69  r those tokens i
c3f0: 6e 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 20 73  n the document s
c400: 6f 75 72 63 65 2e 20 20 5b 46 54 53 34 5d 0a 20  ource.  [FTS4]. 
c410: 20 73 68 6f 75 6c 64 20 67 65 74 20 65 78 61 63   should get exac
c420: 74 6c 79 20 74 68 65 20 73 61 6d 65 20 61 6e 73  tly the same ans
c430: 77 65 72 20 62 6f 74 68 20 77 69 74 68 20 61 6e  wer both with an
c440: 64 20 77 69 74 68 6f 75 74 20 74 68 69 73 20 6f  d without this o
c450: 70 74 69 6d 69 7a 61 74 69 6f 6e 2e 0a 7d 0a 0a  ptimization..}..
c460: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
c470: 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 49  SQLITE_DISABLE_I
c480: 4e 54 52 49 4e 53 49 43 7d 20 7b 0a 20 20 54 68  NTRINSIC} {.  Th
c490: 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c  is option disabl
c4a0: 65 73 20 74 68 65 20 75 73 65 20 6f 66 20 63 6f  es the use of co
c4b0: 6d 70 69 6c 65 72 2d 73 70 65 63 69 66 69 63 20  mpiler-specific 
c4c0: 62 75 69 6c 74 2d 69 6e 20 66 75 6e 63 74 69 6f  built-in functio
c4d0: 6e 73 0a 20 20 73 75 63 68 20 61 73 20 5f 5f 62  ns.  such as __b
c4e0: 75 69 6c 74 69 6e 5f 62 73 77 61 70 33 32 28 29  uiltin_bswap32()
c4f0: 20 61 6e 64 20 5f 5f 62 75 69 6c 74 69 6e 5f 61   and __builtin_a
c500: 64 64 5f 6f 76 65 72 66 6c 6f 77 28 29 20 69 6e  dd_overflow() in
c510: 20 47 43 43 20 61 6e 64 20 43 6c 61 6e 67 2c 20   GCC and Clang, 
c520: 0a 20 20 6f 72 20 5f 62 79 74 65 73 77 61 70 5f  .  or _byteswap_
c530: 75 6c 6f 6e 67 28 29 20 61 6e 64 20 5f 52 65 61  ulong() and _Rea
c540: 64 57 72 69 74 65 42 61 72 72 69 65 72 28 29 20  dWriteBarrier() 
c550: 77 69 74 68 20 4d 53 56 43 2e 20 20 0a 7d 0a 3c  with MSVC.  .}.<
c560: 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a 20 20 68  /tcl>..<tcl>.  h
c570: 64 5f 66 72 61 67 6d 65 6e 74 20 22 6f 6d 69 74  d_fragment "omit
c580: 66 65 61 74 75 72 65 73 22 0a 20 20 68 64 5f 6b  features".  hd_k
c590: 65 79 77 6f 72 64 73 20 22 6f 6d 69 74 66 65 61  eywords "omitfea
c5a0: 74 75 72 65 73 22 0a 3c 2f 74 63 6c 3e 0a 3c 68  tures".</tcl>.<h
c5b0: 31 3e 20 4f 70 74 69 6f 6e 73 20 54 6f 20 4f 6d  1> Options To Om
c5c0: 69 74 20 46 65 61 74 75 72 65 73 3c 2f 68 31 3e  it Features</h1>
c5d0: 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69  ..<p>The followi
c5e0: 6e 67 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20 62  ng options can b
c5f0: 65 20 75 73 65 64 20 74 6f 20 0a 5b 72 65 6c 66  e used to .[relf
c600: 6f 6f 74 70 72 69 6e 74 20 7c 20 72 65 64 75 63  ootprint | reduc
c610: 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68  e the size of th
c620: 65 20 63 6f 6d 70 69 6c 65 64 20 6c 69 62 72 61  e compiled libra
c630: 72 79 5d 0a 62 79 20 6f 6d 69 74 74 69 6e 67 20  ry].by omitting 
c640: 75 6e 75 73 65 64 20 66 65 61 74 75 72 65 73 2e  unused features.
c650: 20 54 68 69 73 20 69 73 20 70 72 6f 62 61 62 6c   This is probabl
c660: 79 20 6f 6e 6c 79 20 75 73 65 66 75 6c 0a 69 6e  y only useful.in
c670: 20 65 6d 62 65 64 64 65 64 20 73 79 73 74 65 6d   embedded system
c680: 73 20 77 68 65 72 65 20 73 70 61 63 65 20 69 73  s where space is
c690: 20 65 73 70 65 63 69 61 6c 6c 79 20 74 69 67 68   especially tigh
c6a0: 74 2c 20 61 73 20 65 76 65 6e 20 77 69 74 68 20  t, as even with 
c6b0: 61 6c 6c 0a 66 65 61 74 75 72 65 73 20 69 6e 63  all.features inc
c6c0: 6c 75 64 65 64 20 74 68 65 20 53 51 4c 69 74 65  luded the SQLite
c6d0: 20 6c 69 62 72 61 72 79 20 69 73 20 72 65 6c 61   library is rela
c6e0: 74 69 76 65 6c 79 20 73 6d 61 6c 6c 2e 20 44 6f  tively small. Do
c6f0: 6e 27 74 20 66 6f 72 67 65 74 0a 74 6f 20 74 65  n't forget.to te
c700: 6c 6c 20 79 6f 75 72 20 63 6f 6d 70 69 6c 65 72  ll your compiler
c710: 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 66 6f 72   to optimize for
c720: 20 62 69 6e 61 72 79 20 73 69 7a 65 21 20 28 74   binary size! (t
c730: 68 65 20 2d 4f 73 20 6f 70 74 69 6f 6e 20 69 66  he -Os option if
c740: 0a 75 73 69 6e 67 20 47 43 43 29 2e 20 20 54 65  .using GCC).  Te
c750: 6c 6c 69 6e 67 20 79 6f 75 72 20 63 6f 6d 70 69  lling your compi
c760: 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20  ler to optimize 
c770: 66 6f 72 20 73 69 7a 65 20 75 73 75 61 6c 6c 79  for size usually
c780: 20 68 61 73 0a 61 20 6d 75 63 68 20 6c 61 72 67   has.a much larg
c790: 65 72 20 69 6d 70 61 63 74 20 6f 6e 20 6c 69 62  er impact on lib
c7a0: 72 61 72 79 20 66 6f 6f 74 70 72 69 6e 74 20 74  rary footprint t
c7b0: 68 61 6e 20 65 6d 70 6c 6f 79 69 6e 67 20 61 6e  han employing an
c7c0: 79 20 6f 66 20 74 68 65 73 65 0a 63 6f 6d 70 69  y of these.compi
c7d0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 2e  le-time options.
c7e0: 20 20 59 6f 75 20 73 68 6f 75 6c 64 20 61 6c 73    You should als
c7f0: 6f 20 76 65 72 69 66 79 20 74 68 61 74 20 0a 3c  o verify that .<
c800: 61 20 68 72 65 66 3d 22 23 64 65 62 75 67 6f 70  a href="#debugop
c810: 74 69 6f 6e 73 22 3e 64 65 62 75 67 67 69 6e 67  tions">debugging
c820: 20 6f 70 74 69 6f 6e 73 3c 2f 61 3e 20 61 72 65   options</a> are
c830: 20 64 69 73 61 62 6c 65 64 2e 3c 2f 70 3e 0a 0a   disabled.</p>..
c840: 3c 70 3e 54 68 65 20 6d 61 63 72 6f 73 20 69 6e  <p>The macros in
c850: 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20 64 6f   this section do
c860: 20 6e 6f 74 20 72 65 71 75 69 72 65 20 76 61 6c   not require val
c870: 75 65 73 2e 20 54 68 65 20 66 6f 6c 6c 6f 77 69  ues. The followi
c880: 6e 67 20 0a 63 6f 6d 70 69 6c 61 74 69 6f 6e 20  ng .compilation 
c890: 73 77 69 74 63 68 65 73 20 61 6c 6c 20 68 61 76  switches all hav
c8a0: 65 20 74 68 65 20 73 61 6d 65 20 65 66 66 65 63  e the same effec
c8b0: 74 3a 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f  t:<br>.-DSQLITE_
c8c0: 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3c  OMIT_ALTERTABLE<
c8d0: 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d 49  br>.-DSQLITE_OMI
c8e0: 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d 31 3c 62  T_ALTERTABLE=1<b
c8f0: 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54  r>.-DSQLITE_OMIT
c900: 5f 41 4c 54 45 52 54 41 42 4c 45 3d 30 0a 3c 2f  _ALTERTABLE=0.</
c910: 70 3e 0a 0a 3c 70 3e 49 66 20 61 6e 79 20 6f 66  p>..<p>If any of
c920: 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 61   these options a
c930: 72 65 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e  re defined, then
c940: 20 74 68 65 20 73 61 6d 65 20 73 65 74 20 6f 66   the same set of
c950: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 0a 6f   SQLITE_OMIT_*.o
c960: 70 74 69 6f 6e 73 20 6d 75 73 74 20 61 6c 73 6f  ptions must also
c970: 20 62 65 20 64 65 66 69 6e 65 64 20 77 68 65 6e   be defined when
c980: 20 75 73 69 6e 67 20 74 68 65 20 27 6c 65 6d 6f   using the 'lemo
c990: 6e 27 20 74 6f 6f 6c 20 74 6f 20 67 65 6e 65 72  n' tool to gener
c9a0: 61 74 65 20 74 68 65 0a 70 61 72 73 65 2e 63 20  ate the.parse.c 
c9b0: 66 69 6c 65 20 61 6e 64 20 77 68 65 6e 20 63 6f  file and when co
c9c0: 6d 70 69 6c 69 6e 67 20 74 68 65 20 27 6d 6b 6b  mpiling the 'mkk
c9d0: 65 79 77 6f 72 64 68 61 73 68 27 20 74 6f 6f 6c  eywordhash' tool
c9e0: 20 77 68 69 63 68 20 67 65 6e 65 72 61 74 65 73   which generates
c9f0: 20 0a 74 68 65 20 6b 65 79 77 6f 72 64 68 61 73   .the keywordhas
ca00: 68 2e 68 20 66 69 6c 65 2e 0a 42 65 63 61 75 73  h.h file..Becaus
ca10: 65 20 6f 66 20 74 68 69 73 2c 20 74 68 65 73 65  e of this, these
ca20: 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20 6f 6e 6c   options may onl
ca30: 79 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 74  y be used when t
ca40: 68 65 20 6c 69 62 72 61 72 79 20 69 73 20 62 75  he library is bu
ca50: 69 6c 74 0a 66 72 6f 6d 20 63 61 6e 6f 6e 69 63  ilt.from canonic
ca60: 61 6c 20 73 6f 75 72 63 65 2c 20 6e 6f 74 20 66  al source, not f
ca70: 72 6f 6d 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d  rom the [amalgam
ca80: 61 74 69 6f 6e 5d 2e 0a 53 6f 6d 65 20 53 51 4c  ation]..Some SQL
ca90: 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f  ITE_OMIT_* optio
caa0: 6e 73 20 6d 69 67 68 74 20 77 6f 72 6b 2c 20 6f  ns might work, o
cab0: 72 20 61 70 70 65 61 72 20 74 6f 20 77 6f 72 6b  r appear to work
cac0: 2c 20 77 68 65 6e 20 75 73 65 64 20 77 69 74 68  , when used with
cad0: 0a 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69  .the [amalgamati
cae0: 6f 6e 5d 2e 20 20 42 75 74 20 74 68 69 73 20 69  on].  But this i
caf0: 73 20 6e 6f 74 20 67 75 61 72 61 6e 74 65 65 64  s not guaranteed
cb00: 2e 20 20 49 6e 20 67 65 6e 65 72 61 6c 2c 20 61  .  In general, a
cb10: 6c 77 61 79 73 20 63 6f 6d 70 69 6c 65 0a 66 72  lways compile.fr
cb20: 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75  om canonical sou
cb30: 72 63 65 73 20 69 6e 20 6f 72 64 65 72 20 74 6f  rces in order to
cb40: 20 74 61 6b 65 20 61 64 76 61 6e 74 61 67 65 20   take advantage 
cb50: 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  of SQLITE_OMIT_*
cb60: 20 6f 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 0a   options..</p>..
cb70: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e  <blockquote>.<i>
cb80: 3c 62 3e 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74  <b>Important Not
cb90: 65 3a 3c 2f 62 3e 20 54 68 65 20 53 51 4c 49 54  e:</b> The SQLIT
cba0: 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73  E_OMIT_* options
cbb0: 20 6d 61 79 20 6e 6f 74 20 77 6f 72 6b 20 77 69   may not work wi
cbc0: 74 68 20 74 68 65 0a 5b 61 6d 61 6c 67 61 6d 61  th the.[amalgama
cbd0: 74 69 6f 6e 5d 2e 20 20 53 51 4c 49 54 45 5f 4f  tion].  SQLITE_O
cbe0: 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69  MIT_* compile-ti
cbf0: 6d 65 0a 6f 70 74 69 6f 6e 73 20 75 73 75 61 6c  me.options usual
cc00: 6c 79 20 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c  ly work correctl
cc10: 79 20 6f 6e 6c 79 20 77 68 65 6e 20 53 51 4c 69  y only when SQLi
cc20: 74 65 20 69 73 20 62 75 69 6c 74 20 66 72 6f 6d  te is built from
cc30: 20 63 61 6e 6f 6e 69 63 61 6c 20 0a 73 6f 75 72   canonical .sour
cc40: 63 65 20 66 69 6c 65 73 2e 0a 3c 2f 69 3e 0a 3c  ce files..</i>.<
cc50: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 0a 3c  /blockquote>...<
cc60: 70 3e 53 70 65 63 69 61 6c 20 76 65 72 73 69 6f  p>Special versio
cc70: 6e 73 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65  ns of the SQLite
cc80: 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20 74 68   amalgamation th
cc90: 61 74 20 64 6f 20 77 6f 72 6b 20 77 69 74 68 20  at do work with 
cca0: 61 0a 70 72 65 64 65 74 65 72 6d 69 6e 65 64 20  a.predetermined 
ccb0: 73 65 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d  set of SQLITE_OM
ccc0: 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 63 61 6e  IT_* options can
ccd0: 20 62 65 20 67 65 6e 65 72 61 74 65 64 2e 20 20   be generated.  
cce0: 54 6f 20 64 6f 20 73 6f 2c 0a 6d 61 6b 65 20 61  To do so,.make a
ccf0: 20 63 6f 70 79 20 6f 66 20 74 68 65 20 4d 61 6b   copy of the Mak
cd00: 65 66 69 6c 65 2e 6c 69 6e 75 78 2d 67 63 63 20  efile.linux-gcc 
cd10: 6d 61 6b 65 66 69 6c 65 20 74 65 6d 70 6c 61 74  makefile templat
cd20: 65 20 69 6e 20 74 68 65 20 63 61 6e 6f 6e 69 63  e in the canonic
cd30: 61 6c 0a 73 6f 75 72 63 65 20 63 6f 64 65 20 64  al.source code d
cd40: 69 73 74 72 69 62 75 74 69 6f 6e 2e 20 20 43 68  istribution.  Ch
cd50: 61 6e 67 65 20 74 68 65 20 6e 61 6d 65 20 6f 66  ange the name of
cd60: 20 79 6f 75 72 20 63 6f 70 79 20 74 6f 20 73 69   your copy to si
cd70: 6d 70 6c 79 20 22 4d 61 6b 65 66 69 6c 65 22 2e  mply "Makefile".
cd80: 0a 54 68 65 6e 20 65 64 69 74 20 22 4d 61 6b 65  .Then edit "Make
cd90: 66 69 6c 65 22 20 74 6f 20 73 65 74 20 75 70 20  file" to set up 
cda0: 61 70 70 72 6f 70 72 69 61 74 65 20 63 6f 6d 70  appropriate comp
cdb0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
cdc0: 2e 20 20 54 68 65 6e 0a 74 79 70 65 3a 0a 3c 63  .  Then.type:.<c
cdd0: 6f 64 65 62 6c 6f 63 6b 3e 0a 6d 61 6b 65 20 63  odeblock>.make c
cde0: 6c 65 61 6e 3b 20 6d 61 6b 65 20 73 71 6c 69 74  lean; make sqlit
cdf0: 65 33 2e 63 0a 3c 2f 63 6f 64 65 62 6c 6f 63 6b  e3.c.</codeblock
ce00: 3e 0a 3c 70 3e 54 68 65 20 72 65 73 75 6c 74 69  >.<p>The resulti
ce10: 6e 67 20 22 73 71 6c 69 74 65 33 2e 63 22 20 61  ng "sqlite3.c" a
ce20: 6d 61 6c 67 61 6d 61 74 69 6f 6e 20 63 6f 64 65  malgamation code
ce30: 20 66 69 6c 65 20 28 61 6e 64 20 69 74 73 20 61   file (and its a
ce40: 73 73 6f 63 69 61 74 65 64 0a 68 65 61 64 65 72  ssociated.header
ce50: 20 66 69 6c 65 20 22 73 71 6c 69 74 65 33 2e 68   file "sqlite3.h
ce60: 22 29 20 63 61 6e 20 74 68 65 6e 20 62 65 20 6d  ") can then be m
ce70: 6f 76 65 64 20 74 6f 20 61 20 6e 6f 6e 2d 75 6e  oved to a non-un
ce80: 69 78 20 70 6c 61 74 66 6f 72 6d 0a 66 6f 72 20  ix platform.for 
ce90: 66 69 6e 61 6c 20 63 6f 6d 70 69 6c 61 74 69 6f  final compilatio
cea0: 6e 20 75 73 69 6e 67 20 61 20 6e 61 74 69 76 65  n using a native
ceb0: 20 63 6f 6d 70 69 6c 65 72 2e 3c 2f 70 3e 0a 0a   compiler.</p>..
cec0: 3c 70 3e 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d  <p>The SQLITE_OM
ced0: 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 61 72 65  IT_* options are
cee0: 20 75 6e 73 75 70 70 6f 72 74 65 64 2e 20 20 42   unsupported.  B
cef0: 79 20 74 68 69 73 20 77 65 20 6d 65 61 6e 20 74  y this we mean t
cf00: 68 61 74 0a 61 6e 20 53 51 4c 49 54 45 5f 4f 4d  hat.an SQLITE_OM
cf10: 49 54 5f 2a 20 6f 70 74 69 6f 6e 20 74 68 61 74  IT_* option that
cf20: 20 6f 6d 69 74 73 20 63 6f 64 65 20 66 72 6f 6d   omits code from
cf30: 20 74 68 65 20 62 75 69 6c 64 20 69 6e 20 74 68   the build in th
cf40: 65 20 63 75 72 72 65 6e 74 0a 72 65 6c 65 61 73  e current.releas
cf50: 65 20 6d 69 67 68 74 20 62 65 63 6f 6d 65 20 61  e might become a
cf60: 20 6e 6f 2d 6f 70 20 69 6e 20 74 68 65 20 6e 65   no-op in the ne
cf70: 78 74 20 72 65 6c 65 61 73 65 2e 20 20 4f 72 20  xt release.  Or 
cf80: 74 68 65 20 6f 74 68 65 72 20 77 61 79 20 61 72  the other way ar
cf90: 6f 75 6e 64 3a 0a 61 6e 20 53 51 4c 49 54 45 5f  ound:.an SQLITE_
cfa0: 4f 4d 49 54 5f 2a 20 74 68 61 74 20 69 73 20 61  OMIT_* that is a
cfb0: 20 6e 6f 2d 6f 70 20 69 6e 20 74 68 65 20 63 75   no-op in the cu
cfc0: 72 72 65 6e 74 20 72 65 6c 65 61 73 65 20 6d 69  rrent release mi
cfd0: 67 68 74 20 63 61 75 73 65 20 63 6f 64 65 0a 74  ght cause code.t
cfe0: 6f 20 62 65 20 65 78 63 6c 75 64 65 64 20 69 6e  o be excluded in
cff0: 20 74 68 65 20 6e 65 78 74 20 72 65 6c 65 61 73   the next releas
d000: 65 2e 20 20 41 6c 73 6f 2c 20 6e 6f 74 20 61 6c  e.  Also, not al
d010: 6c 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  l SQLITE_OMIT_* 
d020: 6f 70 74 69 6f 6e 73 0a 61 72 65 20 74 65 73 74  options.are test
d030: 65 64 2e 20 20 53 6f 6d 65 20 53 51 4c 49 54 45  ed.  Some SQLITE
d040: 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20  _OMIT_* options 
d050: 6d 69 67 68 74 20 63 61 75 73 65 20 53 51 4c 69  might cause SQLi
d060: 74 65 20 74 6f 20 6d 61 6c 66 75 6e 63 74 69 6f  te to malfunctio
d070: 6e 0a 61 6e 64 2f 6f 72 20 70 72 6f 76 69 64 65  n.and/or provide
d080: 20 69 6e 63 6f 72 72 65 63 74 20 61 6e 73 77 65   incorrect answe
d090: 72 73 2e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  rs...<blockquote
d0a0: 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61 6e  >.<i><b>Importan
d0b0: 74 20 4e 6f 74 65 3a 3c 2f 62 3e 0a 54 68 65 20  t Note:</b>.The 
d0c0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f  SQLITE_OMIT_* co
d0d0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
d0e0: 6e 73 20 61 72 65 20 6d 6f 73 74 6c 79 20 75 6e  ns are mostly un
d0f0: 73 75 70 70 6f 72 74 65 64 2e 0a 3c 2f 69 3e 3c  supported..</i><
d100: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70  /blockquote>..<p
d110: 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61  >The following a
d120: 72 65 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65  re the available
d130: 20 4f 4d 49 54 20 6f 70 74 69 6f 6e 73 3a 0a 0a   OMIT options:..
d140: 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50  <tcl>.COMPILE_OP
d150: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
d160: 54 5f 41 4c 54 45 52 54 41 42 4c 45 7d 20 7b 0a  T_ALTERTABLE} {.
d170: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
d180: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
d190: 68 65 20 0a 20 20 5b 41 4c 54 45 52 20 54 41 42  he .  [ALTER TAB
d1a0: 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e  LE] command is n
d1b0: 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74  ot included in t
d1c0: 68 65 20 0a 20 20 6c 69 62 72 61 72 79 2e 20 45  he .  library. E
d1d0: 78 65 63 75 74 69 6e 67 20 61 6e 20 5b 41 4c 54  xecuting an [ALT
d1e0: 45 52 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d  ER TABLE] statem
d1f0: 65 6e 74 20 63 61 75 73 65 73 20 61 20 70 61 72  ent causes a par
d200: 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d  se error..}..COM
d210: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
d220: 49 54 45 5f 4f 4d 49 54 5f 41 4e 41 4c 59 5a 45  ITE_OMIT_ANALYZE
d230: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
d240: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
d250: 64 2c 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d  d, the [ANALYZE]
d260: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6f 6d 69 74   command is omit
d270: 74 65 64 20 66 72 6f 6d 0a 20 20 74 68 65 20 62  ted from.  the b
d280: 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  uild..}..COMPILE
d290: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
d2a0: 4f 4d 49 54 5f 41 54 54 41 43 48 7d 20 7b 0a 20  OMIT_ATTACH} {. 
d2b0: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
d2c0: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  n is defined, th
d2d0: 65 20 5b 41 54 54 41 43 48 5d 20 61 6e 64 20 5b  e [ATTACH] and [
d2e0: 44 45 54 41 43 48 5d 20 63 6f 6d 6d 61 6e 64 73  DETACH] commands
d2f0: 20 61 72 65 0a 20 20 6f 6d 69 74 74 65 64 20 66   are.  omitted f
d300: 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d  rom the build..}
d310: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
d320: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55   {SQLITE_OMIT_AU
d330: 54 48 4f 52 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20  THORIZATION} {. 
d340: 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
d350: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20  ption omits the 
d360: 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 63 61  authorization ca
d370: 6c 6c 62 61 63 6b 20 66 65 61 74 75 72 65 20 66  llback feature f
d380: 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72 61 72  rom the.  librar
d390: 79 2e 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f  y. The [sqlite3_
d3a0: 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 29  set_authorizer()
d3b0: 5d 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 69  ] API function i
d3c0: 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 0a 20 20  s not present.  
d3d0: 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a  in the library..
d3e0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
d3f0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  N {SQLITE_OMIT_A
d400: 55 54 4f 49 4e 43 52 45 4d 45 4e 54 7d 20 7b 0a  UTOINCREMENT} {.
d410: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
d420: 20 6f 6d 69 74 73 20 74 68 65 20 5b 41 55 54 4f   omits the [AUTO
d430: 49 4e 43 52 45 4d 45 4e 54 5d 20 66 65 61 74 75  INCREMENT] featu
d440: 72 65 2e 20 0a 20 20 57 68 65 6e 20 74 68 69 73  re. .  When this
d450: 20 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66   is macro is def
d460: 69 6e 65 64 2c 20 63 6f 6c 75 6d 6e 73 20 64 65  ined, columns de
d470: 63 6c 61 72 65 64 20 61 73 20 0a 20 20 22 5b 49  clared as .  "[I
d480: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
d490: 45 59 5d 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e  EY] AUTOINCREMEN
d4a0: 54 22 0a 20 20 62 65 68 61 76 65 20 69 6e 20 74  T".  behave in t
d4b0: 68 65 20 73 61 6d 65 20 77 61 79 20 61 73 20 63  he same way as c
d4c0: 6f 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65 64 20  olumns declared 
d4d0: 61 73 20 22 5b 49 4e 54 45 47 45 52 20 50 52 49  as "[INTEGER PRI
d4e0: 4d 41 52 59 20 4b 45 59 5d 22 20 77 68 65 6e 20  MARY KEY]" when 
d4f0: 61 20 0a 20 20 4e 55 4c 4c 20 69 73 20 69 6e 73  a .  NULL is ins
d500: 65 72 74 65 64 2e 20 54 68 65 20 73 71 6c 69 74  erted. The sqlit
d510: 65 5f 73 65 71 75 65 6e 63 65 20 73 79 73 74 65  e_sequence syste
d520: 6d 20 74 61 62 6c 65 20 69 73 20 6e 65 69 74 68  m table is neith
d530: 65 72 20 63 72 65 61 74 65 64 2c 20 6e 6f 72 0a  er created, nor.
d540: 20 20 72 65 73 70 65 63 74 65 64 20 69 66 20 69    respected if i
d550: 74 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73  t already exists
d560: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
d570: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
d580: 5f 41 55 54 4f 49 4e 49 54 7d 20 7b 0a 20 20 46  _AUTOINIT} {.  F
d590: 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d  or backwards com
d5a0: 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20  patibility with 
d5b0: 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f  older versions o
d5c0: 66 20 53 51 4c 69 74 65 20 74 68 61 74 20 6c 61  f SQLite that la
d5d0: 63 6b 0a 20 20 74 68 65 20 5b 73 71 6c 69 74 65  ck.  the [sqlite
d5e0: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20  3_initialize()] 
d5f0: 69 6e 74 65 72 66 61 63 65 2c 20 74 68 65 20 5b  interface, the [
d600: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
d610: 7a 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a  ze()] interface.
d620: 20 20 69 73 20 63 61 6c 6c 65 64 20 61 75 74 6f    is called auto
d630: 6d 61 74 69 63 61 6c 6c 79 20 75 70 6f 6e 20 65  matically upon e
d640: 6e 74 72 79 20 74 6f 20 63 65 72 74 61 69 6e 20  ntry to certain 
d650: 6b 65 79 20 69 6e 74 65 72 66 61 63 65 73 20 73  key interfaces s
d660: 75 63 68 20 61 73 0a 20 20 5b 73 71 6c 69 74 65  uch as.  [sqlite
d670: 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69  3_open()], [sqli
d680: 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72  te3_vfs_register
d690: 28 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65  ()], and [sqlite
d6a0: 33 5f 6d 70 72 69 6e 74 66 28 29 5d 2e 0a 20 20  3_mprintf()]..  
d6b0: 54 68 65 20 6f 76 65 72 68 65 61 64 20 6f 66 20  The overhead of 
d6c0: 69 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c 69 74 65  invoking [sqlite
d6d0: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20  3_initialize()] 
d6e0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e  automatically in
d6f0: 20 74 68 69 73 0a 20 20 77 61 79 20 6d 61 79 20   this.  way may 
d700: 62 65 20 6f 6d 69 74 74 65 64 20 62 79 20 62 75  be omitted by bu
d710: 69 6c 64 69 6e 67 20 53 51 4c 69 74 65 20 77 69  ilding SQLite wi
d720: 74 68 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 4d  th the SQLITE_OM
d730: 49 54 5f 41 55 54 4f 49 4e 49 54 0a 20 20 43 2d  IT_AUTOINIT.  C-
d740: 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63  preprocessor mac
d750: 72 6f 2e 20 20 57 68 65 6e 20 62 75 69 6c 74 20  ro.  When built 
d760: 75 73 69 6e 67 20 53 51 4c 49 54 45 5f 4f 4d 49  using SQLITE_OMI
d770: 54 5f 41 55 54 4f 49 4e 49 54 2c 20 53 51 4c 69  T_AUTOINIT, SQLi
d780: 74 65 0a 20 20 77 69 6c 6c 20 6e 6f 74 20 61 75  te.  will not au
d790: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 69 74  tomatically init
d7a0: 69 61 6c 69 7a 65 20 69 74 73 65 6c 66 20 61 6e  ialize itself an
d7b0: 64 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  d the applicatio
d7c0: 6e 20 69 73 20 72 65 71 75 69 72 65 64 0a 20 20  n is required.  
d7d0: 74 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74  to invoke [sqlit
d7e0: 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d  e3_initialize()]
d7f0: 20 64 69 72 65 63 74 6c 79 20 70 72 69 6f 72 20   directly prior 
d800: 74 6f 20 62 65 67 69 6e 6e 69 6e 67 20 75 73 65  to beginning use
d810: 20 6f 66 20 74 68 65 0a 20 20 53 51 4c 69 74 65   of the.  SQLite
d820: 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d   library..}..COM
d830: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
d840: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 4d 41 54  ITE_OMIT_AUTOMAT
d850: 49 43 5f 49 4e 44 45 58 7d 20 7b 0a 20 20 54 68  IC_INDEX} {.  Th
d860: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
d870: 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 0a 20  d to omit the . 
d880: 20 5b 61 75 74 6f 6d 61 74 69 63 20 69 6e 64 65   [automatic inde
d890: 78 69 6e 67 5d 20 66 75 6e 63 74 69 6f 6e 61 6c  xing] functional
d8a0: 69 74 79 2e 0a 20 20 53 65 65 20 61 6c 73 6f 3a  ity..  See also:
d8b0: 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   [SQLITE_DEFAULT
d8c0: 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58  _AUTOMATIC_INDEX
d8d0: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
d8e0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
d8f0: 54 5f 41 55 54 4f 52 45 53 45 54 7d 20 7b 0a 20  T_AUTORESET} {. 
d900: 20 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65   By default, the
d910: 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
d920: 5d 20 69 6e 74 65 72 66 61 63 65 20 77 69 6c 6c  ] interface will
d930: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69   automatically i
d940: 6e 76 6f 6b 65 0a 20 20 5b 73 71 6c 69 74 65 33  nvoke.  [sqlite3
d950: 5f 72 65 73 65 74 28 29 5d 20 74 6f 20 72 65 73  _reset()] to res
d960: 65 74 20 74 68 65 20 5b 70 72 65 70 61 72 65 64  et the [prepared
d970: 20 73 74 61 74 65 6d 65 6e 74 5d 20 69 66 20 6e   statement] if n
d980: 65 63 65 73 73 61 72 79 2e 20 20 54 68 69 73 0a  ecessary.  This.
d990: 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f    compile-time o
d9a0: 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68  ption changes th
d9b0: 61 74 20 62 65 68 61 76 69 6f 72 20 73 6f 20 74  at behavior so t
d9c0: 68 61 74 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  hat [sqlite3_ste
d9d0: 70 28 29 5d 20 77 69 6c 6c 0a 20 20 72 65 74 75  p()] will.  retu
d9e0: 72 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53  rn [SQLITE_MISUS
d9f0: 45 5d 20 69 66 20 69 74 20 63 61 6c 6c 65 64 20  E] if it called 
da00: 61 67 61 69 6e 20 61 66 74 65 72 20 72 65 74 75  again after retu
da10: 72 6e 69 6e 67 20 61 6e 79 74 68 69 6e 67 20 6f  rning anything o
da20: 74 68 65 72 0a 20 20 74 68 61 6e 20 5b 53 51 4c  ther.  than [SQL
da30: 49 54 45 5f 52 4f 57 5d 2c 20 5b 53 51 4c 49 54  ITE_ROW], [SQLIT
da40: 45 5f 42 55 53 59 5d 2c 20 6f 72 20 5b 53 51 4c  E_BUSY], or [SQL
da50: 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 75 6e 6c 65  ITE_LOCKED] unle
da60: 73 73 20 74 68 65 72 65 20 77 61 73 20 61 6e 0a  ss there was an.
da70: 20 20 69 6e 74 65 72 76 65 6e 69 6e 67 20 63 61    intervening ca
da80: 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72  ll to [sqlite3_r
da90: 65 73 65 74 28 29 5d 2e 0a 0a 20 20 49 6e 20 53  eset()]...  In S
daa0: 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e 20 33  QLite [version 3
dab0: 2e 36 2e 32 33 2e 31 5d 20 28 5b 64 61 74 65 6f  .6.23.1] ([dateo
dac0: 66 3a 33 2e 36 2e 32 33 2e 31 5d 29 0a 20 20 61  f:3.6.23.1]).  a
dad0: 6e 64 20 65 61 72 6c 69 65 72 2c 20 5b 73 71 6c  nd earlier, [sql
dae0: 69 74 65 33 5f 73 74 65 70 28 29 5d 20 75 73 65  ite3_step()] use
daf0: 64 20 74 6f 20 61 6c 77 61 79 73 0a 20 20 72 65  d to always.  re
db00: 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53  turn [SQLITE_MIS
db10: 55 53 45 5d 20 69 66 20 69 74 20 77 61 73 20 69  USE] if it was i
db20: 6e 76 6f 6b 65 64 20 61 67 61 69 6e 20 61 66 74  nvoked again aft
db30: 65 72 20 72 65 74 75 72 6e 69 6e 67 20 61 6e 79  er returning any
db40: 74 68 69 6e 67 0a 20 20 6f 74 68 65 72 20 74 68  thing.  other th
db50: 61 6e 20 5b 53 51 4c 49 54 45 5f 52 4f 57 5d 20  an [SQLITE_ROW] 
db60: 77 69 74 68 6f 75 74 20 61 6e 20 69 6e 74 65 72  without an inter
db70: 76 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f 20 5b  vening call to [
db80: 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d  sqlite3_reset()]
db90: 2e 0a 20 20 54 68 69 73 20 63 61 75 73 65 64 20  ..  This caused 
dba0: 70 72 6f 62 6c 65 6d 73 20 6f 6e 20 73 6f 6d 65  problems on some
dbb0: 20 70 6f 6f 72 6c 79 20 77 72 69 74 74 65 6e 20   poorly written 
dbc0: 73 6d 61 72 74 70 68 6f 6e 65 20 61 70 70 6c 69  smartphone appli
dbd0: 63 61 74 69 6f 6e 73 20 77 68 69 63 68 0a 20 20  cations which.  
dbe0: 64 69 64 20 6e 6f 74 20 63 6f 72 72 65 63 74 6c  did not correctl
dbf0: 79 20 68 61 6e 64 6c 65 20 74 68 65 20 5b 53 51  y handle the [SQ
dc00: 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 61 6e 64  LITE_LOCKED] and
dc10: 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 65   [SQLITE_BUSY] e
dc20: 72 72 6f 72 20 0a 20 20 72 65 74 75 72 6e 73 2e  rror .  returns.
dc30: 20 20 52 61 74 68 65 72 20 74 68 61 6e 20 66 69    Rather than fi
dc40: 78 20 74 68 65 20 6d 61 6e 79 20 64 65 66 65 63  x the many defec
dc50: 74 69 76 65 20 73 6d 61 72 74 70 68 6f 6e 65 20  tive smartphone 
dc60: 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20 0a 20  applications, . 
dc70: 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f 66   the behavior of
dc80: 20 53 51 4c 69 74 65 20 77 61 73 20 63 68 61 6e   SQLite was chan
dc90: 67 65 64 20 69 6e 20 33 2e 36 2e 32 33 2e 32 20  ged in 3.6.23.2 
dca0: 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  to automatically
dcb0: 20 72 65 73 65 74 0a 20 20 74 68 65 20 70 72 65   reset.  the pre
dcc0: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2e  pared statement.
dcd0: 20 20 42 75 74 20 74 68 61 74 20 63 68 61 6e 67    But that chang
dce0: 65 64 20 63 61 75 73 65 64 20 69 73 73 75 65 73  ed caused issues
dcf0: 20 69 6e 20 6f 74 68 65 72 20 0a 20 20 69 6d 70   in other .  imp
dd00: 72 6f 70 65 72 6c 79 20 69 6d 70 6c 65 6d 65 6e  roperly implemen
dd10: 74 65 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  ted applications
dd20: 20 74 68 61 74 20 77 65 72 65 20 61 63 74 75 61   that were actua
dd30: 6c 6c 79 20 6c 6f 6f 6b 69 6e 67 0a 20 20 66 6f  lly looking.  fo
dd40: 72 20 61 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53  r an [SQLITE_MIS
dd50: 55 53 45 5d 20 72 65 74 75 72 6e 20 74 6f 20 74  USE] return to t
dd60: 65 72 6d 69 6e 61 74 65 20 74 68 65 69 72 20 71  erminate their q
dd70: 75 65 72 79 20 6c 6f 6f 70 73 2e 20 20 28 41 6e  uery loops.  (An
dd80: 79 74 69 6d 65 0a 20 20 61 6e 20 61 70 70 6c 69  ytime.  an appli
dd90: 63 61 74 69 6f 6e 20 67 65 74 73 20 61 6e 20 53  cation gets an S
dda0: 51 4c 49 54 45 5f 4d 49 53 55 53 45 20 65 72 72  QLITE_MISUSE err
ddb0: 6f 72 20 63 6f 64 65 20 66 72 6f 6d 20 53 51 4c  or code from SQL
ddc0: 69 74 65 2c 20 74 68 61 74 20 6d 65 61 6e 73 20  ite, that means 
ddd0: 74 68 65 0a 20 20 61 70 70 6c 69 63 61 74 69 6f  the.  applicatio
dde0: 6e 20 69 73 20 6d 69 73 75 73 69 6e 67 20 74 68  n is misusing th
ddf0: 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61  e SQLite interfa
de00: 63 65 20 61 6e 64 20 69 73 20 74 68 75 73 20 69  ce and is thus i
de10: 6e 63 6f 72 72 65 63 74 6c 79 0a 20 20 69 6d 70  ncorrectly.  imp
de20: 6c 65 6d 65 6e 74 65 64 2e 29 20 20 54 68 65 20  lemented.)  The 
de30: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
de40: 52 45 53 45 54 20 69 6e 74 65 72 66 61 63 65 20  RESET interface 
de50: 77 61 73 20 61 64 64 65 64 20 74 6f 20 53 51 4c  was added to SQL
de60: 69 74 65 0a 20 20 5b 76 65 72 73 69 6f 6e 20 33  ite.  [version 3
de70: 2e 37 2e 35 5d 20 28 5b 64 61 74 65 6f 66 3a 33  .7.5] ([dateof:3
de80: 2e 37 2e 35 5d 29 20 69 6e 20 61 6e 20 65 66 66  .7.5]) in an eff
de90: 6f 72 74 20 74 6f 20 67 65 74 20 61 6c 6c 20 6f  ort to get all o
dea0: 66 20 74 68 65 20 28 62 72 6f 6b 65 6e 29 0a 20  f the (broken). 
deb0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f   applications to
dec0: 20 77 6f 72 6b 20 61 67 61 69 6e 20 77 69 74 68   work again with
ded0: 6f 75 74 20 68 61 76 69 6e 67 20 74 6f 20 61 63  out having to ac
dee0: 74 75 61 6c 6c 79 20 66 69 78 20 74 68 65 20 61  tually fix the a
def0: 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a  pplications..}..
df00: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
df10: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
df20: 56 41 43 55 55 4d 7d 20 7b 0a 20 20 49 66 20 74  VACUUM} {.  If t
df30: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
df40: 66 69 6e 65 64 2c 20 74 68 65 20 6c 69 62 72 61  fined, the libra
df50: 72 79 20 63 61 6e 6e 6f 74 20 63 72 65 61 74 65  ry cannot create
df60: 20 6f 72 20 77 72 69 74 65 20 74 6f 20 0a 20 20   or write to .  
df70: 64 61 74 61 62 61 73 65 73 20 74 68 61 74 20 73  databases that s
df80: 75 70 70 6f 72 74 20 5b 61 75 74 6f 5f 76 61 63  upport [auto_vac
df90: 75 75 6d 5d 2e 0a 20 20 45 78 65 63 75 74 69 6e  uum]..  Executin
dfa0: 67 20 61 20 5b 50 52 41 47 4d 41 20 61 75 74 6f  g a [PRAGMA auto
dfb0: 5f 76 61 63 75 75 6d 5d 20 73 74 61 74 65 6d 65  _vacuum] stateme
dfc0: 6e 74 20 69 73 20 6e 6f 74 20 61 6e 20 65 72 72  nt is not an err
dfd0: 6f 72 0a 20 20 28 73 69 6e 63 65 20 75 6e 6b 6e  or.  (since unkn
dfe0: 6f 77 6e 20 50 52 41 47 4d 41 73 20 61 72 65 20  own PRAGMAs are 
dff0: 73 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65 64  silently ignored
e000: 29 2c 20 62 75 74 20 64 6f 65 73 20 6e 6f 74 20  ), but does not 
e010: 72 65 74 75 72 6e 20 61 20 76 61 6c 75 65 0a 20  return a value. 
e020: 20 6f 72 20 6d 6f 64 69 66 79 20 74 68 65 20 61   or modify the a
e030: 75 74 6f 2d 76 61 63 75 75 6d 20 66 6c 61 67 20  uto-vacuum flag 
e040: 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  in the database 
e050: 66 69 6c 65 2e 20 49 66 20 61 20 64 61 74 61 62  file. If a datab
e060: 61 73 65 20 74 68 61 74 0a 20 20 73 75 70 70 6f  ase that.  suppo
e070: 72 74 73 20 61 75 74 6f 2d 76 61 63 75 75 6d 20  rts auto-vacuum 
e080: 69 73 20 6f 70 65 6e 65 64 20 62 79 20 61 20 6c  is opened by a l
e090: 69 62 72 61 72 79 20 63 6f 6d 70 69 6c 65 64 20  ibrary compiled 
e0a0: 77 69 74 68 20 74 68 69 73 20 6f 70 74 69 6f 6e  with this option
e0b0: 2c 20 69 74 0a 20 20 69 73 20 61 75 74 6f 6d 61  , it.  is automa
e0c0: 74 69 63 61 6c 6c 79 20 6f 70 65 6e 65 64 20 69  tically opened i
e0d0: 6e 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64 65  n read-only mode
e0e0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
e0f0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
e100: 5f 42 45 54 57 45 45 4e 5f 4f 50 54 49 4d 49 5a  _BETWEEN_OPTIMIZ
e110: 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20  ATION} {.  This 
e120: 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20  option disables 
e130: 74 68 65 20 75 73 65 20 6f 66 20 69 6e 64 69 63  the use of indic
e140: 65 73 20 77 69 74 68 20 57 48 45 52 45 20 63 6c  es with WHERE cl
e150: 61 75 73 65 20 74 65 72 6d 73 0a 20 20 74 68 61  ause terms.  tha
e160: 74 20 65 6d 70 6c 6f 79 20 74 68 65 20 42 45 54  t employ the BET
e170: 57 45 45 4e 20 6f 70 65 72 61 74 6f 72 2e 0a 7d  WEEN operator..}
e180: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
e190: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 4c   {SQLITE_OMIT_BL
e1a0: 4f 42 5f 4c 49 54 45 52 41 4c 7d 20 7b 0a 20 20  OB_LITERAL} {.  
e1b0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
e1c0: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 69 74 20   is defined, it 
e1d0: 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20  is not possible 
e1e0: 74 6f 20 73 70 65 63 69 66 79 20 61 20 62 6c 6f  to specify a blo
e1f0: 62 20 69 6e 0a 20 20 61 6e 20 53 51 4c 20 73 74  b in.  an SQL st
e200: 61 74 65 6d 65 6e 74 20 75 73 69 6e 67 20 74 68  atement using th
e210: 65 20 58 27 41 42 43 44 27 20 73 79 6e 74 61 78  e X'ABCD' syntax
e220: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
e230: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
e240: 5f 42 54 52 45 45 43 4f 55 4e 54 7d 20 7b 0a 20  _BTREECOUNT} {. 
e250: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
e260: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 61 6e  n is defined, an
e270: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74 68   optimization th
e280: 61 74 20 61 63 63 65 6c 65 72 61 74 65 73 20 63  at accelerates c
e290: 6f 75 6e 74 69 6e 67 0a 20 20 61 6c 6c 20 65 6e  ounting.  all en
e2a0: 74 72 69 65 73 20 69 6e 20 61 20 74 61 62 6c 65  tries in a table
e2b0: 20 28 69 6e 20 6f 74 68 65 72 20 77 6f 72 64 73   (in other words
e2c0: 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f  , an optimizatio
e2d0: 6e 20 74 68 61 74 20 68 65 6c 70 73 0a 20 20 22  n that helps.  "
e2e0: 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20  SELECT count(*) 
e2f0: 46 52 4f 4d 20 74 61 62 6c 65 22 20 72 75 6e 20  FROM table" run 
e300: 66 61 73 74 65 72 29 20 69 73 20 6f 6d 69 74 74  faster) is omitt
e310: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
e320: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
e330: 49 54 5f 42 55 49 4c 54 49 4e 5f 54 45 53 54 7d  IT_BUILTIN_TEST}
e340: 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c   {.  This compil
e350: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 68 61  e-time option ha
e360: 73 20 62 65 65 6e 20 72 65 6e 61 6d 65 64 20 74  s been renamed t
e370: 6f 20 5b 53 51 4c 49 54 45 5f 55 4e 54 45 53 54  o [SQLITE_UNTEST
e380: 41 42 4c 45 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ABLE]..}..COMPIL
e390: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
e3a0: 5f 4f 4d 49 54 5f 43 41 53 54 7d 20 7b 0a 20 20  _OMIT_CAST} {.  
e3b0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
e3c0: 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69  es SQLite to omi
e3d0: 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68  t support for th
e3e0: 65 20 43 41 53 54 20 6f 70 65 72 61 74 6f 72 2e  e CAST operator.
e3f0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
e400: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
e410: 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20  CHECK} {.  This 
e420: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51  option causes SQ
e430: 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70  Lite to omit sup
e440: 70 6f 72 74 20 66 6f 72 20 43 48 45 43 4b 20 63  port for CHECK c
e450: 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 20 20 54 68  onstraints..  Th
e460: 65 20 70 61 72 73 65 72 20 77 69 6c 6c 20 73 74  e parser will st
e470: 69 6c 6c 20 61 63 63 65 70 74 20 43 48 45 43 4b  ill accept CHECK
e480: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 69 6e 20   constraints in 
e490: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2c 0a  SQL statements,.
e4a0: 20 20 74 68 65 79 20 77 69 6c 6c 20 6a 75 73 74    they will just
e4b0: 20 6e 6f 74 20 62 65 20 65 6e 66 6f 72 63 65 64   not be enforced
e4c0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
e4d0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
e4e0: 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e 5f 44  _COMPILEOPTION_D
e4f0: 49 41 47 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f  IAGS} {.  This o
e500: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
e510: 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70 69 6c   omit the compil
e520: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 64 69  e-time option di
e530: 61 67 6e 6f 73 74 69 63 73 20 61 76 61 69 6c 61  agnostics availa
e540: 62 6c 65 0a 20 20 69 6e 20 53 51 4c 69 74 65 2c  ble.  in SQLite,
e550: 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 5b   including the [
e560: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
e570: 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20 61 6e  ption_used()] an
e580: 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d  d.  [sqlite3_com
e590: 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29  pileoption_get()
e5a0: 5d 20 43 2f 43 2b 2b 20 66 75 6e 63 74 69 6f 6e  ] C/C++ function
e5b0: 73 2c 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65  s, the.  [sqlite
e5c0: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75  _compileoption_u
e5d0: 73 65 64 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69  sed()] and [sqli
e5e0: 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  te_compileoption
e5f0: 5f 67 65 74 28 29 5d 20 53 51 4c 20 66 75 6e 63  _get()] SQL func
e600: 74 69 6f 6e 73 2c 0a 20 20 61 6e 64 20 74 68 65  tions,.  and the
e610: 20 5b 63 6f 6d 70 69 6c 65 5f 6f 70 74 69 6f 6e   [compile_option
e620: 73 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f  s pragma]..}..CO
e630: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
e640: 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4c 45  LITE_OMIT_COMPLE
e650: 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  TE} {.  This opt
e660: 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b  ion causes the [
e670: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65  sqlite3_complete
e680: 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  ()] and [sqlite3
e690: 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 5d 0a 20  _complete16()]. 
e6a0: 20 69 6e 74 65 72 66 61 63 65 73 20 74 6f 20 62   interfaces to b
e6b0: 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f  e omitted..}..CO
e6c0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
e6d0: 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4f 55  LITE_OMIT_COMPOU
e6e0: 4e 44 5f 53 45 4c 45 43 54 7d 20 7b 0a 20 20 54  ND_SELECT} {.  T
e6f0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
e700: 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63  ed to omit the c
e710: 6f 6d 70 6f 75 6e 64 20 5b 53 45 4c 45 43 54 5d  ompound [SELECT]
e720: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20   functionality. 
e730: 0a 20 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74  .  [SELECT] stat
e740: 65 6d 65 6e 74 73 20 74 68 61 74 20 75 73 65 20  ements that use 
e750: 74 68 65 20 0a 20 20 55 4e 49 4f 4e 2c 20 55 4e  the .  UNION, UN
e760: 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52 53 45  ION ALL, INTERSE
e770: 43 54 20 6f 72 20 45 58 43 45 50 54 20 63 6f 6d  CT or EXCEPT com
e780: 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 6f 70 65  pound SELECT ope
e790: 72 61 74 6f 72 73 20 77 69 6c 6c 20 0a 20 20 63  rators will .  c
e7a0: 61 75 73 65 20 61 20 70 61 72 73 65 20 65 72 72  ause a parse err
e7b0: 6f 72 2e 0a 0a 20 20 41 6e 20 5b 49 4e 53 45 52  or...  An [INSER
e7c0: 54 5d 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74  T] statement wit
e7d0: 68 20 6d 75 6c 74 69 70 6c 65 20 76 61 6c 75 65  h multiple value
e7e0: 73 20 69 6e 20 74 68 65 20 56 41 4c 55 45 53 20  s in the VALUES 
e7f0: 63 6c 61 75 73 65 20 69 73 0a 20 20 69 6d 70 6c  clause is.  impl
e800: 65 6d 65 6e 74 65 64 20 69 6e 74 65 72 6e 61 6c  emented internal
e810: 6c 79 20 61 73 20 61 20 63 6f 6d 70 6f 75 6e 64  ly as a compound
e820: 20 53 45 4c 45 43 54 2e 20 20 48 65 6e 63 65 2c   SELECT.  Hence,
e830: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 6c 73   this option als
e840: 6f 0a 20 20 64 69 73 61 62 6c 65 73 20 74 68 65  o.  disables the
e850: 20 61 62 69 6c 69 74 79 20 74 6f 20 69 6e 73 65   ability to inse
e860: 72 74 20 6d 6f 72 65 20 74 68 61 6e 20 61 20 73  rt more than a s
e870: 69 6e 67 6c 65 20 72 6f 77 20 75 73 69 6e 67 20  ingle row using 
e880: 61 6e 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  an.  INSERT INTO
e890: 20 2e 2e 2e 20 56 41 4c 55 45 53 20 2e 2e 2e 20   ... VALUES ... 
e8a0: 73 74 61 74 65 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f  statement..}..CO
e8b0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
e8c0: 4c 49 54 45 5f 4f 4d 49 54 5f 43 54 45 7d 20 7b  LITE_OMIT_CTE} {
e8d0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
e8e0: 61 75 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f  auses support fo
e8f0: 72 20 5b 63 6f 6d 6d 6f 6e 20 74 61 62 6c 65 20  r [common table 
e900: 65 78 70 72 65 73 73 69 6f 6e 73 5d 20 74 6f 20  expressions] to 
e910: 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 0a  be omitted..}...
e920: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
e930: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 41 54  {SQLITE_OMIT_DAT
e940: 45 54 49 4d 45 5f 46 55 4e 43 53 7d 20 7b 0a 20  ETIME_FUNCS} {. 
e950: 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20   If this option 
e960: 69 73 20 64 65 66 69 6e 65 64 2c 20 53 51 4c 69  is defined, SQLi
e970: 74 65 27 73 20 62 75 69 6c 74 2d 69 6e 20 64 61  te's built-in da
e980: 74 65 20 61 6e 64 20 74 69 6d 65 20 6d 61 6e 69  te and time mani
e990: 70 75 6c 61 74 69 6f 6e 0a 20 20 66 75 6e 63 74  pulation.  funct
e9a0: 69 6f 6e 73 20 61 72 65 20 6f 6d 69 74 74 65 64  ions are omitted
e9b0: 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79 2c 20  . Specifically, 
e9c0: 74 68 65 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  the SQL function
e9d0: 73 20 6a 75 6c 69 61 6e 64 61 79 28 29 2c 20 64  s julianday(), d
e9e0: 61 74 65 28 29 2c 0a 20 20 74 69 6d 65 28 29 2c  ate(),.  time(),
e9f0: 20 64 61 74 65 74 69 6d 65 28 29 20 61 6e 64 20   datetime() and 
ea00: 73 74 72 66 74 69 6d 65 28 29 20 61 72 65 20 6e  strftime() are n
ea10: 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 20 54 68  ot available. Th
ea20: 65 20 64 65 66 61 75 6c 74 20 63 6f 6c 75 6d 6e  e default column
ea30: 0a 20 20 76 61 6c 75 65 73 20 43 55 52 52 45 4e  .  values CURREN
ea40: 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f  T_TIME, CURRENT_
ea50: 44 41 54 45 20 61 6e 64 20 43 55 52 52 45 4e 54  DATE and CURRENT
ea60: 5f 54 49 4d 45 53 54 41 4d 50 20 61 72 65 20 73  _TIMESTAMP are s
ea70: 74 69 6c 6c 20 61 76 61 69 6c 61 62 6c 65 2e 0a  till available..
ea80: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
ea90: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44  N {SQLITE_OMIT_D
eaa0: 45 43 4c 54 59 50 45 7d 20 7b 0a 20 20 54 68 69  ECLTYPE} {.  Thi
eab0: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
eac0: 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73  SQLite to omit s
ead0: 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 0a 20  upport for the. 
eae0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
eaf0: 5f 64 65 63 6c 74 79 70 65 28 29 5d 20 61 6e 64  _decltype()] and
eb00: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
eb10: 5f 64 65 63 6c 74 79 70 65 31 36 28 29 5d 0a 20  _decltype16()]. 
eb20: 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a   interfaces..}..
eb30: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
eb40: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 50 52  SQLITE_OMIT_DEPR
eb50: 45 43 41 54 45 44 7d 20 7b 0a 20 20 54 68 69 73  ECATED} {.  This
eb60: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53   option causes S
eb70: 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75  QLite to omit su
eb80: 70 70 6f 72 74 20 66 6f 72 20 69 6e 74 65 72 66  pport for interf
eb90: 61 63 65 73 0a 20 20 6d 61 72 6b 65 64 20 61 73  aces.  marked as
eba0: 20 64 65 70 72 65 63 61 74 65 64 2e 20 20 54 68   deprecated.  Th
ebb0: 69 73 20 69 6e 63 6c 75 64 65 73 20 0a 20 20 5b  is includes .  [
ebc0: 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74  sqlite3_aggregat
ebd0: 65 5f 63 6f 75 6e 74 28 29 5d 2c 0a 20 20 5b 73  e_count()],.  [s
ebe0: 71 6c 69 74 65 33 5f 65 78 70 69 72 65 64 28 29  qlite3_expired()
ebf0: 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74 72  ],.  [sqlite3_tr
ec00: 61 6e 73 66 65 72 5f 62 69 6e 64 69 6e 67 73 28  ansfer_bindings(
ec10: 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 67  )],.  [sqlite3_g
ec20: 6c 6f 62 61 6c 5f 72 65 63 6f 76 65 72 28 29 5d  lobal_recover()]
ec30: 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74 68 72  ,.  [sqlite3_thr
ec40: 65 61 64 5f 63 6c 65 61 6e 75 70 28 29 5d 20 61  ead_cleanup()] a
ec50: 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6d 65  nd.  [sqlite3_me
ec60: 6d 6f 72 79 5f 61 6c 61 72 6d 28 29 5d 20 69 6e  mory_alarm()] in
ec70: 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d  terfaces..}..COM
ec80: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
ec90: 49 54 45 5f 4f 4d 49 54 5f 44 49 53 4b 49 4f 7d  ITE_OMIT_DISKIO}
eca0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
ecb0: 20 6f 6d 69 74 73 20 61 6c 6c 20 73 75 70 70 6f   omits all suppo
ecc0: 72 74 20 66 6f 72 20 77 72 69 74 69 6e 67 20 74  rt for writing t
ecd0: 6f 20 74 68 65 20 64 69 73 6b 20 61 6e 64 20 66  o the disk and f
ece0: 6f 72 63 65 73 0a 20 20 64 61 74 61 62 61 73 65  orces.  database
ecf0: 73 20 74 6f 20 65 78 69 73 74 20 69 6e 20 6d 65  s to exist in me
ed00: 6d 6f 72 79 20 6f 6e 6c 79 2e 20 20 54 68 69 73  mory only.  This
ed10: 20 6f 70 74 69 6f 6e 20 68 61 73 20 6e 6f 74 20   option has not 
ed20: 62 65 65 6e 20 0a 20 20 6d 61 69 6e 74 61 69 6e  been .  maintain
ed30: 65 64 20 61 6e 64 20 70 72 6f 62 61 62 6c 79 20  ed and probably 
ed40: 64 6f 65 73 20 6e 6f 74 20 77 6f 72 6b 20 77 69  does not work wi
ed50: 74 68 20 6e 65 77 65 72 20 76 65 72 73 69 6f 6e  th newer version
ed60: 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a  s of SQLite..}..
ed70: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
ed80: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 45 58 50 4c  SQLITE_OMIT_EXPL
ed90: 41 49 4e 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  AIN} {.  Definin
eda0: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 63 61  g this option ca
edb0: 75 73 65 73 20 74 68 65 20 5b 45 58 50 4c 41 49  uses the [EXPLAI
edc0: 4e 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 62 65  N] command to be
edd0: 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68   omitted from th
ede0: 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 41 74 74  e.  library. Att
edf0: 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65 63 75  empting to execu
ee00: 74 65 20 61 6e 20 5b 45 58 50 4c 41 49 4e 5d 20  te an [EXPLAIN] 
ee10: 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 63  statement will c
ee20: 61 75 73 65 20 61 20 70 61 72 73 65 0a 20 20 65  ause a parse.  e
ee30: 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rror..}..COMPILE
ee40: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
ee50: 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41  OMIT_FLAG_PRAGMA
ee60: 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  S} {.  This opti
ee70: 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74  on omits support
ee80: 20 66 6f 72 20 61 20 73 75 62 73 65 74 20 6f 66   for a subset of
ee90: 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e   [PRAGMA] comman
eea0: 64 73 20 74 68 61 74 0a 20 20 71 75 65 72 79 20  ds that.  query 
eeb0: 61 6e 64 20 73 65 74 20 62 6f 6f 6c 65 61 6e 20  and set boolean 
eec0: 70 72 6f 70 65 72 74 69 65 73 2e 0a 7d 0a 0a 43  properties..}..C
eed0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
eee0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41 54  QLITE_OMIT_FLOAT
eef0: 49 4e 47 5f 50 4f 49 4e 54 7d 20 7b 0a 20 20 54  ING_POINT} {.  T
ef00: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
ef10: 65 64 20 74 6f 20 6f 6d 69 74 20 66 6c 6f 61 74  ed to omit float
ef20: 69 6e 67 2d 70 6f 69 6e 74 20 6e 75 6d 62 65 72  ing-point number
ef30: 20 73 75 70 70 6f 72 74 20 66 72 6f 6d 20 74 68   support from th
ef40: 65 20 53 51 4c 69 74 65 0a 20 20 6c 69 62 72 61  e SQLite.  libra
ef50: 72 79 2e 20 57 68 65 6e 20 73 70 65 63 69 66 69  ry. When specifi
ef60: 65 64 2c 20 73 70 65 63 69 66 79 69 6e 67 20 61  ed, specifying a
ef70: 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
ef80: 6e 75 6d 62 65 72 20 61 73 20 61 20 6c 69 74 65  number as a lite
ef90: 72 61 6c 20 0a 20 20 28 69 2e 65 2e 20 22 31 2e  ral .  (i.e. "1.
efa0: 30 31 22 29 20 72 65 73 75 6c 74 73 20 69 6e 20  01") results in 
efb0: 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a  a parse error...
efc0: 20 20 3c 70 3e 49 6e 20 74 68 65 20 66 75 74 75    <p>In the futu
efd0: 72 65 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  re, this option 
efe0: 6d 61 79 20 61 6c 73 6f 20 64 69 73 61 62 6c 65  may also disable
eff0: 20 6f 74 68 65 72 20 66 6c 6f 61 74 69 6e 67 20   other floating 
f000: 70 6f 69 6e 74 20 0a 20 20 66 75 6e 63 74 69 6f  point .  functio
f010: 6e 61 6c 69 74 79 2c 20 66 6f 72 20 65 78 61 6d  nality, for exam
f020: 70 6c 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ple the [sqlite3
f030: 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 29  _result_double()
f040: 5d 2c 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62  ], .  [sqlite3_b
f050: 69 6e 64 5f 64 6f 75 62 6c 65 28 29 5d 2c 20 5b  ind_double()], [
f060: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
f070: 75 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73  uble()] and.  [s
f080: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f  qlite3_column_do
f090: 75 62 6c 65 28 29 5d 20 41 50 49 20 66 75 6e 63  uble()] API func
f0a0: 74 69 6f 6e 73 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a  tions..  </p>.}.
f0b0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
f0c0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4f 52  {SQLITE_OMIT_FOR
f0d0: 45 49 47 4e 5f 4b 45 59 7d 20 7b 0a 20 20 49 66  EIGN_KEY} {.  If
f0e0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
f0f0: 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 5b 66  defined, then [f
f100: 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74  oreign key const
f110: 72 61 69 6e 74 5d 20 73 79 6e 74 61 78 20 69 73  raint] syntax is
f120: 0a 20 20 6e 6f 74 20 72 65 63 6f 67 6e 69 7a 65  .  not recognize
f130: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
f140: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
f150: 54 5f 47 45 54 5f 54 41 42 4c 45 7d 20 7b 0a 20  T_GET_TABLE} {. 
f160: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
f170: 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ses support for 
f180: 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62  [sqlite3_get_tab
f190: 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c  le()] and.  [sql
f1a0: 69 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28  ite3_free_table(
f1b0: 29 5d 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64  )] to be omitted
f1c0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
f1d0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
f1e0: 5f 49 4e 43 52 42 4c 4f 42 7d 20 7b 0a 20 20 54  _INCRBLOB} {.  T
f1f0: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
f200: 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5b 73  s support for [s
f210: 71 6c 69 74 65 33 5f 62 6c 6f 62 20 7c 20 69 6e  qlite3_blob | in
f220: 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49  cremental BLOB I
f230: 2f 4f 5d 0a 20 20 74 6f 20 62 65 20 6f 6d 69 74  /O].  to be omit
f240: 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ted..}..COMPILE_
f250: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
f260: 4d 49 54 5f 49 4e 54 45 47 52 49 54 59 5f 43 48  MIT_INTEGRITY_CH
f270: 45 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ECK} {.  This op
f280: 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
f290: 72 74 20 66 6f 72 20 74 68 65 20 5b 69 6e 74 65  rt for the [inte
f2a0: 67 72 69 74 79 5f 63 68 65 63 6b 20 70 72 61 67  grity_check prag
f2b0: 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ma]..}..COMPILE_
f2c0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
f2d0: 4d 49 54 5f 4c 49 4b 45 5f 4f 50 54 49 4d 49 5a  MIT_LIKE_OPTIMIZ
f2e0: 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20  ATION} {.  This 
f2f0: 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20  option disables 
f300: 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66 20 53  the ability of S
f310: 51 4c 69 74 65 20 74 6f 20 75 73 65 20 69 6e 64  QLite to use ind
f320: 69 63 65 73 20 74 6f 20 68 65 6c 70 0a 20 20 72  ices to help.  r
f330: 65 73 6f 6c 76 65 20 5b 4c 49 4b 45 5d 20 61 6e  esolve [LIKE] an
f340: 64 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f  d [GLOB] operato
f350: 72 73 20 69 6e 20 61 20 57 48 45 52 45 20 63 6c  rs in a WHERE cl
f360: 61 75 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ause..}..COMPILE
f370: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
f380: 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e 53  OMIT_LOAD_EXTENS
f390: 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ION} {.  This op
f3a0: 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 65  tion omits the e
f3b0: 6e 74 69 72 65 20 65 78 74 65 6e 73 69 6f 6e 20  ntire extension 
f3c0: 6c 6f 61 64 69 6e 67 20 6d 65 63 68 61 6e 69 73  loading mechanis
f3d0: 6d 20 66 72 6f 6d 0a 20 20 53 51 4c 69 74 65 2c  m from.  SQLite,
f3e0: 20 69 6e 63 6c 75 64 69 6e 67 20 5b 73 71 6c 69   including [sqli
f3f0: 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f  te3_enable_load_
f400: 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 61 6e 64  extension()] and
f410: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64  .  [sqlite3_load
f420: 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 69 6e  _extension()] in
f430: 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d  terfaces..}..COM
f440: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
f450: 49 54 45 5f 4f 4d 49 54 5f 4c 4f 43 41 4c 54 49  ITE_OMIT_LOCALTI
f460: 4d 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  ME} {.  This opt
f470: 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 22 6c  ion omits the "l
f480: 6f 63 61 6c 74 69 6d 65 22 20 6d 6f 64 69 66 69  ocaltime" modifi
f490: 65 72 20 66 72 6f 6d 20 74 68 65 20 64 61 74 65  er from the date
f4a0: 20 61 6e 64 20 74 69 6d 65 0a 20 20 66 75 6e 63   and time.  func
f4b0: 74 69 6f 6e 73 2e 20 20 54 68 69 73 20 6f 70 74  tions.  This opt
f4c0: 69 6f 6e 20 69 73 20 73 6f 6d 65 74 69 6d 65 73  ion is sometimes
f4d0: 20 75 73 65 66 75 6c 20 77 68 65 6e 20 74 72 79   useful when try
f4e0: 69 6e 67 20 74 6f 20 63 6f 6d 70 69 6c 65 0a 20  ing to compile. 
f4f0: 20 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69   the date and ti
f500: 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20 6f 6e 20  me functions on 
f510: 61 20 70 6c 61 74 66 6f 72 6d 20 74 68 61 74 20  a platform that 
f520: 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74  does not support
f530: 20 74 68 65 0a 20 20 63 6f 6e 63 65 70 74 20 6f   the.  concept o
f540: 66 20 6c 6f 63 61 6c 20 74 69 6d 65 2e 0a 7d 0a  f local time..}.
f550: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
f560: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 4f  {SQLITE_OMIT_LOO
f570: 4b 41 53 49 44 45 7d 20 7b 0a 20 20 54 68 69 73  KASIDE} {.  This
f580: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68   option omits th
f590: 65 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d  e [lookaside mem
f5a0: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 2e 0a  ory allocator]..
f5b0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
f5c0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4d  N {SQLITE_OMIT_M
f5d0: 45 4d 4f 52 59 44 42 7d 20 7b 0a 20 20 57 68 65  EMORYDB} {.  Whe
f5e0: 6e 20 74 68 69 73 20 69 73 20 64 65 66 69 6e 65  n this is define
f5f0: 64 2c 20 74 68 65 20 6c 69 62 72 61 72 79 20 64  d, the library d
f600: 6f 65 73 20 6e 6f 74 20 72 65 73 70 65 63 74 20  oes not respect 
f610: 74 68 65 20 73 70 65 63 69 61 6c 20 64 61 74 61  the special data
f620: 62 61 73 65 0a 20 20 6e 61 6d 65 20 22 3a 6d 65  base.  name ":me
f630: 6d 6f 72 79 3a 22 20 28 6e 6f 72 6d 61 6c 6c 79  mory:" (normally
f640: 20 75 73 65 64 20 74 6f 20 63 72 65 61 74 65 20   used to create 
f650: 61 6e 20 5b 69 6e 2d 6d 65 6d 6f 72 79 20 64 61  an [in-memory da
f660: 74 61 62 61 73 65 5d 29 2e 20 49 66 20 0a 20 20  tabase]). If .  
f670: 22 3a 6d 65 6d 6f 72 79 3a 22 20 69 73 20 70 61  ":memory:" is pa
f680: 73 73 65 64 20 74 6f 20 5b 73 71 6c 69 74 65 33  ssed to [sqlite3
f690: 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74  _open()], [sqlit
f6a0: 65 33 5f 6f 70 65 6e 31 36 28 29 5d 2c 20 6f 72  e3_open16()], or
f6b0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  .  [sqlite3_open
f6c0: 5f 76 32 28 29 5d 2c 20 61 20 66 69 6c 65 20 77  _v2()], a file w
f6d0: 69 74 68 20 74 68 69 73 20 6e 61 6d 65 20 77 69  ith this name wi
f6e0: 6c 6c 20 62 65 20 0a 20 20 6f 70 65 6e 65 64 20  ll be .  opened 
f6f0: 6f 72 20 63 72 65 61 74 65 64 2e 0a 7d 0a 0a 43  or created..}..C
f700: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
f710: 51 4c 49 54 45 5f 4f 4d 49 54 5f 4f 52 5f 4f 50  QLITE_OMIT_OR_OP
f720: 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20  TIMIZATION} {.  
f730: 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61  This option disa
f740: 62 6c 65 73 20 74 68 65 20 61 62 69 6c 69 74 79  bles the ability
f750: 20 6f 66 20 53 51 4c 69 74 65 20 74 6f 20 75 73   of SQLite to us
f760: 65 20 61 6e 20 69 6e 64 65 78 20 74 6f 67 65 74  e an index toget
f770: 68 65 72 0a 20 20 77 69 74 68 20 74 65 72 6d 73  her.  with terms
f780: 20 6f 66 20 61 20 57 48 45 52 45 20 63 6c 61 75   of a WHERE clau
f790: 73 65 20 63 6f 6e 6e 65 63 74 65 64 20 62 79 20  se connected by 
f7a0: 74 68 65 20 4f 52 20 6f 70 65 72 61 74 6f 72 2e  the OR operator.
f7b0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
f7c0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
f7d0: 50 41 47 45 52 5f 50 52 41 47 4d 41 53 7d 20 7b  PAGER_PRAGMAS} {
f7e0: 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73  .  Defining this
f7f0: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72   option omits pr
f800: 61 67 6d 61 73 20 72 65 6c 61 74 65 64 20 74 6f  agmas related to
f810: 20 74 68 65 20 70 61 67 65 72 20 73 75 62 73 79   the pager subsy
f820: 73 74 65 6d 20 66 72 6f 6d 20 0a 20 20 74 68 65  stem from .  the
f830: 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49   build..}..COMPI
f840: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
f850: 45 5f 4f 4d 49 54 5f 50 52 41 47 4d 41 7d 20 7b  E_OMIT_PRAGMA} {
f860: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
f870: 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74  s used to omit t
f880: 68 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d  he [PRAGMA] comm
f890: 61 6e 64 0a 20 20 66 72 6f 6d 20 74 68 65 20 6c  and.  from the l
f8a0: 69 62 72 61 72 79 2e 20 4e 6f 74 65 20 74 68 61  ibrary. Note tha
f8b0: 74 20 69 74 20 69 73 20 75 73 65 66 75 6c 20 74  t it is useful t
f8c0: 6f 20 64 65 66 69 6e 65 20 74 68 65 20 6d 61 63  o define the mac
f8d0: 72 6f 73 20 74 68 61 74 20 6f 6d 69 74 0a 20 20  ros that omit.  
f8e0: 73 70 65 63 69 66 69 63 20 70 72 61 67 6d 61 73  specific pragmas
f8f0: 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20   in addition to 
f900: 74 68 69 73 2c 20 61 73 20 74 68 65 79 20 6d 61  this, as they ma
f910: 79 20 61 6c 73 6f 20 72 65 6d 6f 76 65 20 73 75  y also remove su
f920: 70 70 6f 72 74 69 6e 67 20 63 6f 64 65 0a 20 20  pporting code.  
f930: 69 6e 20 6f 74 68 65 72 20 73 75 62 2d 73 79 73  in other sub-sys
f940: 74 65 6d 73 2e 20 54 68 69 73 20 6d 61 63 72 6f  tems. This macro
f950: 20 72 65 6d 6f 76 65 73 20 74 68 65 20 5b 50 52   removes the [PR
f960: 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 20 6f 6e  AGMA] command on
f970: 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ly..}..COMPILE_O
f980: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
f990: 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c  IT_PROGRESS_CALL
f9a0: 42 41 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f  BACK} {.  This o
f9b0: 70 74 69 6f 6e 20 6d 61 79 20 62 65 20 64 65 66  ption may be def
f9c0: 69 6e 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65  ined to omit the
f9d0: 20 63 61 70 61 62 69 6c 69 74 79 20 74 6f 20 69   capability to i
f9e0: 73 73 75 65 20 22 70 72 6f 67 72 65 73 73 22 20  ssue "progress" 
f9f0: 0a 20 20 63 61 6c 6c 62 61 63 6b 73 20 64 75 72  .  callbacks dur
fa00: 69 6e 67 20 6c 6f 6e 67 2d 72 75 6e 6e 69 6e 67  ing long-running
fa10: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e   SQL statements.
fa20: 20 54 68 65 20 0a 20 20 5b 73 71 6c 69 74 65 33   The .  [sqlite3
fa30: 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65  _progress_handle
fa40: 72 28 29 5d 0a 20 20 41 50 49 20 66 75 6e 63 74  r()].  API funct
fa50: 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72 65 73 65  ion is not prese
fa60: 6e 74 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72  nt in the librar
fa70: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
fa80: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
fa90: 54 5f 51 55 49 43 4b 42 41 4c 41 4e 43 45 7d 20  T_QUICKBALANCE} 
faa0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
fab0: 6f 6d 69 74 73 20 61 6e 20 61 6c 74 65 72 6e 61  omits an alterna
fac0: 74 69 76 65 2c 20 66 61 73 74 65 72 20 42 2d 54  tive, faster B-T
fad0: 72 65 65 20 62 61 6c 61 6e 63 69 6e 67 20 72 6f  ree balancing ro
fae0: 75 74 69 6e 65 2e 0a 20 20 55 73 69 6e 67 20 74  utine..  Using t
faf0: 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 6b 65 73  his option makes
fb00: 20 53 51 4c 69 74 65 20 73 6c 69 67 68 74 6c 79   SQLite slightly
fb10: 20 73 6d 61 6c 6c 65 72 20 61 74 20 74 68 65 20   smaller at the 
fb20: 65 78 70 65 6e 73 65 20 6f 66 0a 20 20 6d 61 6b  expense of.  mak
fb30: 69 6e 67 20 69 74 20 72 75 6e 20 73 6c 69 67 68  ing it run sligh
fb40: 74 6c 79 20 73 6c 6f 77 65 72 2e 0a 7d 0a 0a 43  tly slower..}..C
fb50: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
fb60: 51 4c 49 54 45 5f 4f 4d 49 54 5f 52 45 49 4e 44  QLITE_OMIT_REIND
fb70: 45 58 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  EX} {.  When thi
fb80: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
fb90: 6e 65 64 2c 20 74 68 65 20 5b 52 45 49 4e 44 45  ned, the [REINDE
fba0: 58 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20 69 73 20  X].  command is 
fbb0: 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20  not included in 
fbc0: 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 20 20 45  the library..  E
fbd0: 78 65 63 75 74 69 6e 67 20 61 20 5b 52 45 49 4e  xecuting a [REIN
fbe0: 44 45 58 5d 20 73 74 61 74 65 6d 65 6e 74 20 63  DEX] statement c
fbf0: 61 75 73 65 73 20 0a 20 20 61 20 70 61 72 73 65  auses .  a parse
fc00: 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49   error..}..COMPI
fc10: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
fc20: 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52  E_OMIT_SCHEMA_PR
fc30: 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e  AGMAS} {.  Defin
fc40: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
fc50: 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20 66 6f  omits pragmas fo
fc60: 72 20 71 75 65 72 79 69 6e 67 20 74 68 65 20 64  r querying the d
fc70: 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 66  atabase schema f
fc80: 72 6f 6d 20 0a 20 20 74 68 65 20 62 75 69 6c 64  rom .  the build
fc90: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
fca0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
fcb0: 5f 53 43 48 45 4d 41 5f 56 45 52 53 49 4f 4e 5f  _SCHEMA_VERSION_
fcc0: 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66  PRAGMAS} {.  Def
fcd0: 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f  ining this optio
fce0: 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20  n omits pragmas 
fcf0: 66 6f 72 20 71 75 65 72 79 69 6e 67 20 61 6e 64  for querying and
fd00: 20 6d 6f 64 69 66 79 69 6e 67 20 74 68 65 20 0a   modifying the .
fd10: 20 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d    database schem
fd20: 61 20 76 65 72 73 69 6f 6e 20 61 6e 64 20 75 73  a version and us
fd30: 65 72 20 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20  er version from 
fd40: 74 68 65 20 62 75 69 6c 64 2e 20 53 70 65 63 69  the build. Speci
fd50: 66 69 63 61 6c 6c 79 2c 20 74 68 65 20 0a 20 20  fically, the .  
fd60: 5b 73 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 5d  [schema_version]
fd70: 20 61 6e 64 20 5b 75 73 65 72 5f 76 65 72 73 69   and [user_versi
fd80: 6f 6e 5d 20 50 52 41 47 4d 41 73 20 61 72 65 20  on] PRAGMAs are 
fd90: 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  omitted..}..COMP
fda0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
fdb0: 54 45 5f 4f 4d 49 54 5f 53 48 41 52 45 44 5f 43  TE_OMIT_SHARED_C
fdc0: 41 43 48 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  ACHE} {.  This o
fdd0: 70 74 69 6f 6e 20 62 75 69 6c 64 73 20 53 51 4c  ption builds SQL
fde0: 69 74 65 20 77 69 74 68 6f 75 74 20 73 75 70 70  ite without supp
fdf0: 6f 72 74 20 66 6f 72 20 73 68 61 72 65 64 2d 63  ort for shared-c
fe00: 61 63 68 65 20 6d 6f 64 65 2e 0a 20 20 54 68 65  ache mode..  The
fe10: 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65   [sqlite3_enable
fe20: 5f 73 68 61 72 65 64 5f 63 61 63 68 65 28 29 5d  _shared_cache()]
fe30: 20 69 73 20 6f 6d 69 74 74 65 64 20 61 6c 6f 6e   is omitted alon
fe40: 67 20 77 69 74 68 20 61 20 66 61 69 72 0a 20 20  g with a fair.  
fe50: 61 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20  amount of logic 
fe60: 77 69 74 68 69 6e 20 74 68 65 20 42 2d 54 72 65  within the B-Tre
fe70: 65 20 73 75 62 73 79 73 74 65 6d 20 61 73 73 6f  e subsystem asso
fe80: 63 69 61 74 65 64 20 77 69 74 68 20 73 68 61 72  ciated with shar
fe90: 65 64 0a 20 20 63 61 63 68 65 20 6d 61 6e 61 67  ed.  cache manag
fea0: 65 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ement..}..COMPIL
feb0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
fec0: 5f 4f 4d 49 54 5f 53 55 42 51 55 45 52 59 7d 20  _OMIT_SUBQUERY} 
fed0: 7b 0a 20 20 49 66 20 64 65 66 69 6e 65 64 2c 20  {.  If defined, 
fee0: 73 75 70 70 6f 72 74 20 66 6f 72 20 73 75 62 2d  support for sub-
fef0: 73 65 6c 65 63 74 73 20 61 6e 64 20 74 68 65 20  selects and the 
ff00: 49 4e 28 29 20 6f 70 65 72 61 74 6f 72 20 61 72  IN() operator ar
ff10: 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f  e omitted..}..CO
ff20: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
ff30: 4c 49 54 45 5f 4f 4d 49 54 5f 54 43 4c 5f 56 41  LITE_OMIT_TCL_VA
ff40: 52 49 41 42 4c 45 7d 20 7b 0a 20 20 49 66 20 74  RIABLE} {.  If t
ff50: 68 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66  his macro is def
ff60: 69 6e 65 64 2c 20 74 68 65 6e 20 74 68 65 20 73  ined, then the s
ff70: 70 65 63 69 61 6c 20 22 24 3c 76 61 72 69 61 62  pecial "$<variab
ff80: 6c 65 2d 6e 61 6d 65 3e 22 20 73 79 6e 74 61 78  le-name>" syntax
ff90: 0a 20 20 75 73 65 64 20 74 6f 20 61 75 74 6f 6d  .  used to autom
ffa0: 61 74 69 63 61 6c 6c 79 20 62 69 6e 64 20 53 51  atically bind SQ
ffb0: 4c 20 76 61 72 69 61 62 6c 65 73 20 74 6f 20 54  L variables to T
ffc0: 43 4c 20 76 61 72 69 61 62 6c 65 73 20 69 73 20  CL variables is 
ffd0: 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  omitted..}..COMP
ffe0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
fff0: 54 45 5f 4f 4d 49 54 5f 54 45 4d 50 44 42 7d 20  TE_OMIT_TEMPDB} 
10000 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
10010 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
10020 72 20 54 45 4d 50 20 6f 72 20 54 45 4d 50 4f 52  r TEMP or TEMPOR
10030 41 52 59 20 74 61 62 6c 65 73 2e 0a 7d 0a 0a 43  ARY tables..}..C
10040 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
10050 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 41 43 45  QLITE_OMIT_TRACE
10060 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
10070 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20  n omits support 
10080 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33  for the [sqlite3
10090 5f 70 72 6f 66 69 6c 65 28 29 5d 20 61 6e 64 0a  _profile()] and.
100a0 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65    [sqlite3_trace
100b0 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 20 61  ()] interfaces a
100c0 6e 64 20 74 68 65 69 72 20 61 73 73 6f 63 69 61  nd their associa
100d0 74 65 64 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f  ted logic..}..CO
100e0 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
100f0 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 49 47 47 45  LITE_OMIT_TRIGGE
10100 52 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20  R} {.  Defining 
10110 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  this option omit
10120 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 54 52  s support for TR
10130 49 47 47 45 52 20 6f 62 6a 65 63 74 73 2e 20 4e  IGGER objects. N
10140 65 69 74 68 65 72 20 74 68 65 20 0a 20 20 5b 43  either the .  [C
10150 52 45 41 54 45 20 54 52 49 47 47 45 52 5d 20 6f  REATE TRIGGER] o
10160 72 20 5b 44 52 4f 50 20 54 52 49 47 47 45 52 5d  r [DROP TRIGGER]
10170 0a 20 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20  .  commands are 
10180 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 69  available in thi
10190 73 20 63 61 73 65 2c 20 61 6e 64 20 61 74 74 65  s case, and atte
101a0 6d 70 74 69 6e 67 20 74 6f 20 65 78 65 63 75 74  mpting to execut
101b0 65 0a 20 20 65 69 74 68 65 72 20 77 69 6c 6c 20  e.  either will 
101c0 72 65 73 75 6c 74 20 69 6e 20 61 20 70 61 72 73  result in a pars
101d0 65 20 65 72 72 6f 72 2e 0a 20 20 54 68 69 73 20  e error..  This 
101e0 6f 70 74 69 6f 6e 20 61 6c 73 6f 20 64 69 73 61  option also disa
101f0 62 6c 65 73 20 65 6e 66 6f 72 63 65 6d 65 6e 74  bles enforcement
10200 20 6f 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79   of [foreign key
10210 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 2c 0a 20   constraints],. 
10220 20 73 69 6e 63 65 20 74 68 65 20 63 6f 64 65 20   since the code 
10230 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20  that implements 
10240 74 72 69 67 67 65 72 73 20 61 6e 64 20 77 68 69  triggers and whi
10250 63 68 20 69 73 20 6f 6d 69 74 74 65 64 20 62 79  ch is omitted by
10260 20 74 68 69 73 0a 20 20 6f 70 74 69 6f 6e 20 69   this.  option i
10270 73 20 61 6c 73 6f 20 75 73 65 64 20 74 6f 20 69  s also used to i
10280 6d 70 6c 65 6d 65 6e 74 20 5b 66 6f 72 65 69 67  mplement [foreig
10290 6e 20 6b 65 79 20 61 63 74 69 6f 6e 73 5d 2e 0a  n key actions]..
102a0 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
102b0 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54  N {SQLITE_OMIT_T
102c0 52 55 4e 43 41 54 45 5f 4f 50 54 49 4d 49 5a 41  RUNCATE_OPTIMIZA
102d0 54 49 4f 4e 7d 20 7b 0a 20 20 41 20 64 65 66 61  TION} {.  A defa
102e0 75 6c 74 20 62 75 69 6c 64 20 6f 66 20 53 51 4c  ult build of SQL
102f0 69 74 65 2c 20 69 66 20 61 20 5b 44 45 4c 45 54  ite, if a [DELET
10300 45 5d 20 73 74 61 74 65 6d 65 6e 74 20 68 61 73  E] statement has
10310 20 6e 6f 20 57 48 45 52 45 20 63 6c 61 75 73 65   no WHERE clause
10320 0a 20 20 61 6e 64 20 6f 70 65 72 61 74 65 73 20  .  and operates 
10330 6f 6e 20 61 20 74 61 62 6c 65 20 77 69 74 68 20  on a table with 
10340 6e 6f 20 74 72 69 67 67 65 72 73 2c 20 61 6e 20  no triggers, an 
10350 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 6f 63 63  optimization occ
10360 75 72 73 20 74 68 61 74 0a 20 20 63 61 75 73 65  urs that.  cause
10370 73 20 74 68 65 20 44 45 4c 45 54 45 20 74 6f 20  s the DELETE to 
10380 6f 63 63 75 72 20 62 79 20 64 72 6f 70 70 69 6e  occur by droppin
10390 67 20 61 6e 64 20 72 65 63 72 65 61 74 69 6e 67  g and recreating
103a0 20 74 68 65 20 74 61 62 6c 65 2e 20 20 0a 20 20   the table.  .  
103b0 44 72 6f 70 70 69 6e 67 20 61 6e 64 20 72 65 63  Dropping and rec
103c0 72 65 61 74 69 6e 67 20 61 20 74 61 62 6c 65 20  reating a table 
103d0 69 73 20 75 73 75 61 6c 6c 79 20 6d 75 63 68 20  is usually much 
103e0 66 61 73 74 65 72 20 74 68 61 6e 20 64 65 6c 65  faster than dele
103f0 74 69 6e 67 0a 20 20 74 68 65 20 74 61 62 6c 65  ting.  the table
10400 20 63 6f 6e 74 65 6e 74 20 72 6f 77 20 62 79 20   content row by 
10410 72 6f 77 2e 20 20 54 68 69 73 20 69 73 20 74 68  row.  This is th
10420 65 20 22 74 72 75 6e 63 61 74 65 20 6f 70 74 69  e "truncate opti
10430 6d 69 7a 61 74 69 6f 6e 22 2e 0a 7d 0a 0a 43 4f  mization"..}..CO
10440 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
10450 4c 49 54 45 5f 4f 4d 49 54 5f 55 54 46 31 36 7d  LITE_OMIT_UTF16}
10460 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20   {.  This macro 
10470 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20  is used to omit 
10480 73 75 70 70 6f 72 74 20 66 6f 72 20 55 54 46 31  support for UTF1
10490 36 20 74 65 78 74 20 65 6e 63 6f 64 69 6e 67 2e  6 text encoding.
104a0 20 57 68 65 6e 20 74 68 69 73 20 69 73 0a 20 20   When this is.  
104b0 64 65 66 69 6e 65 64 20 61 6c 6c 20 41 50 49 20  defined all API 
104c0 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 72  functions that r
104d0 65 74 75 72 6e 20 6f 72 20 61 63 63 65 70 74 20  eturn or accept 
104e0 55 54 46 31 36 20 65 6e 63 6f 64 65 64 20 74 65  UTF16 encoded te
104f0 78 74 20 61 72 65 0a 20 20 75 6e 61 76 61 69 6c  xt are.  unavail
10500 61 62 6c 65 2e 20 54 68 65 73 65 20 66 75 6e 63  able. These func
10510 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 69 64 65  tions can be ide
10520 6e 74 69 66 69 65 64 20 62 79 20 74 68 65 20 66  ntified by the f
10530 61 63 74 20 74 68 61 74 20 74 68 65 79 20 65 6e  act that they en
10540 64 0a 20 20 77 69 74 68 20 27 31 36 27 2c 20 66  d.  with '16', f
10550 6f 72 20 65 78 61 6d 70 6c 65 20 5b 73 71 6c 69  or example [sqli
10560 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 5d  te3_prepare16()]
10570 2c 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  , [sqlite3_colum
10580 6e 5f 74 65 78 74 31 36 28 29 5d 20 61 6e 64 0a  n_text16()] and.
10590 20 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f    [sqlite3_bind_
105a0 74 65 78 74 31 36 28 29 5d 2e 0a 7d 0a 0a 43 4f  text16()]..}..CO
105b0 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
105c0 4c 49 54 45 5f 4f 4d 49 54 5f 56 41 43 55 55 4d  LITE_OMIT_VACUUM
105d0 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
105e0 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
105f0 64 2c 20 74 68 65 20 5b 56 41 43 55 55 4d 5d 0a  d, the [VACUUM].
10600 20 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74    command is not
10610 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65   included in the
10620 20 6c 69 62 72 61 72 79 2e 0a 20 20 45 78 65 63   library..  Exec
10630 75 74 69 6e 67 20 61 20 5b 56 41 43 55 55 4d 5d  uting a [VACUUM]
10640 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 65   statement cause
10650 73 20 0a 20 20 61 20 70 61 72 73 65 20 65 72 72  s .  a parse err
10660 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  or..}..COMPILE_O
10670 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
10680 49 54 5f 56 49 45 57 7d 20 7b 0a 20 20 44 65 66  IT_VIEW} {.  Def
10690 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f  ining this optio
106a0 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20  n omits support 
106b0 66 6f 72 20 56 49 45 57 20 6f 62 6a 65 63 74 73  for VIEW objects
106c0 2e 20 4e 65 69 74 68 65 72 20 74 68 65 20 0a 20  . Neither the . 
106d0 20 5b 43 52 45 41 54 45 20 56 49 45 57 5d 20 6e   [CREATE VIEW] n
106e0 6f 72 20 74 68 65 20 5b 44 52 4f 50 20 56 49 45  or the [DROP VIE
106f0 57 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73 20 61 72  W].  commands ar
10700 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74  e available in t
10710 68 69 73 20 63 61 73 65 2c 20 61 6e 64 0a 20 20  his case, and.  
10720 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78  attempting to ex
10730 65 63 75 74 65 20 65 69 74 68 65 72 20 77 69 6c  ecute either wil
10740 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 20 70 61  l result in a pa
10750 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20 57 41  rse error...  WA
10760 52 4e 49 4e 47 3a 20 49 66 20 74 68 69 73 20 6d  RNING: If this m
10770 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c  acro is defined,
10780 20 69 74 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20   it will not be 
10790 70 6f 73 73 69 62 6c 65 20 74 6f 20 6f 70 65 6e  possible to open
107a0 20 61 20 64 61 74 61 62 61 73 65 0a 20 20 66 6f   a database.  fo
107b0 72 20 77 68 69 63 68 20 74 68 65 20 73 63 68 65  r which the sche
107c0 6d 61 20 63 6f 6e 74 61 69 6e 73 20 56 49 45 57  ma contains VIEW
107d0 20 6f 62 6a 65 63 74 73 2e 20 0a 7d 0a 0a 43 4f   objects. .}..CO
107e0 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
107f0 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 52 54 55 41  LITE_OMIT_VIRTUA
10800 4c 54 41 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73  LTABLE} {.  This
10810 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
10820 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 73  pport for the [s
10830 71 6c 69 74 65 33 5f 76 74 61 62 20 7c 20 56 69  qlite3_vtab | Vi
10840 72 74 75 61 6c 20 54 61 62 6c 65 5d 0a 20 20 6d  rtual Table].  m
10850 65 63 68 61 6e 69 73 6d 20 69 6e 20 53 51 4c 69  echanism in SQLi
10860 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  te..}..COMPILE_O
10870 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
10880 49 54 5f 57 41 4c 7d 20 7b 0a 20 20 54 68 69 73  IT_WAL} {.  This
10890 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68   option omits th
108a0 65 20 22 5b 77 72 69 74 65 2d 61 68 65 61 64 20  e "[write-ahead 
108b0 6c 6f 67 5d 22 20 28 61 2e 6b 2e 61 2e 20 22 5b  log]" (a.k.a. "[
108c0 57 41 4c 5d 22 29 20 63 61 70 61 62 69 6c 69 74  WAL]") capabilit
108d0 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
108e0 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
108f0 54 5f 57 53 44 7d 20 7b 0a 20 20 54 68 69 73 20  T_WSD} {.  This 
10900 6f 70 74 69 6f 6e 20 62 75 69 6c 64 73 20 61 20  option builds a 
10910 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 53  version of the S
10920 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74 68  QLite library th
10930 61 74 20 63 6f 6e 74 61 69 6e 73 20 6e 6f 0a 20  at contains no. 
10940 20 57 72 69 74 61 62 6c 65 20 53 74 61 74 69 63   Writable Static
10950 20 44 61 74 61 20 28 57 53 44 29 2e 20 20 57 53   Data (WSD).  WS
10960 44 20 69 73 20 67 6c 6f 62 61 6c 20 76 61 72 69  D is global vari
10970 61 62 6c 65 73 20 61 6e 64 2f 6f 72 20 73 74 61  ables and/or sta
10980 74 69 63 0a 20 20 76 61 72 69 61 62 6c 65 73 2e  tic.  variables.
10990 20 20 53 6f 6d 65 20 70 6c 61 74 66 6f 72 6d 73    Some platforms
109a0 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74 20   do not support 
109b0 57 53 44 2c 20 61 6e 64 20 74 68 69 73 20 6f 70  WSD, and this op
109c0 74 69 6f 6e 20 69 73 20 6e 65 63 65 73 73 61 72  tion is necessar
109d0 79 0a 20 20 69 6e 20 6f 72 64 65 72 20 66 6f 72  y.  in order for
109e0 20 53 51 4c 69 74 65 20 74 6f 20 77 6f 72 6b 20   SQLite to work 
109f0 74 68 6f 73 65 20 70 6c 61 74 66 6f 72 6d 73 2e  those platforms.
10a00 20 20 0a 0a 20 20 55 6e 6c 69 6b 65 20 6f 74 68    ..  Unlike oth
10a10 65 72 20 4f 4d 49 54 20 6f 70 74 69 6f 6e 73 20  er OMIT options 
10a20 77 68 69 63 68 20 6d 61 6b 65 20 74 68 65 20 53  which make the S
10a30 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 73 6d  QLite library sm
10a40 61 6c 6c 65 72 2c 0a 20 20 74 68 69 73 20 6f 70  aller,.  this op
10a50 74 69 6f 6e 20 61 63 74 75 61 6c 6c 79 20 69 6e  tion actually in
10a60 63 72 65 61 73 65 73 20 74 68 65 20 73 69 7a 65  creases the size
10a70 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64 20 6d   of SQLite and m
10a80 61 6b 65 73 20 69 74 20 72 75 6e 0a 20 20 61 20  akes it run.  a 
10a90 6c 69 74 74 6c 65 20 73 6c 6f 77 65 72 2e 20 20  little slower.  
10aa0 4f 6e 6c 79 20 75 73 65 20 74 68 69 73 20 6f 70  Only use this op
10ab0 74 69 6f 6e 20 69 66 20 53 51 4c 69 74 65 20 69  tion if SQLite i
10ac0 73 20 62 65 69 6e 67 20 62 75 69 6c 74 20 66 6f  s being built fo
10ad0 72 20 61 6e 0a 20 20 65 6d 62 65 64 64 65 64 20  r an.  embedded 
10ae0 74 61 72 67 65 74 20 74 68 61 74 20 64 6f 65 73  target that does
10af0 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 57 53 44   not support WSD
10b00 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
10b10 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
10b20 5f 58 46 45 52 5f 4f 50 54 7d 20 7b 0a 20 20 54  _XFER_OPT} {.  T
10b30 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
10b40 20 73 75 70 70 6f 72 74 20 66 6f 72 20 6f 70 74   support for opt
10b50 69 6d 69 7a 61 74 69 6f 6e 73 20 74 68 61 74 20  imizations that 
10b60 68 65 6c 70 20 73 74 61 74 65 6d 65 6e 74 73 0a  help statements.
10b70 20 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 22 49    of the form "I
10b80 4e 53 45 52 54 20 49 4e 54 4f 20 2e 2e 2e 20 53  NSERT INTO ... S
10b90 45 4c 45 43 54 20 2e 2e 2e 22 20 72 75 6e 20 66  ELECT ..." run f
10ba0 61 73 74 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  aster..}..COMPIL
10bb0 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
10bc0 5f 55 4e 54 45 53 54 41 42 4c 45 7d 20 7b 0a 20  _UNTESTABLE} {. 
10bd0 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
10be0 74 65 20 62 75 69 6c 64 20 69 6e 63 6c 75 64 65  te build include
10bf0 73 20 61 20 73 6d 61 6c 6c 20 61 6d 6f 75 6e 74  s a small amount
10c00 20 6f 66 20 6c 6f 67 69 63 20 61 73 73 6f 63 69   of logic associ
10c10 61 74 65 64 0a 20 20 77 69 74 68 20 5b 73 71 6c  ated.  with [sql
10c20 69 74 65 33 5f 74 65 73 74 5f 63 6f 6e 74 72 6f  ite3_test_contro
10c30 6c 28 29 5d 20 74 6f 20 65 78 65 72 63 69 73 65  l()] to exercise
10c40 0a 20 20 70 61 72 74 73 20 6f 66 20 74 68 65 20  .  parts of the 
10c50 53 51 4c 69 74 65 20 63 6f 72 65 20 74 68 61 74  SQLite core that
10c60 20 61 72 65 20 6f 74 68 65 72 77 69 73 65 20 64   are otherwise d
10c70 69 66 66 69 63 75 6c 74 20 74 6f 20 76 61 6c 69  ifficult to vali
10c80 64 61 74 65 2e 0a 20 20 54 68 69 73 20 63 6f 6d  date..  This com
10c90 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
10ca0 20 6f 6d 69 74 73 20 74 68 61 74 20 65 78 74 72   omits that extr
10cb0 61 20 74 65 73 74 69 6e 67 20 6c 6f 67 69 63 2e  a testing logic.
10cc0 20 20 54 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65    This.  compile
10cd0 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 77 61 73  -time option was
10ce0 20 63 61 6c 6c 65 64 20 22 53 51 4c 49 54 45 5f   called "SQLITE_
10cf0 4f 4d 49 54 5f 42 55 49 4c 54 49 4e 5f 54 45 53  OMIT_BUILTIN_TES
10d00 54 22 20 70 72 69 6f 72 0a 20 20 74 6f 20 53 51  T" prior.  to SQ
10d10 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 31  Lite version 3.1
10d20 36 2e 30 20 28 5b 64 61 74 65 6f 66 3a 33 2e 31  6.0 ([dateof:3.1
10d30 36 2e 30 5d 29 2e 20 20 54 68 65 20 6e 61 6d 65  6.0]).  The name
10d40 20 77 61 73 20 63 68 61 6e 67 65 64 0a 20 20 74   was changed.  t
10d50 6f 20 62 65 74 74 65 72 20 64 65 73 63 72 69 62  o better describ
10d60 65 20 74 68 65 20 69 6d 70 6c 69 63 61 74 69 6f  e the implicatio
10d70 6e 73 20 6f 66 20 75 73 69 6e 67 20 69 74 2e 0a  ns of using it..
10d80 20 20 3c 70 3e 0a 20 20 53 65 74 74 69 6e 67 20    <p>.  Setting 
10d90 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  this compile-tim
10da0 65 20 6f 70 74 69 6f 6e 20 70 72 65 76 65 6e 74  e option prevent
10db0 73 20 53 51 4c 69 74 65 20 66 72 6f 6d 20 62 65  s SQLite from be
10dc0 69 6e 67 20 66 75 6c 6c 79 0a 20 20 74 65 73 74  ing fully.  test
10dd0 61 62 6c 65 2e 20 20 42 72 61 6e 63 68 20 74 65  able.  Branch te
10de0 73 74 20 63 6f 76 65 72 61 67 65 20 64 72 6f 70  st coverage drop
10df0 73 20 66 72 6f 6d 20 31 30 30 25 20 64 6f 77 6e  s from 100% down
10e00 20 74 6f 20 61 62 6f 75 74 20 39 35 25 2e 0a 20   to about 95%.. 
10e10 20 3c 70 3e 0a 20 20 53 51 4c 69 74 65 20 64 65   <p>.  SQLite de
10e20 76 65 6c 6f 70 65 72 73 20 66 6f 6c 6c 6f 77 20  velopers follow 
10e30 74 68 65 20 4e 41 53 41 20 70 72 69 6e 63 69 70  the NASA princip
10e40 6c 65 20 6f 66 0a 20 20 22 66 6c 79 20 77 68 61  le of.  "fly wha
10e50 74 20 79 6f 75 20 74 65 73 74 20 61 6e 64 20 74  t you test and t
10e60 65 73 74 20 77 68 61 74 20 79 6f 75 20 66 6c 79  est what you fly
10e70 22 2e 20 20 54 68 69 73 20 70 72 69 6e 63 69 70  ".  This princip
10e80 6c 65 20 69 73 20 76 69 6f 6c 61 74 65 64 0a 20  le is violated. 
10e90 20 69 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20   if this option 
10ea0 69 73 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 64  is enabled for d
10eb0 65 6c 69 76 65 72 79 20 62 75 74 20 64 69 73 61  elivery but disa
10ec0 62 6c 65 64 20 66 6f 72 20 74 65 73 74 69 6e 67  bled for testing
10ed0 2e 0a 20 20 42 75 74 20 69 66 20 74 68 69 73 20  ..  But if this 
10ee0 6f 70 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65  option is enable
10ef0 64 20 64 75 72 69 6e 67 20 74 65 73 74 69 6e 67  d during testing
10f00 2c 20 6e 6f 74 20 61 6c 6c 20 62 72 61 6e 63 68  , not all branch
10f10 65 73 20 61 72 65 20 0a 20 20 72 65 61 63 68 61  es are .  reacha
10f20 62 6c 65 2e 20 20 54 68 65 72 65 66 6f 72 65 2c  ble.  Therefore,
10f30 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 69 73   the use of this
10f40 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
10f50 74 69 6f 6e 20 69 73 20 64 69 73 63 6f 75 72 61  tion is discoura
10f60 67 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ged..}..COMPILE_
10f70 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 5a  OPTION {SQLITE_Z
10f80 45 52 4f 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20  ERO_MALLOC} {.  
10f90 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
10fa0 73 20 62 6f 74 68 20 74 68 65 20 5b 64 65 66 61  s both the [defa
10fb0 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ult memory alloc
10fc0 61 74 6f 72 5d 20 61 6e 64 20 74 68 65 0a 20 20  ator] and the.  
10fd0 5b 64 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72  [debugging memor
10fe0 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 66 72 6f  y allocator] fro
10ff0 6d 20 74 68 65 20 62 75 69 6c 64 20 61 6e 64 20  m the build and 
11000 73 75 62 73 74 69 74 75 74 65 73 20 61 20 73 74  substitutes a st
11010 75 62 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ub.  memory allo
11020 63 61 74 6f 72 20 74 68 61 74 20 61 6c 77 61 79  cator that alway
11030 73 20 66 61 69 6c 73 2e 20 20 53 51 4c 69 74 65  s fails.  SQLite
11040 20 77 69 6c 6c 20 6e 6f 74 20 72 75 6e 20 77 69   will not run wi
11050 74 68 20 74 68 69 73 0a 20 20 73 74 75 62 20 6d  th this.  stub m
11060 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
11070 73 69 6e 63 65 20 69 74 20 77 69 6c 6c 20 62 65  since it will be
11080 20 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63   unable to alloc
11090 61 74 65 20 6d 65 6d 6f 72 79 2e 20 20 42 75 74  ate memory.  But
110a0 0a 20 20 74 68 69 73 20 73 74 75 62 20 63 61 6e  .  this stub can
110b0 20 62 65 20 72 65 70 6c 61 63 65 64 20 61 74 20   be replaced at 
110c0 73 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e 67  start-time using
110d0 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  .  [sqlite3_conf
110e0 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ig]([SQLITE_CONF
110f0 49 47 5f 4d 41 4c 4c 4f 43 5d 2c 2e 2e 2e 29 20  IG_MALLOC],...) 
11100 6f 72 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f  or.  [sqlite3_co
11110 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f  nfig]([SQLITE_CO
11120 4e 46 49 47 5f 48 45 41 50 5d 2c 2e 2e 2e 29 2e  NFIG_HEAP],...).
11130 0a 20 20 53 6f 20 74 68 65 20 6e 65 74 20 65 66  .  So the net ef
11140 66 65 63 74 20 6f 66 20 74 68 69 73 20 63 6f 6d  fect of this com
11150 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
11160 20 69 73 20 74 68 61 74 20 69 74 20 61 6c 6c 6f   is that it allo
11170 77 73 20 53 51 4c 69 74 65 0a 20 20 74 6f 20 62  ws SQLite.  to b
11180 65 20 63 6f 6d 70 69 6c 65 64 20 61 6e 64 20 6c  e compiled and l
11190 69 6e 6b 65 64 20 61 67 61 69 6e 73 74 20 61 20  inked against a 
111a0 73 79 73 74 65 6d 20 6c 69 62 72 61 72 79 20 74  system library t
111b0 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70  hat does not sup
111c0 70 6f 72 74 0a 20 20 6d 61 6c 6c 6f 63 28 29 2c  port.  malloc(),
111d0 20 66 72 65 65 28 29 2c 20 61 6e 64 2f 6f 72 20   free(), and/or 
111e0 72 65 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 3c 2f  realloc()..}..</
111f0 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 64 65  tcl>.<a name="de
11200 62 75 67 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61 3e  bugoptions"></a>
11210 0a 3c 68 31 3e 20 41 6e 61 6c 79 73 69 73 20 61  .<h1> Analysis a
11220 6e 64 20 44 65 62 75 67 67 69 6e 67 20 4f 70 74  nd Debugging Opt
11230 69 6f 6e 73 3c 2f 68 31 3e 0a 3c 74 63 6c 3e 0a  ions</h1>.<tcl>.
11240 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
11250 7b 53 51 4c 49 54 45 5f 44 45 42 55 47 7d 20 7b  {SQLITE_DEBUG} {
11260 0a 20 20 54 68 65 20 53 51 4c 69 74 65 20 73 6f  .  The SQLite so
11270 75 72 63 65 20 63 6f 64 65 20 63 6f 6e 74 61 69  urce code contai
11280 6e 73 20 6c 69 74 65 72 61 6c 6c 79 20 74 68 6f  ns literally tho
11290 75 73 61 6e 64 73 20 6f 66 20 61 73 73 65 72 74  usands of assert
112a0 28 29 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20  () statements.  
112b0 75 73 65 64 20 74 6f 20 76 65 72 69 66 79 20 69  used to verify i
112c0 6e 74 65 72 6e 61 6c 20 61 73 73 75 6d 70 74 69  nternal assumpti
112d0 6f 6e 73 20 61 6e 64 20 73 75 62 72 6f 75 74 69  ons and subrouti
112e0 6e 65 20 70 72 65 63 6f 6e 64 69 74 69 6f 6e 73  ne preconditions
112f0 20 61 6e 64 0a 20 20 70 6f 73 74 63 6f 6e 64 69   and.  postcondi
11300 74 69 6f 6e 73 2e 20 20 54 68 65 73 65 20 61 73  tions.  These as
11310 73 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e 74  sert() statement
11320 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 74  s are normally t
11330 75 72 6e 65 64 20 6f 66 66 0a 20 20 28 74 68 65  urned off.  (the
11340 79 20 67 65 6e 65 72 61 74 65 20 6e 6f 20 63 6f  y generate no co
11350 64 65 29 20 73 69 6e 63 65 20 74 75 72 6e 69 6e  de) since turnin
11360 67 20 74 68 65 6d 20 6f 6e 20 6d 61 6b 65 73 20  g them on makes 
11370 53 51 4c 69 74 65 20 72 75 6e 20 61 70 70 72 6f  SQLite run appro
11380 78 69 6d 61 74 65 6c 79 0a 20 20 74 68 72 65 65  ximately.  three
11390 20 74 69 6d 65 73 20 73 6c 6f 77 65 72 2e 20 20   times slower.  
113a0 42 75 74 20 66 6f 72 20 74 65 73 74 69 6e 67 20  But for testing 
113b0 61 6e 64 20 61 6e 61 6c 79 73 69 73 2c 20 69 74  and analysis, it
113c0 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20 74 75   is useful to tu
113d0 72 6e 0a 20 20 74 68 65 20 61 73 73 65 72 74 28  rn.  the assert(
113e0 29 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e 2e  ) statements on.
113f0 20 20 54 68 65 20 53 51 4c 49 54 45 5f 44 45 42    The SQLITE_DEB
11400 55 47 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  UG compile-time 
11410 6f 70 74 69 6f 6e 20 64 6f 65 73 20 74 68 69 73  option does this
11420 2e 0a 20 20 3c 70 3e 53 51 4c 49 54 45 5f 44 45  ..  <p>SQLITE_DE
11430 42 55 47 20 61 6c 73 6f 20 65 6e 61 62 6c 65 73  BUG also enables
11440 20 73 6f 6d 65 20 6f 74 68 65 72 20 64 65 62 75   some other debu
11450 67 67 69 6e 67 20 66 65 61 74 75 72 65 73 2c 20  gging features, 
11460 73 75 63 68 20 61 73 0a 20 20 73 70 65 63 69 61  such as.  specia
11470 6c 20 5b 50 52 41 47 4d 41 5d 20 73 74 61 74 65  l [PRAGMA] state
11480 6d 65 6e 74 73 20 74 68 61 74 20 74 75 72 6e 20  ments that turn 
11490 6f 6e 20 74 72 61 63 69 6e 67 20 61 6e 64 20 6c  on tracing and l
114a0 69 73 74 69 6e 67 20 66 65 61 74 75 72 65 73 0a  isting features.
114b0 20 20 75 73 65 64 20 66 6f 72 20 74 72 6f 75 62    used for troub
114c0 6c 65 73 68 6f 6f 74 69 6e 67 20 61 6e 64 20 61  leshooting and a
114d0 6e 61 6c 79 73 69 73 20 6f 66 20 74 68 65 20 5b  nalysis of the [
114e0 56 44 42 45 5d 20 61 6e 64 20 63 6f 64 65 20 67  VDBE] and code g
114f0 65 6e 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d  enerator..}..COM
11500 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
11510 49 54 45 5f 4d 45 4d 44 45 42 55 47 7d 20 7b 0a  ITE_MEMDEBUG} {.
11520 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4d 45 4d    The SQLITE_MEM
11530 44 45 42 55 47 20 6f 70 74 69 6f 6e 20 63 61 75  DEBUG option cau
11540 73 65 73 20 61 6e 20 69 6e 73 74 72 75 6d 65 6e  ses an instrumen
11550 74 65 64 20 0a 20 20 5b 64 65 62 75 67 67 69 6e  ted .  [debuggin
11560 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  g memory allocat
11570 6f 72 5d 0a 20 20 74 6f 20 62 65 20 75 73 65 64  or].  to be used
11580 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20   as the default 
11590 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
115a0 20 77 69 74 68 69 6e 20 53 51 4c 69 74 65 2e 20   within SQLite. 
115b0 20 54 68 65 0a 20 20 69 6e 73 74 72 75 6d 65 6e   The.  instrumen
115c0 74 65 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ted memory alloc
115d0 61 74 6f 72 20 63 68 65 63 6b 73 20 66 6f 72 20  ator checks for 
115e0 6d 69 73 75 73 65 20 6f 66 20 64 79 6e 61 6d 69  misuse of dynami
115f0 63 61 6c 6c 79 20 61 6c 6c 6f 63 61 74 65 64 0a  cally allocated.
11600 20 20 6d 65 6d 6f 72 79 2e 20 20 45 78 61 6d 70    memory.  Examp
11610 6c 65 73 20 6f 66 20 6d 69 73 75 73 65 20 69 6e  les of misuse in
11620 63 6c 75 64 65 20 75 73 69 6e 67 20 6d 65 6d 6f  clude using memo
11630 72 79 20 61 66 74 65 72 20 69 74 20 69 73 20 66  ry after it is f
11640 72 65 65 64 2c 0a 20 20 77 72 69 74 69 6e 67 20  reed,.  writing 
11650 6f 66 66 20 74 68 65 20 65 6e 64 73 20 6f 66 20  off the ends of 
11660 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  a memory allocat
11670 69 6f 6e 2c 20 66 72 65 65 69 6e 67 20 6d 65 6d  ion, freeing mem
11680 6f 72 79 20 6e 6f 74 20 70 72 65 76 69 6f 75 73  ory not previous
11690 6c 79 0a 20 20 6f 62 74 61 69 6e 65 64 20 66 72  ly.  obtained fr
116a0 6f 6d 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c  om the memory al
116b0 6c 6f 63 61 74 6f 72 2c 20 6f 72 20 66 61 69 6c  locator, or fail
116c0 69 6e 67 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a  ing to initializ
116d0 65 20 6e 65 77 6c 79 0a 20 20 61 6c 6c 6f 63 61  e newly.  alloca
116e0 74 65 64 20 6d 65 6d 6f 72 79 2e 0a 7d 0a 0a 3c  ted memory..}..<
116f0 2f 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 77  /tcl>.<a name="w
11700 69 6e 33 32 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61  in32options"></a
11710 3e 0a 3c 68 31 3e 20 57 69 6e 64 6f 77 73 2d 53  >.<h1> Windows-S
11720 70 65 63 69 66 69 63 20 4f 70 74 69 6f 6e 73 3c  pecific Options<
11730 2f 68 31 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d 50  /h1>.<tcl>..COMP
11740 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
11750 54 45 5f 57 49 4e 33 32 5f 48 45 41 50 5f 43 52  TE_WIN32_HEAP_CR
11760 45 41 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  EATE} {.  This o
11770 70 74 69 6f 6e 20 66 6f 72 63 65 73 20 74 68 65  ption forces the
11780 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 6d 65   Win32 native me
11790 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20  mory allocator, 
117a0 77 68 65 6e 20 65 6e 61 62 6c 65 64 2c 20 74 6f  when enabled, to
117b0 0a 20 20 63 72 65 61 74 65 20 61 20 70 72 69 76  .  create a priv
117c0 61 74 65 20 68 65 61 70 20 74 6f 20 68 6f 6c 64  ate heap to hold
117d0 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f   all memory allo
117e0 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50  cations..}..COMP
117f0 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
11800 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 5f  TE_WIN32_MALLOC_
11810 56 41 4c 49 44 41 54 45 7d 20 7b 0a 20 20 54 68  VALIDATE} {.  Th
11820 69 73 20 6f 70 74 69 6f 6e 20 66 6f 72 63 65 73  is option forces
11830 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76   the Win32 nativ
11840 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  e memory allocat
11850 6f 72 2c 20 77 68 65 6e 20 65 6e 61 62 6c 65 64  or, when enabled
11860 2c 20 74 6f 0a 20 20 6d 61 6b 65 20 73 74 72 61  , to.  make stra
11870 74 65 67 69 63 20 63 61 6c 6c 73 20 69 6e 74 6f  tegic calls into
11880 20 74 68 65 20 48 65 61 70 56 61 6c 69 64 61 74   the HeapValidat
11890 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 66 20  e() function if 
118a0 61 73 73 65 72 74 28 29 20 69 73 20 61 6c 73 6f  assert() is also
118b0 0a 20 20 65 6e 61 62 6c 65 64 2e 0a 7d 0a 0a 3c  .  enabled..}..<
118c0 2f 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 6c  /tcl>.<a name="l
118d0 69 6e 6b 61 67 65 22 3e 3c 2f 61 3e 0a 3c 68 31  inkage"></a>.<h1
118e0 3e 43 6f 6d 70 69 6c 65 72 20 4c 69 6e 6b 61 67  >Compiler Linkag
118f0 65 20 43 6f 6e 74 72 6f 6c 3c 2f 68 31 3e 0a 0a  e Control</h1>..
11900 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  <p>The following
11910 20 6d 61 63 72 6f 73 20 73 70 65 63 69 66 79 0a   macros specify.
11920 69 6e 74 65 72 66 61 63 65 20 6c 69 6e 6b 61 67  interface linkag
11930 65 20 66 6f 72 20 63 65 72 74 61 69 6e 20 6b 69  e for certain ki
11940 6e 64 73 20 6f 66 20 53 51 4c 69 74 65 20 62 75  nds of SQLite bu
11950 69 6c 64 73 2e 20 20 54 68 65 20 4d 61 6b 65 66  ilds.  The Makef
11960 69 6c 65 73 20 77 69 6c 6c 20 6e 6f 72 6d 61 6c  iles will normal
11970 6c 79 0a 68 61 6e 64 6c 65 20 73 65 74 74 69 6e  ly.handle settin
11980 67 20 74 68 65 73 65 20 6d 61 63 72 6f 73 20 61  g these macros a
11990 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20 20 41  utomatically.  A
119a0 70 70 6c 69 63 61 74 69 6f 6e 20 64 65 76 65 6c  pplication devel
119b0 6f 70 65 72 73 20 73 68 6f 75 6c 64 0a 6e 6f 74  opers should.not
119c0 20 6e 65 65 64 20 74 6f 20 77 6f 72 72 79 20 77   need to worry w
119d0 69 74 68 20 74 68 65 73 65 20 6d 61 63 72 6f 73  ith these macros
119e0 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  .  The following
119f0 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 61   documentation a
11a00 62 6f 75 74 20 74 68 65 73 65 20 0a 6d 61 63 72  bout these .macr
11a10 6f 73 20 69 73 20 69 6e 63 6c 75 64 65 64 20 63  os is included c
11a20 6f 6d 70 6c 65 74 65 6e 65 73 73 2e 3c 2f 70 3e  ompleteness.</p>
11a30 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f  ..<tcl>.COMPILE_
11a40 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 41  OPTION {SQLITE_A
11a50 50 49 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63  PI} {.  This mac
11a60 72 6f 20 69 64 65 6e 74 69 66 69 65 73 20 61 20  ro identifies a 
11a70 65 78 74 65 72 6e 61 6c 6c 79 20 76 69 73 69 62  externally visib
11a80 6c 65 20 69 6e 74 65 72 66 61 63 65 20 66 6f 72  le interface for
11a90 20 53 51 4c 69 74 65 2e 0a 20 20 54 68 69 73 20   SQLite..  This 
11aa0 6d 61 63 72 6f 20 69 73 20 73 6f 6d 65 74 69 6d  macro is sometim
11ab0 65 73 20 73 65 74 20 74 6f 20 22 65 78 74 65 72  es set to "exter
11ac0 6e 22 2e 20 20 42 75 74 20 74 68 65 20 64 65 66  n".  But the def
11ad0 69 6e 69 74 69 6f 6e 20 69 73 0a 20 20 63 6f 6d  inition is.  com
11ae0 70 69 6c 65 72 2d 73 70 65 63 69 66 69 63 2e 0a  piler-specific..
11af0 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
11b00 4e 20 7b 53 51 4c 49 54 45 5f 41 50 49 43 41 4c  N {SQLITE_APICAL
11b10 4c 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  L} {.  This macr
11b20 6f 20 69 64 65 6e 74 69 66 69 65 73 20 74 68 65  o identifies the
11b30 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74   calling convent
11b40 69 6f 6e 20 75 73 65 64 20 62 79 20 70 75 62 6c  ion used by publ
11b50 69 63 20 69 6e 74 65 72 66 61 63 65 0a 20 20 72  ic interface.  r
11b60 6f 75 74 69 6e 65 73 20 69 6e 20 53 51 4c 69 74  outines in SQLit
11b70 65 2e 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69  e.  This macro i
11b80 73 20 6e 6f 72 6d 61 6c 6c 79 20 64 65 66 69 6e  s normally defin
11b90 65 64 20 74 6f 20 62 65 20 6e 6f 74 68 69 6e 67  ed to be nothing
11ba0 2c 0a 20 20 74 68 6f 75 67 68 20 6f 6e 20 57 69  ,.  though on Wi
11bb0 6e 64 6f 77 73 20 62 75 69 6c 64 73 20 69 74 20  ndows builds it 
11bc0 63 61 6e 20 73 6f 6d 65 74 69 6d 65 73 20 62 65  can sometimes be
11bd0 20 73 65 74 20 74 6f 20 22 5f 5f 63 64 65 63 6c   set to "__cdecl
11be0 22 20 6f 72 20 22 5f 5f 73 74 64 63 61 6c 6c 22  " or "__stdcall"
11bf0 2e 0a 20 20 54 68 65 20 22 5f 5f 63 64 65 63 6c  ..  The "__cdecl
11c00 22 20 73 65 74 74 69 6e 67 20 69 73 20 74 68 65  " setting is the
11c10 20 64 65 66 61 75 6c 74 2c 20 62 75 74 20 22 5f   default, but "_
11c20 5f 73 74 64 63 61 6c 6c 22 20 69 73 20 75 73 65  _stdcall" is use
11c30 64 20 77 68 65 6e 20 53 51 4c 69 74 65 0a 20 20  d when SQLite.  
11c40 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62  is intended to b
11c50 65 20 63 6f 6d 70 69 6c 65 64 20 61 73 20 61 20  e compiled as a 
11c60 57 69 6e 64 6f 77 73 20 73 79 73 74 65 6d 20 6c  Windows system l
11c70 69 62 72 61 72 79 2e 0a 20 20 3c 70 3e 0a 20 20  ibrary..  <p>.  
11c80 41 20 73 69 6e 67 6c 65 20 66 75 6e 63 74 69 6f  A single functio
11c90 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 73 68  n declaration sh
11ca0 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 6e 6f 20  ould contain no 
11cb0 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 6f 66  more than one of
11cc0 0a 20 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  .  the following
11cd0 3a 20 20 5b 53 51 4c 49 54 45 5f 41 50 49 43 41  :  [SQLITE_APICA
11ce0 4c 4c 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 41 4c  LL], [SQLITE_CAL
11cf0 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49 54 45 5f  LBACK], [SQLITE_
11d00 43 44 45 43 4c 5d 2c 0a 20 20 6f 72 20 5b 53 51  CDECL],.  or [SQ
11d10 4c 49 54 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a 7d  LITE_SYSCALL]..}
11d20 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
11d30 20 7b 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43   {SQLITE_CALLBAC
11d40 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  K} {.  This macr
11d50 6f 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20  o specifies the 
11d60 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69  calling conventi
11d70 6f 6e 20 75 73 65 64 20 62 79 20 63 61 6c 6c 62  on used by callb
11d80 61 63 6b 20 70 6f 69 6e 74 65 72 73 0a 20 20 69  ack pointers.  i
11d90 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 69 73 20  n SQLite.  This 
11da0 6d 61 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c  macro is normall
11db0 79 20 64 65 66 69 6e 65 64 20 74 6f 20 62 65 20  y defined to be 
11dc0 6e 6f 74 68 69 6e 67 2c 20 74 68 6f 75 67 68 20  nothing, though 
11dd0 6f 6e 20 57 69 6e 64 6f 77 73 0a 20 20 62 75 69  on Windows.  bui
11de0 6c 64 73 20 69 74 20 63 61 6e 20 73 6f 6d 65 74  lds it can somet
11df0 69 6d 65 73 20 62 65 20 73 65 74 20 74 6f 20 22  imes be set to "
11e00 5f 5f 63 64 65 63 6c 22 20 6f 72 20 22 5f 5f 73  __cdecl" or "__s
11e10 74 64 63 61 6c 6c 22 2e 20 20 54 68 65 0a 20 20  tdcall".  The.  
11e20 22 5f 5f 63 64 65 63 6c 22 20 73 65 74 74 69 6e  "__cdecl" settin
11e30 67 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74  g is the default
11e40 2c 20 62 75 74 20 22 5f 5f 73 74 64 63 61 6c 6c  , but "__stdcall
11e50 22 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 53  " is used when S
11e60 51 4c 69 74 65 0a 20 20 69 73 20 69 6e 74 65 6e  QLite.  is inten
11e70 64 65 64 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c  ded to be compil
11e80 65 64 20 61 73 20 61 20 57 69 6e 64 6f 77 73 20  ed as a Windows 
11e90 73 79 73 74 65 6d 20 6c 69 62 72 61 72 79 2e 0a  system library..
11ea0 20 20 3c 70 3e 0a 20 20 41 20 73 69 6e 67 6c 65    <p>.  A single
11eb0 20 66 75 6e 63 74 69 6f 6e 20 64 65 63 6c 61 72   function declar
11ec0 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 63 6f 6e  ation should con
11ed0 74 61 69 6e 20 6e 6f 20 6d 6f 72 65 20 74 68 61  tain no more tha
11ee0 6e 20 6f 6e 65 20 6f 66 0a 20 20 74 68 65 20 66  n one of.  the f
11ef0 6f 6c 6c 6f 77 69 6e 67 3a 20 20 5b 53 51 4c 49  ollowing:  [SQLI
11f00 54 45 5f 41 50 49 43 41 4c 4c 5d 2c 20 5b 53 51  TE_APICALL], [SQ
11f10 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b 5d 2c 20  LITE_CALLBACK], 
11f20 5b 53 51 4c 49 54 45 5f 43 44 45 43 4c 5d 2c 0a  [SQLITE_CDECL],.
11f30 20 20 6f 72 20 5b 53 51 4c 49 54 45 5f 53 59 53    or [SQLITE_SYS
11f40 43 41 4c 4c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  CALL]..}..COMPIL
11f50 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
11f60 5f 43 44 45 43 4c 7d 20 7b 0a 20 20 54 68 69 73  _CDECL} {.  This
11f70 20 6d 61 63 72 6f 20 73 70 65 63 69 66 69 65 73   macro specifies
11f80 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 63 6f 6e   the calling con
11f90 76 65 6e 74 69 6f 6e 20 75 73 65 64 20 62 79 20  vention used by 
11fa0 76 61 72 61 72 67 73 20 69 6e 74 65 72 66 61 63  varargs interfac
11fb0 65 0a 20 20 72 6f 75 74 69 6e 65 73 20 69 6e 20  e.  routines in 
11fc0 53 51 4c 69 74 65 2e 20 20 54 68 69 73 20 6d 61  SQLite.  This ma
11fd0 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20  cro is normally 
11fe0 64 65 66 69 6e 65 64 20 74 6f 20 62 65 20 6e 6f  defined to be no
11ff0 74 68 69 6e 67 2c 0a 20 20 74 68 6f 75 67 68 20  thing,.  though 
12000 6f 6e 20 57 69 6e 64 6f 77 73 20 62 75 69 6c 64  on Windows build
12010 73 20 69 74 20 63 61 6e 20 73 6f 6d 65 74 69 6d  s it can sometim
12020 65 73 20 62 65 20 73 65 74 20 74 6f 20 22 5f 5f  es be set to "__
12030 63 64 65 63 6c 22 2e 20 20 54 68 69 73 0a 20 20  cdecl".  This.  
12040 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20 6f 6e  macro is used on
12050 20 76 61 72 61 72 67 73 20 72 6f 75 74 69 6e 65   varargs routine
12060 73 20 61 6e 64 20 73 6f 20 63 61 6e 6e 6f 74 20  s and so cannot 
12070 62 65 20 73 65 74 20 74 6f 20 22 5f 5f 73 74 64  be set to "__std
12080 63 61 6c 6c 22 0a 20 20 73 69 6e 63 65 20 74 68  call".  since th
12090 65 20 5f 5f 73 74 64 63 61 6c 6c 20 63 61 6c 6c  e __stdcall call
120a0 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 64  ing convention d
120b0 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20  oes not support 
120c0 76 61 72 61 72 67 73 20 66 75 6e 63 74 69 6f 6e  varargs function
120d0 73 2e 0a 20 20 3c 70 3e 0a 20 20 41 20 73 69 6e  s..  <p>.  A sin
120e0 67 6c 65 20 66 75 6e 63 74 69 6f 6e 20 64 65 63  gle function dec
120f0 6c 61 72 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20  laration should 
12100 63 6f 6e 74 61 69 6e 20 6e 6f 20 6d 6f 72 65 20  contain no more 
12110 74 68 61 6e 20 6f 6e 65 20 6f 66 0a 20 20 74 68  than one of.  th
12120 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a 20 20 5b 53  e following:  [S
12130 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c 5d 2c 20  QLITE_APICALL], 
12140 5b 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b  [SQLITE_CALLBACK
12150 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 44 45 43 4c  ], [SQLITE_CDECL
12160 5d 2c 0a 20 20 6f 72 20 5b 53 51 4c 49 54 45 5f  ],.  or [SQLITE_
12170 53 59 53 43 41 4c 4c 5d 2e 0a 7d 0a 0a 43 4f 4d  SYSCALL]..}..COM
12180 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
12190 49 54 45 5f 53 59 53 43 41 4c 4c 7d 20 7b 0a 20  ITE_SYSCALL} {. 
121a0 20 54 68 69 73 20 6d 61 63 72 6f 20 69 64 65 6e   This macro iden
121b0 74 69 66 69 65 73 20 74 68 65 20 63 61 6c 6c 69  tifies the calli
121c0 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 75 73  ng convention us
121d0 65 64 20 62 79 20 6f 70 65 72 61 74 69 6e 67 20  ed by operating 
121e0 73 79 73 74 65 6d 0a 20 20 69 6e 74 65 72 66 61  system.  interfa
121f0 63 65 73 20 66 6f 72 20 74 61 72 67 65 74 20 74  ces for target t
12200 68 65 20 70 6c 61 74 66 6f 72 6d 20 66 6f 72 20  he platform for 
12210 61 6e 20 53 51 4c 69 74 65 20 62 75 69 6c 64 2e  an SQLite build.
12220 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
12230 20 6e 6f 72 6d 61 6c 6c 79 20 64 65 66 69 6e 65   normally define
12240 64 20 74 6f 20 62 65 20 6e 6f 74 68 69 6e 67 2c  d to be nothing,
12250 20 74 68 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f   though on Windo
12260 77 73 0a 20 20 62 75 69 6c 64 73 20 69 74 20 63  ws.  builds it c
12270 61 6e 20 73 6f 6d 65 74 69 6d 65 73 20 62 65 20  an sometimes be 
12280 73 65 74 20 74 6f 20 22 5f 5f 73 74 64 63 61 6c  set to "__stdcal
12290 6c 22 2e 0a 20 20 3c 70 3e 0a 20 20 41 20 73 69  l"..  <p>.  A si
122a0 6e 67 6c 65 20 66 75 6e 63 74 69 6f 6e 20 64 65  ngle function de
122b0 63 6c 61 72 61 74 69 6f 6e 20 73 68 6f 75 6c 64  claration should
122c0 20 63 6f 6e 74 61 69 6e 20 6e 6f 20 6d 6f 72 65   contain no more
122d0 20 74 68 61 6e 20 6f 6e 65 20 6f 66 0a 20 20 74   than one of.  t
122e0 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a 20 20 5b  he following:  [
122f0 53 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c 5d 2c  SQLITE_APICALL],
12300 20 5b 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43   [SQLITE_CALLBAC
12310 4b 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 44 45 43  K], [SQLITE_CDEC
12320 4c 5d 2c 0a 20 20 6f 72 20 5b 53 51 4c 49 54 45  L],.  or [SQLITE
12330 5f 53 59 53 43 41 4c 4c 5d 2e 0a 7d 0a 0a 43 4f  _SYSCALL]..}..CO
12340 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
12350 4c 49 54 45 5f 54 43 4c 41 50 49 7d 20 7b 0a 20  LITE_TCLAPI} {. 
12360 20 54 68 69 73 20 6d 61 63 72 6f 20 73 70 65 63   This macro spec
12370 69 66 69 65 73 20 74 68 65 20 63 61 6c 6c 69 6e  ifies the callin
12380 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 75 73 65  g convention use
12390 64 20 62 79 20 74 68 65 20 0a 20 20 5b 68 74 74  d by the .  [htt
123a0 70 3a 2f 2f 77 77 77 2e 74 63 6c 2e 74 6b 20 7c  p://www.tcl.tk |
123b0 20 54 43 4c 5d 20 6c 69 62 72 61 72 79 20 69 6e   TCL] library in
123c0 74 65 72 66 61 63 65 20 72 6f 75 74 69 6e 65 73  terface routines
123d0 2e 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69  ..  This macro i
123e0 73 20 6e 6f 74 20 75 73 65 64 20 62 79 20 74 68  s not used by th
123f0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 2c 20 62  e SQLite core, b
12400 75 74 20 6f 6e 6c 79 20 62 79 20 74 68 65 20 5b  ut only by the [
12410 54 43 4c 20 49 6e 74 65 72 66 61 63 65 5d 0a 20  TCL Interface]. 
12420 20 61 6e 64 20 5b 54 43 4c 20 74 65 73 74 20 73   and [TCL test s
12430 75 69 74 65 5d 2e 0a 20 20 54 68 69 73 20 6d 61  uite]..  This ma
12440 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20  cro is normally 
12450 64 65 66 69 6e 65 64 20 74 6f 20 62 65 20 6e 6f  defined to be no
12460 74 68 69 6e 67 2c 0a 20 20 74 68 6f 75 67 68 20  thing,.  though 
12470 6f 6e 20 57 69 6e 64 6f 77 73 20 62 75 69 6c 64  on Windows build
12480 73 20 69 74 20 63 61 6e 20 73 6f 6d 65 74 69 6d  s it can sometim
12490 65 73 20 62 65 20 73 65 74 20 74 6f 20 22 5f 5f  es be set to "__
124a0 63 64 65 63 6c 22 2e 20 20 54 68 69 73 0a 20 20  cdecl".  This.  
124b0 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20 6f 6e  macro is used on
124c0 20 54 43 4c 20 6c 69 62 72 61 72 79 20 69 6e 74   TCL library int
124d0 65 72 66 61 63 65 20 72 6f 75 74 69 6e 65 73 20  erface routines 
124e0 77 68 69 63 68 20 61 72 65 20 61 6c 77 61 79 73  which are always
124f0 20 63 6f 6d 70 69 6c 65 64 0a 20 20 61 73 20 5f   compiled.  as _
12500 5f 63 64 65 63 6c 2c 20 65 76 65 6e 20 6f 6e 20  _cdecl, even on 
12510 70 6c 61 74 66 6f 72 6d 73 20 74 68 61 74 20 70  platforms that p
12520 72 65 66 65 72 20 74 6f 20 75 73 65 20 5f 5f 73  refer to use __s
12530 74 64 63 61 6c 6c 2c 20 73 6f 20 74 68 69 73 0a  tdcall, so this.
12540 20 20 6d 61 63 72 6f 20 73 68 6f 75 6c 64 20 6e    macro should n
12550 6f 74 20 62 65 20 73 65 74 20 74 6f 20 5f 5f 73  ot be set to __s
12560 74 64 63 61 6c 6c 20 75 6e 6c 65 73 73 20 74 68  tdcall unless th
12570 65 20 70 6c 61 74 66 6f 72 6d 20 61 73 20 61 20  e platform as a 
12580 63 75 73 74 6f 6d 0a 20 20 54 43 4c 20 6c 69 62  custom.  TCL lib
12590 72 61 72 79 20 62 75 69 6c 64 20 74 68 61 74 20  rary build that 
125a0 73 75 70 70 6f 72 74 73 20 5f 5f 73 74 64 63 61  supports __stdca
125b0 6c 6c 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 69 73  ll..  <p>.  This
125c0 20 6d 61 63 72 6f 20 6d 61 79 20 6e 6f 74 20 62   macro may not b
125d0 65 20 75 73 65 64 20 69 6e 20 63 6f 6d 62 69 6e  e used in combin
125e0 61 74 69 6f 6e 20 77 69 74 68 20 61 6e 79 20 6f  ation with any o
125f0 66 20 5b 53 51 4c 49 54 45 5f 41 50 49 43 41 4c  f [SQLITE_APICAL
12600 4c 5d 2c 0a 20 20 5b 53 51 4c 49 54 45 5f 43 41  L],.  [SQLITE_CA
12610 4c 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49 54 45  LLBACK], [SQLITE
12620 5f 43 44 45 43 4c 5d 2c 20 6f 72 20 5b 53 51 4c  _CDECL], or [SQL
12630 49 54 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a 7d 0a  ITE_SYSCALL]..}.
12640 0a 0a 3c 2f 74 63 6c 3e 0a                       ..</tcl>.