Documentation Source Text

Hex Artifact Content
Login

Artifact 4ffca4ccfb90facad08bd58012e1d112c66dd6de46986e7b7fd3a8ab04208faf:


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 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 57 68 65 6e  ..</ol>..<p>When
13c0: 20 61 6c 6c 20 6f 66 20 74 68 65 20 72 65 63 6f   all of the reco
13d0: 6d 6d 65 6e 64 65 64 20 63 6f 6d 70 69 6c 65 2d  mmended compile-
13e0: 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 62 6f  time options abo
13f0: 76 65 20 61 72 65 20 75 73 65 64 2c 0a 74 68 65  ve are used,.the
1400: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
1410: 77 69 6c 6c 20 62 65 20 61 70 70 72 6f 78 69 6d  will be approxim
1420: 61 74 65 6c 79 20 33 25 20 73 6d 61 6c 6c 65 72  ately 3% smaller
1430: 20 61 6e 64 20 75 73 65 20 61 62 6f 75 74 20 35   and use about 5
1440: 25 20 66 65 77 65 72 0a 43 50 55 20 63 79 63 6c  % fewer.CPU cycl
1450: 65 73 2e 20 20 53 6f 20 74 68 65 73 65 20 6f 70  es.  So these op
1460: 74 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 6d 61 6b  tions do not mak
1470: 65 20 61 20 68 75 67 65 20 64 69 66 66 65 72 65  e a huge differe
1480: 6e 63 65 2e 20 20 42 75 74 20 69 6e 20 0a 73 6f  nce.  But in .so
1490: 6d 65 20 64 65 73 69 67 6e 20 73 69 74 75 61 74  me design situat
14a0: 69 6f 6e 73 2c 20 65 76 65 72 79 20 6c 69 74 74  ions, every litt
14b0: 6c 65 20 62 69 74 20 68 65 6c 70 73 2e 0a 0a 3c  le bit helps...<
14c0: 61 20 6e 61 6d 65 3d 22 6f 73 63 6f 6e 66 69 67  a name="osconfig
14d0: 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 50 6c 61 74  "></a>.<h1> Plat
14e0: 66 6f 72 6d 20 43 6f 6e 66 69 67 75 72 61 74 69  form Configurati
14f0: 6f 6e 3c 2f 68 31 3e 0a 0a 3c 74 63 6c 3e 0a 43  on</h1>..<tcl>.C
1500: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 5f  OMPILE_OPTION {_
1510: 48 41 56 45 5f 53 51 4c 49 54 45 5f 43 4f 4e 46  HAVE_SQLITE_CONF
1520: 49 47 5f 48 7d 20 7b 0a 20 20 49 66 20 74 68 65  IG_H} {.  If the
1530: 20 5f 48 41 56 45 5f 53 51 4c 49 54 45 5f 43 4f   _HAVE_SQLITE_CO
1540: 4e 46 49 47 5f 48 20 6d 61 63 72 6f 20 69 73 20  NFIG_H macro is 
1550: 64 65 66 69 6e 65 64 0a 20 20 74 68 65 6e 20 74  defined.  then t
1560: 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65  he SQLite source
1570: 20 63 6f 64 65 20 77 69 6c 6c 20 61 74 74 65 6d   code will attem
1580: 70 74 20 74 6f 20 23 69 6e 63 6c 75 64 65 20 61  pt to #include a
1590: 20 66 69 6c 65 20 6e 61 6d 65 64 20 22 63 6f 6e   file named "con
15a0: 66 69 67 2e 68 22 2e 0a 20 20 54 68 65 20 22 63  fig.h"..  The "c
15b0: 6f 6e 66 69 67 2e 68 22 20 66 69 6c 65 20 75 73  onfig.h" file us
15c0: 75 61 6c 6c 79 20 63 6f 6e 74 61 69 6e 73 20 6f  ually contains o
15d0: 74 68 65 72 20 63 6f 6e 66 69 67 75 72 61 74 69  ther configurati
15e0: 6f 6e 20 6f 70 74 69 6f 6e 73 2c 20 65 73 70 65  on options, espe
15f0: 63 69 61 6c 6c 79 0a 20 20 22 48 41 56 45 5f 3c  cially.  "HAVE_<
1600: 69 3e 49 4e 54 45 52 46 41 43 45 3c 2f 69 3e 22  i>INTERFACE</i>"
1610: 20 74 79 70 65 20 6f 70 74 69 6f 6e 73 20 67 65   type options ge
1620: 6e 65 72 61 74 65 64 20 62 79 20 61 75 74 6f 63  nerated by autoc
1630: 6f 6e 66 20 73 63 72 69 70 74 73 2e 0a 7d 0a 0a  onf scripts..}..
1640: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
1650: 48 41 56 45 5f 46 44 41 54 41 53 59 4e 43 7d 20  HAVE_FDATASYNC} 
1660: 7b 0a 20 20 49 66 20 74 68 65 20 48 41 56 45 5f  {.  If the HAVE_
1670: 46 44 41 54 41 53 59 4e 43 20 63 6f 6d 70 69 6c  FDATASYNC compil
1680: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73  e-time option is
1690: 20 74 72 75 65 2c 20 74 68 65 6e 20 74 68 65 20   true, then the 
16a0: 64 65 66 61 75 6c 74 20 5b 56 46 53 5d 0a 20 20  default [VFS].  
16b0: 66 6f 72 20 75 6e 69 78 20 73 79 73 74 65 6d 73  for unix systems
16c0: 20 77 69 6c 6c 20 61 74 74 65 6d 70 74 20 74 6f   will attempt to
16d0: 20 75 73 65 20 66 64 61 74 61 73 79 6e 63 28 29   use fdatasync()
16e0: 20 69 6e 73 74 65 61 64 20 6f 66 20 66 73 79 6e   instead of fsyn
16f0: 63 28 29 20 77 68 65 72 65 0a 20 20 61 70 70 72  c() where.  appr
1700: 6f 70 72 69 61 74 65 2e 20 20 49 66 20 74 68 69  opriate.  If thi
1710: 73 20 66 6c 61 67 20 69 73 20 6d 69 73 73 69 6e  s flag is missin
1720: 67 20 6f 72 20 66 61 6c 73 65 2c 20 74 68 65 6e  g or false, then
1730: 20 66 73 79 6e 63 28 29 20 69 73 20 61 6c 77 61   fsync() is alwa
1740: 79 73 20 75 73 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  ys used..}..COMP
1750: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56 45  ILE_OPTION {HAVE
1760: 5f 47 4d 54 49 4d 45 5f 52 7d 20 7b 0a 20 20 49  _GMTIME_R} {.  I
1770: 66 20 74 68 65 20 48 41 56 45 5f 47 4d 54 49 4d  f the HAVE_GMTIM
1780: 45 5f 52 20 6f 70 74 69 6f 6e 20 69 73 20 74 72  E_R option is tr
1790: 75 65 20 61 6e 64 20 69 66 20 5b 53 51 4c 49 54  ue and if [SQLIT
17a0: 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f  E_OMIT_DATETIME_
17b0: 46 55 4e 43 53 5d 20 69 73 20 74 72 75 65 2c 0a  FUNCS] is true,.
17c0: 20 20 74 68 65 6e 20 74 68 65 20 43 55 52 52 45    then the CURRE
17d0: 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e 54  NT_TIME, CURRENT
17e0: 5f 44 41 54 45 2c 20 61 6e 64 20 43 55 52 52 45  _DATE, and CURRE
17f0: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 6b 65 79  NT_TIMESTAMP key
1800: 77 6f 72 64 73 20 77 69 6c 6c 20 75 73 65 0a 20  words will use. 
1810: 20 74 68 65 20 74 68 72 65 61 64 73 61 66 65 20   the threadsafe 
1820: 22 67 6d 74 69 6d 65 5f 72 28 29 22 20 69 6e 74  "gmtime_r()" int
1830: 65 72 66 61 63 65 20 72 61 74 68 65 72 20 74 68  erface rather th
1840: 61 6e 20 22 67 6d 74 69 6d 65 28 29 22 2e 20 20  an "gmtime()".  
1850: 49 6e 20 74 68 65 20 75 73 75 61 6c 20 63 61 73  In the usual cas
1860: 65 0a 20 20 77 68 65 72 65 20 5b 53 51 4c 49 54  e.  where [SQLIT
1870: 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f  E_OMIT_DATETIME_
1880: 46 55 4e 43 53 5d 20 69 73 20 6e 6f 74 20 64 65  FUNCS] is not de
1890: 66 69 6e 65 64 20 6f 72 20 69 73 20 66 61 6c 73  fined or is fals
18a0: 65 2c 20 74 68 65 6e 20 74 68 65 0a 20 20 62 75  e, then the.  bu
18b0: 69 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e 64  ilt-in [date and
18c0: 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d   time functions]
18d0: 20 61 72 65 20 75 73 65 64 20 74 6f 20 69 6d 70   are used to imp
18e0: 6c 65 6d 65 6e 74 20 74 68 65 20 43 55 52 52 45  lement the CURRE
18f0: 4e 54 5f 54 49 4d 45 2c 0a 20 20 43 55 52 52 45  NT_TIME,.  CURRE
1900: 4e 54 5f 44 41 54 45 2c 20 61 6e 64 20 43 55 52  NT_DATE, and CUR
1910: 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 6b  RENT_TIMESTAMP k
1920: 65 79 77 6f 72 64 73 20 61 6e 64 20 6e 65 69 74  eywords and neit
1930: 68 65 72 20 67 6d 74 69 6d 65 5f 72 28 29 20 6e  her gmtime_r() n
1940: 6f 72 0a 20 20 67 6d 74 69 6d 65 28 29 20 69 73  or.  gmtime() is
1950: 20 65 76 65 72 20 63 61 6c 6c 65 64 2e 0a 7d 0a   ever called..}.
1960: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
1970: 7b 48 41 56 45 5f 49 53 4e 41 4e 7d 20 7b 0a 20  {HAVE_ISNAN} {. 
1980: 20 49 66 20 74 68 65 20 48 41 56 45 5f 49 53 4e   If the HAVE_ISN
1990: 41 4e 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75  AN option is tru
19a0: 65 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 69  e, then SQLite i
19b0: 6e 76 6f 6b 65 73 20 74 68 65 20 73 79 73 74 65  nvokes the syste
19c0: 6d 20 6c 69 62 72 61 72 79 20 69 73 6e 61 6e 28  m library isnan(
19d0: 29 0a 20 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20  ).  function to 
19e0: 64 65 74 65 72 6d 69 6e 65 20 69 66 20 61 20 64  determine if a d
19f0: 6f 75 62 6c 65 2d 70 72 65 63 69 73 69 6f 6e 20  ouble-precision 
1a00: 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76  floating point v
1a10: 61 6c 75 65 20 69 73 20 61 20 4e 61 4e 2e 0a 20  alue is a NaN.. 
1a20: 20 49 66 20 48 41 56 45 5f 49 53 4e 41 4e 20 69   If HAVE_ISNAN i
1a30: 73 20 75 6e 64 65 66 69 6e 65 64 20 6f 72 20 66  s undefined or f
1a40: 61 6c 73 65 2c 20 74 68 65 6e 20 53 51 4c 69 74  alse, then SQLit
1a50: 65 20 73 75 62 73 74 69 74 75 74 65 73 20 69 74  e substitutes it
1a60: 73 20 6f 77 6e 20 68 6f 6d 65 2d 67 72 6f 77 6e  s own home-grown
1a70: 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  .  implementatio
1a80: 6e 20 6f 66 20 69 73 6e 61 6e 28 29 2e 0a 7d 0a  n of isnan()..}.
1a90: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
1aa0: 7b 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f  {HAVE_LOCALTIME_
1ab0: 52 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48 41  R} {.  If the HA
1ac0: 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f 52 20 6f  VE_LOCALTIME_R o
1ad0: 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20 74  ption is true, t
1ae0: 68 65 6e 20 53 51 4c 69 74 65 20 75 73 65 73 20  hen SQLite uses 
1af0: 74 68 65 20 74 68 72 65 61 64 73 61 66 65 0a 20  the threadsafe. 
1b00: 20 6c 6f 63 61 6c 74 69 6d 65 5f 72 28 29 20 6c   localtime_r() l
1b10: 69 62 72 61 72 79 20 72 6f 75 74 69 6e 65 20 69  ibrary routine i
1b20: 6e 73 74 65 61 64 20 6f 66 20 6c 6f 63 61 6c 74  nstead of localt
1b30: 69 6d 65 28 29 0a 20 20 74 6f 20 68 65 6c 70 20  ime().  to help 
1b40: 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 5b 6c  implement the [l
1b50: 6f 63 61 6c 74 69 6d 65 20 6d 6f 64 69 66 69 65  ocaltime modifie
1b60: 72 5d 0a 20 20 74 6f 20 74 68 65 20 62 75 69 6c  r].  to the buil
1b70: 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e 64 20 74  t-in [date and t
1b80: 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d 2e 0a  ime functions]..
1b90: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
1ba0: 4e 20 7b 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d  N {HAVE_LOCALTIM
1bb0: 45 5f 53 7d 20 7b 0a 20 20 49 66 20 74 68 65 20  E_S} {.  If the 
1bc0: 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f 53  HAVE_LOCALTIME_S
1bd0: 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c   option is true,
1be0: 20 74 68 65 6e 20 53 51 4c 69 74 65 20 75 73 65   then SQLite use
1bf0: 73 20 74 68 65 20 74 68 72 65 61 64 73 61 66 65  s the threadsafe
1c00: 0a 20 20 6c 6f 63 61 6c 74 69 6d 65 5f 73 28 29  .  localtime_s()
1c10: 20 6c 69 62 72 61 72 79 20 72 6f 75 74 69 6e 65   library routine
1c20: 20 69 6e 73 74 65 61 64 20 6f 66 20 6c 6f 63 61   instead of loca
1c30: 6c 74 69 6d 65 28 29 0a 20 20 74 6f 20 68 65 6c  ltime().  to hel
1c40: 70 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20  p implement the 
1c50: 5b 6c 6f 63 61 6c 74 69 6d 65 20 6d 6f 64 69 66  [localtime modif
1c60: 69 65 72 5d 0a 20 20 74 6f 20 74 68 65 20 62 75  ier].  to the bu
1c70: 69 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e 64  ilt-in [date and
1c80: 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d   time functions]
1c90: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
1ca0: 49 4f 4e 20 7b 48 41 56 45 5f 4d 41 4c 4c 4f 43  ION {HAVE_MALLOC
1cb0: 5f 55 53 41 42 4c 45 5f 53 49 5a 45 7d 20 7b 0a  _USABLE_SIZE} {.
1cc0: 20 20 49 66 20 74 68 65 20 48 41 56 45 5f 4d 41    If the HAVE_MA
1cd0: 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f 53 49 5a 45  LLOC_USABLE_SIZE
1ce0: 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c   option is true,
1cf0: 20 74 68 65 6e 20 53 51 4c 69 74 65 20 74 72 69   then SQLite tri
1d00: 65 73 20 75 73 65 73 20 74 68 65 0a 20 20 6d 61  es uses the.  ma
1d10: 6c 6c 6f 63 5f 75 73 61 62 6c 65 5f 73 69 7a 65  lloc_usable_size
1d20: 28 29 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20  () interface to 
1d30: 66 69 6e 64 20 74 68 65 20 73 69 7a 65 20 6f 66  find the size of
1d40: 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61   a memory alloca
1d50: 74 69 6f 6e 20 6f 62 74 61 69 6e 65 64 0a 20 20  tion obtained.  
1d60: 66 72 6f 6d 20 74 68 65 20 73 74 61 6e 64 61 72  from the standar
1d70: 64 2d 6c 69 62 72 61 72 79 20 6d 61 6c 6c 6f 63  d-library malloc
1d80: 28 29 20 6f 72 20 72 65 61 6c 6c 6f 63 28 29 20  () or realloc() 
1d90: 72 6f 75 74 69 6e 65 73 2e 20 20 54 68 69 73 20  routines.  This 
1da0: 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 0a 20  option is only. 
1db0: 20 61 70 70 6c 69 63 61 62 6c 65 20 69 66 20 74   applicable if t
1dc0: 68 65 20 73 74 61 6e 64 61 72 64 2d 6c 69 62 72  he standard-libr
1dd0: 61 72 79 20 6d 61 6c 6c 6f 63 28 29 20 69 73 20  ary malloc() is 
1de0: 75 73 65 64 2e 20 20 4f 6e 20 41 70 70 6c 65 20  used.  On Apple 
1df0: 73 79 73 74 65 6d 73 2c 0a 20 20 22 7a 6f 6e 65  systems,.  "zone
1e00: 20 6d 61 6c 6c 6f 63 22 20 69 73 20 75 73 65 64   malloc" is used
1e10: 20 69 6e 73 74 65 61 64 2c 20 61 6e 64 20 73 6f   instead, and so
1e20: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
1e30: 6e 6f 74 20 61 70 70 6c 69 63 61 62 6c 65 2e 20  not applicable. 
1e40: 20 41 6e 64 2c 20 6f 66 0a 20 20 63 6f 75 72 73   And, of.  cours
1e50: 65 2c 20 69 66 20 74 68 65 20 61 70 70 6c 69 63  e, if the applic
1e60: 61 74 69 6f 6e 20 73 75 70 70 6c 69 65 73 20 69  ation supplies i
1e70: 74 73 20 6f 77 6e 20 6d 61 6c 6c 6f 63 20 69 6d  ts own malloc im
1e80: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 75 73 69  plementation usi
1e90: 6e 67 0a 20 20 5b 53 51 4c 49 54 45 5f 43 4f 4e  ng.  [SQLITE_CON
1ea0: 46 49 47 5f 4d 41 4c 4c 4f 43 5d 20 74 68 65 6e  FIG_MALLOC] then
1eb0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 68 61 73   this option has
1ec0: 20 6e 6f 20 65 66 66 65 63 74 2e 0a 20 20 3c 70   no effect..  <p
1ed0: 3e 0a 20 20 49 66 20 74 68 65 20 48 41 56 45 5f  >.  If the HAVE_
1ee0: 4d 41 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f 53 49  MALLOC_USABLE_SI
1ef0: 5a 45 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6d 69  ZE option is omi
1f00: 74 74 65 64 20 6f 72 20 69 73 20 66 61 6c 73 65  tted or is false
1f10: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 0a 20  , then SQLite . 
1f20: 20 75 73 65 73 20 61 20 77 72 61 70 70 65 72 20   uses a wrapper 
1f30: 61 72 6f 75 6e 64 20 73 79 73 74 65 6d 20 6d 61  around system ma
1f40: 6c 6c 6f 63 28 29 20 61 6e 64 20 72 65 61 6c 6c  lloc() and reall
1f50: 6f 63 28 29 20 74 68 61 74 20 65 6e 6c 61 72 67  oc() that enlarg
1f60: 65 73 20 65 61 63 68 20 61 6c 6c 6f 63 61 74 69  es each allocati
1f70: 6f 6e 0a 20 20 62 79 20 38 20 62 79 74 65 73 20  on.  by 8 bytes 
1f80: 61 6e 64 20 77 72 69 74 65 73 20 74 68 65 20 73  and writes the s
1f90: 69 7a 65 20 6f 66 20 74 68 65 20 61 6c 6c 6f 63  ize of the alloc
1fa0: 61 74 69 6f 6e 20 69 6e 20 74 68 65 20 69 6e 69  ation in the ini
1fb0: 74 69 61 6c 20 38 20 62 79 74 65 73 2c 20 61 6e  tial 8 bytes, an
1fc0: 64 0a 20 20 74 68 65 6e 20 53 51 4c 69 74 65 20  d.  then SQLite 
1fd0: 61 6c 73 6f 20 69 6d 70 6c 65 6d 65 6e 74 73 20  also implements 
1fe0: 69 74 73 20 6f 77 6e 20 68 6f 6d 65 2d 67 72 6f  its own home-gro
1ff0: 77 6e 20 76 65 72 73 69 6f 6e 20 6f 66 20 6d 61  wn version of ma
2000: 6c 6c 6f 63 5f 75 73 61 62 6c 65 5f 73 69 7a 65  lloc_usable_size
2010: 28 29 0a 20 20 74 68 61 74 20 63 6f 6e 73 75 6c  ().  that consul
2020: 74 73 20 74 68 61 74 20 38 2d 62 79 74 65 20 70  ts that 8-byte p
2030: 72 65 66 69 78 20 74 6f 20 66 69 6e 64 20 74 68  refix to find th
2040: 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69 7a  e allocation siz
2050: 65 2e 20 20 54 68 69 73 20 61 70 70 72 6f 61 63  e.  This approac
2060: 68 0a 20 20 77 6f 72 6b 73 20 62 75 74 20 69 74  h.  works but it
2070: 20 69 73 20 73 75 62 6f 70 74 69 6d 61 6c 2e 20   is suboptimal. 
2080: 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 61 72   Applications ar
2090: 65 20 65 6e 63 6f 75 72 61 67 65 64 20 74 6f 20  e encouraged to 
20a0: 75 73 65 0a 20 20 48 41 56 45 5f 4d 41 4c 4c 4f  use.  HAVE_MALLO
20b0: 43 5f 55 53 41 42 4c 45 5f 53 49 5a 45 20 77 68  C_USABLE_SIZE wh
20c0: 65 6e 65 76 65 72 20 70 6f 73 73 69 62 6c 65 2e  enever possible.
20d0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
20e0: 4f 4e 20 7b 48 41 56 45 5f 53 54 52 43 48 52 4e  ON {HAVE_STRCHRN
20f0: 55 4c 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48  UL} {.  If the H
2100: 41 56 45 5f 53 54 52 43 48 52 4e 55 4c 20 6f 70  AVE_STRCHRNUL op
2110: 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20 74 68  tion is true, th
2120: 65 6e 20 53 51 4c 69 74 65 20 75 73 65 73 20 74  en SQLite uses t
2130: 68 65 20 73 74 72 63 68 72 6e 75 6c 28 29 20 6c  he strchrnul() l
2140: 69 62 72 61 72 79 0a 20 20 66 75 6e 63 74 69 6f  ibrary.  functio
2150: 6e 2e 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  n.  If this opti
2160: 6f 6e 20 69 73 20 6d 69 73 73 69 6e 67 20 6f 72  on is missing or
2170: 20 66 61 6c 73 65 2c 20 74 68 65 6e 20 53 51 4c   false, then SQL
2180: 69 74 65 20 73 75 62 73 74 69 74 75 74 65 73 20  ite substitutes 
2190: 69 74 73 20 6f 77 6e 0a 20 20 68 6f 6d 65 2d 67  its own.  home-g
21a0: 72 6f 77 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74  rown implementat
21b0: 69 6f 6e 20 6f 66 20 73 74 72 63 68 72 6e 75 6c  ion of strchrnul
21c0: 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ()..}..COMPILE_O
21d0: 50 54 49 4f 4e 20 7b 48 41 56 45 5f 55 53 4c 45  PTION {HAVE_USLE
21e0: 45 50 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48  EP} {.  If the H
21f0: 41 56 45 5f 55 53 4c 45 45 50 20 6f 70 74 69 6f  AVE_USLEEP optio
2200: 6e 20 69 73 20 74 72 75 65 2c 20 74 68 65 6e 20  n is true, then 
2210: 74 68 65 20 64 65 66 61 75 6c 74 20 75 6e 69 78  the default unix
2220: 20 56 46 53 20 75 73 65 73 20 74 68 65 0a 20 20   VFS uses the.  
2230: 75 73 6c 65 65 70 28 29 20 73 79 73 74 65 6d 20  usleep() system 
2240: 63 61 6c 6c 20 74 6f 20 69 6d 70 6c 65 6d 65 6e  call to implemen
2250: 74 20 74 68 65 20 78 53 6c 65 65 70 20 6d 65 74  t the xSleep met
2260: 68 6f 64 2e 20 20 49 66 20 74 68 69 73 20 6f 70  hod.  If this op
2270: 74 69 6f 6e 20 69 73 0a 20 20 75 6e 64 65 66 69  tion is.  undefi
2280: 6e 65 64 20 6f 72 20 66 61 6c 73 65 2c 20 74 68  ned or false, th
2290: 65 6e 20 78 53 6c 65 65 70 20 6f 6e 20 75 6e 69  en xSleep on uni
22a0: 78 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64  x is implemented
22b0: 20 75 73 69 6e 67 20 73 6c 65 65 70 28 29 20 77   using sleep() w
22c0: 68 69 63 68 0a 20 20 6d 65 61 6e 73 20 74 68 61  hich.  means tha
22d0: 74 20 5b 73 71 6c 69 74 65 33 5f 73 6c 65 65 70  t [sqlite3_sleep
22e0: 28 29 5d 20 77 69 6c 6c 20 68 61 76 65 20 61 20  ()] will have a 
22f0: 6d 69 6e 69 6d 75 6d 20 77 61 69 74 20 69 6e 74  minimum wait int
2300: 65 72 76 61 6c 20 6f 66 20 31 30 30 30 0a 20 20  erval of 1000.  
2310: 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 72 65 67  milliseconds reg
2320: 61 72 64 6c 65 73 73 20 6f 66 20 69 74 73 20 61  ardless of its a
2330: 72 67 75 6d 65 6e 74 2e 20 20 0a 7d 0a 0a 43 4f  rgument.  .}..CO
2340: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41  MPILE_OPTION {HA
2350: 56 45 5f 55 54 49 4d 45 7d 20 7b 0a 20 20 49 66  VE_UTIME} {.  If
2360: 20 74 68 65 20 48 41 56 45 5f 55 54 49 4d 45 20   the HAVE_UTIME 
2370: 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20  option is true, 
2380: 74 68 65 6e 20 74 68 65 20 62 75 69 6c 74 2d 69  then the built-i
2390: 6e 20 62 75 74 20 6e 6f 6e 2d 73 74 61 6e 64 61  n but non-standa
23a0: 72 64 0a 20 20 22 75 6e 69 78 2d 64 6f 74 66 69  rd.  "unix-dotfi
23b0: 6c 65 22 20 56 46 53 20 77 69 6c 6c 20 75 73 65  le" VFS will use
23c0: 20 74 68 65 20 75 74 69 6d 65 28 29 20 73 79 73   the utime() sys
23d0: 74 65 6d 20 63 61 6c 6c 2c 20 69 6e 73 74 65 61  tem call, instea
23e0: 64 20 6f 66 20 75 74 69 6d 65 73 28 29 2c 0a 20  d of utimes(),. 
23f0: 20 74 6f 20 73 65 74 20 74 68 65 20 6c 61 73 74   to set the last
2400: 20 61 63 63 65 73 73 20 74 69 6d 65 20 6f 6e 20   access time on 
2410: 74 68 65 20 6c 6f 63 6b 20 66 69 6c 65 2e 0a 7d  the lock file..}
2420: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
2430: 20 7b 53 51 4c 49 54 45 5f 42 59 54 45 4f 52 44   {SQLITE_BYTEORD
2440: 45 52 3d 3c 69 3e 28 30 7c 31 32 33 34 7c 34 33  ER=<i>(0|1234|43
2450: 32 31 29 3c 2f 69 3e 7d 20 7b 0a 20 20 53 51 4c  21)</i>} {.  SQL
2460: 69 74 65 20 6e 65 65 64 73 20 74 6f 20 6b 6e 6f  ite needs to kno
2470: 77 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  w if the native 
2480: 62 79 74 65 20 6f 72 64 65 72 20 6f 66 20 74 68  byte order of th
2490: 65 20 74 61 72 67 65 74 20 43 50 55 20 69 73 0a  e target CPU is.
24a0: 20 20 62 69 67 2d 65 6e 64 69 61 6e 20 6f 72 20    big-endian or 
24b0: 6c 69 74 74 6c 65 2d 65 6e 64 69 6e 67 2e 20 20  little-ending.  
24c0: 54 68 65 20 53 51 4c 49 54 45 5f 42 59 54 45 4f  The SQLITE_BYTEO
24d0: 52 44 45 52 20 70 72 65 70 72 6f 63 65 73 73 6f  RDER preprocesso
24e0: 72 20 69 73 20 73 65 74 0a 20 20 74 6f 20 34 33  r is set.  to 43
24f0: 32 31 20 66 6f 72 20 62 69 67 2d 65 6e 64 69 61  21 for big-endia
2500: 6e 20 6d 61 63 68 69 6e 65 73 20 61 6e 64 20 31  n machines and 1
2510: 32 33 34 20 66 6f 72 20 6c 69 74 74 6c 65 2d 65  234 for little-e
2520: 6e 64 69 61 6e 20 6d 61 63 68 69 6e 65 73 2c 20  ndian machines, 
2530: 6f 72 0a 20 20 69 74 20 63 61 6e 20 62 65 20 30  or.  it can be 0
2540: 20 74 6f 20 6d 65 61 6e 20 74 68 61 74 20 74 68   to mean that th
2550: 65 20 62 79 74 65 20 6f 72 64 65 72 20 6d 75 73  e byte order mus
2560: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20  t be determined 
2570: 61 74 20 72 75 6e 2d 74 69 6d 65 2e 0a 20 20 54  at run-time..  T
2580: 68 65 72 65 20 61 72 65 20 23 69 66 64 65 66 73  here are #ifdefs
2590: 20 69 6e 20 74 68 65 20 63 6f 64 65 20 74 68 61   in the code tha
25a0: 74 20 73 65 74 20 53 51 4c 49 54 45 5f 42 59 54  t set SQLITE_BYT
25b0: 45 4f 52 44 45 52 20 61 75 74 6f 6d 61 74 69 63  EORDER automatic
25c0: 61 6c 6c 79 0a 20 20 66 6f 72 20 61 6c 6c 20 63  ally.  for all c
25d0: 6f 6d 6d 6f 6e 20 70 6c 61 74 66 6f 72 6d 73 20  ommon platforms 
25e0: 61 6e 64 20 63 6f 6d 70 69 6c 65 72 73 2e 20 20  and compilers.  
25f0: 48 6f 77 65 76 65 72 2c 20 69 74 20 6d 61 79 20  However, it may 
2600: 62 65 20 61 64 76 61 6e 74 61 67 65 6f 75 73 0a  be advantageous.
2610: 20 20 74 6f 20 73 65 74 20 53 51 4c 49 54 45 5f    to set SQLITE_
2620: 42 59 54 45 4f 52 44 45 52 20 61 70 70 72 6f 70  BYTEORDER approp
2630: 72 69 61 74 65 6c 79 20 77 68 65 6e 20 63 6f 6d  riately when com
2640: 70 69 6c 69 6e 67 20 53 51 4c 69 74 65 20 66 6f  piling SQLite fo
2650: 72 20 6f 62 73 63 75 72 65 0a 20 20 74 61 72 67  r obscure.  targ
2660: 65 74 73 2e 20 20 49 66 20 74 68 65 20 74 61 72  ets.  If the tar
2670: 67 65 74 20 62 79 74 65 20 6f 72 64 65 72 20 63  get byte order c
2680: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
2690: 6e 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74  ned at compile-t
26a0: 69 6d 65 2c 0a 20 20 74 68 65 6e 20 53 51 4c 69  ime,.  then SQLi
26b0: 74 65 20 66 61 6c 6c 73 20 62 61 63 6b 20 74 6f  te falls back to
26c0: 20 64 6f 69 6e 67 20 72 75 6e 2d 74 69 6d 65 20   doing run-time 
26d0: 63 68 65 63 6b 73 2c 20 77 68 69 63 68 20 61 6c  checks, which al
26e0: 77 61 79 73 20 77 6f 72 6b 2c 20 74 68 6f 75 67  ways work, thoug
26f0: 68 0a 20 20 77 69 74 68 20 61 20 73 6d 61 6c 6c  h.  with a small
2700: 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e   performance pen
2710: 61 6c 74 79 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a  alty..}.</tcl>..
2720: 3c 61 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74  <a name="default
2730: 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 4f 70 74  s"></a>.<h1> Opt
2740: 69 6f 6e 73 20 54 6f 20 53 65 74 20 44 65 66 61  ions To Set Defa
2750: 75 6c 74 20 50 61 72 61 6d 65 74 65 72 20 56 61  ult Parameter Va
2760: 6c 75 65 73 3c 2f 68 31 3e 0a 0a 3c 74 63 6c 3e  lues</h1>..<tcl>
2770: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
2780: 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   {SQLITE_DEFAULT
2790: 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58  _AUTOMATIC_INDEX
27a0: 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67  =<i>&lt;0 or 1&g
27b0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  t;</i>} {.  This
27c0: 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e 65   macro determine
27d0: 73 20 74 68 65 20 69 6e 69 74 69 61 6c 20 73 65  s the initial se
27e0: 74 74 69 6e 67 20 66 6f 72 20 5b 50 52 41 47 4d  tting for [PRAGM
27f0: 41 20 61 75 74 6f 6d 61 74 69 63 5f 69 6e 64 65  A automatic_inde
2800: 78 5d 0a 20 20 66 6f 72 20 6e 65 77 6c 79 20 6f  x].  for newly o
2810: 70 65 6e 65 64 20 5b 64 61 74 61 62 61 73 65 20  pened [database 
2820: 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 2e 0a 20 20  connections]..  
2830: 46 6f 72 20 61 6c 6c 20 76 65 72 73 69 6f 6e 73  For all versions
2840: 20 6f 66 20 53 51 4c 69 74 65 20 74 68 72 6f 75   of SQLite throu
2850: 67 68 20 33 2e 37 2e 31 37 2c 0a 20 20 61 75 74  gh 3.7.17,.  aut
2860: 6f 6d 61 74 69 63 20 69 6e 64 69 63 65 73 20 61  omatic indices a
2870: 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 65 6e 61 62  re normally enab
2880: 6c 65 64 20 66 6f 72 20 6e 65 77 20 64 61 74 61  led for new data
2890: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  base connections
28a0: 20 69 66 0a 20 20 74 68 69 73 20 63 6f 6d 70 69   if.  this compi
28b0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
28c0: 73 20 6f 6d 69 74 74 65 64 2e 0a 20 20 48 6f 77  s omitted..  How
28d0: 65 76 65 72 2c 20 74 68 61 74 20 6d 69 67 68 74  ever, that might
28e0: 20 63 68 61 6e 67 65 20 69 6e 20 66 75 74 75 72   change in futur
28f0: 65 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53 51  e releases of SQ
2900: 4c 69 74 65 2e 0a 20 20 3c 70 3e 53 65 65 20 61  Lite..  <p>See a
2910: 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 4f 4d 49  lso: [SQLITE_OMI
2920: 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45  T_AUTOMATIC_INDE
2930: 58 5d 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  X].}..COMPILE_OP
2940: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
2950: 41 55 4c 54 5f 41 55 54 4f 56 41 43 55 55 4d 3d  AULT_AUTOVACUUM=
2960: 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 20 6f 72  <i>&lt;0 or 1 or
2970: 20 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   2&gt;</i>} {.  
2980: 54 68 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72  This macro deter
2990: 6d 69 6e 65 73 20 69 66 20 53 51 4c 69 74 65 20  mines if SQLite 
29a0: 63 72 65 61 74 65 73 20 64 61 74 61 62 61 73 65  creates database
29b0: 73 20 77 69 74 68 20 74 68 65 20 0a 20 20 5b 61  s with the .  [a
29c0: 75 74 6f 5f 76 61 63 75 75 6d 5d 20 66 6c 61 67  uto_vacuum] flag
29d0: 20 73 65 74 20 62 79 20 64 65 66 61 75 6c 74 20   set by default 
29e0: 74 6f 20 4f 46 46 20 28 30 29 2c 20 46 55 4c 4c  to OFF (0), FULL
29f0: 20 28 31 29 2c 20 6f 72 0a 20 20 49 4e 43 52 45   (1), or.  INCRE
2a00: 4d 45 4e 54 41 4c 20 28 32 29 2e 20 54 68 65 20  MENTAL (2). The 
2a10: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73  default value is
2a20: 20 30 20 6d 65 61 6e 69 6e 67 20 74 68 61 74 20   0 meaning that 
2a30: 64 61 74 61 62 61 73 65 73 0a 20 20 61 72 65 20  databases.  are 
2a40: 63 72 65 61 74 65 64 20 77 69 74 68 20 61 75 74  created with aut
2a50: 6f 2d 76 61 63 75 75 6d 20 74 75 72 6e 65 64 20  o-vacuum turned 
2a60: 6f 66 66 2e 0a 20 20 49 6e 20 61 6e 79 20 63 61  off..  In any ca
2a70: 73 65 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74  se the compile-t
2a80: 69 6d 65 20 64 65 66 61 75 6c 74 20 6d 61 79 20  ime default may 
2a90: 62 65 20 6f 76 65 72 72 69 64 64 65 6e 20 62 79  be overridden by
2aa0: 20 74 68 65 20 0a 20 20 5b 50 52 41 47 4d 41 20   the .  [PRAGMA 
2ab0: 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 63 6f 6d  auto_vacuum] com
2ac0: 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  mand..}..COMPILE
2ad0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
2ae0: 44 45 46 41 55 4c 54 5f 43 41 43 48 45 5f 53 49  DEFAULT_CACHE_SI
2af0: 5a 45 3d 3c 69 3e 26 6c 74 3b 4e 26 67 74 3b 3c  ZE=<i>&lt;N&gt;<
2b00: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
2b10: 63 72 6f 20 73 65 74 73 20 74 68 65 20 64 65 66  cro sets the def
2b20: 61 75 6c 74 20 6d 61 78 69 6d 75 6d 20 73 69 7a  ault maximum siz
2b30: 65 20 6f 66 20 74 68 65 20 70 61 67 65 2d 63 61  e of the page-ca
2b40: 63 68 65 20 66 6f 72 20 65 61 63 68 20 61 74 74  che for each att
2b50: 61 63 68 65 64 0a 20 20 64 61 74 61 62 61 73 65  ached.  database
2b60: 2e 20 20 41 20 70 6f 73 69 74 69 76 65 20 76 61  .  A positive va
2b70: 6c 75 65 20 6d 65 61 6e 73 20 74 68 61 74 20 74  lue means that t
2b80: 68 65 20 6c 69 6d 69 74 20 69 73 20 4e 20 70 61  he limit is N pa
2b90: 67 65 2e 20 20 49 66 20 4e 20 69 73 20 6e 65 67  ge.  If N is neg
2ba0: 61 74 69 76 65 0a 20 20 74 68 61 74 20 6d 65 61  ative.  that mea
2bb0: 6e 73 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 20  ns to limit the 
2bc0: 63 61 63 68 65 20 73 69 7a 65 20 74 6f 20 2d 4e  cache size to -N
2bd0: 2a 31 30 32 34 20 62 79 74 65 73 2e 0a 20 20 54  *1024 bytes..  T
2be0: 68 65 20 73 75 67 67 65 73 74 65 64 20 6d 61 78  he suggested max
2bf0: 69 6d 75 6d 20 63 61 63 68 65 20 73 69 7a 65 20  imum cache size 
2c00: 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64 64 65  can be overridde
2c10: 6e 20 62 79 20 74 68 65 20 0a 20 20 5b 50 52 41  n by the .  [PRA
2c20: 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 5d 20  GMA cache_size] 
2c30: 63 6f 6d 6d 61 6e 64 2e 20 54 68 65 20 64 65 66  command. The def
2c40: 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 2d 32  ault value is -2
2c50: 30 30 30 2c 20 77 68 69 63 68 20 74 72 61 6e 73  000, which trans
2c60: 6c 61 74 65 73 0a 20 20 69 6e 74 6f 20 61 20 6d  lates.  into a m
2c70: 61 78 69 6d 75 6d 20 6f 66 20 32 30 34 38 30 30  aximum of 204800
2c80: 30 20 62 79 74 65 73 20 70 65 72 20 63 61 63 68  0 bytes per cach
2c90: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
2ca0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
2cb0: 41 55 4c 54 5f 46 49 4c 45 5f 46 4f 52 4d 41 54  AULT_FILE_FORMAT
2cc0: 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 34 26 67  =<i>&lt;1 or 4&g
2cd0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20  t;</i>} {.  The 
2ce0: 64 65 66 61 75 6c 74 20 5b 73 63 68 65 6d 61 20  default [schema 
2cf0: 66 6f 72 6d 61 74 20 6e 75 6d 62 65 72 5d 20 75  format number] u
2d00: 73 65 64 20 62 79 20 53 51 4c 69 74 65 20 77 68  sed by SQLite wh
2d10: 65 6e 20 63 72 65 61 74 69 6e 67 0a 20 20 6e 65  en creating.  ne
2d20: 77 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73  w database files
2d30: 20 69 73 20 73 65 74 20 62 79 20 74 68 69 73 20   is set by this 
2d40: 6d 61 63 72 6f 2e 20 20 54 68 65 20 73 63 68 65  macro.  The sche
2d50: 6d 61 20 66 6f 72 6d 61 74 73 20 61 72 65 20 61  ma formats are a
2d60: 6c 6c 0a 20 20 76 65 72 79 20 73 69 6d 69 6c 61  ll.  very simila
2d70: 72 2e 20 20 54 68 65 20 64 69 66 66 65 72 65 6e  r.  The differen
2d80: 63 65 20 62 65 74 77 65 65 6e 20 66 6f 72 6d 61  ce between forma
2d90: 74 73 20 31 20 61 6e 64 20 34 20 69 73 20 74 68  ts 1 and 4 is th
2da0: 61 74 20 66 6f 72 6d 61 74 0a 20 20 34 20 75 6e  at format.  4 un
2db0: 64 65 72 73 74 61 6e 64 73 20 5b 64 65 73 63 65  derstands [desce
2dc0: 6e 64 69 6e 67 20 69 6e 64 69 63 65 73 5d 20 61  nding indices] a
2dd0: 6e 64 20 68 61 73 20 61 20 74 69 67 68 74 65 72  nd has a tighter
2de0: 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72 0a 20 20   encoding for.  
2df0: 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 73 2e 0a  boolean values..
2e00: 0a 20 20 41 6c 6c 20 76 65 72 73 69 6f 6e 73 20  .  All versions 
2e10: 6f 66 20 53 51 4c 69 74 65 20 73 69 6e 63 65 20  of SQLite since 
2e20: 33 2e 33 2e 30 20 28 32 30 30 36 2d 30 31 2d 31  3.3.0 (2006-01-1
2e30: 30 29 0a 20 20 63 61 6e 20 72 65 61 64 20 61 6e  0).  can read an
2e40: 64 20 77 72 69 74 65 20 61 6e 79 20 73 63 68 65  d write any sche
2e50: 6d 61 20 66 6f 72 6d 61 74 0a 20 20 62 65 74 77  ma format.  betw
2e60: 65 65 6e 20 31 20 61 6e 64 20 34 2e 20 20 42 75  een 1 and 4.  Bu
2e70: 74 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73  t older versions
2e80: 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68 74   of SQLite might
2e90: 20 6e 6f 74 20 62 65 20 61 62 6c 65 20 74 6f 0a   not be able to.
2ea0: 20 20 72 65 61 64 20 66 6f 72 6d 61 74 73 20 67    read formats g
2eb0: 72 65 61 74 65 72 20 74 68 61 6e 20 31 2e 20 20  reater than 1.  
2ec0: 53 6f 20 74 68 61 74 20 6f 6c 64 65 72 20 76 65  So that older ve
2ed0: 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65  rsions of SQLite
2ee0: 20 77 69 6c 6c 0a 20 20 62 65 20 61 62 6c 65 20   will.  be able 
2ef0: 74 6f 20 72 65 61 64 20 61 6e 64 20 77 72 69 74  to read and writ
2f00: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73  e database files
2f10: 20 63 72 65 61 74 65 64 20 62 79 20 6e 65 77 65   created by newe
2f20: 72 20 76 65 72 73 69 6f 6e 73 0a 20 20 6f 66 20  r versions.  of 
2f30: 53 51 4c 69 74 65 2c 20 74 68 65 20 64 65 66 61  SQLite, the defa
2f40: 75 6c 74 20 73 63 68 65 6d 61 20 66 6f 72 6d 61  ult schema forma
2f50: 74 20 77 61 73 20 73 65 74 20 74 6f 20 31 20 66  t was set to 1 f
2f60: 6f 72 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  or SQLite versio
2f70: 6e 73 0a 20 20 74 68 72 6f 75 67 68 20 33 2e 37  ns.  through 3.7
2f80: 2e 39 20 28 32 30 31 31 2d 31 31 2d 30 31 29 2e  .9 (2011-11-01).
2f90: 20 20 42 65 67 69 6e 6e 69 6e 67 20 77 69 74 68    Beginning with
2fa0: 20 0a 20 20 5b 76 65 72 73 69 6f 6e 20 33 2e 37   .  [version 3.7
2fb0: 2e 31 30 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e  .10] ([dateof:3.
2fc0: 37 2e 31 30 5d 29 2c 20 74 68 65 20 64 65 66 61  7.10]), the defa
2fd0: 75 6c 74 0a 20 20 73 63 68 65 6d 61 20 66 6f 72  ult.  schema for
2fe0: 6d 61 74 20 69 73 20 34 2e 0a 0a 20 20 54 68 65  mat is 4...  The
2ff0: 20 73 63 68 65 6d 61 20 66 6f 72 6d 61 74 20 6e   schema format n
3000: 75 6d 62 65 72 20 66 6f 72 20 61 20 6e 65 77 20  umber for a new 
3010: 64 61 74 61 62 61 73 65 20 63 61 6e 20 62 65 20  database can be 
3020: 73 65 74 20 61 74 20 72 75 6e 74 69 6d 65 20 75  set at runtime u
3030: 73 69 6e 67 0a 20 20 74 68 65 20 5b 50 52 41 47  sing.  the [PRAG
3040: 4d 41 20 6c 65 67 61 63 79 5f 66 69 6c 65 5f 66  MA legacy_file_f
3050: 6f 72 6d 61 74 5d 20 63 6f 6d 6d 61 6e 64 2e 0a  ormat] command..
3060: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
3070: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
3080: 54 5f 46 49 4c 45 5f 50 45 52 4d 49 53 53 49 4f  T_FILE_PERMISSIO
3090: 4e 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20  NS=<i>N</i>} {. 
30a0: 20 54 68 65 20 64 65 66 61 75 6c 74 20 6e 75 6d   The default num
30b0: 65 72 69 63 20 66 69 6c 65 20 70 65 72 6d 69 73  eric file permis
30c0: 73 69 6f 6e 73 20 66 6f 72 20 6e 65 77 6c 79 20  sions for newly 
30d0: 63 72 65 61 74 65 64 20 64 61 74 61 62 61 73 65  created database
30e0: 20 66 69 6c 65 73 0a 20 20 75 6e 64 65 72 20 75   files.  under u
30f0: 6e 69 78 2e 20 20 49 66 20 6e 6f 74 20 73 70 65  nix.  If not spe
3100: 63 69 66 69 65 64 2c 20 74 68 65 20 64 65 66 61  cified, the defa
3110: 75 6c 74 20 69 73 20 30 36 34 34 20 77 68 69 63  ult is 0644 whic
3120: 68 20 6d 65 61 6e 73 20 74 68 61 74 0a 20 20 74  h means that.  t
3130: 68 65 20 66 69 6c 65 73 20 69 73 20 67 6c 6f 62  he files is glob
3140: 61 6c 6c 79 20 72 65 61 64 61 62 6c 65 20 62 75  ally readable bu
3150: 74 20 6f 6e 6c 79 20 77 72 69 74 61 62 6c 65 20  t only writable 
3160: 62 79 20 74 68 65 20 63 72 65 61 74 6f 72 2e 0a  by the creator..
3170: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
3180: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
3190: 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 53 3d 3c  T_FOREIGN_KEYS=<
31a0: 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b  i>&lt;0 or 1&gt;
31b0: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d  </i>} {.  This m
31c0: 61 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20  acro determines 
31d0: 77 68 65 74 68 65 72 20 65 6e 66 6f 72 63 65 6d  whether enforcem
31e0: 65 6e 74 20 6f 66 20 0a 20 20 5b 66 6f 72 65 69  ent of .  [forei
31f0: 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e  gn key constrain
3200: 74 73 5d 20 69 73 20 65 6e 61 62 6c 65 64 20 6f  ts] is enabled o
3210: 72 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65  r disabled by de
3220: 66 61 75 6c 74 20 66 6f 72 0a 20 20 6e 65 77 20  fault for.  new 
3230: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
3240: 69 6f 6e 73 2e 20 20 45 61 63 68 20 64 61 74 61  ions.  Each data
3250: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
3260: 63 61 6e 20 61 6c 77 61 79 73 20 74 75 72 6e 0a  can always turn.
3270: 20 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66    enforcement of
3280: 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e   foreign key con
3290: 73 74 72 61 69 6e 74 73 20 6f 6e 20 61 6e 64 20  straints on and 
32a0: 6f 66 66 20 61 6e 64 20 72 75 6e 2d 74 69 6d 65  off and run-time
32b0: 20 75 73 69 6e 67 0a 20 20 74 68 65 20 5b 66 6f   using.  the [fo
32c0: 72 65 69 67 6e 5f 6b 65 79 73 20 70 72 61 67 6d  reign_keys pragm
32d0: 61 5d 2e 20 20 45 6e 66 6f 72 63 65 6d 65 6e 74  a].  Enforcement
32e0: 20 6f 66 20 66 6f 72 65 69 67 6e 20 6b 65 79 20   of foreign key 
32f0: 63 6f 6e 73 74 72 61 69 6e 74 73 0a 20 20 69 73  constraints.  is
3300: 20 6e 6f 72 6d 61 6c 6c 79 20 6f 66 66 20 62 79   normally off by
3310: 20 64 65 66 61 75 6c 74 2c 20 62 75 74 20 69 66   default, but if
3320: 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   this compile-ti
3330: 6d 65 20 70 61 72 61 6d 65 74 65 72 20 69 73 0a  me parameter is.
3340: 20 20 73 65 74 20 74 6f 20 31 2c 20 65 6e 66 6f    set to 1, enfo
3350: 72 63 65 6d 65 6e 74 20 6f 66 20 66 6f 72 65 69  rcement of forei
3360: 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e  gn key constrain
3370: 74 73 20 77 69 6c 6c 20 62 65 20 6f 6e 20 62 79  ts will be on by
3380: 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a 43 4f 4d   default..}..COM
3390: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
33a0: 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d 4d 41 50  ITE_DEFAULT_MMAP
33b0: 5f 53 49 5a 45 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20  _SIZE=<i>N</i>} 
33c0: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73  {.  This macro s
33d0: 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  ets the default 
33e0: 6c 69 6d 69 74 20 6f 6e 20 74 68 65 20 61 6d 6f  limit on the amo
33f0: 75 6e 74 20 6f 66 20 6d 65 6d 6f 72 79 20 74 68  unt of memory th
3400: 61 74 0a 20 20 77 69 6c 6c 20 62 65 20 75 73 65  at.  will be use
3410: 64 20 66 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61 70  d for memory-map
3420: 70 65 64 20 49 2f 4f 0a 20 20 66 6f 72 20 65 61  ped I/O.  for ea
3430: 63 68 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65  ch open database
3440: 20 66 69 6c 65 2e 20 20 49 66 20 74 68 65 20 3c   file.  If the <
3450: 69 3e 4e 3c 2f 69 3e 0a 20 20 69 73 20 7a 65 72  i>N</i>.  is zer
3460: 6f 2c 20 74 68 65 6e 20 6d 65 6d 6f 72 79 20 6d  o, then memory m
3470: 61 70 70 65 64 20 49 2f 4f 20 69 73 20 64 69 73  apped I/O is dis
3480: 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74  abled by default
3490: 2e 20 20 54 68 69 73 0a 20 20 63 6f 6d 70 69 6c  .  This.  compil
34a0: 65 2d 74 69 6d 65 20 6c 69 6d 69 74 20 61 6e 64  e-time limit and
34b0: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4d 41 58   the [SQLITE_MAX
34c0: 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 63 61 6e 20  _MMAP_SIZE] can 
34d0: 62 65 20 6d 6f 64 69 66 69 65 64 20 0a 20 20 61  be modified .  a
34e0: 74 20 73 74 61 72 74 2d 74 69 6d 65 20 75 73 69  t start-time usi
34f0: 6e 67 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65  ng the.  [sqlite
3500: 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54  3_config]([SQLIT
3510: 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49  E_CONFIG_MMAP_SI
3520: 5a 45 5d 29 20 63 61 6c 6c 2c 20 6f 72 20 61 74  ZE]) call, or at
3530: 20 72 75 6e 2d 74 69 6d 65 0a 20 20 75 73 69 6e   run-time.  usin
3540: 67 20 74 68 65 20 5b 6d 6d 61 70 5f 73 69 7a 65  g the [mmap_size
3550: 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d   pragma]..}..COM
3560: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
3570: 49 54 45 5f 44 45 46 41 55 4c 54 5f 4a 4f 55 52  ITE_DEFAULT_JOUR
3580: 4e 41 4c 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d 3c  NAL_SIZE_LIMIT=<
3590: 69 3e 26 6c 74 3b 62 79 74 65 73 26 67 74 3b 3c  i>&lt;bytes&gt;<
35a0: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  /i>} {.  This op
35b0: 74 69 6f 6e 20 73 65 74 73 20 74 68 65 20 73 69  tion sets the si
35c0: 7a 65 20 6c 69 6d 69 74 20 6f 6e 20 5b 72 6f 6c  ze limit on [rol
35d0: 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20 66  lback journal] f
35e0: 69 6c 65 73 20 69 6e 0a 20 20 5b 6a 6f 75 72 6e  iles in.  [journ
35f0: 61 6c 5f 6d 6f 64 65 20 70 72 61 67 6d 61 20 7c  al_mode pragma |
3600: 20 70 65 72 73 69 73 74 65 6e 74 20 6a 6f 75 72   persistent jour
3610: 6e 61 6c 20 6d 6f 64 65 5d 20 61 6e 64 0a 20 20  nal mode] and.  
3620: 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 20 7c 20  [locking_mode | 
3630: 65 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b 69 6e  exclusive lockin
3640: 67 20 6d 6f 64 65 5d 20 61 6e 64 20 6f 6e 20 74  g mode] and on t
3650: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 0a 20  he size of the. 
3660: 20 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f 67   write-ahead log
3670: 20 66 69 6c 65 20 69 6e 20 5b 57 41 4c 20 6d 6f   file in [WAL mo
3680: 64 65 5d 2e 20 57 68 65 6e 20 74 68 69 73 20 0a  de]. When this .
3690: 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f    compile-time o
36a0: 70 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64  ption is omitted
36b0: 20 74 68 65 72 65 20 69 73 20 6e 6f 20 75 70 70   there is no upp
36c0: 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65 0a  er bound on the.
36d0: 20 20 73 69 7a 65 20 6f 66 20 74 68 65 20 72 6f    size of the ro
36e0: 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 73 20  llback journals 
36f0: 6f 72 20 77 72 69 74 65 2d 61 68 65 61 64 20 6c  or write-ahead l
3700: 6f 67 73 2e 20 20 0a 20 20 54 68 65 20 6a 6f 75  ogs.  .  The jou
3710: 72 6e 61 6c 20 66 69 6c 65 20 73 69 7a 65 20 6c  rnal file size l
3720: 69 6d 69 74 0a 20 20 63 61 6e 20 62 65 20 63 68  imit.  can be ch
3730: 61 6e 67 65 64 20 61 74 20 72 75 6e 2d 74 69 6d  anged at run-tim
3740: 65 20 75 73 69 6e 67 20 74 68 65 20 5b 6a 6f 75  e using the [jou
3750: 72 6e 61 6c 5f 73 69 7a 65 5f 6c 69 6d 69 74 20  rnal_size_limit 
3760: 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50  pragma]..}..COMP
3770: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
3780: 54 45 5f 44 45 46 41 55 4c 54 5f 4c 4f 43 4b 49  TE_DEFAULT_LOCKI
3790: 4e 47 5f 4d 4f 44 45 3d 3c 69 3e 26 6c 74 3b 31  NG_MODE=<i>&lt;1
37a0: 20 6f 72 20 30 26 67 74 3b 3c 2f 69 3e 7d 20 7b   or 0&gt;</i>} {
37b0: 0a 20 20 49 66 20 73 65 74 20 74 6f 20 31 2c 20  .  If set to 1, 
37c0: 74 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74  then the default
37d0: 20 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 5d 20   [locking_mode] 
37e0: 69 73 20 73 65 74 20 74 6f 20 45 58 43 4c 55 53  is set to EXCLUS
37f0: 49 56 45 2e 0a 20 20 49 66 20 6f 6d 69 74 74 65  IVE..  If omitte
3800: 64 20 6f 72 20 73 65 74 20 74 6f 20 30 20 74 68  d or set to 0 th
3810: 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 5b  en the default [
3820: 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 5d 20 69 73  locking_mode] is
3830: 20 4e 4f 52 4d 41 4c 2e 0a 7d 0a 0a 43 4f 4d 50   NORMAL..}..COMP
3840: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
3850: 54 45 5f 44 45 46 41 55 4c 54 5f 4c 4f 4f 4b 41  TE_DEFAULT_LOOKA
3860: 53 49 44 45 3d 3c 69 3e 53 5a 2c 4e 3c 2f 69 3e  SIDE=<i>SZ,N</i>
3870: 7d 20 7b 0a 20 20 53 65 74 73 20 74 68 65 20 64  } {.  Sets the d
3880: 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 74  efault size of t
3890: 68 65 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d 65  he [lookaside me
38a0: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20  mory allocator] 
38b0: 6d 65 6d 6f 72 79 20 70 6f 6f 6c 0a 20 20 74 6f  memory pool.  to
38c0: 20 4e 20 65 6e 74 72 69 65 73 20 6f 66 20 53 5a   N entries of SZ
38d0: 20 62 79 74 65 73 20 65 61 63 68 2e 20 20 54 68   bytes each.  Th
38e0: 69 73 20 73 65 74 74 69 6e 67 20 63 61 6e 20 62  is setting can b
38f0: 65 20 6d 6f 64 69 66 69 65 64 20 61 74 0a 20 20  e modified at.  
3900: 73 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e 67  start-time using
3910: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
3920: 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ]([SQLITE_CONFIG
3930: 5f 4c 4f 4f 4b 41 53 49 44 45 5d 29 20 61 6e 64  _LOOKASIDE]) and
3940: 2f 6f 72 0a 20 20 61 73 20 65 61 63 68 20 5b 64  /or.  as each [d
3950: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
3960: 6f 6e 5d 20 69 73 20 6f 70 65 6e 65 64 20 75 73  on] is opened us
3970: 69 6e 67 0a 20 20 5b 73 71 6c 69 74 65 33 5f 64  ing.  [sqlite3_d
3980: 62 5f 63 6f 6e 66 69 67 5d 28 64 62 2c 20 5b 53  b_config](db, [S
3990: 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c  QLITE_DBCONFIG_L
39a0: 4f 4f 4b 41 53 49 44 45 5d 29 2e 0a 7d 0a 0a 43  OOKASIDE])..}..C
39b0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
39c0: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d 45  QLITE_DEFAULT_ME
39d0: 4d 53 54 41 54 55 53 3d 3c 69 3e 26 6c 74 3b 31  MSTATUS=<i>&lt;1
39e0: 20 6f 72 20 30 26 67 74 3b 3c 2f 69 3e 7d 20 7b   or 0&gt;</i>} {
39f0: 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
3a00: 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69   used to determi
3a10: 6e 65 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  ne whether or no
3a20: 74 20 74 68 65 20 66 65 61 74 75 72 65 73 20 65  t the features e
3a30: 6e 61 62 6c 65 64 20 61 6e 64 0a 20 20 64 69 73  nabled and.  dis
3a40: 61 62 6c 65 64 20 75 73 69 6e 67 20 74 68 65 20  abled using the 
3a50: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45  SQLITE_CONFIG_ME
3a60: 4d 53 54 41 54 55 53 20 61 72 67 75 6d 65 6e 74  MSTATUS argument
3a70: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e   to [sqlite3_con
3a80: 66 69 67 28 29 5d 0a 20 20 61 72 65 20 61 76 61  fig()].  are ava
3a90: 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61 75 6c  ilable by defaul
3aa0: 74 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 76  t. The default v
3ab0: 61 6c 75 65 20 69 73 20 31 20 28 5b 53 51 4c 49  alue is 1 ([SQLI
3ac0: 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41  TE_CONFIG_MEMSTA
3ad0: 54 55 53 5d 0a 20 20 72 65 6c 61 74 65 64 20 66  TUS].  related f
3ae0: 65 61 74 75 72 65 73 20 65 6e 61 62 6c 65 64 29  eatures enabled)
3af0: 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 65 20 5b 73  ..  <p>.  The [s
3b00: 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73  qlite3_memory_us
3b10: 65 64 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74  ed()] and [sqlit
3b20: 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61  e3_memory_highwa
3b30: 74 65 72 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ter()] interface
3b40: 73 2c 0a 20 20 74 68 65 20 5b 73 71 6c 69 74 65  s,.  the [sqlite
3b50: 33 5f 73 74 61 74 75 73 36 34 5d 28 5b 53 51 4c  3_status64]([SQL
3b60: 49 54 45 5f 53 54 41 54 55 53 5f 4d 45 4d 4f 52  ITE_STATUS_MEMOR
3b70: 59 5f 55 53 45 44 5d 29 20 69 6e 74 65 72 66 61  Y_USED]) interfa
3b80: 63 65 2c 0a 20 20 61 6e 64 20 74 68 65 20 5b 53  ce,.  and the [S
3b90: 51 4c 49 54 45 5f 4d 41 58 5f 4d 45 4d 4f 52 59  QLITE_MAX_MEMORY
3ba0: 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  ] compile-time o
3bb0: 70 74 69 6f 6e 20 61 72 65 20 61 6c 6c 20 6e 6f  ption are all no
3bc0: 6e 2d 66 75 6e 63 74 69 6f 6e 61 6c 0a 20 20 77  n-functional.  w
3bd0: 68 65 6e 20 6d 65 6d 6f 72 79 20 75 73 61 67 65  hen memory usage
3be0: 20 74 72 61 63 6b 69 6e 67 20 69 73 20 64 69 73   tracking is dis
3bf0: 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  abled..}..COMPIL
3c00: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
3c10: 5f 44 45 46 41 55 4c 54 5f 50 43 41 43 48 45 5f  _DEFAULT_PCACHE_
3c20: 49 4e 49 54 53 5a 3d 3c 69 3e 4e 3c 2f 69 3e 7d  INITSZ=<i>N</i>}
3c30: 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20   {.  This macro 
3c40: 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 6e  determines the n
3c50: 75 6d 62 65 72 20 6f 66 20 70 61 67 65 73 20 69  umber of pages i
3c60: 6e 69 74 69 61 6c 6c 79 20 61 6c 6c 6f 63 61 74  nitially allocat
3c70: 65 64 20 62 79 20 74 68 65 20 0a 20 20 70 61 67  ed by the .  pag
3c80: 65 20 63 61 63 68 65 20 6d 6f 64 75 6c 65 20 77  e cache module w
3c90: 68 65 6e 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  hen [SQLITE_CONF
3ca0: 49 47 5f 50 41 47 45 43 41 43 48 45 5d 20 63 6f  IG_PAGECACHE] co
3cb0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
3cc0: 6f 6e 20 69 73 0a 20 20 6e 6f 74 20 75 73 65 20  on is.  not use 
3cd0: 61 6e 64 20 6d 65 6d 6f 72 79 20 66 6f 72 20 74  and memory for t
3ce0: 68 65 20 70 61 67 65 20 63 61 63 68 65 20 69 73  he page cache is
3cf0: 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 5b   obtained from [
3d00: 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29  sqlite3_malloc()
3d10: 5d 0a 20 20 69 6e 73 74 65 61 64 2e 20 20 54 68  ].  instead.  Th
3d20: 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 67 65  e number of page
3d30: 73 20 73 65 74 20 62 79 20 74 68 69 73 20 6d 61  s set by this ma
3d40: 63 72 6f 20 61 72 65 20 61 6c 6c 6f 63 61 74 65  cro are allocate
3d50: 64 20 69 6e 20 61 20 73 69 6e 67 6c 65 0a 20 20  d in a single.  
3d60: 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 77 68 69 63  allocation, whic
3d70: 68 20 72 65 64 75 63 65 73 20 74 68 65 20 6c 6f  h reduces the lo
3d80: 61 64 20 6f 6e 20 74 68 65 20 6d 65 6d 6f 72 79  ad on the memory
3d90: 20 61 6c 6c 6f 63 61 74 6f 72 2e 0a 7d 0a 0a 43   allocator..}..C
3da0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
3db0: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 50 41  QLITE_DEFAULT_PA
3dc0: 47 45 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 62  GE_SIZE=<i>&lt;b
3dd0: 79 74 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  ytes&gt;</i>} {.
3de0: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20    This macro is 
3df0: 75 73 65 64 20 74 6f 20 73 65 74 20 74 68 65 20  used to set the 
3e00: 64 65 66 61 75 6c 74 20 70 61 67 65 2d 73 69 7a  default page-siz
3e10: 65 20 75 73 65 64 20 77 68 65 6e 20 61 0a 20 20  e used when a.  
3e20: 64 61 74 61 62 61 73 65 20 69 73 20 63 72 65 61  database is crea
3e30: 74 65 64 2e 20 54 68 65 20 76 61 6c 75 65 20 61  ted. The value a
3e40: 73 73 69 67 6e 65 64 20 6d 75 73 74 20 62 65 20  ssigned must be 
3e50: 61 20 70 6f 77 65 72 20 6f 66 20 32 2e 20 54 68  a power of 2. Th
3e60: 65 0a 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75  e.  default valu
3e70: 65 20 69 73 20 34 30 39 36 2e 20 54 68 65 20 63  e is 4096. The c
3e80: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 64 65 66 61  ompile-time defa
3e90: 75 6c 74 20 6d 61 79 20 62 65 20 6f 76 65 72 72  ult may be overr
3ea0: 69 64 64 65 6e 20 61 74 20 0a 20 20 72 75 6e 74  idden at .  runt
3eb0: 69 6d 65 20 62 79 20 74 68 65 20 5b 50 52 41 47  ime by the [PRAG
3ec0: 4d 41 20 70 61 67 65 5f 73 69 7a 65 5d 20 63 6f  MA page_size] co
3ed0: 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  mmand..}..COMPIL
3ee0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
3ef0: 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43 48 52 4f  _DEFAULT_SYNCHRO
3f00: 4e 4f 55 53 3d 3c 69 3e 26 6c 74 3b 30 2d 33 26  NOUS=<i>&lt;0-3&
3f10: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
3f20: 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e  s macro determin
3f30: 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 76  es the default v
3f40: 61 6c 75 65 20 6f 66 20 74 68 65 0a 20 20 5b 50  alue of the.  [P
3f50: 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
3f60: 73 5d 20 73 65 74 74 69 6e 67 2e 20 20 49 66 20  s] setting.  If 
3f70: 6e 6f 74 20 6f 76 65 72 72 69 64 64 65 6e 20 61  not overridden a
3f80: 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 0a  t compile-time,.
3f90: 20 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 65    the default se
3fa0: 74 74 69 6e 67 20 69 73 20 32 20 28 46 55 4c 4c  tting is 2 (FULL
3fb0: 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  )..}..COMPILE_OP
3fc0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
3fd0: 41 55 4c 54 5f 57 41 4c 5f 53 59 4e 43 48 52 4f  AULT_WAL_SYNCHRO
3fe0: 4e 4f 55 53 3d 3c 69 3e 26 6c 74 3b 30 2d 33 26  NOUS=<i>&lt;0-3&
3ff0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
4000: 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e  s macro determin
4010: 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 76  es the default v
4020: 61 6c 75 65 20 6f 66 20 74 68 65 0a 20 20 5b 50  alue of the.  [P
4030: 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
4040: 73 5d 20 73 65 74 74 69 6e 67 20 66 6f 72 20 64  s] setting for d
4050: 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 74 68  atabase files th
4060: 61 74 20 6f 70 65 6e 20 69 6e 0a 20 20 5b 57 41  at open in.  [WA
4070: 4c 20 6d 6f 64 65 5d 2e 20 20 49 66 20 6e 6f 74  L mode].  If not
4080: 20 6f 76 65 72 72 69 64 64 65 6e 20 61 74 20 63   overridden at c
4090: 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 74 68 69  ompile-time, thi
40a0: 73 20 76 61 6c 75 65 20 69 73 20 74 68 65 0a 20  s value is the. 
40b0: 20 73 61 6d 65 20 61 73 20 5b 53 51 4c 49 54 45   same as [SQLITE
40c0: 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43 48 52 4f  _DEFAULT_SYNCHRO
40d0: 4e 4f 55 53 5d 2e 0a 20 20 3c 70 3e 0a 20 20 49  NOUS]..  <p>.  I
40e0: 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  f SQLITE_DEFAULT
40f0: 5f 57 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53  _WAL_SYNCHRONOUS
4100: 20 64 69 66 66 65 72 73 20 66 72 6f 6d 20 53 51   differs from SQ
4110: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e  LITE_DEFAULT_SYN
4120: 43 48 52 4f 4e 4f 55 53 2c 0a 20 20 61 6e 64 20  CHRONOUS,.  and 
4130: 69 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  if the applicati
4140: 6f 6e 20 68 61 73 20 6e 6f 74 20 6d 6f 64 69 66  on has not modif
4150: 69 65 64 20 74 68 65 20 73 79 6e 63 68 72 6f 6e  ied the synchron
4160: 6f 75 73 20 73 65 74 74 69 6e 67 20 66 6f 72 0a  ous setting for.
4170: 20 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66    the database f
4180: 69 6c 65 20 75 73 69 6e 67 20 74 68 65 20 5b 50  ile using the [P
4190: 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
41a0: 73 5d 20 73 74 61 74 65 6d 65 6e 74 2c 20 74 68  s] statement, th
41b0: 65 6e 0a 20 20 74 68 65 20 73 79 6e 63 68 72 6f  en.  the synchro
41c0: 6e 6f 75 73 20 73 65 74 74 69 6e 67 20 69 73 20  nous setting is 
41d0: 63 68 61 6e 67 65 64 20 74 6f 20 76 61 6c 75 65  changed to value
41e0: 20 64 65 66 69 6e 65 64 20 62 79 0a 20 20 53 51   defined by.  SQ
41f0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 41 4c  LITE_DEFAULT_WAL
4200: 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 20 77 68 65  _SYNCHRONOUS whe
4210: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  n the database c
4220: 6f 6e 6e 65 63 74 69 6f 6e 20 73 77 69 74 63 68  onnection switch
4230: 65 73 0a 20 20 69 6e 74 6f 20 57 41 4c 20 6d 6f  es.  into WAL mo
4240: 64 65 20 66 6f 72 20 74 68 65 20 66 69 72 73 74  de for the first
4250: 20 74 69 6d 65 2e 0a 20 20 49 66 20 74 68 65 20   time..  If the 
4260: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57  SQLITE_DEFAULT_W
4270: 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 20 76  AL_SYNCHRONOUS v
4280: 61 6c 75 65 20 69 73 20 6e 6f 74 20 6f 76 65 72  alue is not over
4290: 72 69 64 64 65 6e 20 61 74 0a 20 20 63 6f 6d 70  ridden at.  comp
42a0: 69 6c 65 2d 74 69 6d 65 2c 20 74 68 65 6e 20 69  ile-time, then i
42b0: 74 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65  t will always be
42c0: 20 74 68 65 20 73 61 6d 65 20 61 73 0a 20 20 5b   the same as.  [
42d0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 53  SQLITE_DEFAULT_S
42e0: 59 4e 43 48 52 4f 4e 4f 55 53 5d 20 61 6e 64 20  YNCHRONOUS] and 
42f0: 73 6f 20 6e 6f 20 61 75 74 6f 6d 61 74 69 63 20  so no automatic 
4300: 73 79 6e 63 68 72 6f 6e 6f 75 73 20 73 65 74 74  synchronous sett
4310: 69 6e 67 0a 20 20 63 68 61 6e 67 65 73 20 77 69  ing.  changes wi
4320: 6c 6c 20 65 76 65 72 20 6f 63 63 75 72 2e 0a 7d  ll ever occur..}
4330: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
4340: 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   {SQLITE_DEFAULT
4350: 5f 57 41 4c 5f 41 55 54 4f 43 48 45 43 4b 50 4f  _WAL_AUTOCHECKPO
4360: 49 4e 54 3d 3c 69 3e 26 6c 74 3b 70 61 67 65 73  INT=<i>&lt;pages
4370: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
4380: 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68  is macro sets th
4390: 65 20 64 65 66 61 75 6c 74 20 70 61 67 65 20 63  e default page c
43a0: 6f 75 6e 74 20 66 6f 72 20 74 68 65 20 5b 57 41  ount for the [WA
43b0: 4c 5d 0a 20 20 5b 63 68 65 63 6b 70 6f 69 6e 74  L].  [checkpoint
43c0: 69 6e 67 20 7c 20 61 75 74 6f 6d 61 74 69 63 20  ing | automatic 
43d0: 63 68 65 63 6b 70 6f 69 6e 74 69 6e 67 5d 20 66  checkpointing] f
43e0: 65 61 74 75 72 65 2e 20 20 49 66 20 75 6e 73 70  eature.  If unsp
43f0: 65 63 69 66 69 65 64 2c 0a 20 20 74 68 65 20 64  ecified,.  the d
4400: 65 66 61 75 6c 74 20 70 61 67 65 20 63 6f 75 6e  efault page coun
4410: 74 20 69 73 20 31 30 30 30 2e 0a 7d 0a 0a 43 4f  t is 1000..}..CO
4420: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
4430: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 4f 52  LITE_DEFAULT_WOR
4440: 4b 45 52 5f 54 48 52 45 41 44 53 3d 3c 69 3e 4e  KER_THREADS=<i>N
4450: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d  </i>} {.  This m
4460: 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 64 65  acro sets the de
4470: 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 0a  fault value for.
4480: 20 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c 49    the [SQLITE_LI
4490: 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41  MIT_WORKER_THREA
44a0: 44 53 5d 20 70 61 72 61 6d 65 74 65 72 2e 20 20  DS] parameter.  
44b0: 54 68 65 20 5b 53 51 4c 49 54 45 5f 4c 49 4d 49  The [SQLITE_LIMI
44c0: 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53  T_WORKER_THREADS
44d0: 5d 0a 20 20 70 61 72 61 6d 65 74 65 72 20 73 65  ].  parameter se
44e0: 74 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e  ts the maximum n
44f0: 75 6d 62 65 72 20 6f 66 20 61 75 78 69 6c 69 61  umber of auxilia
4500: 72 79 20 74 68 72 65 61 64 73 20 74 68 61 74 20  ry threads that 
4510: 61 20 73 69 6e 67 6c 65 0a 20 20 5b 70 72 65 70  a single.  [prep
4520: 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
4530: 77 69 6c 6c 20 6c 61 75 6e 63 68 20 74 6f 20 61  will launch to a
4540: 73 73 69 73 74 20 69 74 20 77 69 74 68 20 61 20  ssist it with a 
4550: 71 75 65 72 79 2e 20 20 49 66 20 6e 6f 74 20 73  query.  If not s
4560: 70 65 63 69 66 69 65 64 2c 0a 20 20 74 68 65 20  pecified,.  the 
4570: 64 65 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d 20  default maximum 
4580: 69 73 20 30 2e 0a 20 20 54 68 65 20 76 61 6c 75  is 0..  The valu
4590: 65 20 73 65 74 20 68 65 72 65 20 63 61 6e 6e 6f  e set here canno
45a0: 74 20 62 65 20 6d 6f 72 65 20 74 68 61 6e 20 5b  t be more than [
45b0: 53 51 4c 49 54 45 5f 4d 41 58 5f 57 4f 52 4b 45  SQLITE_MAX_WORKE
45c0: 52 5f 54 48 52 45 41 44 53 5d 2e 0a 7d 0a 0a 43  R_THREADS]..}..C
45d0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
45e0: 51 4c 49 54 45 5f 45 58 54 52 41 5f 44 55 52 41  QLITE_EXTRA_DURA
45f0: 42 4c 45 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  BLE} {.  The SQL
4600: 49 54 45 5f 45 58 54 52 41 5f 44 55 52 41 42 4c  ITE_EXTRA_DURABL
4610: 45 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  E compile-time o
4620: 70 74 69 6f 6e 20 74 68 61 74 20 75 73 65 64 20  ption that used 
4630: 74 6f 20 63 61 75 73 65 20 74 68 65 20 64 65 66  to cause the def
4640: 61 75 6c 74 0a 20 20 5b 50 52 41 47 4d 41 20 73  ault.  [PRAGMA s
4650: 79 6e 63 68 72 6f 6e 6f 75 73 5d 20 73 65 74 74  ynchronous] sett
4660: 69 6e 67 20 74 6f 20 62 65 20 45 58 54 52 41 2c  ing to be EXTRA,
4670: 20 72 61 74 68 65 72 20 74 68 61 6e 20 46 55 4c   rather than FUL
4680: 4c 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 0a  L.  This option.
4690: 20 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 73    is no longer s
46a0: 75 70 70 6f 72 74 65 64 2e 20 20 55 73 65 0a 20  upported.  Use. 
46b0: 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   [SQLITE_DEFAULT
46c0: 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 7c 53 51 4c  _SYNCHRONOUS|SQL
46d0: 49 54 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43  ITE_DEFAULT_SYNC
46e0: 48 52 4f 4e 4f 55 53 3d 33 5d 20 69 6e 73 74 65  HRONOUS=3] inste
46f0: 61 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ad..}..COMPILE_O
4700: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 46 54  PTION {SQLITE_FT
4710: 53 33 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54  S3_MAX_EXPR_DEPT
4720: 48 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20  H=<i>N</i>} {.  
4730: 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20  This macro sets 
4740: 74 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74  the maximum dept
4750: 68 20 6f 66 20 74 68 65 20 73 65 61 72 63 68 20  h of the search 
4760: 74 72 65 65 20 74 68 61 74 20 63 6f 72 72 65 73  tree that corres
4770: 70 6f 6e 64 73 20 74 6f 0a 20 20 74 68 65 20 72  ponds to.  the r
4780: 69 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f  ight-hand side o
4790: 66 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65 72  f the MATCH oper
47a0: 61 74 6f 72 20 69 6e 20 61 6e 20 5b 46 54 53 33  ator in an [FTS3
47b0: 5d 20 6f 72 20 5b 46 54 53 34 5d 20 66 75 6c 6c  ] or [FTS4] full
47c0: 2d 74 65 78 74 0a 20 20 69 6e 64 65 78 2e 20 20  -text.  index.  
47d0: 54 68 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65  The full-text se
47e0: 61 72 63 68 20 75 73 65 73 20 61 20 72 65 63 75  arch uses a recu
47f0: 72 73 69 76 65 20 61 6c 67 6f 72 69 74 68 6d 2c  rsive algorithm,
4800: 20 73 6f 20 74 68 65 20 64 65 70 74 68 20 6f 66   so the depth of
4810: 0a 20 20 74 68 65 20 74 72 65 65 20 69 73 20 6c  .  the tree is l
4820: 69 6d 69 74 65 64 20 74 6f 20 70 72 65 76 65 6e  imited to preven
4830: 74 20 75 73 69 6e 67 20 74 6f 6f 20 6d 75 63 68  t using too much
4840: 20 73 74 61 63 6b 20 73 70 61 63 65 2e 20 20 54   stack space.  T
4850: 68 65 20 64 65 66 61 75 6c 74 0a 20 20 6c 69 6d  he default.  lim
4860: 69 74 20 69 73 20 31 32 2e 20 20 54 68 69 73 20  it is 12.  This 
4870: 6c 69 6d 69 74 20 69 73 20 73 75 66 66 69 63 69  limit is suffici
4880: 65 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34 30  ent for up to 40
4890: 39 35 20 73 65 61 72 63 68 20 74 65 72 6d 73 20  95 search terms 
48a0: 6f 6e 20 74 68 65 0a 20 20 72 69 67 68 74 2d 68  on the.  right-h
48b0: 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65 20  and side of the 
48c0: 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72 20 61  MATCH operator a
48d0: 6e 64 20 69 74 20 68 6f 6c 64 73 20 73 74 61 63  nd it holds stac
48e0: 6b 20 73 70 61 63 65 20 75 73 61 67 65 20 74 6f  k space usage to
48f0: 20 0a 20 20 6c 65 73 73 20 74 68 61 6e 20 32 30   .  less than 20
4900: 30 30 20 62 79 74 65 73 2e 0a 20 20 3c 70 3e 0a  00 bytes..  <p>.
4910: 20 20 46 6f 72 20 6f 72 64 69 6e 61 72 79 20 46    For ordinary F
4920: 54 53 33 2f 46 54 53 34 20 71 75 65 72 69 65 73  TS3/FTS4 queries
4930: 2c 20 74 68 65 20 73 65 61 72 63 68 20 74 72 65  , the search tre
4940: 65 20 64 65 70 74 68 20 69 73 20 61 70 70 72 6f  e depth is appro
4950: 78 69 6d 61 74 65 6c 79 0a 20 20 74 68 65 20 62  ximately.  the b
4960: 61 73 65 2d 32 20 6c 6f 67 61 72 69 74 68 6d 20  ase-2 logarithm 
4970: 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  of the number of
4980: 20 74 65 72 6d 73 20 69 6e 20 74 68 65 20 72 69   terms in the ri
4990: 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66  ght-hand side of
49a0: 20 74 68 65 0a 20 20 4d 41 54 43 48 20 6f 70 65   the.  MATCH ope
49b0: 72 61 74 6f 72 2e 20 20 48 6f 77 65 76 65 72 2c  rator.  However,
49c0: 20 66 6f 72 20 5b 70 68 72 61 73 65 20 71 75 65   for [phrase que
49d0: 72 69 65 73 5d 20 61 6e 64 20 5b 4e 45 41 52 20  ries] and [NEAR 
49e0: 71 75 65 72 69 65 73 5d 20 74 68 65 0a 20 20 73  queries] the.  s
49f0: 65 61 72 63 68 20 74 72 65 65 20 64 65 70 74 68  earch tree depth
4a00: 20 69 73 20 6c 69 6e 65 61 72 20 69 6e 20 74 68   is linear in th
4a10: 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 69 67 68  e number of righ
4a20: 74 2d 68 61 6e 64 20 73 69 64 65 20 74 65 72 6d  t-hand side term
4a30: 73 2e 0a 20 20 53 6f 20 74 68 65 20 64 65 66 61  s..  So the defa
4a40: 75 6c 74 20 64 65 70 74 68 20 6c 69 6d 69 74 20  ult depth limit 
4a50: 6f 66 20 31 32 20 69 73 20 73 75 66 66 69 63 69  of 12 is suffici
4a60: 65 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34 30  ent for up to 40
4a70: 39 35 20 6f 72 64 69 6e 61 72 79 0a 20 20 74 65  95 ordinary.  te
4a80: 72 6d 73 20 6f 6e 20 61 20 4d 41 54 43 48 2c 20  rms on a MATCH, 
4a90: 69 74 20 69 73 20 6f 6e 6c 79 20 73 75 66 66 69  it is only suffi
4aa0: 63 69 65 6e 74 20 66 6f 72 20 31 31 20 6f 72 20  cient for 11 or 
4ab0: 31 32 20 70 68 72 61 73 65 20 6f 72 20 4e 45 41  12 phrase or NEA
4ac0: 52 0a 20 20 74 65 72 6d 73 2e 20 20 45 76 65 6e  R.  terms.  Even
4ad0: 20 73 6f 2c 20 74 68 65 20 64 65 66 61 75 6c 74   so, the default
4ae0: 20 69 73 20 6d 6f 72 65 20 74 68 61 6e 20 65 6e   is more than en
4af0: 6f 75 67 68 20 66 6f 72 20 6d 6f 73 74 20 61 70  ough for most ap
4b00: 70 6c 69 63 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f  plication..}..CO
4b10: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
4b20: 4c 49 54 45 5f 4c 49 4b 45 5f 44 4f 45 53 4e 54  LITE_LIKE_DOESNT
4b30: 5f 4d 41 54 43 48 5f 42 4c 4f 42 53 7d 20 7b 0a  _MATCH_BLOBS} {.
4b40: 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74    This compile-t
4b50: 69 6d 65 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  ime option cause
4b60: 73 20 74 68 65 20 5b 4c 49 4b 45 5d 20 6f 70 65  s the [LIKE] ope
4b70: 72 61 74 6f 72 20 74 6f 20 61 6c 77 61 79 73 20  rator to always 
4b80: 72 65 74 75 72 6e 20 0a 20 20 46 61 6c 73 65 20  return .  False 
4b90: 69 66 20 65 69 74 68 65 72 20 6f 70 65 72 61 6e  if either operan
4ba0: 64 20 69 73 20 61 20 42 4c 4f 42 2e 20 20 54 68  d is a BLOB.  Th
4bb0: 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69  e default behavi
4bc0: 6f 72 20 6f 66 20 5b 4c 49 4b 45 5d 20 0a 20 20  or of [LIKE] .  
4bd0: 69 73 20 74 68 61 74 20 42 4c 4f 42 20 6f 70 65  is that BLOB ope
4be0: 72 61 6e 64 73 20 61 72 65 20 63 61 73 74 20 74  rands are cast t
4bf0: 6f 20 54 45 58 54 20 62 65 66 6f 72 65 20 74 68  o TEXT before th
4c00: 65 20 63 6f 6d 70 61 72 69 73 6f 6e 20 69 73 20  e comparison is 
4c10: 64 6f 6e 65 2e 0a 20 20 3c 70 3e 0a 20 20 54 68  done..  <p>.  Th
4c20: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  is compile-time 
4c30: 6f 70 74 69 6f 6e 20 6d 61 6b 65 73 20 53 51 4c  option makes SQL
4c40: 69 74 65 20 72 75 6e 20 6d 6f 72 65 20 65 66 66  ite run more eff
4c50: 69 63 69 65 6e 74 6c 79 20 77 68 65 6e 20 70 72  iciently when pr
4c60: 6f 63 65 73 73 69 6e 67 0a 20 20 71 75 65 72 69  ocessing.  queri
4c70: 65 73 20 74 68 61 74 20 75 73 65 20 74 68 65 20  es that use the 
4c80: 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 2c  [LIKE] operator,
4c90: 20 61 74 20 74 68 65 20 65 78 70 65 6e 73 65 20   at the expense 
4ca0: 6f 66 20 62 72 65 61 6b 69 6e 67 20 62 61 63 6b  of breaking back
4cb0: 77 61 72 64 73 0a 20 20 63 6f 6d 70 61 74 69 62  wards.  compatib
4cc0: 69 6c 69 74 79 2e 20 20 48 6f 77 65 76 65 72 2c  ility.  However,
4cd0: 20 74 68 65 20 62 61 63 6b 77 61 72 64 73 20 63   the backwards c
4ce0: 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 62 72 65  ompatibility bre
4cf0: 61 6b 20 6d 61 79 20 62 65 20 6f 6e 6c 79 0a 20  ak may be only. 
4d00: 20 61 20 74 65 63 68 6e 69 63 61 6c 69 74 79 2e   a technicality.
4d10: 20 20 54 68 65 72 65 20 77 61 73 20 61 20 6c 6f    There was a lo
4d20: 6e 67 2d 73 74 61 6e 64 69 6e 67 20 62 75 67 20  ng-standing bug 
4d30: 69 6e 20 74 68 65 20 5b 4c 49 4b 45 5d 20 70 72  in the [LIKE] pr
4d40: 6f 63 65 73 73 69 6e 67 20 6c 6f 67 69 63 0a 20  ocessing logic. 
4d50: 20 28 73 65 65 20 5b 68 74 74 70 73 3a 2f 2f 77   (see [https://w
4d60: 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 73 72  ww.sqlite.org/sr
4d70: 63 2f 69 6e 66 6f 2f 30 35 66 34 33 62 65 38 66  c/info/05f43be8f
4d80: 64 64 61 39 66 5d 29 20 74 68 61 74 20 63 61 75  dda9f]) that cau
4d90: 73 65 64 20 69 74 20 74 6f 0a 20 20 6d 69 73 62  sed it to.  misb
4da0: 65 68 61 76 69 6f 72 20 66 6f 72 20 42 4c 4f 42  ehavior for BLOB
4db0: 20 6f 70 65 72 61 6e 64 73 20 61 6e 64 20 6e 6f   operands and no
4dc0: 62 6f 64 79 20 6f 62 73 65 72 76 65 64 20 74 68  body observed th
4dd0: 61 74 20 62 75 67 20 69 6e 20 6e 65 61 72 6c 79  at bug in nearly
4de0: 0a 20 20 31 30 20 79 65 61 72 73 20 6f 66 20 61  .  10 years of a
4df0: 63 74 69 76 65 20 75 73 65 2e 20 20 53 6f 20 66  ctive use.  So f
4e00: 6f 72 20 6d 6f 72 65 20 75 73 65 72 73 2c 20 69  or more users, i
4e10: 74 20 69 73 20 70 72 6f 62 61 62 6c 79 20 73 61  t is probably sa
4e20: 66 65 20 74 6f 0a 20 20 65 6e 61 62 6c 65 20 74  fe to.  enable t
4e30: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
4e40: 20 6f 70 74 69 6f 6e 20 61 6e 64 20 74 68 65 72   option and ther
4e50: 65 62 79 20 73 61 76 65 20 61 20 6c 69 74 74 6c  eby save a littl
4e60: 65 20 43 50 55 20 74 69 6d 65 0a 20 20 6f 6e 20  e CPU time.  on 
4e70: 4c 49 4b 45 20 71 75 65 72 69 65 73 2e 0a 20 20  LIKE queries..  
4e80: 3c 70 3e 0a 20 20 54 68 69 73 20 63 6f 6d 70 69  <p>.  This compi
4e90: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 61  le-time option a
4ea0: 66 66 65 63 74 73 20 74 68 65 20 53 51 4c 20 5b  ffects the SQL [
4eb0: 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 20 6f  LIKE] operator o
4ec0: 6e 6c 79 20 61 6e 64 20 68 61 73 0a 20 20 6e 6f  nly and has.  no
4ed0: 20 69 6d 70 61 63 74 20 6f 6e 20 74 68 65 20 5b   impact on the [
4ee0: 73 71 6c 69 74 65 33 5f 73 74 72 6c 69 6b 65 28  sqlite3_strlike(
4ef0: 29 5d 20 43 2d 6c 61 6e 67 75 61 67 65 20 69 6e  )] C-language in
4f00: 74 65 72 66 61 63 65 2e 0a 7d 0a 0a 43 4f 4d 50  terface..}..COMP
4f10: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
4f20: 54 45 5f 4d 41 58 5f 4d 45 4d 4f 52 59 3d 3c 69  TE_MAX_MEMORY=<i
4f30: 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  >N</i>} {.  This
4f40: 20 6f 70 74 69 6f 6e 20 6c 69 6d 69 74 73 20 74   option limits t
4f50: 68 65 20 74 6f 74 61 6c 20 61 6d 6f 75 6e 74 20  he total amount 
4f60: 6f 66 20 6d 65 6d 6f 72 79 20 74 68 61 74 20 53  of memory that S
4f70: 51 4c 69 74 65 20 77 69 6c 6c 20 72 65 71 75 65  QLite will reque
4f80: 73 74 0a 20 20 66 72 6f 6d 20 6d 61 6c 6c 6f 63  st.  from malloc
4f90: 28 29 20 74 6f 20 3c 69 3e 4e 3c 2f 69 3e 20 62  () to <i>N</i> b
4fa0: 79 74 65 73 2e 20 20 41 6e 79 20 61 74 74 65 6d  ytes.  Any attem
4fb0: 70 74 20 62 79 20 53 51 4c 69 74 65 20 74 6f 20  pt by SQLite to 
4fc0: 61 6c 6c 6f 63 61 74 65 0a 20 20 6e 65 77 20 6d  allocate.  new m
4fd0: 65 6d 6f 72 79 20 74 68 61 74 20 77 6f 75 6c 64  emory that would
4fe0: 20 63 61 75 73 65 20 74 68 65 20 73 75 6d 20 6f   cause the sum o
4ff0: 66 20 61 6c 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e  f all allocation
5000: 73 20 68 65 6c 64 20 62 79 20 53 51 4c 69 74 65  s held by SQLite
5010: 20 74 6f 20 65 78 63 65 65 64 0a 20 20 3c 69 3e   to exceed.  <i>
5020: 4e 3c 2f 69 3e 20 62 79 74 65 73 20 77 69 6c 6c  N</i> bytes will
5030: 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20 6f 75   result in an ou
5040: 74 2d 6f 66 2d 6d 65 6d 6f 72 79 20 65 72 72 6f  t-of-memory erro
5050: 72 2e 0a 20 20 54 68 69 73 20 69 73 20 61 20 68  r..  This is a h
5060: 61 72 64 20 75 70 70 65 72 20 6c 69 6d 69 74 2e  ard upper limit.
5070: 20 20 53 65 65 20 61 6c 73 6f 20 74 68 65 20 5b    See also the [
5080: 73 71 6c 69 74 65 33 5f 73 6f 66 74 5f 68 65 61  sqlite3_soft_hea
5090: 70 5f 6c 69 6d 69 74 28 29 5d 0a 20 20 69 6e 74  p_limit()].  int
50a0: 65 72 66 61 63 65 2e 0a 20 20 3c 70 3e 0a 20 20  erface..  <p>.  
50b0: 54 68 69 73 20 6c 69 6d 69 74 20 69 73 20 6f 6e  This limit is on
50c0: 6c 79 20 66 75 6e 63 74 69 6f 6e 61 6c 20 69 66  ly functional if
50d0: 20 6d 65 6d 6f 72 79 20 75 73 61 67 65 20 73 74   memory usage st
50e0: 61 74 69 73 74 69 63 73 20 61 72 65 20 61 76 61  atistics are ava
50f0: 69 6c 61 62 6c 65 20 76 69 61 0a 20 20 74 68 65  ilable via.  the
5100: 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79   [sqlite3_memory
5110: 5f 75 73 65 64 28 29 5d 20 61 6e 64 20 5b 73 71  _used()] and [sq
5120: 6c 69 74 65 33 5f 73 74 61 74 75 73 36 34 5d 28  lite3_status64](
5130: 5b 53 51 4c 49 54 45 5f 53 54 41 54 55 53 5f 4d  [SQLITE_STATUS_M
5140: 45 4d 4f 52 59 5f 55 53 45 44 5d 29 0a 20 20 69  EMORY_USED]).  i
5150: 6e 74 65 72 66 61 63 65 73 2e 20 20 57 69 74 68  nterfaces.  With
5160: 6f 75 74 20 74 68 61 74 20 6d 65 6d 6f 72 79 20  out that memory 
5170: 75 73 61 67 65 20 69 6e 66 6f 72 6d 61 74 69 6f  usage informatio
5180: 6e 2c 20 53 51 4c 69 74 65 20 68 61 73 20 6e 6f  n, SQLite has no
5190: 20 77 61 79 20 6f 66 0a 20 20 6b 6e 6f 77 69 6e   way of.  knowin
51a0: 67 20 77 68 65 6e 20 69 74 20 69 73 20 61 62 6f  g when it is abo
51b0: 75 74 20 74 6f 20 67 6f 20 6f 76 65 72 20 74 68  ut to go over th
51c0: 65 20 6c 69 6d 69 74 2c 20 61 6e 64 20 74 68 75  e limit, and thu
51d0: 73 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 70  s is unable to p
51e0: 72 65 76 65 6e 74 0a 20 20 74 68 65 20 65 78 63  revent.  the exc
51f0: 65 73 73 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ess memory alloc
5200: 61 74 69 6f 6e 2e 20 20 4d 65 6d 6f 72 79 20 75  ation.  Memory u
5210: 73 61 67 65 20 74 72 61 63 6b 69 6e 67 20 69 73  sage tracking is
5220: 20 74 75 72 6e 65 64 20 6f 6e 20 62 79 20 64 65   turned on by de
5230: 66 61 75 6c 74 2c 0a 20 20 62 75 74 20 63 61 6e  fault,.  but can
5240: 20 62 65 20 64 69 73 61 62 6c 65 64 20 61 74 20   be disabled at 
5250: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 75 73 69  compile-time usi
5260: 6e 67 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 44  ng the [SQLITE_D
5270: 45 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54 55 53  EFAULT_MEMSTATUS
5280: 5d 20 6f 70 74 69 6f 6e 2c 0a 20 20 6f 72 20 61  ] option,.  or a
5290: 74 20 73 74 61 72 74 2d 74 69 6d 65 20 75 73 69  t start-time usi
52a0: 6e 67 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ng [sqlite3_conf
52b0: 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ig]([SQLITE_CONF
52c0: 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 29 2e 0a  IG_MEMSTATUS])..
52d0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
52e0: 4e 20 7b 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d  N {SQLITE_MAX_MM
52f0: 41 50 5f 53 49 5a 45 3d 3c 69 3e 4e 3c 2f 69 3e  AP_SIZE=<i>N</i>
5300: 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
5310: 20 73 65 74 73 20 61 20 68 61 72 64 20 75 70 70   sets a hard upp
5320: 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65 20  er bound on the 
5330: 61 6d 6f 75 6e 74 20 6f 66 20 61 64 64 72 65 73  amount of addres
5340: 73 20 73 70 61 63 65 20 74 68 61 74 0a 20 20 63  s space that.  c
5350: 61 6e 20 62 65 20 75 73 65 64 20 62 79 20 61 6e  an be used by an
5360: 79 20 73 69 6e 67 6c 65 20 64 61 74 61 62 61 73  y single databas
5370: 65 20 66 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61 70  e for memory-map
5380: 70 65 64 20 49 2f 4f 2e 0a 20 20 53 65 74 74 69  ped I/O..  Setti
5390: 6e 67 20 74 68 69 73 20 76 61 6c 75 65 20 74 6f  ng this value to
53a0: 20 30 20 63 6f 6d 70 6c 65 74 65 6c 79 20 64 69   0 completely di
53b0: 73 61 62 6c 65 73 20 6d 65 6d 6f 72 79 2d 6d 61  sables memory-ma
53c0: 70 70 65 64 20 49 2f 4f 20 61 6e 64 0a 20 20 63  pped I/O and.  c
53d0: 61 75 73 65 73 20 6c 6f 67 69 63 20 61 73 73 6f  auses logic asso
53e0: 63 69 61 74 65 64 20 77 69 74 68 20 6d 65 6d 6f  ciated with memo
53f0: 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20 74 6f  ry-mapped I/O to
5400: 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d   be omitted from
5410: 20 74 68 65 0a 20 20 62 75 69 6c 64 2e 20 20 54   the.  build.  T
5420: 68 69 73 20 6f 70 74 69 6f 6e 20 64 6f 65 73 20  his option does 
5430: 63 68 61 6e 67 65 20 74 68 65 20 64 65 66 61 75  change the defau
5440: 6c 74 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64  lt memory-mapped
5450: 20 49 2f 4f 20 61 64 64 72 65 73 73 0a 20 20 73   I/O address.  s
5460: 70 61 63 65 20 73 69 7a 65 20 28 73 65 74 20 62  pace size (set b
5470: 79 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  y [SQLITE_DEFAUL
5480: 54 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 6f 72 0a  T_MMAP_SIZE] or.
5490: 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67    sqlite3_config
54a0: 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  ([SQLITE_CONFIG_
54b0: 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 6f 72 20 74  MMAP_SIZE]) or t
54c0: 68 65 0a 20 20 72 75 6e 2d 74 69 6d 65 20 6d 65  he.  run-time me
54d0: 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20  mory-mapped I/O 
54e0: 61 64 64 72 65 73 73 20 73 70 61 63 65 20 73 69  address space si
54f0: 7a 65 20 28 73 65 74 20 62 79 0a 20 20 73 71 6c  ze (set by.  sql
5500: 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f  ite3_file_contro
5510: 6c 28 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  l([SQLITE_FCNTL_
5520: 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 6f 72 0a 20  MMAP_SIZE]) or. 
5530: 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70 5f 73 69   [PRAGMA mmap_si
5540: 7a 65 5d 29 20 61 73 20 6c 6f 6e 67 20 61 73 20  ze]) as long as 
5550: 74 68 6f 73 65 20 6f 74 68 65 72 20 73 65 74 74  those other sett
5560: 69 6e 67 73 20 61 72 65 20 6c 65 73 73 20 74 68  ings are less th
5570: 61 6e 20 74 68 65 0a 20 20 6d 61 78 69 6d 75 6d  an the.  maximum
5580: 20 76 61 6c 75 65 20 64 65 66 69 6e 65 64 20 68   value defined h
5590: 65 72 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ere..}..COMPILE_
55a0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d  OPTION {SQLITE_M
55b0: 41 58 5f 53 43 48 45 4d 41 5f 52 45 54 52 59 3d  AX_SCHEMA_RETRY=
55c0: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 57 68  <i>N</i>} {.  Wh
55d0: 65 6e 65 76 65 72 20 74 68 65 20 64 61 74 61 62  enever the datab
55e0: 61 73 65 20 73 63 68 65 6d 61 20 63 68 61 6e 67  ase schema chang
55f0: 65 73 2c 20 70 72 65 70 61 72 65 64 20 73 74 61  es, prepared sta
5600: 74 65 6d 65 6e 74 73 20 61 72 65 20 61 75 74 6f  tements are auto
5610: 6d 61 74 69 63 61 6c 6c 79 0a 20 20 72 65 70 72  matically.  repr
5620: 65 70 61 72 65 64 20 74 6f 20 61 63 63 6f 6d 6d  epared to accomm
5630: 6f 64 61 74 65 20 74 68 65 20 6e 65 77 20 73 63  odate the new sc
5640: 68 65 6d 61 2e 20 20 54 68 65 72 65 20 69 73 20  hema.  There is 
5650: 61 20 72 61 63 65 20 63 6f 6e 64 69 74 69 6f 6e  a race condition
5660: 20 68 65 72 65 0a 20 20 69 6e 20 74 68 61 74 20   here.  in that 
5670: 69 66 20 6f 6e 65 20 74 68 72 65 61 64 20 69 73  if one thread is
5680: 20 63 6f 6e 73 74 61 6e 74 6c 79 20 63 68 61 6e   constantly chan
5690: 67 69 6e 67 20 74 68 65 20 73 63 68 65 6d 61 2c  ging the schema,
56a0: 20 61 6e 6f 74 68 65 72 20 74 68 72 65 61 64 0a   another thread.
56b0: 20 20 6d 69 67 68 74 20 73 70 69 6e 20 6f 6e 20    might spin on 
56c0: 72 65 70 61 72 73 65 73 20 61 6e 64 20 72 65 70  reparses and rep
56d0: 72 65 70 61 72 61 74 69 6f 6e 73 20 6f 66 20 61  reparations of a
56e0: 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
56f0: 65 6e 74 20 61 6e 64 0a 20 20 6e 65 76 65 72 20  ent and.  never 
5700: 67 65 74 20 61 6e 79 20 72 65 61 6c 20 77 6f 72  get any real wor
5710: 6b 20 64 6f 6e 65 2e 20 20 54 68 69 73 20 70 61  k done.  This pa
5720: 72 61 6d 65 74 65 72 20 70 72 65 76 65 6e 74 73  rameter prevents
5730: 20 61 6e 20 69 6e 66 69 6e 69 74 65 20 6c 6f 6f   an infinite loo
5740: 70 0a 20 20 62 79 20 66 6f 72 63 69 6e 67 20 74  p.  by forcing t
5750: 68 65 20 73 70 69 6e 6e 69 6e 67 20 74 68 72 65  he spinning thre
5760: 61 64 20 74 6f 20 67 69 76 65 20 75 70 20 61 66  ad to give up af
5770: 74 65 72 20 61 20 66 69 78 65 64 20 6e 75 6d 62  ter a fixed numb
5780: 65 72 20 6f 66 20 61 74 74 65 6d 70 74 73 0a 20  er of attempts. 
5790: 20 61 74 20 72 65 63 6f 6d 70 69 6c 69 6e 67 20   at recompiling 
57a0: 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61  the prepared sta
57b0: 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 64 65 66  tement.  The def
57c0: 61 75 6c 74 20 73 65 74 74 69 6e 67 20 69 73 20  ault setting is 
57d0: 35 30 20 77 68 69 63 68 20 69 73 0a 20 20 6d 6f  50 which is.  mo
57e0: 72 65 20 74 68 61 6e 20 61 64 65 71 75 61 74 65  re than adequate
57f0: 20 66 6f 72 20 6d 6f 73 74 20 61 70 70 6c 69 63   for most applic
5800: 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  ations..}..COMPI
5810: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
5820: 45 5f 4d 41 58 5f 57 4f 52 4b 45 52 5f 54 48 52  E_MAX_WORKER_THR
5830: 45 41 44 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b  EADS=<i>N</i>} {
5840: 0a 20 20 53 65 74 20 61 6e 20 75 70 70 65 72 20  .  Set an upper 
5850: 62 6f 75 6e 64 20 6f 6e 20 74 68 65 20 5b 73 71  bound on the [sq
5860: 6c 69 74 65 33 5f 6c 69 6d 69 74 5d 28 64 62 2c  lite3_limit](db,
5870: 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f  [SQLITE_LIMIT_WO
5880: 52 4b 45 52 5f 54 48 52 45 41 44 53 5d 2c 4e 29  RKER_THREADS],N)
5890: 0a 20 20 73 65 74 74 69 6e 67 20 74 68 61 74 20  .  setting that 
58a0: 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 6d  determines the m
58b0: 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66  aximum number of
58c0: 20 61 75 78 69 6c 69 61 72 79 20 74 68 72 65 61   auxiliary threa
58d0: 64 73 20 74 68 61 74 20 61 20 73 69 6e 67 6c 65  ds that a single
58e0: 0a 20 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  .  [prepared sta
58f0: 74 65 6d 65 6e 74 5d 20 77 69 6c 6c 20 75 73 65  tement] will use
5900: 20 74 6f 20 61 69 64 20 77 69 74 68 20 43 50 55   to aid with CPU
5910: 2d 69 6e 74 65 6e 73 69 76 65 20 63 6f 6d 70 75  -intensive compu
5920: 74 61 74 69 6f 6e 73 0a 20 20 28 6d 6f 73 74 6c  tations.  (mostl
5930: 79 20 73 6f 72 74 69 6e 67 29 2e 20 20 53 65 65  y sorting).  See
5940: 20 61 6c 73 6f 20 74 68 65 20 5b 53 51 4c 49 54   also the [SQLIT
5950: 45 5f 44 45 46 41 55 4c 54 5f 57 4f 52 4b 45 52  E_DEFAULT_WORKER
5960: 5f 54 48 52 45 41 44 53 5d 20 6f 70 74 69 6f 6e  _THREADS] option
5970: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
5980: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 49 4e  TION {SQLITE_MIN
5990: 49 4d 55 4d 5f 46 49 4c 45 5f 44 45 53 43 52 49  IMUM_FILE_DESCRI
59a0: 50 54 4f 52 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b  PTOR=<i>N</i>} {
59b0: 0a 20 20 54 68 65 20 75 6e 69 78 20 5b 56 46 53  .  The unix [VFS
59c0: 5d 20 77 69 6c 6c 20 6e 65 76 65 72 20 75 73 65  ] will never use
59d0: 20 61 20 66 69 6c 65 20 64 65 73 63 72 69 70 74   a file descript
59e0: 6f 72 20 6c 65 73 73 20 74 68 61 6e 20 3c 69 3e  or less than <i>
59f0: 4e 3c 2f 69 3e 2e 20 20 54 68 65 0a 20 20 64 65  N</i>.  The.  de
5a00: 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 66 20 3c  fault value of <
5a10: 69 3e 4e 3c 2f 69 3e 20 69 73 20 33 2e 0a 20 20  i>N</i> is 3..  
5a20: 3c 70 3e 0a 20 20 41 76 6f 69 64 69 6e 67 20 74  <p>.  Avoiding t
5a30: 68 65 20 75 73 65 20 6f 66 20 6c 6f 77 2d 6e 75  he use of low-nu
5a40: 6d 62 65 72 65 64 20 66 69 6c 65 20 64 65 73 63  mbered file desc
5a50: 72 69 70 74 6f 72 73 20 69 73 20 61 20 64 65 66  riptors is a def
5a60: 65 6e 73 65 20 61 67 61 69 6e 73 74 0a 20 20 61  ense against.  a
5a70: 63 63 69 64 65 6e 74 61 6c 20 64 61 74 61 62 61  ccidental databa
5a80: 73 65 20 63 6f 72 72 75 70 74 69 6f 6e 2e 20 20  se corruption.  
5a90: 49 66 20 61 20 64 61 74 61 62 61 73 65 20 66 69  If a database fi
5aa0: 6c 65 20 77 61 73 20 6f 70 65 6e 65 64 20 75 73  le was opened us
5ab0: 69 6e 67 0a 20 20 66 69 6c 65 20 64 65 73 63 72  ing.  file descr
5ac0: 69 70 74 6f 72 20 32 2c 20 66 6f 72 20 65 78 61  iptor 2, for exa
5ad0: 6d 70 6c 65 2c 20 61 6e 64 20 74 68 65 6e 20 61  mple, and then a
5ae0: 6e 20 61 73 73 65 72 74 28 29 20 66 61 69 6c 65  n assert() faile
5af0: 64 20 61 6e 64 20 69 6e 76 6f 6b 65 64 0a 20 20  d and invoked.  
5b00: 77 72 69 74 65 28 32 2c 2e 2e 2e 29 2c 20 74 68  write(2,...), th
5b10: 61 74 20 77 6f 75 6c 64 20 6c 69 6b 65 6c 79 20  at would likely 
5b20: 63 61 75 73 65 20 64 61 74 61 62 61 73 65 20 63  cause database c
5b30: 6f 72 72 75 70 74 69 6f 6e 20 62 79 20 6f 76 65  orruption by ove
5b40: 72 77 72 69 74 69 6e 67 0a 20 20 70 61 72 74 20  rwriting.  part 
5b50: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
5b60: 66 69 6c 65 20 77 69 74 68 20 74 68 65 20 61 73  file with the as
5b70: 73 65 72 74 69 6f 6e 20 65 72 72 6f 72 20 6d 65  sertion error me
5b80: 73 73 61 67 65 2e 20 20 55 73 69 6e 67 20 6f 6e  ssage.  Using on
5b90: 6c 79 0a 20 20 68 69 67 68 65 72 2d 76 61 6c 75  ly.  higher-valu
5ba0: 65 64 20 66 69 6c 65 20 64 65 73 63 72 69 70 74  ed file descript
5bb0: 6f 72 73 20 61 76 6f 69 64 73 20 74 68 69 73 20  ors avoids this 
5bc0: 70 6f 74 65 6e 74 69 61 6c 20 70 72 6f 62 6c 65  potential proble
5bd0: 6d 2e 20 20 54 68 65 20 0a 20 20 70 72 6f 74 65  m.  The .  prote
5be0: 63 74 69 6f 6e 20 61 67 61 69 6e 73 74 0a 20 20  ction against.  
5bf0: 75 73 69 6e 67 20 6c 6f 77 2d 6e 75 6d 62 65 72  using low-number
5c00: 65 64 20 66 69 6c 65 20 64 65 73 63 72 69 70 74  ed file descript
5c10: 6f 72 73 20 63 61 6e 20 62 65 20 64 69 73 61 62  ors can be disab
5c20: 6c 65 64 20 62 79 20 73 65 74 74 69 6e 67 20 74  led by setting t
5c30: 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69  his.  compile-ti
5c40: 6d 65 20 6f 70 74 69 6f 6e 20 74 6f 20 30 2e 0a  me option to 0..
5c50: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
5c60: 4e 20 7b 53 51 4c 49 54 45 5f 50 4f 57 45 52 53  N {SQLITE_POWERS
5c70: 41 46 45 5f 4f 56 45 52 57 52 49 54 45 3d 3c 69  AFE_OVERWRITE=<i
5c80: 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c  >&lt;0 or 1&gt;<
5c90: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  /i>} {.  This op
5ca0: 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68 65  tion changes the
5cb0: 20 64 65 66 61 75 6c 74 20 61 73 73 75 6d 70 74   default assumpt
5cc0: 69 6f 6e 20 61 62 6f 75 74 20 5b 70 6f 77 65 72  ion about [power
5cd0: 73 61 66 65 20 6f 76 65 72 77 72 69 74 65 5d 0a  safe overwrite].
5ce0: 20 20 66 6f 72 20 74 68 65 20 75 6e 64 65 72 6c    for the underl
5cf0: 79 69 6e 67 20 66 69 6c 65 73 79 73 74 65 6d 73  ying filesystems
5d00: 20 66 6f 72 20 74 68 65 20 75 6e 69 78 20 61 6e   for the unix an
5d10: 64 20 77 69 6e 64 6f 77 73 20 5b 56 46 53 65 73  d windows [VFSes
5d20: 5d 2e 0a 20 20 53 65 74 74 69 6e 67 20 53 51 4c  ]..  Setting SQL
5d30: 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56  ITE_POWERSAFE_OV
5d40: 45 52 57 52 49 54 45 20 74 6f 20 31 20 63 61 75  ERWRITE to 1 cau
5d50: 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 61 73  ses SQLite to as
5d60: 73 75 6d 65 20 74 68 61 74 0a 20 20 61 70 70 6c  sume that.  appl
5d70: 69 63 61 74 69 6f 6e 2d 6c 65 76 65 6c 20 77 72  ication-level wr
5d80: 69 74 65 73 20 63 61 6e 6e 6f 74 20 63 68 61 6e  ites cannot chan
5d90: 67 65 73 20 62 79 74 65 73 20 6f 75 74 73 69 64  ges bytes outsid
5da0: 65 20 74 68 65 20 72 61 6e 67 65 20 6f 66 0a 20  e the range of. 
5db0: 20 62 79 74 65 73 20 77 72 69 74 74 65 6e 20 65   bytes written e
5dc0: 76 65 6e 20 69 66 20 74 68 65 20 77 72 69 74 65  ven if the write
5dd0: 20 6f 63 63 75 72 73 20 6a 75 73 74 20 62 65 66   occurs just bef
5de0: 6f 72 65 20 61 20 70 6f 77 65 72 20 6c 6f 73 73  ore a power loss
5df0: 2e 0a 20 20 57 69 74 68 20 53 51 4c 49 54 45 5f  ..  With SQLITE_
5e00: 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52  POWERSAFE_OVERWR
5e10: 49 54 45 20 73 65 74 20 74 6f 20 30 2c 20 53 51  ITE set to 0, SQ
5e20: 4c 69 74 65 20 61 73 73 75 6d 65 73 20 74 68 61  Lite assumes tha
5e30: 74 20 6f 74 68 65 72 0a 20 20 62 79 74 65 73 20  t other.  bytes 
5e40: 69 6e 20 74 68 65 20 73 61 6d 65 20 73 65 63 74  in the same sect
5e50: 6f 72 20 77 69 74 68 20 61 20 77 72 69 74 74 65  or with a writte
5e60: 6e 20 62 79 74 65 20 6d 69 67 68 74 20 62 65 20  n byte might be 
5e70: 63 68 61 6e 67 65 64 20 6f 72 20 0a 20 20 64 61  changed or .  da
5e80: 6d 61 67 65 64 20 62 79 20 61 20 70 6f 77 65 72  maged by a power
5e90: 20 6c 6f 73 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c   loss..}..COMPIL
5ea0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
5eb0: 5f 52 45 56 45 52 53 45 5f 55 4e 4f 52 44 45 52  _REVERSE_UNORDER
5ec0: 45 44 5f 53 45 4c 45 43 54 53 7d 20 7b 0a 20 20  ED_SELECTS} {.  
5ed0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
5ee0: 65 73 20 74 68 65 20 5b 50 52 41 47 4d 41 20 72  es the [PRAGMA r
5ef0: 65 76 65 72 73 65 5f 75 6e 6f 72 64 65 72 65 64  everse_unordered
5f00: 5f 73 65 6c 65 63 74 73 5d 20 73 65 74 74 69 6e  _selects] settin
5f10: 67 20 74 6f 20 62 65 0a 20 20 65 6e 61 62 6c 65  g to be.  enable
5f20: 64 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 57  d by default.  W
5f30: 68 65 6e 20 65 6e 61 62 6c 65 64 2c 20 5b 53 45  hen enabled, [SE
5f40: 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73  LECT] statements
5f50: 20 74 68 61 74 20 6c 61 63 6b 20 61 6e 0a 20 20   that lack an.  
5f60: 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 20  ORDER BY clause 
5f70: 77 69 6c 6c 20 72 75 6e 20 69 6e 20 72 65 76 65  will run in reve
5f80: 72 73 65 20 6f 72 64 65 72 2e 3c 70 3e 0a 20 20  rse order.<p>.  
5f90: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  This option is u
5fa0: 73 65 66 75 6c 20 66 6f 72 20 64 65 74 65 63 74  seful for detect
5fb0: 69 6e 67 20 77 68 65 6e 20 61 70 70 6c 69 63 61  ing when applica
5fc0: 74 69 6f 6e 73 20 28 69 6e 63 6f 72 72 65 63 74  tions (incorrect
5fd0: 6c 79 29 0a 20 20 61 73 73 75 6d 65 20 74 68 61  ly).  assume tha
5fe0: 74 20 74 68 65 20 6f 72 64 65 72 20 6f 66 20 72  t the order of r
5ff0: 6f 77 73 20 69 6e 20 61 20 53 45 4c 45 43 54 20  ows in a SELECT 
6000: 77 69 74 68 6f 75 74 20 61 6e 20 4f 52 44 45 52  without an ORDER
6010: 20 42 59 20 63 6c 61 75 73 65 0a 20 20 77 69 6c   BY clause.  wil
6020: 6c 20 61 6c 77 61 79 73 20 62 65 20 74 68 65 20  l always be the 
6030: 73 61 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  same..}..COMPILE
6040: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
6050: 53 4f 52 54 45 52 5f 50 4d 41 53 5a 3d 3c 69 3e  SORTER_PMASZ=<i>
6060: 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20 6d 75  N</i>} {.  If mu
6070: 6c 74 69 2d 74 68 72 65 61 64 65 64 20 70 72 6f  lti-threaded pro
6080: 63 65 73 73 69 6e 67 20 69 73 20 65 6e 61 62 6c  cessing is enabl
6090: 65 64 20 76 69 61 20 74 68 65 0a 20 20 5b 50 52  ed via the.  [PR
60a0: 41 47 4d 41 20 74 68 72 65 61 64 73 5d 20 73 65  AGMA threads] se
60b0: 74 74 69 6e 67 2c 20 74 68 65 6e 20 73 6f 72 74  tting, then sort
60c0: 20 6f 70 65 72 61 74 69 6f 6e 73 20 77 69 6c 6c   operations will
60d0: 0a 20 20 61 74 74 65 6d 70 74 20 74 6f 20 73 74  .  attempt to st
60e0: 61 72 74 20 68 65 6c 70 65 72 20 74 68 72 65 61  art helper threa
60f0: 64 73 20 77 68 65 6e 20 74 68 65 20 61 6d 6f 75  ds when the amou
6100: 6e 74 20 6f 66 20 63 6f 6e 74 65 6e 74 0a 20 20  nt of content.  
6110: 74 6f 20 62 65 20 73 6f 72 74 65 64 20 65 78 63  to be sorted exc
6120: 65 65 64 73 20 74 68 65 20 6d 69 6e 69 6d 75 6d  eeds the minimum
6130: 20 6f 66 20 74 68 65 20 5b 63 61 63 68 65 5f 73   of the [cache_s
6140: 69 7a 65 5d 20 61 6e 64 20 50 4d 41 20 53 69 7a  ize] and PMA Siz
6150: 65 0a 20 20 64 65 74 65 72 6d 69 6e 65 64 20 62  e.  determined b
6160: 79 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f  y the [SQLITE_CO
6170: 4e 46 49 47 5f 50 4d 41 53 5a 5d 20 73 74 61 72  NFIG_PMASZ] star
6180: 74 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a 20  t-time option.. 
6190: 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   This compile-ti
61a0: 6d 65 20 6f 70 74 69 6f 6e 20 73 65 74 73 20 74  me option sets t
61b0: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
61c0: 20 66 6f 72 20 74 68 65 0a 20 20 5b 53 51 4c 49   for the.  [SQLI
61d0: 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 5d  TE_CONFIG_PMASZ]
61e0: 20 73 74 61 72 74 2d 74 69 6d 65 20 6f 70 74 69   start-time opti
61f0: 6f 6e 2e 0a 20 20 54 68 65 20 64 65 66 61 75 6c  on..  The defaul
6200: 74 20 76 61 6c 75 65 20 69 73 20 32 35 30 2e 0a  t value is 250..
6210: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6220: 4e 20 7b 53 51 4c 49 54 45 5f 53 54 4d 54 4a 52  N {SQLITE_STMTJR
6230: 4e 4c 5f 53 50 49 4c 4c 3d 3c 69 3e 4e 3c 2f 69  NL_SPILL=<i>N</i
6240: 3e 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  >} {.  The SQLIT
6250: 45 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c  E_STMTJRNL_SPILL
6260: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
6270: 74 69 6f 6e 20 64 65 74 65 72 6d 69 6e 65 73 20  tion determines 
6280: 74 68 65 0a 20 20 64 65 66 61 75 6c 74 20 73 65  the.  default se
6290: 74 74 69 6e 67 20 6f 66 20 74 68 65 20 5b 53 51  tting of the [SQ
62a0: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 54 4d 54  LITE_CONFIG_STMT
62b0: 4a 52 4e 4c 5f 53 50 49 4c 4c 5d 20 73 74 61 72  JRNL_SPILL] star
62c0: 74 2d 74 69 6d 65 0a 20 20 73 65 74 74 69 6e 67  t-time.  setting
62d0: 2e 20 20 54 68 61 74 20 73 65 74 74 69 6e 67 20  .  That setting 
62e0: 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 73  determines the s
62f0: 69 7a 65 20 74 68 72 65 73 68 6f 6c 64 20 61 62  ize threshold ab
6300: 6f 76 65 20 77 68 69 63 68 0a 20 20 5b 73 74 61  ove which.  [sta
6310: 74 65 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c 73 5d  tement journals]
6320: 20 61 72 65 20 6d 6f 76 65 64 20 66 72 6f 6d 20   are moved from 
6330: 6d 65 6d 6f 72 79 20 74 6f 20 64 69 73 6b 2e 0a  memory to disk..
6340: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6350: 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e 33 32 5f  N {SQLITE_WIN32_
6360: 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54 68 69 73  MALLOC} {.  This
6370: 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20   option enables 
6380: 74 68 65 20 75 73 65 20 6f 66 20 74 68 65 20 57  the use of the W
6390: 69 6e 64 6f 77 73 20 48 65 61 70 20 41 50 49 20  indows Heap API 
63a0: 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20 6d 65  functions for me
63b0: 6d 6f 72 79 0a 20 20 61 6c 6c 6f 63 61 74 69 6f  mory.  allocatio
63c0: 6e 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65  n instead of the
63d0: 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72   standard librar
63e0: 79 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64 20 66  y malloc() and f
63f0: 72 65 65 28 29 20 72 6f 75 74 69 6e 65 73 2e 0a  ree() routines..
6400: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6410: 4e 20 7b 59 59 53 54 41 43 4b 44 45 50 54 48 3d  N {YYSTACKDEPTH=
6420: 3c 69 3e 26 6c 74 3b 6d 61 78 5f 64 65 70 74 68  <i>&lt;max_depth
6430: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
6440: 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68  is macro sets th
6450: 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74 68 20  e maximum depth 
6460: 6f 66 20 74 68 65 20 4c 41 4c 52 28 31 29 20 73  of the LALR(1) s
6470: 74 61 63 6b 20 75 73 65 64 20 62 79 0a 20 20 74  tack used by.  t
6480: 68 65 20 53 51 4c 20 70 61 72 73 65 72 20 77 69  he SQL parser wi
6490: 74 68 69 6e 20 53 51 4c 69 74 65 2e 20 20 54 68  thin SQLite.  Th
64a0: 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20  e default value 
64b0: 69 73 20 31 30 30 2e 20 20 41 20 74 79 70 69 63  is 100.  A typic
64c0: 61 6c 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e  al.  application
64d0: 20 77 69 6c 6c 20 75 73 65 20 6c 65 73 73 20 74   will use less t
64e0: 68 61 6e 20 61 62 6f 75 74 20 32 30 20 6c 65 76  han about 20 lev
64f0: 65 6c 73 20 6f 66 20 74 68 65 20 73 74 61 63 6b  els of the stack
6500: 2e 0a 20 20 44 65 76 65 6c 6f 70 65 72 73 20 77  ..  Developers w
6510: 68 6f 73 65 20 61 70 70 6c 69 63 61 74 69 6f 6e  hose application
6520: 73 20 63 6f 6e 74 61 69 6e 20 53 51 4c 20 73 74  s contain SQL st
6530: 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 0a 20  atements that . 
6540: 20 6e 65 65 64 20 6d 6f 72 65 20 74 68 61 6e 20   need more than 
6550: 31 30 30 20 4c 41 4c 52 28 31 29 20 73 74 61 63  100 LALR(1) stac
6560: 6b 20 65 6e 74 72 69 65 73 20 73 68 6f 75 6c 64  k entries should
6570: 20 73 65 72 69 6f 75 73 6c 79 0a 20 20 63 6f 6e   seriously.  con
6580: 73 69 64 65 72 20 72 65 66 61 63 74 6f 72 69 6e  sider refactorin
6590: 67 20 74 68 65 69 72 20 53 51 4c 20 61 73 20 69  g their SQL as i
65a0: 74 20 69 73 20 6c 69 6b 65 6c 79 20 74 6f 20 62  t is likely to b
65b0: 65 20 77 65 6c 6c 20 62 65 79 6f 6e 64 0a 20 20  e well beyond.  
65c0: 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66 20 61  the ability of a
65d0: 6e 79 20 68 75 6d 61 6e 20 74 6f 20 63 6f 6d 70  ny human to comp
65e0: 72 65 68 65 6e 64 2e 0a 7d 0a 3c 2f 74 63 6c 3e  rehend..}.</tcl>
65f0: 0a 0a 3c 68 31 3e 20 4f 70 74 69 6f 6e 73 20 54  ..<h1> Options T
6600: 6f 20 53 65 74 20 53 69 7a 65 20 4c 69 6d 69 74  o Set Size Limit
6610: 73 3c 2f 68 31 3e 0a 0a 3c 70 3e 54 68 65 72 65  s</h1>..<p>There
6620: 20 61 72 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   are compile-tim
6630: 65 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 20 77  e options that w
6640: 69 6c 6c 20 73 65 74 20 75 70 70 65 72 20 62 6f  ill set upper bo
6650: 75 6e 64 73 0a 6f 6e 20 74 68 65 20 73 69 7a 65  unds.on the size
6660: 73 20 6f 66 20 76 61 72 69 6f 75 73 20 73 74 72  s of various str
6670: 75 63 74 75 72 65 73 20 69 6e 20 53 51 4c 69 74  uctures in SQLit
6680: 65 2e 20 20 54 68 65 20 63 6f 6d 70 69 6c 65 2d  e.  The compile-
6690: 74 69 6d 65 0a 6f 70 74 69 6f 6e 73 20 6e 6f 72  time.options nor
66a0: 6d 61 6c 6c 79 20 73 65 74 20 61 20 68 61 72 64  mally set a hard
66b0: 20 75 70 70 65 72 20 62 6f 75 6e 64 20 74 68 61   upper bound tha
66c0: 74 20 63 61 6e 20 62 65 20 63 68 61 6e 67 65 64  t can be changed
66d0: 0a 61 74 20 72 75 6e 2d 74 69 6d 65 20 6f 6e 20  .at run-time on 
66e0: 69 6e 64 69 76 69 64 75 61 6c 20 5b 64 61 74 61  individual [data
66f0: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  base connections
6700: 5d 20 75 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c  ] using the.[sql
6710: 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d 20 69 6e  ite3_limit()] in
6720: 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70  terface.</p>..<p
6730: 3e 54 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  >The compile-tim
6740: 65 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 73 65  e options for se
6750: 74 74 69 6e 67 20 75 70 70 65 72 20 62 6f 75 6e  tting upper boun
6760: 64 73 20 61 72 65 0a 5b 6c 69 6d 69 74 73 20 7c  ds are.[limits |
6770: 20 64 6f 63 75 6d 65 6e 74 65 64 20 73 65 70 61   documented sepa
6780: 72 61 74 65 6c 79 5d 2e 20 20 54 68 65 20 66 6f  rately].  The fo
6790: 6c 6c 6f 77 69 6e 67 20 69 73 20 61 20 6c 69 73  llowing is a lis
67a0: 74 20 6f 66 0a 74 68 65 20 61 76 61 69 6c 61 62  t of.the availab
67b0: 6c 65 20 73 65 74 74 69 6e 67 73 3a 3c 2f 70 3e  le settings:</p>
67c0: 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 20 5b 53 51 4c  ..<ul>.<li> [SQL
67d0: 49 54 45 5f 4d 41 58 5f 41 54 54 41 43 48 45 44  ITE_MAX_ATTACHED
67e0: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
67f0: 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e  QLITE_MAX_COLUMN
6800: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
6810: 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4d 50 4f 55  QLITE_MAX_COMPOU
6820: 4e 44 5f 53 45 4c 45 43 54 5d 20 20 3c 2f 6c 69  ND_SELECT]  </li
6830: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
6840: 41 58 5f 45 58 50 52 5f 44 45 50 54 48 5d 20 20  AX_EXPR_DEPTH]  
6850: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
6860: 54 45 5f 4d 41 58 5f 46 55 4e 43 54 49 4f 4e 5f  TE_MAX_FUNCTION_
6870: 41 52 47 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  ARG]  </li>.<li>
6880: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e   [SQLITE_MAX_LEN
6890: 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  GTH]  </li>.<li>
68a0: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 49 4b   [SQLITE_MAX_LIK
68b0: 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48  E_PATTERN_LENGTH
68c0: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
68d0: 51 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f 43  QLITE_MAX_PAGE_C
68e0: 4f 55 4e 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69  OUNT]  </li>.<li
68f0: 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 53 51  > [SQLITE_MAX_SQ
6900: 4c 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e  L_LENGTH]  </li>
6910: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
6920: 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45  X_VARIABLE_NUMBE
6930: 52 5d 20 20 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a  R]  </li>.</ul>.
6940: 0a 3c 61 20 6e 61 6d 65 3d 22 63 6f 6e 74 72 6f  .<a name="contro
6950: 6c 66 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a  lfeatures"></a>.
6960: 3c 68 31 3e 20 4f 70 74 69 6f 6e 73 20 54 6f 20  <h1> Options To 
6970: 43 6f 6e 74 72 6f 6c 20 4f 70 65 72 61 74 69 6e  Control Operatin
6980: 67 20 43 68 61 72 61 63 74 65 72 69 73 74 69 63  g Characteristic
6990: 73 3c 2f 68 31 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f  s</h1>..<tcl>.CO
69a0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
69b0: 4c 49 54 45 5f 34 5f 42 59 54 45 5f 41 4c 49 47  LITE_4_BYTE_ALIG
69c0: 4e 45 44 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20  NED_MALLOC} {.  
69d0: 4f 6e 20 6d 6f 73 74 20 73 79 73 74 65 6d 73 2c  On most systems,
69e0: 20 74 68 65 20 6d 61 6c 6c 6f 63 28 29 20 73 79   the malloc() sy
69f0: 73 74 65 6d 20 63 61 6c 6c 20 72 65 74 75 72 6e  stem call return
6a00: 73 20 61 20 62 75 66 66 65 72 20 74 68 61 74 20  s a buffer that 
6a10: 69 73 0a 20 20 61 6c 69 67 6e 65 64 20 74 6f 20  is.  aligned to 
6a20: 61 6e 20 38 2d 62 79 74 65 20 62 6f 75 6e 64 61  an 8-byte bounda
6a30: 72 79 2e 20 20 42 75 74 20 6f 6e 20 73 6f 6d 65  ry.  But on some
6a40: 20 73 79 73 74 65 6d 73 20 28 65 78 3a 20 77 69   systems (ex: wi
6a50: 6e 64 6f 77 73 29 20 6d 61 6c 6c 6f 63 28 29 0a  ndows) malloc().
6a60: 20 20 72 65 74 75 72 6e 73 20 34 2d 62 79 74 65    returns 4-byte
6a70: 20 61 6c 69 67 6e 65 64 20 70 6f 69 6e 74 65 72   aligned pointer
6a80: 2e 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d  .  This compile-
6a90: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 6d 75 73 74  time option must
6aa0: 20 62 65 20 75 73 65 64 0a 20 20 6f 6e 20 73 79   be used.  on sy
6ab0: 73 74 65 6d 73 20 74 68 61 74 20 72 65 74 75 72  stems that retur
6ac0: 6e 20 34 2d 62 79 74 65 20 61 6c 69 67 6e 65 64  n 4-byte aligned
6ad0: 20 70 6f 69 6e 74 65 72 73 20 66 72 6f 6d 20 6d   pointers from m
6ae0: 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 43 4f 4d 50  alloc()..}..COMP
6af0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
6b00: 54 45 5f 43 41 53 45 5f 53 45 4e 53 49 54 49 56  TE_CASE_SENSITIV
6b10: 45 5f 4c 49 4b 45 7d 20 7b 0a 20 20 49 66 20 74  E_LIKE} {.  If t
6b20: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70 72  his option is pr
6b30: 65 73 65 6e 74 2c 20 74 68 65 6e 20 74 68 65 20  esent, then the 
6b40: 62 75 69 6c 74 2d 69 6e 20 5b 4c 49 4b 45 5d 20  built-in [LIKE] 
6b50: 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 62 65  operator will be
6b60: 0a 20 20 63 61 73 65 20 73 65 6e 73 69 74 69 76  .  case sensitiv
6b70: 65 2e 20 20 54 68 69 73 20 73 61 6d 65 20 65 66  e.  This same ef
6b80: 66 65 63 74 20 63 61 6e 20 62 65 20 61 63 68 69  fect can be achi
6b90: 65 76 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65  eved at run-time
6ba0: 20 75 73 69 6e 67 0a 20 20 74 68 65 20 5b 63 61   using.  the [ca
6bb0: 73 65 5f 73 65 6e 73 69 74 69 76 65 5f 6c 69 6b  se_sensitive_lik
6bc0: 65 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f  e pragma]..}..CO
6bd0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
6be0: 4c 49 54 45 5f 44 49 52 45 43 54 5f 4f 56 45 52  LITE_DIRECT_OVER
6bf0: 46 4c 4f 57 5f 52 45 41 44 7d 20 7b 0a 20 20 57  FLOW_READ} {.  W
6c00: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
6c10: 69 73 20 70 72 65 73 65 6e 74 2c 20 63 6f 6e 74  is present, cont
6c20: 65 6e 74 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e  ent contained in
6c30: 0a 20 20 5b 6f 76 65 72 66 6c 6f 77 20 70 61 67  .  [overflow pag
6c40: 65 73 5d 20 6f 66 20 74 68 65 20 64 61 74 61 62  es] of the datab
6c50: 61 73 65 20 66 69 6c 65 20 69 73 20 72 65 61 64  ase file is read
6c60: 20 64 69 72 65 63 74 6c 79 20 66 72 6f 6d 20 64   directly from d
6c70: 69 73 6b 2c 0a 20 20 62 79 70 61 73 73 69 6e 67  isk,.  bypassing
6c80: 20 74 68 65 20 5b 70 61 67 65 20 63 61 63 68 65   the [page cache
6c90: 5d 2c 20 64 75 72 69 6e 67 20 72 65 61 64 20 74  ], during read t
6ca0: 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20 49 6e  ransactions.  In
6cb0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a 20 20   applications.  
6cc0: 74 68 61 74 20 64 6f 20 61 20 6c 6f 74 20 6f 66  that do a lot of
6cd0: 20 72 65 61 64 73 20 6f 66 20 6c 61 72 67 65 20   reads of large 
6ce0: 42 4c 4f 42 73 2c 20 74 68 69 73 20 6f 70 74 69  BLOBs, this opti
6cf0: 6f 6e 20 6d 69 67 68 74 20 69 6d 70 72 6f 76 65  on might improve
6d00: 20 72 65 61 64 0a 20 20 70 65 72 66 6f 72 6d 61   read.  performa
6d10: 6e 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  nce..}..COMPILE_
6d20: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 48  OPTION {SQLITE_H
6d30: 41 56 45 5f 49 53 4e 41 4e 7d 20 7b 0a 20 20 49  AVE_ISNAN} {.  I
6d40: 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  f this option is
6d50: 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 53   present, then S
6d60: 51 4c 69 74 65 20 77 69 6c 6c 20 75 73 65 20 74  QLite will use t
6d70: 68 65 20 69 73 6e 61 6e 28 29 20 66 75 6e 63 74  he isnan() funct
6d80: 69 6f 6e 20 66 72 6f 6d 0a 20 20 74 68 65 20 73  ion from.  the s
6d90: 79 73 74 65 6d 20 6d 61 74 68 20 6c 69 62 72 61  ystem math libra
6da0: 72 79 2e 20 20 54 68 69 73 20 69 73 20 61 6e 20  ry.  This is an 
6db0: 61 6c 69 61 73 20 66 6f 72 20 74 68 65 20 5b 48  alias for the [H
6dc0: 41 56 45 5f 49 53 4e 41 4e 5d 20 63 6f 6e 66 69  AVE_ISNAN] confi
6dd0: 67 75 72 61 74 69 6f 6e 0a 20 20 6f 70 74 69 6f  guration.  optio
6de0: 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  n..}..COMPILE_OP
6df0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 53 5f  TION {SQLITE_OS_
6e00: 4f 54 48 45 52 3d 3c 69 3e 26 6c 74 3b 30 20 6f  OTHER=<i>&lt;0 o
6e10: 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20  r 1&gt;</i>} {. 
6e20: 20 54 68 65 20 6f 70 74 69 6f 6e 20 63 61 75 73   The option caus
6e30: 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69  es SQLite to omi
6e40: 74 20 69 74 73 20 62 75 69 6c 74 2d 69 6e 20 6f  t its built-in o
6e50: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
6e60: 69 6e 74 65 72 66 61 63 65 73 0a 20 20 66 6f 72  interfaces.  for
6e70: 20 55 6e 69 78 2c 20 57 69 6e 64 6f 77 73 2c 20   Unix, Windows, 
6e80: 61 6e 64 20 4f 53 2f 32 2e 20 20 54 68 65 20 72  and OS/2.  The r
6e90: 65 73 75 6c 74 69 6e 67 20 6c 69 62 72 61 72 79  esulting library
6ea0: 20 77 69 6c 6c 20 68 61 76 65 20 6e 6f 20 64 65   will have no de
6eb0: 66 61 75 6c 74 0a 20 20 5b 73 71 6c 69 74 65 33  fault.  [sqlite3
6ec0: 5f 76 66 73 20 7c 20 6f 70 65 72 61 74 69 6e 67  _vfs | operating
6ed0: 20 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61 63   system interfac
6ee0: 65 5d 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e  e].  Application
6ef0: 73 20 6d 75 73 74 20 75 73 65 0a 20 20 5b 73 71  s must use.  [sq
6f00: 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74  lite3_vfs_regist
6f10: 65 72 28 29 5d 20 74 6f 20 72 65 67 69 73 74 65  er()] to registe
6f20: 72 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65  r an appropriate
6f30: 20 69 6e 74 65 72 66 61 63 65 20 62 65 66 6f 72   interface befor
6f40: 65 0a 20 20 75 73 69 6e 67 20 53 51 4c 69 74 65  e.  using SQLite
6f50: 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20  .  Applications 
6f60: 6d 75 73 74 20 61 6c 73 6f 20 73 75 70 70 6c 79  must also supply
6f70: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
6f80: 20 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c 69   for the.  [sqli
6f90: 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 61  te3_os_init()] a
6fa0: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 65  nd [sqlite3_os_e
6fb0: 6e 64 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  nd()] interfaces
6fc0: 2e 20 20 54 68 65 20 75 73 75 61 6c 20 70 72 61  .  The usual pra
6fd0: 63 74 69 63 65 0a 20 20 69 73 20 66 6f 72 20 74  ctice.  is for t
6fe0: 68 65 20 73 75 70 70 6c 69 65 64 20 5b 73 71 6c  he supplied [sql
6ff0: 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20  ite3_os_init()] 
7000: 74 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74  to invoke [sqlit
7010: 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28  e3_vfs_register(
7020: 29 5d 2e 0a 20 20 53 51 4c 69 74 65 20 77 69 6c  )]..  SQLite wil
7030: 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  l automatically 
7040: 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f  invoke [sqlite3_
7050: 6f 73 5f 69 6e 69 74 28 29 5d 20 77 68 65 6e 20  os_init()] when 
7060: 69 74 20 69 6e 69 74 69 61 6c 69 7a 65 73 2e 0a  it initializes..
7070: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
7080: 73 20 74 79 70 69 63 61 6c 6c 79 20 75 73 65 64  s typically used
7090: 20 77 68 65 6e 20 62 75 69 6c 64 69 6e 67 20 53   when building S
70a0: 51 4c 69 74 65 20 66 6f 72 20 61 6e 20 65 6d 62  QLite for an emb
70b0: 65 64 64 65 64 0a 20 20 70 6c 61 74 66 6f 72 6d  edded.  platform
70c0: 20 77 69 74 68 20 61 20 63 75 73 74 6f 6d 20 6f   with a custom o
70d0: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e  perating system.
70e0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
70f0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 45 43 55 52  ON {SQLITE_SECUR
7100: 45 5f 44 45 4c 45 54 45 7d 20 7b 0a 20 20 54 68  E_DELETE} {.  Th
7110: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  is compile-time 
7120: 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74  option changes t
7130: 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69  he default setti
7140: 6e 67 20 6f 66 20 74 68 65 0a 20 20 5b 73 65 63  ng of the.  [sec
7150: 75 72 65 5f 64 65 6c 65 74 65 20 70 72 61 67 6d  ure_delete pragm
7160: 61 5d 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f  a].  When this o
7170: 70 74 69 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65  ption is not use
7180: 64 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65  d, secure_delete
7190: 20 64 65 66 61 75 6c 74 73 0a 20 20 74 6f 20 6f   defaults.  to o
71a0: 66 66 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f  ff.  When this o
71b0: 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e 74  ption is present
71c0: 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20  , secure_delete 
71d0: 64 65 66 61 75 6c 74 73 20 74 6f 20 6f 6e 2e 0a  defaults to on..
71e0: 0a 20 20 54 68 65 20 73 65 63 75 72 65 5f 64 65  .  The secure_de
71f0: 6c 65 74 65 20 73 65 74 74 69 6e 67 20 63 61 75  lete setting cau
7200: 73 65 73 20 64 65 6c 65 74 65 64 20 63 6f 6e 74  ses deleted cont
7210: 65 6e 74 20 74 6f 20 62 65 20 6f 76 65 72 77 72  ent to be overwr
7220: 69 74 74 65 6e 20 77 69 74 68 0a 20 20 7a 65 72  itten with.  zer
7230: 6f 73 2e 20 20 54 68 65 72 65 20 69 73 20 61 20  os.  There is a 
7240: 73 6d 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e 63  small performanc
7250: 65 20 70 65 6e 61 6c 74 79 20 73 69 6e 63 65 20  e penalty since 
7260: 61 64 64 69 74 69 6f 6e 61 6c 20 49 2f 4f 0a 20  additional I/O. 
7270: 20 6d 75 73 74 20 6f 63 63 75 72 2e 20 20 4f 6e   must occur.  On
7280: 20 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64 2c   the other hand,
7290: 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 63   secure_delete c
72a0: 61 6e 20 70 72 65 76 65 6e 74 20 66 72 61 67 6d  an prevent fragm
72b0: 65 6e 74 73 20 6f 66 20 0a 20 20 73 65 6e 73 69  ents of .  sensi
72c0: 74 69 76 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  tive information
72d0: 20 66 72 6f 6d 20 6c 69 6e 67 65 72 69 6e 67 20   from lingering 
72e0: 69 6e 20 75 6e 75 73 65 64 20 70 61 72 74 73 20  in unused parts 
72f0: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
7300: 66 69 6c 65 20 0a 20 20 61 66 74 65 72 20 69 74  file .  after it
7310: 20 68 61 73 20 62 65 65 6e 20 64 65 6c 65 74 65   has been delete
7320: 64 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63 75  d.  See the docu
7330: 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e 20 74 68 65  mentation on the
7340: 0a 20 20 5b 73 65 63 75 72 65 5f 64 65 6c 65 74  .  [secure_delet
7350: 65 20 70 72 61 67 6d 61 5d 20 66 6f 72 20 61 64  e pragma] for ad
7360: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
7370: 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tion..}..COMPILE
7380: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7390: 54 48 52 45 41 44 53 41 46 45 3d 3c 69 3e 26 6c  THREADSAFE=<i>&l
73a0: 74 3b 30 20 6f 72 20 31 20 6f 72 20 32 26 67 74  t;0 or 1 or 2&gt
73b0: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
73c0: 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20  option controls 
73d0: 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 63  whether or not c
73e0: 6f 64 65 20 69 73 20 69 6e 63 6c 75 64 65 64 20  ode is included 
73f0: 69 6e 20 53 51 4c 69 74 65 20 74 6f 0a 20 20 65  in SQLite to.  e
7400: 6e 61 62 6c 65 20 69 74 20 74 6f 20 6f 70 65 72  nable it to oper
7410: 61 74 65 20 73 61 66 65 6c 79 20 69 6e 20 61 20  ate safely in a 
7420: 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 65 6e  multithreaded en
7430: 76 69 72 6f 6e 6d 65 6e 74 2e 20 20 54 68 65 0a  vironment.  The.
7440: 20 20 64 65 66 61 75 6c 74 20 69 73 20 53 51 4c    default is SQL
7450: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31  ITE_THREADSAFE=1
7460: 20 77 68 69 63 68 20 69 73 20 73 61 66 65 20 66   which is safe f
7470: 6f 72 20 75 73 65 20 69 6e 20 61 20 6d 75 6c 74  or use in a mult
7480: 69 74 68 72 65 61 64 65 64 0a 20 20 65 6e 76 69  ithreaded.  envi
7490: 72 6f 6e 6d 65 6e 74 2e 20 20 57 68 65 6e 20 63  ronment.  When c
74a0: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c  ompiled with SQL
74b0: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30  ITE_THREADSAFE=0
74c0: 20 61 6c 6c 20 6d 75 74 65 78 69 6e 67 20 63 6f   all mutexing co
74d0: 64 65 0a 20 20 69 73 20 6f 6d 69 74 74 65 64 20  de.  is omitted 
74e0: 61 6e 64 20 69 74 20 69 73 20 75 6e 73 61 66 65  and it is unsafe
74f0: 20 74 6f 20 75 73 65 20 53 51 4c 69 74 65 20 69   to use SQLite i
7500: 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65  n a multithreade
7510: 64 20 70 72 6f 67 72 61 6d 2e 0a 20 20 57 68 65  d program..  Whe
7520: 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  n compiled with 
7530: 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
7540: 45 3d 32 2c 20 53 51 4c 69 74 65 20 63 61 6e 20  E=2, SQLite can 
7550: 62 65 20 75 73 65 64 20 69 6e 20 61 20 6d 75 6c  be used in a mul
7560: 74 69 74 68 72 65 61 64 65 64 0a 20 20 70 72 6f  tithreaded.  pro
7570: 67 72 61 6d 20 73 6f 20 6c 6f 6e 67 20 61 73 20  gram so long as 
7580: 6e 6f 20 74 77 6f 20 74 68 72 65 61 64 73 20 61  no two threads a
7590: 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68  ttempt to use th
75a0: 65 20 73 61 6d 65 0a 20 20 5b 64 61 74 61 62 61  e same.  [databa
75b0: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 28  se connection] (
75c0: 6f 72 20 61 6e 79 20 5b 70 72 65 70 61 72 65 64  or any [prepared
75d0: 20 73 74 61 74 65 6d 65 6e 74 73 5d 20 64 65 72   statements] der
75e0: 69 76 65 64 20 66 72 6f 6d 0a 20 20 74 68 61 74  ived from.  that
75f0: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
7600: 74 69 6f 6e 29 20 61 74 20 74 68 65 20 73 61 6d  tion) at the sam
7610: 65 20 74 69 6d 65 2e 0a 0a 20 20 54 6f 20 70 75  e time...  To pu
7620: 74 20 69 74 20 61 6e 6f 74 68 65 72 20 77 61 79  t it another way
7630: 2c 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  , SQLITE_THREADS
7640: 41 46 45 3d 31 20 73 65 74 73 20 74 68 65 20 64  AFE=1 sets the d
7650: 65 66 61 75 6c 74 0a 20 20 5b 74 68 72 65 61 64  efault.  [thread
7660: 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 65 72  ing mode] to Ser
7670: 69 61 6c 69 7a 65 64 2e 20 20 53 51 4c 49 54 45  ialized.  SQLITE
7680: 5f 54 48 52 45 41 44 53 41 46 45 3d 32 20 73 65  _THREADSAFE=2 se
7690: 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20  ts the default. 
76a0: 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
76b0: 5d 20 74 6f 20 4d 75 6c 74 69 2d 74 68 72 65 61  ] to Multi-threa
76c0: 64 65 64 2e 20 20 41 6e 64 20 53 51 4c 49 54 45  ded.  And SQLITE
76d0: 5f 54 48 52 45 41 44 53 41 46 45 3d 30 20 73 65  _THREADSAFE=0 se
76e0: 74 73 20 74 68 65 0a 20 20 5b 74 68 72 65 61 64  ts the.  [thread
76f0: 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 69 6e  ing mode] to Sin
7700: 67 6c 65 2d 74 68 72 65 61 64 65 64 2e 0a 0a 20  gle-threaded... 
7710: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 53 51   The value of SQ
7720: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 20  LITE_THREADSAFE 
7730: 63 61 6e 20 62 65 20 64 65 74 65 72 6d 69 6e 65  can be determine
7740: 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20  d at run-time.  
7750: 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74  using the [sqlit
7760: 65 33 5f 74 68 72 65 61 64 73 61 66 65 28 29 5d  e3_threadsafe()]
7770: 20 69 6e 74 65 72 66 61 63 65 2e 0a 0a 20 20 57   interface...  W
7780: 68 65 6e 20 53 51 4c 69 74 65 20 68 61 73 20 62  hen SQLite has b
7790: 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  een compiled wit
77a0: 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  h SQLITE_THREADS
77b0: 41 46 45 3d 31 20 6f 72 0a 20 20 53 51 4c 49 54  AFE=1 or.  SQLIT
77c0: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32 20 74  E_THREADSAFE=2 t
77d0: 68 65 6e 20 74 68 65 20 5b 74 68 72 65 61 64 69  hen the [threadi
77e0: 6e 67 20 6d 6f 64 65 5d 0a 20 20 63 61 6e 20 62  ng mode].  can b
77f0: 65 20 61 6c 74 65 72 65 64 20 61 74 20 72 75 6e  e altered at run
7800: 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20  -time using the 
7810: 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
7820: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f 67  )] interface tog
7830: 65 74 68 65 72 0a 20 20 77 69 74 68 20 6f 6e 65  ether.  with one
7840: 20 6f 66 20 74 68 65 73 65 20 76 65 72 62 73 3a   of these verbs:
7850: 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 5b  ..  <ul>.  <li>[
7860: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49  SQLITE_CONFIG_SI
7870: 4e 47 4c 45 54 48 52 45 41 44 5d 0a 20 20 3c 6c  NGLETHREAD].  <l
7880: 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  i>[SQLITE_CONFIG
7890: 5f 4d 55 4c 54 49 54 48 52 45 41 44 5d 0a 20 20  _MULTITHREAD].  
78a0: 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  <li>[SQLITE_CONF
78b0: 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 5d 0a 20  IG_SERIALIZED]. 
78c0: 20 3c 2f 75 6c 3e 0a 0a 20 20 54 68 65 20 5b 53   </ul>..  The [S
78d0: 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54  QLITE_OPEN_NOMUT
78e0: 45 58 5d 20 61 6e 64 0a 20 20 5b 53 51 4c 49 54  EX] and.  [SQLIT
78f0: 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58  E_OPEN_FULLMUTEX
7900: 5d 20 66 6c 61 67 73 20 74 6f 20 5b 73 71 6c 69  ] flags to [sqli
7910: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 20 63  te3_open_v2()] c
7920: 61 6e 20 61 6c 73 6f 20 62 65 20 75 73 65 64 0a  an also be used.
7930: 20 20 74 6f 20 61 64 6a 75 73 74 20 74 68 65 20    to adjust the 
7940: 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
7950: 20 6f 66 20 69 6e 64 69 76 69 64 75 61 6c 20 5b   of individual [
7960: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
7970: 69 6f 6e 73 5d 0a 20 20 61 74 20 72 75 6e 2d 74  ions].  at run-t
7980: 69 6d 65 2e 0a 0a 20 20 4e 6f 74 65 20 74 68 61  ime...  Note tha
7990: 74 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73  t when SQLite is
79a0: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53   compiled with S
79b0: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
79c0: 3d 30 2c 20 74 68 65 20 63 6f 64 65 0a 20 20 74  =0, the code.  t
79d0: 6f 20 6d 61 6b 65 20 53 51 4c 69 74 65 20 74 68  o make SQLite th
79e0: 72 65 61 64 73 61 66 65 20 69 73 20 6f 6d 69 74  readsafe is omit
79f0: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69  ted from the bui
7a00: 6c 64 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f  ld.  When this o
7a10: 63 63 75 72 73 2c 0a 20 20 69 74 20 69 73 20 69  ccurs,.  it is i
7a20: 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 63 68 61  mpossible to cha
7a30: 6e 67 65 20 74 68 65 20 5b 74 68 72 65 61 64 69  nge the [threadi
7a40: 6e 67 20 6d 6f 64 65 5d 20 61 74 20 73 74 61 72  ng mode] at star
7a50: 74 2d 74 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69  t-time or run-ti
7a60: 6d 65 2e 0a 0a 20 20 53 65 65 20 74 68 65 20 5b  me...  See the [
7a70: 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20  threading mode] 
7a80: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
7a90: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
7aa0: 6f 72 6d 61 74 69 6f 6e 0a 20 20 6f 6e 20 61 73  ormation.  on as
7ab0: 70 65 63 74 73 20 6f 66 20 75 73 69 6e 67 20 53  pects of using S
7ac0: 51 4c 69 74 65 20 69 6e 20 61 20 6d 75 6c 74 69  QLite in a multi
7ad0: 74 68 72 65 61 64 65 64 20 65 6e 76 69 72 6f 6e  threaded environ
7ae0: 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ment..}..COMPILE
7af0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7b00: 54 45 4d 50 5f 53 54 4f 52 45 3d 3c 69 3e 26 6c  TEMP_STORE=<i>&l
7b10: 74 3b 30 20 74 68 72 6f 75 67 68 20 33 26 67 74  t;0 through 3&gt
7b20: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
7b30: 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20  option controls 
7b40: 77 68 65 74 68 65 72 20 74 65 6d 70 6f 72 61 72  whether temporar
7b50: 79 20 66 69 6c 65 73 20 61 72 65 20 73 74 6f 72  y files are stor
7b60: 65 64 20 6f 6e 20 64 69 73 6b 20 6f 72 0a 20 20  ed on disk or.  
7b70: 69 6e 20 6d 65 6d 6f 72 79 2e 20 20 54 68 65 20  in memory.  The 
7b80: 6d 65 61 6e 69 6e 67 73 20 66 6f 72 20 76 61 72  meanings for var
7b90: 69 6f 75 73 20 73 65 74 74 69 6e 67 73 20 6f 66  ious settings of
7ba0: 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   this compile-ti
7bb0: 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 61 72 65 20  me.  option are 
7bc0: 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 0a 20 20 3c  as follows:..  <
7bd0: 74 61 62 6c 65 20 63 65 6c 6c 70 61 64 64 69 6e  table cellpaddin
7be0: 67 3d 22 32 22 20 62 6f 72 64 65 72 3d 22 31 22  g="2" border="1"
7bf0: 3e 0a 20 20 3c 74 72 3e 3c 74 68 3e 53 51 4c 49  >.  <tr><th>SQLI
7c00: 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3c 2f 74  TE_TEMP_STORE</t
7c10: 68 3e 3c 74 68 3e 4d 65 61 6e 69 6e 67 3c 2f 74  h><th>Meaning</t
7c20: 68 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74  h></tr>.  <tr><t
7c30: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
7c40: 3e 30 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79  >0</td><td>Alway
7c50: 73 20 75 73 65 20 74 65 6d 70 6f 72 61 72 79 20  s use temporary 
7c60: 66 69 6c 65 73 3c 2f 74 64 3e 3c 2f 74 72 3e 0a  files</td></tr>.
7c70: 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d    <tr><td align=
7c80: 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c  "center">1</td><
7c90: 74 64 3e 55 73 65 20 66 69 6c 65 73 20 62 79 20  td>Use files by 
7ca0: 64 65 66 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f  default but allo
7cb0: 77 20 74 68 65 0a 20 20 5b 50 52 41 47 4d 41 20  w the.  [PRAGMA 
7cc0: 74 65 6d 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d  temp_store] comm
7cd0: 61 6e 64 20 74 6f 20 6f 76 65 72 72 69 64 65 3c  and to override<
7ce0: 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e  /td></tr>.  <tr>
7cf0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
7d00: 72 22 3e 32 3c 2f 74 64 3e 3c 74 64 3e 55 73 65  r">2</td><td>Use
7d10: 20 6d 65 6d 6f 72 79 20 62 79 20 64 65 66 61 75   memory by defau
7d20: 6c 74 20 62 75 74 20 61 6c 6c 6f 77 20 74 68 65  lt but allow the
7d30: 0a 20 20 5b 50 52 41 47 4d 41 20 74 65 6d 70 5f  .  [PRAGMA temp_
7d40: 73 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64 20 74  store] command t
7d50: 6f 20 6f 76 65 72 72 69 64 65 3c 2f 74 64 3e 3c  o override</td><
7d60: 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61  /tr>.  <tr><td a
7d70: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 33 3c  lign="center">3<
7d80: 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75  /td><td>Always u
7d90: 73 65 20 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f  se memory</td></
7da0: 74 72 3e 0a 20 20 3c 2f 74 61 62 6c 65 3e 0a 0a  tr>.  </table>..
7db0: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 73 65    The default se
7dc0: 74 74 69 6e 67 20 69 73 20 31 2e 20 20 0a 20 20  tting is 1.  .  
7dd0: 41 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  Additional infor
7de0: 6d 61 74 69 6f 6e 20 63 61 6e 20 62 65 20 66 6f  mation can be fo
7df0: 75 6e 64 20 69 6e 20 5b 74 65 6d 70 73 74 6f 72  und in [tempstor
7e00: 65 20 7c 20 74 65 6d 70 66 69 6c 65 73 2e 68 74  e | tempfiles.ht
7e10: 6d 6c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ml]..}..COMPILE_
7e20: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54  OPTION {SQLITE_T
7e30: 52 41 43 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d  RACE_SIZE_LIMIT=
7e40: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66  <i>N</i>} {.  If
7e50: 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20 64   this macro is d
7e60: 65 66 69 6e 65 64 20 74 6f 20 61 20 70 6f 73 69  efined to a posi
7e70: 74 69 76 65 20 69 6e 74 65 67 65 72 20 3c 69 3e  tive integer <i>
7e80: 4e 3c 2f 69 3e 2c 20 74 68 65 6e 20 74 68 65 20  N</i>, then the 
7e90: 6c 65 6e 67 74 68 20 6f 66 0a 20 20 73 74 72 69  length of.  stri
7ea0: 6e 67 73 20 61 6e 64 20 42 4c 4f 42 20 74 68 61  ngs and BLOB tha
7eb0: 74 20 61 72 65 20 65 78 70 61 6e 64 65 64 20 69  t are expanded i
7ec0: 6e 74 6f 20 70 61 72 61 6d 65 74 65 72 73 20 69  nto parameters i
7ed0: 6e 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 0a  n the output of.
7ee0: 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65    [sqlite3_trace
7ef0: 28 29 5d 20 69 73 20 6c 69 6d 69 74 65 64 20 74  ()] is limited t
7f00: 6f 20 3c 69 3e 4e 3c 2f 69 3e 20 62 79 74 65 73  o <i>N</i> bytes
7f10: 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  .  .}..COMPILE_O
7f20: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 53  PTION {SQLITE_US
7f30: 45 5f 55 52 49 7d 20 7b 0a 20 20 54 68 69 73 20  E_URI} {.  This 
7f40: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
7f50: 65 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 5d  e [URI filename]
7f60: 20 70 72 6f 63 65 73 73 20 6c 6f 67 69 63 20 74   process logic t
7f70: 6f 20 62 65 20 65 6e 61 62 6c 65 64 20 62 79 20  o be enabled by 
7f80: 0a 20 20 64 65 66 61 75 6c 74 2e 20 20 0a 7d 0a  .  default.  .}.
7f90: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65  .</tcl>..<a name
7fa0: 3d 22 65 6e 61 62 6c 65 66 65 61 74 75 72 65 73  ="enablefeatures
7fb0: 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 4f 70 74 69  "></a>.<h1> Opti
7fc0: 6f 6e 73 20 54 6f 20 45 6e 61 62 6c 65 20 46 65  ons To Enable Fe
7fd0: 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20  atures Normally 
7fe0: 54 75 72 6e 65 64 20 4f 66 66 3c 2f 68 31 3e 0a  Turned Off</h1>.
7ff0: 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f  .<tcl>.COMPILE_O
8000: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 41 4c  PTION {SQLITE_AL
8010: 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f 52 49 54  LOW_URI_AUTHORIT
8020: 59 7d 20 7b 0a 20 20 5b 55 52 49 20 66 69 6c 65  Y} {.  [URI file
8030: 6e 61 6d 65 73 5d 20 6e 6f 72 6d 61 6c 6c 79 20  names] normally 
8040: 74 68 72 6f 77 73 20 61 6e 20 65 72 72 6f 72 20  throws an error 
8050: 69 66 20 74 68 65 20 61 75 74 68 6f 72 69 74 79  if the authority
8060: 20 73 65 63 74 69 6f 6e 20 69 73 0a 20 20 6e 6f   section is.  no
8070: 74 20 65 69 74 68 65 72 20 65 6d 70 74 79 20 6f  t either empty o
8080: 72 20 22 6c 6f 63 61 6c 68 6f 73 74 22 2e 20 20  r "localhost".  
8090: 48 6f 77 65 76 65 72 2c 20 69 66 20 53 51 4c 69  However, if SQLi
80a0: 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77  te is compiled w
80b0: 69 74 68 0a 20 20 74 68 65 20 53 51 4c 49 54 45  ith.  the SQLITE
80c0: 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f  _ALLOW_URI_AUTHO
80d0: 52 49 54 59 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  RITY compile-tim
80e0: 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74  e option, then t
80f0: 68 65 20 55 52 49 20 69 73 0a 20 20 63 6f 6e 76  he URI is.  conv
8100: 65 72 74 65 64 20 69 6e 74 6f 20 61 20 55 6e 69  erted into a Uni
8110: 66 6f 72 6d 20 4e 61 6d 69 6e 67 20 43 6f 6e 76  form Naming Conv
8120: 65 6e 74 69 6f 6e 20 28 55 4e 43 29 20 66 69 6c  ention (UNC) fil
8130: 65 6e 61 6d 65 20 61 6e 64 20 70 61 73 73 65 64  ename and passed
8140: 0a 20 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 75  .  down to the u
8150: 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61 74  nderlying operat
8160: 69 6e 67 20 73 79 73 74 65 6d 20 74 68 61 74 20  ing system that 
8170: 77 61 79 2e 20 20 0a 20 20 3c 70 3e 0a 20 20 53  way.  .  <p>.  S
8180: 6f 6d 65 20 66 75 74 75 72 65 20 76 65 72 73 69  ome future versi
8190: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 61  ons of SQLite ma
81a0: 79 20 63 68 61 6e 67 65 20 74 6f 20 65 6e 61 62  y change to enab
81b0: 6c 65 20 74 68 69 73 20 66 65 61 74 75 72 65 0a  le this feature.
81c0: 20 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a    by default..}.
81d0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
81e0: 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43 4f 56  SQLITE_ALLOW_COV
81f0: 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e  ERING_INDEX_SCAN
8200: 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67  =<i>&lt;0 or 1&g
8210: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  t;</i>} {.  This
8220: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 20 6d 61   C-preprocess ma
8230: 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 74  cro determines t
8240: 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69  he default setti
8250: 6e 67 20 6f 66 20 74 68 65 0a 20 20 5b 53 51 4c  ng of the.  [SQL
8260: 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52  ITE_CONFIG_COVER
8270: 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 5d 20  ING_INDEX_SCAN] 
8280: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65  configuration se
8290: 74 74 69 6e 67 2e 20 20 49 74 20 64 65 66 61 75  tting.  It defau
82a0: 6c 74 73 0a 20 20 74 6f 20 31 20 28 6f 6e 29 20  lts.  to 1 (on) 
82b0: 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68 61 74  which means that
82c0: 20 63 6f 76 65 72 69 6e 67 20 69 6e 64 69 63 65   covering indice
82d0: 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 66  s are used for f
82e0: 75 6c 6c 20 74 61 62 6c 65 0a 20 20 73 63 61 6e  ull table.  scan
82f0: 73 20 77 68 65 72 65 20 70 6f 73 73 69 62 6c 65  s where possible
8300: 2c 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 72 65  , in order to re
8310: 64 75 63 65 20 49 2f 4f 20 61 6e 64 20 69 6d 70  duce I/O and imp
8320: 72 6f 76 65 20 70 65 72 66 6f 72 6d 61 6e 63 65  rove performance
8330: 2e 0a 20 20 48 6f 77 65 76 65 72 2c 20 74 68 65  ..  However, the
8340: 20 75 73 65 20 6f 66 20 61 20 63 6f 76 65 72 69   use of a coveri
8350: 6e 67 20 69 6e 64 65 78 20 66 6f 72 20 61 20 66  ng index for a f
8360: 75 6c 6c 20 73 63 61 6e 20 77 69 6c 6c 20 63 61  ull scan will ca
8370: 75 73 65 20 72 65 73 75 6c 74 73 0a 20 20 74 6f  use results.  to
8380: 20 61 70 70 65 61 72 20 69 6e 20 61 20 64 69 66   appear in a dif
8390: 66 65 72 65 6e 74 20 6f 72 64 65 72 20 66 72 6f  ferent order fro
83a0: 6d 20 6c 65 67 61 63 79 2c 20 77 68 69 63 68 20  m legacy, which 
83b0: 63 6f 75 6c 64 20 63 61 75 73 65 20 73 6f 6d 65  could cause some
83c0: 0a 20 20 28 69 6e 63 6f 72 72 65 63 74 6c 79 2d  .  (incorrectly-
83d0: 63 6f 64 65 64 29 20 6c 65 67 61 63 79 20 61 70  coded) legacy ap
83e0: 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20 62 72  plications to br
83f0: 65 61 6b 2e 20 20 48 65 6e 63 65 2c 20 74 68 65  eak.  Hence, the
8400: 20 63 6f 76 65 72 69 6e 67 0a 20 20 69 6e 64 65   covering.  inde
8410: 78 20 73 63 61 6e 20 6f 70 74 69 6f 6e 20 63 61  x scan option ca
8420: 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 61 74  n be disabled at
8430: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 6e   compile-time on
8440: 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 77 68   systems that wh
8450: 61 74 0a 20 20 74 6f 20 6d 69 6e 69 6d 69 7a 65  at.  to minimize
8460: 20 74 68 65 69 72 20 72 69 73 6b 20 6f 66 20 65   their risk of e
8470: 78 70 6f 73 69 6e 67 20 65 72 72 6f 72 73 20 69  xposing errors i
8480: 6e 20 6c 65 67 61 63 79 20 61 70 70 6c 69 63 61  n legacy applica
8490: 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  tions..}..COMPIL
84a0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
84b0: 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d 45  _ENABLE_8_3_NAME
84c0: 53 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 32 26  S=<i>&lt;1 or 2&
84d0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20  gt;</i>} {.  If 
84e0: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
84f0: 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66  sor macro is def
8500: 69 6e 65 64 2c 20 74 68 65 6e 20 65 78 74 72 61  ined, then extra
8510: 20 63 6f 64 65 20 69 73 0a 20 20 69 6e 63 6c 75   code is.  inclu
8520: 64 65 64 20 74 68 61 74 20 61 6c 6c 6f 77 73 20  ded that allows 
8530: 53 51 4c 69 74 65 20 74 6f 20 66 75 6e 63 74 69  SQLite to functi
8540: 6f 6e 20 6f 6e 20 61 20 66 69 6c 65 73 79 73 74  on on a filesyst
8550: 65 6d 20 74 68 61 74 0a 20 20 6f 6e 6c 79 20 73  em that.  only s
8560: 75 70 70 6f 72 74 20 38 2b 33 20 66 69 6c 65 6e  upport 8+3 filen
8570: 61 6d 65 73 2e 20 20 49 66 20 74 68 65 20 76 61  ames.  If the va
8580: 6c 75 65 20 6f 66 20 74 68 69 73 20 6d 61 63 72  lue of this macr
8590: 6f 20 69 73 20 31 2c 0a 20 20 74 68 65 6e 20 74  o is 1,.  then t
85a0: 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76  he default behav
85b0: 69 6f 72 20 69 73 20 74 6f 20 63 6f 6e 74 69 6e  ior is to contin
85c0: 75 65 20 74 6f 20 75 73 65 20 6c 6f 6e 67 20 66  ue to use long f
85d0: 69 6c 65 6e 61 6d 65 73 20 61 6e 64 0a 20 20 74  ilenames and.  t
85e0: 6f 20 6f 6e 6c 79 20 75 73 65 20 38 2b 33 20 66  o only use 8+3 f
85f0: 69 6c 65 6e 61 6d 65 73 20 69 66 20 74 68 65 20  ilenames if the 
8600: 0a 20 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  .  database conn
8610: 65 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 65 64  ection is opened
8620: 20 75 73 69 6e 67 20 5b 55 52 49 20 66 69 6c 65   using [URI file
8630: 6e 61 6d 65 73 5d 20 77 69 74 68 0a 20 20 74 68  names] with.  th
8640: 65 20 22 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73  e "<tt>8_3_names
8650: 3d 31 3c 2f 74 74 3e 22 20 71 75 65 72 79 20 70  =1</tt>" query p
8660: 61 72 61 6d 65 74 65 72 2e 20 20 49 66 20 74 68  arameter.  If th
8670: 65 20 76 61 6c 75 65 20 6f 66 0a 20 20 74 68 69  e value of.  thi
8680: 73 20 6d 61 63 72 6f 20 69 73 20 32 2c 20 74 68  s macro is 2, th
8690: 65 6e 20 74 68 65 20 75 73 65 20 6f 66 20 38 2b  en the use of 8+
86a0: 33 20 66 69 6c 65 6e 61 6d 65 73 20 62 65 63 6f  3 filenames beco
86b0: 6d 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a  mes the default.
86c0: 20 20 62 75 74 20 6d 61 79 20 62 65 20 64 69 73    but may be dis
86d0: 61 62 6c 65 64 20 6f 6e 20 75 73 69 6e 67 20 74  abled on using t
86e0: 68 65 20 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73  he <tt>8_3_names
86f0: 3d 30 3c 2f 74 74 3e 20 71 75 65 72 79 20 70 61  =0</tt> query pa
8700: 72 61 6d 65 74 65 72 2e 0a 7d 0a 0a 43 4f 4d 50  rameter..}..COMP
8710: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
8720: 54 45 5f 45 4e 41 42 4c 45 5f 41 50 49 5f 41 52  TE_ENABLE_API_AR
8730: 4d 4f 52 7d 20 7b 0a 20 20 57 68 65 6e 20 64 65  MOR} {.  When de
8740: 66 69 6e 65 64 2c 20 74 68 69 73 20 43 2d 70 72  fined, this C-pr
8750: 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f  eprocessor macro
8760: 20 61 63 74 69 76 61 74 65 73 20 65 78 74 72 61   activates extra
8770: 20 63 6f 64 65 20 74 68 61 74 0a 20 20 61 74 74   code that.  att
8780: 65 6d 70 74 73 20 74 6f 20 64 65 74 65 63 74 20  empts to detect 
8790: 6d 69 73 75 73 65 20 6f 66 20 74 68 65 20 53 51  misuse of the SQ
87a0: 4c 69 74 65 20 41 50 49 2c 20 73 75 63 68 20 61  Lite API, such a
87b0: 73 20 70 61 73 73 69 6e 67 20 69 6e 20 4e 55 4c  s passing in NUL
87c0: 4c 0a 20 20 70 6f 69 6e 74 65 72 73 20 74 6f 20  L.  pointers to 
87d0: 72 65 71 75 69 72 65 64 20 70 61 72 61 6d 65 74  required paramet
87e0: 65 72 73 20 6f 72 20 75 73 69 6e 67 20 6f 62 6a  ers or using obj
87f0: 65 63 74 73 20 61 66 74 65 72 20 74 68 65 79 20  ects after they 
8800: 68 61 76 65 20 62 65 65 6e 0a 20 20 64 65 73 74  have been.  dest
8810: 72 6f 79 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  royed..}..COMPIL
8820: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
8830: 5f 45 4e 41 42 4c 45 5f 41 54 4f 4d 49 43 5f 57  _ENABLE_ATOMIC_W
8840: 52 49 54 45 7d 20 7b 0a 20 20 49 66 20 74 68 69  RITE} {.  If thi
8850: 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72  s C-preprocessor
8860: 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65   macro is define
8870: 64 20 61 6e 64 20 69 66 20 74 68 65 0a 20 20 78  d and if the.  x
8880: 44 65 76 69 63 65 43 68 61 72 61 63 74 65 72 69  DeviceCharacteri
8890: 73 74 69 63 73 20 6d 65 74 68 6f 64 20 6f 66 20  stics method of 
88a0: 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68  [sqlite3_io_meth
88b0: 6f 64 73 5d 20 6f 62 6a 65 63 74 20 66 6f 72 0a  ods] object for.
88c0: 20 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c    a database fil
88d0: 65 20 72 65 70 6f 72 74 73 20 28 76 69 61 20 6f  e reports (via o
88e0: 6e 65 20 6f 66 20 74 68 65 20 5b 53 51 4c 49 54  ne of the [SQLIT
88f0: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 5d 20  E_IOCAP_ATOMIC] 
8900: 62 69 74 73 29 0a 20 20 74 68 61 74 20 74 68 65  bits).  that the
8910: 20 66 69 6c 65 73 79 73 74 65 6d 20 73 75 70 70   filesystem supp
8920: 6f 72 74 73 20 61 74 6f 6d 69 63 20 77 72 69 74  orts atomic writ
8930: 65 73 20 61 6e 64 20 69 66 20 61 20 74 72 61 6e  es and if a tran
8940: 73 61 63 74 69 6f 6e 0a 20 20 69 6e 76 6f 6c 76  saction.  involv
8950: 65 73 20 61 20 63 68 61 6e 67 65 20 74 6f 20 6f  es a change to o
8960: 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 70 61 67  nly a single pag
8970: 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  e of the databas
8980: 65 20 66 69 6c 65 2c 0a 20 20 74 68 65 6e 20 74  e file,.  then t
8990: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63  he transaction c
89a0: 6f 6d 6d 69 74 73 20 77 69 74 68 20 6a 75 73 74  ommits with just
89b0: 20 61 20 73 69 6e 67 6c 65 20 77 72 69 74 65 20   a single write 
89c0: 72 65 71 75 65 73 74 20 6f 66 0a 20 20 61 20 73  request of.  a s
89d0: 69 6e 67 6c 65 20 70 61 67 65 20 6f 66 20 74 68  ingle page of th
89e0: 65 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 6e  e database and n
89f0: 6f 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e  o rollback journ
8a00: 61 6c 20 69 73 20 63 72 65 61 74 65 64 0a 20 20  al is created.  
8a10: 6f 72 20 77 72 69 74 74 65 6e 2e 20 20 4f 6e 20  or written.  On 
8a20: 66 69 6c 65 73 79 73 74 65 6d 73 20 74 68 61 74  filesystems that
8a30: 20 73 75 70 70 6f 72 74 20 61 74 6f 6d 69 63 20   support atomic 
8a40: 77 72 69 74 65 73 2c 20 74 68 69 73 0a 20 20 6f  writes, this.  o
8a50: 70 74 69 6d 69 7a 61 74 69 6f 6e 20 63 61 6e 20  ptimization can 
8a60: 72 65 73 75 6c 74 20 69 6e 20 73 69 67 6e 69 66  result in signif
8a70: 69 63 61 6e 74 20 73 70 65 65 64 20 69 6d 70 72  icant speed impr
8a80: 6f 76 65 6d 65 6e 74 73 20 66 6f 72 0a 20 20 73  ovements for.  s
8a90: 6d 61 6c 6c 20 75 70 64 61 74 65 73 2e 20 20 48  mall updates.  H
8aa0: 6f 77 65 76 65 72 2c 20 66 65 77 20 66 69 6c 65  owever, few file
8ab0: 73 79 73 74 65 6d 73 20 73 75 70 70 6f 72 74 20  systems support 
8ac0: 74 68 69 73 20 63 61 70 61 62 69 6c 69 74 79 0a  this capability.
8ad0: 20 20 61 6e 64 20 74 68 65 20 63 6f 64 65 20 70    and the code p
8ae0: 61 74 68 73 20 74 68 61 74 20 63 68 65 63 6b 20  aths that check 
8af0: 66 6f 72 20 74 68 69 73 20 63 61 70 61 62 69 6c  for this capabil
8b00: 69 74 79 20 73 6c 6f 77 20 64 6f 77 6e 20 77 72  ity slow down wr
8b10: 69 74 65 0a 20 20 70 65 72 66 6f 72 6d 61 6e 63  ite.  performanc
8b20: 65 20 6f 6e 20 73 79 73 74 65 6d 73 20 74 68 61  e on systems tha
8b30: 74 20 6c 61 63 6b 20 61 74 6f 6d 69 63 20 77 72  t lack atomic wr
8b40: 69 74 65 20 63 61 70 61 62 69 6c 69 74 79 2c 20  ite capability, 
8b50: 73 6f 20 74 68 69 73 0a 20 20 66 65 61 74 75 72  so this.  featur
8b60: 65 20 69 73 20 64 69 73 61 62 6c 65 64 20 62 79  e is disabled by
8b70: 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a 43 4f 4d   default..}..COM
8b80: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
8b90: 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d  ITE_ENABLE_COLUM
8ba0: 4e 5f 4d 45 54 41 44 41 54 41 7d 20 7b 0a 20 20  N_METADATA} {.  
8bb0: 57 68 65 6e 20 74 68 69 73 20 43 2d 70 72 65 70  When this C-prep
8bc0: 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69  rocessor macro i
8bd0: 73 20 64 65 66 69 6e 65 64 2c 20 53 51 4c 69 74  s defined, SQLit
8be0: 65 20 69 6e 63 6c 75 64 65 73 20 73 6f 6d 65 0a  e includes some.
8bf0: 20 20 61 64 64 69 74 69 6f 6e 61 6c 20 41 50 49    additional API
8c00: 73 20 74 68 61 74 20 70 72 6f 76 69 64 65 20 63  s that provide c
8c10: 6f 6e 76 65 6e 69 65 6e 74 20 61 63 63 65 73 73  onvenient access
8c20: 20 74 6f 20 6d 65 74 61 2d 64 61 74 61 20 61 62   to meta-data ab
8c30: 6f 75 74 0a 20 20 74 61 62 6c 65 73 20 61 6e 64  out.  tables and
8c40: 20 71 75 65 72 69 65 73 2e 20 20 54 68 65 20 41   queries.  The A
8c50: 50 49 73 20 74 68 61 74 20 61 72 65 20 65 6e 61  PIs that are ena
8c60: 62 6c 65 64 20 62 79 20 74 68 69 73 20 6f 70 74  bled by this opt
8c70: 69 6f 6e 20 61 72 65 3a 0a 0a 20 20 3c 75 6c 3e  ion are:..  <ul>
8c80: 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33  .  <li> [sqlite3
8c90: 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65  _column_database
8ca0: 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20  _name()] </li>. 
8cb0: 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63   <li> [sqlite3_c
8cc0: 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
8cd0: 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20  ame16()] </li>. 
8ce0: 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63   <li> [sqlite3_c
8cf0: 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65  olumn_table_name
8d00: 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e  ()] </li>.  <li>
8d10: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
8d20: 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28 29 5d  _table_name16()]
8d30: 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73   </li>.  <li> [s
8d40: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72  qlite3_column_or
8d50: 69 67 69 6e 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c  igin_name()] </l
8d60: 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74  i>.  <li> [sqlit
8d70: 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
8d80: 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e  _name16()] </li>
8d90: 0a 20 20 3c 2f 75 6c 3e 0a 7d 0a 0a 43 4f 4d 50  .  </ul>.}..COMP
8da0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
8db0: 54 45 5f 45 4e 41 42 4c 45 5f 44 42 53 54 41 54  TE_ENABLE_DBSTAT
8dc0: 5f 56 54 41 42 7d 20 7b 0a 20 20 54 68 69 73 20  _VTAB} {.  This 
8dd0: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74  option enables t
8de0: 68 65 20 5b 64 62 73 74 61 74 20 76 69 72 74 75  he [dbstat virtu
8df0: 61 6c 20 74 61 62 6c 65 5d 2e 0a 7d 0a 0a 43 4f  al table]..}..CO
8e00: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
8e10: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45 58 50 4c  LITE_ENABLE_EXPL
8e20: 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53 7d 20 7b 0a  AIN_COMMENTS} {.
8e30: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64    This option ad
8e40: 64 73 20 65 78 74 72 61 20 6c 6f 67 69 63 20 74  ds extra logic t
8e50: 6f 20 53 51 4c 69 74 65 20 74 68 61 74 20 69 6e  o SQLite that in
8e60: 73 65 72 74 73 20 63 6f 6d 6d 65 6e 74 20 74 65  serts comment te
8e70: 78 74 20 69 6e 74 6f 20 74 68 65 0a 20 20 6f 75  xt into the.  ou
8e80: 74 70 75 74 20 6f 66 20 5b 45 58 50 4c 41 49 4e  tput of [EXPLAIN
8e90: 5d 2e 20 20 54 68 65 73 65 20 65 78 74 72 61 20  ].  These extra 
8ea0: 63 6f 6d 6d 65 6e 74 73 20 75 73 65 20 65 78 74  comments use ext
8eb0: 72 61 20 6d 65 6d 6f 72 79 2c 20 74 68 75 73 0a  ra memory, thus.
8ec0: 20 20 6d 61 6b 69 6e 67 20 5b 70 72 65 70 61 72    making [prepar
8ed0: 65 64 20 73 74 61 74 65 6d 65 6e 74 73 5d 20 6c  ed statements] l
8ee0: 61 72 67 65 72 20 61 6e 64 20 76 65 72 79 20 73  arger and very s
8ef0: 6c 69 67 68 74 6c 79 20 73 6c 6f 77 65 72 2c 20  lightly slower, 
8f00: 61 6e 64 20 73 6f 20 74 68 65 79 20 61 72 65 0a  and so they are.
8f10: 20 20 74 75 72 6e 65 64 20 6f 66 66 20 62 79 20    turned off by 
8f20: 64 65 66 61 75 6c 74 20 61 6e 64 20 69 6e 20 6d  default and in m
8f30: 6f 73 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e  ost application.
8f40: 20 20 42 75 74 20 73 6f 6d 65 20 61 70 70 6c 69    But some appli
8f50: 63 61 74 69 6f 6e 73 2c 20 73 75 63 68 0a 20 20  cations, such.  
8f60: 61 73 20 74 68 65 20 5b 63 6f 6d 6d 61 6e 64 2d  as the [command-
8f70: 6c 69 6e 65 20 73 68 65 6c 6c 5d 20 66 6f 72 20  line shell] for 
8f80: 53 51 4c 69 74 65 2c 20 76 61 6c 75 65 20 63 6c  SQLite, value cl
8f90: 61 72 69 74 79 20 6f 66 20 45 58 50 4c 41 49 4e  arity of EXPLAIN
8fa0: 20 6f 75 74 70 75 74 0a 20 20 6f 76 65 72 20 72   output.  over r
8fb0: 61 77 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 61  aw performance a
8fc0: 6e 64 20 73 6f 20 74 68 69 73 20 63 6f 6d 70 69  nd so this compi
8fd0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
8fe0: 73 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74  s available to t
8ff0: 68 65 6d 2e 0a 20 20 54 68 65 20 53 51 4c 49 54  hem..  The SQLIT
9000: 45 5f 45 4e 41 42 4c 45 5f 45 58 50 4c 41 49 4e  E_ENABLE_EXPLAIN
9010: 5f 43 4f 4d 4d 45 4e 54 53 20 63 6f 6d 70 69 6c  _COMMENTS compil
9020: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73  e-time option is
9030: 20 61 6c 73 6f 20 65 6e 61 62 6c 65 64 0a 20 20   also enabled.  
9040: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 66  automatically if
9050: 20 5b 53 51 4c 49 54 45 5f 44 45 42 55 47 5d 20   [SQLITE_DEBUG] 
9060: 69 73 20 65 6e 61 62 6c 65 64 2e 0a 7d 0a 0a 0a  is enabled..}...
9070: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
9080: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54  SQLITE_ENABLE_FT
9090: 53 33 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  S3} {.  When thi
90a0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
90b0: 6e 65 64 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c  ned in the [amal
90c0: 67 61 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73 69  gamation], versi
90d0: 6f 6e 20 33 0a 20 20 6f 66 20 74 68 65 20 66 75  on 3.  of the fu
90e0: 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20 65  ll-text search e
90f0: 6e 67 69 6e 65 20 69 73 20 61 64 64 65 64 20 74  ngine is added t
9100: 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f  o the build auto
9110: 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f  matically..}..CO
9120: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
9130: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33  LITE_ENABLE_FTS3
9140: 5f 50 41 52 45 4e 54 48 45 53 49 53 7d 20 7b 0a  _PARENTHESIS} {.
9150: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 6f    This option mo
9160: 64 69 66 69 65 73 20 74 68 65 20 71 75 65 72 79  difies the query
9170: 20 70 61 74 74 65 72 6e 20 70 61 72 73 65 72 20   pattern parser 
9180: 69 6e 20 46 54 53 33 20 73 75 63 68 20 74 68 61  in FTS3 such tha
9190: 74 20 69 74 0a 20 20 73 75 70 70 6f 72 74 73 20  t it.  supports 
91a0: 6f 70 65 72 61 74 6f 72 73 20 41 4e 44 20 61 6e  operators AND an
91b0: 64 20 4e 4f 54 20 28 69 6e 20 61 64 64 69 74 69  d NOT (in additi
91c0: 6f 6e 20 74 6f 20 74 68 65 20 75 73 75 61 6c 20  on to the usual 
91d0: 4f 52 20 61 6e 64 20 4e 45 41 52 29 0a 20 20 61  OR and NEAR).  a
91e0: 6e 64 20 61 6c 73 6f 20 61 6c 6c 6f 77 73 20 71  nd also allows q
91f0: 75 65 72 79 20 65 78 70 72 65 73 73 69 6f 6e 73  uery expressions
9200: 20 74 6f 20 63 6f 6e 74 61 69 6e 20 6e 65 73 74   to contain nest
9210: 65 64 20 70 61 72 65 6e 74 68 65 73 69 73 2e 0a  ed parenthesis..
9220: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
9230: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
9240: 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 7d  _FTS3_TOKENIZER}
9250: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
9260: 20 65 6e 61 62 6c 65 73 20 74 68 65 20 74 77 6f   enables the two
9270: 2d 61 72 67 75 6d 65 6e 74 20 76 65 72 73 69 6f  -argument versio
9280: 6e 20 6f 66 20 74 68 65 20 5b 66 74 73 33 5f 74  n of the [fts3_t
9290: 6f 6b 65 6e 69 7a 65 72 28 29 5d 0a 20 20 69 6e  okenizer()].  in
92a0: 74 65 72 66 61 63 65 2e 20 20 54 68 65 20 73 65  terface.  The se
92b0: 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f  cond argument to
92c0: 20 66 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28   fts3_tokenizer(
92d0: 29 20 69 73 20 73 75 70 70 6f 73 65 20 74 6f 20  ) is suppose to 
92e0: 62 65 20 61 0a 20 20 70 6f 69 6e 74 65 72 20 74  be a.  pointer t
92f0: 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20 28 65 6e  o a function (en
9300: 63 6f 64 65 64 20 61 73 20 61 20 42 4c 4f 42 29  coded as a BLOB)
9310: 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73   that implements
9320: 20 61 6e 0a 20 20 61 70 70 6c 69 63 61 74 69 6f   an.  applicatio
9330: 6e 20 64 65 66 69 6e 65 64 20 74 6f 6b 65 6e 69  n defined tokeni
9340: 7a 65 72 2e 20 20 49 66 20 68 6f 73 74 69 6c 65  zer.  If hostile
9350: 20 61 63 74 6f 72 73 20 61 72 65 20 61 62 6c 65   actors are able
9360: 20 74 6f 20 72 75 6e 0a 20 20 74 68 65 20 74 77   to run.  the tw
9370: 6f 2d 61 72 67 75 6d 65 6e 74 20 76 65 72 73 69  o-argument versi
9380: 6f 6e 20 6f 66 20 66 74 73 33 5f 74 6f 6b 65 6e  on of fts3_token
9390: 69 7a 65 72 28 29 20 77 69 74 68 20 61 6e 20 61  izer() with an a
93a0: 72 62 69 74 72 61 72 79 20 73 65 63 6f 6e 64 0a  rbitrary second.
93b0: 20 20 61 72 67 75 6d 65 6e 74 2c 20 74 68 65 79    argument, they
93c0: 20 63 6f 75 6c 64 20 75 73 65 20 63 72 61 73 68   could use crash
93d0: 20 6f 72 20 74 61 6b 65 20 63 6f 6e 74 72 6f 6c   or take control
93e0: 20 6f 66 20 74 68 65 20 70 72 6f 63 65 73 73 2e   of the process.
93f0: 20 0a 20 20 3c 70 3e 0a 20 20 42 65 63 61 75 73   .  <p>.  Becaus
9400: 65 20 6f 66 20 73 65 63 75 72 69 74 79 20 63 6f  e of security co
9410: 6e 63 65 72 6e 73 2c 20 74 68 65 20 74 77 6f 2d  ncerns, the two-
9420: 61 72 67 75 6d 65 6e 74 20 66 74 73 33 5f 74 6f  argument fts3_to
9430: 6b 65 6e 69 7a 65 72 28 29 20 66 65 61 74 75 72  kenizer() featur
9440: 65 20 0a 20 20 77 61 73 20 64 69 73 61 62 6c 65  e .  was disable
9450: 64 20 62 65 67 69 6e 6e 69 6e 67 20 77 69 74 68  d beginning with
9460: 20 5b 56 65 72 73 69 6f 6e 20 33 2e 31 31 2e 30   [Version 3.11.0
9470: 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e 31 31 2e  ] ([dateof:3.11.
9480: 30 5d 29 0a 20 20 75 6e 6c 65 73 73 20 74 68 69  0]).  unless thi
9490: 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
94a0: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a 20  ption is used.. 
94b0: 20 5b 56 65 72 73 69 6f 6e 20 33 2e 31 32 2e 30   [Version 3.12.0
94c0: 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e 31 32 2e  ] ([dateof:3.12.
94d0: 30 5d 29 20 61 64 64 65 64 20 74 68 65 20 0a 20  0]) added the . 
94e0: 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e   [sqlite3_db_con
94f0: 66 69 67 5d 28 64 62 2c 5b 53 51 4c 49 54 45 5f  fig](db,[SQLITE_
9500: 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f  DBCONFIG_ENABLE_
9510: 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 5d 2c  FTS3_TOKENIZER],
9520: 31 2c 30 29 20 69 6e 74 65 72 66 61 63 65 0a 20  1,0) interface. 
9530: 20 74 68 61 74 20 61 63 74 69 76 61 74 65 73 20   that activates 
9540: 74 68 65 20 74 77 6f 2d 61 72 67 75 6d 65 6e 74  the two-argument
9550: 20 76 65 72 73 69 6f 6e 20 6f 66 20 5b 66 74 73   version of [fts
9560: 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 5d 0a 20  3_tokenizer()]. 
9570: 20 66 6f 72 20 61 20 73 70 65 63 69 66 69 63 20   for a specific 
9580: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
9590: 74 69 6f 6e 5d 20 61 74 20 72 75 6e 2d 74 69 6d  tion] at run-tim
95a0: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
95b0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
95c0: 42 4c 45 5f 46 54 53 34 7d 20 7b 0a 20 20 57 68  BLE_FTS4} {.  Wh
95d0: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
95e0: 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65  s defined in the
95f0: 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c   [amalgamation],
9600: 20 76 65 72 73 69 6f 6e 73 20 33 20 61 6e 64 20   versions 3 and 
9610: 34 0a 20 20 6f 66 20 74 68 65 20 66 75 6c 6c 2d  4.  of the full-
9620: 74 65 78 74 20 73 65 61 72 63 68 20 65 6e 67 69  text search engi
9630: 6e 65 20 69 73 20 61 64 64 65 64 20 74 6f 20 74  ne is added to t
9640: 68 65 20 62 75 69 6c 64 20 61 75 74 6f 6d 61 74  he build automat
9650: 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49  ically..}..COMPI
9660: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
9670: 45 5f 45 4e 41 42 4c 45 5f 46 54 53 35 7d 20 7b  E_ENABLE_FTS5} {
9680: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
9690: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 20 69  ion is defined i
96a0: 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74  n the [amalgamat
96b0: 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e 73 20 35  ion], versions 5
96c0: 0a 20 20 6f 66 20 74 68 65 20 66 75 6c 6c 2d 74  .  of the full-t
96d0: 65 78 74 20 73 65 61 72 63 68 20 65 6e 67 69 6e  ext search engin
96e0: 65 20 28 5b 66 74 73 35 5d 29 20 69 73 20 61 64  e ([fts5]) is ad
96f0: 64 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64  ded to the build
9700: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a   automatically..
9710: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
9720: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
9730: 5f 49 43 55 7d 20 7b 0a 20 20 54 68 69 73 20 6f  _ICU} {.  This o
9740: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
9750: 20 0a 20 20 5b 68 74 74 70 3a 2f 2f 77 77 77 2e   .  [http://www.
9760: 69 63 75 2d 70 72 6f 6a 65 63 74 2e 6f 72 67 2f  icu-project.org/
9770: 20 7c 20 49 6e 74 65 72 6e 61 74 69 6f 6e 61 6c   | International
9780: 20 43 6f 6d 70 6f 6e 65 6e 74 73 20 66 6f 72 20   Components for 
9790: 55 6e 69 63 6f 64 65 5d 0a 20 20 6f 72 20 22 49  Unicode].  or "I
97a0: 43 55 22 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f  CU" extension to
97b0: 20 53 51 4c 69 74 65 20 74 6f 20 62 65 20 61 64   SQLite to be ad
97c0: 64 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64  ded to the build
97d0: 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  .  .}..COMPILE_O
97e0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
97f0: 41 42 4c 45 5f 49 4f 54 52 41 43 45 7d 20 7b 0a  ABLE_IOTRACE} {.
9800: 20 20 57 68 65 6e 20 62 6f 74 68 20 74 68 65 20    When both the 
9810: 53 51 4c 69 74 65 20 63 6f 72 65 20 61 6e 64 20  SQLite core and 
9820: 74 68 65 20 5b 43 6f 6d 6d 61 6e 64 20 4c 69 6e  the [Command Lin
9830: 65 20 49 6e 74 65 72 66 61 63 65 5d 20 28 43 4c  e Interface] (CL
9840: 49 29 20 61 72 65 20 62 6f 74 68 20 0a 20 20 63  I) are both .  c
9850: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 69  ompiled with thi
9860: 73 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74  s option, then t
9870: 68 65 20 43 4c 49 20 70 72 6f 76 69 64 65 73 20  he CLI provides 
9880: 61 6e 20 65 78 74 72 61 20 63 6f 6d 6d 61 6e 64  an extra command
9890: 0a 20 20 6e 61 6d 65 64 20 22 2e 69 6f 74 72 61  .  named ".iotra
98a0: 63 65 22 20 74 68 61 74 20 70 72 6f 76 69 64 65  ce" that provide
98b0: 73 20 61 20 6c 6f 77 2d 6c 65 76 65 6c 20 6c 6f  s a low-level lo
98c0: 67 20 6f 66 20 49 2f 4f 20 61 63 74 69 76 69 74  g of I/O activit
98d0: 79 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  y..  This option
98e0: 20 69 73 20 65 78 70 65 72 69 6d 65 6e 74 61 6c   is experimental
98f0: 20 61 6e 64 20 6d 61 79 20 62 65 20 64 69 73 63   and may be disc
9900: 6f 6e 74 69 6e 75 65 64 20 69 6e 20 61 20 66 75  ontinued in a fu
9910: 74 75 72 65 20 72 65 6c 65 61 73 65 2e 0a 7d 0a  ture release..}.
9920: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
9930: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4a  {SQLITE_ENABLE_J
9940: 53 4f 4e 31 7d 20 7b 0a 20 20 57 68 65 6e 20 74  SON1} {.  When t
9950: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
9960: 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 61 6d  fined in the [am
9970: 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 74 68 65  algamation], the
9980: 0a 20 20 5b 4a 53 4f 4e 20 53 51 4c 20 66 75 6e  .  [JSON SQL fun
9990: 63 74 69 6f 6e 73 5d 20 61 72 65 20 61 64 64 65  ctions] are adde
99a0: 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20 61  d to the build a
99b0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a  utomatically..}.
99c0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
99d0: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c  {SQLITE_ENABLE_L
99e0: 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 7d 20 7b 0a  OCKING_STYLE} {.
99f0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
9a00: 61 62 6c 65 73 20 61 64 64 69 74 69 6f 6e 61 6c  ables additional
9a10: 20 6c 6f 67 69 63 20 69 6e 20 74 68 65 20 4f 53   logic in the OS
9a20: 20 69 6e 74 65 72 66 61 63 65 20 6c 61 79 65 72   interface layer
9a30: 20 66 6f 72 0a 20 20 4d 61 63 20 4f 53 20 58 2e   for.  Mac OS X.
9a40: 20 54 68 65 20 61 64 64 69 74 69 6f 6e 61 6c 20   The additional 
9a50: 6c 6f 67 69 63 20 61 74 74 65 6d 70 74 73 20 74  logic attempts t
9a60: 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  o determine the 
9a70: 74 79 70 65 20 6f 66 20 74 68 65 0a 20 20 75 6e  type of the.  un
9a80: 64 65 72 6c 79 69 6e 67 20 66 69 6c 65 73 79 73  derlying filesys
9a90: 74 65 6d 20 61 6e 64 20 63 68 6f 6f 73 65 20 61  tem and choose a
9aa0: 6e 64 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6c  nd alternative l
9ab0: 6f 63 6b 69 6e 67 20 73 74 72 61 74 65 67 79 0a  ocking strategy.
9ac0: 20 20 74 68 61 74 20 77 6f 72 6b 73 20 63 6f 72    that works cor
9ad0: 72 65 63 74 6c 79 20 66 6f 72 20 74 68 61 74 20  rectly for that 
9ae0: 66 69 6c 65 73 79 73 74 65 6d 20 74 79 70 65 2e  filesystem type.
9af0: 20 46 69 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74   Five locking st
9b00: 72 61 74 65 67 69 65 73 20 0a 20 20 61 72 65 20  rategies .  are 
9b10: 61 76 61 69 6c 61 62 6c 65 3a 0a 0a 20 20 3c 75  available:..  <u
9b20: 6c 3e 0a 20 20 20 20 3c 6c 69 3e 20 50 4f 53 49  l>.    <li> POSI
9b30: 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e  X locking style.
9b40: 20 54 68 69 73 20 69 73 20 74 68 65 20 64 65 66   This is the def
9b50: 61 75 6c 74 20 6c 6f 63 6b 69 6e 67 20 73 74 79  ault locking sty
9b60: 6c 65 20 61 6e 64 20 74 68 65 0a 20 20 20 20 20  le and the.     
9b70: 20 20 20 20 73 74 79 6c 65 20 75 73 65 64 20 62      style used b
9b80: 79 20 6f 74 68 65 72 20 28 6e 6f 6e 20 4d 61 63  y other (non Mac
9b90: 20 4f 53 20 58 29 20 55 6e 69 78 65 73 2e 20 4c   OS X) Unixes. L
9ba0: 6f 63 6b 73 20 61 72 65 20 6f 62 74 61 69 6e 65  ocks are obtaine
9bb0: 64 20 61 6e 64 20 0a 20 20 20 20 20 20 20 20 20  d and .         
9bc0: 72 65 6c 65 61 73 65 64 20 75 73 69 6e 67 20 74  released using t
9bd0: 68 65 20 66 63 6e 74 6c 28 29 20 73 79 73 74 65  he fcntl() syste
9be0: 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20 3c 6c 69  m call...    <li
9bf0: 3e 20 41 46 50 20 6c 6f 63 6b 69 6e 67 20 73 74  > AFP locking st
9c00: 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63 6b 69 6e  yle. This lockin
9c10: 67 20 73 74 79 6c 65 20 69 73 20 75 73 65 64 20  g style is used 
9c20: 66 6f 72 20 6e 65 74 77 6f 72 6b 20 66 69 6c 65  for network file
9c30: 20 0a 20 20 20 20 20 20 20 20 20 73 79 73 74 65   .         syste
9c40: 6d 73 20 74 68 61 74 20 75 73 65 20 74 68 65 20  ms that use the 
9c50: 41 46 50 20 28 41 70 70 6c 65 20 46 69 6c 69 6e  AFP (Apple Filin
9c60: 67 20 50 72 6f 74 6f 63 6f 6c 29 20 70 72 6f 74  g Protocol) prot
9c70: 6f 63 6f 6c 2e 20 4c 6f 63 6b 73 0a 20 20 20 20  ocol. Locks.    
9c80: 20 20 20 20 20 61 72 65 20 6f 62 74 61 69 6e 65       are obtaine
9c90: 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 74 68 65  d by calling the
9ca0: 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f   library functio
9cb0: 6e 20 5f 41 46 50 46 53 53 65 74 4c 6f 63 6b 28  n _AFPFSSetLock(
9cc0: 29 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 46 6c 6f  )...    <li> Flo
9cd0: 63 6b 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  ck locking style
9ce0: 2e 20 54 68 69 73 20 69 73 20 75 73 65 64 20 66  . This is used f
9cf0: 6f 72 20 66 69 6c 65 2d 73 79 73 74 65 6d 73 20  or file-systems 
9d00: 74 68 61 74 20 64 6f 20 6e 6f 74 0a 20 20 20 20  that do not.    
9d10: 20 20 20 20 20 73 75 70 70 6f 72 74 20 50 4f 53       support POS
9d20: 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  IX locking style
9d30: 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61  . Locks are obta
9d40: 69 6e 65 64 20 61 6e 64 20 72 65 6c 65 61 73 65  ined and release
9d50: 64 20 75 73 69 6e 67 0a 20 20 20 20 20 20 20 20  d using.        
9d60: 20 74 68 65 20 66 6c 6f 63 6b 28 29 20 73 79 73   the flock() sys
9d70: 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20 3c  tem call...    <
9d80: 6c 69 3e 20 44 6f 74 2d 66 69 6c 65 20 6c 6f 63  li> Dot-file loc
9d90: 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73  king style. This
9da0: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 69   locking style i
9db0: 73 20 75 73 65 64 20 77 68 65 6e 20 6e 65 69 74  s used when neit
9dc0: 68 65 72 0a 20 20 20 20 20 20 20 20 20 66 6c 6f  her.         flo
9dd0: 63 6b 20 6e 6f 72 20 50 4f 53 49 58 20 6c 6f 63  ck nor POSIX loc
9de0: 6b 69 6e 67 20 73 74 79 6c 65 73 20 61 72 65 20  king styles are 
9df0: 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 65  supported by the
9e00: 20 66 69 6c 65 20 73 79 73 74 65 6d 2e 0a 20 20   file system..  
9e10: 20 20 20 20 20 20 20 44 61 74 61 62 61 73 65 20         Database 
9e20: 6c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61 69 6e  locks are obtain
9e30: 65 64 20 62 79 20 63 72 65 61 74 69 6e 67 20 61  ed by creating a
9e40: 6e 64 20 65 6e 74 72 79 20 69 6e 20 74 68 65 20  nd entry in the 
9e50: 66 69 6c 65 2d 73 79 73 74 65 6d 0a 20 20 20 20  file-system.    
9e60: 20 20 20 20 20 61 74 20 61 20 77 65 6c 6c 2d 6b       at a well-k
9e70: 6e 6f 77 6e 20 6c 6f 63 61 74 69 6f 6e 20 72 65  nown location re
9e80: 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 64 61  lative to the da
9e90: 74 61 62 61 73 65 20 66 69 6c 65 20 28 61 20 22  tabase file (a "
9ea0: 64 6f 74 2d 66 69 6c 65 22 29 0a 20 20 20 20 20  dot-file").     
9eb0: 20 20 20 20 61 6e 64 20 72 65 6c 69 6e 71 75 69      and relinqui
9ec0: 73 68 65 64 20 62 79 20 64 65 6c 65 74 69 6e 67  shed by deleting
9ed0: 20 74 68 65 20 73 61 6d 65 20 66 69 6c 65 2e 0a   the same file..
9ee0: 0a 20 20 20 20 3c 6c 69 3e 20 4e 6f 20 6c 6f 63  .    <li> No loc
9ef0: 6b 69 6e 67 20 73 74 79 6c 65 2e 20 49 66 20 6e  king style. If n
9f00: 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65  one of the above
9f10: 20 63 61 6e 20 62 65 20 73 75 70 70 6f 72 74 65   can be supporte
9f20: 64 2c 20 74 68 69 73 20 0a 20 20 20 20 20 20 20  d, this .       
9f30: 20 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20    locking style 
9f40: 69 73 20 75 73 65 64 2e 20 4e 6f 20 64 61 74 61  is used. No data
9f50: 62 61 73 65 20 6c 6f 63 6b 69 6e 67 20 6d 65 63  base locking mec
9f60: 68 61 6e 69 73 6d 20 69 73 20 75 73 65 64 2e 20  hanism is used. 
9f70: 57 68 65 6e 0a 20 20 20 20 20 20 20 20 20 74 68  When.         th
9f80: 69 73 20 73 79 73 74 65 6d 20 69 73 20 75 73 65  is system is use
9f90: 64 20 69 74 20 69 73 20 6e 6f 74 20 73 61 66 65  d it is not safe
9fa0: 20 66 6f 72 20 61 20 73 69 6e 67 6c 65 20 64 61   for a single da
9fb0: 74 61 62 61 73 65 20 74 6f 20 62 65 0a 20 20 20  tabase to be.   
9fc0: 20 20 20 20 20 20 61 63 63 65 73 73 65 64 20 62        accessed b
9fd0: 79 20 6d 75 6c 74 69 70 6c 65 20 63 6c 69 65 6e  y multiple clien
9fe0: 74 73 2e 0a 20 20 3c 2f 75 6c 3e 0a 0a 20 20 41  ts..  </ul>..  A
9ff0: 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 66 69 76  dditionally, fiv
a000: 65 20 65 78 74 72 61 20 5b 56 46 53 5d 20 69 6d  e extra [VFS] im
a010: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 61 72  plementations ar
a020: 65 20 70 72 6f 76 69 64 65 64 20 61 73 20 77 65  e provided as we
a030: 6c 6c 20 61 73 20 74 68 65 0a 20 20 64 65 66 61  ll as the.  defa
a040: 75 6c 74 2e 20 42 79 20 73 70 65 63 69 66 79 69  ult. By specifyi
a050: 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 20 65 78  ng one of the ex
a060: 74 72 61 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e  tra VFS implemen
a070: 74 61 74 69 6f 6e 73 20 0a 20 20 77 68 65 6e 20  tations .  when 
a080: 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69 74 65 33  calling [sqlite3
a090: 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61 6e 20  _open_v2()], an 
a0a0: 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79 20  application may 
a0b0: 62 79 70 61 73 73 20 74 68 65 20 66 69 6c 65 2d  bypass the file-
a0c0: 73 79 73 74 65 6d 0a 20 20 64 65 74 65 63 74 69  system.  detecti
a0d0: 6f 6e 20 6c 6f 67 69 63 20 61 6e 64 20 65 78 70  on logic and exp
a0e0: 6c 69 63 69 74 6c 79 20 73 65 6c 65 63 74 20 6f  licitly select o
a0f0: 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20  ne of the above 
a100: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73 2e 20  locking styles. 
a110: 54 68 65 0a 20 20 66 69 76 65 20 65 78 74 72 61  The.  five extra
a120: 20 5b 56 46 53 5d 20 69 6d 70 6c 65 6d 65 6e 74   [VFS] implement
a130: 61 74 69 6f 6e 73 20 61 72 65 20 63 61 6c 6c 65  ations are calle
a140: 64 20 22 75 6e 69 78 2d 70 6f 73 69 78 22 2c 20  d "unix-posix", 
a150: 22 75 6e 69 78 2d 61 66 70 22 2c 0a 20 20 22 75  "unix-afp",.  "u
a160: 6e 69 78 2d 66 6c 6f 63 6b 22 2c 20 22 75 6e 69  nix-flock", "uni
a170: 78 2d 64 6f 74 66 69 6c 65 22 20 61 6e 64 20 22  x-dotfile" and "
a180: 75 6e 69 78 2d 6e 6f 6e 65 22 2e 0a 7d 0a 0a 43  unix-none"..}..C
a190: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
a1a0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d  QLITE_ENABLE_MEM
a1b0: 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e 54 7d 20  ORY_MANAGEMENT} 
a1c0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
a1d0: 61 64 64 73 20 65 78 74 72 61 20 6c 6f 67 69 63  adds extra logic
a1e0: 20 74 6f 20 53 51 4c 69 74 65 20 74 68 61 74 20   to SQLite that 
a1f0: 61 6c 6c 6f 77 73 20 69 74 20 74 6f 20 72 65 6c  allows it to rel
a200: 65 61 73 65 20 75 6e 75 73 65 64 0a 20 20 6d 65  ease unused.  me
a210: 6d 6f 72 79 20 75 70 6f 6e 20 72 65 71 75 65 73  mory upon reques
a220: 74 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  t.  This option 
a230: 6d 75 73 74 20 62 65 20 65 6e 61 62 6c 65 64 20  must be enabled 
a240: 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68 65  in order for the
a250: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65  .  [sqlite3_rele
a260: 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e  ase_memory()] in
a270: 74 65 72 66 61 63 65 20 74 6f 20 77 6f 72 6b 2e  terface to work.
a280: 20 20 49 66 20 74 68 69 73 20 63 6f 6d 70 69 6c    If this compil
a290: 65 2d 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20  e-time.  option 
a2a0: 69 73 20 6e 6f 74 20 75 73 65 64 2c 20 74 68 65  is not used, the
a2b0: 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73   [sqlite3_releas
a2c0: 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74 65  e_memory()] inte
a2d0: 72 66 61 63 65 20 69 73 20 61 20 0a 20 20 6e 6f  rface is a .  no
a2e0: 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  -op..}..COMPILE_
a2f0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
a300: 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 7d 20 7b  NABLE_MEMSYS3} {
a310: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
a320: 6e 63 6c 75 64 65 73 20 63 6f 64 65 20 69 6e 20  ncludes code in 
a330: 53 51 4c 69 74 65 20 74 68 61 74 20 69 6d 70 6c  SQLite that impl
a340: 65 6d 65 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e  ements an altern
a350: 61 74 69 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61  ative.  memory a
a360: 6c 6c 6f 63 61 74 6f 72 2e 20 20 54 68 69 73 20  llocator.  This 
a370: 61 6c 74 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f  alternative memo
a380: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20  ry allocator is 
a390: 6f 6e 6c 79 20 65 6e 67 61 67 65 64 0a 20 20 77  only engaged.  w
a3a0: 68 65 6e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  hen the [SQLITE_
a3b0: 43 4f 4e 46 49 47 5f 48 45 41 50 5d 20 6f 70 74  CONFIG_HEAP] opt
a3c0: 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  ion to [sqlite3_
a3d0: 63 6f 6e 66 69 67 28 29 5d 20 69 73 20 75 73 65  config()] is use
a3e0: 64 20 74 6f 0a 20 20 73 75 70 70 6c 79 20 61 20  d to.  supply a 
a3f0: 6c 61 72 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d  large chunk of m
a400: 65 6d 6f 72 79 20 66 72 6f 6d 20 77 68 69 63 68  emory from which
a410: 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f   all memory allo
a420: 63 61 74 69 6f 6e 73 20 61 72 65 0a 20 20 74 61  cations are.  ta
a430: 6b 65 6e 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59  ken..  The MEMSY
a440: 53 33 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  S3 memory alloca
a450: 74 6f 72 20 75 73 65 73 20 61 20 68 79 62 72 69  tor uses a hybri
a460: 64 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 61 6c 67  d allocation alg
a470: 6f 72 69 74 68 6d 20 0a 20 20 70 61 74 74 65 72  orithm .  patter
a480: 6e 65 64 20 61 66 74 65 72 20 64 6c 6d 61 6c 6c  ned after dlmall
a490: 6f 63 28 29 2e 20 20 20 4f 6e 6c 79 20 6f 6e 65  oc().   Only one
a4a0: 20 6f 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c   of SQLITE_ENABL
a4b0: 45 5f 4d 45 4d 53 59 53 33 20 61 6e 64 20 0a 20  E_MEMSYS3 and . 
a4c0: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d   SQLITE_ENABLE_M
a4d0: 45 4d 53 59 53 35 20 6d 61 79 20 62 65 20 65 6e  EMSYS5 may be en
a4e0: 61 62 6c 65 64 20 61 74 20 6f 6e 63 65 2e 0a 7d  abled at once..}
a4f0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
a500: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
a510: 4d 45 4d 53 59 53 35 7d 20 7b 0a 20 20 54 68 69  MEMSYS5} {.  Thi
a520: 73 20 6f 70 74 69 6f 6e 20 69 6e 63 6c 75 64 65  s option include
a530: 73 20 63 6f 64 65 20 69 6e 20 53 51 4c 69 74 65  s code in SQLite
a540: 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73   that implements
a550: 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a   an alternative.
a560: 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74    memory allocat
a570: 6f 72 2e 20 20 54 68 69 73 20 61 6c 74 65 72 6e  or.  This altern
a580: 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c  ative memory all
a590: 6f 63 61 74 6f 72 20 69 73 20 6f 6e 6c 79 20 65  ocator is only e
a5a0: 6e 67 61 67 65 64 0a 20 20 77 68 65 6e 20 74 68  ngaged.  when th
a5b0: 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  e [SQLITE_CONFIG
a5c0: 5f 48 45 41 50 5d 20 6f 70 74 69 6f 6e 20 74 6f  _HEAP] option to
a5d0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
a5e0: 28 29 5d 20 69 73 20 75 73 65 64 20 74 6f 0a 20  ()] is used to. 
a5f0: 20 73 75 70 70 6c 79 20 61 20 6c 61 72 67 65 20   supply a large 
a600: 63 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f 72 79 20  chunk of memory 
a610: 66 72 6f 6d 20 77 68 69 63 68 20 61 6c 6c 20 6d  from which all m
a620: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
a630: 73 20 61 72 65 0a 20 20 74 61 6b 65 6e 2e 0a 20  s are.  taken.. 
a640: 20 54 68 65 20 4d 45 4d 53 59 53 35 20 6d 6f 64   The MEMSYS5 mod
a650: 75 6c 65 20 72 6f 75 6e 64 73 20 61 6c 6c 20 61  ule rounds all a
a660: 6c 6c 6f 63 61 74 69 6f 6e 73 20 75 70 20 74 6f  llocations up to
a670: 20 74 68 65 20 6e 65 78 74 20 70 6f 77 65 72 0a   the next power.
a680: 20 20 6f 66 20 74 77 6f 20 61 6e 64 20 75 73 65    of two and use
a690: 73 20 61 20 66 69 72 73 74 2d 66 69 74 2c 20 62  s a first-fit, b
a6a0: 75 64 64 79 2d 61 6c 6c 6f 63 61 74 6f 72 20 61  uddy-allocator a
a6b0: 6c 67 6f 72 69 74 68 6d 0a 20 20 74 68 61 74 20  lgorithm.  that 
a6c0: 70 72 6f 76 69 64 65 73 20 73 74 72 6f 6e 67 20  provides strong 
a6d0: 67 75 61 72 61 6e 74 65 65 73 20 61 67 61 69 6e  guarantees again
a6e0: 73 74 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e  st fragmentation
a6f0: 20 61 6e 64 20 62 72 65 61 6b 64 6f 77 6e 0a 20   and breakdown. 
a700: 20 73 75 62 6a 65 63 74 20 74 6f 20 63 65 72 74   subject to cert
a710: 61 69 6e 20 6f 70 65 72 61 74 69 6e 67 20 63 6f  ain operating co
a720: 6e 73 74 72 61 69 6e 74 73 2e 0a 7d 0a 0a 43 4f  nstraints..}..CO
a730: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
a740: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4e 55 4c 4c  LITE_ENABLE_NULL
a750: 5f 54 52 49 4d 7d 20 7b 0a 20 20 54 68 69 73 20  _TRIM} {.  This 
a760: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 61  option enables a
a770: 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74  n optimization t
a780: 68 61 74 20 6f 6d 69 74 73 20 4e 55 4c 4c 20 63  hat omits NULL c
a790: 6f 6c 75 6d 6e 73 20 61 74 0a 20 20 74 68 65 20  olumns at.  the 
a7a0: 65 6e 64 73 20 6f 66 20 72 6f 77 73 2c 20 66 6f  ends of rows, fo
a7b0: 72 20 61 20 73 70 61 63 65 20 73 61 76 69 6e 67  r a space saving
a7c0: 73 20 6f 6e 20 64 69 73 6b 2e 0a 20 20 3c 70 3e  s on disk..  <p>
a7d0: 0a 20 20 44 61 74 61 62 61 73 65 73 20 67 65 6e  .  Databases gen
a7e0: 65 72 61 74 65 64 20 77 69 74 68 20 74 68 69 73  erated with this
a7f0: 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 64 20   option enabled 
a800: 61 72 65 20 6e 6f 74 20 72 65 61 64 61 62 6c 65  are not readable
a810: 0a 20 20 62 79 20 53 51 4c 69 74 65 20 76 65 72  .  by SQLite ver
a820: 73 69 6f 6e 20 33 2e 31 2e 36 20 28 5b 64 61 74  sion 3.1.6 ([dat
a830: 65 6f 66 3a 33 2e 31 2e 36 5d 29 20 61 6e 64 20  eof:3.1.6]) and 
a840: 65 61 72 6c 69 65 72 2e 20 20 41 6c 73 6f 2c 0a  earlier.  Also,.
a850: 20 20 64 61 74 61 62 61 73 65 73 20 67 65 6e 65    databases gene
a860: 72 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  rated with this 
a870: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 64 20 61  option enabled a
a880: 72 65 20 70 72 6f 6e 65 20 74 6f 0a 20 20 74 72  re prone to.  tr
a890: 69 67 67 65 72 69 6e 67 20 74 68 65 0a 20 20 5b  iggering the.  [
a8a0: 68 74 74 70 73 3a 2f 2f 77 77 77 2e 73 71 6c 69  https://www.sqli
a8b0: 74 65 2e 6f 72 67 2f 73 72 63 2f 69 6e 66 6f 2f  te.org/src/info/
a8c0: 65 36 65 39 36 32 64 36 62 30 66 30 36 66 34 36  e6e962d6b0f06f46
a8d0: 65 7c 65 36 65 39 36 32 64 36 62 30 66 30 36 66  e|e6e962d6b0f06f
a8e0: 34 36 5d 0a 20 20 62 75 67 20 69 6e 20 74 68 65  46].  bug in the
a8f0: 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72   [sqlite3_blob_r
a900: 65 6f 70 65 6e 28 29 5d 20 69 6e 74 65 72 66 61  eopen()] interfa
a910: 63 65 2e 20 20 46 6f 72 20 74 68 6f 73 65 20 72  ce.  For those r
a920: 65 61 73 6f 6e 73 2c 0a 20 20 74 68 69 73 20 6f  easons,.  this o
a930: 70 74 69 6d 69 7a 61 74 69 6f 6e 20 69 73 20 64  ptimization is d
a940: 69 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75  isabled by defau
a950: 6c 74 2e 20 20 48 6f 77 65 76 65 72 2c 20 74 68  lt.  However, th
a960: 69 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 0a  is optimization.
a970: 20 20 6d 61 79 20 62 65 20 65 6e 61 62 6c 65 64    may be enabled
a980: 20 62 79 20 64 65 66 61 75 6c 74 20 69 6e 20 61   by default in a
a990: 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 20   future release 
a9a0: 6f 66 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f  of SQLite..}..CO
a9b0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
a9c0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 50 52 45 55  LITE_ENABLE_PREU
a9d0: 50 44 41 54 45 5f 48 4f 4f 4b 7d 20 7b 0a 20 20  PDATE_HOOK} {.  
a9e0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62  This option enab
a9f0: 6c 65 73 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f  les .  [sqlite3_
aa00: 70 72 65 75 70 64 61 74 65 5f 68 6f 6f 6b 7c 73  preupdate_hook|s
aa10: 65 76 65 72 61 6c 20 6e 65 77 20 41 50 49 73 5d  everal new APIs]
aa20: 20 74 68 61 74 20 70 72 6f 76 69 64 65 20 63 61   that provide ca
aa30: 6c 6c 62 61 63 6b 73 0a 20 20 70 72 69 6f 72 20  llbacks.  prior 
aa40: 74 6f 20 61 6e 79 20 63 68 61 6e 67 65 20 74 6f  to any change to
aa50: 20 61 20 5b 72 6f 77 69 64 20 74 61 62 6c 65 5d   a [rowid table]
aa60: 2e 20 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 73  .  The callbacks
aa70: 20 63 61 6e 20 62 65 20 75 73 65 64 0a 20 20 74   can be used.  t
aa80: 6f 20 72 65 63 6f 72 64 20 74 68 65 20 73 74 61  o record the sta
aa90: 74 65 20 6f 66 20 74 68 65 20 72 6f 77 20 62 65  te of the row be
aaa0: 66 6f 72 65 20 74 68 65 20 63 68 61 6e 67 65 20  fore the change 
aab0: 6f 63 63 75 72 73 2e 0a 20 20 3c 70 3e 54 68 65  occurs..  <p>The
aac0: 20 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 70   action of the p
aad0: 72 65 75 70 64 61 74 65 20 68 6f 6f 6b 20 69 73  reupdate hook is
aae0: 20 73 69 6d 69 6c 61 72 20 74 6f 20 74 68 65 0a   similar to the.
aaf0: 20 20 5b 73 71 6c 69 74 65 33 5f 75 70 64 61 74    [sqlite3_updat
ab00: 65 5f 68 6f 6f 6b 7c 75 70 64 61 74 65 20 68 6f  e_hook|update ho
ab10: 6f 6b 5d 20 65 78 63 65 70 74 20 74 68 61 74 20  ok] except that 
ab20: 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 69 73 0a  the callback is.
ab30: 20 20 69 6e 76 6f 6b 65 64 20 62 65 66 6f 72 65    invoked before
ab40: 20 74 68 65 20 63 68 61 6e 67 65 2c 20 6e 6f 74   the change, not
ab50: 20 61 66 74 65 72 77 61 72 64 73 2c 20 61 6e 64   afterwards, and
ab60: 20 74 68 65 20 70 72 65 75 70 64 61 74 65 0a 20   the preupdate. 
ab70: 20 68 6f 6f 6b 20 69 6e 74 65 72 66 61 63 65 73   hook interfaces
ab80: 20 61 72 65 20 6f 6d 69 74 74 65 64 20 75 6e 6c   are omitted unl
ab90: 65 73 73 20 74 68 69 73 20 63 6f 6d 70 69 6c 65  ess this compile
aba0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 0a  -time option is.
abb0: 20 20 75 73 65 64 2e 0a 20 20 3c 70 3e 54 68 65    used..  <p>The
abc0: 20 70 72 65 75 70 64 61 74 65 20 68 6f 6f 6b 20   preupdate hook 
abd0: 69 6e 74 65 72 66 61 63 65 73 20 77 65 72 65 20  interfaces were 
abe0: 6f 72 69 67 69 6e 61 6c 6c 79 20 61 64 64 65 64  originally added
abf0: 20 74 6f 0a 20 20 73 75 70 70 6f 72 74 20 74 68   to.  support th
ac00: 65 20 5b 73 65 73 73 69 6f 6e 5d 20 65 78 74 65  e [session] exte
ac10: 6e 73 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  nsion..}..COMPIL
ac20: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
ac30: 5f 45 4e 41 42 4c 45 5f 51 50 53 47 7d 20 7b 0a  _ENABLE_QPSG} {.
ac40: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
ac50: 75 73 65 73 20 74 68 65 20 5b 71 75 65 72 79 20  uses the [query 
ac60: 70 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c 69 74  planner stabilit
ac70: 79 20 67 75 61 72 61 6e 74 65 65 5d 20 28 51 50  y guarantee] (QP
ac80: 53 47 29 20 74 6f 0a 20 20 62 65 20 6f 6e 20 62  SG) to.  be on b
ac90: 79 20 64 65 66 61 75 6c 74 2e 20 20 4e 6f 72 6d  y default.  Norm
aca0: 61 6c 6c 79 20 74 68 65 20 51 50 53 47 20 69 73  ally the QPSG is
acb0: 20 6f 66 66 20 61 6e 64 20 6d 75 73 74 20 62 65   off and must be
acc0: 20 61 63 74 69 76 61 74 65 64 0a 20 20 61 74 20   activated.  at 
acd0: 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 20 74  run-time using t
ace0: 68 65 20 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e  he [SQLITE_DBCON
acf0: 46 49 47 5f 45 4e 41 42 4c 45 5f 51 50 53 47 5d  FIG_ENABLE_QPSG]
ad00: 20 6f 70 74 69 6f 6e 20 74 6f 20 74 68 65 0a 20   option to the. 
ad10: 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e   [sqlite3_db_con
ad20: 66 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63 65  fig()] interface
ad30: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
ad40: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
ad50: 4c 45 5f 52 42 55 7d 20 7b 0a 20 20 45 6e 61 62  LE_RBU} {.  Enab
ad60: 6c 65 20 74 68 65 20 63 6f 64 65 20 74 68 65 20  le the code the 
ad70: 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 5b  implements the [
ad80: 52 42 55 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a  RBU extension]..
ad90: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
ada0: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
adb0: 5f 52 54 52 45 45 7d 20 7b 0a 20 20 54 68 69 73  _RTREE} {.  This
adc0: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53   option causes S
add0: 51 4c 69 74 65 20 74 6f 20 69 6e 63 6c 75 64 65  QLite to include
ade0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
adf0: 0a 20 20 5b 72 74 72 65 65 20 7c 20 52 2a 54 72  .  [rtree | R*Tr
ae00: 65 65 20 69 6e 64 65 78 20 65 78 74 65 6e 73 69  ee index extensi
ae10: 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  on]..}..COMPILE_
ae20: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
ae30: 4e 41 42 4c 45 5f 53 45 53 53 49 4f 4e 7d 20 7b  NABLE_SESSION} {
ae40: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65  .  This option e
ae50: 6e 61 62 6c 65 73 20 74 68 65 20 5b 73 65 73 73  nables the [sess
ae60: 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a  ion extension]..
ae70: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
ae80: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
ae90: 5f 53 54 4d 54 5f 53 43 41 4e 53 54 41 54 55 53  _STMT_SCANSTATUS
aea0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
aeb0: 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20 5b 73  n enables the [s
aec0: 71 6c 69 74 65 33 5f 73 74 6d 74 5f 73 63 61 6e  qlite3_stmt_scan
aed0: 73 74 61 74 75 73 28 29 5d 20 69 6e 74 65 72 66  status()] interf
aee0: 61 63 65 2e 20 20 54 68 65 0a 20 20 5b 73 71 6c  ace.  The.  [sql
aef0: 69 74 65 33 5f 73 74 6d 74 5f 73 63 61 6e 73 74  ite3_stmt_scanst
af00: 61 74 75 73 28 29 5d 20 69 6e 74 65 72 66 61 63  atus()] interfac
af10: 65 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 6f 6d  e is normally om
af20: 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62  itted from the b
af30: 75 69 6c 64 0a 20 20 62 65 63 61 75 73 65 20 69  uild.  because i
af40: 74 20 69 6d 70 6f 73 65 73 20 61 20 73 6d 61 6c  t imposes a smal
af50: 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65  l performance pe
af60: 6e 61 6c 74 79 2c 20 65 76 65 6e 20 6f 6e 20 73  nalty, even on s
af70: 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 0a 20  tatements that. 
af80: 20 64 6f 20 6e 6f 74 20 75 73 65 20 74 68 65 20   do not use the 
af90: 66 65 61 74 75 72 65 2e 0a 7d 0a 0a 43 4f 4d 50  feature..}..COMP
afa0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
afb0: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 4d 54 56 54  TE_ENABLE_STMTVT
afc0: 41 42 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d  AB} {.  This com
afd0: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
afe0: 20 65 6e 61 62 6c 65 73 20 74 68 65 20 5b 53 54   enables the [ST
aff0: 4d 54 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  MT virtual table
b000: 5d 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50  ] logic..}..COMP
b010: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
b020: 54 45 5f 52 54 52 45 45 5f 49 4e 54 5f 4f 4e 4c  TE_RTREE_INT_ONL
b030: 59 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f  Y} {.  If this o
b040: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
b050: 67 65 74 68 65 72 20 77 69 74 68 20 5b 53 51 4c  gether with [SQL
b060: 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45  ITE_ENABLE_RTREE
b070: 5d 20 74 68 65 6e 20 74 68 65 0a 20 20 5b 72 74  ] then the.  [rt
b080: 72 65 65 20 7c 20 52 2a 54 72 65 65 20 65 78 74  ree | R*Tree ext
b090: 65 6e 73 69 6f 6e 5d 20 77 69 6c 6c 20 6f 6e 6c  ension] will onl
b0a0: 79 20 73 74 6f 72 65 20 33 32 2d 62 69 74 20 73  y store 32-bit s
b0b0: 69 67 6e 65 64 20 69 6e 74 65 67 65 72 0a 20 20  igned integer.  
b0c0: 63 6f 6f 72 64 69 6e 61 74 65 73 20 61 6e 64 20  coordinates and 
b0d0: 61 6c 6c 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6d  all internal com
b0e0: 70 75 74 61 74 69 6f 6e 73 20 77 69 6c 6c 20 62  putations will b
b0f0: 65 20 64 6f 6e 65 20 75 73 69 6e 67 20 69 6e 74  e done using int
b100: 65 67 65 72 73 0a 20 20 69 6e 73 74 65 61 64 20  egers.  instead 
b110: 6f 66 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e  of floating poin
b120: 74 20 6e 75 6d 62 65 72 73 2e 0a 7d 0a 0a 43 4f  t numbers..}..CO
b130: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
b140: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c  LITE_ENABLE_SQLL
b150: 4f 47 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  OG} {.  This opt
b160: 69 6f 6e 20 65 6e 61 62 6c 65 73 20 65 78 74 72  ion enables extr
b170: 61 20 63 6f 64 65 20 28 65 73 70 65 63 69 61 6c  a code (especial
b180: 6c 79 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43  ly the [SQLITE_C
b190: 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 5d 0a 20 20  ONFIG_SQLLOG].  
b1a0: 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74  option to [sqlit
b1b0: 65 33 5f 63 6f 6e 66 69 67 28 29 5d 29 20 74 68  e3_config()]) th
b1c0: 61 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  at can be used t
b1d0: 6f 20 63 72 65 61 74 65 20 6c 6f 67 73 20 6f 66  o create logs of
b1e0: 20 61 6c 6c 0a 20 20 53 51 4c 69 74 65 20 70 72   all.  SQLite pr
b1f0: 6f 63 65 73 73 69 6e 67 20 70 65 72 66 6f 72 6d  ocessing perform
b200: 65 64 20 62 79 20 61 6e 20 61 70 70 6c 69 63 61  ed by an applica
b210: 74 69 6f 6e 2e 20 20 54 68 65 73 65 20 6c 6f 67  tion.  These log
b220: 73 20 63 61 6e 20 62 65 20 75 73 65 66 75 6c 0a  s can be useful.
b230: 20 20 69 6e 20 64 6f 69 6e 67 20 6f 66 66 2d 6c    in doing off-l
b240: 69 6e 65 20 61 6e 61 6c 79 73 69 73 20 6f 66 20  ine analysis of 
b250: 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f 66 20  the behavior of 
b260: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c 20  an application, 
b270: 61 6e 64 20 65 73 70 65 63 69 61 6c 6c 79 0a 20  and especially. 
b280: 20 66 6f 72 20 70 65 72 66 6f 72 6d 61 6e 63 65   for performance
b290: 20 61 6e 61 6c 79 73 69 73 2e 20 20 49 6e 20 6f   analysis.  In o
b2a0: 72 64 65 72 20 66 6f 72 20 74 68 65 20 53 51 4c  rder for the SQL
b2b0: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f  ITE_ENABLE_SQLLO
b2c0: 47 20 6f 70 74 69 6f 6e 20 74 6f 20 0a 20 20 62  G option to .  b
b2d0: 65 20 75 73 65 66 75 6c 2c 20 73 6f 6d 65 20 65  e useful, some e
b2e0: 78 74 72 61 20 63 6f 64 65 20 69 73 20 72 65 71  xtra code is req
b2f0: 75 69 72 65 64 2e 20 20 54 68 65 20 0a 20 20 3c  uired.  The .  <
b300: 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 77  a href="http://w
b310: 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 73 72  ww.sqlite.org/sr
b320: 63 2f 64 6f 63 2f 74 72 75 6e 6b 2f 73 72 63 2f  c/doc/trunk/src/
b330: 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 3e 22  test_sqllog.c">"
b340: 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 3c 2f  test_sqllog.c"</
b350: 61 3e 0a 20 20 73 6f 75 72 63 65 20 63 6f 64 65  a>.  source code
b360: 0a 20 20 66 69 6c 65 20 69 6e 20 74 68 65 20 53  .  file in the S
b370: 51 4c 69 74 65 20 73 6f 75 72 63 65 20 74 72 65  QLite source tre
b380: 65 20 69 73 20 61 20 77 6f 72 6b 69 6e 67 20 65  e is a working e
b390: 78 61 6d 70 6c 65 20 6f 66 20 74 68 65 20 72 65  xample of the re
b3a0: 71 75 69 72 65 64 20 65 78 74 72 61 0a 20 20 63  quired extra.  c
b3b0: 6f 64 65 2e 20 20 4f 6e 20 75 6e 69 78 20 61 6e  ode.  On unix an
b3c0: 64 20 77 69 6e 64 6f 77 73 20 73 79 73 74 65 6d  d windows system
b3d0: 73 2c 20 61 20 64 65 76 65 6c 6f 70 65 72 20 63  s, a developer c
b3e0: 61 6e 20 61 70 70 65 6e 64 20 74 68 65 20 74 65  an append the te
b3f0: 78 74 20 6f 66 20 74 68 65 0a 20 20 22 74 65 73  xt of the.  "tes
b400: 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f 75 72  t_sqllog.c" sour
b410: 63 65 20 63 6f 64 65 20 66 69 6c 65 20 74 6f 20  ce code file to 
b420: 74 68 65 20 65 6e 64 20 6f 66 20 61 6e 20 22 73  the end of an "s
b430: 71 6c 69 74 65 33 2e 63 22 20 61 6d 61 6c 67 61  qlite3.c" amalga
b440: 6d 61 74 69 6f 6e 2c 0a 20 20 72 65 63 6f 6d 70  mation,.  recomp
b450: 69 6c 65 20 74 68 65 20 61 70 70 6c 69 63 61 74  ile the applicat
b460: 69 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 2d 44  ion using the -D
b470: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51  SQLITE_ENABLE_SQ
b480: 4c 4c 4f 47 20 6f 70 74 69 6f 6e 2c 20 74 68 65  LLOG option, the
b490: 6e 20 0a 20 20 63 6f 6e 74 72 6f 6c 20 6c 6f 67  n .  control log
b4a0: 67 69 6e 67 20 75 73 69 6e 67 20 65 6e 76 69 72  ging using envir
b4b0: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73  onment variables
b4c0: 2e 20 20 53 65 65 20 74 68 65 20 68 65 61 64 65  .  See the heade
b4d0: 72 20 63 6f 6d 6d 65 6e 74 20 6f 6e 20 0a 20 20  r comment on .  
b4e0: 74 68 65 20 22 74 65 73 74 5f 73 71 6c 6c 6f 67  the "test_sqllog
b4f0: 2e 63 22 20 73 6f 75 72 63 65 20 66 69 6c 65 20  .c" source file 
b500: 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 64  for additional d
b510: 65 74 61 69 6c 2e 20 20 0a 7d 0a 0a 43 4f 4d 50  etail.  .}..COMP
b520: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
b530: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 32 7d  TE_ENABLE_STAT2}
b540: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
b550: 20 75 73 65 64 20 74 6f 20 63 61 75 73 65 20 74   used to cause t
b560: 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d  he [ANALYZE] com
b570: 6d 61 6e 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a  mand to collect.
b580: 20 20 69 6e 64 65 78 20 68 69 73 74 6f 67 72 61    index histogra
b590: 6d 20 64 61 74 61 20 69 6e 20 74 68 65 20 3c 62  m data in the <b
b5a0: 3e 73 71 6c 69 74 65 5f 73 74 61 74 32 3c 2f 62  >sqlite_stat2</b
b5b0: 3e 20 74 61 62 6c 65 2e 20 20 42 75 74 20 74 68  > table.  But th
b5c0: 61 74 0a 20 20 66 75 6e 63 74 69 6f 6e 61 6c 69  at.  functionali
b5d0: 74 79 20 77 61 73 20 73 75 70 65 72 63 65 64 65  ty was supercede
b5e0: 64 20 62 79 20 5b 53 51 4c 49 54 45 5f 45 4e 41  d by [SQLITE_ENA
b5f0: 42 4c 45 5f 53 54 41 54 33 5d 20 61 73 20 6f 66  BLE_STAT3] as of
b600: 0a 20 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69  .  SQLite [versi
b610: 6f 6e 20 33 2e 37 2e 39 5d 20 28 5b 64 61 74 65  on 3.7.9] ([date
b620: 6f 66 3a 33 2e 37 2e 39 5d 29 2e 20 20 0a 20 20  of:3.7.9]).  .  
b630: 54 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  The SQLITE_ENABL
b640: 45 5f 53 54 41 54 32 20 63 6f 6d 70 69 6c 65 2d  E_STAT2 compile-
b650: 74 69 6d 65 20 6f 70 74 69 6f 6e 0a 20 20 69 73  time option.  is
b660: 20 6e 6f 77 20 61 20 6e 6f 2d 6f 70 2e 0a 7d 0a   now a no-op..}.
b670: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
b680: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  {SQLITE_ENABLE_S
b690: 54 41 54 33 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TAT3} {.  This o
b6a0: 70 74 69 6f 6e 20 61 64 64 73 20 61 64 64 69 74  ption adds addit
b6b0: 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 74 6f 20 74  ional logic to t
b6c0: 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d  he [ANALYZE] com
b6d0: 6d 61 6e 64 20 61 6e 64 20 74 6f 0a 20 20 74 68  mand and to.  th
b6e0: 65 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72  e [query planner
b6f0: 5d 20 74 68 61 74 20 63 61 6e 20 68 65 6c 70 20  ] that can help 
b700: 53 51 4c 69 74 65 20 74 6f 20 63 68 6f 73 65 20  SQLite to chose 
b710: 61 20 62 65 74 74 65 72 20 71 75 65 72 79 20 70  a better query p
b720: 6c 61 6e 0a 20 20 75 6e 64 65 72 20 63 65 72 74  lan.  under cert
b730: 61 69 6e 20 73 69 74 75 61 74 69 6f 6e 73 2e 20  ain situations. 
b740: 20 54 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63   The [ANALYZE] c
b750: 6f 6d 6d 61 6e 64 20 69 73 20 65 6e 68 61 6e 63  ommand is enhanc
b760: 65 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a 20 20  ed to collect.  
b770: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66  histogram data f
b780: 72 6f 6d 20 74 68 65 20 6c 65 66 74 2d 6d 6f 73  rom the left-mos
b790: 74 20 63 6f 6c 75 6d 6e 20 6f 66 20 65 61 63 68  t column of each
b7a0: 20 69 6e 64 65 78 20 61 6e 64 20 73 74 6f 72 65   index and store
b7b0: 20 74 68 61 74 20 64 61 74 61 0a 20 20 69 6e 20   that data.  in 
b7c0: 74 68 65 20 5b 73 71 6c 69 74 65 5f 73 74 61 74  the [sqlite_stat
b7d0: 33 5d 20 74 61 62 6c 65 2e 20 20 54 68 65 20 71  3] table.  The q
b7e0: 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 77 69 6c  uery planner wil
b7f0: 6c 20 74 68 65 6e 20 75 73 65 20 74 68 65 0a 20  l then use the. 
b800: 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20   histogram data 
b810: 74 6f 20 68 65 6c 70 20 69 74 20 6d 61 6b 65 20  to help it make 
b820: 62 65 74 74 65 72 20 69 6e 64 65 78 20 63 68 6f  better index cho
b830: 69 63 65 73 2e 20 20 4e 6f 74 65 2c 20 68 6f 77  ices.  Note, how
b840: 65 76 65 72 2c 0a 20 20 74 68 61 74 20 74 68 65  ever,.  that the
b850: 20 75 73 65 20 6f 66 20 68 69 73 74 6f 67 72 61   use of histogra
b860: 6d 20 64 61 74 61 20 69 6e 20 71 75 65 72 79 20  m data in query 
b870: 70 6c 61 6e 6e 65 72 20 76 69 6f 6c 61 74 65 73  planner violates
b880: 20 74 68 65 0a 20 20 5b 71 75 65 72 79 20 70 6c   the.  [query pl
b890: 61 6e 6e 65 72 20 73 74 61 62 69 6c 69 74 79 20  anner stability 
b8a0: 67 75 61 72 61 6e 74 65 65 5d 20 77 68 69 63 68  guarantee] which
b8b0: 20 69 73 20 69 6d 70 6f 72 74 61 6e 74 20 74 6f   is important to
b8c0: 20 73 6f 6d 65 20 61 70 70 6c 69 63 61 74 69 6f   some applicatio
b8d0: 6e 73 2e 0a 20 20 3c 70 3e 0a 7d 0a 0a 43 4f 4d  ns..  <p>.}..COM
b8e0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
b8f0: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34  ITE_ENABLE_STAT4
b900: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
b910: 6e 20 61 64 64 73 20 61 64 64 69 74 69 6f 6e 61  n adds additiona
b920: 6c 20 6c 6f 67 69 63 20 74 6f 20 74 68 65 20 5b  l logic to the [
b930: 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64  ANALYZE] command
b940: 20 61 6e 64 20 74 6f 0a 20 20 74 68 65 20 5b 71   and to.  the [q
b950: 75 65 72 79 20 70 6c 61 6e 6e 65 72 5d 20 74 68  uery planner] th
b960: 61 74 20 63 61 6e 20 68 65 6c 70 20 53 51 4c 69  at can help SQLi
b970: 74 65 20 74 6f 20 63 68 6f 73 65 20 61 20 62 65  te to chose a be
b980: 74 74 65 72 20 71 75 65 72 79 20 70 6c 61 6e 0a  tter query plan.
b990: 20 20 75 6e 64 65 72 20 63 65 72 74 61 69 6e 20    under certain 
b9a0: 73 69 74 75 61 74 69 6f 6e 73 2e 20 20 54 68 65  situations.  The
b9b0: 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61   [ANALYZE] comma
b9c0: 6e 64 20 69 73 20 65 6e 68 61 6e 63 65 64 20 74  nd is enhanced t
b9d0: 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 68 69 73 74  o collect.  hist
b9e0: 6f 67 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20  ogram data from 
b9f0: 61 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 65  all columns of e
ba00: 76 65 72 79 20 69 6e 64 65 78 20 61 6e 64 20 73  very index and s
ba10: 74 6f 72 65 20 74 68 61 74 20 64 61 74 61 0a 20  tore that data. 
ba20: 20 69 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 5f   in the [sqlite_
ba30: 73 74 61 74 34 5d 20 74 61 62 6c 65 2e 20 20 54  stat4] table.  T
ba40: 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72  he query planner
ba50: 20 77 69 6c 6c 20 74 68 65 6e 20 75 73 65 20 74   will then use t
ba60: 68 65 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64  he.  histogram d
ba70: 61 74 61 20 74 6f 20 68 65 6c 70 20 69 74 20 6d  ata to help it m
ba80: 61 6b 65 20 62 65 74 74 65 72 20 69 6e 64 65 78  ake better index
ba90: 20 63 68 6f 69 63 65 73 2e 20 20 54 68 65 20 64   choices.  The d
baa0: 6f 77 6e 73 69 64 65 20 6f 66 0a 20 20 74 68 69  ownside of.  thi
bab0: 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
bac0: 70 74 69 6f 6e 20 69 73 20 74 68 61 74 20 69 74  ption is that it
bad0: 20 76 69 6f 6c 61 74 65 73 20 74 68 65 0a 20 20   violates the.  
bae0: 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 73  [query planner s
baf0: 74 61 62 69 6c 69 74 79 20 67 75 61 72 61 6e 74  tability guarant
bb00: 65 65 5d 20 6d 61 6b 69 6e 67 20 69 74 20 6d 6f  ee] making it mo
bb10: 72 65 20 64 69 66 66 69 63 75 6c 74 20 74 6f 20  re difficult to 
bb20: 65 6e 73 75 72 65 0a 20 20 63 6f 6e 73 69 73 74  ensure.  consist
bb30: 65 6e 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 20  ent performance 
bb40: 69 6e 20 6d 61 73 73 2d 70 72 6f 64 75 63 65 64  in mass-produced
bb50: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 20   applications.. 
bb60: 20 3c 70 3e 0a 20 20 53 51 4c 49 54 45 5f 45 4e   <p>.  SQLITE_EN
bb70: 41 42 4c 45 5f 53 54 41 54 34 20 69 73 20 61 6e  ABLE_STAT4 is an
bb80: 20 65 6e 68 61 6e 63 65 6d 65 6e 74 20 6f 66 20   enhancement of 
bb90: 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  [SQLITE_ENABLE_S
bba0: 54 41 54 33 5d 2e 20 20 53 54 41 54 33 0a 20 20  TAT3].  STAT3.  
bbb0: 6f 6e 6c 79 20 72 65 63 6f 72 64 65 64 20 68 69  only recorded hi
bbc0: 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66 6f 72  stogram data for
bbd0: 20 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63   the left-most c
bbe0: 6f 6c 75 6d 6e 20 6f 66 20 65 61 63 68 20 69 6e  olumn of each in
bbf0: 64 65 78 0a 20 20 77 68 65 72 65 61 73 20 74 68  dex.  whereas th
bc00: 65 20 53 54 41 54 34 20 65 6e 68 61 6e 63 65 6d  e STAT4 enhancem
bc10: 65 6e 74 20 72 65 63 6f 72 64 73 20 68 69 73 74  ent records hist
bc20: 6f 67 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20  ogram data from 
bc30: 61 6c 6c 20 63 6f 6c 75 6d 6e 73 0a 20 20 6f 66  all columns.  of
bc40: 20 65 61 63 68 20 69 6e 64 65 78 2e 0a 20 20 54   each index..  T
bc50: 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  he [SQLITE_ENABL
bc60: 45 5f 53 54 41 54 33 5d 20 63 6f 6d 70 69 6c 65  E_STAT3] compile
bc70: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20  -time option is 
bc80: 61 20 6e 6f 2d 6f 70 20 61 6e 64 20 69 73 20 69  a no-op and is i
bc90: 67 6e 6f 72 65 64 0a 20 20 69 66 20 74 68 65 20  gnored.  if the 
bca0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
bcb0: 41 54 34 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  AT4 compile-time
bcc0: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 2e   option is used.
bcd0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
bce0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
bcf0: 45 5f 54 52 45 45 5f 45 58 50 4c 41 49 4e 7d 20  E_TREE_EXPLAIN} 
bd00: 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65  {.  This compile
bd10: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20  -time option is 
bd20: 6e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64 2e 0a  no longer used..
bd30: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
bd40: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
bd50: 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c  _UPDATE_DELETE_L
bd60: 49 4d 49 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f  IMIT} {.  This o
bd70: 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 61 6e  ption enables an
bd80: 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44 45 52 20   optional ORDER 
bd90: 42 59 20 61 6e 64 20 4c 49 4d 49 54 20 63 6c 61  BY and LIMIT cla
bda0: 75 73 65 20 6f 6e 20 0a 20 20 5b 55 50 44 41 54  use on .  [UPDAT
bdb0: 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54 45 5d 20  E] and [DELETE] 
bdc0: 73 74 61 74 65 6d 65 6e 74 73 2e 0a 0a 20 20 3c  statements...  <
bdd0: 70 3e 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e  p>If this option
bde0: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
bdf0: 6e 20 69 74 20 6d 75 73 74 20 61 6c 73 6f 20 62  n it must also b
be00: 65 20 0a 20 20 64 65 66 69 6e 65 64 20 77 68 65  e .  defined whe
be10: 6e 20 75 73 69 6e 67 20 74 68 65 20 27 6c 65 6d  n using the 'lem
be20: 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67 65 6e 65  on' tool to gene
be30: 72 61 74 65 20 61 20 70 61 72 73 65 2e 63 0a 20  rate a parse.c. 
be40: 20 66 69 6c 65 2e 20 42 65 63 61 75 73 65 20 6f   file. Because o
be50: 66 20 74 68 69 73 2c 20 74 68 69 73 20 6f 70 74  f this, this opt
be60: 69 6f 6e 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20  ion may only be 
be70: 75 73 65 64 20 77 68 65 6e 20 74 68 65 20 6c 69  used when the li
be80: 62 72 61 72 79 20 69 73 20 62 75 69 6c 74 0a 20  brary is built. 
be90: 20 66 72 6f 6d 20 73 6f 75 72 63 65 2c 20 6e 6f   from source, no
bea0: 74 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d 61 6c  t from the [amal
beb0: 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 66 72 6f  gamation] or fro
bec0: 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e  m the collection
bed0: 20 6f 66 0a 20 20 70 72 65 2d 70 61 63 6b 61 67   of.  pre-packag
bee0: 65 64 20 43 20 66 69 6c 65 73 20 70 72 6f 76 69  ed C files provi
bef0: 64 65 64 20 66 6f 72 20 6e 6f 6e 2d 55 6e 69 78  ded for non-Unix
bf00: 20 6c 69 6b 65 20 70 6c 61 74 66 6f 72 6d 73 20   like platforms 
bf10: 6f 6e 20 74 68 65 20 77 65 62 73 69 74 65 2e 0a  on the website..
bf20: 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c    </p>.}..COMPIL
bf30: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
bf40: 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e 5f  _ENABLE_UNKNOWN_
bf50: 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 7d 20 7b 0a  SQL_FUNCTION} {.
bf60: 20 20 57 68 65 6e 20 74 68 65 20 53 51 4c 49 54    When the SQLIT
bf70: 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e  E_ENABLE_UNKNOWN
bf80: 5f 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 20 63 6f  _SQL_FUNCTION co
bf90: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
bfa0: 6e 20 69 73 0a 20 20 61 63 74 69 76 61 74 65 64  n is.  activated
bfb0: 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 73 75  , SQLite will su
bfc0: 70 70 72 65 73 73 20 22 75 6e 6b 6e 6f 77 6e 20  ppress "unknown 
bfd0: 66 75 6e 63 74 69 6f 6e 22 20 65 72 72 6f 72 73  function" errors
bfe0: 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 0a 20 20   when running.  
bff0: 61 6e 20 5b 45 58 50 4c 41 49 4e 5d 20 6f 72 20  an [EXPLAIN] or 
c000: 5b 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50  [EXPLAIN QUERY P
c010: 4c 41 4e 5d 2e 20 20 49 6e 73 74 65 61 64 20 6f  LAN].  Instead o
c020: 66 20 74 68 72 6f 77 69 6e 67 20 61 6e 20 65 72  f throwing an er
c030: 72 6f 72 2c 0a 20 20 53 51 4c 69 74 65 20 77 69  ror,.  SQLite wi
c040: 6c 6c 20 69 6e 73 65 72 74 20 61 20 73 75 62 73  ll insert a subs
c050: 74 69 74 75 74 65 20 6e 6f 2d 6f 70 20 66 75 6e  titute no-op fun
c060: 63 74 69 6f 6e 20 6e 61 6d 65 64 20 22 75 6e 6b  ction named "unk
c070: 6e 6f 77 6e 28 29 22 2e 0a 20 20 54 68 65 20 73  nown()"..  The s
c080: 75 62 73 74 69 74 75 74 69 6f 6e 20 6f 66 20 22  ubstitution of "
c090: 75 6e 6b 6e 6f 77 6e 28 29 22 20 69 6e 20 70 6c  unknown()" in pl
c0a0: 61 63 65 20 6f 66 20 75 6e 72 65 63 6f 67 6e 69  ace of unrecogni
c0b0: 7a 65 64 20 66 75 6e 63 74 69 6f 6e 73 0a 20 20  zed functions.  
c0c0: 6f 6e 6c 79 20 6f 63 63 75 72 73 20 6f 6e 20 5b  only occurs on [
c0d0: 45 58 50 4c 41 49 4e 5d 20 61 6e 64 20 5b 45 58  EXPLAIN] and [EX
c0e0: 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c 41 4e  PLAIN QUERY PLAN
c0f0: 5d 2c 20 6e 6f 74 20 6f 6e 20 6f 72 64 69 6e 61  ], not on ordina
c100: 72 79 0a 20 20 73 74 61 74 65 6d 65 6e 74 73 2e  ry.  statements.
c110: 0a 20 20 3c 70 3e 0a 20 20 57 68 65 6e 20 75 73  .  <p>.  When us
c120: 65 64 20 69 6e 20 74 68 65 20 5b 63 6f 6d 6d 61  ed in the [comma
c130: 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c 5d 2c 20  nd-line shell], 
c140: 74 68 65 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41  the.  SQLITE_ENA
c150: 42 4c 45 5f 55 4e 4b 4e 4f 57 4e 5f 53 51 4c 5f  BLE_UNKNOWN_SQL_
c160: 46 55 4e 43 54 49 4f 4e 20 66 65 61 74 75 72 65  FUNCTION feature
c170: 20 61 6c 6c 6f 77 73 20 53 51 4c 20 74 65 78 74   allows SQL text
c180: 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 0a 20   that contains. 
c190: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66   application-def
c1a0: 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 73 20 74  ined functions t
c1b0: 6f 20 62 65 20 70 61 73 74 65 64 20 69 6e 74 6f  o be pasted into
c1c0: 20 74 68 65 20 73 68 65 6c 6c 20 66 6f 72 20 0a   the shell for .
c1d0: 20 20 61 6e 61 6c 79 73 69 73 20 61 6e 64 20 64    analysis and d
c1e0: 65 62 75 67 67 69 6e 67 20 77 69 74 68 6f 75 74  ebugging without
c1f0: 20 68 61 76 69 6e 67 20 74 6f 20 63 72 65 61 74   having to creat
c200: 65 20 61 6e 64 20 6c 6f 61 64 20 61 6e 0a 20 20  e and load an.  
c210: 65 78 74 65 6e 73 69 6f 6e 20 74 68 61 74 20 69  extension that i
c220: 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 61 70  mplements the ap
c230: 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
c240: 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 7d 0a 0a  d functions..}..
c250: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
c260: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e  SQLITE_ENABLE_UN
c270: 4c 4f 43 4b 5f 4e 4f 54 49 46 59 7d 20 7b 0a 20  LOCK_NOTIFY} {. 
c280: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61   This option ena
c290: 62 6c 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65  bles the [sqlite
c2a0: 33 5f 75 6e 6c 6f 63 6b 5f 6e 6f 74 69 66 79 28  3_unlock_notify(
c2b0: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 61 6e 64  )] interface and
c2c0: 0a 20 20 69 74 73 20 61 73 73 6f 63 69 61 74 65  .  its associate
c2d0: 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e  d functionality.
c2e0: 20 20 53 65 65 20 74 68 65 20 64 6f 63 75 6d 65    See the docume
c2f0: 6e 74 61 74 69 6f 6e 20 74 69 74 6c 65 64 0a 20  ntation titled. 
c300: 20 5b 55 73 69 6e 67 20 74 68 65 20 53 51 4c 69   [Using the SQLi
c310: 74 65 20 55 6e 6c 6f 63 6b 20 4e 6f 74 69 66 69  te Unlock Notifi
c320: 63 61 74 69 6f 6e 20 46 65 61 74 75 72 65 5d 20  cation Feature] 
c330: 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a 20  for additional. 
c340: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d 0a   information..}.
c350: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
c360: 7b 53 51 4c 49 54 45 5f 53 4f 55 4e 44 45 58 7d  {SQLITE_SOUNDEX}
c370: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
c380: 20 65 6e 61 62 6c 65 73 20 74 68 65 20 5b 73 6f   enables the [so
c390: 75 6e 64 65 78 28 29 20 53 51 4c 20 66 75 6e 63  undex() SQL func
c3a0: 74 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  tion]..}..COMPIL
c3b0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
c3c0: 5f 55 53 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45  _USE_FCNTL_TRACE
c3d0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
c3e0: 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  n causes SQLite 
c3f0: 74 6f 20 69 73 73 75 65 20 65 78 74 72 61 20 5b  to issue extra [
c400: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 52 41  SQLITE_FCNTL_TRA
c410: 43 45 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  CE] file control
c420: 73 0a 20 20 74 6f 20 70 72 6f 76 69 64 65 20 73  s.  to provide s
c430: 75 70 70 6c 65 6d 65 6e 74 61 72 79 20 69 6e 66  upplementary inf
c440: 6f 72 6d 61 74 69 6f 6e 20 74 6f 20 74 68 65 20  ormation to the 
c450: 56 46 53 2e 20 20 54 68 65 20 22 76 66 73 6c 6f  VFS.  The "vfslo
c460: 67 2e 63 22 20 65 78 74 65 6e 73 69 6f 6e 0a 20  g.c" extension. 
c470: 20 6d 61 6b 65 73 20 75 73 65 20 6f 66 20 74 68   makes use of th
c480: 69 73 20 74 6f 20 70 72 6f 76 69 64 65 20 65 6e  is to provide en
c490: 68 61 6e 63 65 64 20 6c 6f 67 73 20 6f 66 20 56  hanced logs of V
c4a0: 46 53 20 61 63 74 69 76 69 74 79 2e 0a 7d 0a 0a  FS activity..}..
c4b0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
c4c0: 59 59 54 52 41 43 4b 4d 41 58 53 54 41 43 4b 44  YYTRACKMAXSTACKD
c4d0: 45 50 54 48 7d 20 7b 0a 20 20 54 68 69 73 20 6f  EPTH} {.  This o
c4e0: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
c4f0: 20 4c 41 4c 52 28 31 29 20 70 61 72 73 65 72 20   LALR(1) parser 
c500: 73 74 61 63 6b 20 64 65 70 74 68 20 74 6f 20 62  stack depth to b
c510: 65 20 74 72 61 63 6b 65 64 0a 20 20 61 6e 64 20  e tracked.  and 
c520: 72 65 70 6f 72 74 65 64 20 75 73 69 6e 67 20 74  reported using t
c530: 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 61 74  he [sqlite3_stat
c540: 75 73 5d 28 5b 53 51 4c 49 54 45 5f 53 54 41 54  us]([SQLITE_STAT
c550: 55 53 5f 50 41 52 53 45 52 5f 53 54 41 43 4b 5d  US_PARSER_STACK]
c560: 2c 2e 2e 2e 29 0a 20 20 69 6e 74 65 72 66 61 63  ,...).  interfac
c570: 65 2e 20 20 53 51 4c 69 74 65 27 73 20 4c 41 4c  e.  SQLite's LAL
c580: 52 28 31 29 20 70 61 72 73 65 72 20 68 61 73 20  R(1) parser has 
c590: 61 20 66 69 78 65 64 20 73 74 61 63 6b 20 64 65  a fixed stack de
c5a0: 70 74 68 0a 20 20 28 64 65 74 65 72 6d 69 6e 65  pth.  (determine
c5b0: 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  d at compile-tim
c5c0: 65 20 75 73 69 6e 67 20 74 68 65 20 5b 59 59 53  e using the [YYS
c5d0: 54 41 43 4b 44 45 50 54 48 5d 20 6f 70 74 69 6f  TACKDEPTH] optio
c5e0: 6e 73 29 2e 0a 20 20 54 68 69 73 20 6f 70 74 69  ns)..  This opti
c5f0: 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  on can be used t
c600: 6f 20 68 65 6c 70 20 64 65 74 65 72 6d 69 6e 65  o help determine
c610: 20 69 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69   if an applicati
c620: 6f 6e 20 69 73 0a 20 20 67 65 74 74 69 6e 67 20  on is.  getting 
c630: 63 6c 6f 73 65 20 74 6f 20 65 78 63 65 65 64 69  close to exceedi
c640: 6e 67 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 4c  ng the maximum L
c650: 41 4c 52 28 31 29 20 73 74 61 63 6b 20 64 65 70  ALR(1) stack dep
c660: 74 68 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61  th..}.</tcl>..<a
c670: 20 6e 61 6d 65 3d 22 64 69 73 61 62 6c 65 66 65   name="disablefe
c680: 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 31  atures"></a>.<h1
c690: 3e 20 4f 70 74 69 6f 6e 73 20 54 6f 20 44 69 73  > Options To Dis
c6a0: 61 62 6c 65 20 46 65 61 74 75 72 65 73 20 4e 6f  able Features No
c6b0: 72 6d 61 6c 6c 79 20 54 75 72 6e 65 64 20 4f 6e  rmally Turned On
c6c0: 3c 2f 68 31 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d  </h1>..<tcl>.COM
c6d0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
c6e0: 49 54 45 5f 44 49 53 41 42 4c 45 5f 4c 46 53 7d  ITE_DISABLE_LFS}
c6f0: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70   {.  If this C-p
c700: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
c710: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 6c 61  o is defined, la
c720: 72 67 65 20 66 69 6c 65 20 73 75 70 70 6f 72 74  rge file support
c730: 0a 20 20 69 73 20 64 69 73 61 62 6c 65 64 2e 0a  .  is disabled..
c740: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
c750: 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c  N {SQLITE_DISABL
c760: 45 5f 44 49 52 53 59 4e 43 7d 20 7b 0a 20 20 49  E_DIRSYNC} {.  I
c770: 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63  f this C-preproc
c780: 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64  essor macro is d
c790: 65 66 69 6e 65 64 2c 20 64 69 72 65 63 74 6f 72  efined, director
c7a0: 79 20 73 79 6e 63 73 0a 20 20 61 72 65 20 64 69  y syncs.  are di
c7b0: 73 61 62 6c 65 64 2e 20 20 53 51 4c 69 74 65 20  sabled.  SQLite 
c7c0: 74 79 70 69 63 61 6c 6c 79 20 61 74 74 65 6d 70  typically attemp
c7d0: 74 73 20 74 6f 20 73 79 6e 63 20 74 68 65 20 70  ts to sync the p
c7e0: 61 72 65 6e 74 0a 20 20 64 69 72 65 63 74 6f 72  arent.  director
c7f0: 79 20 77 68 65 6e 20 61 20 66 69 6c 65 20 69 73  y when a file is
c800: 20 64 65 6c 65 74 65 64 20 74 6f 20 65 6e 73 75   deleted to ensu
c810: 72 65 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  re the directory
c820: 0a 20 20 65 6e 74 72 69 65 73 20 61 72 65 20 75  .  entries are u
c830: 70 64 61 74 65 64 20 69 6d 6d 65 64 69 61 74 65  pdated immediate
c840: 6c 79 20 6f 6e 20 64 69 73 6b 2e 0a 7d 0a 0a 43  ly on disk..}..C
c850: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
c860: 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 46 54  QLITE_DISABLE_FT
c870: 53 33 5f 55 4e 49 43 4f 44 45 7d 20 7b 0a 20 20  S3_UNICODE} {.  
c880: 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f  If this C-prepro
c890: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20  cessor macro is 
c8a0: 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 75 6e  defined, the [un
c8b0: 69 63 6f 64 65 36 31 5d 20 74 6f 6b 65 6e 69 7a  icode61] tokeniz
c8c0: 65 72 0a 20 20 69 6e 20 5b 46 54 53 33 5d 20 69  er.  in [FTS3] i
c8d0: 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74  s omitted from t
c8e0: 68 65 20 62 75 69 6c 64 20 61 6e 64 20 69 73 20  he build and is 
c8f0: 75 6e 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 0a  unavailable to .
c900: 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a    applications..
c910: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
c920: 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c  N {SQLITE_DISABL
c930: 45 5f 46 54 53 34 5f 44 45 46 45 52 52 45 44 7d  E_FTS4_DEFERRED}
c940: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70   {.  If this C-p
c950: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
c960: 6f 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 22  o disables the "
c970: 64 65 66 65 72 72 65 64 20 74 6f 6b 65 6e 22 20  deferred token" 
c980: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 0a 20 20 69  optimization.  i
c990: 6e 20 5b 46 54 53 34 5d 2e 20 20 54 68 65 20 22  n [FTS4].  The "
c9a0: 64 65 66 65 72 72 65 64 20 74 6f 6b 65 6e 22 20  deferred token" 
c9b0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 61 76 6f  optimization avo
c9c0: 69 64 73 20 6c 6f 61 64 69 6e 67 20 6d 61 73 73  ids loading mass
c9d0: 69 76 65 0a 20 20 70 6f 73 74 69 6e 67 20 6c 69  ive.  posting li
c9e0: 73 74 73 20 66 6f 72 20 74 65 72 6d 73 20 74 68  sts for terms th
c9f0: 61 74 20 61 72 65 20 69 6e 20 6d 6f 73 74 20 64  at are in most d
ca00: 6f 63 75 6d 65 6e 74 73 20 6f 66 20 74 68 65 20  ocuments of the 
ca10: 63 6f 6c 6c 65 63 74 69 6f 6e 0a 20 20 61 6e 64  collection.  and
ca20: 20 69 6e 73 74 65 61 64 20 73 69 6d 70 6c 79 20   instead simply 
ca30: 73 63 61 6e 73 20 66 6f 72 20 74 68 6f 73 65 20  scans for those 
ca40: 74 6f 6b 65 6e 73 20 69 6e 20 74 68 65 20 64 6f  tokens in the do
ca50: 63 75 6d 65 6e 74 20 73 6f 75 72 63 65 2e 20 20  cument source.  
ca60: 5b 46 54 53 34 5d 0a 20 20 73 68 6f 75 6c 64 20  [FTS4].  should 
ca70: 67 65 74 20 65 78 61 63 74 6c 79 20 74 68 65 20  get exactly the 
ca80: 73 61 6d 65 20 61 6e 73 77 65 72 20 62 6f 74 68  same answer both
ca90: 20 77 69 74 68 20 61 6e 64 20 77 69 74 68 6f 75   with and withou
caa0: 74 20 74 68 69 73 20 6f 70 74 69 6d 69 7a 61 74  t this optimizat
cab0: 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ion..}..COMPILE_
cac0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
cad0: 49 53 41 42 4c 45 5f 49 4e 54 52 49 4e 53 49 43  ISABLE_INTRINSIC
cae0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
caf0: 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 75  n disables the u
cb00: 73 65 20 6f 66 20 63 6f 6d 70 69 6c 65 72 2d 73  se of compiler-s
cb10: 70 65 63 69 66 69 63 20 62 75 69 6c 74 2d 69 6e  pecific built-in
cb20: 20 66 75 6e 63 74 69 6f 6e 73 0a 20 20 73 75 63   functions.  suc
cb30: 68 20 61 73 20 5f 5f 62 75 69 6c 74 69 6e 5f 62  h as __builtin_b
cb40: 73 77 61 70 33 32 28 29 20 61 6e 64 20 5f 5f 62  swap32() and __b
cb50: 75 69 6c 74 69 6e 5f 61 64 64 5f 6f 76 65 72 66  uiltin_add_overf
cb60: 6c 6f 77 28 29 20 69 6e 20 47 43 43 20 61 6e 64  low() in GCC and
cb70: 20 43 6c 61 6e 67 2c 20 0a 20 20 6f 72 20 5f 62   Clang, .  or _b
cb80: 79 74 65 73 77 61 70 5f 75 6c 6f 6e 67 28 29 20  yteswap_ulong() 
cb90: 61 6e 64 20 5f 52 65 61 64 57 72 69 74 65 42 61  and _ReadWriteBa
cba0: 72 72 69 65 72 28 29 20 77 69 74 68 20 4d 53 56  rrier() with MSV
cbb0: 43 2e 20 20 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  C.  .}.</tcl>..<
cbc0: 74 63 6c 3e 0a 20 20 68 64 5f 66 72 61 67 6d 65  tcl>.  hd_fragme
cbd0: 6e 74 20 22 6f 6d 69 74 66 65 61 74 75 72 65 73  nt "omitfeatures
cbe0: 22 0a 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20  ".  hd_keywords 
cbf0: 22 6f 6d 69 74 66 65 61 74 75 72 65 73 22 0a 3c  "omitfeatures".<
cc00: 2f 74 63 6c 3e 0a 3c 68 31 3e 20 4f 70 74 69 6f  /tcl>.<h1> Optio
cc10: 6e 73 20 54 6f 20 4f 6d 69 74 20 46 65 61 74 75  ns To Omit Featu
cc20: 72 65 73 3c 2f 68 31 3e 0a 0a 3c 70 3e 54 68 65  res</h1>..<p>The
cc30: 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 6f   following optio
cc40: 6e 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  ns can be used t
cc50: 6f 20 0a 5b 72 65 6c 66 6f 6f 74 70 72 69 6e 74  o .[relfootprint
cc60: 20 7c 20 72 65 64 75 63 65 20 74 68 65 20 73 69   | reduce the si
cc70: 7a 65 20 6f 66 20 74 68 65 20 63 6f 6d 70 69 6c  ze of the compil
cc80: 65 64 20 6c 69 62 72 61 72 79 5d 0a 62 79 20 6f  ed library].by o
cc90: 6d 69 74 74 69 6e 67 20 75 6e 75 73 65 64 20 66  mitting unused f
cca0: 65 61 74 75 72 65 73 2e 20 54 68 69 73 20 69 73  eatures. This is
ccb0: 20 70 72 6f 62 61 62 6c 79 20 6f 6e 6c 79 20 75   probably only u
ccc0: 73 65 66 75 6c 0a 69 6e 20 65 6d 62 65 64 64 65  seful.in embedde
ccd0: 64 20 73 79 73 74 65 6d 73 20 77 68 65 72 65 20  d systems where 
cce0: 73 70 61 63 65 20 69 73 20 65 73 70 65 63 69 61  space is especia
ccf0: 6c 6c 79 20 74 69 67 68 74 2c 20 61 73 20 65 76  lly tight, as ev
cd00: 65 6e 20 77 69 74 68 20 61 6c 6c 0a 66 65 61 74  en with all.feat
cd10: 75 72 65 73 20 69 6e 63 6c 75 64 65 64 20 74 68  ures included th
cd20: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
cd30: 20 69 73 20 72 65 6c 61 74 69 76 65 6c 79 20 73   is relatively s
cd40: 6d 61 6c 6c 2e 20 44 6f 6e 27 74 20 66 6f 72 67  mall. Don't forg
cd50: 65 74 0a 74 6f 20 74 65 6c 6c 20 79 6f 75 72 20  et.to tell your 
cd60: 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69  compiler to opti
cd70: 6d 69 7a 65 20 66 6f 72 20 62 69 6e 61 72 79 20  mize for binary 
cd80: 73 69 7a 65 21 20 28 74 68 65 20 2d 4f 73 20 6f  size! (the -Os o
cd90: 70 74 69 6f 6e 20 69 66 0a 75 73 69 6e 67 20 47  ption if.using G
cda0: 43 43 29 2e 20 20 54 65 6c 6c 69 6e 67 20 79 6f  CC).  Telling yo
cdb0: 75 72 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f  ur compiler to o
cdc0: 70 74 69 6d 69 7a 65 20 66 6f 72 20 73 69 7a 65  ptimize for size
cdd0: 20 75 73 75 61 6c 6c 79 20 68 61 73 0a 61 20 6d   usually has.a m
cde0: 75 63 68 20 6c 61 72 67 65 72 20 69 6d 70 61 63  uch larger impac
cdf0: 74 20 6f 6e 20 6c 69 62 72 61 72 79 20 66 6f 6f  t on library foo
ce00: 74 70 72 69 6e 74 20 74 68 61 6e 20 65 6d 70 6c  tprint than empl
ce10: 6f 79 69 6e 67 20 61 6e 79 20 6f 66 20 74 68 65  oying any of the
ce20: 73 65 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  se.compile-time 
ce30: 6f 70 74 69 6f 6e 73 2e 20 20 59 6f 75 20 73 68  options.  You sh
ce40: 6f 75 6c 64 20 61 6c 73 6f 20 76 65 72 69 66 79  ould also verify
ce50: 20 74 68 61 74 20 0a 3c 61 20 68 72 65 66 3d 22   that .<a href="
ce60: 23 64 65 62 75 67 6f 70 74 69 6f 6e 73 22 3e 64  #debugoptions">d
ce70: 65 62 75 67 67 69 6e 67 20 6f 70 74 69 6f 6e 73  ebugging options
ce80: 3c 2f 61 3e 20 61 72 65 20 64 69 73 61 62 6c 65  </a> are disable
ce90: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6d  d.</p>..<p>The m
cea0: 61 63 72 6f 73 20 69 6e 20 74 68 69 73 20 73 65  acros in this se
ceb0: 63 74 69 6f 6e 20 64 6f 20 6e 6f 74 20 72 65 71  ction do not req
cec0: 75 69 72 65 20 76 61 6c 75 65 73 2e 20 54 68 65  uire values. The
ced0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 0a 63 6f 6d 70   following .comp
cee0: 69 6c 61 74 69 6f 6e 20 73 77 69 74 63 68 65 73  ilation switches
cef0: 20 61 6c 6c 20 68 61 76 65 20 74 68 65 20 73 61   all have the sa
cf00: 6d 65 20 65 66 66 65 63 74 3a 3c 62 72 3e 0a 2d  me effect:<br>.-
cf10: 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54  DSQLITE_OMIT_ALT
cf20: 45 52 54 41 42 4c 45 3c 62 72 3e 0a 2d 44 53 51  ERTABLE<br>.-DSQ
cf30: 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54  LITE_OMIT_ALTERT
cf40: 41 42 4c 45 3d 31 3c 62 72 3e 0a 2d 44 53 51 4c  ABLE=1<br>.-DSQL
cf50: 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41  ITE_OMIT_ALTERTA
cf60: 42 4c 45 3d 30 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49  BLE=0.</p>..<p>I
cf70: 66 20 61 6e 79 20 6f 66 20 74 68 65 73 65 20 6f  f any of these o
cf80: 70 74 69 6f 6e 73 20 61 72 65 20 64 65 66 69 6e  ptions are defin
cf90: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 73 61 6d  ed, then the sam
cfa0: 65 20 73 65 74 20 6f 66 20 53 51 4c 49 54 45 5f  e set of SQLITE_
cfb0: 4f 4d 49 54 5f 2a 0a 6f 70 74 69 6f 6e 73 20 6d  OMIT_*.options m
cfc0: 75 73 74 20 61 6c 73 6f 20 62 65 20 64 65 66 69  ust also be defi
cfd0: 6e 65 64 20 77 68 65 6e 20 75 73 69 6e 67 20 74  ned when using t
cfe0: 68 65 20 27 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20  he 'lemon' tool 
cff0: 74 6f 20 67 65 6e 65 72 61 74 65 20 74 68 65 0a  to generate the.
d000: 70 61 72 73 65 2e 63 20 66 69 6c 65 20 61 6e 64  parse.c file and
d010: 20 77 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 20   when compiling 
d020: 74 68 65 20 27 6d 6b 6b 65 79 77 6f 72 64 68 61  the 'mkkeywordha
d030: 73 68 27 20 74 6f 6f 6c 20 77 68 69 63 68 20 67  sh' tool which g
d040: 65 6e 65 72 61 74 65 73 20 0a 74 68 65 20 6b 65  enerates .the ke
d050: 79 77 6f 72 64 68 61 73 68 2e 68 20 66 69 6c 65  ywordhash.h file
d060: 2e 0a 42 65 63 61 75 73 65 20 6f 66 20 74 68 69  ..Because of thi
d070: 73 2c 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73  s, these options
d080: 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65   may only be use
d090: 64 20 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61  d when the libra
d0a0: 72 79 20 69 73 20 62 75 69 6c 74 0a 66 72 6f 6d  ry is built.from
d0b0: 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75 72 63   canonical sourc
d0c0: 65 2c 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20  e, not from the 
d0d0: 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2e 0a  [amalgamation]..
d0e0: 53 6f 6d 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54  Some SQLITE_OMIT
d0f0: 5f 2a 20 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74  _* options might
d100: 20 77 6f 72 6b 2c 20 6f 72 20 61 70 70 65 61 72   work, or appear
d110: 20 74 6f 20 77 6f 72 6b 2c 20 77 68 65 6e 20 75   to work, when u
d120: 73 65 64 20 77 69 74 68 0a 74 68 65 20 5b 61 6d  sed with.the [am
d130: 61 6c 67 61 6d 61 74 69 6f 6e 5d 2e 20 20 42 75  algamation].  Bu
d140: 74 20 74 68 69 73 20 69 73 20 6e 6f 74 20 67 75  t this is not gu
d150: 61 72 61 6e 74 65 65 64 2e 20 20 49 6e 20 67 65  aranteed.  In ge
d160: 6e 65 72 61 6c 2c 20 61 6c 77 61 79 73 20 63 6f  neral, always co
d170: 6d 70 69 6c 65 0a 66 72 6f 6d 20 63 61 6e 6f 6e  mpile.from canon
d180: 69 63 61 6c 20 73 6f 75 72 63 65 73 20 69 6e 20  ical sources in 
d190: 6f 72 64 65 72 20 74 6f 20 74 61 6b 65 20 61 64  order to take ad
d1a0: 76 61 6e 74 61 67 65 20 6f 66 20 53 51 4c 49 54  vantage of SQLIT
d1b0: 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73  E_OMIT_* options
d1c0: 2e 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  ..</p>..<blockqu
d1d0: 6f 74 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72  ote>.<i><b>Impor
d1e0: 74 61 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e 20 54  tant Note:</b> T
d1f0: 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  he SQLITE_OMIT_*
d200: 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20 6e 6f 74   options may not
d210: 20 77 6f 72 6b 20 77 69 74 68 20 74 68 65 0a 5b   work with the.[
d220: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2e 20 20  amalgamation].  
d230: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f  SQLITE_OMIT_* co
d240: 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f  mpile-time.optio
d250: 6e 73 20 75 73 75 61 6c 6c 79 20 77 6f 72 6b 20  ns usually work 
d260: 63 6f 72 72 65 63 74 6c 79 20 6f 6e 6c 79 20 77  correctly only w
d270: 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20 62 75  hen SQLite is bu
d280: 69 6c 74 20 66 72 6f 6d 20 63 61 6e 6f 6e 69 63  ilt from canonic
d290: 61 6c 20 0a 73 6f 75 72 63 65 20 66 69 6c 65 73  al .source files
d2a0: 2e 0a 3c 2f 69 3e 0a 3c 2f 62 6c 6f 63 6b 71 75  ..</i>.</blockqu
d2b0: 6f 74 65 3e 0a 0a 0a 3c 70 3e 53 70 65 63 69 61  ote>...<p>Specia
d2c0: 6c 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68  l versions of th
d2d0: 65 20 53 51 4c 69 74 65 20 61 6d 61 6c 67 61 6d  e SQLite amalgam
d2e0: 61 74 69 6f 6e 20 74 68 61 74 20 64 6f 20 77 6f  ation that do wo
d2f0: 72 6b 20 77 69 74 68 20 61 0a 70 72 65 64 65 74  rk with a.predet
d300: 65 72 6d 69 6e 65 64 20 73 65 74 20 6f 66 20 53  ermined set of S
d310: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74  QLITE_OMIT_* opt
d320: 69 6f 6e 73 20 63 61 6e 20 62 65 20 67 65 6e 65  ions can be gene
d330: 72 61 74 65 64 2e 20 20 54 6f 20 64 6f 20 73 6f  rated.  To do so
d340: 2c 0a 6d 61 6b 65 20 61 20 63 6f 70 79 20 6f 66  ,.make a copy of
d350: 20 74 68 65 20 4d 61 6b 65 66 69 6c 65 2e 6c 69   the Makefile.li
d360: 6e 75 78 2d 67 63 63 20 6d 61 6b 65 66 69 6c 65  nux-gcc makefile
d370: 20 74 65 6d 70 6c 61 74 65 20 69 6e 20 74 68 65   template in the
d380: 20 63 61 6e 6f 6e 69 63 61 6c 0a 73 6f 75 72 63   canonical.sourc
d390: 65 20 63 6f 64 65 20 64 69 73 74 72 69 62 75 74  e code distribut
d3a0: 69 6f 6e 2e 20 20 43 68 61 6e 67 65 20 74 68 65  ion.  Change the
d3b0: 20 6e 61 6d 65 20 6f 66 20 79 6f 75 72 20 63 6f   name of your co
d3c0: 70 79 20 74 6f 20 73 69 6d 70 6c 79 20 22 4d 61  py to simply "Ma
d3d0: 6b 65 66 69 6c 65 22 2e 0a 54 68 65 6e 20 65 64  kefile"..Then ed
d3e0: 69 74 20 22 4d 61 6b 65 66 69 6c 65 22 20 74 6f  it "Makefile" to
d3f0: 20 73 65 74 20 75 70 20 61 70 70 72 6f 70 72 69   set up appropri
d400: 61 74 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  ate compile-time
d410: 20 6f 70 74 69 6f 6e 73 2e 20 20 54 68 65 6e 0a   options.  Then.
d420: 74 79 70 65 3a 0a 3c 63 6f 64 65 62 6c 6f 63 6b  type:.<codeblock
d430: 3e 0a 6d 61 6b 65 20 63 6c 65 61 6e 3b 20 6d 61  >.make clean; ma
d440: 6b 65 20 73 71 6c 69 74 65 33 2e 63 0a 3c 2f 63  ke sqlite3.c.</c
d450: 6f 64 65 62 6c 6f 63 6b 3e 0a 3c 70 3e 54 68 65  odeblock>.<p>The
d460: 20 72 65 73 75 6c 74 69 6e 67 20 22 73 71 6c 69   resulting "sqli
d470: 74 65 33 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74  te3.c" amalgamat
d480: 69 6f 6e 20 63 6f 64 65 20 66 69 6c 65 20 28 61  ion code file (a
d490: 6e 64 20 69 74 73 20 61 73 73 6f 63 69 61 74 65  nd its associate
d4a0: 64 0a 68 65 61 64 65 72 20 66 69 6c 65 20 22 73  d.header file "s
d4b0: 71 6c 69 74 65 33 2e 68 22 29 20 63 61 6e 20 74  qlite3.h") can t
d4c0: 68 65 6e 20 62 65 20 6d 6f 76 65 64 20 74 6f 20  hen be moved to 
d4d0: 61 20 6e 6f 6e 2d 75 6e 69 78 20 70 6c 61 74 66  a non-unix platf
d4e0: 6f 72 6d 0a 66 6f 72 20 66 69 6e 61 6c 20 63 6f  orm.for final co
d4f0: 6d 70 69 6c 61 74 69 6f 6e 20 75 73 69 6e 67 20  mpilation using 
d500: 61 20 6e 61 74 69 76 65 20 63 6f 6d 70 69 6c 65  a native compile
d510: 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 53  r.</p>..<p>The S
d520: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74  QLITE_OMIT_* opt
d530: 69 6f 6e 73 20 61 72 65 20 75 6e 73 75 70 70 6f  ions are unsuppo
d540: 72 74 65 64 2e 20 20 42 79 20 74 68 69 73 20 77  rted.  By this w
d550: 65 20 6d 65 61 6e 20 74 68 61 74 0a 61 6e 20 53  e mean that.an S
d560: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74  QLITE_OMIT_* opt
d570: 69 6f 6e 20 74 68 61 74 20 6f 6d 69 74 73 20 63  ion that omits c
d580: 6f 64 65 20 66 72 6f 6d 20 74 68 65 20 62 75 69  ode from the bui
d590: 6c 64 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e  ld in the curren
d5a0: 74 0a 72 65 6c 65 61 73 65 20 6d 69 67 68 74 20  t.release might 
d5b0: 62 65 63 6f 6d 65 20 61 20 6e 6f 2d 6f 70 20 69  become a no-op i
d5c0: 6e 20 74 68 65 20 6e 65 78 74 20 72 65 6c 65 61  n the next relea
d5d0: 73 65 2e 20 20 4f 72 20 74 68 65 20 6f 74 68 65  se.  Or the othe
d5e0: 72 20 77 61 79 20 61 72 6f 75 6e 64 3a 0a 61 6e  r way around:.an
d5f0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 74   SQLITE_OMIT_* t
d600: 68 61 74 20 69 73 20 61 20 6e 6f 2d 6f 70 20 69  hat is a no-op i
d610: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 65  n the current re
d620: 6c 65 61 73 65 20 6d 69 67 68 74 20 63 61 75 73  lease might caus
d630: 65 20 63 6f 64 65 0a 74 6f 20 62 65 20 65 78 63  e code.to be exc
d640: 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6e 65 78  luded in the nex
d650: 74 20 72 65 6c 65 61 73 65 2e 20 20 41 6c 73 6f  t release.  Also
d660: 2c 20 6e 6f 74 20 61 6c 6c 20 53 51 4c 49 54 45  , not all SQLITE
d670: 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 0a  _OMIT_* options.
d680: 61 72 65 20 74 65 73 74 65 64 2e 20 20 53 6f 6d  are tested.  Som
d690: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  e SQLITE_OMIT_* 
d6a0: 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74 20 63 61  options might ca
d6b0: 75 73 65 20 53 51 4c 69 74 65 20 74 6f 20 6d 61  use SQLite to ma
d6c0: 6c 66 75 6e 63 74 69 6f 6e 0a 61 6e 64 2f 6f 72  lfunction.and/or
d6d0: 20 70 72 6f 76 69 64 65 20 69 6e 63 6f 72 72 65   provide incorre
d6e0: 63 74 20 61 6e 73 77 65 72 73 2e 0a 0a 3c 62 6c  ct answers...<bl
d6f0: 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62 3e  ockquote>.<i><b>
d700: 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65 3a 3c  Important Note:<
d710: 2f 62 3e 0a 54 68 65 20 53 51 4c 49 54 45 5f 4f  /b>.The SQLITE_O
d720: 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69  MIT_* compile-ti
d730: 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 6d  me options are m
d740: 6f 73 74 6c 79 20 75 6e 73 75 70 70 6f 72 74 65  ostly unsupporte
d750: 64 2e 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b 71 75  d..</i></blockqu
d760: 6f 74 65 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c  ote>..<p>The fol
d770: 6c 6f 77 69 6e 67 20 61 72 65 20 74 68 65 20 61  lowing are the a
d780: 76 61 69 6c 61 62 6c 65 20 4f 4d 49 54 20 6f 70  vailable OMIT op
d790: 74 69 6f 6e 73 3a 0a 0a 3c 74 63 6c 3e 0a 43 4f  tions:..<tcl>.CO
d7a0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
d7b0: 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54  LITE_OMIT_ALTERT
d7c0: 41 42 4c 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74  ABLE} {.  When t
d7d0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
d7e0: 66 69 6e 65 64 2c 20 74 68 65 20 0a 20 20 5b 41  fined, the .  [A
d7f0: 4c 54 45 52 20 54 41 42 4c 45 5d 20 63 6f 6d 6d  LTER TABLE] comm
d800: 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75  and is not inclu
d810: 64 65 64 20 69 6e 20 74 68 65 20 0a 20 20 6c 69  ded in the .  li
d820: 62 72 61 72 79 2e 20 45 78 65 63 75 74 69 6e 67  brary. Executing
d830: 20 61 6e 20 5b 41 4c 54 45 52 20 54 41 42 4c 45   an [ALTER TABLE
d840: 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73  ] statement caus
d850: 65 73 20 61 20 70 61 72 73 65 20 65 72 72 6f 72  es a parse error
d860: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
d870: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
d880: 5f 41 4e 41 4c 59 5a 45 7d 20 7b 0a 20 20 57 68  _ANALYZE} {.  Wh
d890: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
d8a0: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b  s defined, the [
d8b0: 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64  ANALYZE] command
d8c0: 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d   is omitted from
d8d0: 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a  .  the build..}.
d8e0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
d8f0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 54 54  {SQLITE_OMIT_ATT
d900: 41 43 48 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  ACH} {.  When th
d910: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
d920: 69 6e 65 64 2c 20 74 68 65 20 5b 41 54 54 41 43  ined, the [ATTAC
d930: 48 5d 20 61 6e 64 20 5b 44 45 54 41 43 48 5d 20  H] and [DETACH] 
d940: 63 6f 6d 6d 61 6e 64 73 20 61 72 65 0a 20 20 6f  commands are.  o
d950: 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20  mitted from the 
d960: 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  build..}..COMPIL
d970: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
d980: 5f 4f 4d 49 54 5f 41 55 54 48 4f 52 49 5a 41 54  _OMIT_AUTHORIZAT
d990: 49 4f 4e 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  ION} {.  Definin
d9a0: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d  g this option om
d9b0: 69 74 73 20 74 68 65 20 61 75 74 68 6f 72 69 7a  its the authoriz
d9c0: 61 74 69 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 66  ation callback f
d9d0: 65 61 74 75 72 65 20 66 72 6f 6d 20 74 68 65 0a  eature from the.
d9e0: 20 20 6c 69 62 72 61 72 79 2e 20 54 68 65 20 5b    library. The [
d9f0: 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68  sqlite3_set_auth
da00: 6f 72 69 7a 65 72 28 29 5d 20 41 50 49 20 66 75  orizer()] API fu
da10: 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72  nction is not pr
da20: 65 73 65 6e 74 0a 20 20 69 6e 20 74 68 65 20 6c  esent.  in the l
da30: 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49  ibrary..}..COMPI
da40: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
da50: 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 43 52 45  E_OMIT_AUTOINCRE
da60: 4d 45 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f  MENT} {.  This o
da70: 70 74 69 6f 6e 20 69 73 20 6f 6d 69 74 73 20 74  ption is omits t
da80: 68 65 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e  he [AUTOINCREMEN
da90: 54 5d 20 66 65 61 74 75 72 65 2e 20 0a 20 20 57  T] feature. .  W
daa0: 68 65 6e 20 74 68 69 73 20 69 73 20 6d 61 63 72  hen this is macr
dab0: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 63 6f  o is defined, co
dac0: 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65 64 20 61  lumns declared a
dad0: 73 20 0a 20 20 22 5b 49 4e 54 45 47 45 52 20 50  s .  "[INTEGER P
dae0: 52 49 4d 41 52 59 20 4b 45 59 5d 20 41 55 54 4f  RIMARY KEY] AUTO
daf0: 49 4e 43 52 45 4d 45 4e 54 22 0a 20 20 62 65 68  INCREMENT".  beh
db00: 61 76 65 20 69 6e 20 74 68 65 20 73 61 6d 65 20  ave in the same 
db10: 77 61 79 20 61 73 20 63 6f 6c 75 6d 6e 73 20 64  way as columns d
db20: 65 63 6c 61 72 65 64 20 61 73 20 22 5b 49 4e 54  eclared as "[INT
db30: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
db40: 5d 22 20 77 68 65 6e 20 61 20 0a 20 20 4e 55 4c  ]" when a .  NUL
db50: 4c 20 69 73 20 69 6e 73 65 72 74 65 64 2e 20 54  L is inserted. T
db60: 68 65 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e  he sqlite_sequen
db70: 63 65 20 73 79 73 74 65 6d 20 74 61 62 6c 65 20  ce system table 
db80: 69 73 20 6e 65 69 74 68 65 72 20 63 72 65 61 74  is neither creat
db90: 65 64 2c 20 6e 6f 72 0a 20 20 72 65 73 70 65 63  ed, nor.  respec
dba0: 74 65 64 20 69 66 20 69 74 20 61 6c 72 65 61 64  ted if it alread
dbb0: 79 20 65 78 69 73 74 73 2e 0a 7d 0a 0a 43 4f 4d  y exists..}..COM
dbc0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
dbd0: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49  ITE_OMIT_AUTOINI
dbe0: 54 7d 20 7b 0a 20 20 46 6f 72 20 62 61 63 6b 77  T} {.  For backw
dbf0: 61 72 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69  ards compatibili
dc00: 74 79 20 77 69 74 68 20 6f 6c 64 65 72 20 76 65  ty with older ve
dc10: 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65  rsions of SQLite
dc20: 20 74 68 61 74 20 6c 61 63 6b 0a 20 20 74 68 65   that lack.  the
dc30: 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61   [sqlite3_initia
dc40: 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72 66 61 63  lize()] interfac
dc50: 65 2c 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  e, the [sqlite3_
dc60: 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 69 6e  initialize()] in
dc70: 74 65 72 66 61 63 65 0a 20 20 69 73 20 63 61 6c  terface.  is cal
dc80: 6c 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  led automaticall
dc90: 79 20 75 70 6f 6e 20 65 6e 74 72 79 20 74 6f 20  y upon entry to 
dca0: 63 65 72 74 61 69 6e 20 6b 65 79 20 69 6e 74 65  certain key inte
dcb0: 72 66 61 63 65 73 20 73 75 63 68 20 61 73 0a 20  rfaces such as. 
dcc0: 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29   [sqlite3_open()
dcd0: 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f  ], [sqlite3_vfs_
dce0: 72 65 67 69 73 74 65 72 28 29 5d 2c 20 61 6e 64  register()], and
dcf0: 20 5b 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74   [sqlite3_mprint
dd00: 66 28 29 5d 2e 0a 20 20 54 68 65 20 6f 76 65 72  f()]..  The over
dd10: 68 65 61 64 20 6f 66 20 69 6e 76 6f 6b 69 6e 67  head of invoking
dd20: 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61   [sqlite3_initia
dd30: 6c 69 7a 65 28 29 5d 20 61 75 74 6f 6d 61 74 69  lize()] automati
dd40: 63 61 6c 6c 79 20 69 6e 20 74 68 69 73 0a 20 20  cally in this.  
dd50: 77 61 79 20 6d 61 79 20 62 65 20 6f 6d 69 74 74  way may be omitt
dd60: 65 64 20 62 79 20 62 75 69 6c 64 69 6e 67 20 53  ed by building S
dd70: 51 4c 69 74 65 20 77 69 74 68 20 74 68 65 20 53  QLite with the S
dd80: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49  QLITE_OMIT_AUTOI
dd90: 4e 49 54 0a 20 20 43 2d 70 72 65 70 72 6f 63 65  NIT.  C-preproce
dda0: 73 73 6f 72 20 6d 61 63 72 6f 2e 20 20 57 68 65  ssor macro.  Whe
ddb0: 6e 20 62 75 69 6c 74 20 75 73 69 6e 67 20 53 51  n built using SQ
ddc0: 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e  LITE_OMIT_AUTOIN
ddd0: 49 54 2c 20 53 51 4c 69 74 65 0a 20 20 77 69 6c  IT, SQLite.  wil
dde0: 6c 20 6e 6f 74 20 61 75 74 6f 6d 61 74 69 63 61  l not automatica
ddf0: 6c 6c 79 20 69 6e 69 74 69 61 6c 69 7a 65 20 69  lly initialize i
de00: 74 73 65 6c 66 20 61 6e 64 20 74 68 65 20 61 70  tself and the ap
de10: 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 72 65 71  plication is req
de20: 75 69 72 65 64 0a 20 20 74 6f 20 69 6e 76 6f 6b  uired.  to invok
de30: 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  e [sqlite3_initi
de40: 61 6c 69 7a 65 28 29 5d 20 64 69 72 65 63 74 6c  alize()] directl
de50: 79 20 70 72 69 6f 72 20 74 6f 20 62 65 67 69 6e  y prior to begin
de60: 6e 69 6e 67 20 75 73 65 20 6f 66 20 74 68 65 0a  ning use of the.
de70: 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79    SQLite library
de80: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
de90: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
dea0: 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58  _AUTOMATIC_INDEX
deb0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
dec0: 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69  n is used to omi
ded0: 74 20 74 68 65 20 0a 20 20 5b 61 75 74 6f 6d 61  t the .  [automa
dee0: 74 69 63 20 69 6e 64 65 78 69 6e 67 5d 20 66 75  tic indexing] fu
def0: 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 0a 20 20 53  nctionality..  S
df00: 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45  ee also: [SQLITE
df10: 5f 44 45 46 41 55 4c 54 5f 41 55 54 4f 4d 41 54  _DEFAULT_AUTOMAT
df20: 49 43 5f 49 4e 44 45 58 5d 2e 0a 7d 0a 0a 43 4f  IC_INDEX]..}..CO
df30: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
df40: 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 52 45  LITE_OMIT_AUTORE
df50: 53 45 54 7d 20 7b 0a 20 20 42 79 20 64 65 66 61  SET} {.  By defa
df60: 75 6c 74 2c 20 74 68 65 20 5b 73 71 6c 69 74 65  ult, the [sqlite
df70: 33 5f 73 74 65 70 28 29 5d 20 69 6e 74 65 72 66  3_step()] interf
df80: 61 63 65 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74  ace will automat
df90: 69 63 61 6c 6c 79 20 69 6e 76 6f 6b 65 0a 20 20  ically invoke.  
dfa0: 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29  [sqlite3_reset()
dfb0: 5d 20 74 6f 20 72 65 73 65 74 20 74 68 65 20 5b  ] to reset the [
dfc0: 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
dfd0: 6e 74 5d 20 69 66 20 6e 65 63 65 73 73 61 72 79  nt] if necessary
dfe0: 2e 20 20 54 68 69 73 0a 20 20 63 6f 6d 70 69 6c  .  This.  compil
dff0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63 68  e-time option ch
e000: 61 6e 67 65 73 20 74 68 61 74 20 62 65 68 61 76  anges that behav
e010: 69 6f 72 20 73 6f 20 74 68 61 74 20 5b 73 71 6c  ior so that [sql
e020: 69 74 65 33 5f 73 74 65 70 28 29 5d 20 77 69 6c  ite3_step()] wil
e030: 6c 0a 20 20 72 65 74 75 72 6e 20 5b 53 51 4c 49  l.  return [SQLI
e040: 54 45 5f 4d 49 53 55 53 45 5d 20 69 66 20 69 74  TE_MISUSE] if it
e050: 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 20 61 66   called again af
e060: 74 65 72 20 72 65 74 75 72 6e 69 6e 67 20 61 6e  ter returning an
e070: 79 74 68 69 6e 67 20 6f 74 68 65 72 0a 20 20 74  ything other.  t
e080: 68 61 6e 20 5b 53 51 4c 49 54 45 5f 52 4f 57 5d  han [SQLITE_ROW]
e090: 2c 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 2c  , [SQLITE_BUSY],
e0a0: 20 6f 72 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b   or [SQLITE_LOCK
e0b0: 45 44 5d 20 75 6e 6c 65 73 73 20 74 68 65 72 65  ED] unless there
e0c0: 20 77 61 73 20 61 6e 0a 20 20 69 6e 74 65 72 76   was an.  interv
e0d0: 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f 20 5b 73  ening call to [s
e0e0: 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 2e  qlite3_reset()].
e0f0: 0a 0a 20 20 49 6e 20 53 51 4c 69 74 65 20 5b 76  ..  In SQLite [v
e100: 65 72 73 69 6f 6e 20 33 2e 36 2e 32 33 2e 31 5d  ersion 3.6.23.1]
e110: 20 28 5b 64 61 74 65 6f 66 3a 33 2e 36 2e 32 33   ([dateof:3.6.23
e120: 2e 31 5d 29 0a 20 20 61 6e 64 20 65 61 72 6c 69  .1]).  and earli
e130: 65 72 2c 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  er, [sqlite3_ste
e140: 70 28 29 5d 20 75 73 65 64 20 74 6f 20 61 6c 77  p()] used to alw
e150: 61 79 73 0a 20 20 72 65 74 75 72 6e 20 5b 53 51  ays.  return [SQ
e160: 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 69 66 20  LITE_MISUSE] if 
e170: 69 74 20 77 61 73 20 69 6e 76 6f 6b 65 64 20 61  it was invoked a
e180: 67 61 69 6e 20 61 66 74 65 72 20 72 65 74 75 72  gain after retur
e190: 6e 69 6e 67 20 61 6e 79 74 68 69 6e 67 0a 20 20  ning anything.  
e1a0: 6f 74 68 65 72 20 74 68 61 6e 20 5b 53 51 4c 49  other than [SQLI
e1b0: 54 45 5f 52 4f 57 5d 20 77 69 74 68 6f 75 74 20  TE_ROW] without 
e1c0: 61 6e 20 69 6e 74 65 72 76 65 6e 69 6e 67 20 63  an intervening c
e1d0: 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  all to [sqlite3_
e1e0: 72 65 73 65 74 28 29 5d 2e 0a 20 20 54 68 69 73  reset()]..  This
e1f0: 20 63 61 75 73 65 64 20 70 72 6f 62 6c 65 6d 73   caused problems
e200: 20 6f 6e 20 73 6f 6d 65 20 70 6f 6f 72 6c 79 20   on some poorly 
e210: 77 72 69 74 74 65 6e 20 73 6d 61 72 74 70 68 6f  written smartpho
e220: 6e 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20  ne applications 
e230: 77 68 69 63 68 0a 20 20 64 69 64 20 6e 6f 74 20  which.  did not 
e240: 63 6f 72 72 65 63 74 6c 79 20 68 61 6e 64 6c 65  correctly handle
e250: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c 4f 43   the [SQLITE_LOC
e260: 4b 45 44 5d 20 61 6e 64 20 5b 53 51 4c 49 54 45  KED] and [SQLITE
e270: 5f 42 55 53 59 5d 20 65 72 72 6f 72 20 0a 20 20  _BUSY] error .  
e280: 72 65 74 75 72 6e 73 2e 20 20 52 61 74 68 65 72  returns.  Rather
e290: 20 74 68 61 6e 20 66 69 78 20 74 68 65 20 6d 61   than fix the ma
e2a0: 6e 79 20 64 65 66 65 63 74 69 76 65 20 73 6d 61  ny defective sma
e2b0: 72 74 70 68 6f 6e 65 20 61 70 70 6c 69 63 61 74  rtphone applicat
e2c0: 69 6f 6e 73 2c 20 0a 20 20 74 68 65 20 62 65 68  ions, .  the beh
e2d0: 61 76 69 6f 72 20 6f 66 20 53 51 4c 69 74 65 20  avior of SQLite 
e2e0: 77 61 73 20 63 68 61 6e 67 65 64 20 69 6e 20 33  was changed in 3
e2f0: 2e 36 2e 32 33 2e 32 20 74 6f 20 61 75 74 6f 6d  .6.23.2 to autom
e300: 61 74 69 63 61 6c 6c 79 20 72 65 73 65 74 0a 20  atically reset. 
e310: 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74   the prepared st
e320: 61 74 65 6d 65 6e 74 2e 20 20 42 75 74 20 74 68  atement.  But th
e330: 61 74 20 63 68 61 6e 67 65 64 20 63 61 75 73 65  at changed cause
e340: 64 20 69 73 73 75 65 73 20 69 6e 20 6f 74 68 65  d issues in othe
e350: 72 20 0a 20 20 69 6d 70 72 6f 70 65 72 6c 79 20  r .  improperly 
e360: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 61 70 70 6c  implemented appl
e370: 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20 77 65  ications that we
e380: 72 65 20 61 63 74 75 61 6c 6c 79 20 6c 6f 6f 6b  re actually look
e390: 69 6e 67 0a 20 20 66 6f 72 20 61 6e 20 5b 53 51  ing.  for an [SQ
e3a0: 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 72 65 74  LITE_MISUSE] ret
e3b0: 75 72 6e 20 74 6f 20 74 65 72 6d 69 6e 61 74 65  urn to terminate
e3c0: 20 74 68 65 69 72 20 71 75 65 72 79 20 6c 6f 6f   their query loo
e3d0: 70 73 2e 20 20 28 41 6e 79 74 69 6d 65 0a 20 20  ps.  (Anytime.  
e3e0: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 67  an application g
e3f0: 65 74 73 20 61 6e 20 53 51 4c 49 54 45 5f 4d 49  ets an SQLITE_MI
e400: 53 55 53 45 20 65 72 72 6f 72 20 63 6f 64 65 20  SUSE error code 
e410: 66 72 6f 6d 20 53 51 4c 69 74 65 2c 20 74 68 61  from SQLite, tha
e420: 74 20 6d 65 61 6e 73 20 74 68 65 0a 20 20 61 70  t means the.  ap
e430: 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 6d 69 73  plication is mis
e440: 75 73 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65  using the SQLite
e450: 20 69 6e 74 65 72 66 61 63 65 20 61 6e 64 20 69   interface and i
e460: 73 20 74 68 75 73 20 69 6e 63 6f 72 72 65 63 74  s thus incorrect
e470: 6c 79 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 65 64  ly.  implemented
e480: 2e 29 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4f  .)  The SQLITE_O
e490: 4d 49 54 5f 41 55 54 4f 52 45 53 45 54 20 69 6e  MIT_AUTORESET in
e4a0: 74 65 72 66 61 63 65 20 77 61 73 20 61 64 64 65  terface was adde
e4b0: 64 20 74 6f 20 53 51 4c 69 74 65 0a 20 20 5b 76  d to SQLite.  [v
e4c0: 65 72 73 69 6f 6e 20 33 2e 37 2e 35 5d 20 28 5b  ersion 3.7.5] ([
e4d0: 64 61 74 65 6f 66 3a 33 2e 37 2e 35 5d 29 20 69  dateof:3.7.5]) i
e4e0: 6e 20 61 6e 20 65 66 66 6f 72 74 20 74 6f 20 67  n an effort to g
e4f0: 65 74 20 61 6c 6c 20 6f 66 20 74 68 65 20 28 62  et all of the (b
e500: 72 6f 6b 65 6e 29 0a 20 20 61 70 70 6c 69 63 61  roken).  applica
e510: 74 69 6f 6e 73 20 74 6f 20 77 6f 72 6b 20 61 67  tions to work ag
e520: 61 69 6e 20 77 69 74 68 6f 75 74 20 68 61 76 69  ain without havi
e530: 6e 67 20 74 6f 20 61 63 74 75 61 6c 6c 79 20 66  ng to actually f
e540: 69 78 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  ix the applicati
e550: 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ons..}..COMPILE_
e560: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
e570: 4d 49 54 5f 41 55 54 4f 56 41 43 55 55 4d 7d 20  MIT_AUTOVACUUM} 
e580: 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  {.  If this opti
e590: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
e5a0: 68 65 20 6c 69 62 72 61 72 79 20 63 61 6e 6e 6f  he library canno
e5b0: 74 20 63 72 65 61 74 65 20 6f 72 20 77 72 69 74  t create or writ
e5c0: 65 20 74 6f 20 0a 20 20 64 61 74 61 62 61 73 65  e to .  database
e5d0: 73 20 74 68 61 74 20 73 75 70 70 6f 72 74 20 5b  s that support [
e5e0: 61 75 74 6f 5f 76 61 63 75 75 6d 5d 2e 0a 20 20  auto_vacuum]..  
e5f0: 45 78 65 63 75 74 69 6e 67 20 61 20 5b 50 52 41  Executing a [PRA
e600: 47 4d 41 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d  GMA auto_vacuum]
e610: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f   statement is no
e620: 74 20 61 6e 20 65 72 72 6f 72 0a 20 20 28 73 69  t an error.  (si
e630: 6e 63 65 20 75 6e 6b 6e 6f 77 6e 20 50 52 41 47  nce unknown PRAG
e640: 4d 41 73 20 61 72 65 20 73 69 6c 65 6e 74 6c 79  MAs are silently
e650: 20 69 67 6e 6f 72 65 64 29 2c 20 62 75 74 20 64   ignored), but d
e660: 6f 65 73 20 6e 6f 74 20 72 65 74 75 72 6e 20 61  oes not return a
e670: 20 76 61 6c 75 65 0a 20 20 6f 72 20 6d 6f 64 69   value.  or modi
e680: 66 79 20 74 68 65 20 61 75 74 6f 2d 76 61 63 75  fy the auto-vacu
e690: 75 6d 20 66 6c 61 67 20 69 6e 20 74 68 65 20 64  um flag in the d
e6a0: 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20 49 66  atabase file. If
e6b0: 20 61 20 64 61 74 61 62 61 73 65 20 74 68 61 74   a database that
e6c0: 0a 20 20 73 75 70 70 6f 72 74 73 20 61 75 74 6f  .  supports auto
e6d0: 2d 76 61 63 75 75 6d 20 69 73 20 6f 70 65 6e 65  -vacuum is opene
e6e0: 64 20 62 79 20 61 20 6c 69 62 72 61 72 79 20 63  d by a library c
e6f0: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 69  ompiled with thi
e700: 73 20 6f 70 74 69 6f 6e 2c 20 69 74 0a 20 20 69  s option, it.  i
e710: 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  s automatically 
e720: 6f 70 65 6e 65 64 20 69 6e 20 72 65 61 64 2d 6f  opened in read-o
e730: 6e 6c 79 20 6d 6f 64 65 2e 0a 7d 0a 0a 43 4f 4d  nly mode..}..COM
e740: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
e750: 49 54 45 5f 4f 4d 49 54 5f 42 45 54 57 45 45 4e  ITE_OMIT_BETWEEN
e760: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b  _OPTIMIZATION} {
e770: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  .  This option d
e780: 69 73 61 62 6c 65 73 20 74 68 65 20 75 73 65 20  isables the use 
e790: 6f 66 20 69 6e 64 69 63 65 73 20 77 69 74 68 20  of indices with 
e7a0: 57 48 45 52 45 20 63 6c 61 75 73 65 20 74 65 72  WHERE clause ter
e7b0: 6d 73 0a 20 20 74 68 61 74 20 65 6d 70 6c 6f 79  ms.  that employ
e7c0: 20 74 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65   the BETWEEN ope
e7d0: 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  rator..}..COMPIL
e7e0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
e7f0: 5f 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54 45 52  _OMIT_BLOB_LITER
e800: 41 4c 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  AL} {.  When thi
e810: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
e820: 6e 65 64 2c 20 69 74 20 69 73 20 6e 6f 74 20 70  ned, it is not p
e830: 6f 73 73 69 62 6c 65 20 74 6f 20 73 70 65 63 69  ossible to speci
e840: 66 79 20 61 20 62 6c 6f 62 20 69 6e 0a 20 20 61  fy a blob in.  a
e850: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  n SQL statement 
e860: 75 73 69 6e 67 20 74 68 65 20 58 27 41 42 43 44  using the X'ABCD
e870: 27 20 73 79 6e 74 61 78 2e 0a 7d 0a 0a 43 4f 4d  ' syntax..}..COM
e880: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
e890: 49 54 45 5f 4f 4d 49 54 5f 42 54 52 45 45 43 4f  ITE_OMIT_BTREECO
e8a0: 55 4e 54 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  UNT} {.  When th
e8b0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
e8c0: 69 6e 65 64 2c 20 61 6e 20 6f 70 74 69 6d 69 7a  ined, an optimiz
e8d0: 61 74 69 6f 6e 20 74 68 61 74 20 61 63 63 65 6c  ation that accel
e8e0: 65 72 61 74 65 73 20 63 6f 75 6e 74 69 6e 67 0a  erates counting.
e8f0: 20 20 61 6c 6c 20 65 6e 74 72 69 65 73 20 69 6e    all entries in
e900: 20 61 20 74 61 62 6c 65 20 28 69 6e 20 6f 74 68   a table (in oth
e910: 65 72 20 77 6f 72 64 73 2c 20 61 6e 20 6f 70 74  er words, an opt
e920: 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61 74 20 68  imization that h
e930: 65 6c 70 73 0a 20 20 22 53 45 4c 45 43 54 20 63  elps.  "SELECT c
e940: 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 61 62  ount(*) FROM tab
e950: 6c 65 22 20 72 75 6e 20 66 61 73 74 65 72 29 20  le" run faster) 
e960: 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43  is omitted..}..C
e970: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
e980: 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55 49 4c 54  QLITE_OMIT_BUILT
e990: 49 4e 5f 54 45 53 54 7d 20 7b 0a 20 20 54 68 69  IN_TEST} {.  Thi
e9a0: 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
e9b0: 70 74 69 6f 6e 20 68 61 73 20 62 65 65 6e 20 72  ption has been r
e9c0: 65 6e 61 6d 65 64 20 74 6f 20 5b 53 51 4c 49 54  enamed to [SQLIT
e9d0: 45 5f 55 4e 54 45 53 54 41 42 4c 45 5d 2e 0a 7d  E_UNTESTABLE]..}
e9e0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
e9f0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 41   {SQLITE_OMIT_CA
ea00: 53 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  ST} {.  This opt
ea10: 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74  ion causes SQLit
ea20: 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72  e to omit suppor
ea30: 74 20 66 6f 72 20 74 68 65 20 43 41 53 54 20 6f  t for the CAST o
ea40: 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  perator..}..COMP
ea50: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
ea60: 54 45 5f 4f 4d 49 54 5f 43 48 45 43 4b 7d 20 7b  TE_OMIT_CHECK} {
ea70: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
ea80: 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20  auses SQLite to 
ea90: 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72  omit support for
eaa0: 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e   CHECK constrain
eab0: 74 73 2e 0a 20 20 54 68 65 20 70 61 72 73 65 72  ts..  The parser
eac0: 20 77 69 6c 6c 20 73 74 69 6c 6c 20 61 63 63 65   will still acce
ead0: 70 74 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61  pt CHECK constra
eae0: 69 6e 74 73 20 69 6e 20 53 51 4c 20 73 74 61 74  ints in SQL stat
eaf0: 65 6d 65 6e 74 73 2c 0a 20 20 74 68 65 79 20 77  ements,.  they w
eb00: 69 6c 6c 20 6a 75 73 74 20 6e 6f 74 20 62 65 20  ill just not be 
eb10: 65 6e 66 6f 72 63 65 64 2e 0a 7d 0a 0a 43 4f 4d  enforced..}..COM
eb20: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
eb30: 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49 4c 45  ITE_OMIT_COMPILE
eb40: 4f 50 54 49 4f 4e 5f 44 49 41 47 53 7d 20 7b 0a  OPTION_DIAGS} {.
eb50: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
eb60: 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68   used to omit th
eb70: 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  e compile-time o
eb80: 70 74 69 6f 6e 20 64 69 61 67 6e 6f 73 74 69 63  ption diagnostic
eb90: 73 20 61 76 61 69 6c 61 62 6c 65 0a 20 20 69 6e  s available.  in
eba0: 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69   SQLite, includi
ebb0: 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  ng the [sqlite3_
ebc0: 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73  compileoption_us
ebd0: 65 64 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c  ed()] and.  [sql
ebe0: 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
ebf0: 6f 6e 5f 67 65 74 28 29 5d 20 43 2f 43 2b 2b 20  on_get()] C/C++ 
ec00: 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68 65 0a 20  functions, the. 
ec10: 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65   [sqlite_compile
ec20: 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20 61  option_used()] a
ec30: 6e 64 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69  nd [sqlite_compi
ec40: 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20  leoption_get()] 
ec50: 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 2c 0a 20  SQL functions,. 
ec60: 20 61 6e 64 20 74 68 65 20 5b 63 6f 6d 70 69 6c   and the [compil
ec70: 65 5f 6f 70 74 69 6f 6e 73 20 70 72 61 67 6d 61  e_options pragma
ec80: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
ec90: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
eca0: 54 5f 43 4f 4d 50 4c 45 54 45 7d 20 7b 0a 20 20  T_COMPLETE} {.  
ecb0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
ecc0: 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  es the [sqlite3_
ecd0: 63 6f 6d 70 6c 65 74 65 28 29 5d 20 61 6e 64 20  complete()] and 
ece0: 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74  [sqlite3_complet
ecf0: 65 31 36 28 29 5d 0a 20 20 69 6e 74 65 72 66 61  e16()].  interfa
ed00: 63 65 73 20 74 6f 20 62 65 20 6f 6d 69 74 74 65  ces to be omitte
ed10: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
ed20: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
ed30: 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43  T_COMPOUND_SELEC
ed40: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
ed50: 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d  on is used to om
ed60: 69 74 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20  it the compound 
ed70: 5b 53 45 4c 45 43 54 5d 20 66 75 6e 63 74 69 6f  [SELECT] functio
ed80: 6e 61 6c 69 74 79 2e 20 0a 20 20 5b 53 45 4c 45  nality. .  [SELE
ed90: 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 74  CT] statements t
eda0: 68 61 74 20 75 73 65 20 74 68 65 20 0a 20 20 55  hat use the .  U
edb0: 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c  NION, UNION ALL,
edc0: 20 49 4e 54 45 52 53 45 43 54 20 6f 72 20 45 58   INTERSECT or EX
edd0: 43 45 50 54 20 63 6f 6d 70 6f 75 6e 64 20 53 45  CEPT compound SE
ede0: 4c 45 43 54 20 6f 70 65 72 61 74 6f 72 73 20 77  LECT operators w
edf0: 69 6c 6c 20 0a 20 20 63 61 75 73 65 20 61 20 70  ill .  cause a p
ee00: 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20 41  arse error...  A
ee10: 6e 20 5b 49 4e 53 45 52 54 5d 20 73 74 61 74 65  n [INSERT] state
ee20: 6d 65 6e 74 20 77 69 74 68 20 6d 75 6c 74 69 70  ment with multip
ee30: 6c 65 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65  le values in the
ee40: 20 56 41 4c 55 45 53 20 63 6c 61 75 73 65 20 69   VALUES clause i
ee50: 73 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20  s.  implemented 
ee60: 69 6e 74 65 72 6e 61 6c 6c 79 20 61 73 20 61 20  internally as a 
ee70: 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 2e  compound SELECT.
ee80: 20 20 48 65 6e 63 65 2c 20 74 68 69 73 20 6f 70    Hence, this op
ee90: 74 69 6f 6e 20 61 6c 73 6f 0a 20 20 64 69 73 61  tion also.  disa
eea0: 62 6c 65 73 20 74 68 65 20 61 62 69 6c 69 74 79  bles the ability
eeb0: 20 74 6f 20 69 6e 73 65 72 74 20 6d 6f 72 65 20   to insert more 
eec0: 74 68 61 6e 20 61 20 73 69 6e 67 6c 65 20 72 6f  than a single ro
eed0: 77 20 75 73 69 6e 67 20 61 6e 0a 20 20 49 4e 53  w using an.  INS
eee0: 45 52 54 20 49 4e 54 4f 20 2e 2e 2e 20 56 41 4c  ERT INTO ... VAL
eef0: 55 45 53 20 2e 2e 2e 20 73 74 61 74 65 6d 65 6e  UES ... statemen
ef00: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
ef10: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
ef20: 54 5f 43 54 45 7d 20 7b 0a 20 20 54 68 69 73 20  T_CTE} {.  This 
ef30: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75  option causes su
ef40: 70 70 6f 72 74 20 66 6f 72 20 5b 63 6f 6d 6d 6f  pport for [commo
ef50: 6e 20 74 61 62 6c 65 20 65 78 70 72 65 73 73 69  n table expressi
ef60: 6f 6e 73 5d 20 74 6f 20 62 65 20 6f 6d 69 74 74  ons] to be omitt
ef70: 65 64 2e 0a 7d 0a 0a 0a 0a 43 4f 4d 50 49 4c 45  ed..}....COMPILE
ef80: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
ef90: 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f 46 55  OMIT_DATETIME_FU
efa0: 4e 43 53 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  NCS} {.  If this
efb0: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
efc0: 65 64 2c 20 53 51 4c 69 74 65 27 73 20 62 75 69  ed, SQLite's bui
efd0: 6c 74 2d 69 6e 20 64 61 74 65 20 61 6e 64 20 74  lt-in date and t
efe0: 69 6d 65 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e  ime manipulation
eff0: 0a 20 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  .  functions are
f000: 20 6f 6d 69 74 74 65 64 2e 20 53 70 65 63 69 66   omitted. Specif
f010: 69 63 61 6c 6c 79 2c 20 74 68 65 20 53 51 4c 20  ically, the SQL 
f020: 66 75 6e 63 74 69 6f 6e 73 20 6a 75 6c 69 61 6e  functions julian
f030: 64 61 79 28 29 2c 20 64 61 74 65 28 29 2c 0a 20  day(), date(),. 
f040: 20 74 69 6d 65 28 29 2c 20 64 61 74 65 74 69 6d   time(), datetim
f050: 65 28 29 20 61 6e 64 20 73 74 72 66 74 69 6d 65  e() and strftime
f060: 28 29 20 61 72 65 20 6e 6f 74 20 61 76 61 69 6c  () are not avail
f070: 61 62 6c 65 2e 20 54 68 65 20 64 65 66 61 75 6c  able. The defaul
f080: 74 20 63 6f 6c 75 6d 6e 0a 20 20 76 61 6c 75 65  t column.  value
f090: 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20  s CURRENT_TIME, 
f0a0: 43 55 52 52 45 4e 54 5f 44 41 54 45 20 61 6e 64  CURRENT_DATE and
f0b0: 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41   CURRENT_TIMESTA
f0c0: 4d 50 20 61 72 65 20 73 74 69 6c 6c 20 61 76 61  MP are still ava
f0d0: 69 6c 61 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  ilable..}..COMPI
f0e0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
f0f0: 45 5f 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45 7d  E_OMIT_DECLTYPE}
f100: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
f110: 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
f120: 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66  o omit support f
f130: 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65  or the.  [sqlite
f140: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
f150: 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  e()] and [sqlite
f160: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
f170: 65 31 36 28 29 5d 0a 20 20 69 6e 74 65 72 66 61  e16()].  interfa
f180: 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ces..}..COMPILE_
f190: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
f1a0: 4d 49 54 5f 44 45 50 52 45 43 41 54 45 44 7d 20  MIT_DEPRECATED} 
f1b0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
f1c0: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
f1d0: 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f   omit support fo
f1e0: 72 20 69 6e 74 65 72 66 61 63 65 73 0a 20 20 6d  r interfaces.  m
f1f0: 61 72 6b 65 64 20 61 73 20 64 65 70 72 65 63 61  arked as depreca
f200: 74 65 64 2e 20 20 54 68 69 73 20 69 6e 63 6c 75  ted.  This inclu
f210: 64 65 73 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f  des .  [sqlite3_
f220: 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28  aggregate_count(
f230: 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 65  )],.  [sqlite3_e
f240: 78 70 69 72 65 64 28 29 5d 2c 0a 20 20 5b 73 71  xpired()],.  [sq
f250: 6c 69 74 65 33 5f 74 72 61 6e 73 66 65 72 5f 62  lite3_transfer_b
f260: 69 6e 64 69 6e 67 73 28 29 5d 2c 0a 20 20 5b 73  indings()],.  [s
f270: 71 6c 69 74 65 33 5f 67 6c 6f 62 61 6c 5f 72 65  qlite3_global_re
f280: 63 6f 76 65 72 28 29 5d 2c 0a 20 20 5b 73 71 6c  cover()],.  [sql
f290: 69 74 65 33 5f 74 68 72 65 61 64 5f 63 6c 65 61  ite3_thread_clea
f2a0: 6e 75 70 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71  nup()] and.  [sq
f2b0: 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 61 6c 61  lite3_memory_ala
f2c0: 72 6d 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  rm()] interfaces
f2d0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
f2e0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
f2f0: 5f 44 49 53 4b 49 4f 7d 20 7b 0a 20 20 54 68 69  _DISKIO} {.  Thi
f300: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61  s option omits a
f310: 6c 6c 20 73 75 70 70 6f 72 74 20 66 6f 72 20 77  ll support for w
f320: 72 69 74 69 6e 67 20 74 6f 20 74 68 65 20 64 69  riting to the di
f330: 73 6b 20 61 6e 64 20 66 6f 72 63 65 73 0a 20 20  sk and forces.  
f340: 64 61 74 61 62 61 73 65 73 20 74 6f 20 65 78 69  databases to exi
f350: 73 74 20 69 6e 20 6d 65 6d 6f 72 79 20 6f 6e 6c  st in memory onl
f360: 79 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  y.  This option 
f370: 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 0a 20 20  has not been .  
f380: 6d 61 69 6e 74 61 69 6e 65 64 20 61 6e 64 20 70  maintained and p
f390: 72 6f 62 61 62 6c 79 20 64 6f 65 73 20 6e 6f 74  robably does not
f3a0: 20 77 6f 72 6b 20 77 69 74 68 20 6e 65 77 65 72   work with newer
f3b0: 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c   versions of SQL
f3c0: 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ite..}..COMPILE_
f3d0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
f3e0: 4d 49 54 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a 20  MIT_EXPLAIN} {. 
f3f0: 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
f400: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
f410: 20 5b 45 58 50 4c 41 49 4e 5d 20 63 6f 6d 6d 61   [EXPLAIN] comma
f420: 6e 64 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64  nd to be omitted
f430: 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72   from the.  libr
f440: 61 72 79 2e 20 41 74 74 65 6d 70 74 69 6e 67 20  ary. Attempting 
f450: 74 6f 20 65 78 65 63 75 74 65 20 61 6e 20 5b 45  to execute an [E
f460: 58 50 4c 41 49 4e 5d 20 73 74 61 74 65 6d 65 6e  XPLAIN] statemen
f470: 74 20 77 69 6c 6c 20 63 61 75 73 65 20 61 20 70  t will cause a p
f480: 61 72 73 65 0a 20 20 65 72 72 6f 72 2e 0a 7d 0a  arse.  error..}.
f490: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
f4a0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41  {SQLITE_OMIT_FLA
f4b0: 47 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 54  G_PRAGMAS} {.  T
f4c0: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
f4d0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 61 20 73   support for a s
f4e0: 75 62 73 65 74 20 6f 66 20 5b 50 52 41 47 4d 41  ubset of [PRAGMA
f4f0: 5d 20 63 6f 6d 6d 61 6e 64 73 20 74 68 61 74 0a  ] commands that.
f500: 20 20 71 75 65 72 79 20 61 6e 64 20 73 65 74 20    query and set 
f510: 62 6f 6f 6c 65 61 6e 20 70 72 6f 70 65 72 74 69  boolean properti
f520: 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  es..}..COMPILE_O
f530: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
f540: 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e  IT_FLOATING_POIN
f550: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
f560: 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d  on is used to om
f570: 69 74 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  it floating-poin
f580: 74 20 6e 75 6d 62 65 72 20 73 75 70 70 6f 72 74  t number support
f590: 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65   from the SQLite
f5a0: 0a 20 20 6c 69 62 72 61 72 79 2e 20 57 68 65 6e  .  library. When
f5b0: 20 73 70 65 63 69 66 69 65 64 2c 20 73 70 65 63   specified, spec
f5c0: 69 66 79 69 6e 67 20 61 20 66 6c 6f 61 74 69 6e  ifying a floatin
f5d0: 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 20 61  g point number a
f5e0: 73 20 61 20 6c 69 74 65 72 61 6c 20 0a 20 20 28  s a literal .  (
f5f0: 69 2e 65 2e 20 22 31 2e 30 31 22 29 20 72 65 73  i.e. "1.01") res
f600: 75 6c 74 73 20 69 6e 20 61 20 70 61 72 73 65 20  ults in a parse 
f610: 65 72 72 6f 72 2e 0a 0a 20 20 3c 70 3e 49 6e 20  error...  <p>In 
f620: 74 68 65 20 66 75 74 75 72 65 2c 20 74 68 69 73  the future, this
f630: 20 6f 70 74 69 6f 6e 20 6d 61 79 20 61 6c 73 6f   option may also
f640: 20 64 69 73 61 62 6c 65 20 6f 74 68 65 72 20 66   disable other f
f650: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 0a 20  loating point . 
f660: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2c 20   functionality, 
f670: 66 6f 72 20 65 78 61 6d 70 6c 65 20 74 68 65 20  for example the 
f680: 5b 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  [sqlite3_result_
f690: 64 6f 75 62 6c 65 28 29 5d 2c 20 0a 20 20 5b 73  double()], .  [s
f6a0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62  qlite3_bind_doub
f6b0: 6c 65 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  le()], [sqlite3_
f6c0: 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 29 5d 20  value_double()] 
f6d0: 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  and.  [sqlite3_c
f6e0: 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 29 5d 20  olumn_double()] 
f6f0: 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 20  API functions.. 
f700: 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45   </p>.}..COMPILE
f710: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
f720: 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59  OMIT_FOREIGN_KEY
f730: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70  } {.  If this op
f740: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
f750: 20 74 68 65 6e 20 5b 66 6f 72 65 69 67 6e 20 6b   then [foreign k
f760: 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 5d 20 73  ey constraint] s
f770: 79 6e 74 61 78 20 69 73 0a 20 20 6e 6f 74 20 72  yntax is.  not r
f780: 65 63 6f 67 6e 69 7a 65 64 2e 0a 7d 0a 0a 43 4f  ecognized..}..CO
f790: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
f7a0: 4c 49 54 45 5f 4f 4d 49 54 5f 47 45 54 5f 54 41  LITE_OMIT_GET_TA
f7b0: 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  BLE} {.  This op
f7c0: 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70  tion causes supp
f7d0: 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69 74 65 33  ort for [sqlite3
f7e0: 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 61 6e  _get_table()] an
f7f0: 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 66 72 65  d.  [sqlite3_fre
f800: 65 5f 74 61 62 6c 65 28 29 5d 20 74 6f 20 62 65  e_table()] to be
f810: 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   omitted..}..COM
f820: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
f830: 49 54 45 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c 4f  ITE_OMIT_INCRBLO
f840: 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  B} {.  This opti
f850: 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70 6f 72  on causes suppor
f860: 74 20 66 6f 72 20 5b 73 71 6c 69 74 65 33 5f 62  t for [sqlite3_b
f870: 6c 6f 62 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61  lob | incrementa
f880: 6c 20 42 4c 4f 42 20 49 2f 4f 5d 0a 20 20 74 6f  l BLOB I/O].  to
f890: 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a   be omitted..}..
f8a0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
f8b0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 54 45  SQLITE_OMIT_INTE
f8c0: 47 52 49 54 59 5f 43 48 45 43 4b 7d 20 7b 0a 20  GRITY_CHECK} {. 
f8d0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
f8e0: 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74  ts support for t
f8f0: 68 65 20 5b 69 6e 74 65 67 72 69 74 79 5f 63 68  he [integrity_ch
f900: 65 63 6b 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a  eck pragma]..}..
f910: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
f920: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 49 4b 45  SQLITE_OMIT_LIKE
f930: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b  _OPTIMIZATION} {
f940: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  .  This option d
f950: 69 73 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c  isables the abil
f960: 69 74 79 20 6f 66 20 53 51 4c 69 74 65 20 74 6f  ity of SQLite to
f970: 20 75 73 65 20 69 6e 64 69 63 65 73 20 74 6f 20   use indices to 
f980: 68 65 6c 70 0a 20 20 72 65 73 6f 6c 76 65 20 5b  help.  resolve [
f990: 4c 49 4b 45 5d 20 61 6e 64 20 5b 47 4c 4f 42 5d  LIKE] and [GLOB]
f9a0: 20 6f 70 65 72 61 74 6f 72 73 20 69 6e 20 61 20   operators in a 
f9b0: 57 48 45 52 45 20 63 6c 61 75 73 65 2e 0a 7d 0a  WHERE clause..}.
f9c0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
f9d0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 41  {SQLITE_OMIT_LOA
f9e0: 44 5f 45 58 54 45 4e 53 49 4f 4e 7d 20 7b 0a 20  D_EXTENSION} {. 
f9f0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
fa00: 74 73 20 74 68 65 20 65 6e 74 69 72 65 20 65 78  ts the entire ex
fa10: 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67 20  tension loading 
fa20: 6d 65 63 68 61 6e 69 73 6d 20 66 72 6f 6d 0a 20  mechanism from. 
fa30: 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69   SQLite, includi
fa40: 6e 67 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62  ng [sqlite3_enab
fa50: 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  le_load_extensio
fa60: 6e 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69  n()] and.  [sqli
fa70: 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  te3_load_extensi
fa80: 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  on()] interfaces
fa90: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
faa0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
fab0: 5f 4c 4f 43 41 4c 54 49 4d 45 7d 20 7b 0a 20 20  _LOCALTIME} {.  
fac0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
fad0: 73 20 74 68 65 20 22 6c 6f 63 61 6c 74 69 6d 65  s the "localtime
fae0: 22 20 6d 6f 64 69 66 69 65 72 20 66 72 6f 6d 20  " modifier from 
faf0: 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d  the date and tim
fb00: 65 0a 20 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20  e.  functions.  
fb10: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 73  This option is s
fb20: 6f 6d 65 74 69 6d 65 73 20 75 73 65 66 75 6c 20  ometimes useful 
fb30: 77 68 65 6e 20 74 72 79 69 6e 67 20 74 6f 20 63  when trying to c
fb40: 6f 6d 70 69 6c 65 0a 20 20 74 68 65 20 64 61 74  ompile.  the dat
fb50: 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74  e and time funct
fb60: 69 6f 6e 73 20 6f 6e 20 61 20 70 6c 61 74 66 6f  ions on a platfo
fb70: 72 6d 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74  rm that does not
fb80: 20 73 75 70 70 6f 72 74 20 74 68 65 0a 20 20 63   support the.  c
fb90: 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 63 61 6c 20  oncept of local 
fba0: 74 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  time..}..COMPILE
fbb0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
fbc0: 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44 45 7d 20  OMIT_LOOKASIDE} 
fbd0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
fbe0: 6f 6d 69 74 73 20 74 68 65 20 5b 6c 6f 6f 6b 61  omits the [looka
fbf0: 73 69 64 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  side memory allo
fc00: 63 61 74 6f 72 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  cator]..}..COMPI
fc10: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
fc20: 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44 42 7d  E_OMIT_MEMORYDB}
fc30: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 69   {.  When this i
fc40: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 6c  s defined, the l
fc50: 69 62 72 61 72 79 20 64 6f 65 73 20 6e 6f 74 20  ibrary does not 
fc60: 72 65 73 70 65 63 74 20 74 68 65 20 73 70 65 63  respect the spec
fc70: 69 61 6c 20 64 61 74 61 62 61 73 65 0a 20 20 6e  ial database.  n
fc80: 61 6d 65 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 28  ame ":memory:" (
fc90: 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64 20 74 6f  normally used to
fca0: 20 63 72 65 61 74 65 20 61 6e 20 5b 69 6e 2d 6d   create an [in-m
fcb0: 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 5d 29  emory database])
fcc0: 2e 20 49 66 20 0a 20 20 22 3a 6d 65 6d 6f 72 79  . If .  ":memory
fcd0: 3a 22 20 69 73 20 70 61 73 73 65 64 20 74 6f 20  :" is passed to 
fce0: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d  [sqlite3_open()]
fcf0: 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31  , [sqlite3_open1
fd00: 36 28 29 5d 2c 20 6f 72 0a 20 20 5b 73 71 6c 69  6()], or.  [sqli
fd10: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20  te3_open_v2()], 
fd20: 61 20 66 69 6c 65 20 77 69 74 68 20 74 68 69 73  a file with this
fd30: 20 6e 61 6d 65 20 77 69 6c 6c 20 62 65 20 0a 20   name will be . 
fd40: 20 6f 70 65 6e 65 64 20 6f 72 20 63 72 65 61 74   opened or creat
fd50: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
fd60: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
fd70: 49 54 5f 4f 52 5f 4f 50 54 49 4d 49 5a 41 54 49  IT_OR_OPTIMIZATI
fd80: 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  ON} {.  This opt
fd90: 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65  ion disables the
fda0: 20 61 62 69 6c 69 74 79 20 6f 66 20 53 51 4c 69   ability of SQLi
fdb0: 74 65 20 74 6f 20 75 73 65 20 61 6e 20 69 6e 64  te to use an ind
fdc0: 65 78 20 74 6f 67 65 74 68 65 72 0a 20 20 77 69  ex together.  wi
fdd0: 74 68 20 74 65 72 6d 73 20 6f 66 20 61 20 57 48  th terms of a WH
fde0: 45 52 45 20 63 6c 61 75 73 65 20 63 6f 6e 6e 65  ERE clause conne
fdf0: 63 74 65 64 20 62 79 20 74 68 65 20 4f 52 20 6f  cted by the OR o
fe00: 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  perator..}..COMP
fe10: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
fe20: 54 45 5f 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52  TE_OMIT_PAGER_PR
fe30: 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e  AGMAS} {.  Defin
fe40: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
fe50: 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20 72 65  omits pragmas re
fe60: 6c 61 74 65 64 20 74 6f 20 74 68 65 20 70 61 67  lated to the pag
fe70: 65 72 20 73 75 62 73 79 73 74 65 6d 20 66 72 6f  er subsystem fro
fe80: 6d 20 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a  m .  the build..
fe90: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
fea0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50  N {SQLITE_OMIT_P
feb0: 52 41 47 4d 41 7d 20 7b 0a 20 20 54 68 69 73 20  RAGMA} {.  This 
fec0: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
fed0: 6f 20 6f 6d 69 74 20 74 68 65 20 5b 50 52 41 47  o omit the [PRAG
fee0: 4d 41 5d 20 63 6f 6d 6d 61 6e 64 0a 20 20 66 72  MA] command.  fr
fef0: 6f 6d 20 74 68 65 20 6c 69 62 72 61 72 79 2e 20  om the library. 
ff00: 4e 6f 74 65 20 74 68 61 74 20 69 74 20 69 73 20  Note that it is 
ff10: 75 73 65 66 75 6c 20 74 6f 20 64 65 66 69 6e 65  useful to define
ff20: 20 74 68 65 20 6d 61 63 72 6f 73 20 74 68 61 74   the macros that
ff30: 20 6f 6d 69 74 0a 20 20 73 70 65 63 69 66 69 63   omit.  specific
ff40: 20 70 72 61 67 6d 61 73 20 69 6e 20 61 64 64 69   pragmas in addi
ff50: 74 69 6f 6e 20 74 6f 20 74 68 69 73 2c 20 61 73  tion to this, as
ff60: 20 74 68 65 79 20 6d 61 79 20 61 6c 73 6f 20 72   they may also r
ff70: 65 6d 6f 76 65 20 73 75 70 70 6f 72 74 69 6e 67  emove supporting
ff80: 20 63 6f 64 65 0a 20 20 69 6e 20 6f 74 68 65 72   code.  in other
ff90: 20 73 75 62 2d 73 79 73 74 65 6d 73 2e 20 54 68   sub-systems. Th
ffa0: 69 73 20 6d 61 63 72 6f 20 72 65 6d 6f 76 65 73  is macro removes
ffb0: 20 74 68 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f   the [PRAGMA] co
ffc0: 6d 6d 61 6e 64 20 6f 6e 6c 79 2e 0a 7d 0a 0a 43  mmand only..}..C
ffd0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
ffe0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 4f 47 52  QLITE_OMIT_PROGR
fff0: 45 53 53 5f 43 41 4c 4c 42 41 43 4b 7d 20 7b 0a  ESS_CALLBACK} {.
10000 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61    This option ma
10010 79 20 62 65 20 64 65 66 69 6e 65 64 20 74 6f 20  y be defined to 
10020 6f 6d 69 74 20 74 68 65 20 63 61 70 61 62 69 6c  omit the capabil
10030 69 74 79 20 74 6f 20 69 73 73 75 65 20 22 70 72  ity to issue "pr
10040 6f 67 72 65 73 73 22 20 0a 20 20 63 61 6c 6c 62  ogress" .  callb
10050 61 63 6b 73 20 64 75 72 69 6e 67 20 6c 6f 6e 67  acks during long
10060 2d 72 75 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61  -running SQL sta
10070 74 65 6d 65 6e 74 73 2e 20 54 68 65 20 0a 20 20  tements. The .  
10080 5b 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73  [sqlite3_progres
10090 73 5f 68 61 6e 64 6c 65 72 28 29 5d 0a 20 20 41  s_handler()].  A
100a0 50 49 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e  PI function is n
100b0 6f 74 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68  ot present in th
100c0 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f  e library..}..CO
100d0 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
100e0 4c 49 54 45 5f 4f 4d 49 54 5f 51 55 49 43 4b 42  LITE_OMIT_QUICKB
100f0 41 4c 41 4e 43 45 7d 20 7b 0a 20 20 54 68 69 73  ALANCE} {.  This
10100 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6e   option omits an
10110 20 61 6c 74 65 72 6e 61 74 69 76 65 2c 20 66 61   alternative, fa
10120 73 74 65 72 20 42 2d 54 72 65 65 20 62 61 6c 61  ster B-Tree bala
10130 6e 63 69 6e 67 20 72 6f 75 74 69 6e 65 2e 0a 20  ncing routine.. 
10140 20 55 73 69 6e 67 20 74 68 69 73 20 6f 70 74 69   Using this opti
10150 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20  on makes SQLite 
10160 73 6c 69 67 68 74 6c 79 20 73 6d 61 6c 6c 65 72  slightly smaller
10170 20 61 74 20 74 68 65 20 65 78 70 65 6e 73 65 20   at the expense 
10180 6f 66 0a 20 20 6d 61 6b 69 6e 67 20 69 74 20 72  of.  making it r
10190 75 6e 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f 77  un slightly slow
101a0 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  er..}..COMPILE_O
101b0 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
101c0 49 54 5f 52 45 49 4e 44 45 58 7d 20 7b 0a 20 20  IT_REINDEX} {.  
101d0 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
101e0 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
101f0 20 5b 52 45 49 4e 44 45 58 5d 0a 20 20 63 6f 6d   [REINDEX].  com
10200 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c  mand is not incl
10210 75 64 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72  uded in the libr
10220 61 72 79 2e 0a 20 20 45 78 65 63 75 74 69 6e 67  ary..  Executing
10230 20 61 20 5b 52 45 49 4e 44 45 58 5d 20 73 74 61   a [REINDEX] sta
10240 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20 0a 20  tement causes . 
10250 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a   a parse error..
10260 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
10270 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  N {SQLITE_OMIT_S
10280 43 48 45 4d 41 5f 50 52 41 47 4d 41 53 7d 20 7b  CHEMA_PRAGMAS} {
10290 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73  .  Defining this
102a0 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72   option omits pr
102b0 61 67 6d 61 73 20 66 6f 72 20 71 75 65 72 79 69  agmas for queryi
102c0 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ng the database 
102d0 73 63 68 65 6d 61 20 66 72 6f 6d 20 0a 20 20 74  schema from .  t
102e0 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d  he build..}..COM
102f0 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
10300 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f  ITE_OMIT_SCHEMA_
10310 56 45 52 53 49 4f 4e 5f 50 52 41 47 4d 41 53 7d  VERSION_PRAGMAS}
10320 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
10330 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
10340 70 72 61 67 6d 61 73 20 66 6f 72 20 71 75 65 72  pragmas for quer
10350 79 69 6e 67 20 61 6e 64 20 6d 6f 64 69 66 79 69  ying and modifyi
10360 6e 67 20 74 68 65 20 0a 20 20 64 61 74 61 62 61  ng the .  databa
10370 73 65 20 73 63 68 65 6d 61 20 76 65 72 73 69 6f  se schema versio
10380 6e 20 61 6e 64 20 75 73 65 72 20 76 65 72 73 69  n and user versi
10390 6f 6e 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c  on from the buil
103a0 64 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79 2c  d. Specifically,
103b0 20 74 68 65 20 0a 20 20 5b 73 63 68 65 6d 61 5f   the .  [schema_
103c0 76 65 72 73 69 6f 6e 5d 20 61 6e 64 20 5b 75 73  version] and [us
103d0 65 72 5f 76 65 72 73 69 6f 6e 5d 20 50 52 41 47  er_version] PRAG
103e0 4d 41 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e  MAs are omitted.
103f0 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
10400 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
10410 53 48 41 52 45 44 5f 43 41 43 48 45 7d 20 7b 0a  SHARED_CACHE} {.
10420 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 62 75    This option bu
10430 69 6c 64 73 20 53 51 4c 69 74 65 20 77 69 74 68  ilds SQLite with
10440 6f 75 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  out support for 
10450 73 68 61 72 65 64 2d 63 61 63 68 65 20 6d 6f 64  shared-cache mod
10460 65 2e 0a 20 20 54 68 65 20 5b 73 71 6c 69 74 65  e..  The [sqlite
10470 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f  3_enable_shared_
10480 63 61 63 68 65 28 29 5d 20 69 73 20 6f 6d 69 74  cache()] is omit
10490 74 65 64 20 61 6c 6f 6e 67 20 77 69 74 68 20 61  ted along with a
104a0 20 66 61 69 72 0a 20 20 61 6d 6f 75 6e 74 20 6f   fair.  amount o
104b0 66 20 6c 6f 67 69 63 20 77 69 74 68 69 6e 20 74  f logic within t
104c0 68 65 20 42 2d 54 72 65 65 20 73 75 62 73 79 73  he B-Tree subsys
104d0 74 65 6d 20 61 73 73 6f 63 69 61 74 65 64 20 77  tem associated w
104e0 69 74 68 20 73 68 61 72 65 64 0a 20 20 63 61 63  ith shared.  cac
104f0 68 65 20 6d 61 6e 61 67 65 6d 65 6e 74 2e 0a 7d  he management..}
10500 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
10510 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 55   {SQLITE_OMIT_SU
10520 42 51 55 45 52 59 7d 20 7b 0a 20 20 49 66 20 64  BQUERY} {.  If d
10530 65 66 69 6e 65 64 2c 20 73 75 70 70 6f 72 74 20  efined, support 
10540 66 6f 72 20 73 75 62 2d 73 65 6c 65 63 74 73 20  for sub-selects 
10550 61 6e 64 20 74 68 65 20 49 4e 28 29 20 6f 70 65  and the IN() ope
10560 72 61 74 6f 72 20 61 72 65 20 6f 6d 69 74 74 65  rator are omitte
10570 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
10580 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
10590 54 5f 54 43 4c 5f 56 41 52 49 41 42 4c 45 7d 20  T_TCL_VARIABLE} 
105a0 7b 0a 20 20 49 66 20 74 68 69 73 20 6d 61 63 72  {.  If this macr
105b0 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  o is defined, th
105c0 65 6e 20 74 68 65 20 73 70 65 63 69 61 6c 20 22  en the special "
105d0 24 3c 76 61 72 69 61 62 6c 65 2d 6e 61 6d 65 3e  $<variable-name>
105e0 22 20 73 79 6e 74 61 78 0a 20 20 75 73 65 64 20  " syntax.  used 
105f0 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  to automatically
10600 20 62 69 6e 64 20 53 51 4c 20 76 61 72 69 61 62   bind SQL variab
10610 6c 65 73 20 74 6f 20 54 43 4c 20 76 61 72 69 61  les to TCL varia
10620 62 6c 65 73 20 69 73 20 6f 6d 69 74 74 65 64 2e  bles is omitted.
10630 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
10640 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
10650 54 45 4d 50 44 42 7d 20 7b 0a 20 20 54 68 69 73  TEMPDB} {.  This
10660 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
10670 70 70 6f 72 74 20 66 6f 72 20 54 45 4d 50 20 6f  pport for TEMP o
10680 72 20 54 45 4d 50 4f 52 41 52 59 20 74 61 62 6c  r TEMPORARY tabl
10690 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  es..}..COMPILE_O
106a0 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
106b0 49 54 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54 68  IT_TRACE} {.  Th
106c0 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
106d0 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20  support for the 
106e0 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65  [sqlite3_profile
106f0 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
10700 65 33 5f 74 72 61 63 65 28 29 5d 20 69 6e 74 65  e3_trace()] inte
10710 72 66 61 63 65 73 20 61 6e 64 20 74 68 65 69 72  rfaces and their
10720 20 61 73 73 6f 63 69 61 74 65 64 20 6c 6f 67 69   associated logi
10730 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  c..}..COMPILE_OP
10740 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
10750 54 5f 54 52 49 47 47 45 52 7d 20 7b 0a 20 20 44  T_TRIGGER} {.  D
10760 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74  efining this opt
10770 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72  ion omits suppor
10780 74 20 66 6f 72 20 54 52 49 47 47 45 52 20 6f 62  t for TRIGGER ob
10790 6a 65 63 74 73 2e 20 4e 65 69 74 68 65 72 20 74  jects. Neither t
107a0 68 65 20 0a 20 20 5b 43 52 45 41 54 45 20 54 52  he .  [CREATE TR
107b0 49 47 47 45 52 5d 20 6f 72 20 5b 44 52 4f 50 20  IGGER] or [DROP 
107c0 54 52 49 47 47 45 52 5d 0a 20 20 63 6f 6d 6d 61  TRIGGER].  comma
107d0 6e 64 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c  nds are availabl
107e0 65 20 69 6e 20 74 68 69 73 20 63 61 73 65 2c 20  e in this case, 
107f0 61 6e 64 20 61 74 74 65 6d 70 74 69 6e 67 20 74  and attempting t
10800 6f 20 65 78 65 63 75 74 65 0a 20 20 65 69 74 68  o execute.  eith
10810 65 72 20 77 69 6c 6c 20 72 65 73 75 6c 74 20 69  er will result i
10820 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e  n a parse error.
10830 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61  .  This option a
10840 6c 73 6f 20 64 69 73 61 62 6c 65 73 20 65 6e 66  lso disables enf
10850 6f 72 63 65 6d 65 6e 74 20 6f 66 20 5b 66 6f 72  orcement of [for
10860 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61  eign key constra
10870 69 6e 74 73 5d 2c 0a 20 20 73 69 6e 63 65 20 74  ints],.  since t
10880 68 65 20 63 6f 64 65 20 74 68 61 74 20 69 6d 70  he code that imp
10890 6c 65 6d 65 6e 74 73 20 74 72 69 67 67 65 72 73  lements triggers
108a0 20 61 6e 64 20 77 68 69 63 68 20 69 73 20 6f 6d   and which is om
108b0 69 74 74 65 64 20 62 79 20 74 68 69 73 0a 20 20  itted by this.  
108c0 6f 70 74 69 6f 6e 20 69 73 20 61 6c 73 6f 20 75  option is also u
108d0 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  sed to implement
108e0 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63   [foreign key ac
108f0 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  tions]..}..COMPI
10900 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
10910 45 5f 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f  E_OMIT_TRUNCATE_
10920 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a  OPTIMIZATION} {.
10930 20 20 41 20 64 65 66 61 75 6c 74 20 62 75 69 6c    A default buil
10940 64 20 6f 66 20 53 51 4c 69 74 65 2c 20 69 66 20  d of SQLite, if 
10950 61 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65  a [DELETE] state
10960 6d 65 6e 74 20 68 61 73 20 6e 6f 20 57 48 45 52  ment has no WHER
10970 45 20 63 6c 61 75 73 65 0a 20 20 61 6e 64 20 6f  E clause.  and o
10980 70 65 72 61 74 65 73 20 6f 6e 20 61 20 74 61 62  perates on a tab
10990 6c 65 20 77 69 74 68 20 6e 6f 20 74 72 69 67 67  le with no trigg
109a0 65 72 73 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61  ers, an optimiza
109b0 74 69 6f 6e 20 6f 63 63 75 72 73 20 74 68 61 74  tion occurs that
109c0 0a 20 20 63 61 75 73 65 73 20 74 68 65 20 44 45  .  causes the DE
109d0 4c 45 54 45 20 74 6f 20 6f 63 63 75 72 20 62 79  LETE to occur by
109e0 20 64 72 6f 70 70 69 6e 67 20 61 6e 64 20 72 65   dropping and re
109f0 63 72 65 61 74 69 6e 67 20 74 68 65 20 74 61 62  creating the tab
10a00 6c 65 2e 20 20 0a 20 20 44 72 6f 70 70 69 6e 67  le.  .  Dropping
10a10 20 61 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20   and recreating 
10a20 61 20 74 61 62 6c 65 20 69 73 20 75 73 75 61 6c  a table is usual
10a30 6c 79 20 6d 75 63 68 20 66 61 73 74 65 72 20 74  ly much faster t
10a40 68 61 6e 20 64 65 6c 65 74 69 6e 67 0a 20 20 74  han deleting.  t
10a50 68 65 20 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74  he table content
10a60 20 72 6f 77 20 62 79 20 72 6f 77 2e 20 20 54 68   row by row.  Th
10a70 69 73 20 69 73 20 74 68 65 20 22 74 72 75 6e 63  is is the "trunc
10a80 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  ate optimization
10a90 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  "..}..COMPILE_OP
10aa0 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
10ab0 54 5f 55 54 46 31 36 7d 20 7b 0a 20 20 54 68 69  T_UTF16} {.  Thi
10ac0 73 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20  s macro is used 
10ad0 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20  to omit support 
10ae0 66 6f 72 20 55 54 46 31 36 20 74 65 78 74 20 65  for UTF16 text e
10af0 6e 63 6f 64 69 6e 67 2e 20 57 68 65 6e 20 74 68  ncoding. When th
10b00 69 73 20 69 73 0a 20 20 64 65 66 69 6e 65 64 20  is is.  defined 
10b10 61 6c 6c 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  all API function
10b20 73 20 74 68 61 74 20 72 65 74 75 72 6e 20 6f 72  s that return or
10b30 20 61 63 63 65 70 74 20 55 54 46 31 36 20 65 6e   accept UTF16 en
10b40 63 6f 64 65 64 20 74 65 78 74 20 61 72 65 0a 20  coded text are. 
10b50 20 75 6e 61 76 61 69 6c 61 62 6c 65 2e 20 54 68   unavailable. Th
10b60 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 63 61  ese functions ca
10b70 6e 20 62 65 20 69 64 65 6e 74 69 66 69 65 64 20  n be identified 
10b80 62 79 20 74 68 65 20 66 61 63 74 20 74 68 61 74  by the fact that
10b90 20 74 68 65 79 20 65 6e 64 0a 20 20 77 69 74 68   they end.  with
10ba0 20 27 31 36 27 2c 20 66 6f 72 20 65 78 61 6d 70   '16', for examp
10bb0 6c 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  le [sqlite3_prep
10bc0 61 72 65 31 36 28 29 5d 2c 20 5b 73 71 6c 69 74  are16()], [sqlit
10bd0 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36  e3_column_text16
10be0 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
10bf0 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 29  e3_bind_text16()
10c00 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
10c10 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
10c20 54 5f 56 41 43 55 55 4d 7d 20 7b 0a 20 20 57 68  T_VACUUM} {.  Wh
10c30 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
10c40 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b  s defined, the [
10c50 56 41 43 55 55 4d 5d 0a 20 20 63 6f 6d 6d 61 6e  VACUUM].  comman
10c60 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65  d is not include
10c70 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79  d in the library
10c80 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61 20  ..  Executing a 
10c90 5b 56 41 43 55 55 4d 5d 20 73 74 61 74 65 6d 65  [VACUUM] stateme
10ca0 6e 74 20 63 61 75 73 65 73 20 0a 20 20 61 20 70  nt causes .  a p
10cb0 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43  arse error..}..C
10cc0 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
10cd0 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 45 57 7d  QLITE_OMIT_VIEW}
10ce0 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
10cf0 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
10d00 73 75 70 70 6f 72 74 20 66 6f 72 20 56 49 45 57  support for VIEW
10d10 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74 68 65   objects. Neithe
10d20 72 20 74 68 65 20 0a 20 20 5b 43 52 45 41 54 45  r the .  [CREATE
10d30 20 56 49 45 57 5d 20 6e 6f 72 20 74 68 65 20 5b   VIEW] nor the [
10d40 44 52 4f 50 20 56 49 45 57 5d 0a 20 20 63 6f 6d  DROP VIEW].  com
10d50 6d 61 6e 64 73 20 61 72 65 20 61 76 61 69 6c 61  mands are availa
10d60 62 6c 65 20 69 6e 20 74 68 69 73 20 63 61 73 65  ble in this case
10d70 2c 20 61 6e 64 0a 20 20 61 74 74 65 6d 70 74 69  , and.  attempti
10d80 6e 67 20 74 6f 20 65 78 65 63 75 74 65 20 65 69  ng to execute ei
10d90 74 68 65 72 20 77 69 6c 6c 20 72 65 73 75 6c 74  ther will result
10da0 20 69 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f   in a parse erro
10db0 72 2e 0a 0a 20 20 57 41 52 4e 49 4e 47 3a 20 49  r...  WARNING: I
10dc0 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20  f this macro is 
10dd0 64 65 66 69 6e 65 64 2c 20 69 74 20 77 69 6c 6c  defined, it will
10de0 20 6e 6f 74 20 62 65 20 70 6f 73 73 69 62 6c 65   not be possible
10df0 20 74 6f 20 6f 70 65 6e 20 61 20 64 61 74 61 62   to open a datab
10e00 61 73 65 0a 20 20 66 6f 72 20 77 68 69 63 68 20  ase.  for which 
10e10 74 68 65 20 73 63 68 65 6d 61 20 63 6f 6e 74 61  the schema conta
10e20 69 6e 73 20 56 49 45 57 20 6f 62 6a 65 63 74 73  ins VIEW objects
10e30 2e 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  . .}..COMPILE_OP
10e40 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
10e50 54 5f 56 49 52 54 55 41 4c 54 41 42 4c 45 7d 20  T_VIRTUALTABLE} 
10e60 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
10e70 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
10e80 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76  r the [sqlite3_v
10e90 74 61 62 20 7c 20 56 69 72 74 75 61 6c 20 54 61  tab | Virtual Ta
10ea0 62 6c 65 5d 0a 20 20 6d 65 63 68 61 6e 69 73 6d  ble].  mechanism
10eb0 20 69 6e 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43   in SQLite..}..C
10ec0 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
10ed0 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 41 4c 7d 20  QLITE_OMIT_WAL} 
10ee0 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
10ef0 6f 6d 69 74 73 20 74 68 65 20 22 5b 77 72 69 74  omits the "[writ
10f00 65 2d 61 68 65 61 64 20 6c 6f 67 5d 22 20 28 61  e-ahead log]" (a
10f10 2e 6b 2e 61 2e 20 22 5b 57 41 4c 5d 22 29 20 63  .k.a. "[WAL]") c
10f20 61 70 61 62 69 6c 69 74 79 2e 0a 7d 0a 0a 43 4f  apability..}..CO
10f30 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
10f40 4c 49 54 45 5f 4f 4d 49 54 5f 57 53 44 7d 20 7b  LITE_OMIT_WSD} {
10f50 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 62  .  This option b
10f60 75 69 6c 64 73 20 61 20 76 65 72 73 69 6f 6e 20  uilds a version 
10f70 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  of the SQLite li
10f80 62 72 61 72 79 20 74 68 61 74 20 63 6f 6e 74 61  brary that conta
10f90 69 6e 73 20 6e 6f 0a 20 20 57 72 69 74 61 62 6c  ins no.  Writabl
10fa0 65 20 53 74 61 74 69 63 20 44 61 74 61 20 28 57  e Static Data (W
10fb0 53 44 29 2e 20 20 57 53 44 20 69 73 20 67 6c 6f  SD).  WSD is glo
10fc0 62 61 6c 20 76 61 72 69 61 62 6c 65 73 20 61 6e  bal variables an
10fd0 64 2f 6f 72 20 73 74 61 74 69 63 0a 20 20 76 61  d/or static.  va
10fe0 72 69 61 62 6c 65 73 2e 20 20 53 6f 6d 65 20 70  riables.  Some p
10ff0 6c 61 74 66 6f 72 6d 73 20 64 6f 20 6e 6f 74 20  latforms do not 
11000 73 75 70 70 6f 72 74 20 57 53 44 2c 20 61 6e 64  support WSD, and
11010 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
11020 6e 65 63 65 73 73 61 72 79 0a 20 20 69 6e 20 6f  necessary.  in o
11030 72 64 65 72 20 66 6f 72 20 53 51 4c 69 74 65 20  rder for SQLite 
11040 74 6f 20 77 6f 72 6b 20 74 68 6f 73 65 20 70 6c  to work those pl
11050 61 74 66 6f 72 6d 73 2e 20 20 0a 0a 20 20 55 6e  atforms.  ..  Un
11060 6c 69 6b 65 20 6f 74 68 65 72 20 4f 4d 49 54 20  like other OMIT 
11070 6f 70 74 69 6f 6e 73 20 77 68 69 63 68 20 6d 61  options which ma
11080 6b 65 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  ke the SQLite li
11090 62 72 61 72 79 20 73 6d 61 6c 6c 65 72 2c 0a 20  brary smaller,. 
110a0 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 63 74   this option act
110b0 75 61 6c 6c 79 20 69 6e 63 72 65 61 73 65 73 20  ually increases 
110c0 74 68 65 20 73 69 7a 65 20 6f 66 20 53 51 4c 69  the size of SQLi
110d0 74 65 20 61 6e 64 20 6d 61 6b 65 73 20 69 74 20  te and makes it 
110e0 72 75 6e 0a 20 20 61 20 6c 69 74 74 6c 65 20 73  run.  a little s
110f0 6c 6f 77 65 72 2e 20 20 4f 6e 6c 79 20 75 73 65  lower.  Only use
11100 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 66 20   this option if 
11110 53 51 4c 69 74 65 20 69 73 20 62 65 69 6e 67 20  SQLite is being 
11120 62 75 69 6c 74 20 66 6f 72 20 61 6e 0a 20 20 65  built for an.  e
11130 6d 62 65 64 64 65 64 20 74 61 72 67 65 74 20 74  mbedded target t
11140 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70  hat does not sup
11150 70 6f 72 74 20 57 53 44 2e 0a 7d 0a 0a 43 4f 4d  port WSD..}..COM
11160 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
11170 49 54 45 5f 4f 4d 49 54 5f 58 46 45 52 5f 4f 50  ITE_OMIT_XFER_OP
11180 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
11190 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74  on omits support
111a0 20 66 6f 72 20 6f 70 74 69 6d 69 7a 61 74 69 6f   for optimizatio
111b0 6e 73 20 74 68 61 74 20 68 65 6c 70 20 73 74 61  ns that help sta
111c0 74 65 6d 65 6e 74 73 0a 20 20 6f 66 20 74 68 65  tements.  of the
111d0 20 66 6f 72 6d 20 22 49 4e 53 45 52 54 20 49 4e   form "INSERT IN
111e0 54 4f 20 2e 2e 2e 20 53 45 4c 45 43 54 20 2e 2e  TO ... SELECT ..
111f0 2e 22 20 72 75 6e 20 66 61 73 74 65 72 2e 0a 7d  ." run faster..}
11200 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
11210 20 7b 53 51 4c 49 54 45 5f 55 4e 54 45 53 54 41   {SQLITE_UNTESTA
11220 42 4c 45 7d 20 7b 0a 20 20 41 20 73 74 61 6e 64  BLE} {.  A stand
11230 61 72 64 20 53 51 4c 69 74 65 20 62 75 69 6c 64  ard SQLite build
11240 20 69 6e 63 6c 75 64 65 73 20 61 20 73 6d 61 6c   includes a smal
11250 6c 20 61 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69  l amount of logi
11260 63 20 61 73 73 6f 63 69 61 74 65 64 0a 20 20 77  c associated.  w
11270 69 74 68 20 5b 73 71 6c 69 74 65 33 5f 74 65 73  ith [sqlite3_tes
11280 74 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 74 6f 20  t_control()] to 
11290 65 78 65 72 63 69 73 65 0a 20 20 70 61 72 74 73  exercise.  parts
112a0 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 63   of the SQLite c
112b0 6f 72 65 20 74 68 61 74 20 61 72 65 20 6f 74 68  ore that are oth
112c0 65 72 77 69 73 65 20 64 69 66 66 69 63 75 6c 74  erwise difficult
112d0 20 74 6f 20 76 61 6c 69 64 61 74 65 2e 0a 20 20   to validate..  
112e0 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  This compile-tim
112f0 65 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74  e option omits t
11300 68 61 74 20 65 78 74 72 61 20 74 65 73 74 69 6e  hat extra testin
11310 67 20 6c 6f 67 69 63 2e 20 20 54 68 69 73 0a 20  g logic.  This. 
11320 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
11330 74 69 6f 6e 20 77 61 73 20 63 61 6c 6c 65 64 20  tion was called 
11340 22 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55 49  "SQLITE_OMIT_BUI
11350 4c 54 49 4e 5f 54 45 53 54 22 20 70 72 69 6f 72  LTIN_TEST" prior
11360 0a 20 20 74 6f 20 53 51 4c 69 74 65 20 76 65 72  .  to SQLite ver
11370 73 69 6f 6e 20 33 2e 31 36 2e 30 20 28 5b 64 61  sion 3.16.0 ([da
11380 74 65 6f 66 3a 33 2e 31 36 2e 30 5d 29 2e 20 20  teof:3.16.0]).  
11390 54 68 65 20 6e 61 6d 65 20 77 61 73 20 63 68 61  The name was cha
113a0 6e 67 65 64 0a 20 20 74 6f 20 62 65 74 74 65 72  nged.  to better
113b0 20 64 65 73 63 72 69 62 65 20 74 68 65 20 69 6d   describe the im
113c0 70 6c 69 63 61 74 69 6f 6e 73 20 6f 66 20 75 73  plications of us
113d0 69 6e 67 20 69 74 2e 0a 20 20 3c 70 3e 0a 20 20  ing it..  <p>.  
113e0 53 65 74 74 69 6e 67 20 74 68 69 73 20 63 6f 6d  Setting this com
113f0 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
11400 20 70 72 65 76 65 6e 74 73 20 53 51 4c 69 74 65   prevents SQLite
11410 20 66 72 6f 6d 20 62 65 69 6e 67 20 66 75 6c 6c   from being full
11420 79 0a 20 20 74 65 73 74 61 62 6c 65 2e 20 20 42  y.  testable.  B
11430 72 61 6e 63 68 20 74 65 73 74 20 63 6f 76 65 72  ranch test cover
11440 61 67 65 20 64 72 6f 70 73 20 66 72 6f 6d 20 31  age drops from 1
11450 30 30 25 20 64 6f 77 6e 20 74 6f 20 61 62 6f 75  00% down to abou
11460 74 20 39 35 25 2e 0a 20 20 3c 70 3e 0a 20 20 53  t 95%..  <p>.  S
11470 51 4c 69 74 65 20 64 65 76 65 6c 6f 70 65 72 73  QLite developers
11480 20 66 6f 6c 6c 6f 77 20 74 68 65 20 4e 41 53 41   follow the NASA
11490 20 70 72 69 6e 63 69 70 6c 65 20 6f 66 0a 20 20   principle of.  
114a0 22 66 6c 79 20 77 68 61 74 20 79 6f 75 20 74 65  "fly what you te
114b0 73 74 20 61 6e 64 20 74 65 73 74 20 77 68 61 74  st and test what
114c0 20 79 6f 75 20 66 6c 79 22 2e 20 20 54 68 69 73   you fly".  This
114d0 20 70 72 69 6e 63 69 70 6c 65 20 69 73 20 76 69   principle is vi
114e0 6f 6c 61 74 65 64 0a 20 20 69 66 20 74 68 69 73  olated.  if this
114f0 20 6f 70 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c   option is enabl
11500 65 64 20 66 6f 72 20 64 65 6c 69 76 65 72 79 20  ed for delivery 
11510 62 75 74 20 64 69 73 61 62 6c 65 64 20 66 6f 72  but disabled for
11520 20 74 65 73 74 69 6e 67 2e 0a 20 20 42 75 74 20   testing..  But 
11530 69 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  if this option i
11540 73 20 65 6e 61 62 6c 65 64 20 64 75 72 69 6e 67  s enabled during
11550 20 74 65 73 74 69 6e 67 2c 20 6e 6f 74 20 61 6c   testing, not al
11560 6c 20 62 72 61 6e 63 68 65 73 20 61 72 65 20 0a  l branches are .
11570 20 20 72 65 61 63 68 61 62 6c 65 2e 20 20 54 68    reachable.  Th
11580 65 72 65 66 6f 72 65 2c 20 74 68 65 20 75 73 65  erefore, the use
11590 20 6f 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65   of this compile
115a0 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20  -time option is 
115b0 64 69 73 63 6f 75 72 61 67 65 64 2e 0a 7d 0a 0a  discouraged..}..
115c0 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
115d0 53 51 4c 49 54 45 5f 5a 45 52 4f 5f 4d 41 4c 4c  SQLITE_ZERO_MALL
115e0 4f 43 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  OC} {.  This opt
115f0 69 6f 6e 20 6f 6d 69 74 73 20 62 6f 74 68 20 74  ion omits both t
11600 68 65 20 5b 64 65 66 61 75 6c 74 20 6d 65 6d 6f  he [default memo
11610 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 61 6e  ry allocator] an
11620 64 20 74 68 65 0a 20 20 5b 64 65 62 75 67 67 69  d the.  [debuggi
11630 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ng memory alloca
11640 74 6f 72 5d 20 66 72 6f 6d 20 74 68 65 20 62 75  tor] from the bu
11650 69 6c 64 20 61 6e 64 20 73 75 62 73 74 69 74 75  ild and substitu
11660 74 65 73 20 61 20 73 74 75 62 0a 20 20 6d 65 6d  tes a stub.  mem
11670 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 74 68  ory allocator th
11680 61 74 20 61 6c 77 61 79 73 20 66 61 69 6c 73 2e  at always fails.
11690 20 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6e 6f    SQLite will no
116a0 74 20 72 75 6e 20 77 69 74 68 20 74 68 69 73 0a  t run with this.
116b0 20 20 73 74 75 62 20 6d 65 6d 6f 72 79 20 61 6c    stub memory al
116c0 6c 6f 63 61 74 6f 72 20 73 69 6e 63 65 20 69 74  locator since it
116d0 20 77 69 6c 6c 20 62 65 20 75 6e 61 62 6c 65 20   will be unable 
116e0 74 6f 20 61 6c 6c 6f 63 61 74 65 20 6d 65 6d 6f  to allocate memo
116f0 72 79 2e 20 20 42 75 74 0a 20 20 74 68 69 73 20  ry.  But.  this 
11700 73 74 75 62 20 63 61 6e 20 62 65 20 72 65 70 6c  stub can be repl
11710 61 63 65 64 20 61 74 20 73 74 61 72 74 2d 74 69  aced at start-ti
11720 6d 65 20 75 73 69 6e 67 0a 20 20 5b 73 71 6c 69  me using.  [sqli
11730 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c  te3_config]([SQL
11740 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f  ITE_CONFIG_MALLO
11750 43 5d 2c 2e 2e 2e 29 20 6f 72 0a 20 20 5b 73 71  C],...) or.  [sq
11760 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53  lite3_config]([S
11770 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41  QLITE_CONFIG_HEA
11780 50 5d 2c 2e 2e 2e 29 2e 0a 20 20 53 6f 20 74 68  P],...)..  So th
11790 65 20 6e 65 74 20 65 66 66 65 63 74 20 6f 66 20  e net effect of 
117a0 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  this compile-tim
117b0 65 20 6f 70 74 69 6f 6e 20 69 73 20 74 68 61 74  e option is that
117c0 20 69 74 20 61 6c 6c 6f 77 73 20 53 51 4c 69 74   it allows SQLit
117d0 65 0a 20 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c  e.  to be compil
117e0 65 64 20 61 6e 64 20 6c 69 6e 6b 65 64 20 61 67  ed and linked ag
117f0 61 69 6e 73 74 20 61 20 73 79 73 74 65 6d 20 6c  ainst a system l
11800 69 62 72 61 72 79 20 74 68 61 74 20 64 6f 65 73  ibrary that does
11810 20 6e 6f 74 20 73 75 70 70 6f 72 74 0a 20 20 6d   not support.  m
11820 61 6c 6c 6f 63 28 29 2c 20 66 72 65 65 28 29 2c  alloc(), free(),
11830 20 61 6e 64 2f 6f 72 20 72 65 61 6c 6c 6f 63 28   and/or realloc(
11840 29 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20  )..}..</tcl>.<a 
11850 6e 61 6d 65 3d 22 64 65 62 75 67 6f 70 74 69 6f  name="debugoptio
11860 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 41 6e  ns"></a>.<h1> An
11870 61 6c 79 73 69 73 20 61 6e 64 20 44 65 62 75 67  alysis and Debug
11880 67 69 6e 67 20 4f 70 74 69 6f 6e 73 3c 2f 68 31  ging Options</h1
11890 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45  >.<tcl>..COMPILE
118a0 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
118b0 44 45 42 55 47 7d 20 7b 0a 20 20 54 68 65 20 53  DEBUG} {.  The S
118c0 51 4c 69 74 65 20 73 6f 75 72 63 65 20 63 6f 64  QLite source cod
118d0 65 20 63 6f 6e 74 61 69 6e 73 20 6c 69 74 65 72  e contains liter
118e0 61 6c 6c 79 20 74 68 6f 75 73 61 6e 64 73 20 6f  ally thousands o
118f0 66 20 61 73 73 65 72 74 28 29 20 73 74 61 74 65  f assert() state
11900 6d 65 6e 74 73 0a 20 20 75 73 65 64 20 74 6f 20  ments.  used to 
11910 76 65 72 69 66 79 20 69 6e 74 65 72 6e 61 6c 20  verify internal 
11920 61 73 73 75 6d 70 74 69 6f 6e 73 20 61 6e 64 20  assumptions and 
11930 73 75 62 72 6f 75 74 69 6e 65 20 70 72 65 63 6f  subroutine preco
11940 6e 64 69 74 69 6f 6e 73 20 61 6e 64 0a 20 20 70  nditions and.  p
11950 6f 73 74 63 6f 6e 64 69 74 69 6f 6e 73 2e 20 20  ostconditions.  
11960 54 68 65 73 65 20 61 73 73 65 72 74 28 29 20 73  These assert() s
11970 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 6e 6f  tatements are no
11980 72 6d 61 6c 6c 79 20 74 75 72 6e 65 64 20 6f 66  rmally turned of
11990 66 0a 20 20 28 74 68 65 79 20 67 65 6e 65 72 61  f.  (they genera
119a0 74 65 20 6e 6f 20 63 6f 64 65 29 20 73 69 6e 63  te no code) sinc
119b0 65 20 74 75 72 6e 69 6e 67 20 74 68 65 6d 20 6f  e turning them o
119c0 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20 72  n makes SQLite r
119d0 75 6e 20 61 70 70 72 6f 78 69 6d 61 74 65 6c 79  un approximately
119e0 0a 20 20 74 68 72 65 65 20 74 69 6d 65 73 20 73  .  three times s
119f0 6c 6f 77 65 72 2e 20 20 42 75 74 20 66 6f 72 20  lower.  But for 
11a00 74 65 73 74 69 6e 67 20 61 6e 64 20 61 6e 61 6c  testing and anal
11a10 79 73 69 73 2c 20 69 74 20 69 73 20 75 73 65 66  ysis, it is usef
11a20 75 6c 20 74 6f 20 74 75 72 6e 0a 20 20 74 68 65  ul to turn.  the
11a30 20 61 73 73 65 72 74 28 29 20 73 74 61 74 65 6d   assert() statem
11a40 65 6e 74 73 20 6f 6e 2e 20 20 54 68 65 20 53 51  ents on.  The SQ
11a50 4c 49 54 45 5f 44 45 42 55 47 20 63 6f 6d 70 69  LITE_DEBUG compi
11a60 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 64  le-time option d
11a70 6f 65 73 20 74 68 69 73 2e 0a 20 20 3c 70 3e 53  oes this..  <p>S
11a80 51 4c 49 54 45 5f 44 45 42 55 47 20 61 6c 73 6f  QLITE_DEBUG also
11a90 20 65 6e 61 62 6c 65 73 20 73 6f 6d 65 20 6f 74   enables some ot
11aa0 68 65 72 20 64 65 62 75 67 67 69 6e 67 20 66 65  her debugging fe
11ab0 61 74 75 72 65 73 2c 20 73 75 63 68 20 61 73 0a  atures, such as.
11ac0 20 20 73 70 65 63 69 61 6c 20 5b 50 52 41 47 4d    special [PRAGM
11ad0 41 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68  A] statements th
11ae0 61 74 20 74 75 72 6e 20 6f 6e 20 74 72 61 63 69  at turn on traci
11af0 6e 67 20 61 6e 64 20 6c 69 73 74 69 6e 67 20 66  ng and listing f
11b00 65 61 74 75 72 65 73 0a 20 20 75 73 65 64 20 66  eatures.  used f
11b10 6f 72 20 74 72 6f 75 62 6c 65 73 68 6f 6f 74 69  or troubleshooti
11b20 6e 67 20 61 6e 64 20 61 6e 61 6c 79 73 69 73 20  ng and analysis 
11b30 6f 66 20 74 68 65 20 5b 56 44 42 45 5d 20 61 6e  of the [VDBE] an
11b40 64 20 63 6f 64 65 20 67 65 6e 65 72 61 74 6f 72  d code generator
11b50 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
11b60 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 45 4d 44  ION {SQLITE_MEMD
11b70 45 42 55 47 7d 20 7b 0a 20 20 54 68 65 20 53 51  EBUG} {.  The SQ
11b80 4c 49 54 45 5f 4d 45 4d 44 45 42 55 47 20 6f 70  LITE_MEMDEBUG op
11b90 74 69 6f 6e 20 63 61 75 73 65 73 20 61 6e 20 69  tion causes an i
11ba0 6e 73 74 72 75 6d 65 6e 74 65 64 20 0a 20 20 5b  nstrumented .  [
11bb0 64 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79  debugging memory
11bc0 20 61 6c 6c 6f 63 61 74 6f 72 5d 0a 20 20 74 6f   allocator].  to
11bd0 20 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20   be used as the 
11be0 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61  default memory a
11bf0 6c 6c 6f 63 61 74 6f 72 20 77 69 74 68 69 6e 20  llocator within 
11c00 53 51 4c 69 74 65 2e 20 20 54 68 65 0a 20 20 69  SQLite.  The.  i
11c10 6e 73 74 72 75 6d 65 6e 74 65 64 20 6d 65 6d 6f  nstrumented memo
11c20 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 63 68 65  ry allocator che
11c30 63 6b 73 20 66 6f 72 20 6d 69 73 75 73 65 20 6f  cks for misuse o
11c40 66 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c  f dynamically al
11c50 6c 6f 63 61 74 65 64 0a 20 20 6d 65 6d 6f 72 79  located.  memory
11c60 2e 20 20 45 78 61 6d 70 6c 65 73 20 6f 66 20 6d  .  Examples of m
11c70 69 73 75 73 65 20 69 6e 63 6c 75 64 65 20 75 73  isuse include us
11c80 69 6e 67 20 6d 65 6d 6f 72 79 20 61 66 74 65 72  ing memory after
11c90 20 69 74 20 69 73 20 66 72 65 65 64 2c 0a 20 20   it is freed,.  
11ca0 77 72 69 74 69 6e 67 20 6f 66 66 20 74 68 65 20  writing off the 
11cb0 65 6e 64 73 20 6f 66 20 61 20 6d 65 6d 6f 72 79  ends of a memory
11cc0 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 66 72 65   allocation, fre
11cd0 65 69 6e 67 20 6d 65 6d 6f 72 79 20 6e 6f 74 20  eing memory not 
11ce0 70 72 65 76 69 6f 75 73 6c 79 0a 20 20 6f 62 74  previously.  obt
11cf0 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 6d  ained from the m
11d00 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c  emory allocator,
11d10 20 6f 72 20 66 61 69 6c 69 6e 67 20 74 6f 20 69   or failing to i
11d20 6e 69 74 69 61 6c 69 7a 65 20 6e 65 77 6c 79 0a  nitialize newly.
11d30 20 20 61 6c 6c 6f 63 61 74 65 64 20 6d 65 6d 6f    allocated memo
11d40 72 79 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61  ry..}..</tcl>.<a
11d50 20 6e 61 6d 65 3d 22 77 69 6e 33 32 6f 70 74 69   name="win32opti
11d60 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 57  ons"></a>.<h1> W
11d70 69 6e 64 6f 77 73 2d 53 70 65 63 69 66 69 63 20  indows-Specific 
11d80 4f 70 74 69 6f 6e 73 3c 2f 68 31 3e 0a 3c 74 63  Options</h1>.<tc
11d90 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  l>..COMPILE_OPTI
11da0 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e 33 32  ON {SQLITE_WIN32
11db0 5f 48 45 41 50 5f 43 52 45 41 54 45 7d 20 7b 0a  _HEAP_CREATE} {.
11dc0 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 66 6f    This option fo
11dd0 72 63 65 73 20 74 68 65 20 57 69 6e 33 32 20 6e  rces the Win32 n
11de0 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c  ative memory all
11df0 6f 63 61 74 6f 72 2c 20 77 68 65 6e 20 65 6e 61  ocator, when ena
11e00 62 6c 65 64 2c 20 74 6f 0a 20 20 63 72 65 61 74  bled, to.  creat
11e10 65 20 61 20 70 72 69 76 61 74 65 20 68 65 61 70  e a private heap
11e20 20 74 6f 20 68 6f 6c 64 20 61 6c 6c 20 6d 65 6d   to hold all mem
11e30 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 2e  ory allocations.
11e40 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
11e50 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e 33 32  ON {SQLITE_WIN32
11e60 5f 4d 41 4c 4c 4f 43 5f 56 41 4c 49 44 41 54 45  _MALLOC_VALIDATE
11e70 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
11e80 6e 20 66 6f 72 63 65 73 20 74 68 65 20 57 69 6e  n forces the Win
11e90 33 32 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79  32 native memory
11ea0 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 77 68 65 6e   allocator, when
11eb0 20 65 6e 61 62 6c 65 64 2c 20 74 6f 0a 20 20 6d   enabled, to.  m
11ec0 61 6b 65 20 73 74 72 61 74 65 67 69 63 20 63 61  ake strategic ca
11ed0 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 48 65 61  lls into the Hea
11ee0 70 56 61 6c 69 64 61 74 65 28 29 20 66 75 6e 63  pValidate() func
11ef0 74 69 6f 6e 20 69 66 20 61 73 73 65 72 74 28 29  tion if assert()
11f00 20 69 73 20 61 6c 73 6f 0a 20 20 65 6e 61 62 6c   is also.  enabl
11f10 65 64 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61  ed..}..</tcl>.<a
11f20 20 6e 61 6d 65 3d 22 6c 69 6e 6b 61 67 65 22 3e   name="linkage">
11f30 3c 2f 61 3e 0a 3c 68 31 3e 43 6f 6d 70 69 6c 65  </a>.<h1>Compile
11f40 72 20 4c 69 6e 6b 61 67 65 20 43 6f 6e 74 72 6f  r Linkage Contro
11f50 6c 3c 2f 68 31 3e 0a 0a 3c 70 3e 54 68 65 20 66  l</h1>..<p>The f
11f60 6f 6c 6c 6f 77 69 6e 67 20 6d 61 63 72 6f 73 20  ollowing macros 
11f70 73 70 65 63 69 66 79 0a 69 6e 74 65 72 66 61 63  specify.interfac
11f80 65 20 6c 69 6e 6b 61 67 65 20 66 6f 72 20 63 65  e linkage for ce
11f90 72 74 61 69 6e 20 6b 69 6e 64 73 20 6f 66 20 53  rtain kinds of S
11fa0 51 4c 69 74 65 20 62 75 69 6c 64 73 2e 20 20 54  QLite builds.  T
11fb0 68 65 20 4d 61 6b 65 66 69 6c 65 73 20 77 69 6c  he Makefiles wil
11fc0 6c 20 6e 6f 72 6d 61 6c 6c 79 0a 68 61 6e 64 6c  l normally.handl
11fd0 65 20 73 65 74 74 69 6e 67 20 74 68 65 73 65 20  e setting these 
11fe0 6d 61 63 72 6f 73 20 61 75 74 6f 6d 61 74 69 63  macros automatic
11ff0 61 6c 6c 79 2e 20 20 41 70 70 6c 69 63 61 74 69  ally.  Applicati
12000 6f 6e 20 64 65 76 65 6c 6f 70 65 72 73 20 73 68  on developers sh
12010 6f 75 6c 64 0a 6e 6f 74 20 6e 65 65 64 20 74 6f  ould.not need to
12020 20 77 6f 72 72 79 20 77 69 74 68 20 74 68 65 73   worry with thes
12030 65 20 6d 61 63 72 6f 73 2e 20 20 54 68 65 20 66  e macros.  The f
12040 6f 6c 6c 6f 77 69 6e 67 20 64 6f 63 75 6d 65 6e  ollowing documen
12050 74 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65  tation about the
12060 73 65 20 0a 6d 61 63 72 6f 73 20 69 73 20 69 6e  se .macros is in
12070 63 6c 75 64 65 64 20 63 6f 6d 70 6c 65 74 65 6e  cluded completen
12080 65 73 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  ess.</p>..<tcl>.
12090 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
120a0 53 51 4c 49 54 45 5f 41 50 49 7d 20 7b 0a 20 20  SQLITE_API} {.  
120b0 54 68 69 73 20 6d 61 63 72 6f 20 69 64 65 6e 74  This macro ident
120c0 69 66 69 65 73 20 61 20 65 78 74 65 72 6e 61 6c  ifies a external
120d0 6c 79 20 76 69 73 69 62 6c 65 20 69 6e 74 65 72  ly visible inter
120e0 66 61 63 65 20 66 6f 72 20 53 51 4c 69 74 65 2e  face for SQLite.
120f0 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
12100 20 73 6f 6d 65 74 69 6d 65 73 20 73 65 74 20 74   sometimes set t
12110 6f 20 22 65 78 74 65 72 6e 22 2e 20 20 42 75 74  o "extern".  But
12120 20 74 68 65 20 64 65 66 69 6e 69 74 69 6f 6e 20   the definition 
12130 69 73 0a 20 20 63 6f 6d 70 69 6c 65 72 2d 73 70  is.  compiler-sp
12140 65 63 69 66 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49  ecific..}..COMPI
12150 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
12160 45 5f 41 50 49 43 41 4c 4c 7d 20 7b 0a 20 20 54  E_APICALL} {.  T
12170 68 69 73 20 6d 61 63 72 6f 20 69 64 65 6e 74 69  his macro identi
12180 66 69 65 73 20 74 68 65 20 63 61 6c 6c 69 6e 67  fies the calling
12190 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 75 73 65 64   convention used
121a0 20 62 79 20 70 75 62 6c 69 63 20 69 6e 74 65 72   by public inter
121b0 66 61 63 65 0a 20 20 72 6f 75 74 69 6e 65 73 20  face.  routines 
121c0 69 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 69 73  in SQLite.  This
121d0 20 6d 61 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c   macro is normal
121e0 6c 79 20 64 65 66 69 6e 65 64 20 74 6f 20 62 65  ly defined to be
121f0 20 6e 6f 74 68 69 6e 67 2c 0a 20 20 74 68 6f 75   nothing,.  thou
12200 67 68 20 6f 6e 20 57 69 6e 64 6f 77 73 20 62 75  gh on Windows bu
12210 69 6c 64 73 20 69 74 20 63 61 6e 20 73 6f 6d 65  ilds it can some
12220 74 69 6d 65 73 20 62 65 20 73 65 74 20 74 6f 20  times be set to 
12230 22 5f 5f 63 64 65 63 6c 22 20 6f 72 20 22 5f 5f  "__cdecl" or "__
12240 73 74 64 63 61 6c 6c 22 2e 0a 20 20 54 68 65 20  stdcall"..  The 
12250 22 5f 5f 63 64 65 63 6c 22 20 73 65 74 74 69 6e  "__cdecl" settin
12260 67 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74  g is the default
12270 2c 20 62 75 74 20 22 5f 5f 73 74 64 63 61 6c 6c  , but "__stdcall
12280 22 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 53  " is used when S
12290 51 4c 69 74 65 0a 20 20 69 73 20 69 6e 74 65 6e  QLite.  is inten
122a0 64 65 64 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c  ded to be compil
122b0 65 64 20 61 73 20 61 20 57 69 6e 64 6f 77 73 20  ed as a Windows 
122c0 73 79 73 74 65 6d 20 6c 69 62 72 61 72 79 2e 0a  system library..
122d0 20 20 3c 70 3e 0a 20 20 41 20 73 69 6e 67 6c 65    <p>.  A single
122e0 20 66 75 6e 63 74 69 6f 6e 20 64 65 63 6c 61 72   function declar
122f0 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 63 6f 6e  ation should con
12300 74 61 69 6e 20 6e 6f 20 6d 6f 72 65 20 74 68 61  tain no more tha
12310 6e 20 6f 6e 65 20 6f 66 0a 20 20 74 68 65 20 66  n one of.  the f
12320 6f 6c 6c 6f 77 69 6e 67 3a 20 20 5b 53 51 4c 49  ollowing:  [SQLI
12330 54 45 5f 41 50 49 43 41 4c 4c 5d 2c 20 5b 53 51  TE_APICALL], [SQ
12340 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b 5d 2c 20  LITE_CALLBACK], 
12350 5b 53 51 4c 49 54 45 5f 43 44 45 43 4c 5d 2c 0a  [SQLITE_CDECL],.
12360 20 20 6f 72 20 5b 53 51 4c 49 54 45 5f 53 59 53    or [SQLITE_SYS
12370 43 41 4c 4c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  CALL]..}..COMPIL
12380 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
12390 5f 43 41 4c 4c 42 41 43 4b 7d 20 7b 0a 20 20 54  _CALLBACK} {.  T
123a0 68 69 73 20 6d 61 63 72 6f 20 73 70 65 63 69 66  his macro specif
123b0 69 65 73 20 74 68 65 20 63 61 6c 6c 69 6e 67 20  ies the calling 
123c0 63 6f 6e 76 65 6e 74 69 6f 6e 20 75 73 65 64 20  convention used 
123d0 62 79 20 63 61 6c 6c 62 61 63 6b 20 70 6f 69 6e  by callback poin
123e0 74 65 72 73 0a 20 20 69 6e 20 53 51 4c 69 74 65  ters.  in SQLite
123f0 2e 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
12400 20 6e 6f 72 6d 61 6c 6c 79 20 64 65 66 69 6e 65   normally define
12410 64 20 74 6f 20 62 65 20 6e 6f 74 68 69 6e 67 2c  d to be nothing,
12420 20 74 68 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f   though on Windo
12430 77 73 0a 20 20 62 75 69 6c 64 73 20 69 74 20 63  ws.  builds it c
12440 61 6e 20 73 6f 6d 65 74 69 6d 65 73 20 62 65 20  an sometimes be 
12450 73 65 74 20 74 6f 20 22 5f 5f 63 64 65 63 6c 22  set to "__cdecl"
12460 20 6f 72 20 22 5f 5f 73 74 64 63 61 6c 6c 22 2e   or "__stdcall".
12470 20 20 54 68 65 0a 20 20 22 5f 5f 63 64 65 63 6c    The.  "__cdecl
12480 22 20 73 65 74 74 69 6e 67 20 69 73 20 74 68 65  " setting is the
12490 20 64 65 66 61 75 6c 74 2c 20 62 75 74 20 22 5f   default, but "_
124a0 5f 73 74 64 63 61 6c 6c 22 20 69 73 20 75 73 65  _stdcall" is use
124b0 64 20 77 68 65 6e 20 53 51 4c 69 74 65 0a 20 20  d when SQLite.  
124c0 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62  is intended to b
124d0 65 20 63 6f 6d 70 69 6c 65 64 20 61 73 20 61 20  e compiled as a 
124e0 57 69 6e 64 6f 77 73 20 73 79 73 74 65 6d 20 6c  Windows system l
124f0 69 62 72 61 72 79 2e 0a 20 20 3c 70 3e 0a 20 20  ibrary..  <p>.  
12500 41 20 73 69 6e 67 6c 65 20 66 75 6e 63 74 69 6f  A single functio
12510 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 73 68  n declaration sh
12520 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 6e 6f 20  ould contain no 
12530 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 6f 66  more than one of
12540 0a 20 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  .  the following
12550 3a 20 20 5b 53 51 4c 49 54 45 5f 41 50 49 43 41  :  [SQLITE_APICA
12560 4c 4c 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 41 4c  LL], [SQLITE_CAL
12570 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49 54 45 5f  LBACK], [SQLITE_
12580 43 44 45 43 4c 5d 2c 0a 20 20 6f 72 20 5b 53 51  CDECL],.  or [SQ
12590 4c 49 54 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a 7d  LITE_SYSCALL]..}
125a0 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
125b0 20 7b 53 51 4c 49 54 45 5f 43 44 45 43 4c 7d 20   {SQLITE_CDECL} 
125c0 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73  {.  This macro s
125d0 70 65 63 69 66 69 65 73 20 74 68 65 20 63 61 6c  pecifies the cal
125e0 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20  ling convention 
125f0 75 73 65 64 20 62 79 20 76 61 72 61 72 67 73 20  used by varargs 
12600 69 6e 74 65 72 66 61 63 65 0a 20 20 72 6f 75 74  interface.  rout
12610 69 6e 65 73 20 69 6e 20 53 51 4c 69 74 65 2e 20  ines in SQLite. 
12620 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20 6e   This macro is n
12630 6f 72 6d 61 6c 6c 79 20 64 65 66 69 6e 65 64 20  ormally defined 
12640 74 6f 20 62 65 20 6e 6f 74 68 69 6e 67 2c 0a 20  to be nothing,. 
12650 20 74 68 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f   though on Windo
12660 77 73 20 62 75 69 6c 64 73 20 69 74 20 63 61 6e  ws builds it can
12670 20 73 6f 6d 65 74 69 6d 65 73 20 62 65 20 73 65   sometimes be se
12680 74 20 74 6f 20 22 5f 5f 63 64 65 63 6c 22 2e 20  t to "__cdecl". 
12690 20 54 68 69 73 0a 20 20 6d 61 63 72 6f 20 69 73   This.  macro is
126a0 20 75 73 65 64 20 6f 6e 20 76 61 72 61 72 67 73   used on varargs
126b0 20 72 6f 75 74 69 6e 65 73 20 61 6e 64 20 73 6f   routines and so
126c0 20 63 61 6e 6e 6f 74 20 62 65 20 73 65 74 20 74   cannot be set t
126d0 6f 20 22 5f 5f 73 74 64 63 61 6c 6c 22 0a 20 20  o "__stdcall".  
126e0 73 69 6e 63 65 20 74 68 65 20 5f 5f 73 74 64 63  since the __stdc
126f0 61 6c 6c 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76  all calling conv
12700 65 6e 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 20  ention does not 
12710 73 75 70 70 6f 72 74 20 76 61 72 61 72 67 73 20  support varargs 
12720 66 75 6e 63 74 69 6f 6e 73 2e 0a 20 20 3c 70 3e  functions..  <p>
12730 0a 20 20 41 20 73 69 6e 67 6c 65 20 66 75 6e 63  .  A single func
12740 74 69 6f 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e  tion declaration
12750 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20   should contain 
12760 6e 6f 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65  no more than one
12770 20 6f 66 0a 20 20 74 68 65 20 66 6f 6c 6c 6f 77   of.  the follow
12780 69 6e 67 3a 20 20 5b 53 51 4c 49 54 45 5f 41 50  ing:  [SQLITE_AP
12790 49 43 41 4c 4c 5d 2c 20 5b 53 51 4c 49 54 45 5f  ICALL], [SQLITE_
127a0 43 41 4c 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49  CALLBACK], [SQLI
127b0 54 45 5f 43 44 45 43 4c 5d 2c 0a 20 20 6f 72 20  TE_CDECL],.  or 
127c0 5b 53 51 4c 49 54 45 5f 53 59 53 43 41 4c 4c 5d  [SQLITE_SYSCALL]
127d0 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
127e0 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 59 53 43  ION {SQLITE_SYSC
127f0 41 4c 4c 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  ALL} {.  This ma
12800 63 72 6f 20 69 64 65 6e 74 69 66 69 65 73 20 74  cro identifies t
12810 68 65 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65  he calling conve
12820 6e 74 69 6f 6e 20 75 73 65 64 20 62 79 20 6f 70  ntion used by op
12830 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 0a 20  erating system. 
12840 20 69 6e 74 65 72 66 61 63 65 73 20 66 6f 72 20   interfaces for 
12850 74 61 72 67 65 74 20 74 68 65 20 70 6c 61 74 66  target the platf
12860 6f 72 6d 20 66 6f 72 20 61 6e 20 53 51 4c 69 74  orm for an SQLit
12870 65 20 62 75 69 6c 64 2e 0a 20 20 54 68 69 73 20  e build..  This 
12880 6d 61 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c  macro is normall
12890 79 20 64 65 66 69 6e 65 64 20 74 6f 20 62 65 20  y defined to be 
128a0 6e 6f 74 68 69 6e 67 2c 20 74 68 6f 75 67 68 20  nothing, though 
128b0 6f 6e 20 57 69 6e 64 6f 77 73 0a 20 20 62 75 69  on Windows.  bui
128c0 6c 64 73 20 69 74 20 63 61 6e 20 73 6f 6d 65 74  lds it can somet
128d0 69 6d 65 73 20 62 65 20 73 65 74 20 74 6f 20 22  imes be set to "
128e0 5f 5f 73 74 64 63 61 6c 6c 22 2e 0a 20 20 3c 70  __stdcall"..  <p
128f0 3e 0a 20 20 41 20 73 69 6e 67 6c 65 20 66 75 6e  >.  A single fun
12900 63 74 69 6f 6e 20 64 65 63 6c 61 72 61 74 69 6f  ction declaratio
12910 6e 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e  n should contain
12920 20 6e 6f 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e   no more than on
12930 65 20 6f 66 0a 20 20 74 68 65 20 66 6f 6c 6c 6f  e of.  the follo
12940 77 69 6e 67 3a 20 20 5b 53 51 4c 49 54 45 5f 41  wing:  [SQLITE_A
12950 50 49 43 41 4c 4c 5d 2c 20 5b 53 51 4c 49 54 45  PICALL], [SQLITE
12960 5f 43 41 4c 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c  _CALLBACK], [SQL
12970 49 54 45 5f 43 44 45 43 4c 5d 2c 0a 20 20 6f 72  ITE_CDECL],.  or
12980 20 5b 53 51 4c 49 54 45 5f 53 59 53 43 41 4c 4c   [SQLITE_SYSCALL
12990 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
129a0 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 43 4c  TION {SQLITE_TCL
129b0 41 50 49 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  API} {.  This ma
129c0 63 72 6f 20 73 70 65 63 69 66 69 65 73 20 74 68  cro specifies th
129d0 65 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e  e calling conven
129e0 74 69 6f 6e 20 75 73 65 64 20 62 79 20 74 68 65  tion used by the
129f0 20 0a 20 20 5b 68 74 74 70 3a 2f 2f 77 77 77 2e   .  [http://www.
12a00 74 63 6c 2e 74 6b 20 7c 20 54 43 4c 5d 20 6c 69  tcl.tk | TCL] li
12a10 62 72 61 72 79 20 69 6e 74 65 72 66 61 63 65 20  brary interface 
12a20 72 6f 75 74 69 6e 65 73 2e 0a 20 20 54 68 69 73  routines..  This
12a30 20 6d 61 63 72 6f 20 69 73 20 6e 6f 74 20 75 73   macro is not us
12a40 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74 65  ed by the SQLite
12a50 20 63 6f 72 65 2c 20 62 75 74 20 6f 6e 6c 79 20   core, but only 
12a60 62 79 20 74 68 65 20 5b 54 43 4c 20 49 6e 74 65  by the [TCL Inte
12a70 72 66 61 63 65 5d 0a 20 20 61 6e 64 20 5b 54 43  rface].  and [TC
12a80 4c 20 74 65 73 74 20 73 75 69 74 65 5d 2e 0a 20  L test suite].. 
12a90 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20 6e   This macro is n
12aa0 6f 72 6d 61 6c 6c 79 20 64 65 66 69 6e 65 64 20  ormally defined 
12ab0 74 6f 20 62 65 20 6e 6f 74 68 69 6e 67 2c 0a 20  to be nothing,. 
12ac0 20 74 68 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f   though on Windo
12ad0 77 73 20 62 75 69 6c 64 73 20 69 74 20 63 61 6e  ws builds it can
12ae0 20 73 6f 6d 65 74 69 6d 65 73 20 62 65 20 73 65   sometimes be se
12af0 74 20 74 6f 20 22 5f 5f 63 64 65 63 6c 22 2e 20  t to "__cdecl". 
12b00 20 54 68 69 73 0a 20 20 6d 61 63 72 6f 20 69 73   This.  macro is
12b10 20 75 73 65 64 20 6f 6e 20 54 43 4c 20 6c 69 62   used on TCL lib
12b20 72 61 72 79 20 69 6e 74 65 72 66 61 63 65 20 72  rary interface r
12b30 6f 75 74 69 6e 65 73 20 77 68 69 63 68 20 61 72  outines which ar
12b40 65 20 61 6c 77 61 79 73 20 63 6f 6d 70 69 6c 65  e always compile
12b50 64 0a 20 20 61 73 20 5f 5f 63 64 65 63 6c 2c 20  d.  as __cdecl, 
12b60 65 76 65 6e 20 6f 6e 20 70 6c 61 74 66 6f 72 6d  even on platform
12b70 73 20 74 68 61 74 20 70 72 65 66 65 72 20 74 6f  s that prefer to
12b80 20 75 73 65 20 5f 5f 73 74 64 63 61 6c 6c 2c 20   use __stdcall, 
12b90 73 6f 20 74 68 69 73 0a 20 20 6d 61 63 72 6f 20  so this.  macro 
12ba0 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 73 65  should not be se
12bb0 74 20 74 6f 20 5f 5f 73 74 64 63 61 6c 6c 20 75  t to __stdcall u
12bc0 6e 6c 65 73 73 20 74 68 65 20 70 6c 61 74 66 6f  nless the platfo
12bd0 72 6d 20 61 73 20 61 20 63 75 73 74 6f 6d 0a 20  rm as a custom. 
12be0 20 54 43 4c 20 6c 69 62 72 61 72 79 20 62 75 69   TCL library bui
12bf0 6c 64 20 74 68 61 74 20 73 75 70 70 6f 72 74 73  ld that supports
12c00 20 5f 5f 73 74 64 63 61 6c 6c 2e 0a 20 20 3c 70   __stdcall..  <p
12c10 3e 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 6d  >.  This macro m
12c20 61 79 20 6e 6f 74 20 62 65 20 75 73 65 64 20 69  ay not be used i
12c30 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 77 69  n combination wi
12c40 74 68 20 61 6e 79 20 6f 66 20 5b 53 51 4c 49 54  th any of [SQLIT
12c50 45 5f 41 50 49 43 41 4c 4c 5d 2c 0a 20 20 5b 53  E_APICALL],.  [S
12c60 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b 5d 2c  QLITE_CALLBACK],
12c70 20 5b 53 51 4c 49 54 45 5f 43 44 45 43 4c 5d 2c   [SQLITE_CDECL],
12c80 20 6f 72 20 5b 53 51 4c 49 54 45 5f 53 59 53 43   or [SQLITE_SYSC
12c90 41 4c 4c 5d 2e 0a 7d 0a 0a 0a 3c 2f 74 63 6c 3e  ALL]..}...</tcl>
12ca0 0a                                               .