Documentation Source Text

Hex Artifact Content
Login

Artifact 30620afc998c614845cbfba37ce6938bfcf19c43e6856173c16433cd1702a781:


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 52 45 53 53 5f 43 41 4c 4c  IT_PROGRESS_CALL
06f0: 42 41 43 4b 20 6f 70 74 69 6f 6e 20 69 73 20 6f  BACK option is o
0700: 6e 6c 79 20 75 73 61 62 6c 65 20 62 79 20 61 70  nly usable by ap
0710: 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 0a  plications that.
0720: 64 6f 65 20 6e 6f 74 20 75 73 65 20 74 68 65 20  doe not use the 
0730: 5b 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73  [sqlite3_progres
0740: 73 5f 68 61 6e 64 6c 65 72 28 29 5d 20 69 6e 74  s_handler()] int
0750: 65 72 66 61 63 65 2e 20 20 41 6e 64 20 73 6f 20  erface.  And so 
0760: 66 6f 72 74 68 2e 0a 0a 3c 70 3e 49 74 20 69 73  forth...<p>It is
0770: 20 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 74   impossible to t
0780: 65 73 74 20 65 76 65 72 79 20 70 6f 73 73 69 62  est every possib
0790: 6c 65 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f  le combination o
07a0: 66 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f  f compile-time.o
07b0: 70 74 69 6f 6e 73 20 66 6f 72 20 53 51 4c 69 74  ptions for SQLit
07c0: 65 2e 20 20 42 75 74 20 74 68 65 20 66 6f 6c 6c  e.  But the foll
07d0: 6f 77 69 6e 67 20 73 65 74 20 6f 66 20 63 6f 6d  owing set of com
07e0: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
07f0: 73 20 69 73 0a 6f 6e 65 20 63 6f 6e 66 69 67 75  s is.one configu
0800: 72 61 74 69 6f 6e 20 74 68 61 74 20 69 73 20 61  ration that is a
0810: 6c 77 61 79 73 20 66 75 6c 6c 79 20 74 65 73 74  lways fully test
0820: 65 64 2e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70  ed...<ol>.<li><p
0830: 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 54 48 52 45  ><b>[SQLITE_THRE
0840: 41 44 53 41 46 45 3d 30 5d 3c 2f 62 3e 2e 0a 53  ADSAFE=0]</b>..S
0850: 65 74 74 69 6e 67 20 2d 44 53 51 4c 49 54 45 5f  etting -DSQLITE_
0860: 54 48 52 45 41 44 53 41 46 45 3d 30 20 63 61 75  THREADSAFE=0 cau
0870: 73 65 73 20 61 6c 6c 20 6f 66 20 74 68 65 20 6d  ses all of the m
0880: 75 74 65 78 20 61 6e 64 20 74 68 72 65 61 64 2d  utex and thread-
0890: 73 61 66 65 74 79 20 6c 6f 67 69 63 0a 69 6e 20  safety logic.in 
08a0: 53 51 4c 69 74 65 20 74 6f 20 62 65 20 6f 6d 69  SQLite to be omi
08b0: 74 74 65 64 2e 20 20 54 68 69 73 20 69 73 20 74  tted.  This is t
08c0: 68 65 20 73 69 6e 67 6c 65 20 63 6f 6d 70 69 6c  he single compil
08d0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68  e-time option th
08e0: 61 74 20 6d 61 6b 65 73 0a 74 68 65 20 6d 6f 73  at makes.the mos
08f0: 74 20 64 69 66 66 65 72 65 6e 63 65 20 69 6e 20  t difference in 
0900: 6f 70 74 69 6d 69 7a 69 6e 67 20 74 68 65 20 70  optimizing the p
0910: 65 72 66 6f 72 6d 61 6e 63 65 20 6f 66 20 53 51  erformance of SQ
0920: 4c 69 74 65 2e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62  Lite...<li><p><b
0930: 3e 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  >[SQLITE_DEFAULT
0940: 5f 4d 45 4d 53 54 41 54 55 53 3d 30 5d 3c 2f 62  _MEMSTATUS=0]</b
0950: 3e 2e 0a 54 68 69 73 20 73 65 74 74 69 6e 67 20  >..This setting 
0960: 63 61 75 73 65 73 20 74 68 65 20 5b 73 71 6c 69  causes the [sqli
0970: 74 65 33 5f 73 74 61 74 75 73 28 29 5d 20 69 6e  te3_status()] in
0980: 74 65 72 66 61 63 65 73 20 74 68 61 74 20 74 72  terfaces that tr
0990: 61 63 6b 20 6d 65 6d 6f 72 79 20 75 73 61 67 65  ack memory usage
09a0: 0a 74 6f 20 62 65 20 64 69 73 61 62 6c 65 64 2e  .to be disabled.
09b0: 20 20 54 68 69 73 20 68 65 6c 70 73 20 74 68 65    This helps the
09c0: 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   [sqlite3_malloc
09d0: 28 29 5d 20 72 6f 75 74 69 6e 65 73 20 72 75 6e  ()] routines run
09e0: 20 6d 75 63 68 20 66 61 73 74 65 72 2c 0a 61 6e   much faster,.an
09f0: 64 20 73 69 6e 63 65 20 53 51 4c 69 74 65 20 75  d since SQLite u
0a00: 73 65 73 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  ses [sqlite3_mal
0a10: 6c 6f 63 28 29 5d 20 69 6e 74 65 72 6e 61 6c 6c  loc()] internall
0a20: 79 2c 20 74 68 69 73 20 68 65 6c 70 73 20 74 6f  y, this helps to
0a30: 20 6d 61 6b 65 20 74 68 65 0a 65 6e 74 69 72 65   make the.entire
0a40: 20 6c 69 62 72 61 72 79 20 66 61 73 74 65 72 2e   library faster.
0a50: 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51 4c  ..<li><p><b>[SQL
0a60: 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f  ITE_DEFAULT_WAL_
0a70: 53 59 4e 43 48 52 4f 4e 4f 55 53 3d 31 5d 3c 2f  SYNCHRONOUS=1]</
0a80: 62 3e 2e 0a 46 6f 72 20 6d 61 78 69 6d 75 6d 20  b>..For maximum 
0a90: 64 61 74 61 62 61 73 65 20 73 61 66 65 74 79 20  database safety 
0aa0: 66 6f 6c 6c 6f 77 69 6e 67 20 61 20 70 6f 77 65  following a powe
0ab0: 72 20 6c 6f 73 65 2c 20 74 68 65 20 73 65 74 74  r lose, the sett
0ac0: 69 6e 67 20 6f 66 0a 5b 50 52 41 47 4d 41 20 73  ing of.[PRAGMA s
0ad0: 79 6e 63 68 72 6f 6e 6f 75 73 3d 46 55 4c 4c 5d  ynchronous=FULL]
0ae0: 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2e   is recommended.
0af0: 20 20 48 6f 77 65 76 65 72 2c 20 69 6e 20 5b 57    However, in [W
0b00: 41 4c 20 6d 6f 64 65 5d 2c 20 63 6f 6d 70 6c 65  AL mode], comple
0b10: 74 65 0a 64 61 74 61 62 61 73 65 20 69 6e 74 65  te.database inte
0b20: 67 72 69 74 79 20 69 73 20 67 75 61 72 61 6e 74  grity is guarant
0b30: 65 65 64 20 77 69 74 68 20 5b 50 52 41 47 4d 41  eed with [PRAGMA
0b40: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d 4e 4f 52   synchronous=NOR
0b50: 4d 41 4c 5d 2e 20 20 57 69 74 68 0a 5b 50 52 41  MAL].  With.[PRA
0b60: 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d  GMA synchronous=
0b70: 4e 4f 52 4d 41 4c 5d 20 69 6e 20 5b 57 41 4c 20  NORMAL] in [WAL 
0b80: 6d 6f 64 65 5d 2c 20 72 65 63 65 6e 74 20 63 68  mode], recent ch
0b90: 61 6e 67 65 73 20 74 6f 20 74 68 65 20 64 61 74  anges to the dat
0ba0: 61 62 61 73 65 20 6d 69 67 68 74 0a 62 65 20 72  abase might.be r
0bb0: 6f 6c 6c 65 64 20 62 61 63 6b 20 62 79 20 61 20  olled back by a 
0bc0: 70 6f 77 65 72 20 6c 6f 73 73 2c 20 62 75 74 20  power loss, but 
0bd0: 74 68 65 20 64 61 74 61 62 61 73 65 20 77 69 6c  the database wil
0be0: 6c 20 6e 6f 74 20 62 65 20 63 6f 72 72 75 70 74  l not be corrupt
0bf0: 65 64 2e 0a 46 75 72 74 68 65 72 6d 6f 72 65 2c  ed..Furthermore,
0c00: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d   transaction com
0c10: 6d 69 74 20 69 73 20 6d 75 63 68 20 66 61 73 74  mit is much fast
0c20: 65 72 20 69 6e 20 57 41 4c 20 6d 6f 64 65 20 75  er in WAL mode u
0c30: 73 69 6e 67 0a 73 79 6e 63 68 72 6f 6e 6f 75 73  sing.synchronous
0c40: 3d 4e 4f 52 4d 41 4c 20 74 68 61 6e 20 77 69 74  =NORMAL than wit
0c50: 68 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 79  h the default sy
0c60: 6e 63 68 72 6f 6e 6f 75 73 3d 46 55 4c 4c 2e 20  nchronous=FULL. 
0c70: 20 46 6f 72 20 74 68 65 73 65 0a 72 65 61 73 6f   For these.reaso
0c80: 6e 73 2c 20 69 74 20 69 73 20 72 65 63 6f 6d 6d  ns, it is recomm
0c90: 65 6e 64 65 64 20 74 68 61 74 20 74 68 65 20 73  ended that the s
0ca0: 79 6e 63 68 72 6f 6e 6f 75 73 20 73 65 74 74 69  ynchronous setti
0cb0: 6e 67 20 62 65 20 63 68 61 6e 67 65 64 20 66 72  ng be changed fr
0cc0: 6f 6d 0a 46 55 4c 4c 20 74 6f 20 4e 4f 52 4d 41  om.FULL to NORMA
0cd0: 4c 20 77 68 65 6e 20 73 77 69 74 63 68 69 6e 67  L when switching
0ce0: 20 74 6f 20 57 41 4c 20 6d 6f 64 65 2e 20 20 54   to WAL mode.  T
0cf0: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
0d00: 20 6f 70 74 69 6f 6e 20 77 69 6c 6c 0a 61 63 63   option will.acc
0d10: 6f 6d 70 6c 69 73 68 20 74 68 61 74 2e 0a 0a 3c  omplish that...<
0d20: 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45  li><p><b>[SQLITE
0d30: 5f 4c 49 4b 45 5f 44 4f 45 53 4e 54 5f 4d 41 54  _LIKE_DOESNT_MAT
0d40: 43 48 5f 42 4c 4f 42 53 5d 3c 2f 62 3e 2e 0a 48  CH_BLOBS]</b>..H
0d50: 69 73 74 6f 72 69 63 61 6c 6c 79 2c 20 53 51 4c  istorically, SQL
0d60: 69 74 65 20 68 61 73 20 61 6c 6c 6f 77 65 64 20  ite has allowed 
0d70: 42 4c 4f 42 20 6f 70 65 72 61 6e 64 73 20 74 6f  BLOB operands to
0d80: 20 74 68 65 20 5b 4c 49 4b 45 5d 20 61 6e 64 20   the [LIKE] and 
0d90: 5b 47 4c 4f 42 5d 0a 6f 70 65 72 61 74 6f 72 73  [GLOB].operators
0da0: 2e 20 20 42 75 74 20 68 61 76 69 6e 67 20 61 20  .  But having a 
0db0: 42 4c 4f 42 20 61 73 20 61 6e 20 6f 70 65 72 61  BLOB as an opera
0dc0: 6e 64 20 6f 66 20 5b 4c 49 4b 45 5d 20 6f 72 20  nd of [LIKE] or 
0dd0: 5b 47 4c 4f 42 5d 20 63 6f 6d 70 6c 69 63 61 74  [GLOB] complicat
0de0: 65 73 0a 61 6e 64 20 73 6c 6f 77 73 20 74 68 65  es.and slows the
0df0: 20 5b 4c 49 4b 45 20 6f 70 74 69 6d 69 7a 61 74   [LIKE optimizat
0e00: 69 6f 6e 5d 2e 20 20 57 68 65 6e 20 74 68 69 73  ion].  When this
0e10: 20 6f 70 74 69 6f 6e 20 69 73 20 73 65 74 2c 20   option is set, 
0e20: 69 74 20 6d 65 61 6e 73 20 74 68 61 74 0a 74 68  it means that.th
0e30: 65 20 4c 49 4b 45 20 61 6e 64 20 47 4c 4f 42 20  e LIKE and GLOB 
0e40: 6f 70 65 72 61 74 6f 72 73 20 61 6c 77 61 79 73  operators always
0e50: 20 72 65 74 75 72 6e 20 46 41 4c 53 45 20 69 66   return FALSE if
0e60: 20 65 69 74 68 65 72 20 6f 70 65 72 61 6e 64 20   either operand 
0e70: 69 73 20 61 20 42 4c 4f 42 2e 0a 54 68 61 74 20  is a BLOB..That 
0e80: 73 69 6d 70 6c 69 66 69 65 73 20 74 68 65 20 69  simplifies the i
0e90: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
0ea0: 20 74 68 65 20 5b 4c 49 4b 45 20 6f 70 74 69 6d   the [LIKE optim
0eb0: 69 7a 61 74 69 6f 6e 5d 20 61 6e 64 20 61 6c 6c  ization] and all
0ec0: 6f 77 73 0a 71 75 65 72 69 65 73 20 74 68 61 74  ows.queries that
0ed0: 20 75 73 65 20 74 68 65 20 5b 4c 49 4b 45 20 6f   use the [LIKE o
0ee0: 70 74 69 6d 69 7a 61 74 69 6f 6e 5d 20 74 6f 20  ptimization] to 
0ef0: 72 75 6e 20 66 61 73 74 65 72 2e 0a 0a 3c 6c 69  run faster...<li
0f00: 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 4d  ><p><b>[SQLITE_M
0f10: 41 58 5f 45 58 50 52 5f 44 45 50 54 48 3d 30 5d  AX_EXPR_DEPTH=0]
0f20: 3c 2f 62 3e 2e 0a 53 65 74 74 69 6e 67 20 74 68  </b>..Setting th
0f30: 65 20 6d 61 78 69 6d 75 6d 20 65 78 70 72 65 73  e maximum expres
0f40: 73 69 6f 6e 20 70 61 72 73 65 2d 74 72 65 65 20  sion parse-tree 
0f50: 64 65 70 74 68 20 74 6f 20 7a 65 72 6f 20 64 69  depth to zero di
0f60: 73 61 62 6c 65 73 20 61 6c 6c 20 63 68 65 63 6b  sables all check
0f70: 69 6e 67 0a 6f 66 20 74 68 65 20 65 78 70 72 65  ing.of the expre
0f80: 73 73 69 6f 6e 20 70 61 72 73 65 2d 74 72 65 65  ssion parse-tree
0f90: 20 64 65 70 74 68 2c 20 77 68 69 63 68 20 73 69   depth, which si
0fa0: 6d 70 6c 69 66 69 65 73 20 74 68 65 20 63 6f 64  mplifies the cod
0fb0: 65 20 72 65 73 75 6c 74 69 6e 67 20 69 6e 0a 66  e resulting in.f
0fc0: 61 73 74 65 72 20 65 78 65 63 75 74 69 6f 6e 2c  aster execution,
0fd0: 20 61 6e 64 20 68 65 6c 70 73 20 74 68 65 20 70   and helps the p
0fe0: 61 72 73 65 20 74 72 65 65 20 74 6f 20 75 73 65  arse tree to use
0ff0: 20 6c 65 73 73 20 6d 65 6d 6f 72 79 2e 0a 0a 3c   less memory...<
1000: 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45  li><p><b>[SQLITE
1010: 5f 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45 5d 3c  _OMIT_DECLTYPE]<
1020: 2f 62 3e 2e 0a 42 79 20 6f 6d 69 74 74 69 6e 67  /b>..By omitting
1030: 20 74 68 65 20 28 73 65 6c 64 6f 6d 2d 6e 65 65   the (seldom-nee
1040: 64 65 64 29 20 61 62 69 6c 69 74 79 20 74 6f 20  ded) ability to 
1050: 72 65 74 75 72 6e 20 74 68 65 20 64 65 63 6c 61  return the decla
1060: 72 65 64 20 74 79 70 65 20 6f 66 0a 63 6f 6c 75  red type of.colu
1070: 6d 6e 73 20 66 72 6f 6d 20 74 68 65 20 72 65 73  mns from the res
1080: 75 6c 74 20 73 65 74 20 6f 66 20 71 75 65 72 79  ult set of query
1090: 2c 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  , [prepared stat
10a0: 65 6d 65 6e 74 73 5d 20 63 61 6e 20 62 65 20 6d  ements] can be m
10b0: 61 64 65 0a 74 6f 20 63 6f 6e 73 75 6d 65 20 6c  ade.to consume l
10c0: 65 73 73 20 6d 65 6d 6f 72 79 2e 0a 0a 3c 6c 69  ess memory...<li
10d0: 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 4f  ><p><b>[SQLITE_O
10e0: 4d 49 54 5f 44 45 50 52 45 43 41 54 45 44 5d 3c  MIT_DEPRECATED]<
10f0: 2f 62 3e 2e 0a 4f 6d 69 74 74 69 6e 67 20 64 65  /b>..Omitting de
1100: 70 72 65 63 61 74 65 64 20 69 6e 74 65 72 66 61  precated interfa
1110: 63 65 73 20 61 6e 64 20 66 65 61 74 75 72 65 73  ces and features
1120: 20 77 69 6c 6c 20 6e 6f 74 20 68 65 6c 70 20 53   will not help S
1130: 51 4c 69 74 65 20 74 6f 0a 72 75 6e 20 61 6e 79  QLite to.run any
1140: 20 66 61 73 74 65 72 2e 20 20 49 74 20 77 69 6c   faster.  It wil
1150: 6c 20 72 65 64 75 63 65 20 74 68 65 20 6c 69 62  l reduce the lib
1160: 72 61 72 79 20 66 6f 6f 74 70 72 69 6e 74 2c 20  rary footprint, 
1170: 68 6f 77 65 76 65 72 2e 20 20 41 6e 64 0a 69 74  however.  And.it
1180: 20 69 73 20 74 68 65 20 72 69 67 68 74 20 74 68   is the right th
1190: 69 6e 67 20 74 6f 20 64 6f 2e 0a 0a 3c 6c 69 3e  ing to do...<li>
11a0: 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 4f 4d  <p><b>[SQLITE_OM
11b0: 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c  IT_PROGRESS_CALL
11c0: 42 41 43 4b 5d 3c 2f 62 3e 2e 0a 54 68 65 20 70  BACK]</b>..The p
11d0: 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72 20  rogress handler 
11e0: 63 61 6c 6c 62 61 63 6b 20 63 6f 75 6e 74 65 72  callback counter
11f0: 20 6d 75 73 74 20 62 65 20 63 68 65 63 6b 65 64   must be checked
1200: 20 69 6e 20 74 68 65 20 69 6e 6e 65 72 20 6c 6f   in the inner lo
1210: 6f 70 0a 6f 66 20 74 68 65 20 5b 62 79 74 65 63  op.of the [bytec
1220: 6f 64 65 20 65 6e 67 69 6e 65 5d 2e 20 20 42 79  ode engine].  By
1230: 20 6f 6d 69 74 74 69 6e 67 20 74 68 69 73 20 69   omitting this i
1240: 6e 74 65 72 66 61 63 65 2c 20 61 20 73 69 6e 67  nterface, a sing
1250: 6c 65 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 0a 69  le conditional.i
1260: 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74  s removed from t
1270: 68 65 20 69 6e 6e 65 72 20 6c 6f 6f 70 20 6f 66  he inner loop of
1280: 20 74 68 65 20 5b 62 79 74 65 63 6f 64 65 20 65   the [bytecode e
1290: 6e 67 69 6e 65 5d 2c 20 68 65 6c 70 69 6e 67 20  ngine], helping 
12a0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 0a 74  SQL statements.t
12b0: 6f 20 72 75 6e 20 73 6c 69 67 68 74 6c 79 20 66  o run slightly f
12c0: 61 73 74 65 72 2e 0a 0a 3c 6c 69 3e 3c 70 3e 3c  aster...<li><p><
12d0: 62 3e 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  b>[SQLITE_OMIT_S
12e0: 48 41 52 45 44 5f 43 41 43 48 45 5d 3c 2f 62 3e  HARED_CACHE]</b>
12f0: 2e 0a 4f 6d 69 74 74 69 6e 67 20 74 68 65 20 70  ..Omitting the p
1300: 6f 73 73 69 62 69 6c 69 74 79 20 6f 66 20 75 73  ossibility of us
1310: 69 6e 67 20 5b 73 68 61 72 65 64 20 63 61 63 68  ing [shared cach
1320: 65 5d 20 61 6c 6c 6f 77 73 20 6d 61 6e 79 20 63  e] allows many c
1330: 6f 6e 64 69 74 69 6f 6e 61 6c 73 0a 69 6e 20 70  onditionals.in p
1340: 65 72 66 6f 72 6d 61 6e 63 65 2d 63 72 69 74 69  erformance-criti
1350: 63 61 6c 20 73 65 63 74 69 6f 6e 73 20 6f 66 20  cal sections of 
1360: 74 68 65 20 63 6f 64 65 20 74 6f 20 62 65 20 65  the code to be e
1370: 6c 69 6d 69 6e 61 74 65 64 2e 20 20 54 68 69 73  liminated.  This
1380: 20 63 61 6e 0a 67 69 76 65 20 61 20 6e 6f 74 69   can.give a noti
1390: 63 61 62 6c 65 20 69 6d 70 72 6f 76 65 6d 65 6e  cable improvemen
13a0: 74 20 69 6e 20 70 65 72 66 6f 72 6d 61 6e 63 65  t in performance
13b0: 2e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51  ...<li><p><b>[SQ
13c0: 4c 49 54 45 5f 55 53 45 5f 41 4c 4c 4f 43 41 5d  LITE_USE_ALLOCA]
13d0: 3c 2f 62 3e 2e 0a 4d 61 6b 65 20 75 73 65 20 6f  </b>..Make use o
13e0: 66 20 61 6c 6c 6f 63 61 28 29 20 66 6f 72 20 64  f alloca() for d
13f0: 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c 6c 6f 63  ynamically alloc
1400: 61 74 69 6e 67 20 74 65 6d 70 6f 72 61 72 79 20  ating temporary 
1410: 73 74 61 63 6b 20 73 70 61 63 65 20 66 6f 72 20  stack space for 
1420: 0a 75 73 65 20 77 69 74 68 69 6e 20 61 20 73 69  .use within a si
1430: 6e 67 6c 65 20 66 75 6e 63 74 69 6f 6e 2c 20 6f  ngle function, o
1440: 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 73  n systems that s
1450: 75 70 70 6f 72 74 20 61 6c 6c 6f 63 61 28 29 2e  upport alloca().
1460: 20 20 57 69 74 68 6f 75 74 0a 74 68 69 73 20 6f    Without.this o
1470: 70 74 69 6f 6e 2c 20 74 65 6d 70 6f 72 61 72 79  ption, temporary
1480: 20 73 70 61 63 65 20 69 73 20 61 6c 6c 6f 63 61   space is alloca
1490: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 68 65 61  ted from the hea
14a0: 70 2e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 57 68 65  p..</ol>..<p>Whe
14b0: 6e 20 61 6c 6c 20 6f 66 20 74 68 65 20 72 65 63  n all of the rec
14c0: 6f 6d 6d 65 6e 64 65 64 20 63 6f 6d 70 69 6c 65  ommended compile
14d0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 62  -time options ab
14e0: 6f 76 65 20 61 72 65 20 75 73 65 64 2c 0a 74 68  ove are used,.th
14f0: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
1500: 20 77 69 6c 6c 20 62 65 20 61 70 70 72 6f 78 69   will be approxi
1510: 6d 61 74 65 6c 79 20 33 25 20 73 6d 61 6c 6c 65  mately 3% smalle
1520: 72 20 61 6e 64 20 75 73 65 20 61 62 6f 75 74 20  r and use about 
1530: 35 25 20 66 65 77 65 72 0a 43 50 55 20 63 79 63  5% fewer.CPU cyc
1540: 6c 65 73 2e 20 20 53 6f 20 74 68 65 73 65 20 6f  les.  So these o
1550: 70 74 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 6d 61  ptions do not ma
1560: 6b 65 20 61 20 68 75 67 65 20 64 69 66 66 65 72  ke a huge differ
1570: 65 6e 63 65 2e 20 20 42 75 74 20 69 6e 20 0a 73  ence.  But in .s
1580: 6f 6d 65 20 64 65 73 69 67 6e 20 73 69 74 75 61  ome design situa
1590: 74 69 6f 6e 73 2c 20 65 76 65 72 79 20 6c 69 74  tions, every lit
15a0: 74 6c 65 20 62 69 74 20 68 65 6c 70 73 2e 0a 0a  tle bit helps...
15b0: 3c 61 20 6e 61 6d 65 3d 22 6f 73 63 6f 6e 66 69  <a name="osconfi
15c0: 67 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 50 6c 61  g"></a>.<h1> Pla
15d0: 74 66 6f 72 6d 20 43 6f 6e 66 69 67 75 72 61 74  tform Configurat
15e0: 69 6f 6e 3c 2f 68 31 3e 0a 0a 3c 74 63 6c 3e 0a  ion</h1>..<tcl>.
15f0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
1600: 5f 48 41 56 45 5f 53 51 4c 49 54 45 5f 43 4f 4e  _HAVE_SQLITE_CON
1610: 46 49 47 5f 48 7d 20 7b 0a 20 20 49 66 20 74 68  FIG_H} {.  If th
1620: 65 20 5f 48 41 56 45 5f 53 51 4c 49 54 45 5f 43  e _HAVE_SQLITE_C
1630: 4f 4e 46 49 47 5f 48 20 6d 61 63 72 6f 20 69 73  ONFIG_H macro is
1640: 20 64 65 66 69 6e 65 64 0a 20 20 74 68 65 6e 20   defined.  then 
1650: 74 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63  the SQLite sourc
1660: 65 20 63 6f 64 65 20 77 69 6c 6c 20 61 74 74 65  e code will atte
1670: 6d 70 74 20 74 6f 20 23 69 6e 63 6c 75 64 65 20  mpt to #include 
1680: 61 20 66 69 6c 65 20 6e 61 6d 65 64 20 22 63 6f  a file named "co
1690: 6e 66 69 67 2e 68 22 2e 0a 20 20 54 68 65 20 22  nfig.h"..  The "
16a0: 63 6f 6e 66 69 67 2e 68 22 20 66 69 6c 65 20 75  config.h" file u
16b0: 73 75 61 6c 6c 79 20 63 6f 6e 74 61 69 6e 73 20  sually contains 
16c0: 6f 74 68 65 72 20 63 6f 6e 66 69 67 75 72 61 74  other configurat
16d0: 69 6f 6e 20 6f 70 74 69 6f 6e 73 2c 20 65 73 70  ion options, esp
16e0: 65 63 69 61 6c 6c 79 0a 20 20 22 48 41 56 45 5f  ecially.  "HAVE_
16f0: 3c 69 3e 49 4e 54 45 52 46 41 43 45 3c 2f 69 3e  <i>INTERFACE</i>
1700: 22 20 74 79 70 65 20 6f 70 74 69 6f 6e 73 20 67  " type options g
1710: 65 6e 65 72 61 74 65 64 20 62 79 20 61 75 74 6f  enerated by auto
1720: 63 6f 6e 66 20 73 63 72 69 70 74 73 2e 0a 7d 0a  conf scripts..}.
1730: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
1740: 7b 48 41 56 45 5f 46 44 41 54 41 53 59 4e 43 7d  {HAVE_FDATASYNC}
1750: 20 7b 0a 20 20 49 66 20 74 68 65 20 48 41 56 45   {.  If the HAVE
1760: 5f 46 44 41 54 41 53 59 4e 43 20 63 6f 6d 70 69  _FDATASYNC compi
1770: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
1780: 73 20 74 72 75 65 2c 20 74 68 65 6e 20 74 68 65  s true, then the
1790: 20 64 65 66 61 75 6c 74 20 5b 56 46 53 5d 0a 20   default [VFS]. 
17a0: 20 66 6f 72 20 75 6e 69 78 20 73 79 73 74 65 6d   for unix system
17b0: 73 20 77 69 6c 6c 20 61 74 74 65 6d 70 74 20 74  s will attempt t
17c0: 6f 20 75 73 65 20 66 64 61 74 61 73 79 6e 63 28  o use fdatasync(
17d0: 29 20 69 6e 73 74 65 61 64 20 6f 66 20 66 73 79  ) instead of fsy
17e0: 6e 63 28 29 20 77 68 65 72 65 0a 20 20 61 70 70  nc() where.  app
17f0: 72 6f 70 72 69 61 74 65 2e 20 20 49 66 20 74 68  ropriate.  If th
1800: 69 73 20 66 6c 61 67 20 69 73 20 6d 69 73 73 69  is flag is missi
1810: 6e 67 20 6f 72 20 66 61 6c 73 65 2c 20 74 68 65  ng or false, the
1820: 6e 20 66 73 79 6e 63 28 29 20 69 73 20 61 6c 77  n fsync() is alw
1830: 61 79 73 20 75 73 65 64 2e 0a 7d 0a 0a 43 4f 4d  ays used..}..COM
1840: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56  PILE_OPTION {HAV
1850: 45 5f 47 4d 54 49 4d 45 5f 52 7d 20 7b 0a 20 20  E_GMTIME_R} {.  
1860: 49 66 20 74 68 65 20 48 41 56 45 5f 47 4d 54 49  If the HAVE_GMTI
1870: 4d 45 5f 52 20 6f 70 74 69 6f 6e 20 69 73 20 74  ME_R option is t
1880: 72 75 65 20 61 6e 64 20 69 66 20 5b 53 51 4c 49  rue and if [SQLI
1890: 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45  TE_OMIT_DATETIME
18a0: 5f 46 55 4e 43 53 5d 20 69 73 20 74 72 75 65 2c  _FUNCS] is true,
18b0: 0a 20 20 74 68 65 6e 20 74 68 65 20 43 55 52 52  .  then the CURR
18c0: 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e  ENT_TIME, CURREN
18d0: 54 5f 44 41 54 45 2c 20 61 6e 64 20 43 55 52 52  T_DATE, and CURR
18e0: 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 6b 65  ENT_TIMESTAMP ke
18f0: 79 77 6f 72 64 73 20 77 69 6c 6c 20 75 73 65 0a  ywords will use.
1900: 20 20 74 68 65 20 74 68 72 65 61 64 73 61 66 65    the threadsafe
1910: 20 22 67 6d 74 69 6d 65 5f 72 28 29 22 20 69 6e   "gmtime_r()" in
1920: 74 65 72 66 61 63 65 20 72 61 74 68 65 72 20 74  terface rather t
1930: 68 61 6e 20 22 67 6d 74 69 6d 65 28 29 22 2e 20  han "gmtime()". 
1940: 20 49 6e 20 74 68 65 20 75 73 75 61 6c 20 63 61   In the usual ca
1950: 73 65 0a 20 20 77 68 65 72 65 20 5b 53 51 4c 49  se.  where [SQLI
1960: 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45  TE_OMIT_DATETIME
1970: 5f 46 55 4e 43 53 5d 20 69 73 20 6e 6f 74 20 64  _FUNCS] is not d
1980: 65 66 69 6e 65 64 20 6f 72 20 69 73 20 66 61 6c  efined or is fal
1990: 73 65 2c 20 74 68 65 6e 20 74 68 65 0a 20 20 62  se, then the.  b
19a0: 75 69 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e  uilt-in [date an
19b0: 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73  d time functions
19c0: 5d 20 61 72 65 20 75 73 65 64 20 74 6f 20 69 6d  ] are used to im
19d0: 70 6c 65 6d 65 6e 74 20 74 68 65 20 43 55 52 52  plement the CURR
19e0: 45 4e 54 5f 54 49 4d 45 2c 0a 20 20 43 55 52 52  ENT_TIME,.  CURR
19f0: 45 4e 54 5f 44 41 54 45 2c 20 61 6e 64 20 43 55  ENT_DATE, and CU
1a00: 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20  RRENT_TIMESTAMP 
1a10: 6b 65 79 77 6f 72 64 73 20 61 6e 64 20 6e 65 69  keywords and nei
1a20: 74 68 65 72 20 67 6d 74 69 6d 65 5f 72 28 29 20  ther gmtime_r() 
1a30: 6e 6f 72 0a 20 20 67 6d 74 69 6d 65 28 29 20 69  nor.  gmtime() i
1a40: 73 20 65 76 65 72 20 63 61 6c 6c 65 64 2e 0a 7d  s ever called..}
1a50: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1a60: 20 7b 48 41 56 45 5f 49 53 4e 41 4e 7d 20 7b 0a   {HAVE_ISNAN} {.
1a70: 20 20 49 66 20 74 68 65 20 48 41 56 45 5f 49 53    If the HAVE_IS
1a80: 4e 41 4e 20 6f 70 74 69 6f 6e 20 69 73 20 74 72  NAN option is tr
1a90: 75 65 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20  ue, then SQLite 
1aa0: 69 6e 76 6f 6b 65 73 20 74 68 65 20 73 79 73 74  invokes the syst
1ab0: 65 6d 20 6c 69 62 72 61 72 79 20 69 73 6e 61 6e  em library isnan
1ac0: 28 29 0a 20 20 66 75 6e 63 74 69 6f 6e 20 74 6f  ().  function to
1ad0: 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 61 20   determine if a 
1ae0: 64 6f 75 62 6c 65 2d 70 72 65 63 69 73 69 6f 6e  double-precision
1af0: 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
1b00: 76 61 6c 75 65 20 69 73 20 61 20 4e 61 4e 2e 0a  value is a NaN..
1b10: 20 20 49 66 20 48 41 56 45 5f 49 53 4e 41 4e 20    If HAVE_ISNAN 
1b20: 69 73 20 75 6e 64 65 66 69 6e 65 64 20 6f 72 20  is undefined or 
1b30: 66 61 6c 73 65 2c 20 74 68 65 6e 20 53 51 4c 69  false, then SQLi
1b40: 74 65 20 73 75 62 73 74 69 74 75 74 65 73 20 69  te substitutes i
1b50: 74 73 20 6f 77 6e 20 68 6f 6d 65 2d 67 72 6f 77  ts own home-grow
1b60: 6e 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  n.  implementati
1b70: 6f 6e 20 6f 66 20 69 73 6e 61 6e 28 29 2e 0a 7d  on of isnan()..}
1b80: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1b90: 20 7b 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45   {HAVE_LOCALTIME
1ba0: 5f 52 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48  _R} {.  If the H
1bb0: 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f 52 20  AVE_LOCALTIME_R 
1bc0: 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20  option is true, 
1bd0: 74 68 65 6e 20 53 51 4c 69 74 65 20 75 73 65 73  then SQLite uses
1be0: 20 74 68 65 20 74 68 72 65 61 64 73 61 66 65 0a   the threadsafe.
1bf0: 20 20 6c 6f 63 61 6c 74 69 6d 65 5f 72 28 29 20    localtime_r() 
1c00: 6c 69 62 72 61 72 79 20 72 6f 75 74 69 6e 65 20  library routine 
1c10: 69 6e 73 74 65 61 64 20 6f 66 20 6c 6f 63 61 6c  instead of local
1c20: 74 69 6d 65 28 29 0a 20 20 74 6f 20 68 65 6c 70  time().  to help
1c30: 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 5b   implement the [
1c40: 6c 6f 63 61 6c 74 69 6d 65 20 6d 6f 64 69 66 69  localtime modifi
1c50: 65 72 5d 0a 20 20 74 6f 20 74 68 65 20 62 75 69  er].  to the bui
1c60: 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e 64 20  lt-in [date and 
1c70: 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d 2e  time functions].
1c80: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
1c90: 4f 4e 20 7b 48 41 56 45 5f 4c 4f 43 41 4c 54 49  ON {HAVE_LOCALTI
1ca0: 4d 45 5f 53 7d 20 7b 0a 20 20 49 66 20 74 68 65  ME_S} {.  If the
1cb0: 20 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f   HAVE_LOCALTIME_
1cc0: 53 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65  S option is true
1cd0: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 75 73  , then SQLite us
1ce0: 65 73 20 74 68 65 20 74 68 72 65 61 64 73 61 66  es the threadsaf
1cf0: 65 0a 20 20 6c 6f 63 61 6c 74 69 6d 65 5f 73 28  e.  localtime_s(
1d00: 29 20 6c 69 62 72 61 72 79 20 72 6f 75 74 69 6e  ) library routin
1d10: 65 20 69 6e 73 74 65 61 64 20 6f 66 20 6c 6f 63  e instead of loc
1d20: 61 6c 74 69 6d 65 28 29 0a 20 20 74 6f 20 68 65  altime().  to he
1d30: 6c 70 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65  lp implement the
1d40: 20 5b 6c 6f 63 61 6c 74 69 6d 65 20 6d 6f 64 69   [localtime modi
1d50: 66 69 65 72 5d 0a 20 20 74 6f 20 74 68 65 20 62  fier].  to the b
1d60: 75 69 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e  uilt-in [date an
1d70: 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73  d time functions
1d80: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
1d90: 54 49 4f 4e 20 7b 48 41 56 45 5f 4d 41 4c 4c 4f  TION {HAVE_MALLO
1da0: 43 5f 55 53 41 42 4c 45 5f 53 49 5a 45 7d 20 7b  C_USABLE_SIZE} {
1db0: 0a 20 20 49 66 20 74 68 65 20 48 41 56 45 5f 4d  .  If the HAVE_M
1dc0: 41 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f 53 49 5a  ALLOC_USABLE_SIZ
1dd0: 45 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65  E option is true
1de0: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 74 72  , then SQLite tr
1df0: 69 65 73 20 75 73 65 73 20 74 68 65 0a 20 20 6d  ies uses the.  m
1e00: 61 6c 6c 6f 63 5f 75 73 61 62 6c 65 5f 73 69 7a  alloc_usable_siz
1e10: 65 28 29 20 69 6e 74 65 72 66 61 63 65 20 74 6f  e() interface to
1e20: 20 66 69 6e 64 20 74 68 65 20 73 69 7a 65 20 6f   find the size o
1e30: 66 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  f a memory alloc
1e40: 61 74 69 6f 6e 20 6f 62 74 61 69 6e 65 64 0a 20  ation obtained. 
1e50: 20 66 72 6f 6d 20 74 68 65 20 73 74 61 6e 64 61   from the standa
1e60: 72 64 2d 6c 69 62 72 61 72 79 20 6d 61 6c 6c 6f  rd-library mallo
1e70: 63 28 29 20 6f 72 20 72 65 61 6c 6c 6f 63 28 29  c() or realloc()
1e80: 20 72 6f 75 74 69 6e 65 73 2e 20 20 54 68 69 73   routines.  This
1e90: 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 0a   option is only.
1ea0: 20 20 61 70 70 6c 69 63 61 62 6c 65 20 69 66 20    applicable if 
1eb0: 74 68 65 20 73 74 61 6e 64 61 72 64 2d 6c 69 62  the standard-lib
1ec0: 72 61 72 79 20 6d 61 6c 6c 6f 63 28 29 20 69 73  rary malloc() is
1ed0: 20 75 73 65 64 2e 20 20 4f 6e 20 41 70 70 6c 65   used.  On Apple
1ee0: 20 73 79 73 74 65 6d 73 2c 0a 20 20 22 7a 6f 6e   systems,.  "zon
1ef0: 65 20 6d 61 6c 6c 6f 63 22 20 69 73 20 75 73 65  e malloc" is use
1f00: 64 20 69 6e 73 74 65 61 64 2c 20 61 6e 64 20 73  d instead, and s
1f10: 6f 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  o this option is
1f20: 20 6e 6f 74 20 61 70 70 6c 69 63 61 62 6c 65 2e   not applicable.
1f30: 20 20 41 6e 64 2c 20 6f 66 0a 20 20 63 6f 75 72    And, of.  cour
1f40: 73 65 2c 20 69 66 20 74 68 65 20 61 70 70 6c 69  se, if the appli
1f50: 63 61 74 69 6f 6e 20 73 75 70 70 6c 69 65 73 20  cation supplies 
1f60: 69 74 73 20 6f 77 6e 20 6d 61 6c 6c 6f 63 20 69  its own malloc i
1f70: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 75 73  mplementation us
1f80: 69 6e 67 0a 20 20 5b 53 51 4c 49 54 45 5f 43 4f  ing.  [SQLITE_CO
1f90: 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 20 74 68 65  NFIG_MALLOC] the
1fa0: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 68 61  n this option ha
1fb0: 73 20 6e 6f 20 65 66 66 65 63 74 2e 0a 20 20 3c  s no effect..  <
1fc0: 70 3e 0a 20 20 49 66 20 74 68 65 20 48 41 56 45  p>.  If the HAVE
1fd0: 5f 4d 41 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f 53  _MALLOC_USABLE_S
1fe0: 49 5a 45 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6d  IZE option is om
1ff0: 69 74 74 65 64 20 6f 72 20 69 73 20 66 61 6c 73  itted or is fals
2000: 65 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 0a  e, then SQLite .
2010: 20 20 75 73 65 73 20 61 20 77 72 61 70 70 65 72    uses a wrapper
2020: 20 61 72 6f 75 6e 64 20 73 79 73 74 65 6d 20 6d   around system m
2030: 61 6c 6c 6f 63 28 29 20 61 6e 64 20 72 65 61 6c  alloc() and real
2040: 6c 6f 63 28 29 20 74 68 61 74 20 65 6e 6c 61 72  loc() that enlar
2050: 67 65 73 20 65 61 63 68 20 61 6c 6c 6f 63 61 74  ges each allocat
2060: 69 6f 6e 0a 20 20 62 79 20 38 20 62 79 74 65 73  ion.  by 8 bytes
2070: 20 61 6e 64 20 77 72 69 74 65 73 20 74 68 65 20   and writes the 
2080: 73 69 7a 65 20 6f 66 20 74 68 65 20 61 6c 6c 6f  size of the allo
2090: 63 61 74 69 6f 6e 20 69 6e 20 74 68 65 20 69 6e  cation in the in
20a0: 69 74 69 61 6c 20 38 20 62 79 74 65 73 2c 20 61  itial 8 bytes, a
20b0: 6e 64 0a 20 20 74 68 65 6e 20 53 51 4c 69 74 65  nd.  then SQLite
20c0: 20 61 6c 73 6f 20 69 6d 70 6c 65 6d 65 6e 74 73   also implements
20d0: 20 69 74 73 20 6f 77 6e 20 68 6f 6d 65 2d 67 72   its own home-gr
20e0: 6f 77 6e 20 76 65 72 73 69 6f 6e 20 6f 66 20 6d  own version of m
20f0: 61 6c 6c 6f 63 5f 75 73 61 62 6c 65 5f 73 69 7a  alloc_usable_siz
2100: 65 28 29 0a 20 20 74 68 61 74 20 63 6f 6e 73 75  e().  that consu
2110: 6c 74 73 20 74 68 61 74 20 38 2d 62 79 74 65 20  lts that 8-byte 
2120: 70 72 65 66 69 78 20 74 6f 20 66 69 6e 64 20 74  prefix to find t
2130: 68 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69  he allocation si
2140: 7a 65 2e 20 20 54 68 69 73 20 61 70 70 72 6f 61  ze.  This approa
2150: 63 68 0a 20 20 77 6f 72 6b 73 20 62 75 74 20 69  ch.  works but i
2160: 74 20 69 73 20 73 75 62 6f 70 74 69 6d 61 6c 2e  t is suboptimal.
2170: 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 61    Applications a
2180: 72 65 20 65 6e 63 6f 75 72 61 67 65 64 20 74 6f  re encouraged to
2190: 20 75 73 65 0a 20 20 48 41 56 45 5f 4d 41 4c 4c   use.  HAVE_MALL
21a0: 4f 43 5f 55 53 41 42 4c 45 5f 53 49 5a 45 20 77  OC_USABLE_SIZE w
21b0: 68 65 6e 65 76 65 72 20 70 6f 73 73 69 62 6c 65  henever possible
21c0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
21d0: 49 4f 4e 20 7b 48 41 56 45 5f 53 54 52 43 48 52  ION {HAVE_STRCHR
21e0: 4e 55 4c 7d 20 7b 0a 20 20 49 66 20 74 68 65 20  NUL} {.  If the 
21f0: 48 41 56 45 5f 53 54 52 43 48 52 4e 55 4c 20 6f  HAVE_STRCHRNUL o
2200: 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20 74  ption is true, t
2210: 68 65 6e 20 53 51 4c 69 74 65 20 75 73 65 73 20  hen SQLite uses 
2220: 74 68 65 20 73 74 72 63 68 72 6e 75 6c 28 29 20  the strchrnul() 
2230: 6c 69 62 72 61 72 79 0a 20 20 66 75 6e 63 74 69  library.  functi
2240: 6f 6e 2e 20 20 49 66 20 74 68 69 73 20 6f 70 74  on.  If this opt
2250: 69 6f 6e 20 69 73 20 6d 69 73 73 69 6e 67 20 6f  ion is missing o
2260: 72 20 66 61 6c 73 65 2c 20 74 68 65 6e 20 53 51  r false, then SQ
2270: 4c 69 74 65 20 73 75 62 73 74 69 74 75 74 65 73  Lite substitutes
2280: 20 69 74 73 20 6f 77 6e 0a 20 20 68 6f 6d 65 2d   its own.  home-
2290: 67 72 6f 77 6e 20 69 6d 70 6c 65 6d 65 6e 74 61  grown implementa
22a0: 74 69 6f 6e 20 6f 66 20 73 74 72 63 68 72 6e 75  tion of strchrnu
22b0: 6c 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  l()..}..COMPILE_
22c0: 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f 55 53 4c  OPTION {HAVE_USL
22d0: 45 45 50 7d 20 7b 0a 20 20 49 66 20 74 68 65 20  EEP} {.  If the 
22e0: 48 41 56 45 5f 55 53 4c 45 45 50 20 6f 70 74 69  HAVE_USLEEP opti
22f0: 6f 6e 20 69 73 20 74 72 75 65 2c 20 74 68 65 6e  on is true, then
2300: 20 74 68 65 20 64 65 66 61 75 6c 74 20 75 6e 69   the default uni
2310: 78 20 56 46 53 20 75 73 65 73 20 74 68 65 0a 20  x VFS uses the. 
2320: 20 75 73 6c 65 65 70 28 29 20 73 79 73 74 65 6d   usleep() system
2330: 20 63 61 6c 6c 20 74 6f 20 69 6d 70 6c 65 6d 65   call to impleme
2340: 6e 74 20 74 68 65 20 78 53 6c 65 65 70 20 6d 65  nt the xSleep me
2350: 74 68 6f 64 2e 20 20 49 66 20 74 68 69 73 20 6f  thod.  If this o
2360: 70 74 69 6f 6e 20 69 73 0a 20 20 75 6e 64 65 66  ption is.  undef
2370: 69 6e 65 64 20 6f 72 20 66 61 6c 73 65 2c 20 74  ined or false, t
2380: 68 65 6e 20 78 53 6c 65 65 70 20 6f 6e 20 75 6e  hen xSleep on un
2390: 69 78 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65  ix is implemente
23a0: 64 20 75 73 69 6e 67 20 73 6c 65 65 70 28 29 20  d using sleep() 
23b0: 77 68 69 63 68 0a 20 20 6d 65 61 6e 73 20 74 68  which.  means th
23c0: 61 74 20 5b 73 71 6c 69 74 65 33 5f 73 6c 65 65  at [sqlite3_slee
23d0: 70 28 29 5d 20 77 69 6c 6c 20 68 61 76 65 20 61  p()] will have a
23e0: 20 6d 69 6e 69 6d 75 6d 20 77 61 69 74 20 69 6e   minimum wait in
23f0: 74 65 72 76 61 6c 20 6f 66 20 31 30 30 30 0a 20  terval of 1000. 
2400: 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 72 65   milliseconds re
2410: 67 61 72 64 6c 65 73 73 20 6f 66 20 69 74 73 20  gardless of its 
2420: 61 72 67 75 6d 65 6e 74 2e 20 20 0a 7d 0a 0a 43  argument.  .}..C
2430: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48  OMPILE_OPTION {H
2440: 41 56 45 5f 55 54 49 4d 45 7d 20 7b 0a 20 20 49  AVE_UTIME} {.  I
2450: 66 20 74 68 65 20 48 41 56 45 5f 55 54 49 4d 45  f the HAVE_UTIME
2460: 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c   option is true,
2470: 20 74 68 65 6e 20 74 68 65 20 62 75 69 6c 74 2d   then the built-
2480: 69 6e 20 62 75 74 20 6e 6f 6e 2d 73 74 61 6e 64  in but non-stand
2490: 61 72 64 0a 20 20 22 75 6e 69 78 2d 64 6f 74 66  ard.  "unix-dotf
24a0: 69 6c 65 22 20 56 46 53 20 77 69 6c 6c 20 75 73  ile" VFS will us
24b0: 65 20 74 68 65 20 75 74 69 6d 65 28 29 20 73 79  e the utime() sy
24c0: 73 74 65 6d 20 63 61 6c 6c 2c 20 69 6e 73 74 65  stem call, inste
24d0: 61 64 20 6f 66 20 75 74 69 6d 65 73 28 29 2c 0a  ad of utimes(),.
24e0: 20 20 74 6f 20 73 65 74 20 74 68 65 20 6c 61 73    to set the las
24f0: 74 20 61 63 63 65 73 73 20 74 69 6d 65 20 6f 6e  t access time on
2500: 20 74 68 65 20 6c 6f 63 6b 20 66 69 6c 65 2e 0a   the lock file..
2510: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
2520: 4e 20 7b 53 51 4c 49 54 45 5f 42 59 54 45 4f 52  N {SQLITE_BYTEOR
2530: 44 45 52 3d 3c 69 3e 28 30 7c 31 32 33 34 7c 34  DER=<i>(0|1234|4
2540: 33 32 31 29 3c 2f 69 3e 7d 20 7b 0a 20 20 53 51  321)</i>} {.  SQ
2550: 4c 69 74 65 20 6e 65 65 64 73 20 74 6f 20 6b 6e  Lite needs to kn
2560: 6f 77 20 69 66 20 74 68 65 20 6e 61 74 69 76 65  ow if the native
2570: 20 62 79 74 65 20 6f 72 64 65 72 20 6f 66 20 74   byte order of t
2580: 68 65 20 74 61 72 67 65 74 20 43 50 55 20 69 73  he target CPU is
2590: 0a 20 20 62 69 67 2d 65 6e 64 69 61 6e 20 6f 72  .  big-endian or
25a0: 20 6c 69 74 74 6c 65 2d 65 6e 64 69 6e 67 2e 20   little-ending. 
25b0: 20 54 68 65 20 53 51 4c 49 54 45 5f 42 59 54 45   The SQLITE_BYTE
25c0: 4f 52 44 45 52 20 70 72 65 70 72 6f 63 65 73 73  ORDER preprocess
25d0: 6f 72 20 69 73 20 73 65 74 0a 20 20 74 6f 20 34  or is set.  to 4
25e0: 33 32 31 20 66 6f 72 20 62 69 67 2d 65 6e 64 69  321 for big-endi
25f0: 61 6e 20 6d 61 63 68 69 6e 65 73 20 61 6e 64 20  an machines and 
2600: 31 32 33 34 20 66 6f 72 20 6c 69 74 74 6c 65 2d  1234 for little-
2610: 65 6e 64 69 61 6e 20 6d 61 63 68 69 6e 65 73 2c  endian machines,
2620: 20 6f 72 0a 20 20 69 74 20 63 61 6e 20 62 65 20   or.  it can be 
2630: 30 20 74 6f 20 6d 65 61 6e 20 74 68 61 74 20 74  0 to mean that t
2640: 68 65 20 62 79 74 65 20 6f 72 64 65 72 20 6d 75  he byte order mu
2650: 73 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  st be determined
2660: 20 61 74 20 72 75 6e 2d 74 69 6d 65 2e 0a 20 20   at run-time..  
2670: 54 68 65 72 65 20 61 72 65 20 23 69 66 64 65 66  There are #ifdef
2680: 73 20 69 6e 20 74 68 65 20 63 6f 64 65 20 74 68  s in the code th
2690: 61 74 20 73 65 74 20 53 51 4c 49 54 45 5f 42 59  at set SQLITE_BY
26a0: 54 45 4f 52 44 45 52 20 61 75 74 6f 6d 61 74 69  TEORDER automati
26b0: 63 61 6c 6c 79 0a 20 20 66 6f 72 20 61 6c 6c 20  cally.  for all 
26c0: 63 6f 6d 6d 6f 6e 20 70 6c 61 74 66 6f 72 6d 73  common platforms
26d0: 20 61 6e 64 20 63 6f 6d 70 69 6c 65 72 73 2e 20   and compilers. 
26e0: 20 48 6f 77 65 76 65 72 2c 20 69 74 20 6d 61 79   However, it may
26f0: 20 62 65 20 61 64 76 61 6e 74 61 67 65 6f 75 73   be advantageous
2700: 0a 20 20 74 6f 20 73 65 74 20 53 51 4c 49 54 45  .  to set SQLITE
2710: 5f 42 59 54 45 4f 52 44 45 52 20 61 70 70 72 6f  _BYTEORDER appro
2720: 70 72 69 61 74 65 6c 79 20 77 68 65 6e 20 63 6f  priately when co
2730: 6d 70 69 6c 69 6e 67 20 53 51 4c 69 74 65 20 66  mpiling SQLite f
2740: 6f 72 20 6f 62 73 63 75 72 65 0a 20 20 74 61 72  or obscure.  tar
2750: 67 65 74 73 2e 20 20 49 66 20 74 68 65 20 74 61  gets.  If the ta
2760: 72 67 65 74 20 62 79 74 65 20 6f 72 64 65 72 20  rget byte order 
2770: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
2780: 69 6e 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d  ined at compile-
2790: 74 69 6d 65 2c 0a 20 20 74 68 65 6e 20 53 51 4c  time,.  then SQL
27a0: 69 74 65 20 66 61 6c 6c 73 20 62 61 63 6b 20 74  ite falls back t
27b0: 6f 20 64 6f 69 6e 67 20 72 75 6e 2d 74 69 6d 65  o doing run-time
27c0: 20 63 68 65 63 6b 73 2c 20 77 68 69 63 68 20 61   checks, which a
27d0: 6c 77 61 79 73 20 77 6f 72 6b 2c 20 74 68 6f 75  lways work, thou
27e0: 67 68 0a 20 20 77 69 74 68 20 61 20 73 6d 61 6c  gh.  with a smal
27f0: 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65  l performance pe
2800: 6e 61 6c 74 79 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a  nalty..}.</tcl>.
2810: 0a 3c 61 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c  .<a name="defaul
2820: 74 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 4f 70  ts"></a>.<h1> Op
2830: 74 69 6f 6e 73 20 54 6f 20 53 65 74 20 44 65 66  tions To Set Def
2840: 61 75 6c 74 20 50 61 72 61 6d 65 74 65 72 20 56  ault Parameter V
2850: 61 6c 75 65 73 3c 2f 68 31 3e 0a 0a 3c 74 63 6c  alues</h1>..<tcl
2860: 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  >..COMPILE_OPTIO
2870: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
2880: 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45  T_AUTOMATIC_INDE
2890: 58 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26  X=<i>&lt;0 or 1&
28a0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
28b0: 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e  s macro determin
28c0: 65 73 20 74 68 65 20 69 6e 69 74 69 61 6c 20 73  es the initial s
28d0: 65 74 74 69 6e 67 20 66 6f 72 20 5b 50 52 41 47  etting for [PRAG
28e0: 4d 41 20 61 75 74 6f 6d 61 74 69 63 5f 69 6e 64  MA automatic_ind
28f0: 65 78 5d 0a 20 20 66 6f 72 20 6e 65 77 6c 79 20  ex].  for newly 
2900: 6f 70 65 6e 65 64 20 5b 64 61 74 61 62 61 73 65  opened [database
2910: 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 2e 0a 20   connections].. 
2920: 20 46 6f 72 20 61 6c 6c 20 76 65 72 73 69 6f 6e   For all version
2930: 73 20 6f 66 20 53 51 4c 69 74 65 20 74 68 72 6f  s of SQLite thro
2940: 75 67 68 20 33 2e 37 2e 31 37 2c 0a 20 20 61 75  ugh 3.7.17,.  au
2950: 74 6f 6d 61 74 69 63 20 69 6e 64 69 63 65 73 20  tomatic indices 
2960: 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 65 6e 61  are normally ena
2970: 62 6c 65 64 20 66 6f 72 20 6e 65 77 20 64 61 74  bled for new dat
2980: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2990: 73 20 69 66 0a 20 20 74 68 69 73 20 63 6f 6d 70  s if.  this comp
29a0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
29b0: 69 73 20 6f 6d 69 74 74 65 64 2e 0a 20 20 48 6f  is omitted..  Ho
29c0: 77 65 76 65 72 2c 20 74 68 61 74 20 6d 69 67 68  wever, that migh
29d0: 74 20 63 68 61 6e 67 65 20 69 6e 20 66 75 74 75  t change in futu
29e0: 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53  re releases of S
29f0: 51 4c 69 74 65 2e 0a 20 20 3c 70 3e 53 65 65 20  QLite..  <p>See 
2a00: 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 4f 4d  also: [SQLITE_OM
2a10: 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44  IT_AUTOMATIC_IND
2a20: 45 58 5d 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  EX].}..COMPILE_O
2a30: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
2a40: 46 41 55 4c 54 5f 41 55 54 4f 56 41 43 55 55 4d  FAULT_AUTOVACUUM
2a50: 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 20 6f  =<i>&lt;0 or 1 o
2a60: 72 20 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20  r 2&gt;</i>} {. 
2a70: 20 54 68 69 73 20 6d 61 63 72 6f 20 64 65 74 65   This macro dete
2a80: 72 6d 69 6e 65 73 20 69 66 20 53 51 4c 69 74 65  rmines if SQLite
2a90: 20 63 72 65 61 74 65 73 20 64 61 74 61 62 61 73   creates databas
2aa0: 65 73 20 77 69 74 68 20 74 68 65 20 0a 20 20 5b  es with the .  [
2ab0: 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 66 6c 61  auto_vacuum] fla
2ac0: 67 20 73 65 74 20 62 79 20 64 65 66 61 75 6c 74  g set by default
2ad0: 20 74 6f 20 4f 46 46 20 28 30 29 2c 20 46 55 4c   to OFF (0), FUL
2ae0: 4c 20 28 31 29 2c 20 6f 72 0a 20 20 49 4e 43 52  L (1), or.  INCR
2af0: 45 4d 45 4e 54 41 4c 20 28 32 29 2e 20 54 68 65  EMENTAL (2). The
2b00: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69   default value i
2b10: 73 20 30 20 6d 65 61 6e 69 6e 67 20 74 68 61 74  s 0 meaning that
2b20: 20 64 61 74 61 62 61 73 65 73 0a 20 20 61 72 65   databases.  are
2b30: 20 63 72 65 61 74 65 64 20 77 69 74 68 20 61 75   created with au
2b40: 74 6f 2d 76 61 63 75 75 6d 20 74 75 72 6e 65 64  to-vacuum turned
2b50: 20 6f 66 66 2e 0a 20 20 49 6e 20 61 6e 79 20 63   off..  In any c
2b60: 61 73 65 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d  ase the compile-
2b70: 74 69 6d 65 20 64 65 66 61 75 6c 74 20 6d 61 79  time default may
2b80: 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e 20 62   be overridden b
2b90: 79 20 74 68 65 20 0a 20 20 5b 50 52 41 47 4d 41  y the .  [PRAGMA
2ba0: 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 63 6f   auto_vacuum] co
2bb0: 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  mmand..}..COMPIL
2bc0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
2bd0: 5f 44 45 46 41 55 4c 54 5f 43 41 43 48 45 5f 53  _DEFAULT_CACHE_S
2be0: 49 5a 45 3d 3c 69 3e 26 6c 74 3b 4e 26 67 74 3b  IZE=<i>&lt;N&gt;
2bf0: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d  </i>} {.  This m
2c00: 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 64 65  acro sets the de
2c10: 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d 20 73 69  fault maximum si
2c20: 7a 65 20 6f 66 20 74 68 65 20 70 61 67 65 2d 63  ze of the page-c
2c30: 61 63 68 65 20 66 6f 72 20 65 61 63 68 20 61 74  ache for each at
2c40: 74 61 63 68 65 64 0a 20 20 64 61 74 61 62 61 73  tached.  databas
2c50: 65 2e 20 20 41 20 70 6f 73 69 74 69 76 65 20 76  e.  A positive v
2c60: 61 6c 75 65 20 6d 65 61 6e 73 20 74 68 61 74 20  alue means that 
2c70: 74 68 65 20 6c 69 6d 69 74 20 69 73 20 4e 20 70  the limit is N p
2c80: 61 67 65 2e 20 20 49 66 20 4e 20 69 73 20 6e 65  age.  If N is ne
2c90: 67 61 74 69 76 65 0a 20 20 74 68 61 74 20 6d 65  gative.  that me
2ca0: 61 6e 73 20 74 6f 20 6c 69 6d 69 74 20 74 68 65  ans to limit the
2cb0: 20 63 61 63 68 65 20 73 69 7a 65 20 74 6f 20 2d   cache size to -
2cc0: 4e 2a 31 30 32 34 20 62 79 74 65 73 2e 0a 20 20  N*1024 bytes..  
2cd0: 54 68 65 20 73 75 67 67 65 73 74 65 64 20 6d 61  The suggested ma
2ce0: 78 69 6d 75 6d 20 63 61 63 68 65 20 73 69 7a 65  ximum cache size
2cf0: 20 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64 64   can be overridd
2d00: 65 6e 20 62 79 20 74 68 65 20 0a 20 20 5b 50 52  en by the .  [PR
2d10: 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 5d  AGMA cache_size]
2d20: 20 63 6f 6d 6d 61 6e 64 2e 20 54 68 65 20 64 65   command. The de
2d30: 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 2d  fault value is -
2d40: 32 30 30 30 2c 20 77 68 69 63 68 20 74 72 61 6e  2000, which tran
2d50: 73 6c 61 74 65 73 0a 20 20 69 6e 74 6f 20 61 20  slates.  into a 
2d60: 6d 61 78 69 6d 75 6d 20 6f 66 20 32 30 34 38 30  maximum of 20480
2d70: 30 30 20 62 79 74 65 73 20 70 65 72 20 63 61 63  00 bytes per cac
2d80: 68 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  he..}..COMPILE_O
2d90: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
2da0: 46 41 55 4c 54 5f 46 49 4c 45 5f 46 4f 52 4d 41  FAULT_FILE_FORMA
2db0: 54 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 34 26  T=<i>&lt;1 or 4&
2dc0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65  gt;</i>} {.  The
2dd0: 20 64 65 66 61 75 6c 74 20 5b 73 63 68 65 6d 61   default [schema
2de0: 20 66 6f 72 6d 61 74 20 6e 75 6d 62 65 72 5d 20   format number] 
2df0: 75 73 65 64 20 62 79 20 53 51 4c 69 74 65 20 77  used by SQLite w
2e00: 68 65 6e 20 63 72 65 61 74 69 6e 67 0a 20 20 6e  hen creating.  n
2e10: 65 77 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ew database file
2e20: 73 20 69 73 20 73 65 74 20 62 79 20 74 68 69 73  s is set by this
2e30: 20 6d 61 63 72 6f 2e 20 20 54 68 65 20 73 63 68   macro.  The sch
2e40: 65 6d 61 20 66 6f 72 6d 61 74 73 20 61 72 65 20  ema formats are 
2e50: 61 6c 6c 0a 20 20 76 65 72 79 20 73 69 6d 69 6c  all.  very simil
2e60: 61 72 2e 20 20 54 68 65 20 64 69 66 66 65 72 65  ar.  The differe
2e70: 6e 63 65 20 62 65 74 77 65 65 6e 20 66 6f 72 6d  nce between form
2e80: 61 74 73 20 31 20 61 6e 64 20 34 20 69 73 20 74  ats 1 and 4 is t
2e90: 68 61 74 20 66 6f 72 6d 61 74 0a 20 20 34 20 75  hat format.  4 u
2ea0: 6e 64 65 72 73 74 61 6e 64 73 20 5b 64 65 73 63  nderstands [desc
2eb0: 65 6e 64 69 6e 67 20 69 6e 64 69 63 65 73 5d 20  ending indices] 
2ec0: 61 6e 64 20 68 61 73 20 61 20 74 69 67 68 74 65  and has a tighte
2ed0: 72 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72 0a 20  r encoding for. 
2ee0: 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 73 2e   boolean values.
2ef0: 0a 0a 20 20 41 6c 6c 20 76 65 72 73 69 6f 6e 73  ..  All versions
2f00: 20 6f 66 20 53 51 4c 69 74 65 20 73 69 6e 63 65   of SQLite since
2f10: 20 33 2e 33 2e 30 20 28 32 30 30 36 2d 30 31 2d   3.3.0 (2006-01-
2f20: 31 30 29 0a 20 20 63 61 6e 20 72 65 61 64 20 61  10).  can read a
2f30: 6e 64 20 77 72 69 74 65 20 61 6e 79 20 73 63 68  nd write any sch
2f40: 65 6d 61 20 66 6f 72 6d 61 74 0a 20 20 62 65 74  ema format.  bet
2f50: 77 65 65 6e 20 31 20 61 6e 64 20 34 2e 20 20 42  ween 1 and 4.  B
2f60: 75 74 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e  ut older version
2f70: 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68  s of SQLite migh
2f80: 74 20 6e 6f 74 20 62 65 20 61 62 6c 65 20 74 6f  t not be able to
2f90: 0a 20 20 72 65 61 64 20 66 6f 72 6d 61 74 73 20  .  read formats 
2fa0: 67 72 65 61 74 65 72 20 74 68 61 6e 20 31 2e 20  greater than 1. 
2fb0: 20 53 6f 20 74 68 61 74 20 6f 6c 64 65 72 20 76   So that older v
2fc0: 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
2fd0: 65 20 77 69 6c 6c 0a 20 20 62 65 20 61 62 6c 65  e will.  be able
2fe0: 20 74 6f 20 72 65 61 64 20 61 6e 64 20 77 72 69   to read and wri
2ff0: 74 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  te database file
3000: 73 20 63 72 65 61 74 65 64 20 62 79 20 6e 65 77  s created by new
3010: 65 72 20 76 65 72 73 69 6f 6e 73 0a 20 20 6f 66  er versions.  of
3020: 20 53 51 4c 69 74 65 2c 20 74 68 65 20 64 65 66   SQLite, the def
3030: 61 75 6c 74 20 73 63 68 65 6d 61 20 66 6f 72 6d  ault schema form
3040: 61 74 20 77 61 73 20 73 65 74 20 74 6f 20 31 20  at was set to 1 
3050: 66 6f 72 20 53 51 4c 69 74 65 20 76 65 72 73 69  for SQLite versi
3060: 6f 6e 73 0a 20 20 74 68 72 6f 75 67 68 20 33 2e  ons.  through 3.
3070: 37 2e 39 20 28 32 30 31 31 2d 31 31 2d 30 31 29  7.9 (2011-11-01)
3080: 2e 20 20 42 65 67 69 6e 6e 69 6e 67 20 77 69 74  .  Beginning wit
3090: 68 20 0a 20 20 5b 76 65 72 73 69 6f 6e 20 33 2e  h .  [version 3.
30a0: 37 2e 31 30 5d 20 28 5b 64 61 74 65 6f 66 3a 33  7.10] ([dateof:3
30b0: 2e 37 2e 31 30 5d 29 2c 20 74 68 65 20 64 65 66  .7.10]), the def
30c0: 61 75 6c 74 0a 20 20 73 63 68 65 6d 61 20 66 6f  ault.  schema fo
30d0: 72 6d 61 74 20 69 73 20 34 2e 0a 0a 20 20 54 68  rmat is 4...  Th
30e0: 65 20 73 63 68 65 6d 61 20 66 6f 72 6d 61 74 20  e schema format 
30f0: 6e 75 6d 62 65 72 20 66 6f 72 20 61 20 6e 65 77  number for a new
3100: 20 64 61 74 61 62 61 73 65 20 63 61 6e 20 62 65   database can be
3110: 20 73 65 74 20 61 74 20 72 75 6e 74 69 6d 65 20   set at runtime 
3120: 75 73 69 6e 67 0a 20 20 74 68 65 20 5b 50 52 41  using.  the [PRA
3130: 47 4d 41 20 6c 65 67 61 63 79 5f 66 69 6c 65 5f  GMA legacy_file_
3140: 66 6f 72 6d 61 74 5d 20 63 6f 6d 6d 61 6e 64 2e  format] command.
3150: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3160: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55  ON {SQLITE_DEFAU
3170: 4c 54 5f 46 49 4c 45 5f 50 45 52 4d 49 53 53 49  LT_FILE_PERMISSI
3180: 4f 4e 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a  ONS=<i>N</i>} {.
3190: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 6e 75    The default nu
31a0: 6d 65 72 69 63 20 66 69 6c 65 20 70 65 72 6d 69  meric file permi
31b0: 73 73 69 6f 6e 73 20 66 6f 72 20 6e 65 77 6c 79  ssions for newly
31c0: 20 63 72 65 61 74 65 64 20 64 61 74 61 62 61 73   created databas
31d0: 65 20 66 69 6c 65 73 0a 20 20 75 6e 64 65 72 20  e files.  under 
31e0: 75 6e 69 78 2e 20 20 49 66 20 6e 6f 74 20 73 70  unix.  If not sp
31f0: 65 63 69 66 69 65 64 2c 20 74 68 65 20 64 65 66  ecified, the def
3200: 61 75 6c 74 20 69 73 20 30 36 34 34 20 77 68 69  ault is 0644 whi
3210: 63 68 20 6d 65 61 6e 73 20 74 68 61 74 0a 20 20  ch means that.  
3220: 74 68 65 20 66 69 6c 65 73 20 69 73 20 67 6c 6f  the files is glo
3230: 62 61 6c 6c 79 20 72 65 61 64 61 62 6c 65 20 62  bally readable b
3240: 75 74 20 6f 6e 6c 79 20 77 72 69 74 61 62 6c 65  ut only writable
3250: 20 62 79 20 74 68 65 20 63 72 65 61 74 6f 72 2e   by the creator.
3260: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3270: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55  ON {SQLITE_DEFAU
3280: 4c 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 53 3d  LT_FOREIGN_KEYS=
3290: 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74  <i>&lt;0 or 1&gt
32a0: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
32b0: 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73  macro determines
32c0: 20 77 68 65 74 68 65 72 20 65 6e 66 6f 72 63 65   whether enforce
32d0: 6d 65 6e 74 20 6f 66 20 0a 20 20 5b 66 6f 72 65  ment of .  [fore
32e0: 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69  ign key constrai
32f0: 6e 74 73 5d 20 69 73 20 65 6e 61 62 6c 65 64 20  nts] is enabled 
3300: 6f 72 20 64 69 73 61 62 6c 65 64 20 62 79 20 64  or disabled by d
3310: 65 66 61 75 6c 74 20 66 6f 72 0a 20 20 6e 65 77  efault for.  new
3320: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
3330: 74 69 6f 6e 73 2e 20 20 45 61 63 68 20 64 61 74  tions.  Each dat
3340: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
3350: 20 63 61 6e 20 61 6c 77 61 79 73 20 74 75 72 6e   can always turn
3360: 0a 20 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f  .  enforcement o
3370: 66 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f  f foreign key co
3380: 6e 73 74 72 61 69 6e 74 73 20 6f 6e 20 61 6e 64  nstraints on and
3390: 20 6f 66 66 20 61 6e 64 20 72 75 6e 2d 74 69 6d   off and run-tim
33a0: 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20 5b 66  e using.  the [f
33b0: 6f 72 65 69 67 6e 5f 6b 65 79 73 20 70 72 61 67  oreign_keys prag
33c0: 6d 61 5d 2e 20 20 45 6e 66 6f 72 63 65 6d 65 6e  ma].  Enforcemen
33d0: 74 20 6f 66 20 66 6f 72 65 69 67 6e 20 6b 65 79  t of foreign key
33e0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 0a 20 20 69   constraints.  i
33f0: 73 20 6e 6f 72 6d 61 6c 6c 79 20 6f 66 66 20 62  s normally off b
3400: 79 20 64 65 66 61 75 6c 74 2c 20 62 75 74 20 69  y default, but i
3410: 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  f this compile-t
3420: 69 6d 65 20 70 61 72 61 6d 65 74 65 72 20 69 73  ime parameter is
3430: 0a 20 20 73 65 74 20 74 6f 20 31 2c 20 65 6e 66  .  set to 1, enf
3440: 6f 72 63 65 6d 65 6e 74 20 6f 66 20 66 6f 72 65  orcement of fore
3450: 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69  ign key constrai
3460: 6e 74 73 20 77 69 6c 6c 20 62 65 20 6f 6e 20 62  nts will be on b
3470: 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a 43 4f  y default..}..CO
3480: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
3490: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d 4d 41  LITE_DEFAULT_MMA
34a0: 50 5f 53 49 5a 45 3d 3c 69 3e 4e 3c 2f 69 3e 7d  P_SIZE=<i>N</i>}
34b0: 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20   {.  This macro 
34c0: 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74  sets the default
34d0: 20 6c 69 6d 69 74 20 6f 6e 20 74 68 65 20 61 6d   limit on the am
34e0: 6f 75 6e 74 20 6f 66 20 6d 65 6d 6f 72 79 20 74  ount of memory t
34f0: 68 61 74 0a 20 20 77 69 6c 6c 20 62 65 20 75 73  hat.  will be us
3500: 65 64 20 66 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61  ed for memory-ma
3510: 70 70 65 64 20 49 2f 4f 0a 20 20 66 6f 72 20 65  pped I/O.  for e
3520: 61 63 68 20 6f 70 65 6e 20 64 61 74 61 62 61 73  ach open databas
3530: 65 20 66 69 6c 65 2e 20 20 49 66 20 74 68 65 20  e file.  If the 
3540: 3c 69 3e 4e 3c 2f 69 3e 0a 20 20 69 73 20 7a 65  <i>N</i>.  is ze
3550: 72 6f 2c 20 74 68 65 6e 20 6d 65 6d 6f 72 79 20  ro, then memory 
3560: 6d 61 70 70 65 64 20 49 2f 4f 20 69 73 20 64 69  mapped I/O is di
3570: 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c  sabled by defaul
3580: 74 2e 20 20 54 68 69 73 0a 20 20 63 6f 6d 70 69  t.  This.  compi
3590: 6c 65 2d 74 69 6d 65 20 6c 69 6d 69 74 20 61 6e  le-time limit an
35a0: 64 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4d 41  d the [SQLITE_MA
35b0: 58 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 63 61 6e  X_MMAP_SIZE] can
35c0: 20 62 65 20 6d 6f 64 69 66 69 65 64 20 0a 20 20   be modified .  
35d0: 61 74 20 73 74 61 72 74 2d 74 69 6d 65 20 75 73  at start-time us
35e0: 69 6e 67 20 74 68 65 0a 20 20 5b 73 71 6c 69 74  ing the.  [sqlit
35f0: 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49  e3_config]([SQLI
3600: 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53  TE_CONFIG_MMAP_S
3610: 49 5a 45 5d 29 20 63 61 6c 6c 2c 20 6f 72 20 61  IZE]) call, or a
3620: 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20 75 73 69  t run-time.  usi
3630: 6e 67 20 74 68 65 20 5b 6d 6d 61 70 5f 73 69 7a  ng the [mmap_siz
3640: 65 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f  e pragma]..}..CO
3650: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
3660: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4a 4f 55  LITE_DEFAULT_JOU
3670: 52 4e 41 4c 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d  RNAL_SIZE_LIMIT=
3680: 3c 69 3e 26 6c 74 3b 62 79 74 65 73 26 67 74 3b  <i>&lt;bytes&gt;
3690: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  </i>} {.  This o
36a0: 70 74 69 6f 6e 20 73 65 74 73 20 74 68 65 20 73  ption sets the s
36b0: 69 7a 65 20 6c 69 6d 69 74 20 6f 6e 20 5b 72 6f  ize limit on [ro
36c0: 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20  llback journal] 
36d0: 66 69 6c 65 73 20 69 6e 0a 20 20 5b 6a 6f 75 72  files in.  [jour
36e0: 6e 61 6c 5f 6d 6f 64 65 20 70 72 61 67 6d 61 20  nal_mode pragma 
36f0: 7c 20 70 65 72 73 69 73 74 65 6e 74 20 6a 6f 75  | persistent jou
3700: 72 6e 61 6c 20 6d 6f 64 65 5d 20 61 6e 64 0a 20  rnal mode] and. 
3710: 20 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 20 7c   [locking_mode |
3720: 20 65 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b 69   exclusive locki
3730: 6e 67 20 6d 6f 64 65 5d 20 61 6e 64 20 6f 6e 20  ng mode] and on 
3740: 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 0a  the size of the.
3750: 20 20 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f    write-ahead lo
3760: 67 20 66 69 6c 65 20 69 6e 20 5b 57 41 4c 20 6d  g file in [WAL m
3770: 6f 64 65 5d 2e 20 57 68 65 6e 20 74 68 69 73 20  ode]. When this 
3780: 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  .  compile-time 
3790: 6f 70 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65  option is omitte
37a0: 64 20 74 68 65 72 65 20 69 73 20 6e 6f 20 75 70  d there is no up
37b0: 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65  per bound on the
37c0: 0a 20 20 73 69 7a 65 20 6f 66 20 74 68 65 20 72  .  size of the r
37d0: 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 73  ollback journals
37e0: 20 6f 72 20 77 72 69 74 65 2d 61 68 65 61 64 20   or write-ahead 
37f0: 6c 6f 67 73 2e 20 20 0a 20 20 54 68 65 20 6a 6f  logs.  .  The jo
3800: 75 72 6e 61 6c 20 66 69 6c 65 20 73 69 7a 65 20  urnal file size 
3810: 6c 69 6d 69 74 0a 20 20 63 61 6e 20 62 65 20 63  limit.  can be c
3820: 68 61 6e 67 65 64 20 61 74 20 72 75 6e 2d 74 69  hanged at run-ti
3830: 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b 6a 6f  me using the [jo
3840: 75 72 6e 61 6c 5f 73 69 7a 65 5f 6c 69 6d 69 74  urnal_size_limit
3850: 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d   pragma]..}..COM
3860: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
3870: 49 54 45 5f 44 45 46 41 55 4c 54 5f 4c 4f 43 4b  ITE_DEFAULT_LOCK
3880: 49 4e 47 5f 4d 4f 44 45 3d 3c 69 3e 26 6c 74 3b  ING_MODE=<i>&lt;
3890: 31 20 6f 72 20 30 26 67 74 3b 3c 2f 69 3e 7d 20  1 or 0&gt;</i>} 
38a0: 7b 0a 20 20 49 66 20 73 65 74 20 74 6f 20 31 2c  {.  If set to 1,
38b0: 20 74 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c   then the defaul
38c0: 74 20 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 5d  t [locking_mode]
38d0: 20 69 73 20 73 65 74 20 74 6f 20 45 58 43 4c 55   is set to EXCLU
38e0: 53 49 56 45 2e 0a 20 20 49 66 20 6f 6d 69 74 74  SIVE..  If omitt
38f0: 65 64 20 6f 72 20 73 65 74 20 74 6f 20 30 20 74  ed or set to 0 t
3900: 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20  hen the default 
3910: 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 5d 20 69  [locking_mode] i
3920: 73 20 4e 4f 52 4d 41 4c 2e 0a 7d 0a 0a 43 4f 4d  s NORMAL..}..COM
3930: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
3940: 49 54 45 5f 44 45 46 41 55 4c 54 5f 4c 4f 4f 4b  ITE_DEFAULT_LOOK
3950: 41 53 49 44 45 3d 3c 69 3e 53 5a 2c 4e 3c 2f 69  ASIDE=<i>SZ,N</i
3960: 3e 7d 20 7b 0a 20 20 53 65 74 73 20 74 68 65 20  >} {.  Sets the 
3970: 64 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20  default size of 
3980: 74 68 65 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d  the [lookaside m
3990: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d  emory allocator]
39a0: 20 6d 65 6d 6f 72 79 20 70 6f 6f 6c 0a 20 20 74   memory pool.  t
39b0: 6f 20 4e 20 65 6e 74 72 69 65 73 20 6f 66 20 53  o N entries of S
39c0: 5a 20 62 79 74 65 73 20 65 61 63 68 2e 20 20 54  Z bytes each.  T
39d0: 68 69 73 20 73 65 74 74 69 6e 67 20 63 61 6e 20  his setting can 
39e0: 62 65 20 6d 6f 64 69 66 69 65 64 20 61 74 0a 20  be modified at. 
39f0: 20 73 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e   start-time usin
3a00: 67 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  g [sqlite3_confi
3a10: 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  g]([SQLITE_CONFI
3a20: 47 5f 4c 4f 4f 4b 41 53 49 44 45 5d 29 20 61 6e  G_LOOKASIDE]) an
3a30: 64 2f 6f 72 0a 20 20 61 73 20 65 61 63 68 20 5b  d/or.  as each [
3a40: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
3a50: 69 6f 6e 5d 20 69 73 20 6f 70 65 6e 65 64 20 75  ion] is opened u
3a60: 73 69 6e 67 0a 20 20 5b 73 71 6c 69 74 65 33 5f  sing.  [sqlite3_
3a70: 64 62 5f 63 6f 6e 66 69 67 5d 28 64 62 2c 20 5b  db_config](db, [
3a80: 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
3a90: 4c 4f 4f 4b 41 53 49 44 45 5d 29 2e 0a 7d 0a 0a  LOOKASIDE])..}..
3aa0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
3ab0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d  SQLITE_DEFAULT_M
3ac0: 45 4d 53 54 41 54 55 53 3d 3c 69 3e 26 6c 74 3b  EMSTATUS=<i>&lt;
3ad0: 31 20 6f 72 20 30 26 67 74 3b 3c 2f 69 3e 7d 20  1 or 0&gt;</i>} 
3ae0: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69  {.  This macro i
3af0: 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d  s used to determ
3b00: 69 6e 65 20 77 68 65 74 68 65 72 20 6f 72 20 6e  ine whether or n
3b10: 6f 74 20 74 68 65 20 66 65 61 74 75 72 65 73 20  ot the features 
3b20: 65 6e 61 62 6c 65 64 20 61 6e 64 0a 20 20 64 69  enabled and.  di
3b30: 73 61 62 6c 65 64 20 75 73 69 6e 67 20 74 68 65  sabled using the
3b40: 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d   SQLITE_CONFIG_M
3b50: 45 4d 53 54 41 54 55 53 20 61 72 67 75 6d 65 6e  EMSTATUS argumen
3b60: 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f  t to [sqlite3_co
3b70: 6e 66 69 67 28 29 5d 0a 20 20 61 72 65 20 61 76  nfig()].  are av
3b80: 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61 75  ailable by defau
3b90: 6c 74 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20  lt. The default 
3ba0: 76 61 6c 75 65 20 69 73 20 31 20 28 5b 53 51 4c  value is 1 ([SQL
3bb0: 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54  ITE_CONFIG_MEMST
3bc0: 41 54 55 53 5d 0a 20 20 72 65 6c 61 74 65 64 20  ATUS].  related 
3bd0: 66 65 61 74 75 72 65 73 20 65 6e 61 62 6c 65 64  features enabled
3be0: 29 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 65 20 5b  )..  <p>.  The [
3bf0: 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75  sqlite3_memory_u
3c00: 73 65 64 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69  sed()] and [sqli
3c10: 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
3c20: 61 74 65 72 28 29 5d 20 69 6e 74 65 72 66 61 63  ater()] interfac
3c30: 65 73 2c 0a 20 20 74 68 65 20 5b 73 71 6c 69 74  es,.  the [sqlit
3c40: 65 33 5f 73 74 61 74 75 73 36 34 5d 28 5b 53 51  e3_status64]([SQ
3c50: 4c 49 54 45 5f 53 54 41 54 55 53 5f 4d 45 4d 4f  LITE_STATUS_MEMO
3c60: 52 59 5f 55 53 45 44 5d 29 20 69 6e 74 65 72 66  RY_USED]) interf
3c70: 61 63 65 2c 0a 20 20 61 6e 64 20 74 68 65 20 5b  ace,.  and the [
3c80: 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 45 4d 4f 52  SQLITE_MAX_MEMOR
3c90: 59 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  Y] compile-time 
3ca0: 6f 70 74 69 6f 6e 20 61 72 65 20 61 6c 6c 20 6e  option are all n
3cb0: 6f 6e 2d 66 75 6e 63 74 69 6f 6e 61 6c 0a 20 20  on-functional.  
3cc0: 77 68 65 6e 20 6d 65 6d 6f 72 79 20 75 73 61 67  when memory usag
3cd0: 65 20 74 72 61 63 6b 69 6e 67 20 69 73 20 64 69  e tracking is di
3ce0: 73 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  sabled..}..COMPI
3cf0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
3d00: 45 5f 44 45 46 41 55 4c 54 5f 50 43 41 43 48 45  E_DEFAULT_PCACHE
3d10: 5f 49 4e 49 54 53 5a 3d 3c 69 3e 4e 3c 2f 69 3e  _INITSZ=<i>N</i>
3d20: 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
3d30: 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   determines the 
3d40: 6e 75 6d 62 65 72 20 6f 66 20 70 61 67 65 73 20  number of pages 
3d50: 69 6e 69 74 69 61 6c 6c 79 20 61 6c 6c 6f 63 61  initially alloca
3d60: 74 65 64 20 62 79 20 74 68 65 20 0a 20 20 70 61  ted by the .  pa
3d70: 67 65 20 63 61 63 68 65 20 6d 6f 64 75 6c 65 20  ge cache module 
3d80: 77 68 65 6e 20 5b 53 51 4c 49 54 45 5f 43 4f 4e  when [SQLITE_CON
3d90: 46 49 47 5f 50 41 47 45 43 41 43 48 45 5d 20 63  FIG_PAGECACHE] c
3da0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74  onfiguration opt
3db0: 69 6f 6e 20 69 73 0a 20 20 6e 6f 74 20 75 73 65  ion is.  not use
3dc0: 20 61 6e 64 20 6d 65 6d 6f 72 79 20 66 6f 72 20   and memory for 
3dd0: 74 68 65 20 70 61 67 65 20 63 61 63 68 65 20 69  the page cache i
3de0: 73 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  s obtained from 
3df0: 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  [sqlite3_malloc(
3e00: 29 5d 0a 20 20 69 6e 73 74 65 61 64 2e 20 20 54  )].  instead.  T
3e10: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 67  he number of pag
3e20: 65 73 20 73 65 74 20 62 79 20 74 68 69 73 20 6d  es set by this m
3e30: 61 63 72 6f 20 61 72 65 20 61 6c 6c 6f 63 61 74  acro are allocat
3e40: 65 64 20 69 6e 20 61 20 73 69 6e 67 6c 65 0a 20  ed in a single. 
3e50: 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 77 68 69   allocation, whi
3e60: 63 68 20 72 65 64 75 63 65 73 20 74 68 65 20 6c  ch reduces the l
3e70: 6f 61 64 20 6f 6e 20 74 68 65 20 6d 65 6d 6f 72  oad on the memor
3e80: 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 0a 7d 0a 0a  y allocator..}..
3e90: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
3ea0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 50  SQLITE_DEFAULT_P
3eb0: 41 47 45 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b  AGE_SIZE=<i>&lt;
3ec0: 62 79 74 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b  bytes&gt;</i>} {
3ed0: 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
3ee0: 20 75 73 65 64 20 74 6f 20 73 65 74 20 74 68 65   used to set the
3ef0: 20 64 65 66 61 75 6c 74 20 70 61 67 65 2d 73 69   default page-si
3f00: 7a 65 20 75 73 65 64 20 77 68 65 6e 20 61 0a 20  ze used when a. 
3f10: 20 64 61 74 61 62 61 73 65 20 69 73 20 63 72 65   database is cre
3f20: 61 74 65 64 2e 20 54 68 65 20 76 61 6c 75 65 20  ated. The value 
3f30: 61 73 73 69 67 6e 65 64 20 6d 75 73 74 20 62 65  assigned must be
3f40: 20 61 20 70 6f 77 65 72 20 6f 66 20 32 2e 20 54   a power of 2. T
3f50: 68 65 0a 20 20 64 65 66 61 75 6c 74 20 76 61 6c  he.  default val
3f60: 75 65 20 69 73 20 34 30 39 36 2e 20 54 68 65 20  ue is 4096. The 
3f70: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 64 65 66  compile-time def
3f80: 61 75 6c 74 20 6d 61 79 20 62 65 20 6f 76 65 72  ault may be over
3f90: 72 69 64 64 65 6e 20 61 74 20 0a 20 20 72 75 6e  ridden at .  run
3fa0: 74 69 6d 65 20 62 79 20 74 68 65 20 5b 50 52 41  time by the [PRA
3fb0: 47 4d 41 20 70 61 67 65 5f 73 69 7a 65 5d 20 63  GMA page_size] c
3fc0: 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  ommand..}..COMPI
3fd0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
3fe0: 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43 48 52  E_DEFAULT_SYNCHR
3ff0: 4f 4e 4f 55 53 3d 3c 69 3e 26 6c 74 3b 30 2d 33  ONOUS=<i>&lt;0-3
4000: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
4010: 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69  is macro determi
4020: 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  nes the default 
4030: 76 61 6c 75 65 20 6f 66 20 74 68 65 0a 20 20 5b  value of the.  [
4040: 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
4050: 75 73 5d 20 73 65 74 74 69 6e 67 2e 20 20 49 66  us] setting.  If
4060: 20 6e 6f 74 20 6f 76 65 72 72 69 64 64 65 6e 20   not overridden 
4070: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c  at compile-time,
4080: 0a 20 20 74 68 65 20 64 65 66 61 75 6c 74 20 73  .  the default s
4090: 65 74 74 69 6e 67 20 69 73 20 32 20 28 46 55 4c  etting is 2 (FUL
40a0: 4c 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  L)..}..COMPILE_O
40b0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
40c0: 46 41 55 4c 54 5f 57 41 4c 5f 53 59 4e 43 48 52  FAULT_WAL_SYNCHR
40d0: 4f 4e 4f 55 53 3d 3c 69 3e 26 6c 74 3b 30 2d 33  ONOUS=<i>&lt;0-3
40e0: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
40f0: 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69  is macro determi
4100: 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  nes the default 
4110: 76 61 6c 75 65 20 6f 66 20 74 68 65 0a 20 20 5b  value of the.  [
4120: 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
4130: 75 73 5d 20 73 65 74 74 69 6e 67 20 66 6f 72 20  us] setting for 
4140: 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 74  database files t
4150: 68 61 74 20 6f 70 65 6e 20 69 6e 0a 20 20 5b 57  hat open in.  [W
4160: 41 4c 20 6d 6f 64 65 5d 2e 20 20 49 66 20 6e 6f  AL mode].  If no
4170: 74 20 6f 76 65 72 72 69 64 64 65 6e 20 61 74 20  t overridden at 
4180: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 74 68  compile-time, th
4190: 69 73 20 76 61 6c 75 65 20 69 73 20 74 68 65 0a  is value is the.
41a0: 20 20 73 61 6d 65 20 61 73 20 5b 53 51 4c 49 54    same as [SQLIT
41b0: 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43 48 52  E_DEFAULT_SYNCHR
41c0: 4f 4e 4f 55 53 5d 2e 0a 20 20 3c 70 3e 0a 20 20  ONOUS]..  <p>.  
41d0: 49 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  If SQLITE_DEFAUL
41e0: 54 5f 57 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55  T_WAL_SYNCHRONOU
41f0: 53 20 64 69 66 66 65 72 73 20 66 72 6f 6d 20 53  S differs from S
4200: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 53 59  QLITE_DEFAULT_SY
4210: 4e 43 48 52 4f 4e 4f 55 53 2c 0a 20 20 61 6e 64  NCHRONOUS,.  and
4220: 20 69 66 20 74 68 65 20 61 70 70 6c 69 63 61 74   if the applicat
4230: 69 6f 6e 20 68 61 73 20 6e 6f 74 20 6d 6f 64 69  ion has not modi
4240: 66 69 65 64 20 74 68 65 20 73 79 6e 63 68 72 6f  fied the synchro
4250: 6e 6f 75 73 20 73 65 74 74 69 6e 67 20 66 6f 72  nous setting for
4260: 0a 20 20 74 68 65 20 64 61 74 61 62 61 73 65 20  .  the database 
4270: 66 69 6c 65 20 75 73 69 6e 67 20 74 68 65 20 5b  file using the [
4280: 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
4290: 75 73 5d 20 73 74 61 74 65 6d 65 6e 74 2c 20 74  us] statement, t
42a0: 68 65 6e 0a 20 20 74 68 65 20 73 79 6e 63 68 72  hen.  the synchr
42b0: 6f 6e 6f 75 73 20 73 65 74 74 69 6e 67 20 69 73  onous setting is
42c0: 20 63 68 61 6e 67 65 64 20 74 6f 20 76 61 6c 75   changed to valu
42d0: 65 20 64 65 66 69 6e 65 64 20 62 79 0a 20 20 53  e defined by.  S
42e0: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 41  QLITE_DEFAULT_WA
42f0: 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 20 77 68  L_SYNCHRONOUS wh
4300: 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  en the database 
4310: 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 77 69 74 63  connection switc
4320: 68 65 73 0a 20 20 69 6e 74 6f 20 57 41 4c 20 6d  hes.  into WAL m
4330: 6f 64 65 20 66 6f 72 20 74 68 65 20 66 69 72 73  ode for the firs
4340: 74 20 74 69 6d 65 2e 0a 20 20 49 66 20 74 68 65  t time..  If the
4350: 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f   SQLITE_DEFAULT_
4360: 57 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 20  WAL_SYNCHRONOUS 
4370: 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 6f 76 65  value is not ove
4380: 72 72 69 64 64 65 6e 20 61 74 0a 20 20 63 6f 6d  rridden at.  com
4390: 70 69 6c 65 2d 74 69 6d 65 2c 20 74 68 65 6e 20  pile-time, then 
43a0: 69 74 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62  it will always b
43b0: 65 20 74 68 65 20 73 61 6d 65 20 61 73 0a 20 20  e the same as.  
43c0: 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  [SQLITE_DEFAULT_
43d0: 53 59 4e 43 48 52 4f 4e 4f 55 53 5d 20 61 6e 64  SYNCHRONOUS] and
43e0: 20 73 6f 20 6e 6f 20 61 75 74 6f 6d 61 74 69 63   so no automatic
43f0: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 73 65 74   synchronous set
4400: 74 69 6e 67 0a 20 20 63 68 61 6e 67 65 73 20 77  ting.  changes w
4410: 69 6c 6c 20 65 76 65 72 20 6f 63 63 75 72 2e 0a  ill ever occur..
4420: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
4430: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
4440: 54 5f 57 41 4c 5f 41 55 54 4f 43 48 45 43 4b 50  T_WAL_AUTOCHECKP
4450: 4f 49 4e 54 3d 3c 69 3e 26 6c 74 3b 70 61 67 65  OINT=<i>&lt;page
4460: 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  s&gt;</i>} {.  T
4470: 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74  his macro sets t
4480: 68 65 20 64 65 66 61 75 6c 74 20 70 61 67 65 20  he default page 
4490: 63 6f 75 6e 74 20 66 6f 72 20 74 68 65 20 5b 57  count for the [W
44a0: 41 4c 5d 0a 20 20 5b 63 68 65 63 6b 70 6f 69 6e  AL].  [checkpoin
44b0: 74 69 6e 67 20 7c 20 61 75 74 6f 6d 61 74 69 63  ting | automatic
44c0: 20 63 68 65 63 6b 70 6f 69 6e 74 69 6e 67 5d 20   checkpointing] 
44d0: 66 65 61 74 75 72 65 2e 20 20 49 66 20 75 6e 73  feature.  If uns
44e0: 70 65 63 69 66 69 65 64 2c 0a 20 20 74 68 65 20  pecified,.  the 
44f0: 64 65 66 61 75 6c 74 20 70 61 67 65 20 63 6f 75  default page cou
4500: 6e 74 20 69 73 20 31 30 30 30 2e 0a 7d 0a 0a 43  nt is 1000..}..C
4510: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
4520: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 4f  QLITE_DEFAULT_WO
4530: 52 4b 45 52 5f 54 48 52 45 41 44 53 3d 3c 69 3e  RKER_THREADS=<i>
4540: 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  N</i>} {.  This 
4550: 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 64  macro sets the d
4560: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72  efault value for
4570: 0a 20 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c  .  the [SQLITE_L
4580: 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45  IMIT_WORKER_THRE
4590: 41 44 53 5d 20 70 61 72 61 6d 65 74 65 72 2e 20  ADS] parameter. 
45a0: 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 4c 49 4d   The [SQLITE_LIM
45b0: 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  IT_WORKER_THREAD
45c0: 53 5d 0a 20 20 70 61 72 61 6d 65 74 65 72 20 73  S].  parameter s
45d0: 65 74 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ets the maximum 
45e0: 6e 75 6d 62 65 72 20 6f 66 20 61 75 78 69 6c 69  number of auxili
45f0: 61 72 79 20 74 68 72 65 61 64 73 20 74 68 61 74  ary threads that
4600: 20 61 20 73 69 6e 67 6c 65 0a 20 20 5b 70 72 65   a single.  [pre
4610: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
4620: 20 77 69 6c 6c 20 6c 61 75 6e 63 68 20 74 6f 20   will launch to 
4630: 61 73 73 69 73 74 20 69 74 20 77 69 74 68 20 61  assist it with a
4640: 20 71 75 65 72 79 2e 20 20 49 66 20 6e 6f 74 20   query.  If not 
4650: 73 70 65 63 69 66 69 65 64 2c 0a 20 20 74 68 65  specified,.  the
4660: 20 64 65 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d   default maximum
4670: 20 69 73 20 30 2e 0a 20 20 54 68 65 20 76 61 6c   is 0..  The val
4680: 75 65 20 73 65 74 20 68 65 72 65 20 63 61 6e 6e  ue set here cann
4690: 6f 74 20 62 65 20 6d 6f 72 65 20 74 68 61 6e 20  ot be more than 
46a0: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 57 4f 52 4b  [SQLITE_MAX_WORK
46b0: 45 52 5f 54 48 52 45 41 44 53 5d 2e 0a 7d 0a 0a  ER_THREADS]..}..
46c0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
46d0: 53 51 4c 49 54 45 5f 45 58 54 52 41 5f 44 55 52  SQLITE_EXTRA_DUR
46e0: 41 42 4c 45 7d 20 7b 0a 20 20 54 68 65 20 53 51  ABLE} {.  The SQ
46f0: 4c 49 54 45 5f 45 58 54 52 41 5f 44 55 52 41 42  LITE_EXTRA_DURAB
4700: 4c 45 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  LE compile-time 
4710: 6f 70 74 69 6f 6e 20 74 68 61 74 20 75 73 65 64  option that used
4720: 20 74 6f 20 63 61 75 73 65 20 74 68 65 20 64 65   to cause the de
4730: 66 61 75 6c 74 0a 20 20 5b 50 52 41 47 4d 41 20  fault.  [PRAGMA 
4740: 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 20 73 65 74  synchronous] set
4750: 74 69 6e 67 20 74 6f 20 62 65 20 45 58 54 52 41  ting to be EXTRA
4760: 2c 20 72 61 74 68 65 72 20 74 68 61 6e 20 46 55  , rather than FU
4770: 4c 4c 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  LL.  This option
4780: 0a 20 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20  .  is no longer 
4790: 73 75 70 70 6f 72 74 65 64 2e 20 20 55 73 65 0a  supported.  Use.
47a0: 20 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c    [SQLITE_DEFAUL
47b0: 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 7c 53 51  T_SYNCHRONOUS|SQ
47c0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e  LITE_DEFAULT_SYN
47d0: 43 48 52 4f 4e 4f 55 53 3d 33 5d 20 69 6e 73 74  CHRONOUS=3] inst
47e0: 65 61 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ead..}..COMPILE_
47f0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 46  OPTION {SQLITE_F
4800: 54 53 33 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50  TS3_MAX_EXPR_DEP
4810: 54 48 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20  TH=<i>N</i>} {. 
4820: 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73   This macro sets
4830: 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70   the maximum dep
4840: 74 68 20 6f 66 20 74 68 65 20 73 65 61 72 63 68  th of the search
4850: 20 74 72 65 65 20 74 68 61 74 20 63 6f 72 72 65   tree that corre
4860: 73 70 6f 6e 64 73 20 74 6f 0a 20 20 74 68 65 20  sponds to.  the 
4870: 72 69 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20  right-hand side 
4880: 6f 66 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65  of the MATCH ope
4890: 72 61 74 6f 72 20 69 6e 20 61 6e 20 5b 46 54 53  rator in an [FTS
48a0: 33 5d 20 6f 72 20 5b 46 54 53 34 5d 20 66 75 6c  3] or [FTS4] ful
48b0: 6c 2d 74 65 78 74 0a 20 20 69 6e 64 65 78 2e 20  l-text.  index. 
48c0: 20 54 68 65 20 66 75 6c 6c 2d 74 65 78 74 20 73   The full-text s
48d0: 65 61 72 63 68 20 75 73 65 73 20 61 20 72 65 63  earch uses a rec
48e0: 75 72 73 69 76 65 20 61 6c 67 6f 72 69 74 68 6d  ursive algorithm
48f0: 2c 20 73 6f 20 74 68 65 20 64 65 70 74 68 20 6f  , so the depth o
4900: 66 0a 20 20 74 68 65 20 74 72 65 65 20 69 73 20  f.  the tree is 
4910: 6c 69 6d 69 74 65 64 20 74 6f 20 70 72 65 76 65  limited to preve
4920: 6e 74 20 75 73 69 6e 67 20 74 6f 6f 20 6d 75 63  nt using too muc
4930: 68 20 73 74 61 63 6b 20 73 70 61 63 65 2e 20 20  h stack space.  
4940: 54 68 65 20 64 65 66 61 75 6c 74 0a 20 20 6c 69  The default.  li
4950: 6d 69 74 20 69 73 20 31 32 2e 20 20 54 68 69 73  mit is 12.  This
4960: 20 6c 69 6d 69 74 20 69 73 20 73 75 66 66 69 63   limit is suffic
4970: 69 65 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34  ient for up to 4
4980: 30 39 35 20 73 65 61 72 63 68 20 74 65 72 6d 73  095 search terms
4990: 20 6f 6e 20 74 68 65 0a 20 20 72 69 67 68 74 2d   on the.  right-
49a0: 68 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65  hand side of the
49b0: 20 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72 20   MATCH operator 
49c0: 61 6e 64 20 69 74 20 68 6f 6c 64 73 20 73 74 61  and it holds sta
49d0: 63 6b 20 73 70 61 63 65 20 75 73 61 67 65 20 74  ck space usage t
49e0: 6f 20 0a 20 20 6c 65 73 73 20 74 68 61 6e 20 32  o .  less than 2
49f0: 30 30 30 20 62 79 74 65 73 2e 0a 20 20 3c 70 3e  000 bytes..  <p>
4a00: 0a 20 20 46 6f 72 20 6f 72 64 69 6e 61 72 79 20  .  For ordinary 
4a10: 46 54 53 33 2f 46 54 53 34 20 71 75 65 72 69 65  FTS3/FTS4 querie
4a20: 73 2c 20 74 68 65 20 73 65 61 72 63 68 20 74 72  s, the search tr
4a30: 65 65 20 64 65 70 74 68 20 69 73 20 61 70 70 72  ee depth is appr
4a40: 6f 78 69 6d 61 74 65 6c 79 0a 20 20 74 68 65 20  oximately.  the 
4a50: 62 61 73 65 2d 32 20 6c 6f 67 61 72 69 74 68 6d  base-2 logarithm
4a60: 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   of the number o
4a70: 66 20 74 65 72 6d 73 20 69 6e 20 74 68 65 20 72  f terms in the r
4a80: 69 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f  ight-hand side o
4a90: 66 20 74 68 65 0a 20 20 4d 41 54 43 48 20 6f 70  f the.  MATCH op
4aa0: 65 72 61 74 6f 72 2e 20 20 48 6f 77 65 76 65 72  erator.  However
4ab0: 2c 20 66 6f 72 20 5b 70 68 72 61 73 65 20 71 75  , for [phrase qu
4ac0: 65 72 69 65 73 5d 20 61 6e 64 20 5b 4e 45 41 52  eries] and [NEAR
4ad0: 20 71 75 65 72 69 65 73 5d 20 74 68 65 0a 20 20   queries] the.  
4ae0: 73 65 61 72 63 68 20 74 72 65 65 20 64 65 70 74  search tree dept
4af0: 68 20 69 73 20 6c 69 6e 65 61 72 20 69 6e 20 74  h is linear in t
4b00: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 69 67  he number of rig
4b10: 68 74 2d 68 61 6e 64 20 73 69 64 65 20 74 65 72  ht-hand side ter
4b20: 6d 73 2e 0a 20 20 53 6f 20 74 68 65 20 64 65 66  ms..  So the def
4b30: 61 75 6c 74 20 64 65 70 74 68 20 6c 69 6d 69 74  ault depth limit
4b40: 20 6f 66 20 31 32 20 69 73 20 73 75 66 66 69 63   of 12 is suffic
4b50: 69 65 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34  ient for up to 4
4b60: 30 39 35 20 6f 72 64 69 6e 61 72 79 0a 20 20 74  095 ordinary.  t
4b70: 65 72 6d 73 20 6f 6e 20 61 20 4d 41 54 43 48 2c  erms on a MATCH,
4b80: 20 69 74 20 69 73 20 6f 6e 6c 79 20 73 75 66 66   it is only suff
4b90: 69 63 69 65 6e 74 20 66 6f 72 20 31 31 20 6f 72  icient for 11 or
4ba0: 20 31 32 20 70 68 72 61 73 65 20 6f 72 20 4e 45   12 phrase or NE
4bb0: 41 52 0a 20 20 74 65 72 6d 73 2e 20 20 45 76 65  AR.  terms.  Eve
4bc0: 6e 20 73 6f 2c 20 74 68 65 20 64 65 66 61 75 6c  n so, the defaul
4bd0: 74 20 69 73 20 6d 6f 72 65 20 74 68 61 6e 20 65  t is more than e
4be0: 6e 6f 75 67 68 20 66 6f 72 20 6d 6f 73 74 20 61  nough for most a
4bf0: 70 70 6c 69 63 61 74 69 6f 6e 2e 0a 7d 0a 0a 43  pplication..}..C
4c00: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
4c10: 51 4c 49 54 45 5f 4c 49 4b 45 5f 44 4f 45 53 4e  QLITE_LIKE_DOESN
4c20: 54 5f 4d 41 54 43 48 5f 42 4c 4f 42 53 7d 20 7b  T_MATCH_BLOBS} {
4c30: 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d  .  This compile-
4c40: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63 61 75 73  time option caus
4c50: 65 73 20 74 68 65 20 5b 4c 49 4b 45 5d 20 6f 70  es the [LIKE] op
4c60: 65 72 61 74 6f 72 20 74 6f 20 61 6c 77 61 79 73  erator to always
4c70: 20 72 65 74 75 72 6e 20 0a 20 20 46 61 6c 73 65   return .  False
4c80: 20 69 66 20 65 69 74 68 65 72 20 6f 70 65 72 61   if either opera
4c90: 6e 64 20 69 73 20 61 20 42 4c 4f 42 2e 20 20 54  nd is a BLOB.  T
4ca0: 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76  he default behav
4cb0: 69 6f 72 20 6f 66 20 5b 4c 49 4b 45 5d 20 0a 20  ior of [LIKE] . 
4cc0: 20 69 73 20 74 68 61 74 20 42 4c 4f 42 20 6f 70   is that BLOB op
4cd0: 65 72 61 6e 64 73 20 61 72 65 20 63 61 73 74 20  erands are cast 
4ce0: 74 6f 20 54 45 58 54 20 62 65 66 6f 72 65 20 74  to TEXT before t
4cf0: 68 65 20 63 6f 6d 70 61 72 69 73 6f 6e 20 69 73  he comparison is
4d00: 20 64 6f 6e 65 2e 0a 20 20 3c 70 3e 0a 20 20 54   done..  <p>.  T
4d10: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
4d20: 20 6f 70 74 69 6f 6e 20 6d 61 6b 65 73 20 53 51   option makes SQ
4d30: 4c 69 74 65 20 72 75 6e 20 6d 6f 72 65 20 65 66  Lite run more ef
4d40: 66 69 63 69 65 6e 74 6c 79 20 77 68 65 6e 20 70  ficiently when p
4d50: 72 6f 63 65 73 73 69 6e 67 0a 20 20 71 75 65 72  rocessing.  quer
4d60: 69 65 73 20 74 68 61 74 20 75 73 65 20 74 68 65  ies that use the
4d70: 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72   [LIKE] operator
4d80: 2c 20 61 74 20 74 68 65 20 65 78 70 65 6e 73 65  , at the expense
4d90: 20 6f 66 20 62 72 65 61 6b 69 6e 67 20 62 61 63   of breaking bac
4da0: 6b 77 61 72 64 73 0a 20 20 63 6f 6d 70 61 74 69  kwards.  compati
4db0: 62 69 6c 69 74 79 2e 20 20 48 6f 77 65 76 65 72  bility.  However
4dc0: 2c 20 74 68 65 20 62 61 63 6b 77 61 72 64 73 20  , the backwards 
4dd0: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 62 72  compatibility br
4de0: 65 61 6b 20 6d 61 79 20 62 65 20 6f 6e 6c 79 0a  eak may be only.
4df0: 20 20 61 20 74 65 63 68 6e 69 63 61 6c 69 74 79    a technicality
4e00: 2e 20 20 54 68 65 72 65 20 77 61 73 20 61 20 6c  .  There was a l
4e10: 6f 6e 67 2d 73 74 61 6e 64 69 6e 67 20 62 75 67  ong-standing bug
4e20: 20 69 6e 20 74 68 65 20 5b 4c 49 4b 45 5d 20 70   in the [LIKE] p
4e30: 72 6f 63 65 73 73 69 6e 67 20 6c 6f 67 69 63 0a  rocessing logic.
4e40: 20 20 28 73 65 65 20 5b 68 74 74 70 73 3a 2f 2f    (see [https://
4e50: 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 73  www.sqlite.org/s
4e60: 72 63 2f 69 6e 66 6f 2f 30 35 66 34 33 62 65 38  rc/info/05f43be8
4e70: 66 64 64 61 39 66 5d 29 20 74 68 61 74 20 63 61  fdda9f]) that ca
4e80: 75 73 65 64 20 69 74 20 74 6f 0a 20 20 6d 69 73  used it to.  mis
4e90: 62 65 68 61 76 69 6f 72 20 66 6f 72 20 42 4c 4f  behavior for BLO
4ea0: 42 20 6f 70 65 72 61 6e 64 73 20 61 6e 64 20 6e  B operands and n
4eb0: 6f 62 6f 64 79 20 6f 62 73 65 72 76 65 64 20 74  obody observed t
4ec0: 68 61 74 20 62 75 67 20 69 6e 20 6e 65 61 72 6c  hat bug in nearl
4ed0: 79 0a 20 20 31 30 20 79 65 61 72 73 20 6f 66 20  y.  10 years of 
4ee0: 61 63 74 69 76 65 20 75 73 65 2e 20 20 53 6f 20  active use.  So 
4ef0: 66 6f 72 20 6d 6f 72 65 20 75 73 65 72 73 2c 20  for more users, 
4f00: 69 74 20 69 73 20 70 72 6f 62 61 62 6c 79 20 73  it is probably s
4f10: 61 66 65 20 74 6f 0a 20 20 65 6e 61 62 6c 65 20  afe to.  enable 
4f20: 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  this compile-tim
4f30: 65 20 6f 70 74 69 6f 6e 20 61 6e 64 20 74 68 65  e option and the
4f40: 72 65 62 79 20 73 61 76 65 20 61 20 6c 69 74 74  reby save a litt
4f50: 6c 65 20 43 50 55 20 74 69 6d 65 0a 20 20 6f 6e  le CPU time.  on
4f60: 20 4c 49 4b 45 20 71 75 65 72 69 65 73 2e 0a 20   LIKE queries.. 
4f70: 20 3c 70 3e 0a 20 20 54 68 69 73 20 63 6f 6d 70   <p>.  This comp
4f80: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
4f90: 61 66 66 65 63 74 73 20 74 68 65 20 53 51 4c 20  affects the SQL 
4fa0: 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 20  [LIKE] operator 
4fb0: 6f 6e 6c 79 20 61 6e 64 20 68 61 73 0a 20 20 6e  only and has.  n
4fc0: 6f 20 69 6d 70 61 63 74 20 6f 6e 20 74 68 65 20  o impact on the 
4fd0: 5b 73 71 6c 69 74 65 33 5f 73 74 72 6c 69 6b 65  [sqlite3_strlike
4fe0: 28 29 5d 20 43 2d 6c 61 6e 67 75 61 67 65 20 69  ()] C-language i
4ff0: 6e 74 65 72 66 61 63 65 2e 0a 7d 0a 0a 43 4f 4d  nterface..}..COM
5000: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
5010: 49 54 45 5f 4d 41 58 5f 4d 45 4d 4f 52 59 3d 3c  ITE_MAX_MEMORY=<
5020: 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  i>N</i>} {.  Thi
5030: 73 20 6f 70 74 69 6f 6e 20 6c 69 6d 69 74 73 20  s option limits 
5040: 74 68 65 20 74 6f 74 61 6c 20 61 6d 6f 75 6e 74  the total amount
5050: 20 6f 66 20 6d 65 6d 6f 72 79 20 74 68 61 74 20   of memory that 
5060: 53 51 4c 69 74 65 20 77 69 6c 6c 20 72 65 71 75  SQLite will requ
5070: 65 73 74 0a 20 20 66 72 6f 6d 20 6d 61 6c 6c 6f  est.  from mallo
5080: 63 28 29 20 74 6f 20 3c 69 3e 4e 3c 2f 69 3e 20  c() to <i>N</i> 
5090: 62 79 74 65 73 2e 20 20 41 6e 79 20 61 74 74 65  bytes.  Any atte
50a0: 6d 70 74 20 62 79 20 53 51 4c 69 74 65 20 74 6f  mpt by SQLite to
50b0: 20 61 6c 6c 6f 63 61 74 65 0a 20 20 6e 65 77 20   allocate.  new 
50c0: 6d 65 6d 6f 72 79 20 74 68 61 74 20 77 6f 75 6c  memory that woul
50d0: 64 20 63 61 75 73 65 20 74 68 65 20 73 75 6d 20  d cause the sum 
50e0: 6f 66 20 61 6c 6c 20 61 6c 6c 6f 63 61 74 69 6f  of all allocatio
50f0: 6e 73 20 68 65 6c 64 20 62 79 20 53 51 4c 69 74  ns held by SQLit
5100: 65 20 74 6f 20 65 78 63 65 65 64 0a 20 20 3c 69  e to exceed.  <i
5110: 3e 4e 3c 2f 69 3e 20 62 79 74 65 73 20 77 69 6c  >N</i> bytes wil
5120: 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20 6f  l result in an o
5130: 75 74 2d 6f 66 2d 6d 65 6d 6f 72 79 20 65 72 72  ut-of-memory err
5140: 6f 72 2e 0a 20 20 54 68 69 73 20 69 73 20 61 20  or..  This is a 
5150: 68 61 72 64 20 75 70 70 65 72 20 6c 69 6d 69 74  hard upper limit
5160: 2e 20 20 53 65 65 20 61 6c 73 6f 20 74 68 65 20  .  See also the 
5170: 5b 73 71 6c 69 74 65 33 5f 73 6f 66 74 5f 68 65  [sqlite3_soft_he
5180: 61 70 5f 6c 69 6d 69 74 28 29 5d 0a 20 20 69 6e  ap_limit()].  in
5190: 74 65 72 66 61 63 65 2e 0a 20 20 3c 70 3e 0a 20  terface..  <p>. 
51a0: 20 54 68 69 73 20 6c 69 6d 69 74 20 69 73 20 6f   This limit is o
51b0: 6e 6c 79 20 66 75 6e 63 74 69 6f 6e 61 6c 20 69  nly functional i
51c0: 66 20 6d 65 6d 6f 72 79 20 75 73 61 67 65 20 73  f memory usage s
51d0: 74 61 74 69 73 74 69 63 73 20 61 72 65 20 61 76  tatistics are av
51e0: 61 69 6c 61 62 6c 65 20 76 69 61 0a 20 20 74 68  ailable via.  th
51f0: 65 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  e [sqlite3_memor
5200: 79 5f 75 73 65 64 28 29 5d 20 61 6e 64 20 5b 73  y_used()] and [s
5210: 71 6c 69 74 65 33 5f 73 74 61 74 75 73 36 34 5d  qlite3_status64]
5220: 28 5b 53 51 4c 49 54 45 5f 53 54 41 54 55 53 5f  ([SQLITE_STATUS_
5230: 4d 45 4d 4f 52 59 5f 55 53 45 44 5d 29 0a 20 20  MEMORY_USED]).  
5240: 69 6e 74 65 72 66 61 63 65 73 2e 20 20 57 69 74  interfaces.  Wit
5250: 68 6f 75 74 20 74 68 61 74 20 6d 65 6d 6f 72 79  hout that memory
5260: 20 75 73 61 67 65 20 69 6e 66 6f 72 6d 61 74 69   usage informati
5270: 6f 6e 2c 20 53 51 4c 69 74 65 20 68 61 73 20 6e  on, SQLite has n
5280: 6f 20 77 61 79 20 6f 66 0a 20 20 6b 6e 6f 77 69  o way of.  knowi
5290: 6e 67 20 77 68 65 6e 20 69 74 20 69 73 20 61 62  ng when it is ab
52a0: 6f 75 74 20 74 6f 20 67 6f 20 6f 76 65 72 20 74  out to go over t
52b0: 68 65 20 6c 69 6d 69 74 2c 20 61 6e 64 20 74 68  he limit, and th
52c0: 75 73 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20  us is unable to 
52d0: 70 72 65 76 65 6e 74 0a 20 20 74 68 65 20 65 78  prevent.  the ex
52e0: 63 65 73 73 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  cess memory allo
52f0: 63 61 74 69 6f 6e 2e 20 20 4d 65 6d 6f 72 79 20  cation.  Memory 
5300: 75 73 61 67 65 20 74 72 61 63 6b 69 6e 67 20 69  usage tracking i
5310: 73 20 74 75 72 6e 65 64 20 6f 6e 20 62 79 20 64  s turned on by d
5320: 65 66 61 75 6c 74 2c 0a 20 20 62 75 74 20 63 61  efault,.  but ca
5330: 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 61 74  n be disabled at
5340: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 75 73   compile-time us
5350: 69 6e 67 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  ing the [SQLITE_
5360: 44 45 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54 55  DEFAULT_MEMSTATU
5370: 53 5d 20 6f 70 74 69 6f 6e 2c 0a 20 20 6f 72 20  S] option,.  or 
5380: 61 74 20 73 74 61 72 74 2d 74 69 6d 65 20 75 73  at start-time us
5390: 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  ing [sqlite3_con
53a0: 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e  fig]([SQLITE_CON
53b0: 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 29 2e  FIG_MEMSTATUS]).
53c0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
53d0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 41 58 5f 4d  ON {SQLITE_MAX_M
53e0: 4d 41 50 5f 53 49 5a 45 3d 3c 69 3e 4e 3c 2f 69  MAP_SIZE=<i>N</i
53f0: 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  >} {.  This macr
5400: 6f 20 73 65 74 73 20 61 20 68 61 72 64 20 75 70  o sets a hard up
5410: 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65  per bound on the
5420: 20 61 6d 6f 75 6e 74 20 6f 66 20 61 64 64 72 65   amount of addre
5430: 73 73 20 73 70 61 63 65 20 74 68 61 74 0a 20 20  ss space that.  
5440: 63 61 6e 20 62 65 20 75 73 65 64 20 62 79 20 61  can be used by a
5450: 6e 79 20 73 69 6e 67 6c 65 20 64 61 74 61 62 61  ny single databa
5460: 73 65 20 66 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61  se for memory-ma
5470: 70 70 65 64 20 49 2f 4f 2e 0a 20 20 53 65 74 74  pped I/O..  Sett
5480: 69 6e 67 20 74 68 69 73 20 76 61 6c 75 65 20 74  ing this value t
5490: 6f 20 30 20 63 6f 6d 70 6c 65 74 65 6c 79 20 64  o 0 completely d
54a0: 69 73 61 62 6c 65 73 20 6d 65 6d 6f 72 79 2d 6d  isables memory-m
54b0: 61 70 70 65 64 20 49 2f 4f 20 61 6e 64 0a 20 20  apped I/O and.  
54c0: 63 61 75 73 65 73 20 6c 6f 67 69 63 20 61 73 73  causes logic ass
54d0: 6f 63 69 61 74 65 64 20 77 69 74 68 20 6d 65 6d  ociated with mem
54e0: 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20 74  ory-mapped I/O t
54f0: 6f 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f  o be omitted fro
5500: 6d 20 74 68 65 0a 20 20 62 75 69 6c 64 2e 20 20  m the.  build.  
5510: 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 6f 65 73  This option does
5520: 20 63 68 61 6e 67 65 20 74 68 65 20 64 65 66 61   change the defa
5530: 75 6c 74 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65  ult memory-mappe
5540: 64 20 49 2f 4f 20 61 64 64 72 65 73 73 0a 20 20  d I/O address.  
5550: 73 70 61 63 65 20 73 69 7a 65 20 28 73 65 74 20  space size (set 
5560: 62 79 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55  by [SQLITE_DEFAU
5570: 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 6f 72  LT_MMAP_SIZE] or
5580: 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  .  sqlite3_confi
5590: 67 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  g([SQLITE_CONFIG
55a0: 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 6f 72 20  _MMAP_SIZE]) or 
55b0: 74 68 65 0a 20 20 72 75 6e 2d 74 69 6d 65 20 6d  the.  run-time m
55c0: 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f  emory-mapped I/O
55d0: 20 61 64 64 72 65 73 73 20 73 70 61 63 65 20 73   address space s
55e0: 69 7a 65 20 28 73 65 74 20 62 79 0a 20 20 73 71  ize (set by.  sq
55f0: 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72  lite3_file_contr
5600: 6f 6c 28 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ol([SQLITE_FCNTL
5610: 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 6f 72 0a  _MMAP_SIZE]) or.
5620: 20 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70 5f 73    [PRAGMA mmap_s
5630: 69 7a 65 5d 29 20 61 73 20 6c 6f 6e 67 20 61 73  ize]) as long as
5640: 20 74 68 6f 73 65 20 6f 74 68 65 72 20 73 65 74   those other set
5650: 74 69 6e 67 73 20 61 72 65 20 6c 65 73 73 20 74  tings are less t
5660: 68 61 6e 20 74 68 65 0a 20 20 6d 61 78 69 6d 75  han the.  maximu
5670: 6d 20 76 61 6c 75 65 20 64 65 66 69 6e 65 64 20  m value defined 
5680: 68 65 72 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  here..}..COMPILE
5690: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
56a0: 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45 54 52 59  MAX_SCHEMA_RETRY
56b0: 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 57  =<i>N</i>} {.  W
56c0: 68 65 6e 65 76 65 72 20 74 68 65 20 64 61 74 61  henever the data
56d0: 62 61 73 65 20 73 63 68 65 6d 61 20 63 68 61 6e  base schema chan
56e0: 67 65 73 2c 20 70 72 65 70 61 72 65 64 20 73 74  ges, prepared st
56f0: 61 74 65 6d 65 6e 74 73 20 61 72 65 20 61 75 74  atements are aut
5700: 6f 6d 61 74 69 63 61 6c 6c 79 0a 20 20 72 65 70  omatically.  rep
5710: 72 65 70 61 72 65 64 20 74 6f 20 61 63 63 6f 6d  repared to accom
5720: 6d 6f 64 61 74 65 20 74 68 65 20 6e 65 77 20 73  modate the new s
5730: 63 68 65 6d 61 2e 20 20 54 68 65 72 65 20 69 73  chema.  There is
5740: 20 61 20 72 61 63 65 20 63 6f 6e 64 69 74 69 6f   a race conditio
5750: 6e 20 68 65 72 65 0a 20 20 69 6e 20 74 68 61 74  n here.  in that
5760: 20 69 66 20 6f 6e 65 20 74 68 72 65 61 64 20 69   if one thread i
5770: 73 20 63 6f 6e 73 74 61 6e 74 6c 79 20 63 68 61  s constantly cha
5780: 6e 67 69 6e 67 20 74 68 65 20 73 63 68 65 6d 61  nging the schema
5790: 2c 20 61 6e 6f 74 68 65 72 20 74 68 72 65 61 64  , another thread
57a0: 0a 20 20 6d 69 67 68 74 20 73 70 69 6e 20 6f 6e  .  might spin on
57b0: 20 72 65 70 61 72 73 65 73 20 61 6e 64 20 72 65   reparses and re
57c0: 70 72 65 70 61 72 61 74 69 6f 6e 73 20 6f 66 20  preparations of 
57d0: 61 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  a prepared state
57e0: 6d 65 6e 74 20 61 6e 64 0a 20 20 6e 65 76 65 72  ment and.  never
57f0: 20 67 65 74 20 61 6e 79 20 72 65 61 6c 20 77 6f   get any real wo
5800: 72 6b 20 64 6f 6e 65 2e 20 20 54 68 69 73 20 70  rk done.  This p
5810: 61 72 61 6d 65 74 65 72 20 70 72 65 76 65 6e 74  arameter prevent
5820: 73 20 61 6e 20 69 6e 66 69 6e 69 74 65 20 6c 6f  s an infinite lo
5830: 6f 70 0a 20 20 62 79 20 66 6f 72 63 69 6e 67 20  op.  by forcing 
5840: 74 68 65 20 73 70 69 6e 6e 69 6e 67 20 74 68 72  the spinning thr
5850: 65 61 64 20 74 6f 20 67 69 76 65 20 75 70 20 61  ead to give up a
5860: 66 74 65 72 20 61 20 66 69 78 65 64 20 6e 75 6d  fter a fixed num
5870: 62 65 72 20 6f 66 20 61 74 74 65 6d 70 74 73 0a  ber of attempts.
5880: 20 20 61 74 20 72 65 63 6f 6d 70 69 6c 69 6e 67    at recompiling
5890: 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74   the prepared st
58a0: 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 64 65  atement.  The de
58b0: 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 69 73  fault setting is
58c0: 20 35 30 20 77 68 69 63 68 20 69 73 0a 20 20 6d   50 which is.  m
58d0: 6f 72 65 20 74 68 61 6e 20 61 64 65 71 75 61 74  ore than adequat
58e0: 65 20 66 6f 72 20 6d 6f 73 74 20 61 70 70 6c 69  e for most appli
58f0: 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50  cations..}..COMP
5900: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
5910: 54 45 5f 4d 41 58 5f 57 4f 52 4b 45 52 5f 54 48  TE_MAX_WORKER_TH
5920: 52 45 41 44 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20  READS=<i>N</i>} 
5930: 7b 0a 20 20 53 65 74 20 61 6e 20 75 70 70 65 72  {.  Set an upper
5940: 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65 20 5b 73   bound on the [s
5950: 71 6c 69 74 65 33 5f 6c 69 6d 69 74 5d 28 64 62  qlite3_limit](db
5960: 2c 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57  ,[SQLITE_LIMIT_W
5970: 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 5d 2c 4e  ORKER_THREADS],N
5980: 29 0a 20 20 73 65 74 74 69 6e 67 20 74 68 61 74  ).  setting that
5990: 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   determines the 
59a0: 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f  maximum number o
59b0: 66 20 61 75 78 69 6c 69 61 72 79 20 74 68 72 65  f auxiliary thre
59c0: 61 64 73 20 74 68 61 74 20 61 20 73 69 6e 67 6c  ads that a singl
59d0: 65 0a 20 20 5b 70 72 65 70 61 72 65 64 20 73 74  e.  [prepared st
59e0: 61 74 65 6d 65 6e 74 5d 20 77 69 6c 6c 20 75 73  atement] will us
59f0: 65 20 74 6f 20 61 69 64 20 77 69 74 68 20 43 50  e to aid with CP
5a00: 55 2d 69 6e 74 65 6e 73 69 76 65 20 63 6f 6d 70  U-intensive comp
5a10: 75 74 61 74 69 6f 6e 73 0a 20 20 28 6d 6f 73 74  utations.  (most
5a20: 6c 79 20 73 6f 72 74 69 6e 67 29 2e 20 20 53 65  ly sorting).  Se
5a30: 65 20 61 6c 73 6f 20 74 68 65 20 5b 53 51 4c 49  e also the [SQLI
5a40: 54 45 5f 44 45 46 41 55 4c 54 5f 57 4f 52 4b 45  TE_DEFAULT_WORKE
5a50: 52 5f 54 48 52 45 41 44 53 5d 20 6f 70 74 69 6f  R_THREADS] optio
5a60: 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ns..}..COMPILE_O
5a70: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 49  PTION {SQLITE_MI
5a80: 4e 49 4d 55 4d 5f 46 49 4c 45 5f 44 45 53 43 52  NIMUM_FILE_DESCR
5a90: 49 50 54 4f 52 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20  IPTOR=<i>N</i>} 
5aa0: 7b 0a 20 20 54 68 65 20 75 6e 69 78 20 5b 56 46  {.  The unix [VF
5ab0: 53 5d 20 77 69 6c 6c 20 6e 65 76 65 72 20 75 73  S] will never us
5ac0: 65 20 61 20 66 69 6c 65 20 64 65 73 63 72 69 70  e a file descrip
5ad0: 74 6f 72 20 6c 65 73 73 20 74 68 61 6e 20 3c 69  tor less than <i
5ae0: 3e 4e 3c 2f 69 3e 2e 20 20 54 68 65 0a 20 20 64  >N</i>.  The.  d
5af0: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 66 20  efault value of 
5b00: 3c 69 3e 4e 3c 2f 69 3e 20 69 73 20 33 2e 0a 20  <i>N</i> is 3.. 
5b10: 20 3c 70 3e 0a 20 20 41 76 6f 69 64 69 6e 67 20   <p>.  Avoiding 
5b20: 74 68 65 20 75 73 65 20 6f 66 20 6c 6f 77 2d 6e  the use of low-n
5b30: 75 6d 62 65 72 65 64 20 66 69 6c 65 20 64 65 73  umbered file des
5b40: 63 72 69 70 74 6f 72 73 20 69 73 20 61 20 64 65  criptors is a de
5b50: 66 65 6e 73 65 20 61 67 61 69 6e 73 74 0a 20 20  fense against.  
5b60: 61 63 63 69 64 65 6e 74 61 6c 20 64 61 74 61 62  accidental datab
5b70: 61 73 65 20 63 6f 72 72 75 70 74 69 6f 6e 2e 20  ase corruption. 
5b80: 20 49 66 20 61 20 64 61 74 61 62 61 73 65 20 66   If a database f
5b90: 69 6c 65 20 77 61 73 20 6f 70 65 6e 65 64 20 75  ile was opened u
5ba0: 73 69 6e 67 0a 20 20 66 69 6c 65 20 64 65 73 63  sing.  file desc
5bb0: 72 69 70 74 6f 72 20 32 2c 20 66 6f 72 20 65 78  riptor 2, for ex
5bc0: 61 6d 70 6c 65 2c 20 61 6e 64 20 74 68 65 6e 20  ample, and then 
5bd0: 61 6e 20 61 73 73 65 72 74 28 29 20 66 61 69 6c  an assert() fail
5be0: 65 64 20 61 6e 64 20 69 6e 76 6f 6b 65 64 0a 20  ed and invoked. 
5bf0: 20 77 72 69 74 65 28 32 2c 2e 2e 2e 29 2c 20 74   write(2,...), t
5c00: 68 61 74 20 77 6f 75 6c 64 20 6c 69 6b 65 6c 79  hat would likely
5c10: 20 63 61 75 73 65 20 64 61 74 61 62 61 73 65 20   cause database 
5c20: 63 6f 72 72 75 70 74 69 6f 6e 20 62 79 20 6f 76  corruption by ov
5c30: 65 72 77 72 69 74 69 6e 67 0a 20 20 70 61 72 74  erwriting.  part
5c40: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
5c50: 20 66 69 6c 65 20 77 69 74 68 20 74 68 65 20 61   file with the a
5c60: 73 73 65 72 74 69 6f 6e 20 65 72 72 6f 72 20 6d  ssertion error m
5c70: 65 73 73 61 67 65 2e 20 20 55 73 69 6e 67 20 6f  essage.  Using o
5c80: 6e 6c 79 0a 20 20 68 69 67 68 65 72 2d 76 61 6c  nly.  higher-val
5c90: 75 65 64 20 66 69 6c 65 20 64 65 73 63 72 69 70  ued file descrip
5ca0: 74 6f 72 73 20 61 76 6f 69 64 73 20 74 68 69 73  tors avoids this
5cb0: 20 70 6f 74 65 6e 74 69 61 6c 20 70 72 6f 62 6c   potential probl
5cc0: 65 6d 2e 20 20 54 68 65 20 0a 20 20 70 72 6f 74  em.  The .  prot
5cd0: 65 63 74 69 6f 6e 20 61 67 61 69 6e 73 74 0a 20  ection against. 
5ce0: 20 75 73 69 6e 67 20 6c 6f 77 2d 6e 75 6d 62 65   using low-numbe
5cf0: 72 65 64 20 66 69 6c 65 20 64 65 73 63 72 69 70  red file descrip
5d00: 74 6f 72 73 20 63 61 6e 20 62 65 20 64 69 73 61  tors can be disa
5d10: 62 6c 65 64 20 62 79 20 73 65 74 74 69 6e 67 20  bled by setting 
5d20: 74 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74  this.  compile-t
5d30: 69 6d 65 20 6f 70 74 69 6f 6e 20 74 6f 20 30 2e  ime option to 0.
5d40: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
5d50: 4f 4e 20 7b 53 51 4c 49 54 45 5f 50 4f 57 45 52  ON {SQLITE_POWER
5d60: 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 3d 3c  SAFE_OVERWRITE=<
5d70: 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b  i>&lt;0 or 1&gt;
5d80: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  </i>} {.  This o
5d90: 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68  ption changes th
5da0: 65 20 64 65 66 61 75 6c 74 20 61 73 73 75 6d 70  e default assump
5db0: 74 69 6f 6e 20 61 62 6f 75 74 20 5b 70 6f 77 65  tion about [powe
5dc0: 72 73 61 66 65 20 6f 76 65 72 77 72 69 74 65 5d  rsafe overwrite]
5dd0: 0a 20 20 66 6f 72 20 74 68 65 20 75 6e 64 65 72  .  for the under
5de0: 6c 79 69 6e 67 20 66 69 6c 65 73 79 73 74 65 6d  lying filesystem
5df0: 73 20 66 6f 72 20 74 68 65 20 75 6e 69 78 20 61  s for the unix a
5e00: 6e 64 20 77 69 6e 64 6f 77 73 20 5b 56 46 53 65  nd windows [VFSe
5e10: 73 5d 2e 0a 20 20 53 65 74 74 69 6e 67 20 53 51  s]..  Setting SQ
5e20: 4c 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f  LITE_POWERSAFE_O
5e30: 56 45 52 57 52 49 54 45 20 74 6f 20 31 20 63 61  VERWRITE to 1 ca
5e40: 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 61  uses SQLite to a
5e50: 73 73 75 6d 65 20 74 68 61 74 0a 20 20 61 70 70  ssume that.  app
5e60: 6c 69 63 61 74 69 6f 6e 2d 6c 65 76 65 6c 20 77  lication-level w
5e70: 72 69 74 65 73 20 63 61 6e 6e 6f 74 20 63 68 61  rites cannot cha
5e80: 6e 67 65 73 20 62 79 74 65 73 20 6f 75 74 73 69  nges bytes outsi
5e90: 64 65 20 74 68 65 20 72 61 6e 67 65 20 6f 66 0a  de the range of.
5ea0: 20 20 62 79 74 65 73 20 77 72 69 74 74 65 6e 20    bytes written 
5eb0: 65 76 65 6e 20 69 66 20 74 68 65 20 77 72 69 74  even if the writ
5ec0: 65 20 6f 63 63 75 72 73 20 6a 75 73 74 20 62 65  e occurs just be
5ed0: 66 6f 72 65 20 61 20 70 6f 77 65 72 20 6c 6f 73  fore a power los
5ee0: 73 2e 0a 20 20 57 69 74 68 20 53 51 4c 49 54 45  s..  With SQLITE
5ef0: 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57  _POWERSAFE_OVERW
5f00: 52 49 54 45 20 73 65 74 20 74 6f 20 30 2c 20 53  RITE set to 0, S
5f10: 51 4c 69 74 65 20 61 73 73 75 6d 65 73 20 74 68  QLite assumes th
5f20: 61 74 20 6f 74 68 65 72 0a 20 20 62 79 74 65 73  at other.  bytes
5f30: 20 69 6e 20 74 68 65 20 73 61 6d 65 20 73 65 63   in the same sec
5f40: 74 6f 72 20 77 69 74 68 20 61 20 77 72 69 74 74  tor with a writt
5f50: 65 6e 20 62 79 74 65 20 6d 69 67 68 74 20 62 65  en byte might be
5f60: 20 63 68 61 6e 67 65 64 20 6f 72 20 0a 20 20 64   changed or .  d
5f70: 61 6d 61 67 65 64 20 62 79 20 61 20 70 6f 77 65  amaged by a powe
5f80: 72 20 6c 6f 73 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  r loss..}..COMPI
5f90: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
5fa0: 45 5f 51 55 45 52 59 5f 50 4c 41 4e 4e 45 52 5f  E_QUERY_PLANNER_
5fb0: 4c 49 4d 49 54 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20  LIMIT=<i>N</i>} 
5fc0: 7b 0a 20 20 41 73 20 70 61 72 74 20 6f 66 20 74  {.  As part of t
5fd0: 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 69 6e  he query plannin
5fe0: 67 20 70 72 6f 63 65 73 73 2c 20 53 51 4c 69 74  g process, SQLit
5ff0: 65 20 65 6e 75 6d 65 72 61 74 65 73 20 61 6c 6c  e enumerates all
6000: 20 75 73 61 62 6c 65 0a 20 20 63 6f 6d 62 69 6e   usable.  combin
6010: 61 74 69 6f 6e 73 20 6f 66 20 69 6e 64 65 78 65  ations of indexe
6020: 73 20 61 6e 64 20 57 48 45 52 45 2d 63 6c 61 75  s and WHERE-clau
6030: 73 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20  se constraints. 
6040: 20 46 6f 72 20 63 65 72 74 61 69 6e 0a 20 20 70   For certain.  p
6050: 61 74 68 6f 6c 6f 67 69 63 61 6c 20 71 75 65 72  athological quer
6060: 69 65 73 2c 20 74 68 65 20 6e 75 6d 62 65 72 20  ies, the number 
6070: 6f 66 20 74 68 65 73 65 20 69 6e 64 65 78 2d 61  of these index-a
6080: 6e 64 2d 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  nd-constraint co
6090: 6d 62 69 6e 61 74 69 6f 6e 73 0a 20 20 63 61 6e  mbinations.  can
60a0: 20 62 65 20 76 65 72 79 20 6c 61 72 67 65 2c 20   be very large, 
60b0: 72 65 73 75 6c 74 69 6e 67 20 69 6e 20 73 6c 6f  resulting in slo
60c0: 77 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 62 79  w performance by
60d0: 20 74 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e   the query plann
60e0: 65 72 2e 0a 20 20 54 68 65 20 53 51 4c 49 54 45  er..  The SQLITE
60f0: 5f 51 55 45 52 59 5f 50 4c 41 4e 4e 45 52 5f 4c  _QUERY_PLANNER_L
6100: 49 4d 49 54 20 76 61 6c 75 65 20 28 69 6e 20 63  IMIT value (in c
6110: 6f 6e 6a 75 6e 63 74 69 6f 6e 20 77 69 74 68 20  onjunction with 
6120: 74 68 65 0a 20 20 72 65 6c 61 74 65 64 20 5b 53  the.  related [S
6130: 51 4c 49 54 45 5f 51 55 45 52 59 5f 50 4c 41 4e  QLITE_QUERY_PLAN
6140: 4e 45 52 5f 4c 49 4d 49 54 5f 49 4e 43 52 5d 20  NER_LIMIT_INCR] 
6150: 73 65 74 74 69 6e 67 29 20 6c 69 6d 69 74 73 20  setting) limits 
6160: 74 68 65 20 6e 75 6d 62 65 72 20 0a 20 20 6f 66  the number .  of
6170: 20 69 6e 64 65 78 2d 61 6e 64 2d 63 6f 6e 73 74   index-and-const
6180: 72 61 69 6e 74 20 63 6f 6d 62 69 6e 61 74 69 6f  raint combinatio
6190: 6e 73 20 74 68 61 74 20 74 68 65 20 71 75 65 72  ns that the quer
61a0: 79 20 70 6c 61 6e 6e 65 72 20 77 69 6c 6c 20 0a  y planner will .
61b0: 20 20 63 6f 6e 73 69 64 65 72 2c 20 69 6e 20 6f    consider, in o
61c0: 72 64 65 72 20 74 6f 20 70 72 65 76 65 6e 74 20  rder to prevent 
61d0: 74 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65  the query planne
61e0: 72 20 66 72 6f 6d 20 75 73 69 6e 67 20 65 78 63  r from using exc
61f0: 65 73 73 0a 20 20 43 50 55 20 74 69 6d 65 2e 20  ess.  CPU time. 
6200: 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   The default val
6210: 75 65 20 66 6f 72 20 53 51 4c 49 54 45 5f 51 55  ue for SQLITE_QU
6220: 45 52 59 5f 50 4c 41 4e 4e 45 52 5f 4c 49 4d 49  ERY_PLANNER_LIMI
6230: 54 20 69 73 20 73 65 74 0a 20 20 68 69 67 68 20  T is set.  high 
6240: 65 6e 6f 75 67 68 20 73 6f 20 74 68 61 74 20 69  enough so that i
6250: 73 20 6e 65 76 65 72 20 72 65 61 63 68 65 64 20  s never reached 
6260: 66 6f 72 20 72 65 61 6c 2d 77 6f 72 6c 64 20 71  for real-world q
6270: 75 65 72 69 65 73 2e 20 20 54 68 65 0a 20 20 71  ueries.  The.  q
6280: 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 73 65 61  uery planner sea
6290: 72 63 68 20 6c 69 6d 69 74 20 6f 6e 6c 79 20 61  rch limit only a
62a0: 70 70 6c 69 65 73 20 74 6f 20 71 75 65 72 69 65  pplies to querie
62b0: 73 20 74 68 61 74 20 61 72 65 20 64 65 6c 69 62  s that are delib
62c0: 65 72 61 74 65 6c 79 0a 20 20 63 72 61 66 74 65  erately.  crafte
62d0: 64 20 74 6f 20 75 73 65 20 65 78 63 65 73 73 20  d to use excess 
62e0: 70 6c 61 6e 6e 69 6e 67 20 74 69 6d 65 2e 0a 7d  planning time..}
62f0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
6300: 20 7b 53 51 4c 49 54 45 5f 51 55 45 52 59 5f 50   {SQLITE_QUERY_P
6310: 4c 41 4e 4e 45 52 5f 4c 49 4d 49 54 5f 49 4e 43  LANNER_LIMIT_INC
6320: 52 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20  R=<i>N</i>} {.  
6330: 54 68 65 20 5b 53 51 4c 49 54 45 5f 51 55 45 52  The [SQLITE_QUER
6340: 59 5f 50 4c 41 4e 4e 45 52 5f 4c 49 4d 49 54 5d  Y_PLANNER_LIMIT]
6350: 20 6f 70 74 69 6f 6e 20 73 65 74 73 20 61 6e 20   option sets an 
6360: 69 6e 69 74 69 61 6c 20 62 61 73 65 6c 69 6e 65  initial baseline
6370: 20 76 61 6c 75 65 0a 20 20 66 6f 72 20 74 68 65   value.  for the
6380: 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20   maximum number 
6390: 6f 66 20 69 6e 64 65 78 2d 61 6e 64 2d 63 6f 6e  of index-and-con
63a0: 73 74 72 61 69 6e 74 20 63 6f 6d 62 69 6e 61 74  straint combinat
63b0: 69 6f 6e 73 20 74 68 61 74 20 74 68 65 0a 20 20  ions that the.  
63c0: 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 63 6f  query planner co
63d0: 6e 73 69 64 65 72 2e 20 20 54 68 65 20 62 61 73  nsider.  The bas
63e0: 65 6c 69 6e 65 20 71 75 65 72 79 20 70 6c 61 6e  eline query plan
63f0: 6e 65 72 20 6c 69 6d 69 74 20 69 73 20 69 6e 63  ner limit is inc
6400: 72 65 61 73 65 64 0a 20 20 62 79 20 53 51 4c 49  reased.  by SQLI
6410: 54 45 5f 51 55 45 52 59 5f 50 4c 41 4e 4e 45 52  TE_QUERY_PLANNER
6420: 5f 4c 49 4d 49 54 5f 49 4e 43 52 20 70 72 69 6f  _LIMIT_INCR prio
6430: 72 20 74 6f 20 70 72 6f 63 65 73 73 69 6e 67 20  r to processing 
6440: 65 61 63 68 20 74 61 62 6c 65 20 6f 66 20 61 0a  each table of a.
6450: 20 20 6a 6f 69 6e 20 73 6f 20 74 68 61 74 20 65    join so that e
6460: 61 63 68 20 74 61 62 6c 65 20 69 73 20 67 75 61  ach table is gua
6470: 72 61 6e 74 65 65 64 20 74 6f 20 62 65 20 61 62  ranteed to be ab
6480: 6c 65 20 74 6f 20 70 72 6f 70 6f 73 65 20 61 74  le to propose at
6490: 20 6c 65 61 73 74 0a 20 20 73 6f 6d 65 20 69 6e   least.  some in
64a0: 64 65 78 2d 61 6e 64 2d 63 6f 6e 73 74 72 61 69  dex-and-constrai
64b0: 6e 74 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 20  nt combinations 
64c0: 74 6f 20 74 68 65 20 6f 70 74 69 6d 69 7a 65 72  to the optimizer
64d0: 20 65 76 65 6e 20 69 66 20 70 72 69 6f 72 0a 20   even if prior. 
64e0: 20 74 61 62 6c 65 73 20 6f 66 20 74 68 65 20 6a   tables of the j
64f0: 6f 69 6e 20 68 61 76 65 20 65 78 68 61 75 73 74  oin have exhaust
6500: 65 64 20 74 68 65 20 62 61 73 65 6c 69 6e 65 20  ed the baseline 
6510: 6c 69 6d 69 74 2e 20 20 54 68 65 20 64 65 66 61  limit.  The defa
6520: 75 6c 74 0a 20 20 76 61 6c 75 65 20 66 6f 72 20  ult.  value for 
6530: 62 6f 74 68 20 74 68 69 73 20 63 6f 6d 70 69 6c  both this compil
6540: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 61 6e  e-time option an
6550: 64 20 74 68 65 0a 20 20 5b 53 51 4c 49 54 45 5f  d the.  [SQLITE_
6560: 51 55 45 52 59 5f 50 4c 41 4e 4e 45 52 5f 4c 49  QUERY_PLANNER_LI
6570: 4d 49 54 5d 20 6f 70 74 69 6f 6e 20 61 72 65 20  MIT] option are 
6580: 73 65 74 20 68 69 67 68 20 65 6e 6f 75 67 68 20  set high enough 
6590: 73 6f 20 74 68 61 74 20 74 68 65 79 20 73 68 6f  so that they sho
65a0: 75 6c 64 0a 20 20 6e 65 76 65 72 20 62 65 20 72  uld.  never be r
65b0: 65 61 63 68 65 64 20 66 6f 72 20 72 65 61 6c 2d  eached for real-
65c0: 77 6f 72 6c 64 20 71 75 65 72 69 65 73 2e 0a 7d  world queries..}
65d0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
65e0: 20 7b 53 51 4c 49 54 45 5f 52 45 56 45 52 53 45   {SQLITE_REVERSE
65f0: 5f 55 4e 4f 52 44 45 52 45 44 5f 53 45 4c 45 43  _UNORDERED_SELEC
6600: 54 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  TS} {.  This opt
6610: 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b  ion causes the [
6620: 50 52 41 47 4d 41 20 72 65 76 65 72 73 65 5f 75  PRAGMA reverse_u
6630: 6e 6f 72 64 65 72 65 64 5f 73 65 6c 65 63 74 73  nordered_selects
6640: 5d 20 73 65 74 74 69 6e 67 20 74 6f 20 62 65 0a  ] setting to be.
6650: 20 20 65 6e 61 62 6c 65 64 20 62 79 20 64 65 66    enabled by def
6660: 61 75 6c 74 2e 20 20 57 68 65 6e 20 65 6e 61 62  ault.  When enab
6670: 6c 65 64 2c 20 5b 53 45 4c 45 43 54 5d 20 73 74  led, [SELECT] st
6680: 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 6c 61  atements that la
6690: 63 6b 20 61 6e 0a 20 20 4f 52 44 45 52 20 42 59  ck an.  ORDER BY
66a0: 20 63 6c 61 75 73 65 20 77 69 6c 6c 20 72 75 6e   clause will run
66b0: 20 69 6e 20 72 65 76 65 72 73 65 20 6f 72 64 65   in reverse orde
66c0: 72 2e 3c 70 3e 0a 20 20 54 68 69 73 20 6f 70 74  r.<p>.  This opt
66d0: 69 6f 6e 20 69 73 20 75 73 65 66 75 6c 20 66 6f  ion is useful fo
66e0: 72 20 64 65 74 65 63 74 69 6e 67 20 77 68 65 6e  r detecting when
66f0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 28 69   applications (i
6700: 6e 63 6f 72 72 65 63 74 6c 79 29 0a 20 20 61 73  ncorrectly).  as
6710: 73 75 6d 65 20 74 68 61 74 20 74 68 65 20 6f 72  sume that the or
6720: 64 65 72 20 6f 66 20 72 6f 77 73 20 69 6e 20 61  der of rows in a
6730: 20 53 45 4c 45 43 54 20 77 69 74 68 6f 75 74 20   SELECT without 
6740: 61 6e 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75  an ORDER BY clau
6750: 73 65 0a 20 20 77 69 6c 6c 20 61 6c 77 61 79 73  se.  will always
6760: 20 62 65 20 74 68 65 20 73 61 6d 65 2e 0a 7d 0a   be the same..}.
6770: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
6780: 7b 53 51 4c 49 54 45 5f 53 4f 52 54 45 52 5f 50  {SQLITE_SORTER_P
6790: 4d 41 53 5a 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b  MASZ=<i>N</i>} {
67a0: 0a 20 20 49 66 20 6d 75 6c 74 69 2d 74 68 72 65  .  If multi-thre
67b0: 61 64 65 64 20 70 72 6f 63 65 73 73 69 6e 67 20  aded processing 
67c0: 69 73 20 65 6e 61 62 6c 65 64 20 76 69 61 20 74  is enabled via t
67d0: 68 65 0a 20 20 5b 50 52 41 47 4d 41 20 74 68 72  he.  [PRAGMA thr
67e0: 65 61 64 73 5d 20 73 65 74 74 69 6e 67 2c 20 74  eads] setting, t
67f0: 68 65 6e 20 73 6f 72 74 20 6f 70 65 72 61 74 69  hen sort operati
6800: 6f 6e 73 20 77 69 6c 6c 0a 20 20 61 74 74 65 6d  ons will.  attem
6810: 70 74 20 74 6f 20 73 74 61 72 74 20 68 65 6c 70  pt to start help
6820: 65 72 20 74 68 72 65 61 64 73 20 77 68 65 6e 20  er threads when 
6830: 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 63 6f  the amount of co
6840: 6e 74 65 6e 74 0a 20 20 74 6f 20 62 65 20 73 6f  ntent.  to be so
6850: 72 74 65 64 20 65 78 63 65 65 64 73 20 74 68 65  rted exceeds the
6860: 20 6d 69 6e 69 6d 75 6d 20 6f 66 20 74 68 65 20   minimum of the 
6870: 5b 63 61 63 68 65 5f 73 69 7a 65 5d 20 61 6e 64  [cache_size] and
6880: 20 50 4d 41 20 53 69 7a 65 0a 20 20 64 65 74 65   PMA Size.  dete
6890: 72 6d 69 6e 65 64 20 62 79 20 74 68 65 20 5b 53  rmined by the [S
68a0: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41  QLITE_CONFIG_PMA
68b0: 53 5a 5d 20 73 74 61 72 74 2d 74 69 6d 65 20 6f  SZ] start-time o
68c0: 70 74 69 6f 6e 2e 0a 20 20 54 68 69 73 20 63 6f  ption..  This co
68d0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
68e0: 6e 20 73 65 74 73 20 74 68 65 20 64 65 66 61 75  n sets the defau
68f0: 6c 74 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65  lt value for the
6900: 0a 20 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  .  [SQLITE_CONFI
6910: 47 5f 50 4d 41 53 5a 5d 20 73 74 61 72 74 2d 74  G_PMASZ] start-t
6920: 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a 20 20 54 68  ime option..  Th
6930: 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20  e default value 
6940: 69 73 20 32 35 30 2e 0a 7d 0a 0a 43 4f 4d 50 49  is 250..}..COMPI
6950: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
6960: 45 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c  E_STMTJRNL_SPILL
6970: 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54  =<i>N</i>} {.  T
6980: 68 65 20 53 51 4c 49 54 45 5f 53 54 4d 54 4a 52  he SQLITE_STMTJR
6990: 4e 4c 5f 53 50 49 4c 4c 20 63 6f 6d 70 69 6c 65  NL_SPILL compile
69a0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 64 65 74  -time option det
69b0: 65 72 6d 69 6e 65 73 20 74 68 65 0a 20 20 64 65  ermines the.  de
69c0: 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 6f 66  fault setting of
69d0: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e   the [SQLITE_CON
69e0: 46 49 47 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49  FIG_STMTJRNL_SPI
69f0: 4c 4c 5d 20 73 74 61 72 74 2d 74 69 6d 65 0a 20  LL] start-time. 
6a00: 20 73 65 74 74 69 6e 67 2e 20 20 54 68 61 74 20   setting.  That 
6a10: 73 65 74 74 69 6e 67 20 64 65 74 65 72 6d 69 6e  setting determin
6a20: 65 73 20 74 68 65 20 73 69 7a 65 20 74 68 72 65  es the size thre
6a30: 73 68 6f 6c 64 20 61 62 6f 76 65 20 77 68 69 63  shold above whic
6a40: 68 0a 20 20 5b 73 74 61 74 65 6d 65 6e 74 20 6a  h.  [statement j
6a50: 6f 75 72 6e 61 6c 73 5d 20 61 72 65 20 6d 6f 76  ournals] are mov
6a60: 65 64 20 66 72 6f 6d 20 6d 65 6d 6f 72 79 20 74  ed from memory t
6a70: 6f 20 64 69 73 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49  o disk..}..COMPI
6a80: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
6a90: 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 7d 20  E_WIN32_MALLOC} 
6aa0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
6ab0: 65 6e 61 62 6c 65 73 20 74 68 65 20 75 73 65 20  enables the use 
6ac0: 6f 66 20 74 68 65 20 57 69 6e 64 6f 77 73 20 48  of the Windows H
6ad0: 65 61 70 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  eap API function
6ae0: 73 20 66 6f 72 20 6d 65 6d 6f 72 79 0a 20 20 61  s for memory.  a
6af0: 6c 6c 6f 63 61 74 69 6f 6e 20 69 6e 73 74 65 61  llocation instea
6b00: 64 20 6f 66 20 74 68 65 20 73 74 61 6e 64 61 72  d of the standar
6b10: 64 20 6c 69 62 72 61 72 79 20 6d 61 6c 6c 6f 63  d library malloc
6b20: 28 29 20 61 6e 64 20 66 72 65 65 28 29 20 72 6f  () and free() ro
6b30: 75 74 69 6e 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  utines..}..COMPI
6b40: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 59 59 53 54 41  LE_OPTION {YYSTA
6b50: 43 4b 44 45 50 54 48 3d 3c 69 3e 26 6c 74 3b 6d  CKDEPTH=<i>&lt;m
6b60: 61 78 5f 64 65 70 74 68 26 67 74 3b 3c 2f 69 3e  ax_depth&gt;</i>
6b70: 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
6b80: 20 73 65 74 73 20 74 68 65 20 6d 61 78 69 6d 75   sets the maximu
6b90: 6d 20 64 65 70 74 68 20 6f 66 20 74 68 65 20 4c  m depth of the L
6ba0: 41 4c 52 28 31 29 20 73 74 61 63 6b 20 75 73 65  ALR(1) stack use
6bb0: 64 20 62 79 0a 20 20 74 68 65 20 53 51 4c 20 70  d by.  the SQL p
6bc0: 61 72 73 65 72 20 77 69 74 68 69 6e 20 53 51 4c  arser within SQL
6bd0: 69 74 65 2e 20 20 54 68 65 20 64 65 66 61 75 6c  ite.  The defaul
6be0: 74 20 76 61 6c 75 65 20 69 73 20 31 30 30 2e 20  t value is 100. 
6bf0: 20 41 20 74 79 70 69 63 61 6c 0a 20 20 61 70 70   A typical.  app
6c00: 6c 69 63 61 74 69 6f 6e 20 77 69 6c 6c 20 75 73  lication will us
6c10: 65 20 6c 65 73 73 20 74 68 61 6e 20 61 62 6f 75  e less than abou
6c20: 74 20 32 30 20 6c 65 76 65 6c 73 20 6f 66 20 74  t 20 levels of t
6c30: 68 65 20 73 74 61 63 6b 2e 0a 20 20 44 65 76 65  he stack..  Deve
6c40: 6c 6f 70 65 72 73 20 77 68 6f 73 65 20 61 70 70  lopers whose app
6c50: 6c 69 63 61 74 69 6f 6e 73 20 63 6f 6e 74 61 69  lications contai
6c60: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  n SQL statements
6c70: 20 74 68 61 74 20 0a 20 20 6e 65 65 64 20 6d 6f   that .  need mo
6c80: 72 65 20 74 68 61 6e 20 31 30 30 20 4c 41 4c 52  re than 100 LALR
6c90: 28 31 29 20 73 74 61 63 6b 20 65 6e 74 72 69 65  (1) stack entrie
6ca0: 73 20 73 68 6f 75 6c 64 20 73 65 72 69 6f 75 73  s should serious
6cb0: 6c 79 0a 20 20 63 6f 6e 73 69 64 65 72 20 72 65  ly.  consider re
6cc0: 66 61 63 74 6f 72 69 6e 67 20 74 68 65 69 72 20  factoring their 
6cd0: 53 51 4c 20 61 73 20 69 74 20 69 73 20 6c 69 6b  SQL as it is lik
6ce0: 65 6c 79 20 74 6f 20 62 65 20 77 65 6c 6c 20 62  ely to be well b
6cf0: 65 79 6f 6e 64 0a 20 20 74 68 65 20 61 62 69 6c  eyond.  the abil
6d00: 69 74 79 20 6f 66 20 61 6e 79 20 68 75 6d 61 6e  ity of any human
6d10: 20 74 6f 20 63 6f 6d 70 72 65 68 65 6e 64 2e 0a   to comprehend..
6d20: 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 68 31 3e 20 4f  }.</tcl>..<h1> O
6d30: 70 74 69 6f 6e 73 20 54 6f 20 53 65 74 20 53 69  ptions To Set Si
6d40: 7a 65 20 4c 69 6d 69 74 73 3c 2f 68 31 3e 0a 0a  ze Limits</h1>..
6d50: 3c 70 3e 54 68 65 72 65 20 61 72 65 20 63 6f 6d  <p>There are com
6d60: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
6d70: 73 20 74 68 61 74 20 77 69 6c 6c 20 73 65 74 20  s that will set 
6d80: 75 70 70 65 72 20 62 6f 75 6e 64 73 0a 6f 6e 20  upper bounds.on 
6d90: 74 68 65 20 73 69 7a 65 73 20 6f 66 20 76 61 72  the sizes of var
6da0: 69 6f 75 73 20 73 74 72 75 63 74 75 72 65 73 20  ious structures 
6db0: 69 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 65 20  in SQLite.  The 
6dc0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74  compile-time.opt
6dd0: 69 6f 6e 73 20 6e 6f 72 6d 61 6c 6c 79 20 73 65  ions normally se
6de0: 74 20 61 20 68 61 72 64 20 75 70 70 65 72 20 62  t a hard upper b
6df0: 6f 75 6e 64 20 74 68 61 74 20 63 61 6e 20 62 65  ound that can be
6e00: 20 63 68 61 6e 67 65 64 0a 61 74 20 72 75 6e 2d   changed.at run-
6e10: 74 69 6d 65 20 6f 6e 20 69 6e 64 69 76 69 64 75  time on individu
6e20: 61 6c 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  al [database con
6e30: 6e 65 63 74 69 6f 6e 73 5d 20 75 73 69 6e 67 20  nections] using 
6e40: 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f 6c 69 6d  the.[sqlite3_lim
6e50: 69 74 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e  it()] interface.
6e60: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f 6d  </p>..<p>The com
6e70: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
6e80: 73 20 66 6f 72 20 73 65 74 74 69 6e 67 20 75 70  s for setting up
6e90: 70 65 72 20 62 6f 75 6e 64 73 20 61 72 65 0a 5b  per bounds are.[
6ea0: 6c 69 6d 69 74 73 20 7c 20 64 6f 63 75 6d 65 6e  limits | documen
6eb0: 74 65 64 20 73 65 70 61 72 61 74 65 6c 79 5d 2e  ted separately].
6ec0: 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20    The following 
6ed0: 69 73 20 61 20 6c 69 73 74 20 6f 66 0a 74 68 65  is a list of.the
6ee0: 20 61 76 61 69 6c 61 62 6c 65 20 73 65 74 74 69   available setti
6ef0: 6e 67 73 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c  ngs:</p>..<ul>.<
6f00: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  li> [SQLITE_MAX_
6f10: 41 54 54 41 43 48 45 44 5d 20 20 3c 2f 6c 69 3e  ATTACHED]  </li>
6f20: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
6f30: 58 5f 43 4f 4c 55 4d 4e 5d 20 20 3c 2f 6c 69 3e  X_COLUMN]  </li>
6f40: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
6f50: 58 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43  X_COMPOUND_SELEC
6f60: 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b  T]  </li>.<li> [
6f70: 53 51 4c 49 54 45 5f 4d 41 58 5f 45 58 50 52 5f  SQLITE_MAX_EXPR_
6f80: 44 45 50 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  DEPTH]  </li>.<l
6f90: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 46  i> [SQLITE_MAX_F
6fa0: 55 4e 43 54 49 4f 4e 5f 41 52 47 5d 20 20 3c 2f  UNCTION_ARG]  </
6fb0: 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  li>.<li> [SQLITE
6fc0: 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f  _MAX_LENGTH]  </
6fd0: 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  li>.<li> [SQLITE
6fe0: 5f 4d 41 58 5f 4c 49 4b 45 5f 50 41 54 54 45 52  _MAX_LIKE_PATTER
6ff0: 4e 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e  N_LENGTH]  </li>
7000: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
7010: 58 5f 50 41 47 45 5f 43 4f 55 4e 54 5d 20 20 3c  X_PAGE_COUNT]  <
7020: 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  /li>.<li> [SQLIT
7030: 45 5f 4d 41 58 5f 53 51 4c 5f 4c 45 4e 47 54 48  E_MAX_SQL_LENGTH
7040: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
7050: 51 4c 49 54 45 5f 4d 41 58 5f 56 41 52 49 41 42  QLITE_MAX_VARIAB
7060: 4c 45 5f 4e 55 4d 42 45 52 5d 20 20 3c 2f 6c 69  LE_NUMBER]  </li
7070: 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 61 20 6e 61 6d 65  >.</ul>..<a name
7080: 3d 22 63 6f 6e 74 72 6f 6c 66 65 61 74 75 72 65  ="controlfeature
7090: 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 4f 70 74  s"></a>.<h1> Opt
70a0: 69 6f 6e 73 20 54 6f 20 43 6f 6e 74 72 6f 6c 20  ions To Control 
70b0: 4f 70 65 72 61 74 69 6e 67 20 43 68 61 72 61 63  Operating Charac
70c0: 74 65 72 69 73 74 69 63 73 3c 2f 68 31 3e 0a 0a  teristics</h1>..
70d0: 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50  <tcl>.COMPILE_OP
70e0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 34 5f 42  TION {SQLITE_4_B
70f0: 59 54 45 5f 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c  YTE_ALIGNED_MALL
7100: 4f 43 7d 20 7b 0a 20 20 4f 6e 20 6d 6f 73 74 20  OC} {.  On most 
7110: 73 79 73 74 65 6d 73 2c 20 74 68 65 20 6d 61 6c  systems, the mal
7120: 6c 6f 63 28 29 20 73 79 73 74 65 6d 20 63 61 6c  loc() system cal
7130: 6c 20 72 65 74 75 72 6e 73 20 61 20 62 75 66 66  l returns a buff
7140: 65 72 20 74 68 61 74 20 69 73 0a 20 20 61 6c 69  er that is.  ali
7150: 67 6e 65 64 20 74 6f 20 61 6e 20 38 2d 62 79 74  gned to an 8-byt
7160: 65 20 62 6f 75 6e 64 61 72 79 2e 20 20 42 75 74  e boundary.  But
7170: 20 6f 6e 20 73 6f 6d 65 20 73 79 73 74 65 6d 73   on some systems
7180: 20 28 65 78 3a 20 77 69 6e 64 6f 77 73 29 20 6d   (ex: windows) m
7190: 61 6c 6c 6f 63 28 29 0a 20 20 72 65 74 75 72 6e  alloc().  return
71a0: 73 20 34 2d 62 79 74 65 20 61 6c 69 67 6e 65 64  s 4-byte aligned
71b0: 20 70 6f 69 6e 74 65 72 2e 20 20 54 68 69 73 20   pointer.  This 
71c0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
71d0: 69 6f 6e 20 6d 75 73 74 20 62 65 20 75 73 65 64  ion must be used
71e0: 0a 20 20 6f 6e 20 73 79 73 74 65 6d 73 20 74 68  .  on systems th
71f0: 61 74 20 72 65 74 75 72 6e 20 34 2d 62 79 74 65  at return 4-byte
7200: 20 61 6c 69 67 6e 65 64 20 70 6f 69 6e 74 65 72   aligned pointer
7210: 73 20 66 72 6f 6d 20 6d 61 6c 6c 6f 63 28 29 2e  s from malloc().
7220: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
7230: 4f 4e 20 7b 53 51 4c 49 54 45 5f 43 41 53 45 5f  ON {SQLITE_CASE_
7240: 53 45 4e 53 49 54 49 56 45 5f 4c 49 4b 45 7d 20  SENSITIVE_LIKE} 
7250: 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  {.  If this opti
7260: 6f 6e 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74  on is present, t
7270: 68 65 6e 20 74 68 65 20 62 75 69 6c 74 2d 69 6e  hen the built-in
7280: 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72   [LIKE] operator
7290: 20 77 69 6c 6c 20 62 65 0a 20 20 63 61 73 65 20   will be.  case 
72a0: 73 65 6e 73 69 74 69 76 65 2e 20 20 54 68 69 73  sensitive.  This
72b0: 20 73 61 6d 65 20 65 66 66 65 63 74 20 63 61 6e   same effect can
72c0: 20 62 65 20 61 63 68 69 65 76 65 64 20 61 74 20   be achieved at 
72d0: 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20  run-time using. 
72e0: 20 74 68 65 20 5b 63 61 73 65 5f 73 65 6e 73 69   the [case_sensi
72f0: 74 69 76 65 5f 6c 69 6b 65 20 70 72 61 67 6d 61  tive_like pragma
7300: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
7310: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 52  TION {SQLITE_DIR
7320: 45 43 54 5f 4f 56 45 52 46 4c 4f 57 5f 52 45 41  ECT_OVERFLOW_REA
7330: 44 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  D} {.  When this
7340: 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65   option is prese
7350: 6e 74 2c 20 63 6f 6e 74 65 6e 74 20 63 6f 6e 74  nt, content cont
7360: 61 69 6e 65 64 20 69 6e 0a 20 20 5b 6f 76 65 72  ained in.  [over
7370: 66 6c 6f 77 20 70 61 67 65 73 5d 20 6f 66 20 74  flow pages] of t
7380: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
7390: 20 69 73 20 72 65 61 64 20 64 69 72 65 63 74 6c   is read directl
73a0: 79 20 66 72 6f 6d 20 64 69 73 6b 2c 0a 20 20 62  y from disk,.  b
73b0: 79 70 61 73 73 69 6e 67 20 74 68 65 20 5b 70 61  ypassing the [pa
73c0: 67 65 20 63 61 63 68 65 5d 2c 20 64 75 72 69 6e  ge cache], durin
73d0: 67 20 72 65 61 64 20 74 72 61 6e 73 61 63 74 69  g read transacti
73e0: 6f 6e 73 2e 20 20 49 6e 20 61 70 70 6c 69 63 61  ons.  In applica
73f0: 74 69 6f 6e 73 0a 20 20 74 68 61 74 20 64 6f 20  tions.  that do 
7400: 61 20 6c 6f 74 20 6f 66 20 72 65 61 64 73 20 6f  a lot of reads o
7410: 66 20 6c 61 72 67 65 20 42 4c 4f 42 73 2c 20 74  f large BLOBs, t
7420: 68 69 73 20 6f 70 74 69 6f 6e 20 6d 69 67 68 74  his option might
7430: 20 69 6d 70 72 6f 76 65 20 72 65 61 64 0a 20 20   improve read.  
7440: 70 65 72 66 6f 72 6d 61 6e 63 65 2e 0a 7d 0a 0a  performance..}..
7450: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
7460: 53 51 4c 49 54 45 5f 48 41 56 45 5f 49 53 4e 41  SQLITE_HAVE_ISNA
7470: 4e 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f  N} {.  If this o
7480: 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e 74  ption is present
7490: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 77 69  , then SQLite wi
74a0: 6c 6c 20 75 73 65 20 74 68 65 20 69 73 6e 61 6e  ll use the isnan
74b0: 28 29 20 66 75 6e 63 74 69 6f 6e 20 66 72 6f 6d  () function from
74c0: 0a 20 20 74 68 65 20 73 79 73 74 65 6d 20 6d 61  .  the system ma
74d0: 74 68 20 6c 69 62 72 61 72 79 2e 20 20 54 68 69  th library.  Thi
74e0: 73 20 69 73 20 61 6e 20 61 6c 69 61 73 20 66 6f  s is an alias fo
74f0: 72 20 74 68 65 20 5b 48 41 56 45 5f 49 53 4e 41  r the [HAVE_ISNA
7500: 4e 5d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  N] configuration
7510: 0a 20 20 6f 70 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f  .  option..}..CO
7520: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
7530: 4c 49 54 45 5f 4f 53 5f 4f 54 48 45 52 3d 3c 69  LITE_OS_OTHER=<i
7540: 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c  >&lt;0 or 1&gt;<
7550: 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20 6f 70 74  /i>} {.  The opt
7560: 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74  ion causes SQLit
7570: 65 20 74 6f 20 6f 6d 69 74 20 69 74 73 20 62 75  e to omit its bu
7580: 69 6c 74 2d 69 6e 20 6f 70 65 72 61 74 69 6e 67  ilt-in operating
7590: 20 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61 63   system interfac
75a0: 65 73 0a 20 20 66 6f 72 20 55 6e 69 78 2c 20 57  es.  for Unix, W
75b0: 69 6e 64 6f 77 73 2c 20 61 6e 64 20 4f 53 2f 32  indows, and OS/2
75c0: 2e 20 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67  .  The resulting
75d0: 20 6c 69 62 72 61 72 79 20 77 69 6c 6c 20 68 61   library will ha
75e0: 76 65 20 6e 6f 20 64 65 66 61 75 6c 74 0a 20 20  ve no default.  
75f0: 5b 73 71 6c 69 74 65 33 5f 76 66 73 20 7c 20 6f  [sqlite3_vfs | o
7600: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
7610: 69 6e 74 65 72 66 61 63 65 5d 2e 20 20 41 70 70  interface].  App
7620: 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73 74 20 75  lications must u
7630: 73 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 76 66  se.  [sqlite3_vf
7640: 73 5f 72 65 67 69 73 74 65 72 28 29 5d 20 74 6f  s_register()] to
7650: 20 72 65 67 69 73 74 65 72 20 61 6e 20 61 70 70   register an app
7660: 72 6f 70 72 69 61 74 65 20 69 6e 74 65 72 66 61  ropriate interfa
7670: 63 65 20 62 65 66 6f 72 65 0a 20 20 75 73 69 6e  ce before.  usin
7680: 67 20 53 51 4c 69 74 65 2e 20 20 41 70 70 6c 69  g SQLite.  Appli
7690: 63 61 74 69 6f 6e 73 20 6d 75 73 74 20 61 6c 73  cations must als
76a0: 6f 20 73 75 70 70 6c 79 20 69 6d 70 6c 65 6d 65  o supply impleme
76b0: 6e 74 61 74 69 6f 6e 73 20 66 6f 72 20 74 68 65  ntations for the
76c0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69  .  [sqlite3_os_i
76d0: 6e 69 74 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69  nit()] and [sqli
76e0: 74 65 33 5f 6f 73 5f 65 6e 64 28 29 5d 20 69 6e  te3_os_end()] in
76f0: 74 65 72 66 61 63 65 73 2e 20 20 54 68 65 20 75  terfaces.  The u
7700: 73 75 61 6c 20 70 72 61 63 74 69 63 65 0a 20 20  sual practice.  
7710: 69 73 20 66 6f 72 20 74 68 65 20 73 75 70 70 6c  is for the suppl
7720: 69 65 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f  ied [sqlite3_os_
7730: 69 6e 69 74 28 29 5d 20 74 6f 20 69 6e 76 6f 6b  init()] to invok
7740: 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 72  e [sqlite3_vfs_r
7750: 65 67 69 73 74 65 72 28 29 5d 2e 0a 20 20 53 51  egister()]..  SQ
7760: 4c 69 74 65 20 77 69 6c 6c 20 61 75 74 6f 6d 61  Lite will automa
7770: 74 69 63 61 6c 6c 79 20 69 6e 76 6f 6b 65 20 5b  tically invoke [
7780: 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28  sqlite3_os_init(
7790: 29 5d 20 77 68 65 6e 20 69 74 20 69 6e 69 74 69  )] when it initi
77a0: 61 6c 69 7a 65 73 2e 0a 0a 20 20 54 68 69 73 20  alizes...  This 
77b0: 6f 70 74 69 6f 6e 20 69 73 20 74 79 70 69 63 61  option is typica
77c0: 6c 6c 79 20 75 73 65 64 20 77 68 65 6e 20 62 75  lly used when bu
77d0: 69 6c 64 69 6e 67 20 53 51 4c 69 74 65 20 66 6f  ilding SQLite fo
77e0: 72 20 61 6e 20 65 6d 62 65 64 64 65 64 0a 20 20  r an embedded.  
77f0: 70 6c 61 74 66 6f 72 6d 20 77 69 74 68 20 61 20  platform with a 
7800: 63 75 73 74 6f 6d 20 6f 70 65 72 61 74 69 6e 67  custom operating
7810: 20 73 79 73 74 65 6d 2e 0a 7d 0a 0a 43 4f 4d 50   system..}..COMP
7820: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7830: 54 45 5f 53 45 43 55 52 45 5f 44 45 4c 45 54 45  TE_SECURE_DELETE
7840: 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70 69  } {.  This compi
7850: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63  le-time option c
7860: 68 61 6e 67 65 73 20 74 68 65 20 64 65 66 61 75  hanges the defau
7870: 6c 74 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68  lt setting of th
7880: 65 0a 20 20 5b 73 65 63 75 72 65 5f 64 65 6c 65  e.  [secure_dele
7890: 74 65 20 70 72 61 67 6d 61 5d 2e 20 20 57 68 65  te pragma].  Whe
78a0: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
78b0: 20 6e 6f 74 20 75 73 65 64 2c 20 73 65 63 75 72   not used, secur
78c0: 65 5f 64 65 6c 65 74 65 20 64 65 66 61 75 6c 74  e_delete default
78d0: 73 0a 20 20 74 6f 20 6f 66 66 2e 20 20 57 68 65  s.  to off.  Whe
78e0: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
78f0: 20 70 72 65 73 65 6e 74 2c 20 73 65 63 75 72 65   present, secure
7900: 5f 64 65 6c 65 74 65 20 64 65 66 61 75 6c 74 73  _delete defaults
7910: 20 74 6f 20 6f 6e 2e 0a 0a 20 20 54 68 65 20 73   to on...  The s
7920: 65 63 75 72 65 5f 64 65 6c 65 74 65 20 73 65 74  ecure_delete set
7930: 74 69 6e 67 20 63 61 75 73 65 73 20 64 65 6c 65  ting causes dele
7940: 74 65 64 20 63 6f 6e 74 65 6e 74 20 74 6f 20 62  ted content to b
7950: 65 20 6f 76 65 72 77 72 69 74 74 65 6e 20 77 69  e overwritten wi
7960: 74 68 0a 20 20 7a 65 72 6f 73 2e 20 20 54 68 65  th.  zeros.  The
7970: 72 65 20 69 73 20 61 20 73 6d 61 6c 6c 20 70 65  re is a small pe
7980: 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e 61 6c 74  rformance penalt
7990: 79 20 73 69 6e 63 65 20 61 64 64 69 74 69 6f 6e  y since addition
79a0: 61 6c 20 49 2f 4f 0a 20 20 6d 75 73 74 20 6f 63  al I/O.  must oc
79b0: 63 75 72 2e 20 20 4f 6e 20 74 68 65 20 6f 74 68  cur.  On the oth
79c0: 65 72 20 68 61 6e 64 2c 20 73 65 63 75 72 65 5f  er hand, secure_
79d0: 64 65 6c 65 74 65 20 63 61 6e 20 70 72 65 76 65  delete can preve
79e0: 6e 74 20 66 72 61 67 6d 65 6e 74 73 20 6f 66 20  nt fragments of 
79f0: 0a 20 20 73 65 6e 73 69 74 69 76 65 20 69 6e 66  .  sensitive inf
7a00: 6f 72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20 6c 69  ormation from li
7a10: 6e 67 65 72 69 6e 67 20 69 6e 20 75 6e 75 73 65  ngering in unuse
7a20: 64 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 64  d parts of the d
7a30: 61 74 61 62 61 73 65 20 66 69 6c 65 20 0a 20 20  atabase file .  
7a40: 61 66 74 65 72 20 69 74 20 68 61 73 20 62 65 65  after it has bee
7a50: 6e 20 64 65 6c 65 74 65 64 2e 20 20 53 65 65 20  n deleted.  See 
7a60: 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  the documentatio
7a70: 6e 20 6f 6e 20 74 68 65 0a 20 20 5b 73 65 63 75  n on the.  [secu
7a80: 72 65 5f 64 65 6c 65 74 65 20 70 72 61 67 6d 61  re_delete pragma
7a90: 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  ] for additional
7aa0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d 0a   information..}.
7ab0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
7ac0: 7b 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41  {SQLITE_THREADSA
7ad0: 46 45 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31  FE=<i>&lt;0 or 1
7ae0: 20 6f 72 20 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b   or 2&gt;</i>} {
7af0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
7b00: 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68 65 72 20  ontrols whether 
7b10: 6f 72 20 6e 6f 74 20 63 6f 64 65 20 69 73 20 69  or not code is i
7b20: 6e 63 6c 75 64 65 64 20 69 6e 20 53 51 4c 69 74  ncluded in SQLit
7b30: 65 20 74 6f 0a 20 20 65 6e 61 62 6c 65 20 69 74  e to.  enable it
7b40: 20 74 6f 20 6f 70 65 72 61 74 65 20 73 61 66 65   to operate safe
7b50: 6c 79 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72  ly in a multithr
7b60: 65 61 64 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e  eaded environmen
7b70: 74 2e 20 20 54 68 65 0a 20 20 64 65 66 61 75 6c  t.  The.  defaul
7b80: 74 20 69 73 20 53 51 4c 49 54 45 5f 54 48 52 45  t is SQLITE_THRE
7b90: 41 44 53 41 46 45 3d 31 20 77 68 69 63 68 20 69  ADSAFE=1 which i
7ba0: 73 20 73 61 66 65 20 66 6f 72 20 75 73 65 20 69  s safe for use i
7bb0: 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65  n a multithreade
7bc0: 64 0a 20 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e  d.  environment.
7bd0: 20 20 57 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20    When compiled 
7be0: 77 69 74 68 20 53 51 4c 49 54 45 5f 54 48 52 45  with SQLITE_THRE
7bf0: 41 44 53 41 46 45 3d 30 20 61 6c 6c 20 6d 75 74  ADSAFE=0 all mut
7c00: 65 78 69 6e 67 20 63 6f 64 65 0a 20 20 69 73 20  exing code.  is 
7c10: 6f 6d 69 74 74 65 64 20 61 6e 64 20 69 74 20 69  omitted and it i
7c20: 73 20 75 6e 73 61 66 65 20 74 6f 20 75 73 65 20  s unsafe to use 
7c30: 53 51 4c 69 74 65 20 69 6e 20 61 20 6d 75 6c 74  SQLite in a mult
7c40: 69 74 68 72 65 61 64 65 64 20 70 72 6f 67 72 61  ithreaded progra
7c50: 6d 2e 0a 20 20 57 68 65 6e 20 63 6f 6d 70 69 6c  m..  When compil
7c60: 65 64 20 77 69 74 68 20 53 51 4c 49 54 45 5f 54  ed with SQLITE_T
7c70: 48 52 45 41 44 53 41 46 45 3d 32 2c 20 53 51 4c  HREADSAFE=2, SQL
7c80: 69 74 65 20 63 61 6e 20 62 65 20 75 73 65 64 20  ite can be used 
7c90: 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64  in a multithread
7ca0: 65 64 0a 20 20 70 72 6f 67 72 61 6d 20 73 6f 20  ed.  program so 
7cb0: 6c 6f 6e 67 20 61 73 20 6e 6f 20 74 77 6f 20 74  long as no two t
7cc0: 68 72 65 61 64 73 20 61 74 74 65 6d 70 74 20 74  hreads attempt t
7cd0: 6f 20 75 73 65 20 74 68 65 20 73 61 6d 65 0a 20  o use the same. 
7ce0: 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
7cf0: 63 74 69 6f 6e 5d 20 28 6f 72 20 61 6e 79 20 5b  ction] (or any [
7d00: 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
7d10: 6e 74 73 5d 20 64 65 72 69 76 65 64 20 66 72 6f  nts] derived fro
7d20: 6d 0a 20 20 74 68 61 74 20 64 61 74 61 62 61 73  m.  that databas
7d30: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 61 74  e connection) at
7d40: 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65 2e 0a   the same time..
7d50: 0a 20 20 54 6f 20 70 75 74 20 69 74 20 61 6e 6f  .  To put it ano
7d60: 74 68 65 72 20 77 61 79 2c 20 53 51 4c 49 54 45  ther way, SQLITE
7d70: 5f 54 48 52 45 41 44 53 41 46 45 3d 31 20 73 65  _THREADSAFE=1 se
7d80: 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20  ts the default. 
7d90: 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
7da0: 5d 20 74 6f 20 53 65 72 69 61 6c 69 7a 65 64 2e  ] to Serialized.
7db0: 20 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53    SQLITE_THREADS
7dc0: 41 46 45 3d 32 20 73 65 74 73 20 74 68 65 20 64  AFE=2 sets the d
7dd0: 65 66 61 75 6c 74 0a 20 20 5b 74 68 72 65 61 64  efault.  [thread
7de0: 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 4d 75 6c  ing mode] to Mul
7df0: 74 69 2d 74 68 72 65 61 64 65 64 2e 20 20 41 6e  ti-threaded.  An
7e00: 64 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  d SQLITE_THREADS
7e10: 41 46 45 3d 30 20 73 65 74 73 20 74 68 65 0a 20  AFE=0 sets the. 
7e20: 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
7e30: 5d 20 74 6f 20 53 69 6e 67 6c 65 2d 74 68 72 65  ] to Single-thre
7e40: 61 64 65 64 2e 0a 0a 20 20 54 68 65 20 76 61 6c  aded...  The val
7e50: 75 65 20 6f 66 20 53 51 4c 49 54 45 5f 54 48 52  ue of SQLITE_THR
7e60: 45 41 44 53 41 46 45 20 63 61 6e 20 62 65 20 64  EADSAFE can be d
7e70: 65 74 65 72 6d 69 6e 65 64 20 61 74 20 72 75 6e  etermined at run
7e80: 2d 74 69 6d 65 0a 20 20 75 73 69 6e 67 20 74 68  -time.  using th
7e90: 65 20 5b 73 71 6c 69 74 65 33 5f 74 68 72 65 61  e [sqlite3_threa
7ea0: 64 73 61 66 65 28 29 5d 20 69 6e 74 65 72 66 61  dsafe()] interfa
7eb0: 63 65 2e 0a 0a 20 20 57 68 65 6e 20 53 51 4c 69  ce...  When SQLi
7ec0: 74 65 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70  te has been comp
7ed0: 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54 45  iled with SQLITE
7ee0: 5f 54 48 52 45 41 44 53 41 46 45 3d 31 20 6f 72  _THREADSAFE=1 or
7ef0: 0a 20 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44  .  SQLITE_THREAD
7f00: 53 41 46 45 3d 32 20 74 68 65 6e 20 74 68 65 20  SAFE=2 then the 
7f10: 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
7f20: 0a 20 20 63 61 6e 20 62 65 20 61 6c 74 65 72 65  .  can be altere
7f30: 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75 73  d at run-time us
7f40: 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ing the [sqlite3
7f50: 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e 74 65 72  _config()] inter
7f60: 66 61 63 65 20 74 6f 67 65 74 68 65 72 0a 20 20  face together.  
7f70: 77 69 74 68 20 6f 6e 65 20 6f 66 20 74 68 65 73  with one of thes
7f80: 65 20 76 65 72 62 73 3a 0a 0a 20 20 3c 75 6c 3e  e verbs:..  <ul>
7f90: 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43  .  <li>[SQLITE_C
7fa0: 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45  ONFIG_SINGLETHRE
7fb0: 41 44 5d 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49 54  AD].  <li>[SQLIT
7fc0: 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48  E_CONFIG_MULTITH
7fd0: 52 45 41 44 5d 0a 20 20 3c 6c 69 3e 5b 53 51 4c  READ].  <li>[SQL
7fe0: 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41  ITE_CONFIG_SERIA
7ff0: 4c 49 5a 45 44 5d 0a 20 20 3c 2f 75 6c 3e 0a 0a  LIZED].  </ul>..
8000: 20 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50    The [SQLITE_OP
8010: 45 4e 5f 4e 4f 4d 55 54 45 58 5d 20 61 6e 64 0a  EN_NOMUTEX] and.
8020: 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 46    [SQLITE_OPEN_F
8030: 55 4c 4c 4d 55 54 45 58 5d 20 66 6c 61 67 73 20  ULLMUTEX] flags 
8040: 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  to [sqlite3_open
8050: 5f 76 32 28 29 5d 20 63 61 6e 20 61 6c 73 6f 20  _v2()] can also 
8060: 62 65 20 75 73 65 64 0a 20 20 74 6f 20 61 64 6a  be used.  to adj
8070: 75 73 74 20 74 68 65 20 5b 74 68 72 65 61 64 69  ust the [threadi
8080: 6e 67 20 6d 6f 64 65 5d 20 6f 66 20 69 6e 64 69  ng mode] of indi
8090: 76 69 64 75 61 6c 20 5b 64 61 74 61 62 61 73 65  vidual [database
80a0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 0a 20 20   connections].  
80b0: 61 74 20 72 75 6e 2d 74 69 6d 65 2e 0a 0a 20 20  at run-time...  
80c0: 4e 6f 74 65 20 74 68 61 74 20 77 68 65 6e 20 53  Note that when S
80d0: 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65  QLite is compile
80e0: 64 20 77 69 74 68 20 53 51 4c 49 54 45 5f 54 48  d with SQLITE_TH
80f0: 52 45 41 44 53 41 46 45 3d 30 2c 20 74 68 65 20  READSAFE=0, the 
8100: 63 6f 64 65 0a 20 20 74 6f 20 6d 61 6b 65 20 53  code.  to make S
8110: 51 4c 69 74 65 20 74 68 72 65 61 64 73 61 66 65  QLite threadsafe
8120: 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d   is omitted from
8130: 20 74 68 65 20 62 75 69 6c 64 2e 20 20 57 68 65   the build.  Whe
8140: 6e 20 74 68 69 73 20 6f 63 63 75 72 73 2c 0a 20  n this occurs,. 
8150: 20 69 74 20 69 73 20 69 6d 70 6f 73 73 69 62 6c   it is impossibl
8160: 65 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20  e to change the 
8170: 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
8180: 20 61 74 20 73 74 61 72 74 2d 74 69 6d 65 20 6f   at start-time o
8190: 72 20 72 75 6e 2d 74 69 6d 65 2e 0a 0a 20 20 53  r run-time...  S
81a0: 65 65 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e  ee the [threadin
81b0: 67 20 6d 6f 64 65 5d 20 64 6f 63 75 6d 65 6e 74  g mode] document
81c0: 61 74 69 6f 6e 20 66 6f 72 20 61 64 64 69 74 69  ation for additi
81d0: 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
81e0: 0a 20 20 6f 6e 20 61 73 70 65 63 74 73 20 6f 66  .  on aspects of
81f0: 20 75 73 69 6e 67 20 53 51 4c 69 74 65 20 69 6e   using SQLite in
8200: 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64   a multithreaded
8210: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 0a 7d 0a   environment..}.
8220: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
8230: 7b 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f  {SQLITE_TEMP_STO
8240: 52 45 3d 3c 69 3e 26 6c 74 3b 30 20 74 68 72 6f  RE=<i>&lt;0 thro
8250: 75 67 68 20 33 26 67 74 3b 3c 2f 69 3e 7d 20 7b  ugh 3&gt;</i>} {
8260: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
8270: 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68 65 72 20  ontrols whether 
8280: 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 20  temporary files 
8290: 61 72 65 20 73 74 6f 72 65 64 20 6f 6e 20 64 69  are stored on di
82a0: 73 6b 20 6f 72 0a 20 20 69 6e 20 6d 65 6d 6f 72  sk or.  in memor
82b0: 79 2e 20 20 54 68 65 20 6d 65 61 6e 69 6e 67 73  y.  The meanings
82c0: 20 66 6f 72 20 76 61 72 69 6f 75 73 20 73 65 74   for various set
82d0: 74 69 6e 67 73 20 6f 66 20 74 68 69 73 20 63 6f  tings of this co
82e0: 6d 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f 70 74  mpile-time.  opt
82f0: 69 6f 6e 20 61 72 65 20 61 73 20 66 6f 6c 6c 6f  ion are as follo
8300: 77 73 3a 0a 0a 20 20 3c 74 61 62 6c 65 20 63 65  ws:..  <table ce
8310: 6c 6c 70 61 64 64 69 6e 67 3d 22 32 22 20 62 6f  llpadding="2" bo
8320: 72 64 65 72 3d 22 31 22 3e 0a 20 20 3c 74 72 3e  rder="1">.  <tr>
8330: 3c 74 68 3e 53 51 4c 49 54 45 5f 54 45 4d 50 5f  <th>SQLITE_TEMP_
8340: 53 54 4f 52 45 3c 2f 74 68 3e 3c 74 68 3e 4d 65  STORE</th><th>Me
8350: 61 6e 69 6e 67 3c 2f 74 68 3e 3c 2f 74 72 3e 0a  aning</th></tr>.
8360: 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d    <tr><td align=
8370: 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c  "center">0</td><
8380: 74 64 3e 41 6c 77 61 79 73 20 75 73 65 20 74 65  td>Always use te
8390: 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 3c 2f 74  mporary files</t
83a0: 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74  d></tr>.  <tr><t
83b0: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
83c0: 3e 31 3c 2f 74 64 3e 3c 74 64 3e 55 73 65 20 66  >1</td><td>Use f
83d0: 69 6c 65 73 20 62 79 20 64 65 66 61 75 6c 74 20  iles by default 
83e0: 62 75 74 20 61 6c 6c 6f 77 20 74 68 65 0a 20 20  but allow the.  
83f0: 5b 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f  [PRAGMA temp_sto
8400: 72 65 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 6f  re] command to o
8410: 76 65 72 72 69 64 65 3c 2f 74 64 3e 3c 2f 74 72  verride</td></tr
8420: 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67  >.  <tr><td alig
8430: 6e 3d 22 63 65 6e 74 65 72 22 3e 32 3c 2f 74 64  n="center">2</td
8440: 3e 3c 74 64 3e 55 73 65 20 6d 65 6d 6f 72 79 20  ><td>Use memory 
8450: 62 79 20 64 65 66 61 75 6c 74 20 62 75 74 20 61  by default but a
8460: 6c 6c 6f 77 20 74 68 65 0a 20 20 5b 50 52 41 47  llow the.  [PRAG
8470: 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 5d 20 63  MA temp_store] c
8480: 6f 6d 6d 61 6e 64 20 74 6f 20 6f 76 65 72 72 69  ommand to overri
8490: 64 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c  de</td></tr>.  <
84a0: 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  tr><td align="ce
84b0: 6e 74 65 72 22 3e 33 3c 2f 74 64 3e 3c 74 64 3e  nter">3</td><td>
84c0: 41 6c 77 61 79 73 20 75 73 65 20 6d 65 6d 6f 72  Always use memor
84d0: 79 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 2f  y</td></tr>.  </
84e0: 74 61 62 6c 65 3e 0a 0a 20 20 54 68 65 20 64 65  table>..  The de
84f0: 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 69 73  fault setting is
8500: 20 31 2e 20 20 0a 20 20 41 64 64 69 74 69 6f 6e   1.  .  Addition
8510: 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 63  al information c
8520: 61 6e 20 62 65 20 66 6f 75 6e 64 20 69 6e 20 5b  an be found in [
8530: 74 65 6d 70 73 74 6f 72 65 20 7c 20 74 65 6d 70  tempstore | temp
8540: 66 69 6c 65 73 2e 68 74 6d 6c 5d 2e 0a 7d 0a 0a  files.html]..}..
8550: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
8560: 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53 49 5a  SQLITE_TRACE_SIZ
8570: 45 5f 4c 49 4d 49 54 3d 3c 69 3e 4e 3c 2f 69 3e  E_LIMIT=<i>N</i>
8580: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6d 61  } {.  If this ma
8590: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 20 74  cro is defined t
85a0: 6f 20 61 20 70 6f 73 69 74 69 76 65 20 69 6e 74  o a positive int
85b0: 65 67 65 72 20 3c 69 3e 4e 3c 2f 69 3e 2c 20 74  eger <i>N</i>, t
85c0: 68 65 6e 20 74 68 65 20 6c 65 6e 67 74 68 20 6f  hen the length o
85d0: 66 0a 20 20 73 74 72 69 6e 67 73 20 61 6e 64 20  f.  strings and 
85e0: 42 4c 4f 42 20 74 68 61 74 20 61 72 65 20 65 78  BLOB that are ex
85f0: 70 61 6e 64 65 64 20 69 6e 74 6f 20 70 61 72 61  panded into para
8600: 6d 65 74 65 72 73 20 69 6e 20 74 68 65 20 6f 75  meters in the ou
8610: 74 70 75 74 20 6f 66 0a 20 20 5b 73 71 6c 69 74  tput of.  [sqlit
8620: 65 33 5f 74 72 61 63 65 28 29 5d 20 69 73 20 6c  e3_trace()] is l
8630: 69 6d 69 74 65 64 20 74 6f 20 3c 69 3e 4e 3c 2f  imited to <i>N</
8640: 69 3e 20 62 79 74 65 73 2e 20 20 0a 7d 0a 0a 43  i> bytes.  .}..C
8650: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8660: 51 4c 49 54 45 5f 55 53 45 5f 55 52 49 7d 20 7b  QLITE_USE_URI} {
8670: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
8680: 61 75 73 65 73 20 74 68 65 20 5b 55 52 49 20 66  auses the [URI f
8690: 69 6c 65 6e 61 6d 65 5d 20 70 72 6f 63 65 73 73  ilename] process
86a0: 20 6c 6f 67 69 63 20 74 6f 20 62 65 20 65 6e 61   logic to be ena
86b0: 62 6c 65 64 20 62 79 20 0a 20 20 64 65 66 61 75  bled by .  defau
86c0: 6c 74 2e 20 20 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a  lt.  .}..</tcl>.
86d0: 0a 3c 61 20 6e 61 6d 65 3d 22 65 6e 61 62 6c 65  .<a name="enable
86e0: 66 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c  features"></a>.<
86f0: 68 31 3e 20 4f 70 74 69 6f 6e 73 20 54 6f 20 45  h1> Options To E
8700: 6e 61 62 6c 65 20 46 65 61 74 75 72 65 73 20 4e  nable Features N
8710: 6f 72 6d 61 6c 6c 79 20 54 75 72 6e 65 64 20 4f  ormally Turned O
8720: 66 66 3c 2f 68 31 3e 0a 0a 3c 74 63 6c 3e 0a 43  ff</h1>..<tcl>.C
8730: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8740: 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 55 52 49 5f  QLITE_ALLOW_URI_
8750: 41 55 54 48 4f 52 49 54 59 7d 20 7b 0a 20 20 5b  AUTHORITY} {.  [
8760: 55 52 49 20 66 69 6c 65 6e 61 6d 65 73 5d 20 6e  URI filenames] n
8770: 6f 72 6d 61 6c 6c 79 20 74 68 72 6f 77 73 20 61  ormally throws a
8780: 6e 20 65 72 72 6f 72 20 69 66 20 74 68 65 20 61  n error if the a
8790: 75 74 68 6f 72 69 74 79 20 73 65 63 74 69 6f 6e  uthority section
87a0: 20 69 73 0a 20 20 6e 6f 74 20 65 69 74 68 65 72   is.  not either
87b0: 20 65 6d 70 74 79 20 6f 72 20 22 6c 6f 63 61 6c   empty or "local
87c0: 68 6f 73 74 22 2e 20 20 48 6f 77 65 76 65 72 2c  host".  However,
87d0: 20 69 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f   if SQLite is co
87e0: 6d 70 69 6c 65 64 20 77 69 74 68 0a 20 20 74 68  mpiled with.  th
87f0: 65 20 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 55  e SQLITE_ALLOW_U
8800: 52 49 5f 41 55 54 48 4f 52 49 54 59 20 63 6f 6d  RI_AUTHORITY com
8810: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
8820: 2c 20 74 68 65 6e 20 74 68 65 20 55 52 49 20 69  , then the URI i
8830: 73 0a 20 20 63 6f 6e 76 65 72 74 65 64 20 69 6e  s.  converted in
8840: 74 6f 20 61 20 55 6e 69 66 6f 72 6d 20 4e 61 6d  to a Uniform Nam
8850: 69 6e 67 20 43 6f 6e 76 65 6e 74 69 6f 6e 20 28  ing Convention (
8860: 55 4e 43 29 20 66 69 6c 65 6e 61 6d 65 20 61 6e  UNC) filename an
8870: 64 20 70 61 73 73 65 64 0a 20 20 64 6f 77 6e 20  d passed.  down 
8880: 74 6f 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e  to the underlyin
8890: 67 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  g operating syst
88a0: 65 6d 20 74 68 61 74 20 77 61 79 2e 20 20 0a 20  em that way.  . 
88b0: 20 3c 70 3e 0a 20 20 53 6f 6d 65 20 66 75 74 75   <p>.  Some futu
88c0: 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  re versions of S
88d0: 51 4c 69 74 65 20 6d 61 79 20 63 68 61 6e 67 65  QLite may change
88e0: 20 74 6f 20 65 6e 61 62 6c 65 20 74 68 69 73 20   to enable this 
88f0: 66 65 61 74 75 72 65 0a 20 20 62 79 20 64 65 66  feature.  by def
8900: 61 75 6c 74 2e 0a 7d 0a 43 4f 4d 50 49 4c 45 5f  ault..}.COMPILE_
8910: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 41  OPTION {SQLITE_A
8920: 4c 4c 4f 57 5f 43 4f 56 45 52 49 4e 47 5f 49 4e  LLOW_COVERING_IN
8930: 44 45 58 5f 53 43 41 4e 3d 3c 69 3e 26 6c 74 3b  DEX_SCAN=<i>&lt;
8940: 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20  0 or 1&gt;</i>} 
8950: 7b 0a 20 20 54 68 69 73 20 43 2d 70 72 65 70 72  {.  This C-prepr
8960: 6f 63 65 73 73 20 6d 61 63 72 6f 20 64 65 74 65  ocess macro dete
8970: 72 6d 69 6e 65 73 20 74 68 65 20 64 65 66 61 75  rmines the defau
8980: 6c 74 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68  lt setting of th
8990: 65 0a 20 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  e.  [SQLITE_CONF
89a0: 49 47 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45  IG_COVERING_INDE
89b0: 58 5f 53 43 41 4e 5d 20 63 6f 6e 66 69 67 75 72  X_SCAN] configur
89c0: 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 2e 20 20  ation setting.  
89d0: 49 74 20 64 65 66 61 75 6c 74 73 0a 20 20 74 6f  It defaults.  to
89e0: 20 31 20 28 6f 6e 29 20 77 68 69 63 68 20 6d 65   1 (on) which me
89f0: 61 6e 73 20 74 68 61 74 20 63 6f 76 65 72 69 6e  ans that coverin
8a00: 67 20 69 6e 64 69 63 65 73 20 61 72 65 20 75 73  g indices are us
8a10: 65 64 20 66 6f 72 20 66 75 6c 6c 20 74 61 62 6c  ed for full tabl
8a20: 65 0a 20 20 73 63 61 6e 73 20 77 68 65 72 65 20  e.  scans where 
8a30: 70 6f 73 73 69 62 6c 65 2c 20 69 6e 20 6f 72 64  possible, in ord
8a40: 65 72 20 74 6f 20 72 65 64 75 63 65 20 49 2f 4f  er to reduce I/O
8a50: 20 61 6e 64 20 69 6d 70 72 6f 76 65 20 70 65 72   and improve per
8a60: 66 6f 72 6d 61 6e 63 65 2e 0a 20 20 48 6f 77 65  formance..  Howe
8a70: 76 65 72 2c 20 74 68 65 20 75 73 65 20 6f 66 20  ver, the use of 
8a80: 61 20 63 6f 76 65 72 69 6e 67 20 69 6e 64 65 78  a covering index
8a90: 20 66 6f 72 20 61 20 66 75 6c 6c 20 73 63 61 6e   for a full scan
8aa0: 20 77 69 6c 6c 20 63 61 75 73 65 20 72 65 73 75   will cause resu
8ab0: 6c 74 73 0a 20 20 74 6f 20 61 70 70 65 61 72 20  lts.  to appear 
8ac0: 69 6e 20 61 20 64 69 66 66 65 72 65 6e 74 20 6f  in a different o
8ad0: 72 64 65 72 20 66 72 6f 6d 20 6c 65 67 61 63 79  rder from legacy
8ae0: 2c 20 77 68 69 63 68 20 63 6f 75 6c 64 20 63 61  , which could ca
8af0: 75 73 65 20 73 6f 6d 65 0a 20 20 28 69 6e 63 6f  use some.  (inco
8b00: 72 72 65 63 74 6c 79 2d 63 6f 64 65 64 29 20 6c  rrectly-coded) l
8b10: 65 67 61 63 79 20 61 70 70 6c 69 63 61 74 69 6f  egacy applicatio
8b20: 6e 73 20 74 6f 20 62 72 65 61 6b 2e 20 20 48 65  ns to break.  He
8b30: 6e 63 65 2c 20 74 68 65 20 63 6f 76 65 72 69 6e  nce, the coverin
8b40: 67 0a 20 20 69 6e 64 65 78 20 73 63 61 6e 20 6f  g.  index scan o
8b50: 70 74 69 6f 6e 20 63 61 6e 20 62 65 20 64 69 73  ption can be dis
8b60: 61 62 6c 65 64 20 61 74 20 63 6f 6d 70 69 6c 65  abled at compile
8b70: 2d 74 69 6d 65 20 6f 6e 20 73 79 73 74 65 6d 73  -time on systems
8b80: 20 74 68 61 74 20 77 68 61 74 0a 20 20 74 6f 20   that what.  to 
8b90: 6d 69 6e 69 6d 69 7a 65 20 74 68 65 69 72 20 72  minimize their r
8ba0: 69 73 6b 20 6f 66 20 65 78 70 6f 73 69 6e 67 20  isk of exposing 
8bb0: 65 72 72 6f 72 73 20 69 6e 20 6c 65 67 61 63 79  errors in legacy
8bc0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d   applications..}
8bd0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8be0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
8bf0: 38 5f 33 5f 4e 41 4d 45 53 3d 3c 69 3e 26 6c 74  8_3_NAMES=<i>&lt
8c00: 3b 31 20 6f 72 20 32 26 67 74 3b 3c 2f 69 3e 7d  ;1 or 2&gt;</i>}
8c10: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70   {.  If this C-p
8c20: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
8c30: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  o is defined, th
8c40: 65 6e 20 65 78 74 72 61 20 63 6f 64 65 20 69 73  en extra code is
8c50: 0a 20 20 69 6e 63 6c 75 64 65 64 20 74 68 61 74  .  included that
8c60: 20 61 6c 6c 6f 77 73 20 53 51 4c 69 74 65 20 74   allows SQLite t
8c70: 6f 20 66 75 6e 63 74 69 6f 6e 20 6f 6e 20 61 20  o function on a 
8c80: 66 69 6c 65 73 79 73 74 65 6d 20 74 68 61 74 0a  filesystem that.
8c90: 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 20 38    only support 8
8ca0: 2b 33 20 66 69 6c 65 6e 61 6d 65 73 2e 20 20 49  +3 filenames.  I
8cb0: 66 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74  f the value of t
8cc0: 68 69 73 20 6d 61 63 72 6f 20 69 73 20 31 2c 0a  his macro is 1,.
8cd0: 20 20 74 68 65 6e 20 74 68 65 20 64 65 66 61 75    then the defau
8ce0: 6c 74 20 62 65 68 61 76 69 6f 72 20 69 73 20 74  lt behavior is t
8cf0: 6f 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 75 73  o continue to us
8d00: 65 20 6c 6f 6e 67 20 66 69 6c 65 6e 61 6d 65 73  e long filenames
8d10: 20 61 6e 64 0a 20 20 74 6f 20 6f 6e 6c 79 20 75   and.  to only u
8d20: 73 65 20 38 2b 33 20 66 69 6c 65 6e 61 6d 65 73  se 8+3 filenames
8d30: 20 69 66 20 74 68 65 20 0a 20 20 64 61 74 61 62   if the .  datab
8d40: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  ase connection i
8d50: 73 20 6f 70 65 6e 65 64 20 75 73 69 6e 67 20 5b  s opened using [
8d60: 55 52 49 20 66 69 6c 65 6e 61 6d 65 73 5d 20 77  URI filenames] w
8d70: 69 74 68 0a 20 20 74 68 65 20 22 3c 74 74 3e 38  ith.  the "<tt>8
8d80: 5f 33 5f 6e 61 6d 65 73 3d 31 3c 2f 74 74 3e 22  _3_names=1</tt>"
8d90: 20 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72   query parameter
8da0: 2e 20 20 49 66 20 74 68 65 20 76 61 6c 75 65 20  .  If the value 
8db0: 6f 66 0a 20 20 74 68 69 73 20 6d 61 63 72 6f 20  of.  this macro 
8dc0: 69 73 20 32 2c 20 74 68 65 6e 20 74 68 65 20 75  is 2, then the u
8dd0: 73 65 20 6f 66 20 38 2b 33 20 66 69 6c 65 6e 61  se of 8+3 filena
8de0: 6d 65 73 20 62 65 63 6f 6d 65 73 20 74 68 65 20  mes becomes the 
8df0: 64 65 66 61 75 6c 74 0a 20 20 62 75 74 20 6d 61  default.  but ma
8e00: 79 20 62 65 20 64 69 73 61 62 6c 65 64 20 6f 6e  y be disabled on
8e10: 20 75 73 69 6e 67 20 74 68 65 20 3c 74 74 3e 38   using the <tt>8
8e20: 5f 33 5f 6e 61 6d 65 73 3d 30 3c 2f 74 74 3e 20  _3_names=0</tt> 
8e30: 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 2e  query parameter.
8e40: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
8e50: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
8e60: 45 5f 41 50 49 5f 41 52 4d 4f 52 7d 20 7b 0a 20  E_API_ARMOR} {. 
8e70: 20 57 68 65 6e 20 64 65 66 69 6e 65 64 2c 20 74   When defined, t
8e80: 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73  his C-preprocess
8e90: 6f 72 20 6d 61 63 72 6f 20 61 63 74 69 76 61 74  or macro activat
8ea0: 65 73 20 65 78 74 72 61 20 63 6f 64 65 20 74 68  es extra code th
8eb0: 61 74 0a 20 20 61 74 74 65 6d 70 74 73 20 74 6f  at.  attempts to
8ec0: 20 64 65 74 65 63 74 20 6d 69 73 75 73 65 20 6f   detect misuse o
8ed0: 66 20 74 68 65 20 53 51 4c 69 74 65 20 41 50 49  f the SQLite API
8ee0: 2c 20 73 75 63 68 20 61 73 20 70 61 73 73 69 6e  , such as passin
8ef0: 67 20 69 6e 20 4e 55 4c 4c 0a 20 20 70 6f 69 6e  g in NULL.  poin
8f00: 74 65 72 73 20 74 6f 20 72 65 71 75 69 72 65 64  ters to required
8f10: 20 70 61 72 61 6d 65 74 65 72 73 20 6f 72 20 75   parameters or u
8f20: 73 69 6e 67 20 6f 62 6a 65 63 74 73 20 61 66 74  sing objects aft
8f30: 65 72 20 74 68 65 79 20 68 61 76 65 20 62 65 65  er they have bee
8f40: 6e 0a 20 20 64 65 73 74 72 6f 79 65 64 2e 0a 7d  n.  destroyed..}
8f50: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8f60: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
8f70: 41 54 4f 4d 49 43 5f 57 52 49 54 45 7d 20 7b 0a  ATOMIC_WRITE} {.
8f80: 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70    If this C-prep
8f90: 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69  rocessor macro i
8fa0: 73 20 64 65 66 69 6e 65 64 20 61 6e 64 20 69 66  s defined and if
8fb0: 20 74 68 65 0a 20 20 78 44 65 76 69 63 65 43 68   the.  xDeviceCh
8fc0: 61 72 61 63 74 65 72 69 73 74 69 63 73 20 6d 65  aracteristics me
8fd0: 74 68 6f 64 20 6f 66 20 5b 73 71 6c 69 74 65 33  thod of [sqlite3
8fe0: 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a  _io_methods] obj
8ff0: 65 63 74 20 66 6f 72 0a 20 20 61 20 64 61 74 61  ect for.  a data
9000: 62 61 73 65 20 66 69 6c 65 20 72 65 70 6f 72 74  base file report
9010: 73 20 28 76 69 61 20 6f 6e 65 20 6f 66 20 74 68  s (via one of th
9020: 65 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  e [SQLITE_IOCAP_
9030: 41 54 4f 4d 49 43 5d 20 62 69 74 73 29 0a 20 20  ATOMIC] bits).  
9040: 74 68 61 74 20 74 68 65 20 66 69 6c 65 73 79 73  that the filesys
9050: 74 65 6d 20 73 75 70 70 6f 72 74 73 20 61 74 6f  tem supports ato
9060: 6d 69 63 20 77 72 69 74 65 73 20 61 6e 64 20 69  mic writes and i
9070: 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a  f a transaction.
9080: 20 20 69 6e 76 6f 6c 76 65 73 20 61 20 63 68 61    involves a cha
9090: 6e 67 65 20 74 6f 20 6f 6e 6c 79 20 61 20 73 69  nge to only a si
90a0: 6e 67 6c 65 20 70 61 67 65 20 6f 66 20 74 68 65  ngle page of the
90b0: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2c 0a   database file,.
90c0: 20 20 74 68 65 6e 20 74 68 65 20 74 72 61 6e 73    then the trans
90d0: 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 73 20 77  action commits w
90e0: 69 74 68 20 6a 75 73 74 20 61 20 73 69 6e 67 6c  ith just a singl
90f0: 65 20 77 72 69 74 65 20 72 65 71 75 65 73 74 20  e write request 
9100: 6f 66 0a 20 20 61 20 73 69 6e 67 6c 65 20 70 61  of.  a single pa
9110: 67 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  ge of the databa
9120: 73 65 20 61 6e 64 20 6e 6f 20 72 6f 6c 6c 62 61  se and no rollba
9130: 63 6b 20 6a 6f 75 72 6e 61 6c 20 69 73 20 63 72  ck journal is cr
9140: 65 61 74 65 64 0a 20 20 6f 72 20 77 72 69 74 74  eated.  or writt
9150: 65 6e 2e 20 20 4f 6e 20 66 69 6c 65 73 79 73 74  en.  On filesyst
9160: 65 6d 73 20 74 68 61 74 20 73 75 70 70 6f 72 74  ems that support
9170: 20 61 74 6f 6d 69 63 20 77 72 69 74 65 73 2c 20   atomic writes, 
9180: 74 68 69 73 0a 20 20 6f 70 74 69 6d 69 7a 61 74  this.  optimizat
9190: 69 6f 6e 20 63 61 6e 20 72 65 73 75 6c 74 20 69  ion can result i
91a0: 6e 20 73 69 67 6e 69 66 69 63 61 6e 74 20 73 70  n significant sp
91b0: 65 65 64 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73  eed improvements
91c0: 20 66 6f 72 0a 20 20 73 6d 61 6c 6c 20 75 70 64   for.  small upd
91d0: 61 74 65 73 2e 20 20 48 6f 77 65 76 65 72 2c 20  ates.  However, 
91e0: 66 65 77 20 66 69 6c 65 73 79 73 74 65 6d 73 20  few filesystems 
91f0: 73 75 70 70 6f 72 74 20 74 68 69 73 20 63 61 70  support this cap
9200: 61 62 69 6c 69 74 79 0a 20 20 61 6e 64 20 74 68  ability.  and th
9210: 65 20 63 6f 64 65 20 70 61 74 68 73 20 74 68 61  e code paths tha
9220: 74 20 63 68 65 63 6b 20 66 6f 72 20 74 68 69 73  t check for this
9230: 20 63 61 70 61 62 69 6c 69 74 79 20 73 6c 6f 77   capability slow
9240: 20 64 6f 77 6e 20 77 72 69 74 65 0a 20 20 70 65   down write.  pe
9250: 72 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 79 73  rformance on sys
9260: 74 65 6d 73 20 74 68 61 74 20 6c 61 63 6b 20 61  tems that lack a
9270: 74 6f 6d 69 63 20 77 72 69 74 65 20 63 61 70 61  tomic write capa
9280: 62 69 6c 69 74 79 2c 20 73 6f 20 74 68 69 73 0a  bility, so this.
9290: 20 20 66 65 61 74 75 72 65 20 69 73 20 64 69 73    feature is dis
92a0: 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74  abled by default
92b0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
92c0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
92d0: 4c 45 5f 42 41 54 43 48 5f 41 54 4f 4d 49 43 5f  LE_BATCH_ATOMIC_
92e0: 57 52 49 54 45 7d 20 7b 0a 20 20 54 68 69 73 20  WRITE} {.  This 
92f0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
9300: 69 6f 6e 20 65 6e 61 62 6c 65 73 20 53 51 4c 69  ion enables SQLi
9310: 74 65 20 74 6f 20 74 61 6b 65 20 61 64 76 61 6e  te to take advan
9320: 74 61 67 65 20 62 61 74 63 68 0a 20 20 61 74 6f  tage batch.  ato
9330: 6d 69 63 20 77 72 69 74 65 20 63 61 70 61 62 69  mic write capabi
9340: 6c 69 74 69 65 73 20 69 6e 20 74 68 65 20 75 6e  lities in the un
9350: 64 65 72 6c 79 69 6e 67 20 66 69 6c 65 73 79 73  derlying filesys
9360: 74 65 6d 2e 20 20 41 73 20 6f 66 0a 20 20 53 51  tem.  As of.  SQ
9370: 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 32  Lite version 3.2
9380: 31 2e 30 20 28 5b 64 61 74 65 6f 66 3a 33 2e 32  1.0 ([dateof:3.2
9390: 31 2e 30 5d 29 20 74 68 69 73 20 69 73 20 6f 6e  1.0]) this is on
93a0: 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 0a  ly supported on.
93b0: 20 20 5b 68 74 74 70 73 3a 2f 2f 65 6e 2e 77 69    [https://en.wi
93c0: 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69  kipedia.org/wiki
93d0: 2f 46 32 46 53 7c 46 32 46 53 5d 2e 20 20 48 6f  /F2FS|F2FS].  Ho
93e0: 77 65 76 65 72 2c 20 74 68 65 20 69 6e 74 65 72  wever, the inter
93f0: 66 61 63 65 0a 20 20 69 73 20 69 6d 70 6c 65 6d  face.  is implem
9400: 65 6e 74 65 64 20 67 65 6e 65 72 69 63 61 6c 6c  ented genericall
9410: 79 2c 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65  y, using [sqlite
9420: 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29  3_file_control()
9430: 5d 20 77 69 74 68 0a 20 20 5b 53 51 4c 49 54 45  ] with.  [SQLITE
9440: 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f  _FCNTL_BEGIN_ATO
9450: 4d 49 43 5f 57 52 49 54 45 5d 20 61 6e 64 20 5b  MIC_WRITE] and [
9460: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d  SQLITE_FCNTL_COM
9470: 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  MIT_ATOMIC_WRITE
9480: 5d 0a 20 20 73 6f 20 74 68 65 20 63 61 70 61 62  ].  so the capab
9490: 69 6c 69 74 79 20 63 61 6e 20 62 65 20 61 64 64  ility can be add
94a0: 65 64 20 74 6f 20 6f 74 68 65 72 20 66 69 6c 65  ed to other file
94b0: 73 79 73 74 65 6d 20 74 69 6d 65 73 20 69 6e 20  system times in 
94c0: 74 68 65 0a 20 20 66 75 74 75 72 65 2e 20 20 57  the.  future.  W
94d0: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
94e0: 69 73 20 65 6e 61 62 6c 65 64 2c 20 53 51 4c 69  is enabled, SQLi
94f0: 74 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  te automatically
9500: 20 64 65 74 65 63 74 73 0a 20 20 74 68 61 74 20   detects.  that 
9510: 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 66  the underlying f
9520: 69 6c 65 73 79 73 74 65 6d 20 73 75 70 70 6f 72  ilesystem suppor
9530: 74 73 20 62 61 74 63 68 20 61 74 6f 6d 69 63 20  ts batch atomic 
9540: 77 72 69 74 65 73 2c 20 61 6e 64 0a 20 20 77 68  writes, and.  wh
9550: 65 6e 20 69 74 20 64 6f 65 73 20 73 6f 20 69 74  en it does so it
9560: 20 61 76 6f 69 64 73 20 77 72 69 74 69 6e 67 20   avoids writing 
9570: 74 68 65 20 5b 72 6f 6c 6c 62 61 63 6b 20 6a 6f  the [rollback jo
9580: 75 72 6e 61 6c 5d 20 66 6f 72 20 74 72 61 6e 73  urnal] for trans
9590: 61 63 74 69 6f 6e 0a 20 20 63 6f 6e 74 72 6f 6c  action.  control
95a0: 2e 20 20 54 68 69 73 20 63 61 6e 20 6d 61 6b 65  .  This can make
95b0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 6f 76   transactions ov
95c0: 65 72 20 74 77 69 63 65 20 61 73 20 66 61 73 74  er twice as fast
95d0: 2c 20 77 68 69 6c 65 0a 20 20 73 69 6d 75 6c 74  , while.  simult
95e0: 61 6e 65 6f 75 73 6c 79 20 72 65 64 75 63 69 6e  aneously reducin
95f0: 67 20 77 65 61 72 20 6f 6e 20 53 53 44 20 73 74  g wear on SSD st
9600: 6f 72 61 67 65 20 64 65 76 69 63 65 73 2e 0a 3c  orage devices..<
9610: 70 3e 0a 20 20 46 75 74 75 72 65 20 76 65 72 73  p>.  Future vers
9620: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d  ions of SQLite m
9630: 69 67 68 74 20 65 6e 61 62 6c 65 20 74 68 65 20  ight enable the 
9640: 62 61 74 63 68 2d 61 74 6f 6d 69 63 2d 77 72 69  batch-atomic-wri
9650: 74 65 0a 20 20 63 61 70 61 62 69 6c 69 74 79 20  te.  capability 
9660: 62 79 20 64 65 66 61 75 6c 74 2c 20 61 74 20 77  by default, at w
9670: 68 69 63 68 20 70 6f 69 6e 74 20 74 68 69 73 20  hich point this 
9680: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
9690: 69 6f 6e 0a 20 20 77 69 6c 6c 20 62 65 63 6f 6d  ion.  will becom
96a0: 65 20 73 75 70 65 72 66 6c 75 6f 75 73 2e 0a 7d  e superfluous..}
96b0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
96c0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
96d0: 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44 41 54 41 7d  COLUMN_METADATA}
96e0: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 43   {.  When this C
96f0: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
9700: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20  cro is defined, 
9710: 53 51 4c 69 74 65 20 69 6e 63 6c 75 64 65 73 20  SQLite includes 
9720: 73 6f 6d 65 0a 20 20 61 64 64 69 74 69 6f 6e 61  some.  additiona
9730: 6c 20 41 50 49 73 20 74 68 61 74 20 70 72 6f 76  l APIs that prov
9740: 69 64 65 20 63 6f 6e 76 65 6e 69 65 6e 74 20 61  ide convenient a
9750: 63 63 65 73 73 20 74 6f 20 6d 65 74 61 2d 64 61  ccess to meta-da
9760: 74 61 20 61 62 6f 75 74 0a 20 20 74 61 62 6c 65  ta about.  table
9770: 73 20 61 6e 64 20 71 75 65 72 69 65 73 2e 20 20  s and queries.  
9780: 54 68 65 20 41 50 49 73 20 74 68 61 74 20 61 72  The APIs that ar
9790: 65 20 65 6e 61 62 6c 65 64 20 62 79 20 74 68 69  e enabled by thi
97a0: 73 20 6f 70 74 69 6f 6e 20 61 72 65 3a 0a 0a 20  s option are:.. 
97b0: 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71   <ul>.  <li> [sq
97c0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
97d0: 61 62 61 73 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f  abase_name()] </
97e0: 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  li>.  <li> [sqli
97f0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
9800: 61 73 65 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f  ase_name16()] </
9810: 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  li>.  <li> [sqli
9820: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65  te3_column_table
9830: 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20  _name()] </li>. 
9840: 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63   <li> [sqlite3_c
9850: 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65  olumn_table_name
9860: 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c  16()] </li>.  <l
9870: 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  i> [sqlite3_colu
9880: 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 29  mn_origin_name()
9890: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b  ] </li>.  <li> [
98a0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
98b0: 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 29 5d 20  rigin_name16()] 
98c0: 3c 2f 6c 69 3e 0a 20 20 3c 2f 75 6c 3e 0a 7d 0a  </li>.  </ul>.}.
98d0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
98e0: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 44  {SQLITE_ENABLE_D
98f0: 42 50 41 47 45 5f 56 54 41 42 7d 20 7b 0a 20 20  BPAGE_VTAB} {.  
9900: 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62  This option enab
9910: 6c 65 73 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  les the [SQLITE_
9920: 44 42 50 41 47 45 20 76 69 72 74 75 61 6c 20 74  DBPAGE virtual t
9930: 61 62 6c 65 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  able]..}..COMPIL
9940: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
9950: 5f 45 4e 41 42 4c 45 5f 44 42 53 54 41 54 5f 56  _ENABLE_DBSTAT_V
9960: 54 41 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  TAB} {.  This op
9970: 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65  tion enables the
9980: 20 5b 64 62 73 74 61 74 20 76 69 72 74 75 61 6c   [dbstat virtual
9990: 20 74 61 62 6c 65 5d 2e 0a 7d 0a 0a 43 4f 4d 50   table]..}..COMP
99a0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
99b0: 54 45 5f 45 4e 41 42 4c 45 5f 44 45 53 45 52 49  TE_ENABLE_DESERI
99c0: 41 4c 49 5a 45 7d 20 7b 0a 20 20 54 68 69 73 20  ALIZE} {.  This 
99d0: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74  option enables t
99e0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 65 72 69  he [sqlite3_seri
99f0: 61 6c 69 7a 65 28 29 5d 20 61 6e 64 20 5b 73 71  alize()] and [sq
9a00: 6c 69 74 65 33 5f 64 65 73 65 72 69 61 6c 69 7a  lite3_deserializ
9a10: 65 28 29 5d 0a 20 20 69 6e 74 65 72 66 61 63 65  e()].  interface
9a20: 73 2e 0a 20 20 3c 70 3e 0a 20 20 46 75 74 75 72  s..  <p>.  Futur
9a30: 65 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53 51  e releases of SQ
9a40: 4c 69 74 65 20 6d 69 67 68 74 20 65 6e 61 62 6c  Lite might enabl
9a50: 65 20 74 68 6f 73 65 20 69 6e 74 65 72 66 61 63  e those interfac
9a60: 65 73 20 62 79 20 64 65 66 61 75 6c 74 20 61 6e  es by default an
9a70: 64 0a 20 20 69 6e 73 74 65 61 64 20 6f 66 66 65  d.  instead offe
9a80: 72 20 61 6e 20 53 51 4c 49 54 45 5f 4f 4d 49 54  r an SQLITE_OMIT
9a90: 5f 44 45 53 45 52 49 41 4c 49 5a 45 20 6f 70 74  _DESERIALIZE opt
9aa0: 69 6f 6e 20 74 6f 20 6c 65 61 76 65 20 74 68 65  ion to leave the
9ab0: 6d 20 6f 75 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  m out..}..COMPIL
9ac0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
9ad0: 5f 45 4e 41 42 4c 45 5f 45 58 50 4c 41 49 4e 5f  _ENABLE_EXPLAIN_
9ae0: 43 4f 4d 4d 45 4e 54 53 7d 20 7b 0a 20 20 54 68  COMMENTS} {.  Th
9af0: 69 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 65  is option adds e
9b00: 78 74 72 61 20 6c 6f 67 69 63 20 74 6f 20 53 51  xtra logic to SQ
9b10: 4c 69 74 65 20 74 68 61 74 20 69 6e 73 65 72 74  Lite that insert
9b20: 73 20 63 6f 6d 6d 65 6e 74 20 74 65 78 74 20 69  s comment text i
9b30: 6e 74 6f 20 74 68 65 0a 20 20 6f 75 74 70 75 74  nto the.  output
9b40: 20 6f 66 20 5b 45 58 50 4c 41 49 4e 5d 2e 20 20   of [EXPLAIN].  
9b50: 54 68 65 73 65 20 65 78 74 72 61 20 63 6f 6d 6d  These extra comm
9b60: 65 6e 74 73 20 75 73 65 20 65 78 74 72 61 20 6d  ents use extra m
9b70: 65 6d 6f 72 79 2c 20 74 68 75 73 0a 20 20 6d 61  emory, thus.  ma
9b80: 6b 69 6e 67 20 5b 70 72 65 70 61 72 65 64 20 73  king [prepared s
9b90: 74 61 74 65 6d 65 6e 74 73 5d 20 6c 61 72 67 65  tatements] large
9ba0: 72 20 61 6e 64 20 76 65 72 79 20 73 6c 69 67 68  r and very sligh
9bb0: 74 6c 79 20 73 6c 6f 77 65 72 2c 20 61 6e 64 20  tly slower, and 
9bc0: 73 6f 20 74 68 65 79 20 61 72 65 0a 20 20 74 75  so they are.  tu
9bd0: 72 6e 65 64 20 6f 66 66 20 62 79 20 64 65 66 61  rned off by defa
9be0: 75 6c 74 20 61 6e 64 20 69 6e 20 6d 6f 73 74 20  ult and in most 
9bf0: 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20 20 42 75  application.  Bu
9c00: 74 20 73 6f 6d 65 20 61 70 70 6c 69 63 61 74 69  t some applicati
9c10: 6f 6e 73 2c 20 73 75 63 68 0a 20 20 61 73 20 74  ons, such.  as t
9c20: 68 65 20 5b 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65  he [command-line
9c30: 20 73 68 65 6c 6c 5d 20 66 6f 72 20 53 51 4c 69   shell] for SQLi
9c40: 74 65 2c 20 76 61 6c 75 65 20 63 6c 61 72 69 74  te, value clarit
9c50: 79 20 6f 66 20 45 58 50 4c 41 49 4e 20 6f 75 74  y of EXPLAIN out
9c60: 70 75 74 0a 20 20 6f 76 65 72 20 72 61 77 20 70  put.  over raw p
9c70: 65 72 66 6f 72 6d 61 6e 63 65 20 61 6e 64 20 73  erformance and s
9c80: 6f 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  o this compile-t
9c90: 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 61 76  ime option is av
9ca0: 61 69 6c 61 62 6c 65 20 74 6f 20 74 68 65 6d 2e  ailable to them.
9cb0: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 45 4e  .  The SQLITE_EN
9cc0: 41 42 4c 45 5f 45 58 50 4c 41 49 4e 5f 43 4f 4d  ABLE_EXPLAIN_COM
9cd0: 4d 45 4e 54 53 20 63 6f 6d 70 69 6c 65 2d 74 69  MENTS compile-ti
9ce0: 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 61 6c 73  me option is als
9cf0: 6f 20 65 6e 61 62 6c 65 64 0a 20 20 61 75 74 6f  o enabled.  auto
9d00: 6d 61 74 69 63 61 6c 6c 79 20 69 66 20 5b 53 51  matically if [SQ
9d10: 4c 49 54 45 5f 44 45 42 55 47 5d 20 69 73 20 65  LITE_DEBUG] is e
9d20: 6e 61 62 6c 65 64 2e 0a 7d 0a 0a 0a 43 4f 4d 50  nabled..}...COMP
9d30: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
9d40: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 7d 20  TE_ENABLE_FTS3} 
9d50: 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  {.  When this op
9d60: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 20  tion is defined 
9d70: 69 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61  in the [amalgama
9d80: 74 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e 20 33  tion], version 3
9d90: 0a 20 20 6f 66 20 74 68 65 20 66 75 6c 6c 2d 74  .  of the full-t
9da0: 65 78 74 20 73 65 61 72 63 68 20 65 6e 67 69 6e  ext search engin
9db0: 65 20 69 73 20 61 64 64 65 64 20 74 6f 20 74 68  e is added to th
9dc0: 65 20 62 75 69 6c 64 20 61 75 74 6f 6d 61 74 69  e build automati
9dd0: 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  cally..}..COMPIL
9de0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
9df0: 5f 45 4e 41 42 4c 45 5f 46 54 53 33 5f 50 41 52  _ENABLE_FTS3_PAR
9e00: 45 4e 54 48 45 53 49 53 7d 20 7b 0a 20 20 54 68  ENTHESIS} {.  Th
9e10: 69 73 20 6f 70 74 69 6f 6e 20 6d 6f 64 69 66 69  is option modifi
9e20: 65 73 20 74 68 65 20 71 75 65 72 79 20 70 61 74  es the query pat
9e30: 74 65 72 6e 20 70 61 72 73 65 72 20 69 6e 20 46  tern parser in F
9e40: 54 53 33 20 73 75 63 68 20 74 68 61 74 20 69 74  TS3 such that it
9e50: 0a 20 20 73 75 70 70 6f 72 74 73 20 6f 70 65 72  .  supports oper
9e60: 61 74 6f 72 73 20 41 4e 44 20 61 6e 64 20 4e 4f  ators AND and NO
9e70: 54 20 28 69 6e 20 61 64 64 69 74 69 6f 6e 20 74  T (in addition t
9e80: 6f 20 74 68 65 20 75 73 75 61 6c 20 4f 52 20 61  o the usual OR a
9e90: 6e 64 20 4e 45 41 52 29 0a 20 20 61 6e 64 20 61  nd NEAR).  and a
9ea0: 6c 73 6f 20 61 6c 6c 6f 77 73 20 71 75 65 72 79  lso allows query
9eb0: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 6f 20   expressions to 
9ec0: 63 6f 6e 74 61 69 6e 20 6e 65 73 74 65 64 20 70  contain nested p
9ed0: 61 72 65 6e 74 68 65 73 69 73 2e 0a 7d 0a 0a 43  arenthesis..}..C
9ee0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9ef0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53  QLITE_ENABLE_FTS
9f00: 33 5f 54 4f 4b 45 4e 49 5a 45 52 7d 20 7b 0a 20  3_TOKENIZER} {. 
9f10: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61   This option ena
9f20: 62 6c 65 73 20 74 68 65 20 74 77 6f 2d 61 72 67  bles the two-arg
9f30: 75 6d 65 6e 74 20 76 65 72 73 69 6f 6e 20 6f 66  ument version of
9f40: 20 74 68 65 20 5b 66 74 73 33 5f 74 6f 6b 65 6e   the [fts3_token
9f50: 69 7a 65 72 28 29 5d 0a 20 20 69 6e 74 65 72 66  izer()].  interf
9f60: 61 63 65 2e 20 20 54 68 65 20 73 65 63 6f 6e 64  ace.  The second
9f70: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 66 74 73   argument to fts
9f80: 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 69 73  3_tokenizer() is
9f90: 20 73 75 70 70 6f 73 65 20 74 6f 20 62 65 20 61   suppose to be a
9fa0: 0a 20 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  .  pointer to a 
9fb0: 66 75 6e 63 74 69 6f 6e 20 28 65 6e 63 6f 64 65  function (encode
9fc0: 64 20 61 73 20 61 20 42 4c 4f 42 29 20 74 68 61  d as a BLOB) tha
9fd0: 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 0a  t implements an.
9fe0: 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 65    application de
9ff0: 66 69 6e 65 64 20 74 6f 6b 65 6e 69 7a 65 72 2e  fined tokenizer.
a000: 20 20 49 66 20 68 6f 73 74 69 6c 65 20 61 63 74    If hostile act
a010: 6f 72 73 20 61 72 65 20 61 62 6c 65 20 74 6f 20  ors are able to 
a020: 72 75 6e 0a 20 20 74 68 65 20 74 77 6f 2d 61 72  run.  the two-ar
a030: 67 75 6d 65 6e 74 20 76 65 72 73 69 6f 6e 20 6f  gument version o
a040: 66 20 66 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72  f fts3_tokenizer
a050: 28 29 20 77 69 74 68 20 61 6e 20 61 72 62 69 74  () with an arbit
a060: 72 61 72 79 20 73 65 63 6f 6e 64 0a 20 20 61 72  rary second.  ar
a070: 67 75 6d 65 6e 74 2c 20 74 68 65 79 20 63 6f 75  gument, they cou
a080: 6c 64 20 75 73 65 20 63 72 61 73 68 20 6f 72 20  ld use crash or 
a090: 74 61 6b 65 20 63 6f 6e 74 72 6f 6c 20 6f 66 20  take control of 
a0a0: 74 68 65 20 70 72 6f 63 65 73 73 2e 20 0a 20 20  the process. .  
a0b0: 3c 70 3e 0a 20 20 42 65 63 61 75 73 65 20 6f 66  <p>.  Because of
a0c0: 20 73 65 63 75 72 69 74 79 20 63 6f 6e 63 65 72   security concer
a0d0: 6e 73 2c 20 74 68 65 20 74 77 6f 2d 61 72 67 75  ns, the two-argu
a0e0: 6d 65 6e 74 20 66 74 73 33 5f 74 6f 6b 65 6e 69  ment fts3_tokeni
a0f0: 7a 65 72 28 29 20 66 65 61 74 75 72 65 20 0a 20  zer() feature . 
a100: 20 77 61 73 20 64 69 73 61 62 6c 65 64 20 62 65   was disabled be
a110: 67 69 6e 6e 69 6e 67 20 77 69 74 68 20 5b 56 65  ginning with [Ve
a120: 72 73 69 6f 6e 20 33 2e 31 31 2e 30 5d 20 28 5b  rsion 3.11.0] ([
a130: 64 61 74 65 6f 66 3a 33 2e 31 31 2e 30 5d 29 0a  dateof:3.11.0]).
a140: 20 20 75 6e 6c 65 73 73 20 74 68 69 73 20 63 6f    unless this co
a150: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
a160: 6e 20 69 73 20 75 73 65 64 2e 0a 20 20 5b 56 65  n is used..  [Ve
a170: 72 73 69 6f 6e 20 33 2e 31 32 2e 30 5d 20 28 5b  rsion 3.12.0] ([
a180: 64 61 74 65 6f 66 3a 33 2e 31 32 2e 30 5d 29 20  dateof:3.12.0]) 
a190: 61 64 64 65 64 20 74 68 65 20 0a 20 20 5b 73 71  added the .  [sq
a1a0: 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 5d  lite3_db_config]
a1b0: 28 64 62 2c 5b 53 51 4c 49 54 45 5f 44 42 43 4f  (db,[SQLITE_DBCO
a1c0: 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 54 53 33  NFIG_ENABLE_FTS3
a1d0: 5f 54 4f 4b 45 4e 49 5a 45 52 5d 2c 31 2c 30 29  _TOKENIZER],1,0)
a1e0: 20 69 6e 74 65 72 66 61 63 65 0a 20 20 74 68 61   interface.  tha
a1f0: 74 20 61 63 74 69 76 61 74 65 73 20 74 68 65 20  t activates the 
a200: 74 77 6f 2d 61 72 67 75 6d 65 6e 74 20 76 65 72  two-argument ver
a210: 73 69 6f 6e 20 6f 66 20 5b 66 74 73 33 5f 74 6f  sion of [fts3_to
a220: 6b 65 6e 69 7a 65 72 28 29 5d 0a 20 20 66 6f 72  kenizer()].  for
a230: 20 61 20 73 70 65 63 69 66 69 63 20 5b 64 61 74   a specific [dat
a240: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
a250: 5d 20 61 74 20 72 75 6e 2d 74 69 6d 65 2e 0a 7d  ] at run-time..}
a260: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
a270: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
a280: 46 54 53 34 7d 20 7b 0a 20 20 57 68 65 6e 20 74  FTS4} {.  When t
a290: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
a2a0: 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 61 6d  fined in the [am
a2b0: 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76 65 72  algamation], ver
a2c0: 73 69 6f 6e 73 20 33 20 61 6e 64 20 34 0a 20 20  sions 3 and 4.  
a2d0: 6f 66 20 74 68 65 20 66 75 6c 6c 2d 74 65 78 74  of the full-text
a2e0: 20 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20 69   search engine i
a2f0: 73 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62  s added to the b
a300: 75 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61 6c  uild automatical
a310: 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ly..}..COMPILE_O
a320: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
a330: 41 42 4c 45 5f 46 54 53 35 7d 20 7b 0a 20 20 57  ABLE_FTS5} {.  W
a340: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
a350: 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68  is defined in th
a360: 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d  e [amalgamation]
a370: 2c 20 76 65 72 73 69 6f 6e 73 20 35 0a 20 20 6f  , versions 5.  o
a380: 66 20 74 68 65 20 66 75 6c 6c 2d 74 65 78 74 20  f the full-text 
a390: 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20 28 5b  search engine ([
a3a0: 66 74 73 35 5d 29 20 69 73 20 61 64 64 65 64 20  fts5]) is added 
a3b0: 74 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75 74  to the build aut
a3c0: 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43  omatically..}..C
a3d0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
a3e0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 47 45 4f  QLITE_ENABLE_GEO
a3f0: 50 4f 4c 59 7d 20 7b 0a 20 20 57 68 65 6e 20 74  POLY} {.  When t
a400: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
a410: 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 61 6d  fined in the [am
a420: 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 74 68 65  algamation], the
a430: 20 5b 47 65 6f 70 6f 6c 79 20 65 78 74 65 6e 73   [Geopoly extens
a440: 69 6f 6e 5d 0a 20 20 69 73 20 69 6e 63 6c 75 64  ion].  is includ
a450: 65 64 20 69 6e 20 74 68 65 20 62 75 69 6c 64 2e  ed in the build.
a460: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
a470: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
a480: 45 5f 49 43 55 7d 20 7b 0a 20 20 54 68 69 73 20  E_ICU} {.  This 
a490: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
a4a0: 65 20 0a 20 20 5b 68 74 74 70 3a 2f 2f 77 77 77  e .  [http://www
a4b0: 2e 69 63 75 2d 70 72 6f 6a 65 63 74 2e 6f 72 67  .icu-project.org
a4c0: 2f 20 7c 20 49 6e 74 65 72 6e 61 74 69 6f 6e 61  / | Internationa
a4d0: 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73 20 66 6f 72  l Components for
a4e0: 20 55 6e 69 63 6f 64 65 5d 0a 20 20 6f 72 20 22   Unicode].  or "
a4f0: 49 43 55 22 20 65 78 74 65 6e 73 69 6f 6e 20 74  ICU" extension t
a500: 6f 20 53 51 4c 69 74 65 20 74 6f 20 62 65 20 61  o SQLite to be a
a510: 64 64 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c  dded to the buil
a520: 64 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  d.  .}..COMPILE_
a530: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
a540: 4e 41 42 4c 45 5f 49 4f 54 52 41 43 45 7d 20 7b  NABLE_IOTRACE} {
a550: 0a 20 20 57 68 65 6e 20 62 6f 74 68 20 74 68 65  .  When both the
a560: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 61 6e 64   SQLite core and
a570: 20 74 68 65 20 5b 43 6f 6d 6d 61 6e 64 20 4c 69   the [Command Li
a580: 6e 65 20 49 6e 74 65 72 66 61 63 65 5d 20 28 43  ne Interface] (C
a590: 4c 49 29 20 61 72 65 20 62 6f 74 68 20 0a 20 20  LI) are both .  
a5a0: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68  compiled with th
a5b0: 69 73 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20  is option, then 
a5c0: 74 68 65 20 43 4c 49 20 70 72 6f 76 69 64 65 73  the CLI provides
a5d0: 20 61 6e 20 65 78 74 72 61 20 63 6f 6d 6d 61 6e   an extra comman
a5e0: 64 0a 20 20 6e 61 6d 65 64 20 22 2e 69 6f 74 72  d.  named ".iotr
a5f0: 61 63 65 22 20 74 68 61 74 20 70 72 6f 76 69 64  ace" that provid
a600: 65 73 20 61 20 6c 6f 77 2d 6c 65 76 65 6c 20 6c  es a low-level l
a610: 6f 67 20 6f 66 20 49 2f 4f 20 61 63 74 69 76 69  og of I/O activi
a620: 74 79 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  ty..  This optio
a630: 6e 20 69 73 20 65 78 70 65 72 69 6d 65 6e 74 61  n is experimenta
a640: 6c 20 61 6e 64 20 6d 61 79 20 62 65 20 64 69 73  l and may be dis
a650: 63 6f 6e 74 69 6e 75 65 64 20 69 6e 20 61 20 66  continued in a f
a660: 75 74 75 72 65 20 72 65 6c 65 61 73 65 2e 0a 7d  uture release..}
a670: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
a680: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
a690: 4a 53 4f 4e 31 7d 20 7b 0a 20 20 57 68 65 6e 20  JSON1} {.  When 
a6a0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
a6b0: 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 61  efined in the [a
a6c0: 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 74 68  malgamation], th
a6d0: 65 0a 20 20 5b 4a 53 4f 4e 20 53 51 4c 20 66 75  e.  [JSON SQL fu
a6e0: 6e 63 74 69 6f 6e 73 5d 20 61 72 65 20 61 64 64  nctions] are add
a6f0: 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20  ed to the build 
a700: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d  automatically..}
a710: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
a720: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
a730: 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 7d 20 7b  LOCKING_STYLE} {
a740: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65  .  This option e
a750: 6e 61 62 6c 65 73 20 61 64 64 69 74 69 6f 6e 61  nables additiona
a760: 6c 20 6c 6f 67 69 63 20 69 6e 20 74 68 65 20 4f  l logic in the O
a770: 53 20 69 6e 74 65 72 66 61 63 65 20 6c 61 79 65  S interface laye
a780: 72 20 66 6f 72 0a 20 20 4d 61 63 20 4f 53 20 58  r for.  Mac OS X
a790: 2e 20 54 68 65 20 61 64 64 69 74 69 6f 6e 61 6c  . The additional
a7a0: 20 6c 6f 67 69 63 20 61 74 74 65 6d 70 74 73 20   logic attempts 
a7b0: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
a7c0: 20 74 79 70 65 20 6f 66 20 74 68 65 0a 20 20 75   type of the.  u
a7d0: 6e 64 65 72 6c 79 69 6e 67 20 66 69 6c 65 73 79  nderlying filesy
a7e0: 73 74 65 6d 20 61 6e 64 20 63 68 6f 6f 73 65 20  stem and choose 
a7f0: 61 6e 64 20 61 6c 74 65 72 6e 61 74 69 76 65 20  and alternative 
a800: 6c 6f 63 6b 69 6e 67 20 73 74 72 61 74 65 67 79  locking strategy
a810: 0a 20 20 74 68 61 74 20 77 6f 72 6b 73 20 63 6f  .  that works co
a820: 72 72 65 63 74 6c 79 20 66 6f 72 20 74 68 61 74  rrectly for that
a830: 20 66 69 6c 65 73 79 73 74 65 6d 20 74 79 70 65   filesystem type
a840: 2e 20 46 69 76 65 20 6c 6f 63 6b 69 6e 67 20 73  . Five locking s
a850: 74 72 61 74 65 67 69 65 73 20 0a 20 20 61 72 65  trategies .  are
a860: 20 61 76 61 69 6c 61 62 6c 65 3a 0a 0a 20 20 3c   available:..  <
a870: 75 6c 3e 0a 20 20 20 20 3c 6c 69 3e 20 50 4f 53  ul>.    <li> POS
a880: 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  IX locking style
a890: 2e 20 54 68 69 73 20 69 73 20 74 68 65 20 64 65  . This is the de
a8a0: 66 61 75 6c 74 20 6c 6f 63 6b 69 6e 67 20 73 74  fault locking st
a8b0: 79 6c 65 20 61 6e 64 20 74 68 65 0a 20 20 20 20  yle and the.    
a8c0: 20 20 20 20 20 73 74 79 6c 65 20 75 73 65 64 20       style used 
a8d0: 62 79 20 6f 74 68 65 72 20 28 6e 6f 6e 20 4d 61  by other (non Ma
a8e0: 63 20 4f 53 20 58 29 20 55 6e 69 78 65 73 2e 20  c OS X) Unixes. 
a8f0: 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61 69 6e  Locks are obtain
a900: 65 64 20 61 6e 64 20 0a 20 20 20 20 20 20 20 20  ed and .        
a910: 20 72 65 6c 65 61 73 65 64 20 75 73 69 6e 67 20   released using 
a920: 74 68 65 20 66 63 6e 74 6c 28 29 20 73 79 73 74  the fcntl() syst
a930: 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20 3c 6c  em call...    <l
a940: 69 3e 20 41 46 50 20 6c 6f 63 6b 69 6e 67 20 73  i> AFP locking s
a950: 74 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63 6b 69  tyle. This locki
a960: 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73 65 64  ng style is used
a970: 20 66 6f 72 20 6e 65 74 77 6f 72 6b 20 66 69 6c   for network fil
a980: 65 20 0a 20 20 20 20 20 20 20 20 20 73 79 73 74  e .         syst
a990: 65 6d 73 20 74 68 61 74 20 75 73 65 20 74 68 65  ems that use the
a9a0: 20 41 46 50 20 28 41 70 70 6c 65 20 46 69 6c 69   AFP (Apple Fili
a9b0: 6e 67 20 50 72 6f 74 6f 63 6f 6c 29 20 70 72 6f  ng Protocol) pro
a9c0: 74 6f 63 6f 6c 2e 20 4c 6f 63 6b 73 0a 20 20 20  tocol. Locks.   
a9d0: 20 20 20 20 20 20 61 72 65 20 6f 62 74 61 69 6e        are obtain
a9e0: 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 74 68  ed by calling th
a9f0: 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69  e library functi
aa00: 6f 6e 20 5f 41 46 50 46 53 53 65 74 4c 6f 63 6b  on _AFPFSSetLock
aa10: 28 29 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 46 6c  ()...    <li> Fl
aa20: 6f 63 6b 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  ock locking styl
aa30: 65 2e 20 54 68 69 73 20 69 73 20 75 73 65 64 20  e. This is used 
aa40: 66 6f 72 20 66 69 6c 65 2d 73 79 73 74 65 6d 73  for file-systems
aa50: 20 74 68 61 74 20 64 6f 20 6e 6f 74 0a 20 20 20   that do not.   
aa60: 20 20 20 20 20 20 73 75 70 70 6f 72 74 20 50 4f        support PO
aa70: 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  SIX locking styl
aa80: 65 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74  e. Locks are obt
aa90: 61 69 6e 65 64 20 61 6e 64 20 72 65 6c 65 61 73  ained and releas
aaa0: 65 64 20 75 73 69 6e 67 0a 20 20 20 20 20 20 20  ed using.       
aab0: 20 20 74 68 65 20 66 6c 6f 63 6b 28 29 20 73 79    the flock() sy
aac0: 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20  stem call...    
aad0: 3c 6c 69 3e 20 44 6f 74 2d 66 69 6c 65 20 6c 6f  <li> Dot-file lo
aae0: 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54 68 69  cking style. Thi
aaf0: 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20  s locking style 
ab00: 69 73 20 75 73 65 64 20 77 68 65 6e 20 6e 65 69  is used when nei
ab10: 74 68 65 72 0a 20 20 20 20 20 20 20 20 20 66 6c  ther.         fl
ab20: 6f 63 6b 20 6e 6f 72 20 50 4f 53 49 58 20 6c 6f  ock nor POSIX lo
ab30: 63 6b 69 6e 67 20 73 74 79 6c 65 73 20 61 72 65  cking styles are
ab40: 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68   supported by th
ab50: 65 20 66 69 6c 65 20 73 79 73 74 65 6d 2e 0a 20  e file system.. 
ab60: 20 20 20 20 20 20 20 20 44 61 74 61 62 61 73 65          Database
ab70: 20 6c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61 69   locks are obtai
ab80: 6e 65 64 20 62 79 20 63 72 65 61 74 69 6e 67 20  ned by creating 
ab90: 61 6e 64 20 65 6e 74 72 79 20 69 6e 20 74 68 65  and entry in the
aba0: 20 66 69 6c 65 2d 73 79 73 74 65 6d 0a 20 20 20   file-system.   
abb0: 20 20 20 20 20 20 61 74 20 61 20 77 65 6c 6c 2d        at a well-
abc0: 6b 6e 6f 77 6e 20 6c 6f 63 61 74 69 6f 6e 20 72  known location r
abd0: 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 64  elative to the d
abe0: 61 74 61 62 61 73 65 20 66 69 6c 65 20 28 61 20  atabase file (a 
abf0: 22 64 6f 74 2d 66 69 6c 65 22 29 0a 20 20 20 20  "dot-file").    
ac00: 20 20 20 20 20 61 6e 64 20 72 65 6c 69 6e 71 75       and relinqu
ac10: 69 73 68 65 64 20 62 79 20 64 65 6c 65 74 69 6e  ished by deletin
ac20: 67 20 74 68 65 20 73 61 6d 65 20 66 69 6c 65 2e  g the same file.
ac30: 0a 0a 20 20 20 20 3c 6c 69 3e 20 4e 6f 20 6c 6f  ..    <li> No lo
ac40: 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 49 66 20  cking style. If 
ac50: 6e 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76  none of the abov
ac60: 65 20 63 61 6e 20 62 65 20 73 75 70 70 6f 72 74  e can be support
ac70: 65 64 2c 20 74 68 69 73 20 0a 20 20 20 20 20 20  ed, this .      
ac80: 20 20 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65     locking style
ac90: 20 69 73 20 75 73 65 64 2e 20 4e 6f 20 64 61 74   is used. No dat
aca0: 61 62 61 73 65 20 6c 6f 63 6b 69 6e 67 20 6d 65  abase locking me
acb0: 63 68 61 6e 69 73 6d 20 69 73 20 75 73 65 64 2e  chanism is used.
acc0: 20 57 68 65 6e 0a 20 20 20 20 20 20 20 20 20 74   When.         t
acd0: 68 69 73 20 73 79 73 74 65 6d 20 69 73 20 75 73  his system is us
ace0: 65 64 20 69 74 20 69 73 20 6e 6f 74 20 73 61 66  ed it is not saf
acf0: 65 20 66 6f 72 20 61 20 73 69 6e 67 6c 65 20 64  e for a single d
ad00: 61 74 61 62 61 73 65 20 74 6f 20 62 65 0a 20 20  atabase to be.  
ad10: 20 20 20 20 20 20 20 61 63 63 65 73 73 65 64 20         accessed 
ad20: 62 79 20 6d 75 6c 74 69 70 6c 65 20 63 6c 69 65  by multiple clie
ad30: 6e 74 73 2e 0a 20 20 3c 2f 75 6c 3e 0a 0a 20 20  nts..  </ul>..  
ad40: 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 66 69  Additionally, fi
ad50: 76 65 20 65 78 74 72 61 20 5b 56 46 53 5d 20 69  ve extra [VFS] i
ad60: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 61  mplementations a
ad70: 72 65 20 70 72 6f 76 69 64 65 64 20 61 73 20 77  re provided as w
ad80: 65 6c 6c 20 61 73 20 74 68 65 0a 20 20 64 65 66  ell as the.  def
ad90: 61 75 6c 74 2e 20 42 79 20 73 70 65 63 69 66 79  ault. By specify
ada0: 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 20 65  ing one of the e
adb0: 78 74 72 61 20 56 46 53 20 69 6d 70 6c 65 6d 65  xtra VFS impleme
adc0: 6e 74 61 74 69 6f 6e 73 20 0a 20 20 77 68 65 6e  ntations .  when
add0: 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69 74 65   calling [sqlite
ade0: 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61 6e  3_open_v2()], an
adf0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79   application may
ae00: 20 62 79 70 61 73 73 20 74 68 65 20 66 69 6c 65   bypass the file
ae10: 2d 73 79 73 74 65 6d 0a 20 20 64 65 74 65 63 74  -system.  detect
ae20: 69 6f 6e 20 6c 6f 67 69 63 20 61 6e 64 20 65 78  ion logic and ex
ae30: 70 6c 69 63 69 74 6c 79 20 73 65 6c 65 63 74 20  plicitly select 
ae40: 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65  one of the above
ae50: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73 2e   locking styles.
ae60: 20 54 68 65 0a 20 20 66 69 76 65 20 65 78 74 72   The.  five extr
ae70: 61 20 5b 56 46 53 5d 20 69 6d 70 6c 65 6d 65 6e  a [VFS] implemen
ae80: 74 61 74 69 6f 6e 73 20 61 72 65 20 63 61 6c 6c  tations are call
ae90: 65 64 20 22 75 6e 69 78 2d 70 6f 73 69 78 22 2c  ed "unix-posix",
aea0: 20 22 75 6e 69 78 2d 61 66 70 22 2c 0a 20 20 22   "unix-afp",.  "
aeb0: 75 6e 69 78 2d 66 6c 6f 63 6b 22 2c 20 22 75 6e  unix-flock", "un
aec0: 69 78 2d 64 6f 74 66 69 6c 65 22 20 61 6e 64 20  ix-dotfile" and 
aed0: 22 75 6e 69 78 2d 6e 6f 6e 65 22 2e 0a 7d 0a 0a  "unix-none"..}..
aee0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
aef0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45  SQLITE_ENABLE_ME
af00: 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e 54 7d  MORY_MANAGEMENT}
af10: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
af20: 20 61 64 64 73 20 65 78 74 72 61 20 6c 6f 67 69   adds extra logi
af30: 63 20 74 6f 20 53 51 4c 69 74 65 20 74 68 61 74  c to SQLite that
af40: 20 61 6c 6c 6f 77 73 20 69 74 20 74 6f 20 72 65   allows it to re
af50: 6c 65 61 73 65 20 75 6e 75 73 65 64 0a 20 20 6d  lease unused.  m
af60: 65 6d 6f 72 79 20 75 70 6f 6e 20 72 65 71 75 65  emory upon reque
af70: 73 74 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  st.  This option
af80: 20 6d 75 73 74 20 62 65 20 65 6e 61 62 6c 65 64   must be enabled
af90: 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68   in order for th
afa0: 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c  e.  [sqlite3_rel
afb0: 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69  ease_memory()] i
afc0: 6e 74 65 72 66 61 63 65 20 74 6f 20 77 6f 72 6b  nterface to work
afd0: 2e 20 20 49 66 20 74 68 69 73 20 63 6f 6d 70 69  .  If this compi
afe0: 6c 65 2d 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e  le-time.  option
aff0: 20 69 73 20 6e 6f 74 20 75 73 65 64 2c 20 74 68   is not used, th
b000: 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65 61  e [sqlite3_relea
b010: 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74  se_memory()] int
b020: 65 72 66 61 63 65 20 69 73 20 61 20 0a 20 20 6e  erface is a .  n
b030: 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  o-op..}..COMPILE
b040: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
b050: 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 7d 20  ENABLE_MEMSYS3} 
b060: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
b070: 69 6e 63 6c 75 64 65 73 20 63 6f 64 65 20 69 6e  includes code in
b080: 20 53 51 4c 69 74 65 20 74 68 61 74 20 69 6d 70   SQLite that imp
b090: 6c 65 6d 65 6e 74 73 20 61 6e 20 61 6c 74 65 72  lements an alter
b0a0: 6e 61 74 69 76 65 0a 20 20 6d 65 6d 6f 72 79 20  native.  memory 
b0b0: 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 54 68 69 73  allocator.  This
b0c0: 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6d 65 6d   alternative mem
b0d0: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  ory allocator is
b0e0: 20 6f 6e 6c 79 20 65 6e 67 61 67 65 64 0a 20 20   only engaged.  
b0f0: 77 68 65 6e 20 74 68 65 20 5b 53 51 4c 49 54 45  when the [SQLITE
b100: 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 20 6f 70  _CONFIG_HEAP] op
b110: 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33  tion to [sqlite3
b120: 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73 20 75 73  _config()] is us
b130: 65 64 20 74 6f 0a 20 20 73 75 70 70 6c 79 20 61  ed to.  supply a
b140: 20 6c 61 72 67 65 20 63 68 75 6e 6b 20 6f 66 20   large chunk of 
b150: 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 77 68 69 63  memory from whic
b160: 68 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c  h all memory all
b170: 6f 63 61 74 69 6f 6e 73 20 61 72 65 0a 20 20 74  ocations are.  t
b180: 61 6b 65 6e 2e 0a 20 20 54 68 65 20 4d 45 4d 53  aken..  The MEMS
b190: 59 53 33 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  YS3 memory alloc
b1a0: 61 74 6f 72 20 75 73 65 73 20 61 20 68 79 62 72  ator uses a hybr
b1b0: 69 64 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 61 6c  id allocation al
b1c0: 67 6f 72 69 74 68 6d 20 0a 20 20 70 61 74 74 65  gorithm .  patte
b1d0: 72 6e 65 64 20 61 66 74 65 72 20 64 6c 6d 61 6c  rned after dlmal
b1e0: 6c 6f 63 28 29 2e 20 20 20 4f 6e 6c 79 20 6f 6e  loc().   Only on
b1f0: 65 20 6f 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  e of SQLITE_ENAB
b200: 4c 45 5f 4d 45 4d 53 59 53 33 20 61 6e 64 20 0a  LE_MEMSYS3 and .
b210: 20 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f    SQLITE_ENABLE_
b220: 4d 45 4d 53 59 53 35 20 6d 61 79 20 62 65 20 65  MEMSYS5 may be e
b230: 6e 61 62 6c 65 64 20 61 74 20 6f 6e 63 65 2e 0a  nabled at once..
b240: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b250: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
b260: 5f 4d 45 4d 53 59 53 35 7d 20 7b 0a 20 20 54 68  _MEMSYS5} {.  Th
b270: 69 73 20 6f 70 74 69 6f 6e 20 69 6e 63 6c 75 64  is option includ
b280: 65 73 20 63 6f 64 65 20 69 6e 20 53 51 4c 69 74  es code in SQLit
b290: 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74  e that implement
b2a0: 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65  s an alternative
b2b0: 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  .  memory alloca
b2c0: 74 6f 72 2e 20 20 54 68 69 73 20 61 6c 74 65 72  tor.  This alter
b2d0: 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c  native memory al
b2e0: 6c 6f 63 61 74 6f 72 20 69 73 20 6f 6e 6c 79 20  locator is only 
b2f0: 65 6e 67 61 67 65 64 0a 20 20 77 68 65 6e 20 74  engaged.  when t
b300: 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  he [SQLITE_CONFI
b310: 47 5f 48 45 41 50 5d 20 6f 70 74 69 6f 6e 20 74  G_HEAP] option t
b320: 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  o [sqlite3_confi
b330: 67 28 29 5d 20 69 73 20 75 73 65 64 20 74 6f 0a  g()] is used to.
b340: 20 20 73 75 70 70 6c 79 20 61 20 6c 61 72 67 65    supply a large
b350: 20 63 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f 72 79   chunk of memory
b360: 20 66 72 6f 6d 20 77 68 69 63 68 20 61 6c 6c 20   from which all 
b370: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
b380: 6e 73 20 61 72 65 0a 20 20 74 61 6b 65 6e 2e 0a  ns are.  taken..
b390: 20 20 54 68 65 20 4d 45 4d 53 59 53 35 20 6d 6f    The MEMSYS5 mo
b3a0: 64 75 6c 65 20 72 6f 75 6e 64 73 20 61 6c 6c 20  dule rounds all 
b3b0: 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 75 70 20 74  allocations up t
b3c0: 6f 20 74 68 65 20 6e 65 78 74 20 70 6f 77 65 72  o the next power
b3d0: 0a 20 20 6f 66 20 74 77 6f 20 61 6e 64 20 75 73  .  of two and us
b3e0: 65 73 20 61 20 66 69 72 73 74 2d 66 69 74 2c 20  es a first-fit, 
b3f0: 62 75 64 64 79 2d 61 6c 6c 6f 63 61 74 6f 72 20  buddy-allocator 
b400: 61 6c 67 6f 72 69 74 68 6d 0a 20 20 74 68 61 74  algorithm.  that
b410: 20 70 72 6f 76 69 64 65 73 20 73 74 72 6f 6e 67   provides strong
b420: 20 67 75 61 72 61 6e 74 65 65 73 20 61 67 61 69   guarantees agai
b430: 6e 73 74 20 66 72 61 67 6d 65 6e 74 61 74 69 6f  nst fragmentatio
b440: 6e 20 61 6e 64 20 62 72 65 61 6b 64 6f 77 6e 0a  n and breakdown.
b450: 20 20 73 75 62 6a 65 63 74 20 74 6f 20 63 65 72    subject to cer
b460: 74 61 69 6e 20 6f 70 65 72 61 74 69 6e 67 20 63  tain operating c
b470: 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 7d 0a 0a 43  onstraints..}..C
b480: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
b490: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4e 55 4c  QLITE_ENABLE_NUL
b4a0: 4c 5f 54 52 49 4d 7d 20 7b 0a 20 20 54 68 69 73  L_TRIM} {.  This
b4b0: 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20   option enables 
b4c0: 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20  an optimization 
b4d0: 74 68 61 74 20 6f 6d 69 74 73 20 4e 55 4c 4c 20  that omits NULL 
b4e0: 63 6f 6c 75 6d 6e 73 20 61 74 0a 20 20 74 68 65  columns at.  the
b4f0: 20 65 6e 64 73 20 6f 66 20 72 6f 77 73 2c 20 66   ends of rows, f
b500: 6f 72 20 61 20 73 70 61 63 65 20 73 61 76 69 6e  or a space savin
b510: 67 73 20 6f 6e 20 64 69 73 6b 2e 0a 20 20 3c 70  gs on disk..  <p
b520: 3e 0a 20 20 44 61 74 61 62 61 73 65 73 20 67 65  >.  Databases ge
b530: 6e 65 72 61 74 65 64 20 77 69 74 68 20 74 68 69  nerated with thi
b540: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 64  s option enabled
b550: 20 61 72 65 20 6e 6f 74 20 72 65 61 64 61 62 6c   are not readabl
b560: 65 0a 20 20 62 79 20 53 51 4c 69 74 65 20 76 65  e.  by SQLite ve
b570: 72 73 69 6f 6e 20 33 2e 31 2e 36 20 28 5b 64 61  rsion 3.1.6 ([da
b580: 74 65 6f 66 3a 33 2e 31 2e 36 5d 29 20 61 6e 64  teof:3.1.6]) and
b590: 20 65 61 72 6c 69 65 72 2e 20 20 41 6c 73 6f 2c   earlier.  Also,
b5a0: 0a 20 20 64 61 74 61 62 61 73 65 73 20 67 65 6e  .  databases gen
b5b0: 65 72 61 74 65 64 20 77 69 74 68 20 74 68 69 73  erated with this
b5c0: 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 64 20   option enabled 
b5d0: 61 72 65 20 70 72 6f 6e 65 20 74 6f 0a 20 20 74  are prone to.  t
b5e0: 72 69 67 67 65 72 69 6e 67 20 74 68 65 0a 20 20  riggering the.  
b5f0: 5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e 73 71 6c  [https://www.sql
b600: 69 74 65 2e 6f 72 67 2f 73 72 63 2f 69 6e 66 6f  ite.org/src/info
b610: 2f 65 36 65 39 36 32 64 36 62 30 66 30 36 66 34  /e6e962d6b0f06f4
b620: 36 65 7c 65 36 65 39 36 32 64 36 62 30 66 30 36  6e|e6e962d6b0f06
b630: 66 34 36 5d 0a 20 20 62 75 67 20 69 6e 20 74 68  f46].  bug in th
b640: 65 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f  e [sqlite3_blob_
b650: 72 65 6f 70 65 6e 28 29 5d 20 69 6e 74 65 72 66  reopen()] interf
b660: 61 63 65 2e 20 20 46 6f 72 20 74 68 6f 73 65 20  ace.  For those 
b670: 72 65 61 73 6f 6e 73 2c 0a 20 20 74 68 69 73 20  reasons,.  this 
b680: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 69 73 20  optimization is 
b690: 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66 61  disabled by defa
b6a0: 75 6c 74 2e 20 20 48 6f 77 65 76 65 72 2c 20 74  ult.  However, t
b6b0: 68 69 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  his optimization
b6c0: 0a 20 20 6d 61 79 20 62 65 20 65 6e 61 62 6c 65  .  may be enable
b6d0: 64 20 62 79 20 64 65 66 61 75 6c 74 20 69 6e 20  d by default in 
b6e0: 61 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65  a future release
b6f0: 20 6f 66 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43   of SQLite..}..C
b700: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
b710: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4f 46 46  QLITE_ENABLE_OFF
b720: 53 45 54 5f 53 51 4c 5f 46 55 4e 43 7d 20 7b 0a  SET_SQL_FUNC} {.
b730: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
b740: 61 62 6c 65 73 20 73 75 70 70 6f 72 74 20 66 6f  ables support fo
b750: 72 20 74 68 65 20 5b 73 71 6c 69 74 65 5f 6f 66  r the [sqlite_of
b760: 66 73 65 74 28 58 29 5d 20 53 51 4c 20 66 75 6e  fset(X)] SQL fun
b770: 63 74 69 6f 6e 2e 0a 20 20 3c 70 3e 0a 20 20 54  ction..  <p>.  T
b780: 68 65 20 5b 73 71 6c 69 74 65 5f 6f 66 66 73 65  he [sqlite_offse
b790: 74 28 58 29 5d 20 53 51 4c 20 66 75 6e 63 74 69  t(X)] SQL functi
b7a0: 6f 6e 20 72 65 71 75 69 72 65 73 20 61 20 6e 65  on requires a ne
b7b0: 77 20 69 6e 74 65 72 66 61 63 65 20 6f 6e 20 74  w interface on t
b7c0: 68 65 0a 20 20 42 2d 74 72 65 65 20 73 74 6f 72  he.  B-tree stor
b7d0: 61 67 65 20 65 6e 67 69 6e 65 2c 20 61 20 6e 65  age engine, a ne
b7e0: 77 20 6f 70 63 6f 64 65 20 69 6e 20 74 68 65 20  w opcode in the 
b7f0: 5b 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65  [virtual machine
b800: 5d 20 74 68 61 74 0a 20 20 72 75 6e 73 20 53 51  ] that.  runs SQ
b810: 4c 20 73 74 61 74 65 6d 65 6e 74 73 2c 20 61 6e  L statements, an
b820: 64 20 61 20 6e 65 77 20 63 6f 6e 64 69 74 69 6f  d a new conditio
b830: 6e 61 6c 20 69 6e 20 61 20 63 72 69 74 69 63 61  nal in a critica
b840: 6c 20 70 61 74 68 20 6f 66 20 74 68 65 0a 20 20  l path of the.  
b850: 63 6f 64 65 20 67 65 6e 65 72 61 74 6f 72 2e 20  code generator. 
b860: 20 54 6f 20 61 76 6f 69 64 20 74 68 61 74 20 6f   To avoid that o
b870: 76 65 72 68 65 61 64 20 69 6e 20 61 70 70 6c 69  verhead in appli
b880: 63 61 74 69 6f 6e 73 20 74 68 61 74 20 64 6f 20  cations that do 
b890: 6e 6f 74 0a 20 20 6e 65 65 64 20 74 68 65 20 75  not.  need the u
b8a0: 74 69 6c 69 74 79 20 6f 66 20 73 71 6c 69 74 65  tility of sqlite
b8b0: 5f 6f 66 66 73 65 74 28 58 29 2c 20 74 68 65 20  _offset(X), the 
b8c0: 66 75 6e 63 74 69 6f 6e 20 69 73 20 64 69 73 61  function is disa
b8d0: 62 6c 65 64 20 62 79 0a 20 20 64 65 66 61 75 6c  bled by.  defaul
b8e0: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
b8f0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
b900: 42 4c 45 5f 50 52 45 55 50 44 41 54 45 5f 48 4f  BLE_PREUPDATE_HO
b910: 4f 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  OK} {.  This opt
b920: 69 6f 6e 20 65 6e 61 62 6c 65 73 20 0a 20 20 5b  ion enables .  [
b930: 73 71 6c 69 74 65 33 5f 70 72 65 75 70 64 61 74  sqlite3_preupdat
b940: 65 5f 68 6f 6f 6b 7c 73 65 76 65 72 61 6c 20 6e  e_hook|several n
b950: 65 77 20 41 50 49 73 5d 20 74 68 61 74 20 70 72  ew APIs] that pr
b960: 6f 76 69 64 65 20 63 61 6c 6c 62 61 63 6b 73 0a  ovide callbacks.
b970: 20 20 70 72 69 6f 72 20 74 6f 20 61 6e 79 20 63    prior to any c
b980: 68 61 6e 67 65 20 74 6f 20 61 20 5b 72 6f 77 69  hange to a [rowi
b990: 64 20 74 61 62 6c 65 5d 2e 20 20 54 68 65 20 63  d table].  The c
b9a0: 61 6c 6c 62 61 63 6b 73 20 63 61 6e 20 62 65 20  allbacks can be 
b9b0: 75 73 65 64 0a 20 20 74 6f 20 72 65 63 6f 72 64  used.  to record
b9c0: 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74 68   the state of th
b9d0: 65 20 72 6f 77 20 62 65 66 6f 72 65 20 74 68 65  e row before the
b9e0: 20 63 68 61 6e 67 65 20 6f 63 63 75 72 73 2e 0a   change occurs..
b9f0: 20 20 3c 70 3e 54 68 65 20 61 63 74 69 6f 6e 20    <p>The action 
ba00: 6f 66 20 74 68 65 20 70 72 65 75 70 64 61 74 65  of the preupdate
ba10: 20 68 6f 6f 6b 20 69 73 20 73 69 6d 69 6c 61 72   hook is similar
ba20: 20 74 6f 20 74 68 65 0a 20 20 5b 73 71 6c 69 74   to the.  [sqlit
ba30: 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 7c 75  e3_update_hook|u
ba40: 70 64 61 74 65 20 68 6f 6f 6b 5d 20 65 78 63 65  pdate hook] exce
ba50: 70 74 20 74 68 61 74 20 74 68 65 20 63 61 6c 6c  pt that the call
ba60: 62 61 63 6b 20 69 73 0a 20 20 69 6e 76 6f 6b 65  back is.  invoke
ba70: 64 20 62 65 66 6f 72 65 20 74 68 65 20 63 68 61  d before the cha
ba80: 6e 67 65 2c 20 6e 6f 74 20 61 66 74 65 72 77 61  nge, not afterwa
ba90: 72 64 73 2c 20 61 6e 64 20 74 68 65 20 70 72 65  rds, and the pre
baa0: 75 70 64 61 74 65 0a 20 20 68 6f 6f 6b 20 69 6e  update.  hook in
bab0: 74 65 72 66 61 63 65 73 20 61 72 65 20 6f 6d 69  terfaces are omi
bac0: 74 74 65 64 20 75 6e 6c 65 73 73 20 74 68 69 73  tted unless this
bad0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
bae0: 74 69 6f 6e 20 69 73 0a 20 20 75 73 65 64 2e 0a  tion is.  used..
baf0: 20 20 3c 70 3e 54 68 65 20 70 72 65 75 70 64 61    <p>The preupda
bb00: 74 65 20 68 6f 6f 6b 20 69 6e 74 65 72 66 61 63  te hook interfac
bb10: 65 73 20 77 65 72 65 20 6f 72 69 67 69 6e 61 6c  es were original
bb20: 6c 79 20 61 64 64 65 64 20 74 6f 0a 20 20 73 75  ly added to.  su
bb30: 70 70 6f 72 74 20 74 68 65 20 5b 73 65 73 73 69  pport the [sessi
bb40: 6f 6e 5d 20 65 78 74 65 6e 73 69 6f 6e 2e 0a 7d  on] extension..}
bb50: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
bb60: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
bb70: 51 50 53 47 7d 20 7b 0a 20 20 54 68 69 73 20 6f  QPSG} {.  This o
bb80: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
bb90: 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20   [query planner 
bba0: 73 74 61 62 69 6c 69 74 79 20 67 75 61 72 61 6e  stability guaran
bbb0: 74 65 65 5d 20 28 51 50 53 47 29 20 74 6f 0a 20  tee] (QPSG) to. 
bbc0: 20 62 65 20 6f 6e 20 62 79 20 64 65 66 61 75 6c   be on by defaul
bbd0: 74 2e 20 20 4e 6f 72 6d 61 6c 6c 79 20 74 68 65  t.  Normally the
bbe0: 20 51 50 53 47 20 69 73 20 6f 66 66 20 61 6e 64   QPSG is off and
bbf0: 20 6d 75 73 74 20 62 65 20 61 63 74 69 76 61 74   must be activat
bc00: 65 64 0a 20 20 61 74 20 72 75 6e 2d 74 69 6d 65  ed.  at run-time
bc10: 20 75 73 69 6e 67 20 74 68 65 20 5b 53 51 4c 49   using the [SQLI
bc20: 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42  TE_DBCONFIG_ENAB
bc30: 4c 45 5f 51 50 53 47 5d 20 6f 70 74 69 6f 6e 20  LE_QPSG] option 
bc40: 74 6f 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65  to the.  [sqlite
bc50: 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d 20 69  3_db_config()] i
bc60: 6e 74 65 72 66 61 63 65 2e 0a 7d 0a 0a 43 4f 4d  nterface..}..COM
bc70: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
bc80: 49 54 45 5f 45 4e 41 42 4c 45 5f 52 42 55 7d 20  ITE_ENABLE_RBU} 
bc90: 7b 0a 20 20 45 6e 61 62 6c 65 20 74 68 65 20 63  {.  Enable the c
bca0: 6f 64 65 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e  ode the implemen
bcb0: 74 73 20 74 68 65 20 5b 52 42 55 20 65 78 74 65  ts the [RBU exte
bcc0: 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  nsion]..}..COMPI
bcd0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
bce0: 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45 7d 20  E_ENABLE_RTREE} 
bcf0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
bd00: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
bd10: 20 69 6e 63 6c 75 64 65 20 73 75 70 70 6f 72 74   include support
bd20: 20 66 6f 72 20 74 68 65 0a 20 20 5b 72 74 72 65   for the.  [rtre
bd30: 65 20 7c 20 52 2a 54 72 65 65 20 69 6e 64 65 78  e | R*Tree index
bd40: 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a   extension]..}..
bd50: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
bd60: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 45  SQLITE_ENABLE_SE
bd70: 53 53 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20  SSION} {.  This 
bd80: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74  option enables t
bd90: 68 65 20 5b 73 65 73 73 69 6f 6e 20 65 78 74 65  he [session exte
bda0: 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  nsion]..}..COMPI
bdb0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
bdc0: 45 5f 45 4e 41 42 4c 45 5f 53 4e 41 50 53 48 4f  E_ENABLE_SNAPSHO
bdd0: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
bde0: 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20 63  on enables the c
bdf0: 6f 64 65 20 74 6f 20 73 75 70 70 6f 72 74 20 74  ode to support t
be00: 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 6e 61 70  he [sqlite3_snap
be10: 73 68 6f 74 5d 20 6f 62 6a 65 63 74 0a 20 20 61  shot] object.  a
be20: 6e 64 20 69 74 73 20 72 65 6c 61 74 65 64 20 69  nd its related i
be30: 6e 74 65 72 66 61 63 65 73 3a 0a 20 20 3c 75 6c  nterfaces:.  <ul
be40: 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65  >.  <li> [sqlite
be50: 33 5f 73 6e 61 70 73 68 6f 74 5f 67 65 74 28 29  3_snapshot_get()
be60: 5d 20 28 63 6f 6e 73 74 72 75 63 74 6f 72 29 0a  ] (constructor).
be70: 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
be80: 73 6e 61 70 73 68 6f 74 5f 66 72 65 65 28 29 5d  snapshot_free()]
be90: 20 28 64 65 73 74 72 75 63 74 6f 72 29 0a 20 20   (destructor).  
bea0: 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 73 6e  <li> [sqlite3_sn
beb0: 61 70 73 68 6f 74 5f 6f 70 65 6e 28 29 5d 0a 20  apshot_open()]. 
bec0: 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 73   <li> [sqlite3_s
bed0: 6e 61 70 73 68 6f 74 5f 63 6d 70 28 29 5d 0a 20  napshot_cmp()]. 
bee0: 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 73   <li> [sqlite3_s
bef0: 6e 61 70 73 68 6f 74 5f 72 65 63 6f 76 65 72 28  napshot_recover(
bf00: 29 5d 0a 20 20 3c 2f 75 6c 3e 0a 7d 0a 0a 43 4f  )].  </ul>.}..CO
bf10: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
bf20: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 4f 52 54  LITE_ENABLE_SORT
bf30: 45 52 5f 52 45 46 45 52 45 4e 43 45 53 7d 20 7b  ER_REFERENCES} {
bf40: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61  .  This option a
bf50: 63 74 69 76 61 74 65 73 20 61 6e 20 6f 70 74 69  ctivates an opti
bf60: 6d 69 7a 61 74 69 6f 6e 20 74 68 61 74 20 72 65  mization that re
bf70: 64 75 63 65 73 20 74 68 65 20 6d 65 6d 6f 72 79  duces the memory
bf80: 20 72 65 71 75 69 72 65 64 0a 20 20 62 79 20 74   required.  by t
bf90: 68 65 20 73 6f 72 74 65 72 20 61 74 20 74 68 65  he sorter at the
bfa0: 20 63 6f 73 74 20 6f 66 20 64 6f 69 6e 67 20 61   cost of doing a
bfb0: 64 64 69 74 69 6f 6e 61 6c 20 42 2d 74 72 65 65  dditional B-tree
bfc0: 20 6c 6f 6f 6b 75 70 73 20 61 66 74 65 72 0a 20   lookups after. 
bfd0: 20 74 68 65 20 73 6f 72 74 20 68 61 73 20 6f 63   the sort has oc
bfe0: 63 75 72 72 65 64 2e 0a 20 20 3c 70 3e 0a 20 20  curred..  <p>.  
bff0: 54 68 65 20 64 65 66 61 75 6c 74 20 73 6f 72 74  The default sort
c000: 69 6e 67 20 70 72 6f 63 65 64 75 72 65 20 69 73  ing procedure is
c010: 20 74 6f 20 67 61 74 68 65 72 20 61 6c 6c 20 69   to gather all i
c020: 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 68 61 74 20  nformation that 
c030: 77 69 6c 6c 0a 20 20 75 6c 74 69 6d 61 74 65 6c  will.  ultimatel
c040: 79 20 62 65 20 6f 75 74 70 75 74 20 69 6e 74 6f  y be output into
c050: 20 61 20 22 72 65 63 6f 72 64 22 20 61 6e 64 20   a "record" and 
c060: 70 61 73 73 20 74 68 61 74 20 63 6f 6d 70 6c 65  pass that comple
c070: 74 65 20 72 65 63 6f 72 64 0a 20 20 74 6f 20 74  te record.  to t
c080: 68 65 20 73 6f 72 74 65 72 2e 20 20 42 75 74 20  he sorter.  But 
c090: 69 6e 20 73 6f 6d 65 20 63 61 73 65 73 2c 20 66  in some cases, f
c0a0: 6f 72 20 65 78 61 6d 70 6c 65 20 69 66 20 73 6f  or example if so
c0b0: 6d 65 20 6f 66 20 74 68 65 20 6f 75 74 70 75 74  me of the output
c0c0: 0a 20 20 63 6f 6c 75 6d 6e 73 20 63 6f 6e 73 69  .  columns consi
c0d0: 73 74 73 20 6f 66 20 6c 61 72 67 65 20 42 4c 4f  sts of large BLO
c0e0: 42 20 76 61 6c 75 65 73 2c 20 74 68 65 20 73 69  B values, the si
c0f0: 7a 65 20 6f 66 20 74 68 65 20 65 61 63 68 20 72  ze of the each r
c100: 65 63 6f 72 64 0a 20 20 63 61 6e 20 62 65 20 6c  ecord.  can be l
c110: 61 72 67 65 2c 20 77 68 69 63 68 20 6d 65 61 6e  arge, which mean
c120: 73 20 74 68 61 74 20 74 68 65 20 73 6f 72 74 65  s that the sorte
c130: 72 20 68 61 73 20 74 6f 20 65 69 74 68 65 72 20  r has to either 
c140: 75 73 65 20 6d 6f 72 65 20 6d 65 6d 6f 72 79 2c  use more memory,
c150: 0a 20 20 61 6e 64 2f 6f 72 20 77 72 69 74 65 20  .  and/or write 
c160: 6d 6f 72 65 20 63 6f 6e 74 65 6e 74 20 74 6f 20  more content to 
c170: 74 65 6d 70 6f 72 61 72 79 20 73 74 6f 72 61 67  temporary storag
c180: 65 2e 0a 20 20 3c 70 3e 0a 20 20 57 68 65 6e 20  e..  <p>.  When 
c190: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 4f  SQLITE_ENABLE_SO
c1a0: 52 54 45 52 5f 52 45 46 45 52 45 4e 43 45 53 20  RTER_REFERENCES 
c1b0: 69 73 20 65 6e 61 62 6c 65 64 2c 20 74 68 65 20  is enabled, the 
c1c0: 72 65 63 6f 72 64 73 20 70 61 73 73 65 64 20 74  records passed t
c1d0: 6f 0a 20 20 74 68 65 20 73 6f 72 74 65 72 20 6f  o.  the sorter o
c1e0: 66 74 65 6e 20 63 6f 6e 74 61 69 6e 20 6f 6e 6c  ften contain onl
c1f0: 79 20 61 20 5b 52 4f 57 49 44 5d 20 76 61 6c 75  y a [ROWID] valu
c200: 65 2e 20 20 53 75 63 68 20 72 65 63 6f 72 64 73  e.  Such records
c210: 20 61 72 65 20 6d 75 63 68 0a 20 20 73 6d 61 6c   are much.  smal
c220: 6c 65 72 2e 20 20 54 68 69 73 20 6d 65 61 6e 73  ler.  This means
c230: 20 74 68 65 20 73 6f 72 74 65 72 20 68 61 73 20   the sorter has 
c240: 6d 75 63 68 20 6c 65 73 73 20 22 70 61 79 6c 6f  much less "paylo
c250: 61 64 22 20 74 6f 20 64 65 61 6c 20 77 69 74 68  ad" to deal with
c260: 20 61 6e 64 0a 20 20 63 61 6e 20 72 75 6e 20 66   and.  can run f
c270: 61 73 74 65 72 2e 20 20 41 66 74 65 72 20 73 6f  aster.  After so
c280: 72 74 69 6e 67 20 68 61 73 20 6f 63 63 75 72 72  rting has occurr
c290: 65 64 2c 20 74 68 65 20 52 4f 57 49 44 20 69 73  ed, the ROWID is
c2a0: 20 75 73 65 64 20 74 6f 20 6c 6f 6f 6b 20 75 70   used to look up
c2b0: 20 0a 20 20 74 68 65 20 6f 75 74 70 75 74 20 63   .  the output c
c2c0: 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 69 6e 20  olumn values in 
c2d0: 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 74 61 62  the original tab
c2e0: 6c 65 2e 20 20 54 68 61 74 20 72 65 71 75 69 72  le.  That requir
c2f0: 65 73 20 61 6e 6f 74 68 65 72 0a 20 20 73 65 61  es another.  sea
c300: 72 63 68 20 69 6e 74 6f 20 74 68 65 20 74 61 62  rch into the tab
c310: 6c 65 2c 20 61 6e 64 20 63 6f 75 6c 64 20 70 6f  le, and could po
c320: 74 65 6e 74 69 61 6c 6c 79 20 72 65 73 75 6c 74  tentially result
c330: 20 69 6e 20 61 20 73 6c 6f 77 64 6f 77 6e 2e 20   in a slowdown. 
c340: 20 4f 72 2c 0a 20 20 69 74 20 6d 69 67 68 74 20   Or,.  it might 
c350: 62 65 20 61 20 70 65 72 66 6f 72 6d 61 6e 63 65  be a performance
c360: 20 77 69 6e 2c 20 64 65 70 65 6e 64 69 6e 67 20   win, depending 
c370: 6f 6e 20 68 6f 77 20 6c 61 72 67 65 20 74 68 65  on how large the
c380: 20 76 61 6c 75 65 73 20 61 72 65 2e 0a 20 20 3c   values are..  <
c390: 70 3e 0a 20 20 45 76 65 6e 20 77 68 65 6e 20 74  p>.  Even when t
c3a0: 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  he SQLITE_ENABLE
c3b0: 5f 53 4f 52 54 45 52 5f 52 45 46 45 52 45 4e 43  _SORTER_REFERENC
c3c0: 45 53 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  ES compile-time 
c3d0: 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 2c 0a 20 20  option is on,.  
c3e0: 73 6f 72 74 65 72 20 72 65 66 65 72 65 6e 63 65  sorter reference
c3f0: 73 20 61 72 65 20 73 74 69 6c 6c 20 64 69 73 61  s are still disa
c400: 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e  bled by default.
c410: 20 20 54 6f 20 75 73 65 20 73 6f 72 74 65 72 20    To use sorter 
c420: 72 65 66 65 72 65 6e 63 65 73 2c 0a 20 20 74 68  references,.  th
c430: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75  e application mu
c440: 73 74 20 73 65 74 20 61 20 73 6f 72 74 65 72 20  st set a sorter 
c450: 72 65 66 65 72 65 6e 63 65 20 73 69 7a 65 20 74  reference size t
c460: 68 72 65 73 68 6f 6c 64 20 75 73 69 6e 67 20 74  hreshold using t
c470: 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f  he.  [sqlite3_co
c480: 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f  nfig]([SQLITE_CO
c490: 4e 46 49 47 5f 53 4f 52 54 45 52 52 45 46 5f 53  NFIG_SORTERREF_S
c4a0: 49 5a 45 5d 29 20 69 6e 74 65 72 66 61 63 65 20  IZE]) interface 
c4b0: 61 74 20 73 74 61 72 74 2d 74 69 6d 65 2e 0a 20  at start-time.. 
c4c0: 20 3c 70 3e 0a 20 20 42 65 63 61 75 73 65 20 74   <p>.  Because t
c4d0: 68 65 20 53 51 4c 69 74 65 20 64 65 76 65 6c 6f  he SQLite develo
c4e0: 70 65 72 73 20 64 6f 20 6e 6f 74 20 6b 6e 6f 77  pers do not know
c4f0: 20 77 68 65 74 68 65 72 20 74 68 65 20 0a 20 20   whether the .  
c500: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 4f  SQLITE_ENABLE_SO
c510: 52 54 45 52 5f 52 45 46 45 52 45 4e 43 45 53 20  RTER_REFERENCES 
c520: 6f 70 74 69 6f 6e 20 77 69 6c 6c 20 68 65 6c 70  option will help
c530: 20 6f 72 20 68 75 72 74 20 70 65 72 66 6f 72 6d   or hurt perform
c540: 61 6e 63 65 2c 0a 20 20 69 74 20 69 73 20 64 69  ance,.  it is di
c550: 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c  sabled by defaul
c560: 74 20 61 74 20 74 68 69 73 20 74 69 6d 65 20 28  t at this time (
c570: 32 30 31 38 2d 30 35 2d 30 34 29 2e 20 20 49 74  2018-05-04).  It
c580: 20 6d 69 67 68 74 20 62 65 20 65 6e 61 62 6c 65   might be enable
c590: 64 0a 20 20 62 79 20 64 65 66 61 75 6c 74 20 69  d.  by default i
c5a0: 6e 20 73 6f 6d 65 20 66 75 74 75 72 65 20 72 65  n some future re
c5b0: 6c 65 61 73 65 2c 20 64 65 70 65 6e 64 69 6e 67  lease, depending
c5c0: 20 6f 6e 20 77 68 61 74 20 69 73 20 6c 65 61 72   on what is lear
c5d0: 6e 65 64 20 61 62 6f 75 74 20 69 74 73 0a 20 20  ned about its.  
c5e0: 69 6d 70 61 63 74 20 6f 6e 20 70 65 72 66 6f 72  impact on perfor
c5f0: 6d 61 6e 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  mance..}..COMPIL
c600: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
c610: 5f 45 4e 41 42 4c 45 5f 53 54 4d 54 5f 53 43 41  _ENABLE_STMT_SCA
c620: 4e 53 54 41 54 55 53 7d 20 7b 0a 20 20 54 68 69  NSTATUS} {.  Thi
c630: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
c640: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74   the [sqlite3_st
c650: 6d 74 5f 73 63 61 6e 73 74 61 74 75 73 28 29 5d  mt_scanstatus()]
c660: 20 69 6e 74 65 72 66 61 63 65 2e 20 20 54 68 65   interface.  The
c670: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 73 74 6d 74  .  [sqlite3_stmt
c680: 5f 73 63 61 6e 73 74 61 74 75 73 28 29 5d 20 69  _scanstatus()] i
c690: 6e 74 65 72 66 61 63 65 20 69 73 20 6e 6f 72 6d  nterface is norm
c6a0: 61 6c 6c 79 20 6f 6d 69 74 74 65 64 20 66 72 6f  ally omitted fro
c6b0: 6d 20 74 68 65 20 62 75 69 6c 64 0a 20 20 62 65  m the build.  be
c6c0: 63 61 75 73 65 20 69 74 20 69 6d 70 6f 73 65 73  cause it imposes
c6d0: 20 61 20 73 6d 61 6c 6c 20 70 65 72 66 6f 72 6d   a small perform
c6e0: 61 6e 63 65 20 70 65 6e 61 6c 74 79 2c 20 65 76  ance penalty, ev
c6f0: 65 6e 20 6f 6e 20 73 74 61 74 65 6d 65 6e 74 73  en on statements
c700: 20 74 68 61 74 0a 20 20 64 6f 20 6e 6f 74 20 75   that.  do not u
c710: 73 65 20 74 68 65 20 66 65 61 74 75 72 65 2e 0a  se the feature..
c720: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
c730: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
c740: 5f 53 54 4d 54 56 54 41 42 7d 20 7b 0a 20 20 54  _STMTVTAB} {.  T
c750: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
c760: 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20   option enables 
c770: 74 68 65 20 5b 53 51 4c 49 54 45 5f 53 54 4d 54  the [SQLITE_STMT
c780: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 5d 20   virtual table] 
c790: 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  logic..}..COMPIL
c7a0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
c7b0: 5f 52 54 52 45 45 5f 49 4e 54 5f 4f 4e 4c 59 7d  _RTREE_INT_ONLY}
c7c0: 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c   {.  This compil
c7d0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73  e-time option is
c7e0: 20 64 65 70 72 65 63 61 74 65 64 20 61 6e 64 20   deprecated and 
c7f0: 75 6e 74 65 73 74 65 64 2e 0a 7d 0a 0a 43 4f 4d  untested..}..COM
c800: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
c810: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f  ITE_ENABLE_SQLLO
c820: 47 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  G} {.  This opti
c830: 6f 6e 20 65 6e 61 62 6c 65 73 20 65 78 74 72 61  on enables extra
c840: 20 63 6f 64 65 20 28 65 73 70 65 63 69 61 6c 6c   code (especiall
c850: 79 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f  y the [SQLITE_CO
c860: 4e 46 49 47 5f 53 51 4c 4c 4f 47 5d 0a 20 20 6f  NFIG_SQLLOG].  o
c870: 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65  ption to [sqlite
c880: 33 5f 63 6f 6e 66 69 67 28 29 5d 29 20 74 68 61  3_config()]) tha
c890: 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  t can be used to
c8a0: 20 63 72 65 61 74 65 20 6c 6f 67 73 20 6f 66 20   create logs of 
c8b0: 61 6c 6c 0a 20 20 53 51 4c 69 74 65 20 70 72 6f  all.  SQLite pro
c8c0: 63 65 73 73 69 6e 67 20 70 65 72 66 6f 72 6d 65  cessing performe
c8d0: 64 20 62 79 20 61 6e 20 61 70 70 6c 69 63 61 74  d by an applicat
c8e0: 69 6f 6e 2e 20 20 54 68 65 73 65 20 6c 6f 67 73  ion.  These logs
c8f0: 20 63 61 6e 20 62 65 20 75 73 65 66 75 6c 0a 20   can be useful. 
c900: 20 69 6e 20 64 6f 69 6e 67 20 6f 66 66 2d 6c 69   in doing off-li
c910: 6e 65 20 61 6e 61 6c 79 73 69 73 20 6f 66 20 74  ne analysis of t
c920: 68 65 20 62 65 68 61 76 69 6f 72 20 6f 66 20 61  he behavior of a
c930: 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c 20 61  n application, a
c940: 6e 64 20 65 73 70 65 63 69 61 6c 6c 79 0a 20 20  nd especially.  
c950: 66 6f 72 20 70 65 72 66 6f 72 6d 61 6e 63 65 20  for performance 
c960: 61 6e 61 6c 79 73 69 73 2e 20 20 49 6e 20 6f 72  analysis.  In or
c970: 64 65 72 20 66 6f 72 20 74 68 65 20 53 51 4c 49  der for the SQLI
c980: 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47  TE_ENABLE_SQLLOG
c990: 20 6f 70 74 69 6f 6e 20 74 6f 20 0a 20 20 62 65   option to .  be
c9a0: 20 75 73 65 66 75 6c 2c 20 73 6f 6d 65 20 65 78   useful, some ex
c9b0: 74 72 61 20 63 6f 64 65 20 69 73 20 72 65 71 75  tra code is requ
c9c0: 69 72 65 64 2e 20 20 54 68 65 20 0a 20 20 3c 61  ired.  The .  <a
c9d0: 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 77 77   href="http://ww
c9e0: 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 73 72 63  w.sqlite.org/src
c9f0: 2f 64 6f 63 2f 74 72 75 6e 6b 2f 73 72 63 2f 74  /doc/trunk/src/t
ca00: 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 3e 22 74  est_sqllog.c">"t
ca10: 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 3c 2f 61  est_sqllog.c"</a
ca20: 3e 0a 20 20 73 6f 75 72 63 65 20 63 6f 64 65 0a  >.  source code.
ca30: 20 20 66 69 6c 65 20 69 6e 20 74 68 65 20 53 51    file in the SQ
ca40: 4c 69 74 65 20 73 6f 75 72 63 65 20 74 72 65 65  Lite source tree
ca50: 20 69 73 20 61 20 77 6f 72 6b 69 6e 67 20 65 78   is a working ex
ca60: 61 6d 70 6c 65 20 6f 66 20 74 68 65 20 72 65 71  ample of the req
ca70: 75 69 72 65 64 20 65 78 74 72 61 0a 20 20 63 6f  uired extra.  co
ca80: 64 65 2e 20 20 4f 6e 20 75 6e 69 78 20 61 6e 64  de.  On unix and
ca90: 20 77 69 6e 64 6f 77 73 20 73 79 73 74 65 6d 73   windows systems
caa0: 2c 20 61 20 64 65 76 65 6c 6f 70 65 72 20 63 61  , a developer ca
cab0: 6e 20 61 70 70 65 6e 64 20 74 68 65 20 74 65 78  n append the tex
cac0: 74 20 6f 66 20 74 68 65 0a 20 20 22 74 65 73 74  t of the.  "test
cad0: 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f 75 72 63  _sqllog.c" sourc
cae0: 65 20 63 6f 64 65 20 66 69 6c 65 20 74 6f 20 74  e code file to t
caf0: 68 65 20 65 6e 64 20 6f 66 20 61 6e 20 22 73 71  he end of an "sq
cb00: 6c 69 74 65 33 2e 63 22 20 61 6d 61 6c 67 61 6d  lite3.c" amalgam
cb10: 61 74 69 6f 6e 2c 0a 20 20 72 65 63 6f 6d 70 69  ation,.  recompi
cb20: 6c 65 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  le the applicati
cb30: 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 2d 44 53  on using the -DS
cb40: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c  QLITE_ENABLE_SQL
cb50: 4c 4f 47 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e  LOG option, then
cb60: 20 0a 20 20 63 6f 6e 74 72 6f 6c 20 6c 6f 67 67   .  control logg
cb70: 69 6e 67 20 75 73 69 6e 67 20 65 6e 76 69 72 6f  ing using enviro
cb80: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 2e  nment variables.
cb90: 20 20 53 65 65 20 74 68 65 20 68 65 61 64 65 72    See the header
cba0: 20 63 6f 6d 6d 65 6e 74 20 6f 6e 20 0a 20 20 74   comment on .  t
cbb0: 68 65 20 22 74 65 73 74 5f 73 71 6c 6c 6f 67 2e  he "test_sqllog.
cbc0: 63 22 20 73 6f 75 72 63 65 20 66 69 6c 65 20 66  c" source file f
cbd0: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 65  or additional de
cbe0: 74 61 69 6c 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49  tail.  .}..COMPI
cbf0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
cc00: 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 32 7d 20  E_ENABLE_STAT2} 
cc10: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
cc20: 75 73 65 64 20 74 6f 20 63 61 75 73 65 20 74 68  used to cause th
cc30: 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d  e [ANALYZE] comm
cc40: 61 6e 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a 20  and to collect. 
cc50: 20 69 6e 64 65 78 20 68 69 73 74 6f 67 72 61 6d   index histogram
cc60: 20 64 61 74 61 20 69 6e 20 74 68 65 20 3c 62 3e   data in the <b>
cc70: 73 71 6c 69 74 65 5f 73 74 61 74 32 3c 2f 62 3e  sqlite_stat2</b>
cc80: 20 74 61 62 6c 65 2e 20 20 42 75 74 20 74 68 61   table.  But tha
cc90: 74 0a 20 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  t.  functionalit
cca0: 79 20 77 61 73 20 73 75 70 65 72 63 65 64 65 64  y was superceded
ccb0: 20 62 79 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42   by [SQLITE_ENAB
ccc0: 4c 45 5f 53 54 41 54 33 5d 20 61 73 20 6f 66 0a  LE_STAT3] as of.
ccd0: 20 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f    SQLite [versio
cce0: 6e 20 33 2e 37 2e 39 5d 20 28 5b 64 61 74 65 6f  n 3.7.9] ([dateo
ccf0: 66 3a 33 2e 37 2e 39 5d 29 2e 20 20 0a 20 20 54  f:3.7.9]).  .  T
cd00: 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  he SQLITE_ENABLE
cd10: 5f 53 54 41 54 32 20 63 6f 6d 70 69 6c 65 2d 74  _STAT2 compile-t
cd20: 69 6d 65 20 6f 70 74 69 6f 6e 0a 20 20 69 73 20  ime option.  is 
cd30: 6e 6f 77 20 61 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a  now a no-op..}..
cd40: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
cd50: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
cd60: 41 54 33 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  AT3} {.  This op
cd70: 74 69 6f 6e 20 61 64 64 73 20 61 64 64 69 74 69  tion adds additi
cd80: 6f 6e 61 6c 20 6c 6f 67 69 63 20 74 6f 20 74 68  onal logic to th
cd90: 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d  e [ANALYZE] comm
cda0: 61 6e 64 20 61 6e 64 20 74 6f 0a 20 20 74 68 65  and and to.  the
cdb0: 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 5d   [query planner]
cdc0: 20 74 68 61 74 20 63 61 6e 20 68 65 6c 70 20 53   that can help S
cdd0: 51 4c 69 74 65 20 74 6f 20 63 68 6f 73 65 20 61  QLite to chose a
cde0: 20 62 65 74 74 65 72 20 71 75 65 72 79 20 70 6c   better query pl
cdf0: 61 6e 0a 20 20 75 6e 64 65 72 20 63 65 72 74 61  an.  under certa
ce00: 69 6e 20 73 69 74 75 61 74 69 6f 6e 73 2e 20 20  in situations.  
ce10: 54 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f  The [ANALYZE] co
ce20: 6d 6d 61 6e 64 20 69 73 20 65 6e 68 61 6e 63 65  mmand is enhance
ce30: 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 68  d to collect.  h
ce40: 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66 72  istogram data fr
ce50: 6f 6d 20 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74  om the left-most
ce60: 20 63 6f 6c 75 6d 6e 20 6f 66 20 65 61 63 68 20   column of each 
ce70: 69 6e 64 65 78 20 61 6e 64 20 73 74 6f 72 65 20  index and store 
ce80: 74 68 61 74 20 64 61 74 61 0a 20 20 69 6e 20 74  that data.  in t
ce90: 68 65 20 5b 73 71 6c 69 74 65 5f 73 74 61 74 33  he [sqlite_stat3
cea0: 5d 20 74 61 62 6c 65 2e 20 20 54 68 65 20 71 75  ] table.  The qu
ceb0: 65 72 79 20 70 6c 61 6e 6e 65 72 20 77 69 6c 6c  ery planner will
cec0: 20 74 68 65 6e 20 75 73 65 20 74 68 65 0a 20 20   then use the.  
ced0: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 74  histogram data t
cee0: 6f 20 68 65 6c 70 20 69 74 20 6d 61 6b 65 20 62  o help it make b
cef0: 65 74 74 65 72 20 69 6e 64 65 78 20 63 68 6f 69  etter index choi
cf00: 63 65 73 2e 20 20 4e 6f 74 65 2c 20 68 6f 77 65  ces.  Note, howe
cf10: 76 65 72 2c 0a 20 20 74 68 61 74 20 74 68 65 20  ver,.  that the 
cf20: 75 73 65 20 6f 66 20 68 69 73 74 6f 67 72 61 6d  use of histogram
cf30: 20 64 61 74 61 20 69 6e 20 71 75 65 72 79 20 70   data in query p
cf40: 6c 61 6e 6e 65 72 20 76 69 6f 6c 61 74 65 73 20  lanner violates 
cf50: 74 68 65 0a 20 20 5b 71 75 65 72 79 20 70 6c 61  the.  [query pla
cf60: 6e 6e 65 72 20 73 74 61 62 69 6c 69 74 79 20 67  nner stability g
cf70: 75 61 72 61 6e 74 65 65 5d 20 77 68 69 63 68 20  uarantee] which 
cf80: 69 73 20 69 6d 70 6f 72 74 61 6e 74 20 74 6f 20  is important to 
cf90: 73 6f 6d 65 20 61 70 70 6c 69 63 61 74 69 6f 6e  some application
cfa0: 73 2e 0a 20 20 3c 70 3e 0a 7d 0a 0a 43 4f 4d 50  s..  <p>.}..COMP
cfb0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
cfc0: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34 7d  TE_ENABLE_STAT4}
cfd0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
cfe0: 20 61 64 64 73 20 61 64 64 69 74 69 6f 6e 61 6c   adds additional
cff0: 20 6c 6f 67 69 63 20 74 6f 20 74 68 65 20 5b 41   logic to the [A
d000: 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20  NALYZE] command 
d010: 61 6e 64 20 74 6f 0a 20 20 74 68 65 20 5b 71 75  and to.  the [qu
d020: 65 72 79 20 70 6c 61 6e 6e 65 72 5d 20 74 68 61  ery planner] tha
d030: 74 20 63 61 6e 20 68 65 6c 70 20 53 51 4c 69 74  t can help SQLit
d040: 65 20 74 6f 20 63 68 6f 73 65 20 61 20 62 65 74  e to chose a bet
d050: 74 65 72 20 71 75 65 72 79 20 70 6c 61 6e 0a 20  ter query plan. 
d060: 20 75 6e 64 65 72 20 63 65 72 74 61 69 6e 20 73   under certain s
d070: 69 74 75 61 74 69 6f 6e 73 2e 20 20 54 68 65 20  ituations.  The 
d080: 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e  [ANALYZE] comman
d090: 64 20 69 73 20 65 6e 68 61 6e 63 65 64 20 74 6f  d is enhanced to
d0a0: 20 63 6f 6c 6c 65 63 74 0a 20 20 68 69 73 74 6f   collect.  histo
d0b0: 67 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20 61  gram data from a
d0c0: 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 65 76  ll columns of ev
d0d0: 65 72 79 20 69 6e 64 65 78 20 61 6e 64 20 73 74  ery index and st
d0e0: 6f 72 65 20 74 68 61 74 20 64 61 74 61 0a 20 20  ore that data.  
d0f0: 69 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 5f 73  in the [sqlite_s
d100: 74 61 74 34 5d 20 74 61 62 6c 65 2e 20 20 54 68  tat4] table.  Th
d110: 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20  e query planner 
d120: 77 69 6c 6c 20 74 68 65 6e 20 75 73 65 20 74 68  will then use th
d130: 65 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61  e.  histogram da
d140: 74 61 20 74 6f 20 68 65 6c 70 20 69 74 20 6d 61  ta to help it ma
d150: 6b 65 20 62 65 74 74 65 72 20 69 6e 64 65 78 20  ke better index 
d160: 63 68 6f 69 63 65 73 2e 20 20 54 68 65 20 64 6f  choices.  The do
d170: 77 6e 73 69 64 65 20 6f 66 0a 20 20 74 68 69 73  wnside of.  this
d180: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
d190: 74 69 6f 6e 20 69 73 20 74 68 61 74 20 69 74 20  tion is that it 
d1a0: 76 69 6f 6c 61 74 65 73 20 74 68 65 0a 20 20 5b  violates the.  [
d1b0: 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 73 74  query planner st
d1c0: 61 62 69 6c 69 74 79 20 67 75 61 72 61 6e 74 65  ability guarante
d1d0: 65 5d 20 6d 61 6b 69 6e 67 20 69 74 20 6d 6f 72  e] making it mor
d1e0: 65 20 64 69 66 66 69 63 75 6c 74 20 74 6f 20 65  e difficult to e
d1f0: 6e 73 75 72 65 0a 20 20 63 6f 6e 73 69 73 74 65  nsure.  consiste
d200: 6e 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 69  nt performance i
d210: 6e 20 6d 61 73 73 2d 70 72 6f 64 75 63 65 64 20  n mass-produced 
d220: 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 20 20  applications..  
d230: 3c 70 3e 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41  <p>.  SQLITE_ENA
d240: 42 4c 45 5f 53 54 41 54 34 20 69 73 20 61 6e 20  BLE_STAT4 is an 
d250: 65 6e 68 61 6e 63 65 6d 65 6e 74 20 6f 66 20 5b  enhancement of [
d260: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
d270: 41 54 33 5d 2e 20 20 53 54 41 54 33 0a 20 20 6f  AT3].  STAT3.  o
d280: 6e 6c 79 20 72 65 63 6f 72 64 65 64 20 68 69 73  nly recorded his
d290: 74 6f 67 72 61 6d 20 64 61 74 61 20 66 6f 72 20  togram data for 
d2a0: 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63 6f  the left-most co
d2b0: 6c 75 6d 6e 20 6f 66 20 65 61 63 68 20 69 6e 64  lumn of each ind
d2c0: 65 78 0a 20 20 77 68 65 72 65 61 73 20 74 68 65  ex.  whereas the
d2d0: 20 53 54 41 54 34 20 65 6e 68 61 6e 63 65 6d 65   STAT4 enhanceme
d2e0: 6e 74 20 72 65 63 6f 72 64 73 20 68 69 73 74 6f  nt records histo
d2f0: 67 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20 61  gram data from a
d300: 6c 6c 20 63 6f 6c 75 6d 6e 73 0a 20 20 6f 66 20  ll columns.  of 
d310: 65 61 63 68 20 69 6e 64 65 78 2e 0a 20 20 54 68  each index..  Th
d320: 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  e [SQLITE_ENABLE
d330: 5f 53 54 41 54 33 5d 20 63 6f 6d 70 69 6c 65 2d  _STAT3] compile-
d340: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 61  time option is a
d350: 20 6e 6f 2d 6f 70 20 61 6e 64 20 69 73 20 69 67   no-op and is ig
d360: 6e 6f 72 65 64 0a 20 20 69 66 20 74 68 65 20 53  nored.  if the S
d370: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41  QLITE_ENABLE_STA
d380: 54 34 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  T4 compile-time 
d390: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a  option is used..
d3a0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
d3b0: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
d3c0: 5f 54 52 45 45 5f 45 58 50 4c 41 49 4e 7d 20 7b  _TREE_EXPLAIN} {
d3d0: 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d  .  This compile-
d3e0: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 6e  time option is n
d3f0: 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64 2e 0a 7d  o longer used..}
d400: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
d410: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
d420: 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49  UPDATE_DELETE_LI
d430: 4d 49 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  MIT} {.  This op
d440: 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 61 6e 20  tion enables an 
d450: 6f 70 74 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42  optional ORDER B
d460: 59 20 61 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75  Y and LIMIT clau
d470: 73 65 20 6f 6e 20 0a 20 20 5b 55 50 44 41 54 45  se on .  [UPDATE
d480: 5d 20 61 6e 64 20 5b 44 45 4c 45 54 45 5d 20 73  ] and [DELETE] s
d490: 74 61 74 65 6d 65 6e 74 73 2e 0a 0a 20 20 3c 70  tatements...  <p
d4a0: 3e 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  >If this option 
d4b0: 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e  is defined, then
d4c0: 20 69 74 20 6d 75 73 74 20 61 6c 73 6f 20 62 65   it must also be
d4d0: 20 0a 20 20 64 65 66 69 6e 65 64 20 77 68 65 6e   .  defined when
d4e0: 20 75 73 69 6e 67 20 74 68 65 20 5b 4c 65 6d 6f   using the [Lemo
d4f0: 6e 20 70 61 72 73 65 72 20 67 65 6e 65 72 61 74  n parser generat
d500: 6f 72 5d 20 74 6f 6f 6c 20 74 6f 20 67 65 6e 65  or] tool to gene
d510: 72 61 74 65 20 61 20 70 61 72 73 65 2e 63 0a 20  rate a parse.c. 
d520: 20 66 69 6c 65 2e 20 42 65 63 61 75 73 65 20 6f   file. Because o
d530: 66 20 74 68 69 73 2c 20 74 68 69 73 20 6f 70 74  f this, this opt
d540: 69 6f 6e 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20  ion may only be 
d550: 75 73 65 64 20 77 68 65 6e 20 74 68 65 20 6c 69  used when the li
d560: 62 72 61 72 79 20 69 73 20 62 75 69 6c 74 0a 20  brary is built. 
d570: 20 66 72 6f 6d 20 73 6f 75 72 63 65 2c 20 6e 6f   from source, no
d580: 74 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d 61 6c  t from the [amal
d590: 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 66 72 6f  gamation] or fro
d5a0: 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e  m the collection
d5b0: 20 6f 66 0a 20 20 70 72 65 2d 70 61 63 6b 61 67   of.  pre-packag
d5c0: 65 64 20 43 20 66 69 6c 65 73 20 70 72 6f 76 69  ed C files provi
d5d0: 64 65 64 20 66 6f 72 20 6e 6f 6e 2d 55 6e 69 78  ded for non-Unix
d5e0: 20 6c 69 6b 65 20 70 6c 61 74 66 6f 72 6d 73 20   like platforms 
d5f0: 6f 6e 20 74 68 65 20 77 65 62 73 69 74 65 2e 0a  on the website..
d600: 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c    </p>.}..COMPIL
d610: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
d620: 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e 5f  _ENABLE_UNKNOWN_
d630: 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 7d 20 7b 0a  SQL_FUNCTION} {.
d640: 20 20 57 68 65 6e 20 74 68 65 20 53 51 4c 49 54    When the SQLIT
d650: 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e  E_ENABLE_UNKNOWN
d660: 5f 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 20 63 6f  _SQL_FUNCTION co
d670: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
d680: 6e 20 69 73 0a 20 20 61 63 74 69 76 61 74 65 64  n is.  activated
d690: 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 73 75  , SQLite will su
d6a0: 70 70 72 65 73 73 20 22 75 6e 6b 6e 6f 77 6e 20  ppress "unknown 
d6b0: 66 75 6e 63 74 69 6f 6e 22 20 65 72 72 6f 72 73  function" errors
d6c0: 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 0a 20 20   when running.  
d6d0: 61 6e 20 5b 45 58 50 4c 41 49 4e 5d 20 6f 72 20  an [EXPLAIN] or 
d6e0: 5b 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50  [EXPLAIN QUERY P
d6f0: 4c 41 4e 5d 2e 20 20 49 6e 73 74 65 61 64 20 6f  LAN].  Instead o
d700: 66 20 74 68 72 6f 77 69 6e 67 20 61 6e 20 65 72  f throwing an er
d710: 72 6f 72 2c 0a 20 20 53 51 4c 69 74 65 20 77 69  ror,.  SQLite wi
d720: 6c 6c 20 69 6e 73 65 72 74 20 61 20 73 75 62 73  ll insert a subs
d730: 74 69 74 75 74 65 20 6e 6f 2d 6f 70 20 66 75 6e  titute no-op fun
d740: 63 74 69 6f 6e 20 6e 61 6d 65 64 20 22 75 6e 6b  ction named "unk
d750: 6e 6f 77 6e 28 29 22 2e 0a 20 20 54 68 65 20 73  nown()"..  The s
d760: 75 62 73 74 69 74 75 74 69 6f 6e 20 6f 66 20 22  ubstitution of "
d770: 75 6e 6b 6e 6f 77 6e 28 29 22 20 69 6e 20 70 6c  unknown()" in pl
d780: 61 63 65 20 6f 66 20 75 6e 72 65 63 6f 67 6e 69  ace of unrecogni
d790: 7a 65 64 20 66 75 6e 63 74 69 6f 6e 73 0a 20 20  zed functions.  
d7a0: 6f 6e 6c 79 20 6f 63 63 75 72 73 20 6f 6e 20 5b  only occurs on [
d7b0: 45 58 50 4c 41 49 4e 5d 20 61 6e 64 20 5b 45 58  EXPLAIN] and [EX
d7c0: 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c 41 4e  PLAIN QUERY PLAN
d7d0: 5d 2c 20 6e 6f 74 20 6f 6e 20 6f 72 64 69 6e 61  ], not on ordina
d7e0: 72 79 0a 20 20 73 74 61 74 65 6d 65 6e 74 73 2e  ry.  statements.
d7f0: 0a 20 20 3c 70 3e 0a 20 20 57 68 65 6e 20 75 73  .  <p>.  When us
d800: 65 64 20 69 6e 20 74 68 65 20 5b 63 6f 6d 6d 61  ed in the [comma
d810: 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c 5d 2c 20  nd-line shell], 
d820: 74 68 65 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41  the.  SQLITE_ENA
d830: 42 4c 45 5f 55 4e 4b 4e 4f 57 4e 5f 53 51 4c 5f  BLE_UNKNOWN_SQL_
d840: 46 55 4e 43 54 49 4f 4e 20 66 65 61 74 75 72 65  FUNCTION feature
d850: 20 61 6c 6c 6f 77 73 20 53 51 4c 20 74 65 78 74   allows SQL text
d860: 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 0a 20   that contains. 
d870: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66   application-def
d880: 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 73 20 74  ined functions t
d890: 6f 20 62 65 20 70 61 73 74 65 64 20 69 6e 74 6f  o be pasted into
d8a0: 20 74 68 65 20 73 68 65 6c 6c 20 66 6f 72 20 0a   the shell for .
d8b0: 20 20 61 6e 61 6c 79 73 69 73 20 61 6e 64 20 64    analysis and d
d8c0: 65 62 75 67 67 69 6e 67 20 77 69 74 68 6f 75 74  ebugging without
d8d0: 20 68 61 76 69 6e 67 20 74 6f 20 63 72 65 61 74   having to creat
d8e0: 65 20 61 6e 64 20 6c 6f 61 64 20 61 6e 0a 20 20  e and load an.  
d8f0: 65 78 74 65 6e 73 69 6f 6e 20 74 68 61 74 20 69  extension that i
d900: 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 61 70  mplements the ap
d910: 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
d920: 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 7d 0a 0a  d functions..}..
d930: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
d940: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e  SQLITE_ENABLE_UN
d950: 4c 4f 43 4b 5f 4e 4f 54 49 46 59 7d 20 7b 0a 20  LOCK_NOTIFY} {. 
d960: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61   This option ena
d970: 62 6c 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65  bles the [sqlite
d980: 33 5f 75 6e 6c 6f 63 6b 5f 6e 6f 74 69 66 79 28  3_unlock_notify(
d990: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 61 6e 64  )] interface and
d9a0: 0a 20 20 69 74 73 20 61 73 73 6f 63 69 61 74 65  .  its associate
d9b0: 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e  d functionality.
d9c0: 20 20 53 65 65 20 74 68 65 20 64 6f 63 75 6d 65    See the docume
d9d0: 6e 74 61 74 69 6f 6e 20 74 69 74 6c 65 64 0a 20  ntation titled. 
d9e0: 20 5b 55 73 69 6e 67 20 74 68 65 20 53 51 4c 69   [Using the SQLi
d9f0: 74 65 20 55 6e 6c 6f 63 6b 20 4e 6f 74 69 66 69  te Unlock Notifi
da00: 63 61 74 69 6f 6e 20 46 65 61 74 75 72 65 5d 20  cation Feature] 
da10: 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a 20  for additional. 
da20: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d 0a   information..}.
da30: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
da40: 7b 53 51 4c 49 54 45 5f 49 4e 54 52 4f 53 50 45  {SQLITE_INTROSPE
da50: 43 54 49 4f 4e 5f 50 52 41 47 4d 41 53 7d 20 7b  CTION_PRAGMAS} {
da60: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61  .  This option a
da70: 64 64 73 20 73 6f 6d 65 20 65 78 74 72 61 20 50  dds some extra P
da80: 52 41 47 4d 41 20 73 74 61 74 65 6d 65 6e 74 73  RAGMA statements
da90: 20 73 75 63 68 20 61 73 0a 20 20 5b 50 52 41 47   such as.  [PRAG
daa0: 4d 41 20 66 75 6e 63 74 69 6f 6e 5f 6c 69 73 74  MA function_list
dab0: 5d 2c 20 5b 50 52 41 47 4d 41 20 6d 6f 64 75 6c  ], [PRAGMA modul
dac0: 65 5f 6c 69 73 74 5d 2c 20 61 6e 64 0a 20 20 5b  e_list], and.  [
dad0: 50 52 41 47 4d 41 20 70 72 61 67 6d 61 5f 6c 69  PRAGMA pragma_li
dae0: 73 74 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  st]..}..COMPILE_
daf0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53  OPTION {SQLITE_S
db00: 4f 55 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69 73  OUNDEX} {.  This
db10: 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20   option enables 
db20: 74 68 65 20 5b 73 6f 75 6e 64 65 78 28 29 20 53  the [soundex() S
db30: 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 7d 0a  QL function]..}.
db40: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
db50: 7b 53 51 4c 49 54 45 5f 55 53 45 5f 41 4c 4c 4f  {SQLITE_USE_ALLO
db60: 43 41 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  CA} {.  If this 
db70: 6f 70 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65  option is enable
db80: 64 2c 20 74 68 65 6e 20 74 68 65 20 61 6c 6c 6f  d, then the allo
db90: 63 61 28 29 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ca() memory allo
dba0: 63 61 74 6f 72 20 77 69 6c 6c 20 62 65 0a 20 20  cator will be.  
dbb0: 75 73 65 64 20 69 6e 20 61 20 66 65 77 20 73 69  used in a few si
dbc0: 74 75 61 74 69 6f 6e 73 20 77 68 65 72 65 20 69  tuations where i
dbd0: 74 20 69 73 20 61 70 70 72 6f 70 72 69 61 74 65  t is appropriate
dbe0: 2e 20 20 54 68 69 73 20 72 65 73 75 6c 74 73 20  .  This results 
dbf0: 69 6e 20 61 20 73 6c 69 67 68 74 6c 79 0a 20 20  in a slightly.  
dc00: 73 6d 61 6c 6c 65 72 20 61 6e 64 20 66 61 73 74  smaller and fast
dc10: 65 72 20 62 69 6e 61 72 79 2e 20 20 54 68 65 20  er binary.  The 
dc20: 53 51 4c 49 54 45 5f 55 53 45 5f 41 4c 4c 4f 43  SQLITE_USE_ALLOC
dc30: 41 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  A compile-time o
dc40: 6e 6c 79 20 6f 6e 6c 79 20 0a 20 20 77 6f 72 6b  nly only .  work
dc50: 73 2c 20 6f 66 20 63 6f 75 72 73 65 2c 20 6f 6e  s, of course, on
dc60: 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 73 75   systems that su
dc70: 70 70 6f 72 74 20 61 6c 6c 6f 63 61 28 29 2e 0a  pport alloca()..
dc80: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
dc90: 4e 20 7b 53 51 4c 49 54 45 5f 55 53 45 5f 46 43  N {SQLITE_USE_FC
dca0: 4e 54 4c 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54  NTL_TRACE} {.  T
dcb0: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
dcc0: 73 20 53 51 4c 69 74 65 20 74 6f 20 69 73 73 75  s SQLite to issu
dcd0: 65 20 65 78 74 72 61 20 5b 53 51 4c 49 54 45 5f  e extra [SQLITE_
dce0: 46 43 4e 54 4c 5f 54 52 41 43 45 5d 20 66 69 6c  FCNTL_TRACE] fil
dcf0: 65 20 63 6f 6e 74 72 6f 6c 73 0a 20 20 74 6f 20  e controls.  to 
dd00: 70 72 6f 76 69 64 65 20 73 75 70 70 6c 65 6d 65  provide suppleme
dd10: 6e 74 61 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f  ntary informatio
dd20: 6e 20 74 6f 20 74 68 65 20 56 46 53 2e 20 20 54  n to the VFS.  T
dd30: 68 65 20 22 76 66 73 6c 6f 67 2e 63 22 20 65 78  he "vfslog.c" ex
dd40: 74 65 6e 73 69 6f 6e 0a 20 20 6d 61 6b 65 73 20  tension.  makes 
dd50: 75 73 65 20 6f 66 20 74 68 69 73 20 74 6f 20 70  use of this to p
dd60: 72 6f 76 69 64 65 20 65 6e 68 61 6e 63 65 64 20  rovide enhanced 
dd70: 6c 6f 67 73 20 6f 66 20 56 46 53 20 61 63 74 69  logs of VFS acti
dd80: 76 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  vity..}..COMPILE
dd90: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
dda0: 55 53 45 5f 5a 4c 49 42 7d 20 7b 0a 20 20 54 68  USE_ZLIB} {.  Th
ddb0: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
ddc0: 20 73 6f 6d 65 20 65 78 74 65 6e 73 69 6f 6e 73   some extensions
ddd0: 20 74 6f 20 6c 69 6e 6b 20 61 67 61 69 6e 73 74   to link against
dde0: 20 74 68 65 20 0a 20 20 5b 68 74 74 70 73 3a 2f   the .  [https:/
ddf0: 2f 7a 6c 69 62 2e 6e 65 74 7c 7a 6c 69 62 20 63  /zlib.net|zlib c
de00: 6f 6d 70 72 65 73 73 69 6f 6e 20 6c 69 62 72 61  ompression libra
de10: 72 79 5d 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 69  ry]..  <p>.  Thi
de20: 73 20 6f 70 74 69 6f 6e 20 68 61 73 20 6e 6f 20  s option has no 
de30: 61 66 66 65 63 74 20 6f 6e 20 74 68 65 20 53 51  affect on the SQ
de40: 4c 69 74 65 20 63 6f 72 65 2e 20 20 49 74 20 69  Lite core.  It i
de50: 73 20 6f 6e 6c 79 20 75 73 65 64 20 62 79 20 65  s only used by e
de60: 78 74 65 6e 73 69 6f 6e 73 2e 0a 20 20 54 68 69  xtensions..  Thi
de70: 73 20 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e  s is option is n
de80: 65 63 65 73 73 61 72 79 20 66 6f 72 20 74 68 65  ecessary for the
de90: 20 63 6f 6d 6d 70 72 65 73 73 69 6f 6e 20 61 6e   commpression an
dea0: 64 20 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 0a  d decompression.
deb0: 20 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74    functions that
dec0: 20 61 72 65 20 70 61 72 74 20 6f 66 20 5b 53 51   are part of [SQ
ded0: 4c 20 41 72 63 68 69 76 65 5d 20 73 75 70 70 6f  L Archive] suppo
dee0: 72 74 20 69 6e 20 74 68 65 0a 20 20 5b 63 6f 6d  rt in the.  [com
def0: 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c 5d  mand-line shell]
df00: 2e 0a 20 20 3c 70 3e 0a 20 20 57 68 65 6e 20 63  ..  <p>.  When c
df10: 6f 6d 70 69 6c 69 6e 67 20 77 69 74 68 20 74 68  ompiling with th
df20: 69 73 20 6f 70 74 69 6f 6e 2c 20 69 74 20 77 69  is option, it wi
df30: 6c 6c 20 6e 6f 72 6d 61 6c 6c 79 0a 20 20 62 65  ll normally.  be
df40: 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 61 64   necessary to ad
df50: 64 20 61 20 6c 69 6e 6b 65 72 20 6f 70 74 69 6f  d a linker optio
df60: 6e 20 74 6f 20 69 6e 63 6c 75 64 65 20 74 68 65  n to include the
df70: 20 7a 6c 69 62 20 6c 69 62 72 61 72 79 20 69 6e   zlib library in
df80: 20 74 68 65 0a 20 20 62 75 69 6c 64 2e 20 20 4e   the.  build.  N
df90: 6f 72 6d 61 6c 20 74 68 69 73 20 6f 70 74 69 6f  ormal this optio
dfa0: 6e 20 69 73 20 22 2d 6c 7a 22 20 62 75 74 20 6d  n is "-lz" but m
dfb0: 69 67 68 74 20 62 65 20 64 69 66 66 65 72 65 6e  ight be differen
dfc0: 74 20 6f 6e 20 64 69 66 66 65 72 65 6e 74 0a 20  t on different. 
dfd0: 20 73 79 73 74 65 6d 73 2e 0a 20 20 3c 70 3e 0a   systems..  <p>.
dfe0: 20 20 57 68 65 6e 20 62 75 69 6c 64 69 6e 67 20    When building 
dff0: 77 69 74 68 20 4d 53 56 43 20 6f 6e 20 57 69 6e  with MSVC on Win
e000: 64 6f 77 73 20 73 79 73 74 65 6d 73 2c 20 6f 6e  dows systems, on
e010: 65 20 63 61 6e 20 70 75 74 20 74 68 65 20 7a 6c  e can put the zl
e020: 69 62 20 73 6f 75 72 63 65 0a 20 20 63 6f 64 65  ib source.  code
e030: 20 69 6e 20 74 68 65 20 63 6f 6d 70 61 74 2f 7a   in the compat/z
e040: 6c 69 62 20 73 75 62 64 69 72 65 63 74 6f 72 79  lib subdirectory
e050: 20 6f 66 20 74 68 65 20 73 6f 75 72 63 65 20 74   of the source t
e060: 72 65 65 20 61 6e 64 20 74 68 65 6e 20 61 64 64  ree and then add
e070: 0a 20 20 74 68 65 20 55 53 45 5f 5a 4c 49 42 3d  .  the USE_ZLIB=
e080: 31 20 6f 70 74 69 6f 6e 20 74 6f 20 74 68 65 20  1 option to the 
e090: 6e 6d 61 6b 65 20 63 6f 6d 6d 61 6e 64 20 74 6f  nmake command to
e0a0: 20 63 61 75 73 65 20 74 68 65 20 54 68 65 20 4d   cause the The M
e0b0: 61 6b 65 66 69 6c 65 2e 6d 73 63 0a 20 20 74 6f  akefile.msc.  to
e0c0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62   automatically b
e0d0: 75 69 6c 64 20 61 6e 64 20 75 73 65 20 61 6e 20  uild and use an 
e0e0: 61 70 70 72 6f 70 72 69 61 74 65 20 7a 6c 69 62  appropriate zlib
e0f0: 20 6c 69 62 72 61 72 79 20 69 6d 70 6c 65 6d 65   library impleme
e100: 6e 74 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50  ntation..}..COMP
e110: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 59 59 54 52  ILE_OPTION {YYTR
e120: 41 43 4b 4d 41 58 53 54 41 43 4b 44 45 50 54 48  ACKMAXSTACKDEPTH
e130: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
e140: 6e 20 63 61 75 73 65 73 20 74 68 65 20 4c 41 4c  n causes the LAL
e150: 52 28 31 29 20 70 61 72 73 65 72 20 73 74 61 63  R(1) parser stac
e160: 6b 20 64 65 70 74 68 20 74 6f 20 62 65 20 74 72  k depth to be tr
e170: 61 63 6b 65 64 0a 20 20 61 6e 64 20 72 65 70 6f  acked.  and repo
e180: 72 74 65 64 20 75 73 69 6e 67 20 74 68 65 20 5b  rted using the [
e190: 73 71 6c 69 74 65 33 5f 73 74 61 74 75 73 5d 28  sqlite3_status](
e1a0: 5b 53 51 4c 49 54 45 5f 53 54 41 54 55 53 5f 50  [SQLITE_STATUS_P
e1b0: 41 52 53 45 52 5f 53 54 41 43 4b 5d 2c 2e 2e 2e  ARSER_STACK],...
e1c0: 29 0a 20 20 69 6e 74 65 72 66 61 63 65 2e 20 20  ).  interface.  
e1d0: 53 51 4c 69 74 65 27 73 20 4c 41 4c 52 28 31 29  SQLite's LALR(1)
e1e0: 20 70 61 72 73 65 72 20 68 61 73 20 61 20 66 69   parser has a fi
e1f0: 78 65 64 20 73 74 61 63 6b 20 64 65 70 74 68 0a  xed stack depth.
e200: 20 20 28 64 65 74 65 72 6d 69 6e 65 64 20 61 74    (determined at
e210: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 75 73   compile-time us
e220: 69 6e 67 20 74 68 65 20 5b 59 59 53 54 41 43 4b  ing the [YYSTACK
e230: 44 45 50 54 48 5d 20 6f 70 74 69 6f 6e 73 29 2e  DEPTH] options).
e240: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
e250: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 68 65  an be used to he
e260: 6c 70 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20  lp determine if 
e270: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69  an application i
e280: 73 0a 20 20 67 65 74 74 69 6e 67 20 63 6c 6f 73  s.  getting clos
e290: 65 20 74 6f 20 65 78 63 65 65 64 69 6e 67 20 74  e to exceeding t
e2a0: 68 65 20 6d 61 78 69 6d 75 6d 20 4c 41 4c 52 28  he maximum LALR(
e2b0: 31 29 20 73 74 61 63 6b 20 64 65 70 74 68 2e 0a  1) stack depth..
e2c0: 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d  }.</tcl>..<a nam
e2d0: 65 3d 22 64 69 73 61 62 6c 65 66 65 61 74 75 72  e="disablefeatur
e2e0: 65 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 4f 70  es"></a>.<h1> Op
e2f0: 74 69 6f 6e 73 20 54 6f 20 44 69 73 61 62 6c 65  tions To Disable
e300: 20 46 65 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c   Features Normal
e310: 6c 79 20 54 75 72 6e 65 64 20 4f 6e 3c 2f 68 31  ly Turned On</h1
e320: 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45  >..<tcl>.COMPILE
e330: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
e340: 44 49 53 41 42 4c 45 5f 4c 46 53 7d 20 7b 0a 20  DISABLE_LFS} {. 
e350: 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72   If this C-prepr
e360: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73  ocessor macro is
e370: 20 64 65 66 69 6e 65 64 2c 20 6c 61 72 67 65 20   defined, large 
e380: 66 69 6c 65 20 73 75 70 70 6f 72 74 0a 20 20 69  file support.  i
e390: 73 20 64 69 73 61 62 6c 65 64 2e 0a 7d 0a 0a 43  s disabled..}..C
e3a0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
e3b0: 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 44 49  QLITE_DISABLE_DI
e3c0: 52 53 59 4e 43 7d 20 7b 0a 20 20 49 66 20 74 68  RSYNC} {.  If th
e3d0: 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f  is C-preprocesso
e3e0: 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e  r macro is defin
e3f0: 65 64 2c 20 64 69 72 65 63 74 6f 72 79 20 73 79  ed, directory sy
e400: 6e 63 73 0a 20 20 61 72 65 20 64 69 73 61 62 6c  ncs.  are disabl
e410: 65 64 2e 20 20 53 51 4c 69 74 65 20 74 79 70 69  ed.  SQLite typi
e420: 63 61 6c 6c 79 20 61 74 74 65 6d 70 74 73 20 74  cally attempts t
e430: 6f 20 73 79 6e 63 20 74 68 65 20 70 61 72 65 6e  o sync the paren
e440: 74 0a 20 20 64 69 72 65 63 74 6f 72 79 20 77 68  t.  directory wh
e450: 65 6e 20 61 20 66 69 6c 65 20 69 73 20 64 65 6c  en a file is del
e460: 65 74 65 64 20 74 6f 20 65 6e 73 75 72 65 20 74  eted to ensure t
e470: 68 65 20 64 69 72 65 63 74 6f 72 79 0a 20 20 65  he directory.  e
e480: 6e 74 72 69 65 73 20 61 72 65 20 75 70 64 61 74  ntries are updat
e490: 65 64 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 6f  ed immediately o
e4a0: 6e 20 64 69 73 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49  n disk..}..COMPI
e4b0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
e4c0: 45 5f 44 49 53 41 42 4c 45 5f 46 54 53 33 5f 55  E_DISABLE_FTS3_U
e4d0: 4e 49 43 4f 44 45 7d 20 7b 0a 20 20 49 66 20 74  NICODE} {.  If t
e4e0: 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73  his C-preprocess
e4f0: 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  or macro is defi
e500: 6e 65 64 2c 20 74 68 65 20 5b 75 6e 69 63 6f 64  ned, the [unicod
e510: 65 36 31 5d 20 74 6f 6b 65 6e 69 7a 65 72 0a 20  e61] tokenizer. 
e520: 20 69 6e 20 5b 46 54 53 33 5d 20 69 73 20 6f 6d   in [FTS3] is om
e530: 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62  itted from the b
e540: 75 69 6c 64 20 61 6e 64 20 69 73 20 75 6e 61 76  uild and is unav
e550: 61 69 6c 61 62 6c 65 20 74 6f 20 0a 20 20 61 70  ailable to .  ap
e560: 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43  plications..}..C
e570: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
e580: 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 46 54  QLITE_DISABLE_FT
e590: 53 34 5f 44 45 46 45 52 52 45 44 7d 20 7b 0a 20  S4_DEFERRED} {. 
e5a0: 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72   If this C-prepr
e5b0: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 64 69  ocessor macro di
e5c0: 73 61 62 6c 65 73 20 74 68 65 20 22 64 65 66 65  sables the "defe
e5d0: 72 72 65 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69  rred token" opti
e5e0: 6d 69 7a 61 74 69 6f 6e 0a 20 20 69 6e 20 5b 46  mization.  in [F
e5f0: 54 53 34 5d 2e 20 20 54 68 65 20 22 64 65 66 65  TS4].  The "defe
e600: 72 72 65 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69  rred token" opti
e610: 6d 69 7a 61 74 69 6f 6e 20 61 76 6f 69 64 73 20  mization avoids 
e620: 6c 6f 61 64 69 6e 67 20 6d 61 73 73 69 76 65 0a  loading massive.
e630: 20 20 70 6f 73 74 69 6e 67 20 6c 69 73 74 73 20    posting lists 
e640: 66 6f 72 20 74 65 72 6d 73 20 74 68 61 74 20 61  for terms that a
e650: 72 65 20 69 6e 20 6d 6f 73 74 20 64 6f 63 75 6d  re in most docum
e660: 65 6e 74 73 20 6f 66 20 74 68 65 20 63 6f 6c 6c  ents of the coll
e670: 65 63 74 69 6f 6e 0a 20 20 61 6e 64 20 69 6e 73  ection.  and ins
e680: 74 65 61 64 20 73 69 6d 70 6c 79 20 73 63 61 6e  tead simply scan
e690: 73 20 66 6f 72 20 74 68 6f 73 65 20 74 6f 6b 65  s for those toke
e6a0: 6e 73 20 69 6e 20 74 68 65 20 64 6f 63 75 6d 65  ns in the docume
e6b0: 6e 74 20 73 6f 75 72 63 65 2e 20 20 5b 46 54 53  nt source.  [FTS
e6c0: 34 5d 0a 20 20 73 68 6f 75 6c 64 20 67 65 74 20  4].  should get 
e6d0: 65 78 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65  exactly the same
e6e0: 20 61 6e 73 77 65 72 20 62 6f 74 68 20 77 69 74   answer both wit
e6f0: 68 20 61 6e 64 20 77 69 74 68 6f 75 74 20 74 68  h and without th
e700: 69 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2e  is optimization.
e710: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
e720: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42  ON {SQLITE_DISAB
e730: 4c 45 5f 49 4e 54 52 49 4e 53 49 43 7d 20 7b 0a  LE_INTRINSIC} {.
e740: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69    This option di
e750: 73 61 62 6c 65 73 20 74 68 65 20 75 73 65 20 6f  sables the use o
e760: 66 20 63 6f 6d 70 69 6c 65 72 2d 73 70 65 63 69  f compiler-speci
e770: 66 69 63 20 62 75 69 6c 74 2d 69 6e 20 66 75 6e  fic built-in fun
e780: 63 74 69 6f 6e 73 0a 20 20 73 75 63 68 20 61 73  ctions.  such as
e790: 20 5f 5f 62 75 69 6c 74 69 6e 5f 62 73 77 61 70   __builtin_bswap
e7a0: 33 32 28 29 20 61 6e 64 20 5f 5f 62 75 69 6c 74  32() and __built
e7b0: 69 6e 5f 61 64 64 5f 6f 76 65 72 66 6c 6f 77 28  in_add_overflow(
e7c0: 29 20 69 6e 20 47 43 43 20 61 6e 64 20 43 6c 61  ) in GCC and Cla
e7d0: 6e 67 2c 20 0a 20 20 6f 72 20 5f 62 79 74 65 73  ng, .  or _bytes
e7e0: 77 61 70 5f 75 6c 6f 6e 67 28 29 20 61 6e 64 20  wap_ulong() and 
e7f0: 5f 52 65 61 64 57 72 69 74 65 42 61 72 72 69 65  _ReadWriteBarrie
e800: 72 28 29 20 77 69 74 68 20 4d 53 56 43 2e 20 20  r() with MSVC.  
e810: 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e  .}.</tcl>..<tcl>
e820: 0a 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 22  .  hd_fragment "
e830: 6f 6d 69 74 66 65 61 74 75 72 65 73 22 0a 20 20  omitfeatures".  
e840: 68 64 5f 6b 65 79 77 6f 72 64 73 20 22 6f 6d 69  hd_keywords "omi
e850: 74 66 65 61 74 75 72 65 73 22 0a 3c 2f 74 63 6c  tfeatures".</tcl
e860: 3e 0a 3c 68 31 3e 20 4f 70 74 69 6f 6e 73 20 54  >.<h1> Options T
e870: 6f 20 4f 6d 69 74 20 46 65 61 74 75 72 65 73 3c  o Omit Features<
e880: 2f 68 31 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c  /h1>..<p>The fol
e890: 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73 20 63  lowing options c
e8a0: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 0a 5b  an be used to .[
e8b0: 72 65 6c 66 6f 6f 74 70 72 69 6e 74 20 7c 20 72  relfootprint | r
e8c0: 65 64 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f  educe the size o
e8d0: 66 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 20 6c  f the compiled l
e8e0: 69 62 72 61 72 79 5d 0a 62 79 20 6f 6d 69 74 74  ibrary].by omitt
e8f0: 69 6e 67 20 75 6e 75 73 65 64 20 66 65 61 74 75  ing unused featu
e900: 72 65 73 2e 20 54 68 69 73 20 69 73 20 70 72 6f  res. This is pro
e910: 62 61 62 6c 79 20 6f 6e 6c 79 20 75 73 65 66 75  bably only usefu
e920: 6c 0a 69 6e 20 65 6d 62 65 64 64 65 64 20 73 79  l.in embedded sy
e930: 73 74 65 6d 73 20 77 68 65 72 65 20 73 70 61 63  stems where spac
e940: 65 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20  e is especially 
e950: 74 69 67 68 74 2c 20 61 73 20 65 76 65 6e 20 77  tight, as even w
e960: 69 74 68 20 61 6c 6c 0a 66 65 61 74 75 72 65 73  ith all.features
e970: 20 69 6e 63 6c 75 64 65 64 20 74 68 65 20 53 51   included the SQ
e980: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69 73 20  Lite library is 
e990: 72 65 6c 61 74 69 76 65 6c 79 20 73 6d 61 6c 6c  relatively small
e9a0: 2e 20 44 6f 6e 27 74 20 66 6f 72 67 65 74 0a 74  . Don't forget.t
e9b0: 6f 20 74 65 6c 6c 20 79 6f 75 72 20 63 6f 6d 70  o tell your comp
e9c0: 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a 65  iler to optimize
e9d0: 20 66 6f 72 20 62 69 6e 61 72 79 20 73 69 7a 65   for binary size
e9e0: 21 20 28 74 68 65 20 2d 4f 73 20 6f 70 74 69 6f  ! (the -Os optio
e9f0: 6e 20 69 66 0a 75 73 69 6e 67 20 47 43 43 29 2e  n if.using GCC).
ea00: 20 20 54 65 6c 6c 69 6e 67 20 79 6f 75 72 20 63    Telling your c
ea10: 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d  ompiler to optim
ea20: 69 7a 65 20 66 6f 72 20 73 69 7a 65 20 75 73 75  ize for size usu
ea30: 61 6c 6c 79 20 68 61 73 0a 61 20 6d 75 63 68 20  ally has.a much 
ea40: 6c 61 72 67 65 72 20 69 6d 70 61 63 74 20 6f 6e  larger impact on
ea50: 20 6c 69 62 72 61 72 79 20 66 6f 6f 74 70 72 69   library footpri
ea60: 6e 74 20 74 68 61 6e 20 65 6d 70 6c 6f 79 69 6e  nt than employin
ea70: 67 20 61 6e 79 20 6f 66 20 74 68 65 73 65 0a 63  g any of these.c
ea80: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
ea90: 6f 6e 73 2e 20 20 59 6f 75 20 73 68 6f 75 6c 64  ons.  You should
eaa0: 20 61 6c 73 6f 20 76 65 72 69 66 79 20 74 68 61   also verify tha
eab0: 74 20 0a 3c 61 20 68 72 65 66 3d 22 23 64 65 62  t .<a href="#deb
eac0: 75 67 6f 70 74 69 6f 6e 73 22 3e 64 65 62 75 67  ugoptions">debug
ead0: 67 69 6e 67 20 6f 70 74 69 6f 6e 73 3c 2f 61 3e  ging options</a>
eae0: 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e 3c 2f   are disabled.</
eaf0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 6d 61 63 72 6f  p>..<p>The macro
eb00: 73 20 69 6e 20 74 68 69 73 20 73 65 63 74 69 6f  s in this sectio
eb10: 6e 20 64 6f 20 6e 6f 74 20 72 65 71 75 69 72 65  n do not require
eb20: 20 76 61 6c 75 65 73 2e 20 54 68 65 20 66 6f 6c   values. The fol
eb30: 6c 6f 77 69 6e 67 20 0a 63 6f 6d 70 69 6c 61 74  lowing .compilat
eb40: 69 6f 6e 20 73 77 69 74 63 68 65 73 20 61 6c 6c  ion switches all
eb50: 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 65   have the same e
eb60: 66 66 65 63 74 3a 3c 62 72 3e 0a 2d 44 53 51 4c  ffect:<br>.-DSQL
eb70: 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41  ITE_OMIT_ALTERTA
eb80: 42 4c 45 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45  BLE<br>.-DSQLITE
eb90: 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45  _OMIT_ALTERTABLE
eba0: 3d 31 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f  =1<br>.-DSQLITE_
ebb0: 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d  OMIT_ALTERTABLE=
ebc0: 30 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 6e  0.</p>..<p>If an
ebd0: 79 20 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f  y of these optio
ebe0: 6e 73 20 61 72 65 20 64 65 66 69 6e 65 64 2c 20  ns are defined, 
ebf0: 74 68 65 6e 20 74 68 65 20 73 61 6d 65 20 73 65  then the same se
ec00: 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  t of SQLITE_OMIT
ec10: 5f 2a 0a 6f 70 74 69 6f 6e 73 20 6d 75 73 74 20  _*.options must 
ec20: 61 6c 73 6f 20 62 65 20 64 65 66 69 6e 65 64 20  also be defined 
ec30: 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 5b  when using the [
ec40: 4c 65 6d 6f 6e 20 70 61 72 73 65 72 20 67 65 6e  Lemon parser gen
ec50: 65 72 61 74 6f 72 5d 0a 74 6f 6f 6c 20 74 6f 20  erator].tool to 
ec60: 67 65 6e 65 72 61 74 65 20 74 68 65 0a 70 61 72  generate the.par
ec70: 73 65 2e 63 20 66 69 6c 65 20 61 6e 64 20 77 68  se.c file and wh
ec80: 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65  en compiling the
ec90: 20 27 6d 6b 6b 65 79 77 6f 72 64 68 61 73 68 27   'mkkeywordhash'
eca0: 20 74 6f 6f 6c 20 77 68 69 63 68 20 67 65 6e 65   tool which gene
ecb0: 72 61 74 65 73 20 0a 74 68 65 20 6b 65 79 77 6f  rates .the keywo
ecc0: 72 64 68 61 73 68 2e 68 20 66 69 6c 65 2e 0a 42  rdhash.h file..B
ecd0: 65 63 61 75 73 65 20 6f 66 20 74 68 69 73 2c 20  ecause of this, 
ece0: 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d 61  these options ma
ecf0: 79 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 77  y only be used w
ed00: 68 65 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20  hen the library 
ed10: 69 73 20 62 75 69 6c 74 0a 66 72 6f 6d 20 63 61  is built.from ca
ed20: 6e 6f 6e 69 63 61 6c 20 73 6f 75 72 63 65 2c 20  nonical source, 
ed30: 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d  not from the [am
ed40: 61 6c 67 61 6d 61 74 69 6f 6e 5d 2e 0a 53 6f 6d  algamation]..Som
ed50: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  e SQLITE_OMIT_* 
ed60: 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74 20 77 6f  options might wo
ed70: 72 6b 2c 20 6f 72 20 61 70 70 65 61 72 20 74 6f  rk, or appear to
ed80: 20 77 6f 72 6b 2c 20 77 68 65 6e 20 75 73 65 64   work, when used
ed90: 20 77 69 74 68 0a 74 68 65 20 5b 61 6d 61 6c 67   with.the [amalg
eda0: 61 6d 61 74 69 6f 6e 5d 2e 20 20 42 75 74 20 74  amation].  But t
edb0: 68 69 73 20 69 73 20 6e 6f 74 20 67 75 61 72 61  his is not guara
edc0: 6e 74 65 65 64 2e 20 20 49 6e 20 67 65 6e 65 72  nteed.  In gener
edd0: 61 6c 2c 20 61 6c 77 61 79 73 20 63 6f 6d 70 69  al, always compi
ede0: 6c 65 0a 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61  le.from canonica
edf0: 6c 20 73 6f 75 72 63 65 73 20 69 6e 20 6f 72 64  l sources in ord
ee00: 65 72 20 74 6f 20 74 61 6b 65 20 61 64 76 61 6e  er to take advan
ee10: 74 61 67 65 20 6f 66 20 53 51 4c 49 54 45 5f 4f  tage of SQLITE_O
ee20: 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 2e 0a 3c  MIT_* options..<
ee30: 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
ee40: 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61 6e  >.<i><b>Importan
ee50: 74 20 4e 6f 74 65 3a 3c 2f 62 3e 20 54 68 65 20  t Note:</b> The 
ee60: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70  SQLITE_OMIT_* op
ee70: 74 69 6f 6e 73 20 6d 61 79 20 6e 6f 74 20 77 6f  tions may not wo
ee80: 72 6b 20 77 69 74 68 20 74 68 65 0a 5b 61 6d 61  rk with the.[ama
ee90: 6c 67 61 6d 61 74 69 6f 6e 5d 2e 20 20 53 51 4c  lgamation].  SQL
eea0: 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69  ITE_OMIT_* compi
eeb0: 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e 73 20  le-time.options 
eec0: 75 73 75 61 6c 6c 79 20 77 6f 72 6b 20 63 6f 72  usually work cor
eed0: 72 65 63 74 6c 79 20 6f 6e 6c 79 20 77 68 65 6e  rectly only when
eee0: 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c 74   SQLite is built
eef0: 20 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20   from canonical 
ef00: 0a 73 6f 75 72 63 65 20 66 69 6c 65 73 2e 0a 3c  .source files..<
ef10: 2f 69 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  /i>.</blockquote
ef20: 3e 0a 0a 0a 3c 70 3e 53 70 65 63 69 61 6c 20 76  >...<p>Special v
ef30: 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 53  ersions of the S
ef40: 51 4c 69 74 65 20 61 6d 61 6c 67 61 6d 61 74 69  QLite amalgamati
ef50: 6f 6e 20 74 68 61 74 20 64 6f 20 77 6f 72 6b 20  on that do work 
ef60: 77 69 74 68 20 61 0a 70 72 65 64 65 74 65 72 6d  with a.predeterm
ef70: 69 6e 65 64 20 73 65 74 20 6f 66 20 53 51 4c 49  ined set of SQLI
ef80: 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e  TE_OMIT_* option
ef90: 73 20 63 61 6e 20 62 65 20 67 65 6e 65 72 61 74  s can be generat
efa0: 65 64 2e 20 20 54 6f 20 64 6f 20 73 6f 2c 0a 6d  ed.  To do so,.m
efb0: 61 6b 65 20 61 20 63 6f 70 79 20 6f 66 20 74 68  ake a copy of th
efc0: 65 20 4d 61 6b 65 66 69 6c 65 2e 6c 69 6e 75 78  e Makefile.linux
efd0: 2d 67 63 63 20 6d 61 6b 65 66 69 6c 65 20 74 65  -gcc makefile te
efe0: 6d 70 6c 61 74 65 20 69 6e 20 74 68 65 20 63 61  mplate in the ca
eff0: 6e 6f 6e 69 63 61 6c 0a 73 6f 75 72 63 65 20 63  nonical.source c
f000: 6f 64 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e  ode distribution
f010: 2e 20 20 43 68 61 6e 67 65 20 74 68 65 20 6e 61  .  Change the na
f020: 6d 65 20 6f 66 20 79 6f 75 72 20 63 6f 70 79 20  me of your copy 
f030: 74 6f 20 73 69 6d 70 6c 79 20 22 4d 61 6b 65 66  to simply "Makef
f040: 69 6c 65 22 2e 0a 54 68 65 6e 20 65 64 69 74 20  ile"..Then edit 
f050: 22 4d 61 6b 65 66 69 6c 65 22 20 74 6f 20 73 65  "Makefile" to se
f060: 74 20 75 70 20 61 70 70 72 6f 70 72 69 61 74 65  t up appropriate
f070: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
f080: 74 69 6f 6e 73 2e 20 20 54 68 65 6e 0a 74 79 70  tions.  Then.typ
f090: 65 3a 0a 3c 63 6f 64 65 62 6c 6f 63 6b 3e 0a 6d  e:.<codeblock>.m
f0a0: 61 6b 65 20 63 6c 65 61 6e 3b 20 6d 61 6b 65 20  ake clean; make 
f0b0: 73 71 6c 69 74 65 33 2e 63 0a 3c 2f 63 6f 64 65  sqlite3.c.</code
f0c0: 62 6c 6f 63 6b 3e 0a 3c 70 3e 54 68 65 20 72 65  block>.<p>The re
f0d0: 73 75 6c 74 69 6e 67 20 22 73 71 6c 69 74 65 33  sulting "sqlite3
f0e0: 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  .c" amalgamation
f0f0: 20 63 6f 64 65 20 66 69 6c 65 20 28 61 6e 64 20   code file (and 
f100: 69 74 73 20 61 73 73 6f 63 69 61 74 65 64 0a 68  its associated.h
f110: 65 61 64 65 72 20 66 69 6c 65 20 22 73 71 6c 69  eader file "sqli
f120: 74 65 33 2e 68 22 29 20 63 61 6e 20 74 68 65 6e  te3.h") can then
f130: 20 62 65 20 6d 6f 76 65 64 20 74 6f 20 61 20 6e   be moved to a n
f140: 6f 6e 2d 75 6e 69 78 20 70 6c 61 74 66 6f 72 6d  on-unix platform
f150: 0a 66 6f 72 20 66 69 6e 61 6c 20 63 6f 6d 70 69  .for final compi
f160: 6c 61 74 69 6f 6e 20 75 73 69 6e 67 20 61 20 6e  lation using a n
f170: 61 74 69 76 65 20 63 6f 6d 70 69 6c 65 72 2e 3c  ative compiler.<
f180: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 53 51 4c 49  /p>..<p>The SQLI
f190: 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e  TE_OMIT_* option
f1a0: 73 20 61 72 65 20 75 6e 73 75 70 70 6f 72 74 65  s are unsupporte
f1b0: 64 2e 20 20 42 79 20 74 68 69 73 20 77 65 20 6d  d.  By this we m
f1c0: 65 61 6e 20 74 68 61 74 0a 61 6e 20 53 51 4c 49  ean that.an SQLI
f1d0: 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e  TE_OMIT_* option
f1e0: 20 74 68 61 74 20 6f 6d 69 74 73 20 63 6f 64 65   that omits code
f1f0: 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 20   from the build 
f200: 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0a 72  in the current.r
f210: 65 6c 65 61 73 65 20 6d 69 67 68 74 20 62 65 63  elease might bec
f220: 6f 6d 65 20 61 20 6e 6f 2d 6f 70 20 69 6e 20 74  ome a no-op in t
f230: 68 65 20 6e 65 78 74 20 72 65 6c 65 61 73 65 2e  he next release.
f240: 20 20 4f 72 20 74 68 65 20 6f 74 68 65 72 20 77    Or the other w
f250: 61 79 20 61 72 6f 75 6e 64 3a 0a 61 6e 20 53 51  ay around:.an SQ
f260: 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 74 68 61 74  LITE_OMIT_* that
f270: 20 69 73 20 61 20 6e 6f 2d 6f 70 20 69 6e 20 74   is a no-op in t
f280: 68 65 20 63 75 72 72 65 6e 74 20 72 65 6c 65 61  he current relea
f290: 73 65 20 6d 69 67 68 74 20 63 61 75 73 65 20 63  se might cause c
f2a0: 6f 64 65 0a 74 6f 20 62 65 20 65 78 63 6c 75 64  ode.to be exclud
f2b0: 65 64 20 69 6e 20 74 68 65 20 6e 65 78 74 20 72  ed in the next r
f2c0: 65 6c 65 61 73 65 2e 20 20 41 6c 73 6f 2c 20 6e  elease.  Also, n
f2d0: 6f 74 20 61 6c 6c 20 53 51 4c 49 54 45 5f 4f 4d  ot all SQLITE_OM
f2e0: 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 0a 61 72 65  IT_* options.are
f2f0: 20 74 65 73 74 65 64 2e 20 20 53 6f 6d 65 20 53   tested.  Some S
f300: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74  QLITE_OMIT_* opt
f310: 69 6f 6e 73 20 6d 69 67 68 74 20 63 61 75 73 65  ions might cause
f320: 20 53 51 4c 69 74 65 20 74 6f 20 6d 61 6c 66 75   SQLite to malfu
f330: 6e 63 74 69 6f 6e 0a 61 6e 64 2f 6f 72 20 70 72  nction.and/or pr
f340: 6f 76 69 64 65 20 69 6e 63 6f 72 72 65 63 74 20  ovide incorrect 
f350: 61 6e 73 77 65 72 73 2e 0a 0a 3c 62 6c 6f 63 6b  answers...<block
f360: 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70  quote>.<i><b>Imp
f370: 6f 72 74 61 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e  ortant Note:</b>
f380: 0a 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .The SQLITE_OMIT
f390: 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  _* compile-time 
f3a0: 6f 70 74 69 6f 6e 73 20 61 72 65 20 6d 6f 73 74  options are most
f3b0: 6c 79 20 75 6e 73 75 70 70 6f 72 74 65 64 2e 0a  ly unsupported..
f3c0: 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  </i></blockquote
f3d0: 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f 77  >..<p>The follow
f3e0: 69 6e 67 20 61 72 65 20 74 68 65 20 61 76 61 69  ing are the avai
f3f0: 6c 61 62 6c 65 20 4f 4d 49 54 20 6f 70 74 69 6f  lable OMIT optio
f400: 6e 73 3a 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49  ns:..<tcl>.COMPI
f410: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
f420: 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c  E_OMIT_ALTERTABL
f430: 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  E} {.  When this
f440: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
f450: 65 64 2c 20 74 68 65 20 0a 20 20 5b 41 4c 54 45  ed, the .  [ALTE
f460: 52 20 54 41 42 4c 45 5d 20 63 6f 6d 6d 61 6e 64  R TABLE] command
f470: 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64   is not included
f480: 20 69 6e 20 74 68 65 20 0a 20 20 6c 69 62 72 61   in the .  libra
f490: 72 79 2e 20 45 78 65 63 75 74 69 6e 67 20 61 6e  ry. Executing an
f4a0: 20 5b 41 4c 54 45 52 20 54 41 42 4c 45 5d 20 73   [ALTER TABLE] s
f4b0: 74 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20  tatement causes 
f4c0: 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d  a parse error..}
f4d0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
f4e0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4e   {SQLITE_OMIT_AN
f4f0: 41 4c 59 5a 45 7d 20 7b 0a 20 20 57 68 65 6e 20  ALYZE} {.  When 
f500: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
f510: 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 41 4e 41  efined, the [ANA
f520: 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73  LYZE] command is
f530: 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 0a 20 20   omitted from.  
f540: 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f  the build..}..CO
f550: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
f560: 4c 49 54 45 5f 4f 4d 49 54 5f 41 54 54 41 43 48  LITE_OMIT_ATTACH
f570: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
f580: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
f590: 64 2c 20 74 68 65 20 5b 41 54 54 41 43 48 5d 20  d, the [ATTACH] 
f5a0: 61 6e 64 20 5b 44 45 54 41 43 48 5d 20 63 6f 6d  and [DETACH] com
f5b0: 6d 61 6e 64 73 20 61 72 65 0a 20 20 6f 6d 69 74  mands are.  omit
f5c0: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69  ted from the bui
f5d0: 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ld..}..COMPILE_O
f5e0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
f5f0: 49 54 5f 41 55 54 48 4f 52 49 5a 41 54 49 4f 4e  IT_AUTHORIZATION
f600: 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74  } {.  Defining t
f610: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
f620: 20 74 68 65 20 61 75 74 68 6f 72 69 7a 61 74 69   the authorizati
f630: 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 66 65 61 74  on callback feat
f640: 75 72 65 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c  ure from the.  l
f650: 69 62 72 61 72 79 2e 20 54 68 65 20 5b 73 71 6c  ibrary. The [sql
f660: 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69  ite3_set_authori
f670: 7a 65 72 28 29 5d 20 41 50 49 20 66 75 6e 63 74  zer()] API funct
f680: 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72 65 73 65  ion is not prese
f690: 6e 74 0a 20 20 69 6e 20 74 68 65 20 6c 69 62 72  nt.  in the libr
f6a0: 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ary..}..COMPILE_
f6b0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
f6c0: 4d 49 54 5f 41 55 54 4f 49 4e 43 52 45 4d 45 4e  MIT_AUTOINCREMEN
f6d0: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
f6e0: 6f 6e 20 69 73 20 6f 6d 69 74 73 20 74 68 65 20  on is omits the 
f6f0: 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d 20  [AUTOINCREMENT] 
f700: 66 65 61 74 75 72 65 2e 20 0a 20 20 57 68 65 6e  feature. .  When
f710: 20 74 68 69 73 20 69 73 20 6d 61 63 72 6f 20 69   this is macro i
f720: 73 20 64 65 66 69 6e 65 64 2c 20 63 6f 6c 75 6d  s defined, colum
f730: 6e 73 20 64 65 63 6c 61 72 65 64 20 61 73 20 0a  ns declared as .
f740: 20 20 22 5b 49 4e 54 45 47 45 52 20 50 52 49 4d    "[INTEGER PRIM
f750: 41 52 59 20 4b 45 59 5d 20 41 55 54 4f 49 4e 43  ARY KEY] AUTOINC
f760: 52 45 4d 45 4e 54 22 0a 20 20 62 65 68 61 76 65  REMENT".  behave
f770: 20 69 6e 20 74 68 65 20 73 61 6d 65 20 77 61 79   in the same way
f780: 20 61 73 20 63 6f 6c 75 6d 6e 73 20 64 65 63 6c   as columns decl
f790: 61 72 65 64 20 61 73 20 22 5b 49 4e 54 45 47 45  ared as "[INTEGE
f7a0: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 22 20  R PRIMARY KEY]" 
f7b0: 77 68 65 6e 20 61 20 0a 20 20 4e 55 4c 4c 20 69  when a .  NULL i
f7c0: 73 20 69 6e 73 65 72 74 65 64 2e 20 54 68 65 20  s inserted. The 
f7d0: 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 20  sqlite_sequence 
f7e0: 73 79 73 74 65 6d 20 74 61 62 6c 65 20 69 73 20  system table is 
f7f0: 6e 65 69 74 68 65 72 20 63 72 65 61 74 65 64 2c  neither created,
f800: 20 6e 6f 72 0a 20 20 72 65 73 70 65 63 74 65 64   nor.  respected
f810: 20 69 66 20 69 74 20 61 6c 72 65 61 64 79 20 65   if it already e
f820: 78 69 73 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  xists..}..COMPIL
f830: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
f840: 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 7d 20  _OMIT_AUTOINIT} 
f850: 7b 0a 20 20 46 6f 72 20 62 61 63 6b 77 61 72 64  {.  For backward
f860: 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  s compatibility 
f870: 77 69 74 68 20 6f 6c 64 65 72 20 76 65 72 73 69  with older versi
f880: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 74 68  ons of SQLite th
f890: 61 74 20 6c 61 63 6b 0a 20 20 74 68 65 20 5b 73  at lack.  the [s
f8a0: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
f8b0: 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2c 20  e()] interface, 
f8c0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69  the [sqlite3_ini
f8d0: 74 69 61 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72  tialize()] inter
f8e0: 66 61 63 65 0a 20 20 69 73 20 63 61 6c 6c 65 64  face.  is called
f8f0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 75   automatically u
f900: 70 6f 6e 20 65 6e 74 72 79 20 74 6f 20 63 65 72  pon entry to cer
f910: 74 61 69 6e 20 6b 65 79 20 69 6e 74 65 72 66 61  tain key interfa
f920: 63 65 73 20 73 75 63 68 20 61 73 0a 20 20 5b 73  ces such as.  [s
f930: 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20  qlite3_open()], 
f940: 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 72 65 67  [sqlite3_vfs_reg
f950: 69 73 74 65 72 28 29 5d 2c 20 61 6e 64 20 5b 73  ister()], and [s
f960: 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 29  qlite3_mprintf()
f970: 5d 2e 0a 20 20 54 68 65 20 6f 76 65 72 68 65 61  ]..  The overhea
f980: 64 20 6f 66 20 69 6e 76 6f 6b 69 6e 67 20 5b 73  d of invoking [s
f990: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
f9a0: 65 28 29 5d 20 61 75 74 6f 6d 61 74 69 63 61 6c  e()] automatical
f9b0: 6c 79 20 69 6e 20 74 68 69 73 0a 20 20 77 61 79  ly in this.  way
f9c0: 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64 20   may be omitted 
f9d0: 62 79 20 62 75 69 6c 64 69 6e 67 20 53 51 4c 69  by building SQLi
f9e0: 74 65 20 77 69 74 68 20 74 68 65 20 53 51 4c 49  te with the SQLI
f9f0: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54  TE_OMIT_AUTOINIT
fa00: 0a 20 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f  .  C-preprocesso
fa10: 72 20 6d 61 63 72 6f 2e 20 20 57 68 65 6e 20 62  r macro.  When b
fa20: 75 69 6c 74 20 75 73 69 6e 67 20 53 51 4c 49 54  uilt using SQLIT
fa30: 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 2c  E_OMIT_AUTOINIT,
fa40: 20 53 51 4c 69 74 65 0a 20 20 77 69 6c 6c 20 6e   SQLite.  will n
fa50: 6f 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ot automatically
fa60: 20 69 6e 69 74 69 61 6c 69 7a 65 20 69 74 73 65   initialize itse
fa70: 6c 66 20 61 6e 64 20 74 68 65 20 61 70 70 6c 69  lf and the appli
fa80: 63 61 74 69 6f 6e 20 69 73 20 72 65 71 75 69 72  cation is requir
fa90: 65 64 0a 20 20 74 6f 20 69 6e 76 6f 6b 65 20 5b  ed.  to invoke [
faa0: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
fab0: 7a 65 28 29 5d 20 64 69 72 65 63 74 6c 79 20 70  ze()] directly p
fac0: 72 69 6f 72 20 74 6f 20 62 65 67 69 6e 6e 69 6e  rior to beginnin
fad0: 67 20 75 73 65 20 6f 66 20 74 68 65 0a 20 20 53  g use of the.  S
fae0: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0a 7d  QLite library..}
faf0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
fb00: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55   {SQLITE_OMIT_AU
fb10: 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58 7d 20 7b  TOMATIC_INDEX} {
fb20: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
fb30: 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74  s used to omit t
fb40: 68 65 20 0a 20 20 5b 61 75 74 6f 6d 61 74 69 63  he .  [automatic
fb50: 20 69 6e 64 65 78 69 6e 67 5d 20 66 75 6e 63 74   indexing] funct
fb60: 69 6f 6e 61 6c 69 74 79 2e 0a 20 20 53 65 65 20  ionality..  See 
fb70: 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 44 45  also: [SQLITE_DE
fb80: 46 41 55 4c 54 5f 41 55 54 4f 4d 41 54 49 43 5f  FAULT_AUTOMATIC_
fb90: 49 4e 44 45 58 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  INDEX]..}..COMPI
fba0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
fbb0: 45 5f 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45 54  E_OMIT_AUTORESET
fbc0: 7d 20 7b 0a 20 20 42 79 20 64 65 66 61 75 6c 74  } {.  By default
fbd0: 2c 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  , the [sqlite3_s
fbe0: 74 65 70 28 29 5d 20 69 6e 74 65 72 66 61 63 65  tep()] interface
fbf0: 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61   will automatica
fc00: 6c 6c 79 20 69 6e 76 6f 6b 65 0a 20 20 5b 73 71  lly invoke.  [sq
fc10: 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 20 74  lite3_reset()] t
fc20: 6f 20 72 65 73 65 74 20 74 68 65 20 5b 70 72 65  o reset the [pre
fc30: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
fc40: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 20 20   if necessary.  
fc50: 54 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74  This.  compile-t
fc60: 69 6d 65 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67  ime option chang
fc70: 65 73 20 74 68 61 74 20 62 65 68 61 76 69 6f 72  es that behavior
fc80: 20 73 6f 20 74 68 61 74 20 5b 73 71 6c 69 74 65   so that [sqlite
fc90: 33 5f 73 74 65 70 28 29 5d 20 77 69 6c 6c 0a 20  3_step()] will. 
fca0: 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f   return [SQLITE_
fcb0: 4d 49 53 55 53 45 5d 20 69 66 20 69 74 20 63 61  MISUSE] if it ca
fcc0: 6c 6c 65 64 20 61 67 61 69 6e 20 61 66 74 65 72  lled again after
fcd0: 20 72 65 74 75 72 6e 69 6e 67 20 61 6e 79 74 68   returning anyth
fce0: 69 6e 67 20 6f 74 68 65 72 0a 20 20 74 68 61 6e  ing other.  than
fcf0: 20 5b 53 51 4c 49 54 45 5f 52 4f 57 5d 2c 20 5b   [SQLITE_ROW], [
fd00: 53 51 4c 49 54 45 5f 42 55 53 59 5d 2c 20 6f 72  SQLITE_BUSY], or
fd10: 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d   [SQLITE_LOCKED]
fd20: 20 75 6e 6c 65 73 73 20 74 68 65 72 65 20 77 61   unless there wa
fd30: 73 20 61 6e 0a 20 20 69 6e 74 65 72 76 65 6e 69  s an.  interveni
fd40: 6e 67 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69  ng call to [sqli
fd50: 74 65 33 5f 72 65 73 65 74 28 29 5d 2e 0a 0a 20  te3_reset()]... 
fd60: 20 49 6e 20 53 51 4c 69 74 65 20 5b 76 65 72 73   In SQLite [vers
fd70: 69 6f 6e 20 33 2e 36 2e 32 33 2e 31 5d 20 28 5b  ion 3.6.23.1] ([
fd80: 64 61 74 65 6f 66 3a 33 2e 36 2e 32 33 2e 31 5d  dateof:3.6.23.1]
fd90: 29 0a 20 20 61 6e 64 20 65 61 72 6c 69 65 72 2c  ).  and earlier,
fda0: 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
fdb0: 5d 20 75 73 65 64 20 74 6f 20 61 6c 77 61 79 73  ] used to always
fdc0: 0a 20 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54  .  return [SQLIT
fdd0: 45 5f 4d 49 53 55 53 45 5d 20 69 66 20 69 74 20  E_MISUSE] if it 
fde0: 77 61 73 20 69 6e 76 6f 6b 65 64 20 61 67 61 69  was invoked agai
fdf0: 6e 20 61 66 74 65 72 20 72 65 74 75 72 6e 69 6e  n after returnin
fe00: 67 20 61 6e 79 74 68 69 6e 67 0a 20 20 6f 74 68  g anything.  oth
fe10: 65 72 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f  er than [SQLITE_
fe20: 52 4f 57 5d 20 77 69 74 68 6f 75 74 20 61 6e 20  ROW] without an 
fe30: 69 6e 74 65 72 76 65 6e 69 6e 67 20 63 61 6c 6c  intervening call
fe40: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65 73   to [sqlite3_res
fe50: 65 74 28 29 5d 2e 0a 20 20 54 68 69 73 20 63 61  et()]..  This ca
fe60: 75 73 65 64 20 70 72 6f 62 6c 65 6d 73 20 6f 6e  used problems on
fe70: 20 73 6f 6d 65 20 70 6f 6f 72 6c 79 20 77 72 69   some poorly wri
fe80: 74 74 65 6e 20 73 6d 61 72 74 70 68 6f 6e 65 20  tten smartphone 
fe90: 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 77 68 69  applications whi
fea0: 63 68 0a 20 20 64 69 64 20 6e 6f 74 20 63 6f 72  ch.  did not cor
feb0: 72 65 63 74 6c 79 20 68 61 6e 64 6c 65 20 74 68  rectly handle th
fec0: 65 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44  e [SQLITE_LOCKED
fed0: 5d 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f 42 55  ] and [SQLITE_BU
fee0: 53 59 5d 20 65 72 72 6f 72 20 0a 20 20 72 65 74  SY] error .  ret
fef0: 75 72 6e 73 2e 20 20 52 61 74 68 65 72 20 74 68  urns.  Rather th
ff00: 61 6e 20 66 69 78 20 74 68 65 20 6d 61 6e 79 20  an fix the many 
ff10: 64 65 66 65 63 74 69 76 65 20 73 6d 61 72 74 70  defective smartp
ff20: 68 6f 6e 65 20 61 70 70 6c 69 63 61 74 69 6f 6e  hone application
ff30: 73 2c 20 0a 20 20 74 68 65 20 62 65 68 61 76 69  s, .  the behavi
ff40: 6f 72 20 6f 66 20 53 51 4c 69 74 65 20 77 61 73  or of SQLite was
ff50: 20 63 68 61 6e 67 65 64 20 69 6e 20 33 2e 36 2e   changed in 3.6.
ff60: 32 33 2e 32 20 74 6f 20 61 75 74 6f 6d 61 74 69  23.2 to automati
ff70: 63 61 6c 6c 79 20 72 65 73 65 74 0a 20 20 74 68  cally reset.  th
ff80: 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  e prepared state
ff90: 6d 65 6e 74 2e 20 20 42 75 74 20 74 68 61 74 20  ment.  But that 
ffa0: 63 68 61 6e 67 65 64 20 63 61 75 73 65 64 20 69  changed caused i
ffb0: 73 73 75 65 73 20 69 6e 20 6f 74 68 65 72 20 0a  ssues in other .
ffc0: 20 20 69 6d 70 72 6f 70 65 72 6c 79 20 69 6d 70    improperly imp
ffd0: 6c 65 6d 65 6e 74 65 64 20 61 70 70 6c 69 63 61  lemented applica
ffe0: 74 69 6f 6e 73 20 74 68 61 74 20 77 65 72 65 20  tions that were 
fff0: 61 63 74 75 61 6c 6c 79 20 6c 6f 6f 6b 69 6e 67  actually looking
10000 0a 20 20 66 6f 72 20 61 6e 20 5b 53 51 4c 49 54  .  for an [SQLIT
10010 45 5f 4d 49 53 55 53 45 5d 20 72 65 74 75 72 6e  E_MISUSE] return
10020 20 74 6f 20 74 65 72 6d 69 6e 61 74 65 20 74 68   to terminate th
10030 65 69 72 20 71 75 65 72 79 20 6c 6f 6f 70 73 2e  eir query loops.
10040 20 20 28 41 6e 79 74 69 6d 65 0a 20 20 61 6e 20    (Anytime.  an 
10050 61 70 70 6c 69 63 61 74 69 6f 6e 20 67 65 74 73  application gets
10060 20 61 6e 20 53 51 4c 49 54 45 5f 4d 49 53 55 53   an SQLITE_MISUS
10070 45 20 65 72 72 6f 72 20 63 6f 64 65 20 66 72 6f  E error code fro
10080 6d 20 53 51 4c 69 74 65 2c 20 74 68 61 74 20 6d  m SQLite, that m
10090 65 61 6e 73 20 74 68 65 0a 20 20 61 70 70 6c 69  eans the.  appli
100a0 63 61 74 69 6f 6e 20 69 73 20 6d 69 73 75 73 69  cation is misusi
100b0 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20 69 6e  ng the SQLite in
100c0 74 65 72 66 61 63 65 20 61 6e 64 20 69 73 20 74  terface and is t
100d0 68 75 73 20 69 6e 63 6f 72 72 65 63 74 6c 79 0a  hus incorrectly.
100e0 20 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2e 29 20    implemented.) 
100f0 20 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54   The SQLITE_OMIT
10100 5f 41 55 54 4f 52 45 53 45 54 20 69 6e 74 65 72  _AUTORESET inter
10110 66 61 63 65 20 77 61 73 20 61 64 64 65 64 20 74  face was added t
10120 6f 20 53 51 4c 69 74 65 0a 20 20 5b 76 65 72 73  o SQLite.  [vers
10130 69 6f 6e 20 33 2e 37 2e 35 5d 20 28 5b 64 61 74  ion 3.7.5] ([dat
10140 65 6f 66 3a 33 2e 37 2e 35 5d 29 20 69 6e 20 61  eof:3.7.5]) in a
10150 6e 20 65 66 66 6f 72 74 20 74 6f 20 67 65 74 20  n effort to get 
10160 61 6c 6c 20 6f 66 20 74 68 65 20 28 62 72 6f 6b  all of the (brok
10170 65 6e 29 0a 20 20 61 70 70 6c 69 63 61 74 69 6f  en).  applicatio
10180 6e 73 20 74 6f 20 77 6f 72 6b 20 61 67 61 69 6e  ns to work again
10190 20 77 69 74 68 6f 75 74 20 68 61 76 69 6e 67 20   without having 
101a0 74 6f 20 61 63 74 75 61 6c 6c 79 20 66 69 78 20  to actually fix 
101b0 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  the applications
101c0 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
101d0 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
101e0 5f 41 55 54 4f 56 41 43 55 55 4d 7d 20 7b 0a 20  _AUTOVACUUM} {. 
101f0 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20   If this option 
10200 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20  is defined, the 
10210 6c 69 62 72 61 72 79 20 63 61 6e 6e 6f 74 20 63  library cannot c
10220 72 65 61 74 65 20 6f 72 20 77 72 69 74 65 20 74  reate or write t
10230 6f 20 0a 20 20 64 61 74 61 62 61 73 65 73 20 74  o .  databases t
10240 68 61 74 20 73 75 70 70 6f 72 74 20 5b 61 75 74  hat support [aut
10250 6f 5f 76 61 63 75 75 6d 5d 2e 0a 20 20 45 78 65  o_vacuum]..  Exe
10260 63 75 74 69 6e 67 20 61 20 5b 50 52 41 47 4d 41  cuting a [PRAGMA
10270 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 73 74   auto_vacuum] st
10280 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f 74 20 61  atement is not a
10290 6e 20 65 72 72 6f 72 0a 20 20 28 73 69 6e 63 65  n error.  (since
102a0 20 75 6e 6b 6e 6f 77 6e 20 50 52 41 47 4d 41 73   unknown PRAGMAs
102b0 20 61 72 65 20 73 69 6c 65 6e 74 6c 79 20 69 67   are silently ig
102c0 6e 6f 72 65 64 29 2c 20 62 75 74 20 64 6f 65 73  nored), but does
102d0 20 6e 6f 74 20 72 65 74 75 72 6e 20 61 20 76 61   not return a va
102e0 6c 75 65 0a 20 20 6f 72 20 6d 6f 64 69 66 79 20  lue.  or modify 
102f0 74 68 65 20 61 75 74 6f 2d 76 61 63 75 75 6d 20  the auto-vacuum 
10300 66 6c 61 67 20 69 6e 20 74 68 65 20 64 61 74 61  flag in the data
10310 62 61 73 65 20 66 69 6c 65 2e 20 49 66 20 61 20  base file. If a 
10320 64 61 74 61 62 61 73 65 20 74 68 61 74 0a 20 20  database that.  
10330 73 75 70 70 6f 72 74 73 20 61 75 74 6f 2d 76 61  supports auto-va
10340 63 75 75 6d 20 69 73 20 6f 70 65 6e 65 64 20 62  cuum is opened b
10350 79 20 61 20 6c 69 62 72 61 72 79 20 63 6f 6d 70  y a library comp
10360 69 6c 65 64 20 77 69 74 68 20 74 68 69 73 20 6f  iled with this o
10370 70 74 69 6f 6e 2c 20 69 74 0a 20 20 69 73 20 61  ption, it.  is a
10380 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6f 70 65  utomatically ope
10390 6e 65 64 20 69 6e 20 72 65 61 64 2d 6f 6e 6c 79  ned in read-only
103a0 20 6d 6f 64 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c   mode..}..COMPIL
103b0 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
103c0 5f 4f 4d 49 54 5f 42 45 54 57 45 45 4e 5f 4f 50  _OMIT_BETWEEN_OP
103d0 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20  TIMIZATION} {.  
103e0 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61  This option disa
103f0 62 6c 65 73 20 74 68 65 20 75 73 65 20 6f 66 20  bles the use of 
10400 69 6e 64 69 63 65 73 20 77 69 74 68 20 57 48 45  indices with WHE
10410 52 45 20 63 6c 61 75 73 65 20 74 65 72 6d 73 0a  RE clause terms.
10420 20 20 74 68 61 74 20 65 6d 70 6c 6f 79 20 74 68    that employ th
10430 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61 74  e BETWEEN operat
10440 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  or..}..COMPILE_O
10450 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
10460 49 54 5f 42 4c 4f 42 5f 4c 49 54 45 52 41 4c 7d  IT_BLOB_LITERAL}
10470 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f   {.  When this o
10480 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
10490 2c 20 69 74 20 69 73 20 6e 6f 74 20 70 6f 73 73  , it is not poss
104a0 69 62 6c 65 20 74 6f 20 73 70 65 63 69 66 79 20  ible to specify 
104b0 61 20 62 6c 6f 62 20 69 6e 0a 20 20 61 6e 20 53  a blob in.  an S
104c0 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 75 73 69  QL statement usi
104d0 6e 67 20 74 68 65 20 58 27 41 42 43 44 27 20 73  ng the X'ABCD' s
104e0 79 6e 74 61 78 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  yntax..}..COMPIL
104f0 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
10500 5f 4f 4d 49 54 5f 42 54 52 45 45 43 4f 55 4e 54  _OMIT_BTREECOUNT
10510 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
10520 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
10530 64 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69  d, an optimizati
10540 6f 6e 20 74 68 61 74 20 61 63 63 65 6c 65 72 61  on that accelera
10550 74 65 73 20 63 6f 75 6e 74 69 6e 67 0a 20 20 61  tes counting.  a
10560 6c 6c 20 65 6e 74 72 69 65 73 20 69 6e 20 61 20  ll entries in a 
10570 74 61 62 6c 65 20 28 69 6e 20 6f 74 68 65 72 20  table (in other 
10580 77 6f 72 64 73 2c 20 61 6e 20 6f 70 74 69 6d 69  words, an optimi
10590 7a 61 74 69 6f 6e 20 74 68 61 74 20 68 65 6c 70  zation that help
105a0 73 0a 20 20 22 53 45 4c 45 43 54 20 63 6f 75 6e  s.  "SELECT coun
105b0 74 28 2a 29 20 46 52 4f 4d 20 74 61 62 6c 65 22  t(*) FROM table"
105c0 20 72 75 6e 20 66 61 73 74 65 72 29 20 69 73 20   run faster) is 
105d0 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  omitted..}..COMP
105e0 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
105f0 54 45 5f 4f 4d 49 54 5f 42 55 49 4c 54 49 4e 5f  TE_OMIT_BUILTIN_
10600 54 45 53 54 7d 20 7b 0a 20 20 54 68 69 73 20 63  TEST} {.  This c
10610 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
10620 6f 6e 20 68 61 73 20 62 65 65 6e 20 72 65 6e 61  on has been rena
10630 6d 65 64 20 74 6f 20 5b 53 51 4c 49 54 45 5f 55  med to [SQLITE_U
10640 4e 54 45 53 54 41 42 4c 45 5d 2e 0a 7d 0a 0a 43  NTESTABLE]..}..C
10650 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
10660 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 41 53 54 7d  QLITE_OMIT_CAST}
10670 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
10680 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
10690 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66  o omit support f
106a0 6f 72 20 74 68 65 20 43 41 53 54 20 6f 70 65 72  or the CAST oper
106b0 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ator..}..COMPILE
106c0 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
106d0 4f 4d 49 54 5f 43 48 45 43 4b 7d 20 7b 0a 20 20  OMIT_CHECK} {.  
106e0 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
106f0 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69  es SQLite to omi
10700 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 43 48  t support for CH
10710 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e  ECK constraints.
10720 0a 20 20 54 68 65 20 70 61 72 73 65 72 20 77 69  .  The parser wi
10730 6c 6c 20 73 74 69 6c 6c 20 61 63 63 65 70 74 20  ll still accept 
10740 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74  CHECK constraint
10750 73 20 69 6e 20 53 51 4c 20 73 74 61 74 65 6d 65  s in SQL stateme
10760 6e 74 73 2c 0a 20 20 74 68 65 79 20 77 69 6c 6c  nts,.  they will
10770 20 6a 75 73 74 20 6e 6f 74 20 62 65 20 65 6e 66   just not be enf
10780 6f 72 63 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  orced..}..COMPIL
10790 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
107a0 5f 4f 4d 49 54 5f 43 4f 4d 50 49 4c 45 4f 50 54  _OMIT_COMPILEOPT
107b0 49 4f 4e 5f 44 49 41 47 53 7d 20 7b 0a 20 20 54  ION_DIAGS} {.  T
107c0 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
107d0 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63  ed to omit the c
107e0 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
107f0 6f 6e 20 64 69 61 67 6e 6f 73 74 69 63 73 20 61  on diagnostics a
10800 76 61 69 6c 61 62 6c 65 0a 20 20 69 6e 20 53 51  vailable.  in SQ
10810 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20  Lite, including 
10820 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d  the [sqlite3_com
10830 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28  pileoption_used(
10840 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65  )] and.  [sqlite
10850 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  3_compileoption_
10860 67 65 74 28 29 5d 20 43 2f 43 2b 2b 20 66 75 6e  get()] C/C++ fun
10870 63 74 69 6f 6e 73 2c 20 74 68 65 0a 20 20 5b 73  ctions, the.  [s
10880 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74  qlite_compileopt
10890 69 6f 6e 5f 75 73 65 64 28 29 5d 20 61 6e 64 20  ion_used()] and 
108a0 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f  [sqlite_compileo
108b0 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20 53 51 4c  ption_get()] SQL
108c0 20 66 75 6e 63 74 69 6f 6e 73 2c 0a 20 20 61 6e   functions,.  an
108d0 64 20 74 68 65 20 5b 63 6f 6d 70 69 6c 65 5f 6f  d the [compile_o
108e0 70 74 69 6f 6e 73 20 70 72 61 67 6d 61 5d 2e 0a  ptions pragma]..
108f0 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
10900 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43  N {SQLITE_OMIT_C
10910 4f 4d 50 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69  OMPLETE} {.  Thi
10920 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
10930 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d  the [sqlite3_com
10940 70 6c 65 74 65 28 29 5d 20 61 6e 64 20 5b 73 71  plete()] and [sq
10950 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36  lite3_complete16
10960 28 29 5d 0a 20 20 69 6e 74 65 72 66 61 63 65 73  ()].  interfaces
10970 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a   to be omitted..
10980 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
10990 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43  N {SQLITE_OMIT_C
109a0 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 7d 20  OMPOUND_SELECT} 
109b0 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
109c0 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20  is used to omit 
109d0 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20 5b 53 45  the compound [SE
109e0 4c 45 43 54 5d 20 66 75 6e 63 74 69 6f 6e 61 6c  LECT] functional
109f0 69 74 79 2e 20 0a 20 20 5b 53 45 4c 45 43 54 5d  ity. .  [SELECT]
10a00 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74   statements that
10a10 20 75 73 65 20 74 68 65 20 0a 20 20 55 4e 49 4f   use the .  UNIO
10a20 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e  N, UNION ALL, IN
10a30 54 45 52 53 45 43 54 20 6f 72 20 45 58 43 45 50  TERSECT or EXCEP
10a40 54 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43  T compound SELEC
10a50 54 20 6f 70 65 72 61 74 6f 72 73 20 77 69 6c 6c  T operators will
10a60 20 0a 20 20 63 61 75 73 65 20 61 20 70 61 72 73   .  cause a pars
10a70 65 20 65 72 72 6f 72 2e 0a 0a 20 20 41 6e 20 5b  e error...  An [
10a80 49 4e 53 45 52 54 5d 20 73 74 61 74 65 6d 65 6e  INSERT] statemen
10a90 74 20 77 69 74 68 20 6d 75 6c 74 69 70 6c 65 20  t with multiple 
10aa0 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 56 41  values in the VA
10ab0 4c 55 45 53 20 63 6c 61 75 73 65 20 69 73 0a 20  LUES clause is. 
10ac0 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 74   implemented int
10ad0 65 72 6e 61 6c 6c 79 20 61 73 20 61 20 63 6f 6d  ernally as a com
10ae0 70 6f 75 6e 64 20 53 45 4c 45 43 54 2e 20 20 48  pound SELECT.  H
10af0 65 6e 63 65 2c 20 74 68 69 73 20 6f 70 74 69 6f  ence, this optio
10b00 6e 20 61 6c 73 6f 0a 20 20 64 69 73 61 62 6c 65  n also.  disable
10b10 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f  s the ability to
10b20 20 69 6e 73 65 72 74 20 6d 6f 72 65 20 74 68 61   insert more tha
10b30 6e 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 75  n a single row u
10b40 73 69 6e 67 20 61 6e 0a 20 20 49 4e 53 45 52 54  sing an.  INSERT
10b50 20 49 4e 54 4f 20 2e 2e 2e 20 56 41 4c 55 45 53   INTO ... VALUES
10b60 20 2e 2e 2e 20 73 74 61 74 65 6d 65 6e 74 2e 0a   ... statement..
10b70 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
10b80 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43  N {SQLITE_OMIT_C
10b90 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  TE} {.  This opt
10ba0 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70 6f  ion causes suppo
10bb0 72 74 20 66 6f 72 20 5b 63 6f 6d 6d 6f 6e 20 74  rt for [common t
10bc0 61 62 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 73  able expressions
10bd0 5d 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e  ] to be omitted.
10be0 0a 7d 0a 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  .}....COMPILE_OP
10bf0 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
10c00 54 5f 44 41 54 45 54 49 4d 45 5f 46 55 4e 43 53  T_DATETIME_FUNCS
10c10 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70  } {.  If this op
10c20 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
10c30 20 53 51 4c 69 74 65 27 73 20 62 75 69 6c 74 2d   SQLite's built-
10c40 69 6e 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  in date and time
10c50 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 0a 20 20   manipulation.  
10c60 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d  functions are om
10c70 69 74 74 65 64 2e 20 53 70 65 63 69 66 69 63 61  itted. Specifica
10c80 6c 6c 79 2c 20 74 68 65 20 53 51 4c 20 66 75 6e  lly, the SQL fun
10c90 63 74 69 6f 6e 73 20 6a 75 6c 69 61 6e 64 61 79  ctions julianday
10ca0 28 29 2c 20 64 61 74 65 28 29 2c 0a 20 20 74 69  (), date(),.  ti
10cb0 6d 65 28 29 2c 20 64 61 74 65 74 69 6d 65 28 29  me(), datetime()
10cc0 20 61 6e 64 20 73 74 72 66 74 69 6d 65 28 29 20   and strftime() 
10cd0 61 72 65 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c  are not availabl
10ce0 65 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 63  e. The default c
10cf0 6f 6c 75 6d 6e 0a 20 20 76 61 6c 75 65 73 20 43  olumn.  values C
10d00 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52  URRENT_TIME, CUR
10d10 52 45 4e 54 5f 44 41 54 45 20 61 6e 64 20 43 55  RENT_DATE and CU
10d20 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20  RRENT_TIMESTAMP 
10d30 61 72 65 20 73 74 69 6c 6c 20 61 76 61 69 6c 61  are still availa
10d40 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ble..}..COMPILE_
10d50 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
10d60 4d 49 54 5f 44 45 43 4c 54 59 50 45 7d 20 7b 0a  MIT_DECLTYPE} {.
10d70 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
10d80 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f  uses SQLite to o
10d90 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  mit support for 
10da0 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  the.  [sqlite3_c
10db0 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 29  olumn_decltype()
10dc0 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63  ] and [sqlite3_c
10dd0 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36  olumn_decltype16
10de0 28 29 5d 0a 20 20 69 6e 74 65 72 66 61 63 65 73  ()].  interfaces
10df0 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
10e00 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
10e10 5f 44 45 50 52 45 43 41 54 45 44 7d 20 7b 0a 20  _DEPRECATED} {. 
10e20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
10e30 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d  ses SQLite to om
10e40 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 69  it support for i
10e50 6e 74 65 72 66 61 63 65 73 0a 20 20 6d 61 72 6b  nterfaces.  mark
10e60 65 64 20 61 73 20 64 65 70 72 65 63 61 74 65 64  ed as deprecated
10e70 2e 20 20 54 68 69 73 20 69 6e 63 6c 75 64 65 73  .  This includes
10e80 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 61 67 67   .  [sqlite3_agg
10e90 72 65 67 61 74 65 5f 63 6f 75 6e 74 28 29 5d 2c  regate_count()],
10ea0 0a 20 20 5b 73 71 6c 69 74 65 33 5f 65 78 70 69  .  [sqlite3_expi
10eb0 72 65 64 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74  red()],.  [sqlit
10ec0 65 33 5f 74 72 61 6e 73 66 65 72 5f 62 69 6e 64  e3_transfer_bind
10ed0 69 6e 67 73 28 29 5d 2c 0a 20 20 5b 73 71 6c 69  ings()],.  [sqli
10ee0 74 65 33 5f 67 6c 6f 62 61 6c 5f 72 65 63 6f 76  te3_global_recov
10ef0 65 72 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65  er()],.  [sqlite
10f00 33 5f 74 68 72 65 61 64 5f 63 6c 65 61 6e 75 70  3_thread_cleanup
10f10 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
10f20 65 33 5f 6d 65 6d 6f 72 79 5f 61 6c 61 72 6d 28  e3_memory_alarm(
10f30 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d  )] interfaces..}
10f40 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
10f50 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 49   {SQLITE_OMIT_DI
10f60 53 4b 49 4f 7d 20 7b 0a 20 20 54 68 69 73 20 6f  SKIO} {.  This o
10f70 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6c 6c 20  ption omits all 
10f80 73 75 70 70 6f 72 74 20 66 6f 72 20 77 72 69 74  support for writ
10f90 69 6e 67 20 74 6f 20 74 68 65 20 64 69 73 6b 20  ing to the disk 
10fa0 61 6e 64 20 66 6f 72 63 65 73 0a 20 20 64 61 74  and forces.  dat
10fb0 61 62 61 73 65 73 20 74 6f 20 65 78 69 73 74 20  abases to exist 
10fc0 69 6e 20 6d 65 6d 6f 72 79 20 6f 6e 6c 79 2e 20  in memory only. 
10fd0 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 68 61 73   This option has
10fe0 20 6e 6f 74 20 62 65 65 6e 20 0a 20 20 6d 61 69   not been .  mai
10ff0 6e 74 61 69 6e 65 64 20 61 6e 64 20 70 72 6f 62  ntained and prob
11000 61 62 6c 79 20 64 6f 65 73 20 6e 6f 74 20 77 6f  ably does not wo
11010 72 6b 20 77 69 74 68 20 6e 65 77 65 72 20 76 65  rk with newer ve
11020 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65  rsions of SQLite
11030 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
11040 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
11050 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a 20 20 44 65  _EXPLAIN} {.  De
11060 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69  fining this opti
11070 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b 45  on causes the [E
11080 58 50 4c 41 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20  XPLAIN] command 
11090 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72  to be omitted fr
110a0 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72 61 72 79  om the.  library
110b0 2e 20 41 74 74 65 6d 70 74 69 6e 67 20 74 6f 20  . Attempting to 
110c0 65 78 65 63 75 74 65 20 61 6e 20 5b 45 58 50 4c  execute an [EXPL
110d0 41 49 4e 5d 20 73 74 61 74 65 6d 65 6e 74 20 77  AIN] statement w
110e0 69 6c 6c 20 63 61 75 73 65 20 61 20 70 61 72 73  ill cause a pars
110f0 65 0a 20 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f  e.  error..}..CO
11100 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
11110 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50  LITE_OMIT_FLAG_P
11120 52 41 47 4d 41 53 7d 20 7b 0a 20 20 54 68 69 73  RAGMAS} {.  This
11130 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
11140 70 70 6f 72 74 20 66 6f 72 20 61 20 73 75 62 73  pport for a subs
11150 65 74 20 6f 66 20 5b 50 52 41 47 4d 41 5d 20 63  et of [PRAGMA] c
11160 6f 6d 6d 61 6e 64 73 20 74 68 61 74 0a 20 20 71  ommands that.  q
11170 75 65 72 79 20 61 6e 64 20 73 65 74 20 62 6f 6f  uery and set boo
11180 6c 65 61 6e 20 70 72 6f 70 65 72 74 69 65 73 2e  lean properties.
11190 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
111a0 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
111b0 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e 54 7d 20  FLOATING_POINT} 
111c0 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
111d0 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20  is used to omit 
111e0 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 6e  floating-point n
111f0 75 6d 62 65 72 20 73 75 70 70 6f 72 74 20 66 72  umber support fr
11200 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 0a 20 20  om the SQLite.  
11210 6c 69 62 72 61 72 79 2e 20 57 68 65 6e 20 73 70  library. When sp
11220 65 63 69 66 69 65 64 2c 20 73 70 65 63 69 66 79  ecified, specify
11230 69 6e 67 20 61 20 66 6c 6f 61 74 69 6e 67 20 70  ing a floating p
11240 6f 69 6e 74 20 6e 75 6d 62 65 72 20 61 73 20 61  oint number as a
11250 20 6c 69 74 65 72 61 6c 20 0a 20 20 28 69 2e 65   literal .  (i.e
11260 2e 20 22 31 2e 30 31 22 29 20 72 65 73 75 6c 74  . "1.01") result
11270 73 20 69 6e 20 61 20 70 61 72 73 65 20 65 72 72  s in a parse err
11280 6f 72 2e 0a 0a 20 20 3c 70 3e 49 6e 20 74 68 65  or...  <p>In the
11290 20 66 75 74 75 72 65 2c 20 74 68 69 73 20 6f 70   future, this op
112a0 74 69 6f 6e 20 6d 61 79 20 61 6c 73 6f 20 64 69  tion may also di
112b0 73 61 62 6c 65 20 6f 74 68 65 72 20 66 6c 6f 61  sable other floa
112c0 74 69 6e 67 20 70 6f 69 6e 74 20 0a 20 20 66 75  ting point .  fu
112d0 6e 63 74 69 6f 6e 61 6c 69 74 79 2c 20 66 6f 72  nctionality, for
112e0 20 65 78 61 6d 70 6c 65 20 74 68 65 20 5b 73 71   example the [sq
112f0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
11300 62 6c 65 28 29 5d 2c 20 0a 20 20 5b 73 71 6c 69  ble()], .  [sqli
11310 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28  te3_bind_double(
11320 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c  )], [sqlite3_val
11330 75 65 5f 64 6f 75 62 6c 65 28 29 5d 20 61 6e 64  ue_double()] and
11340 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  .  [sqlite3_colu
11350 6d 6e 5f 64 6f 75 62 6c 65 28 29 5d 20 41 50 49  mn_double()] API
11360 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 20 20 3c 2f   functions..  </
11370 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  p>.}..COMPILE_OP
11380 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
11390 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 7d 20 7b  T_FOREIGN_KEY} {
113a0 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f  .  If this optio
113b0 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  n is defined, th
113c0 65 6e 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20  en [foreign key 
113d0 63 6f 6e 73 74 72 61 69 6e 74 5d 20 73 79 6e 74  constraint] synt
113e0 61 78 20 69 73 0a 20 20 6e 6f 74 20 72 65 63 6f  ax is.  not reco
113f0 67 6e 69 7a 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  gnized..}..COMPI
11400 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
11410 45 5f 4f 4d 49 54 5f 47 45 54 5f 54 41 42 4c 45  E_OMIT_GET_TABLE
11420 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
11430 6e 20 63 61 75 73 65 73 20 73 75 70 70 6f 72 74  n causes support
11440 20 66 6f 72 20 5b 73 71 6c 69 74 65 33 5f 67 65   for [sqlite3_ge
11450 74 5f 74 61 62 6c 65 28 29 5d 20 61 6e 64 0a 20  t_table()] and. 
11460 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74   [sqlite3_free_t
11470 61 62 6c 65 28 29 5d 20 74 6f 20 62 65 20 6f 6d  able()] to be om
11480 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  itted..}..COMPIL
11490 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
114a0 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c 4f 42 7d 20  _OMIT_INCRBLOB} 
114b0 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
114c0 63 61 75 73 65 73 20 73 75 70 70 6f 72 74 20 66  causes support f
114d0 6f 72 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62  or [sqlite3_blob
114e0 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42   | incremental B
114f0 4c 4f 42 20 49 2f 4f 5d 0a 20 20 74 6f 20 62 65  LOB I/O].  to be
11500 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   omitted..}..COM
11510 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
11520 49 54 45 5f 4f 4d 49 54 5f 49 4e 54 45 47 52 49  ITE_OMIT_INTEGRI
11530 54 59 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68  TY_CHECK} {.  Th
11540 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
11550 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20  support for the 
11560 5b 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b  [integrity_check
11570 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d   pragma]..}..COM
11580 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
11590 49 54 45 5f 4f 4d 49 54 5f 4c 49 4b 45 5f 4f 50  ITE_OMIT_LIKE_OP
115a0 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20  TIMIZATION} {.  
115b0 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61  This option disa
115c0 62 6c 65 73 20 74 68 65 20 61 62 69 6c 69 74 79  bles the ability
115d0 20 6f 66 20 53 51 4c 69 74 65 20 74 6f 20 75 73   of SQLite to us
115e0 65 20 69 6e 64 69 63 65 73 20 74 6f 20 68 65 6c  e indices to hel
115f0 70 0a 20 20 72 65 73 6f 6c 76 65 20 5b 4c 49 4b  p.  resolve [LIK
11600 45 5d 20 61 6e 64 20 5b 47 4c 4f 42 5d 20 6f 70  E] and [GLOB] op
11610 65 72 61 74 6f 72 73 20 69 6e 20 61 20 57 48 45  erators in a WHE
11620 52 45 20 63 6c 61 75 73 65 2e 0a 7d 0a 0a 43 4f  RE clause..}..CO
11630 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
11640 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45  LITE_OMIT_LOAD_E
11650 58 54 45 4e 53 49 4f 4e 7d 20 7b 0a 20 20 54 68  XTENSION} {.  Th
11660 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
11670 74 68 65 20 65 6e 74 69 72 65 20 65 78 74 65 6e  the entire exten
11680 73 69 6f 6e 20 6c 6f 61 64 69 6e 67 20 6d 65 63  sion loading mec
11690 68 61 6e 69 73 6d 20 66 72 6f 6d 0a 20 20 53 51  hanism from.  SQ
116a0 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20  Lite, including 
116b0 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f  [sqlite3_enable_
116c0 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29  load_extension()
116d0 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33  ] and.  [sqlite3
116e0 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  _load_extension(
116f0 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d  )] interfaces..}
11700 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
11710 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f   {SQLITE_OMIT_LO
11720 43 41 4c 54 49 4d 45 7d 20 7b 0a 20 20 54 68 69  CALTIME} {.  Thi
11730 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74  s option omits t
11740 68 65 20 22 6c 6f 63 61 6c 74 69 6d 65 22 20 6d  he "localtime" m
11750 6f 64 69 66 69 65 72 20 66 72 6f 6d 20 74 68 65  odifier from the
11760 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 0a 20   date and time. 
11770 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 69   functions.  Thi
11780 73 20 6f 70 74 69 6f 6e 20 69 73 20 73 6f 6d 65  s option is some
11790 74 69 6d 65 73 20 75 73 65 66 75 6c 20 77 68 65  times useful whe
117a0 6e 20 74 72 79 69 6e 67 20 74 6f 20 63 6f 6d 70  n trying to comp
117b0 69 6c 65 0a 20 20 74 68 65 20 64 61 74 65 20 61  ile.  the date a
117c0 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e  nd time function
117d0 73 20 6f 6e 20 61 20 70 6c 61 74 66 6f 72 6d 20  s on a platform 
117e0 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75  that does not su
117f0 70 70 6f 72 74 20 74 68 65 0a 20 20 63 6f 6e 63  pport the.  conc
11800 65 70 74 20 6f 66 20 6c 6f 63 61 6c 20 74 69 6d  ept of local tim
11810 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
11820 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
11830 54 5f 4c 4f 4f 4b 41 53 49 44 45 7d 20 7b 0a 20  T_LOOKASIDE} {. 
11840 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
11850 74 73 20 74 68 65 20 5b 6c 6f 6f 6b 61 73 69 64  ts the [lookasid
11860 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  e memory allocat
11870 6f 72 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  or]..}..COMPILE_
11880 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
11890 4d 49 54 5f 4d 45 4d 4f 52 59 44 42 7d 20 7b 0a  MIT_MEMORYDB} {.
118a0 20 20 57 68 65 6e 20 74 68 69 73 20 69 73 20 64    When this is d
118b0 65 66 69 6e 65 64 2c 20 74 68 65 20 6c 69 62 72  efined, the libr
118c0 61 72 79 20 64 6f 65 73 20 6e 6f 74 20 72 65 73  ary does not res
118d0 70 65 63 74 20 74 68 65 20 73 70 65 63 69 61 6c  pect the special
118e0 20 64 61 74 61 62 61 73 65 0a 20 20 6e 61 6d 65   database.  name
118f0 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 28 6e 6f 72   ":memory:" (nor
11900 6d 61 6c 6c 79 20 75 73 65 64 20 74 6f 20 63 72  mally used to cr
11910 65 61 74 65 20 61 6e 20 5b 69 6e 2d 6d 65 6d 6f  eate an [in-memo
11920 72 79 20 64 61 74 61 62 61 73 65 5d 29 2e 20 49  ry database]). I
11930 66 20 0a 20 20 22 3a 6d 65 6d 6f 72 79 3a 22 20  f .  ":memory:" 
11940 69 73 20 70 61 73 73 65 64 20 74 6f 20 5b 73 71  is passed to [sq
11950 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b  lite3_open()], [
11960 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29  sqlite3_open16()
11970 5d 2c 20 6f 72 0a 20 20 5b 73 71 6c 69 74 65 33  ], or.  [sqlite3
11980 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61 20 66  _open_v2()], a f
11990 69 6c 65 20 77 69 74 68 20 74 68 69 73 20 6e 61  ile with this na
119a0 6d 65 20 77 69 6c 6c 20 62 65 20 0a 20 20 6f 70  me will be .  op
119b0 65 6e 65 64 20 6f 72 20 63 72 65 61 74 65 64 2e  ened or created.
119c0 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
119d0 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
119e0 4f 52 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d  OR_OPTIMIZATION}
119f0 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
11a00 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 61 62   disables the ab
11a10 69 6c 69 74 79 20 6f 66 20 53 51 4c 69 74 65 20  ility of SQLite 
11a20 74 6f 20 75 73 65 20 61 6e 20 69 6e 64 65 78 20  to use an index 
11a30 74 6f 67 65 74 68 65 72 0a 20 20 77 69 74 68 20  together.  with 
11a40 74 65 72 6d 73 20 6f 66 20 61 20 57 48 45 52 45  terms of a WHERE
11a50 20 63 6c 61 75 73 65 20 63 6f 6e 6e 65 63 74 65   clause connecte
11a60 64 20 62 79 20 74 68 65 20 4f 52 20 6f 70 65 72  d by the OR oper
11a70 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ator..}..COMPILE
11a80 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
11a90 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52 41 47 4d  OMIT_PAGER_PRAGM
11aa0 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67  AS} {.  Defining
11ab0 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   this option omi
11ac0 74 73 20 70 72 61 67 6d 61 73 20 72 65 6c 61 74  ts pragmas relat
11ad0 65 64 20 74 6f 20 74 68 65 20 70 61 67 65 72 20  ed to the pager 
11ae0 73 75 62 73 79 73 74 65 6d 20 66 72 6f 6d 20 0a  subsystem from .
11af0 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a    the build..}..
11b00 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
11b10 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 41 47  SQLITE_OMIT_PRAG
11b20 4d 41 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  MA} {.  This opt
11b30 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f  ion is used to o
11b40 6d 69 74 20 74 68 65 20 5b 50 52 41 47 4d 41 5d  mit the [PRAGMA]
11b50 20 63 6f 6d 6d 61 6e 64 0a 20 20 66 72 6f 6d 20   command.  from 
11b60 74 68 65 20 6c 69 62 72 61 72 79 2e 20 4e 6f 74  the library. Not
11b70 65 20 74 68 61 74 20 69 74 20 69 73 20 75 73 65  e that it is use
11b80 66 75 6c 20 74 6f 20 64 65 66 69 6e 65 20 74 68  ful to define th
11b90 65 20 6d 61 63 72 6f 73 20 74 68 61 74 20 6f 6d  e macros that om
11ba0 69 74 0a 20 20 73 70 65 63 69 66 69 63 20 70 72  it.  specific pr
11bb0 61 67 6d 61 73 20 69 6e 20 61 64 64 69 74 69 6f  agmas in additio
11bc0 6e 20 74 6f 20 74 68 69 73 2c 20 61 73 20 74 68  n to this, as th
11bd0 65 79 20 6d 61 79 20 61 6c 73 6f 20 72 65 6d 6f  ey may also remo
11be0 76 65 20 73 75 70 70 6f 72 74 69 6e 67 20 63 6f  ve supporting co
11bf0 64 65 0a 20 20 69 6e 20 6f 74 68 65 72 20 73 75  de.  in other su
11c00 62 2d 73 79 73 74 65 6d 73 2e 20 54 68 69 73 20  b-systems. This 
11c10 6d 61 63 72 6f 20 72 65 6d 6f 76 65 73 20 74 68  macro removes th
11c20 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61  e [PRAGMA] comma
11c30 6e 64 20 6f 6e 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50  nd only..}..COMP
11c40 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
11c50 54 45 5f 4f 4d 49 54 5f 50 52 4f 47 52 45 53 53  TE_OMIT_PROGRESS
11c60 5f 43 41 4c 4c 42 41 43 4b 7d 20 7b 0a 20 20 54  _CALLBACK} {.  T
11c70 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20 62  his option may b
11c80 65 20 64 65 66 69 6e 65 64 20 74 6f 20 6f 6d 69  e defined to omi
11c90 74 20 74 68 65 20 63 61 70 61 62 69 6c 69 74 79  t the capability
11ca0 20 74 6f 20 69 73 73 75 65 20 22 70 72 6f 67 72   to issue "progr
11cb0 65 73 73 22 20 0a 20 20 63 61 6c 6c 62 61 63 6b  ess" .  callback
11cc0 73 20 64 75 72 69 6e 67 20 6c 6f 6e 67 2d 72 75  s during long-ru
11cd0 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61 74 65 6d  nning SQL statem
11ce0 65 6e 74 73 2e 20 54 68 65 20 0a 20 20 5b 73 71  ents. The .  [sq
11cf0 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f 68  lite3_progress_h
11d00 61 6e 64 6c 65 72 28 29 5d 0a 20 20 41 50 49 20  andler()].  API 
11d10 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20  function is not 
11d20 70 72 65 73 65 6e 74 20 69 6e 20 74 68 65 20 6c  present in the l
11d30 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49  ibrary..}..COMPI
11d40 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
11d50 45 5f 4f 4d 49 54 5f 51 55 49 43 4b 42 41 4c 41  E_OMIT_QUICKBALA
11d60 4e 43 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  NCE} {.  This op
11d70 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6e 20 61 6c  tion omits an al
11d80 74 65 72 6e 61 74 69 76 65 2c 20 66 61 73 74 65  ternative, faste
11d90 72 20 42 2d 54 72 65 65 20 62 61 6c 61 6e 63 69  r B-Tree balanci
11da0 6e 67 20 72 6f 75 74 69 6e 65 2e 0a 20 20 55 73  ng routine..  Us
11db0 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
11dc0 6d 61 6b 65 73 20 53 51 4c 69 74 65 20 73 6c 69  makes SQLite sli
11dd0 67 68 74 6c 79 20 73 6d 61 6c 6c 65 72 20 61 74  ghtly smaller at
11de0 20 74 68 65 20 65 78 70 65 6e 73 65 20 6f 66 0a   the expense of.
11df0 20 20 6d 61 6b 69 6e 67 20 69 74 20 72 75 6e 20    making it run 
11e00 73 6c 69 67 68 74 6c 79 20 73 6c 6f 77 65 72 2e  slightly slower.
11e10 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
11e20 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
11e30 52 45 49 4e 44 45 58 7d 20 7b 0a 20 20 57 68 65  REINDEX} {.  Whe
11e40 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
11e50 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 52   defined, the [R
11e60 45 49 4e 44 45 58 5d 0a 20 20 63 6f 6d 6d 61 6e  EINDEX].  comman
11e70 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65  d is not include
11e80 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79  d in the library
11e90 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61 20  ..  Executing a 
11ea0 5b 52 45 49 4e 44 45 58 5d 20 73 74 61 74 65 6d  [REINDEX] statem
11eb0 65 6e 74 20 63 61 75 73 65 73 20 0a 20 20 61 20  ent causes .  a 
11ec0 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a  parse error..}..
11ed0 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
11ee0 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45  SQLITE_OMIT_SCHE
11ef0 4d 41 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20  MA_PRAGMAS} {.  
11f00 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70  Defining this op
11f10 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d  tion omits pragm
11f20 61 73 20 66 6f 72 20 71 75 65 72 79 69 6e 67 20  as for querying 
11f30 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
11f40 65 6d 61 20 66 72 6f 6d 20 0a 20 20 74 68 65 20  ema from .  the 
11f50 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  build..}..COMPIL
11f60 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
11f70 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 56 45 52  _OMIT_SCHEMA_VER
11f80 53 49 4f 4e 5f 50 52 41 47 4d 41 53 7d 20 7b 0a  SION_PRAGMAS} {.
11f90 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20    Defining this 
11fa0 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61  option omits pra
11fb0 67 6d 61 73 20 66 6f 72 20 71 75 65 72 79 69 6e  gmas for queryin
11fc0 67 20 61 6e 64 20 6d 6f 64 69 66 79 69 6e 67 20  g and modifying 
11fd0 74 68 65 20 0a 20 20 64 61 74 61 62 61 73 65 20  the .  database 
11fe0 73 63 68 65 6d 61 20 76 65 72 73 69 6f 6e 20 61  schema version a
11ff0 6e 64 20 75 73 65 72 20 76 65 72 73 69 6f 6e 20  nd user version 
12000 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e 20  from the build. 
12010 53 70 65 63 69 66 69 63 61 6c 6c 79 2c 20 74 68  Specifically, th
12020 65 20 0a 20 20 5b 73 63 68 65 6d 61 5f 76 65 72  e .  [schema_ver
12030 73 69 6f 6e 5d 20 61 6e 64 20 5b 75 73 65 72 5f  sion] and [user_
12040 76 65 72 73 69 6f 6e 5d 20 50 52 41 47 4d 41 73  version] PRAGMAs
12050 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a   are omitted..}.
12060 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
12070 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 48 41  {SQLITE_OMIT_SHA
12080 52 45 44 5f 43 41 43 48 45 7d 20 7b 0a 20 20 54  RED_CACHE} {.  T
12090 68 69 73 20 6f 70 74 69 6f 6e 20 62 75 69 6c 64  his option build
120a0 73 20 53 51 4c 69 74 65 20 77 69 74 68 6f 75 74  s SQLite without
120b0 20 73 75 70 70 6f 72 74 20 66 6f 72 20 73 68 61   support for sha
120c0 72 65 64 2d 63 61 63 68 65 20 6d 6f 64 65 2e 0a  red-cache mode..
120d0 20 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 65    The [sqlite3_e
120e0 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63  nable_shared_cac
120f0 68 65 28 29 5d 20 69 73 20 6f 6d 69 74 74 65 64  he()] is omitted
12100 20 61 6c 6f 6e 67 20 77 69 74 68 20 61 20 66 61   along with a fa
12110 69 72 0a 20 20 61 6d 6f 75 6e 74 20 6f 66 20 6c  ir.  amount of l
12120 6f 67 69 63 20 77 69 74 68 69 6e 20 74 68 65 20  ogic within the 
12130 42 2d 54 72 65 65 20 73 75 62 73 79 73 74 65 6d  B-Tree subsystem
12140 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
12150 20 73 68 61 72 65 64 0a 20 20 63 61 63 68 65 20   shared.  cache 
12160 6d 61 6e 61 67 65 6d 65 6e 74 2e 0a 7d 0a 0a 43  management..}..C
12170 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
12180 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 55 42 51 55  QLITE_OMIT_SUBQU
12190 45 52 59 7d 20 7b 0a 20 20 49 66 20 64 65 66 69  ERY} {.  If defi
121a0 6e 65 64 2c 20 73 75 70 70 6f 72 74 20 66 6f 72  ned, support for
121b0 20 73 75 62 2d 73 65 6c 65 63 74 73 20 61 6e 64   sub-selects and
121c0 20 74 68 65 20 49 4e 28 29 20 6f 70 65 72 61 74   the IN() operat
121d0 6f 72 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a  or are omitted..
121e0 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
121f0 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54  N {SQLITE_OMIT_T
12200 43 4c 5f 56 41 52 49 41 42 4c 45 7d 20 7b 0a 20  CL_VARIABLE} {. 
12210 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69   If this macro i
12220 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20  s defined, then 
12230 74 68 65 20 73 70 65 63 69 61 6c 20 22 24 3c 76  the special "$<v
12240 61 72 69 61 62 6c 65 2d 6e 61 6d 65 3e 22 20 73  ariable-name>" s
12250 79 6e 74 61 78 0a 20 20 75 73 65 64 20 74 6f 20  yntax.  used to 
12260 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 69  automatically bi
12270 6e 64 20 53 51 4c 20 76 61 72 69 61 62 6c 65 73  nd SQL variables
12280 20 74 6f 20 54 43 4c 20 76 61 72 69 61 62 6c 65   to TCL variable
12290 73 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a  s is omitted..}.
122a0 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
122b0 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 45 4d  {SQLITE_OMIT_TEM
122c0 50 44 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  PDB} {.  This op
122d0 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
122e0 72 74 20 66 6f 72 20 54 45 4d 50 20 6f 72 20 54  rt for TEMP or T
122f0 45 4d 50 4f 52 41 52 59 20 74 61 62 6c 65 73 2e  EMPORARY tables.
12300 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
12310 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
12320 54 52 41 43 45 7d 20 7b 0a 20 20 54 68 69 73 20  TRACE} {.  This 
12330 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70  option omits sup
12340 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 73 71  port for the [sq
12350 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 29 5d  lite3_profile()]
12360 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
12370 74 72 61 63 65 28 29 5d 20 69 6e 74 65 72 66 61  trace()] interfa
12380 63 65 73 20 61 6e 64 20 74 68 65 69 72 20 61 73  ces and their as
12390 73 6f 63 69 61 74 65 64 20 6c 6f 67 69 63 2e 0a  sociated logic..
123a0 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
123b0 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54  N {SQLITE_OMIT_T
123c0 52 49 47 47 45 52 7d 20 7b 0a 20 20 44 65 66 69  RIGGER} {.  Defi
123d0 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e  ning this option
123e0 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66   omits support f
123f0 6f 72 20 54 52 49 47 47 45 52 20 6f 62 6a 65 63  or TRIGGER objec
12400 74 73 2e 20 4e 65 69 74 68 65 72 20 74 68 65 20  ts. Neither the 
12410 0a 20 20 5b 43 52 45 41 54 45 20 54 52 49 47 47  .  [CREATE TRIGG
12420 45 52 5d 20 6f 72 20 5b 44 52 4f 50 20 54 52 49  ER] or [DROP TRI
12430 47 47 45 52 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73  GGER].  commands
12440 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 69   are available i
12450 6e 20 74 68 69 73 20 63 61 73 65 2c 20 61 6e 64  n this case, and
12460 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 65   attempting to e
12470 78 65 63 75 74 65 0a 20 20 65 69 74 68 65 72 20  xecute.  either 
12480 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61  will result in a
12490 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 20 20   parse error..  
124a0 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 6c 73 6f  This option also
124b0 20 64 69 73 61 62 6c 65 73 20 65 6e 66 6f 72 63   disables enforc
124c0 65 6d 65 6e 74 20 6f 66 20 5b 66 6f 72 65 69 67  ement of [foreig
124d0 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74  n key constraint
124e0 73 5d 2c 0a 20 20 73 69 6e 63 65 20 74 68 65 20  s],.  since the 
124f0 63 6f 64 65 20 74 68 61 74 20 69 6d 70 6c 65 6d  code that implem
12500 65 6e 74 73 20 74 72 69 67 67 65 72 73 20 61 6e  ents triggers an
12510 64 20 77 68 69 63 68 20 69 73 20 6f 6d 69 74 74  d which is omitt
12520 65 64 20 62 79 20 74 68 69 73 0a 20 20 6f 70 74  ed by this.  opt
12530 69 6f 6e 20 69 73 20 61 6c 73 6f 20 75 73 65 64  ion is also used
12540 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 5b 66   to implement [f
12550 6f 72 65 69 67 6e 20 6b 65 79 20 61 63 74 69 6f  oreign key actio
12560 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ns]..}..COMPILE_
12570 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
12580 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f 4f 50 54  MIT_TRUNCATE_OPT
12590 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 41  IMIZATION} {.  A
125a0 20 64 65 66 61 75 6c 74 20 62 75 69 6c 64 20 6f   default build o
125b0 66 20 53 51 4c 69 74 65 2c 20 69 66 20 61 20 5b  f SQLite, if a [
125c0 44 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65 6e  DELETE] statemen
125d0 74 20 68 61 73 20 6e 6f 20 57 48 45 52 45 20 63  t has no WHERE c
125e0 6c 61 75 73 65 0a 20 20 61 6e 64 20 6f 70 65 72  lause.  and oper
125f0 61 74 65 73 20 6f 6e 20 61 20 74 61 62 6c 65 20  ates on a table 
12600 77 69 74 68 20 6e 6f 20 74 72 69 67 67 65 72 73  with no triggers
12610 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f  , an optimizatio
12620 6e 20 6f 63 63 75 72 73 20 74 68 61 74 0a 20 20  n occurs that.  
12630 63 61 75 73 65 73 20 74 68 65 20 44 45 4c 45 54  causes the DELET
12640 45 20 74 6f 20 6f 63 63 75 72 20 62 79 20 64 72  E to occur by dr
12650 6f 70 70 69 6e 67 20 61 6e 64 20 72 65 63 72 65  opping and recre
12660 61 74 69 6e 67 20 74 68 65 20 74 61 62 6c 65 2e  ating the table.
12670 20 20 0a 20 20 44 72 6f 70 70 69 6e 67 20 61 6e    .  Dropping an
12680 64 20 72 65 63 72 65 61 74 69 6e 67 20 61 20 74  d recreating a t
12690 61 62 6c 65 20 69 73 20 75 73 75 61 6c 6c 79 20  able is usually 
126a0 6d 75 63 68 20 66 61 73 74 65 72 20 74 68 61 6e  much faster than
126b0 20 64 65 6c 65 74 69 6e 67 0a 20 20 74 68 65 20   deleting.  the 
126c0 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74 20 72 6f  table content ro
126d0 77 20 62 79 20 72 6f 77 2e 20 20 54 68 69 73 20  w by row.  This 
126e0 69 73 20 74 68 65 20 22 74 72 75 6e 63 61 74 65  is the "truncate
126f0 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 22 2e 0a   optimization"..
12700 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
12710 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 55  N {SQLITE_OMIT_U
12720 54 46 31 36 7d 20 7b 0a 20 20 54 68 69 73 20 6d  TF16} {.  This m
12730 61 63 72 6f 20 69 73 20 75 73 65 64 20 74 6f 20  acro is used to 
12740 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72  omit support for
12750 20 55 54 46 31 36 20 74 65 78 74 20 65 6e 63 6f   UTF16 text enco
12760 64 69 6e 67 2e 20 57 68 65 6e 20 74 68 69 73 20  ding. When this 
12770 69 73 0a 20 20 64 65 66 69 6e 65 64 20 61 6c 6c  is.  defined all
12780 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 20 74   API functions t
12790 68 61 74 20 72 65 74 75 72 6e 20 6f 72 20 61 63  hat return or ac
127a0 63 65 70 74 20 55 54 46 31 36 20 65 6e 63 6f 64  cept UTF16 encod
127b0 65 64 20 74 65 78 74 20 61 72 65 0a 20 20 75 6e  ed text are.  un
127c0 61 76 61 69 6c 61 62 6c 65 2e 20 54 68 65 73 65  available. These
127d0 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62   functions can b
127e0 65 20 69 64 65 6e 74 69 66 69 65 64 20 62 79 20  e identified by 
127f0 74 68 65 20 66 61 63 74 20 74 68 61 74 20 74 68  the fact that th
12800 65 79 20 65 6e 64 0a 20 20 77 69 74 68 20 27 31  ey end.  with '1
12810 36 27 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20  6', for example 
12820 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
12830 31 36 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  16()], [sqlite3_
12840 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 29 5d  column_text16()]
12850 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
12860 62 69 6e 64 5f 74 65 78 74 31 36 28 29 5d 2e 0a  bind_text16()]..
12870 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
12880 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56  N {SQLITE_OMIT_V
12890 41 43 55 55 4d 7d 20 7b 0a 20 20 57 68 65 6e 20  ACUUM} {.  When 
128a0 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
128b0 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 56 41 43  efined, the [VAC
128c0 55 55 4d 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20 69  UUM].  command i
128d0 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69  s not included i
128e0 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 20  n the library.. 
128f0 20 45 78 65 63 75 74 69 6e 67 20 61 20 5b 56 41   Executing a [VA
12900 43 55 55 4d 5d 20 73 74 61 74 65 6d 65 6e 74 20  CUUM] statement 
12910 63 61 75 73 65 73 20 0a 20 20 61 20 70 61 72 73  causes .  a pars
12920 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  e error..}..COMP
12930 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
12940 54 45 5f 4f 4d 49 54 5f 56 49 45 57 7d 20 7b 0a  TE_OMIT_VIEW} {.
12950 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20    Defining this 
12960 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70  option omits sup
12970 70 6f 72 74 20 66 6f 72 20 56 49 45 57 20 6f 62  port for VIEW ob
12980 6a 65 63 74 73 2e 20 4e 65 69 74 68 65 72 20 74  jects. Neither t
12990 68 65 20 0a 20 20 5b 43 52 45 41 54 45 20 56 49  he .  [CREATE VI
129a0 45 57 5d 20 6e 6f 72 20 74 68 65 20 5b 44 52 4f  EW] nor the [DRO
129b0 50 20 56 49 45 57 5d 0a 20 20 63 6f 6d 6d 61 6e  P VIEW].  comman
129c0 64 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65  ds are available
129d0 20 69 6e 20 74 68 69 73 20 63 61 73 65 2c 20 61   in this case, a
129e0 6e 64 0a 20 20 61 74 74 65 6d 70 74 69 6e 67 20  nd.  attempting 
129f0 74 6f 20 65 78 65 63 75 74 65 20 65 69 74 68 65  to execute eithe
12a00 72 20 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e  r will result in
12a10 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a   a parse error..
12a20 0a 20 20 57 41 52 4e 49 4e 47 3a 20 49 66 20 74  .  WARNING: If t
12a30 68 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66  his macro is def
12a40 69 6e 65 64 2c 20 69 74 20 77 69 6c 6c 20 6e 6f  ined, it will no
12a50 74 20 62 65 20 70 6f 73 73 69 62 6c 65 20 74 6f  t be possible to
12a60 20 6f 70 65 6e 20 61 20 64 61 74 61 62 61 73 65   open a database
12a70 0a 20 20 66 6f 72 20 77 68 69 63 68 20 74 68 65  .  for which the
12a80 20 73 63 68 65 6d 61 20 63 6f 6e 74 61 69 6e 73   schema contains
12a90 20 56 49 45 57 20 6f 62 6a 65 63 74 73 2e 20 0a   VIEW objects. .
12aa0 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
12ab0 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56  N {SQLITE_OMIT_V
12ac0 49 52 54 55 41 4c 54 41 42 4c 45 7d 20 7b 0a 20  IRTUALTABLE} {. 
12ad0 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
12ae0 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74  ts support for t
12af0 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 74 61 62  he [sqlite3_vtab
12b00 20 7c 20 56 69 72 74 75 61 6c 20 54 61 62 6c 65   | Virtual Table
12b10 5d 0a 20 20 6d 65 63 68 61 6e 69 73 6d 20 69 6e  ].  mechanism in
12b20 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50   SQLite..}..COMP
12b30 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
12b40 54 45 5f 4f 4d 49 54 5f 57 41 4c 7d 20 7b 0a 20  TE_OMIT_WAL} {. 
12b50 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
12b60 74 73 20 74 68 65 20 22 5b 77 72 69 74 65 2d 61  ts the "[write-a
12b70 68 65 61 64 20 6c 6f 67 5d 22 20 28 61 2e 6b 2e  head log]" (a.k.
12b80 61 2e 20 22 5b 57 41 4c 5d 22 29 20 63 61 70 61  a. "[WAL]") capa
12b90 62 69 6c 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49  bility..}..COMPI
12ba0 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
12bb0 45 5f 4f 4d 49 54 5f 57 53 44 7d 20 7b 0a 20 20  E_OMIT_WSD} {.  
12bc0 54 68 69 73 20 6f 70 74 69 6f 6e 20 62 75 69 6c  This option buil
12bd0 64 73 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20  ds a version of 
12be0 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
12bf0 72 79 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73  ry that contains
12c00 20 6e 6f 0a 20 20 57 72 69 74 61 62 6c 65 20 53   no.  Writable S
12c10 74 61 74 69 63 20 44 61 74 61 20 28 57 53 44 29  tatic Data (WSD)
12c20 2e 20 20 57 53 44 20 69 73 20 67 6c 6f 62 61 6c  .  WSD is global
12c30 20 76 61 72 69 61 62 6c 65 73 20 61 6e 64 2f 6f   variables and/o
12c40 72 20 73 74 61 74 69 63 0a 20 20 76 61 72 69 61  r static.  varia
12c50 62 6c 65 73 2e 20 20 53 6f 6d 65 20 70 6c 61 74  bles.  Some plat
12c60 66 6f 72 6d 73 20 64 6f 20 6e 6f 74 20 73 75 70  forms do not sup
12c70 70 6f 72 74 20 57 53 44 2c 20 61 6e 64 20 74 68  port WSD, and th
12c80 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e 65 63  is option is nec
12c90 65 73 73 61 72 79 0a 20 20 69 6e 20 6f 72 64 65  essary.  in orde
12ca0 72 20 66 6f 72 20 53 51 4c 69 74 65 20 74 6f 20  r for SQLite to 
12cb0 77 6f 72 6b 20 74 68 6f 73 65 20 70 6c 61 74 66  work those platf
12cc0 6f 72 6d 73 2e 20 20 0a 0a 20 20 55 6e 6c 69 6b  orms.  ..  Unlik
12cd0 65 20 6f 74 68 65 72 20 4f 4d 49 54 20 6f 70 74  e other OMIT opt
12ce0 69 6f 6e 73 20 77 68 69 63 68 20 6d 61 6b 65 20  ions which make 
12cf0 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
12d00 72 79 20 73 6d 61 6c 6c 65 72 2c 0a 20 20 74 68  ry smaller,.  th
12d10 69 73 20 6f 70 74 69 6f 6e 20 61 63 74 75 61 6c  is option actual
12d20 6c 79 20 69 6e 63 72 65 61 73 65 73 20 74 68 65  ly increases the
12d30 20 73 69 7a 65 20 6f 66 20 53 51 4c 69 74 65 20   size of SQLite 
12d40 61 6e 64 20 6d 61 6b 65 73 20 69 74 20 72 75 6e  and makes it run
12d50 0a 20 20 61 20 6c 69 74 74 6c 65 20 73 6c 6f 77  .  a little slow
12d60 65 72 2e 20 20 4f 6e 6c 79 20 75 73 65 20 74 68  er.  Only use th
12d70 69 73 20 6f 70 74 69 6f 6e 20 69 66 20 53 51 4c  is option if SQL
12d80 69 74 65 20 69 73 20 62 65 69 6e 67 20 62 75 69  ite is being bui
12d90 6c 74 20 66 6f 72 20 61 6e 0a 20 20 65 6d 62 65  lt for an.  embe
12da0 64 64 65 64 20 74 61 72 67 65 74 20 74 68 61 74  dded target that
12db0 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72   does not suppor
12dc0 74 20 57 53 44 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  t WSD..}..COMPIL
12dd0 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
12de0 5f 4f 4d 49 54 5f 58 46 45 52 5f 4f 50 54 7d 20  _OMIT_XFER_OPT} 
12df0 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
12e00 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
12e10 72 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20  r optimizations 
12e20 74 68 61 74 20 68 65 6c 70 20 73 74 61 74 65 6d  that help statem
12e30 65 6e 74 73 0a 20 20 6f 66 20 74 68 65 20 66 6f  ents.  of the fo
12e40 72 6d 20 22 49 4e 53 45 52 54 20 49 4e 54 4f 20  rm "INSERT INTO 
12e50 2e 2e 2e 20 53 45 4c 45 43 54 20 2e 2e 2e 22 20  ... SELECT ..." 
12e60 72 75 6e 20 66 61 73 74 65 72 2e 0a 7d 0a 0a 43  run faster..}..C
12e70 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
12e80 51 4c 49 54 45 5f 55 4e 54 45 53 54 41 42 4c 45  QLITE_UNTESTABLE
12e90 7d 20 7b 0a 20 20 41 20 73 74 61 6e 64 61 72 64  } {.  A standard
12ea0 20 53 51 4c 69 74 65 20 62 75 69 6c 64 20 69 6e   SQLite build in
12eb0 63 6c 75 64 65 73 20 61 20 73 6d 61 6c 6c 20 61  cludes a small a
12ec0 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 61  mount of logic a
12ed0 73 73 6f 63 69 61 74 65 64 0a 20 20 77 69 74 68  ssociated.  with
12ee0 20 5b 73 71 6c 69 74 65 33 5f 74 65 73 74 5f 63   [sqlite3_test_c
12ef0 6f 6e 74 72 6f 6c 28 29 5d 20 74 6f 20 65 78 65  ontrol()] to exe
12f00 72 63 69 73 65 0a 20 20 70 61 72 74 73 20 6f 66  rcise.  parts of
12f10 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
12f20 20 74 68 61 74 20 61 72 65 20 6f 74 68 65 72 77   that are otherw
12f30 69 73 65 20 64 69 66 66 69 63 75 6c 74 20 74 6f  ise difficult to
12f40 20 76 61 6c 69 64 61 74 65 2e 0a 20 20 54 68 69   validate..  Thi
12f50 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
12f60 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 61 74  ption omits that
12f70 20 65 78 74 72 61 20 74 65 73 74 69 6e 67 20 6c   extra testing l
12f80 6f 67 69 63 2e 20 20 54 68 69 73 0a 20 20 63 6f  ogic.  This.  co
12f90 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
12fa0 6e 20 77 61 73 20 63 61 6c 6c 65 64 20 22 53 51  n was called "SQ
12fb0 4c 49 54 45 5f 4f 4d 49 54 5f 42 55 49 4c 54 49  LITE_OMIT_BUILTI
12fc0 4e 5f 54 45 53 54 22 20 70 72 69 6f 72 0a 20 20  N_TEST" prior.  
12fd0 74 6f 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  to SQLite versio
12fe0 6e 20 33 2e 31 36 2e 30 20 28 5b 64 61 74 65 6f  n 3.16.0 ([dateo
12ff0 66 3a 33 2e 31 36 2e 30 5d 29 2e 20 20 54 68 65  f:3.16.0]).  The
13000 20 6e 61 6d 65 20 77 61 73 20 63 68 61 6e 67 65   name was change
13010 64 0a 20 20 74 6f 20 62 65 74 74 65 72 20 64 65  d.  to better de
13020 73 63 72 69 62 65 20 74 68 65 20 69 6d 70 6c 69  scribe the impli
13030 63 61 74 69 6f 6e 73 20 6f 66 20 75 73 69 6e 67  cations of using
13040 20 69 74 2e 0a 20 20 3c 70 3e 0a 20 20 53 65 74   it..  <p>.  Set
13050 74 69 6e 67 20 74 68 69 73 20 63 6f 6d 70 69 6c  ting this compil
13060 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 70 72  e-time option pr
13070 65 76 65 6e 74 73 20 53 51 4c 69 74 65 20 66 72  events SQLite fr
13080 6f 6d 20 62 65 69 6e 67 20 66 75 6c 6c 79 0a 20  om being fully. 
13090 20 74 65 73 74 61 62 6c 65 2e 20 20 42 72 61 6e   testable.  Bran
130a0 63 68 20 74 65 73 74 20 63 6f 76 65 72 61 67 65  ch test coverage
130b0 20 64 72 6f 70 73 20 66 72 6f 6d 20 31 30 30 25   drops from 100%
130c0 20 64 6f 77 6e 20 74 6f 20 61 62 6f 75 74 20 39   down to about 9
130d0 35 25 2e 0a 20 20 3c 70 3e 0a 20 20 53 51 4c 69  5%..  <p>.  SQLi
130e0 74 65 20 64 65 76 65 6c 6f 70 65 72 73 20 66 6f  te developers fo
130f0 6c 6c 6f 77 20 74 68 65 20 4e 41 53 41 20 70 72  llow the NASA pr
13100 69 6e 63 69 70 6c 65 20 6f 66 0a 20 20 22 66 6c  inciple of.  "fl
13110 79 20 77 68 61 74 20 79 6f 75 20 74 65 73 74 20  y what you test 
13120 61 6e 64 20 74 65 73 74 20 77 68 61 74 20 79 6f  and test what yo
13130 75 20 66 6c 79 22 2e 20 20 54 68 69 73 20 70 72  u fly".  This pr
13140 69 6e 63 69 70 6c 65 20 69 73 20 76 69 6f 6c 61  inciple is viola
13150 74 65 64 0a 20 20 69 66 20 74 68 69 73 20 6f 70  ted.  if this op
13160 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 20  tion is enabled 
13170 66 6f 72 20 64 65 6c 69 76 65 72 79 20 62 75 74  for delivery but
13180 20 64 69 73 61 62 6c 65 64 20 66 6f 72 20 74 65   disabled for te
13190 73 74 69 6e 67 2e 0a 20 20 42 75 74 20 69 66 20  sting..  But if 
131a0 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 65  this option is e
131b0 6e 61 62 6c 65 64 20 64 75 72 69 6e 67 20 74 65  nabled during te
131c0 73 74 69 6e 67 2c 20 6e 6f 74 20 61 6c 6c 20 62  sting, not all b
131d0 72 61 6e 63 68 65 73 20 61 72 65 20 0a 20 20 72  ranches are .  r
131e0 65 61 63 68 61 62 6c 65 2e 20 20 54 68 65 72 65  eachable.  There
131f0 66 6f 72 65 2c 20 74 68 65 20 75 73 65 20 6f 66  fore, the use of
13200 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   this compile-ti
13210 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 64 69 73  me option is dis
13220 63 6f 75 72 61 67 65 64 2e 0a 7d 0a 0a 43 4f 4d  couraged..}..COM
13230 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
13240 49 54 45 5f 5a 45 52 4f 5f 4d 41 4c 4c 4f 43 7d  ITE_ZERO_MALLOC}
13250 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
13260 20 6f 6d 69 74 73 20 62 6f 74 68 20 74 68 65 20   omits both the 
13270 5b 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20  [default memory 
13280 61 6c 6c 6f 63 61 74 6f 72 5d 20 61 6e 64 20 74  allocator] and t
13290 68 65 0a 20 20 5b 64 65 62 75 67 67 69 6e 67 20  he.  [debugging 
132a0 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
132b0 5d 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64  ] from the build
132c0 20 61 6e 64 20 73 75 62 73 74 69 74 75 74 65 73   and substitutes
132d0 20 61 20 73 74 75 62 0a 20 20 6d 65 6d 6f 72 79   a stub.  memory
132e0 20 61 6c 6c 6f 63 61 74 6f 72 20 74 68 61 74 20   allocator that 
132f0 61 6c 77 61 79 73 20 66 61 69 6c 73 2e 20 20 53  always fails.  S
13300 51 4c 69 74 65 20 77 69 6c 6c 20 6e 6f 74 20 72  QLite will not r
13310 75 6e 20 77 69 74 68 20 74 68 69 73 0a 20 20 73  un with this.  s
13320 74 75 62 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  tub memory alloc
13330 61 74 6f 72 20 73 69 6e 63 65 20 69 74 20 77 69  ator since it wi
13340 6c 6c 20 62 65 20 75 6e 61 62 6c 65 20 74 6f 20  ll be unable to 
13350 61 6c 6c 6f 63 61 74 65 20 6d 65 6d 6f 72 79 2e  allocate memory.
13360 20 20 42 75 74 0a 20 20 74 68 69 73 20 73 74 75    But.  this stu
13370 62 20 63 61 6e 20 62 65 20 72 65 70 6c 61 63 65  b can be replace
13380 64 20 61 74 20 73 74 61 72 74 2d 74 69 6d 65 20  d at start-time 
13390 75 73 69 6e 67 0a 20 20 5b 73 71 6c 69 74 65 33  using.  [sqlite3
133a0 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45  _config]([SQLITE
133b0 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 2c  _CONFIG_MALLOC],
133c0 2e 2e 2e 29 20 6f 72 0a 20 20 5b 73 71 6c 69 74  ...) or.  [sqlit
133d0 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49  e3_config]([SQLI
133e0 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 2c  TE_CONFIG_HEAP],
133f0 2e 2e 2e 29 2e 0a 20 20 53 6f 20 74 68 65 20 6e  ...)..  So the n
13400 65 74 20 65 66 66 65 63 74 20 6f 66 20 74 68 69  et effect of thi
13410 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
13420 70 74 69 6f 6e 20 69 73 20 74 68 61 74 20 69 74  ption is that it
13430 20 61 6c 6c 6f 77 73 20 53 51 4c 69 74 65 0a 20   allows SQLite. 
13440 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c 65 64 20   to be compiled 
13450 61 6e 64 20 6c 69 6e 6b 65 64 20 61 67 61 69 6e  and linked again
13460 73 74 20 61 20 73 79 73 74 65 6d 20 6c 69 62 72  st a system libr
13470 61 72 79 20 74 68 61 74 20 64 6f 65 73 20 6e 6f  ary that does no
13480 74 20 73 75 70 70 6f 72 74 0a 20 20 6d 61 6c 6c  t support.  mall
13490 6f 63 28 29 2c 20 66 72 65 65 28 29 2c 20 61 6e  oc(), free(), an
134a0 64 2f 6f 72 20 72 65 61 6c 6c 6f 63 28 29 2e 0a  d/or realloc()..
134b0 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20 6e 61 6d  }..</tcl>.<a nam
134c0 65 3d 22 64 65 62 75 67 6f 70 74 69 6f 6e 73 22  e="debugoptions"
134d0 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 41 6e 61 6c 79  ></a>.<h1> Analy
134e0 73 69 73 20 61 6e 64 20 44 65 62 75 67 67 69 6e  sis and Debuggin
134f0 67 20 4f 70 74 69 6f 6e 73 3c 2f 68 31 3e 0a 3c  g Options</h1>.<
13500 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  tcl>..COMPILE_OP
13510 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 42  TION {SQLITE_DEB
13520 55 47 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 69  UG} {.  The SQLi
13530 74 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 63  te source code c
13540 6f 6e 74 61 69 6e 73 20 6c 69 74 65 72 61 6c 6c  ontains literall
13550 79 20 74 68 6f 75 73 61 6e 64 73 20 6f 66 20 61  y thousands of a
13560 73 73 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e  ssert() statemen
13570 74 73 0a 20 20 75 73 65 64 20 74 6f 20 76 65 72  ts.  used to ver
13580 69 66 79 20 69 6e 74 65 72 6e 61 6c 20 61 73 73  ify internal ass
13590 75 6d 70 74 69 6f 6e 73 20 61 6e 64 20 73 75 62  umptions and sub
135a0 72 6f 75 74 69 6e 65 20 70 72 65 63 6f 6e 64 69  routine precondi
135b0 74 69 6f 6e 73 20 61 6e 64 0a 20 20 70 6f 73 74  tions and.  post
135c0 63 6f 6e 64 69 74 69 6f 6e 73 2e 20 20 54 68 65  conditions.  The
135d0 73 65 20 61 73 73 65 72 74 28 29 20 73 74 61 74  se assert() stat
135e0 65 6d 65 6e 74 73 20 61 72 65 20 6e 6f 72 6d 61  ements are norma
135f0 6c 6c 79 20 74 75 72 6e 65 64 20 6f 66 66 0a 20  lly turned off. 
13600 20 28 74 68 65 79 20 67 65 6e 65 72 61 74 65 20   (they generate 
13610 6e 6f 20 63 6f 64 65 29 20 73 69 6e 63 65 20 74  no code) since t
13620 75 72 6e 69 6e 67 20 74 68 65 6d 20 6f 6e 20 6d  urning them on m
13630 61 6b 65 73 20 53 51 4c 69 74 65 20 72 75 6e 20  akes SQLite run 
13640 61 70 70 72 6f 78 69 6d 61 74 65 6c 79 0a 20 20  approximately.  
13650 74 68 72 65 65 20 74 69 6d 65 73 20 73 6c 6f 77  three times slow
13660 65 72 2e 20 20 42 75 74 20 66 6f 72 20 74 65 73  er.  But for tes
13670 74 69 6e 67 20 61 6e 64 20 61 6e 61 6c 79 73 69  ting and analysi
13680 73 2c 20 69 74 20 69 73 20 75 73 65 66 75 6c 20  s, it is useful 
13690 74 6f 20 74 75 72 6e 0a 20 20 74 68 65 20 61 73  to turn.  the as
136a0 73 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e 74  sert() statement
136b0 73 20 6f 6e 2e 20 20 54 68 65 20 53 51 4c 49 54  s on.  The SQLIT
136c0 45 5f 44 45 42 55 47 20 63 6f 6d 70 69 6c 65 2d  E_DEBUG compile-
136d0 74 69 6d 65 20 6f 70 74 69 6f 6e 20 64 6f 65 73  time option does
136e0 20 74 68 69 73 2e 0a 20 20 3c 70 3e 53 51 4c 49   this..  <p>SQLI
136f0 54 45 5f 44 45 42 55 47 20 61 6c 73 6f 20 65 6e  TE_DEBUG also en
13700 61 62 6c 65 73 20 73 6f 6d 65 20 6f 74 68 65 72  ables some other
13710 20 64 65 62 75 67 67 69 6e 67 20 66 65 61 74 75   debugging featu
13720 72 65 73 2c 20 73 75 63 68 20 61 73 0a 20 20 73  res, such as.  s
13730 70 65 63 69 61 6c 20 5b 50 52 41 47 4d 41 5d 20  pecial [PRAGMA] 
13740 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20  statements that 
13750 74 75 72 6e 20 6f 6e 20 74 72 61 63 69 6e 67 20  turn on tracing 
13760 61 6e 64 20 6c 69 73 74 69 6e 67 20 66 65 61 74  and listing feat
13770 75 72 65 73 0a 20 20 75 73 65 64 20 66 6f 72 20  ures.  used for 
13780 74 72 6f 75 62 6c 65 73 68 6f 6f 74 69 6e 67 20  troubleshooting 
13790 61 6e 64 20 61 6e 61 6c 79 73 69 73 20 6f 66 20  and analysis of 
137a0 74 68 65 20 5b 56 44 42 45 5d 20 61 6e 64 20 63  the [VDBE] and c
137b0 6f 64 65 20 67 65 6e 65 72 61 74 6f 72 2e 0a 7d  ode generator..}
137c0 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
137d0 20 7b 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42 55   {SQLITE_MEMDEBU
137e0 47 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  G} {.  The SQLIT
137f0 45 5f 4d 45 4d 44 45 42 55 47 20 6f 70 74 69 6f  E_MEMDEBUG optio
13800 6e 20 63 61 75 73 65 73 20 61 6e 20 69 6e 73 74  n causes an inst
13810 72 75 6d 65 6e 74 65 64 20 0a 20 20 5b 64 65 62  rumented .  [deb
13820 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c  ugging memory al
13830 6c 6f 63 61 74 6f 72 5d 0a 20 20 74 6f 20 62 65  locator].  to be
13840 20 75 73 65 64 20 61 73 20 74 68 65 20 64 65 66   used as the def
13850 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ault memory allo
13860 63 61 74 6f 72 20 77 69 74 68 69 6e 20 53 51 4c  cator within SQL
13870 69 74 65 2e 20 20 54 68 65 0a 20 20 69 6e 73 74  ite.  The.  inst
13880 72 75 6d 65 6e 74 65 64 20 6d 65 6d 6f 72 79 20  rumented memory 
13890 61 6c 6c 6f 63 61 74 6f 72 20 63 68 65 63 6b 73  allocator checks
138a0 20 66 6f 72 20 6d 69 73 75 73 65 20 6f 66 20 64   for misuse of d
138b0 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c 6c 6f 63  ynamically alloc
138c0 61 74 65 64 0a 20 20 6d 65 6d 6f 72 79 2e 20 20  ated.  memory.  
138d0 45 78 61 6d 70 6c 65 73 20 6f 66 20 6d 69 73 75  Examples of misu
138e0 73 65 20 69 6e 63 6c 75 64 65 20 75 73 69 6e 67  se include using
138f0 20 6d 65 6d 6f 72 79 20 61 66 74 65 72 20 69 74   memory after it
13900 20 69 73 20 66 72 65 65 64 2c 0a 20 20 77 72 69   is freed,.  wri
13910 74 69 6e 67 20 6f 66 66 20 74 68 65 20 65 6e 64  ting off the end
13920 73 20 6f 66 20 61 20 6d 65 6d 6f 72 79 20 61 6c  s of a memory al
13930 6c 6f 63 61 74 69 6f 6e 2c 20 66 72 65 65 69 6e  location, freein
13940 67 20 6d 65 6d 6f 72 79 20 6e 6f 74 20 70 72 65  g memory not pre
13950 76 69 6f 75 73 6c 79 0a 20 20 6f 62 74 61 69 6e  viously.  obtain
13960 65 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6d 6f  ed from the memo
13970 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 6f 72  ry allocator, or
13980 20 66 61 69 6c 69 6e 67 20 74 6f 20 69 6e 69 74   failing to init
13990 69 61 6c 69 7a 65 20 6e 65 77 6c 79 0a 20 20 61  ialize newly.  a
139a0 6c 6c 6f 63 61 74 65 64 20 6d 65 6d 6f 72 79 2e  llocated memory.
139b0 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20 6e 61  .}..</tcl>.<a na
139c0 6d 65 3d 22 77 69 6e 33 32 6f 70 74 69 6f 6e 73  me="win32options
139d0 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 57 69 6e 64  "></a>.<h1> Wind
139e0 6f 77 73 2d 53 70 65 63 69 66 69 63 20 4f 70 74  ows-Specific Opt
139f0 69 6f 6e 73 3c 2f 68 31 3e 0a 3c 74 63 6c 3e 0a  ions</h1>.<tcl>.
13a00 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
13a10 7b 53 51 4c 49 54 45 5f 57 49 4e 33 32 5f 48 45  {SQLITE_WIN32_HE
13a20 41 50 5f 43 52 45 41 54 45 7d 20 7b 0a 20 20 54  AP_CREATE} {.  T
13a30 68 69 73 20 6f 70 74 69 6f 6e 20 66 6f 72 63 65  his option force
13a40 73 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69  s the Win32 nati
13a50 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ve memory alloca
13a60 74 6f 72 2c 20 77 68 65 6e 20 65 6e 61 62 6c 65  tor, when enable
13a70 64 2c 20 74 6f 0a 20 20 63 72 65 61 74 65 20 61  d, to.  create a
13a80 20 70 72 69 76 61 74 65 20 68 65 61 70 20 74 6f   private heap to
13a90 20 68 6f 6c 64 20 61 6c 6c 20 6d 65 6d 6f 72 79   hold all memory
13aa0 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 2e 0a 7d 0a   allocations..}.
13ab0 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
13ac0 7b 53 51 4c 49 54 45 5f 57 49 4e 33 32 5f 4d 41  {SQLITE_WIN32_MA
13ad0 4c 4c 4f 43 5f 56 41 4c 49 44 41 54 45 7d 20 7b  LLOC_VALIDATE} {
13ae0 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 66  .  This option f
13af0 6f 72 63 65 73 20 74 68 65 20 57 69 6e 33 32 20  orces the Win32 
13b00 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c  native memory al
13b10 6c 6f 63 61 74 6f 72 2c 20 77 68 65 6e 20 65 6e  locator, when en
13b20 61 62 6c 65 64 2c 20 74 6f 0a 20 20 6d 61 6b 65  abled, to.  make
13b30 20 73 74 72 61 74 65 67 69 63 20 63 61 6c 6c 73   strategic calls
13b40 20 69 6e 74 6f 20 74 68 65 20 48 65 61 70 56 61   into the HeapVa
13b50 6c 69 64 61 74 65 28 29 20 66 75 6e 63 74 69 6f  lidate() functio
13b60 6e 20 69 66 20 61 73 73 65 72 74 28 29 20 69 73  n if assert() is
13b70 20 61 6c 73 6f 0a 20 20 65 6e 61 62 6c 65 64 2e   also.  enabled.
13b80 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20 6e 61  .}..</tcl>.<a na
13b90 6d 65 3d 22 6c 69 6e 6b 61 67 65 22 3e 3c 2f 61  me="linkage"></a
13ba0 3e 0a 3c 68 31 3e 43 6f 6d 70 69 6c 65 72 20 4c  >.<h1>Compiler L
13bb0 69 6e 6b 61 67 65 20 43 6f 6e 74 72 6f 6c 3c 2f  inkage Control</
13bc0 68 31 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c  h1>..<p>The foll
13bd0 6f 77 69 6e 67 20 6d 61 63 72 6f 73 20 73 70 65  owing macros spe
13be0 63 69 66 79 0a 69 6e 74 65 72 66 61 63 65 20 6c  cify.interface l
13bf0 69 6e 6b 61 67 65 20 66 6f 72 20 63 65 72 74 61  inkage for certa
13c00 69 6e 20 6b 69 6e 64 73 20 6f 66 20 53 51 4c 69  in kinds of SQLi
13c10 74 65 20 62 75 69 6c 64 73 2e 20 20 54 68 65 20  te builds.  The 
13c20 4d 61 6b 65 66 69 6c 65 73 20 77 69 6c 6c 20 6e  Makefiles will n
13c30 6f 72 6d 61 6c 6c 79 0a 68 61 6e 64 6c 65 20 73  ormally.handle s
13c40 65 74 74 69 6e 67 20 74 68 65 73 65 20 6d 61 63  etting these mac
13c50 72 6f 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ros automaticall
13c60 79 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 20  y.  Application 
13c70 64 65 76 65 6c 6f 70 65 72 73 20 73 68 6f 75 6c  developers shoul
13c80 64 0a 6e 6f 74 20 6e 65 65 64 20 74 6f 20 77 6f  d.not need to wo
13c90 72 72 79 20 77 69 74 68 20 74 68 65 73 65 20 6d  rry with these m
13ca0 61 63 72 6f 73 2e 20 20 54 68 65 20 66 6f 6c 6c  acros.  The foll
13cb0 6f 77 69 6e 67 20 64 6f 63 75 6d 65 6e 74 61 74  owing documentat
13cc0 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 73 65 20  ion about these 
13cd0 0a 6d 61 63 72 6f 73 20 69 73 20 69 6e 63 6c 75  .macros is inclu
13ce0 64 65 64 20 63 6f 6d 70 6c 65 74 65 6e 65 73 73  ded completeness
13cf0 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d  .</p>..<tcl>.COM
13d00 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
13d10 49 54 45 5f 41 50 49 7d 20 7b 0a 20 20 54 68 69  ITE_API} {.  Thi
13d20 73 20 6d 61 63 72 6f 20 69 64 65 6e 74 69 66 69  s macro identifi
13d30 65 73 20 61 20 65 78 74 65 72 6e 61 6c 6c 79 20  es a externally 
13d40 76 69 73 69 62 6c 65 20 69 6e 74 65 72 66 61 63  visible interfac
13d50 65 20 66 6f 72 20 53 51 4c 69 74 65 2e 0a 20 20  e for SQLite..  
13d60 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20 73 6f  This macro is so
13d70 6d 65 74 69 6d 65 73 20 73 65 74 20 74 6f 20 22  metimes set to "
13d80 65 78 74 65 72 6e 22 2e 20 20 42 75 74 20 74 68  extern".  But th
13d90 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 69 73 0a  e definition is.
13da0 20 20 63 6f 6d 70 69 6c 65 72 2d 73 70 65 63 69    compiler-speci
13db0 66 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  fic..}..COMPILE_
13dc0 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 41  OPTION {SQLITE_A
13dd0 50 49 43 41 4c 4c 7d 20 7b 0a 20 20 54 68 69 73  PICALL} {.  This
13de0 20 6d 61 63 72 6f 20 69 64 65 6e 74 69 66 69 65   macro identifie
13df0 73 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 63 6f  s the calling co
13e00 6e 76 65 6e 74 69 6f 6e 20 75 73 65 64 20 62 79  nvention used by
13e10 20 70 75 62 6c 69 63 20 69 6e 74 65 72 66 61 63   public interfac
13e20 65 0a 20 20 72 6f 75 74 69 6e 65 73 20 69 6e 20  e.  routines in 
13e30 53 51 4c 69 74 65 2e 20 20 54 68 69 73 20 6d 61  SQLite.  This ma
13e40 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20  cro is normally 
13e50 64 65 66 69 6e 65 64 20 74 6f 20 62 65 20 6e 6f  defined to be no
13e60 74 68 69 6e 67 2c 0a 20 20 74 68 6f 75 67 68 20  thing,.  though 
13e70 6f 6e 20 57 69 6e 64 6f 77 73 20 62 75 69 6c 64  on Windows build
13e80 73 20 69 74 20 63 61 6e 20 73 6f 6d 65 74 69 6d  s it can sometim
13e90 65 73 20 62 65 20 73 65 74 20 74 6f 20 22 5f 5f  es be set to "__
13ea0 63 64 65 63 6c 22 20 6f 72 20 22 5f 5f 73 74 64  cdecl" or "__std
13eb0 63 61 6c 6c 22 2e 0a 20 20 54 68 65 20 22 5f 5f  call"..  The "__
13ec0 63 64 65 63 6c 22 20 73 65 74 74 69 6e 67 20 69  cdecl" setting i
13ed0 73 20 74 68 65 20 64 65 66 61 75 6c 74 2c 20 62  s the default, b
13ee0 75 74 20 22 5f 5f 73 74 64 63 61 6c 6c 22 20 69  ut "__stdcall" i
13ef0 73 20 75 73 65 64 20 77 68 65 6e 20 53 51 4c 69  s used when SQLi
13f00 74 65 0a 20 20 69 73 20 69 6e 74 65 6e 64 65 64  te.  is intended
13f10 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c 65 64 20   to be compiled 
13f20 61 73 20 61 20 57 69 6e 64 6f 77 73 20 73 79 73  as a Windows sys
13f30 74 65 6d 20 6c 69 62 72 61 72 79 2e 0a 20 20 3c  tem library..  <
13f40 70 3e 0a 20 20 41 20 73 69 6e 67 6c 65 20 66 75  p>.  A single fu
13f50 6e 63 74 69 6f 6e 20 64 65 63 6c 61 72 61 74 69  nction declarati
13f60 6f 6e 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69  on should contai
13f70 6e 20 6e 6f 20 6d 6f 72 65 20 74 68 61 6e 20 6f  n no more than o
13f80 6e 65 20 6f 66 0a 20 20 74 68 65 20 66 6f 6c 6c  ne of.  the foll
13f90 6f 77 69 6e 67 3a 20 20 5b 53 51 4c 49 54 45 5f  owing:  [SQLITE_
13fa0 41 50 49 43 41 4c 4c 5d 2c 20 5b 53 51 4c 49 54  APICALL], [SQLIT
13fb0 45 5f 43 41 4c 4c 42 41 43 4b 5d 2c 20 5b 53 51  E_CALLBACK], [SQ
13fc0 4c 49 54 45 5f 43 44 45 43 4c 5d 2c 0a 20 20 6f  LITE_CDECL],.  o
13fd0 72 20 5b 53 51 4c 49 54 45 5f 53 59 53 43 41 4c  r [SQLITE_SYSCAL
13fe0 4c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  L]..}..COMPILE_O
13ff0 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 43 41  PTION {SQLITE_CA
14000 4c 4c 42 41 43 4b 7d 20 7b 0a 20 20 54 68 69 73  LLBACK} {.  This
14010 20 6d 61 63 72 6f 20 73 70 65 63 69 66 69 65 73   macro specifies
14020 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 63 6f 6e   the calling con
14030 76 65 6e 74 69 6f 6e 20 75 73 65 64 20 62 79 20  vention used by 
14040 63 61 6c 6c 62 61 63 6b 20 70 6f 69 6e 74 65 72  callback pointer
14050 73 0a 20 20 69 6e 20 53 51 4c 69 74 65 2e 20 20  s.  in SQLite.  
14060 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20 6e 6f  This macro is no
14070 72 6d 61 6c 6c 79 20 64 65 66 69 6e 65 64 20 74  rmally defined t
14080 6f 20 62 65 20 6e 6f 74 68 69 6e 67 2c 20 74 68  o be nothing, th
14090 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f 77 73 0a  ough on Windows.
140a0 20 20 62 75 69 6c 64 73 20 69 74 20 63 61 6e 20    builds it can 
140b0 73 6f 6d 65 74 69 6d 65 73 20 62 65 20 73 65 74  sometimes be set
140c0 20 74 6f 20 22 5f 5f 63 64 65 63 6c 22 20 6f 72   to "__cdecl" or
140d0 20 22 5f 5f 73 74 64 63 61 6c 6c 22 2e 20 20 54   "__stdcall".  T
140e0 68 65 0a 20 20 22 5f 5f 63 64 65 63 6c 22 20 73  he.  "__cdecl" s
140f0 65 74 74 69 6e 67 20 69 73 20 74 68 65 20 64 65  etting is the de
14100 66 61 75 6c 74 2c 20 62 75 74 20 22 5f 5f 73 74  fault, but "__st
14110 64 63 61 6c 6c 22 20 69 73 20 75 73 65 64 20 77  dcall" is used w
14120 68 65 6e 20 53 51 4c 69 74 65 0a 20 20 69 73 20  hen SQLite.  is 
14130 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20 63  intended to be c
14140 6f 6d 70 69 6c 65 64 20 61 73 20 61 20 57 69 6e  ompiled as a Win
14150 64 6f 77 73 20 73 79 73 74 65 6d 20 6c 69 62 72  dows system libr
14160 61 72 79 2e 0a 20 20 3c 70 3e 0a 20 20 41 20 73  ary..  <p>.  A s
14170 69 6e 67 6c 65 20 66 75 6e 63 74 69 6f 6e 20 64  ingle function d
14180 65 63 6c 61 72 61 74 69 6f 6e 20 73 68 6f 75 6c  eclaration shoul
14190 64 20 63 6f 6e 74 61 69 6e 20 6e 6f 20 6d 6f 72  d contain no mor
141a0 65 20 74 68 61 6e 20 6f 6e 65 20 6f 66 0a 20 20  e than one of.  
141b0 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a 20 20  the following:  
141c0 5b 53 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c 5d  [SQLITE_APICALL]
141d0 2c 20 5b 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41  , [SQLITE_CALLBA
141e0 43 4b 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 44 45  CK], [SQLITE_CDE
141f0 43 4c 5d 2c 0a 20 20 6f 72 20 5b 53 51 4c 49 54  CL],.  or [SQLIT
14200 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a 7d 0a 0a 43  E_SYSCALL]..}..C
14210 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
14220 51 4c 49 54 45 5f 43 44 45 43 4c 7d 20 7b 0a 20  QLITE_CDECL} {. 
14230 20 54 68 69 73 20 6d 61 63 72 6f 20 73 70 65 63   This macro spec
14240 69 66 69 65 73 20 74 68 65 20 63 61 6c 6c 69 6e  ifies the callin
14250 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 75 73 65  g convention use
14260 64 20 62 79 20 76 61 72 61 72 67 73 20 69 6e 74  d by varargs int
14270 65 72 66 61 63 65 0a 20 20 72 6f 75 74 69 6e 65  erface.  routine
14280 73 20 69 6e 20 53 51 4c 69 74 65 2e 20 20 54 68  s in SQLite.  Th
14290 69 73 20 6d 61 63 72 6f 20 69 73 20 6e 6f 72 6d  is macro is norm
142a0 61 6c 6c 79 20 64 65 66 69 6e 65 64 20 74 6f 20  ally defined to 
142b0 62 65 20 6e 6f 74 68 69 6e 67 2c 0a 20 20 74 68  be nothing,.  th
142c0 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f 77 73 20  ough on Windows 
142d0 62 75 69 6c 64 73 20 69 74 20 63 61 6e 20 73 6f  builds it can so
142e0 6d 65 74 69 6d 65 73 20 62 65 20 73 65 74 20 74  metimes be set t
142f0 6f 20 22 5f 5f 63 64 65 63 6c 22 2e 20 20 54 68  o "__cdecl".  Th
14300 69 73 0a 20 20 6d 61 63 72 6f 20 69 73 20 75 73  is.  macro is us
14310 65 64 20 6f 6e 20 76 61 72 61 72 67 73 20 72 6f  ed on varargs ro
14320 75 74 69 6e 65 73 20 61 6e 64 20 73 6f 20 63 61  utines and so ca
14330 6e 6e 6f 74 20 62 65 20 73 65 74 20 74 6f 20 22  nnot be set to "
14340 5f 5f 73 74 64 63 61 6c 6c 22 0a 20 20 73 69 6e  __stdcall".  sin
14350 63 65 20 74 68 65 20 5f 5f 73 74 64 63 61 6c 6c  ce the __stdcall
14360 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74   calling convent
14370 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 73 75 70  ion does not sup
14380 70 6f 72 74 20 76 61 72 61 72 67 73 20 66 75 6e  port varargs fun
14390 63 74 69 6f 6e 73 2e 0a 20 20 3c 70 3e 0a 20 20  ctions..  <p>.  
143a0 41 20 73 69 6e 67 6c 65 20 66 75 6e 63 74 69 6f  A single functio
143b0 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 73 68  n declaration sh
143c0 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 6e 6f 20  ould contain no 
143d0 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 6f 66  more than one of
143e0 0a 20 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  .  the following
143f0 3a 20 20 5b 53 51 4c 49 54 45 5f 41 50 49 43 41  :  [SQLITE_APICA
14400 4c 4c 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 41 4c  LL], [SQLITE_CAL
14410 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49 54 45 5f  LBACK], [SQLITE_
14420 43 44 45 43 4c 5d 2c 0a 20 20 6f 72 20 5b 53 51  CDECL],.  or [SQ
14430 4c 49 54 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a 7d  LITE_SYSCALL]..}
14440 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
14450 20 7b 53 51 4c 49 54 45 5f 53 59 53 43 41 4c 4c   {SQLITE_SYSCALL
14460 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
14470 20 69 64 65 6e 74 69 66 69 65 73 20 74 68 65 20   identifies the 
14480 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69  calling conventi
14490 6f 6e 20 75 73 65 64 20 62 79 20 6f 70 65 72 61  on used by opera
144a0 74 69 6e 67 20 73 79 73 74 65 6d 0a 20 20 69 6e  ting system.  in
144b0 74 65 72 66 61 63 65 73 20 66 6f 72 20 74 61 72  terfaces for tar
144c0 67 65 74 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  get the platform
144d0 20 66 6f 72 20 61 6e 20 53 51 4c 69 74 65 20 62   for an SQLite b
144e0 75 69 6c 64 2e 0a 20 20 54 68 69 73 20 6d 61 63  uild..  This mac
144f0 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 64  ro is normally d
14500 65 66 69 6e 65 64 20 74 6f 20 62 65 20 6e 6f 74  efined to be not
14510 68 69 6e 67 2c 20 74 68 6f 75 67 68 20 6f 6e 20  hing, though on 
14520 57 69 6e 64 6f 77 73 0a 20 20 62 75 69 6c 64 73  Windows.  builds
14530 20 69 74 20 63 61 6e 20 73 6f 6d 65 74 69 6d 65   it can sometime
14540 73 20 62 65 20 73 65 74 20 74 6f 20 22 5f 5f 73  s be set to "__s
14550 74 64 63 61 6c 6c 22 2e 0a 20 20 3c 70 3e 0a 20  tdcall"..  <p>. 
14560 20 41 20 73 69 6e 67 6c 65 20 66 75 6e 63 74 69   A single functi
14570 6f 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 73  on declaration s
14580 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 6e 6f  hould contain no
14590 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 6f   more than one o
145a0 66 0a 20 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  f.  the followin
145b0 67 3a 20 20 5b 53 51 4c 49 54 45 5f 41 50 49 43  g:  [SQLITE_APIC
145c0 41 4c 4c 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 41  ALL], [SQLITE_CA
145d0 4c 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49 54 45  LLBACK], [SQLITE
145e0 5f 43 44 45 43 4c 5d 2c 0a 20 20 6f 72 20 5b 53  _CDECL],.  or [S
145f0 51 4c 49 54 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a  QLITE_SYSCALL]..
14600 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
14610 4e 20 7b 53 51 4c 49 54 45 5f 54 43 4c 41 50 49  N {SQLITE_TCLAPI
14620 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
14630 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 63   specifies the c
14640 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f  alling conventio
14650 6e 20 75 73 65 64 20 62 79 20 74 68 65 20 0a 20  n used by the . 
14660 20 5b 68 74 74 70 3a 2f 2f 77 77 77 2e 74 63 6c   [http://www.tcl
14670 2e 74 6b 20 7c 20 54 43 4c 5d 20 6c 69 62 72 61  .tk | TCL] libra
14680 72 79 20 69 6e 74 65 72 66 61 63 65 20 72 6f 75  ry interface rou
14690 74 69 6e 65 73 2e 0a 20 20 54 68 69 73 20 6d 61  tines..  This ma
146a0 63 72 6f 20 69 73 20 6e 6f 74 20 75 73 65 64 20  cro is not used 
146b0 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
146c0 72 65 2c 20 62 75 74 20 6f 6e 6c 79 20 62 79 20  re, but only by 
146d0 74 68 65 20 5b 54 43 4c 20 49 6e 74 65 72 66 61  the [TCL Interfa
146e0 63 65 5d 0a 20 20 61 6e 64 20 5b 54 43 4c 20 74  ce].  and [TCL t
146f0 65 73 74 20 73 75 69 74 65 5d 2e 0a 20 20 54 68  est suite]..  Th
14700 69 73 20 6d 61 63 72 6f 20 69 73 20 6e 6f 72 6d  is macro is norm
14710 61 6c 6c 79 20 64 65 66 69 6e 65 64 20 74 6f 20  ally defined to 
14720 62 65 20 6e 6f 74 68 69 6e 67 2c 0a 20 20 74 68  be nothing,.  th
14730 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f 77 73 20  ough on Windows 
14740 62 75 69 6c 64 73 20 69 74 20 63 61 6e 20 73 6f  builds it can so
14750 6d 65 74 69 6d 65 73 20 62 65 20 73 65 74 20 74  metimes be set t
14760 6f 20 22 5f 5f 63 64 65 63 6c 22 2e 20 20 54 68  o "__cdecl".  Th
14770 69 73 0a 20 20 6d 61 63 72 6f 20 69 73 20 75 73  is.  macro is us
14780 65 64 20 6f 6e 20 54 43 4c 20 6c 69 62 72 61 72  ed on TCL librar
14790 79 20 69 6e 74 65 72 66 61 63 65 20 72 6f 75 74  y interface rout
147a0 69 6e 65 73 20 77 68 69 63 68 20 61 72 65 20 61  ines which are a
147b0 6c 77 61 79 73 20 63 6f 6d 70 69 6c 65 64 0a 20  lways compiled. 
147c0 20 61 73 20 5f 5f 63 64 65 63 6c 2c 20 65 76 65   as __cdecl, eve
147d0 6e 20 6f 6e 20 70 6c 61 74 66 6f 72 6d 73 20 74  n on platforms t
147e0 68 61 74 20 70 72 65 66 65 72 20 74 6f 20 75 73  hat prefer to us
147f0 65 20 5f 5f 73 74 64 63 61 6c 6c 2c 20 73 6f 20  e __stdcall, so 
14800 74 68 69 73 0a 20 20 6d 61 63 72 6f 20 73 68 6f  this.  macro sho
14810 75 6c 64 20 6e 6f 74 20 62 65 20 73 65 74 20 74  uld not be set t
14820 6f 20 5f 5f 73 74 64 63 61 6c 6c 20 75 6e 6c 65  o __stdcall unle
14830 73 73 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20  ss the platform 
14840 61 73 20 61 20 63 75 73 74 6f 6d 0a 20 20 54 43  as a custom.  TC
14850 4c 20 6c 69 62 72 61 72 79 20 62 75 69 6c 64 20  L library build 
14860 74 68 61 74 20 73 75 70 70 6f 72 74 73 20 5f 5f  that supports __
14870 73 74 64 63 61 6c 6c 2e 0a 20 20 3c 70 3e 0a 20  stdcall..  <p>. 
14880 20 54 68 69 73 20 6d 61 63 72 6f 20 6d 61 79 20   This macro may 
14890 6e 6f 74 20 62 65 20 75 73 65 64 20 69 6e 20 63  not be used in c
148a0 6f 6d 62 69 6e 61 74 69 6f 6e 20 77 69 74 68 20  ombination with 
148b0 61 6e 79 20 6f 66 20 5b 53 51 4c 49 54 45 5f 41  any of [SQLITE_A
148c0 50 49 43 41 4c 4c 5d 2c 0a 20 20 5b 53 51 4c 49  PICALL],.  [SQLI
148d0 54 45 5f 43 41 4c 4c 42 41 43 4b 5d 2c 20 5b 53  TE_CALLBACK], [S
148e0 51 4c 49 54 45 5f 43 44 45 43 4c 5d 2c 20 6f 72  QLITE_CDECL], or
148f0 20 5b 53 51 4c 49 54 45 5f 53 59 53 43 41 4c 4c   [SQLITE_SYSCALL
14900 5d 2e 0a 7d 0a 0a 0a 3c 2f 74 63 6c 3e 0a        ]..}...</tcl>.