Documentation Source Text

Hex Artifact Content
Login

Artifact eebb8f2c0da89f277069fa398a3137a5cf1e6c70258e9567b1497cddf4f7bdb7:


0000: 3c 74 69 74 6c 65 3e 43 6f 6d 70 69 6c 65 2d 74  <title>Compile-t
0010: 69 6d 65 20 4f 70 74 69 6f 6e 73 3c 2f 74 69 74  ime Options</tit
0020: 6c 65 3e 0a 3c 74 63 6c 3e 68 64 5f 6b 65 79 77  le>.<tcl>hd_keyw
0030: 6f 72 64 73 20 7b 63 6f 6d 70 69 6c 65 2d 74 69  ords {compile-ti
0040: 6d 65 20 6f 70 74 69 6f 6e 73 7d 3c 2f 74 63 6c  me options}</tcl
0050: 3e 0a 0a 3c 74 61 62 6c 65 5f 6f 66 5f 63 6f 6e  >..<table_of_con
0060: 74 65 6e 74 73 3e 0a 0a 3c 68 31 3e 4f 76 65 72  tents>..<h1>Over
0070: 76 69 65 77 3c 2f 68 31 3e 0a 0a 3c 70 3e 0a 46  view</h1>..<p>.F
0080: 6f 72 20 6d 6f 73 74 20 70 75 72 70 6f 73 65 73  or most purposes
0090: 2c 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65 20  , SQLite can be 
00a0: 62 75 69 6c 74 20 6a 75 73 74 20 66 69 6e 65 20  built just fine 
00b0: 75 73 69 6e 67 20 74 68 65 20 64 65 66 61 75 6c  using the defaul
00c0: 74 0a 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 70  t.compilation op
00d0: 74 69 6f 6e 73 2e 20 48 6f 77 65 76 65 72 2c 20  tions. However, 
00e0: 69 66 20 72 65 71 75 69 72 65 64 2c 20 74 68 65  if required, the
00f0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
0100: 74 69 6f 6e 73 0a 64 6f 63 75 6d 65 6e 74 65 64  tions.documented
0110: 20 62 65 6c 6f 77 20 63 61 6e 20 62 65 20 75 73   below can be us
0120: 65 64 20 74 6f 20 0a 3c 61 20 68 72 65 66 3d 22  ed to .<a href="
0130: 23 6f 6d 69 74 66 65 61 74 75 72 65 73 22 3e 6f  #omitfeatures">o
0140: 6d 69 74 20 53 51 4c 69 74 65 20 66 65 61 74 75  mit SQLite featu
0150: 72 65 73 3c 2f 61 3e 20 28 72 65 73 75 6c 74 69  res</a> (resulti
0160: 6e 67 20 69 6e 0a 61 20 5b 72 65 6c 66 6f 6f 74  ng in.a [relfoot
0170: 70 72 69 6e 74 20 7c 20 73 6d 61 6c 6c 65 72 20  print | smaller 
0180: 63 6f 6d 70 69 6c 65 64 20 6c 69 62 72 61 72 79  compiled library
0190: 20 73 69 7a 65 5d 29 20 6f 72 20 74 6f 20 63 68   size]) or to ch
01a0: 61 6e 67 65 20 74 68 65 0a 3c 61 20 68 72 65 66  ange the.<a href
01b0: 3d 22 23 64 65 66 61 75 6c 74 73 22 3e 64 65 66  ="#defaults">def
01c0: 61 75 6c 74 20 76 61 6c 75 65 73 3c 2f 61 3e 20  ault values</a> 
01d0: 6f 66 20 73 6f 6d 65 20 70 61 72 61 6d 65 74 65  of some paramete
01e0: 72 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 45 76  rs..</p>..<p>.Ev
01f0: 65 72 79 20 65 66 66 6f 72 74 20 68 61 73 20 62  ery effort has b
0200: 65 65 6e 20 6d 61 64 65 20 74 6f 20 65 6e 73 75  een made to ensu
0210: 72 65 20 74 68 61 74 20 74 68 65 20 76 61 72 69  re that the vari
0220: 6f 75 73 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73  ous combinations
0230: 0a 6f 66 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20  .of compilation 
0240: 6f 70 74 69 6f 6e 73 20 77 6f 72 6b 20 68 61 72  options work har
0250: 6d 6f 6e 69 6f 75 73 6c 79 20 61 6e 64 20 70 72  moniously and pr
0260: 6f 64 75 63 65 20 61 20 77 6f 72 6b 69 6e 67 20  oduce a working 
0270: 6c 69 62 72 61 72 79 2e 0a 4e 65 76 65 72 74 68  library..Neverth
0280: 65 6c 65 73 73 2c 20 69 74 20 69 73 20 73 74 72  eless, it is str
0290: 6f 6e 67 6c 79 20 72 65 63 6f 6d 6d 65 6e 64 65  ongly recommende
02a0: 64 20 74 68 61 74 20 74 68 65 20 53 51 4c 69 74  d that the SQLit
02b0: 65 20 74 65 73 74 2d 73 75 69 74 65 0a 62 65 20  e test-suite.be 
02c0: 65 78 65 63 75 74 65 64 20 74 6f 20 63 68 65 63  executed to chec
02d0: 6b 20 66 6f 72 20 65 72 72 6f 72 73 20 62 65 66  k for errors bef
02e0: 6f 72 65 20 75 73 69 6e 67 20 61 6e 20 53 51 4c  ore using an SQL
02f0: 69 74 65 20 6c 69 62 72 61 72 79 20 62 75 69 6c  ite library buil
0300: 74 0a 77 69 74 68 20 6e 6f 6e 2d 73 74 61 6e 64  t.with non-stand
0310: 61 72 64 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20  ard compilation 
0320: 6f 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 0a 3c  options..</p>..<
0330: 74 63 6c 3e 0a 70 72 6f 63 20 43 4f 4d 50 49 4c  tcl>.proc COMPIL
0340: 45 5f 4f 50 54 49 4f 4e 20 7b 6e 61 6d 65 20 74  E_OPTION {name t
0350: 65 78 74 7d 20 7b 0a 20 20 69 66 20 7b 5b 72 65  ext} {.  if {[re
0360: 67 65 78 70 20 7b 28 53 51 4c 49 54 45 7c 48 41  gexp {(SQLITE|HA
0370: 56 45 29 5f 28 5b 41 2d 5a 30 2d 39 5f 5d 2b 29  VE)_([A-Z0-9_]+)
0380: 7d 20 24 6e 61 6d 65 20 61 6c 6c 20 70 72 65 66  } $name all pref
0390: 69 78 20 6c 61 62 65 6c 5d 7d 20 7b 0a 20 20 20  ix label]} {.   
03a0: 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 5b 73 74   hd_fragment [st
03b0: 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 24 6c 61  ring tolower $la
03c0: 62 65 6c 5d 0a 20 20 20 20 68 64 5f 6b 65 79 77  bel].    hd_keyw
03d0: 6f 72 64 73 20 24 61 6c 6c 20 2d 44 24 61 6c 6c  ords $all -D$all
03e0: 0a 20 20 7d 0a 20 20 69 66 20 7b 5b 72 65 67 65  .  }.  if {[rege
03f0: 78 70 20 7b 5e 59 59 28 5b 41 2d 5a 30 2d 39 5f  xp {^YY([A-Z0-9_
0400: 5d 2b 29 7d 20 24 6e 61 6d 65 20 61 6c 6c 20 6c  ]+)} $name all l
0410: 61 62 65 6c 5d 7d 20 7b 0a 20 20 20 20 68 64 5f  abel]} {.    hd_
0420: 66 72 61 67 6d 65 6e 74 20 5b 73 74 72 69 6e 67  fragment [string
0430: 20 74 6f 6c 6f 77 65 72 20 24 61 6c 6c 5d 0a 20   tolower $all]. 
0440: 20 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 24     hd_keywords $
0450: 61 6c 6c 0a 20 20 7d 0a 20 20 68 64 5f 70 75 74  all.  }.  hd_put
0460: 73 20 3c 70 3e 3c 62 3e 24 6e 61 6d 65 3c 2f 62  s <p><b>$name</b
0470: 3e 3c 2f 70 3e 0a 20 20 72 65 67 73 75 62 20 2d  ></p>.  regsub -
0480: 61 6c 6c 20 22 5c 6e 5c 5c 73 2a 5c 6e 22 20 24  all "\n\\s*\n" $
0490: 74 65 78 74 20 22 3c 2f 70 3e 5c 6e 5c 6e 3c 70  text "</p>\n\n<p
04a0: 3e 22 20 74 65 78 74 0a 20 20 68 64 5f 72 65 73  >" text.  hd_res
04b0: 6f 6c 76 65 20 3c 62 6c 6f 63 6b 71 75 6f 74 65  olve <blockquote
04c0: 3e 3c 70 3e 24 74 65 78 74 3c 2f 70 3e 3c 2f 62  ><p>$text</p></b
04d0: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 68 64  lockquote>.}..hd
04e0: 5f 66 72 61 67 6d 65 6e 74 20 72 63 6d 64 20 7b  _fragment rcmd {
04f0: 72 65 63 6f 6d 6d 65 6e 64 65 64 20 63 6f 6d 70  recommended comp
0500: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
0510: 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 68 31 3e 52 65  }.</tcl>..<h1>Re
0520: 63 6f 6d 6d 65 6e 64 65 64 20 43 6f 6d 70 69 6c  commended Compil
0530: 65 2d 74 69 6d 65 20 4f 70 74 69 6f 6e 73 3c 2f  e-time Options</
0540: 68 31 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c  h1>..<p>The foll
0550: 6f 77 69 6e 67 20 63 6f 6d 70 69 6c 65 2d 74 69  owing compile-ti
0560: 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 72  me options are r
0570: 65 63 6f 6d 6d 65 6e 64 65 64 20 66 6f 72 20 61  ecommended for a
0580: 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74  pplications that
0590: 0a 61 72 65 20 61 62 6c 65 20 74 6f 20 75 73 65  .are able to use
05a0: 20 74 68 65 6d 2c 20 69 6e 20 6f 72 64 65 72 20   them, in order 
05b0: 74 6f 20 6d 69 6e 69 6d 69 7a 65 64 20 74 68 65  to minimized the
05c0: 20 6e 75 6d 62 65 72 20 6f 66 20 43 50 55 20 63   number of CPU c
05d0: 79 63 6c 65 73 20 61 6e 64 0a 74 68 65 20 62 79  ycles and.the by
05e0: 74 65 73 20 6f 66 20 6d 65 6d 6f 72 79 20 75 73  tes of memory us
05f0: 65 64 20 62 79 20 53 51 4c 69 74 65 2e 0a 4e 6f  ed by SQLite..No
0600: 74 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 63  t all of these c
0610: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
0620: 6f 6e 73 20 61 72 65 20 75 73 61 62 6c 65 20 62  ons are usable b
0630: 79 20 65 76 65 72 79 20 61 70 70 6c 69 63 61 74  y every applicat
0640: 69 6f 6e 2e 0a 46 6f 72 20 65 78 61 6d 70 6c 65  ion..For example
0650: 2c 20 74 68 65 20 53 51 4c 49 54 45 5f 54 48 52  , the SQLITE_THR
0660: 45 41 44 53 41 46 45 3d 30 20 6f 70 74 69 6f 6e  EADSAFE=0 option
0670: 20 69 73 20 6f 6e 6c 79 20 75 73 61 62 6c 65 20   is only usable 
0680: 62 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a  by applications.
0690: 74 68 61 74 20 6e 65 76 65 72 20 61 63 63 65 73  that never acces
06a0: 73 20 53 51 4c 69 74 65 20 66 72 6f 6d 20 6d 6f  s SQLite from mo
06b0: 72 65 20 74 68 61 6e 20 6f 6e 65 20 74 68 72 65  re than one thre
06c0: 61 64 20 61 74 20 61 20 74 69 6d 65 2e 20 20 41  ad at a time.  A
06d0: 6e 64 20 74 68 65 0a 53 51 4c 49 54 45 5f 4f 4d  nd the.SQLITE_OM
06e0: 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c  IT_PROGRESS_CALL
06f0: 42 41 43 4b 20 6f 70 74 69 6f 6e 20 69 73 20 6f  BACK option is o
0700: 6e 6c 79 20 75 73 61 62 6c 65 20 62 79 20 61 70  nly usable by ap
0710: 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 0a  plications that.
0720: 64 6f 65 20 6e 6f 74 20 75 73 65 20 74 68 65 20  doe not use the 
0730: 5b 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73  [sqlite3_progres
0740: 73 5f 68 61 6e 64 6c 65 72 28 29 5d 20 69 6e 74  s_handler()] int
0750: 65 72 66 61 63 65 2e 20 20 41 6e 64 20 73 6f 20  erface.  And so 
0760: 66 6f 72 74 68 2e 0a 0a 3c 70 3e 49 74 20 69 73  forth...<p>It is
0770: 20 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 74   impossible to t
0780: 65 73 74 20 65 76 65 72 79 20 70 6f 73 73 69 62  est every possib
0790: 6c 65 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f  le combination o
07a0: 66 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f  f compile-time.o
07b0: 70 74 69 6f 6e 73 20 66 6f 72 20 53 51 4c 69 74  ptions for SQLit
07c0: 65 2e 20 20 42 75 74 20 74 68 65 20 66 6f 6c 6c  e.  But the foll
07d0: 6f 77 69 6e 67 20 73 65 74 20 6f 66 20 63 6f 6d  owing set of com
07e0: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
07f0: 73 20 69 73 0a 6f 6e 65 20 63 6f 6e 66 69 67 75  s is.one configu
0800: 72 61 74 69 6f 6e 20 74 68 61 74 20 69 73 20 61  ration that is a
0810: 6c 77 61 79 73 20 66 75 6c 6c 79 20 74 65 73 74  lways fully test
0820: 65 64 2e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70  ed...<ol>.<li><p
0830: 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 54 48 52 45  ><b>[SQLITE_THRE
0840: 41 44 53 41 46 45 3d 30 5d 3c 2f 62 3e 2e 0a 53  ADSAFE=0]</b>..S
0850: 65 74 74 69 6e 67 20 2d 44 53 51 4c 49 54 45 5f  etting -DSQLITE_
0860: 54 48 52 45 41 44 53 41 46 45 3d 30 20 63 61 75  THREADSAFE=0 cau
0870: 73 65 73 20 61 6c 6c 20 6f 66 20 74 68 65 20 6d  ses all of the m
0880: 75 74 65 78 20 61 6e 64 20 74 68 72 65 61 64 2d  utex and thread-
0890: 73 61 66 65 74 79 20 6c 6f 67 69 63 0a 69 6e 20  safety logic.in 
08a0: 53 51 4c 69 74 65 20 74 6f 20 62 65 20 6f 6d 69  SQLite to be omi
08b0: 74 74 65 64 2e 20 20 54 68 69 73 20 69 73 20 74  tted.  This is t
08c0: 68 65 20 73 69 6e 67 6c 65 20 63 6f 6d 70 69 6c  he single compil
08d0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68  e-time option th
08e0: 61 74 20 6d 61 6b 65 73 0a 74 68 65 20 6d 6f 73  at makes.the mos
08f0: 74 20 64 69 66 66 65 72 65 6e 63 65 20 69 6e 20  t difference in 
0900: 6f 70 74 69 6d 69 7a 69 6e 67 20 74 68 65 20 70  optimizing the p
0910: 65 72 66 6f 72 6d 61 6e 63 65 20 6f 66 20 53 51  erformance of SQ
0920: 4c 69 74 65 2e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62  Lite...<li><p><b
0930: 3e 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  >[SQLITE_DEFAULT
0940: 5f 4d 45 4d 53 54 41 54 55 53 3d 30 5d 3c 2f 62  _MEMSTATUS=0]</b
0950: 3e 2e 0a 54 68 69 73 20 73 65 74 74 69 6e 67 20  >..This setting 
0960: 63 61 75 73 65 73 20 74 68 65 20 5b 73 71 6c 69  causes the [sqli
0970: 74 65 33 5f 73 74 61 74 75 73 28 29 5d 20 69 6e  te3_status()] in
0980: 74 65 72 66 61 63 65 73 20 74 68 61 74 20 74 72  terfaces that tr
0990: 61 63 6b 20 6d 65 6d 6f 72 79 20 75 73 61 67 65  ack memory usage
09a0: 0a 74 6f 20 62 65 20 64 69 73 61 62 6c 65 64 2e  .to be disabled.
09b0: 20 20 54 68 69 73 20 68 65 6c 70 73 20 74 68 65    This helps the
09c0: 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   [sqlite3_malloc
09d0: 28 29 5d 20 72 6f 75 74 69 6e 65 73 20 72 75 6e  ()] routines run
09e0: 20 6d 75 63 68 20 66 61 73 74 65 72 2c 0a 61 6e   much faster,.an
09f0: 64 20 73 69 6e 63 65 20 53 51 4c 69 74 65 20 75  d since SQLite u
0a00: 73 65 73 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  ses [sqlite3_mal
0a10: 6c 6f 63 28 29 5d 20 69 6e 74 65 72 6e 61 6c 6c  loc()] internall
0a20: 79 2c 20 74 68 69 73 20 68 65 6c 70 73 20 74 6f  y, this helps to
0a30: 20 6d 61 6b 65 20 74 68 65 0a 65 6e 74 69 72 65   make the.entire
0a40: 20 6c 69 62 72 61 72 79 20 66 61 73 74 65 72 2e   library faster.
0a50: 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51 4c  ..<li><p><b>[SQL
0a60: 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f  ITE_DEFAULT_WAL_
0a70: 53 59 4e 43 48 52 4f 4e 4f 55 53 3d 31 5d 3c 2f  SYNCHRONOUS=1]</
0a80: 62 3e 2e 0a 46 6f 72 20 6d 61 78 69 6d 75 6d 20  b>..For maximum 
0a90: 64 61 74 61 62 61 73 65 20 73 61 66 65 74 79 20  database safety 
0aa0: 66 6f 6c 6c 6f 77 69 6e 67 20 61 20 70 6f 77 65  following a powe
0ab0: 72 20 6c 6f 73 65 2c 20 74 68 65 20 73 65 74 74  r lose, the sett
0ac0: 69 6e 67 20 6f 66 0a 5b 50 52 41 47 4d 41 20 73  ing of.[PRAGMA s
0ad0: 79 6e 63 68 72 6f 6e 6f 75 73 3d 46 55 4c 4c 5d  ynchronous=FULL]
0ae0: 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2e   is recommended.
0af0: 20 20 48 6f 77 65 76 65 72 2c 20 69 6e 20 5b 57    However, in [W
0b00: 41 4c 20 6d 6f 64 65 5d 2c 20 63 6f 6d 70 6c 65  AL mode], comple
0b10: 74 65 0a 64 61 74 61 62 61 73 65 20 69 6e 74 65  te.database inte
0b20: 67 72 69 74 79 20 69 73 20 67 75 61 72 61 6e 74  grity is guarant
0b30: 65 65 64 20 77 69 74 68 20 5b 50 52 41 47 4d 41  eed with [PRAGMA
0b40: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d 4e 4f 52   synchronous=NOR
0b50: 4d 41 4c 5d 2e 20 20 57 69 74 68 0a 5b 50 52 41  MAL].  With.[PRA
0b60: 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d  GMA synchronous=
0b70: 4e 4f 52 4d 41 4c 5d 20 69 6e 20 5b 57 41 4c 20  NORMAL] in [WAL 
0b80: 6d 6f 64 65 5d 2c 20 72 65 63 65 6e 74 20 63 68  mode], recent ch
0b90: 61 6e 67 65 73 20 74 6f 20 74 68 65 20 64 61 74  anges to the dat
0ba0: 61 62 61 73 65 20 6d 69 67 68 74 0a 62 65 20 72  abase might.be r
0bb0: 6f 6c 6c 65 64 20 62 61 63 6b 20 62 79 20 61 20  olled back by a 
0bc0: 70 6f 77 65 72 20 6c 6f 73 73 2c 20 62 75 74 20  power loss, but 
0bd0: 74 68 65 20 64 61 74 61 62 61 73 65 20 77 69 6c  the database wil
0be0: 6c 20 6e 6f 74 20 62 65 20 63 6f 72 72 75 70 74  l not be corrupt
0bf0: 65 64 2e 0a 46 75 72 74 68 65 72 6d 6f 72 65 2c  ed..Furthermore,
0c00: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d   transaction com
0c10: 6d 69 74 20 69 73 20 6d 75 63 68 20 66 61 73 74  mit is much fast
0c20: 65 72 20 69 6e 20 57 41 4c 20 6d 6f 64 65 20 75  er in WAL mode u
0c30: 73 69 6e 67 0a 73 79 6e 63 68 72 6f 6e 6f 75 73  sing.synchronous
0c40: 3d 4e 4f 52 4d 41 4c 20 74 68 61 6e 20 77 69 74  =NORMAL than wit
0c50: 68 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 79  h the default sy
0c60: 6e 63 68 72 6f 6e 6f 75 73 3d 46 55 4c 4c 2e 20  nchronous=FULL. 
0c70: 20 46 6f 72 20 74 68 65 73 65 0a 72 65 61 73 6f   For these.reaso
0c80: 6e 73 2c 20 69 74 20 69 73 20 72 65 63 6f 6d 6d  ns, it is recomm
0c90: 65 6e 64 65 64 20 74 68 61 74 20 74 68 65 20 73  ended that the s
0ca0: 79 6e 63 68 72 6f 6e 6f 75 73 20 73 65 74 74 69  ynchronous setti
0cb0: 6e 67 20 62 65 20 63 68 61 6e 67 65 64 20 66 72  ng be changed fr
0cc0: 6f 6d 0a 46 55 4c 4c 20 74 6f 20 4e 4f 52 4d 41  om.FULL to NORMA
0cd0: 4c 20 77 68 65 6e 20 73 77 69 74 63 68 69 6e 67  L when switching
0ce0: 20 74 6f 20 57 41 4c 20 6d 6f 64 65 2e 20 20 54   to WAL mode.  T
0cf0: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
0d00: 20 6f 70 74 69 6f 6e 20 77 69 6c 6c 0a 61 63 63   option will.acc
0d10: 6f 6d 70 6c 69 73 68 20 74 68 61 74 2e 0a 0a 3c  omplish that...<
0d20: 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45  li><p><b>[SQLITE
0d30: 5f 4c 49 4b 45 5f 44 4f 45 53 4e 54 5f 4d 41 54  _LIKE_DOESNT_MAT
0d40: 43 48 5f 42 4c 4f 42 53 5d 3c 2f 62 3e 2e 0a 48  CH_BLOBS]</b>..H
0d50: 69 73 74 6f 72 69 63 61 6c 6c 79 2c 20 53 51 4c  istorically, SQL
0d60: 69 74 65 20 68 61 73 20 61 6c 6c 6f 77 65 64 20  ite has allowed 
0d70: 42 4c 4f 42 20 6f 70 65 72 61 6e 64 73 20 74 6f  BLOB operands to
0d80: 20 74 68 65 20 5b 4c 49 4b 45 5d 20 61 6e 64 20   the [LIKE] and 
0d90: 5b 47 4c 4f 42 5d 0a 6f 70 65 72 61 74 6f 72 73  [GLOB].operators
0da0: 2e 20 20 42 75 74 20 68 61 76 69 6e 67 20 61 20  .  But having a 
0db0: 42 4c 4f 42 20 61 73 20 61 6e 20 6f 70 65 72 61  BLOB as an opera
0dc0: 6e 64 20 6f 66 20 5b 4c 49 4b 45 5d 20 6f 72 20  nd of [LIKE] or 
0dd0: 5b 47 4c 4f 42 5d 20 63 6f 6d 70 6c 69 63 61 74  [GLOB] complicat
0de0: 65 73 0a 61 6e 64 20 73 6c 6f 77 73 20 74 68 65  es.and slows the
0df0: 20 5b 4c 49 4b 45 20 6f 70 74 69 6d 69 7a 61 74   [LIKE optimizat
0e00: 69 6f 6e 5d 2e 20 20 57 68 65 6e 20 74 68 69 73  ion].  When this
0e10: 20 6f 70 74 69 6f 6e 20 69 73 20 73 65 74 2c 20   option is set, 
0e20: 69 74 20 6d 65 61 6e 73 20 74 68 61 74 0a 74 68  it means that.th
0e30: 65 20 4c 49 4b 45 20 61 6e 64 20 47 4c 4f 42 20  e LIKE and GLOB 
0e40: 6f 70 65 72 61 74 6f 72 73 20 61 6c 77 61 79 73  operators always
0e50: 20 72 65 74 75 72 6e 20 46 41 4c 53 45 20 69 66   return FALSE if
0e60: 20 65 69 74 68 65 72 20 6f 70 65 72 61 6e 64 20   either operand 
0e70: 69 73 20 61 20 42 4c 4f 42 2e 0a 54 68 61 74 20  is a BLOB..That 
0e80: 73 69 6d 70 6c 69 66 69 65 73 20 74 68 65 20 69  simplifies the i
0e90: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
0ea0: 20 74 68 65 20 5b 4c 49 4b 45 20 6f 70 74 69 6d   the [LIKE optim
0eb0: 69 7a 61 74 69 6f 6e 5d 20 61 6e 64 20 61 6c 6c  ization] and all
0ec0: 6f 77 73 0a 71 75 65 72 69 65 73 20 74 68 61 74  ows.queries that
0ed0: 20 75 73 65 20 74 68 65 20 5b 4c 49 4b 45 20 6f   use the [LIKE o
0ee0: 70 74 69 6d 69 7a 61 74 69 6f 6e 5d 20 74 6f 20  ptimization] to 
0ef0: 72 75 6e 20 66 61 73 74 65 72 2e 0a 0a 3c 6c 69  run faster...<li
0f00: 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 4d  ><p><b>[SQLITE_M
0f10: 41 58 5f 45 58 50 52 5f 44 45 50 54 48 3d 30 5d  AX_EXPR_DEPTH=0]
0f20: 3c 2f 62 3e 2e 0a 53 65 74 74 69 6e 67 20 74 68  </b>..Setting th
0f30: 65 20 6d 61 78 69 6d 75 6d 20 65 78 70 72 65 73  e maximum expres
0f40: 73 69 6f 6e 20 70 61 72 73 65 2d 74 72 65 65 20  sion parse-tree 
0f50: 64 65 70 74 68 20 74 6f 20 7a 65 72 6f 20 64 69  depth to zero di
0f60: 73 61 62 6c 65 73 20 61 6c 6c 20 63 68 65 63 6b  sables all check
0f70: 69 6e 67 0a 6f 66 20 74 68 65 20 65 78 70 72 65  ing.of the expre
0f80: 73 73 69 6f 6e 20 70 61 72 73 65 2d 74 72 65 65  ssion parse-tree
0f90: 20 64 65 70 74 68 2c 20 77 68 69 63 68 20 73 69   depth, which si
0fa0: 6d 70 6c 69 66 69 65 73 20 74 68 65 20 63 6f 64  mplifies the cod
0fb0: 65 20 72 65 73 75 6c 74 69 6e 67 20 69 6e 0a 66  e resulting in.f
0fc0: 61 73 74 65 72 20 65 78 65 63 75 74 69 6f 6e 2c  aster execution,
0fd0: 20 61 6e 64 20 68 65 6c 70 73 20 74 68 65 20 70   and helps the p
0fe0: 61 72 73 65 20 74 72 65 65 20 74 6f 20 75 73 65  arse tree to use
0ff0: 20 6c 65 73 73 20 6d 65 6d 6f 72 79 2e 0a 0a 3c   less memory...<
1000: 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45  li><p><b>[SQLITE
1010: 5f 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45 5d 3c  _OMIT_DECLTYPE]<
1020: 2f 62 3e 2e 0a 42 79 20 6f 6d 69 74 74 69 6e 67  /b>..By omitting
1030: 20 74 68 65 20 28 73 65 6c 64 6f 6d 2d 6e 65 65   the (seldom-nee
1040: 64 65 64 29 20 61 62 69 6c 69 74 79 20 74 6f 20  ded) ability to 
1050: 72 65 74 75 72 6e 20 74 68 65 20 64 65 63 6c 61  return the decla
1060: 72 65 64 20 74 79 70 65 20 6f 66 0a 63 6f 6c 75  red type of.colu
1070: 6d 6e 73 20 66 72 6f 6d 20 74 68 65 20 72 65 73  mns from the res
1080: 75 6c 74 20 73 65 74 20 6f 66 20 71 75 65 72 79  ult set of query
1090: 2c 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  , [prepared stat
10a0: 65 6d 65 6e 74 73 5d 20 63 61 6e 20 62 65 20 6d  ements] can be m
10b0: 61 64 65 0a 74 6f 20 63 6f 6e 73 75 6d 65 20 6c  ade.to consume l
10c0: 65 73 73 20 6d 65 6d 6f 72 79 2e 0a 0a 3c 6c 69  ess memory...<li
10d0: 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 4f  ><p><b>[SQLITE_O
10e0: 4d 49 54 5f 44 45 50 52 45 43 41 54 45 44 5d 3c  MIT_DEPRECATED]<
10f0: 2f 62 3e 2e 0a 4f 6d 69 74 74 69 6e 67 20 64 65  /b>..Omitting de
1100: 70 72 65 63 61 74 65 64 20 69 6e 74 65 72 66 61  precated interfa
1110: 63 65 73 20 61 6e 64 20 66 65 61 74 75 72 65 73  ces and features
1120: 20 77 69 6c 6c 20 6e 6f 74 20 68 65 6c 70 20 53   will not help S
1130: 51 4c 69 74 65 20 74 6f 0a 72 75 6e 20 61 6e 79  QLite to.run any
1140: 20 66 61 73 74 65 72 2e 20 20 49 74 20 77 69 6c   faster.  It wil
1150: 6c 20 72 65 64 75 63 65 20 74 68 65 20 6c 69 62  l reduce the lib
1160: 72 61 72 79 20 66 6f 6f 74 70 72 69 6e 74 2c 20  rary footprint, 
1170: 68 6f 77 65 76 65 72 2e 20 20 41 6e 64 0a 69 74  however.  And.it
1180: 20 69 73 20 74 68 65 20 72 69 67 68 74 20 74 68   is the right th
1190: 69 6e 67 20 74 6f 20 64 6f 2e 0a 0a 3c 6c 69 3e  ing to do...<li>
11a0: 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 4f 4d  <p><b>[SQLITE_OM
11b0: 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c  IT_PROGRESS_CALL
11c0: 42 41 43 4b 5d 3c 2f 62 3e 2e 0a 54 68 65 20 70  BACK]</b>..The p
11d0: 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72 20  rogress handler 
11e0: 63 61 6c 6c 62 61 63 6b 20 63 6f 75 6e 74 65 72  callback counter
11f0: 20 6d 75 73 74 20 62 65 20 63 68 65 63 6b 65 64   must be checked
1200: 20 69 6e 20 74 68 65 20 69 6e 6e 65 72 20 6c 6f   in the inner lo
1210: 6f 70 0a 6f 66 20 74 68 65 20 5b 62 79 74 65 63  op.of the [bytec
1220: 6f 64 65 20 65 6e 67 69 6e 65 5d 2e 20 20 42 79  ode engine].  By
1230: 20 6f 6d 69 74 74 69 6e 67 20 74 68 69 73 20 69   omitting this i
1240: 6e 74 65 72 66 61 63 65 2c 20 61 20 73 69 6e 67  nterface, a sing
1250: 6c 65 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 0a 69  le conditional.i
1260: 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74  s removed from t
1270: 68 65 20 69 6e 6e 65 72 20 6c 6f 6f 70 20 6f 66  he inner loop of
1280: 20 74 68 65 20 5b 62 79 74 65 63 6f 64 65 20 65   the [bytecode e
1290: 6e 67 69 6e 65 5d 2c 20 68 65 6c 70 69 6e 67 20  ngine], helping 
12a0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 0a 74  SQL statements.t
12b0: 6f 20 72 75 6e 20 73 6c 69 67 68 74 6c 79 20 66  o run slightly f
12c0: 61 73 74 65 72 2e 0a 0a 3c 6c 69 3e 3c 70 3e 3c  aster...<li><p><
12d0: 62 3e 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  b>[SQLITE_OMIT_S
12e0: 48 41 52 45 44 5f 43 41 43 48 45 5d 3c 2f 62 3e  HARED_CACHE]</b>
12f0: 2e 0a 4f 6d 69 74 74 69 6e 67 20 74 68 65 20 70  ..Omitting the p
1300: 6f 73 73 69 62 69 6c 69 74 79 20 6f 66 20 75 73  ossibility of us
1310: 69 6e 67 20 5b 73 68 61 72 65 64 20 63 61 63 68  ing [shared cach
1320: 65 5d 20 61 6c 6c 6f 77 73 20 6d 61 6e 79 20 63  e] allows many c
1330: 6f 6e 64 69 74 69 6f 6e 61 6c 73 0a 69 6e 20 70  onditionals.in p
1340: 65 72 66 6f 72 6d 61 6e 63 65 2d 63 72 69 74 69  erformance-criti
1350: 63 61 6c 20 73 65 63 74 69 6f 6e 73 20 6f 66 20  cal sections of 
1360: 74 68 65 20 63 6f 64 65 20 74 6f 20 62 65 20 65  the code to be e
1370: 6c 69 6d 69 6e 61 74 65 64 2e 20 20 54 68 69 73  liminated.  This
1380: 20 63 61 6e 0a 67 69 76 65 20 61 20 6e 6f 74 69   can.give a noti
1390: 63 61 62 6c 65 20 69 6d 70 72 6f 76 65 6d 65 6e  cable improvemen
13a0: 74 20 69 6e 20 70 65 72 66 6f 72 6d 61 6e 63 65  t in performance
13b0: 2e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51  ...<li><p><b>[SQ
13c0: 4c 49 54 45 5f 55 53 45 5f 41 4c 4c 4f 43 41 5d  LITE_USE_ALLOCA]
13d0: 3c 2f 62 3e 2e 0a 4d 61 6b 65 20 75 73 65 20 6f  </b>..Make use o
13e0: 66 20 61 6c 6c 6f 63 61 28 29 20 66 6f 72 20 64  f alloca() for d
13f0: 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c 6c 6f 63  ynamically alloc
1400: 61 74 69 6e 67 20 74 65 6d 70 6f 72 61 72 79 20  ating temporary 
1410: 73 74 61 63 6b 20 73 70 61 63 65 20 66 6f 72 20  stack space for 
1420: 0a 75 73 65 20 77 69 74 68 69 6e 20 61 20 73 69  .use within a si
1430: 6e 67 6c 65 20 66 75 6e 63 74 69 6f 6e 2c 20 6f  ngle function, o
1440: 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 73  n systems that s
1450: 75 70 70 6f 72 74 20 61 6c 6c 6f 63 61 28 29 2e  upport alloca().
1460: 20 20 57 69 74 68 6f 75 74 0a 74 68 69 73 20 6f    Without.this o
1470: 70 74 69 6f 6e 2c 20 74 65 6d 70 6f 72 61 72 79  ption, temporary
1480: 20 73 70 61 63 65 20 69 73 20 61 6c 6c 6f 63 61   space is alloca
1490: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 68 65 61  ted from the hea
14a0: 70 2e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 57 68 65  p..</ol>..<p>Whe
14b0: 6e 20 61 6c 6c 20 6f 66 20 74 68 65 20 72 65 63  n all of the rec
14c0: 6f 6d 6d 65 6e 64 65 64 20 63 6f 6d 70 69 6c 65  ommended compile
14d0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 62  -time options ab
14e0: 6f 76 65 20 61 72 65 20 75 73 65 64 2c 0a 74 68  ove are used,.th
14f0: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
1500: 20 77 69 6c 6c 20 62 65 20 61 70 70 72 6f 78 69   will be approxi
1510: 6d 61 74 65 6c 79 20 33 25 20 73 6d 61 6c 6c 65  mately 3% smalle
1520: 72 20 61 6e 64 20 75 73 65 20 61 62 6f 75 74 20  r and use about 
1530: 35 25 20 66 65 77 65 72 0a 43 50 55 20 63 79 63  5% fewer.CPU cyc
1540: 6c 65 73 2e 20 20 53 6f 20 74 68 65 73 65 20 6f  les.  So these o
1550: 70 74 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 6d 61  ptions do not ma
1560: 6b 65 20 61 20 68 75 67 65 20 64 69 66 66 65 72  ke a huge differ
1570: 65 6e 63 65 2e 20 20 42 75 74 20 69 6e 20 0a 73  ence.  But in .s
1580: 6f 6d 65 20 64 65 73 69 67 6e 20 73 69 74 75 61  ome design situa
1590: 74 69 6f 6e 73 2c 20 65 76 65 72 79 20 6c 69 74  tions, every lit
15a0: 74 6c 65 20 62 69 74 20 68 65 6c 70 73 2e 0a 0a  tle bit helps...
15b0: 3c 61 20 6e 61 6d 65 3d 22 6f 73 63 6f 6e 66 69  <a name="osconfi
15c0: 67 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 50 6c 61  g"></a>.<h1> Pla
15d0: 74 66 6f 72 6d 20 43 6f 6e 66 69 67 75 72 61 74  tform Configurat
15e0: 69 6f 6e 3c 2f 68 31 3e 0a 0a 3c 74 63 6c 3e 0a  ion</h1>..<tcl>.
15f0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
1600: 5f 48 41 56 45 5f 53 51 4c 49 54 45 5f 43 4f 4e  _HAVE_SQLITE_CON
1610: 46 49 47 5f 48 7d 20 7b 0a 20 20 49 66 20 74 68  FIG_H} {.  If th
1620: 65 20 5f 48 41 56 45 5f 53 51 4c 49 54 45 5f 43  e _HAVE_SQLITE_C
1630: 4f 4e 46 49 47 5f 48 20 6d 61 63 72 6f 20 69 73  ONFIG_H macro is
1640: 20 64 65 66 69 6e 65 64 0a 20 20 74 68 65 6e 20   defined.  then 
1650: 74 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63  the SQLite sourc
1660: 65 20 63 6f 64 65 20 77 69 6c 6c 20 61 74 74 65  e code will atte
1670: 6d 70 74 20 74 6f 20 23 69 6e 63 6c 75 64 65 20  mpt to #include 
1680: 61 20 66 69 6c 65 20 6e 61 6d 65 64 20 22 63 6f  a file named "co
1690: 6e 66 69 67 2e 68 22 2e 0a 20 20 54 68 65 20 22  nfig.h"..  The "
16a0: 63 6f 6e 66 69 67 2e 68 22 20 66 69 6c 65 20 75  config.h" file u
16b0: 73 75 61 6c 6c 79 20 63 6f 6e 74 61 69 6e 73 20  sually contains 
16c0: 6f 74 68 65 72 20 63 6f 6e 66 69 67 75 72 61 74  other configurat
16d0: 69 6f 6e 20 6f 70 74 69 6f 6e 73 2c 20 65 73 70  ion options, esp
16e0: 65 63 69 61 6c 6c 79 0a 20 20 22 48 41 56 45 5f  ecially.  "HAVE_
16f0: 3c 69 3e 49 4e 54 45 52 46 41 43 45 3c 2f 69 3e  <i>INTERFACE</i>
1700: 22 20 74 79 70 65 20 6f 70 74 69 6f 6e 73 20 67  " type options g
1710: 65 6e 65 72 61 74 65 64 20 62 79 20 61 75 74 6f  enerated by auto
1720: 63 6f 6e 66 20 73 63 72 69 70 74 73 2e 0a 7d 0a  conf scripts..}.
1730: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
1740: 7b 48 41 56 45 5f 46 44 41 54 41 53 59 4e 43 7d  {HAVE_FDATASYNC}
1750: 20 7b 0a 20 20 49 66 20 74 68 65 20 48 41 56 45   {.  If the HAVE
1760: 5f 46 44 41 54 41 53 59 4e 43 20 63 6f 6d 70 69  _FDATASYNC compi
1770: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
1780: 73 20 74 72 75 65 2c 20 74 68 65 6e 20 74 68 65  s true, then the
1790: 20 64 65 66 61 75 6c 74 20 5b 56 46 53 5d 0a 20   default [VFS]. 
17a0: 20 66 6f 72 20 75 6e 69 78 20 73 79 73 74 65 6d   for unix system
17b0: 73 20 77 69 6c 6c 20 61 74 74 65 6d 70 74 20 74  s will attempt t
17c0: 6f 20 75 73 65 20 66 64 61 74 61 73 79 6e 63 28  o use fdatasync(
17d0: 29 20 69 6e 73 74 65 61 64 20 6f 66 20 66 73 79  ) instead of fsy
17e0: 6e 63 28 29 20 77 68 65 72 65 0a 20 20 61 70 70  nc() where.  app
17f0: 72 6f 70 72 69 61 74 65 2e 20 20 49 66 20 74 68  ropriate.  If th
1800: 69 73 20 66 6c 61 67 20 69 73 20 6d 69 73 73 69  is flag is missi
1810: 6e 67 20 6f 72 20 66 61 6c 73 65 2c 20 74 68 65  ng or false, the
1820: 6e 20 66 73 79 6e 63 28 29 20 69 73 20 61 6c 77  n fsync() is alw
1830: 61 79 73 20 75 73 65 64 2e 0a 7d 0a 0a 43 4f 4d  ays used..}..COM
1840: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56  PILE_OPTION {HAV
1850: 45 5f 47 4d 54 49 4d 45 5f 52 7d 20 7b 0a 20 20  E_GMTIME_R} {.  
1860: 49 66 20 74 68 65 20 48 41 56 45 5f 47 4d 54 49  If the HAVE_GMTI
1870: 4d 45 5f 52 20 6f 70 74 69 6f 6e 20 69 73 20 74  ME_R option is t
1880: 72 75 65 20 61 6e 64 20 69 66 20 5b 53 51 4c 49  rue and if [SQLI
1890: 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45  TE_OMIT_DATETIME
18a0: 5f 46 55 4e 43 53 5d 20 69 73 20 74 72 75 65 2c  _FUNCS] is true,
18b0: 0a 20 20 74 68 65 6e 20 74 68 65 20 43 55 52 52  .  then the CURR
18c0: 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e  ENT_TIME, CURREN
18d0: 54 5f 44 41 54 45 2c 20 61 6e 64 20 43 55 52 52  T_DATE, and CURR
18e0: 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 6b 65  ENT_TIMESTAMP ke
18f0: 79 77 6f 72 64 73 20 77 69 6c 6c 20 75 73 65 0a  ywords will use.
1900: 20 20 74 68 65 20 74 68 72 65 61 64 73 61 66 65    the threadsafe
1910: 20 22 67 6d 74 69 6d 65 5f 72 28 29 22 20 69 6e   "gmtime_r()" in
1920: 74 65 72 66 61 63 65 20 72 61 74 68 65 72 20 74  terface rather t
1930: 68 61 6e 20 22 67 6d 74 69 6d 65 28 29 22 2e 20  han "gmtime()". 
1940: 20 49 6e 20 74 68 65 20 75 73 75 61 6c 20 63 61   In the usual ca
1950: 73 65 0a 20 20 77 68 65 72 65 20 5b 53 51 4c 49  se.  where [SQLI
1960: 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45  TE_OMIT_DATETIME
1970: 5f 46 55 4e 43 53 5d 20 69 73 20 6e 6f 74 20 64  _FUNCS] is not d
1980: 65 66 69 6e 65 64 20 6f 72 20 69 73 20 66 61 6c  efined or is fal
1990: 73 65 2c 20 74 68 65 6e 20 74 68 65 0a 20 20 62  se, then the.  b
19a0: 75 69 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e  uilt-in [date an
19b0: 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73  d time functions
19c0: 5d 20 61 72 65 20 75 73 65 64 20 74 6f 20 69 6d  ] are used to im
19d0: 70 6c 65 6d 65 6e 74 20 74 68 65 20 43 55 52 52  plement the CURR
19e0: 45 4e 54 5f 54 49 4d 45 2c 0a 20 20 43 55 52 52  ENT_TIME,.  CURR
19f0: 45 4e 54 5f 44 41 54 45 2c 20 61 6e 64 20 43 55  ENT_DATE, and CU
1a00: 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20  RRENT_TIMESTAMP 
1a10: 6b 65 79 77 6f 72 64 73 20 61 6e 64 20 6e 65 69  keywords and nei
1a20: 74 68 65 72 20 67 6d 74 69 6d 65 5f 72 28 29 20  ther gmtime_r() 
1a30: 6e 6f 72 0a 20 20 67 6d 74 69 6d 65 28 29 20 69  nor.  gmtime() i
1a40: 73 20 65 76 65 72 20 63 61 6c 6c 65 64 2e 0a 7d  s ever called..}
1a50: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1a60: 20 7b 48 41 56 45 5f 49 53 4e 41 4e 7d 20 7b 0a   {HAVE_ISNAN} {.
1a70: 20 20 49 66 20 74 68 65 20 48 41 56 45 5f 49 53    If the HAVE_IS
1a80: 4e 41 4e 20 6f 70 74 69 6f 6e 20 69 73 20 74 72  NAN option is tr
1a90: 75 65 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20  ue, then SQLite 
1aa0: 69 6e 76 6f 6b 65 73 20 74 68 65 20 73 79 73 74  invokes the syst
1ab0: 65 6d 20 6c 69 62 72 61 72 79 20 69 73 6e 61 6e  em library isnan
1ac0: 28 29 0a 20 20 66 75 6e 63 74 69 6f 6e 20 74 6f  ().  function to
1ad0: 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 61 20   determine if a 
1ae0: 64 6f 75 62 6c 65 2d 70 72 65 63 69 73 69 6f 6e  double-precision
1af0: 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
1b00: 76 61 6c 75 65 20 69 73 20 61 20 4e 61 4e 2e 0a  value is a NaN..
1b10: 20 20 49 66 20 48 41 56 45 5f 49 53 4e 41 4e 20    If HAVE_ISNAN 
1b20: 69 73 20 75 6e 64 65 66 69 6e 65 64 20 6f 72 20  is undefined or 
1b30: 66 61 6c 73 65 2c 20 74 68 65 6e 20 53 51 4c 69  false, then SQLi
1b40: 74 65 20 73 75 62 73 74 69 74 75 74 65 73 20 69  te substitutes i
1b50: 74 73 20 6f 77 6e 20 68 6f 6d 65 2d 67 72 6f 77  ts own home-grow
1b60: 6e 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  n.  implementati
1b70: 6f 6e 20 6f 66 20 69 73 6e 61 6e 28 29 2e 0a 7d  on of isnan()..}
1b80: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1b90: 20 7b 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45   {HAVE_LOCALTIME
1ba0: 5f 52 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48  _R} {.  If the H
1bb0: 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f 52 20  AVE_LOCALTIME_R 
1bc0: 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20  option is true, 
1bd0: 74 68 65 6e 20 53 51 4c 69 74 65 20 75 73 65 73  then SQLite uses
1be0: 20 74 68 65 20 74 68 72 65 61 64 73 61 66 65 0a   the threadsafe.
1bf0: 20 20 6c 6f 63 61 6c 74 69 6d 65 5f 72 28 29 20    localtime_r() 
1c00: 6c 69 62 72 61 72 79 20 72 6f 75 74 69 6e 65 20  library routine 
1c10: 69 6e 73 74 65 61 64 20 6f 66 20 6c 6f 63 61 6c  instead of local
1c20: 74 69 6d 65 28 29 0a 20 20 74 6f 20 68 65 6c 70  time().  to help
1c30: 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 5b   implement the [
1c40: 6c 6f 63 61 6c 74 69 6d 65 20 6d 6f 64 69 66 69  localtime modifi
1c50: 65 72 5d 0a 20 20 74 6f 20 74 68 65 20 62 75 69  er].  to the bui
1c60: 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e 64 20  lt-in [date and 
1c70: 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d 2e  time functions].
1c80: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
1c90: 4f 4e 20 7b 48 41 56 45 5f 4c 4f 43 41 4c 54 49  ON {HAVE_LOCALTI
1ca0: 4d 45 5f 53 7d 20 7b 0a 20 20 49 66 20 74 68 65  ME_S} {.  If the
1cb0: 20 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f   HAVE_LOCALTIME_
1cc0: 53 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65  S option is true
1cd0: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 75 73  , then SQLite us
1ce0: 65 73 20 74 68 65 20 74 68 72 65 61 64 73 61 66  es the threadsaf
1cf0: 65 0a 20 20 6c 6f 63 61 6c 74 69 6d 65 5f 73 28  e.  localtime_s(
1d00: 29 20 6c 69 62 72 61 72 79 20 72 6f 75 74 69 6e  ) library routin
1d10: 65 20 69 6e 73 74 65 61 64 20 6f 66 20 6c 6f 63  e instead of loc
1d20: 61 6c 74 69 6d 65 28 29 0a 20 20 74 6f 20 68 65  altime().  to he
1d30: 6c 70 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65  lp implement the
1d40: 20 5b 6c 6f 63 61 6c 74 69 6d 65 20 6d 6f 64 69   [localtime modi
1d50: 66 69 65 72 5d 0a 20 20 74 6f 20 74 68 65 20 62  fier].  to the b
1d60: 75 69 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e  uilt-in [date an
1d70: 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73  d time functions
1d80: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
1d90: 54 49 4f 4e 20 7b 48 41 56 45 5f 4d 41 4c 4c 4f  TION {HAVE_MALLO
1da0: 43 5f 55 53 41 42 4c 45 5f 53 49 5a 45 7d 20 7b  C_USABLE_SIZE} {
1db0: 0a 20 20 49 66 20 74 68 65 20 48 41 56 45 5f 4d  .  If the HAVE_M
1dc0: 41 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f 53 49 5a  ALLOC_USABLE_SIZ
1dd0: 45 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65  E option is true
1de0: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 74 72  , then SQLite tr
1df0: 69 65 73 20 75 73 65 73 20 74 68 65 0a 20 20 6d  ies uses the.  m
1e00: 61 6c 6c 6f 63 5f 75 73 61 62 6c 65 5f 73 69 7a  alloc_usable_siz
1e10: 65 28 29 20 69 6e 74 65 72 66 61 63 65 20 74 6f  e() interface to
1e20: 20 66 69 6e 64 20 74 68 65 20 73 69 7a 65 20 6f   find the size o
1e30: 66 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  f a memory alloc
1e40: 61 74 69 6f 6e 20 6f 62 74 61 69 6e 65 64 0a 20  ation obtained. 
1e50: 20 66 72 6f 6d 20 74 68 65 20 73 74 61 6e 64 61   from the standa
1e60: 72 64 2d 6c 69 62 72 61 72 79 20 6d 61 6c 6c 6f  rd-library mallo
1e70: 63 28 29 20 6f 72 20 72 65 61 6c 6c 6f 63 28 29  c() or realloc()
1e80: 20 72 6f 75 74 69 6e 65 73 2e 20 20 54 68 69 73   routines.  This
1e90: 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 0a   option is only.
1ea0: 20 20 61 70 70 6c 69 63 61 62 6c 65 20 69 66 20    applicable if 
1eb0: 74 68 65 20 73 74 61 6e 64 61 72 64 2d 6c 69 62  the standard-lib
1ec0: 72 61 72 79 20 6d 61 6c 6c 6f 63 28 29 20 69 73  rary malloc() is
1ed0: 20 75 73 65 64 2e 20 20 4f 6e 20 41 70 70 6c 65   used.  On Apple
1ee0: 20 73 79 73 74 65 6d 73 2c 0a 20 20 22 7a 6f 6e   systems,.  "zon
1ef0: 65 20 6d 61 6c 6c 6f 63 22 20 69 73 20 75 73 65  e malloc" is use
1f00: 64 20 69 6e 73 74 65 61 64 2c 20 61 6e 64 20 73  d instead, and s
1f10: 6f 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  o this option is
1f20: 20 6e 6f 74 20 61 70 70 6c 69 63 61 62 6c 65 2e   not applicable.
1f30: 20 20 41 6e 64 2c 20 6f 66 0a 20 20 63 6f 75 72    And, of.  cour
1f40: 73 65 2c 20 69 66 20 74 68 65 20 61 70 70 6c 69  se, if the appli
1f50: 63 61 74 69 6f 6e 20 73 75 70 70 6c 69 65 73 20  cation supplies 
1f60: 69 74 73 20 6f 77 6e 20 6d 61 6c 6c 6f 63 20 69  its own malloc i
1f70: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 75 73  mplementation us
1f80: 69 6e 67 0a 20 20 5b 53 51 4c 49 54 45 5f 43 4f  ing.  [SQLITE_CO
1f90: 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 20 74 68 65  NFIG_MALLOC] the
1fa0: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 68 61  n this option ha
1fb0: 73 20 6e 6f 20 65 66 66 65 63 74 2e 0a 20 20 3c  s no effect..  <
1fc0: 70 3e 0a 20 20 49 66 20 74 68 65 20 48 41 56 45  p>.  If the HAVE
1fd0: 5f 4d 41 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f 53  _MALLOC_USABLE_S
1fe0: 49 5a 45 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6d  IZE option is om
1ff0: 69 74 74 65 64 20 6f 72 20 69 73 20 66 61 6c 73  itted or is fals
2000: 65 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 0a  e, then SQLite .
2010: 20 20 75 73 65 73 20 61 20 77 72 61 70 70 65 72    uses a wrapper
2020: 20 61 72 6f 75 6e 64 20 73 79 73 74 65 6d 20 6d   around system m
2030: 61 6c 6c 6f 63 28 29 20 61 6e 64 20 72 65 61 6c  alloc() and real
2040: 6c 6f 63 28 29 20 74 68 61 74 20 65 6e 6c 61 72  loc() that enlar
2050: 67 65 73 20 65 61 63 68 20 61 6c 6c 6f 63 61 74  ges each allocat
2060: 69 6f 6e 0a 20 20 62 79 20 38 20 62 79 74 65 73  ion.  by 8 bytes
2070: 20 61 6e 64 20 77 72 69 74 65 73 20 74 68 65 20   and writes the 
2080: 73 69 7a 65 20 6f 66 20 74 68 65 20 61 6c 6c 6f  size of the allo
2090: 63 61 74 69 6f 6e 20 69 6e 20 74 68 65 20 69 6e  cation in the in
20a0: 69 74 69 61 6c 20 38 20 62 79 74 65 73 2c 20 61  itial 8 bytes, a
20b0: 6e 64 0a 20 20 74 68 65 6e 20 53 51 4c 69 74 65  nd.  then SQLite
20c0: 20 61 6c 73 6f 20 69 6d 70 6c 65 6d 65 6e 74 73   also implements
20d0: 20 69 74 73 20 6f 77 6e 20 68 6f 6d 65 2d 67 72   its own home-gr
20e0: 6f 77 6e 20 76 65 72 73 69 6f 6e 20 6f 66 20 6d  own version of m
20f0: 61 6c 6c 6f 63 5f 75 73 61 62 6c 65 5f 73 69 7a  alloc_usable_siz
2100: 65 28 29 0a 20 20 74 68 61 74 20 63 6f 6e 73 75  e().  that consu
2110: 6c 74 73 20 74 68 61 74 20 38 2d 62 79 74 65 20  lts that 8-byte 
2120: 70 72 65 66 69 78 20 74 6f 20 66 69 6e 64 20 74  prefix to find t
2130: 68 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69  he allocation si
2140: 7a 65 2e 20 20 54 68 69 73 20 61 70 70 72 6f 61  ze.  This approa
2150: 63 68 0a 20 20 77 6f 72 6b 73 20 62 75 74 20 69  ch.  works but i
2160: 74 20 69 73 20 73 75 62 6f 70 74 69 6d 61 6c 2e  t is suboptimal.
2170: 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 61    Applications a
2180: 72 65 20 65 6e 63 6f 75 72 61 67 65 64 20 74 6f  re encouraged to
2190: 20 75 73 65 0a 20 20 48 41 56 45 5f 4d 41 4c 4c   use.  HAVE_MALL
21a0: 4f 43 5f 55 53 41 42 4c 45 5f 53 49 5a 45 20 77  OC_USABLE_SIZE w
21b0: 68 65 6e 65 76 65 72 20 70 6f 73 73 69 62 6c 65  henever possible
21c0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
21d0: 49 4f 4e 20 7b 48 41 56 45 5f 53 54 52 43 48 52  ION {HAVE_STRCHR
21e0: 4e 55 4c 7d 20 7b 0a 20 20 49 66 20 74 68 65 20  NUL} {.  If the 
21f0: 48 41 56 45 5f 53 54 52 43 48 52 4e 55 4c 20 6f  HAVE_STRCHRNUL o
2200: 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20 74  ption is true, t
2210: 68 65 6e 20 53 51 4c 69 74 65 20 75 73 65 73 20  hen SQLite uses 
2220: 74 68 65 20 73 74 72 63 68 72 6e 75 6c 28 29 20  the strchrnul() 
2230: 6c 69 62 72 61 72 79 0a 20 20 66 75 6e 63 74 69  library.  functi
2240: 6f 6e 2e 20 20 49 66 20 74 68 69 73 20 6f 70 74  on.  If this opt
2250: 69 6f 6e 20 69 73 20 6d 69 73 73 69 6e 67 20 6f  ion is missing o
2260: 72 20 66 61 6c 73 65 2c 20 74 68 65 6e 20 53 51  r false, then SQ
2270: 4c 69 74 65 20 73 75 62 73 74 69 74 75 74 65 73  Lite substitutes
2280: 20 69 74 73 20 6f 77 6e 0a 20 20 68 6f 6d 65 2d   its own.  home-
2290: 67 72 6f 77 6e 20 69 6d 70 6c 65 6d 65 6e 74 61  grown implementa
22a0: 74 69 6f 6e 20 6f 66 20 73 74 72 63 68 72 6e 75  tion of strchrnu
22b0: 6c 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  l()..}..COMPILE_
22c0: 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f 55 53 4c  OPTION {HAVE_USL
22d0: 45 45 50 7d 20 7b 0a 20 20 49 66 20 74 68 65 20  EEP} {.  If the 
22e0: 48 41 56 45 5f 55 53 4c 45 45 50 20 6f 70 74 69  HAVE_USLEEP opti
22f0: 6f 6e 20 69 73 20 74 72 75 65 2c 20 74 68 65 6e  on is true, then
2300: 20 74 68 65 20 64 65 66 61 75 6c 74 20 75 6e 69   the default uni
2310: 78 20 56 46 53 20 75 73 65 73 20 74 68 65 0a 20  x VFS uses the. 
2320: 20 75 73 6c 65 65 70 28 29 20 73 79 73 74 65 6d   usleep() system
2330: 20 63 61 6c 6c 20 74 6f 20 69 6d 70 6c 65 6d 65   call to impleme
2340: 6e 74 20 74 68 65 20 78 53 6c 65 65 70 20 6d 65  nt the xSleep me
2350: 74 68 6f 64 2e 20 20 49 66 20 74 68 69 73 20 6f  thod.  If this o
2360: 70 74 69 6f 6e 20 69 73 0a 20 20 75 6e 64 65 66  ption is.  undef
2370: 69 6e 65 64 20 6f 72 20 66 61 6c 73 65 2c 20 74  ined or false, t
2380: 68 65 6e 20 78 53 6c 65 65 70 20 6f 6e 20 75 6e  hen xSleep on un
2390: 69 78 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65  ix is implemente
23a0: 64 20 75 73 69 6e 67 20 73 6c 65 65 70 28 29 20  d using sleep() 
23b0: 77 68 69 63 68 0a 20 20 6d 65 61 6e 73 20 74 68  which.  means th
23c0: 61 74 20 5b 73 71 6c 69 74 65 33 5f 73 6c 65 65  at [sqlite3_slee
23d0: 70 28 29 5d 20 77 69 6c 6c 20 68 61 76 65 20 61  p()] will have a
23e0: 20 6d 69 6e 69 6d 75 6d 20 77 61 69 74 20 69 6e   minimum wait in
23f0: 74 65 72 76 61 6c 20 6f 66 20 31 30 30 30 0a 20  terval of 1000. 
2400: 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 72 65   milliseconds re
2410: 67 61 72 64 6c 65 73 73 20 6f 66 20 69 74 73 20  gardless of its 
2420: 61 72 67 75 6d 65 6e 74 2e 20 20 0a 7d 0a 0a 43  argument.  .}..C
2430: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48  OMPILE_OPTION {H
2440: 41 56 45 5f 55 54 49 4d 45 7d 20 7b 0a 20 20 49  AVE_UTIME} {.  I
2450: 66 20 74 68 65 20 48 41 56 45 5f 55 54 49 4d 45  f the HAVE_UTIME
2460: 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c   option is true,
2470: 20 74 68 65 6e 20 74 68 65 20 62 75 69 6c 74 2d   then the built-
2480: 69 6e 20 62 75 74 20 6e 6f 6e 2d 73 74 61 6e 64  in but non-stand
2490: 61 72 64 0a 20 20 22 75 6e 69 78 2d 64 6f 74 66  ard.  "unix-dotf
24a0: 69 6c 65 22 20 56 46 53 20 77 69 6c 6c 20 75 73  ile" VFS will us
24b0: 65 20 74 68 65 20 75 74 69 6d 65 28 29 20 73 79  e the utime() sy
24c0: 73 74 65 6d 20 63 61 6c 6c 2c 20 69 6e 73 74 65  stem call, inste
24d0: 61 64 20 6f 66 20 75 74 69 6d 65 73 28 29 2c 0a  ad of utimes(),.
24e0: 20 20 74 6f 20 73 65 74 20 74 68 65 20 6c 61 73    to set the las
24f0: 74 20 61 63 63 65 73 73 20 74 69 6d 65 20 6f 6e  t access time on
2500: 20 74 68 65 20 6c 6f 63 6b 20 66 69 6c 65 2e 0a   the lock file..
2510: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
2520: 4e 20 7b 53 51 4c 49 54 45 5f 42 59 54 45 4f 52  N {SQLITE_BYTEOR
2530: 44 45 52 3d 3c 69 3e 28 30 7c 31 32 33 34 7c 34  DER=<i>(0|1234|4
2540: 33 32 31 29 3c 2f 69 3e 7d 20 7b 0a 20 20 53 51  321)</i>} {.  SQ
2550: 4c 69 74 65 20 6e 65 65 64 73 20 74 6f 20 6b 6e  Lite needs to kn
2560: 6f 77 20 69 66 20 74 68 65 20 6e 61 74 69 76 65  ow if the native
2570: 20 62 79 74 65 20 6f 72 64 65 72 20 6f 66 20 74   byte order of t
2580: 68 65 20 74 61 72 67 65 74 20 43 50 55 20 69 73  he target CPU is
2590: 0a 20 20 62 69 67 2d 65 6e 64 69 61 6e 20 6f 72  .  big-endian or
25a0: 20 6c 69 74 74 6c 65 2d 65 6e 64 69 6e 67 2e 20   little-ending. 
25b0: 20 54 68 65 20 53 51 4c 49 54 45 5f 42 59 54 45   The SQLITE_BYTE
25c0: 4f 52 44 45 52 20 70 72 65 70 72 6f 63 65 73 73  ORDER preprocess
25d0: 6f 72 20 69 73 20 73 65 74 0a 20 20 74 6f 20 34  or is set.  to 4
25e0: 33 32 31 20 66 6f 72 20 62 69 67 2d 65 6e 64 69  321 for big-endi
25f0: 61 6e 20 6d 61 63 68 69 6e 65 73 20 61 6e 64 20  an machines and 
2600: 31 32 33 34 20 66 6f 72 20 6c 69 74 74 6c 65 2d  1234 for little-
2610: 65 6e 64 69 61 6e 20 6d 61 63 68 69 6e 65 73 2c  endian machines,
2620: 20 6f 72 0a 20 20 69 74 20 63 61 6e 20 62 65 20   or.  it can be 
2630: 30 20 74 6f 20 6d 65 61 6e 20 74 68 61 74 20 74  0 to mean that t
2640: 68 65 20 62 79 74 65 20 6f 72 64 65 72 20 6d 75  he byte order mu
2650: 73 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  st be determined
2660: 20 61 74 20 72 75 6e 2d 74 69 6d 65 2e 0a 20 20   at run-time..  
2670: 54 68 65 72 65 20 61 72 65 20 23 69 66 64 65 66  There are #ifdef
2680: 73 20 69 6e 20 74 68 65 20 63 6f 64 65 20 74 68  s in the code th
2690: 61 74 20 73 65 74 20 53 51 4c 49 54 45 5f 42 59  at set SQLITE_BY
26a0: 54 45 4f 52 44 45 52 20 61 75 74 6f 6d 61 74 69  TEORDER automati
26b0: 63 61 6c 6c 79 0a 20 20 66 6f 72 20 61 6c 6c 20  cally.  for all 
26c0: 63 6f 6d 6d 6f 6e 20 70 6c 61 74 66 6f 72 6d 73  common platforms
26d0: 20 61 6e 64 20 63 6f 6d 70 69 6c 65 72 73 2e 20   and compilers. 
26e0: 20 48 6f 77 65 76 65 72 2c 20 69 74 20 6d 61 79   However, it may
26f0: 20 62 65 20 61 64 76 61 6e 74 61 67 65 6f 75 73   be advantageous
2700: 0a 20 20 74 6f 20 73 65 74 20 53 51 4c 49 54 45  .  to set SQLITE
2710: 5f 42 59 54 45 4f 52 44 45 52 20 61 70 70 72 6f  _BYTEORDER appro
2720: 70 72 69 61 74 65 6c 79 20 77 68 65 6e 20 63 6f  priately when co
2730: 6d 70 69 6c 69 6e 67 20 53 51 4c 69 74 65 20 66  mpiling SQLite f
2740: 6f 72 20 6f 62 73 63 75 72 65 0a 20 20 74 61 72  or obscure.  tar
2750: 67 65 74 73 2e 20 20 49 66 20 74 68 65 20 74 61  gets.  If the ta
2760: 72 67 65 74 20 62 79 74 65 20 6f 72 64 65 72 20  rget byte order 
2770: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
2780: 69 6e 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d  ined at compile-
2790: 74 69 6d 65 2c 0a 20 20 74 68 65 6e 20 53 51 4c  time,.  then SQL
27a0: 69 74 65 20 66 61 6c 6c 73 20 62 61 63 6b 20 74  ite falls back t
27b0: 6f 20 64 6f 69 6e 67 20 72 75 6e 2d 74 69 6d 65  o doing run-time
27c0: 20 63 68 65 63 6b 73 2c 20 77 68 69 63 68 20 61   checks, which a
27d0: 6c 77 61 79 73 20 77 6f 72 6b 2c 20 74 68 6f 75  lways work, thou
27e0: 67 68 0a 20 20 77 69 74 68 20 61 20 73 6d 61 6c  gh.  with a smal
27f0: 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65  l performance pe
2800: 6e 61 6c 74 79 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a  nalty..}.</tcl>.
2810: 0a 3c 61 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c  .<a name="defaul
2820: 74 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 4f 70  ts"></a>.<h1> Op
2830: 74 69 6f 6e 73 20 54 6f 20 53 65 74 20 44 65 66  tions To Set Def
2840: 61 75 6c 74 20 50 61 72 61 6d 65 74 65 72 20 56  ault Parameter V
2850: 61 6c 75 65 73 3c 2f 68 31 3e 0a 0a 3c 74 63 6c  alues</h1>..<tcl
2860: 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  >..COMPILE_OPTIO
2870: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
2880: 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45  T_AUTOMATIC_INDE
2890: 58 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26  X=<i>&lt;0 or 1&
28a0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
28b0: 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e  s macro determin
28c0: 65 73 20 74 68 65 20 69 6e 69 74 69 61 6c 20 73  es the initial s
28d0: 65 74 74 69 6e 67 20 66 6f 72 20 5b 50 52 41 47  etting for [PRAG
28e0: 4d 41 20 61 75 74 6f 6d 61 74 69 63 5f 69 6e 64  MA automatic_ind
28f0: 65 78 5d 0a 20 20 66 6f 72 20 6e 65 77 6c 79 20  ex].  for newly 
2900: 6f 70 65 6e 65 64 20 5b 64 61 74 61 62 61 73 65  opened [database
2910: 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 2e 0a 20   connections].. 
2920: 20 46 6f 72 20 61 6c 6c 20 76 65 72 73 69 6f 6e   For all version
2930: 73 20 6f 66 20 53 51 4c 69 74 65 20 74 68 72 6f  s of SQLite thro
2940: 75 67 68 20 33 2e 37 2e 31 37 2c 0a 20 20 61 75  ugh 3.7.17,.  au
2950: 74 6f 6d 61 74 69 63 20 69 6e 64 69 63 65 73 20  tomatic indices 
2960: 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 65 6e 61  are normally ena
2970: 62 6c 65 64 20 66 6f 72 20 6e 65 77 20 64 61 74  bled for new dat
2980: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2990: 73 20 69 66 0a 20 20 74 68 69 73 20 63 6f 6d 70  s if.  this comp
29a0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
29b0: 69 73 20 6f 6d 69 74 74 65 64 2e 0a 20 20 48 6f  is omitted..  Ho
29c0: 77 65 76 65 72 2c 20 74 68 61 74 20 6d 69 67 68  wever, that migh
29d0: 74 20 63 68 61 6e 67 65 20 69 6e 20 66 75 74 75  t change in futu
29e0: 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53  re releases of S
29f0: 51 4c 69 74 65 2e 0a 20 20 3c 70 3e 53 65 65 20  QLite..  <p>See 
2a00: 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 4f 4d  also: [SQLITE_OM
2a10: 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44  IT_AUTOMATIC_IND
2a20: 45 58 5d 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  EX].}..COMPILE_O
2a30: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
2a40: 46 41 55 4c 54 5f 41 55 54 4f 56 41 43 55 55 4d  FAULT_AUTOVACUUM
2a50: 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 20 6f  =<i>&lt;0 or 1 o
2a60: 72 20 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20  r 2&gt;</i>} {. 
2a70: 20 54 68 69 73 20 6d 61 63 72 6f 20 64 65 74 65   This macro dete
2a80: 72 6d 69 6e 65 73 20 69 66 20 53 51 4c 69 74 65  rmines if SQLite
2a90: 20 63 72 65 61 74 65 73 20 64 61 74 61 62 61 73   creates databas
2aa0: 65 73 20 77 69 74 68 20 74 68 65 20 0a 20 20 5b  es with the .  [
2ab0: 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 66 6c 61  auto_vacuum] fla
2ac0: 67 20 73 65 74 20 62 79 20 64 65 66 61 75 6c 74  g set by default
2ad0: 20 74 6f 20 4f 46 46 20 28 30 29 2c 20 46 55 4c   to OFF (0), FUL
2ae0: 4c 20 28 31 29 2c 20 6f 72 0a 20 20 49 4e 43 52  L (1), or.  INCR
2af0: 45 4d 45 4e 54 41 4c 20 28 32 29 2e 20 54 68 65  EMENTAL (2). The
2b00: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69   default value i
2b10: 73 20 30 20 6d 65 61 6e 69 6e 67 20 74 68 61 74  s 0 meaning that
2b20: 20 64 61 74 61 62 61 73 65 73 0a 20 20 61 72 65   databases.  are
2b30: 20 63 72 65 61 74 65 64 20 77 69 74 68 20 61 75   created with au
2b40: 74 6f 2d 76 61 63 75 75 6d 20 74 75 72 6e 65 64  to-vacuum turned
2b50: 20 6f 66 66 2e 0a 20 20 49 6e 20 61 6e 79 20 63   off..  In any c
2b60: 61 73 65 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d  ase the compile-
2b70: 74 69 6d 65 20 64 65 66 61 75 6c 74 20 6d 61 79  time default may
2b80: 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e 20 62   be overridden b
2b90: 79 20 74 68 65 20 0a 20 20 5b 50 52 41 47 4d 41  y the .  [PRAGMA
2ba0: 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 63 6f   auto_vacuum] co
2bb0: 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  mmand..}..COMPIL
2bc0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
2bd0: 5f 44 45 46 41 55 4c 54 5f 43 41 43 48 45 5f 53  _DEFAULT_CACHE_S
2be0: 49 5a 45 3d 3c 69 3e 26 6c 74 3b 4e 26 67 74 3b  IZE=<i>&lt;N&gt;
2bf0: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d  </i>} {.  This m
2c00: 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 64 65  acro sets the de
2c10: 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d 20 73 69  fault maximum si
2c20: 7a 65 20 6f 66 20 74 68 65 20 70 61 67 65 2d 63  ze of the page-c
2c30: 61 63 68 65 20 66 6f 72 20 65 61 63 68 20 61 74  ache for each at
2c40: 74 61 63 68 65 64 0a 20 20 64 61 74 61 62 61 73  tached.  databas
2c50: 65 2e 20 20 41 20 70 6f 73 69 74 69 76 65 20 76  e.  A positive v
2c60: 61 6c 75 65 20 6d 65 61 6e 73 20 74 68 61 74 20  alue means that 
2c70: 74 68 65 20 6c 69 6d 69 74 20 69 73 20 4e 20 70  the limit is N p
2c80: 61 67 65 2e 20 20 49 66 20 4e 20 69 73 20 6e 65  age.  If N is ne
2c90: 67 61 74 69 76 65 0a 20 20 74 68 61 74 20 6d 65  gative.  that me
2ca0: 61 6e 73 20 74 6f 20 6c 69 6d 69 74 20 74 68 65  ans to limit the
2cb0: 20 63 61 63 68 65 20 73 69 7a 65 20 74 6f 20 2d   cache size to -
2cc0: 4e 2a 31 30 32 34 20 62 79 74 65 73 2e 0a 20 20  N*1024 bytes..  
2cd0: 54 68 65 20 73 75 67 67 65 73 74 65 64 20 6d 61  The suggested ma
2ce0: 78 69 6d 75 6d 20 63 61 63 68 65 20 73 69 7a 65  ximum cache size
2cf0: 20 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64 64   can be overridd
2d00: 65 6e 20 62 79 20 74 68 65 20 0a 20 20 5b 50 52  en by the .  [PR
2d10: 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 5d  AGMA cache_size]
2d20: 20 63 6f 6d 6d 61 6e 64 2e 20 54 68 65 20 64 65   command. The de
2d30: 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 2d  fault value is -
2d40: 32 30 30 30 2c 20 77 68 69 63 68 20 74 72 61 6e  2000, which tran
2d50: 73 6c 61 74 65 73 0a 20 20 69 6e 74 6f 20 61 20  slates.  into a 
2d60: 6d 61 78 69 6d 75 6d 20 6f 66 20 32 30 34 38 30  maximum of 20480
2d70: 30 30 20 62 79 74 65 73 20 70 65 72 20 63 61 63  00 bytes per cac
2d80: 68 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  he..}..COMPILE_O
2d90: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
2da0: 46 41 55 4c 54 5f 46 49 4c 45 5f 46 4f 52 4d 41  FAULT_FILE_FORMA
2db0: 54 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 34 26  T=<i>&lt;1 or 4&
2dc0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65  gt;</i>} {.  The
2dd0: 20 64 65 66 61 75 6c 74 20 5b 73 63 68 65 6d 61   default [schema
2de0: 20 66 6f 72 6d 61 74 20 6e 75 6d 62 65 72 5d 20   format number] 
2df0: 75 73 65 64 20 62 79 20 53 51 4c 69 74 65 20 77  used by SQLite w
2e00: 68 65 6e 20 63 72 65 61 74 69 6e 67 0a 20 20 6e  hen creating.  n
2e10: 65 77 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ew database file
2e20: 73 20 69 73 20 73 65 74 20 62 79 20 74 68 69 73  s is set by this
2e30: 20 6d 61 63 72 6f 2e 20 20 54 68 65 20 73 63 68   macro.  The sch
2e40: 65 6d 61 20 66 6f 72 6d 61 74 73 20 61 72 65 20  ema formats are 
2e50: 61 6c 6c 0a 20 20 76 65 72 79 20 73 69 6d 69 6c  all.  very simil
2e60: 61 72 2e 20 20 54 68 65 20 64 69 66 66 65 72 65  ar.  The differe
2e70: 6e 63 65 20 62 65 74 77 65 65 6e 20 66 6f 72 6d  nce between form
2e80: 61 74 73 20 31 20 61 6e 64 20 34 20 69 73 20 74  ats 1 and 4 is t
2e90: 68 61 74 20 66 6f 72 6d 61 74 0a 20 20 34 20 75  hat format.  4 u
2ea0: 6e 64 65 72 73 74 61 6e 64 73 20 5b 64 65 73 63  nderstands [desc
2eb0: 65 6e 64 69 6e 67 20 69 6e 64 69 63 65 73 5d 20  ending indices] 
2ec0: 61 6e 64 20 68 61 73 20 61 20 74 69 67 68 74 65  and has a tighte
2ed0: 72 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72 0a 20  r encoding for. 
2ee0: 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 73 2e   boolean values.
2ef0: 0a 0a 20 20 41 6c 6c 20 76 65 72 73 69 6f 6e 73  ..  All versions
2f00: 20 6f 66 20 53 51 4c 69 74 65 20 73 69 6e 63 65   of SQLite since
2f10: 20 33 2e 33 2e 30 20 28 32 30 30 36 2d 30 31 2d   3.3.0 (2006-01-
2f20: 31 30 29 0a 20 20 63 61 6e 20 72 65 61 64 20 61  10).  can read a
2f30: 6e 64 20 77 72 69 74 65 20 61 6e 79 20 73 63 68  nd write any sch
2f40: 65 6d 61 20 66 6f 72 6d 61 74 0a 20 20 62 65 74  ema format.  bet
2f50: 77 65 65 6e 20 31 20 61 6e 64 20 34 2e 20 20 42  ween 1 and 4.  B
2f60: 75 74 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e  ut older version
2f70: 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68  s of SQLite migh
2f80: 74 20 6e 6f 74 20 62 65 20 61 62 6c 65 20 74 6f  t not be able to
2f90: 0a 20 20 72 65 61 64 20 66 6f 72 6d 61 74 73 20  .  read formats 
2fa0: 67 72 65 61 74 65 72 20 74 68 61 6e 20 31 2e 20  greater than 1. 
2fb0: 20 53 6f 20 74 68 61 74 20 6f 6c 64 65 72 20 76   So that older v
2fc0: 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
2fd0: 65 20 77 69 6c 6c 0a 20 20 62 65 20 61 62 6c 65  e will.  be able
2fe0: 20 74 6f 20 72 65 61 64 20 61 6e 64 20 77 72 69   to read and wri
2ff0: 74 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  te database file
3000: 73 20 63 72 65 61 74 65 64 20 62 79 20 6e 65 77  s created by new
3010: 65 72 20 76 65 72 73 69 6f 6e 73 0a 20 20 6f 66  er versions.  of
3020: 20 53 51 4c 69 74 65 2c 20 74 68 65 20 64 65 66   SQLite, the def
3030: 61 75 6c 74 20 73 63 68 65 6d 61 20 66 6f 72 6d  ault schema form
3040: 61 74 20 77 61 73 20 73 65 74 20 74 6f 20 31 20  at was set to 1 
3050: 66 6f 72 20 53 51 4c 69 74 65 20 76 65 72 73 69  for SQLite versi
3060: 6f 6e 73 0a 20 20 74 68 72 6f 75 67 68 20 33 2e  ons.  through 3.
3070: 37 2e 39 20 28 32 30 31 31 2d 31 31 2d 30 31 29  7.9 (2011-11-01)
3080: 2e 20 20 42 65 67 69 6e 6e 69 6e 67 20 77 69 74  .  Beginning wit
3090: 68 20 0a 20 20 5b 76 65 72 73 69 6f 6e 20 33 2e  h .  [version 3.
30a0: 37 2e 31 30 5d 20 28 5b 64 61 74 65 6f 66 3a 33  7.10] ([dateof:3
30b0: 2e 37 2e 31 30 5d 29 2c 20 74 68 65 20 64 65 66  .7.10]), the def
30c0: 61 75 6c 74 0a 20 20 73 63 68 65 6d 61 20 66 6f  ault.  schema fo
30d0: 72 6d 61 74 20 69 73 20 34 2e 0a 0a 20 20 54 68  rmat is 4...  Th
30e0: 65 20 73 63 68 65 6d 61 20 66 6f 72 6d 61 74 20  e schema format 
30f0: 6e 75 6d 62 65 72 20 66 6f 72 20 61 20 6e 65 77  number for a new
3100: 20 64 61 74 61 62 61 73 65 20 63 61 6e 20 62 65   database can be
3110: 20 73 65 74 20 61 74 20 72 75 6e 74 69 6d 65 20   set at runtime 
3120: 75 73 69 6e 67 0a 20 20 74 68 65 20 5b 50 52 41  using.  the [PRA
3130: 47 4d 41 20 6c 65 67 61 63 79 5f 66 69 6c 65 5f  GMA legacy_file_
3140: 66 6f 72 6d 61 74 5d 20 63 6f 6d 6d 61 6e 64 2e  format] command.
3150: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3160: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55  ON {SQLITE_DEFAU
3170: 4c 54 5f 46 49 4c 45 5f 50 45 52 4d 49 53 53 49  LT_FILE_PERMISSI
3180: 4f 4e 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a  ONS=<i>N</i>} {.
3190: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 6e 75    The default nu
31a0: 6d 65 72 69 63 20 66 69 6c 65 20 70 65 72 6d 69  meric file permi
31b0: 73 73 69 6f 6e 73 20 66 6f 72 20 6e 65 77 6c 79  ssions for newly
31c0: 20 63 72 65 61 74 65 64 20 64 61 74 61 62 61 73   created databas
31d0: 65 20 66 69 6c 65 73 0a 20 20 75 6e 64 65 72 20  e files.  under 
31e0: 75 6e 69 78 2e 20 20 49 66 20 6e 6f 74 20 73 70  unix.  If not sp
31f0: 65 63 69 66 69 65 64 2c 20 74 68 65 20 64 65 66  ecified, the def
3200: 61 75 6c 74 20 69 73 20 30 36 34 34 20 77 68 69  ault is 0644 whi
3210: 63 68 20 6d 65 61 6e 73 20 74 68 61 74 0a 20 20  ch means that.  
3220: 74 68 65 20 66 69 6c 65 73 20 69 73 20 67 6c 6f  the files is glo
3230: 62 61 6c 6c 79 20 72 65 61 64 61 62 6c 65 20 62  bally readable b
3240: 75 74 20 6f 6e 6c 79 20 77 72 69 74 61 62 6c 65  ut only writable
3250: 20 62 79 20 74 68 65 20 63 72 65 61 74 6f 72 2e   by the creator.
3260: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3270: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55  ON {SQLITE_DEFAU
3280: 4c 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 53 3d  LT_FOREIGN_KEYS=
3290: 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74  <i>&lt;0 or 1&gt
32a0: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
32b0: 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73  macro determines
32c0: 20 77 68 65 74 68 65 72 20 65 6e 66 6f 72 63 65   whether enforce
32d0: 6d 65 6e 74 20 6f 66 20 0a 20 20 5b 66 6f 72 65  ment of .  [fore
32e0: 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69  ign key constrai
32f0: 6e 74 73 5d 20 69 73 20 65 6e 61 62 6c 65 64 20  nts] is enabled 
3300: 6f 72 20 64 69 73 61 62 6c 65 64 20 62 79 20 64  or disabled by d
3310: 65 66 61 75 6c 74 20 66 6f 72 0a 20 20 6e 65 77  efault for.  new
3320: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
3330: 74 69 6f 6e 73 2e 20 20 45 61 63 68 20 64 61 74  tions.  Each dat
3340: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
3350: 20 63 61 6e 20 61 6c 77 61 79 73 20 74 75 72 6e   can always turn
3360: 0a 20 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f  .  enforcement o
3370: 66 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f  f foreign key co
3380: 6e 73 74 72 61 69 6e 74 73 20 6f 6e 20 61 6e 64  nstraints on and
3390: 20 6f 66 66 20 61 6e 64 20 72 75 6e 2d 74 69 6d   off and run-tim
33a0: 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20 5b 66  e using.  the [f
33b0: 6f 72 65 69 67 6e 5f 6b 65 79 73 20 70 72 61 67  oreign_keys prag
33c0: 6d 61 5d 2e 20 20 45 6e 66 6f 72 63 65 6d 65 6e  ma].  Enforcemen
33d0: 74 20 6f 66 20 66 6f 72 65 69 67 6e 20 6b 65 79  t of foreign key
33e0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 0a 20 20 69   constraints.  i
33f0: 73 20 6e 6f 72 6d 61 6c 6c 79 20 6f 66 66 20 62  s normally off b
3400: 79 20 64 65 66 61 75 6c 74 2c 20 62 75 74 20 69  y default, but i
3410: 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  f this compile-t
3420: 69 6d 65 20 70 61 72 61 6d 65 74 65 72 20 69 73  ime parameter is
3430: 0a 20 20 73 65 74 20 74 6f 20 31 2c 20 65 6e 66  .  set to 1, enf
3440: 6f 72 63 65 6d 65 6e 74 20 6f 66 20 66 6f 72 65  orcement of fore
3450: 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69  ign key constrai
3460: 6e 74 73 20 77 69 6c 6c 20 62 65 20 6f 6e 20 62  nts will be on b
3470: 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a 43 4f  y default..}..CO
3480: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
3490: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d 4d 41  LITE_DEFAULT_MMA
34a0: 50 5f 53 49 5a 45 3d 3c 69 3e 4e 3c 2f 69 3e 7d  P_SIZE=<i>N</i>}
34b0: 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20   {.  This macro 
34c0: 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74  sets the default
34d0: 20 6c 69 6d 69 74 20 6f 6e 20 74 68 65 20 61 6d   limit on the am
34e0: 6f 75 6e 74 20 6f 66 20 6d 65 6d 6f 72 79 20 74  ount of memory t
34f0: 68 61 74 0a 20 20 77 69 6c 6c 20 62 65 20 75 73  hat.  will be us
3500: 65 64 20 66 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61  ed for memory-ma
3510: 70 70 65 64 20 49 2f 4f 0a 20 20 66 6f 72 20 65  pped I/O.  for e
3520: 61 63 68 20 6f 70 65 6e 20 64 61 74 61 62 61 73  ach open databas
3530: 65 20 66 69 6c 65 2e 20 20 49 66 20 74 68 65 20  e file.  If the 
3540: 3c 69 3e 4e 3c 2f 69 3e 0a 20 20 69 73 20 7a 65  <i>N</i>.  is ze
3550: 72 6f 2c 20 74 68 65 6e 20 6d 65 6d 6f 72 79 20  ro, then memory 
3560: 6d 61 70 70 65 64 20 49 2f 4f 20 69 73 20 64 69  mapped I/O is di
3570: 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c  sabled by defaul
3580: 74 2e 20 20 54 68 69 73 0a 20 20 63 6f 6d 70 69  t.  This.  compi
3590: 6c 65 2d 74 69 6d 65 20 6c 69 6d 69 74 20 61 6e  le-time limit an
35a0: 64 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4d 41  d the [SQLITE_MA
35b0: 58 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 63 61 6e  X_MMAP_SIZE] can
35c0: 20 62 65 20 6d 6f 64 69 66 69 65 64 20 0a 20 20   be modified .  
35d0: 61 74 20 73 74 61 72 74 2d 74 69 6d 65 20 75 73  at start-time us
35e0: 69 6e 67 20 74 68 65 0a 20 20 5b 73 71 6c 69 74  ing the.  [sqlit
35f0: 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49  e3_config]([SQLI
3600: 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53  TE_CONFIG_MMAP_S
3610: 49 5a 45 5d 29 20 63 61 6c 6c 2c 20 6f 72 20 61  IZE]) call, or a
3620: 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20 75 73 69  t run-time.  usi
3630: 6e 67 20 74 68 65 20 5b 6d 6d 61 70 5f 73 69 7a  ng the [mmap_siz
3640: 65 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f  e pragma]..}..CO
3650: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
3660: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4a 4f 55  LITE_DEFAULT_JOU
3670: 52 4e 41 4c 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d  RNAL_SIZE_LIMIT=
3680: 3c 69 3e 26 6c 74 3b 62 79 74 65 73 26 67 74 3b  <i>&lt;bytes&gt;
3690: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  </i>} {.  This o
36a0: 70 74 69 6f 6e 20 73 65 74 73 20 74 68 65 20 73  ption sets the s
36b0: 69 7a 65 20 6c 69 6d 69 74 20 6f 6e 20 5b 72 6f  ize limit on [ro
36c0: 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20  llback journal] 
36d0: 66 69 6c 65 73 20 69 6e 0a 20 20 5b 6a 6f 75 72  files in.  [jour
36e0: 6e 61 6c 5f 6d 6f 64 65 20 70 72 61 67 6d 61 20  nal_mode pragma 
36f0: 7c 20 70 65 72 73 69 73 74 65 6e 74 20 6a 6f 75  | persistent jou
3700: 72 6e 61 6c 20 6d 6f 64 65 5d 20 61 6e 64 0a 20  rnal mode] and. 
3710: 20 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 20 7c   [locking_mode |
3720: 20 65 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b 69   exclusive locki
3730: 6e 67 20 6d 6f 64 65 5d 20 61 6e 64 20 6f 6e 20  ng mode] and on 
3740: 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 0a  the size of the.
3750: 20 20 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f    write-ahead lo
3760: 67 20 66 69 6c 65 20 69 6e 20 5b 57 41 4c 20 6d  g file in [WAL m
3770: 6f 64 65 5d 2e 20 57 68 65 6e 20 74 68 69 73 20  ode]. When this 
3780: 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  .  compile-time 
3790: 6f 70 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65  option is omitte
37a0: 64 20 74 68 65 72 65 20 69 73 20 6e 6f 20 75 70  d there is no up
37b0: 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65  per bound on the
37c0: 0a 20 20 73 69 7a 65 20 6f 66 20 74 68 65 20 72  .  size of the r
37d0: 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 73  ollback journals
37e0: 20 6f 72 20 77 72 69 74 65 2d 61 68 65 61 64 20   or write-ahead 
37f0: 6c 6f 67 73 2e 20 20 0a 20 20 54 68 65 20 6a 6f  logs.  .  The jo
3800: 75 72 6e 61 6c 20 66 69 6c 65 20 73 69 7a 65 20  urnal file size 
3810: 6c 69 6d 69 74 0a 20 20 63 61 6e 20 62 65 20 63  limit.  can be c
3820: 68 61 6e 67 65 64 20 61 74 20 72 75 6e 2d 74 69  hanged at run-ti
3830: 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b 6a 6f  me using the [jo
3840: 75 72 6e 61 6c 5f 73 69 7a 65 5f 6c 69 6d 69 74  urnal_size_limit
3850: 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d   pragma]..}..COM
3860: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
3870: 49 54 45 5f 44 45 46 41 55 4c 54 5f 4c 4f 43 4b  ITE_DEFAULT_LOCK
3880: 49 4e 47 5f 4d 4f 44 45 3d 3c 69 3e 26 6c 74 3b  ING_MODE=<i>&lt;
3890: 31 20 6f 72 20 30 26 67 74 3b 3c 2f 69 3e 7d 20  1 or 0&gt;</i>} 
38a0: 7b 0a 20 20 49 66 20 73 65 74 20 74 6f 20 31 2c  {.  If set to 1,
38b0: 20 74 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c   then the defaul
38c0: 74 20 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 5d  t [locking_mode]
38d0: 20 69 73 20 73 65 74 20 74 6f 20 45 58 43 4c 55   is set to EXCLU
38e0: 53 49 56 45 2e 0a 20 20 49 66 20 6f 6d 69 74 74  SIVE..  If omitt
38f0: 65 64 20 6f 72 20 73 65 74 20 74 6f 20 30 20 74  ed or set to 0 t
3900: 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20  hen the default 
3910: 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 5d 20 69  [locking_mode] i
3920: 73 20 4e 4f 52 4d 41 4c 2e 0a 7d 0a 0a 43 4f 4d  s NORMAL..}..COM
3930: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
3940: 49 54 45 5f 44 45 46 41 55 4c 54 5f 4c 4f 4f 4b  ITE_DEFAULT_LOOK
3950: 41 53 49 44 45 3d 3c 69 3e 53 5a 2c 4e 3c 2f 69  ASIDE=<i>SZ,N</i
3960: 3e 7d 20 7b 0a 20 20 53 65 74 73 20 74 68 65 20  >} {.  Sets the 
3970: 64 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20  default size of 
3980: 74 68 65 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d  the [lookaside m
3990: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d  emory allocator]
39a0: 20 6d 65 6d 6f 72 79 20 70 6f 6f 6c 0a 20 20 74   memory pool.  t
39b0: 6f 20 4e 20 65 6e 74 72 69 65 73 20 6f 66 20 53  o N entries of S
39c0: 5a 20 62 79 74 65 73 20 65 61 63 68 2e 20 20 54  Z bytes each.  T
39d0: 68 69 73 20 73 65 74 74 69 6e 67 20 63 61 6e 20  his setting can 
39e0: 62 65 20 6d 6f 64 69 66 69 65 64 20 61 74 0a 20  be modified at. 
39f0: 20 73 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e   start-time usin
3a00: 67 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  g [sqlite3_confi
3a10: 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  g]([SQLITE_CONFI
3a20: 47 5f 4c 4f 4f 4b 41 53 49 44 45 5d 29 20 61 6e  G_LOOKASIDE]) an
3a30: 64 2f 6f 72 0a 20 20 61 73 20 65 61 63 68 20 5b  d/or.  as each [
3a40: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
3a50: 69 6f 6e 5d 20 69 73 20 6f 70 65 6e 65 64 20 75  ion] is opened u
3a60: 73 69 6e 67 0a 20 20 5b 73 71 6c 69 74 65 33 5f  sing.  [sqlite3_
3a70: 64 62 5f 63 6f 6e 66 69 67 5d 28 64 62 2c 20 5b  db_config](db, [
3a80: 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
3a90: 4c 4f 4f 4b 41 53 49 44 45 5d 29 2e 0a 7d 0a 0a  LOOKASIDE])..}..
3aa0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
3ab0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d  SQLITE_DEFAULT_M
3ac0: 45 4d 53 54 41 54 55 53 3d 3c 69 3e 26 6c 74 3b  EMSTATUS=<i>&lt;
3ad0: 31 20 6f 72 20 30 26 67 74 3b 3c 2f 69 3e 7d 20  1 or 0&gt;</i>} 
3ae0: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69  {.  This macro i
3af0: 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d  s used to determ
3b00: 69 6e 65 20 77 68 65 74 68 65 72 20 6f 72 20 6e  ine whether or n
3b10: 6f 74 20 74 68 65 20 66 65 61 74 75 72 65 73 20  ot the features 
3b20: 65 6e 61 62 6c 65 64 20 61 6e 64 0a 20 20 64 69  enabled and.  di
3b30: 73 61 62 6c 65 64 20 75 73 69 6e 67 20 74 68 65  sabled using the
3b40: 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d   SQLITE_CONFIG_M
3b50: 45 4d 53 54 41 54 55 53 20 61 72 67 75 6d 65 6e  EMSTATUS argumen
3b60: 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f  t to [sqlite3_co
3b70: 6e 66 69 67 28 29 5d 0a 20 20 61 72 65 20 61 76  nfig()].  are av
3b80: 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61 75  ailable by defau
3b90: 6c 74 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20  lt. The default 
3ba0: 76 61 6c 75 65 20 69 73 20 31 20 28 5b 53 51 4c  value is 1 ([SQL
3bb0: 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54  ITE_CONFIG_MEMST
3bc0: 41 54 55 53 5d 0a 20 20 72 65 6c 61 74 65 64 20  ATUS].  related 
3bd0: 66 65 61 74 75 72 65 73 20 65 6e 61 62 6c 65 64  features enabled
3be0: 29 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 65 20 5b  )..  <p>.  The [
3bf0: 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75  sqlite3_memory_u
3c00: 73 65 64 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69  sed()] and [sqli
3c10: 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
3c20: 61 74 65 72 28 29 5d 20 69 6e 74 65 72 66 61 63  ater()] interfac
3c30: 65 73 2c 0a 20 20 74 68 65 20 5b 73 71 6c 69 74  es,.  the [sqlit
3c40: 65 33 5f 73 74 61 74 75 73 36 34 5d 28 5b 53 51  e3_status64]([SQ
3c50: 4c 49 54 45 5f 53 54 41 54 55 53 5f 4d 45 4d 4f  LITE_STATUS_MEMO
3c60: 52 59 5f 55 53 45 44 5d 29 20 69 6e 74 65 72 66  RY_USED]) interf
3c70: 61 63 65 2c 0a 20 20 61 6e 64 20 74 68 65 20 5b  ace,.  and the [
3c80: 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 45 4d 4f 52  SQLITE_MAX_MEMOR
3c90: 59 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  Y] compile-time 
3ca0: 6f 70 74 69 6f 6e 20 61 72 65 20 61 6c 6c 20 6e  option are all n
3cb0: 6f 6e 2d 66 75 6e 63 74 69 6f 6e 61 6c 0a 20 20  on-functional.  
3cc0: 77 68 65 6e 20 6d 65 6d 6f 72 79 20 75 73 61 67  when memory usag
3cd0: 65 20 74 72 61 63 6b 69 6e 67 20 69 73 20 64 69  e tracking is di
3ce0: 73 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  sabled..}..COMPI
3cf0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
3d00: 45 5f 44 45 46 41 55 4c 54 5f 50 43 41 43 48 45  E_DEFAULT_PCACHE
3d10: 5f 49 4e 49 54 53 5a 3d 3c 69 3e 4e 3c 2f 69 3e  _INITSZ=<i>N</i>
3d20: 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
3d30: 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   determines the 
3d40: 6e 75 6d 62 65 72 20 6f 66 20 70 61 67 65 73 20  number of pages 
3d50: 69 6e 69 74 69 61 6c 6c 79 20 61 6c 6c 6f 63 61  initially alloca
3d60: 74 65 64 20 62 79 20 74 68 65 20 0a 20 20 70 61  ted by the .  pa
3d70: 67 65 20 63 61 63 68 65 20 6d 6f 64 75 6c 65 20  ge cache module 
3d80: 77 68 65 6e 20 5b 53 51 4c 49 54 45 5f 43 4f 4e  when [SQLITE_CON
3d90: 46 49 47 5f 50 41 47 45 43 41 43 48 45 5d 20 63  FIG_PAGECACHE] c
3da0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74  onfiguration opt
3db0: 69 6f 6e 20 69 73 0a 20 20 6e 6f 74 20 75 73 65  ion is.  not use
3dc0: 20 61 6e 64 20 6d 65 6d 6f 72 79 20 66 6f 72 20   and memory for 
3dd0: 74 68 65 20 70 61 67 65 20 63 61 63 68 65 20 69  the page cache i
3de0: 73 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  s obtained from 
3df0: 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  [sqlite3_malloc(
3e00: 29 5d 0a 20 20 69 6e 73 74 65 61 64 2e 20 20 54  )].  instead.  T
3e10: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 67  he number of pag
3e20: 65 73 20 73 65 74 20 62 79 20 74 68 69 73 20 6d  es set by this m
3e30: 61 63 72 6f 20 61 72 65 20 61 6c 6c 6f 63 61 74  acro are allocat
3e40: 65 64 20 69 6e 20 61 20 73 69 6e 67 6c 65 0a 20  ed in a single. 
3e50: 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 77 68 69   allocation, whi
3e60: 63 68 20 72 65 64 75 63 65 73 20 74 68 65 20 6c  ch reduces the l
3e70: 6f 61 64 20 6f 6e 20 74 68 65 20 6d 65 6d 6f 72  oad on the memor
3e80: 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 0a 7d 0a 0a  y allocator..}..
3e90: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
3ea0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 50  SQLITE_DEFAULT_P
3eb0: 41 47 45 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b  AGE_SIZE=<i>&lt;
3ec0: 62 79 74 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b  bytes&gt;</i>} {
3ed0: 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
3ee0: 20 75 73 65 64 20 74 6f 20 73 65 74 20 74 68 65   used to set the
3ef0: 20 64 65 66 61 75 6c 74 20 70 61 67 65 2d 73 69   default page-si
3f00: 7a 65 20 75 73 65 64 20 77 68 65 6e 20 61 0a 20  ze used when a. 
3f10: 20 64 61 74 61 62 61 73 65 20 69 73 20 63 72 65   database is cre
3f20: 61 74 65 64 2e 20 54 68 65 20 76 61 6c 75 65 20  ated. The value 
3f30: 61 73 73 69 67 6e 65 64 20 6d 75 73 74 20 62 65  assigned must be
3f40: 20 61 20 70 6f 77 65 72 20 6f 66 20 32 2e 20 54   a power of 2. T
3f50: 68 65 0a 20 20 64 65 66 61 75 6c 74 20 76 61 6c  he.  default val
3f60: 75 65 20 69 73 20 34 30 39 36 2e 20 54 68 65 20  ue is 4096. The 
3f70: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 64 65 66  compile-time def
3f80: 61 75 6c 74 20 6d 61 79 20 62 65 20 6f 76 65 72  ault may be over
3f90: 72 69 64 64 65 6e 20 61 74 20 0a 20 20 72 75 6e  ridden at .  run
3fa0: 74 69 6d 65 20 62 79 20 74 68 65 20 5b 50 52 41  time by the [PRA
3fb0: 47 4d 41 20 70 61 67 65 5f 73 69 7a 65 5d 20 63  GMA page_size] c
3fc0: 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  ommand..}..COMPI
3fd0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
3fe0: 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43 48 52  E_DEFAULT_SYNCHR
3ff0: 4f 4e 4f 55 53 3d 3c 69 3e 26 6c 74 3b 30 2d 33  ONOUS=<i>&lt;0-3
4000: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
4010: 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69  is macro determi
4020: 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  nes the default 
4030: 76 61 6c 75 65 20 6f 66 20 74 68 65 0a 20 20 5b  value of the.  [
4040: 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
4050: 75 73 5d 20 73 65 74 74 69 6e 67 2e 20 20 49 66  us] setting.  If
4060: 20 6e 6f 74 20 6f 76 65 72 72 69 64 64 65 6e 20   not overridden 
4070: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c  at compile-time,
4080: 0a 20 20 74 68 65 20 64 65 66 61 75 6c 74 20 73  .  the default s
4090: 65 74 74 69 6e 67 20 69 73 20 32 20 28 46 55 4c  etting is 2 (FUL
40a0: 4c 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  L)..}..COMPILE_O
40b0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
40c0: 46 41 55 4c 54 5f 57 41 4c 5f 53 59 4e 43 48 52  FAULT_WAL_SYNCHR
40d0: 4f 4e 4f 55 53 3d 3c 69 3e 26 6c 74 3b 30 2d 33  ONOUS=<i>&lt;0-3
40e0: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
40f0: 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69  is macro determi
4100: 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  nes the default 
4110: 76 61 6c 75 65 20 6f 66 20 74 68 65 0a 20 20 5b  value of the.  [
4120: 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
4130: 75 73 5d 20 73 65 74 74 69 6e 67 20 66 6f 72 20  us] setting for 
4140: 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 74  database files t
4150: 68 61 74 20 6f 70 65 6e 20 69 6e 0a 20 20 5b 57  hat open in.  [W
4160: 41 4c 20 6d 6f 64 65 5d 2e 20 20 49 66 20 6e 6f  AL mode].  If no
4170: 74 20 6f 76 65 72 72 69 64 64 65 6e 20 61 74 20  t overridden at 
4180: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 74 68  compile-time, th
4190: 69 73 20 76 61 6c 75 65 20 69 73 20 74 68 65 0a  is value is the.
41a0: 20 20 73 61 6d 65 20 61 73 20 5b 53 51 4c 49 54    same as [SQLIT
41b0: 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43 48 52  E_DEFAULT_SYNCHR
41c0: 4f 4e 4f 55 53 5d 2e 0a 20 20 3c 70 3e 0a 20 20  ONOUS]..  <p>.  
41d0: 49 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  If SQLITE_DEFAUL
41e0: 54 5f 57 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55  T_WAL_SYNCHRONOU
41f0: 53 20 64 69 66 66 65 72 73 20 66 72 6f 6d 20 53  S differs from S
4200: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 53 59  QLITE_DEFAULT_SY
4210: 4e 43 48 52 4f 4e 4f 55 53 2c 0a 20 20 61 6e 64  NCHRONOUS,.  and
4220: 20 69 66 20 74 68 65 20 61 70 70 6c 69 63 61 74   if the applicat
4230: 69 6f 6e 20 68 61 73 20 6e 6f 74 20 6d 6f 64 69  ion has not modi
4240: 66 69 65 64 20 74 68 65 20 73 79 6e 63 68 72 6f  fied the synchro
4250: 6e 6f 75 73 20 73 65 74 74 69 6e 67 20 66 6f 72  nous setting for
4260: 0a 20 20 74 68 65 20 64 61 74 61 62 61 73 65 20  .  the database 
4270: 66 69 6c 65 20 75 73 69 6e 67 20 74 68 65 20 5b  file using the [
4280: 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
4290: 75 73 5d 20 73 74 61 74 65 6d 65 6e 74 2c 20 74  us] statement, t
42a0: 68 65 6e 0a 20 20 74 68 65 20 73 79 6e 63 68 72  hen.  the synchr
42b0: 6f 6e 6f 75 73 20 73 65 74 74 69 6e 67 20 69 73  onous setting is
42c0: 20 63 68 61 6e 67 65 64 20 74 6f 20 76 61 6c 75   changed to valu
42d0: 65 20 64 65 66 69 6e 65 64 20 62 79 0a 20 20 53  e defined by.  S
42e0: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 41  QLITE_DEFAULT_WA
42f0: 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 20 77 68  L_SYNCHRONOUS wh
4300: 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  en the database 
4310: 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 77 69 74 63  connection switc
4320: 68 65 73 0a 20 20 69 6e 74 6f 20 57 41 4c 20 6d  hes.  into WAL m
4330: 6f 64 65 20 66 6f 72 20 74 68 65 20 66 69 72 73  ode for the firs
4340: 74 20 74 69 6d 65 2e 0a 20 20 49 66 20 74 68 65  t time..  If the
4350: 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f   SQLITE_DEFAULT_
4360: 57 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 20  WAL_SYNCHRONOUS 
4370: 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 6f 76 65  value is not ove
4380: 72 72 69 64 64 65 6e 20 61 74 0a 20 20 63 6f 6d  rridden at.  com
4390: 70 69 6c 65 2d 74 69 6d 65 2c 20 74 68 65 6e 20  pile-time, then 
43a0: 69 74 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62  it will always b
43b0: 65 20 74 68 65 20 73 61 6d 65 20 61 73 0a 20 20  e the same as.  
43c0: 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  [SQLITE_DEFAULT_
43d0: 53 59 4e 43 48 52 4f 4e 4f 55 53 5d 20 61 6e 64  SYNCHRONOUS] and
43e0: 20 73 6f 20 6e 6f 20 61 75 74 6f 6d 61 74 69 63   so no automatic
43f0: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 73 65 74   synchronous set
4400: 74 69 6e 67 0a 20 20 63 68 61 6e 67 65 73 20 77  ting.  changes w
4410: 69 6c 6c 20 65 76 65 72 20 6f 63 63 75 72 2e 0a  ill ever occur..
4420: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
4430: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
4440: 54 5f 57 41 4c 5f 41 55 54 4f 43 48 45 43 4b 50  T_WAL_AUTOCHECKP
4450: 4f 49 4e 54 3d 3c 69 3e 26 6c 74 3b 70 61 67 65  OINT=<i>&lt;page
4460: 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  s&gt;</i>} {.  T
4470: 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74  his macro sets t
4480: 68 65 20 64 65 66 61 75 6c 74 20 70 61 67 65 20  he default page 
4490: 63 6f 75 6e 74 20 66 6f 72 20 74 68 65 20 5b 57  count for the [W
44a0: 41 4c 5d 0a 20 20 5b 63 68 65 63 6b 70 6f 69 6e  AL].  [checkpoin
44b0: 74 69 6e 67 20 7c 20 61 75 74 6f 6d 61 74 69 63  ting | automatic
44c0: 20 63 68 65 63 6b 70 6f 69 6e 74 69 6e 67 5d 20   checkpointing] 
44d0: 66 65 61 74 75 72 65 2e 20 20 49 66 20 75 6e 73  feature.  If uns
44e0: 70 65 63 69 66 69 65 64 2c 0a 20 20 74 68 65 20  pecified,.  the 
44f0: 64 65 66 61 75 6c 74 20 70 61 67 65 20 63 6f 75  default page cou
4500: 6e 74 20 69 73 20 31 30 30 30 2e 0a 7d 0a 0a 43  nt is 1000..}..C
4510: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
4520: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 4f  QLITE_DEFAULT_WO
4530: 52 4b 45 52 5f 54 48 52 45 41 44 53 3d 3c 69 3e  RKER_THREADS=<i>
4540: 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  N</i>} {.  This 
4550: 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 64  macro sets the d
4560: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72  efault value for
4570: 0a 20 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c  .  the [SQLITE_L
4580: 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45  IMIT_WORKER_THRE
4590: 41 44 53 5d 20 70 61 72 61 6d 65 74 65 72 2e 20  ADS] parameter. 
45a0: 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 4c 49 4d   The [SQLITE_LIM
45b0: 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  IT_WORKER_THREAD
45c0: 53 5d 0a 20 20 70 61 72 61 6d 65 74 65 72 20 73  S].  parameter s
45d0: 65 74 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ets the maximum 
45e0: 6e 75 6d 62 65 72 20 6f 66 20 61 75 78 69 6c 69  number of auxili
45f0: 61 72 79 20 74 68 72 65 61 64 73 20 74 68 61 74  ary threads that
4600: 20 61 20 73 69 6e 67 6c 65 0a 20 20 5b 70 72 65   a single.  [pre
4610: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
4620: 20 77 69 6c 6c 20 6c 61 75 6e 63 68 20 74 6f 20   will launch to 
4630: 61 73 73 69 73 74 20 69 74 20 77 69 74 68 20 61  assist it with a
4640: 20 71 75 65 72 79 2e 20 20 49 66 20 6e 6f 74 20   query.  If not 
4650: 73 70 65 63 69 66 69 65 64 2c 0a 20 20 74 68 65  specified,.  the
4660: 20 64 65 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d   default maximum
4670: 20 69 73 20 30 2e 0a 20 20 54 68 65 20 76 61 6c   is 0..  The val
4680: 75 65 20 73 65 74 20 68 65 72 65 20 63 61 6e 6e  ue set here cann
4690: 6f 74 20 62 65 20 6d 6f 72 65 20 74 68 61 6e 20  ot be more than 
46a0: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 57 4f 52 4b  [SQLITE_MAX_WORK
46b0: 45 52 5f 54 48 52 45 41 44 53 5d 2e 0a 7d 0a 0a  ER_THREADS]..}..
46c0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
46d0: 53 51 4c 49 54 45 5f 45 58 54 52 41 5f 44 55 52  SQLITE_EXTRA_DUR
46e0: 41 42 4c 45 7d 20 7b 0a 20 20 54 68 65 20 53 51  ABLE} {.  The SQ
46f0: 4c 49 54 45 5f 45 58 54 52 41 5f 44 55 52 41 42  LITE_EXTRA_DURAB
4700: 4c 45 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  LE compile-time 
4710: 6f 70 74 69 6f 6e 20 74 68 61 74 20 75 73 65 64  option that used
4720: 20 74 6f 20 63 61 75 73 65 20 74 68 65 20 64 65   to cause the de
4730: 66 61 75 6c 74 0a 20 20 5b 50 52 41 47 4d 41 20  fault.  [PRAGMA 
4740: 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 20 73 65 74  synchronous] set
4750: 74 69 6e 67 20 74 6f 20 62 65 20 45 58 54 52 41  ting to be EXTRA
4760: 2c 20 72 61 74 68 65 72 20 74 68 61 6e 20 46 55  , rather than FU
4770: 4c 4c 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  LL.  This option
4780: 0a 20 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20  .  is no longer 
4790: 73 75 70 70 6f 72 74 65 64 2e 20 20 55 73 65 0a  supported.  Use.
47a0: 20 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c    [SQLITE_DEFAUL
47b0: 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 7c 53 51  T_SYNCHRONOUS|SQ
47c0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e  LITE_DEFAULT_SYN
47d0: 43 48 52 4f 4e 4f 55 53 3d 33 5d 20 69 6e 73 74  CHRONOUS=3] inst
47e0: 65 61 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ead..}..COMPILE_
47f0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 46  OPTION {SQLITE_F
4800: 54 53 33 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50  TS3_MAX_EXPR_DEP
4810: 54 48 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20  TH=<i>N</i>} {. 
4820: 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73   This macro sets
4830: 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70   the maximum dep
4840: 74 68 20 6f 66 20 74 68 65 20 73 65 61 72 63 68  th of the search
4850: 20 74 72 65 65 20 74 68 61 74 20 63 6f 72 72 65   tree that corre
4860: 73 70 6f 6e 64 73 20 74 6f 0a 20 20 74 68 65 20  sponds to.  the 
4870: 72 69 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20  right-hand side 
4880: 6f 66 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65  of the MATCH ope
4890: 72 61 74 6f 72 20 69 6e 20 61 6e 20 5b 46 54 53  rator in an [FTS
48a0: 33 5d 20 6f 72 20 5b 46 54 53 34 5d 20 66 75 6c  3] or [FTS4] ful
48b0: 6c 2d 74 65 78 74 0a 20 20 69 6e 64 65 78 2e 20  l-text.  index. 
48c0: 20 54 68 65 20 66 75 6c 6c 2d 74 65 78 74 20 73   The full-text s
48d0: 65 61 72 63 68 20 75 73 65 73 20 61 20 72 65 63  earch uses a rec
48e0: 75 72 73 69 76 65 20 61 6c 67 6f 72 69 74 68 6d  ursive algorithm
48f0: 2c 20 73 6f 20 74 68 65 20 64 65 70 74 68 20 6f  , so the depth o
4900: 66 0a 20 20 74 68 65 20 74 72 65 65 20 69 73 20  f.  the tree is 
4910: 6c 69 6d 69 74 65 64 20 74 6f 20 70 72 65 76 65  limited to preve
4920: 6e 74 20 75 73 69 6e 67 20 74 6f 6f 20 6d 75 63  nt using too muc
4930: 68 20 73 74 61 63 6b 20 73 70 61 63 65 2e 20 20  h stack space.  
4940: 54 68 65 20 64 65 66 61 75 6c 74 0a 20 20 6c 69  The default.  li
4950: 6d 69 74 20 69 73 20 31 32 2e 20 20 54 68 69 73  mit is 12.  This
4960: 20 6c 69 6d 69 74 20 69 73 20 73 75 66 66 69 63   limit is suffic
4970: 69 65 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34  ient for up to 4
4980: 30 39 35 20 73 65 61 72 63 68 20 74 65 72 6d 73  095 search terms
4990: 20 6f 6e 20 74 68 65 0a 20 20 72 69 67 68 74 2d   on the.  right-
49a0: 68 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65  hand side of the
49b0: 20 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72 20   MATCH operator 
49c0: 61 6e 64 20 69 74 20 68 6f 6c 64 73 20 73 74 61  and it holds sta
49d0: 63 6b 20 73 70 61 63 65 20 75 73 61 67 65 20 74  ck space usage t
49e0: 6f 20 0a 20 20 6c 65 73 73 20 74 68 61 6e 20 32  o .  less than 2
49f0: 30 30 30 20 62 79 74 65 73 2e 0a 20 20 3c 70 3e  000 bytes..  <p>
4a00: 0a 20 20 46 6f 72 20 6f 72 64 69 6e 61 72 79 20  .  For ordinary 
4a10: 46 54 53 33 2f 46 54 53 34 20 71 75 65 72 69 65  FTS3/FTS4 querie
4a20: 73 2c 20 74 68 65 20 73 65 61 72 63 68 20 74 72  s, the search tr
4a30: 65 65 20 64 65 70 74 68 20 69 73 20 61 70 70 72  ee depth is appr
4a40: 6f 78 69 6d 61 74 65 6c 79 0a 20 20 74 68 65 20  oximately.  the 
4a50: 62 61 73 65 2d 32 20 6c 6f 67 61 72 69 74 68 6d  base-2 logarithm
4a60: 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   of the number o
4a70: 66 20 74 65 72 6d 73 20 69 6e 20 74 68 65 20 72  f terms in the r
4a80: 69 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f  ight-hand side o
4a90: 66 20 74 68 65 0a 20 20 4d 41 54 43 48 20 6f 70  f the.  MATCH op
4aa0: 65 72 61 74 6f 72 2e 20 20 48 6f 77 65 76 65 72  erator.  However
4ab0: 2c 20 66 6f 72 20 5b 70 68 72 61 73 65 20 71 75  , for [phrase qu
4ac0: 65 72 69 65 73 5d 20 61 6e 64 20 5b 4e 45 41 52  eries] and [NEAR
4ad0: 20 71 75 65 72 69 65 73 5d 20 74 68 65 0a 20 20   queries] the.  
4ae0: 73 65 61 72 63 68 20 74 72 65 65 20 64 65 70 74  search tree dept
4af0: 68 20 69 73 20 6c 69 6e 65 61 72 20 69 6e 20 74  h is linear in t
4b00: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 69 67  he number of rig
4b10: 68 74 2d 68 61 6e 64 20 73 69 64 65 20 74 65 72  ht-hand side ter
4b20: 6d 73 2e 0a 20 20 53 6f 20 74 68 65 20 64 65 66  ms..  So the def
4b30: 61 75 6c 74 20 64 65 70 74 68 20 6c 69 6d 69 74  ault depth limit
4b40: 20 6f 66 20 31 32 20 69 73 20 73 75 66 66 69 63   of 12 is suffic
4b50: 69 65 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34  ient for up to 4
4b60: 30 39 35 20 6f 72 64 69 6e 61 72 79 0a 20 20 74  095 ordinary.  t
4b70: 65 72 6d 73 20 6f 6e 20 61 20 4d 41 54 43 48 2c  erms on a MATCH,
4b80: 20 69 74 20 69 73 20 6f 6e 6c 79 20 73 75 66 66   it is only suff
4b90: 69 63 69 65 6e 74 20 66 6f 72 20 31 31 20 6f 72  icient for 11 or
4ba0: 20 31 32 20 70 68 72 61 73 65 20 6f 72 20 4e 45   12 phrase or NE
4bb0: 41 52 0a 20 20 74 65 72 6d 73 2e 20 20 45 76 65  AR.  terms.  Eve
4bc0: 6e 20 73 6f 2c 20 74 68 65 20 64 65 66 61 75 6c  n so, the defaul
4bd0: 74 20 69 73 20 6d 6f 72 65 20 74 68 61 6e 20 65  t is more than e
4be0: 6e 6f 75 67 68 20 66 6f 72 20 6d 6f 73 74 20 61  nough for most a
4bf0: 70 70 6c 69 63 61 74 69 6f 6e 2e 0a 7d 0a 0a 43  pplication..}..C
4c00: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
4c10: 51 4c 49 54 45 5f 4c 49 4b 45 5f 44 4f 45 53 4e  QLITE_LIKE_DOESN
4c20: 54 5f 4d 41 54 43 48 5f 42 4c 4f 42 53 7d 20 7b  T_MATCH_BLOBS} {
4c30: 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d  .  This compile-
4c40: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63 61 75 73  time option caus
4c50: 65 73 20 74 68 65 20 5b 4c 49 4b 45 5d 20 6f 70  es the [LIKE] op
4c60: 65 72 61 74 6f 72 20 74 6f 20 61 6c 77 61 79 73  erator to always
4c70: 20 72 65 74 75 72 6e 20 0a 20 20 46 61 6c 73 65   return .  False
4c80: 20 69 66 20 65 69 74 68 65 72 20 6f 70 65 72 61   if either opera
4c90: 6e 64 20 69 73 20 61 20 42 4c 4f 42 2e 20 20 54  nd is a BLOB.  T
4ca0: 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76  he default behav
4cb0: 69 6f 72 20 6f 66 20 5b 4c 49 4b 45 5d 20 0a 20  ior of [LIKE] . 
4cc0: 20 69 73 20 74 68 61 74 20 42 4c 4f 42 20 6f 70   is that BLOB op
4cd0: 65 72 61 6e 64 73 20 61 72 65 20 63 61 73 74 20  erands are cast 
4ce0: 74 6f 20 54 45 58 54 20 62 65 66 6f 72 65 20 74  to TEXT before t
4cf0: 68 65 20 63 6f 6d 70 61 72 69 73 6f 6e 20 69 73  he comparison is
4d00: 20 64 6f 6e 65 2e 0a 20 20 3c 70 3e 0a 20 20 54   done..  <p>.  T
4d10: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
4d20: 20 6f 70 74 69 6f 6e 20 6d 61 6b 65 73 20 53 51   option makes SQ
4d30: 4c 69 74 65 20 72 75 6e 20 6d 6f 72 65 20 65 66  Lite run more ef
4d40: 66 69 63 69 65 6e 74 6c 79 20 77 68 65 6e 20 70  ficiently when p
4d50: 72 6f 63 65 73 73 69 6e 67 0a 20 20 71 75 65 72  rocessing.  quer
4d60: 69 65 73 20 74 68 61 74 20 75 73 65 20 74 68 65  ies that use the
4d70: 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72   [LIKE] operator
4d80: 2c 20 61 74 20 74 68 65 20 65 78 70 65 6e 73 65  , at the expense
4d90: 20 6f 66 20 62 72 65 61 6b 69 6e 67 20 62 61 63   of breaking bac
4da0: 6b 77 61 72 64 73 0a 20 20 63 6f 6d 70 61 74 69  kwards.  compati
4db0: 62 69 6c 69 74 79 2e 20 20 48 6f 77 65 76 65 72  bility.  However
4dc0: 2c 20 74 68 65 20 62 61 63 6b 77 61 72 64 73 20  , the backwards 
4dd0: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 62 72  compatibility br
4de0: 65 61 6b 20 6d 61 79 20 62 65 20 6f 6e 6c 79 0a  eak may be only.
4df0: 20 20 61 20 74 65 63 68 6e 69 63 61 6c 69 74 79    a technicality
4e00: 2e 20 20 54 68 65 72 65 20 77 61 73 20 61 20 6c  .  There was a l
4e10: 6f 6e 67 2d 73 74 61 6e 64 69 6e 67 20 62 75 67  ong-standing bug
4e20: 20 69 6e 20 74 68 65 20 5b 4c 49 4b 45 5d 20 70   in the [LIKE] p
4e30: 72 6f 63 65 73 73 69 6e 67 20 6c 6f 67 69 63 0a  rocessing logic.
4e40: 20 20 28 73 65 65 20 5b 68 74 74 70 73 3a 2f 2f    (see [https://
4e50: 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 73  www.sqlite.org/s
4e60: 72 63 2f 69 6e 66 6f 2f 30 35 66 34 33 62 65 38  rc/info/05f43be8
4e70: 66 64 64 61 39 66 5d 29 20 74 68 61 74 20 63 61  fdda9f]) that ca
4e80: 75 73 65 64 20 69 74 20 74 6f 0a 20 20 6d 69 73  used it to.  mis
4e90: 62 65 68 61 76 69 6f 72 20 66 6f 72 20 42 4c 4f  behavior for BLO
4ea0: 42 20 6f 70 65 72 61 6e 64 73 20 61 6e 64 20 6e  B operands and n
4eb0: 6f 62 6f 64 79 20 6f 62 73 65 72 76 65 64 20 74  obody observed t
4ec0: 68 61 74 20 62 75 67 20 69 6e 20 6e 65 61 72 6c  hat bug in nearl
4ed0: 79 0a 20 20 31 30 20 79 65 61 72 73 20 6f 66 20  y.  10 years of 
4ee0: 61 63 74 69 76 65 20 75 73 65 2e 20 20 53 6f 20  active use.  So 
4ef0: 66 6f 72 20 6d 6f 72 65 20 75 73 65 72 73 2c 20  for more users, 
4f00: 69 74 20 69 73 20 70 72 6f 62 61 62 6c 79 20 73  it is probably s
4f10: 61 66 65 20 74 6f 0a 20 20 65 6e 61 62 6c 65 20  afe to.  enable 
4f20: 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  this compile-tim
4f30: 65 20 6f 70 74 69 6f 6e 20 61 6e 64 20 74 68 65  e option and the
4f40: 72 65 62 79 20 73 61 76 65 20 61 20 6c 69 74 74  reby save a litt
4f50: 6c 65 20 43 50 55 20 74 69 6d 65 0a 20 20 6f 6e  le CPU time.  on
4f60: 20 4c 49 4b 45 20 71 75 65 72 69 65 73 2e 0a 20   LIKE queries.. 
4f70: 20 3c 70 3e 0a 20 20 54 68 69 73 20 63 6f 6d 70   <p>.  This comp
4f80: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
4f90: 61 66 66 65 63 74 73 20 74 68 65 20 53 51 4c 20  affects the SQL 
4fa0: 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 20  [LIKE] operator 
4fb0: 6f 6e 6c 79 20 61 6e 64 20 68 61 73 0a 20 20 6e  only and has.  n
4fc0: 6f 20 69 6d 70 61 63 74 20 6f 6e 20 74 68 65 20  o impact on the 
4fd0: 5b 73 71 6c 69 74 65 33 5f 73 74 72 6c 69 6b 65  [sqlite3_strlike
4fe0: 28 29 5d 20 43 2d 6c 61 6e 67 75 61 67 65 20 69  ()] C-language i
4ff0: 6e 74 65 72 66 61 63 65 2e 0a 7d 0a 0a 43 4f 4d  nterface..}..COM
5000: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
5010: 49 54 45 5f 4d 41 58 5f 4d 45 4d 4f 52 59 3d 3c  ITE_MAX_MEMORY=<
5020: 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  i>N</i>} {.  Thi
5030: 73 20 6f 70 74 69 6f 6e 20 6c 69 6d 69 74 73 20  s option limits 
5040: 74 68 65 20 74 6f 74 61 6c 20 61 6d 6f 75 6e 74  the total amount
5050: 20 6f 66 20 6d 65 6d 6f 72 79 20 74 68 61 74 20   of memory that 
5060: 53 51 4c 69 74 65 20 77 69 6c 6c 20 72 65 71 75  SQLite will requ
5070: 65 73 74 0a 20 20 66 72 6f 6d 20 6d 61 6c 6c 6f  est.  from mallo
5080: 63 28 29 20 74 6f 20 3c 69 3e 4e 3c 2f 69 3e 20  c() to <i>N</i> 
5090: 62 79 74 65 73 2e 20 20 41 6e 79 20 61 74 74 65  bytes.  Any atte
50a0: 6d 70 74 20 62 79 20 53 51 4c 69 74 65 20 74 6f  mpt by SQLite to
50b0: 20 61 6c 6c 6f 63 61 74 65 0a 20 20 6e 65 77 20   allocate.  new 
50c0: 6d 65 6d 6f 72 79 20 74 68 61 74 20 77 6f 75 6c  memory that woul
50d0: 64 20 63 61 75 73 65 20 74 68 65 20 73 75 6d 20  d cause the sum 
50e0: 6f 66 20 61 6c 6c 20 61 6c 6c 6f 63 61 74 69 6f  of all allocatio
50f0: 6e 73 20 68 65 6c 64 20 62 79 20 53 51 4c 69 74  ns held by SQLit
5100: 65 20 74 6f 20 65 78 63 65 65 64 0a 20 20 3c 69  e to exceed.  <i
5110: 3e 4e 3c 2f 69 3e 20 62 79 74 65 73 20 77 69 6c  >N</i> bytes wil
5120: 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20 6f  l result in an o
5130: 75 74 2d 6f 66 2d 6d 65 6d 6f 72 79 20 65 72 72  ut-of-memory err
5140: 6f 72 2e 0a 20 20 54 68 69 73 20 69 73 20 61 20  or..  This is a 
5150: 68 61 72 64 20 75 70 70 65 72 20 6c 69 6d 69 74  hard upper limit
5160: 2e 20 20 53 65 65 20 61 6c 73 6f 20 74 68 65 20  .  See also the 
5170: 5b 73 71 6c 69 74 65 33 5f 73 6f 66 74 5f 68 65  [sqlite3_soft_he
5180: 61 70 5f 6c 69 6d 69 74 28 29 5d 0a 20 20 69 6e  ap_limit()].  in
5190: 74 65 72 66 61 63 65 2e 0a 20 20 3c 70 3e 0a 20  terface..  <p>. 
51a0: 20 54 68 69 73 20 6c 69 6d 69 74 20 69 73 20 6f   This limit is o
51b0: 6e 6c 79 20 66 75 6e 63 74 69 6f 6e 61 6c 20 69  nly functional i
51c0: 66 20 6d 65 6d 6f 72 79 20 75 73 61 67 65 20 73  f memory usage s
51d0: 74 61 74 69 73 74 69 63 73 20 61 72 65 20 61 76  tatistics are av
51e0: 61 69 6c 61 62 6c 65 20 76 69 61 0a 20 20 74 68  ailable via.  th
51f0: 65 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  e [sqlite3_memor
5200: 79 5f 75 73 65 64 28 29 5d 20 61 6e 64 20 5b 73  y_used()] and [s
5210: 71 6c 69 74 65 33 5f 73 74 61 74 75 73 36 34 5d  qlite3_status64]
5220: 28 5b 53 51 4c 49 54 45 5f 53 54 41 54 55 53 5f  ([SQLITE_STATUS_
5230: 4d 45 4d 4f 52 59 5f 55 53 45 44 5d 29 0a 20 20  MEMORY_USED]).  
5240: 69 6e 74 65 72 66 61 63 65 73 2e 20 20 57 69 74  interfaces.  Wit
5250: 68 6f 75 74 20 74 68 61 74 20 6d 65 6d 6f 72 79  hout that memory
5260: 20 75 73 61 67 65 20 69 6e 66 6f 72 6d 61 74 69   usage informati
5270: 6f 6e 2c 20 53 51 4c 69 74 65 20 68 61 73 20 6e  on, SQLite has n
5280: 6f 20 77 61 79 20 6f 66 0a 20 20 6b 6e 6f 77 69  o way of.  knowi
5290: 6e 67 20 77 68 65 6e 20 69 74 20 69 73 20 61 62  ng when it is ab
52a0: 6f 75 74 20 74 6f 20 67 6f 20 6f 76 65 72 20 74  out to go over t
52b0: 68 65 20 6c 69 6d 69 74 2c 20 61 6e 64 20 74 68  he limit, and th
52c0: 75 73 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20  us is unable to 
52d0: 70 72 65 76 65 6e 74 0a 20 20 74 68 65 20 65 78  prevent.  the ex
52e0: 63 65 73 73 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  cess memory allo
52f0: 63 61 74 69 6f 6e 2e 20 20 4d 65 6d 6f 72 79 20  cation.  Memory 
5300: 75 73 61 67 65 20 74 72 61 63 6b 69 6e 67 20 69  usage tracking i
5310: 73 20 74 75 72 6e 65 64 20 6f 6e 20 62 79 20 64  s turned on by d
5320: 65 66 61 75 6c 74 2c 0a 20 20 62 75 74 20 63 61  efault,.  but ca
5330: 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 61 74  n be disabled at
5340: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 75 73   compile-time us
5350: 69 6e 67 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  ing the [SQLITE_
5360: 44 45 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54 55  DEFAULT_MEMSTATU
5370: 53 5d 20 6f 70 74 69 6f 6e 2c 0a 20 20 6f 72 20  S] option,.  or 
5380: 61 74 20 73 74 61 72 74 2d 74 69 6d 65 20 75 73  at start-time us
5390: 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  ing [sqlite3_con
53a0: 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e  fig]([SQLITE_CON
53b0: 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 29 2e  FIG_MEMSTATUS]).
53c0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
53d0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 41 58 5f 4d  ON {SQLITE_MAX_M
53e0: 4d 41 50 5f 53 49 5a 45 3d 3c 69 3e 4e 3c 2f 69  MAP_SIZE=<i>N</i
53f0: 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  >} {.  This macr
5400: 6f 20 73 65 74 73 20 61 20 68 61 72 64 20 75 70  o sets a hard up
5410: 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65  per bound on the
5420: 20 61 6d 6f 75 6e 74 20 6f 66 20 61 64 64 72 65   amount of addre
5430: 73 73 20 73 70 61 63 65 20 74 68 61 74 0a 20 20  ss space that.  
5440: 63 61 6e 20 62 65 20 75 73 65 64 20 62 79 20 61  can be used by a
5450: 6e 79 20 73 69 6e 67 6c 65 20 64 61 74 61 62 61  ny single databa
5460: 73 65 20 66 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61  se for memory-ma
5470: 70 70 65 64 20 49 2f 4f 2e 0a 20 20 53 65 74 74  pped I/O..  Sett
5480: 69 6e 67 20 74 68 69 73 20 76 61 6c 75 65 20 74  ing this value t
5490: 6f 20 30 20 63 6f 6d 70 6c 65 74 65 6c 79 20 64  o 0 completely d
54a0: 69 73 61 62 6c 65 73 20 6d 65 6d 6f 72 79 2d 6d  isables memory-m
54b0: 61 70 70 65 64 20 49 2f 4f 20 61 6e 64 0a 20 20  apped I/O and.  
54c0: 63 61 75 73 65 73 20 6c 6f 67 69 63 20 61 73 73  causes logic ass
54d0: 6f 63 69 61 74 65 64 20 77 69 74 68 20 6d 65 6d  ociated with mem
54e0: 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20 74  ory-mapped I/O t
54f0: 6f 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f  o be omitted fro
5500: 6d 20 74 68 65 0a 20 20 62 75 69 6c 64 2e 20 20  m the.  build.  
5510: 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 6f 65 73  This option does
5520: 20 63 68 61 6e 67 65 20 74 68 65 20 64 65 66 61   change the defa
5530: 75 6c 74 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65  ult memory-mappe
5540: 64 20 49 2f 4f 20 61 64 64 72 65 73 73 0a 20 20  d I/O address.  
5550: 73 70 61 63 65 20 73 69 7a 65 20 28 73 65 74 20  space size (set 
5560: 62 79 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55  by [SQLITE_DEFAU
5570: 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 6f 72  LT_MMAP_SIZE] or
5580: 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  .  sqlite3_confi
5590: 67 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  g([SQLITE_CONFIG
55a0: 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 6f 72 20  _MMAP_SIZE]) or 
55b0: 74 68 65 0a 20 20 72 75 6e 2d 74 69 6d 65 20 6d  the.  run-time m
55c0: 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f  emory-mapped I/O
55d0: 20 61 64 64 72 65 73 73 20 73 70 61 63 65 20 73   address space s
55e0: 69 7a 65 20 28 73 65 74 20 62 79 0a 20 20 73 71  ize (set by.  sq
55f0: 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72  lite3_file_contr
5600: 6f 6c 28 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ol([SQLITE_FCNTL
5610: 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 6f 72 0a  _MMAP_SIZE]) or.
5620: 20 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70 5f 73    [PRAGMA mmap_s
5630: 69 7a 65 5d 29 20 61 73 20 6c 6f 6e 67 20 61 73  ize]) as long as
5640: 20 74 68 6f 73 65 20 6f 74 68 65 72 20 73 65 74   those other set
5650: 74 69 6e 67 73 20 61 72 65 20 6c 65 73 73 20 74  tings are less t
5660: 68 61 6e 20 74 68 65 0a 20 20 6d 61 78 69 6d 75  han the.  maximu
5670: 6d 20 76 61 6c 75 65 20 64 65 66 69 6e 65 64 20  m value defined 
5680: 68 65 72 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  here..}..COMPILE
5690: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
56a0: 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45 54 52 59  MAX_SCHEMA_RETRY
56b0: 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 57  =<i>N</i>} {.  W
56c0: 68 65 6e 65 76 65 72 20 74 68 65 20 64 61 74 61  henever the data
56d0: 62 61 73 65 20 73 63 68 65 6d 61 20 63 68 61 6e  base schema chan
56e0: 67 65 73 2c 20 70 72 65 70 61 72 65 64 20 73 74  ges, prepared st
56f0: 61 74 65 6d 65 6e 74 73 20 61 72 65 20 61 75 74  atements are aut
5700: 6f 6d 61 74 69 63 61 6c 6c 79 0a 20 20 72 65 70  omatically.  rep
5710: 72 65 70 61 72 65 64 20 74 6f 20 61 63 63 6f 6d  repared to accom
5720: 6d 6f 64 61 74 65 20 74 68 65 20 6e 65 77 20 73  modate the new s
5730: 63 68 65 6d 61 2e 20 20 54 68 65 72 65 20 69 73  chema.  There is
5740: 20 61 20 72 61 63 65 20 63 6f 6e 64 69 74 69 6f   a race conditio
5750: 6e 20 68 65 72 65 0a 20 20 69 6e 20 74 68 61 74  n here.  in that
5760: 20 69 66 20 6f 6e 65 20 74 68 72 65 61 64 20 69   if one thread i
5770: 73 20 63 6f 6e 73 74 61 6e 74 6c 79 20 63 68 61  s constantly cha
5780: 6e 67 69 6e 67 20 74 68 65 20 73 63 68 65 6d 61  nging the schema
5790: 2c 20 61 6e 6f 74 68 65 72 20 74 68 72 65 61 64  , another thread
57a0: 0a 20 20 6d 69 67 68 74 20 73 70 69 6e 20 6f 6e  .  might spin on
57b0: 20 72 65 70 61 72 73 65 73 20 61 6e 64 20 72 65   reparses and re
57c0: 70 72 65 70 61 72 61 74 69 6f 6e 73 20 6f 66 20  preparations of 
57d0: 61 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  a prepared state
57e0: 6d 65 6e 74 20 61 6e 64 0a 20 20 6e 65 76 65 72  ment and.  never
57f0: 20 67 65 74 20 61 6e 79 20 72 65 61 6c 20 77 6f   get any real wo
5800: 72 6b 20 64 6f 6e 65 2e 20 20 54 68 69 73 20 70  rk done.  This p
5810: 61 72 61 6d 65 74 65 72 20 70 72 65 76 65 6e 74  arameter prevent
5820: 73 20 61 6e 20 69 6e 66 69 6e 69 74 65 20 6c 6f  s an infinite lo
5830: 6f 70 0a 20 20 62 79 20 66 6f 72 63 69 6e 67 20  op.  by forcing 
5840: 74 68 65 20 73 70 69 6e 6e 69 6e 67 20 74 68 72  the spinning thr
5850: 65 61 64 20 74 6f 20 67 69 76 65 20 75 70 20 61  ead to give up a
5860: 66 74 65 72 20 61 20 66 69 78 65 64 20 6e 75 6d  fter a fixed num
5870: 62 65 72 20 6f 66 20 61 74 74 65 6d 70 74 73 0a  ber of attempts.
5880: 20 20 61 74 20 72 65 63 6f 6d 70 69 6c 69 6e 67    at recompiling
5890: 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74   the prepared st
58a0: 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 64 65  atement.  The de
58b0: 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 69 73  fault setting is
58c0: 20 35 30 20 77 68 69 63 68 20 69 73 0a 20 20 6d   50 which is.  m
58d0: 6f 72 65 20 74 68 61 6e 20 61 64 65 71 75 61 74  ore than adequat
58e0: 65 20 66 6f 72 20 6d 6f 73 74 20 61 70 70 6c 69  e for most appli
58f0: 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50  cations..}..COMP
5900: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
5910: 54 45 5f 4d 41 58 5f 57 4f 52 4b 45 52 5f 54 48  TE_MAX_WORKER_TH
5920: 52 45 41 44 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20  READS=<i>N</i>} 
5930: 7b 0a 20 20 53 65 74 20 61 6e 20 75 70 70 65 72  {.  Set an upper
5940: 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65 20 5b 73   bound on the [s
5950: 71 6c 69 74 65 33 5f 6c 69 6d 69 74 5d 28 64 62  qlite3_limit](db
5960: 2c 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57  ,[SQLITE_LIMIT_W
5970: 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 5d 2c 4e  ORKER_THREADS],N
5980: 29 0a 20 20 73 65 74 74 69 6e 67 20 74 68 61 74  ).  setting that
5990: 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   determines the 
59a0: 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f  maximum number o
59b0: 66 20 61 75 78 69 6c 69 61 72 79 20 74 68 72 65  f auxiliary thre
59c0: 61 64 73 20 74 68 61 74 20 61 20 73 69 6e 67 6c  ads that a singl
59d0: 65 0a 20 20 5b 70 72 65 70 61 72 65 64 20 73 74  e.  [prepared st
59e0: 61 74 65 6d 65 6e 74 5d 20 77 69 6c 6c 20 75 73  atement] will us
59f0: 65 20 74 6f 20 61 69 64 20 77 69 74 68 20 43 50  e to aid with CP
5a00: 55 2d 69 6e 74 65 6e 73 69 76 65 20 63 6f 6d 70  U-intensive comp
5a10: 75 74 61 74 69 6f 6e 73 0a 20 20 28 6d 6f 73 74  utations.  (most
5a20: 6c 79 20 73 6f 72 74 69 6e 67 29 2e 20 20 53 65  ly sorting).  Se
5a30: 65 20 61 6c 73 6f 20 74 68 65 20 5b 53 51 4c 49  e also the [SQLI
5a40: 54 45 5f 44 45 46 41 55 4c 54 5f 57 4f 52 4b 45  TE_DEFAULT_WORKE
5a50: 52 5f 54 48 52 45 41 44 53 5d 20 6f 70 74 69 6f  R_THREADS] optio
5a60: 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ns..}..COMPILE_O
5a70: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 49  PTION {SQLITE_MI
5a80: 4e 49 4d 55 4d 5f 46 49 4c 45 5f 44 45 53 43 52  NIMUM_FILE_DESCR
5a90: 49 50 54 4f 52 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20  IPTOR=<i>N</i>} 
5aa0: 7b 0a 20 20 54 68 65 20 75 6e 69 78 20 5b 56 46  {.  The unix [VF
5ab0: 53 5d 20 77 69 6c 6c 20 6e 65 76 65 72 20 75 73  S] will never us
5ac0: 65 20 61 20 66 69 6c 65 20 64 65 73 63 72 69 70  e a file descrip
5ad0: 74 6f 72 20 6c 65 73 73 20 74 68 61 6e 20 3c 69  tor less than <i
5ae0: 3e 4e 3c 2f 69 3e 2e 20 20 54 68 65 0a 20 20 64  >N</i>.  The.  d
5af0: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 66 20  efault value of 
5b00: 3c 69 3e 4e 3c 2f 69 3e 20 69 73 20 33 2e 0a 20  <i>N</i> is 3.. 
5b10: 20 3c 70 3e 0a 20 20 41 76 6f 69 64 69 6e 67 20   <p>.  Avoiding 
5b20: 74 68 65 20 75 73 65 20 6f 66 20 6c 6f 77 2d 6e  the use of low-n
5b30: 75 6d 62 65 72 65 64 20 66 69 6c 65 20 64 65 73  umbered file des
5b40: 63 72 69 70 74 6f 72 73 20 69 73 20 61 20 64 65  criptors is a de
5b50: 66 65 6e 73 65 20 61 67 61 69 6e 73 74 0a 20 20  fense against.  
5b60: 61 63 63 69 64 65 6e 74 61 6c 20 64 61 74 61 62  accidental datab
5b70: 61 73 65 20 63 6f 72 72 75 70 74 69 6f 6e 2e 20  ase corruption. 
5b80: 20 49 66 20 61 20 64 61 74 61 62 61 73 65 20 66   If a database f
5b90: 69 6c 65 20 77 61 73 20 6f 70 65 6e 65 64 20 75  ile was opened u
5ba0: 73 69 6e 67 0a 20 20 66 69 6c 65 20 64 65 73 63  sing.  file desc
5bb0: 72 69 70 74 6f 72 20 32 2c 20 66 6f 72 20 65 78  riptor 2, for ex
5bc0: 61 6d 70 6c 65 2c 20 61 6e 64 20 74 68 65 6e 20  ample, and then 
5bd0: 61 6e 20 61 73 73 65 72 74 28 29 20 66 61 69 6c  an assert() fail
5be0: 65 64 20 61 6e 64 20 69 6e 76 6f 6b 65 64 0a 20  ed and invoked. 
5bf0: 20 77 72 69 74 65 28 32 2c 2e 2e 2e 29 2c 20 74   write(2,...), t
5c00: 68 61 74 20 77 6f 75 6c 64 20 6c 69 6b 65 6c 79  hat would likely
5c10: 20 63 61 75 73 65 20 64 61 74 61 62 61 73 65 20   cause database 
5c20: 63 6f 72 72 75 70 74 69 6f 6e 20 62 79 20 6f 76  corruption by ov
5c30: 65 72 77 72 69 74 69 6e 67 0a 20 20 70 61 72 74  erwriting.  part
5c40: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
5c50: 20 66 69 6c 65 20 77 69 74 68 20 74 68 65 20 61   file with the a
5c60: 73 73 65 72 74 69 6f 6e 20 65 72 72 6f 72 20 6d  ssertion error m
5c70: 65 73 73 61 67 65 2e 20 20 55 73 69 6e 67 20 6f  essage.  Using o
5c80: 6e 6c 79 0a 20 20 68 69 67 68 65 72 2d 76 61 6c  nly.  higher-val
5c90: 75 65 64 20 66 69 6c 65 20 64 65 73 63 72 69 70  ued file descrip
5ca0: 74 6f 72 73 20 61 76 6f 69 64 73 20 74 68 69 73  tors avoids this
5cb0: 20 70 6f 74 65 6e 74 69 61 6c 20 70 72 6f 62 6c   potential probl
5cc0: 65 6d 2e 20 20 54 68 65 20 0a 20 20 70 72 6f 74  em.  The .  prot
5cd0: 65 63 74 69 6f 6e 20 61 67 61 69 6e 73 74 0a 20  ection against. 
5ce0: 20 75 73 69 6e 67 20 6c 6f 77 2d 6e 75 6d 62 65   using low-numbe
5cf0: 72 65 64 20 66 69 6c 65 20 64 65 73 63 72 69 70  red file descrip
5d00: 74 6f 72 73 20 63 61 6e 20 62 65 20 64 69 73 61  tors can be disa
5d10: 62 6c 65 64 20 62 79 20 73 65 74 74 69 6e 67 20  bled by setting 
5d20: 74 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74  this.  compile-t
5d30: 69 6d 65 20 6f 70 74 69 6f 6e 20 74 6f 20 30 2e  ime option to 0.
5d40: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
5d50: 4f 4e 20 7b 53 51 4c 49 54 45 5f 50 4f 57 45 52  ON {SQLITE_POWER
5d60: 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 3d 3c  SAFE_OVERWRITE=<
5d70: 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b  i>&lt;0 or 1&gt;
5d80: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  </i>} {.  This o
5d90: 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68  ption changes th
5da0: 65 20 64 65 66 61 75 6c 74 20 61 73 73 75 6d 70  e default assump
5db0: 74 69 6f 6e 20 61 62 6f 75 74 20 5b 70 6f 77 65  tion about [powe
5dc0: 72 73 61 66 65 20 6f 76 65 72 77 72 69 74 65 5d  rsafe overwrite]
5dd0: 0a 20 20 66 6f 72 20 74 68 65 20 75 6e 64 65 72  .  for the under
5de0: 6c 79 69 6e 67 20 66 69 6c 65 73 79 73 74 65 6d  lying filesystem
5df0: 73 20 66 6f 72 20 74 68 65 20 75 6e 69 78 20 61  s for the unix a
5e00: 6e 64 20 77 69 6e 64 6f 77 73 20 5b 56 46 53 65  nd windows [VFSe
5e10: 73 5d 2e 0a 20 20 53 65 74 74 69 6e 67 20 53 51  s]..  Setting SQ
5e20: 4c 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f  LITE_POWERSAFE_O
5e30: 56 45 52 57 52 49 54 45 20 74 6f 20 31 20 63 61  VERWRITE to 1 ca
5e40: 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 61  uses SQLite to a
5e50: 73 73 75 6d 65 20 74 68 61 74 0a 20 20 61 70 70  ssume that.  app
5e60: 6c 69 63 61 74 69 6f 6e 2d 6c 65 76 65 6c 20 77  lication-level w
5e70: 72 69 74 65 73 20 63 61 6e 6e 6f 74 20 63 68 61  rites cannot cha
5e80: 6e 67 65 73 20 62 79 74 65 73 20 6f 75 74 73 69  nges bytes outsi
5e90: 64 65 20 74 68 65 20 72 61 6e 67 65 20 6f 66 0a  de the range of.
5ea0: 20 20 62 79 74 65 73 20 77 72 69 74 74 65 6e 20    bytes written 
5eb0: 65 76 65 6e 20 69 66 20 74 68 65 20 77 72 69 74  even if the writ
5ec0: 65 20 6f 63 63 75 72 73 20 6a 75 73 74 20 62 65  e occurs just be
5ed0: 66 6f 72 65 20 61 20 70 6f 77 65 72 20 6c 6f 73  fore a power los
5ee0: 73 2e 0a 20 20 57 69 74 68 20 53 51 4c 49 54 45  s..  With SQLITE
5ef0: 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57  _POWERSAFE_OVERW
5f00: 52 49 54 45 20 73 65 74 20 74 6f 20 30 2c 20 53  RITE set to 0, S
5f10: 51 4c 69 74 65 20 61 73 73 75 6d 65 73 20 74 68  QLite assumes th
5f20: 61 74 20 6f 74 68 65 72 0a 20 20 62 79 74 65 73  at other.  bytes
5f30: 20 69 6e 20 74 68 65 20 73 61 6d 65 20 73 65 63   in the same sec
5f40: 74 6f 72 20 77 69 74 68 20 61 20 77 72 69 74 74  tor with a writt
5f50: 65 6e 20 62 79 74 65 20 6d 69 67 68 74 20 62 65  en byte might be
5f60: 20 63 68 61 6e 67 65 64 20 6f 72 20 0a 20 20 64   changed or .  d
5f70: 61 6d 61 67 65 64 20 62 79 20 61 20 70 6f 77 65  amaged by a powe
5f80: 72 20 6c 6f 73 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  r loss..}..COMPI
5f90: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
5fa0: 45 5f 52 45 56 45 52 53 45 5f 55 4e 4f 52 44 45  E_REVERSE_UNORDE
5fb0: 52 45 44 5f 53 45 4c 45 43 54 53 7d 20 7b 0a 20  RED_SELECTS} {. 
5fc0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
5fd0: 73 65 73 20 74 68 65 20 5b 50 52 41 47 4d 41 20  ses the [PRAGMA 
5fe0: 72 65 76 65 72 73 65 5f 75 6e 6f 72 64 65 72 65  reverse_unordere
5ff0: 64 5f 73 65 6c 65 63 74 73 5d 20 73 65 74 74 69  d_selects] setti
6000: 6e 67 20 74 6f 20 62 65 0a 20 20 65 6e 61 62 6c  ng to be.  enabl
6010: 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20  ed by default.  
6020: 57 68 65 6e 20 65 6e 61 62 6c 65 64 2c 20 5b 53  When enabled, [S
6030: 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74  ELECT] statement
6040: 73 20 74 68 61 74 20 6c 61 63 6b 20 61 6e 0a 20  s that lack an. 
6050: 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
6060: 20 77 69 6c 6c 20 72 75 6e 20 69 6e 20 72 65 76   will run in rev
6070: 65 72 73 65 20 6f 72 64 65 72 2e 3c 70 3e 0a 20  erse order.<p>. 
6080: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
6090: 75 73 65 66 75 6c 20 66 6f 72 20 64 65 74 65 63  useful for detec
60a0: 74 69 6e 67 20 77 68 65 6e 20 61 70 70 6c 69 63  ting when applic
60b0: 61 74 69 6f 6e 73 20 28 69 6e 63 6f 72 72 65 63  ations (incorrec
60c0: 74 6c 79 29 0a 20 20 61 73 73 75 6d 65 20 74 68  tly).  assume th
60d0: 61 74 20 74 68 65 20 6f 72 64 65 72 20 6f 66 20  at the order of 
60e0: 72 6f 77 73 20 69 6e 20 61 20 53 45 4c 45 43 54  rows in a SELECT
60f0: 20 77 69 74 68 6f 75 74 20 61 6e 20 4f 52 44 45   without an ORDE
6100: 52 20 42 59 20 63 6c 61 75 73 65 0a 20 20 77 69  R BY clause.  wi
6110: 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 74 68 65  ll always be the
6120: 20 73 61 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c   same..}..COMPIL
6130: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
6140: 5f 53 4f 52 54 45 52 5f 50 4d 41 53 5a 3d 3c 69  _SORTER_PMASZ=<i
6150: 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20 6d  >N</i>} {.  If m
6160: 75 6c 74 69 2d 74 68 72 65 61 64 65 64 20 70 72  ulti-threaded pr
6170: 6f 63 65 73 73 69 6e 67 20 69 73 20 65 6e 61 62  ocessing is enab
6180: 6c 65 64 20 76 69 61 20 74 68 65 0a 20 20 5b 50  led via the.  [P
6190: 52 41 47 4d 41 20 74 68 72 65 61 64 73 5d 20 73  RAGMA threads] s
61a0: 65 74 74 69 6e 67 2c 20 74 68 65 6e 20 73 6f 72  etting, then sor
61b0: 74 20 6f 70 65 72 61 74 69 6f 6e 73 20 77 69 6c  t operations wil
61c0: 6c 0a 20 20 61 74 74 65 6d 70 74 20 74 6f 20 73  l.  attempt to s
61d0: 74 61 72 74 20 68 65 6c 70 65 72 20 74 68 72 65  tart helper thre
61e0: 61 64 73 20 77 68 65 6e 20 74 68 65 20 61 6d 6f  ads when the amo
61f0: 75 6e 74 20 6f 66 20 63 6f 6e 74 65 6e 74 0a 20  unt of content. 
6200: 20 74 6f 20 62 65 20 73 6f 72 74 65 64 20 65 78   to be sorted ex
6210: 63 65 65 64 73 20 74 68 65 20 6d 69 6e 69 6d 75  ceeds the minimu
6220: 6d 20 6f 66 20 74 68 65 20 5b 63 61 63 68 65 5f  m of the [cache_
6230: 73 69 7a 65 5d 20 61 6e 64 20 50 4d 41 20 53 69  size] and PMA Si
6240: 7a 65 0a 20 20 64 65 74 65 72 6d 69 6e 65 64 20  ze.  determined 
6250: 62 79 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43  by the [SQLITE_C
6260: 4f 4e 46 49 47 5f 50 4d 41 53 5a 5d 20 73 74 61  ONFIG_PMASZ] sta
6270: 72 74 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a  rt-time option..
6280: 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74    This compile-t
6290: 69 6d 65 20 6f 70 74 69 6f 6e 20 73 65 74 73 20  ime option sets 
62a0: 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  the default valu
62b0: 65 20 66 6f 72 20 74 68 65 0a 20 20 5b 53 51 4c  e for the.  [SQL
62c0: 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a  ITE_CONFIG_PMASZ
62d0: 5d 20 73 74 61 72 74 2d 74 69 6d 65 20 6f 70 74  ] start-time opt
62e0: 69 6f 6e 2e 0a 20 20 54 68 65 20 64 65 66 61 75  ion..  The defau
62f0: 6c 74 20 76 61 6c 75 65 20 69 73 20 32 35 30 2e  lt value is 250.
6300: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6310: 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 54 4d 54 4a  ON {SQLITE_STMTJ
6320: 52 4e 4c 5f 53 50 49 4c 4c 3d 3c 69 3e 4e 3c 2f  RNL_SPILL=<i>N</
6330: 69 3e 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  i>} {.  The SQLI
6340: 54 45 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c  TE_STMTJRNL_SPIL
6350: 4c 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  L compile-time o
6360: 70 74 69 6f 6e 20 64 65 74 65 72 6d 69 6e 65 73  ption determines
6370: 20 74 68 65 0a 20 20 64 65 66 61 75 6c 74 20 73   the.  default s
6380: 65 74 74 69 6e 67 20 6f 66 20 74 68 65 20 5b 53  etting of the [S
6390: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 54 4d  QLITE_CONFIG_STM
63a0: 54 4a 52 4e 4c 5f 53 50 49 4c 4c 5d 20 73 74 61  TJRNL_SPILL] sta
63b0: 72 74 2d 74 69 6d 65 0a 20 20 73 65 74 74 69 6e  rt-time.  settin
63c0: 67 2e 20 20 54 68 61 74 20 73 65 74 74 69 6e 67  g.  That setting
63d0: 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   determines the 
63e0: 73 69 7a 65 20 74 68 72 65 73 68 6f 6c 64 20 61  size threshold a
63f0: 62 6f 76 65 20 77 68 69 63 68 0a 20 20 5b 73 74  bove which.  [st
6400: 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c 73  atement journals
6410: 5d 20 61 72 65 20 6d 6f 76 65 64 20 66 72 6f 6d  ] are moved from
6420: 20 6d 65 6d 6f 72 79 20 74 6f 20 64 69 73 6b 2e   memory to disk.
6430: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6440: 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e 33 32  ON {SQLITE_WIN32
6450: 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54 68 69  _MALLOC} {.  Thi
6460: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
6470: 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65 20   the use of the 
6480: 57 69 6e 64 6f 77 73 20 48 65 61 70 20 41 50 49  Windows Heap API
6490: 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20 6d   functions for m
64a0: 65 6d 6f 72 79 0a 20 20 61 6c 6c 6f 63 61 74 69  emory.  allocati
64b0: 6f 6e 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68  on instead of th
64c0: 65 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61  e standard libra
64d0: 72 79 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64 20  ry malloc() and 
64e0: 66 72 65 65 28 29 20 72 6f 75 74 69 6e 65 73 2e  free() routines.
64f0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6500: 4f 4e 20 7b 59 59 53 54 41 43 4b 44 45 50 54 48  ON {YYSTACKDEPTH
6510: 3d 3c 69 3e 26 6c 74 3b 6d 61 78 5f 64 65 70 74  =<i>&lt;max_dept
6520: 68 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  h&gt;</i>} {.  T
6530: 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74  his macro sets t
6540: 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74 68  he maximum depth
6550: 20 6f 66 20 74 68 65 20 4c 41 4c 52 28 31 29 20   of the LALR(1) 
6560: 73 74 61 63 6b 20 75 73 65 64 20 62 79 0a 20 20  stack used by.  
6570: 74 68 65 20 53 51 4c 20 70 61 72 73 65 72 20 77  the SQL parser w
6580: 69 74 68 69 6e 20 53 51 4c 69 74 65 2e 20 20 54  ithin SQLite.  T
6590: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
65a0: 20 69 73 20 31 30 30 2e 20 20 41 20 74 79 70 69   is 100.  A typi
65b0: 63 61 6c 0a 20 20 61 70 70 6c 69 63 61 74 69 6f  cal.  applicatio
65c0: 6e 20 77 69 6c 6c 20 75 73 65 20 6c 65 73 73 20  n will use less 
65d0: 74 68 61 6e 20 61 62 6f 75 74 20 32 30 20 6c 65  than about 20 le
65e0: 76 65 6c 73 20 6f 66 20 74 68 65 20 73 74 61 63  vels of the stac
65f0: 6b 2e 0a 20 20 44 65 76 65 6c 6f 70 65 72 73 20  k..  Developers 
6600: 77 68 6f 73 65 20 61 70 70 6c 69 63 61 74 69 6f  whose applicatio
6610: 6e 73 20 63 6f 6e 74 61 69 6e 20 53 51 4c 20 73  ns contain SQL s
6620: 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 0a  tatements that .
6630: 20 20 6e 65 65 64 20 6d 6f 72 65 20 74 68 61 6e    need more than
6640: 20 31 30 30 20 4c 41 4c 52 28 31 29 20 73 74 61   100 LALR(1) sta
6650: 63 6b 20 65 6e 74 72 69 65 73 20 73 68 6f 75 6c  ck entries shoul
6660: 64 20 73 65 72 69 6f 75 73 6c 79 0a 20 20 63 6f  d seriously.  co
6670: 6e 73 69 64 65 72 20 72 65 66 61 63 74 6f 72 69  nsider refactori
6680: 6e 67 20 74 68 65 69 72 20 53 51 4c 20 61 73 20  ng their SQL as 
6690: 69 74 20 69 73 20 6c 69 6b 65 6c 79 20 74 6f 20  it is likely to 
66a0: 62 65 20 77 65 6c 6c 20 62 65 79 6f 6e 64 0a 20  be well beyond. 
66b0: 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66 20   the ability of 
66c0: 61 6e 79 20 68 75 6d 61 6e 20 74 6f 20 63 6f 6d  any human to com
66d0: 70 72 65 68 65 6e 64 2e 0a 7d 0a 3c 2f 74 63 6c  prehend..}.</tcl
66e0: 3e 0a 0a 3c 68 31 3e 20 4f 70 74 69 6f 6e 73 20  >..<h1> Options 
66f0: 54 6f 20 53 65 74 20 53 69 7a 65 20 4c 69 6d 69  To Set Size Limi
6700: 74 73 3c 2f 68 31 3e 0a 0a 3c 70 3e 54 68 65 72  ts</h1>..<p>Ther
6710: 65 20 61 72 65 20 63 6f 6d 70 69 6c 65 2d 74 69  e are compile-ti
6720: 6d 65 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 20  me options that 
6730: 77 69 6c 6c 20 73 65 74 20 75 70 70 65 72 20 62  will set upper b
6740: 6f 75 6e 64 73 0a 6f 6e 20 74 68 65 20 73 69 7a  ounds.on the siz
6750: 65 73 20 6f 66 20 76 61 72 69 6f 75 73 20 73 74  es of various st
6760: 72 75 63 74 75 72 65 73 20 69 6e 20 53 51 4c 69  ructures in SQLi
6770: 74 65 2e 20 20 54 68 65 20 63 6f 6d 70 69 6c 65  te.  The compile
6780: 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e 73 20 6e 6f  -time.options no
6790: 72 6d 61 6c 6c 79 20 73 65 74 20 61 20 68 61 72  rmally set a har
67a0: 64 20 75 70 70 65 72 20 62 6f 75 6e 64 20 74 68  d upper bound th
67b0: 61 74 20 63 61 6e 20 62 65 20 63 68 61 6e 67 65  at can be change
67c0: 64 0a 61 74 20 72 75 6e 2d 74 69 6d 65 20 6f 6e  d.at run-time on
67d0: 20 69 6e 64 69 76 69 64 75 61 6c 20 5b 64 61 74   individual [dat
67e0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
67f0: 73 5d 20 75 73 69 6e 67 20 74 68 65 0a 5b 73 71  s] using the.[sq
6800: 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d 20 69  lite3_limit()] i
6810: 6e 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 3c  nterface.</p>..<
6820: 70 3e 54 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69  p>The compile-ti
6830: 6d 65 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 73  me options for s
6840: 65 74 74 69 6e 67 20 75 70 70 65 72 20 62 6f 75  etting upper bou
6850: 6e 64 73 20 61 72 65 0a 5b 6c 69 6d 69 74 73 20  nds are.[limits 
6860: 7c 20 64 6f 63 75 6d 65 6e 74 65 64 20 73 65 70  | documented sep
6870: 61 72 61 74 65 6c 79 5d 2e 20 20 54 68 65 20 66  arately].  The f
6880: 6f 6c 6c 6f 77 69 6e 67 20 69 73 20 61 20 6c 69  ollowing is a li
6890: 73 74 20 6f 66 0a 74 68 65 20 61 76 61 69 6c 61  st of.the availa
68a0: 62 6c 65 20 73 65 74 74 69 6e 67 73 3a 3c 2f 70  ble settings:</p
68b0: 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 20 5b 53 51  >..<ul>.<li> [SQ
68c0: 4c 49 54 45 5f 4d 41 58 5f 41 54 54 41 43 48 45  LITE_MAX_ATTACHE
68d0: 44 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b  D]  </li>.<li> [
68e0: 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d  SQLITE_MAX_COLUM
68f0: 4e 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b  N]  </li>.<li> [
6900: 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4d 50 4f  SQLITE_MAX_COMPO
6910: 55 4e 44 5f 53 45 4c 45 43 54 5d 20 20 3c 2f 6c  UND_SELECT]  </l
6920: 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  i>.<li> [SQLITE_
6930: 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48 5d 20  MAX_EXPR_DEPTH] 
6940: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
6950: 49 54 45 5f 4d 41 58 5f 46 55 4e 43 54 49 4f 4e  ITE_MAX_FUNCTION
6960: 5f 41 52 47 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69  _ARG]  </li>.<li
6970: 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 45  > [SQLITE_MAX_LE
6980: 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69  NGTH]  </li>.<li
6990: 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 49  > [SQLITE_MAX_LI
69a0: 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54  KE_PATTERN_LENGT
69b0: 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b  H]  </li>.<li> [
69c0: 53 51 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f  SQLITE_MAX_PAGE_
69d0: 43 4f 55 4e 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  COUNT]  </li>.<l
69e0: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 53  i> [SQLITE_MAX_S
69f0: 51 4c 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69  QL_LENGTH]  </li
6a00: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
6a10: 41 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42  AX_VARIABLE_NUMB
6a20: 45 52 5d 20 20 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e  ER]  </li>.</ul>
6a30: 0a 0a 3c 61 20 6e 61 6d 65 3d 22 63 6f 6e 74 72  ..<a name="contr
6a40: 6f 6c 66 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e  olfeatures"></a>
6a50: 0a 3c 68 31 3e 20 4f 70 74 69 6f 6e 73 20 54 6f  .<h1> Options To
6a60: 20 43 6f 6e 74 72 6f 6c 20 4f 70 65 72 61 74 69   Control Operati
6a70: 6e 67 20 43 68 61 72 61 63 74 65 72 69 73 74 69  ng Characteristi
6a80: 63 73 3c 2f 68 31 3e 0a 0a 3c 74 63 6c 3e 0a 43  cs</h1>..<tcl>.C
6a90: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
6aa0: 51 4c 49 54 45 5f 34 5f 42 59 54 45 5f 41 4c 49  QLITE_4_BYTE_ALI
6ab0: 47 4e 45 44 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20  GNED_MALLOC} {. 
6ac0: 20 4f 6e 20 6d 6f 73 74 20 73 79 73 74 65 6d 73   On most systems
6ad0: 2c 20 74 68 65 20 6d 61 6c 6c 6f 63 28 29 20 73  , the malloc() s
6ae0: 79 73 74 65 6d 20 63 61 6c 6c 20 72 65 74 75 72  ystem call retur
6af0: 6e 73 20 61 20 62 75 66 66 65 72 20 74 68 61 74  ns a buffer that
6b00: 20 69 73 0a 20 20 61 6c 69 67 6e 65 64 20 74 6f   is.  aligned to
6b10: 20 61 6e 20 38 2d 62 79 74 65 20 62 6f 75 6e 64   an 8-byte bound
6b20: 61 72 79 2e 20 20 42 75 74 20 6f 6e 20 73 6f 6d  ary.  But on som
6b30: 65 20 73 79 73 74 65 6d 73 20 28 65 78 3a 20 77  e systems (ex: w
6b40: 69 6e 64 6f 77 73 29 20 6d 61 6c 6c 6f 63 28 29  indows) malloc()
6b50: 0a 20 20 72 65 74 75 72 6e 73 20 34 2d 62 79 74  .  returns 4-byt
6b60: 65 20 61 6c 69 67 6e 65 64 20 70 6f 69 6e 74 65  e aligned pointe
6b70: 72 2e 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65  r.  This compile
6b80: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 6d 75 73  -time option mus
6b90: 74 20 62 65 20 75 73 65 64 0a 20 20 6f 6e 20 73  t be used.  on s
6ba0: 79 73 74 65 6d 73 20 74 68 61 74 20 72 65 74 75  ystems that retu
6bb0: 72 6e 20 34 2d 62 79 74 65 20 61 6c 69 67 6e 65  rn 4-byte aligne
6bc0: 64 20 70 6f 69 6e 74 65 72 73 20 66 72 6f 6d 20  d pointers from 
6bd0: 6d 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 43 4f 4d  malloc()..}..COM
6be0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
6bf0: 49 54 45 5f 43 41 53 45 5f 53 45 4e 53 49 54 49  ITE_CASE_SENSITI
6c00: 56 45 5f 4c 49 4b 45 7d 20 7b 0a 20 20 49 66 20  VE_LIKE} {.  If 
6c10: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70  this option is p
6c20: 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 74 68 65  resent, then the
6c30: 20 62 75 69 6c 74 2d 69 6e 20 5b 4c 49 4b 45 5d   built-in [LIKE]
6c40: 20 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 62   operator will b
6c50: 65 0a 20 20 63 61 73 65 20 73 65 6e 73 69 74 69  e.  case sensiti
6c60: 76 65 2e 20 20 54 68 69 73 20 73 61 6d 65 20 65  ve.  This same e
6c70: 66 66 65 63 74 20 63 61 6e 20 62 65 20 61 63 68  ffect can be ach
6c80: 69 65 76 65 64 20 61 74 20 72 75 6e 2d 74 69 6d  ieved at run-tim
6c90: 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20 5b 63  e using.  the [c
6ca0: 61 73 65 5f 73 65 6e 73 69 74 69 76 65 5f 6c 69  ase_sensitive_li
6cb0: 6b 65 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43  ke pragma]..}..C
6cc0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
6cd0: 51 4c 49 54 45 5f 44 49 52 45 43 54 5f 4f 56 45  QLITE_DIRECT_OVE
6ce0: 52 46 4c 4f 57 5f 52 45 41 44 7d 20 7b 0a 20 20  RFLOW_READ} {.  
6cf0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
6d00: 20 69 73 20 70 72 65 73 65 6e 74 2c 20 63 6f 6e   is present, con
6d10: 74 65 6e 74 20 63 6f 6e 74 61 69 6e 65 64 20 69  tent contained i
6d20: 6e 0a 20 20 5b 6f 76 65 72 66 6c 6f 77 20 70 61  n.  [overflow pa
6d30: 67 65 73 5d 20 6f 66 20 74 68 65 20 64 61 74 61  ges] of the data
6d40: 62 61 73 65 20 66 69 6c 65 20 69 73 20 72 65 61  base file is rea
6d50: 64 20 64 69 72 65 63 74 6c 79 20 66 72 6f 6d 20  d directly from 
6d60: 64 69 73 6b 2c 0a 20 20 62 79 70 61 73 73 69 6e  disk,.  bypassin
6d70: 67 20 74 68 65 20 5b 70 61 67 65 20 63 61 63 68  g the [page cach
6d80: 65 5d 2c 20 64 75 72 69 6e 67 20 72 65 61 64 20  e], during read 
6d90: 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20 49  transactions.  I
6da0: 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a 20  n applications. 
6db0: 20 74 68 61 74 20 64 6f 20 61 20 6c 6f 74 20 6f   that do a lot o
6dc0: 66 20 72 65 61 64 73 20 6f 66 20 6c 61 72 67 65  f reads of large
6dd0: 20 42 4c 4f 42 73 2c 20 74 68 69 73 20 6f 70 74   BLOBs, this opt
6de0: 69 6f 6e 20 6d 69 67 68 74 20 69 6d 70 72 6f 76  ion might improv
6df0: 65 20 72 65 61 64 0a 20 20 70 65 72 66 6f 72 6d  e read.  perform
6e00: 61 6e 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ance..}..COMPILE
6e10: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
6e20: 48 41 56 45 5f 49 53 4e 41 4e 7d 20 7b 0a 20 20  HAVE_ISNAN} {.  
6e30: 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  If this option i
6e40: 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20  s present, then 
6e50: 53 51 4c 69 74 65 20 77 69 6c 6c 20 75 73 65 20  SQLite will use 
6e60: 74 68 65 20 69 73 6e 61 6e 28 29 20 66 75 6e 63  the isnan() func
6e70: 74 69 6f 6e 20 66 72 6f 6d 0a 20 20 74 68 65 20  tion from.  the 
6e80: 73 79 73 74 65 6d 20 6d 61 74 68 20 6c 69 62 72  system math libr
6e90: 61 72 79 2e 20 20 54 68 69 73 20 69 73 20 61 6e  ary.  This is an
6ea0: 20 61 6c 69 61 73 20 66 6f 72 20 74 68 65 20 5b   alias for the [
6eb0: 48 41 56 45 5f 49 53 4e 41 4e 5d 20 63 6f 6e 66  HAVE_ISNAN] conf
6ec0: 69 67 75 72 61 74 69 6f 6e 0a 20 20 6f 70 74 69  iguration.  opti
6ed0: 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  on..}..COMPILE_O
6ee0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 53  PTION {SQLITE_OS
6ef0: 5f 4f 54 48 45 52 3d 3c 69 3e 26 6c 74 3b 30 20  _OTHER=<i>&lt;0 
6f00: 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  or 1&gt;</i>} {.
6f10: 20 20 54 68 65 20 6f 70 74 69 6f 6e 20 63 61 75    The option cau
6f20: 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d  ses SQLite to om
6f30: 69 74 20 69 74 73 20 62 75 69 6c 74 2d 69 6e 20  it its built-in 
6f40: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
6f50: 20 69 6e 74 65 72 66 61 63 65 73 0a 20 20 66 6f   interfaces.  fo
6f60: 72 20 55 6e 69 78 2c 20 57 69 6e 64 6f 77 73 2c  r Unix, Windows,
6f70: 20 61 6e 64 20 4f 53 2f 32 2e 20 20 54 68 65 20   and OS/2.  The 
6f80: 72 65 73 75 6c 74 69 6e 67 20 6c 69 62 72 61 72  resulting librar
6f90: 79 20 77 69 6c 6c 20 68 61 76 65 20 6e 6f 20 64  y will have no d
6fa0: 65 66 61 75 6c 74 0a 20 20 5b 73 71 6c 69 74 65  efault.  [sqlite
6fb0: 33 5f 76 66 73 20 7c 20 6f 70 65 72 61 74 69 6e  3_vfs | operatin
6fc0: 67 20 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61  g system interfa
6fd0: 63 65 5d 2e 20 20 41 70 70 6c 69 63 61 74 69 6f  ce].  Applicatio
6fe0: 6e 73 20 6d 75 73 74 20 75 73 65 0a 20 20 5b 73  ns must use.  [s
6ff0: 71 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73  qlite3_vfs_regis
7000: 74 65 72 28 29 5d 20 74 6f 20 72 65 67 69 73 74  ter()] to regist
7010: 65 72 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74  er an appropriat
7020: 65 20 69 6e 74 65 72 66 61 63 65 20 62 65 66 6f  e interface befo
7030: 72 65 0a 20 20 75 73 69 6e 67 20 53 51 4c 69 74  re.  using SQLit
7040: 65 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73  e.  Applications
7050: 20 6d 75 73 74 20 61 6c 73 6f 20 73 75 70 70 6c   must also suppl
7060: 79 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  y implementation
7070: 73 20 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c  s for the.  [sql
7080: 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20  ite3_os_init()] 
7090: 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f  and [sqlite3_os_
70a0: 65 6e 64 28 29 5d 20 69 6e 74 65 72 66 61 63 65  end()] interface
70b0: 73 2e 20 20 54 68 65 20 75 73 75 61 6c 20 70 72  s.  The usual pr
70c0: 61 63 74 69 63 65 0a 20 20 69 73 20 66 6f 72 20  actice.  is for 
70d0: 74 68 65 20 73 75 70 70 6c 69 65 64 20 5b 73 71  the supplied [sq
70e0: 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d  lite3_os_init()]
70f0: 20 74 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69   to invoke [sqli
7100: 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72  te3_vfs_register
7110: 28 29 5d 2e 0a 20 20 53 51 4c 69 74 65 20 77 69  ()]..  SQLite wi
7120: 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ll automatically
7130: 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33   invoke [sqlite3
7140: 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 77 68 65 6e  _os_init()] when
7150: 20 69 74 20 69 6e 69 74 69 61 6c 69 7a 65 73 2e   it initializes.
7160: 0a 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  ..  This option 
7170: 69 73 20 74 79 70 69 63 61 6c 6c 79 20 75 73 65  is typically use
7180: 64 20 77 68 65 6e 20 62 75 69 6c 64 69 6e 67 20  d when building 
7190: 53 51 4c 69 74 65 20 66 6f 72 20 61 6e 20 65 6d  SQLite for an em
71a0: 62 65 64 64 65 64 0a 20 20 70 6c 61 74 66 6f 72  bedded.  platfor
71b0: 6d 20 77 69 74 68 20 61 20 63 75 73 74 6f 6d 20  m with a custom 
71c0: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
71d0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
71e0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 45 43 55  ION {SQLITE_SECU
71f0: 52 45 5f 44 45 4c 45 54 45 7d 20 7b 0a 20 20 54  RE_DELETE} {.  T
7200: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
7210: 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20   option changes 
7220: 74 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74  the default sett
7230: 69 6e 67 20 6f 66 20 74 68 65 0a 20 20 5b 73 65  ing of the.  [se
7240: 63 75 72 65 5f 64 65 6c 65 74 65 20 70 72 61 67  cure_delete prag
7250: 6d 61 5d 2e 20 20 57 68 65 6e 20 74 68 69 73 20  ma].  When this 
7260: 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 74 20 75 73  option is not us
7270: 65 64 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74  ed, secure_delet
7280: 65 20 64 65 66 61 75 6c 74 73 0a 20 20 74 6f 20  e defaults.  to 
7290: 6f 66 66 2e 20 20 57 68 65 6e 20 74 68 69 73 20  off.  When this 
72a0: 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e  option is presen
72b0: 74 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65  t, secure_delete
72c0: 20 64 65 66 61 75 6c 74 73 20 74 6f 20 6f 6e 2e   defaults to on.
72d0: 0a 0a 20 20 54 68 65 20 73 65 63 75 72 65 5f 64  ..  The secure_d
72e0: 65 6c 65 74 65 20 73 65 74 74 69 6e 67 20 63 61  elete setting ca
72f0: 75 73 65 73 20 64 65 6c 65 74 65 64 20 63 6f 6e  uses deleted con
7300: 74 65 6e 74 20 74 6f 20 62 65 20 6f 76 65 72 77  tent to be overw
7310: 72 69 74 74 65 6e 20 77 69 74 68 0a 20 20 7a 65  ritten with.  ze
7320: 72 6f 73 2e 20 20 54 68 65 72 65 20 69 73 20 61  ros.  There is a
7330: 20 73 6d 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e   small performan
7340: 63 65 20 70 65 6e 61 6c 74 79 20 73 69 6e 63 65  ce penalty since
7350: 20 61 64 64 69 74 69 6f 6e 61 6c 20 49 2f 4f 0a   additional I/O.
7360: 20 20 6d 75 73 74 20 6f 63 63 75 72 2e 20 20 4f    must occur.  O
7370: 6e 20 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64  n the other hand
7380: 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20  , secure_delete 
7390: 63 61 6e 20 70 72 65 76 65 6e 74 20 66 72 61 67  can prevent frag
73a0: 6d 65 6e 74 73 20 6f 66 20 0a 20 20 73 65 6e 73  ments of .  sens
73b0: 69 74 69 76 65 20 69 6e 66 6f 72 6d 61 74 69 6f  itive informatio
73c0: 6e 20 66 72 6f 6d 20 6c 69 6e 67 65 72 69 6e 67  n from lingering
73d0: 20 69 6e 20 75 6e 75 73 65 64 20 70 61 72 74 73   in unused parts
73e0: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
73f0: 20 66 69 6c 65 20 0a 20 20 61 66 74 65 72 20 69   file .  after i
7400: 74 20 68 61 73 20 62 65 65 6e 20 64 65 6c 65 74  t has been delet
7410: 65 64 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63  ed.  See the doc
7420: 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e 20 74 68  umentation on th
7430: 65 0a 20 20 5b 73 65 63 75 72 65 5f 64 65 6c 65  e.  [secure_dele
7440: 74 65 20 70 72 61 67 6d 61 5d 20 66 6f 72 20 61  te pragma] for a
7450: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
7460: 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ation..}..COMPIL
7470: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7480: 5f 54 48 52 45 41 44 53 41 46 45 3d 3c 69 3e 26  _THREADSAFE=<i>&
7490: 6c 74 3b 30 20 6f 72 20 31 20 6f 72 20 32 26 67  lt;0 or 1 or 2&g
74a0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  t;</i>} {.  This
74b0: 20 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73   option controls
74c0: 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20   whether or not 
74d0: 63 6f 64 65 20 69 73 20 69 6e 63 6c 75 64 65 64  code is included
74e0: 20 69 6e 20 53 51 4c 69 74 65 20 74 6f 0a 20 20   in SQLite to.  
74f0: 65 6e 61 62 6c 65 20 69 74 20 74 6f 20 6f 70 65  enable it to ope
7500: 72 61 74 65 20 73 61 66 65 6c 79 20 69 6e 20 61  rate safely in a
7510: 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 65   multithreaded e
7520: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 20 20 54 68 65  nvironment.  The
7530: 0a 20 20 64 65 66 61 75 6c 74 20 69 73 20 53 51  .  default is SQ
7540: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
7550: 31 20 77 68 69 63 68 20 69 73 20 73 61 66 65 20  1 which is safe 
7560: 66 6f 72 20 75 73 65 20 69 6e 20 61 20 6d 75 6c  for use in a mul
7570: 74 69 74 68 72 65 61 64 65 64 0a 20 20 65 6e 76  tithreaded.  env
7580: 69 72 6f 6e 6d 65 6e 74 2e 20 20 57 68 65 6e 20  ironment.  When 
7590: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51  compiled with SQ
75a0: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
75b0: 30 20 61 6c 6c 20 6d 75 74 65 78 69 6e 67 20 63  0 all mutexing c
75c0: 6f 64 65 0a 20 20 69 73 20 6f 6d 69 74 74 65 64  ode.  is omitted
75d0: 20 61 6e 64 20 69 74 20 69 73 20 75 6e 73 61 66   and it is unsaf
75e0: 65 20 74 6f 20 75 73 65 20 53 51 4c 69 74 65 20  e to use SQLite 
75f0: 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64  in a multithread
7600: 65 64 20 70 72 6f 67 72 61 6d 2e 0a 20 20 57 68  ed program..  Wh
7610: 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  en compiled with
7620: 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
7630: 46 45 3d 32 2c 20 53 51 4c 69 74 65 20 63 61 6e  FE=2, SQLite can
7640: 20 62 65 20 75 73 65 64 20 69 6e 20 61 20 6d 75   be used in a mu
7650: 6c 74 69 74 68 72 65 61 64 65 64 0a 20 20 70 72  ltithreaded.  pr
7660: 6f 67 72 61 6d 20 73 6f 20 6c 6f 6e 67 20 61 73  ogram so long as
7670: 20 6e 6f 20 74 77 6f 20 74 68 72 65 61 64 73 20   no two threads 
7680: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
7690: 68 65 20 73 61 6d 65 0a 20 20 5b 64 61 74 61 62  he same.  [datab
76a0: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20  ase connection] 
76b0: 28 6f 72 20 61 6e 79 20 5b 70 72 65 70 61 72 65  (or any [prepare
76c0: 64 20 73 74 61 74 65 6d 65 6e 74 73 5d 20 64 65  d statements] de
76d0: 72 69 76 65 64 20 66 72 6f 6d 0a 20 20 74 68 61  rived from.  tha
76e0: 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  t database conne
76f0: 63 74 69 6f 6e 29 20 61 74 20 74 68 65 20 73 61  ction) at the sa
7700: 6d 65 20 74 69 6d 65 2e 0a 0a 20 20 54 6f 20 70  me time...  To p
7710: 75 74 20 69 74 20 61 6e 6f 74 68 65 72 20 77 61  ut it another wa
7720: 79 2c 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44  y, SQLITE_THREAD
7730: 53 41 46 45 3d 31 20 73 65 74 73 20 74 68 65 20  SAFE=1 sets the 
7740: 64 65 66 61 75 6c 74 0a 20 20 5b 74 68 72 65 61  default.  [threa
7750: 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 65  ding mode] to Se
7760: 72 69 61 6c 69 7a 65 64 2e 20 20 53 51 4c 49 54  rialized.  SQLIT
7770: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32 20 73  E_THREADSAFE=2 s
7780: 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a  ets the default.
7790: 20 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64    [threading mod
77a0: 65 5d 20 74 6f 20 4d 75 6c 74 69 2d 74 68 72 65  e] to Multi-thre
77b0: 61 64 65 64 2e 20 20 41 6e 64 20 53 51 4c 49 54  aded.  And SQLIT
77c0: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 20 73  E_THREADSAFE=0 s
77d0: 65 74 73 20 74 68 65 0a 20 20 5b 74 68 72 65 61  ets the.  [threa
77e0: 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 69  ding mode] to Si
77f0: 6e 67 6c 65 2d 74 68 72 65 61 64 65 64 2e 0a 0a  ngle-threaded...
7800: 20 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 53    The value of S
7810: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
7820: 20 63 61 6e 20 62 65 20 64 65 74 65 72 6d 69 6e   can be determin
7830: 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 0a 20  ed at run-time. 
7840: 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69   using the [sqli
7850: 74 65 33 5f 74 68 72 65 61 64 73 61 66 65 28 29  te3_threadsafe()
7860: 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a 0a 20 20  ] interface...  
7870: 57 68 65 6e 20 53 51 4c 69 74 65 20 68 61 73 20  When SQLite has 
7880: 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69  been compiled wi
7890: 74 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44  th SQLITE_THREAD
78a0: 53 41 46 45 3d 31 20 6f 72 0a 20 20 53 51 4c 49  SAFE=1 or.  SQLI
78b0: 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32 20  TE_THREADSAFE=2 
78c0: 74 68 65 6e 20 74 68 65 20 5b 74 68 72 65 61 64  then the [thread
78d0: 69 6e 67 20 6d 6f 64 65 5d 0a 20 20 63 61 6e 20  ing mode].  can 
78e0: 62 65 20 61 6c 74 65 72 65 64 20 61 74 20 72 75  be altered at ru
78f0: 6e 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65  n-time using the
7900: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
7910: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f  ()] interface to
7920: 67 65 74 68 65 72 0a 20 20 77 69 74 68 20 6f 6e  gether.  with on
7930: 65 20 6f 66 20 74 68 65 73 65 20 76 65 72 62 73  e of these verbs
7940: 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e  :..  <ul>.  <li>
7950: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53  [SQLITE_CONFIG_S
7960: 49 4e 47 4c 45 54 48 52 45 41 44 5d 0a 20 20 3c  INGLETHREAD].  <
7970: 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  li>[SQLITE_CONFI
7980: 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 5d 0a 20  G_MULTITHREAD]. 
7990: 20 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e   <li>[SQLITE_CON
79a0: 46 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 5d 0a  FIG_SERIALIZED].
79b0: 20 20 3c 2f 75 6c 3e 0a 0a 20 20 54 68 65 20 5b    </ul>..  The [
79c0: 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55  SQLITE_OPEN_NOMU
79d0: 54 45 58 5d 20 61 6e 64 0a 20 20 5b 53 51 4c 49  TEX] and.  [SQLI
79e0: 54 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45  TE_OPEN_FULLMUTE
79f0: 58 5d 20 66 6c 61 67 73 20 74 6f 20 5b 73 71 6c  X] flags to [sql
7a00: 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 20  ite3_open_v2()] 
7a10: 63 61 6e 20 61 6c 73 6f 20 62 65 20 75 73 65 64  can also be used
7a20: 0a 20 20 74 6f 20 61 64 6a 75 73 74 20 74 68 65  .  to adjust the
7a30: 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
7a40: 5d 20 6f 66 20 69 6e 64 69 76 69 64 75 61 6c 20  ] of individual 
7a50: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
7a60: 74 69 6f 6e 73 5d 0a 20 20 61 74 20 72 75 6e 2d  tions].  at run-
7a70: 74 69 6d 65 2e 0a 0a 20 20 4e 6f 74 65 20 74 68  time...  Note th
7a80: 61 74 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69  at when SQLite i
7a90: 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  s compiled with 
7aa0: 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
7ab0: 45 3d 30 2c 20 74 68 65 20 63 6f 64 65 0a 20 20  E=0, the code.  
7ac0: 74 6f 20 6d 61 6b 65 20 53 51 4c 69 74 65 20 74  to make SQLite t
7ad0: 68 72 65 61 64 73 61 66 65 20 69 73 20 6f 6d 69  hreadsafe is omi
7ae0: 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75  tted from the bu
7af0: 69 6c 64 2e 20 20 57 68 65 6e 20 74 68 69 73 20  ild.  When this 
7b00: 6f 63 63 75 72 73 2c 0a 20 20 69 74 20 69 73 20  occurs,.  it is 
7b10: 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 63 68  impossible to ch
7b20: 61 6e 67 65 20 74 68 65 20 5b 74 68 72 65 61 64  ange the [thread
7b30: 69 6e 67 20 6d 6f 64 65 5d 20 61 74 20 73 74 61  ing mode] at sta
7b40: 72 74 2d 74 69 6d 65 20 6f 72 20 72 75 6e 2d 74  rt-time or run-t
7b50: 69 6d 65 2e 0a 0a 20 20 53 65 65 20 74 68 65 20  ime...  See the 
7b60: 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
7b70: 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66   documentation f
7b80: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
7b90: 66 6f 72 6d 61 74 69 6f 6e 0a 20 20 6f 6e 20 61  formation.  on a
7ba0: 73 70 65 63 74 73 20 6f 66 20 75 73 69 6e 67 20  spects of using 
7bb0: 53 51 4c 69 74 65 20 69 6e 20 61 20 6d 75 6c 74  SQLite in a mult
7bc0: 69 74 68 72 65 61 64 65 64 20 65 6e 76 69 72 6f  ithreaded enviro
7bd0: 6e 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  nment..}..COMPIL
7be0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7bf0: 5f 54 45 4d 50 5f 53 54 4f 52 45 3d 3c 69 3e 26  _TEMP_STORE=<i>&
7c00: 6c 74 3b 30 20 74 68 72 6f 75 67 68 20 33 26 67  lt;0 through 3&g
7c10: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  t;</i>} {.  This
7c20: 20 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73   option controls
7c30: 20 77 68 65 74 68 65 72 20 74 65 6d 70 6f 72 61   whether tempora
7c40: 72 79 20 66 69 6c 65 73 20 61 72 65 20 73 74 6f  ry files are sto
7c50: 72 65 64 20 6f 6e 20 64 69 73 6b 20 6f 72 0a 20  red on disk or. 
7c60: 20 69 6e 20 6d 65 6d 6f 72 79 2e 20 20 54 68 65   in memory.  The
7c70: 20 6d 65 61 6e 69 6e 67 73 20 66 6f 72 20 76 61   meanings for va
7c80: 72 69 6f 75 73 20 73 65 74 74 69 6e 67 73 20 6f  rious settings o
7c90: 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  f this compile-t
7ca0: 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 61 72 65  ime.  option are
7cb0: 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 0a 20 20   as follows:..  
7cc0: 3c 74 61 62 6c 65 20 63 65 6c 6c 70 61 64 64 69  <table cellpaddi
7cd0: 6e 67 3d 22 32 22 20 62 6f 72 64 65 72 3d 22 31  ng="2" border="1
7ce0: 22 3e 0a 20 20 3c 74 72 3e 3c 74 68 3e 53 51 4c  ">.  <tr><th>SQL
7cf0: 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3c 2f  ITE_TEMP_STORE</
7d00: 74 68 3e 3c 74 68 3e 4d 65 61 6e 69 6e 67 3c 2f  th><th>Meaning</
7d10: 74 68 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c  th></tr>.  <tr><
7d20: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
7d30: 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77 61  ">0</td><td>Alwa
7d40: 79 73 20 75 73 65 20 74 65 6d 70 6f 72 61 72 79  ys use temporary
7d50: 20 66 69 6c 65 73 3c 2f 74 64 3e 3c 2f 74 72 3e   files</td></tr>
7d60: 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e  .  <tr><td align
7d70: 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e  ="center">1</td>
7d80: 3c 74 64 3e 55 73 65 20 66 69 6c 65 73 20 62 79  <td>Use files by
7d90: 20 64 65 66 61 75 6c 74 20 62 75 74 20 61 6c 6c   default but all
7da0: 6f 77 20 74 68 65 0a 20 20 5b 50 52 41 47 4d 41  ow the.  [PRAGMA
7db0: 20 74 65 6d 70 5f 73 74 6f 72 65 5d 20 63 6f 6d   temp_store] com
7dc0: 6d 61 6e 64 20 74 6f 20 6f 76 65 72 72 69 64 65  mand to override
7dd0: 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72  </td></tr>.  <tr
7de0: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
7df0: 65 72 22 3e 32 3c 2f 74 64 3e 3c 74 64 3e 55 73  er">2</td><td>Us
7e00: 65 20 6d 65 6d 6f 72 79 20 62 79 20 64 65 66 61  e memory by defa
7e10: 75 6c 74 20 62 75 74 20 61 6c 6c 6f 77 20 74 68  ult but allow th
7e20: 65 0a 20 20 5b 50 52 41 47 4d 41 20 74 65 6d 70  e.  [PRAGMA temp
7e30: 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64 20  _store] command 
7e40: 74 6f 20 6f 76 65 72 72 69 64 65 3c 2f 74 64 3e  to override</td>
7e50: 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20  </tr>.  <tr><td 
7e60: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 33  align="center">3
7e70: 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73 20  </td><td>Always 
7e80: 75 73 65 20 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c  use memory</td><
7e90: 2f 74 72 3e 0a 20 20 3c 2f 74 61 62 6c 65 3e 0a  /tr>.  </table>.
7ea0: 0a 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 73  .  The default s
7eb0: 65 74 74 69 6e 67 20 69 73 20 31 2e 20 20 0a 20  etting is 1.  . 
7ec0: 20 41 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f   Additional info
7ed0: 72 6d 61 74 69 6f 6e 20 63 61 6e 20 62 65 20 66  rmation can be f
7ee0: 6f 75 6e 64 20 69 6e 20 5b 74 65 6d 70 73 74 6f  ound in [tempsto
7ef0: 72 65 20 7c 20 74 65 6d 70 66 69 6c 65 73 2e 68  re | tempfiles.h
7f00: 74 6d 6c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tml]..}..COMPILE
7f10: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7f20: 54 52 41 43 45 5f 53 49 5a 45 5f 4c 49 4d 49 54  TRACE_SIZE_LIMIT
7f30: 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49  =<i>N</i>} {.  I
7f40: 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20  f this macro is 
7f50: 64 65 66 69 6e 65 64 20 74 6f 20 61 20 70 6f 73  defined to a pos
7f60: 69 74 69 76 65 20 69 6e 74 65 67 65 72 20 3c 69  itive integer <i
7f70: 3e 4e 3c 2f 69 3e 2c 20 74 68 65 6e 20 74 68 65  >N</i>, then the
7f80: 20 6c 65 6e 67 74 68 20 6f 66 0a 20 20 73 74 72   length of.  str
7f90: 69 6e 67 73 20 61 6e 64 20 42 4c 4f 42 20 74 68  ings and BLOB th
7fa0: 61 74 20 61 72 65 20 65 78 70 61 6e 64 65 64 20  at are expanded 
7fb0: 69 6e 74 6f 20 70 61 72 61 6d 65 74 65 72 73 20  into parameters 
7fc0: 69 6e 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66  in the output of
7fd0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63  .  [sqlite3_trac
7fe0: 65 28 29 5d 20 69 73 20 6c 69 6d 69 74 65 64 20  e()] is limited 
7ff0: 74 6f 20 3c 69 3e 4e 3c 2f 69 3e 20 62 79 74 65  to <i>N</i> byte
8000: 73 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  s.  .}..COMPILE_
8010: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 55  OPTION {SQLITE_U
8020: 53 45 5f 55 52 49 7d 20 7b 0a 20 20 54 68 69 73  SE_URI} {.  This
8030: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74   option causes t
8040: 68 65 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65  he [URI filename
8050: 5d 20 70 72 6f 63 65 73 73 20 6c 6f 67 69 63 20  ] process logic 
8060: 74 6f 20 62 65 20 65 6e 61 62 6c 65 64 20 62 79  to be enabled by
8070: 20 0a 20 20 64 65 66 61 75 6c 74 2e 20 20 0a 7d   .  default.  .}
8080: 0a 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d  ..</tcl>..<a nam
8090: 65 3d 22 65 6e 61 62 6c 65 66 65 61 74 75 72 65  e="enablefeature
80a0: 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 4f 70 74  s"></a>.<h1> Opt
80b0: 69 6f 6e 73 20 54 6f 20 45 6e 61 62 6c 65 20 46  ions To Enable F
80c0: 65 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79  eatures Normally
80d0: 20 54 75 72 6e 65 64 20 4f 66 66 3c 2f 68 31 3e   Turned Off</h1>
80e0: 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f  ..<tcl>.COMPILE_
80f0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 41  OPTION {SQLITE_A
8100: 4c 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f 52 49  LLOW_URI_AUTHORI
8110: 54 59 7d 20 7b 0a 20 20 5b 55 52 49 20 66 69 6c  TY} {.  [URI fil
8120: 65 6e 61 6d 65 73 5d 20 6e 6f 72 6d 61 6c 6c 79  enames] normally
8130: 20 74 68 72 6f 77 73 20 61 6e 20 65 72 72 6f 72   throws an error
8140: 20 69 66 20 74 68 65 20 61 75 74 68 6f 72 69 74   if the authorit
8150: 79 20 73 65 63 74 69 6f 6e 20 69 73 0a 20 20 6e  y section is.  n
8160: 6f 74 20 65 69 74 68 65 72 20 65 6d 70 74 79 20  ot either empty 
8170: 6f 72 20 22 6c 6f 63 61 6c 68 6f 73 74 22 2e 20  or "localhost". 
8180: 20 48 6f 77 65 76 65 72 2c 20 69 66 20 53 51 4c   However, if SQL
8190: 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20  ite is compiled 
81a0: 77 69 74 68 0a 20 20 74 68 65 20 53 51 4c 49 54  with.  the SQLIT
81b0: 45 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54 48  E_ALLOW_URI_AUTH
81c0: 4f 52 49 54 59 20 63 6f 6d 70 69 6c 65 2d 74 69  ORITY compile-ti
81d0: 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20  me option, then 
81e0: 74 68 65 20 55 52 49 20 69 73 0a 20 20 63 6f 6e  the URI is.  con
81f0: 76 65 72 74 65 64 20 69 6e 74 6f 20 61 20 55 6e  verted into a Un
8200: 69 66 6f 72 6d 20 4e 61 6d 69 6e 67 20 43 6f 6e  iform Naming Con
8210: 76 65 6e 74 69 6f 6e 20 28 55 4e 43 29 20 66 69  vention (UNC) fi
8220: 6c 65 6e 61 6d 65 20 61 6e 64 20 70 61 73 73 65  lename and passe
8230: 64 0a 20 20 64 6f 77 6e 20 74 6f 20 74 68 65 20  d.  down to the 
8240: 75 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61  underlying opera
8250: 74 69 6e 67 20 73 79 73 74 65 6d 20 74 68 61 74  ting system that
8260: 20 77 61 79 2e 20 20 0a 20 20 3c 70 3e 0a 20 20   way.  .  <p>.  
8270: 53 6f 6d 65 20 66 75 74 75 72 65 20 76 65 72 73  Some future vers
8280: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d  ions of SQLite m
8290: 61 79 20 63 68 61 6e 67 65 20 74 6f 20 65 6e 61  ay change to ena
82a0: 62 6c 65 20 74 68 69 73 20 66 65 61 74 75 72 65  ble this feature
82b0: 0a 20 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d  .  by default..}
82c0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
82d0: 7b 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43 4f  {SQLITE_ALLOW_CO
82e0: 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41  VERING_INDEX_SCA
82f0: 4e 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26  N=<i>&lt;0 or 1&
8300: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
8310: 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 20 6d  s C-preprocess m
8320: 61 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20  acro determines 
8330: 74 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74  the default sett
8340: 69 6e 67 20 6f 66 20 74 68 65 0a 20 20 5b 53 51  ing of the.  [SQ
8350: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45  LITE_CONFIG_COVE
8360: 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 5d  RING_INDEX_SCAN]
8370: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73   configuration s
8380: 65 74 74 69 6e 67 2e 20 20 49 74 20 64 65 66 61  etting.  It defa
8390: 75 6c 74 73 0a 20 20 74 6f 20 31 20 28 6f 6e 29  ults.  to 1 (on)
83a0: 20 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68 61   which means tha
83b0: 74 20 63 6f 76 65 72 69 6e 67 20 69 6e 64 69 63  t covering indic
83c0: 65 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20  es are used for 
83d0: 66 75 6c 6c 20 74 61 62 6c 65 0a 20 20 73 63 61  full table.  sca
83e0: 6e 73 20 77 68 65 72 65 20 70 6f 73 73 69 62 6c  ns where possibl
83f0: 65 2c 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 72  e, in order to r
8400: 65 64 75 63 65 20 49 2f 4f 20 61 6e 64 20 69 6d  educe I/O and im
8410: 70 72 6f 76 65 20 70 65 72 66 6f 72 6d 61 6e 63  prove performanc
8420: 65 2e 0a 20 20 48 6f 77 65 76 65 72 2c 20 74 68  e..  However, th
8430: 65 20 75 73 65 20 6f 66 20 61 20 63 6f 76 65 72  e use of a cover
8440: 69 6e 67 20 69 6e 64 65 78 20 66 6f 72 20 61 20  ing index for a 
8450: 66 75 6c 6c 20 73 63 61 6e 20 77 69 6c 6c 20 63  full scan will c
8460: 61 75 73 65 20 72 65 73 75 6c 74 73 0a 20 20 74  ause results.  t
8470: 6f 20 61 70 70 65 61 72 20 69 6e 20 61 20 64 69  o appear in a di
8480: 66 66 65 72 65 6e 74 20 6f 72 64 65 72 20 66 72  fferent order fr
8490: 6f 6d 20 6c 65 67 61 63 79 2c 20 77 68 69 63 68  om legacy, which
84a0: 20 63 6f 75 6c 64 20 63 61 75 73 65 20 73 6f 6d   could cause som
84b0: 65 0a 20 20 28 69 6e 63 6f 72 72 65 63 74 6c 79  e.  (incorrectly
84c0: 2d 63 6f 64 65 64 29 20 6c 65 67 61 63 79 20 61  -coded) legacy a
84d0: 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20 62  pplications to b
84e0: 72 65 61 6b 2e 20 20 48 65 6e 63 65 2c 20 74 68  reak.  Hence, th
84f0: 65 20 63 6f 76 65 72 69 6e 67 0a 20 20 69 6e 64  e covering.  ind
8500: 65 78 20 73 63 61 6e 20 6f 70 74 69 6f 6e 20 63  ex scan option c
8510: 61 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 61  an be disabled a
8520: 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  t compile-time o
8530: 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 77  n systems that w
8540: 68 61 74 0a 20 20 74 6f 20 6d 69 6e 69 6d 69 7a  hat.  to minimiz
8550: 65 20 74 68 65 69 72 20 72 69 73 6b 20 6f 66 20  e their risk of 
8560: 65 78 70 6f 73 69 6e 67 20 65 72 72 6f 72 73 20  exposing errors 
8570: 69 6e 20 6c 65 67 61 63 79 20 61 70 70 6c 69 63  in legacy applic
8580: 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  ations..}..COMPI
8590: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
85a0: 45 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d  E_ENABLE_8_3_NAM
85b0: 45 53 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 32  ES=<i>&lt;1 or 2
85c0: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66  &gt;</i>} {.  If
85d0: 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65   this C-preproce
85e0: 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65  ssor macro is de
85f0: 66 69 6e 65 64 2c 20 74 68 65 6e 20 65 78 74 72  fined, then extr
8600: 61 20 63 6f 64 65 20 69 73 0a 20 20 69 6e 63 6c  a code is.  incl
8610: 75 64 65 64 20 74 68 61 74 20 61 6c 6c 6f 77 73  uded that allows
8620: 20 53 51 4c 69 74 65 20 74 6f 20 66 75 6e 63 74   SQLite to funct
8630: 69 6f 6e 20 6f 6e 20 61 20 66 69 6c 65 73 79 73  ion on a filesys
8640: 74 65 6d 20 74 68 61 74 0a 20 20 6f 6e 6c 79 20  tem that.  only 
8650: 73 75 70 70 6f 72 74 20 38 2b 33 20 66 69 6c 65  support 8+3 file
8660: 6e 61 6d 65 73 2e 20 20 49 66 20 74 68 65 20 76  names.  If the v
8670: 61 6c 75 65 20 6f 66 20 74 68 69 73 20 6d 61 63  alue of this mac
8680: 72 6f 20 69 73 20 31 2c 0a 20 20 74 68 65 6e 20  ro is 1,.  then 
8690: 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61  the default beha
86a0: 76 69 6f 72 20 69 73 20 74 6f 20 63 6f 6e 74 69  vior is to conti
86b0: 6e 75 65 20 74 6f 20 75 73 65 20 6c 6f 6e 67 20  nue to use long 
86c0: 66 69 6c 65 6e 61 6d 65 73 20 61 6e 64 0a 20 20  filenames and.  
86d0: 74 6f 20 6f 6e 6c 79 20 75 73 65 20 38 2b 33 20  to only use 8+3 
86e0: 66 69 6c 65 6e 61 6d 65 73 20 69 66 20 74 68 65  filenames if the
86f0: 20 0a 20 20 64 61 74 61 62 61 73 65 20 63 6f 6e   .  database con
8700: 6e 65 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 65  nection is opene
8710: 64 20 75 73 69 6e 67 20 5b 55 52 49 20 66 69 6c  d using [URI fil
8720: 65 6e 61 6d 65 73 5d 20 77 69 74 68 0a 20 20 74  enames] with.  t
8730: 68 65 20 22 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65  he "<tt>8_3_name
8740: 73 3d 31 3c 2f 74 74 3e 22 20 71 75 65 72 79 20  s=1</tt>" query 
8750: 70 61 72 61 6d 65 74 65 72 2e 20 20 49 66 20 74  parameter.  If t
8760: 68 65 20 76 61 6c 75 65 20 6f 66 0a 20 20 74 68  he value of.  th
8770: 69 73 20 6d 61 63 72 6f 20 69 73 20 32 2c 20 74  is macro is 2, t
8780: 68 65 6e 20 74 68 65 20 75 73 65 20 6f 66 20 38  hen the use of 8
8790: 2b 33 20 66 69 6c 65 6e 61 6d 65 73 20 62 65 63  +3 filenames bec
87a0: 6f 6d 65 73 20 74 68 65 20 64 65 66 61 75 6c 74  omes the default
87b0: 0a 20 20 62 75 74 20 6d 61 79 20 62 65 20 64 69  .  but may be di
87c0: 73 61 62 6c 65 64 20 6f 6e 20 75 73 69 6e 67 20  sabled on using 
87d0: 74 68 65 20 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65  the <tt>8_3_name
87e0: 73 3d 30 3c 2f 74 74 3e 20 71 75 65 72 79 20 70  s=0</tt> query p
87f0: 61 72 61 6d 65 74 65 72 2e 0a 7d 0a 0a 43 4f 4d  arameter..}..COM
8800: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
8810: 49 54 45 5f 45 4e 41 42 4c 45 5f 41 50 49 5f 41  ITE_ENABLE_API_A
8820: 52 4d 4f 52 7d 20 7b 0a 20 20 57 68 65 6e 20 64  RMOR} {.  When d
8830: 65 66 69 6e 65 64 2c 20 74 68 69 73 20 43 2d 70  efined, this C-p
8840: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
8850: 6f 20 61 63 74 69 76 61 74 65 73 20 65 78 74 72  o activates extr
8860: 61 20 63 6f 64 65 20 74 68 61 74 0a 20 20 61 74  a code that.  at
8870: 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65 63 74  tempts to detect
8880: 20 6d 69 73 75 73 65 20 6f 66 20 74 68 65 20 53   misuse of the S
8890: 51 4c 69 74 65 20 41 50 49 2c 20 73 75 63 68 20  QLite API, such 
88a0: 61 73 20 70 61 73 73 69 6e 67 20 69 6e 20 4e 55  as passing in NU
88b0: 4c 4c 0a 20 20 70 6f 69 6e 74 65 72 73 20 74 6f  LL.  pointers to
88c0: 20 72 65 71 75 69 72 65 64 20 70 61 72 61 6d 65   required parame
88d0: 74 65 72 73 20 6f 72 20 75 73 69 6e 67 20 6f 62  ters or using ob
88e0: 6a 65 63 74 73 20 61 66 74 65 72 20 74 68 65 79  jects after they
88f0: 20 68 61 76 65 20 62 65 65 6e 0a 20 20 64 65 73   have been.  des
8900: 74 72 6f 79 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  troyed..}..COMPI
8910: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
8920: 45 5f 45 4e 41 42 4c 45 5f 41 54 4f 4d 49 43 5f  E_ENABLE_ATOMIC_
8930: 57 52 49 54 45 7d 20 7b 0a 20 20 49 66 20 74 68  WRITE} {.  If th
8940: 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f  is C-preprocesso
8950: 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e  r macro is defin
8960: 65 64 20 61 6e 64 20 69 66 20 74 68 65 0a 20 20  ed and if the.  
8970: 78 44 65 76 69 63 65 43 68 61 72 61 63 74 65 72  xDeviceCharacter
8980: 69 73 74 69 63 73 20 6d 65 74 68 6f 64 20 6f 66  istics method of
8990: 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74   [sqlite3_io_met
89a0: 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 66 6f 72  hods] object for
89b0: 0a 20 20 61 20 64 61 74 61 62 61 73 65 20 66 69  .  a database fi
89c0: 6c 65 20 72 65 70 6f 72 74 73 20 28 76 69 61 20  le reports (via 
89d0: 6f 6e 65 20 6f 66 20 74 68 65 20 5b 53 51 4c 49  one of the [SQLI
89e0: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 5d  TE_IOCAP_ATOMIC]
89f0: 20 62 69 74 73 29 0a 20 20 74 68 61 74 20 74 68   bits).  that th
8a00: 65 20 66 69 6c 65 73 79 73 74 65 6d 20 73 75 70  e filesystem sup
8a10: 70 6f 72 74 73 20 61 74 6f 6d 69 63 20 77 72 69  ports atomic wri
8a20: 74 65 73 20 61 6e 64 20 69 66 20 61 20 74 72 61  tes and if a tra
8a30: 6e 73 61 63 74 69 6f 6e 0a 20 20 69 6e 76 6f 6c  nsaction.  invol
8a40: 76 65 73 20 61 20 63 68 61 6e 67 65 20 74 6f 20  ves a change to 
8a50: 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 70 61  only a single pa
8a60: 67 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  ge of the databa
8a70: 73 65 20 66 69 6c 65 2c 0a 20 20 74 68 65 6e 20  se file,.  then 
8a80: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
8a90: 63 6f 6d 6d 69 74 73 20 77 69 74 68 20 6a 75 73  commits with jus
8aa0: 74 20 61 20 73 69 6e 67 6c 65 20 77 72 69 74 65  t a single write
8ab0: 20 72 65 71 75 65 73 74 20 6f 66 0a 20 20 61 20   request of.  a 
8ac0: 73 69 6e 67 6c 65 20 70 61 67 65 20 6f 66 20 74  single page of t
8ad0: 68 65 20 64 61 74 61 62 61 73 65 20 61 6e 64 20  he database and 
8ae0: 6e 6f 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72  no rollback jour
8af0: 6e 61 6c 20 69 73 20 63 72 65 61 74 65 64 0a 20  nal is created. 
8b00: 20 6f 72 20 77 72 69 74 74 65 6e 2e 20 20 4f 6e   or written.  On
8b10: 20 66 69 6c 65 73 79 73 74 65 6d 73 20 74 68 61   filesystems tha
8b20: 74 20 73 75 70 70 6f 72 74 20 61 74 6f 6d 69 63  t support atomic
8b30: 20 77 72 69 74 65 73 2c 20 74 68 69 73 0a 20 20   writes, this.  
8b40: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 63 61 6e  optimization can
8b50: 20 72 65 73 75 6c 74 20 69 6e 20 73 69 67 6e 69   result in signi
8b60: 66 69 63 61 6e 74 20 73 70 65 65 64 20 69 6d 70  ficant speed imp
8b70: 72 6f 76 65 6d 65 6e 74 73 20 66 6f 72 0a 20 20  rovements for.  
8b80: 73 6d 61 6c 6c 20 75 70 64 61 74 65 73 2e 20 20  small updates.  
8b90: 48 6f 77 65 76 65 72 2c 20 66 65 77 20 66 69 6c  However, few fil
8ba0: 65 73 79 73 74 65 6d 73 20 73 75 70 70 6f 72 74  esystems support
8bb0: 20 74 68 69 73 20 63 61 70 61 62 69 6c 69 74 79   this capability
8bc0: 0a 20 20 61 6e 64 20 74 68 65 20 63 6f 64 65 20  .  and the code 
8bd0: 70 61 74 68 73 20 74 68 61 74 20 63 68 65 63 6b  paths that check
8be0: 20 66 6f 72 20 74 68 69 73 20 63 61 70 61 62 69   for this capabi
8bf0: 6c 69 74 79 20 73 6c 6f 77 20 64 6f 77 6e 20 77  lity slow down w
8c00: 72 69 74 65 0a 20 20 70 65 72 66 6f 72 6d 61 6e  rite.  performan
8c10: 63 65 20 6f 6e 20 73 79 73 74 65 6d 73 20 74 68  ce on systems th
8c20: 61 74 20 6c 61 63 6b 20 61 74 6f 6d 69 63 20 77  at lack atomic w
8c30: 72 69 74 65 20 63 61 70 61 62 69 6c 69 74 79 2c  rite capability,
8c40: 20 73 6f 20 74 68 69 73 0a 20 20 66 65 61 74 75   so this.  featu
8c50: 72 65 20 69 73 20 64 69 73 61 62 6c 65 64 20 62  re is disabled b
8c60: 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a 43 4f  y default..}..CO
8c70: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
8c80: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 42 41 54 43  LITE_ENABLE_BATC
8c90: 48 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 7d 20  H_ATOMIC_WRITE} 
8ca0: 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65  {.  This compile
8cb0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 65 6e 61  -time option ena
8cc0: 62 6c 65 73 20 53 51 4c 69 74 65 20 74 6f 20 74  bles SQLite to t
8cd0: 61 6b 65 20 61 64 76 61 6e 74 61 67 65 20 62 61  ake advantage ba
8ce0: 74 63 68 0a 20 20 61 74 6f 6d 69 63 20 77 72 69  tch.  atomic wri
8cf0: 74 65 20 63 61 70 61 62 69 6c 69 74 69 65 73 20  te capabilities 
8d00: 69 6e 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e  in the underlyin
8d10: 67 20 66 69 6c 65 73 79 73 74 65 6d 2e 20 20 41  g filesystem.  A
8d20: 73 20 6f 66 0a 20 20 53 51 4c 69 74 65 20 76 65  s of.  SQLite ve
8d30: 72 73 69 6f 6e 20 33 2e 32 31 2e 30 20 28 5b 64  rsion 3.21.0 ([d
8d40: 61 74 65 6f 66 3a 33 2e 32 31 2e 30 5d 29 20 74  ateof:3.21.0]) t
8d50: 68 69 73 20 69 73 20 6f 6e 6c 79 20 73 75 70 70  his is only supp
8d60: 6f 72 74 65 64 20 6f 6e 0a 20 20 5b 68 74 74 70  orted on.  [http
8d70: 73 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61  s://en.wikipedia
8d80: 2e 6f 72 67 2f 77 69 6b 69 2f 46 32 46 53 7c 46  .org/wiki/F2FS|F
8d90: 32 46 53 5d 2e 20 20 48 6f 77 65 76 65 72 2c 20  2FS].  However, 
8da0: 74 68 65 20 69 6e 74 65 72 66 61 63 65 0a 20 20  the interface.  
8db0: 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 67  is implemented g
8dc0: 65 6e 65 72 69 63 61 6c 6c 79 2c 20 75 73 69 6e  enerically, usin
8dd0: 67 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  g [sqlite3_file_
8de0: 63 6f 6e 74 72 6f 6c 28 29 5d 20 77 69 74 68 0a  control()] with.
8df0: 20 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f    [SQLITE_FCNTL_
8e00: 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49  BEGIN_ATOMIC_WRI
8e10: 54 45 5d 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f  TE] and [SQLITE_
8e20: 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f  FCNTL_COMMIT_ATO
8e30: 4d 49 43 5f 57 52 49 54 45 5d 0a 20 20 73 6f 20  MIC_WRITE].  so 
8e40: 74 68 65 20 63 61 70 61 62 69 6c 69 74 79 20 63  the capability c
8e50: 61 6e 20 62 65 20 61 64 64 65 64 20 74 6f 20 6f  an be added to o
8e60: 74 68 65 72 20 66 69 6c 65 73 79 73 74 65 6d 20  ther filesystem 
8e70: 74 69 6d 65 73 20 69 6e 20 74 68 65 0a 20 20 66  times in the.  f
8e80: 75 74 75 72 65 2e 20 20 57 68 65 6e 20 74 68 69  uture.  When thi
8e90: 73 20 6f 70 74 69 6f 6e 20 69 73 20 65 6e 61 62  s option is enab
8ea0: 6c 65 64 2c 20 53 51 4c 69 74 65 20 61 75 74 6f  led, SQLite auto
8eb0: 6d 61 74 69 63 61 6c 6c 79 20 64 65 74 65 63 74  matically detect
8ec0: 73 0a 20 20 74 68 61 74 20 74 68 65 20 75 6e 64  s.  that the und
8ed0: 65 72 6c 79 69 6e 67 20 66 69 6c 65 73 79 73 74  erlying filesyst
8ee0: 65 6d 20 73 75 70 70 6f 72 74 73 20 62 61 74 63  em supports batc
8ef0: 68 20 61 74 6f 6d 69 63 20 77 72 69 74 65 73 2c  h atomic writes,
8f00: 20 61 6e 64 0a 20 20 77 68 65 6e 20 69 74 20 64   and.  when it d
8f10: 6f 65 73 20 73 6f 20 69 74 20 61 76 6f 69 64 73  oes so it avoids
8f20: 20 77 72 69 74 69 6e 67 20 74 68 65 20 5b 72 6f   writing the [ro
8f30: 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20  llback journal] 
8f40: 66 6f 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a  for transaction.
8f50: 20 20 63 6f 6e 74 72 6f 6c 2e 20 20 54 68 69 73    control.  This
8f60: 20 63 61 6e 20 6d 61 6b 65 20 74 72 61 6e 73 61   can make transa
8f70: 63 74 69 6f 6e 73 20 6f 76 65 72 20 74 77 69 63  ctions over twic
8f80: 65 20 61 73 20 66 61 73 74 2c 20 77 68 69 6c 65  e as fast, while
8f90: 0a 20 20 73 69 6d 75 6c 74 61 6e 65 6f 75 73 6c  .  simultaneousl
8fa0: 79 20 72 65 64 75 63 69 6e 67 20 77 65 61 72 20  y reducing wear 
8fb0: 6f 6e 20 53 53 44 20 73 74 6f 72 61 67 65 20 64  on SSD storage d
8fc0: 65 76 69 63 65 73 2e 0a 3c 70 3e 0a 20 20 46 75  evices..<p>.  Fu
8fd0: 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66  ture versions of
8fe0: 20 53 51 4c 69 74 65 20 6d 69 67 68 74 20 65 6e   SQLite might en
8ff0: 61 62 6c 65 20 74 68 65 20 62 61 74 63 68 2d 61  able the batch-a
9000: 74 6f 6d 69 63 2d 77 72 69 74 65 0a 20 20 63 61  tomic-write.  ca
9010: 70 61 62 69 6c 69 74 79 20 62 79 20 64 65 66 61  pability by defa
9020: 75 6c 74 2c 20 61 74 20 77 68 69 63 68 20 70 6f  ult, at which po
9030: 69 6e 74 20 74 68 69 73 20 63 6f 6d 70 69 6c 65  int this compile
9040: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 0a 20 20 77  -time option.  w
9050: 69 6c 6c 20 62 65 63 6f 6d 65 20 73 75 70 65 72  ill become super
9060: 66 6c 75 6f 75 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  fluous..}..COMPI
9070: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
9080: 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e 5f  E_ENABLE_COLUMN_
9090: 4d 45 54 41 44 41 54 41 7d 20 7b 0a 20 20 57 68  METADATA} {.  Wh
90a0: 65 6e 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f  en this C-prepro
90b0: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20  cessor macro is 
90c0: 64 65 66 69 6e 65 64 2c 20 53 51 4c 69 74 65 20  defined, SQLite 
90d0: 69 6e 63 6c 75 64 65 73 20 73 6f 6d 65 0a 20 20  includes some.  
90e0: 61 64 64 69 74 69 6f 6e 61 6c 20 41 50 49 73 20  additional APIs 
90f0: 74 68 61 74 20 70 72 6f 76 69 64 65 20 63 6f 6e  that provide con
9100: 76 65 6e 69 65 6e 74 20 61 63 63 65 73 73 20 74  venient access t
9110: 6f 20 6d 65 74 61 2d 64 61 74 61 20 61 62 6f 75  o meta-data abou
9120: 74 0a 20 20 74 61 62 6c 65 73 20 61 6e 64 20 71  t.  tables and q
9130: 75 65 72 69 65 73 2e 20 20 54 68 65 20 41 50 49  ueries.  The API
9140: 73 20 74 68 61 74 20 61 72 65 20 65 6e 61 62 6c  s that are enabl
9150: 65 64 20 62 79 20 74 68 69 73 20 6f 70 74 69 6f  ed by this optio
9160: 6e 20 61 72 65 3a 0a 0a 20 20 3c 75 6c 3e 0a 20  n are:..  <ul>. 
9170: 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63   <li> [sqlite3_c
9180: 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
9190: 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c  ame()] </li>.  <
91a0: 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  li> [sqlite3_col
91b0: 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d  umn_database_nam
91c0: 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c  e16()] </li>.  <
91d0: 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  li> [sqlite3_col
91e0: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 29  umn_table_name()
91f0: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b  ] </li>.  <li> [
9200: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
9210: 61 62 6c 65 5f 6e 61 6d 65 31 36 28 29 5d 20 3c  able_name16()] <
9220: 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c  /li>.  <li> [sql
9230: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67  ite3_column_orig
9240: 69 6e 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e  in_name()] </li>
9250: 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33  .  <li> [sqlite3
9260: 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e  _column_origin_n
9270: 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20  ame16()] </li>. 
9280: 20 3c 2f 75 6c 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c   </ul>.}..COMPIL
9290: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
92a0: 5f 45 4e 41 42 4c 45 5f 44 42 50 41 47 45 5f 56  _ENABLE_DBPAGE_V
92b0: 54 41 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  TAB} {.  This op
92c0: 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65  tion enables the
92d0: 20 0a 20 20 5b 68 74 74 70 73 3a 2f 2f 73 71 6c   .  [https://sql
92e0: 69 74 65 2e 6f 72 67 2f 73 72 63 2f 66 69 6c 65  ite.org/src/file
92f0: 2f 73 72 63 2f 64 62 70 61 67 65 2e 63 7c 73 71  /src/dbpage.c|sq
9300: 6c 69 74 65 5f 64 62 70 61 67 65 20 76 69 72 74  lite_dbpage virt
9310: 75 61 6c 20 74 61 62 6c 65 5d 2e 0a 7d 0a 0a 43  ual table]..}..C
9320: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9330: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 44 42 53  QLITE_ENABLE_DBS
9340: 54 41 54 5f 56 54 41 42 7d 20 7b 0a 20 20 54 68  TAT_VTAB} {.  Th
9350: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
9360: 73 20 74 68 65 20 5b 64 62 73 74 61 74 20 76 69  s the [dbstat vi
9370: 72 74 75 61 6c 20 74 61 62 6c 65 5d 2e 0a 7d 0a  rtual table]..}.
9380: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
9390: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 44  {SQLITE_ENABLE_D
93a0: 45 53 45 52 49 41 4c 49 5a 45 7d 20 7b 0a 20 20  ESERIALIZE} {.  
93b0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62  This option enab
93c0: 6c 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33  les the [sqlite3
93d0: 5f 73 65 72 69 61 6c 69 7a 65 28 29 5d 20 61 6e  _serialize()] an
93e0: 64 20 5b 73 71 6c 69 74 65 33 5f 64 65 73 65 72  d [sqlite3_deser
93f0: 69 61 6c 69 7a 65 28 29 5d 0a 20 20 69 6e 74 65  ialize()].  inte
9400: 72 66 61 63 65 73 2e 0a 20 20 3c 70 3e 0a 20 20  rfaces..  <p>.  
9410: 46 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 20  Future releases 
9420: 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68 74 20  of SQLite might 
9430: 65 6e 61 62 6c 65 20 74 68 6f 73 65 20 69 6e 74  enable those int
9440: 65 72 66 61 63 65 73 20 62 79 20 64 65 66 61 75  erfaces by defau
9450: 6c 74 20 61 6e 64 0a 20 20 69 6e 73 74 65 61 64  lt and.  instead
9460: 20 6f 66 66 65 72 20 61 6e 20 53 51 4c 49 54 45   offer an SQLITE
9470: 5f 4f 4d 49 54 5f 44 45 53 45 52 49 41 4c 49 5a  _OMIT_DESERIALIZ
9480: 45 20 6f 70 74 69 6f 6e 20 74 6f 20 6c 65 61 76  E option to leav
9490: 65 20 74 68 65 6d 20 6f 75 74 2e 0a 7d 0a 0a 43  e them out..}..C
94a0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
94b0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45 58 50  QLITE_ENABLE_EXP
94c0: 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53 7d 20 7b  LAIN_COMMENTS} {
94d0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61  .  This option a
94e0: 64 64 73 20 65 78 74 72 61 20 6c 6f 67 69 63 20  dds extra logic 
94f0: 74 6f 20 53 51 4c 69 74 65 20 74 68 61 74 20 69  to SQLite that i
9500: 6e 73 65 72 74 73 20 63 6f 6d 6d 65 6e 74 20 74  nserts comment t
9510: 65 78 74 20 69 6e 74 6f 20 74 68 65 0a 20 20 6f  ext into the.  o
9520: 75 74 70 75 74 20 6f 66 20 5b 45 58 50 4c 41 49  utput of [EXPLAI
9530: 4e 5d 2e 20 20 54 68 65 73 65 20 65 78 74 72 61  N].  These extra
9540: 20 63 6f 6d 6d 65 6e 74 73 20 75 73 65 20 65 78   comments use ex
9550: 74 72 61 20 6d 65 6d 6f 72 79 2c 20 74 68 75 73  tra memory, thus
9560: 0a 20 20 6d 61 6b 69 6e 67 20 5b 70 72 65 70 61  .  making [prepa
9570: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73 5d 20  red statements] 
9580: 6c 61 72 67 65 72 20 61 6e 64 20 76 65 72 79 20  larger and very 
9590: 73 6c 69 67 68 74 6c 79 20 73 6c 6f 77 65 72 2c  slightly slower,
95a0: 20 61 6e 64 20 73 6f 20 74 68 65 79 20 61 72 65   and so they are
95b0: 0a 20 20 74 75 72 6e 65 64 20 6f 66 66 20 62 79  .  turned off by
95c0: 20 64 65 66 61 75 6c 74 20 61 6e 64 20 69 6e 20   default and in 
95d0: 6d 6f 73 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  most application
95e0: 2e 20 20 42 75 74 20 73 6f 6d 65 20 61 70 70 6c  .  But some appl
95f0: 69 63 61 74 69 6f 6e 73 2c 20 73 75 63 68 0a 20  ications, such. 
9600: 20 61 73 20 74 68 65 20 5b 63 6f 6d 6d 61 6e 64   as the [command
9610: 2d 6c 69 6e 65 20 73 68 65 6c 6c 5d 20 66 6f 72  -line shell] for
9620: 20 53 51 4c 69 74 65 2c 20 76 61 6c 75 65 20 63   SQLite, value c
9630: 6c 61 72 69 74 79 20 6f 66 20 45 58 50 4c 41 49  larity of EXPLAI
9640: 4e 20 6f 75 74 70 75 74 0a 20 20 6f 76 65 72 20  N output.  over 
9650: 72 61 77 20 70 65 72 66 6f 72 6d 61 6e 63 65 20  raw performance 
9660: 61 6e 64 20 73 6f 20 74 68 69 73 20 63 6f 6d 70  and so this comp
9670: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
9680: 69 73 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20  is available to 
9690: 74 68 65 6d 2e 0a 20 20 54 68 65 20 53 51 4c 49  them..  The SQLI
96a0: 54 45 5f 45 4e 41 42 4c 45 5f 45 58 50 4c 41 49  TE_ENABLE_EXPLAI
96b0: 4e 5f 43 4f 4d 4d 45 4e 54 53 20 63 6f 6d 70 69  N_COMMENTS compi
96c0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
96d0: 73 20 61 6c 73 6f 20 65 6e 61 62 6c 65 64 0a 20  s also enabled. 
96e0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69   automatically i
96f0: 66 20 5b 53 51 4c 49 54 45 5f 44 45 42 55 47 5d  f [SQLITE_DEBUG]
9700: 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a 7d 0a 0a   is enabled..}..
9710: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
9720: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46  {SQLITE_ENABLE_F
9730: 54 53 33 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  TS3} {.  When th
9740: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
9750: 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 61 6d 61  ined in the [ama
9760: 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73  lgamation], vers
9770: 69 6f 6e 20 33 0a 20 20 6f 66 20 74 68 65 20 66  ion 3.  of the f
9780: 75 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20  ull-text search 
9790: 65 6e 67 69 6e 65 20 69 73 20 61 64 64 65 64 20  engine is added 
97a0: 74 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75 74  to the build aut
97b0: 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43  omatically..}..C
97c0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
97d0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53  QLITE_ENABLE_FTS
97e0: 33 5f 50 41 52 45 4e 54 48 45 53 49 53 7d 20 7b  3_PARENTHESIS} {
97f0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d  .  This option m
9800: 6f 64 69 66 69 65 73 20 74 68 65 20 71 75 65 72  odifies the quer
9810: 79 20 70 61 74 74 65 72 6e 20 70 61 72 73 65 72  y pattern parser
9820: 20 69 6e 20 46 54 53 33 20 73 75 63 68 20 74 68   in FTS3 such th
9830: 61 74 20 69 74 0a 20 20 73 75 70 70 6f 72 74 73  at it.  supports
9840: 20 6f 70 65 72 61 74 6f 72 73 20 41 4e 44 20 61   operators AND a
9850: 6e 64 20 4e 4f 54 20 28 69 6e 20 61 64 64 69 74  nd NOT (in addit
9860: 69 6f 6e 20 74 6f 20 74 68 65 20 75 73 75 61 6c  ion to the usual
9870: 20 4f 52 20 61 6e 64 20 4e 45 41 52 29 0a 20 20   OR and NEAR).  
9880: 61 6e 64 20 61 6c 73 6f 20 61 6c 6c 6f 77 73 20  and also allows 
9890: 71 75 65 72 79 20 65 78 70 72 65 73 73 69 6f 6e  query expression
98a0: 73 20 74 6f 20 63 6f 6e 74 61 69 6e 20 6e 65 73  s to contain nes
98b0: 74 65 64 20 70 61 72 65 6e 74 68 65 73 69 73 2e  ted parenthesis.
98c0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
98d0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
98e0: 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52  E_FTS3_TOKENIZER
98f0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
9900: 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20 74 77  n enables the tw
9910: 6f 2d 61 72 67 75 6d 65 6e 74 20 76 65 72 73 69  o-argument versi
9920: 6f 6e 20 6f 66 20 74 68 65 20 5b 66 74 73 33 5f  on of the [fts3_
9930: 74 6f 6b 65 6e 69 7a 65 72 28 29 5d 0a 20 20 69  tokenizer()].  i
9940: 6e 74 65 72 66 61 63 65 2e 20 20 54 68 65 20 73  nterface.  The s
9950: 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74  econd argument t
9960: 6f 20 66 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72  o fts3_tokenizer
9970: 28 29 20 69 73 20 73 75 70 70 6f 73 65 20 74 6f  () is suppose to
9980: 20 62 65 20 61 0a 20 20 70 6f 69 6e 74 65 72 20   be a.  pointer 
9990: 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20 28 65  to a function (e
99a0: 6e 63 6f 64 65 64 20 61 73 20 61 20 42 4c 4f 42  ncoded as a BLOB
99b0: 29 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74  ) that implement
99c0: 73 20 61 6e 0a 20 20 61 70 70 6c 69 63 61 74 69  s an.  applicati
99d0: 6f 6e 20 64 65 66 69 6e 65 64 20 74 6f 6b 65 6e  on defined token
99e0: 69 7a 65 72 2e 20 20 49 66 20 68 6f 73 74 69 6c  izer.  If hostil
99f0: 65 20 61 63 74 6f 72 73 20 61 72 65 20 61 62 6c  e actors are abl
9a00: 65 20 74 6f 20 72 75 6e 0a 20 20 74 68 65 20 74  e to run.  the t
9a10: 77 6f 2d 61 72 67 75 6d 65 6e 74 20 76 65 72 73  wo-argument vers
9a20: 69 6f 6e 20 6f 66 20 66 74 73 33 5f 74 6f 6b 65  ion of fts3_toke
9a30: 6e 69 7a 65 72 28 29 20 77 69 74 68 20 61 6e 20  nizer() with an 
9a40: 61 72 62 69 74 72 61 72 79 20 73 65 63 6f 6e 64  arbitrary second
9a50: 0a 20 20 61 72 67 75 6d 65 6e 74 2c 20 74 68 65  .  argument, the
9a60: 79 20 63 6f 75 6c 64 20 75 73 65 20 63 72 61 73  y could use cras
9a70: 68 20 6f 72 20 74 61 6b 65 20 63 6f 6e 74 72 6f  h or take contro
9a80: 6c 20 6f 66 20 74 68 65 20 70 72 6f 63 65 73 73  l of the process
9a90: 2e 20 0a 20 20 3c 70 3e 0a 20 20 42 65 63 61 75  . .  <p>.  Becau
9aa0: 73 65 20 6f 66 20 73 65 63 75 72 69 74 79 20 63  se of security c
9ab0: 6f 6e 63 65 72 6e 73 2c 20 74 68 65 20 74 77 6f  oncerns, the two
9ac0: 2d 61 72 67 75 6d 65 6e 74 20 66 74 73 33 5f 74  -argument fts3_t
9ad0: 6f 6b 65 6e 69 7a 65 72 28 29 20 66 65 61 74 75  okenizer() featu
9ae0: 72 65 20 0a 20 20 77 61 73 20 64 69 73 61 62 6c  re .  was disabl
9af0: 65 64 20 62 65 67 69 6e 6e 69 6e 67 20 77 69 74  ed beginning wit
9b00: 68 20 5b 56 65 72 73 69 6f 6e 20 33 2e 31 31 2e  h [Version 3.11.
9b10: 30 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e 31 31  0] ([dateof:3.11
9b20: 2e 30 5d 29 0a 20 20 75 6e 6c 65 73 73 20 74 68  .0]).  unless th
9b30: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  is compile-time 
9b40: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a  option is used..
9b50: 20 20 5b 56 65 72 73 69 6f 6e 20 33 2e 31 32 2e    [Version 3.12.
9b60: 30 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e 31 32  0] ([dateof:3.12
9b70: 2e 30 5d 29 20 61 64 64 65 64 20 74 68 65 20 0a  .0]) added the .
9b80: 20 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f    [sqlite3_db_co
9b90: 6e 66 69 67 5d 28 64 62 2c 5b 53 51 4c 49 54 45  nfig](db,[SQLITE
9ba0: 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
9bb0: 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 5d  _FTS3_TOKENIZER]
9bc0: 2c 31 2c 30 29 20 69 6e 74 65 72 66 61 63 65 0a  ,1,0) interface.
9bd0: 20 20 74 68 61 74 20 61 63 74 69 76 61 74 65 73    that activates
9be0: 20 74 68 65 20 74 77 6f 2d 61 72 67 75 6d 65 6e   the two-argumen
9bf0: 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 5b 66 74  t version of [ft
9c00: 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 5d 0a  s3_tokenizer()].
9c10: 20 20 66 6f 72 20 61 20 73 70 65 63 69 66 69 63    for a specific
9c20: 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
9c30: 63 74 69 6f 6e 5d 20 61 74 20 72 75 6e 2d 74 69  ction] at run-ti
9c40: 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  me..}..COMPILE_O
9c50: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
9c60: 41 42 4c 45 5f 46 54 53 34 7d 20 7b 0a 20 20 57  ABLE_FTS4} {.  W
9c70: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
9c80: 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68  is defined in th
9c90: 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d  e [amalgamation]
9ca0: 2c 20 76 65 72 73 69 6f 6e 73 20 33 20 61 6e 64  , versions 3 and
9cb0: 20 34 0a 20 20 6f 66 20 74 68 65 20 66 75 6c 6c   4.  of the full
9cc0: 2d 74 65 78 74 20 73 65 61 72 63 68 20 65 6e 67  -text search eng
9cd0: 69 6e 65 20 69 73 20 61 64 64 65 64 20 74 6f 20  ine is added to 
9ce0: 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f 6d 61  the build automa
9cf0: 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50  tically..}..COMP
9d00: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
9d10: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 35 7d 20  TE_ENABLE_FTS5} 
9d20: 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  {.  When this op
9d30: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 20  tion is defined 
9d40: 69 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61  in the [amalgama
9d50: 74 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e 73 20  tion], versions 
9d60: 35 0a 20 20 6f 66 20 74 68 65 20 66 75 6c 6c 2d  5.  of the full-
9d70: 74 65 78 74 20 73 65 61 72 63 68 20 65 6e 67 69  text search engi
9d80: 6e 65 20 28 5b 66 74 73 35 5d 29 20 69 73 20 61  ne ([fts5]) is a
9d90: 64 64 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c  dded to the buil
9da0: 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e  d automatically.
9db0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9dc0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
9dd0: 45 5f 49 43 55 7d 20 7b 0a 20 20 54 68 69 73 20  E_ICU} {.  This 
9de0: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
9df0: 65 20 0a 20 20 5b 68 74 74 70 3a 2f 2f 77 77 77  e .  [http://www
9e00: 2e 69 63 75 2d 70 72 6f 6a 65 63 74 2e 6f 72 67  .icu-project.org
9e10: 2f 20 7c 20 49 6e 74 65 72 6e 61 74 69 6f 6e 61  / | Internationa
9e20: 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73 20 66 6f 72  l Components for
9e30: 20 55 6e 69 63 6f 64 65 5d 0a 20 20 6f 72 20 22   Unicode].  or "
9e40: 49 43 55 22 20 65 78 74 65 6e 73 69 6f 6e 20 74  ICU" extension t
9e50: 6f 20 53 51 4c 69 74 65 20 74 6f 20 62 65 20 61  o SQLite to be a
9e60: 64 64 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c  dded to the buil
9e70: 64 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  d.  .}..COMPILE_
9e80: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
9e90: 4e 41 42 4c 45 5f 49 4f 54 52 41 43 45 7d 20 7b  NABLE_IOTRACE} {
9ea0: 0a 20 20 57 68 65 6e 20 62 6f 74 68 20 74 68 65  .  When both the
9eb0: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 61 6e 64   SQLite core and
9ec0: 20 74 68 65 20 5b 43 6f 6d 6d 61 6e 64 20 4c 69   the [Command Li
9ed0: 6e 65 20 49 6e 74 65 72 66 61 63 65 5d 20 28 43  ne Interface] (C
9ee0: 4c 49 29 20 61 72 65 20 62 6f 74 68 20 0a 20 20  LI) are both .  
9ef0: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68  compiled with th
9f00: 69 73 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20  is option, then 
9f10: 74 68 65 20 43 4c 49 20 70 72 6f 76 69 64 65 73  the CLI provides
9f20: 20 61 6e 20 65 78 74 72 61 20 63 6f 6d 6d 61 6e   an extra comman
9f30: 64 0a 20 20 6e 61 6d 65 64 20 22 2e 69 6f 74 72  d.  named ".iotr
9f40: 61 63 65 22 20 74 68 61 74 20 70 72 6f 76 69 64  ace" that provid
9f50: 65 73 20 61 20 6c 6f 77 2d 6c 65 76 65 6c 20 6c  es a low-level l
9f60: 6f 67 20 6f 66 20 49 2f 4f 20 61 63 74 69 76 69  og of I/O activi
9f70: 74 79 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  ty..  This optio
9f80: 6e 20 69 73 20 65 78 70 65 72 69 6d 65 6e 74 61  n is experimenta
9f90: 6c 20 61 6e 64 20 6d 61 79 20 62 65 20 64 69 73  l and may be dis
9fa0: 63 6f 6e 74 69 6e 75 65 64 20 69 6e 20 61 20 66  continued in a f
9fb0: 75 74 75 72 65 20 72 65 6c 65 61 73 65 2e 0a 7d  uture release..}
9fc0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
9fd0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
9fe0: 4a 53 4f 4e 31 7d 20 7b 0a 20 20 57 68 65 6e 20  JSON1} {.  When 
9ff0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
a000: 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 61  efined in the [a
a010: 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 74 68  malgamation], th
a020: 65 0a 20 20 5b 4a 53 4f 4e 20 53 51 4c 20 66 75  e.  [JSON SQL fu
a030: 6e 63 74 69 6f 6e 73 5d 20 61 72 65 20 61 64 64  nctions] are add
a040: 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20  ed to the build 
a050: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d  automatically..}
a060: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
a070: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
a080: 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 7d 20 7b  LOCKING_STYLE} {
a090: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65  .  This option e
a0a0: 6e 61 62 6c 65 73 20 61 64 64 69 74 69 6f 6e 61  nables additiona
a0b0: 6c 20 6c 6f 67 69 63 20 69 6e 20 74 68 65 20 4f  l logic in the O
a0c0: 53 20 69 6e 74 65 72 66 61 63 65 20 6c 61 79 65  S interface laye
a0d0: 72 20 66 6f 72 0a 20 20 4d 61 63 20 4f 53 20 58  r for.  Mac OS X
a0e0: 2e 20 54 68 65 20 61 64 64 69 74 69 6f 6e 61 6c  . The additional
a0f0: 20 6c 6f 67 69 63 20 61 74 74 65 6d 70 74 73 20   logic attempts 
a100: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
a110: 20 74 79 70 65 20 6f 66 20 74 68 65 0a 20 20 75   type of the.  u
a120: 6e 64 65 72 6c 79 69 6e 67 20 66 69 6c 65 73 79  nderlying filesy
a130: 73 74 65 6d 20 61 6e 64 20 63 68 6f 6f 73 65 20  stem and choose 
a140: 61 6e 64 20 61 6c 74 65 72 6e 61 74 69 76 65 20  and alternative 
a150: 6c 6f 63 6b 69 6e 67 20 73 74 72 61 74 65 67 79  locking strategy
a160: 0a 20 20 74 68 61 74 20 77 6f 72 6b 73 20 63 6f  .  that works co
a170: 72 72 65 63 74 6c 79 20 66 6f 72 20 74 68 61 74  rrectly for that
a180: 20 66 69 6c 65 73 79 73 74 65 6d 20 74 79 70 65   filesystem type
a190: 2e 20 46 69 76 65 20 6c 6f 63 6b 69 6e 67 20 73  . Five locking s
a1a0: 74 72 61 74 65 67 69 65 73 20 0a 20 20 61 72 65  trategies .  are
a1b0: 20 61 76 61 69 6c 61 62 6c 65 3a 0a 0a 20 20 3c   available:..  <
a1c0: 75 6c 3e 0a 20 20 20 20 3c 6c 69 3e 20 50 4f 53  ul>.    <li> POS
a1d0: 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  IX locking style
a1e0: 2e 20 54 68 69 73 20 69 73 20 74 68 65 20 64 65  . This is the de
a1f0: 66 61 75 6c 74 20 6c 6f 63 6b 69 6e 67 20 73 74  fault locking st
a200: 79 6c 65 20 61 6e 64 20 74 68 65 0a 20 20 20 20  yle and the.    
a210: 20 20 20 20 20 73 74 79 6c 65 20 75 73 65 64 20       style used 
a220: 62 79 20 6f 74 68 65 72 20 28 6e 6f 6e 20 4d 61  by other (non Ma
a230: 63 20 4f 53 20 58 29 20 55 6e 69 78 65 73 2e 20  c OS X) Unixes. 
a240: 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61 69 6e  Locks are obtain
a250: 65 64 20 61 6e 64 20 0a 20 20 20 20 20 20 20 20  ed and .        
a260: 20 72 65 6c 65 61 73 65 64 20 75 73 69 6e 67 20   released using 
a270: 74 68 65 20 66 63 6e 74 6c 28 29 20 73 79 73 74  the fcntl() syst
a280: 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20 3c 6c  em call...    <l
a290: 69 3e 20 41 46 50 20 6c 6f 63 6b 69 6e 67 20 73  i> AFP locking s
a2a0: 74 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63 6b 69  tyle. This locki
a2b0: 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73 65 64  ng style is used
a2c0: 20 66 6f 72 20 6e 65 74 77 6f 72 6b 20 66 69 6c   for network fil
a2d0: 65 20 0a 20 20 20 20 20 20 20 20 20 73 79 73 74  e .         syst
a2e0: 65 6d 73 20 74 68 61 74 20 75 73 65 20 74 68 65  ems that use the
a2f0: 20 41 46 50 20 28 41 70 70 6c 65 20 46 69 6c 69   AFP (Apple Fili
a300: 6e 67 20 50 72 6f 74 6f 63 6f 6c 29 20 70 72 6f  ng Protocol) pro
a310: 74 6f 63 6f 6c 2e 20 4c 6f 63 6b 73 0a 20 20 20  tocol. Locks.   
a320: 20 20 20 20 20 20 61 72 65 20 6f 62 74 61 69 6e        are obtain
a330: 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 74 68  ed by calling th
a340: 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69  e library functi
a350: 6f 6e 20 5f 41 46 50 46 53 53 65 74 4c 6f 63 6b  on _AFPFSSetLock
a360: 28 29 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 46 6c  ()...    <li> Fl
a370: 6f 63 6b 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  ock locking styl
a380: 65 2e 20 54 68 69 73 20 69 73 20 75 73 65 64 20  e. This is used 
a390: 66 6f 72 20 66 69 6c 65 2d 73 79 73 74 65 6d 73  for file-systems
a3a0: 20 74 68 61 74 20 64 6f 20 6e 6f 74 0a 20 20 20   that do not.   
a3b0: 20 20 20 20 20 20 73 75 70 70 6f 72 74 20 50 4f        support PO
a3c0: 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  SIX locking styl
a3d0: 65 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74  e. Locks are obt
a3e0: 61 69 6e 65 64 20 61 6e 64 20 72 65 6c 65 61 73  ained and releas
a3f0: 65 64 20 75 73 69 6e 67 0a 20 20 20 20 20 20 20  ed using.       
a400: 20 20 74 68 65 20 66 6c 6f 63 6b 28 29 20 73 79    the flock() sy
a410: 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20  stem call...    
a420: 3c 6c 69 3e 20 44 6f 74 2d 66 69 6c 65 20 6c 6f  <li> Dot-file lo
a430: 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54 68 69  cking style. Thi
a440: 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20  s locking style 
a450: 69 73 20 75 73 65 64 20 77 68 65 6e 20 6e 65 69  is used when nei
a460: 74 68 65 72 0a 20 20 20 20 20 20 20 20 20 66 6c  ther.         fl
a470: 6f 63 6b 20 6e 6f 72 20 50 4f 53 49 58 20 6c 6f  ock nor POSIX lo
a480: 63 6b 69 6e 67 20 73 74 79 6c 65 73 20 61 72 65  cking styles are
a490: 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68   supported by th
a4a0: 65 20 66 69 6c 65 20 73 79 73 74 65 6d 2e 0a 20  e file system.. 
a4b0: 20 20 20 20 20 20 20 20 44 61 74 61 62 61 73 65          Database
a4c0: 20 6c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61 69   locks are obtai
a4d0: 6e 65 64 20 62 79 20 63 72 65 61 74 69 6e 67 20  ned by creating 
a4e0: 61 6e 64 20 65 6e 74 72 79 20 69 6e 20 74 68 65  and entry in the
a4f0: 20 66 69 6c 65 2d 73 79 73 74 65 6d 0a 20 20 20   file-system.   
a500: 20 20 20 20 20 20 61 74 20 61 20 77 65 6c 6c 2d        at a well-
a510: 6b 6e 6f 77 6e 20 6c 6f 63 61 74 69 6f 6e 20 72  known location r
a520: 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 64  elative to the d
a530: 61 74 61 62 61 73 65 20 66 69 6c 65 20 28 61 20  atabase file (a 
a540: 22 64 6f 74 2d 66 69 6c 65 22 29 0a 20 20 20 20  "dot-file").    
a550: 20 20 20 20 20 61 6e 64 20 72 65 6c 69 6e 71 75       and relinqu
a560: 69 73 68 65 64 20 62 79 20 64 65 6c 65 74 69 6e  ished by deletin
a570: 67 20 74 68 65 20 73 61 6d 65 20 66 69 6c 65 2e  g the same file.
a580: 0a 0a 20 20 20 20 3c 6c 69 3e 20 4e 6f 20 6c 6f  ..    <li> No lo
a590: 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 49 66 20  cking style. If 
a5a0: 6e 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76  none of the abov
a5b0: 65 20 63 61 6e 20 62 65 20 73 75 70 70 6f 72 74  e can be support
a5c0: 65 64 2c 20 74 68 69 73 20 0a 20 20 20 20 20 20  ed, this .      
a5d0: 20 20 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65     locking style
a5e0: 20 69 73 20 75 73 65 64 2e 20 4e 6f 20 64 61 74   is used. No dat
a5f0: 61 62 61 73 65 20 6c 6f 63 6b 69 6e 67 20 6d 65  abase locking me
a600: 63 68 61 6e 69 73 6d 20 69 73 20 75 73 65 64 2e  chanism is used.
a610: 20 57 68 65 6e 0a 20 20 20 20 20 20 20 20 20 74   When.         t
a620: 68 69 73 20 73 79 73 74 65 6d 20 69 73 20 75 73  his system is us
a630: 65 64 20 69 74 20 69 73 20 6e 6f 74 20 73 61 66  ed it is not saf
a640: 65 20 66 6f 72 20 61 20 73 69 6e 67 6c 65 20 64  e for a single d
a650: 61 74 61 62 61 73 65 20 74 6f 20 62 65 0a 20 20  atabase to be.  
a660: 20 20 20 20 20 20 20 61 63 63 65 73 73 65 64 20         accessed 
a670: 62 79 20 6d 75 6c 74 69 70 6c 65 20 63 6c 69 65  by multiple clie
a680: 6e 74 73 2e 0a 20 20 3c 2f 75 6c 3e 0a 0a 20 20  nts..  </ul>..  
a690: 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 66 69  Additionally, fi
a6a0: 76 65 20 65 78 74 72 61 20 5b 56 46 53 5d 20 69  ve extra [VFS] i
a6b0: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 61  mplementations a
a6c0: 72 65 20 70 72 6f 76 69 64 65 64 20 61 73 20 77  re provided as w
a6d0: 65 6c 6c 20 61 73 20 74 68 65 0a 20 20 64 65 66  ell as the.  def
a6e0: 61 75 6c 74 2e 20 42 79 20 73 70 65 63 69 66 79  ault. By specify
a6f0: 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 20 65  ing one of the e
a700: 78 74 72 61 20 56 46 53 20 69 6d 70 6c 65 6d 65  xtra VFS impleme
a710: 6e 74 61 74 69 6f 6e 73 20 0a 20 20 77 68 65 6e  ntations .  when
a720: 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69 74 65   calling [sqlite
a730: 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61 6e  3_open_v2()], an
a740: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79   application may
a750: 20 62 79 70 61 73 73 20 74 68 65 20 66 69 6c 65   bypass the file
a760: 2d 73 79 73 74 65 6d 0a 20 20 64 65 74 65 63 74  -system.  detect
a770: 69 6f 6e 20 6c 6f 67 69 63 20 61 6e 64 20 65 78  ion logic and ex
a780: 70 6c 69 63 69 74 6c 79 20 73 65 6c 65 63 74 20  plicitly select 
a790: 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65  one of the above
a7a0: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73 2e   locking styles.
a7b0: 20 54 68 65 0a 20 20 66 69 76 65 20 65 78 74 72   The.  five extr
a7c0: 61 20 5b 56 46 53 5d 20 69 6d 70 6c 65 6d 65 6e  a [VFS] implemen
a7d0: 74 61 74 69 6f 6e 73 20 61 72 65 20 63 61 6c 6c  tations are call
a7e0: 65 64 20 22 75 6e 69 78 2d 70 6f 73 69 78 22 2c  ed "unix-posix",
a7f0: 20 22 75 6e 69 78 2d 61 66 70 22 2c 0a 20 20 22   "unix-afp",.  "
a800: 75 6e 69 78 2d 66 6c 6f 63 6b 22 2c 20 22 75 6e  unix-flock", "un
a810: 69 78 2d 64 6f 74 66 69 6c 65 22 20 61 6e 64 20  ix-dotfile" and 
a820: 22 75 6e 69 78 2d 6e 6f 6e 65 22 2e 0a 7d 0a 0a  "unix-none"..}..
a830: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a840: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45  SQLITE_ENABLE_ME
a850: 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e 54 7d  MORY_MANAGEMENT}
a860: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
a870: 20 61 64 64 73 20 65 78 74 72 61 20 6c 6f 67 69   adds extra logi
a880: 63 20 74 6f 20 53 51 4c 69 74 65 20 74 68 61 74  c to SQLite that
a890: 20 61 6c 6c 6f 77 73 20 69 74 20 74 6f 20 72 65   allows it to re
a8a0: 6c 65 61 73 65 20 75 6e 75 73 65 64 0a 20 20 6d  lease unused.  m
a8b0: 65 6d 6f 72 79 20 75 70 6f 6e 20 72 65 71 75 65  emory upon reque
a8c0: 73 74 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  st.  This option
a8d0: 20 6d 75 73 74 20 62 65 20 65 6e 61 62 6c 65 64   must be enabled
a8e0: 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68   in order for th
a8f0: 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c  e.  [sqlite3_rel
a900: 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69  ease_memory()] i
a910: 6e 74 65 72 66 61 63 65 20 74 6f 20 77 6f 72 6b  nterface to work
a920: 2e 20 20 49 66 20 74 68 69 73 20 63 6f 6d 70 69  .  If this compi
a930: 6c 65 2d 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e  le-time.  option
a940: 20 69 73 20 6e 6f 74 20 75 73 65 64 2c 20 74 68   is not used, th
a950: 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65 61  e [sqlite3_relea
a960: 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74  se_memory()] int
a970: 65 72 66 61 63 65 20 69 73 20 61 20 0a 20 20 6e  erface is a .  n
a980: 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  o-op..}..COMPILE
a990: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
a9a0: 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 7d 20  ENABLE_MEMSYS3} 
a9b0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
a9c0: 69 6e 63 6c 75 64 65 73 20 63 6f 64 65 20 69 6e  includes code in
a9d0: 20 53 51 4c 69 74 65 20 74 68 61 74 20 69 6d 70   SQLite that imp
a9e0: 6c 65 6d 65 6e 74 73 20 61 6e 20 61 6c 74 65 72  lements an alter
a9f0: 6e 61 74 69 76 65 0a 20 20 6d 65 6d 6f 72 79 20  native.  memory 
aa00: 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 54 68 69 73  allocator.  This
aa10: 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6d 65 6d   alternative mem
aa20: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  ory allocator is
aa30: 20 6f 6e 6c 79 20 65 6e 67 61 67 65 64 0a 20 20   only engaged.  
aa40: 77 68 65 6e 20 74 68 65 20 5b 53 51 4c 49 54 45  when the [SQLITE
aa50: 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 20 6f 70  _CONFIG_HEAP] op
aa60: 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33  tion to [sqlite3
aa70: 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73 20 75 73  _config()] is us
aa80: 65 64 20 74 6f 0a 20 20 73 75 70 70 6c 79 20 61  ed to.  supply a
aa90: 20 6c 61 72 67 65 20 63 68 75 6e 6b 20 6f 66 20   large chunk of 
aaa0: 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 77 68 69 63  memory from whic
aab0: 68 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c  h all memory all
aac0: 6f 63 61 74 69 6f 6e 73 20 61 72 65 0a 20 20 74  ocations are.  t
aad0: 61 6b 65 6e 2e 0a 20 20 54 68 65 20 4d 45 4d 53  aken..  The MEMS
aae0: 59 53 33 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  YS3 memory alloc
aaf0: 61 74 6f 72 20 75 73 65 73 20 61 20 68 79 62 72  ator uses a hybr
ab00: 69 64 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 61 6c  id allocation al
ab10: 67 6f 72 69 74 68 6d 20 0a 20 20 70 61 74 74 65  gorithm .  patte
ab20: 72 6e 65 64 20 61 66 74 65 72 20 64 6c 6d 61 6c  rned after dlmal
ab30: 6c 6f 63 28 29 2e 20 20 20 4f 6e 6c 79 20 6f 6e  loc().   Only on
ab40: 65 20 6f 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  e of SQLITE_ENAB
ab50: 4c 45 5f 4d 45 4d 53 59 53 33 20 61 6e 64 20 0a  LE_MEMSYS3 and .
ab60: 20 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f    SQLITE_ENABLE_
ab70: 4d 45 4d 53 59 53 35 20 6d 61 79 20 62 65 20 65  MEMSYS5 may be e
ab80: 6e 61 62 6c 65 64 20 61 74 20 6f 6e 63 65 2e 0a  nabled at once..
ab90: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
aba0: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
abb0: 5f 4d 45 4d 53 59 53 35 7d 20 7b 0a 20 20 54 68  _MEMSYS5} {.  Th
abc0: 69 73 20 6f 70 74 69 6f 6e 20 69 6e 63 6c 75 64  is option includ
abd0: 65 73 20 63 6f 64 65 20 69 6e 20 53 51 4c 69 74  es code in SQLit
abe0: 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74  e that implement
abf0: 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65  s an alternative
ac00: 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  .  memory alloca
ac10: 74 6f 72 2e 20 20 54 68 69 73 20 61 6c 74 65 72  tor.  This alter
ac20: 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c  native memory al
ac30: 6c 6f 63 61 74 6f 72 20 69 73 20 6f 6e 6c 79 20  locator is only 
ac40: 65 6e 67 61 67 65 64 0a 20 20 77 68 65 6e 20 74  engaged.  when t
ac50: 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  he [SQLITE_CONFI
ac60: 47 5f 48 45 41 50 5d 20 6f 70 74 69 6f 6e 20 74  G_HEAP] option t
ac70: 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  o [sqlite3_confi
ac80: 67 28 29 5d 20 69 73 20 75 73 65 64 20 74 6f 0a  g()] is used to.
ac90: 20 20 73 75 70 70 6c 79 20 61 20 6c 61 72 67 65    supply a large
aca0: 20 63 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f 72 79   chunk of memory
acb0: 20 66 72 6f 6d 20 77 68 69 63 68 20 61 6c 6c 20   from which all 
acc0: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
acd0: 6e 73 20 61 72 65 0a 20 20 74 61 6b 65 6e 2e 0a  ns are.  taken..
ace0: 20 20 54 68 65 20 4d 45 4d 53 59 53 35 20 6d 6f    The MEMSYS5 mo
acf0: 64 75 6c 65 20 72 6f 75 6e 64 73 20 61 6c 6c 20  dule rounds all 
ad00: 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 75 70 20 74  allocations up t
ad10: 6f 20 74 68 65 20 6e 65 78 74 20 70 6f 77 65 72  o the next power
ad20: 0a 20 20 6f 66 20 74 77 6f 20 61 6e 64 20 75 73  .  of two and us
ad30: 65 73 20 61 20 66 69 72 73 74 2d 66 69 74 2c 20  es a first-fit, 
ad40: 62 75 64 64 79 2d 61 6c 6c 6f 63 61 74 6f 72 20  buddy-allocator 
ad50: 61 6c 67 6f 72 69 74 68 6d 0a 20 20 74 68 61 74  algorithm.  that
ad60: 20 70 72 6f 76 69 64 65 73 20 73 74 72 6f 6e 67   provides strong
ad70: 20 67 75 61 72 61 6e 74 65 65 73 20 61 67 61 69   guarantees agai
ad80: 6e 73 74 20 66 72 61 67 6d 65 6e 74 61 74 69 6f  nst fragmentatio
ad90: 6e 20 61 6e 64 20 62 72 65 61 6b 64 6f 77 6e 0a  n and breakdown.
ada0: 20 20 73 75 62 6a 65 63 74 20 74 6f 20 63 65 72    subject to cer
adb0: 74 61 69 6e 20 6f 70 65 72 61 74 69 6e 67 20 63  tain operating c
adc0: 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 7d 0a 0a 43  onstraints..}..C
add0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
ade0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4e 55 4c  QLITE_ENABLE_NUL
adf0: 4c 5f 54 52 49 4d 7d 20 7b 0a 20 20 54 68 69 73  L_TRIM} {.  This
ae00: 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20   option enables 
ae10: 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20  an optimization 
ae20: 74 68 61 74 20 6f 6d 69 74 73 20 4e 55 4c 4c 20  that omits NULL 
ae30: 63 6f 6c 75 6d 6e 73 20 61 74 0a 20 20 74 68 65  columns at.  the
ae40: 20 65 6e 64 73 20 6f 66 20 72 6f 77 73 2c 20 66   ends of rows, f
ae50: 6f 72 20 61 20 73 70 61 63 65 20 73 61 76 69 6e  or a space savin
ae60: 67 73 20 6f 6e 20 64 69 73 6b 2e 0a 20 20 3c 70  gs on disk..  <p
ae70: 3e 0a 20 20 44 61 74 61 62 61 73 65 73 20 67 65  >.  Databases ge
ae80: 6e 65 72 61 74 65 64 20 77 69 74 68 20 74 68 69  nerated with thi
ae90: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 64  s option enabled
aea0: 20 61 72 65 20 6e 6f 74 20 72 65 61 64 61 62 6c   are not readabl
aeb0: 65 0a 20 20 62 79 20 53 51 4c 69 74 65 20 76 65  e.  by SQLite ve
aec0: 72 73 69 6f 6e 20 33 2e 31 2e 36 20 28 5b 64 61  rsion 3.1.6 ([da
aed0: 74 65 6f 66 3a 33 2e 31 2e 36 5d 29 20 61 6e 64  teof:3.1.6]) and
aee0: 20 65 61 72 6c 69 65 72 2e 20 20 41 6c 73 6f 2c   earlier.  Also,
aef0: 0a 20 20 64 61 74 61 62 61 73 65 73 20 67 65 6e  .  databases gen
af00: 65 72 61 74 65 64 20 77 69 74 68 20 74 68 69 73  erated with this
af10: 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 64 20   option enabled 
af20: 61 72 65 20 70 72 6f 6e 65 20 74 6f 0a 20 20 74  are prone to.  t
af30: 72 69 67 67 65 72 69 6e 67 20 74 68 65 0a 20 20  riggering the.  
af40: 5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e 73 71 6c  [https://www.sql
af50: 69 74 65 2e 6f 72 67 2f 73 72 63 2f 69 6e 66 6f  ite.org/src/info
af60: 2f 65 36 65 39 36 32 64 36 62 30 66 30 36 66 34  /e6e962d6b0f06f4
af70: 36 65 7c 65 36 65 39 36 32 64 36 62 30 66 30 36  6e|e6e962d6b0f06
af80: 66 34 36 5d 0a 20 20 62 75 67 20 69 6e 20 74 68  f46].  bug in th
af90: 65 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f  e [sqlite3_blob_
afa0: 72 65 6f 70 65 6e 28 29 5d 20 69 6e 74 65 72 66  reopen()] interf
afb0: 61 63 65 2e 20 20 46 6f 72 20 74 68 6f 73 65 20  ace.  For those 
afc0: 72 65 61 73 6f 6e 73 2c 0a 20 20 74 68 69 73 20  reasons,.  this 
afd0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 69 73 20  optimization is 
afe0: 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66 61  disabled by defa
aff0: 75 6c 74 2e 20 20 48 6f 77 65 76 65 72 2c 20 74  ult.  However, t
b000: 68 69 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  his optimization
b010: 0a 20 20 6d 61 79 20 62 65 20 65 6e 61 62 6c 65  .  may be enable
b020: 64 20 62 79 20 64 65 66 61 75 6c 74 20 69 6e 20  d by default in 
b030: 61 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65  a future release
b040: 20 6f 66 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43   of SQLite..}..C
b050: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
b060: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4f 46 46  QLITE_ENABLE_OFF
b070: 53 45 54 5f 53 51 4c 5f 46 55 4e 43 7d 20 7b 0a  SET_SQL_FUNC} {.
b080: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
b090: 61 62 6c 65 73 20 73 75 70 70 6f 72 74 20 66 6f  ables support fo
b0a0: 72 20 74 68 65 20 5b 73 71 6c 69 74 65 5f 6f 66  r the [sqlite_of
b0b0: 66 73 65 74 28 58 29 5d 20 53 51 4c 20 66 75 6e  fset(X)] SQL fun
b0c0: 63 74 69 6f 6e 2e 0a 20 20 3c 70 3e 0a 20 20 54  ction..  <p>.  T
b0d0: 68 65 20 5b 73 71 6c 69 74 65 5f 6f 66 66 73 65  he [sqlite_offse
b0e0: 74 28 58 29 5d 20 53 51 4c 20 66 75 6e 63 74 69  t(X)] SQL functi
b0f0: 6f 6e 20 72 65 71 75 69 72 65 73 20 61 20 6e 65  on requires a ne
b100: 77 20 69 6e 74 65 72 66 61 63 65 20 6f 6e 20 74  w interface on t
b110: 68 65 0a 20 20 42 2d 74 72 65 65 20 73 74 6f 72  he.  B-tree stor
b120: 61 67 65 20 65 6e 67 69 6e 65 2c 20 61 20 6e 65  age engine, a ne
b130: 77 20 6f 70 63 6f 64 65 20 69 6e 20 74 68 65 20  w opcode in the 
b140: 5b 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65  [virtual machine
b150: 5d 20 74 68 61 74 0a 20 20 72 75 6e 73 20 53 51  ] that.  runs SQ
b160: 4c 20 73 74 61 74 65 6d 65 6e 74 73 2c 20 61 6e  L statements, an
b170: 64 20 61 20 6e 65 77 20 63 6f 6e 64 69 74 69 6f  d a new conditio
b180: 6e 61 6c 20 69 6e 20 61 20 63 72 69 74 69 63 61  nal in a critica
b190: 6c 20 70 61 74 68 20 6f 66 20 74 68 65 0a 20 20  l path of the.  
b1a0: 63 6f 64 65 20 67 65 6e 65 72 61 74 6f 72 2e 20  code generator. 
b1b0: 20 54 6f 20 61 76 6f 69 64 20 74 68 61 74 20 6f   To avoid that o
b1c0: 76 65 72 68 65 61 64 20 69 6e 20 61 70 70 6c 69  verhead in appli
b1d0: 63 61 74 69 6f 6e 73 20 74 68 61 74 20 64 6f 20  cations that do 
b1e0: 6e 6f 74 0a 20 20 6e 65 65 64 20 74 68 65 20 75  not.  need the u
b1f0: 74 69 6c 69 74 79 20 6f 66 20 73 71 6c 69 74 65  tility of sqlite
b200: 5f 6f 66 66 73 65 74 28 58 29 2c 20 74 68 65 20  _offset(X), the 
b210: 66 75 6e 63 74 69 6f 6e 20 69 73 20 64 69 73 61  function is disa
b220: 62 6c 65 64 20 62 79 0a 20 20 64 65 66 61 75 6c  bled by.  defaul
b230: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
b240: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
b250: 42 4c 45 5f 50 52 45 55 50 44 41 54 45 5f 48 4f  BLE_PREUPDATE_HO
b260: 4f 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  OK} {.  This opt
b270: 69 6f 6e 20 65 6e 61 62 6c 65 73 20 0a 20 20 5b  ion enables .  [
b280: 73 71 6c 69 74 65 33 5f 70 72 65 75 70 64 61 74  sqlite3_preupdat
b290: 65 5f 68 6f 6f 6b 7c 73 65 76 65 72 61 6c 20 6e  e_hook|several n
b2a0: 65 77 20 41 50 49 73 5d 20 74 68 61 74 20 70 72  ew APIs] that pr
b2b0: 6f 76 69 64 65 20 63 61 6c 6c 62 61 63 6b 73 0a  ovide callbacks.
b2c0: 20 20 70 72 69 6f 72 20 74 6f 20 61 6e 79 20 63    prior to any c
b2d0: 68 61 6e 67 65 20 74 6f 20 61 20 5b 72 6f 77 69  hange to a [rowi
b2e0: 64 20 74 61 62 6c 65 5d 2e 20 20 54 68 65 20 63  d table].  The c
b2f0: 61 6c 6c 62 61 63 6b 73 20 63 61 6e 20 62 65 20  allbacks can be 
b300: 75 73 65 64 0a 20 20 74 6f 20 72 65 63 6f 72 64  used.  to record
b310: 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74 68   the state of th
b320: 65 20 72 6f 77 20 62 65 66 6f 72 65 20 74 68 65  e row before the
b330: 20 63 68 61 6e 67 65 20 6f 63 63 75 72 73 2e 0a   change occurs..
b340: 20 20 3c 70 3e 54 68 65 20 61 63 74 69 6f 6e 20    <p>The action 
b350: 6f 66 20 74 68 65 20 70 72 65 75 70 64 61 74 65  of the preupdate
b360: 20 68 6f 6f 6b 20 69 73 20 73 69 6d 69 6c 61 72   hook is similar
b370: 20 74 6f 20 74 68 65 0a 20 20 5b 73 71 6c 69 74   to the.  [sqlit
b380: 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 7c 75  e3_update_hook|u
b390: 70 64 61 74 65 20 68 6f 6f 6b 5d 20 65 78 63 65  pdate hook] exce
b3a0: 70 74 20 74 68 61 74 20 74 68 65 20 63 61 6c 6c  pt that the call
b3b0: 62 61 63 6b 20 69 73 0a 20 20 69 6e 76 6f 6b 65  back is.  invoke
b3c0: 64 20 62 65 66 6f 72 65 20 74 68 65 20 63 68 61  d before the cha
b3d0: 6e 67 65 2c 20 6e 6f 74 20 61 66 74 65 72 77 61  nge, not afterwa
b3e0: 72 64 73 2c 20 61 6e 64 20 74 68 65 20 70 72 65  rds, and the pre
b3f0: 75 70 64 61 74 65 0a 20 20 68 6f 6f 6b 20 69 6e  update.  hook in
b400: 74 65 72 66 61 63 65 73 20 61 72 65 20 6f 6d 69  terfaces are omi
b410: 74 74 65 64 20 75 6e 6c 65 73 73 20 74 68 69 73  tted unless this
b420: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
b430: 74 69 6f 6e 20 69 73 0a 20 20 75 73 65 64 2e 0a  tion is.  used..
b440: 20 20 3c 70 3e 54 68 65 20 70 72 65 75 70 64 61    <p>The preupda
b450: 74 65 20 68 6f 6f 6b 20 69 6e 74 65 72 66 61 63  te hook interfac
b460: 65 73 20 77 65 72 65 20 6f 72 69 67 69 6e 61 6c  es were original
b470: 6c 79 20 61 64 64 65 64 20 74 6f 0a 20 20 73 75  ly added to.  su
b480: 70 70 6f 72 74 20 74 68 65 20 5b 73 65 73 73 69  pport the [sessi
b490: 6f 6e 5d 20 65 78 74 65 6e 73 69 6f 6e 2e 0a 7d  on] extension..}
b4a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
b4b0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
b4c0: 51 50 53 47 7d 20 7b 0a 20 20 54 68 69 73 20 6f  QPSG} {.  This o
b4d0: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
b4e0: 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20   [query planner 
b4f0: 73 74 61 62 69 6c 69 74 79 20 67 75 61 72 61 6e  stability guaran
b500: 74 65 65 5d 20 28 51 50 53 47 29 20 74 6f 0a 20  tee] (QPSG) to. 
b510: 20 62 65 20 6f 6e 20 62 79 20 64 65 66 61 75 6c   be on by defaul
b520: 74 2e 20 20 4e 6f 72 6d 61 6c 6c 79 20 74 68 65  t.  Normally the
b530: 20 51 50 53 47 20 69 73 20 6f 66 66 20 61 6e 64   QPSG is off and
b540: 20 6d 75 73 74 20 62 65 20 61 63 74 69 76 61 74   must be activat
b550: 65 64 0a 20 20 61 74 20 72 75 6e 2d 74 69 6d 65  ed.  at run-time
b560: 20 75 73 69 6e 67 20 74 68 65 20 5b 53 51 4c 49   using the [SQLI
b570: 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42  TE_DBCONFIG_ENAB
b580: 4c 45 5f 51 50 53 47 5d 20 6f 70 74 69 6f 6e 20  LE_QPSG] option 
b590: 74 6f 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65  to the.  [sqlite
b5a0: 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d 20 69  3_db_config()] i
b5b0: 6e 74 65 72 66 61 63 65 2e 0a 7d 0a 0a 43 4f 4d  nterface..}..COM
b5c0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
b5d0: 49 54 45 5f 45 4e 41 42 4c 45 5f 52 42 55 7d 20  ITE_ENABLE_RBU} 
b5e0: 7b 0a 20 20 45 6e 61 62 6c 65 20 74 68 65 20 63  {.  Enable the c
b5f0: 6f 64 65 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e  ode the implemen
b600: 74 73 20 74 68 65 20 5b 52 42 55 20 65 78 74 65  ts the [RBU exte
b610: 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  nsion]..}..COMPI
b620: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
b630: 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45 7d 20  E_ENABLE_RTREE} 
b640: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
b650: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
b660: 20 69 6e 63 6c 75 64 65 20 73 75 70 70 6f 72 74   include support
b670: 20 66 6f 72 20 74 68 65 0a 20 20 5b 72 74 72 65   for the.  [rtre
b680: 65 20 7c 20 52 2a 54 72 65 65 20 69 6e 64 65 78  e | R*Tree index
b690: 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a   extension]..}..
b6a0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
b6b0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 45  SQLITE_ENABLE_SE
b6c0: 53 53 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20  SSION} {.  This 
b6d0: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74  option enables t
b6e0: 68 65 20 5b 73 65 73 73 69 6f 6e 20 65 78 74 65  he [session exte
b6f0: 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  nsion]..}..COMPI
b700: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
b710: 45 5f 45 4e 41 42 4c 45 5f 53 54 4d 54 5f 53 43  E_ENABLE_STMT_SC
b720: 41 4e 53 54 41 54 55 53 7d 20 7b 0a 20 20 54 68  ANSTATUS} {.  Th
b730: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
b740: 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  s the [sqlite3_s
b750: 74 6d 74 5f 73 63 61 6e 73 74 61 74 75 73 28 29  tmt_scanstatus()
b760: 5d 20 69 6e 74 65 72 66 61 63 65 2e 20 20 54 68  ] interface.  Th
b770: 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 73 74 6d  e.  [sqlite3_stm
b780: 74 5f 73 63 61 6e 73 74 61 74 75 73 28 29 5d 20  t_scanstatus()] 
b790: 69 6e 74 65 72 66 61 63 65 20 69 73 20 6e 6f 72  interface is nor
b7a0: 6d 61 6c 6c 79 20 6f 6d 69 74 74 65 64 20 66 72  mally omitted fr
b7b0: 6f 6d 20 74 68 65 20 62 75 69 6c 64 0a 20 20 62  om the build.  b
b7c0: 65 63 61 75 73 65 20 69 74 20 69 6d 70 6f 73 65  ecause it impose
b7d0: 73 20 61 20 73 6d 61 6c 6c 20 70 65 72 66 6f 72  s a small perfor
b7e0: 6d 61 6e 63 65 20 70 65 6e 61 6c 74 79 2c 20 65  mance penalty, e
b7f0: 76 65 6e 20 6f 6e 20 73 74 61 74 65 6d 65 6e 74  ven on statement
b800: 73 20 74 68 61 74 0a 20 20 64 6f 20 6e 6f 74 20  s that.  do not 
b810: 75 73 65 20 74 68 65 20 66 65 61 74 75 72 65 2e  use the feature.
b820: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
b830: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
b840: 45 5f 53 54 4d 54 56 54 41 42 7d 20 7b 0a 20 20  E_STMTVTAB} {.  
b850: 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  This compile-tim
b860: 65 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  e option enables
b870: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 53 54 4d   the [SQLITE_STM
b880: 54 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 5d  T virtual table]
b890: 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49   logic..}..COMPI
b8a0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
b8b0: 45 5f 52 54 52 45 45 5f 49 4e 54 5f 4f 4e 4c 59  E_RTREE_INT_ONLY
b8c0: 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70 69  } {.  This compi
b8d0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
b8e0: 73 20 64 65 70 72 65 63 61 74 65 64 20 61 6e 64  s deprecated and
b8f0: 20 75 6e 74 65 73 74 65 64 2e 0a 7d 0a 0a 43 4f   untested..}..CO
b900: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
b910: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c  LITE_ENABLE_SQLL
b920: 4f 47 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  OG} {.  This opt
b930: 69 6f 6e 20 65 6e 61 62 6c 65 73 20 65 78 74 72  ion enables extr
b940: 61 20 63 6f 64 65 20 28 65 73 70 65 63 69 61 6c  a code (especial
b950: 6c 79 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43  ly the [SQLITE_C
b960: 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 5d 0a 20 20  ONFIG_SQLLOG].  
b970: 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74  option to [sqlit
b980: 65 33 5f 63 6f 6e 66 69 67 28 29 5d 29 20 74 68  e3_config()]) th
b990: 61 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  at can be used t
b9a0: 6f 20 63 72 65 61 74 65 20 6c 6f 67 73 20 6f 66  o create logs of
b9b0: 20 61 6c 6c 0a 20 20 53 51 4c 69 74 65 20 70 72   all.  SQLite pr
b9c0: 6f 63 65 73 73 69 6e 67 20 70 65 72 66 6f 72 6d  ocessing perform
b9d0: 65 64 20 62 79 20 61 6e 20 61 70 70 6c 69 63 61  ed by an applica
b9e0: 74 69 6f 6e 2e 20 20 54 68 65 73 65 20 6c 6f 67  tion.  These log
b9f0: 73 20 63 61 6e 20 62 65 20 75 73 65 66 75 6c 0a  s can be useful.
ba00: 20 20 69 6e 20 64 6f 69 6e 67 20 6f 66 66 2d 6c    in doing off-l
ba10: 69 6e 65 20 61 6e 61 6c 79 73 69 73 20 6f 66 20  ine analysis of 
ba20: 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f 66 20  the behavior of 
ba30: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c 20  an application, 
ba40: 61 6e 64 20 65 73 70 65 63 69 61 6c 6c 79 0a 20  and especially. 
ba50: 20 66 6f 72 20 70 65 72 66 6f 72 6d 61 6e 63 65   for performance
ba60: 20 61 6e 61 6c 79 73 69 73 2e 20 20 49 6e 20 6f   analysis.  In o
ba70: 72 64 65 72 20 66 6f 72 20 74 68 65 20 53 51 4c  rder for the SQL
ba80: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f  ITE_ENABLE_SQLLO
ba90: 47 20 6f 70 74 69 6f 6e 20 74 6f 20 0a 20 20 62  G option to .  b
baa0: 65 20 75 73 65 66 75 6c 2c 20 73 6f 6d 65 20 65  e useful, some e
bab0: 78 74 72 61 20 63 6f 64 65 20 69 73 20 72 65 71  xtra code is req
bac0: 75 69 72 65 64 2e 20 20 54 68 65 20 0a 20 20 3c  uired.  The .  <
bad0: 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 77  a href="http://w
bae0: 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 73 72  ww.sqlite.org/sr
baf0: 63 2f 64 6f 63 2f 74 72 75 6e 6b 2f 73 72 63 2f  c/doc/trunk/src/
bb00: 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 3e 22  test_sqllog.c">"
bb10: 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 3c 2f  test_sqllog.c"</
bb20: 61 3e 0a 20 20 73 6f 75 72 63 65 20 63 6f 64 65  a>.  source code
bb30: 0a 20 20 66 69 6c 65 20 69 6e 20 74 68 65 20 53  .  file in the S
bb40: 51 4c 69 74 65 20 73 6f 75 72 63 65 20 74 72 65  QLite source tre
bb50: 65 20 69 73 20 61 20 77 6f 72 6b 69 6e 67 20 65  e is a working e
bb60: 78 61 6d 70 6c 65 20 6f 66 20 74 68 65 20 72 65  xample of the re
bb70: 71 75 69 72 65 64 20 65 78 74 72 61 0a 20 20 63  quired extra.  c
bb80: 6f 64 65 2e 20 20 4f 6e 20 75 6e 69 78 20 61 6e  ode.  On unix an
bb90: 64 20 77 69 6e 64 6f 77 73 20 73 79 73 74 65 6d  d windows system
bba0: 73 2c 20 61 20 64 65 76 65 6c 6f 70 65 72 20 63  s, a developer c
bbb0: 61 6e 20 61 70 70 65 6e 64 20 74 68 65 20 74 65  an append the te
bbc0: 78 74 20 6f 66 20 74 68 65 0a 20 20 22 74 65 73  xt of the.  "tes
bbd0: 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f 75 72  t_sqllog.c" sour
bbe0: 63 65 20 63 6f 64 65 20 66 69 6c 65 20 74 6f 20  ce code file to 
bbf0: 74 68 65 20 65 6e 64 20 6f 66 20 61 6e 20 22 73  the end of an "s
bc00: 71 6c 69 74 65 33 2e 63 22 20 61 6d 61 6c 67 61  qlite3.c" amalga
bc10: 6d 61 74 69 6f 6e 2c 0a 20 20 72 65 63 6f 6d 70  mation,.  recomp
bc20: 69 6c 65 20 74 68 65 20 61 70 70 6c 69 63 61 74  ile the applicat
bc30: 69 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 2d 44  ion using the -D
bc40: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51  SQLITE_ENABLE_SQ
bc50: 4c 4c 4f 47 20 6f 70 74 69 6f 6e 2c 20 74 68 65  LLOG option, the
bc60: 6e 20 0a 20 20 63 6f 6e 74 72 6f 6c 20 6c 6f 67  n .  control log
bc70: 67 69 6e 67 20 75 73 69 6e 67 20 65 6e 76 69 72  ging using envir
bc80: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73  onment variables
bc90: 2e 20 20 53 65 65 20 74 68 65 20 68 65 61 64 65  .  See the heade
bca0: 72 20 63 6f 6d 6d 65 6e 74 20 6f 6e 20 0a 20 20  r comment on .  
bcb0: 74 68 65 20 22 74 65 73 74 5f 73 71 6c 6c 6f 67  the "test_sqllog
bcc0: 2e 63 22 20 73 6f 75 72 63 65 20 66 69 6c 65 20  .c" source file 
bcd0: 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 64  for additional d
bce0: 65 74 61 69 6c 2e 20 20 0a 7d 0a 0a 43 4f 4d 50  etail.  .}..COMP
bcf0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
bd00: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 32 7d  TE_ENABLE_STAT2}
bd10: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
bd20: 20 75 73 65 64 20 74 6f 20 63 61 75 73 65 20 74   used to cause t
bd30: 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d  he [ANALYZE] com
bd40: 6d 61 6e 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a  mand to collect.
bd50: 20 20 69 6e 64 65 78 20 68 69 73 74 6f 67 72 61    index histogra
bd60: 6d 20 64 61 74 61 20 69 6e 20 74 68 65 20 3c 62  m data in the <b
bd70: 3e 73 71 6c 69 74 65 5f 73 74 61 74 32 3c 2f 62  >sqlite_stat2</b
bd80: 3e 20 74 61 62 6c 65 2e 20 20 42 75 74 20 74 68  > table.  But th
bd90: 61 74 0a 20 20 66 75 6e 63 74 69 6f 6e 61 6c 69  at.  functionali
bda0: 74 79 20 77 61 73 20 73 75 70 65 72 63 65 64 65  ty was supercede
bdb0: 64 20 62 79 20 5b 53 51 4c 49 54 45 5f 45 4e 41  d by [SQLITE_ENA
bdc0: 42 4c 45 5f 53 54 41 54 33 5d 20 61 73 20 6f 66  BLE_STAT3] as of
bdd0: 0a 20 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69  .  SQLite [versi
bde0: 6f 6e 20 33 2e 37 2e 39 5d 20 28 5b 64 61 74 65  on 3.7.9] ([date
bdf0: 6f 66 3a 33 2e 37 2e 39 5d 29 2e 20 20 0a 20 20  of:3.7.9]).  .  
be00: 54 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  The SQLITE_ENABL
be10: 45 5f 53 54 41 54 32 20 63 6f 6d 70 69 6c 65 2d  E_STAT2 compile-
be20: 74 69 6d 65 20 6f 70 74 69 6f 6e 0a 20 20 69 73  time option.  is
be30: 20 6e 6f 77 20 61 20 6e 6f 2d 6f 70 2e 0a 7d 0a   now a no-op..}.
be40: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
be50: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  {SQLITE_ENABLE_S
be60: 54 41 54 33 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TAT3} {.  This o
be70: 70 74 69 6f 6e 20 61 64 64 73 20 61 64 64 69 74  ption adds addit
be80: 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 74 6f 20 74  ional logic to t
be90: 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d  he [ANALYZE] com
bea0: 6d 61 6e 64 20 61 6e 64 20 74 6f 0a 20 20 74 68  mand and to.  th
beb0: 65 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72  e [query planner
bec0: 5d 20 74 68 61 74 20 63 61 6e 20 68 65 6c 70 20  ] that can help 
bed0: 53 51 4c 69 74 65 20 74 6f 20 63 68 6f 73 65 20  SQLite to chose 
bee0: 61 20 62 65 74 74 65 72 20 71 75 65 72 79 20 70  a better query p
bef0: 6c 61 6e 0a 20 20 75 6e 64 65 72 20 63 65 72 74  lan.  under cert
bf00: 61 69 6e 20 73 69 74 75 61 74 69 6f 6e 73 2e 20  ain situations. 
bf10: 20 54 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63   The [ANALYZE] c
bf20: 6f 6d 6d 61 6e 64 20 69 73 20 65 6e 68 61 6e 63  ommand is enhanc
bf30: 65 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a 20 20  ed to collect.  
bf40: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66  histogram data f
bf50: 72 6f 6d 20 74 68 65 20 6c 65 66 74 2d 6d 6f 73  rom the left-mos
bf60: 74 20 63 6f 6c 75 6d 6e 20 6f 66 20 65 61 63 68  t column of each
bf70: 20 69 6e 64 65 78 20 61 6e 64 20 73 74 6f 72 65   index and store
bf80: 20 74 68 61 74 20 64 61 74 61 0a 20 20 69 6e 20   that data.  in 
bf90: 74 68 65 20 5b 73 71 6c 69 74 65 5f 73 74 61 74  the [sqlite_stat
bfa0: 33 5d 20 74 61 62 6c 65 2e 20 20 54 68 65 20 71  3] table.  The q
bfb0: 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 77 69 6c  uery planner wil
bfc0: 6c 20 74 68 65 6e 20 75 73 65 20 74 68 65 0a 20  l then use the. 
bfd0: 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20   histogram data 
bfe0: 74 6f 20 68 65 6c 70 20 69 74 20 6d 61 6b 65 20  to help it make 
bff0: 62 65 74 74 65 72 20 69 6e 64 65 78 20 63 68 6f  better index cho
c000: 69 63 65 73 2e 20 20 4e 6f 74 65 2c 20 68 6f 77  ices.  Note, how
c010: 65 76 65 72 2c 0a 20 20 74 68 61 74 20 74 68 65  ever,.  that the
c020: 20 75 73 65 20 6f 66 20 68 69 73 74 6f 67 72 61   use of histogra
c030: 6d 20 64 61 74 61 20 69 6e 20 71 75 65 72 79 20  m data in query 
c040: 70 6c 61 6e 6e 65 72 20 76 69 6f 6c 61 74 65 73  planner violates
c050: 20 74 68 65 0a 20 20 5b 71 75 65 72 79 20 70 6c   the.  [query pl
c060: 61 6e 6e 65 72 20 73 74 61 62 69 6c 69 74 79 20  anner stability 
c070: 67 75 61 72 61 6e 74 65 65 5d 20 77 68 69 63 68  guarantee] which
c080: 20 69 73 20 69 6d 70 6f 72 74 61 6e 74 20 74 6f   is important to
c090: 20 73 6f 6d 65 20 61 70 70 6c 69 63 61 74 69 6f   some applicatio
c0a0: 6e 73 2e 0a 20 20 3c 70 3e 0a 7d 0a 0a 43 4f 4d  ns..  <p>.}..COM
c0b0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
c0c0: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34  ITE_ENABLE_STAT4
c0d0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
c0e0: 6e 20 61 64 64 73 20 61 64 64 69 74 69 6f 6e 61  n adds additiona
c0f0: 6c 20 6c 6f 67 69 63 20 74 6f 20 74 68 65 20 5b  l logic to the [
c100: 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64  ANALYZE] command
c110: 20 61 6e 64 20 74 6f 0a 20 20 74 68 65 20 5b 71   and to.  the [q
c120: 75 65 72 79 20 70 6c 61 6e 6e 65 72 5d 20 74 68  uery planner] th
c130: 61 74 20 63 61 6e 20 68 65 6c 70 20 53 51 4c 69  at can help SQLi
c140: 74 65 20 74 6f 20 63 68 6f 73 65 20 61 20 62 65  te to chose a be
c150: 74 74 65 72 20 71 75 65 72 79 20 70 6c 61 6e 0a  tter query plan.
c160: 20 20 75 6e 64 65 72 20 63 65 72 74 61 69 6e 20    under certain 
c170: 73 69 74 75 61 74 69 6f 6e 73 2e 20 20 54 68 65  situations.  The
c180: 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61   [ANALYZE] comma
c190: 6e 64 20 69 73 20 65 6e 68 61 6e 63 65 64 20 74  nd is enhanced t
c1a0: 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 68 69 73 74  o collect.  hist
c1b0: 6f 67 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20  ogram data from 
c1c0: 61 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 65  all columns of e
c1d0: 76 65 72 79 20 69 6e 64 65 78 20 61 6e 64 20 73  very index and s
c1e0: 74 6f 72 65 20 74 68 61 74 20 64 61 74 61 0a 20  tore that data. 
c1f0: 20 69 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 5f   in the [sqlite_
c200: 73 74 61 74 34 5d 20 74 61 62 6c 65 2e 20 20 54  stat4] table.  T
c210: 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72  he query planner
c220: 20 77 69 6c 6c 20 74 68 65 6e 20 75 73 65 20 74   will then use t
c230: 68 65 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64  he.  histogram d
c240: 61 74 61 20 74 6f 20 68 65 6c 70 20 69 74 20 6d  ata to help it m
c250: 61 6b 65 20 62 65 74 74 65 72 20 69 6e 64 65 78  ake better index
c260: 20 63 68 6f 69 63 65 73 2e 20 20 54 68 65 20 64   choices.  The d
c270: 6f 77 6e 73 69 64 65 20 6f 66 0a 20 20 74 68 69  ownside of.  thi
c280: 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
c290: 70 74 69 6f 6e 20 69 73 20 74 68 61 74 20 69 74  ption is that it
c2a0: 20 76 69 6f 6c 61 74 65 73 20 74 68 65 0a 20 20   violates the.  
c2b0: 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 73  [query planner s
c2c0: 74 61 62 69 6c 69 74 79 20 67 75 61 72 61 6e 74  tability guarant
c2d0: 65 65 5d 20 6d 61 6b 69 6e 67 20 69 74 20 6d 6f  ee] making it mo
c2e0: 72 65 20 64 69 66 66 69 63 75 6c 74 20 74 6f 20  re difficult to 
c2f0: 65 6e 73 75 72 65 0a 20 20 63 6f 6e 73 69 73 74  ensure.  consist
c300: 65 6e 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 20  ent performance 
c310: 69 6e 20 6d 61 73 73 2d 70 72 6f 64 75 63 65 64  in mass-produced
c320: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 20   applications.. 
c330: 20 3c 70 3e 0a 20 20 53 51 4c 49 54 45 5f 45 4e   <p>.  SQLITE_EN
c340: 41 42 4c 45 5f 53 54 41 54 34 20 69 73 20 61 6e  ABLE_STAT4 is an
c350: 20 65 6e 68 61 6e 63 65 6d 65 6e 74 20 6f 66 20   enhancement of 
c360: 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  [SQLITE_ENABLE_S
c370: 54 41 54 33 5d 2e 20 20 53 54 41 54 33 0a 20 20  TAT3].  STAT3.  
c380: 6f 6e 6c 79 20 72 65 63 6f 72 64 65 64 20 68 69  only recorded hi
c390: 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66 6f 72  stogram data for
c3a0: 20 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63   the left-most c
c3b0: 6f 6c 75 6d 6e 20 6f 66 20 65 61 63 68 20 69 6e  olumn of each in
c3c0: 64 65 78 0a 20 20 77 68 65 72 65 61 73 20 74 68  dex.  whereas th
c3d0: 65 20 53 54 41 54 34 20 65 6e 68 61 6e 63 65 6d  e STAT4 enhancem
c3e0: 65 6e 74 20 72 65 63 6f 72 64 73 20 68 69 73 74  ent records hist
c3f0: 6f 67 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20  ogram data from 
c400: 61 6c 6c 20 63 6f 6c 75 6d 6e 73 0a 20 20 6f 66  all columns.  of
c410: 20 65 61 63 68 20 69 6e 64 65 78 2e 0a 20 20 54   each index..  T
c420: 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  he [SQLITE_ENABL
c430: 45 5f 53 54 41 54 33 5d 20 63 6f 6d 70 69 6c 65  E_STAT3] compile
c440: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20  -time option is 
c450: 61 20 6e 6f 2d 6f 70 20 61 6e 64 20 69 73 20 69  a no-op and is i
c460: 67 6e 6f 72 65 64 0a 20 20 69 66 20 74 68 65 20  gnored.  if the 
c470: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
c480: 41 54 34 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  AT4 compile-time
c490: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 2e   option is used.
c4a0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
c4b0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
c4c0: 45 5f 54 52 45 45 5f 45 58 50 4c 41 49 4e 7d 20  E_TREE_EXPLAIN} 
c4d0: 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65  {.  This compile
c4e0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20  -time option is 
c4f0: 6e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64 2e 0a  no longer used..
c500: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
c510: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
c520: 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c  _UPDATE_DELETE_L
c530: 49 4d 49 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f  IMIT} {.  This o
c540: 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 61 6e  ption enables an
c550: 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44 45 52 20   optional ORDER 
c560: 42 59 20 61 6e 64 20 4c 49 4d 49 54 20 63 6c 61  BY and LIMIT cla
c570: 75 73 65 20 6f 6e 20 0a 20 20 5b 55 50 44 41 54  use on .  [UPDAT
c580: 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54 45 5d 20  E] and [DELETE] 
c590: 73 74 61 74 65 6d 65 6e 74 73 2e 0a 0a 20 20 3c  statements...  <
c5a0: 70 3e 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e  p>If this option
c5b0: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
c5c0: 6e 20 69 74 20 6d 75 73 74 20 61 6c 73 6f 20 62  n it must also b
c5d0: 65 20 0a 20 20 64 65 66 69 6e 65 64 20 77 68 65  e .  defined whe
c5e0: 6e 20 75 73 69 6e 67 20 74 68 65 20 5b 4c 65 6d  n using the [Lem
c5f0: 6f 6e 20 70 61 72 73 65 72 20 67 65 6e 65 72 61  on parser genera
c600: 74 6f 72 5d 20 74 6f 6f 6c 20 74 6f 20 67 65 6e  tor] tool to gen
c610: 65 72 61 74 65 20 61 20 70 61 72 73 65 2e 63 0a  erate a parse.c.
c620: 20 20 66 69 6c 65 2e 20 42 65 63 61 75 73 65 20    file. Because 
c630: 6f 66 20 74 68 69 73 2c 20 74 68 69 73 20 6f 70  of this, this op
c640: 74 69 6f 6e 20 6d 61 79 20 6f 6e 6c 79 20 62 65  tion may only be
c650: 20 75 73 65 64 20 77 68 65 6e 20 74 68 65 20 6c   used when the l
c660: 69 62 72 61 72 79 20 69 73 20 62 75 69 6c 74 0a  ibrary is built.
c670: 20 20 66 72 6f 6d 20 73 6f 75 72 63 65 2c 20 6e    from source, n
c680: 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d 61  ot from the [ama
c690: 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 66 72  lgamation] or fr
c6a0: 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f  om the collectio
c6b0: 6e 20 6f 66 0a 20 20 70 72 65 2d 70 61 63 6b 61  n of.  pre-packa
c6c0: 67 65 64 20 43 20 66 69 6c 65 73 20 70 72 6f 76  ged C files prov
c6d0: 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d 55 6e 69  ided for non-Uni
c6e0: 78 20 6c 69 6b 65 20 70 6c 61 74 66 6f 72 6d 73  x like platforms
c6f0: 20 6f 6e 20 74 68 65 20 77 65 62 73 69 74 65 2e   on the website.
c700: 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49  .  </p>.}..COMPI
c710: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
c720: 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e  E_ENABLE_UNKNOWN
c730: 5f 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 7d 20 7b  _SQL_FUNCTION} {
c740: 0a 20 20 57 68 65 6e 20 74 68 65 20 53 51 4c 49  .  When the SQLI
c750: 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57  TE_ENABLE_UNKNOW
c760: 4e 5f 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 20 63  N_SQL_FUNCTION c
c770: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
c780: 6f 6e 20 69 73 0a 20 20 61 63 74 69 76 61 74 65  on is.  activate
c790: 64 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 73  d, SQLite will s
c7a0: 75 70 70 72 65 73 73 20 22 75 6e 6b 6e 6f 77 6e  uppress "unknown
c7b0: 20 66 75 6e 63 74 69 6f 6e 22 20 65 72 72 6f 72   function" error
c7c0: 73 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 0a 20  s when running. 
c7d0: 20 61 6e 20 5b 45 58 50 4c 41 49 4e 5d 20 6f 72   an [EXPLAIN] or
c7e0: 20 5b 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20   [EXPLAIN QUERY 
c7f0: 50 4c 41 4e 5d 2e 20 20 49 6e 73 74 65 61 64 20  PLAN].  Instead 
c800: 6f 66 20 74 68 72 6f 77 69 6e 67 20 61 6e 20 65  of throwing an e
c810: 72 72 6f 72 2c 0a 20 20 53 51 4c 69 74 65 20 77  rror,.  SQLite w
c820: 69 6c 6c 20 69 6e 73 65 72 74 20 61 20 73 75 62  ill insert a sub
c830: 73 74 69 74 75 74 65 20 6e 6f 2d 6f 70 20 66 75  stitute no-op fu
c840: 6e 63 74 69 6f 6e 20 6e 61 6d 65 64 20 22 75 6e  nction named "un
c850: 6b 6e 6f 77 6e 28 29 22 2e 0a 20 20 54 68 65 20  known()"..  The 
c860: 73 75 62 73 74 69 74 75 74 69 6f 6e 20 6f 66 20  substitution of 
c870: 22 75 6e 6b 6e 6f 77 6e 28 29 22 20 69 6e 20 70  "unknown()" in p
c880: 6c 61 63 65 20 6f 66 20 75 6e 72 65 63 6f 67 6e  lace of unrecogn
c890: 69 7a 65 64 20 66 75 6e 63 74 69 6f 6e 73 0a 20  ized functions. 
c8a0: 20 6f 6e 6c 79 20 6f 63 63 75 72 73 20 6f 6e 20   only occurs on 
c8b0: 5b 45 58 50 4c 41 49 4e 5d 20 61 6e 64 20 5b 45  [EXPLAIN] and [E
c8c0: 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c 41  XPLAIN QUERY PLA
c8d0: 4e 5d 2c 20 6e 6f 74 20 6f 6e 20 6f 72 64 69 6e  N], not on ordin
c8e0: 61 72 79 0a 20 20 73 74 61 74 65 6d 65 6e 74 73  ary.  statements
c8f0: 2e 0a 20 20 3c 70 3e 0a 20 20 57 68 65 6e 20 75  ..  <p>.  When u
c900: 73 65 64 20 69 6e 20 74 68 65 20 5b 63 6f 6d 6d  sed in the [comm
c910: 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c 5d 2c  and-line shell],
c920: 20 74 68 65 0a 20 20 53 51 4c 49 54 45 5f 45 4e   the.  SQLITE_EN
c930: 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e 5f 53 51 4c  ABLE_UNKNOWN_SQL
c940: 5f 46 55 4e 43 54 49 4f 4e 20 66 65 61 74 75 72  _FUNCTION featur
c950: 65 20 61 6c 6c 6f 77 73 20 53 51 4c 20 74 65 78  e allows SQL tex
c960: 74 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 0a  t that contains.
c970: 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65    application-de
c980: 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 73 20  fined functions 
c990: 74 6f 20 62 65 20 70 61 73 74 65 64 20 69 6e 74  to be pasted int
c9a0: 6f 20 74 68 65 20 73 68 65 6c 6c 20 66 6f 72 20  o the shell for 
c9b0: 0a 20 20 61 6e 61 6c 79 73 69 73 20 61 6e 64 20  .  analysis and 
c9c0: 64 65 62 75 67 67 69 6e 67 20 77 69 74 68 6f 75  debugging withou
c9d0: 74 20 68 61 76 69 6e 67 20 74 6f 20 63 72 65 61  t having to crea
c9e0: 74 65 20 61 6e 64 20 6c 6f 61 64 20 61 6e 0a 20  te and load an. 
c9f0: 20 65 78 74 65 6e 73 69 6f 6e 20 74 68 61 74 20   extension that 
ca00: 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 61  implements the a
ca10: 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e  pplication-defin
ca20: 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 7d 0a  ed functions..}.
ca30: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
ca40: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55  {SQLITE_ENABLE_U
ca50: 4e 4c 4f 43 4b 5f 4e 4f 54 49 46 59 7d 20 7b 0a  NLOCK_NOTIFY} {.
ca60: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
ca70: 61 62 6c 65 73 20 74 68 65 20 5b 73 71 6c 69 74  ables the [sqlit
ca80: 65 33 5f 75 6e 6c 6f 63 6b 5f 6e 6f 74 69 66 79  e3_unlock_notify
ca90: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 61 6e  ()] interface an
caa0: 64 0a 20 20 69 74 73 20 61 73 73 6f 63 69 61 74  d.  its associat
cab0: 65 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  ed functionality
cac0: 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63 75 6d  .  See the docum
cad0: 65 6e 74 61 74 69 6f 6e 20 74 69 74 6c 65 64 0a  entation titled.
cae0: 20 20 5b 55 73 69 6e 67 20 74 68 65 20 53 51 4c    [Using the SQL
caf0: 69 74 65 20 55 6e 6c 6f 63 6b 20 4e 6f 74 69 66  ite Unlock Notif
cb00: 69 63 61 74 69 6f 6e 20 46 65 61 74 75 72 65 5d  ication Feature]
cb10: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a   for additional.
cb20: 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d    information..}
cb30: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
cb40: 20 7b 53 51 4c 49 54 45 5f 49 4e 54 52 4f 53 50   {SQLITE_INTROSP
cb50: 45 43 54 49 4f 4e 5f 50 52 41 47 4d 41 53 7d 20  ECTION_PRAGMAS} 
cb60: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
cb70: 61 64 64 73 20 73 6f 6d 65 20 65 78 74 72 61 20  adds some extra 
cb80: 50 52 41 47 4d 41 20 73 74 61 74 65 6d 65 6e 74  PRAGMA statement
cb90: 73 20 73 75 63 68 20 61 73 0a 20 20 5b 50 52 41  s such as.  [PRA
cba0: 47 4d 41 20 66 75 6e 63 74 69 6f 6e 5f 6c 69 73  GMA function_lis
cbb0: 74 5d 2c 20 5b 50 52 41 47 4d 41 20 6d 6f 64 75  t], [PRAGMA modu
cbc0: 6c 65 5f 6c 69 73 74 5d 2c 20 61 6e 64 0a 20 20  le_list], and.  
cbd0: 5b 50 52 41 47 4d 41 20 70 72 61 67 6d 61 5f 6c  [PRAGMA pragma_l
cbe0: 69 73 74 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ist]..}..COMPILE
cbf0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
cc00: 53 4f 55 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69  SOUNDEX} {.  Thi
cc10: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
cc20: 20 74 68 65 20 5b 73 6f 75 6e 64 65 78 28 29 20   the [soundex() 
cc30: 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 7d  SQL function]..}
cc40: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
cc50: 20 7b 53 51 4c 49 54 45 5f 55 53 45 5f 41 4c 4c   {SQLITE_USE_ALL
cc60: 4f 43 41 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  OCA} {.  If this
cc70: 20 6f 70 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c   option is enabl
cc80: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 61 6c 6c  ed, then the all
cc90: 6f 63 61 28 29 20 6d 65 6d 6f 72 79 20 61 6c 6c  oca() memory all
cca0: 6f 63 61 74 6f 72 20 77 69 6c 6c 20 62 65 0a 20  ocator will be. 
ccb0: 20 75 73 65 64 20 69 6e 20 61 20 66 65 77 20 73   used in a few s
ccc0: 69 74 75 61 74 69 6f 6e 73 20 77 68 65 72 65 20  ituations where 
ccd0: 69 74 20 69 73 20 61 70 70 72 6f 70 72 69 61 74  it is appropriat
cce0: 65 2e 20 20 54 68 69 73 20 72 65 73 75 6c 74 73  e.  This results
ccf0: 20 69 6e 20 61 20 73 6c 69 67 68 74 6c 79 0a 20   in a slightly. 
cd00: 20 73 6d 61 6c 6c 65 72 20 61 6e 64 20 66 61 73   smaller and fas
cd10: 74 65 72 20 62 69 6e 61 72 79 2e 20 20 54 68 65  ter binary.  The
cd20: 20 53 51 4c 49 54 45 5f 55 53 45 5f 41 4c 4c 4f   SQLITE_USE_ALLO
cd30: 43 41 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  CA compile-time 
cd40: 6f 6e 6c 79 20 6f 6e 6c 79 20 0a 20 20 77 6f 72  only only .  wor
cd50: 6b 73 2c 20 6f 66 20 63 6f 75 72 73 65 2c 20 6f  ks, of course, o
cd60: 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 73  n systems that s
cd70: 75 70 70 6f 72 74 20 61 6c 6c 6f 63 61 28 29 2e  upport alloca().
cd80: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
cd90: 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 53 45 5f 46  ON {SQLITE_USE_F
cda0: 43 4e 54 4c 5f 54 52 41 43 45 7d 20 7b 0a 20 20  CNTL_TRACE} {.  
cdb0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
cdc0: 65 73 20 53 51 4c 69 74 65 20 74 6f 20 69 73 73  es SQLite to iss
cdd0: 75 65 20 65 78 74 72 61 20 5b 53 51 4c 49 54 45  ue extra [SQLITE
cde0: 5f 46 43 4e 54 4c 5f 54 52 41 43 45 5d 20 66 69  _FCNTL_TRACE] fi
cdf0: 6c 65 20 63 6f 6e 74 72 6f 6c 73 0a 20 20 74 6f  le controls.  to
ce00: 20 70 72 6f 76 69 64 65 20 73 75 70 70 6c 65 6d   provide supplem
ce10: 65 6e 74 61 72 79 20 69 6e 66 6f 72 6d 61 74 69  entary informati
ce20: 6f 6e 20 74 6f 20 74 68 65 20 56 46 53 2e 20 20  on to the VFS.  
ce30: 54 68 65 20 22 76 66 73 6c 6f 67 2e 63 22 20 65  The "vfslog.c" e
ce40: 78 74 65 6e 73 69 6f 6e 0a 20 20 6d 61 6b 65 73  xtension.  makes
ce50: 20 75 73 65 20 6f 66 20 74 68 69 73 20 74 6f 20   use of this to 
ce60: 70 72 6f 76 69 64 65 20 65 6e 68 61 6e 63 65 64  provide enhanced
ce70: 20 6c 6f 67 73 20 6f 66 20 56 46 53 20 61 63 74   logs of VFS act
ce80: 69 76 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ivity..}..COMPIL
ce90: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
cea0: 5f 55 53 45 5f 5a 4c 49 42 7d 20 7b 0a 20 20 54  _USE_ZLIB} {.  T
ceb0: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
cec0: 73 20 73 6f 6d 65 20 65 78 74 65 6e 73 69 6f 6e  s some extension
ced0: 73 20 74 6f 20 6c 69 6e 6b 20 61 67 61 69 6e 73  s to link agains
cee0: 74 20 74 68 65 20 0a 20 20 5b 68 74 74 70 73 3a  t the .  [https:
cef0: 2f 2f 7a 6c 69 62 2e 6e 65 74 7c 7a 6c 69 62 20  //zlib.net|zlib 
cf00: 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6c 69 62 72  compression libr
cf10: 61 72 79 5d 2e 0a 20 20 3c 70 3e 0a 20 20 54 68  ary]..  <p>.  Th
cf20: 69 73 20 6f 70 74 69 6f 6e 20 68 61 73 20 6e 6f  is option has no
cf30: 20 61 66 66 65 63 74 20 6f 6e 20 74 68 65 20 53   affect on the S
cf40: 51 4c 69 74 65 20 63 6f 72 65 2e 20 20 49 74 20  QLite core.  It 
cf50: 69 73 20 6f 6e 6c 79 20 75 73 65 64 20 62 79 20  is only used by 
cf60: 65 78 74 65 6e 73 69 6f 6e 73 2e 0a 20 20 54 68  extensions..  Th
cf70: 69 73 20 69 73 20 6f 70 74 69 6f 6e 20 69 73 20  is is option is 
cf80: 6e 65 63 65 73 73 61 72 79 20 66 6f 72 20 74 68  necessary for th
cf90: 65 20 63 6f 6d 6d 70 72 65 73 73 69 6f 6e 20 61  e commpression a
cfa0: 6e 64 20 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e  nd decompression
cfb0: 0a 20 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61  .  functions tha
cfc0: 74 20 61 72 65 20 70 61 72 74 20 6f 66 20 5b 53  t are part of [S
cfd0: 51 4c 20 41 72 63 68 69 76 65 5d 20 73 75 70 70  QL Archive] supp
cfe0: 6f 72 74 20 69 6e 20 74 68 65 0a 20 20 5b 63 6f  ort in the.  [co
cff0: 6d 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c  mmand-line shell
d000: 5d 2e 0a 20 20 3c 70 3e 0a 20 20 57 68 65 6e 20  ]..  <p>.  When 
d010: 63 6f 6d 70 69 6c 69 6e 67 20 77 69 74 68 20 74  compiling with t
d020: 68 69 73 20 6f 70 74 69 6f 6e 2c 20 69 74 20 77  his option, it w
d030: 69 6c 6c 20 6e 6f 72 6d 61 6c 6c 79 0a 20 20 62  ill normally.  b
d040: 65 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 61  e necessary to a
d050: 64 64 20 61 20 6c 69 6e 6b 65 72 20 6f 70 74 69  dd a linker opti
d060: 6f 6e 20 74 6f 20 69 6e 63 6c 75 64 65 20 74 68  on to include th
d070: 65 20 7a 6c 69 62 20 6c 69 62 72 61 72 79 20 69  e zlib library i
d080: 6e 20 74 68 65 0a 20 20 62 75 69 6c 64 2e 20 20  n the.  build.  
d090: 4e 6f 72 6d 61 6c 20 74 68 69 73 20 6f 70 74 69  Normal this opti
d0a0: 6f 6e 20 69 73 20 22 2d 6c 7a 22 20 62 75 74 20  on is "-lz" but 
d0b0: 6d 69 67 68 74 20 62 65 20 64 69 66 66 65 72 65  might be differe
d0c0: 6e 74 20 6f 6e 20 64 69 66 66 65 72 65 6e 74 0a  nt on different.
d0d0: 20 20 73 79 73 74 65 6d 73 2e 0a 20 20 3c 70 3e    systems..  <p>
d0e0: 0a 20 20 57 68 65 6e 20 62 75 69 6c 64 69 6e 67  .  When building
d0f0: 20 77 69 74 68 20 4d 53 56 43 20 6f 6e 20 57 69   with MSVC on Wi
d100: 6e 64 6f 77 73 20 73 79 73 74 65 6d 73 2c 20 6f  ndows systems, o
d110: 6e 65 20 63 61 6e 20 70 75 74 20 74 68 65 20 7a  ne can put the z
d120: 6c 69 62 20 73 6f 75 72 63 65 0a 20 20 63 6f 64  lib source.  cod
d130: 65 20 69 6e 20 74 68 65 20 63 6f 6d 70 61 74 2f  e in the compat/
d140: 7a 6c 69 62 20 73 75 62 64 69 72 65 63 74 6f 72  zlib subdirector
d150: 79 20 6f 66 20 74 68 65 20 73 6f 75 72 63 65 20  y of the source 
d160: 74 72 65 65 20 61 6e 64 20 74 68 65 6e 20 61 64  tree and then ad
d170: 64 0a 20 20 74 68 65 20 55 53 45 5f 5a 4c 49 42  d.  the USE_ZLIB
d180: 3d 31 20 6f 70 74 69 6f 6e 20 74 6f 20 74 68 65  =1 option to the
d190: 20 6e 6d 61 6b 65 20 63 6f 6d 6d 61 6e 64 20 74   nmake command t
d1a0: 6f 20 63 61 75 73 65 20 74 68 65 20 54 68 65 20  o cause the The 
d1b0: 4d 61 6b 65 66 69 6c 65 2e 6d 73 63 0a 20 20 74  Makefile.msc.  t
d1c0: 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  o automatically 
d1d0: 62 75 69 6c 64 20 61 6e 64 20 75 73 65 20 61 6e  build and use an
d1e0: 20 61 70 70 72 6f 70 72 69 61 74 65 20 7a 6c 69   appropriate zli
d1f0: 62 20 6c 69 62 72 61 72 79 20 69 6d 70 6c 65 6d  b library implem
d200: 65 6e 74 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d  entation..}..COM
d210: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 59 59 54  PILE_OPTION {YYT
d220: 52 41 43 4b 4d 41 58 53 54 41 43 4b 44 45 50 54  RACKMAXSTACKDEPT
d230: 48 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  H} {.  This opti
d240: 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 4c 41  on causes the LA
d250: 4c 52 28 31 29 20 70 61 72 73 65 72 20 73 74 61  LR(1) parser sta
d260: 63 6b 20 64 65 70 74 68 20 74 6f 20 62 65 20 74  ck depth to be t
d270: 72 61 63 6b 65 64 0a 20 20 61 6e 64 20 72 65 70  racked.  and rep
d280: 6f 72 74 65 64 20 75 73 69 6e 67 20 74 68 65 20  orted using the 
d290: 5b 73 71 6c 69 74 65 33 5f 73 74 61 74 75 73 5d  [sqlite3_status]
d2a0: 28 5b 53 51 4c 49 54 45 5f 53 54 41 54 55 53 5f  ([SQLITE_STATUS_
d2b0: 50 41 52 53 45 52 5f 53 54 41 43 4b 5d 2c 2e 2e  PARSER_STACK],..
d2c0: 2e 29 0a 20 20 69 6e 74 65 72 66 61 63 65 2e 20  .).  interface. 
d2d0: 20 53 51 4c 69 74 65 27 73 20 4c 41 4c 52 28 31   SQLite's LALR(1
d2e0: 29 20 70 61 72 73 65 72 20 68 61 73 20 61 20 66  ) parser has a f
d2f0: 69 78 65 64 20 73 74 61 63 6b 20 64 65 70 74 68  ixed stack depth
d300: 0a 20 20 28 64 65 74 65 72 6d 69 6e 65 64 20 61  .  (determined a
d310: 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 75  t compile-time u
d320: 73 69 6e 67 20 74 68 65 20 5b 59 59 53 54 41 43  sing the [YYSTAC
d330: 4b 44 45 50 54 48 5d 20 6f 70 74 69 6f 6e 73 29  KDEPTH] options)
d340: 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  ..  This option 
d350: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 68  can be used to h
d360: 65 6c 70 20 64 65 74 65 72 6d 69 6e 65 20 69 66  elp determine if
d370: 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20   an application 
d380: 69 73 0a 20 20 67 65 74 74 69 6e 67 20 63 6c 6f  is.  getting clo
d390: 73 65 20 74 6f 20 65 78 63 65 65 64 69 6e 67 20  se to exceeding 
d3a0: 74 68 65 20 6d 61 78 69 6d 75 6d 20 4c 41 4c 52  the maximum LALR
d3b0: 28 31 29 20 73 74 61 63 6b 20 64 65 70 74 68 2e  (1) stack depth.
d3c0: 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61  .}.</tcl>..<a na
d3d0: 6d 65 3d 22 64 69 73 61 62 6c 65 66 65 61 74 75  me="disablefeatu
d3e0: 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 4f  res"></a>.<h1> O
d3f0: 70 74 69 6f 6e 73 20 54 6f 20 44 69 73 61 62 6c  ptions To Disabl
d400: 65 20 46 65 61 74 75 72 65 73 20 4e 6f 72 6d 61  e Features Norma
d410: 6c 6c 79 20 54 75 72 6e 65 64 20 4f 6e 3c 2f 68  lly Turned On</h
d420: 31 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c  1>..<tcl>.COMPIL
d430: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
d440: 5f 44 49 53 41 42 4c 45 5f 4c 46 53 7d 20 7b 0a  _DISABLE_LFS} {.
d450: 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70    If this C-prep
d460: 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69  rocessor macro i
d470: 73 20 64 65 66 69 6e 65 64 2c 20 6c 61 72 67 65  s defined, large
d480: 20 66 69 6c 65 20 73 75 70 70 6f 72 74 0a 20 20   file support.  
d490: 69 73 20 64 69 73 61 62 6c 65 64 2e 0a 7d 0a 0a  is disabled..}..
d4a0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
d4b0: 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 44  SQLITE_DISABLE_D
d4c0: 49 52 53 59 4e 43 7d 20 7b 0a 20 20 49 66 20 74  IRSYNC} {.  If t
d4d0: 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73  his C-preprocess
d4e0: 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  or macro is defi
d4f0: 6e 65 64 2c 20 64 69 72 65 63 74 6f 72 79 20 73  ned, directory s
d500: 79 6e 63 73 0a 20 20 61 72 65 20 64 69 73 61 62  yncs.  are disab
d510: 6c 65 64 2e 20 20 53 51 4c 69 74 65 20 74 79 70  led.  SQLite typ
d520: 69 63 61 6c 6c 79 20 61 74 74 65 6d 70 74 73 20  ically attempts 
d530: 74 6f 20 73 79 6e 63 20 74 68 65 20 70 61 72 65  to sync the pare
d540: 6e 74 0a 20 20 64 69 72 65 63 74 6f 72 79 20 77  nt.  directory w
d550: 68 65 6e 20 61 20 66 69 6c 65 20 69 73 20 64 65  hen a file is de
d560: 6c 65 74 65 64 20 74 6f 20 65 6e 73 75 72 65 20  leted to ensure 
d570: 74 68 65 20 64 69 72 65 63 74 6f 72 79 0a 20 20  the directory.  
d580: 65 6e 74 72 69 65 73 20 61 72 65 20 75 70 64 61  entries are upda
d590: 74 65 64 20 69 6d 6d 65 64 69 61 74 65 6c 79 20  ted immediately 
d5a0: 6f 6e 20 64 69 73 6b 2e 0a 7d 0a 0a 43 4f 4d 50  on disk..}..COMP
d5b0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
d5c0: 54 45 5f 44 49 53 41 42 4c 45 5f 46 54 53 33 5f  TE_DISABLE_FTS3_
d5d0: 55 4e 49 43 4f 44 45 7d 20 7b 0a 20 20 49 66 20  UNICODE} {.  If 
d5e0: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
d5f0: 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66  sor macro is def
d600: 69 6e 65 64 2c 20 74 68 65 20 5b 75 6e 69 63 6f  ined, the [unico
d610: 64 65 36 31 5d 20 74 6f 6b 65 6e 69 7a 65 72 0a  de61] tokenizer.
d620: 20 20 69 6e 20 5b 46 54 53 33 5d 20 69 73 20 6f    in [FTS3] is o
d630: 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20  mitted from the 
d640: 62 75 69 6c 64 20 61 6e 64 20 69 73 20 75 6e 61  build and is una
d650: 76 61 69 6c 61 62 6c 65 20 74 6f 20 0a 20 20 61  vailable to .  a
d660: 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a  pplications..}..
d670: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
d680: 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 46  SQLITE_DISABLE_F
d690: 54 53 34 5f 44 45 46 45 52 52 45 44 7d 20 7b 0a  TS4_DEFERRED} {.
d6a0: 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70    If this C-prep
d6b0: 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 64  rocessor macro d
d6c0: 69 73 61 62 6c 65 73 20 74 68 65 20 22 64 65 66  isables the "def
d6d0: 65 72 72 65 64 20 74 6f 6b 65 6e 22 20 6f 70 74  erred token" opt
d6e0: 69 6d 69 7a 61 74 69 6f 6e 0a 20 20 69 6e 20 5b  imization.  in [
d6f0: 46 54 53 34 5d 2e 20 20 54 68 65 20 22 64 65 66  FTS4].  The "def
d700: 65 72 72 65 64 20 74 6f 6b 65 6e 22 20 6f 70 74  erred token" opt
d710: 69 6d 69 7a 61 74 69 6f 6e 20 61 76 6f 69 64 73  imization avoids
d720: 20 6c 6f 61 64 69 6e 67 20 6d 61 73 73 69 76 65   loading massive
d730: 0a 20 20 70 6f 73 74 69 6e 67 20 6c 69 73 74 73  .  posting lists
d740: 20 66 6f 72 20 74 65 72 6d 73 20 74 68 61 74 20   for terms that 
d750: 61 72 65 20 69 6e 20 6d 6f 73 74 20 64 6f 63 75  are in most docu
d760: 6d 65 6e 74 73 20 6f 66 20 74 68 65 20 63 6f 6c  ments of the col
d770: 6c 65 63 74 69 6f 6e 0a 20 20 61 6e 64 20 69 6e  lection.  and in
d780: 73 74 65 61 64 20 73 69 6d 70 6c 79 20 73 63 61  stead simply sca
d790: 6e 73 20 66 6f 72 20 74 68 6f 73 65 20 74 6f 6b  ns for those tok
d7a0: 65 6e 73 20 69 6e 20 74 68 65 20 64 6f 63 75 6d  ens in the docum
d7b0: 65 6e 74 20 73 6f 75 72 63 65 2e 20 20 5b 46 54  ent source.  [FT
d7c0: 53 34 5d 0a 20 20 73 68 6f 75 6c 64 20 67 65 74  S4].  should get
d7d0: 20 65 78 61 63 74 6c 79 20 74 68 65 20 73 61 6d   exactly the sam
d7e0: 65 20 61 6e 73 77 65 72 20 62 6f 74 68 20 77 69  e answer both wi
d7f0: 74 68 20 61 6e 64 20 77 69 74 68 6f 75 74 20 74  th and without t
d800: 68 69 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  his optimization
d810: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
d820: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41  ION {SQLITE_DISA
d830: 42 4c 45 5f 49 4e 54 52 49 4e 53 49 43 7d 20 7b  BLE_INTRINSIC} {
d840: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  .  This option d
d850: 69 73 61 62 6c 65 73 20 74 68 65 20 75 73 65 20  isables the use 
d860: 6f 66 20 63 6f 6d 70 69 6c 65 72 2d 73 70 65 63  of compiler-spec
d870: 69 66 69 63 20 62 75 69 6c 74 2d 69 6e 20 66 75  ific built-in fu
d880: 6e 63 74 69 6f 6e 73 0a 20 20 73 75 63 68 20 61  nctions.  such a
d890: 73 20 5f 5f 62 75 69 6c 74 69 6e 5f 62 73 77 61  s __builtin_bswa
d8a0: 70 33 32 28 29 20 61 6e 64 20 5f 5f 62 75 69 6c  p32() and __buil
d8b0: 74 69 6e 5f 61 64 64 5f 6f 76 65 72 66 6c 6f 77  tin_add_overflow
d8c0: 28 29 20 69 6e 20 47 43 43 20 61 6e 64 20 43 6c  () in GCC and Cl
d8d0: 61 6e 67 2c 20 0a 20 20 6f 72 20 5f 62 79 74 65  ang, .  or _byte
d8e0: 73 77 61 70 5f 75 6c 6f 6e 67 28 29 20 61 6e 64  swap_ulong() and
d8f0: 20 5f 52 65 61 64 57 72 69 74 65 42 61 72 72 69   _ReadWriteBarri
d900: 65 72 28 29 20 77 69 74 68 20 4d 53 56 43 2e 20  er() with MSVC. 
d910: 20 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c   .}.</tcl>..<tcl
d920: 3e 0a 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20  >.  hd_fragment 
d930: 22 6f 6d 69 74 66 65 61 74 75 72 65 73 22 0a 20  "omitfeatures". 
d940: 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 22 6f 6d   hd_keywords "om
d950: 69 74 66 65 61 74 75 72 65 73 22 0a 3c 2f 74 63  itfeatures".</tc
d960: 6c 3e 0a 3c 68 31 3e 20 4f 70 74 69 6f 6e 73 20  l>.<h1> Options 
d970: 54 6f 20 4f 6d 69 74 20 46 65 61 74 75 72 65 73  To Omit Features
d980: 3c 2f 68 31 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f  </h1>..<p>The fo
d990: 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73 20  llowing options 
d9a0: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 0a  can be used to .
d9b0: 5b 72 65 6c 66 6f 6f 74 70 72 69 6e 74 20 7c 20  [relfootprint | 
d9c0: 72 65 64 75 63 65 20 74 68 65 20 73 69 7a 65 20  reduce the size 
d9d0: 6f 66 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 20  of the compiled 
d9e0: 6c 69 62 72 61 72 79 5d 0a 62 79 20 6f 6d 69 74  library].by omit
d9f0: 74 69 6e 67 20 75 6e 75 73 65 64 20 66 65 61 74  ting unused feat
da00: 75 72 65 73 2e 20 54 68 69 73 20 69 73 20 70 72  ures. This is pr
da10: 6f 62 61 62 6c 79 20 6f 6e 6c 79 20 75 73 65 66  obably only usef
da20: 75 6c 0a 69 6e 20 65 6d 62 65 64 64 65 64 20 73  ul.in embedded s
da30: 79 73 74 65 6d 73 20 77 68 65 72 65 20 73 70 61  ystems where spa
da40: 63 65 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79  ce is especially
da50: 20 74 69 67 68 74 2c 20 61 73 20 65 76 65 6e 20   tight, as even 
da60: 77 69 74 68 20 61 6c 6c 0a 66 65 61 74 75 72 65  with all.feature
da70: 73 20 69 6e 63 6c 75 64 65 64 20 74 68 65 20 53  s included the S
da80: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69 73  QLite library is
da90: 20 72 65 6c 61 74 69 76 65 6c 79 20 73 6d 61 6c   relatively smal
daa0: 6c 2e 20 44 6f 6e 27 74 20 66 6f 72 67 65 74 0a  l. Don't forget.
dab0: 74 6f 20 74 65 6c 6c 20 79 6f 75 72 20 63 6f 6d  to tell your com
dac0: 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a  piler to optimiz
dad0: 65 20 66 6f 72 20 62 69 6e 61 72 79 20 73 69 7a  e for binary siz
dae0: 65 21 20 28 74 68 65 20 2d 4f 73 20 6f 70 74 69  e! (the -Os opti
daf0: 6f 6e 20 69 66 0a 75 73 69 6e 67 20 47 43 43 29  on if.using GCC)
db00: 2e 20 20 54 65 6c 6c 69 6e 67 20 79 6f 75 72 20  .  Telling your 
db10: 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69  compiler to opti
db20: 6d 69 7a 65 20 66 6f 72 20 73 69 7a 65 20 75 73  mize for size us
db30: 75 61 6c 6c 79 20 68 61 73 0a 61 20 6d 75 63 68  ually has.a much
db40: 20 6c 61 72 67 65 72 20 69 6d 70 61 63 74 20 6f   larger impact o
db50: 6e 20 6c 69 62 72 61 72 79 20 66 6f 6f 74 70 72  n library footpr
db60: 69 6e 74 20 74 68 61 6e 20 65 6d 70 6c 6f 79 69  int than employi
db70: 6e 67 20 61 6e 79 20 6f 66 20 74 68 65 73 65 0a  ng any of these.
db80: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
db90: 69 6f 6e 73 2e 20 20 59 6f 75 20 73 68 6f 75 6c  ions.  You shoul
dba0: 64 20 61 6c 73 6f 20 76 65 72 69 66 79 20 74 68  d also verify th
dbb0: 61 74 20 0a 3c 61 20 68 72 65 66 3d 22 23 64 65  at .<a href="#de
dbc0: 62 75 67 6f 70 74 69 6f 6e 73 22 3e 64 65 62 75  bugoptions">debu
dbd0: 67 67 69 6e 67 20 6f 70 74 69 6f 6e 73 3c 2f 61  gging options</a
dbe0: 3e 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e 3c  > are disabled.<
dbf0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6d 61 63 72  /p>..<p>The macr
dc00: 6f 73 20 69 6e 20 74 68 69 73 20 73 65 63 74 69  os in this secti
dc10: 6f 6e 20 64 6f 20 6e 6f 74 20 72 65 71 75 69 72  on do not requir
dc20: 65 20 76 61 6c 75 65 73 2e 20 54 68 65 20 66 6f  e values. The fo
dc30: 6c 6c 6f 77 69 6e 67 20 0a 63 6f 6d 70 69 6c 61  llowing .compila
dc40: 74 69 6f 6e 20 73 77 69 74 63 68 65 73 20 61 6c  tion switches al
dc50: 6c 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20  l have the same 
dc60: 65 66 66 65 63 74 3a 3c 62 72 3e 0a 2d 44 53 51  effect:<br>.-DSQ
dc70: 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54  LITE_OMIT_ALTERT
dc80: 41 42 4c 45 3c 62 72 3e 0a 2d 44 53 51 4c 49 54  ABLE<br>.-DSQLIT
dc90: 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c  E_OMIT_ALTERTABL
dca0: 45 3d 31 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45  E=1<br>.-DSQLITE
dcb0: 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45  _OMIT_ALTERTABLE
dcc0: 3d 30 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61  =0.</p>..<p>If a
dcd0: 6e 79 20 6f 66 20 74 68 65 73 65 20 6f 70 74 69  ny of these opti
dce0: 6f 6e 73 20 61 72 65 20 64 65 66 69 6e 65 64 2c  ons are defined,
dcf0: 20 74 68 65 6e 20 74 68 65 20 73 61 6d 65 20 73   then the same s
dd00: 65 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49  et of SQLITE_OMI
dd10: 54 5f 2a 0a 6f 70 74 69 6f 6e 73 20 6d 75 73 74  T_*.options must
dd20: 20 61 6c 73 6f 20 62 65 20 64 65 66 69 6e 65 64   also be defined
dd30: 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20   when using the 
dd40: 5b 4c 65 6d 6f 6e 20 70 61 72 73 65 72 20 67 65  [Lemon parser ge
dd50: 6e 65 72 61 74 6f 72 5d 0a 74 6f 6f 6c 20 74 6f  nerator].tool to
dd60: 20 67 65 6e 65 72 61 74 65 20 74 68 65 0a 70 61   generate the.pa
dd70: 72 73 65 2e 63 20 66 69 6c 65 20 61 6e 64 20 77  rse.c file and w
dd80: 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 20 74 68  hen compiling th
dd90: 65 20 27 6d 6b 6b 65 79 77 6f 72 64 68 61 73 68  e 'mkkeywordhash
dda0: 27 20 74 6f 6f 6c 20 77 68 69 63 68 20 67 65 6e  ' tool which gen
ddb0: 65 72 61 74 65 73 20 0a 74 68 65 20 6b 65 79 77  erates .the keyw
ddc0: 6f 72 64 68 61 73 68 2e 68 20 66 69 6c 65 2e 0a  ordhash.h file..
ddd0: 42 65 63 61 75 73 65 20 6f 66 20 74 68 69 73 2c  Because of this,
dde0: 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d   these options m
ddf0: 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20  ay only be used 
de00: 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61 72 79  when the library
de10: 20 69 73 20 62 75 69 6c 74 0a 66 72 6f 6d 20 63   is built.from c
de20: 61 6e 6f 6e 69 63 61 6c 20 73 6f 75 72 63 65 2c  anonical source,
de30: 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b 61   not from the [a
de40: 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2e 0a 53 6f  malgamation]..So
de50: 6d 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  me SQLITE_OMIT_*
de60: 20 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74 20 77   options might w
de70: 6f 72 6b 2c 20 6f 72 20 61 70 70 65 61 72 20 74  ork, or appear t
de80: 6f 20 77 6f 72 6b 2c 20 77 68 65 6e 20 75 73 65  o work, when use
de90: 64 20 77 69 74 68 0a 74 68 65 20 5b 61 6d 61 6c  d with.the [amal
dea0: 67 61 6d 61 74 69 6f 6e 5d 2e 20 20 42 75 74 20  gamation].  But 
deb0: 74 68 69 73 20 69 73 20 6e 6f 74 20 67 75 61 72  this is not guar
dec0: 61 6e 74 65 65 64 2e 20 20 49 6e 20 67 65 6e 65  anteed.  In gene
ded0: 72 61 6c 2c 20 61 6c 77 61 79 73 20 63 6f 6d 70  ral, always comp
dee0: 69 6c 65 0a 66 72 6f 6d 20 63 61 6e 6f 6e 69 63  ile.from canonic
def0: 61 6c 20 73 6f 75 72 63 65 73 20 69 6e 20 6f 72  al sources in or
df00: 64 65 72 20 74 6f 20 74 61 6b 65 20 61 64 76 61  der to take adva
df10: 6e 74 61 67 65 20 6f 66 20 53 51 4c 49 54 45 5f  ntage of SQLITE_
df20: 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 2e 0a  OMIT_* options..
df30: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
df40: 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61  e>.<i><b>Importa
df50: 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e 20 54 68 65  nt Note:</b> The
df60: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f   SQLITE_OMIT_* o
df70: 70 74 69 6f 6e 73 20 6d 61 79 20 6e 6f 74 20 77  ptions may not w
df80: 6f 72 6b 20 77 69 74 68 20 74 68 65 0a 5b 61 6d  ork with the.[am
df90: 61 6c 67 61 6d 61 74 69 6f 6e 5d 2e 20 20 53 51  algamation].  SQ
dfa0: 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70  LITE_OMIT_* comp
dfb0: 69 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e 73  ile-time.options
dfc0: 20 75 73 75 61 6c 6c 79 20 77 6f 72 6b 20 63 6f   usually work co
dfd0: 72 72 65 63 74 6c 79 20 6f 6e 6c 79 20 77 68 65  rrectly only whe
dfe0: 6e 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c  n SQLite is buil
dff0: 74 20 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c  t from canonical
e000: 20 0a 73 6f 75 72 63 65 20 66 69 6c 65 73 2e 0a   .source files..
e010: 3c 2f 69 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  </i>.</blockquot
e020: 65 3e 0a 0a 0a 3c 70 3e 53 70 65 63 69 61 6c 20  e>...<p>Special 
e030: 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20  versions of the 
e040: 53 51 4c 69 74 65 20 61 6d 61 6c 67 61 6d 61 74  SQLite amalgamat
e050: 69 6f 6e 20 74 68 61 74 20 64 6f 20 77 6f 72 6b  ion that do work
e060: 20 77 69 74 68 20 61 0a 70 72 65 64 65 74 65 72   with a.predeter
e070: 6d 69 6e 65 64 20 73 65 74 20 6f 66 20 53 51 4c  mined set of SQL
e080: 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f  ITE_OMIT_* optio
e090: 6e 73 20 63 61 6e 20 62 65 20 67 65 6e 65 72 61  ns can be genera
e0a0: 74 65 64 2e 20 20 54 6f 20 64 6f 20 73 6f 2c 0a  ted.  To do so,.
e0b0: 6d 61 6b 65 20 61 20 63 6f 70 79 20 6f 66 20 74  make a copy of t
e0c0: 68 65 20 4d 61 6b 65 66 69 6c 65 2e 6c 69 6e 75  he Makefile.linu
e0d0: 78 2d 67 63 63 20 6d 61 6b 65 66 69 6c 65 20 74  x-gcc makefile t
e0e0: 65 6d 70 6c 61 74 65 20 69 6e 20 74 68 65 20 63  emplate in the c
e0f0: 61 6e 6f 6e 69 63 61 6c 0a 73 6f 75 72 63 65 20  anonical.source 
e100: 63 6f 64 65 20 64 69 73 74 72 69 62 75 74 69 6f  code distributio
e110: 6e 2e 20 20 43 68 61 6e 67 65 20 74 68 65 20 6e  n.  Change the n
e120: 61 6d 65 20 6f 66 20 79 6f 75 72 20 63 6f 70 79  ame of your copy
e130: 20 74 6f 20 73 69 6d 70 6c 79 20 22 4d 61 6b 65   to simply "Make
e140: 66 69 6c 65 22 2e 0a 54 68 65 6e 20 65 64 69 74  file"..Then edit
e150: 20 22 4d 61 6b 65 66 69 6c 65 22 20 74 6f 20 73   "Makefile" to s
e160: 65 74 20 75 70 20 61 70 70 72 6f 70 72 69 61 74  et up appropriat
e170: 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  e compile-time o
e180: 70 74 69 6f 6e 73 2e 20 20 54 68 65 6e 0a 74 79  ptions.  Then.ty
e190: 70 65 3a 0a 3c 63 6f 64 65 62 6c 6f 63 6b 3e 0a  pe:.<codeblock>.
e1a0: 6d 61 6b 65 20 63 6c 65 61 6e 3b 20 6d 61 6b 65  make clean; make
e1b0: 20 73 71 6c 69 74 65 33 2e 63 0a 3c 2f 63 6f 64   sqlite3.c.</cod
e1c0: 65 62 6c 6f 63 6b 3e 0a 3c 70 3e 54 68 65 20 72  eblock>.<p>The r
e1d0: 65 73 75 6c 74 69 6e 67 20 22 73 71 6c 69 74 65  esulting "sqlite
e1e0: 33 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f  3.c" amalgamatio
e1f0: 6e 20 63 6f 64 65 20 66 69 6c 65 20 28 61 6e 64  n code file (and
e200: 20 69 74 73 20 61 73 73 6f 63 69 61 74 65 64 0a   its associated.
e210: 68 65 61 64 65 72 20 66 69 6c 65 20 22 73 71 6c  header file "sql
e220: 69 74 65 33 2e 68 22 29 20 63 61 6e 20 74 68 65  ite3.h") can the
e230: 6e 20 62 65 20 6d 6f 76 65 64 20 74 6f 20 61 20  n be moved to a 
e240: 6e 6f 6e 2d 75 6e 69 78 20 70 6c 61 74 66 6f 72  non-unix platfor
e250: 6d 0a 66 6f 72 20 66 69 6e 61 6c 20 63 6f 6d 70  m.for final comp
e260: 69 6c 61 74 69 6f 6e 20 75 73 69 6e 67 20 61 20  ilation using a 
e270: 6e 61 74 69 76 65 20 63 6f 6d 70 69 6c 65 72 2e  native compiler.
e280: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 53 51 4c  </p>..<p>The SQL
e290: 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f  ITE_OMIT_* optio
e2a0: 6e 73 20 61 72 65 20 75 6e 73 75 70 70 6f 72 74  ns are unsupport
e2b0: 65 64 2e 20 20 42 79 20 74 68 69 73 20 77 65 20  ed.  By this we 
e2c0: 6d 65 61 6e 20 74 68 61 74 0a 61 6e 20 53 51 4c  mean that.an SQL
e2d0: 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f  ITE_OMIT_* optio
e2e0: 6e 20 74 68 61 74 20 6f 6d 69 74 73 20 63 6f 64  n that omits cod
e2f0: 65 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64  e from the build
e300: 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0a   in the current.
e310: 72 65 6c 65 61 73 65 20 6d 69 67 68 74 20 62 65  release might be
e320: 63 6f 6d 65 20 61 20 6e 6f 2d 6f 70 20 69 6e 20  come a no-op in 
e330: 74 68 65 20 6e 65 78 74 20 72 65 6c 65 61 73 65  the next release
e340: 2e 20 20 4f 72 20 74 68 65 20 6f 74 68 65 72 20  .  Or the other 
e350: 77 61 79 20 61 72 6f 75 6e 64 3a 0a 61 6e 20 53  way around:.an S
e360: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 74 68 61  QLITE_OMIT_* tha
e370: 74 20 69 73 20 61 20 6e 6f 2d 6f 70 20 69 6e 20  t is a no-op in 
e380: 74 68 65 20 63 75 72 72 65 6e 74 20 72 65 6c 65  the current rele
e390: 61 73 65 20 6d 69 67 68 74 20 63 61 75 73 65 20  ase might cause 
e3a0: 63 6f 64 65 0a 74 6f 20 62 65 20 65 78 63 6c 75  code.to be exclu
e3b0: 64 65 64 20 69 6e 20 74 68 65 20 6e 65 78 74 20  ded in the next 
e3c0: 72 65 6c 65 61 73 65 2e 20 20 41 6c 73 6f 2c 20  release.  Also, 
e3d0: 6e 6f 74 20 61 6c 6c 20 53 51 4c 49 54 45 5f 4f  not all SQLITE_O
e3e0: 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 0a 61 72  MIT_* options.ar
e3f0: 65 20 74 65 73 74 65 64 2e 20 20 53 6f 6d 65 20  e tested.  Some 
e400: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70  SQLITE_OMIT_* op
e410: 74 69 6f 6e 73 20 6d 69 67 68 74 20 63 61 75 73  tions might caus
e420: 65 20 53 51 4c 69 74 65 20 74 6f 20 6d 61 6c 66  e SQLite to malf
e430: 75 6e 63 74 69 6f 6e 0a 61 6e 64 2f 6f 72 20 70  unction.and/or p
e440: 72 6f 76 69 64 65 20 69 6e 63 6f 72 72 65 63 74  rovide incorrect
e450: 20 61 6e 73 77 65 72 73 2e 0a 0a 3c 62 6c 6f 63   answers...<bloc
e460: 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62 3e 49 6d  kquote>.<i><b>Im
e470: 70 6f 72 74 61 6e 74 20 4e 6f 74 65 3a 3c 2f 62  portant Note:</b
e480: 3e 0a 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49  >.The SQLITE_OMI
e490: 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  T_* compile-time
e4a0: 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 6d 6f 73   options are mos
e4b0: 74 6c 79 20 75 6e 73 75 70 70 6f 72 74 65 64 2e  tly unsupported.
e4c0: 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  .</i></blockquot
e4d0: 65 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f  e>..<p>The follo
e4e0: 77 69 6e 67 20 61 72 65 20 74 68 65 20 61 76 61  wing are the ava
e4f0: 69 6c 61 62 6c 65 20 4f 4d 49 54 20 6f 70 74 69  ilable OMIT opti
e500: 6f 6e 73 3a 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50  ons:..<tcl>.COMP
e510: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
e520: 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42  TE_OMIT_ALTERTAB
e530: 4c 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  LE} {.  When thi
e540: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
e550: 6e 65 64 2c 20 74 68 65 20 0a 20 20 5b 41 4c 54  ned, the .  [ALT
e560: 45 52 20 54 41 42 4c 45 5d 20 63 6f 6d 6d 61 6e  ER TABLE] comman
e570: 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65  d is not include
e580: 64 20 69 6e 20 74 68 65 20 0a 20 20 6c 69 62 72  d in the .  libr
e590: 61 72 79 2e 20 45 78 65 63 75 74 69 6e 67 20 61  ary. Executing a
e5a0: 6e 20 5b 41 4c 54 45 52 20 54 41 42 4c 45 5d 20  n [ALTER TABLE] 
e5b0: 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73  statement causes
e5c0: 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a   a parse error..
e5d0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
e5e0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  N {SQLITE_OMIT_A
e5f0: 4e 41 4c 59 5a 45 7d 20 7b 0a 20 20 57 68 65 6e  NALYZE} {.  When
e600: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
e610: 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 41 4e  defined, the [AN
e620: 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69  ALYZE] command i
e630: 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 0a 20  s omitted from. 
e640: 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43   the build..}..C
e650: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
e660: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 54 54 41 43  QLITE_OMIT_ATTAC
e670: 48 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  H} {.  When this
e680: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
e690: 65 64 2c 20 74 68 65 20 5b 41 54 54 41 43 48 5d  ed, the [ATTACH]
e6a0: 20 61 6e 64 20 5b 44 45 54 41 43 48 5d 20 63 6f   and [DETACH] co
e6b0: 6d 6d 61 6e 64 73 20 61 72 65 0a 20 20 6f 6d 69  mmands are.  omi
e6c0: 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75  tted from the bu
e6d0: 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ild..}..COMPILE_
e6e0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
e6f0: 4d 49 54 5f 41 55 54 48 4f 52 49 5a 41 54 49 4f  MIT_AUTHORIZATIO
e700: 4e 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20  N} {.  Defining 
e710: 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  this option omit
e720: 73 20 74 68 65 20 61 75 74 68 6f 72 69 7a 61 74  s the authorizat
e730: 69 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 66 65 61  ion callback fea
e740: 74 75 72 65 20 66 72 6f 6d 20 74 68 65 0a 20 20  ture from the.  
e750: 6c 69 62 72 61 72 79 2e 20 54 68 65 20 5b 73 71  library. The [sq
e760: 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72  lite3_set_author
e770: 69 7a 65 72 28 29 5d 20 41 50 49 20 66 75 6e 63  izer()] API func
e780: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72 65 73  tion is not pres
e790: 65 6e 74 0a 20 20 69 6e 20 74 68 65 20 6c 69 62  ent.  in the lib
e7a0: 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rary..}..COMPILE
e7b0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
e7c0: 4f 4d 49 54 5f 41 55 54 4f 49 4e 43 52 45 4d 45  OMIT_AUTOINCREME
e7d0: 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  NT} {.  This opt
e7e0: 69 6f 6e 20 69 73 20 6f 6d 69 74 73 20 74 68 65  ion is omits the
e7f0: 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d   [AUTOINCREMENT]
e800: 20 66 65 61 74 75 72 65 2e 20 0a 20 20 57 68 65   feature. .  Whe
e810: 6e 20 74 68 69 73 20 69 73 20 6d 61 63 72 6f 20  n this is macro 
e820: 69 73 20 64 65 66 69 6e 65 64 2c 20 63 6f 6c 75  is defined, colu
e830: 6d 6e 73 20 64 65 63 6c 61 72 65 64 20 61 73 20  mns declared as 
e840: 0a 20 20 22 5b 49 4e 54 45 47 45 52 20 50 52 49  .  "[INTEGER PRI
e850: 4d 41 52 59 20 4b 45 59 5d 20 41 55 54 4f 49 4e  MARY KEY] AUTOIN
e860: 43 52 45 4d 45 4e 54 22 0a 20 20 62 65 68 61 76  CREMENT".  behav
e870: 65 20 69 6e 20 74 68 65 20 73 61 6d 65 20 77 61  e in the same wa
e880: 79 20 61 73 20 63 6f 6c 75 6d 6e 73 20 64 65 63  y as columns dec
e890: 6c 61 72 65 64 20 61 73 20 22 5b 49 4e 54 45 47  lared as "[INTEG
e8a0: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 22  ER PRIMARY KEY]"
e8b0: 20 77 68 65 6e 20 61 20 0a 20 20 4e 55 4c 4c 20   when a .  NULL 
e8c0: 69 73 20 69 6e 73 65 72 74 65 64 2e 20 54 68 65  is inserted. The
e8d0: 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65   sqlite_sequence
e8e0: 20 73 79 73 74 65 6d 20 74 61 62 6c 65 20 69 73   system table is
e8f0: 20 6e 65 69 74 68 65 72 20 63 72 65 61 74 65 64   neither created
e900: 2c 20 6e 6f 72 0a 20 20 72 65 73 70 65 63 74 65  , nor.  respecte
e910: 64 20 69 66 20 69 74 20 61 6c 72 65 61 64 79 20  d if it already 
e920: 65 78 69 73 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  exists..}..COMPI
e930: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
e940: 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 7d  E_OMIT_AUTOINIT}
e950: 20 7b 0a 20 20 46 6f 72 20 62 61 63 6b 77 61 72   {.  For backwar
e960: 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  ds compatibility
e970: 20 77 69 74 68 20 6f 6c 64 65 72 20 76 65 72 73   with older vers
e980: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 74  ions of SQLite t
e990: 68 61 74 20 6c 61 63 6b 0a 20 20 74 68 65 20 5b  hat lack.  the [
e9a0: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
e9b0: 7a 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2c  ze()] interface,
e9c0: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e   the [sqlite3_in
e9d0: 69 74 69 61 6c 69 7a 65 28 29 5d 20 69 6e 74 65  itialize()] inte
e9e0: 72 66 61 63 65 0a 20 20 69 73 20 63 61 6c 6c 65  rface.  is calle
e9f0: 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  d automatically 
ea00: 75 70 6f 6e 20 65 6e 74 72 79 20 74 6f 20 63 65  upon entry to ce
ea10: 72 74 61 69 6e 20 6b 65 79 20 69 6e 74 65 72 66  rtain key interf
ea20: 61 63 65 73 20 73 75 63 68 20 61 73 0a 20 20 5b  aces such as.  [
ea30: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c  sqlite3_open()],
ea40: 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 72 65   [sqlite3_vfs_re
ea50: 67 69 73 74 65 72 28 29 5d 2c 20 61 6e 64 20 5b  gister()], and [
ea60: 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28  sqlite3_mprintf(
ea70: 29 5d 2e 0a 20 20 54 68 65 20 6f 76 65 72 68 65  )]..  The overhe
ea80: 61 64 20 6f 66 20 69 6e 76 6f 6b 69 6e 67 20 5b  ad of invoking [
ea90: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
eaa0: 7a 65 28 29 5d 20 61 75 74 6f 6d 61 74 69 63 61  ze()] automatica
eab0: 6c 6c 79 20 69 6e 20 74 68 69 73 0a 20 20 77 61  lly in this.  wa
eac0: 79 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64  y may be omitted
ead0: 20 62 79 20 62 75 69 6c 64 69 6e 67 20 53 51 4c   by building SQL
eae0: 69 74 65 20 77 69 74 68 20 74 68 65 20 53 51 4c  ite with the SQL
eaf0: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49  ITE_OMIT_AUTOINI
eb00: 54 0a 20 20 43 2d 70 72 65 70 72 6f 63 65 73 73  T.  C-preprocess
eb10: 6f 72 20 6d 61 63 72 6f 2e 20 20 57 68 65 6e 20  or macro.  When 
eb20: 62 75 69 6c 74 20 75 73 69 6e 67 20 53 51 4c 49  built using SQLI
eb30: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54  TE_OMIT_AUTOINIT
eb40: 2c 20 53 51 4c 69 74 65 0a 20 20 77 69 6c 6c 20  , SQLite.  will 
eb50: 6e 6f 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  not automaticall
eb60: 79 20 69 6e 69 74 69 61 6c 69 7a 65 20 69 74 73  y initialize its
eb70: 65 6c 66 20 61 6e 64 20 74 68 65 20 61 70 70 6c  elf and the appl
eb80: 69 63 61 74 69 6f 6e 20 69 73 20 72 65 71 75 69  ication is requi
eb90: 72 65 64 0a 20 20 74 6f 20 69 6e 76 6f 6b 65 20  red.  to invoke 
eba0: 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c  [sqlite3_initial
ebb0: 69 7a 65 28 29 5d 20 64 69 72 65 63 74 6c 79 20  ize()] directly 
ebc0: 70 72 69 6f 72 20 74 6f 20 62 65 67 69 6e 6e 69  prior to beginni
ebd0: 6e 67 20 75 73 65 20 6f 66 20 74 68 65 0a 20 20  ng use of the.  
ebe0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0a  SQLite library..
ebf0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
ec00: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  N {SQLITE_OMIT_A
ec10: 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58 7d 20  UTOMATIC_INDEX} 
ec20: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
ec30: 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20  is used to omit 
ec40: 74 68 65 20 0a 20 20 5b 61 75 74 6f 6d 61 74 69  the .  [automati
ec50: 63 20 69 6e 64 65 78 69 6e 67 5d 20 66 75 6e 63  c indexing] func
ec60: 74 69 6f 6e 61 6c 69 74 79 2e 0a 20 20 53 65 65  tionality..  See
ec70: 20 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 44   also: [SQLITE_D
ec80: 45 46 41 55 4c 54 5f 41 55 54 4f 4d 41 54 49 43  EFAULT_AUTOMATIC
ec90: 5f 49 4e 44 45 58 5d 2e 0a 7d 0a 0a 43 4f 4d 50  _INDEX]..}..COMP
eca0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
ecb0: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45  TE_OMIT_AUTORESE
ecc0: 54 7d 20 7b 0a 20 20 42 79 20 64 65 66 61 75 6c  T} {.  By defaul
ecd0: 74 2c 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  t, the [sqlite3_
ece0: 73 74 65 70 28 29 5d 20 69 6e 74 65 72 66 61 63  step()] interfac
ecf0: 65 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63  e will automatic
ed00: 61 6c 6c 79 20 69 6e 76 6f 6b 65 0a 20 20 5b 73  ally invoke.  [s
ed10: 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 20  qlite3_reset()] 
ed20: 74 6f 20 72 65 73 65 74 20 74 68 65 20 5b 70 72  to reset the [pr
ed30: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
ed40: 5d 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 20  ] if necessary. 
ed50: 20 54 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d   This.  compile-
ed60: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63 68 61 6e  time option chan
ed70: 67 65 73 20 74 68 61 74 20 62 65 68 61 76 69 6f  ges that behavio
ed80: 72 20 73 6f 20 74 68 61 74 20 5b 73 71 6c 69 74  r so that [sqlit
ed90: 65 33 5f 73 74 65 70 28 29 5d 20 77 69 6c 6c 0a  e3_step()] will.
eda0: 20 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45    return [SQLITE
edb0: 5f 4d 49 53 55 53 45 5d 20 69 66 20 69 74 20 63  _MISUSE] if it c
edc0: 61 6c 6c 65 64 20 61 67 61 69 6e 20 61 66 74 65  alled again afte
edd0: 72 20 72 65 74 75 72 6e 69 6e 67 20 61 6e 79 74  r returning anyt
ede0: 68 69 6e 67 20 6f 74 68 65 72 0a 20 20 74 68 61  hing other.  tha
edf0: 6e 20 5b 53 51 4c 49 54 45 5f 52 4f 57 5d 2c 20  n [SQLITE_ROW], 
ee00: 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 2c 20 6f  [SQLITE_BUSY], o
ee10: 72 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44  r [SQLITE_LOCKED
ee20: 5d 20 75 6e 6c 65 73 73 20 74 68 65 72 65 20 77  ] unless there w
ee30: 61 73 20 61 6e 0a 20 20 69 6e 74 65 72 76 65 6e  as an.  interven
ee40: 69 6e 67 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c  ing call to [sql
ee50: 69 74 65 33 5f 72 65 73 65 74 28 29 5d 2e 0a 0a  ite3_reset()]...
ee60: 20 20 49 6e 20 53 51 4c 69 74 65 20 5b 76 65 72    In SQLite [ver
ee70: 73 69 6f 6e 20 33 2e 36 2e 32 33 2e 31 5d 20 28  sion 3.6.23.1] (
ee80: 5b 64 61 74 65 6f 66 3a 33 2e 36 2e 32 33 2e 31  [dateof:3.6.23.1
ee90: 5d 29 0a 20 20 61 6e 64 20 65 61 72 6c 69 65 72  ]).  and earlier
eea0: 2c 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28  , [sqlite3_step(
eeb0: 29 5d 20 75 73 65 64 20 74 6f 20 61 6c 77 61 79  )] used to alway
eec0: 73 0a 20 20 72 65 74 75 72 6e 20 5b 53 51 4c 49  s.  return [SQLI
eed0: 54 45 5f 4d 49 53 55 53 45 5d 20 69 66 20 69 74  TE_MISUSE] if it
eee0: 20 77 61 73 20 69 6e 76 6f 6b 65 64 20 61 67 61   was invoked aga
eef0: 69 6e 20 61 66 74 65 72 20 72 65 74 75 72 6e 69  in after returni
ef00: 6e 67 20 61 6e 79 74 68 69 6e 67 0a 20 20 6f 74  ng anything.  ot
ef10: 68 65 72 20 74 68 61 6e 20 5b 53 51 4c 49 54 45  her than [SQLITE
ef20: 5f 52 4f 57 5d 20 77 69 74 68 6f 75 74 20 61 6e  _ROW] without an
ef30: 20 69 6e 74 65 72 76 65 6e 69 6e 67 20 63 61 6c   intervening cal
ef40: 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65  l to [sqlite3_re
ef50: 73 65 74 28 29 5d 2e 0a 20 20 54 68 69 73 20 63  set()]..  This c
ef60: 61 75 73 65 64 20 70 72 6f 62 6c 65 6d 73 20 6f  aused problems o
ef70: 6e 20 73 6f 6d 65 20 70 6f 6f 72 6c 79 20 77 72  n some poorly wr
ef80: 69 74 74 65 6e 20 73 6d 61 72 74 70 68 6f 6e 65  itten smartphone
ef90: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 77 68   applications wh
efa0: 69 63 68 0a 20 20 64 69 64 20 6e 6f 74 20 63 6f  ich.  did not co
efb0: 72 72 65 63 74 6c 79 20 68 61 6e 64 6c 65 20 74  rrectly handle t
efc0: 68 65 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 45  he [SQLITE_LOCKE
efd0: 44 5d 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f 42  D] and [SQLITE_B
efe0: 55 53 59 5d 20 65 72 72 6f 72 20 0a 20 20 72 65  USY] error .  re
eff0: 74 75 72 6e 73 2e 20 20 52 61 74 68 65 72 20 74  turns.  Rather t
f000: 68 61 6e 20 66 69 78 20 74 68 65 20 6d 61 6e 79  han fix the many
f010: 20 64 65 66 65 63 74 69 76 65 20 73 6d 61 72 74   defective smart
f020: 70 68 6f 6e 65 20 61 70 70 6c 69 63 61 74 69 6f  phone applicatio
f030: 6e 73 2c 20 0a 20 20 74 68 65 20 62 65 68 61 76  ns, .  the behav
f040: 69 6f 72 20 6f 66 20 53 51 4c 69 74 65 20 77 61  ior of SQLite wa
f050: 73 20 63 68 61 6e 67 65 64 20 69 6e 20 33 2e 36  s changed in 3.6
f060: 2e 32 33 2e 32 20 74 6f 20 61 75 74 6f 6d 61 74  .23.2 to automat
f070: 69 63 61 6c 6c 79 20 72 65 73 65 74 0a 20 20 74  ically reset.  t
f080: 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74  he prepared stat
f090: 65 6d 65 6e 74 2e 20 20 42 75 74 20 74 68 61 74  ement.  But that
f0a0: 20 63 68 61 6e 67 65 64 20 63 61 75 73 65 64 20   changed caused 
f0b0: 69 73 73 75 65 73 20 69 6e 20 6f 74 68 65 72 20  issues in other 
f0c0: 0a 20 20 69 6d 70 72 6f 70 65 72 6c 79 20 69 6d  .  improperly im
f0d0: 70 6c 65 6d 65 6e 74 65 64 20 61 70 70 6c 69 63  plemented applic
f0e0: 61 74 69 6f 6e 73 20 74 68 61 74 20 77 65 72 65  ations that were
f0f0: 20 61 63 74 75 61 6c 6c 79 20 6c 6f 6f 6b 69 6e   actually lookin
f100: 67 0a 20 20 66 6f 72 20 61 6e 20 5b 53 51 4c 49  g.  for an [SQLI
f110: 54 45 5f 4d 49 53 55 53 45 5d 20 72 65 74 75 72  TE_MISUSE] retur
f120: 6e 20 74 6f 20 74 65 72 6d 69 6e 61 74 65 20 74  n to terminate t
f130: 68 65 69 72 20 71 75 65 72 79 20 6c 6f 6f 70 73  heir query loops
f140: 2e 20 20 28 41 6e 79 74 69 6d 65 0a 20 20 61 6e  .  (Anytime.  an
f150: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 67 65 74   application get
f160: 73 20 61 6e 20 53 51 4c 49 54 45 5f 4d 49 53 55  s an SQLITE_MISU
f170: 53 45 20 65 72 72 6f 72 20 63 6f 64 65 20 66 72  SE error code fr
f180: 6f 6d 20 53 51 4c 69 74 65 2c 20 74 68 61 74 20  om SQLite, that 
f190: 6d 65 61 6e 73 20 74 68 65 0a 20 20 61 70 70 6c  means the.  appl
f1a0: 69 63 61 74 69 6f 6e 20 69 73 20 6d 69 73 75 73  ication is misus
f1b0: 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20 69  ing the SQLite i
f1c0: 6e 74 65 72 66 61 63 65 20 61 6e 64 20 69 73 20  nterface and is 
f1d0: 74 68 75 73 20 69 6e 63 6f 72 72 65 63 74 6c 79  thus incorrectly
f1e0: 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2e 29  .  implemented.)
f1f0: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49    The SQLITE_OMI
f200: 54 5f 41 55 54 4f 52 45 53 45 54 20 69 6e 74 65  T_AUTORESET inte
f210: 72 66 61 63 65 20 77 61 73 20 61 64 64 65 64 20  rface was added 
f220: 74 6f 20 53 51 4c 69 74 65 0a 20 20 5b 76 65 72  to SQLite.  [ver
f230: 73 69 6f 6e 20 33 2e 37 2e 35 5d 20 28 5b 64 61  sion 3.7.5] ([da
f240: 74 65 6f 66 3a 33 2e 37 2e 35 5d 29 20 69 6e 20  teof:3.7.5]) in 
f250: 61 6e 20 65 66 66 6f 72 74 20 74 6f 20 67 65 74  an effort to get
f260: 20 61 6c 6c 20 6f 66 20 74 68 65 20 28 62 72 6f   all of the (bro
f270: 6b 65 6e 29 0a 20 20 61 70 70 6c 69 63 61 74 69  ken).  applicati
f280: 6f 6e 73 20 74 6f 20 77 6f 72 6b 20 61 67 61 69  ons to work agai
f290: 6e 20 77 69 74 68 6f 75 74 20 68 61 76 69 6e 67  n without having
f2a0: 20 74 6f 20 61 63 74 75 61 6c 6c 79 20 66 69 78   to actually fix
f2b0: 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
f2c0: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
f2d0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
f2e0: 54 5f 41 55 54 4f 56 41 43 55 55 4d 7d 20 7b 0a  T_AUTOVACUUM} {.
f2f0: 20 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e    If this option
f300: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
f310: 20 6c 69 62 72 61 72 79 20 63 61 6e 6e 6f 74 20   library cannot 
f320: 63 72 65 61 74 65 20 6f 72 20 77 72 69 74 65 20  create or write 
f330: 74 6f 20 0a 20 20 64 61 74 61 62 61 73 65 73 20  to .  databases 
f340: 74 68 61 74 20 73 75 70 70 6f 72 74 20 5b 61 75  that support [au
f350: 74 6f 5f 76 61 63 75 75 6d 5d 2e 0a 20 20 45 78  to_vacuum]..  Ex
f360: 65 63 75 74 69 6e 67 20 61 20 5b 50 52 41 47 4d  ecuting a [PRAGM
f370: 41 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 73  A auto_vacuum] s
f380: 74 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f 74 20  tatement is not 
f390: 61 6e 20 65 72 72 6f 72 0a 20 20 28 73 69 6e 63  an error.  (sinc
f3a0: 65 20 75 6e 6b 6e 6f 77 6e 20 50 52 41 47 4d 41  e unknown PRAGMA
f3b0: 73 20 61 72 65 20 73 69 6c 65 6e 74 6c 79 20 69  s are silently i
f3c0: 67 6e 6f 72 65 64 29 2c 20 62 75 74 20 64 6f 65  gnored), but doe
f3d0: 73 20 6e 6f 74 20 72 65 74 75 72 6e 20 61 20 76  s not return a v
f3e0: 61 6c 75 65 0a 20 20 6f 72 20 6d 6f 64 69 66 79  alue.  or modify
f3f0: 20 74 68 65 20 61 75 74 6f 2d 76 61 63 75 75 6d   the auto-vacuum
f400: 20 66 6c 61 67 20 69 6e 20 74 68 65 20 64 61 74   flag in the dat
f410: 61 62 61 73 65 20 66 69 6c 65 2e 20 49 66 20 61  abase file. If a
f420: 20 64 61 74 61 62 61 73 65 20 74 68 61 74 0a 20   database that. 
f430: 20 73 75 70 70 6f 72 74 73 20 61 75 74 6f 2d 76   supports auto-v
f440: 61 63 75 75 6d 20 69 73 20 6f 70 65 6e 65 64 20  acuum is opened 
f450: 62 79 20 61 20 6c 69 62 72 61 72 79 20 63 6f 6d  by a library com
f460: 70 69 6c 65 64 20 77 69 74 68 20 74 68 69 73 20  piled with this 
f470: 6f 70 74 69 6f 6e 2c 20 69 74 0a 20 20 69 73 20  option, it.  is 
f480: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6f 70  automatically op
f490: 65 6e 65 64 20 69 6e 20 72 65 61 64 2d 6f 6e 6c  ened in read-onl
f4a0: 79 20 6d 6f 64 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  y mode..}..COMPI
f4b0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
f4c0: 45 5f 4f 4d 49 54 5f 42 45 54 57 45 45 4e 5f 4f  E_OMIT_BETWEEN_O
f4d0: 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20  PTIMIZATION} {. 
f4e0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73   This option dis
f4f0: 61 62 6c 65 73 20 74 68 65 20 75 73 65 20 6f 66  ables the use of
f500: 20 69 6e 64 69 63 65 73 20 77 69 74 68 20 57 48   indices with WH
f510: 45 52 45 20 63 6c 61 75 73 65 20 74 65 72 6d 73  ERE clause terms
f520: 0a 20 20 74 68 61 74 20 65 6d 70 6c 6f 79 20 74  .  that employ t
f530: 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61  he BETWEEN opera
f540: 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  tor..}..COMPILE_
f550: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
f560: 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54 45 52 41 4c  MIT_BLOB_LITERAL
f570: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
f580: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
f590: 64 2c 20 69 74 20 69 73 20 6e 6f 74 20 70 6f 73  d, it is not pos
f5a0: 73 69 62 6c 65 20 74 6f 20 73 70 65 63 69 66 79  sible to specify
f5b0: 20 61 20 62 6c 6f 62 20 69 6e 0a 20 20 61 6e 20   a blob in.  an 
f5c0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 75 73  SQL statement us
f5d0: 69 6e 67 20 74 68 65 20 58 27 41 42 43 44 27 20  ing the X'ABCD' 
f5e0: 73 79 6e 74 61 78 2e 0a 7d 0a 0a 43 4f 4d 50 49  syntax..}..COMPI
f5f0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
f600: 45 5f 4f 4d 49 54 5f 42 54 52 45 45 43 4f 55 4e  E_OMIT_BTREECOUN
f610: 54 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  T} {.  When this
f620: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
f630: 65 64 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74  ed, an optimizat
f640: 69 6f 6e 20 74 68 61 74 20 61 63 63 65 6c 65 72  ion that acceler
f650: 61 74 65 73 20 63 6f 75 6e 74 69 6e 67 0a 20 20  ates counting.  
f660: 61 6c 6c 20 65 6e 74 72 69 65 73 20 69 6e 20 61  all entries in a
f670: 20 74 61 62 6c 65 20 28 69 6e 20 6f 74 68 65 72   table (in other
f680: 20 77 6f 72 64 73 2c 20 61 6e 20 6f 70 74 69 6d   words, an optim
f690: 69 7a 61 74 69 6f 6e 20 74 68 61 74 20 68 65 6c  ization that hel
f6a0: 70 73 0a 20 20 22 53 45 4c 45 43 54 20 63 6f 75  ps.  "SELECT cou
f6b0: 6e 74 28 2a 29 20 46 52 4f 4d 20 74 61 62 6c 65  nt(*) FROM table
f6c0: 22 20 72 75 6e 20 66 61 73 74 65 72 29 20 69 73  " run faster) is
f6d0: 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   omitted..}..COM
f6e0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
f6f0: 49 54 45 5f 4f 4d 49 54 5f 42 55 49 4c 54 49 4e  ITE_OMIT_BUILTIN
f700: 5f 54 45 53 54 7d 20 7b 0a 20 20 54 68 69 73 20  _TEST} {.  This 
f710: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
f720: 69 6f 6e 20 68 61 73 20 62 65 65 6e 20 72 65 6e  ion has been ren
f730: 61 6d 65 64 20 74 6f 20 5b 53 51 4c 49 54 45 5f  amed to [SQLITE_
f740: 55 4e 54 45 53 54 41 42 4c 45 5d 2e 0a 7d 0a 0a  UNTESTABLE]..}..
f750: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
f760: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 41 53 54  SQLITE_OMIT_CAST
f770: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
f780: 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  n causes SQLite 
f790: 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20  to omit support 
f7a0: 66 6f 72 20 74 68 65 20 43 41 53 54 20 6f 70 65  for the CAST ope
f7b0: 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  rator..}..COMPIL
f7c0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
f7d0: 5f 4f 4d 49 54 5f 43 48 45 43 4b 7d 20 7b 0a 20  _OMIT_CHECK} {. 
f7e0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
f7f0: 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d  ses SQLite to om
f800: 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 43  it support for C
f810: 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73  HECK constraints
f820: 2e 0a 20 20 54 68 65 20 70 61 72 73 65 72 20 77  ..  The parser w
f830: 69 6c 6c 20 73 74 69 6c 6c 20 61 63 63 65 70 74  ill still accept
f840: 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e   CHECK constrain
f850: 74 73 20 69 6e 20 53 51 4c 20 73 74 61 74 65 6d  ts in SQL statem
f860: 65 6e 74 73 2c 0a 20 20 74 68 65 79 20 77 69 6c  ents,.  they wil
f870: 6c 20 6a 75 73 74 20 6e 6f 74 20 62 65 20 65 6e  l just not be en
f880: 66 6f 72 63 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  forced..}..COMPI
f890: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
f8a0: 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49 4c 45 4f 50  E_OMIT_COMPILEOP
f8b0: 54 49 4f 4e 5f 44 49 41 47 53 7d 20 7b 0a 20 20  TION_DIAGS} {.  
f8c0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  This option is u
f8d0: 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20  sed to omit the 
f8e0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
f8f0: 69 6f 6e 20 64 69 61 67 6e 6f 73 74 69 63 73 20  ion diagnostics 
f900: 61 76 61 69 6c 61 62 6c 65 0a 20 20 69 6e 20 53  available.  in S
f910: 51 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69 6e 67  QLite, including
f920: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f   the [sqlite3_co
f930: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64  mpileoption_used
f940: 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
f950: 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  e3_compileoption
f960: 5f 67 65 74 28 29 5d 20 43 2f 43 2b 2b 20 66 75  _get()] C/C++ fu
f970: 6e 63 74 69 6f 6e 73 2c 20 74 68 65 0a 20 20 5b  nctions, the.  [
f980: 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70  sqlite_compileop
f990: 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20 61 6e 64  tion_used()] and
f9a0: 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65   [sqlite_compile
f9b0: 6f 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20 53 51  option_get()] SQ
f9c0: 4c 20 66 75 6e 63 74 69 6f 6e 73 2c 0a 20 20 61  L functions,.  a
f9d0: 6e 64 20 74 68 65 20 5b 63 6f 6d 70 69 6c 65 5f  nd the [compile_
f9e0: 6f 70 74 69 6f 6e 73 20 70 72 61 67 6d 61 5d 2e  options pragma].
f9f0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
fa00: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
fa10: 43 4f 4d 50 4c 45 54 45 7d 20 7b 0a 20 20 54 68  COMPLETE} {.  Th
fa20: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
fa30: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f   the [sqlite3_co
fa40: 6d 70 6c 65 74 65 28 29 5d 20 61 6e 64 20 5b 73  mplete()] and [s
fa50: 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31  qlite3_complete1
fa60: 36 28 29 5d 0a 20 20 69 6e 74 65 72 66 61 63 65  6()].  interface
fa70: 73 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e  s to be omitted.
fa80: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
fa90: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
faa0: 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 7d  COMPOUND_SELECT}
fab0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
fac0: 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74   is used to omit
fad0: 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20 5b 53   the compound [S
fae0: 45 4c 45 43 54 5d 20 66 75 6e 63 74 69 6f 6e 61  ELECT] functiona
faf0: 6c 69 74 79 2e 20 0a 20 20 5b 53 45 4c 45 43 54  lity. .  [SELECT
fb00: 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61  ] statements tha
fb10: 74 20 75 73 65 20 74 68 65 20 0a 20 20 55 4e 49  t use the .  UNI
fb20: 4f 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49  ON, UNION ALL, I
fb30: 4e 54 45 52 53 45 43 54 20 6f 72 20 45 58 43 45  NTERSECT or EXCE
fb40: 50 54 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45  PT compound SELE
fb50: 43 54 20 6f 70 65 72 61 74 6f 72 73 20 77 69 6c  CT operators wil
fb60: 6c 20 0a 20 20 63 61 75 73 65 20 61 20 70 61 72  l .  cause a par
fb70: 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20 41 6e 20  se error...  An 
fb80: 5b 49 4e 53 45 52 54 5d 20 73 74 61 74 65 6d 65  [INSERT] stateme
fb90: 6e 74 20 77 69 74 68 20 6d 75 6c 74 69 70 6c 65  nt with multiple
fba0: 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 56   values in the V
fbb0: 41 4c 55 45 53 20 63 6c 61 75 73 65 20 69 73 0a  ALUES clause is.
fbc0: 20 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e    implemented in
fbd0: 74 65 72 6e 61 6c 6c 79 20 61 73 20 61 20 63 6f  ternally as a co
fbe0: 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 2e 20 20  mpound SELECT.  
fbf0: 48 65 6e 63 65 2c 20 74 68 69 73 20 6f 70 74 69  Hence, this opti
fc00: 6f 6e 20 61 6c 73 6f 0a 20 20 64 69 73 61 62 6c  on also.  disabl
fc10: 65 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 74  es the ability t
fc20: 6f 20 69 6e 73 65 72 74 20 6d 6f 72 65 20 74 68  o insert more th
fc30: 61 6e 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20  an a single row 
fc40: 75 73 69 6e 67 20 61 6e 0a 20 20 49 4e 53 45 52  using an.  INSER
fc50: 54 20 49 4e 54 4f 20 2e 2e 2e 20 56 41 4c 55 45  T INTO ... VALUE
fc60: 53 20 2e 2e 2e 20 73 74 61 74 65 6d 65 6e 74 2e  S ... statement.
fc70: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
fc80: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
fc90: 43 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  CTE} {.  This op
fca0: 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70  tion causes supp
fcb0: 6f 72 74 20 66 6f 72 20 5b 63 6f 6d 6d 6f 6e 20  ort for [common 
fcc0: 74 61 62 6c 65 20 65 78 70 72 65 73 73 69 6f 6e  table expression
fcd0: 73 5d 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64  s] to be omitted
fce0: 2e 0a 7d 0a 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ..}....COMPILE_O
fcf0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
fd00: 49 54 5f 44 41 54 45 54 49 4d 45 5f 46 55 4e 43  IT_DATETIME_FUNC
fd10: 53 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f  S} {.  If this o
fd20: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
fd30: 2c 20 53 51 4c 69 74 65 27 73 20 62 75 69 6c 74  , SQLite's built
fd40: 2d 69 6e 20 64 61 74 65 20 61 6e 64 20 74 69 6d  -in date and tim
fd50: 65 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 0a 20  e manipulation. 
fd60: 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 6f   functions are o
fd70: 6d 69 74 74 65 64 2e 20 53 70 65 63 69 66 69 63  mitted. Specific
fd80: 61 6c 6c 79 2c 20 74 68 65 20 53 51 4c 20 66 75  ally, the SQL fu
fd90: 6e 63 74 69 6f 6e 73 20 6a 75 6c 69 61 6e 64 61  nctions julianda
fda0: 79 28 29 2c 20 64 61 74 65 28 29 2c 0a 20 20 74  y(), date(),.  t
fdb0: 69 6d 65 28 29 2c 20 64 61 74 65 74 69 6d 65 28  ime(), datetime(
fdc0: 29 20 61 6e 64 20 73 74 72 66 74 69 6d 65 28 29  ) and strftime()
fdd0: 20 61 72 65 20 6e 6f 74 20 61 76 61 69 6c 61 62   are not availab
fde0: 6c 65 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20  le. The default 
fdf0: 63 6f 6c 75 6d 6e 0a 20 20 76 61 6c 75 65 73 20  column.  values 
fe00: 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55  CURRENT_TIME, CU
fe10: 52 52 45 4e 54 5f 44 41 54 45 20 61 6e 64 20 43  RRENT_DATE and C
fe20: 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50  URRENT_TIMESTAMP
fe30: 20 61 72 65 20 73 74 69 6c 6c 20 61 76 61 69 6c   are still avail
fe40: 61 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  able..}..COMPILE
fe50: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
fe60: 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45 7d 20 7b  OMIT_DECLTYPE} {
fe70: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
fe80: 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20  auses SQLite to 
fe90: 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72  omit support for
fea0: 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f   the.  [sqlite3_
feb0: 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28  column_decltype(
fec0: 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  )] and [sqlite3_
fed0: 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31  column_decltype1
fee0: 36 28 29 5d 0a 20 20 69 6e 74 65 72 66 61 63 65  6()].  interface
fef0: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
ff00: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
ff10: 54 5f 44 45 50 52 45 43 41 54 45 44 7d 20 7b 0a  T_DEPRECATED} {.
ff20: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
ff30: 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f  uses SQLite to o
ff40: 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  mit support for 
ff50: 69 6e 74 65 72 66 61 63 65 73 0a 20 20 6d 61 72  interfaces.  mar
ff60: 6b 65 64 20 61 73 20 64 65 70 72 65 63 61 74 65  ked as deprecate
ff70: 64 2e 20 20 54 68 69 73 20 69 6e 63 6c 75 64 65  d.  This include
ff80: 73 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 61 67  s .  [sqlite3_ag
ff90: 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28 29 5d  gregate_count()]
ffa0: 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 65 78 70  ,.  [sqlite3_exp
ffb0: 69 72 65 64 28 29 5d 2c 0a 20 20 5b 73 71 6c 69  ired()],.  [sqli
ffc0: 74 65 33 5f 74 72 61 6e 73 66 65 72 5f 62 69 6e  te3_transfer_bin
ffd0: 64 69 6e 67 73 28 29 5d 2c 0a 20 20 5b 73 71 6c  dings()],.  [sql
ffe0: 69 74 65 33 5f 67 6c 6f 62 61 6c 5f 72 65 63 6f  ite3_global_reco
fff0: 76 65 72 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74  ver()],.  [sqlit
10000 65 33 5f 74 68 72 65 61 64 5f 63 6c 65 61 6e 75  e3_thread_cleanu
10010 70 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69  p()] and.  [sqli
10020 74 65 33 5f 6d 65 6d 6f 72 79 5f 61 6c 61 72 6d  te3_memory_alarm
10030 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e 0a  ()] interfaces..
10040 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
10050 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44  N {SQLITE_OMIT_D
10060 49 53 4b 49 4f 7d 20 7b 0a 20 20 54 68 69 73 20  ISKIO} {.  This 
10070 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6c 6c  option omits all
10080 20 73 75 70 70 6f 72 74 20 66 6f 72 20 77 72 69   support for wri
10090 74 69 6e 67 20 74 6f 20 74 68 65 20 64 69 73 6b  ting to the disk
100a0 20 61 6e 64 20 66 6f 72 63 65 73 0a 20 20 64 61   and forces.  da
100b0 74 61 62 61 73 65 73 20 74 6f 20 65 78 69 73 74  tabases to exist
100c0 20 69 6e 20 6d 65 6d 6f 72 79 20 6f 6e 6c 79 2e   in memory only.
100d0 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 68 61    This option ha
100e0 73 20 6e 6f 74 20 62 65 65 6e 20 0a 20 20 6d 61  s not been .  ma
100f0 69 6e 74 61 69 6e 65 64 20 61 6e 64 20 70 72 6f  intained and pro
10100 62 61 62 6c 79 20 64 6f 65 73 20 6e 6f 74 20 77  bably does not w
10110 6f 72 6b 20 77 69 74 68 20 6e 65 77 65 72 20 76  ork with newer v
10120 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
10130 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
10140 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
10150 54 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a 20 20 44  T_EXPLAIN} {.  D
10160 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74  efining this opt
10170 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b  ion causes the [
10180 45 58 50 4c 41 49 4e 5d 20 63 6f 6d 6d 61 6e 64  EXPLAIN] command
10190 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 20 66   to be omitted f
101a0 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72 61 72  rom the.  librar
101b0 79 2e 20 41 74 74 65 6d 70 74 69 6e 67 20 74 6f  y. Attempting to
101c0 20 65 78 65 63 75 74 65 20 61 6e 20 5b 45 58 50   execute an [EXP
101d0 4c 41 49 4e 5d 20 73 74 61 74 65 6d 65 6e 74 20  LAIN] statement 
101e0 77 69 6c 6c 20 63 61 75 73 65 20 61 20 70 61 72  will cause a par
101f0 73 65 0a 20 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43  se.  error..}..C
10200 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
10210 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f  QLITE_OMIT_FLAG_
10220 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 54 68 69  PRAGMAS} {.  Thi
10230 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73  s option omits s
10240 75 70 70 6f 72 74 20 66 6f 72 20 61 20 73 75 62  upport for a sub
10250 73 65 74 20 6f 66 20 5b 50 52 41 47 4d 41 5d 20  set of [PRAGMA] 
10260 63 6f 6d 6d 61 6e 64 73 20 74 68 61 74 0a 20 20  commands that.  
10270 71 75 65 72 79 20 61 6e 64 20 73 65 74 20 62 6f  query and set bo
10280 6f 6c 65 61 6e 20 70 72 6f 70 65 72 74 69 65 73  olean properties
10290 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
102a0 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
102b0 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e 54 7d  _FLOATING_POINT}
102c0 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
102d0 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74   is used to omit
102e0 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20   floating-point 
102f0 6e 75 6d 62 65 72 20 73 75 70 70 6f 72 74 20 66  number support f
10300 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 0a 20  rom the SQLite. 
10310 20 6c 69 62 72 61 72 79 2e 20 57 68 65 6e 20 73   library. When s
10320 70 65 63 69 66 69 65 64 2c 20 73 70 65 63 69 66  pecified, specif
10330 79 69 6e 67 20 61 20 66 6c 6f 61 74 69 6e 67 20  ying a floating 
10340 70 6f 69 6e 74 20 6e 75 6d 62 65 72 20 61 73 20  point number as 
10350 61 20 6c 69 74 65 72 61 6c 20 0a 20 20 28 69 2e  a literal .  (i.
10360 65 2e 20 22 31 2e 30 31 22 29 20 72 65 73 75 6c  e. "1.01") resul
10370 74 73 20 69 6e 20 61 20 70 61 72 73 65 20 65 72  ts in a parse er
10380 72 6f 72 2e 0a 0a 20 20 3c 70 3e 49 6e 20 74 68  ror...  <p>In th
10390 65 20 66 75 74 75 72 65 2c 20 74 68 69 73 20 6f  e future, this o
103a0 70 74 69 6f 6e 20 6d 61 79 20 61 6c 73 6f 20 64  ption may also d
103b0 69 73 61 62 6c 65 20 6f 74 68 65 72 20 66 6c 6f  isable other flo
103c0 61 74 69 6e 67 20 70 6f 69 6e 74 20 0a 20 20 66  ating point .  f
103d0 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2c 20 66 6f  unctionality, fo
103e0 72 20 65 78 61 6d 70 6c 65 20 74 68 65 20 5b 73  r example the [s
103f0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f  qlite3_result_do
10400 75 62 6c 65 28 29 5d 2c 20 0a 20 20 5b 73 71 6c  uble()], .  [sql
10410 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65  ite3_bind_double
10420 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 76 61  ()], [sqlite3_va
10430 6c 75 65 5f 64 6f 75 62 6c 65 28 29 5d 20 61 6e  lue_double()] an
10440 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  d.  [sqlite3_col
10450 75 6d 6e 5f 64 6f 75 62 6c 65 28 29 5d 20 41 50  umn_double()] AP
10460 49 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 20 20 3c  I functions..  <
10470 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  /p>.}..COMPILE_O
10480 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
10490 49 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 7d 20  IT_FOREIGN_KEY} 
104a0 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  {.  If this opti
104b0 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
104c0 68 65 6e 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79  hen [foreign key
104d0 20 63 6f 6e 73 74 72 61 69 6e 74 5d 20 73 79 6e   constraint] syn
104e0 74 61 78 20 69 73 0a 20 20 6e 6f 74 20 72 65 63  tax is.  not rec
104f0 6f 67 6e 69 7a 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  ognized..}..COMP
10500 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
10510 54 45 5f 4f 4d 49 54 5f 47 45 54 5f 54 41 42 4c  TE_OMIT_GET_TABL
10520 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
10530 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70 6f 72  on causes suppor
10540 74 20 66 6f 72 20 5b 73 71 6c 69 74 65 33 5f 67  t for [sqlite3_g
10550 65 74 5f 74 61 62 6c 65 28 29 5d 20 61 6e 64 0a  et_table()] and.
10560 20 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 5f    [sqlite3_free_
10570 74 61 62 6c 65 28 29 5d 20 74 6f 20 62 65 20 6f  table()] to be o
10580 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  mitted..}..COMPI
10590 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
105a0 45 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c 4f 42 7d  E_OMIT_INCRBLOB}
105b0 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
105c0 20 63 61 75 73 65 73 20 73 75 70 70 6f 72 74 20   causes support 
105d0 66 6f 72 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f  for [sqlite3_blo
105e0 62 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61 6c 20  b | incremental 
105f0 42 4c 4f 42 20 49 2f 4f 5d 0a 20 20 74 6f 20 62  BLOB I/O].  to b
10600 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f  e omitted..}..CO
10610 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
10620 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 54 45 47 52  LITE_OMIT_INTEGR
10630 49 54 59 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54  ITY_CHECK} {.  T
10640 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
10650 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
10660 20 5b 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63   [integrity_chec
10670 6b 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f  k pragma]..}..CO
10680 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
10690 4c 49 54 45 5f 4f 4d 49 54 5f 4c 49 4b 45 5f 4f  LITE_OMIT_LIKE_O
106a0 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20  PTIMIZATION} {. 
106b0 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73   This option dis
106c0 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c 69 74  ables the abilit
106d0 79 20 6f 66 20 53 51 4c 69 74 65 20 74 6f 20 75  y of SQLite to u
106e0 73 65 20 69 6e 64 69 63 65 73 20 74 6f 20 68 65  se indices to he
106f0 6c 70 0a 20 20 72 65 73 6f 6c 76 65 20 5b 4c 49  lp.  resolve [LI
10700 4b 45 5d 20 61 6e 64 20 5b 47 4c 4f 42 5d 20 6f  KE] and [GLOB] o
10710 70 65 72 61 74 6f 72 73 20 69 6e 20 61 20 57 48  perators in a WH
10720 45 52 45 20 63 6c 61 75 73 65 2e 0a 7d 0a 0a 43  ERE clause..}..C
10730 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
10740 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 41 44 5f  QLITE_OMIT_LOAD_
10750 45 58 54 45 4e 53 49 4f 4e 7d 20 7b 0a 20 20 54  EXTENSION} {.  T
10760 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
10770 20 74 68 65 20 65 6e 74 69 72 65 20 65 78 74 65   the entire exte
10780 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67 20 6d 65  nsion loading me
10790 63 68 61 6e 69 73 6d 20 66 72 6f 6d 0a 20 20 53  chanism from.  S
107a0 51 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69 6e 67  QLite, including
107b0 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65   [sqlite3_enable
107c0 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  _load_extension(
107d0 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65  )] and.  [sqlite
107e0 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e  3_load_extension
107f0 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e 0a  ()] interfaces..
10800 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
10810 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  N {SQLITE_OMIT_L
10820 4f 43 41 4c 54 49 4d 45 7d 20 7b 0a 20 20 54 68  OCALTIME} {.  Th
10830 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
10840 74 68 65 20 22 6c 6f 63 61 6c 74 69 6d 65 22 20  the "localtime" 
10850 6d 6f 64 69 66 69 65 72 20 66 72 6f 6d 20 74 68  modifier from th
10860 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 0a  e date and time.
10870 20 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68    functions.  Th
10880 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 73 6f 6d  is option is som
10890 65 74 69 6d 65 73 20 75 73 65 66 75 6c 20 77 68  etimes useful wh
108a0 65 6e 20 74 72 79 69 6e 67 20 74 6f 20 63 6f 6d  en trying to com
108b0 70 69 6c 65 0a 20 20 74 68 65 20 64 61 74 65 20  pile.  the date 
108c0 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f  and time functio
108d0 6e 73 20 6f 6e 20 61 20 70 6c 61 74 66 6f 72 6d  ns on a platform
108e0 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73   that does not s
108f0 75 70 70 6f 72 74 20 74 68 65 0a 20 20 63 6f 6e  upport the.  con
10900 63 65 70 74 20 6f 66 20 6c 6f 63 61 6c 20 74 69  cept of local ti
10910 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  me..}..COMPILE_O
10920 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
10930 49 54 5f 4c 4f 4f 4b 41 53 49 44 45 7d 20 7b 0a  IT_LOOKASIDE} {.
10940 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
10950 69 74 73 20 74 68 65 20 5b 6c 6f 6f 6b 61 73 69  its the [lookasi
10960 64 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  de memory alloca
10970 74 6f 72 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tor]..}..COMPILE
10980 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
10990 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44 42 7d 20 7b  OMIT_MEMORYDB} {
109a0 0a 20 20 57 68 65 6e 20 74 68 69 73 20 69 73 20  .  When this is 
109b0 64 65 66 69 6e 65 64 2c 20 74 68 65 20 6c 69 62  defined, the lib
109c0 72 61 72 79 20 64 6f 65 73 20 6e 6f 74 20 72 65  rary does not re
109d0 73 70 65 63 74 20 74 68 65 20 73 70 65 63 69 61  spect the specia
109e0 6c 20 64 61 74 61 62 61 73 65 0a 20 20 6e 61 6d  l database.  nam
109f0 65 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 28 6e 6f  e ":memory:" (no
10a00 72 6d 61 6c 6c 79 20 75 73 65 64 20 74 6f 20 63  rmally used to c
10a10 72 65 61 74 65 20 61 6e 20 5b 69 6e 2d 6d 65 6d  reate an [in-mem
10a20 6f 72 79 20 64 61 74 61 62 61 73 65 5d 29 2e 20  ory database]). 
10a30 49 66 20 0a 20 20 22 3a 6d 65 6d 6f 72 79 3a 22  If .  ":memory:"
10a40 20 69 73 20 70 61 73 73 65 64 20 74 6f 20 5b 73   is passed to [s
10a50 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20  qlite3_open()], 
10a60 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28  [sqlite3_open16(
10a70 29 5d 2c 20 6f 72 0a 20 20 5b 73 71 6c 69 74 65  )], or.  [sqlite
10a80 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61 20  3_open_v2()], a 
10a90 66 69 6c 65 20 77 69 74 68 20 74 68 69 73 20 6e  file with this n
10aa0 61 6d 65 20 77 69 6c 6c 20 62 65 20 0a 20 20 6f  ame will be .  o
10ab0 70 65 6e 65 64 20 6f 72 20 63 72 65 61 74 65 64  pened or created
10ac0 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
10ad0 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
10ae0 5f 4f 52 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e  _OR_OPTIMIZATION
10af0 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
10b00 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 61  n disables the a
10b10 62 69 6c 69 74 79 20 6f 66 20 53 51 4c 69 74 65  bility of SQLite
10b20 20 74 6f 20 75 73 65 20 61 6e 20 69 6e 64 65 78   to use an index
10b30 20 74 6f 67 65 74 68 65 72 0a 20 20 77 69 74 68   together.  with
10b40 20 74 65 72 6d 73 20 6f 66 20 61 20 57 48 45 52   terms of a WHER
10b50 45 20 63 6c 61 75 73 65 20 63 6f 6e 6e 65 63 74  E clause connect
10b60 65 64 20 62 79 20 74 68 65 20 4f 52 20 6f 70 65  ed by the OR ope
10b70 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  rator..}..COMPIL
10b80 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
10b90 5f 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52 41 47  _OMIT_PAGER_PRAG
10ba0 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  MAS} {.  Definin
10bb0 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d  g this option om
10bc0 69 74 73 20 70 72 61 67 6d 61 73 20 72 65 6c 61  its pragmas rela
10bd0 74 65 64 20 74 6f 20 74 68 65 20 70 61 67 65 72  ted to the pager
10be0 20 73 75 62 73 79 73 74 65 6d 20 66 72 6f 6d 20   subsystem from 
10bf0 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a  .  the build..}.
10c00 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
10c10 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 41  {SQLITE_OMIT_PRA
10c20 47 4d 41 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  GMA} {.  This op
10c30 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
10c40 6f 6d 69 74 20 74 68 65 20 5b 50 52 41 47 4d 41  omit the [PRAGMA
10c50 5d 20 63 6f 6d 6d 61 6e 64 0a 20 20 66 72 6f 6d  ] command.  from
10c60 20 74 68 65 20 6c 69 62 72 61 72 79 2e 20 4e 6f   the library. No
10c70 74 65 20 74 68 61 74 20 69 74 20 69 73 20 75 73  te that it is us
10c80 65 66 75 6c 20 74 6f 20 64 65 66 69 6e 65 20 74  eful to define t
10c90 68 65 20 6d 61 63 72 6f 73 20 74 68 61 74 20 6f  he macros that o
10ca0 6d 69 74 0a 20 20 73 70 65 63 69 66 69 63 20 70  mit.  specific p
10cb0 72 61 67 6d 61 73 20 69 6e 20 61 64 64 69 74 69  ragmas in additi
10cc0 6f 6e 20 74 6f 20 74 68 69 73 2c 20 61 73 20 74  on to this, as t
10cd0 68 65 79 20 6d 61 79 20 61 6c 73 6f 20 72 65 6d  hey may also rem
10ce0 6f 76 65 20 73 75 70 70 6f 72 74 69 6e 67 20 63  ove supporting c
10cf0 6f 64 65 0a 20 20 69 6e 20 6f 74 68 65 72 20 73  ode.  in other s
10d00 75 62 2d 73 79 73 74 65 6d 73 2e 20 54 68 69 73  ub-systems. This
10d10 20 6d 61 63 72 6f 20 72 65 6d 6f 76 65 73 20 74   macro removes t
10d20 68 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d  he [PRAGMA] comm
10d30 61 6e 64 20 6f 6e 6c 79 2e 0a 7d 0a 0a 43 4f 4d  and only..}..COM
10d40 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
10d50 49 54 45 5f 4f 4d 49 54 5f 50 52 4f 47 52 45 53  ITE_OMIT_PROGRES
10d60 53 5f 43 41 4c 4c 42 41 43 4b 7d 20 7b 0a 20 20  S_CALLBACK} {.  
10d70 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20  This option may 
10d80 62 65 20 64 65 66 69 6e 65 64 20 74 6f 20 6f 6d  be defined to om
10d90 69 74 20 74 68 65 20 63 61 70 61 62 69 6c 69 74  it the capabilit
10da0 79 20 74 6f 20 69 73 73 75 65 20 22 70 72 6f 67  y to issue "prog
10db0 72 65 73 73 22 20 0a 20 20 63 61 6c 6c 62 61 63  ress" .  callbac
10dc0 6b 73 20 64 75 72 69 6e 67 20 6c 6f 6e 67 2d 72  ks during long-r
10dd0 75 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61 74 65  unning SQL state
10de0 6d 65 6e 74 73 2e 20 54 68 65 20 0a 20 20 5b 73  ments. The .  [s
10df0 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f  qlite3_progress_
10e00 68 61 6e 64 6c 65 72 28 29 5d 0a 20 20 41 50 49  handler()].  API
10e10 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74   function is not
10e20 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68 65 20   present in the 
10e30 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50  library..}..COMP
10e40 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
10e50 54 45 5f 4f 4d 49 54 5f 51 55 49 43 4b 42 41 4c  TE_OMIT_QUICKBAL
10e60 41 4e 43 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  ANCE} {.  This o
10e70 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6e 20 61  ption omits an a
10e80 6c 74 65 72 6e 61 74 69 76 65 2c 20 66 61 73 74  lternative, fast
10e90 65 72 20 42 2d 54 72 65 65 20 62 61 6c 61 6e 63  er B-Tree balanc
10ea0 69 6e 67 20 72 6f 75 74 69 6e 65 2e 0a 20 20 55  ing routine..  U
10eb0 73 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e  sing this option
10ec0 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20 73 6c   makes SQLite sl
10ed0 69 67 68 74 6c 79 20 73 6d 61 6c 6c 65 72 20 61  ightly smaller a
10ee0 74 20 74 68 65 20 65 78 70 65 6e 73 65 20 6f 66  t the expense of
10ef0 0a 20 20 6d 61 6b 69 6e 67 20 69 74 20 72 75 6e  .  making it run
10f00 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f 77 65 72   slightly slower
10f10 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
10f20 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
10f30 5f 52 45 49 4e 44 45 58 7d 20 7b 0a 20 20 57 68  _REINDEX} {.  Wh
10f40 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
10f50 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b  s defined, the [
10f60 52 45 49 4e 44 45 58 5d 0a 20 20 63 6f 6d 6d 61  REINDEX].  comma
10f70 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64  nd is not includ
10f80 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72  ed in the librar
10f90 79 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61  y..  Executing a
10fa0 20 5b 52 45 49 4e 44 45 58 5d 20 73 74 61 74 65   [REINDEX] state
10fb0 6d 65 6e 74 20 63 61 75 73 65 73 20 0a 20 20 61  ment causes .  a
10fc0 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a   parse error..}.
10fd0 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
10fe0 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48  {SQLITE_OMIT_SCH
10ff0 45 4d 41 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20  EMA_PRAGMAS} {. 
11000 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
11010 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67  ption omits prag
11020 6d 61 73 20 66 6f 72 20 71 75 65 72 79 69 6e 67  mas for querying
11030 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63   the database sc
11040 68 65 6d 61 20 66 72 6f 6d 20 0a 20 20 74 68 65  hema from .  the
11050 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49   build..}..COMPI
11060 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
11070 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 56 45  E_OMIT_SCHEMA_VE
11080 52 53 49 4f 4e 5f 50 52 41 47 4d 41 53 7d 20 7b  RSION_PRAGMAS} {
11090 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73  .  Defining this
110a0 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72   option omits pr
110b0 61 67 6d 61 73 20 66 6f 72 20 71 75 65 72 79 69  agmas for queryi
110c0 6e 67 20 61 6e 64 20 6d 6f 64 69 66 79 69 6e 67  ng and modifying
110d0 20 74 68 65 20 0a 20 20 64 61 74 61 62 61 73 65   the .  database
110e0 20 73 63 68 65 6d 61 20 76 65 72 73 69 6f 6e 20   schema version 
110f0 61 6e 64 20 75 73 65 72 20 76 65 72 73 69 6f 6e  and user version
11100 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e   from the build.
11110 20 53 70 65 63 69 66 69 63 61 6c 6c 79 2c 20 74   Specifically, t
11120 68 65 20 0a 20 20 5b 73 63 68 65 6d 61 5f 76 65  he .  [schema_ve
11130 72 73 69 6f 6e 5d 20 61 6e 64 20 5b 75 73 65 72  rsion] and [user
11140 5f 76 65 72 73 69 6f 6e 5d 20 50 52 41 47 4d 41  _version] PRAGMA
11150 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d  s are omitted..}
11160 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
11170 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 48   {SQLITE_OMIT_SH
11180 41 52 45 44 5f 43 41 43 48 45 7d 20 7b 0a 20 20  ARED_CACHE} {.  
11190 54 68 69 73 20 6f 70 74 69 6f 6e 20 62 75 69 6c  This option buil
111a0 64 73 20 53 51 4c 69 74 65 20 77 69 74 68 6f 75  ds SQLite withou
111b0 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 73 68  t support for sh
111c0 61 72 65 64 2d 63 61 63 68 65 20 6d 6f 64 65 2e  ared-cache mode.
111d0 0a 20 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f  .  The [sqlite3_
111e0 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61  enable_shared_ca
111f0 63 68 65 28 29 5d 20 69 73 20 6f 6d 69 74 74 65  che()] is omitte
11200 64 20 61 6c 6f 6e 67 20 77 69 74 68 20 61 20 66  d along with a f
11210 61 69 72 0a 20 20 61 6d 6f 75 6e 74 20 6f 66 20  air.  amount of 
11220 6c 6f 67 69 63 20 77 69 74 68 69 6e 20 74 68 65  logic within the
11230 20 42 2d 54 72 65 65 20 73 75 62 73 79 73 74 65   B-Tree subsyste
11240 6d 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  m associated wit
11250 68 20 73 68 61 72 65 64 0a 20 20 63 61 63 68 65  h shared.  cache
11260 20 6d 61 6e 61 67 65 6d 65 6e 74 2e 0a 7d 0a 0a   management..}..
11270 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
11280 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 55 42 51  SQLITE_OMIT_SUBQ
11290 55 45 52 59 7d 20 7b 0a 20 20 49 66 20 64 65 66  UERY} {.  If def
112a0 69 6e 65 64 2c 20 73 75 70 70 6f 72 74 20 66 6f  ined, support fo
112b0 72 20 73 75 62 2d 73 65 6c 65 63 74 73 20 61 6e  r sub-selects an
112c0 64 20 74 68 65 20 49 4e 28 29 20 6f 70 65 72 61  d the IN() opera
112d0 74 6f 72 20 61 72 65 20 6f 6d 69 74 74 65 64 2e  tor are omitted.
112e0 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
112f0 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
11300 54 43 4c 5f 56 41 52 49 41 42 4c 45 7d 20 7b 0a  TCL_VARIABLE} {.
11310 20 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f 20    If this macro 
11320 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e  is defined, then
11330 20 74 68 65 20 73 70 65 63 69 61 6c 20 22 24 3c   the special "$<
11340 76 61 72 69 61 62 6c 65 2d 6e 61 6d 65 3e 22 20  variable-name>" 
11350 73 79 6e 74 61 78 0a 20 20 75 73 65 64 20 74 6f  syntax.  used to
11360 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62   automatically b
11370 69 6e 64 20 53 51 4c 20 76 61 72 69 61 62 6c 65  ind SQL variable
11380 73 20 74 6f 20 54 43 4c 20 76 61 72 69 61 62 6c  s to TCL variabl
11390 65 73 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d  es is omitted..}
113a0 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
113b0 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 45   {SQLITE_OMIT_TE
113c0 4d 50 44 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f  MPDB} {.  This o
113d0 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70  ption omits supp
113e0 6f 72 74 20 66 6f 72 20 54 45 4d 50 20 6f 72 20  ort for TEMP or 
113f0 54 45 4d 50 4f 52 41 52 59 20 74 61 62 6c 65 73  TEMPORARY tables
11400 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
11410 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
11420 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54 68 69 73  _TRACE} {.  This
11430 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
11440 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 73  pport for the [s
11450 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 29  qlite3_profile()
11460 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33  ] and.  [sqlite3
11470 5f 74 72 61 63 65 28 29 5d 20 69 6e 74 65 72 66  _trace()] interf
11480 61 63 65 73 20 61 6e 64 20 74 68 65 69 72 20 61  aces and their a
11490 73 73 6f 63 69 61 74 65 64 20 6c 6f 67 69 63 2e  ssociated logic.
114a0 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
114b0 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
114c0 54 52 49 47 47 45 52 7d 20 7b 0a 20 20 44 65 66  TRIGGER} {.  Def
114d0 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f  ining this optio
114e0 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20  n omits support 
114f0 66 6f 72 20 54 52 49 47 47 45 52 20 6f 62 6a 65  for TRIGGER obje
11500 63 74 73 2e 20 4e 65 69 74 68 65 72 20 74 68 65  cts. Neither the
11510 20 0a 20 20 5b 43 52 45 41 54 45 20 54 52 49 47   .  [CREATE TRIG
11520 47 45 52 5d 20 6f 72 20 5b 44 52 4f 50 20 54 52  GER] or [DROP TR
11530 49 47 47 45 52 5d 0a 20 20 63 6f 6d 6d 61 6e 64  IGGER].  command
11540 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20  s are available 
11550 69 6e 20 74 68 69 73 20 63 61 73 65 2c 20 61 6e  in this case, an
11560 64 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20  d attempting to 
11570 65 78 65 63 75 74 65 0a 20 20 65 69 74 68 65 72  execute.  either
11580 20 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20   will result in 
11590 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 20  a parse error.. 
115a0 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 6c 73   This option als
115b0 6f 20 64 69 73 61 62 6c 65 73 20 65 6e 66 6f 72  o disables enfor
115c0 63 65 6d 65 6e 74 20 6f 66 20 5b 66 6f 72 65 69  cement of [forei
115d0 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e  gn key constrain
115e0 74 73 5d 2c 0a 20 20 73 69 6e 63 65 20 74 68 65  ts],.  since the
115f0 20 63 6f 64 65 20 74 68 61 74 20 69 6d 70 6c 65   code that imple
11600 6d 65 6e 74 73 20 74 72 69 67 67 65 72 73 20 61  ments triggers a
11610 6e 64 20 77 68 69 63 68 20 69 73 20 6f 6d 69 74  nd which is omit
11620 74 65 64 20 62 79 20 74 68 69 73 0a 20 20 6f 70  ted by this.  op
11630 74 69 6f 6e 20 69 73 20 61 6c 73 6f 20 75 73 65  tion is also use
11640 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 5b  d to implement [
11650 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63 74 69  foreign key acti
11660 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ons]..}..COMPILE
11670 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
11680 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f 4f 50  OMIT_TRUNCATE_OP
11690 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20  TIMIZATION} {.  
116a0 41 20 64 65 66 61 75 6c 74 20 62 75 69 6c 64 20  A default build 
116b0 6f 66 20 53 51 4c 69 74 65 2c 20 69 66 20 61 20  of SQLite, if a 
116c0 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65  [DELETE] stateme
116d0 6e 74 20 68 61 73 20 6e 6f 20 57 48 45 52 45 20  nt has no WHERE 
116e0 63 6c 61 75 73 65 0a 20 20 61 6e 64 20 6f 70 65  clause.  and ope
116f0 72 61 74 65 73 20 6f 6e 20 61 20 74 61 62 6c 65  rates on a table
11700 20 77 69 74 68 20 6e 6f 20 74 72 69 67 67 65 72   with no trigger
11710 73 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69  s, an optimizati
11720 6f 6e 20 6f 63 63 75 72 73 20 74 68 61 74 0a 20  on occurs that. 
11730 20 63 61 75 73 65 73 20 74 68 65 20 44 45 4c 45   causes the DELE
11740 54 45 20 74 6f 20 6f 63 63 75 72 20 62 79 20 64  TE to occur by d
11750 72 6f 70 70 69 6e 67 20 61 6e 64 20 72 65 63 72  ropping and recr
11760 65 61 74 69 6e 67 20 74 68 65 20 74 61 62 6c 65  eating the table
11770 2e 20 20 0a 20 20 44 72 6f 70 70 69 6e 67 20 61  .  .  Dropping a
11780 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20 61 20  nd recreating a 
11790 74 61 62 6c 65 20 69 73 20 75 73 75 61 6c 6c 79  table is usually
117a0 20 6d 75 63 68 20 66 61 73 74 65 72 20 74 68 61   much faster tha
117b0 6e 20 64 65 6c 65 74 69 6e 67 0a 20 20 74 68 65  n deleting.  the
117c0 20 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74 20 72   table content r
117d0 6f 77 20 62 79 20 72 6f 77 2e 20 20 54 68 69 73  ow by row.  This
117e0 20 69 73 20 74 68 65 20 22 74 72 75 6e 63 61 74   is the "truncat
117f0 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 22 2e  e optimization".
11800 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
11810 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
11820 55 54 46 31 36 7d 20 7b 0a 20 20 54 68 69 73 20  UTF16} {.  This 
11830 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20 74 6f  macro is used to
11840 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f   omit support fo
11850 72 20 55 54 46 31 36 20 74 65 78 74 20 65 6e 63  r UTF16 text enc
11860 6f 64 69 6e 67 2e 20 57 68 65 6e 20 74 68 69 73  oding. When this
11870 20 69 73 0a 20 20 64 65 66 69 6e 65 64 20 61 6c   is.  defined al
11880 6c 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 20  l API functions 
11890 74 68 61 74 20 72 65 74 75 72 6e 20 6f 72 20 61  that return or a
118a0 63 63 65 70 74 20 55 54 46 31 36 20 65 6e 63 6f  ccept UTF16 enco
118b0 64 65 64 20 74 65 78 74 20 61 72 65 0a 20 20 75  ded text are.  u
118c0 6e 61 76 61 69 6c 61 62 6c 65 2e 20 54 68 65 73  navailable. Thes
118d0 65 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20  e functions can 
118e0 62 65 20 69 64 65 6e 74 69 66 69 65 64 20 62 79  be identified by
118f0 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20 74   the fact that t
11900 68 65 79 20 65 6e 64 0a 20 20 77 69 74 68 20 27  hey end.  with '
11910 31 36 27 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65  16', for example
11920 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
11930 65 31 36 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  e16()], [sqlite3
11940 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 29  _column_text16()
11950 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33  ] and.  [sqlite3
11960 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 29 5d 2e  _bind_text16()].
11970 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
11980 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
11990 56 41 43 55 55 4d 7d 20 7b 0a 20 20 57 68 65 6e  VACUUM} {.  When
119a0 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
119b0 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 56 41  defined, the [VA
119c0 43 55 55 4d 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20  CUUM].  command 
119d0 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20  is not included 
119e0 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a  in the library..
119f0 20 20 45 78 65 63 75 74 69 6e 67 20 61 20 5b 56    Executing a [V
11a00 41 43 55 55 4d 5d 20 73 74 61 74 65 6d 65 6e 74  ACUUM] statement
11a10 20 63 61 75 73 65 73 20 0a 20 20 61 20 70 61 72   causes .  a par
11a20 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d  se error..}..COM
11a30 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
11a40 49 54 45 5f 4f 4d 49 54 5f 56 49 45 57 7d 20 7b  ITE_OMIT_VIEW} {
11a50 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73  .  Defining this
11a60 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
11a70 70 70 6f 72 74 20 66 6f 72 20 56 49 45 57 20 6f  pport for VIEW o
11a80 62 6a 65 63 74 73 2e 20 4e 65 69 74 68 65 72 20  bjects. Neither 
11a90 74 68 65 20 0a 20 20 5b 43 52 45 41 54 45 20 56  the .  [CREATE V
11aa0 49 45 57 5d 20 6e 6f 72 20 74 68 65 20 5b 44 52  IEW] nor the [DR
11ab0 4f 50 20 56 49 45 57 5d 0a 20 20 63 6f 6d 6d 61  OP VIEW].  comma
11ac0 6e 64 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c  nds are availabl
11ad0 65 20 69 6e 20 74 68 69 73 20 63 61 73 65 2c 20  e in this case, 
11ae0 61 6e 64 0a 20 20 61 74 74 65 6d 70 74 69 6e 67  and.  attempting
11af0 20 74 6f 20 65 78 65 63 75 74 65 20 65 69 74 68   to execute eith
11b00 65 72 20 77 69 6c 6c 20 72 65 73 75 6c 74 20 69  er will result i
11b10 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e  n a parse error.
11b20 0a 0a 20 20 57 41 52 4e 49 4e 47 3a 20 49 66 20  ..  WARNING: If 
11b30 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65  this macro is de
11b40 66 69 6e 65 64 2c 20 69 74 20 77 69 6c 6c 20 6e  fined, it will n
11b50 6f 74 20 62 65 20 70 6f 73 73 69 62 6c 65 20 74  ot be possible t
11b60 6f 20 6f 70 65 6e 20 61 20 64 61 74 61 62 61 73  o open a databas
11b70 65 0a 20 20 66 6f 72 20 77 68 69 63 68 20 74 68  e.  for which th
11b80 65 20 73 63 68 65 6d 61 20 63 6f 6e 74 61 69 6e  e schema contain
11b90 73 20 56 49 45 57 20 6f 62 6a 65 63 74 73 2e 20  s VIEW objects. 
11ba0 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
11bb0 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
11bc0 56 49 52 54 55 41 4c 54 41 42 4c 45 7d 20 7b 0a  VIRTUALTABLE} {.
11bd0 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
11be0 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
11bf0 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 74 61  the [sqlite3_vta
11c00 62 20 7c 20 56 69 72 74 75 61 6c 20 54 61 62 6c  b | Virtual Tabl
11c10 65 5d 0a 20 20 6d 65 63 68 61 6e 69 73 6d 20 69  e].  mechanism i
11c20 6e 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d  n SQLite..}..COM
11c30 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
11c40 49 54 45 5f 4f 4d 49 54 5f 57 41 4c 7d 20 7b 0a  ITE_OMIT_WAL} {.
11c50 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
11c60 69 74 73 20 74 68 65 20 22 5b 77 72 69 74 65 2d  its the "[write-
11c70 61 68 65 61 64 20 6c 6f 67 5d 22 20 28 61 2e 6b  ahead log]" (a.k
11c80 2e 61 2e 20 22 5b 57 41 4c 5d 22 29 20 63 61 70  .a. "[WAL]") cap
11c90 61 62 69 6c 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50  ability..}..COMP
11ca0 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
11cb0 54 45 5f 4f 4d 49 54 5f 57 53 44 7d 20 7b 0a 20  TE_OMIT_WSD} {. 
11cc0 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 62 75 69   This option bui
11cd0 6c 64 73 20 61 20 76 65 72 73 69 6f 6e 20 6f 66  lds a version of
11ce0 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72   the SQLite libr
11cf0 61 72 79 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  ary that contain
11d00 73 20 6e 6f 0a 20 20 57 72 69 74 61 62 6c 65 20  s no.  Writable 
11d10 53 74 61 74 69 63 20 44 61 74 61 20 28 57 53 44  Static Data (WSD
11d20 29 2e 20 20 57 53 44 20 69 73 20 67 6c 6f 62 61  ).  WSD is globa
11d30 6c 20 76 61 72 69 61 62 6c 65 73 20 61 6e 64 2f  l variables and/
11d40 6f 72 20 73 74 61 74 69 63 0a 20 20 76 61 72 69  or static.  vari
11d50 61 62 6c 65 73 2e 20 20 53 6f 6d 65 20 70 6c 61  ables.  Some pla
11d60 74 66 6f 72 6d 73 20 64 6f 20 6e 6f 74 20 73 75  tforms do not su
11d70 70 70 6f 72 74 20 57 53 44 2c 20 61 6e 64 20 74  pport WSD, and t
11d80 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e 65  his option is ne
11d90 63 65 73 73 61 72 79 0a 20 20 69 6e 20 6f 72 64  cessary.  in ord
11da0 65 72 20 66 6f 72 20 53 51 4c 69 74 65 20 74 6f  er for SQLite to
11db0 20 77 6f 72 6b 20 74 68 6f 73 65 20 70 6c 61 74   work those plat
11dc0 66 6f 72 6d 73 2e 20 20 0a 0a 20 20 55 6e 6c 69  forms.  ..  Unli
11dd0 6b 65 20 6f 74 68 65 72 20 4f 4d 49 54 20 6f 70  ke other OMIT op
11de0 74 69 6f 6e 73 20 77 68 69 63 68 20 6d 61 6b 65  tions which make
11df0 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72   the SQLite libr
11e00 61 72 79 20 73 6d 61 6c 6c 65 72 2c 0a 20 20 74  ary smaller,.  t
11e10 68 69 73 20 6f 70 74 69 6f 6e 20 61 63 74 75 61  his option actua
11e20 6c 6c 79 20 69 6e 63 72 65 61 73 65 73 20 74 68  lly increases th
11e30 65 20 73 69 7a 65 20 6f 66 20 53 51 4c 69 74 65  e size of SQLite
11e40 20 61 6e 64 20 6d 61 6b 65 73 20 69 74 20 72 75   and makes it ru
11e50 6e 0a 20 20 61 20 6c 69 74 74 6c 65 20 73 6c 6f  n.  a little slo
11e60 77 65 72 2e 20 20 4f 6e 6c 79 20 75 73 65 20 74  wer.  Only use t
11e70 68 69 73 20 6f 70 74 69 6f 6e 20 69 66 20 53 51  his option if SQ
11e80 4c 69 74 65 20 69 73 20 62 65 69 6e 67 20 62 75  Lite is being bu
11e90 69 6c 74 20 66 6f 72 20 61 6e 0a 20 20 65 6d 62  ilt for an.  emb
11ea0 65 64 64 65 64 20 74 61 72 67 65 74 20 74 68 61  edded target tha
11eb0 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f  t does not suppo
11ec0 72 74 20 57 53 44 2e 0a 7d 0a 0a 43 4f 4d 50 49  rt WSD..}..COMPI
11ed0 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
11ee0 45 5f 4f 4d 49 54 5f 58 46 45 52 5f 4f 50 54 7d  E_OMIT_XFER_OPT}
11ef0 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
11f00 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66   omits support f
11f10 6f 72 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73  or optimizations
11f20 20 74 68 61 74 20 68 65 6c 70 20 73 74 61 74 65   that help state
11f30 6d 65 6e 74 73 0a 20 20 6f 66 20 74 68 65 20 66  ments.  of the f
11f40 6f 72 6d 20 22 49 4e 53 45 52 54 20 49 4e 54 4f  orm "INSERT INTO
11f50 20 2e 2e 2e 20 53 45 4c 45 43 54 20 2e 2e 2e 22   ... SELECT ..."
11f60 20 72 75 6e 20 66 61 73 74 65 72 2e 0a 7d 0a 0a   run faster..}..
11f70 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
11f80 53 51 4c 49 54 45 5f 55 4e 54 45 53 54 41 42 4c  SQLITE_UNTESTABL
11f90 45 7d 20 7b 0a 20 20 41 20 73 74 61 6e 64 61 72  E} {.  A standar
11fa0 64 20 53 51 4c 69 74 65 20 62 75 69 6c 64 20 69  d SQLite build i
11fb0 6e 63 6c 75 64 65 73 20 61 20 73 6d 61 6c 6c 20  ncludes a small 
11fc0 61 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20  amount of logic 
11fd0 61 73 73 6f 63 69 61 74 65 64 0a 20 20 77 69 74  associated.  wit
11fe0 68 20 5b 73 71 6c 69 74 65 33 5f 74 65 73 74 5f  h [sqlite3_test_
11ff0 63 6f 6e 74 72 6f 6c 28 29 5d 20 74 6f 20 65 78  control()] to ex
12000 65 72 63 69 73 65 0a 20 20 70 61 72 74 73 20 6f  ercise.  parts o
12010 66 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  f the SQLite cor
12020 65 20 74 68 61 74 20 61 72 65 20 6f 74 68 65 72  e that are other
12030 77 69 73 65 20 64 69 66 66 69 63 75 6c 74 20 74  wise difficult t
12040 6f 20 76 61 6c 69 64 61 74 65 2e 0a 20 20 54 68  o validate..  Th
12050 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  is compile-time 
12060 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 61  option omits tha
12070 74 20 65 78 74 72 61 20 74 65 73 74 69 6e 67 20  t extra testing 
12080 6c 6f 67 69 63 2e 20 20 54 68 69 73 0a 20 20 63  logic.  This.  c
12090 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
120a0 6f 6e 20 77 61 73 20 63 61 6c 6c 65 64 20 22 53  on was called "S
120b0 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55 49 4c 54  QLITE_OMIT_BUILT
120c0 49 4e 5f 54 45 53 54 22 20 70 72 69 6f 72 0a 20  IN_TEST" prior. 
120d0 20 74 6f 20 53 51 4c 69 74 65 20 76 65 72 73 69   to SQLite versi
120e0 6f 6e 20 33 2e 31 36 2e 30 20 28 5b 64 61 74 65  on 3.16.0 ([date
120f0 6f 66 3a 33 2e 31 36 2e 30 5d 29 2e 20 20 54 68  of:3.16.0]).  Th
12100 65 20 6e 61 6d 65 20 77 61 73 20 63 68 61 6e 67  e name was chang
12110 65 64 0a 20 20 74 6f 20 62 65 74 74 65 72 20 64  ed.  to better d
12120 65 73 63 72 69 62 65 20 74 68 65 20 69 6d 70 6c  escribe the impl
12130 69 63 61 74 69 6f 6e 73 20 6f 66 20 75 73 69 6e  ications of usin
12140 67 20 69 74 2e 0a 20 20 3c 70 3e 0a 20 20 53 65  g it..  <p>.  Se
12150 74 74 69 6e 67 20 74 68 69 73 20 63 6f 6d 70 69  tting this compi
12160 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 70  le-time option p
12170 72 65 76 65 6e 74 73 20 53 51 4c 69 74 65 20 66  revents SQLite f
12180 72 6f 6d 20 62 65 69 6e 67 20 66 75 6c 6c 79 0a  rom being fully.
12190 20 20 74 65 73 74 61 62 6c 65 2e 20 20 42 72 61    testable.  Bra
121a0 6e 63 68 20 74 65 73 74 20 63 6f 76 65 72 61 67  nch test coverag
121b0 65 20 64 72 6f 70 73 20 66 72 6f 6d 20 31 30 30  e drops from 100
121c0 25 20 64 6f 77 6e 20 74 6f 20 61 62 6f 75 74 20  % down to about 
121d0 39 35 25 2e 0a 20 20 3c 70 3e 0a 20 20 53 51 4c  95%..  <p>.  SQL
121e0 69 74 65 20 64 65 76 65 6c 6f 70 65 72 73 20 66  ite developers f
121f0 6f 6c 6c 6f 77 20 74 68 65 20 4e 41 53 41 20 70  ollow the NASA p
12200 72 69 6e 63 69 70 6c 65 20 6f 66 0a 20 20 22 66  rinciple of.  "f
12210 6c 79 20 77 68 61 74 20 79 6f 75 20 74 65 73 74  ly what you test
12220 20 61 6e 64 20 74 65 73 74 20 77 68 61 74 20 79   and test what y
12230 6f 75 20 66 6c 79 22 2e 20 20 54 68 69 73 20 70  ou fly".  This p
12240 72 69 6e 63 69 70 6c 65 20 69 73 20 76 69 6f 6c  rinciple is viol
12250 61 74 65 64 0a 20 20 69 66 20 74 68 69 73 20 6f  ated.  if this o
12260 70 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64  ption is enabled
12270 20 66 6f 72 20 64 65 6c 69 76 65 72 79 20 62 75   for delivery bu
12280 74 20 64 69 73 61 62 6c 65 64 20 66 6f 72 20 74  t disabled for t
12290 65 73 74 69 6e 67 2e 0a 20 20 42 75 74 20 69 66  esting..  But if
122a0 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
122b0 65 6e 61 62 6c 65 64 20 64 75 72 69 6e 67 20 74  enabled during t
122c0 65 73 74 69 6e 67 2c 20 6e 6f 74 20 61 6c 6c 20  esting, not all 
122d0 62 72 61 6e 63 68 65 73 20 61 72 65 20 0a 20 20  branches are .  
122e0 72 65 61 63 68 61 62 6c 65 2e 20 20 54 68 65 72  reachable.  Ther
122f0 65 66 6f 72 65 2c 20 74 68 65 20 75 73 65 20 6f  efore, the use o
12300 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  f this compile-t
12310 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 64 69  ime option is di
12320 73 63 6f 75 72 61 67 65 64 2e 0a 7d 0a 0a 43 4f  scouraged..}..CO
12330 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
12340 4c 49 54 45 5f 5a 45 52 4f 5f 4d 41 4c 4c 4f 43  LITE_ZERO_MALLOC
12350 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
12360 6e 20 6f 6d 69 74 73 20 62 6f 74 68 20 74 68 65  n omits both the
12370 20 5b 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79   [default memory
12380 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 61 6e 64 20   allocator] and 
12390 74 68 65 0a 20 20 5b 64 65 62 75 67 67 69 6e 67  the.  [debugging
123a0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
123b0 72 5d 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c  r] from the buil
123c0 64 20 61 6e 64 20 73 75 62 73 74 69 74 75 74 65  d and substitute
123d0 73 20 61 20 73 74 75 62 0a 20 20 6d 65 6d 6f 72  s a stub.  memor
123e0 79 20 61 6c 6c 6f 63 61 74 6f 72 20 74 68 61 74  y allocator that
123f0 20 61 6c 77 61 79 73 20 66 61 69 6c 73 2e 20 20   always fails.  
12400 53 51 4c 69 74 65 20 77 69 6c 6c 20 6e 6f 74 20  SQLite will not 
12410 72 75 6e 20 77 69 74 68 20 74 68 69 73 0a 20 20  run with this.  
12420 73 74 75 62 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  stub memory allo
12430 63 61 74 6f 72 20 73 69 6e 63 65 20 69 74 20 77  cator since it w
12440 69 6c 6c 20 62 65 20 75 6e 61 62 6c 65 20 74 6f  ill be unable to
12450 20 61 6c 6c 6f 63 61 74 65 20 6d 65 6d 6f 72 79   allocate memory
12460 2e 20 20 42 75 74 0a 20 20 74 68 69 73 20 73 74  .  But.  this st
12470 75 62 20 63 61 6e 20 62 65 20 72 65 70 6c 61 63  ub can be replac
12480 65 64 20 61 74 20 73 74 61 72 74 2d 74 69 6d 65  ed at start-time
12490 20 75 73 69 6e 67 0a 20 20 5b 73 71 6c 69 74 65   using.  [sqlite
124a0 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54  3_config]([SQLIT
124b0 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d  E_CONFIG_MALLOC]
124c0 2c 2e 2e 2e 29 20 6f 72 0a 20 20 5b 73 71 6c 69  ,...) or.  [sqli
124d0 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c  te3_config]([SQL
124e0 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d  ITE_CONFIG_HEAP]
124f0 2c 2e 2e 2e 29 2e 0a 20 20 53 6f 20 74 68 65 20  ,...)..  So the 
12500 6e 65 74 20 65 66 66 65 63 74 20 6f 66 20 74 68  net effect of th
12510 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  is compile-time 
12520 6f 70 74 69 6f 6e 20 69 73 20 74 68 61 74 20 69  option is that i
12530 74 20 61 6c 6c 6f 77 73 20 53 51 4c 69 74 65 0a  t allows SQLite.
12540 20 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c 65 64    to be compiled
12550 20 61 6e 64 20 6c 69 6e 6b 65 64 20 61 67 61 69   and linked agai
12560 6e 73 74 20 61 20 73 79 73 74 65 6d 20 6c 69 62  nst a system lib
12570 72 61 72 79 20 74 68 61 74 20 64 6f 65 73 20 6e  rary that does n
12580 6f 74 20 73 75 70 70 6f 72 74 0a 20 20 6d 61 6c  ot support.  mal
12590 6c 6f 63 28 29 2c 20 66 72 65 65 28 29 2c 20 61  loc(), free(), a
125a0 6e 64 2f 6f 72 20 72 65 61 6c 6c 6f 63 28 29 2e  nd/or realloc().
125b0 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20 6e 61  .}..</tcl>.<a na
125c0 6d 65 3d 22 64 65 62 75 67 6f 70 74 69 6f 6e 73  me="debugoptions
125d0 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 41 6e 61 6c  "></a>.<h1> Anal
125e0 79 73 69 73 20 61 6e 64 20 44 65 62 75 67 67 69  ysis and Debuggi
125f0 6e 67 20 4f 70 74 69 6f 6e 73 3c 2f 68 31 3e 0a  ng Options</h1>.
12600 3c 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  <tcl>..COMPILE_O
12610 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
12620 42 55 47 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  BUG} {.  The SQL
12630 69 74 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20  ite source code 
12640 63 6f 6e 74 61 69 6e 73 20 6c 69 74 65 72 61 6c  contains literal
12650 6c 79 20 74 68 6f 75 73 61 6e 64 73 20 6f 66 20  ly thousands of 
12660 61 73 73 65 72 74 28 29 20 73 74 61 74 65 6d 65  assert() stateme
12670 6e 74 73 0a 20 20 75 73 65 64 20 74 6f 20 76 65  nts.  used to ve
12680 72 69 66 79 20 69 6e 74 65 72 6e 61 6c 20 61 73  rify internal as
12690 73 75 6d 70 74 69 6f 6e 73 20 61 6e 64 20 73 75  sumptions and su
126a0 62 72 6f 75 74 69 6e 65 20 70 72 65 63 6f 6e 64  broutine precond
126b0 69 74 69 6f 6e 73 20 61 6e 64 0a 20 20 70 6f 73  itions and.  pos
126c0 74 63 6f 6e 64 69 74 69 6f 6e 73 2e 20 20 54 68  tconditions.  Th
126d0 65 73 65 20 61 73 73 65 72 74 28 29 20 73 74 61  ese assert() sta
126e0 74 65 6d 65 6e 74 73 20 61 72 65 20 6e 6f 72 6d  tements are norm
126f0 61 6c 6c 79 20 74 75 72 6e 65 64 20 6f 66 66 0a  ally turned off.
12700 20 20 28 74 68 65 79 20 67 65 6e 65 72 61 74 65    (they generate
12710 20 6e 6f 20 63 6f 64 65 29 20 73 69 6e 63 65 20   no code) since 
12720 74 75 72 6e 69 6e 67 20 74 68 65 6d 20 6f 6e 20  turning them on 
12730 6d 61 6b 65 73 20 53 51 4c 69 74 65 20 72 75 6e  makes SQLite run
12740 20 61 70 70 72 6f 78 69 6d 61 74 65 6c 79 0a 20   approximately. 
12750 20 74 68 72 65 65 20 74 69 6d 65 73 20 73 6c 6f   three times slo
12760 77 65 72 2e 20 20 42 75 74 20 66 6f 72 20 74 65  wer.  But for te
12770 73 74 69 6e 67 20 61 6e 64 20 61 6e 61 6c 79 73  sting and analys
12780 69 73 2c 20 69 74 20 69 73 20 75 73 65 66 75 6c  is, it is useful
12790 20 74 6f 20 74 75 72 6e 0a 20 20 74 68 65 20 61   to turn.  the a
127a0 73 73 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e  ssert() statemen
127b0 74 73 20 6f 6e 2e 20 20 54 68 65 20 53 51 4c 49  ts on.  The SQLI
127c0 54 45 5f 44 45 42 55 47 20 63 6f 6d 70 69 6c 65  TE_DEBUG compile
127d0 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 64 6f 65  -time option doe
127e0 73 20 74 68 69 73 2e 0a 20 20 3c 70 3e 53 51 4c  s this..  <p>SQL
127f0 49 54 45 5f 44 45 42 55 47 20 61 6c 73 6f 20 65  ITE_DEBUG also e
12800 6e 61 62 6c 65 73 20 73 6f 6d 65 20 6f 74 68 65  nables some othe
12810 72 20 64 65 62 75 67 67 69 6e 67 20 66 65 61 74  r debugging feat
12820 75 72 65 73 2c 20 73 75 63 68 20 61 73 0a 20 20  ures, such as.  
12830 73 70 65 63 69 61 6c 20 5b 50 52 41 47 4d 41 5d  special [PRAGMA]
12840 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74   statements that
12850 20 74 75 72 6e 20 6f 6e 20 74 72 61 63 69 6e 67   turn on tracing
12860 20 61 6e 64 20 6c 69 73 74 69 6e 67 20 66 65 61   and listing fea
12870 74 75 72 65 73 0a 20 20 75 73 65 64 20 66 6f 72  tures.  used for
12880 20 74 72 6f 75 62 6c 65 73 68 6f 6f 74 69 6e 67   troubleshooting
12890 20 61 6e 64 20 61 6e 61 6c 79 73 69 73 20 6f 66   and analysis of
128a0 20 74 68 65 20 5b 56 44 42 45 5d 20 61 6e 64 20   the [VDBE] and 
128b0 63 6f 64 65 20 67 65 6e 65 72 61 74 6f 72 2e 0a  code generator..
128c0 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
128d0 4e 20 7b 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42  N {SQLITE_MEMDEB
128e0 55 47 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  UG} {.  The SQLI
128f0 54 45 5f 4d 45 4d 44 45 42 55 47 20 6f 70 74 69  TE_MEMDEBUG opti
12900 6f 6e 20 63 61 75 73 65 73 20 61 6e 20 69 6e 73  on causes an ins
12910 74 72 75 6d 65 6e 74 65 64 20 0a 20 20 5b 64 65  trumented .  [de
12920 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61  bugging memory a
12930 6c 6c 6f 63 61 74 6f 72 5d 0a 20 20 74 6f 20 62  llocator].  to b
12940 65 20 75 73 65 64 20 61 73 20 74 68 65 20 64 65  e used as the de
12950 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c  fault memory all
12960 6f 63 61 74 6f 72 20 77 69 74 68 69 6e 20 53 51  ocator within SQ
12970 4c 69 74 65 2e 20 20 54 68 65 0a 20 20 69 6e 73  Lite.  The.  ins
12980 74 72 75 6d 65 6e 74 65 64 20 6d 65 6d 6f 72 79  trumented memory
12990 20 61 6c 6c 6f 63 61 74 6f 72 20 63 68 65 63 6b   allocator check
129a0 73 20 66 6f 72 20 6d 69 73 75 73 65 20 6f 66 20  s for misuse of 
129b0 64 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c 6c 6f  dynamically allo
129c0 63 61 74 65 64 0a 20 20 6d 65 6d 6f 72 79 2e 20  cated.  memory. 
129d0 20 45 78 61 6d 70 6c 65 73 20 6f 66 20 6d 69 73   Examples of mis
129e0 75 73 65 20 69 6e 63 6c 75 64 65 20 75 73 69 6e  use include usin
129f0 67 20 6d 65 6d 6f 72 79 20 61 66 74 65 72 20 69  g memory after i
12a00 74 20 69 73 20 66 72 65 65 64 2c 0a 20 20 77 72  t is freed,.  wr
12a10 69 74 69 6e 67 20 6f 66 66 20 74 68 65 20 65 6e  iting off the en
12a20 64 73 20 6f 66 20 61 20 6d 65 6d 6f 72 79 20 61  ds of a memory a
12a30 6c 6c 6f 63 61 74 69 6f 6e 2c 20 66 72 65 65 69  llocation, freei
12a40 6e 67 20 6d 65 6d 6f 72 79 20 6e 6f 74 20 70 72  ng memory not pr
12a50 65 76 69 6f 75 73 6c 79 0a 20 20 6f 62 74 61 69  eviously.  obtai
12a60 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6d  ned from the mem
12a70 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 6f  ory allocator, o
12a80 72 20 66 61 69 6c 69 6e 67 20 74 6f 20 69 6e 69  r failing to ini
12a90 74 69 61 6c 69 7a 65 20 6e 65 77 6c 79 0a 20 20  tialize newly.  
12aa0 61 6c 6c 6f 63 61 74 65 64 20 6d 65 6d 6f 72 79  allocated memory
12ab0 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20 6e  ..}..</tcl>.<a n
12ac0 61 6d 65 3d 22 77 69 6e 33 32 6f 70 74 69 6f 6e  ame="win32option
12ad0 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 57 69 6e  s"></a>.<h1> Win
12ae0 64 6f 77 73 2d 53 70 65 63 69 66 69 63 20 4f 70  dows-Specific Op
12af0 74 69 6f 6e 73 3c 2f 68 31 3e 0a 3c 74 63 6c 3e  tions</h1>.<tcl>
12b00 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
12b10 20 7b 53 51 4c 49 54 45 5f 57 49 4e 33 32 5f 48   {SQLITE_WIN32_H
12b20 45 41 50 5f 43 52 45 41 54 45 7d 20 7b 0a 20 20  EAP_CREATE} {.  
12b30 54 68 69 73 20 6f 70 74 69 6f 6e 20 66 6f 72 63  This option forc
12b40 65 73 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74  es the Win32 nat
12b50 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ive memory alloc
12b60 61 74 6f 72 2c 20 77 68 65 6e 20 65 6e 61 62 6c  ator, when enabl
12b70 65 64 2c 20 74 6f 0a 20 20 63 72 65 61 74 65 20  ed, to.  create 
12b80 61 20 70 72 69 76 61 74 65 20 68 65 61 70 20 74  a private heap t
12b90 6f 20 68 6f 6c 64 20 61 6c 6c 20 6d 65 6d 6f 72  o hold all memor
12ba0 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 2e 0a 7d  y allocations..}
12bb0 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
12bc0 20 7b 53 51 4c 49 54 45 5f 57 49 4e 33 32 5f 4d   {SQLITE_WIN32_M
12bd0 41 4c 4c 4f 43 5f 56 41 4c 49 44 41 54 45 7d 20  ALLOC_VALIDATE} 
12be0 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
12bf0 66 6f 72 63 65 73 20 74 68 65 20 57 69 6e 33 32  forces the Win32
12c00 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61   native memory a
12c10 6c 6c 6f 63 61 74 6f 72 2c 20 77 68 65 6e 20 65  llocator, when e
12c20 6e 61 62 6c 65 64 2c 20 74 6f 0a 20 20 6d 61 6b  nabled, to.  mak
12c30 65 20 73 74 72 61 74 65 67 69 63 20 63 61 6c 6c  e strategic call
12c40 73 20 69 6e 74 6f 20 74 68 65 20 48 65 61 70 56  s into the HeapV
12c50 61 6c 69 64 61 74 65 28 29 20 66 75 6e 63 74 69  alidate() functi
12c60 6f 6e 20 69 66 20 61 73 73 65 72 74 28 29 20 69  on if assert() i
12c70 73 20 61 6c 73 6f 0a 20 20 65 6e 61 62 6c 65 64  s also.  enabled
12c80 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20 6e  ..}..</tcl>.<a n
12c90 61 6d 65 3d 22 6c 69 6e 6b 61 67 65 22 3e 3c 2f  ame="linkage"></
12ca0 61 3e 0a 3c 68 31 3e 43 6f 6d 70 69 6c 65 72 20  a>.<h1>Compiler 
12cb0 4c 69 6e 6b 61 67 65 20 43 6f 6e 74 72 6f 6c 3c  Linkage Control<
12cc0 2f 68 31 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c  /h1>..<p>The fol
12cd0 6c 6f 77 69 6e 67 20 6d 61 63 72 6f 73 20 73 70  lowing macros sp
12ce0 65 63 69 66 79 0a 69 6e 74 65 72 66 61 63 65 20  ecify.interface 
12cf0 6c 69 6e 6b 61 67 65 20 66 6f 72 20 63 65 72 74  linkage for cert
12d00 61 69 6e 20 6b 69 6e 64 73 20 6f 66 20 53 51 4c  ain kinds of SQL
12d10 69 74 65 20 62 75 69 6c 64 73 2e 20 20 54 68 65  ite builds.  The
12d20 20 4d 61 6b 65 66 69 6c 65 73 20 77 69 6c 6c 20   Makefiles will 
12d30 6e 6f 72 6d 61 6c 6c 79 0a 68 61 6e 64 6c 65 20  normally.handle 
12d40 73 65 74 74 69 6e 67 20 74 68 65 73 65 20 6d 61  setting these ma
12d50 63 72 6f 73 20 61 75 74 6f 6d 61 74 69 63 61 6c  cros automatical
12d60 6c 79 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e  ly.  Application
12d70 20 64 65 76 65 6c 6f 70 65 72 73 20 73 68 6f 75   developers shou
12d80 6c 64 0a 6e 6f 74 20 6e 65 65 64 20 74 6f 20 77  ld.not need to w
12d90 6f 72 72 79 20 77 69 74 68 20 74 68 65 73 65 20  orry with these 
12da0 6d 61 63 72 6f 73 2e 20 20 54 68 65 20 66 6f 6c  macros.  The fol
12db0 6c 6f 77 69 6e 67 20 64 6f 63 75 6d 65 6e 74 61  lowing documenta
12dc0 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 73 65  tion about these
12dd0 20 0a 6d 61 63 72 6f 73 20 69 73 20 69 6e 63 6c   .macros is incl
12de0 75 64 65 64 20 63 6f 6d 70 6c 65 74 65 6e 65 73  uded completenes
12df0 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f  s.</p>..<tcl>.CO
12e00 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
12e10 4c 49 54 45 5f 41 50 49 7d 20 7b 0a 20 20 54 68  LITE_API} {.  Th
12e20 69 73 20 6d 61 63 72 6f 20 69 64 65 6e 74 69 66  is macro identif
12e30 69 65 73 20 61 20 65 78 74 65 72 6e 61 6c 6c 79  ies a externally
12e40 20 76 69 73 69 62 6c 65 20 69 6e 74 65 72 66 61   visible interfa
12e50 63 65 20 66 6f 72 20 53 51 4c 69 74 65 2e 0a 20  ce for SQLite.. 
12e60 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20 73   This macro is s
12e70 6f 6d 65 74 69 6d 65 73 20 73 65 74 20 74 6f 20  ometimes set to 
12e80 22 65 78 74 65 72 6e 22 2e 20 20 42 75 74 20 74  "extern".  But t
12e90 68 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 69 73  he definition is
12ea0 0a 20 20 63 6f 6d 70 69 6c 65 72 2d 73 70 65 63  .  compiler-spec
12eb0 69 66 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ific..}..COMPILE
12ec0 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
12ed0 41 50 49 43 41 4c 4c 7d 20 7b 0a 20 20 54 68 69  APICALL} {.  Thi
12ee0 73 20 6d 61 63 72 6f 20 69 64 65 6e 74 69 66 69  s macro identifi
12ef0 65 73 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 63  es the calling c
12f00 6f 6e 76 65 6e 74 69 6f 6e 20 75 73 65 64 20 62  onvention used b
12f10 79 20 70 75 62 6c 69 63 20 69 6e 74 65 72 66 61  y public interfa
12f20 63 65 0a 20 20 72 6f 75 74 69 6e 65 73 20 69 6e  ce.  routines in
12f30 20 53 51 4c 69 74 65 2e 20 20 54 68 69 73 20 6d   SQLite.  This m
12f40 61 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c 79  acro is normally
12f50 20 64 65 66 69 6e 65 64 20 74 6f 20 62 65 20 6e   defined to be n
12f60 6f 74 68 69 6e 67 2c 0a 20 20 74 68 6f 75 67 68  othing,.  though
12f70 20 6f 6e 20 57 69 6e 64 6f 77 73 20 62 75 69 6c   on Windows buil
12f80 64 73 20 69 74 20 63 61 6e 20 73 6f 6d 65 74 69  ds it can someti
12f90 6d 65 73 20 62 65 20 73 65 74 20 74 6f 20 22 5f  mes be set to "_
12fa0 5f 63 64 65 63 6c 22 20 6f 72 20 22 5f 5f 73 74  _cdecl" or "__st
12fb0 64 63 61 6c 6c 22 2e 0a 20 20 54 68 65 20 22 5f  dcall"..  The "_
12fc0 5f 63 64 65 63 6c 22 20 73 65 74 74 69 6e 67 20  _cdecl" setting 
12fd0 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 2c 20  is the default, 
12fe0 62 75 74 20 22 5f 5f 73 74 64 63 61 6c 6c 22 20  but "__stdcall" 
12ff0 69 73 20 75 73 65 64 20 77 68 65 6e 20 53 51 4c  is used when SQL
13000 69 74 65 0a 20 20 69 73 20 69 6e 74 65 6e 64 65  ite.  is intende
13010 64 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c 65 64  d to be compiled
13020 20 61 73 20 61 20 57 69 6e 64 6f 77 73 20 73 79   as a Windows sy
13030 73 74 65 6d 20 6c 69 62 72 61 72 79 2e 0a 20 20  stem library..  
13040 3c 70 3e 0a 20 20 41 20 73 69 6e 67 6c 65 20 66  <p>.  A single f
13050 75 6e 63 74 69 6f 6e 20 64 65 63 6c 61 72 61 74  unction declarat
13060 69 6f 6e 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61  ion should conta
13070 69 6e 20 6e 6f 20 6d 6f 72 65 20 74 68 61 6e 20  in no more than 
13080 6f 6e 65 20 6f 66 0a 20 20 74 68 65 20 66 6f 6c  one of.  the fol
13090 6c 6f 77 69 6e 67 3a 20 20 5b 53 51 4c 49 54 45  lowing:  [SQLITE
130a0 5f 41 50 49 43 41 4c 4c 5d 2c 20 5b 53 51 4c 49  _APICALL], [SQLI
130b0 54 45 5f 43 41 4c 4c 42 41 43 4b 5d 2c 20 5b 53  TE_CALLBACK], [S
130c0 51 4c 49 54 45 5f 43 44 45 43 4c 5d 2c 0a 20 20  QLITE_CDECL],.  
130d0 6f 72 20 5b 53 51 4c 49 54 45 5f 53 59 53 43 41  or [SQLITE_SYSCA
130e0 4c 4c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  LL]..}..COMPILE_
130f0 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 43  OPTION {SQLITE_C
13100 41 4c 4c 42 41 43 4b 7d 20 7b 0a 20 20 54 68 69  ALLBACK} {.  Thi
13110 73 20 6d 61 63 72 6f 20 73 70 65 63 69 66 69 65  s macro specifie
13120 73 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 63 6f  s the calling co
13130 6e 76 65 6e 74 69 6f 6e 20 75 73 65 64 20 62 79  nvention used by
13140 20 63 61 6c 6c 62 61 63 6b 20 70 6f 69 6e 74 65   callback pointe
13150 72 73 0a 20 20 69 6e 20 53 51 4c 69 74 65 2e 20  rs.  in SQLite. 
13160 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20 6e   This macro is n
13170 6f 72 6d 61 6c 6c 79 20 64 65 66 69 6e 65 64 20  ormally defined 
13180 74 6f 20 62 65 20 6e 6f 74 68 69 6e 67 2c 20 74  to be nothing, t
13190 68 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f 77 73  hough on Windows
131a0 0a 20 20 62 75 69 6c 64 73 20 69 74 20 63 61 6e  .  builds it can
131b0 20 73 6f 6d 65 74 69 6d 65 73 20 62 65 20 73 65   sometimes be se
131c0 74 20 74 6f 20 22 5f 5f 63 64 65 63 6c 22 20 6f  t to "__cdecl" o
131d0 72 20 22 5f 5f 73 74 64 63 61 6c 6c 22 2e 20 20  r "__stdcall".  
131e0 54 68 65 0a 20 20 22 5f 5f 63 64 65 63 6c 22 20  The.  "__cdecl" 
131f0 73 65 74 74 69 6e 67 20 69 73 20 74 68 65 20 64  setting is the d
13200 65 66 61 75 6c 74 2c 20 62 75 74 20 22 5f 5f 73  efault, but "__s
13210 74 64 63 61 6c 6c 22 20 69 73 20 75 73 65 64 20  tdcall" is used 
13220 77 68 65 6e 20 53 51 4c 69 74 65 0a 20 20 69 73  when SQLite.  is
13230 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20   intended to be 
13240 63 6f 6d 70 69 6c 65 64 20 61 73 20 61 20 57 69  compiled as a Wi
13250 6e 64 6f 77 73 20 73 79 73 74 65 6d 20 6c 69 62  ndows system lib
13260 72 61 72 79 2e 0a 20 20 3c 70 3e 0a 20 20 41 20  rary..  <p>.  A 
13270 73 69 6e 67 6c 65 20 66 75 6e 63 74 69 6f 6e 20  single function 
13280 64 65 63 6c 61 72 61 74 69 6f 6e 20 73 68 6f 75  declaration shou
13290 6c 64 20 63 6f 6e 74 61 69 6e 20 6e 6f 20 6d 6f  ld contain no mo
132a0 72 65 20 74 68 61 6e 20 6f 6e 65 20 6f 66 0a 20  re than one of. 
132b0 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a 20   the following: 
132c0 20 5b 53 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c   [SQLITE_APICALL
132d0 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 41 4c 4c 42  ], [SQLITE_CALLB
132e0 41 43 4b 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 44  ACK], [SQLITE_CD
132f0 45 43 4c 5d 2c 0a 20 20 6f 72 20 5b 53 51 4c 49  ECL],.  or [SQLI
13300 54 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a 7d 0a 0a  TE_SYSCALL]..}..
13310 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
13320 53 51 4c 49 54 45 5f 43 44 45 43 4c 7d 20 7b 0a  SQLITE_CDECL} {.
13330 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 70 65    This macro spe
13340 63 69 66 69 65 73 20 74 68 65 20 63 61 6c 6c 69  cifies the calli
13350 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 75 73  ng convention us
13360 65 64 20 62 79 20 76 61 72 61 72 67 73 20 69 6e  ed by varargs in
13370 74 65 72 66 61 63 65 0a 20 20 72 6f 75 74 69 6e  terface.  routin
13380 65 73 20 69 6e 20 53 51 4c 69 74 65 2e 20 20 54  es in SQLite.  T
13390 68 69 73 20 6d 61 63 72 6f 20 69 73 20 6e 6f 72  his macro is nor
133a0 6d 61 6c 6c 79 20 64 65 66 69 6e 65 64 20 74 6f  mally defined to
133b0 20 62 65 20 6e 6f 74 68 69 6e 67 2c 0a 20 20 74   be nothing,.  t
133c0 68 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f 77 73  hough on Windows
133d0 20 62 75 69 6c 64 73 20 69 74 20 63 61 6e 20 73   builds it can s
133e0 6f 6d 65 74 69 6d 65 73 20 62 65 20 73 65 74 20  ometimes be set 
133f0 74 6f 20 22 5f 5f 63 64 65 63 6c 22 2e 20 20 54  to "__cdecl".  T
13400 68 69 73 0a 20 20 6d 61 63 72 6f 20 69 73 20 75  his.  macro is u
13410 73 65 64 20 6f 6e 20 76 61 72 61 72 67 73 20 72  sed on varargs r
13420 6f 75 74 69 6e 65 73 20 61 6e 64 20 73 6f 20 63  outines and so c
13430 61 6e 6e 6f 74 20 62 65 20 73 65 74 20 74 6f 20  annot be set to 
13440 22 5f 5f 73 74 64 63 61 6c 6c 22 0a 20 20 73 69  "__stdcall".  si
13450 6e 63 65 20 74 68 65 20 5f 5f 73 74 64 63 61 6c  nce the __stdcal
13460 6c 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e  l calling conven
13470 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 73 75  tion does not su
13480 70 70 6f 72 74 20 76 61 72 61 72 67 73 20 66 75  pport varargs fu
13490 6e 63 74 69 6f 6e 73 2e 0a 20 20 3c 70 3e 0a 20  nctions..  <p>. 
134a0 20 41 20 73 69 6e 67 6c 65 20 66 75 6e 63 74 69   A single functi
134b0 6f 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 73  on declaration s
134c0 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 6e 6f  hould contain no
134d0 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 6f   more than one o
134e0 66 0a 20 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  f.  the followin
134f0 67 3a 20 20 5b 53 51 4c 49 54 45 5f 41 50 49 43  g:  [SQLITE_APIC
13500 41 4c 4c 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 41  ALL], [SQLITE_CA
13510 4c 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49 54 45  LLBACK], [SQLITE
13520 5f 43 44 45 43 4c 5d 2c 0a 20 20 6f 72 20 5b 53  _CDECL],.  or [S
13530 51 4c 49 54 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a  QLITE_SYSCALL]..
13540 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
13550 4e 20 7b 53 51 4c 49 54 45 5f 53 59 53 43 41 4c  N {SQLITE_SYSCAL
13560 4c 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  L} {.  This macr
13570 6f 20 69 64 65 6e 74 69 66 69 65 73 20 74 68 65  o identifies the
13580 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74   calling convent
13590 69 6f 6e 20 75 73 65 64 20 62 79 20 6f 70 65 72  ion used by oper
135a0 61 74 69 6e 67 20 73 79 73 74 65 6d 0a 20 20 69  ating system.  i
135b0 6e 74 65 72 66 61 63 65 73 20 66 6f 72 20 74 61  nterfaces for ta
135c0 72 67 65 74 20 74 68 65 20 70 6c 61 74 66 6f 72  rget the platfor
135d0 6d 20 66 6f 72 20 61 6e 20 53 51 4c 69 74 65 20  m for an SQLite 
135e0 62 75 69 6c 64 2e 0a 20 20 54 68 69 73 20 6d 61  build..  This ma
135f0 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20  cro is normally 
13600 64 65 66 69 6e 65 64 20 74 6f 20 62 65 20 6e 6f  defined to be no
13610 74 68 69 6e 67 2c 20 74 68 6f 75 67 68 20 6f 6e  thing, though on
13620 20 57 69 6e 64 6f 77 73 0a 20 20 62 75 69 6c 64   Windows.  build
13630 73 20 69 74 20 63 61 6e 20 73 6f 6d 65 74 69 6d  s it can sometim
13640 65 73 20 62 65 20 73 65 74 20 74 6f 20 22 5f 5f  es be set to "__
13650 73 74 64 63 61 6c 6c 22 2e 0a 20 20 3c 70 3e 0a  stdcall"..  <p>.
13660 20 20 41 20 73 69 6e 67 6c 65 20 66 75 6e 63 74    A single funct
13670 69 6f 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20  ion declaration 
13680 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 6e  should contain n
13690 6f 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20  o more than one 
136a0 6f 66 0a 20 20 74 68 65 20 66 6f 6c 6c 6f 77 69  of.  the followi
136b0 6e 67 3a 20 20 5b 53 51 4c 49 54 45 5f 41 50 49  ng:  [SQLITE_API
136c0 43 41 4c 4c 5d 2c 20 5b 53 51 4c 49 54 45 5f 43  CALL], [SQLITE_C
136d0 41 4c 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49 54  ALLBACK], [SQLIT
136e0 45 5f 43 44 45 43 4c 5d 2c 0a 20 20 6f 72 20 5b  E_CDECL],.  or [
136f0 53 51 4c 49 54 45 5f 53 59 53 43 41 4c 4c 5d 2e  SQLITE_SYSCALL].
13700 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
13710 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 43 4c 41 50  ON {SQLITE_TCLAP
13720 49 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  I} {.  This macr
13730 6f 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20  o specifies the 
13740 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69  calling conventi
13750 6f 6e 20 75 73 65 64 20 62 79 20 74 68 65 20 0a  on used by the .
13760 20 20 5b 68 74 74 70 3a 2f 2f 77 77 77 2e 74 63    [http://www.tc
13770 6c 2e 74 6b 20 7c 20 54 43 4c 5d 20 6c 69 62 72  l.tk | TCL] libr
13780 61 72 79 20 69 6e 74 65 72 66 61 63 65 20 72 6f  ary interface ro
13790 75 74 69 6e 65 73 2e 0a 20 20 54 68 69 73 20 6d  utines..  This m
137a0 61 63 72 6f 20 69 73 20 6e 6f 74 20 75 73 65 64  acro is not used
137b0 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63   by the SQLite c
137c0 6f 72 65 2c 20 62 75 74 20 6f 6e 6c 79 20 62 79  ore, but only by
137d0 20 74 68 65 20 5b 54 43 4c 20 49 6e 74 65 72 66   the [TCL Interf
137e0 61 63 65 5d 0a 20 20 61 6e 64 20 5b 54 43 4c 20  ace].  and [TCL 
137f0 74 65 73 74 20 73 75 69 74 65 5d 2e 0a 20 20 54  test suite]..  T
13800 68 69 73 20 6d 61 63 72 6f 20 69 73 20 6e 6f 72  his macro is nor
13810 6d 61 6c 6c 79 20 64 65 66 69 6e 65 64 20 74 6f  mally defined to
13820 20 62 65 20 6e 6f 74 68 69 6e 67 2c 0a 20 20 74   be nothing,.  t
13830 68 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f 77 73  hough on Windows
13840 20 62 75 69 6c 64 73 20 69 74 20 63 61 6e 20 73   builds it can s
13850 6f 6d 65 74 69 6d 65 73 20 62 65 20 73 65 74 20  ometimes be set 
13860 74 6f 20 22 5f 5f 63 64 65 63 6c 22 2e 20 20 54  to "__cdecl".  T
13870 68 69 73 0a 20 20 6d 61 63 72 6f 20 69 73 20 75  his.  macro is u
13880 73 65 64 20 6f 6e 20 54 43 4c 20 6c 69 62 72 61  sed on TCL libra
13890 72 79 20 69 6e 74 65 72 66 61 63 65 20 72 6f 75  ry interface rou
138a0 74 69 6e 65 73 20 77 68 69 63 68 20 61 72 65 20  tines which are 
138b0 61 6c 77 61 79 73 20 63 6f 6d 70 69 6c 65 64 0a  always compiled.
138c0 20 20 61 73 20 5f 5f 63 64 65 63 6c 2c 20 65 76    as __cdecl, ev
138d0 65 6e 20 6f 6e 20 70 6c 61 74 66 6f 72 6d 73 20  en on platforms 
138e0 74 68 61 74 20 70 72 65 66 65 72 20 74 6f 20 75  that prefer to u
138f0 73 65 20 5f 5f 73 74 64 63 61 6c 6c 2c 20 73 6f  se __stdcall, so
13900 20 74 68 69 73 0a 20 20 6d 61 63 72 6f 20 73 68   this.  macro sh
13910 6f 75 6c 64 20 6e 6f 74 20 62 65 20 73 65 74 20  ould not be set 
13920 74 6f 20 5f 5f 73 74 64 63 61 6c 6c 20 75 6e 6c  to __stdcall unl
13930 65 73 73 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ess the platform
13940 20 61 73 20 61 20 63 75 73 74 6f 6d 0a 20 20 54   as a custom.  T
13950 43 4c 20 6c 69 62 72 61 72 79 20 62 75 69 6c 64  CL library build
13960 20 74 68 61 74 20 73 75 70 70 6f 72 74 73 20 5f   that supports _
13970 5f 73 74 64 63 61 6c 6c 2e 0a 20 20 3c 70 3e 0a  _stdcall..  <p>.
13980 20 20 54 68 69 73 20 6d 61 63 72 6f 20 6d 61 79    This macro may
13990 20 6e 6f 74 20 62 65 20 75 73 65 64 20 69 6e 20   not be used in 
139a0 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 77 69 74 68  combination with
139b0 20 61 6e 79 20 6f 66 20 5b 53 51 4c 49 54 45 5f   any of [SQLITE_
139c0 41 50 49 43 41 4c 4c 5d 2c 0a 20 20 5b 53 51 4c  APICALL],.  [SQL
139d0 49 54 45 5f 43 41 4c 4c 42 41 43 4b 5d 2c 20 5b  ITE_CALLBACK], [
139e0 53 51 4c 49 54 45 5f 43 44 45 43 4c 5d 2c 20 6f  SQLITE_CDECL], o
139f0 72 20 5b 53 51 4c 49 54 45 5f 53 59 53 43 41 4c  r [SQLITE_SYSCAL
13a00 4c 5d 2e 0a 7d 0a 0a 0a 3c 2f 74 63 6c 3e 0a     L]..}...</tcl>.