Documentation Source Text

Hex Artifact Content
Login

Artifact b1f1bc6fa6b6ca76990f14010368a21ae2cd9960e7c2d971d4143fcd3f761171:


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 53 54 41 54 5f 56  _ENABLE_DBSTAT_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 5b 64 62 73 74 61 74 20 76 69 72 74 75 61 6c   [dbstat virtual
92e0: 20 74 61 62 6c 65 5d 2e 0a 7d 0a 0a 43 4f 4d 50   table]..}..COMP
92f0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
9300: 54 45 5f 45 4e 41 42 4c 45 5f 45 58 50 4c 41 49  TE_ENABLE_EXPLAI
9310: 4e 5f 43 4f 4d 4d 45 4e 54 53 7d 20 7b 0a 20 20  N_COMMENTS} {.  
9320: 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64 64 73  This option adds
9330: 20 65 78 74 72 61 20 6c 6f 67 69 63 20 74 6f 20   extra logic to 
9340: 53 51 4c 69 74 65 20 74 68 61 74 20 69 6e 73 65  SQLite that inse
9350: 72 74 73 20 63 6f 6d 6d 65 6e 74 20 74 65 78 74  rts comment text
9360: 20 69 6e 74 6f 20 74 68 65 0a 20 20 6f 75 74 70   into the.  outp
9370: 75 74 20 6f 66 20 5b 45 58 50 4c 41 49 4e 5d 2e  ut of [EXPLAIN].
9380: 20 20 54 68 65 73 65 20 65 78 74 72 61 20 63 6f    These extra co
9390: 6d 6d 65 6e 74 73 20 75 73 65 20 65 78 74 72 61  mments use extra
93a0: 20 6d 65 6d 6f 72 79 2c 20 74 68 75 73 0a 20 20   memory, thus.  
93b0: 6d 61 6b 69 6e 67 20 5b 70 72 65 70 61 72 65 64  making [prepared
93c0: 20 73 74 61 74 65 6d 65 6e 74 73 5d 20 6c 61 72   statements] lar
93d0: 67 65 72 20 61 6e 64 20 76 65 72 79 20 73 6c 69  ger and very sli
93e0: 67 68 74 6c 79 20 73 6c 6f 77 65 72 2c 20 61 6e  ghtly slower, an
93f0: 64 20 73 6f 20 74 68 65 79 20 61 72 65 0a 20 20  d so they are.  
9400: 74 75 72 6e 65 64 20 6f 66 66 20 62 79 20 64 65  turned off by de
9410: 66 61 75 6c 74 20 61 6e 64 20 69 6e 20 6d 6f 73  fault and in mos
9420: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20 20  t application.  
9430: 42 75 74 20 73 6f 6d 65 20 61 70 70 6c 69 63 61  But some applica
9440: 74 69 6f 6e 73 2c 20 73 75 63 68 0a 20 20 61 73  tions, such.  as
9450: 20 74 68 65 20 5b 63 6f 6d 6d 61 6e 64 2d 6c 69   the [command-li
9460: 6e 65 20 73 68 65 6c 6c 5d 20 66 6f 72 20 53 51  ne shell] for SQ
9470: 4c 69 74 65 2c 20 76 61 6c 75 65 20 63 6c 61 72  Lite, value clar
9480: 69 74 79 20 6f 66 20 45 58 50 4c 41 49 4e 20 6f  ity of EXPLAIN o
9490: 75 74 70 75 74 0a 20 20 6f 76 65 72 20 72 61 77  utput.  over raw
94a0: 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 61 6e 64   performance and
94b0: 20 73 6f 20 74 68 69 73 20 63 6f 6d 70 69 6c 65   so this compile
94c0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20  -time option is 
94d0: 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74 68 65  available to the
94e0: 6d 2e 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f  m..  The SQLITE_
94f0: 45 4e 41 42 4c 45 5f 45 58 50 4c 41 49 4e 5f 43  ENABLE_EXPLAIN_C
9500: 4f 4d 4d 45 4e 54 53 20 63 6f 6d 70 69 6c 65 2d  OMMENTS compile-
9510: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 61  time option is a
9520: 6c 73 6f 20 65 6e 61 62 6c 65 64 0a 20 20 61 75  lso enabled.  au
9530: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 66 20 5b  tomatically if [
9540: 53 51 4c 49 54 45 5f 44 45 42 55 47 5d 20 69 73  SQLITE_DEBUG] is
9550: 20 65 6e 61 62 6c 65 64 2e 0a 7d 0a 0a 0a 43 4f   enabled..}...CO
9560: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
9570: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33  LITE_ENABLE_FTS3
9580: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
9590: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
95a0: 64 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61  d in the [amalga
95b0: 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e  mation], version
95c0: 20 33 0a 20 20 6f 66 20 74 68 65 20 66 75 6c 6c   3.  of the full
95d0: 2d 74 65 78 74 20 73 65 61 72 63 68 20 65 6e 67  -text search eng
95e0: 69 6e 65 20 69 73 20 61 64 64 65 64 20 74 6f 20  ine is added to 
95f0: 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f 6d 61  the build automa
9600: 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50  tically..}..COMP
9610: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
9620: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 5f 50  TE_ENABLE_FTS3_P
9630: 41 52 45 4e 54 48 45 53 49 53 7d 20 7b 0a 20 20  ARENTHESIS} {.  
9640: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 6f 64 69  This option modi
9650: 66 69 65 73 20 74 68 65 20 71 75 65 72 79 20 70  fies the query p
9660: 61 74 74 65 72 6e 20 70 61 72 73 65 72 20 69 6e  attern parser in
9670: 20 46 54 53 33 20 73 75 63 68 20 74 68 61 74 20   FTS3 such that 
9680: 69 74 0a 20 20 73 75 70 70 6f 72 74 73 20 6f 70  it.  supports op
9690: 65 72 61 74 6f 72 73 20 41 4e 44 20 61 6e 64 20  erators AND and 
96a0: 4e 4f 54 20 28 69 6e 20 61 64 64 69 74 69 6f 6e  NOT (in addition
96b0: 20 74 6f 20 74 68 65 20 75 73 75 61 6c 20 4f 52   to the usual OR
96c0: 20 61 6e 64 20 4e 45 41 52 29 0a 20 20 61 6e 64   and NEAR).  and
96d0: 20 61 6c 73 6f 20 61 6c 6c 6f 77 73 20 71 75 65   also allows que
96e0: 72 79 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74  ry expressions t
96f0: 6f 20 63 6f 6e 74 61 69 6e 20 6e 65 73 74 65 64  o contain nested
9700: 20 70 61 72 65 6e 74 68 65 73 69 73 2e 0a 7d 0a   parenthesis..}.
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 5f 54 4f 4b 45 4e 49 5a 45 52 7d 20 7b  TS3_TOKENIZER} {
9740: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65  .  This option e
9750: 6e 61 62 6c 65 73 20 74 68 65 20 74 77 6f 2d 61  nables the two-a
9760: 72 67 75 6d 65 6e 74 20 76 65 72 73 69 6f 6e 20  rgument version 
9770: 6f 66 20 74 68 65 20 5b 66 74 73 33 5f 74 6f 6b  of the [fts3_tok
9780: 65 6e 69 7a 65 72 28 29 5d 0a 20 20 69 6e 74 65  enizer()].  inte
9790: 72 66 61 63 65 2e 20 20 54 68 65 20 73 65 63 6f  rface.  The seco
97a0: 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 66  nd argument to f
97b0: 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20  ts3_tokenizer() 
97c0: 69 73 20 73 75 70 70 6f 73 65 20 74 6f 20 62 65  is suppose to be
97d0: 20 61 0a 20 20 70 6f 69 6e 74 65 72 20 74 6f 20   a.  pointer to 
97e0: 61 20 66 75 6e 63 74 69 6f 6e 20 28 65 6e 63 6f  a function (enco
97f0: 64 65 64 20 61 73 20 61 20 42 4c 4f 42 29 20 74  ded as a BLOB) t
9800: 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61  hat implements a
9810: 6e 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  n.  application 
9820: 64 65 66 69 6e 65 64 20 74 6f 6b 65 6e 69 7a 65  defined tokenize
9830: 72 2e 20 20 49 66 20 68 6f 73 74 69 6c 65 20 61  r.  If hostile a
9840: 63 74 6f 72 73 20 61 72 65 20 61 62 6c 65 20 74  ctors are able t
9850: 6f 20 72 75 6e 0a 20 20 74 68 65 20 74 77 6f 2d  o run.  the two-
9860: 61 72 67 75 6d 65 6e 74 20 76 65 72 73 69 6f 6e  argument version
9870: 20 6f 66 20 66 74 73 33 5f 74 6f 6b 65 6e 69 7a   of fts3_tokeniz
9880: 65 72 28 29 20 77 69 74 68 20 61 6e 20 61 72 62  er() with an arb
9890: 69 74 72 61 72 79 20 73 65 63 6f 6e 64 0a 20 20  itrary second.  
98a0: 61 72 67 75 6d 65 6e 74 2c 20 74 68 65 79 20 63  argument, they c
98b0: 6f 75 6c 64 20 75 73 65 20 63 72 61 73 68 20 6f  ould use crash o
98c0: 72 20 74 61 6b 65 20 63 6f 6e 74 72 6f 6c 20 6f  r take control o
98d0: 66 20 74 68 65 20 70 72 6f 63 65 73 73 2e 20 0a  f the process. .
98e0: 20 20 3c 70 3e 0a 20 20 42 65 63 61 75 73 65 20    <p>.  Because 
98f0: 6f 66 20 73 65 63 75 72 69 74 79 20 63 6f 6e 63  of security conc
9900: 65 72 6e 73 2c 20 74 68 65 20 74 77 6f 2d 61 72  erns, the two-ar
9910: 67 75 6d 65 6e 74 20 66 74 73 33 5f 74 6f 6b 65  gument fts3_toke
9920: 6e 69 7a 65 72 28 29 20 66 65 61 74 75 72 65 20  nizer() feature 
9930: 0a 20 20 77 61 73 20 64 69 73 61 62 6c 65 64 20  .  was disabled 
9940: 62 65 67 69 6e 6e 69 6e 67 20 77 69 74 68 20 5b  beginning with [
9950: 56 65 72 73 69 6f 6e 20 33 2e 31 31 2e 30 5d 20  Version 3.11.0] 
9960: 28 5b 64 61 74 65 6f 66 3a 33 2e 31 31 2e 30 5d  ([dateof:3.11.0]
9970: 29 0a 20 20 75 6e 6c 65 73 73 20 74 68 69 73 20  ).  unless this 
9980: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
9990: 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a 20 20 5b  ion is used..  [
99a0: 56 65 72 73 69 6f 6e 20 33 2e 31 32 2e 30 5d 20  Version 3.12.0] 
99b0: 28 5b 64 61 74 65 6f 66 3a 33 2e 31 32 2e 30 5d  ([dateof:3.12.0]
99c0: 29 20 61 64 64 65 64 20 74 68 65 20 0a 20 20 5b  ) added the .  [
99d0: 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
99e0: 67 5d 28 64 62 2c 5b 53 51 4c 49 54 45 5f 44 42  g](db,[SQLITE_DB
99f0: 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 54  CONFIG_ENABLE_FT
9a00: 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 5d 2c 31 2c  S3_TOKENIZER],1,
9a10: 30 29 20 69 6e 74 65 72 66 61 63 65 0a 20 20 74  0) interface.  t
9a20: 68 61 74 20 61 63 74 69 76 61 74 65 73 20 74 68  hat activates th
9a30: 65 20 74 77 6f 2d 61 72 67 75 6d 65 6e 74 20 76  e two-argument v
9a40: 65 72 73 69 6f 6e 20 6f 66 20 5b 66 74 73 33 5f  ersion of [fts3_
9a50: 74 6f 6b 65 6e 69 7a 65 72 28 29 5d 0a 20 20 66  tokenizer()].  f
9a60: 6f 72 20 61 20 73 70 65 63 69 66 69 63 20 5b 64  or a specific [d
9a70: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
9a80: 6f 6e 5d 20 61 74 20 72 75 6e 2d 74 69 6d 65 2e  on] at run-time.
9a90: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9aa0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
9ab0: 45 5f 46 54 53 34 7d 20 7b 0a 20 20 57 68 65 6e  E_FTS4} {.  When
9ac0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
9ad0: 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b  defined in the [
9ae0: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76  amalgamation], v
9af0: 65 72 73 69 6f 6e 73 20 33 20 61 6e 64 20 34 0a  ersions 3 and 4.
9b00: 20 20 6f 66 20 74 68 65 20 66 75 6c 6c 2d 74 65    of the full-te
9b10: 78 74 20 73 65 61 72 63 68 20 65 6e 67 69 6e 65  xt search engine
9b20: 20 69 73 20 61 64 64 65 64 20 74 6f 20 74 68 65   is added to the
9b30: 20 62 75 69 6c 64 20 61 75 74 6f 6d 61 74 69 63   build automatic
9b40: 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ally..}..COMPILE
9b50: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
9b60: 45 4e 41 42 4c 45 5f 46 54 53 35 7d 20 7b 0a 20  ENABLE_FTS5} {. 
9b70: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
9b80: 6e 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20  n is defined in 
9b90: 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f  the [amalgamatio
9ba0: 6e 5d 2c 20 76 65 72 73 69 6f 6e 73 20 35 0a 20  n], versions 5. 
9bb0: 20 6f 66 20 74 68 65 20 66 75 6c 6c 2d 74 65 78   of the full-tex
9bc0: 74 20 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20  t search engine 
9bd0: 28 5b 66 74 73 35 5d 29 20 69 73 20 61 64 64 65  ([fts5]) is adde
9be0: 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20 61  d to the build a
9bf0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a  utomatically..}.
9c00: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
9c10: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 49  {SQLITE_ENABLE_I
9c20: 43 55 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CU} {.  This opt
9c30: 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 0a  ion causes the .
9c40: 20 20 5b 68 74 74 70 3a 2f 2f 77 77 77 2e 69 63    [http://www.ic
9c50: 75 2d 70 72 6f 6a 65 63 74 2e 6f 72 67 2f 20 7c  u-project.org/ |
9c60: 20 49 6e 74 65 72 6e 61 74 69 6f 6e 61 6c 20 43   International C
9c70: 6f 6d 70 6f 6e 65 6e 74 73 20 66 6f 72 20 55 6e  omponents for Un
9c80: 69 63 6f 64 65 5d 0a 20 20 6f 72 20 22 49 43 55  icode].  or "ICU
9c90: 22 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f 20 53  " extension to S
9ca0: 51 4c 69 74 65 20 74 6f 20 62 65 20 61 64 64 65  QLite to be adde
9cb0: 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 2e 20  d to the build. 
9cc0: 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54   .}..COMPILE_OPT
9cd0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
9ce0: 4c 45 5f 49 4f 54 52 41 43 45 7d 20 7b 0a 20 20  LE_IOTRACE} {.  
9cf0: 57 68 65 6e 20 62 6f 74 68 20 74 68 65 20 53 51  When both the SQ
9d00: 4c 69 74 65 20 63 6f 72 65 20 61 6e 64 20 74 68  Lite core and th
9d10: 65 20 5b 43 6f 6d 6d 61 6e 64 20 4c 69 6e 65 20  e [Command Line 
9d20: 49 6e 74 65 72 66 61 63 65 5d 20 28 43 4c 49 29  Interface] (CLI)
9d30: 20 61 72 65 20 62 6f 74 68 20 0a 20 20 63 6f 6d   are both .  com
9d40: 70 69 6c 65 64 20 77 69 74 68 20 74 68 69 73 20  piled with this 
9d50: 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65  option, then the
9d60: 20 43 4c 49 20 70 72 6f 76 69 64 65 73 20 61 6e   CLI provides an
9d70: 20 65 78 74 72 61 20 63 6f 6d 6d 61 6e 64 0a 20   extra command. 
9d80: 20 6e 61 6d 65 64 20 22 2e 69 6f 74 72 61 63 65   named ".iotrace
9d90: 22 20 74 68 61 74 20 70 72 6f 76 69 64 65 73 20  " that provides 
9da0: 61 20 6c 6f 77 2d 6c 65 76 65 6c 20 6c 6f 67 20  a low-level log 
9db0: 6f 66 20 49 2f 4f 20 61 63 74 69 76 69 74 79 2e  of I/O activity.
9dc0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
9dd0: 73 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 61  s experimental a
9de0: 6e 64 20 6d 61 79 20 62 65 20 64 69 73 63 6f 6e  nd may be discon
9df0: 74 69 6e 75 65 64 20 69 6e 20 61 20 66 75 74 75  tinued in a futu
9e00: 72 65 20 72 65 6c 65 61 73 65 2e 0a 7d 0a 0a 43  re release..}..C
9e10: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9e20: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4a 53 4f  QLITE_ENABLE_JSO
9e30: 4e 31 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  N1} {.  When thi
9e40: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
9e50: 6e 65 64 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c  ned in the [amal
9e60: 67 61 6d 61 74 69 6f 6e 5d 2c 20 74 68 65 0a 20  gamation], the. 
9e70: 20 5b 4a 53 4f 4e 20 53 51 4c 20 66 75 6e 63 74   [JSON SQL funct
9e80: 69 6f 6e 73 5d 20 61 72 65 20 61 64 64 65 64 20  ions] are added 
9e90: 74 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75 74  to the build aut
9ea0: 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43  omatically..}..C
9eb0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9ec0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f 43  QLITE_ENABLE_LOC
9ed0: 4b 49 4e 47 5f 53 54 59 4c 45 7d 20 7b 0a 20 20  KING_STYLE} {.  
9ee0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62  This option enab
9ef0: 6c 65 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c  les additional l
9f00: 6f 67 69 63 20 69 6e 20 74 68 65 20 4f 53 20 69  ogic in the OS i
9f10: 6e 74 65 72 66 61 63 65 20 6c 61 79 65 72 20 66  nterface layer f
9f20: 6f 72 0a 20 20 4d 61 63 20 4f 53 20 58 2e 20 54  or.  Mac OS X. T
9f30: 68 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f  he additional lo
9f40: 67 69 63 20 61 74 74 65 6d 70 74 73 20 74 6f 20  gic attempts to 
9f50: 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74 79  determine the ty
9f60: 70 65 20 6f 66 20 74 68 65 0a 20 20 75 6e 64 65  pe of the.  unde
9f70: 72 6c 79 69 6e 67 20 66 69 6c 65 73 79 73 74 65  rlying filesyste
9f80: 6d 20 61 6e 64 20 63 68 6f 6f 73 65 20 61 6e 64  m and choose and
9f90: 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6c 6f 63   alternative loc
9fa0: 6b 69 6e 67 20 73 74 72 61 74 65 67 79 0a 20 20  king strategy.  
9fb0: 74 68 61 74 20 77 6f 72 6b 73 20 63 6f 72 72 65  that works corre
9fc0: 63 74 6c 79 20 66 6f 72 20 74 68 61 74 20 66 69  ctly for that fi
9fd0: 6c 65 73 79 73 74 65 6d 20 74 79 70 65 2e 20 46  lesystem type. F
9fe0: 69 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61  ive locking stra
9ff0: 74 65 67 69 65 73 20 0a 20 20 61 72 65 20 61 76  tegies .  are av
a000: 61 69 6c 61 62 6c 65 3a 0a 0a 20 20 3c 75 6c 3e  ailable:..  <ul>
a010: 0a 20 20 20 20 3c 6c 69 3e 20 50 4f 53 49 58 20  .    <li> POSIX 
a020: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54  locking style. T
a030: 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75  his is the defau
a040: 6c 74 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  lt locking style
a050: 20 61 6e 64 20 74 68 65 0a 20 20 20 20 20 20 20   and the.       
a060: 20 20 73 74 79 6c 65 20 75 73 65 64 20 62 79 20    style used by 
a070: 6f 74 68 65 72 20 28 6e 6f 6e 20 4d 61 63 20 4f  other (non Mac O
a080: 53 20 58 29 20 55 6e 69 78 65 73 2e 20 4c 6f 63  S X) Unixes. Loc
a090: 6b 73 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20  ks are obtained 
a0a0: 61 6e 64 20 0a 20 20 20 20 20 20 20 20 20 72 65  and .         re
a0b0: 6c 65 61 73 65 64 20 75 73 69 6e 67 20 74 68 65  leased using the
a0c0: 20 66 63 6e 74 6c 28 29 20 73 79 73 74 65 6d 20   fcntl() system 
a0d0: 63 61 6c 6c 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20  call...    <li> 
a0e0: 41 46 50 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  AFP locking styl
a0f0: 65 2e 20 54 68 69 73 20 6c 6f 63 6b 69 6e 67 20  e. This locking 
a100: 73 74 79 6c 65 20 69 73 20 75 73 65 64 20 66 6f  style is used fo
a110: 72 20 6e 65 74 77 6f 72 6b 20 66 69 6c 65 20 0a  r network file .
a120: 20 20 20 20 20 20 20 20 20 73 79 73 74 65 6d 73           systems
a130: 20 74 68 61 74 20 75 73 65 20 74 68 65 20 41 46   that use the AF
a140: 50 20 28 41 70 70 6c 65 20 46 69 6c 69 6e 67 20  P (Apple Filing 
a150: 50 72 6f 74 6f 63 6f 6c 29 20 70 72 6f 74 6f 63  Protocol) protoc
a160: 6f 6c 2e 20 4c 6f 63 6b 73 0a 20 20 20 20 20 20  ol. Locks.      
a170: 20 20 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20     are obtained 
a180: 62 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 6c  by calling the l
a190: 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20  ibrary function 
a1a0: 5f 41 46 50 46 53 53 65 74 4c 6f 63 6b 28 29 2e  _AFPFSSetLock().
a1b0: 0a 0a 20 20 20 20 3c 6c 69 3e 20 46 6c 6f 63 6b  ..    <li> Flock
a1c0: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20   locking style. 
a1d0: 54 68 69 73 20 69 73 20 75 73 65 64 20 66 6f 72  This is used for
a1e0: 20 66 69 6c 65 2d 73 79 73 74 65 6d 73 20 74 68   file-systems th
a1f0: 61 74 20 64 6f 20 6e 6f 74 0a 20 20 20 20 20 20  at do not.      
a200: 20 20 20 73 75 70 70 6f 72 74 20 50 4f 53 49 58     support POSIX
a210: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20   locking style. 
a220: 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61 69 6e  Locks are obtain
a230: 65 64 20 61 6e 64 20 72 65 6c 65 61 73 65 64 20  ed and released 
a240: 75 73 69 6e 67 0a 20 20 20 20 20 20 20 20 20 74  using.         t
a250: 68 65 20 66 6c 6f 63 6b 28 29 20 73 79 73 74 65  he flock() syste
a260: 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20 3c 6c 69  m call...    <li
a270: 3e 20 44 6f 74 2d 66 69 6c 65 20 6c 6f 63 6b 69  > Dot-file locki
a280: 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c  ng style. This l
a290: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20  ocking style is 
a2a0: 75 73 65 64 20 77 68 65 6e 20 6e 65 69 74 68 65  used when neithe
a2b0: 72 0a 20 20 20 20 20 20 20 20 20 66 6c 6f 63 6b  r.         flock
a2c0: 20 6e 6f 72 20 50 4f 53 49 58 20 6c 6f 63 6b 69   nor POSIX locki
a2d0: 6e 67 20 73 74 79 6c 65 73 20 61 72 65 20 73 75  ng styles are su
a2e0: 70 70 6f 72 74 65 64 20 62 79 20 74 68 65 20 66  pported by the f
a2f0: 69 6c 65 20 73 79 73 74 65 6d 2e 0a 20 20 20 20  ile system..    
a300: 20 20 20 20 20 44 61 74 61 62 61 73 65 20 6c 6f       Database lo
a310: 63 6b 73 20 61 72 65 20 6f 62 74 61 69 6e 65 64  cks are obtained
a320: 20 62 79 20 63 72 65 61 74 69 6e 67 20 61 6e 64   by creating and
a330: 20 65 6e 74 72 79 20 69 6e 20 74 68 65 20 66 69   entry in the fi
a340: 6c 65 2d 73 79 73 74 65 6d 0a 20 20 20 20 20 20  le-system.      
a350: 20 20 20 61 74 20 61 20 77 65 6c 6c 2d 6b 6e 6f     at a well-kno
a360: 77 6e 20 6c 6f 63 61 74 69 6f 6e 20 72 65 6c 61  wn location rela
a370: 74 69 76 65 20 74 6f 20 74 68 65 20 64 61 74 61  tive to the data
a380: 62 61 73 65 20 66 69 6c 65 20 28 61 20 22 64 6f  base file (a "do
a390: 74 2d 66 69 6c 65 22 29 0a 20 20 20 20 20 20 20  t-file").       
a3a0: 20 20 61 6e 64 20 72 65 6c 69 6e 71 75 69 73 68    and relinquish
a3b0: 65 64 20 62 79 20 64 65 6c 65 74 69 6e 67 20 74  ed by deleting t
a3c0: 68 65 20 73 61 6d 65 20 66 69 6c 65 2e 0a 0a 20  he same file... 
a3d0: 20 20 20 3c 6c 69 3e 20 4e 6f 20 6c 6f 63 6b 69     <li> No locki
a3e0: 6e 67 20 73 74 79 6c 65 2e 20 49 66 20 6e 6f 6e  ng style. If non
a3f0: 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 63  e of the above c
a400: 61 6e 20 62 65 20 73 75 70 70 6f 72 74 65 64 2c  an be supported,
a410: 20 74 68 69 73 20 0a 20 20 20 20 20 20 20 20 20   this .         
a420: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73  locking style is
a430: 20 75 73 65 64 2e 20 4e 6f 20 64 61 74 61 62 61   used. No databa
a440: 73 65 20 6c 6f 63 6b 69 6e 67 20 6d 65 63 68 61  se locking mecha
a450: 6e 69 73 6d 20 69 73 20 75 73 65 64 2e 20 57 68  nism is used. Wh
a460: 65 6e 0a 20 20 20 20 20 20 20 20 20 74 68 69 73  en.         this
a470: 20 73 79 73 74 65 6d 20 69 73 20 75 73 65 64 20   system is used 
a480: 69 74 20 69 73 20 6e 6f 74 20 73 61 66 65 20 66  it is not safe f
a490: 6f 72 20 61 20 73 69 6e 67 6c 65 20 64 61 74 61  or a single data
a4a0: 62 61 73 65 20 74 6f 20 62 65 0a 20 20 20 20 20  base to be.     
a4b0: 20 20 20 20 61 63 63 65 73 73 65 64 20 62 79 20      accessed by 
a4c0: 6d 75 6c 74 69 70 6c 65 20 63 6c 69 65 6e 74 73  multiple clients
a4d0: 2e 0a 20 20 3c 2f 75 6c 3e 0a 0a 20 20 41 64 64  ..  </ul>..  Add
a4e0: 69 74 69 6f 6e 61 6c 6c 79 2c 20 66 69 76 65 20  itionally, five 
a4f0: 65 78 74 72 61 20 5b 56 46 53 5d 20 69 6d 70 6c  extra [VFS] impl
a500: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 61 72 65 20  ementations are 
a510: 70 72 6f 76 69 64 65 64 20 61 73 20 77 65 6c 6c  provided as well
a520: 20 61 73 20 74 68 65 0a 20 20 64 65 66 61 75 6c   as the.  defaul
a530: 74 2e 20 42 79 20 73 70 65 63 69 66 79 69 6e 67  t. By specifying
a540: 20 6f 6e 65 20 6f 66 20 74 68 65 20 65 78 74 72   one of the extr
a550: 61 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61  a VFS implementa
a560: 74 69 6f 6e 73 20 0a 20 20 77 68 65 6e 20 63 61  tions .  when ca
a570: 6c 6c 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6f  lling [sqlite3_o
a580: 70 65 6e 5f 76 32 28 29 5d 2c 20 61 6e 20 61 70  pen_v2()], an ap
a590: 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79 20 62 79  plication may by
a5a0: 70 61 73 73 20 74 68 65 20 66 69 6c 65 2d 73 79  pass the file-sy
a5b0: 73 74 65 6d 0a 20 20 64 65 74 65 63 74 69 6f 6e  stem.  detection
a5c0: 20 6c 6f 67 69 63 20 61 6e 64 20 65 78 70 6c 69   logic and expli
a5d0: 63 69 74 6c 79 20 73 65 6c 65 63 74 20 6f 6e 65  citly select one
a5e0: 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 6c 6f   of the above lo
a5f0: 63 6b 69 6e 67 20 73 74 79 6c 65 73 2e 20 54 68  cking styles. Th
a600: 65 0a 20 20 66 69 76 65 20 65 78 74 72 61 20 5b  e.  five extra [
a610: 56 46 53 5d 20 69 6d 70 6c 65 6d 65 6e 74 61 74  VFS] implementat
a620: 69 6f 6e 73 20 61 72 65 20 63 61 6c 6c 65 64 20  ions are called 
a630: 22 75 6e 69 78 2d 70 6f 73 69 78 22 2c 20 22 75  "unix-posix", "u
a640: 6e 69 78 2d 61 66 70 22 2c 0a 20 20 22 75 6e 69  nix-afp",.  "uni
a650: 78 2d 66 6c 6f 63 6b 22 2c 20 22 75 6e 69 78 2d  x-flock", "unix-
a660: 64 6f 74 66 69 6c 65 22 20 61 6e 64 20 22 75 6e  dotfile" and "un
a670: 69 78 2d 6e 6f 6e 65 22 2e 0a 7d 0a 0a 43 4f 4d  ix-none"..}..COM
a680: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
a690: 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 4f 52  ITE_ENABLE_MEMOR
a6a0: 59 5f 4d 41 4e 41 47 45 4d 45 4e 54 7d 20 7b 0a  Y_MANAGEMENT} {.
a6b0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64    This option ad
a6c0: 64 73 20 65 78 74 72 61 20 6c 6f 67 69 63 20 74  ds extra logic t
a6d0: 6f 20 53 51 4c 69 74 65 20 74 68 61 74 20 61 6c  o SQLite that al
a6e0: 6c 6f 77 73 20 69 74 20 74 6f 20 72 65 6c 65 61  lows it to relea
a6f0: 73 65 20 75 6e 75 73 65 64 0a 20 20 6d 65 6d 6f  se unused.  memo
a700: 72 79 20 75 70 6f 6e 20 72 65 71 75 65 73 74 2e  ry upon request.
a710: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 75    This option mu
a720: 73 74 20 62 65 20 65 6e 61 62 6c 65 64 20 69 6e  st be enabled in
a730: 20 6f 72 64 65 72 20 66 6f 72 20 74 68 65 0a 20   order for the. 
a740: 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73   [sqlite3_releas
a750: 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74 65  e_memory()] inte
a760: 72 66 61 63 65 20 74 6f 20 77 6f 72 6b 2e 20 20  rface to work.  
a770: 49 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d  If this compile-
a780: 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 69 73  time.  option is
a790: 20 6e 6f 74 20 75 73 65 64 2c 20 74 68 65 20 5b   not used, the [
a7a0: 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f  sqlite3_release_
a7b0: 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74 65 72 66  memory()] interf
a7c0: 61 63 65 20 69 73 20 61 20 0a 20 20 6e 6f 2d 6f  ace is a .  no-o
a7d0: 70 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  p..}..COMPILE_OP
a7e0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
a7f0: 42 4c 45 5f 4d 45 4d 53 59 53 33 7d 20 7b 0a 20  BLE_MEMSYS3} {. 
a800: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e 63   This option inc
a810: 6c 75 64 65 73 20 63 6f 64 65 20 69 6e 20 53 51  ludes code in SQ
a820: 4c 69 74 65 20 74 68 61 74 20 69 6d 70 6c 65 6d  Lite that implem
a830: 65 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74  ents an alternat
a840: 69 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c  ive.  memory all
a850: 6f 63 61 74 6f 72 2e 20 20 54 68 69 73 20 61 6c  ocator.  This al
a860: 74 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79  ternative memory
a870: 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f 6e   allocator is on
a880: 6c 79 20 65 6e 67 61 67 65 64 0a 20 20 77 68 65  ly engaged.  whe
a890: 6e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f  n the [SQLITE_CO
a8a0: 4e 46 49 47 5f 48 45 41 50 5d 20 6f 70 74 69 6f  NFIG_HEAP] optio
a8b0: 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f  n to [sqlite3_co
a8c0: 6e 66 69 67 28 29 5d 20 69 73 20 75 73 65 64 20  nfig()] is used 
a8d0: 74 6f 0a 20 20 73 75 70 70 6c 79 20 61 20 6c 61  to.  supply a la
a8e0: 72 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65 6d  rge chunk of mem
a8f0: 6f 72 79 20 66 72 6f 6d 20 77 68 69 63 68 20 61  ory from which a
a900: 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ll memory alloca
a910: 74 69 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b 65  tions are.  take
a920: 6e 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59 53 33  n..  The MEMSYS3
a930: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
a940: 72 20 75 73 65 73 20 61 20 68 79 62 72 69 64 20  r uses a hybrid 
a950: 61 6c 6c 6f 63 61 74 69 6f 6e 20 61 6c 67 6f 72  allocation algor
a960: 69 74 68 6d 20 0a 20 20 70 61 74 74 65 72 6e 65  ithm .  patterne
a970: 64 20 61 66 74 65 72 20 64 6c 6d 61 6c 6c 6f 63  d after dlmalloc
a980: 28 29 2e 20 20 20 4f 6e 6c 79 20 6f 6e 65 20 6f  ().   Only one o
a990: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
a9a0: 4d 45 4d 53 59 53 33 20 61 6e 64 20 0a 20 20 53  MEMSYS3 and .  S
a9b0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d  QLITE_ENABLE_MEM
a9c0: 53 59 53 35 20 6d 61 79 20 62 65 20 65 6e 61 62  SYS5 may be enab
a9d0: 6c 65 64 20 61 74 20 6f 6e 63 65 2e 0a 7d 0a 0a  led at once..}..
a9e0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a9f0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45  SQLITE_ENABLE_ME
aa00: 4d 53 59 53 35 7d 20 7b 0a 20 20 54 68 69 73 20  MSYS5} {.  This 
aa10: 6f 70 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20  option includes 
aa20: 63 6f 64 65 20 69 6e 20 53 51 4c 69 74 65 20 74  code in SQLite t
aa30: 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61  hat implements a
aa40: 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 20 20  n alternative.  
aa50: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
aa60: 2e 20 20 54 68 69 73 20 61 6c 74 65 72 6e 61 74  .  This alternat
aa70: 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ive memory alloc
aa80: 61 74 6f 72 20 69 73 20 6f 6e 6c 79 20 65 6e 67  ator is only eng
aa90: 61 67 65 64 0a 20 20 77 68 65 6e 20 74 68 65 20  aged.  when the 
aaa0: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48  [SQLITE_CONFIG_H
aab0: 45 41 50 5d 20 6f 70 74 69 6f 6e 20 74 6f 20 5b  EAP] option to [
aac0: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
aad0: 5d 20 69 73 20 75 73 65 64 20 74 6f 0a 20 20 73  ] is used to.  s
aae0: 75 70 70 6c 79 20 61 20 6c 61 72 67 65 20 63 68  upply a large ch
aaf0: 75 6e 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 66 72  unk of memory fr
ab00: 6f 6d 20 77 68 69 63 68 20 61 6c 6c 20 6d 65 6d  om which all mem
ab10: 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20  ory allocations 
ab20: 61 72 65 0a 20 20 74 61 6b 65 6e 2e 0a 20 20 54  are.  taken..  T
ab30: 68 65 20 4d 45 4d 53 59 53 35 20 6d 6f 64 75 6c  he MEMSYS5 modul
ab40: 65 20 72 6f 75 6e 64 73 20 61 6c 6c 20 61 6c 6c  e rounds all all
ab50: 6f 63 61 74 69 6f 6e 73 20 75 70 20 74 6f 20 74  ocations up to t
ab60: 68 65 20 6e 65 78 74 20 70 6f 77 65 72 0a 20 20  he next power.  
ab70: 6f 66 20 74 77 6f 20 61 6e 64 20 75 73 65 73 20  of two and uses 
ab80: 61 20 66 69 72 73 74 2d 66 69 74 2c 20 62 75 64  a first-fit, bud
ab90: 64 79 2d 61 6c 6c 6f 63 61 74 6f 72 20 61 6c 67  dy-allocator alg
aba0: 6f 72 69 74 68 6d 0a 20 20 74 68 61 74 20 70 72  orithm.  that pr
abb0: 6f 76 69 64 65 73 20 73 74 72 6f 6e 67 20 67 75  ovides strong gu
abc0: 61 72 61 6e 74 65 65 73 20 61 67 61 69 6e 73 74  arantees against
abd0: 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20 61   fragmentation a
abe0: 6e 64 20 62 72 65 61 6b 64 6f 77 6e 0a 20 20 73  nd breakdown.  s
abf0: 75 62 6a 65 63 74 20 74 6f 20 63 65 72 74 61 69  ubject to certai
ac00: 6e 20 6f 70 65 72 61 74 69 6e 67 20 63 6f 6e 73  n operating cons
ac10: 74 72 61 69 6e 74 73 2e 0a 7d 0a 0a 43 4f 4d 50  traints..}..COMP
ac20: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
ac30: 54 45 5f 45 4e 41 42 4c 45 5f 4e 55 4c 4c 5f 54  TE_ENABLE_NULL_T
ac40: 52 49 4d 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  RIM} {.  This op
ac50: 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 61 6e 20  tion enables an 
ac60: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61  optimization tha
ac70: 74 20 6f 6d 69 74 73 20 4e 55 4c 4c 20 63 6f 6c  t omits NULL col
ac80: 75 6d 6e 73 20 61 74 0a 20 20 74 68 65 20 65 6e  umns at.  the en
ac90: 64 73 20 6f 66 20 72 6f 77 73 2c 20 66 6f 72 20  ds of rows, for 
aca0: 61 20 73 70 61 63 65 20 73 61 76 69 6e 67 73 20  a space savings 
acb0: 6f 6e 20 64 69 73 6b 2e 0a 20 20 3c 70 3e 0a 20  on disk..  <p>. 
acc0: 20 44 61 74 61 62 61 73 65 73 20 67 65 6e 65 72   Databases gener
acd0: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6f  ated with this o
ace0: 70 74 69 6f 6e 20 65 6e 61 62 6c 65 64 20 61 72  ption enabled ar
acf0: 65 20 6e 6f 74 20 72 65 61 64 61 62 6c 65 0a 20  e not readable. 
ad00: 20 62 79 20 53 51 4c 69 74 65 20 76 65 72 73 69   by SQLite versi
ad10: 6f 6e 20 33 2e 31 2e 36 20 28 5b 64 61 74 65 6f  on 3.1.6 ([dateo
ad20: 66 3a 33 2e 31 2e 36 5d 29 20 61 6e 64 20 65 61  f:3.1.6]) and ea
ad30: 72 6c 69 65 72 2e 20 20 41 6c 73 6f 2c 0a 20 20  rlier.  Also,.  
ad40: 64 61 74 61 62 61 73 65 73 20 67 65 6e 65 72 61  databases genera
ad50: 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6f 70  ted with this op
ad60: 74 69 6f 6e 20 65 6e 61 62 6c 65 64 20 61 72 65  tion enabled are
ad70: 20 70 72 6f 6e 65 20 74 6f 0a 20 20 74 72 69 67   prone to.  trig
ad80: 67 65 72 69 6e 67 20 74 68 65 0a 20 20 5b 68 74  gering the.  [ht
ad90: 74 70 73 3a 2f 2f 77 77 77 2e 73 71 6c 69 74 65  tps://www.sqlite
ada0: 2e 6f 72 67 2f 73 72 63 2f 69 6e 66 6f 2f 65 36  .org/src/info/e6
adb0: 65 39 36 32 64 36 62 30 66 30 36 66 34 36 65 7c  e962d6b0f06f46e|
adc0: 65 36 65 39 36 32 64 36 62 30 66 30 36 66 34 36  e6e962d6b0f06f46
add0: 5d 0a 20 20 62 75 67 20 69 6e 20 74 68 65 20 5b  ].  bug in the [
ade0: 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65 6f  sqlite3_blob_reo
adf0: 70 65 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65  pen()] interface
ae00: 2e 20 20 46 6f 72 20 74 68 6f 73 65 20 72 65 61  .  For those rea
ae10: 73 6f 6e 73 2c 0a 20 20 74 68 69 73 20 6f 70 74  sons,.  this opt
ae20: 69 6d 69 7a 61 74 69 6f 6e 20 69 73 20 64 69 73  imization is dis
ae30: 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74  abled by default
ae40: 2e 20 20 48 6f 77 65 76 65 72 2c 20 74 68 69 73  .  However, this
ae50: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 0a 20 20   optimization.  
ae60: 6d 61 79 20 62 65 20 65 6e 61 62 6c 65 64 20 62  may be enabled b
ae70: 79 20 64 65 66 61 75 6c 74 20 69 6e 20 61 20 66  y default in a f
ae80: 75 74 75 72 65 20 72 65 6c 65 61 73 65 20 6f 66  uture release of
ae90: 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50   SQLite..}..COMP
aea0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
aeb0: 54 45 5f 45 4e 41 42 4c 45 5f 50 52 45 55 50 44  TE_ENABLE_PREUPD
aec0: 41 54 45 5f 48 4f 4f 4b 7d 20 7b 0a 20 20 54 68  ATE_HOOK} {.  Th
aed0: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
aee0: 73 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 70 72  s .  [sqlite3_pr
aef0: 65 75 70 64 61 74 65 5f 68 6f 6f 6b 7c 73 65 76  eupdate_hook|sev
af00: 65 72 61 6c 20 6e 65 77 20 41 50 49 73 5d 20 74  eral new APIs] t
af10: 68 61 74 20 70 72 6f 76 69 64 65 20 63 61 6c 6c  hat provide call
af20: 62 61 63 6b 73 0a 20 20 70 72 69 6f 72 20 74 6f  backs.  prior to
af30: 20 61 6e 79 20 63 68 61 6e 67 65 20 74 6f 20 61   any change to a
af40: 20 5b 72 6f 77 69 64 20 74 61 62 6c 65 5d 2e 20   [rowid table]. 
af50: 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 73 20 63   The callbacks c
af60: 61 6e 20 62 65 20 75 73 65 64 0a 20 20 74 6f 20  an be used.  to 
af70: 72 65 63 6f 72 64 20 74 68 65 20 73 74 61 74 65  record the state
af80: 20 6f 66 20 74 68 65 20 72 6f 77 20 62 65 66 6f   of the row befo
af90: 72 65 20 74 68 65 20 63 68 61 6e 67 65 20 6f 63  re the change oc
afa0: 63 75 72 73 2e 0a 20 20 3c 70 3e 54 68 65 20 61  curs..  <p>The a
afb0: 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 72 65  ction of the pre
afc0: 75 70 64 61 74 65 20 68 6f 6f 6b 20 69 73 20 73  update hook is s
afd0: 69 6d 69 6c 61 72 20 74 6f 20 74 68 65 0a 20 20  imilar to the.  
afe0: 5b 73 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f  [sqlite3_update_
aff0: 68 6f 6f 6b 7c 75 70 64 61 74 65 20 68 6f 6f 6b  hook|update hook
b000: 5d 20 65 78 63 65 70 74 20 74 68 61 74 20 74 68  ] except that th
b010: 65 20 63 61 6c 6c 62 61 63 6b 20 69 73 0a 20 20  e callback is.  
b020: 69 6e 76 6f 6b 65 64 20 62 65 66 6f 72 65 20 74  invoked before t
b030: 68 65 20 63 68 61 6e 67 65 2c 20 6e 6f 74 20 61  he change, not a
b040: 66 74 65 72 77 61 72 64 73 2c 20 61 6e 64 20 74  fterwards, and t
b050: 68 65 20 70 72 65 75 70 64 61 74 65 0a 20 20 68  he preupdate.  h
b060: 6f 6f 6b 20 69 6e 74 65 72 66 61 63 65 73 20 61  ook interfaces a
b070: 72 65 20 6f 6d 69 74 74 65 64 20 75 6e 6c 65 73  re omitted unles
b080: 73 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  s this compile-t
b090: 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 0a 20 20  ime option is.  
b0a0: 75 73 65 64 2e 0a 20 20 3c 70 3e 54 68 65 20 70  used..  <p>The p
b0b0: 72 65 75 70 64 61 74 65 20 68 6f 6f 6b 20 69 6e  reupdate hook in
b0c0: 74 65 72 66 61 63 65 73 20 77 65 72 65 20 6f 72  terfaces were or
b0d0: 69 67 69 6e 61 6c 6c 79 20 61 64 64 65 64 20 74  iginally added t
b0e0: 6f 0a 20 20 73 75 70 70 6f 72 74 20 74 68 65 20  o.  support the 
b0f0: 5b 73 65 73 73 69 6f 6e 5d 20 65 78 74 65 6e 73  [session] extens
b100: 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ion..}..COMPILE_
b110: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
b120: 4e 41 42 4c 45 5f 51 50 53 47 7d 20 7b 0a 20 20  NABLE_QPSG} {.  
b130: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
b140: 65 73 20 74 68 65 20 5b 71 75 65 72 79 20 70 6c  es the [query pl
b150: 61 6e 6e 65 72 20 73 74 61 62 69 6c 69 74 79 20  anner stability 
b160: 67 75 61 72 61 6e 74 65 65 5d 20 28 51 50 53 47  guarantee] (QPSG
b170: 29 20 74 6f 0a 20 20 62 65 20 6f 6e 20 62 79 20  ) to.  be on by 
b180: 64 65 66 61 75 6c 74 2e 20 20 4e 6f 72 6d 61 6c  default.  Normal
b190: 6c 79 20 74 68 65 20 51 50 53 47 20 69 73 20 6f  ly the QPSG is o
b1a0: 66 66 20 61 6e 64 20 6d 75 73 74 20 62 65 20 61  ff and must be a
b1b0: 63 74 69 76 61 74 65 64 0a 20 20 61 74 20 72 75  ctivated.  at ru
b1c0: 6e 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65  n-time using the
b1d0: 20 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49   [SQLITE_DBCONFI
b1e0: 47 5f 45 4e 41 42 4c 45 5f 51 50 53 47 5d 20 6f  G_ENABLE_QPSG] o
b1f0: 70 74 69 6f 6e 20 74 6f 20 74 68 65 0a 20 20 5b  ption to the.  [
b200: 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
b210: 67 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a  g()] interface..
b220: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b230: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
b240: 5f 52 42 55 7d 20 7b 0a 20 20 45 6e 61 62 6c 65  _RBU} {.  Enable
b250: 20 74 68 65 20 63 6f 64 65 20 74 68 65 20 69 6d   the code the im
b260: 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 5b 52 42  plements the [RB
b270: 55 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a  U extension]..}.
b280: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
b290: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52  {SQLITE_ENABLE_R
b2a0: 54 52 45 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TREE} {.  This o
b2b0: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c  ption causes SQL
b2c0: 69 74 65 20 74 6f 20 69 6e 63 6c 75 64 65 20 73  ite to include s
b2d0: 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 0a 20  upport for the. 
b2e0: 20 5b 72 74 72 65 65 20 7c 20 52 2a 54 72 65 65   [rtree | R*Tree
b2f0: 20 69 6e 64 65 78 20 65 78 74 65 6e 73 69 6f 6e   index extension
b300: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
b310: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
b320: 42 4c 45 5f 53 45 53 53 49 4f 4e 7d 20 7b 0a 20  BLE_SESSION} {. 
b330: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61   This option ena
b340: 62 6c 65 73 20 74 68 65 20 5b 73 65 73 73 69 6f  bles the [sessio
b350: 6e 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a  n extension]..}.
b360: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
b370: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  {SQLITE_ENABLE_S
b380: 54 4d 54 5f 53 43 41 4e 53 54 41 54 55 53 7d 20  TMT_SCANSTATUS} 
b390: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
b3a0: 65 6e 61 62 6c 65 73 20 74 68 65 20 5b 73 71 6c  enables the [sql
b3b0: 69 74 65 33 5f 73 74 6d 74 5f 73 63 61 6e 73 74  ite3_stmt_scanst
b3c0: 61 74 75 73 28 29 5d 20 69 6e 74 65 72 66 61 63  atus()] interfac
b3d0: 65 2e 20 20 54 68 65 0a 20 20 5b 73 71 6c 69 74  e.  The.  [sqlit
b3e0: 65 33 5f 73 74 6d 74 5f 73 63 61 6e 73 74 61 74  e3_stmt_scanstat
b3f0: 75 73 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  us()] interface 
b400: 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 6f 6d 69 74  is normally omit
b410: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69  ted from the bui
b420: 6c 64 0a 20 20 62 65 63 61 75 73 65 20 69 74 20  ld.  because it 
b430: 69 6d 70 6f 73 65 73 20 61 20 73 6d 61 6c 6c 20  imposes a small 
b440: 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e 61  performance pena
b450: 6c 74 79 2c 20 65 76 65 6e 20 6f 6e 20 73 74 61  lty, even on sta
b460: 74 65 6d 65 6e 74 73 20 74 68 61 74 0a 20 20 64  tements that.  d
b470: 6f 20 6e 6f 74 20 75 73 65 20 74 68 65 20 66 65  o not use the fe
b480: 61 74 75 72 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ature..}..COMPIL
b490: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
b4a0: 5f 45 4e 41 42 4c 45 5f 53 54 4d 54 56 54 41 42  _ENABLE_STMTVTAB
b4b0: 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70 69  } {.  This compi
b4c0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 65  le-time option e
b4d0: 6e 61 62 6c 65 73 20 74 68 65 20 5b 53 51 4c 49  nables the [SQLI
b4e0: 54 45 5f 53 54 4d 54 20 76 69 72 74 75 61 6c 20  TE_STMT virtual 
b4f0: 74 61 62 6c 65 5d 20 6c 6f 67 69 63 2e 0a 7d 0a  table] logic..}.
b500: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
b510: 7b 53 51 4c 49 54 45 5f 52 54 52 45 45 5f 49 4e  {SQLITE_RTREE_IN
b520: 54 5f 4f 4e 4c 59 7d 20 7b 0a 20 20 49 66 20 74  T_ONLY} {.  If t
b530: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
b540: 65 64 20 74 6f 67 65 74 68 65 72 20 77 69 74 68  ed together with
b550: 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   [SQLITE_ENABLE_
b560: 52 54 52 45 45 5d 20 74 68 65 6e 20 74 68 65 0a  RTREE] then the.
b570: 20 20 5b 72 74 72 65 65 20 7c 20 52 2a 54 72 65    [rtree | R*Tre
b580: 65 20 65 78 74 65 6e 73 69 6f 6e 5d 20 77 69 6c  e extension] wil
b590: 6c 20 6f 6e 6c 79 20 73 74 6f 72 65 20 33 32 2d  l only store 32-
b5a0: 62 69 74 20 73 69 67 6e 65 64 20 69 6e 74 65 67  bit signed integ
b5b0: 65 72 0a 20 20 63 6f 6f 72 64 69 6e 61 74 65 73  er.  coordinates
b5c0: 20 61 6e 64 20 61 6c 6c 20 69 6e 74 65 72 6e 61   and all interna
b5d0: 6c 20 63 6f 6d 70 75 74 61 74 69 6f 6e 73 20 77  l computations w
b5e0: 69 6c 6c 20 62 65 20 64 6f 6e 65 20 75 73 69 6e  ill be done usin
b5f0: 67 20 69 6e 74 65 67 65 72 73 0a 20 20 69 6e 73  g integers.  ins
b600: 74 65 61 64 20 6f 66 20 66 6c 6f 61 74 69 6e 67  tead of floating
b610: 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 73 2e 0a   point numbers..
b620: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b630: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
b640: 5f 53 51 4c 4c 4f 47 7d 20 7b 0a 20 20 54 68 69  _SQLLOG} {.  Thi
b650: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
b660: 20 65 78 74 72 61 20 63 6f 64 65 20 28 65 73 70   extra code (esp
b670: 65 63 69 61 6c 6c 79 20 74 68 65 20 5b 53 51 4c  ecially the [SQL
b680: 49 54 45 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f  ITE_CONFIG_SQLLO
b690: 47 5d 0a 20 20 6f 70 74 69 6f 6e 20 74 6f 20 5b  G].  option to [
b6a0: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
b6b0: 5d 29 20 74 68 61 74 20 63 61 6e 20 62 65 20 75  ]) that can be u
b6c0: 73 65 64 20 74 6f 20 63 72 65 61 74 65 20 6c 6f  sed to create lo
b6d0: 67 73 20 6f 66 20 61 6c 6c 0a 20 20 53 51 4c 69  gs of all.  SQLi
b6e0: 74 65 20 70 72 6f 63 65 73 73 69 6e 67 20 70 65  te processing pe
b6f0: 72 66 6f 72 6d 65 64 20 62 79 20 61 6e 20 61 70  rformed by an ap
b700: 70 6c 69 63 61 74 69 6f 6e 2e 20 20 54 68 65 73  plication.  Thes
b710: 65 20 6c 6f 67 73 20 63 61 6e 20 62 65 20 75 73  e logs can be us
b720: 65 66 75 6c 0a 20 20 69 6e 20 64 6f 69 6e 67 20  eful.  in doing 
b730: 6f 66 66 2d 6c 69 6e 65 20 61 6e 61 6c 79 73 69  off-line analysi
b740: 73 20 6f 66 20 74 68 65 20 62 65 68 61 76 69 6f  s of the behavio
b750: 72 20 6f 66 20 61 6e 20 61 70 70 6c 69 63 61 74  r of an applicat
b760: 69 6f 6e 2c 20 61 6e 64 20 65 73 70 65 63 69 61  ion, and especia
b770: 6c 6c 79 0a 20 20 66 6f 72 20 70 65 72 66 6f 72  lly.  for perfor
b780: 6d 61 6e 63 65 20 61 6e 61 6c 79 73 69 73 2e 20  mance analysis. 
b790: 20 49 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68   In order for th
b7a0: 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  e SQLITE_ENABLE_
b7b0: 53 51 4c 4c 4f 47 20 6f 70 74 69 6f 6e 20 74 6f  SQLLOG option to
b7c0: 20 0a 20 20 62 65 20 75 73 65 66 75 6c 2c 20 73   .  be useful, s
b7d0: 6f 6d 65 20 65 78 74 72 61 20 63 6f 64 65 20 69  ome extra code i
b7e0: 73 20 72 65 71 75 69 72 65 64 2e 20 20 54 68 65  s required.  The
b7f0: 20 0a 20 20 3c 61 20 68 72 65 66 3d 22 68 74 74   .  <a href="htt
b800: 70 3a 2f 2f 77 77 77 2e 73 71 6c 69 74 65 2e 6f  p://www.sqlite.o
b810: 72 67 2f 73 72 63 2f 64 6f 63 2f 74 72 75 6e 6b  rg/src/doc/trunk
b820: 2f 73 72 63 2f 74 65 73 74 5f 73 71 6c 6c 6f 67  /src/test_sqllog
b830: 2e 63 22 3e 22 74 65 73 74 5f 73 71 6c 6c 6f 67  .c">"test_sqllog
b840: 2e 63 22 3c 2f 61 3e 0a 20 20 73 6f 75 72 63 65  .c"</a>.  source
b850: 20 63 6f 64 65 0a 20 20 66 69 6c 65 20 69 6e 20   code.  file in 
b860: 74 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63  the SQLite sourc
b870: 65 20 74 72 65 65 20 69 73 20 61 20 77 6f 72 6b  e tree is a work
b880: 69 6e 67 20 65 78 61 6d 70 6c 65 20 6f 66 20 74  ing example of t
b890: 68 65 20 72 65 71 75 69 72 65 64 20 65 78 74 72  he required extr
b8a0: 61 0a 20 20 63 6f 64 65 2e 20 20 4f 6e 20 75 6e  a.  code.  On un
b8b0: 69 78 20 61 6e 64 20 77 69 6e 64 6f 77 73 20 73  ix and windows s
b8c0: 79 73 74 65 6d 73 2c 20 61 20 64 65 76 65 6c 6f  ystems, a develo
b8d0: 70 65 72 20 63 61 6e 20 61 70 70 65 6e 64 20 74  per can append t
b8e0: 68 65 20 74 65 78 74 20 6f 66 20 74 68 65 0a 20  he text of the. 
b8f0: 20 22 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22   "test_sqllog.c"
b900: 20 73 6f 75 72 63 65 20 63 6f 64 65 20 66 69 6c   source code fil
b910: 65 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20  e to the end of 
b920: 61 6e 20 22 73 71 6c 69 74 65 33 2e 63 22 20 61  an "sqlite3.c" a
b930: 6d 61 6c 67 61 6d 61 74 69 6f 6e 2c 0a 20 20 72  malgamation,.  r
b940: 65 63 6f 6d 70 69 6c 65 20 74 68 65 20 61 70 70  ecompile the app
b950: 6c 69 63 61 74 69 6f 6e 20 75 73 69 6e 67 20 74  lication using t
b960: 68 65 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42  he -DSQLITE_ENAB
b970: 4c 45 5f 53 51 4c 4c 4f 47 20 6f 70 74 69 6f 6e  LE_SQLLOG option
b980: 2c 20 74 68 65 6e 20 0a 20 20 63 6f 6e 74 72 6f  , then .  contro
b990: 6c 20 6c 6f 67 67 69 6e 67 20 75 73 69 6e 67 20  l logging using 
b9a0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
b9b0: 61 62 6c 65 73 2e 20 20 53 65 65 20 74 68 65 20  ables.  See the 
b9c0: 68 65 61 64 65 72 20 63 6f 6d 6d 65 6e 74 20 6f  header comment o
b9d0: 6e 20 0a 20 20 74 68 65 20 22 74 65 73 74 5f 73  n .  the "test_s
b9e0: 71 6c 6c 6f 67 2e 63 22 20 73 6f 75 72 63 65 20  qllog.c" source 
b9f0: 66 69 6c 65 20 66 6f 72 20 61 64 64 69 74 69 6f  file for additio
ba00: 6e 61 6c 20 64 65 74 61 69 6c 2e 20 20 0a 7d 0a  nal detail.  .}.
ba10: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
ba20: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  {SQLITE_ENABLE_S
ba30: 54 41 54 32 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TAT2} {.  This o
ba40: 70 74 69 6f 6e 20 75 73 65 64 20 74 6f 20 63 61  ption used to ca
ba50: 75 73 65 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45  use the [ANALYZE
ba60: 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 63 6f 6c  ] command to col
ba70: 6c 65 63 74 0a 20 20 69 6e 64 65 78 20 68 69 73  lect.  index his
ba80: 74 6f 67 72 61 6d 20 64 61 74 61 20 69 6e 20 74  togram data in t
ba90: 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61  he <b>sqlite_sta
baa0: 74 32 3c 2f 62 3e 20 74 61 62 6c 65 2e 20 20 42  t2</b> table.  B
bab0: 75 74 20 74 68 61 74 0a 20 20 66 75 6e 63 74 69  ut that.  functi
bac0: 6f 6e 61 6c 69 74 79 20 77 61 73 20 73 75 70 65  onality was supe
bad0: 72 63 65 64 65 64 20 62 79 20 5b 53 51 4c 49 54  rceded by [SQLIT
bae0: 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33 5d 20  E_ENABLE_STAT3] 
baf0: 61 73 20 6f 66 0a 20 20 53 51 4c 69 74 65 20 5b  as of.  SQLite [
bb00: 76 65 72 73 69 6f 6e 20 33 2e 37 2e 39 5d 20 28  version 3.7.9] (
bb10: 5b 64 61 74 65 6f 66 3a 33 2e 37 2e 39 5d 29 2e  [dateof:3.7.9]).
bb20: 20 20 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f    .  The SQLITE_
bb30: 45 4e 41 42 4c 45 5f 53 54 41 54 32 20 63 6f 6d  ENABLE_STAT2 com
bb40: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
bb50: 0a 20 20 69 73 20 6e 6f 77 20 61 20 6e 6f 2d 6f  .  is now a no-o
bb60: 70 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  p..}..COMPILE_OP
bb70: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
bb80: 42 4c 45 5f 53 54 41 54 33 7d 20 7b 0a 20 20 54  BLE_STAT3} {.  T
bb90: 68 69 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20  his option adds 
bba0: 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63  additional logic
bbb0: 20 74 6f 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45   to the [ANALYZE
bbc0: 5d 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 6f  ] command and to
bbd0: 0a 20 20 74 68 65 20 5b 71 75 65 72 79 20 70 6c  .  the [query pl
bbe0: 61 6e 6e 65 72 5d 20 74 68 61 74 20 63 61 6e 20  anner] that can 
bbf0: 68 65 6c 70 20 53 51 4c 69 74 65 20 74 6f 20 63  help SQLite to c
bc00: 68 6f 73 65 20 61 20 62 65 74 74 65 72 20 71 75  hose a better qu
bc10: 65 72 79 20 70 6c 61 6e 0a 20 20 75 6e 64 65 72  ery plan.  under
bc20: 20 63 65 72 74 61 69 6e 20 73 69 74 75 61 74 69   certain situati
bc30: 6f 6e 73 2e 20 20 54 68 65 20 5b 41 4e 41 4c 59  ons.  The [ANALY
bc40: 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65  ZE] command is e
bc50: 6e 68 61 6e 63 65 64 20 74 6f 20 63 6f 6c 6c 65  nhanced to colle
bc60: 63 74 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64  ct.  histogram d
bc70: 61 74 61 20 66 72 6f 6d 20 74 68 65 20 6c 65 66  ata from the lef
bc80: 74 2d 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20 6f 66  t-most column of
bc90: 20 65 61 63 68 20 69 6e 64 65 78 20 61 6e 64 20   each index and 
bca0: 73 74 6f 72 65 20 74 68 61 74 20 64 61 74 61 0a  store that data.
bcb0: 20 20 69 6e 20 74 68 65 20 5b 73 71 6c 69 74 65    in the [sqlite
bcc0: 5f 73 74 61 74 33 5d 20 74 61 62 6c 65 2e 20 20  _stat3] table.  
bcd0: 54 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65  The query planne
bce0: 72 20 77 69 6c 6c 20 74 68 65 6e 20 75 73 65 20  r will then use 
bcf0: 74 68 65 0a 20 20 68 69 73 74 6f 67 72 61 6d 20  the.  histogram 
bd00: 64 61 74 61 20 74 6f 20 68 65 6c 70 20 69 74 20  data to help it 
bd10: 6d 61 6b 65 20 62 65 74 74 65 72 20 69 6e 64 65  make better inde
bd20: 78 20 63 68 6f 69 63 65 73 2e 20 20 4e 6f 74 65  x choices.  Note
bd30: 2c 20 68 6f 77 65 76 65 72 2c 0a 20 20 74 68 61  , however,.  tha
bd40: 74 20 74 68 65 20 75 73 65 20 6f 66 20 68 69 73  t the use of his
bd50: 74 6f 67 72 61 6d 20 64 61 74 61 20 69 6e 20 71  togram data in q
bd60: 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 76 69 6f  uery planner vio
bd70: 6c 61 74 65 73 20 74 68 65 0a 20 20 5b 71 75 65  lates the.  [que
bd80: 72 79 20 70 6c 61 6e 6e 65 72 20 73 74 61 62 69  ry planner stabi
bd90: 6c 69 74 79 20 67 75 61 72 61 6e 74 65 65 5d 20  lity guarantee] 
bda0: 77 68 69 63 68 20 69 73 20 69 6d 70 6f 72 74 61  which is importa
bdb0: 6e 74 20 74 6f 20 73 6f 6d 65 20 61 70 70 6c 69  nt to some appli
bdc0: 63 61 74 69 6f 6e 73 2e 0a 20 20 3c 70 3e 0a 7d  cations..  <p>.}
bdd0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
bde0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
bdf0: 53 54 41 54 34 7d 20 7b 0a 20 20 54 68 69 73 20  STAT4} {.  This 
be00: 6f 70 74 69 6f 6e 20 61 64 64 73 20 61 64 64 69  option adds addi
be10: 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 74 6f 20  tional logic to 
be20: 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f  the [ANALYZE] co
be30: 6d 6d 61 6e 64 20 61 6e 64 20 74 6f 0a 20 20 74  mmand and to.  t
be40: 68 65 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65  he [query planne
be50: 72 5d 20 74 68 61 74 20 63 61 6e 20 68 65 6c 70  r] that can help
be60: 20 53 51 4c 69 74 65 20 74 6f 20 63 68 6f 73 65   SQLite to chose
be70: 20 61 20 62 65 74 74 65 72 20 71 75 65 72 79 20   a better query 
be80: 70 6c 61 6e 0a 20 20 75 6e 64 65 72 20 63 65 72  plan.  under cer
be90: 74 61 69 6e 20 73 69 74 75 61 74 69 6f 6e 73 2e  tain situations.
bea0: 20 20 54 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20    The [ANALYZE] 
beb0: 63 6f 6d 6d 61 6e 64 20 69 73 20 65 6e 68 61 6e  command is enhan
bec0: 63 65 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a 20  ced to collect. 
bed0: 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20   histogram data 
bee0: 66 72 6f 6d 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73  from all columns
bef0: 20 6f 66 20 65 76 65 72 79 20 69 6e 64 65 78 20   of every index 
bf00: 61 6e 64 20 73 74 6f 72 65 20 74 68 61 74 20 64  and store that d
bf10: 61 74 61 0a 20 20 69 6e 20 74 68 65 20 5b 73 71  ata.  in the [sq
bf20: 6c 69 74 65 5f 73 74 61 74 34 5d 20 74 61 62 6c  lite_stat4] tabl
bf30: 65 2e 20 20 54 68 65 20 71 75 65 72 79 20 70 6c  e.  The query pl
bf40: 61 6e 6e 65 72 20 77 69 6c 6c 20 74 68 65 6e 20  anner will then 
bf50: 75 73 65 20 74 68 65 0a 20 20 68 69 73 74 6f 67  use the.  histog
bf60: 72 61 6d 20 64 61 74 61 20 74 6f 20 68 65 6c 70  ram data to help
bf70: 20 69 74 20 6d 61 6b 65 20 62 65 74 74 65 72 20   it make better 
bf80: 69 6e 64 65 78 20 63 68 6f 69 63 65 73 2e 20 20  index choices.  
bf90: 54 68 65 20 64 6f 77 6e 73 69 64 65 20 6f 66 0a  The downside of.
bfa0: 20 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74    this compile-t
bfb0: 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 74 68  ime option is th
bfc0: 61 74 20 69 74 20 76 69 6f 6c 61 74 65 73 20 74  at it violates t
bfd0: 68 65 0a 20 20 5b 71 75 65 72 79 20 70 6c 61 6e  he.  [query plan
bfe0: 6e 65 72 20 73 74 61 62 69 6c 69 74 79 20 67 75  ner stability gu
bff0: 61 72 61 6e 74 65 65 5d 20 6d 61 6b 69 6e 67 20  arantee] making 
c000: 69 74 20 6d 6f 72 65 20 64 69 66 66 69 63 75 6c  it more difficul
c010: 74 20 74 6f 20 65 6e 73 75 72 65 0a 20 20 63 6f  t to ensure.  co
c020: 6e 73 69 73 74 65 6e 74 20 70 65 72 66 6f 72 6d  nsistent perform
c030: 61 6e 63 65 20 69 6e 20 6d 61 73 73 2d 70 72 6f  ance in mass-pro
c040: 64 75 63 65 64 20 61 70 70 6c 69 63 61 74 69 6f  duced applicatio
c050: 6e 73 2e 0a 20 20 3c 70 3e 0a 20 20 53 51 4c 49  ns..  <p>.  SQLI
c060: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34 20  TE_ENABLE_STAT4 
c070: 69 73 20 61 6e 20 65 6e 68 61 6e 63 65 6d 65 6e  is an enhancemen
c080: 74 20 6f 66 20 5b 53 51 4c 49 54 45 5f 45 4e 41  t of [SQLITE_ENA
c090: 42 4c 45 5f 53 54 41 54 33 5d 2e 20 20 53 54 41  BLE_STAT3].  STA
c0a0: 54 33 0a 20 20 6f 6e 6c 79 20 72 65 63 6f 72 64  T3.  only record
c0b0: 65 64 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74  ed histogram dat
c0c0: 61 20 66 6f 72 20 74 68 65 20 6c 65 66 74 2d 6d  a for the left-m
c0d0: 6f 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20 65 61  ost column of ea
c0e0: 63 68 20 69 6e 64 65 78 0a 20 20 77 68 65 72 65  ch index.  where
c0f0: 61 73 20 74 68 65 20 53 54 41 54 34 20 65 6e 68  as the STAT4 enh
c100: 61 6e 63 65 6d 65 6e 74 20 72 65 63 6f 72 64 73  ancement records
c110: 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20   histogram data 
c120: 66 72 6f 6d 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73  from all columns
c130: 0a 20 20 6f 66 20 65 61 63 68 20 69 6e 64 65 78  .  of each index
c140: 2e 0a 20 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  ..  The [SQLITE_
c150: 45 4e 41 42 4c 45 5f 53 54 41 54 33 5d 20 63 6f  ENABLE_STAT3] co
c160: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
c170: 6e 20 69 73 20 61 20 6e 6f 2d 6f 70 20 61 6e 64  n is a no-op and
c180: 20 69 73 20 69 67 6e 6f 72 65 64 0a 20 20 69 66   is ignored.  if
c190: 20 74 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42   the SQLITE_ENAB
c1a0: 4c 45 5f 53 54 41 54 34 20 63 6f 6d 70 69 6c 65  LE_STAT4 compile
c1b0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20  -time option is 
c1c0: 75 73 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  used..}..COMPILE
c1d0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
c1e0: 45 4e 41 42 4c 45 5f 54 52 45 45 5f 45 58 50 4c  ENABLE_TREE_EXPL
c1f0: 41 49 4e 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f  AIN} {.  This co
c200: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
c210: 6e 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 75  n is no longer u
c220: 73 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  sed..}..COMPILE_
c230: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
c240: 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c  NABLE_UPDATE_DEL
c250: 45 54 45 5f 4c 49 4d 49 54 7d 20 7b 0a 20 20 54  ETE_LIMIT} {.  T
c260: 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c  his option enabl
c270: 65 73 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 4f  es an optional O
c280: 52 44 45 52 20 42 59 20 61 6e 64 20 4c 49 4d 49  RDER BY and LIMI
c290: 54 20 63 6c 61 75 73 65 20 6f 6e 20 0a 20 20 5b  T clause on .  [
c2a0: 55 50 44 41 54 45 5d 20 61 6e 64 20 5b 44 45 4c  UPDATE] and [DEL
c2b0: 45 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e  ETE] statements.
c2c0: 0a 0a 20 20 3c 70 3e 49 66 20 74 68 69 73 20 6f  ..  <p>If this o
c2d0: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
c2e0: 2c 20 74 68 65 6e 20 69 74 20 6d 75 73 74 20 61  , then it must a
c2f0: 6c 73 6f 20 62 65 20 0a 20 20 64 65 66 69 6e 65  lso be .  define
c300: 64 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65  d when using the
c310: 20 27 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f   'lemon' tool to
c320: 20 67 65 6e 65 72 61 74 65 20 61 20 70 61 72 73   generate a pars
c330: 65 2e 63 0a 20 20 66 69 6c 65 2e 20 42 65 63 61  e.c.  file. Beca
c340: 75 73 65 20 6f 66 20 74 68 69 73 2c 20 74 68 69  use of this, thi
c350: 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20 6f 6e 6c  s option may onl
c360: 79 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 74  y be used when t
c370: 68 65 20 6c 69 62 72 61 72 79 20 69 73 20 62 75  he library is bu
c380: 69 6c 74 0a 20 20 66 72 6f 6d 20 73 6f 75 72 63  ilt.  from sourc
c390: 65 2c 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20  e, not from the 
c3a0: 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f  [amalgamation] o
c3b0: 72 20 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65  r from the colle
c3c0: 63 74 69 6f 6e 20 6f 66 0a 20 20 70 72 65 2d 70  ction of.  pre-p
c3d0: 61 63 6b 61 67 65 64 20 43 20 66 69 6c 65 73 20  ackaged C files 
c3e0: 70 72 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e  provided for non
c3f0: 2d 55 6e 69 78 20 6c 69 6b 65 20 70 6c 61 74 66  -Unix like platf
c400: 6f 72 6d 73 20 6f 6e 20 74 68 65 20 77 65 62 73  orms on the webs
c410: 69 74 65 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43  ite..  </p>.}..C
c420: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
c430: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b  QLITE_ENABLE_UNK
c440: 4e 4f 57 4e 5f 53 51 4c 5f 46 55 4e 43 54 49 4f  NOWN_SQL_FUNCTIO
c450: 4e 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 65 20  N} {.  When the 
c460: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e  SQLITE_ENABLE_UN
c470: 4b 4e 4f 57 4e 5f 53 51 4c 5f 46 55 4e 43 54 49  KNOWN_SQL_FUNCTI
c480: 4f 4e 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  ON compile-time 
c490: 6f 70 74 69 6f 6e 20 69 73 0a 20 20 61 63 74 69  option is.  acti
c4a0: 76 61 74 65 64 2c 20 53 51 4c 69 74 65 20 77 69  vated, SQLite wi
c4b0: 6c 6c 20 73 75 70 70 72 65 73 73 20 22 75 6e 6b  ll suppress "unk
c4c0: 6e 6f 77 6e 20 66 75 6e 63 74 69 6f 6e 22 20 65  nown function" e
c4d0: 72 72 6f 72 73 20 77 68 65 6e 20 72 75 6e 6e 69  rrors when runni
c4e0: 6e 67 0a 20 20 61 6e 20 5b 45 58 50 4c 41 49 4e  ng.  an [EXPLAIN
c4f0: 5d 20 6f 72 20 5b 45 58 50 4c 41 49 4e 20 51 55  ] or [EXPLAIN QU
c500: 45 52 59 20 50 4c 41 4e 5d 2e 20 20 49 6e 73 74  ERY PLAN].  Inst
c510: 65 61 64 20 6f 66 20 74 68 72 6f 77 69 6e 67 20  ead of throwing 
c520: 61 6e 20 65 72 72 6f 72 2c 0a 20 20 53 51 4c 69  an error,.  SQLi
c530: 74 65 20 77 69 6c 6c 20 69 6e 73 65 72 74 20 61  te will insert a
c540: 20 73 75 62 73 74 69 74 75 74 65 20 6e 6f 2d 6f   substitute no-o
c550: 70 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 64  p function named
c560: 20 22 75 6e 6b 6e 6f 77 6e 28 29 22 2e 0a 20 20   "unknown()"..  
c570: 54 68 65 20 73 75 62 73 74 69 74 75 74 69 6f 6e  The substitution
c580: 20 6f 66 20 22 75 6e 6b 6e 6f 77 6e 28 29 22 20   of "unknown()" 
c590: 69 6e 20 70 6c 61 63 65 20 6f 66 20 75 6e 72 65  in place of unre
c5a0: 63 6f 67 6e 69 7a 65 64 20 66 75 6e 63 74 69 6f  cognized functio
c5b0: 6e 73 0a 20 20 6f 6e 6c 79 20 6f 63 63 75 72 73  ns.  only occurs
c5c0: 20 6f 6e 20 5b 45 58 50 4c 41 49 4e 5d 20 61 6e   on [EXPLAIN] an
c5d0: 64 20 5b 45 58 50 4c 41 49 4e 20 51 55 45 52 59  d [EXPLAIN QUERY
c5e0: 20 50 4c 41 4e 5d 2c 20 6e 6f 74 20 6f 6e 20 6f   PLAN], not on o
c5f0: 72 64 69 6e 61 72 79 0a 20 20 73 74 61 74 65 6d  rdinary.  statem
c600: 65 6e 74 73 2e 0a 20 20 3c 70 3e 0a 20 20 57 68  ents..  <p>.  Wh
c610: 65 6e 20 75 73 65 64 20 69 6e 20 74 68 65 20 5b  en used in the [
c620: 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65  command-line she
c630: 6c 6c 5d 2c 20 74 68 65 0a 20 20 53 51 4c 49 54  ll], the.  SQLIT
c640: 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e  E_ENABLE_UNKNOWN
c650: 5f 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 20 66 65  _SQL_FUNCTION fe
c660: 61 74 75 72 65 20 61 6c 6c 6f 77 73 20 53 51 4c  ature allows SQL
c670: 20 74 65 78 74 20 74 68 61 74 20 63 6f 6e 74 61   text that conta
c680: 69 6e 73 0a 20 20 61 70 70 6c 69 63 61 74 69 6f  ins.  applicatio
c690: 6e 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69  n-defined functi
c6a0: 6f 6e 73 20 74 6f 20 62 65 20 70 61 73 74 65 64  ons to be pasted
c6b0: 20 69 6e 74 6f 20 74 68 65 20 73 68 65 6c 6c 20   into the shell 
c6c0: 66 6f 72 20 0a 20 20 61 6e 61 6c 79 73 69 73 20  for .  analysis 
c6d0: 61 6e 64 20 64 65 62 75 67 67 69 6e 67 20 77 69  and debugging wi
c6e0: 74 68 6f 75 74 20 68 61 76 69 6e 67 20 74 6f 20  thout having to 
c6f0: 63 72 65 61 74 65 20 61 6e 64 20 6c 6f 61 64 20  create and load 
c700: 61 6e 0a 20 20 65 78 74 65 6e 73 69 6f 6e 20 74  an.  extension t
c710: 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74  hat implements t
c720: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64  he application-d
c730: 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 73  efined functions
c740: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
c750: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
c760: 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46 59  LE_UNLOCK_NOTIFY
c770: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
c780: 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20 5b 73  n enables the [s
c790: 71 6c 69 74 65 33 5f 75 6e 6c 6f 63 6b 5f 6e 6f  qlite3_unlock_no
c7a0: 74 69 66 79 28 29 5d 20 69 6e 74 65 72 66 61 63  tify()] interfac
c7b0: 65 20 61 6e 64 0a 20 20 69 74 73 20 61 73 73 6f  e and.  its asso
c7c0: 63 69 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 61  ciated functiona
c7d0: 6c 69 74 79 2e 20 20 53 65 65 20 74 68 65 20 64  lity.  See the d
c7e0: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 74 69 74  ocumentation tit
c7f0: 6c 65 64 0a 20 20 5b 55 73 69 6e 67 20 74 68 65  led.  [Using the
c800: 20 53 51 4c 69 74 65 20 55 6e 6c 6f 63 6b 20 4e   SQLite Unlock N
c810: 6f 74 69 66 69 63 61 74 69 6f 6e 20 46 65 61 74  otification Feat
c820: 75 72 65 5d 20 66 6f 72 20 61 64 64 69 74 69 6f  ure] for additio
c830: 6e 61 6c 0a 20 20 69 6e 66 6f 72 6d 61 74 69 6f  nal.  informatio
c840: 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  n..}..COMPILE_OP
c850: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 4f 55  TION {SQLITE_SOU
c860: 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69 73 20 6f  NDEX} {.  This o
c870: 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68  ption enables th
c880: 65 20 5b 73 6f 75 6e 64 65 78 28 29 20 53 51 4c  e [soundex() SQL
c890: 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 7d 0a 0a 43   function]..}..C
c8a0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
c8b0: 51 4c 49 54 45 5f 55 53 45 5f 41 4c 4c 4f 43 41  QLITE_USE_ALLOCA
c8c0: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70  } {.  If this op
c8d0: 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2c  tion is enabled,
c8e0: 20 74 68 65 6e 20 74 68 65 20 61 6c 6c 6f 63 61   then the alloca
c8f0: 28 29 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  () memory alloca
c900: 74 6f 72 20 77 69 6c 6c 20 62 65 0a 20 20 75 73  tor will be.  us
c910: 65 64 20 69 6e 20 61 20 66 65 77 20 73 69 74 75  ed in a few situ
c920: 61 74 69 6f 6e 73 20 77 68 65 72 65 20 69 74 20  ations where it 
c930: 69 73 20 61 70 70 72 6f 70 72 69 61 74 65 2e 20  is appropriate. 
c940: 20 54 68 69 73 20 72 65 73 75 6c 74 73 20 69 6e   This results in
c950: 20 61 20 73 6c 69 67 68 74 6c 79 0a 20 20 73 6d   a slightly.  sm
c960: 61 6c 6c 65 72 20 61 6e 64 20 66 61 73 74 65 72  aller and faster
c970: 20 62 69 6e 61 72 79 2e 20 20 54 68 65 20 53 51   binary.  The SQ
c980: 4c 49 54 45 5f 55 53 45 5f 41 4c 4c 4f 43 41 20  LITE_USE_ALLOCA 
c990: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 6e 6c  compile-time onl
c9a0: 79 20 6f 6e 6c 79 20 0a 20 20 77 6f 72 6b 73 2c  y only .  works,
c9b0: 20 6f 66 20 63 6f 75 72 73 65 2c 20 6f 6e 20 73   of course, on s
c9c0: 79 73 74 65 6d 73 20 74 68 61 74 20 73 75 70 70  ystems that supp
c9d0: 6f 72 74 20 61 6c 6c 6f 63 61 28 29 2e 0a 7d 0a  ort alloca()..}.
c9e0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
c9f0: 7b 53 51 4c 49 54 45 5f 55 53 45 5f 46 43 4e 54  {SQLITE_USE_FCNT
ca00: 4c 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54 68 69  L_TRACE} {.  Thi
ca10: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
ca20: 53 51 4c 69 74 65 20 74 6f 20 69 73 73 75 65 20  SQLite to issue 
ca30: 65 78 74 72 61 20 5b 53 51 4c 49 54 45 5f 46 43  extra [SQLITE_FC
ca40: 4e 54 4c 5f 54 52 41 43 45 5d 20 66 69 6c 65 20  NTL_TRACE] file 
ca50: 63 6f 6e 74 72 6f 6c 73 0a 20 20 74 6f 20 70 72  controls.  to pr
ca60: 6f 76 69 64 65 20 73 75 70 70 6c 65 6d 65 6e 74  ovide supplement
ca70: 61 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  ary information 
ca80: 74 6f 20 74 68 65 20 56 46 53 2e 20 20 54 68 65  to the VFS.  The
ca90: 20 22 76 66 73 6c 6f 67 2e 63 22 20 65 78 74 65   "vfslog.c" exte
caa0: 6e 73 69 6f 6e 0a 20 20 6d 61 6b 65 73 20 75 73  nsion.  makes us
cab0: 65 20 6f 66 20 74 68 69 73 20 74 6f 20 70 72 6f  e of this to pro
cac0: 76 69 64 65 20 65 6e 68 61 6e 63 65 64 20 6c 6f  vide enhanced lo
cad0: 67 73 20 6f 66 20 56 46 53 20 61 63 74 69 76 69  gs of VFS activi
cae0: 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ty..}..COMPILE_O
caf0: 50 54 49 4f 4e 20 7b 59 59 54 52 41 43 4b 4d 41  PTION {YYTRACKMA
cb00: 58 53 54 41 43 4b 44 45 50 54 48 7d 20 7b 0a 20  XSTACKDEPTH} {. 
cb10: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
cb20: 73 65 73 20 74 68 65 20 4c 41 4c 52 28 31 29 20  ses the LALR(1) 
cb30: 70 61 72 73 65 72 20 73 74 61 63 6b 20 64 65 70  parser stack dep
cb40: 74 68 20 74 6f 20 62 65 20 74 72 61 63 6b 65 64  th to be tracked
cb50: 0a 20 20 61 6e 64 20 72 65 70 6f 72 74 65 64 20  .  and reported 
cb60: 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74  using the [sqlit
cb70: 65 33 5f 73 74 61 74 75 73 5d 28 5b 53 51 4c 49  e3_status]([SQLI
cb80: 54 45 5f 53 54 41 54 55 53 5f 50 41 52 53 45 52  TE_STATUS_PARSER
cb90: 5f 53 54 41 43 4b 5d 2c 2e 2e 2e 29 0a 20 20 69  _STACK],...).  i
cba0: 6e 74 65 72 66 61 63 65 2e 20 20 53 51 4c 69 74  nterface.  SQLit
cbb0: 65 27 73 20 4c 41 4c 52 28 31 29 20 70 61 72 73  e's LALR(1) pars
cbc0: 65 72 20 68 61 73 20 61 20 66 69 78 65 64 20 73  er has a fixed s
cbd0: 74 61 63 6b 20 64 65 70 74 68 0a 20 20 28 64 65  tack depth.  (de
cbe0: 74 65 72 6d 69 6e 65 64 20 61 74 20 63 6f 6d 70  termined at comp
cbf0: 69 6c 65 2d 74 69 6d 65 20 75 73 69 6e 67 20 74  ile-time using t
cc00: 68 65 20 5b 59 59 53 54 41 43 4b 44 45 50 54 48  he [YYSTACKDEPTH
cc10: 5d 20 6f 70 74 69 6f 6e 73 29 2e 0a 20 20 54 68  ] options)..  Th
cc20: 69 73 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65  is option can be
cc30: 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 64 65   used to help de
cc40: 74 65 72 6d 69 6e 65 20 69 66 20 61 6e 20 61 70  termine if an ap
cc50: 70 6c 69 63 61 74 69 6f 6e 20 69 73 0a 20 20 67  plication is.  g
cc60: 65 74 74 69 6e 67 20 63 6c 6f 73 65 20 74 6f 20  etting close to 
cc70: 65 78 63 65 65 64 69 6e 67 20 74 68 65 20 6d 61  exceeding the ma
cc80: 78 69 6d 75 6d 20 4c 41 4c 52 28 31 29 20 73 74  ximum LALR(1) st
cc90: 61 63 6b 20 64 65 70 74 68 2e 0a 7d 0a 3c 2f 74  ack depth..}.</t
cca0: 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 64 69  cl>..<a name="di
ccb0: 73 61 62 6c 65 66 65 61 74 75 72 65 73 22 3e 3c  sablefeatures"><
ccc0: 2f 61 3e 0a 3c 68 31 3e 20 4f 70 74 69 6f 6e 73  /a>.<h1> Options
ccd0: 20 54 6f 20 44 69 73 61 62 6c 65 20 46 65 61 74   To Disable Feat
cce0: 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20 54 75  ures Normally Tu
ccf0: 72 6e 65 64 20 4f 6e 3c 2f 68 31 3e 0a 0a 3c 74  rned On</h1>..<t
cd00: 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  cl>.COMPILE_OPTI
cd10: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42  ON {SQLITE_DISAB
cd20: 4c 45 5f 4c 46 53 7d 20 7b 0a 20 20 49 66 20 74  LE_LFS} {.  If t
cd30: 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73  his C-preprocess
cd40: 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  or macro is defi
cd50: 6e 65 64 2c 20 6c 61 72 67 65 20 66 69 6c 65 20  ned, large file 
cd60: 73 75 70 70 6f 72 74 0a 20 20 69 73 20 64 69 73  support.  is dis
cd70: 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  abled..}..COMPIL
cd80: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
cd90: 5f 44 49 53 41 42 4c 45 5f 44 49 52 53 59 4e 43  _DISABLE_DIRSYNC
cda0: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d  } {.  If this C-
cdb0: 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63  preprocessor mac
cdc0: 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 64  ro is defined, d
cdd0: 69 72 65 63 74 6f 72 79 20 73 79 6e 63 73 0a 20  irectory syncs. 
cde0: 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e 20 20   are disabled.  
cdf0: 53 51 4c 69 74 65 20 74 79 70 69 63 61 6c 6c 79  SQLite typically
ce00: 20 61 74 74 65 6d 70 74 73 20 74 6f 20 73 79 6e   attempts to syn
ce10: 63 20 74 68 65 20 70 61 72 65 6e 74 0a 20 20 64  c the parent.  d
ce20: 69 72 65 63 74 6f 72 79 20 77 68 65 6e 20 61 20  irectory when a 
ce30: 66 69 6c 65 20 69 73 20 64 65 6c 65 74 65 64 20  file is deleted 
ce40: 74 6f 20 65 6e 73 75 72 65 20 74 68 65 20 64 69  to ensure the di
ce50: 72 65 63 74 6f 72 79 0a 20 20 65 6e 74 72 69 65  rectory.  entrie
ce60: 73 20 61 72 65 20 75 70 64 61 74 65 64 20 69 6d  s are updated im
ce70: 6d 65 64 69 61 74 65 6c 79 20 6f 6e 20 64 69 73  mediately on dis
ce80: 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  k..}..COMPILE_OP
ce90: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53  TION {SQLITE_DIS
cea0: 41 42 4c 45 5f 46 54 53 33 5f 55 4e 49 43 4f 44  ABLE_FTS3_UNICOD
ceb0: 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43  E} {.  If this C
cec0: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
ced0: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20  cro is defined, 
cee0: 74 68 65 20 5b 75 6e 69 63 6f 64 65 36 31 5d 20  the [unicode61] 
cef0: 74 6f 6b 65 6e 69 7a 65 72 0a 20 20 69 6e 20 5b  tokenizer.  in [
cf00: 46 54 53 33 5d 20 69 73 20 6f 6d 69 74 74 65 64  FTS3] is omitted
cf10: 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 20   from the build 
cf20: 61 6e 64 20 69 73 20 75 6e 61 76 61 69 6c 61 62  and is unavailab
cf30: 6c 65 20 74 6f 20 0a 20 20 61 70 70 6c 69 63 61  le to .  applica
cf40: 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  tions..}..COMPIL
cf50: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
cf60: 5f 44 49 53 41 42 4c 45 5f 46 54 53 34 5f 44 45  _DISABLE_FTS4_DE
cf70: 46 45 52 52 45 44 7d 20 7b 0a 20 20 49 66 20 74  FERRED} {.  If t
cf80: 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73  his C-preprocess
cf90: 6f 72 20 6d 61 63 72 6f 20 64 69 73 61 62 6c 65  or macro disable
cfa0: 73 20 74 68 65 20 22 64 65 66 65 72 72 65 64 20  s the "deferred 
cfb0: 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69 7a 61 74  token" optimizat
cfc0: 69 6f 6e 0a 20 20 69 6e 20 5b 46 54 53 34 5d 2e  ion.  in [FTS4].
cfd0: 20 20 54 68 65 20 22 64 65 66 65 72 72 65 64 20    The "deferred 
cfe0: 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69 7a 61 74  token" optimizat
cff0: 69 6f 6e 20 61 76 6f 69 64 73 20 6c 6f 61 64 69  ion avoids loadi
d000: 6e 67 20 6d 61 73 73 69 76 65 0a 20 20 70 6f 73  ng massive.  pos
d010: 74 69 6e 67 20 6c 69 73 74 73 20 66 6f 72 20 74  ting lists for t
d020: 65 72 6d 73 20 74 68 61 74 20 61 72 65 20 69 6e  erms that are in
d030: 20 6d 6f 73 74 20 64 6f 63 75 6d 65 6e 74 73 20   most documents 
d040: 6f 66 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f  of the collectio
d050: 6e 0a 20 20 61 6e 64 20 69 6e 73 74 65 61 64 20  n.  and instead 
d060: 73 69 6d 70 6c 79 20 73 63 61 6e 73 20 66 6f 72  simply scans for
d070: 20 74 68 6f 73 65 20 74 6f 6b 65 6e 73 20 69 6e   those tokens in
d080: 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 20 73 6f   the document so
d090: 75 72 63 65 2e 20 20 5b 46 54 53 34 5d 0a 20 20  urce.  [FTS4].  
d0a0: 73 68 6f 75 6c 64 20 67 65 74 20 65 78 61 63 74  should get exact
d0b0: 6c 79 20 74 68 65 20 73 61 6d 65 20 61 6e 73 77  ly the same answ
d0c0: 65 72 20 62 6f 74 68 20 77 69 74 68 20 61 6e 64  er both with and
d0d0: 20 77 69 74 68 6f 75 74 20 74 68 69 73 20 6f 70   without this op
d0e0: 74 69 6d 69 7a 61 74 69 6f 6e 2e 0a 7d 0a 0a 43  timization..}..C
d0f0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
d100: 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 49 4e  QLITE_DISABLE_IN
d110: 54 52 49 4e 53 49 43 7d 20 7b 0a 20 20 54 68 69  TRINSIC} {.  Thi
d120: 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65  s option disable
d130: 73 20 74 68 65 20 75 73 65 20 6f 66 20 63 6f 6d  s the use of com
d140: 70 69 6c 65 72 2d 73 70 65 63 69 66 69 63 20 62  piler-specific b
d150: 75 69 6c 74 2d 69 6e 20 66 75 6e 63 74 69 6f 6e  uilt-in function
d160: 73 0a 20 20 73 75 63 68 20 61 73 20 5f 5f 62 75  s.  such as __bu
d170: 69 6c 74 69 6e 5f 62 73 77 61 70 33 32 28 29 20  iltin_bswap32() 
d180: 61 6e 64 20 5f 5f 62 75 69 6c 74 69 6e 5f 61 64  and __builtin_ad
d190: 64 5f 6f 76 65 72 66 6c 6f 77 28 29 20 69 6e 20  d_overflow() in 
d1a0: 47 43 43 20 61 6e 64 20 43 6c 61 6e 67 2c 20 0a  GCC and Clang, .
d1b0: 20 20 6f 72 20 5f 62 79 74 65 73 77 61 70 5f 75    or _byteswap_u
d1c0: 6c 6f 6e 67 28 29 20 61 6e 64 20 5f 52 65 61 64  long() and _Read
d1d0: 57 72 69 74 65 42 61 72 72 69 65 72 28 29 20 77  WriteBarrier() w
d1e0: 69 74 68 20 4d 53 56 43 2e 20 20 0a 7d 0a 3c 2f  ith MSVC.  .}.</
d1f0: 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a 20 20 68 64  tcl>..<tcl>.  hd
d200: 5f 66 72 61 67 6d 65 6e 74 20 22 6f 6d 69 74 66  _fragment "omitf
d210: 65 61 74 75 72 65 73 22 0a 20 20 68 64 5f 6b 65  eatures".  hd_ke
d220: 79 77 6f 72 64 73 20 22 6f 6d 69 74 66 65 61 74  ywords "omitfeat
d230: 75 72 65 73 22 0a 3c 2f 74 63 6c 3e 0a 3c 68 31  ures".</tcl>.<h1
d240: 3e 20 4f 70 74 69 6f 6e 73 20 54 6f 20 4f 6d 69  > Options To Omi
d250: 74 20 46 65 61 74 75 72 65 73 3c 2f 68 31 3e 0a  t Features</h1>.
d260: 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e  .<p>The followin
d270: 67 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20 62 65  g options can be
d280: 20 75 73 65 64 20 74 6f 20 0a 5b 72 65 6c 66 6f   used to .[relfo
d290: 6f 74 70 72 69 6e 74 20 7c 20 72 65 64 75 63 65  otprint | reduce
d2a0: 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65   the size of the
d2b0: 20 63 6f 6d 70 69 6c 65 64 20 6c 69 62 72 61 72   compiled librar
d2c0: 79 5d 0a 62 79 20 6f 6d 69 74 74 69 6e 67 20 75  y].by omitting u
d2d0: 6e 75 73 65 64 20 66 65 61 74 75 72 65 73 2e 20  nused features. 
d2e0: 54 68 69 73 20 69 73 20 70 72 6f 62 61 62 6c 79  This is probably
d2f0: 20 6f 6e 6c 79 20 75 73 65 66 75 6c 0a 69 6e 20   only useful.in 
d300: 65 6d 62 65 64 64 65 64 20 73 79 73 74 65 6d 73  embedded systems
d310: 20 77 68 65 72 65 20 73 70 61 63 65 20 69 73 20   where space is 
d320: 65 73 70 65 63 69 61 6c 6c 79 20 74 69 67 68 74  especially tight
d330: 2c 20 61 73 20 65 76 65 6e 20 77 69 74 68 20 61  , as even with a
d340: 6c 6c 0a 66 65 61 74 75 72 65 73 20 69 6e 63 6c  ll.features incl
d350: 75 64 65 64 20 74 68 65 20 53 51 4c 69 74 65 20  uded the SQLite 
d360: 6c 69 62 72 61 72 79 20 69 73 20 72 65 6c 61 74  library is relat
d370: 69 76 65 6c 79 20 73 6d 61 6c 6c 2e 20 44 6f 6e  ively small. Don
d380: 27 74 20 66 6f 72 67 65 74 0a 74 6f 20 74 65 6c  't forget.to tel
d390: 6c 20 79 6f 75 72 20 63 6f 6d 70 69 6c 65 72 20  l your compiler 
d3a0: 74 6f 20 6f 70 74 69 6d 69 7a 65 20 66 6f 72 20  to optimize for 
d3b0: 62 69 6e 61 72 79 20 73 69 7a 65 21 20 28 74 68  binary size! (th
d3c0: 65 20 2d 4f 73 20 6f 70 74 69 6f 6e 20 69 66 0a  e -Os option if.
d3d0: 75 73 69 6e 67 20 47 43 43 29 2e 20 20 54 65 6c  using GCC).  Tel
d3e0: 6c 69 6e 67 20 79 6f 75 72 20 63 6f 6d 70 69 6c  ling your compil
d3f0: 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 66  er to optimize f
d400: 6f 72 20 73 69 7a 65 20 75 73 75 61 6c 6c 79 20  or size usually 
d410: 68 61 73 0a 61 20 6d 75 63 68 20 6c 61 72 67 65  has.a much large
d420: 72 20 69 6d 70 61 63 74 20 6f 6e 20 6c 69 62 72  r impact on libr
d430: 61 72 79 20 66 6f 6f 74 70 72 69 6e 74 20 74 68  ary footprint th
d440: 61 6e 20 65 6d 70 6c 6f 79 69 6e 67 20 61 6e 79  an employing any
d450: 20 6f 66 20 74 68 65 73 65 0a 63 6f 6d 70 69 6c   of these.compil
d460: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 2e 20  e-time options. 
d470: 20 59 6f 75 20 73 68 6f 75 6c 64 20 61 6c 73 6f   You should also
d480: 20 76 65 72 69 66 79 20 74 68 61 74 20 0a 3c 61   verify that .<a
d490: 20 68 72 65 66 3d 22 23 64 65 62 75 67 6f 70 74   href="#debugopt
d4a0: 69 6f 6e 73 22 3e 64 65 62 75 67 67 69 6e 67 20  ions">debugging 
d4b0: 6f 70 74 69 6f 6e 73 3c 2f 61 3e 20 61 72 65 20  options</a> are 
d4c0: 64 69 73 61 62 6c 65 64 2e 3c 2f 70 3e 0a 0a 3c  disabled.</p>..<
d4d0: 70 3e 54 68 65 20 6d 61 63 72 6f 73 20 69 6e 20  p>The macros in 
d4e0: 74 68 69 73 20 73 65 63 74 69 6f 6e 20 64 6f 20  this section do 
d4f0: 6e 6f 74 20 72 65 71 75 69 72 65 20 76 61 6c 75  not require valu
d500: 65 73 2e 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e  es. The followin
d510: 67 20 0a 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 73  g .compilation s
d520: 77 69 74 63 68 65 73 20 61 6c 6c 20 68 61 76 65  witches all have
d530: 20 74 68 65 20 73 61 6d 65 20 65 66 66 65 63 74   the same effect
d540: 3a 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f  :<br>.-DSQLITE_O
d550: 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3c 62  MIT_ALTERTABLE<b
d560: 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54  r>.-DSQLITE_OMIT
d570: 5f 41 4c 54 45 52 54 41 42 4c 45 3d 31 3c 62 72  _ALTERTABLE=1<br
d580: 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  >.-DSQLITE_OMIT_
d590: 41 4c 54 45 52 54 41 42 4c 45 3d 30 0a 3c 2f 70  ALTERTABLE=0.</p
d5a0: 3e 0a 0a 3c 70 3e 49 66 20 61 6e 79 20 6f 66 20  >..<p>If any of 
d5b0: 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 61 72  these options ar
d5c0: 65 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20  e defined, then 
d5d0: 74 68 65 20 73 61 6d 65 20 73 65 74 20 6f 66 20  the same set of 
d5e0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 0a 6f 70  SQLITE_OMIT_*.op
d5f0: 74 69 6f 6e 73 20 6d 75 73 74 20 61 6c 73 6f 20  tions must also 
d600: 62 65 20 64 65 66 69 6e 65 64 20 77 68 65 6e 20  be defined when 
d610: 75 73 69 6e 67 20 74 68 65 20 27 6c 65 6d 6f 6e  using the 'lemon
d620: 27 20 74 6f 6f 6c 20 74 6f 20 67 65 6e 65 72 61  ' tool to genera
d630: 74 65 20 74 68 65 0a 70 61 72 73 65 2e 63 20 66  te the.parse.c f
d640: 69 6c 65 20 61 6e 64 20 77 68 65 6e 20 63 6f 6d  ile and when com
d650: 70 69 6c 69 6e 67 20 74 68 65 20 27 6d 6b 6b 65  piling the 'mkke
d660: 79 77 6f 72 64 68 61 73 68 27 20 74 6f 6f 6c 20  ywordhash' tool 
d670: 77 68 69 63 68 20 67 65 6e 65 72 61 74 65 73 20  which generates 
d680: 0a 74 68 65 20 6b 65 79 77 6f 72 64 68 61 73 68  .the keywordhash
d690: 2e 68 20 66 69 6c 65 2e 0a 42 65 63 61 75 73 65  .h file..Because
d6a0: 20 6f 66 20 74 68 69 73 2c 20 74 68 65 73 65 20   of this, these 
d6b0: 6f 70 74 69 6f 6e 73 20 6d 61 79 20 6f 6e 6c 79  options may only
d6c0: 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 74 68   be used when th
d6d0: 65 20 6c 69 62 72 61 72 79 20 69 73 20 62 75 69  e library is bui
d6e0: 6c 74 0a 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61  lt.from canonica
d6f0: 6c 20 73 6f 75 72 63 65 2c 20 6e 6f 74 20 66 72  l source, not fr
d700: 6f 6d 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61  om the [amalgama
d710: 74 69 6f 6e 5d 2e 0a 53 6f 6d 65 20 53 51 4c 49  tion]..Some SQLI
d720: 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e  TE_OMIT_* option
d730: 73 20 6d 69 67 68 74 20 77 6f 72 6b 2c 20 6f 72  s might work, or
d740: 20 61 70 70 65 61 72 20 74 6f 20 77 6f 72 6b 2c   appear to work,
d750: 20 77 68 65 6e 20 75 73 65 64 20 77 69 74 68 0a   when used with.
d760: 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f  the [amalgamatio
d770: 6e 5d 2e 20 20 42 75 74 20 74 68 69 73 20 69 73  n].  But this is
d780: 20 6e 6f 74 20 67 75 61 72 61 6e 74 65 65 64 2e   not guaranteed.
d790: 20 20 49 6e 20 67 65 6e 65 72 61 6c 2c 20 61 6c    In general, al
d7a0: 77 61 79 73 20 63 6f 6d 70 69 6c 65 0a 66 72 6f  ways compile.fro
d7b0: 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75 72  m canonical sour
d7c0: 63 65 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  ces in order to 
d7d0: 74 61 6b 65 20 61 64 76 61 6e 74 61 67 65 20 6f  take advantage o
d7e0: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  f SQLITE_OMIT_* 
d7f0: 6f 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 0a 3c  options..</p>..<
d800: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c  blockquote>.<i><
d810: 62 3e 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65  b>Important Note
d820: 3a 3c 2f 62 3e 20 54 68 65 20 53 51 4c 49 54 45  :</b> The SQLITE
d830: 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20  _OMIT_* options 
d840: 6d 61 79 20 6e 6f 74 20 77 6f 72 6b 20 77 69 74  may not work wit
d850: 68 20 74 68 65 0a 5b 61 6d 61 6c 67 61 6d 61 74  h the.[amalgamat
d860: 69 6f 6e 5d 2e 20 20 53 51 4c 49 54 45 5f 4f 4d  ion].  SQLITE_OM
d870: 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  IT_* compile-tim
d880: 65 0a 6f 70 74 69 6f 6e 73 20 75 73 75 61 6c 6c  e.options usuall
d890: 79 20 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79  y work correctly
d8a0: 20 6f 6e 6c 79 20 77 68 65 6e 20 53 51 4c 69 74   only when SQLit
d8b0: 65 20 69 73 20 62 75 69 6c 74 20 66 72 6f 6d 20  e is built from 
d8c0: 63 61 6e 6f 6e 69 63 61 6c 20 0a 73 6f 75 72 63  canonical .sourc
d8d0: 65 20 66 69 6c 65 73 2e 0a 3c 2f 69 3e 0a 3c 2f  e files..</i>.</
d8e0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 0a 3c 70  blockquote>...<p
d8f0: 3e 53 70 65 63 69 61 6c 20 76 65 72 73 69 6f 6e  >Special version
d900: 73 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20  s of the SQLite 
d910: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20 74 68 61  amalgamation tha
d920: 74 20 64 6f 20 77 6f 72 6b 20 77 69 74 68 20 61  t do work with a
d930: 0a 70 72 65 64 65 74 65 72 6d 69 6e 65 64 20 73  .predetermined s
d940: 65 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49  et of SQLITE_OMI
d950: 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20  T_* options can 
d960: 62 65 20 67 65 6e 65 72 61 74 65 64 2e 20 20 54  be generated.  T
d970: 6f 20 64 6f 20 73 6f 2c 0a 6d 61 6b 65 20 61 20  o do so,.make a 
d980: 63 6f 70 79 20 6f 66 20 74 68 65 20 4d 61 6b 65  copy of the Make
d990: 66 69 6c 65 2e 6c 69 6e 75 78 2d 67 63 63 20 6d  file.linux-gcc m
d9a0: 61 6b 65 66 69 6c 65 20 74 65 6d 70 6c 61 74 65  akefile template
d9b0: 20 69 6e 20 74 68 65 20 63 61 6e 6f 6e 69 63 61   in the canonica
d9c0: 6c 0a 73 6f 75 72 63 65 20 63 6f 64 65 20 64 69  l.source code di
d9d0: 73 74 72 69 62 75 74 69 6f 6e 2e 20 20 43 68 61  stribution.  Cha
d9e0: 6e 67 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  nge the name of 
d9f0: 79 6f 75 72 20 63 6f 70 79 20 74 6f 20 73 69 6d  your copy to sim
da00: 70 6c 79 20 22 4d 61 6b 65 66 69 6c 65 22 2e 0a  ply "Makefile"..
da10: 54 68 65 6e 20 65 64 69 74 20 22 4d 61 6b 65 66  Then edit "Makef
da20: 69 6c 65 22 20 74 6f 20 73 65 74 20 75 70 20 61  ile" to set up a
da30: 70 70 72 6f 70 72 69 61 74 65 20 63 6f 6d 70 69  ppropriate compi
da40: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 2e  le-time options.
da50: 20 20 54 68 65 6e 0a 74 79 70 65 3a 0a 3c 63 6f    Then.type:.<co
da60: 64 65 62 6c 6f 63 6b 3e 0a 6d 61 6b 65 20 63 6c  deblock>.make cl
da70: 65 61 6e 3b 20 6d 61 6b 65 20 73 71 6c 69 74 65  ean; make sqlite
da80: 33 2e 63 0a 3c 2f 63 6f 64 65 62 6c 6f 63 6b 3e  3.c.</codeblock>
da90: 0a 3c 70 3e 54 68 65 20 72 65 73 75 6c 74 69 6e  .<p>The resultin
daa0: 67 20 22 73 71 6c 69 74 65 33 2e 63 22 20 61 6d  g "sqlite3.c" am
dab0: 61 6c 67 61 6d 61 74 69 6f 6e 20 63 6f 64 65 20  algamation code 
dac0: 66 69 6c 65 20 28 61 6e 64 20 69 74 73 20 61 73  file (and its as
dad0: 73 6f 63 69 61 74 65 64 0a 68 65 61 64 65 72 20  sociated.header 
dae0: 66 69 6c 65 20 22 73 71 6c 69 74 65 33 2e 68 22  file "sqlite3.h"
daf0: 29 20 63 61 6e 20 74 68 65 6e 20 62 65 20 6d 6f  ) can then be mo
db00: 76 65 64 20 74 6f 20 61 20 6e 6f 6e 2d 75 6e 69  ved to a non-uni
db10: 78 20 70 6c 61 74 66 6f 72 6d 0a 66 6f 72 20 66  x platform.for f
db20: 69 6e 61 6c 20 63 6f 6d 70 69 6c 61 74 69 6f 6e  inal compilation
db30: 20 75 73 69 6e 67 20 61 20 6e 61 74 69 76 65 20   using a native 
db40: 63 6f 6d 70 69 6c 65 72 2e 3c 2f 70 3e 0a 0a 3c  compiler.</p>..<
db50: 70 3e 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49  p>The SQLITE_OMI
db60: 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 61 72 65 20  T_* options are 
db70: 75 6e 73 75 70 70 6f 72 74 65 64 2e 20 20 42 79  unsupported.  By
db80: 20 74 68 69 73 20 77 65 20 6d 65 61 6e 20 74 68   this we mean th
db90: 61 74 0a 61 6e 20 53 51 4c 49 54 45 5f 4f 4d 49  at.an SQLITE_OMI
dba0: 54 5f 2a 20 6f 70 74 69 6f 6e 20 74 68 61 74 20  T_* option that 
dbb0: 6f 6d 69 74 73 20 63 6f 64 65 20 66 72 6f 6d 20  omits code from 
dbc0: 74 68 65 20 62 75 69 6c 64 20 69 6e 20 74 68 65  the build in the
dbd0: 20 63 75 72 72 65 6e 74 0a 72 65 6c 65 61 73 65   current.release
dbe0: 20 6d 69 67 68 74 20 62 65 63 6f 6d 65 20 61 20   might become a 
dbf0: 6e 6f 2d 6f 70 20 69 6e 20 74 68 65 20 6e 65 78  no-op in the nex
dc00: 74 20 72 65 6c 65 61 73 65 2e 20 20 4f 72 20 74  t release.  Or t
dc10: 68 65 20 6f 74 68 65 72 20 77 61 79 20 61 72 6f  he other way aro
dc20: 75 6e 64 3a 0a 61 6e 20 53 51 4c 49 54 45 5f 4f  und:.an SQLITE_O
dc30: 4d 49 54 5f 2a 20 74 68 61 74 20 69 73 20 61 20  MIT_* that is a 
dc40: 6e 6f 2d 6f 70 20 69 6e 20 74 68 65 20 63 75 72  no-op in the cur
dc50: 72 65 6e 74 20 72 65 6c 65 61 73 65 20 6d 69 67  rent release mig
dc60: 68 74 20 63 61 75 73 65 20 63 6f 64 65 0a 74 6f  ht cause code.to
dc70: 20 62 65 20 65 78 63 6c 75 64 65 64 20 69 6e 20   be excluded in 
dc80: 74 68 65 20 6e 65 78 74 20 72 65 6c 65 61 73 65  the next release
dc90: 2e 20 20 41 6c 73 6f 2c 20 6e 6f 74 20 61 6c 6c  .  Also, not all
dca0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f   SQLITE_OMIT_* o
dcb0: 70 74 69 6f 6e 73 0a 61 72 65 20 74 65 73 74 65  ptions.are teste
dcc0: 64 2e 20 20 53 6f 6d 65 20 53 51 4c 49 54 45 5f  d.  Some SQLITE_
dcd0: 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 6d  OMIT_* options m
dce0: 69 67 68 74 20 63 61 75 73 65 20 53 51 4c 69 74  ight cause SQLit
dcf0: 65 20 74 6f 20 6d 61 6c 66 75 6e 63 74 69 6f 6e  e to malfunction
dd00: 0a 61 6e 64 2f 6f 72 20 70 72 6f 76 69 64 65 20  .and/or provide 
dd10: 69 6e 63 6f 72 72 65 63 74 20 61 6e 73 77 65 72  incorrect answer
dd20: 73 2e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  s...<blockquote>
dd30: 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61 6e 74  .<i><b>Important
dd40: 20 4e 6f 74 65 3a 3c 2f 62 3e 0a 54 68 65 20 53   Note:</b>.The S
dd50: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d  QLITE_OMIT_* com
dd60: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
dd70: 73 20 61 72 65 20 6d 6f 73 74 6c 79 20 75 6e 73  s are mostly uns
dd80: 75 70 70 6f 72 74 65 64 2e 0a 3c 2f 69 3e 3c 2f  upported..</i></
dd90: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
dda0: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72  The following ar
ddb0: 65 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20  e the available 
ddc0: 4f 4d 49 54 20 6f 70 74 69 6f 6e 73 3a 0a 0a 3c  OMIT options:..<
ddd0: 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  tcl>.COMPILE_OPT
dde0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
ddf0: 5f 41 4c 54 45 52 54 41 42 4c 45 7d 20 7b 0a 20  _ALTERTABLE} {. 
de00: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
de10: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  n is defined, th
de20: 65 20 0a 20 20 5b 41 4c 54 45 52 20 54 41 42 4c  e .  [ALTER TABL
de30: 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f  E] command is no
de40: 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68  t included in th
de50: 65 20 0a 20 20 6c 69 62 72 61 72 79 2e 20 45 78  e .  library. Ex
de60: 65 63 75 74 69 6e 67 20 61 6e 20 5b 41 4c 54 45  ecuting an [ALTE
de70: 52 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65  R TABLE] stateme
de80: 6e 74 20 63 61 75 73 65 73 20 61 20 70 61 72 73  nt causes a pars
de90: 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  e error..}..COMP
dea0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
deb0: 54 45 5f 4f 4d 49 54 5f 41 4e 41 4c 59 5a 45 7d  TE_OMIT_ANALYZE}
dec0: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f   {.  When this o
ded0: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
dee0: 2c 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20  , the [ANALYZE] 
def0: 63 6f 6d 6d 61 6e 64 20 69 73 20 6f 6d 69 74 74  command is omitt
df00: 65 64 20 66 72 6f 6d 0a 20 20 74 68 65 20 62 75  ed from.  the bu
df10: 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ild..}..COMPILE_
df20: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
df30: 4d 49 54 5f 41 54 54 41 43 48 7d 20 7b 0a 20 20  MIT_ATTACH} {.  
df40: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
df50: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
df60: 20 5b 41 54 54 41 43 48 5d 20 61 6e 64 20 5b 44   [ATTACH] and [D
df70: 45 54 41 43 48 5d 20 63 6f 6d 6d 61 6e 64 73 20  ETACH] commands 
df80: 61 72 65 0a 20 20 6f 6d 69 74 74 65 64 20 66 72  are.  omitted fr
df90: 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a  om the build..}.
dfa0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
dfb0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54  {SQLITE_OMIT_AUT
dfc0: 48 4f 52 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20  HORIZATION} {.  
dfd0: 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70  Defining this op
dfe0: 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 61  tion omits the a
dff0: 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 63 61 6c  uthorization cal
e000: 6c 62 61 63 6b 20 66 65 61 74 75 72 65 20 66 72  lback feature fr
e010: 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72 61 72 79  om the.  library
e020: 2e 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  . The [sqlite3_s
e030: 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 29 5d  et_authorizer()]
e040: 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 69 73   API function is
e050: 20 6e 6f 74 20 70 72 65 73 65 6e 74 0a 20 20 69   not present.  i
e060: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 7d  n the library..}
e070: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
e080: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55   {SQLITE_OMIT_AU
e090: 54 4f 49 4e 43 52 45 4d 45 4e 54 7d 20 7b 0a 20  TOINCREMENT} {. 
e0a0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
e0b0: 6f 6d 69 74 73 20 74 68 65 20 5b 41 55 54 4f 49  omits the [AUTOI
e0c0: 4e 43 52 45 4d 45 4e 54 5d 20 66 65 61 74 75 72  NCREMENT] featur
e0d0: 65 2e 20 0a 20 20 57 68 65 6e 20 74 68 69 73 20  e. .  When this 
e0e0: 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  is macro is defi
e0f0: 6e 65 64 2c 20 63 6f 6c 75 6d 6e 73 20 64 65 63  ned, columns dec
e100: 6c 61 72 65 64 20 61 73 20 0a 20 20 22 5b 49 4e  lared as .  "[IN
e110: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
e120: 59 5d 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54  Y] AUTOINCREMENT
e130: 22 0a 20 20 62 65 68 61 76 65 20 69 6e 20 74 68  ".  behave in th
e140: 65 20 73 61 6d 65 20 77 61 79 20 61 73 20 63 6f  e same way as co
e150: 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65 64 20 61  lumns declared a
e160: 73 20 22 5b 49 4e 54 45 47 45 52 20 50 52 49 4d  s "[INTEGER PRIM
e170: 41 52 59 20 4b 45 59 5d 22 20 77 68 65 6e 20 61  ARY KEY]" when a
e180: 20 0a 20 20 4e 55 4c 4c 20 69 73 20 69 6e 73 65   .  NULL is inse
e190: 72 74 65 64 2e 20 54 68 65 20 73 71 6c 69 74 65  rted. The sqlite
e1a0: 5f 73 65 71 75 65 6e 63 65 20 73 79 73 74 65 6d  _sequence system
e1b0: 20 74 61 62 6c 65 20 69 73 20 6e 65 69 74 68 65   table is neithe
e1c0: 72 20 63 72 65 61 74 65 64 2c 20 6e 6f 72 0a 20  r created, nor. 
e1d0: 20 72 65 73 70 65 63 74 65 64 20 69 66 20 69 74   respected if it
e1e0: 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 2e   already exists.
e1f0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
e200: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
e210: 41 55 54 4f 49 4e 49 54 7d 20 7b 0a 20 20 46 6f  AUTOINIT} {.  Fo
e220: 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70  r backwards comp
e230: 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 6f  atibility with o
e240: 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66  lder versions of
e250: 20 53 51 4c 69 74 65 20 74 68 61 74 20 6c 61 63   SQLite that lac
e260: 6b 0a 20 20 74 68 65 20 5b 73 71 6c 69 74 65 33  k.  the [sqlite3
e270: 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 69  _initialize()] i
e280: 6e 74 65 72 66 61 63 65 2c 20 74 68 65 20 5b 73  nterface, the [s
e290: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
e2a0: 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a 20  e()] interface. 
e2b0: 20 69 73 20 63 61 6c 6c 65 64 20 61 75 74 6f 6d   is called autom
e2c0: 61 74 69 63 61 6c 6c 79 20 75 70 6f 6e 20 65 6e  atically upon en
e2d0: 74 72 79 20 74 6f 20 63 65 72 74 61 69 6e 20 6b  try to certain k
e2e0: 65 79 20 69 6e 74 65 72 66 61 63 65 73 20 73 75  ey interfaces su
e2f0: 63 68 20 61 73 0a 20 20 5b 73 71 6c 69 74 65 33  ch as.  [sqlite3
e300: 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74  _open()], [sqlit
e310: 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28  e3_vfs_register(
e320: 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  )], and [sqlite3
e330: 5f 6d 70 72 69 6e 74 66 28 29 5d 2e 0a 20 20 54  _mprintf()]..  T
e340: 68 65 20 6f 76 65 72 68 65 61 64 20 6f 66 20 69  he overhead of i
e350: 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c 69 74 65 33  nvoking [sqlite3
e360: 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 61  _initialize()] a
e370: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 20  utomatically in 
e380: 74 68 69 73 0a 20 20 77 61 79 20 6d 61 79 20 62  this.  way may b
e390: 65 20 6f 6d 69 74 74 65 64 20 62 79 20 62 75 69  e omitted by bui
e3a0: 6c 64 69 6e 67 20 53 51 4c 69 74 65 20 77 69 74  lding SQLite wit
e3b0: 68 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49  h the SQLITE_OMI
e3c0: 54 5f 41 55 54 4f 49 4e 49 54 0a 20 20 43 2d 70  T_AUTOINIT.  C-p
e3d0: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
e3e0: 6f 2e 20 20 57 68 65 6e 20 62 75 69 6c 74 20 75  o.  When built u
e3f0: 73 69 6e 67 20 53 51 4c 49 54 45 5f 4f 4d 49 54  sing SQLITE_OMIT
e400: 5f 41 55 54 4f 49 4e 49 54 2c 20 53 51 4c 69 74  _AUTOINIT, SQLit
e410: 65 0a 20 20 77 69 6c 6c 20 6e 6f 74 20 61 75 74  e.  will not aut
e420: 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 69 74 69  omatically initi
e430: 61 6c 69 7a 65 20 69 74 73 65 6c 66 20 61 6e 64  alize itself and
e440: 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
e450: 20 69 73 20 72 65 71 75 69 72 65 64 0a 20 20 74   is required.  t
e460: 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65  o invoke [sqlite
e470: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20  3_initialize()] 
e480: 64 69 72 65 63 74 6c 79 20 70 72 69 6f 72 20 74  directly prior t
e490: 6f 20 62 65 67 69 6e 6e 69 6e 67 20 75 73 65 20  o beginning use 
e4a0: 6f 66 20 74 68 65 0a 20 20 53 51 4c 69 74 65 20  of the.  SQLite 
e4b0: 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50  library..}..COMP
e4c0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
e4d0: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 4d 41 54 49  TE_OMIT_AUTOMATI
e4e0: 43 5f 49 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69  C_INDEX} {.  Thi
e4f0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
e500: 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 0a 20 20   to omit the .  
e510: 5b 61 75 74 6f 6d 61 74 69 63 20 69 6e 64 65 78  [automatic index
e520: 69 6e 67 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69  ing] functionali
e530: 74 79 2e 0a 20 20 53 65 65 20 61 6c 73 6f 3a 20  ty..  See also: 
e540: 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  [SQLITE_DEFAULT_
e550: 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58 5d  AUTOMATIC_INDEX]
e560: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
e570: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
e580: 5f 41 55 54 4f 52 45 53 45 54 7d 20 7b 0a 20 20  _AUTORESET} {.  
e590: 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20  By default, the 
e5a0: 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d  [sqlite3_step()]
e5b0: 20 69 6e 74 65 72 66 61 63 65 20 77 69 6c 6c 20   interface will 
e5c0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e  automatically in
e5d0: 76 6f 6b 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f  voke.  [sqlite3_
e5e0: 72 65 73 65 74 28 29 5d 20 74 6f 20 72 65 73 65  reset()] to rese
e5f0: 74 20 74 68 65 20 5b 70 72 65 70 61 72 65 64 20  t the [prepared 
e600: 73 74 61 74 65 6d 65 6e 74 5d 20 69 66 20 6e 65  statement] if ne
e610: 63 65 73 73 61 72 79 2e 20 20 54 68 69 73 0a 20  cessary.  This. 
e620: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
e630: 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68 61  tion changes tha
e640: 74 20 62 65 68 61 76 69 6f 72 20 73 6f 20 74 68  t behavior so th
e650: 61 74 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  at [sqlite3_step
e660: 28 29 5d 20 77 69 6c 6c 0a 20 20 72 65 74 75 72  ()] will.  retur
e670: 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53 45  n [SQLITE_MISUSE
e680: 5d 20 69 66 20 69 74 20 63 61 6c 6c 65 64 20 61  ] if it called a
e690: 67 61 69 6e 20 61 66 74 65 72 20 72 65 74 75 72  gain after retur
e6a0: 6e 69 6e 67 20 61 6e 79 74 68 69 6e 67 20 6f 74  ning anything ot
e6b0: 68 65 72 0a 20 20 74 68 61 6e 20 5b 53 51 4c 49  her.  than [SQLI
e6c0: 54 45 5f 52 4f 57 5d 2c 20 5b 53 51 4c 49 54 45  TE_ROW], [SQLITE
e6d0: 5f 42 55 53 59 5d 2c 20 6f 72 20 5b 53 51 4c 49  _BUSY], or [SQLI
e6e0: 54 45 5f 4c 4f 43 4b 45 44 5d 20 75 6e 6c 65 73  TE_LOCKED] unles
e6f0: 73 20 74 68 65 72 65 20 77 61 73 20 61 6e 0a 20  s there was an. 
e700: 20 69 6e 74 65 72 76 65 6e 69 6e 67 20 63 61 6c   intervening cal
e710: 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65  l to [sqlite3_re
e720: 73 65 74 28 29 5d 2e 0a 0a 20 20 49 6e 20 53 51  set()]...  In SQ
e730: 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e  Lite [version 3.
e740: 36 2e 32 33 2e 31 5d 20 28 5b 64 61 74 65 6f 66  6.23.1] ([dateof
e750: 3a 33 2e 36 2e 32 33 2e 31 5d 29 0a 20 20 61 6e  :3.6.23.1]).  an
e760: 64 20 65 61 72 6c 69 65 72 2c 20 5b 73 71 6c 69  d earlier, [sqli
e770: 74 65 33 5f 73 74 65 70 28 29 5d 20 75 73 65 64  te3_step()] used
e780: 20 74 6f 20 61 6c 77 61 79 73 0a 20 20 72 65 74   to always.  ret
e790: 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53 55  urn [SQLITE_MISU
e7a0: 53 45 5d 20 69 66 20 69 74 20 77 61 73 20 69 6e  SE] if it was in
e7b0: 76 6f 6b 65 64 20 61 67 61 69 6e 20 61 66 74 65  voked again afte
e7c0: 72 20 72 65 74 75 72 6e 69 6e 67 20 61 6e 79 74  r returning anyt
e7d0: 68 69 6e 67 0a 20 20 6f 74 68 65 72 20 74 68 61  hing.  other tha
e7e0: 6e 20 5b 53 51 4c 49 54 45 5f 52 4f 57 5d 20 77  n [SQLITE_ROW] w
e7f0: 69 74 68 6f 75 74 20 61 6e 20 69 6e 74 65 72 76  ithout an interv
e800: 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f 20 5b 73  ening call to [s
e810: 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 2e  qlite3_reset()].
e820: 0a 20 20 54 68 69 73 20 63 61 75 73 65 64 20 70  .  This caused p
e830: 72 6f 62 6c 65 6d 73 20 6f 6e 20 73 6f 6d 65 20  roblems on some 
e840: 70 6f 6f 72 6c 79 20 77 72 69 74 74 65 6e 20 73  poorly written s
e850: 6d 61 72 74 70 68 6f 6e 65 20 61 70 70 6c 69 63  martphone applic
e860: 61 74 69 6f 6e 73 20 77 68 69 63 68 0a 20 20 64  ations which.  d
e870: 69 64 20 6e 6f 74 20 63 6f 72 72 65 63 74 6c 79  id not correctly
e880: 20 68 61 6e 64 6c 65 20 74 68 65 20 5b 53 51 4c   handle the [SQL
e890: 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 61 6e 64 20  ITE_LOCKED] and 
e8a0: 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 65 72  [SQLITE_BUSY] er
e8b0: 72 6f 72 20 0a 20 20 72 65 74 75 72 6e 73 2e 20  ror .  returns. 
e8c0: 20 52 61 74 68 65 72 20 74 68 61 6e 20 66 69 78   Rather than fix
e8d0: 20 74 68 65 20 6d 61 6e 79 20 64 65 66 65 63 74   the many defect
e8e0: 69 76 65 20 73 6d 61 72 74 70 68 6f 6e 65 20 61  ive smartphone a
e8f0: 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20 0a 20 20  pplications, .  
e900: 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f 66 20  the behavior of 
e910: 53 51 4c 69 74 65 20 77 61 73 20 63 68 61 6e 67  SQLite was chang
e920: 65 64 20 69 6e 20 33 2e 36 2e 32 33 2e 32 20 74  ed in 3.6.23.2 t
e930: 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  o automatically 
e940: 72 65 73 65 74 0a 20 20 74 68 65 20 70 72 65 70  reset.  the prep
e950: 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2e 20  ared statement. 
e960: 20 42 75 74 20 74 68 61 74 20 63 68 61 6e 67 65   But that change
e970: 64 20 63 61 75 73 65 64 20 69 73 73 75 65 73 20  d caused issues 
e980: 69 6e 20 6f 74 68 65 72 20 0a 20 20 69 6d 70 72  in other .  impr
e990: 6f 70 65 72 6c 79 20 69 6d 70 6c 65 6d 65 6e 74  operly implement
e9a0: 65 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20  ed applications 
e9b0: 74 68 61 74 20 77 65 72 65 20 61 63 74 75 61 6c  that were actual
e9c0: 6c 79 20 6c 6f 6f 6b 69 6e 67 0a 20 20 66 6f 72  ly looking.  for
e9d0: 20 61 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53 55   an [SQLITE_MISU
e9e0: 53 45 5d 20 72 65 74 75 72 6e 20 74 6f 20 74 65  SE] return to te
e9f0: 72 6d 69 6e 61 74 65 20 74 68 65 69 72 20 71 75  rminate their qu
ea00: 65 72 79 20 6c 6f 6f 70 73 2e 20 20 28 41 6e 79  ery loops.  (Any
ea10: 74 69 6d 65 0a 20 20 61 6e 20 61 70 70 6c 69 63  time.  an applic
ea20: 61 74 69 6f 6e 20 67 65 74 73 20 61 6e 20 53 51  ation gets an SQ
ea30: 4c 49 54 45 5f 4d 49 53 55 53 45 20 65 72 72 6f  LITE_MISUSE erro
ea40: 72 20 63 6f 64 65 20 66 72 6f 6d 20 53 51 4c 69  r code from SQLi
ea50: 74 65 2c 20 74 68 61 74 20 6d 65 61 6e 73 20 74  te, that means t
ea60: 68 65 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e  he.  application
ea70: 20 69 73 20 6d 69 73 75 73 69 6e 67 20 74 68 65   is misusing the
ea80: 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63   SQLite interfac
ea90: 65 20 61 6e 64 20 69 73 20 74 68 75 73 20 69 6e  e and is thus in
eaa0: 63 6f 72 72 65 63 74 6c 79 0a 20 20 69 6d 70 6c  correctly.  impl
eab0: 65 6d 65 6e 74 65 64 2e 29 20 20 54 68 65 20 53  emented.)  The S
eac0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 52  QLITE_OMIT_AUTOR
ead0: 45 53 45 54 20 69 6e 74 65 72 66 61 63 65 20 77  ESET interface w
eae0: 61 73 20 61 64 64 65 64 20 74 6f 20 53 51 4c 69  as added to SQLi
eaf0: 74 65 0a 20 20 5b 76 65 72 73 69 6f 6e 20 33 2e  te.  [version 3.
eb00: 37 2e 35 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e  7.5] ([dateof:3.
eb10: 37 2e 35 5d 29 20 69 6e 20 61 6e 20 65 66 66 6f  7.5]) in an effo
eb20: 72 74 20 74 6f 20 67 65 74 20 61 6c 6c 20 6f 66  rt to get all of
eb30: 20 74 68 65 20 28 62 72 6f 6b 65 6e 29 0a 20 20   the (broken).  
eb40: 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20  applications to 
eb50: 77 6f 72 6b 20 61 67 61 69 6e 20 77 69 74 68 6f  work again witho
eb60: 75 74 20 68 61 76 69 6e 67 20 74 6f 20 61 63 74  ut having to act
eb70: 75 61 6c 6c 79 20 66 69 78 20 74 68 65 20 61 70  ually fix the ap
eb80: 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43  plications..}..C
eb90: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
eba0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 56  QLITE_OMIT_AUTOV
ebb0: 41 43 55 55 4d 7d 20 7b 0a 20 20 49 66 20 74 68  ACUUM} {.  If th
ebc0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
ebd0: 69 6e 65 64 2c 20 74 68 65 20 6c 69 62 72 61 72  ined, the librar
ebe0: 79 20 63 61 6e 6e 6f 74 20 63 72 65 61 74 65 20  y cannot create 
ebf0: 6f 72 20 77 72 69 74 65 20 74 6f 20 0a 20 20 64  or write to .  d
ec00: 61 74 61 62 61 73 65 73 20 74 68 61 74 20 73 75  atabases that su
ec10: 70 70 6f 72 74 20 5b 61 75 74 6f 5f 76 61 63 75  pport [auto_vacu
ec20: 75 6d 5d 2e 0a 20 20 45 78 65 63 75 74 69 6e 67  um]..  Executing
ec30: 20 61 20 5b 50 52 41 47 4d 41 20 61 75 74 6f 5f   a [PRAGMA auto_
ec40: 76 61 63 75 75 6d 5d 20 73 74 61 74 65 6d 65 6e  vacuum] statemen
ec50: 74 20 69 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f  t is not an erro
ec60: 72 0a 20 20 28 73 69 6e 63 65 20 75 6e 6b 6e 6f  r.  (since unkno
ec70: 77 6e 20 50 52 41 47 4d 41 73 20 61 72 65 20 73  wn PRAGMAs are s
ec80: 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65 64 29  ilently ignored)
ec90: 2c 20 62 75 74 20 64 6f 65 73 20 6e 6f 74 20 72  , but does not r
eca0: 65 74 75 72 6e 20 61 20 76 61 6c 75 65 0a 20 20  eturn a value.  
ecb0: 6f 72 20 6d 6f 64 69 66 79 20 74 68 65 20 61 75  or modify the au
ecc0: 74 6f 2d 76 61 63 75 75 6d 20 66 6c 61 67 20 69  to-vacuum flag i
ecd0: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  n the database f
ece0: 69 6c 65 2e 20 49 66 20 61 20 64 61 74 61 62 61  ile. If a databa
ecf0: 73 65 20 74 68 61 74 0a 20 20 73 75 70 70 6f 72  se that.  suppor
ed00: 74 73 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 69  ts auto-vacuum i
ed10: 73 20 6f 70 65 6e 65 64 20 62 79 20 61 20 6c 69  s opened by a li
ed20: 62 72 61 72 79 20 63 6f 6d 70 69 6c 65 64 20 77  brary compiled w
ed30: 69 74 68 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c  ith this option,
ed40: 20 69 74 0a 20 20 69 73 20 61 75 74 6f 6d 61 74   it.  is automat
ed50: 69 63 61 6c 6c 79 20 6f 70 65 6e 65 64 20 69 6e  ically opened in
ed60: 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64 65 2e   read-only mode.
ed70: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
ed80: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
ed90: 42 45 54 57 45 45 4e 5f 4f 50 54 49 4d 49 5a 41  BETWEEN_OPTIMIZA
eda0: 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TION} {.  This o
edb0: 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74  ption disables t
edc0: 68 65 20 75 73 65 20 6f 66 20 69 6e 64 69 63 65  he use of indice
edd0: 73 20 77 69 74 68 20 57 48 45 52 45 20 63 6c 61  s with WHERE cla
ede0: 75 73 65 20 74 65 72 6d 73 0a 20 20 74 68 61 74  use terms.  that
edf0: 20 65 6d 70 6c 6f 79 20 74 68 65 20 42 45 54 57   employ the BETW
ee00: 45 45 4e 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a  EEN operator..}.
ee10: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
ee20: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 4c 4f  {SQLITE_OMIT_BLO
ee30: 42 5f 4c 49 54 45 52 41 4c 7d 20 7b 0a 20 20 57  B_LITERAL} {.  W
ee40: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
ee50: 69 73 20 64 65 66 69 6e 65 64 2c 20 69 74 20 69  is defined, it i
ee60: 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74  s not possible t
ee70: 6f 20 73 70 65 63 69 66 79 20 61 20 62 6c 6f 62  o specify a blob
ee80: 20 69 6e 0a 20 20 61 6e 20 53 51 4c 20 73 74 61   in.  an SQL sta
ee90: 74 65 6d 65 6e 74 20 75 73 69 6e 67 20 74 68 65  tement using the
eea0: 20 58 27 41 42 43 44 27 20 73 79 6e 74 61 78 2e   X'ABCD' syntax.
eeb0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
eec0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
eed0: 42 54 52 45 45 43 4f 55 4e 54 7d 20 7b 0a 20 20  BTREECOUNT} {.  
eee0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
eef0: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 61 6e 20   is defined, an 
ef00: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61  optimization tha
ef10: 74 20 61 63 63 65 6c 65 72 61 74 65 73 20 63 6f  t accelerates co
ef20: 75 6e 74 69 6e 67 0a 20 20 61 6c 6c 20 65 6e 74  unting.  all ent
ef30: 72 69 65 73 20 69 6e 20 61 20 74 61 62 6c 65 20  ries in a table 
ef40: 28 69 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c  (in other words,
ef50: 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e   an optimization
ef60: 20 74 68 61 74 20 68 65 6c 70 73 0a 20 20 22 53   that helps.  "S
ef70: 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46  ELECT count(*) F
ef80: 52 4f 4d 20 74 61 62 6c 65 22 20 72 75 6e 20 66  ROM table" run f
ef90: 61 73 74 65 72 29 20 69 73 20 6f 6d 69 74 74 65  aster) is omitte
efa0: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
efb0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
efc0: 54 5f 42 55 49 4c 54 49 4e 5f 54 45 53 54 7d 20  T_BUILTIN_TEST} 
efd0: 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65  {.  This compile
efe0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 68 61 73  -time option has
eff0: 20 62 65 65 6e 20 72 65 6e 61 6d 65 64 20 74 6f   been renamed to
f000: 20 5b 53 51 4c 49 54 45 5f 55 4e 54 45 53 54 41   [SQLITE_UNTESTA
f010: 42 4c 45 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  BLE]..}..COMPILE
f020: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
f030: 4f 4d 49 54 5f 43 41 53 54 7d 20 7b 0a 20 20 54  OMIT_CAST} {.  T
f040: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
f050: 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74  s SQLite to omit
f060: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
f070: 20 43 41 53 54 20 6f 70 65 72 61 74 6f 72 2e 0a   CAST operator..
f080: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
f090: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43  N {SQLITE_OMIT_C
f0a0: 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f  HECK} {.  This o
f0b0: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c  ption causes SQL
f0c0: 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70  ite to omit supp
f0d0: 6f 72 74 20 66 6f 72 20 43 48 45 43 4b 20 63 6f  ort for CHECK co
f0e0: 6e 73 74 72 61 69 6e 74 73 2e 0a 20 20 54 68 65  nstraints..  The
f0f0: 20 70 61 72 73 65 72 20 77 69 6c 6c 20 73 74 69   parser will sti
f100: 6c 6c 20 61 63 63 65 70 74 20 43 48 45 43 4b 20  ll accept CHECK 
f110: 63 6f 6e 73 74 72 61 69 6e 74 73 20 69 6e 20 53  constraints in S
f120: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2c 0a 20  QL statements,. 
f130: 20 74 68 65 79 20 77 69 6c 6c 20 6a 75 73 74 20   they will just 
f140: 6e 6f 74 20 62 65 20 65 6e 66 6f 72 63 65 64 2e  not be enforced.
f150: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
f160: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
f170: 43 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e 5f 44 49  COMPILEOPTION_DI
f180: 41 47 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  AGS} {.  This op
f190: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
f1a0: 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70 69 6c 65  omit the compile
f1b0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 64 69 61  -time option dia
f1c0: 67 6e 6f 73 74 69 63 73 20 61 76 61 69 6c 61 62  gnostics availab
f1d0: 6c 65 0a 20 20 69 6e 20 53 51 4c 69 74 65 2c 20  le.  in SQLite, 
f1e0: 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 5b 73  including the [s
f1f0: 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
f200: 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20 61 6e 64  tion_used()] and
f210: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70  .  [sqlite3_comp
f220: 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 5d  ileoption_get()]
f230: 20 43 2f 43 2b 2b 20 66 75 6e 63 74 69 6f 6e 73   C/C++ functions
f240: 2c 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 5f  , the.  [sqlite_
f250: 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73  compileoption_us
f260: 65 64 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74  ed()] and [sqlit
f270: 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  e_compileoption_
f280: 67 65 74 28 29 5d 20 53 51 4c 20 66 75 6e 63 74  get()] SQL funct
f290: 69 6f 6e 73 2c 0a 20 20 61 6e 64 20 74 68 65 20  ions,.  and the 
f2a0: 5b 63 6f 6d 70 69 6c 65 5f 6f 70 74 69 6f 6e 73  [compile_options
f2b0: 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d   pragma]..}..COM
f2c0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
f2d0: 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4c 45 54  ITE_OMIT_COMPLET
f2e0: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
f2f0: 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b 73  on causes the [s
f300: 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 28  qlite3_complete(
f310: 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  )] and [sqlite3_
f320: 63 6f 6d 70 6c 65 74 65 31 36 28 29 5d 0a 20 20  complete16()].  
f330: 69 6e 74 65 72 66 61 63 65 73 20 74 6f 20 62 65  interfaces to be
f340: 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   omitted..}..COM
f350: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
f360: 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e  ITE_OMIT_COMPOUN
f370: 44 5f 53 45 4c 45 43 54 7d 20 7b 0a 20 20 54 68  D_SELECT} {.  Th
f380: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
f390: 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 6f  d to omit the co
f3a0: 6d 70 6f 75 6e 64 20 5b 53 45 4c 45 43 54 5d 20  mpound [SELECT] 
f3b0: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20 0a  functionality. .
f3c0: 20 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65    [SELECT] state
f3d0: 6d 65 6e 74 73 20 74 68 61 74 20 75 73 65 20 74  ments that use t
f3e0: 68 65 20 0a 20 20 55 4e 49 4f 4e 2c 20 55 4e 49  he .  UNION, UNI
f3f0: 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52 53 45 43  ON ALL, INTERSEC
f400: 54 20 6f 72 20 45 58 43 45 50 54 20 63 6f 6d 70  T or EXCEPT comp
f410: 6f 75 6e 64 20 53 45 4c 45 43 54 20 6f 70 65 72  ound SELECT oper
f420: 61 74 6f 72 73 20 77 69 6c 6c 20 0a 20 20 63 61  ators will .  ca
f430: 75 73 65 20 61 20 70 61 72 73 65 20 65 72 72 6f  use a parse erro
f440: 72 2e 0a 0a 20 20 41 6e 20 5b 49 4e 53 45 52 54  r...  An [INSERT
f450: 5d 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68  ] statement with
f460: 20 6d 75 6c 74 69 70 6c 65 20 76 61 6c 75 65 73   multiple values
f470: 20 69 6e 20 74 68 65 20 56 41 4c 55 45 53 20 63   in the VALUES c
f480: 6c 61 75 73 65 20 69 73 0a 20 20 69 6d 70 6c 65  lause is.  imple
f490: 6d 65 6e 74 65 64 20 69 6e 74 65 72 6e 61 6c 6c  mented internall
f4a0: 79 20 61 73 20 61 20 63 6f 6d 70 6f 75 6e 64 20  y as a compound 
f4b0: 53 45 4c 45 43 54 2e 20 20 48 65 6e 63 65 2c 20  SELECT.  Hence, 
f4c0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 6c 73 6f  this option also
f4d0: 0a 20 20 64 69 73 61 62 6c 65 73 20 74 68 65 20  .  disables the 
f4e0: 61 62 69 6c 69 74 79 20 74 6f 20 69 6e 73 65 72  ability to inser
f4f0: 74 20 6d 6f 72 65 20 74 68 61 6e 20 61 20 73 69  t more than a si
f500: 6e 67 6c 65 20 72 6f 77 20 75 73 69 6e 67 20 61  ngle row using a
f510: 6e 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  n.  INSERT INTO 
f520: 2e 2e 2e 20 56 41 4c 55 45 53 20 2e 2e 2e 20 73  ... VALUES ... s
f530: 74 61 74 65 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d  tatement..}..COM
f540: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
f550: 49 54 45 5f 4f 4d 49 54 5f 43 54 45 7d 20 7b 0a  ITE_OMIT_CTE} {.
f560: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
f570: 75 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f 72  uses support for
f580: 20 5b 63 6f 6d 6d 6f 6e 20 74 61 62 6c 65 20 65   [common table e
f590: 78 70 72 65 73 73 69 6f 6e 73 5d 20 74 6f 20 62  xpressions] to b
f5a0: 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 0a 0a  e omitted..}....
f5b0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
f5c0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 41 54 45  SQLITE_OMIT_DATE
f5d0: 54 49 4d 45 5f 46 55 4e 43 53 7d 20 7b 0a 20 20  TIME_FUNCS} {.  
f5e0: 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  If this option i
f5f0: 73 20 64 65 66 69 6e 65 64 2c 20 53 51 4c 69 74  s defined, SQLit
f600: 65 27 73 20 62 75 69 6c 74 2d 69 6e 20 64 61 74  e's built-in dat
f610: 65 20 61 6e 64 20 74 69 6d 65 20 6d 61 6e 69 70  e and time manip
f620: 75 6c 61 74 69 6f 6e 0a 20 20 66 75 6e 63 74 69  ulation.  functi
f630: 6f 6e 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e  ons are omitted.
f640: 20 53 70 65 63 69 66 69 63 61 6c 6c 79 2c 20 74   Specifically, t
f650: 68 65 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73  he SQL functions
f660: 20 6a 75 6c 69 61 6e 64 61 79 28 29 2c 20 64 61   julianday(), da
f670: 74 65 28 29 2c 0a 20 20 74 69 6d 65 28 29 2c 20  te(),.  time(), 
f680: 64 61 74 65 74 69 6d 65 28 29 20 61 6e 64 20 73  datetime() and s
f690: 74 72 66 74 69 6d 65 28 29 20 61 72 65 20 6e 6f  trftime() are no
f6a0: 74 20 61 76 61 69 6c 61 62 6c 65 2e 20 54 68 65  t available. The
f6b0: 20 64 65 66 61 75 6c 74 20 63 6f 6c 75 6d 6e 0a   default column.
f6c0: 20 20 76 61 6c 75 65 73 20 43 55 52 52 45 4e 54    values CURRENT
f6d0: 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44  _TIME, CURRENT_D
f6e0: 41 54 45 20 61 6e 64 20 43 55 52 52 45 4e 54 5f  ATE and CURRENT_
f6f0: 54 49 4d 45 53 54 41 4d 50 20 61 72 65 20 73 74  TIMESTAMP are st
f700: 69 6c 6c 20 61 76 61 69 6c 61 62 6c 65 2e 0a 7d  ill available..}
f710: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
f720: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45   {SQLITE_OMIT_DE
f730: 43 4c 54 59 50 45 7d 20 7b 0a 20 20 54 68 69 73  CLTYPE} {.  This
f740: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53   option causes S
f750: 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75  QLite to omit su
f760: 70 70 6f 72 74 20 66 6f 72 20 74 68 65 0a 20 20  pport for the.  
f770: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
f780: 64 65 63 6c 74 79 70 65 28 29 5d 20 61 6e 64 20  decltype()] and 
f790: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
f7a0: 64 65 63 6c 74 79 70 65 31 36 28 29 5d 0a 20 20  decltype16()].  
f7b0: 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43  interfaces..}..C
f7c0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
f7d0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 50 52 45  QLITE_OMIT_DEPRE
f7e0: 43 41 54 45 44 7d 20 7b 0a 20 20 54 68 69 73 20  CATED} {.  This 
f7f0: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51  option causes SQ
f800: 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70  Lite to omit sup
f810: 70 6f 72 74 20 66 6f 72 20 69 6e 74 65 72 66 61  port for interfa
f820: 63 65 73 0a 20 20 6d 61 72 6b 65 64 20 61 73 20  ces.  marked as 
f830: 64 65 70 72 65 63 61 74 65 64 2e 20 20 54 68 69  deprecated.  Thi
f840: 73 20 69 6e 63 6c 75 64 65 73 20 0a 20 20 5b 73  s includes .  [s
f850: 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65  qlite3_aggregate
f860: 5f 63 6f 75 6e 74 28 29 5d 2c 0a 20 20 5b 73 71  _count()],.  [sq
f870: 6c 69 74 65 33 5f 65 78 70 69 72 65 64 28 29 5d  lite3_expired()]
f880: 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61  ,.  [sqlite3_tra
f890: 6e 73 66 65 72 5f 62 69 6e 64 69 6e 67 73 28 29  nsfer_bindings()
f8a0: 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 67 6c  ],.  [sqlite3_gl
f8b0: 6f 62 61 6c 5f 72 65 63 6f 76 65 72 28 29 5d 2c  obal_recover()],
f8c0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74 68 72 65  .  [sqlite3_thre
f8d0: 61 64 5f 63 6c 65 61 6e 75 70 28 29 5d 20 61 6e  ad_cleanup()] an
f8e0: 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d  d.  [sqlite3_mem
f8f0: 6f 72 79 5f 61 6c 61 72 6d 28 29 5d 20 69 6e 74  ory_alarm()] int
f900: 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50  erfaces..}..COMP
f910: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
f920: 54 45 5f 4f 4d 49 54 5f 44 49 53 4b 49 4f 7d 20  TE_OMIT_DISKIO} 
f930: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
f940: 6f 6d 69 74 73 20 61 6c 6c 20 73 75 70 70 6f 72  omits all suppor
f950: 74 20 66 6f 72 20 77 72 69 74 69 6e 67 20 74 6f  t for writing to
f960: 20 74 68 65 20 64 69 73 6b 20 61 6e 64 20 66 6f   the disk and fo
f970: 72 63 65 73 0a 20 20 64 61 74 61 62 61 73 65 73  rces.  databases
f980: 20 74 6f 20 65 78 69 73 74 20 69 6e 20 6d 65 6d   to exist in mem
f990: 6f 72 79 20 6f 6e 6c 79 2e 20 20 54 68 69 73 20  ory only.  This 
f9a0: 6f 70 74 69 6f 6e 20 68 61 73 20 6e 6f 74 20 62  option has not b
f9b0: 65 65 6e 20 0a 20 20 6d 61 69 6e 74 61 69 6e 65  een .  maintaine
f9c0: 64 20 61 6e 64 20 70 72 6f 62 61 62 6c 79 20 64  d and probably d
f9d0: 6f 65 73 20 6e 6f 74 20 77 6f 72 6b 20 77 69 74  oes not work wit
f9e0: 68 20 6e 65 77 65 72 20 76 65 72 73 69 6f 6e 73  h newer versions
f9f0: 20 6f 66 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43   of SQLite..}..C
fa00: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
fa10: 51 4c 49 54 45 5f 4f 4d 49 54 5f 45 58 50 4c 41  QLITE_OMIT_EXPLA
fa20: 49 4e 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67  IN} {.  Defining
fa30: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   this option cau
fa40: 73 65 73 20 74 68 65 20 5b 45 58 50 4c 41 49 4e  ses the [EXPLAIN
fa50: 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 62 65 20  ] command to be 
fa60: 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65  omitted from the
fa70: 0a 20 20 6c 69 62 72 61 72 79 2e 20 41 74 74 65  .  library. Atte
fa80: 6d 70 74 69 6e 67 20 74 6f 20 65 78 65 63 75 74  mpting to execut
fa90: 65 20 61 6e 20 5b 45 58 50 4c 41 49 4e 5d 20 73  e an [EXPLAIN] s
faa0: 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 63 61  tatement will ca
fab0: 75 73 65 20 61 20 70 61 72 73 65 0a 20 20 65 72  use a parse.  er
fac0: 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ror..}..COMPILE_
fad0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
fae0: 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53  MIT_FLAG_PRAGMAS
faf0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
fb00: 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20  n omits support 
fb10: 66 6f 72 20 61 20 73 75 62 73 65 74 20 6f 66 20  for a subset of 
fb20: 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64  [PRAGMA] command
fb30: 73 20 74 68 61 74 0a 20 20 71 75 65 72 79 20 61  s that.  query a
fb40: 6e 64 20 73 65 74 20 62 6f 6f 6c 65 61 6e 20 70  nd set boolean p
fb50: 72 6f 70 65 72 74 69 65 73 2e 0a 7d 0a 0a 43 4f  roperties..}..CO
fb60: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
fb70: 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49  LITE_OMIT_FLOATI
fb80: 4e 47 5f 50 4f 49 4e 54 7d 20 7b 0a 20 20 54 68  NG_POINT} {.  Th
fb90: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
fba0: 64 20 74 6f 20 6f 6d 69 74 20 66 6c 6f 61 74 69  d to omit floati
fbb0: 6e 67 2d 70 6f 69 6e 74 20 6e 75 6d 62 65 72 20  ng-point number 
fbc0: 73 75 70 70 6f 72 74 20 66 72 6f 6d 20 74 68 65  support from the
fbd0: 20 53 51 4c 69 74 65 0a 20 20 6c 69 62 72 61 72   SQLite.  librar
fbe0: 79 2e 20 57 68 65 6e 20 73 70 65 63 69 66 69 65  y. When specifie
fbf0: 64 2c 20 73 70 65 63 69 66 79 69 6e 67 20 61 20  d, specifying a 
fc00: 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e  floating point n
fc10: 75 6d 62 65 72 20 61 73 20 61 20 6c 69 74 65 72  umber as a liter
fc20: 61 6c 20 0a 20 20 28 69 2e 65 2e 20 22 31 2e 30  al .  (i.e. "1.0
fc30: 31 22 29 20 72 65 73 75 6c 74 73 20 69 6e 20 61  1") results in a
fc40: 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20   parse error... 
fc50: 20 3c 70 3e 49 6e 20 74 68 65 20 66 75 74 75 72   <p>In the futur
fc60: 65 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d  e, this option m
fc70: 61 79 20 61 6c 73 6f 20 64 69 73 61 62 6c 65 20  ay also disable 
fc80: 6f 74 68 65 72 20 66 6c 6f 61 74 69 6e 67 20 70  other floating p
fc90: 6f 69 6e 74 20 0a 20 20 66 75 6e 63 74 69 6f 6e  oint .  function
fca0: 61 6c 69 74 79 2c 20 66 6f 72 20 65 78 61 6d 70  ality, for examp
fcb0: 6c 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  le the [sqlite3_
fcc0: 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 29 5d  result_double()]
fcd0: 2c 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62 69  , .  [sqlite3_bi
fce0: 6e 64 5f 64 6f 75 62 6c 65 28 29 5d 2c 20 5b 73  nd_double()], [s
fcf0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75  qlite3_value_dou
fd00: 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71  ble()] and.  [sq
fd10: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75  lite3_column_dou
fd20: 62 6c 65 28 29 5d 20 41 50 49 20 66 75 6e 63 74  ble()] API funct
fd30: 69 6f 6e 73 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a  ions..  </p>.}..
fd40: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
fd50: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4f 52 45  SQLITE_OMIT_FORE
fd60: 49 47 4e 5f 4b 45 59 7d 20 7b 0a 20 20 49 66 20  IGN_KEY} {.  If 
fd70: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
fd80: 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 5b 66 6f  efined, then [fo
fd90: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
fda0: 61 69 6e 74 5d 20 73 79 6e 74 61 78 20 69 73 0a  aint] syntax is.
fdb0: 20 20 6e 6f 74 20 72 65 63 6f 67 6e 69 7a 65 64    not recognized
fdc0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
fdd0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
fde0: 5f 47 45 54 5f 54 41 42 4c 45 7d 20 7b 0a 20 20  _GET_TABLE} {.  
fdf0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
fe00: 65 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5b  es support for [
fe10: 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c  sqlite3_get_tabl
fe20: 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69  e()] and.  [sqli
fe30: 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29  te3_free_table()
fe40: 5d 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e  ] to be omitted.
fe50: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
fe60: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
fe70: 49 4e 43 52 42 4c 4f 42 7d 20 7b 0a 20 20 54 68  INCRBLOB} {.  Th
fe80: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
fe90: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5b 73 71   support for [sq
fea0: 6c 69 74 65 33 5f 62 6c 6f 62 20 7c 20 69 6e 63  lite3_blob | inc
feb0: 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49 2f  remental BLOB I/
fec0: 4f 5d 0a 20 20 74 6f 20 62 65 20 6f 6d 69 74 74  O].  to be omitt
fed0: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
fee0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
fef0: 49 54 5f 49 4e 54 45 47 52 49 54 59 5f 43 48 45  IT_INTEGRITY_CHE
ff00: 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CK} {.  This opt
ff10: 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72  ion omits suppor
ff20: 74 20 66 6f 72 20 74 68 65 20 5b 69 6e 74 65 67  t for the [integ
ff30: 72 69 74 79 5f 63 68 65 63 6b 20 70 72 61 67 6d  rity_check pragm
ff40: 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  a]..}..COMPILE_O
ff50: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
ff60: 49 54 5f 4c 49 4b 45 5f 4f 50 54 49 4d 49 5a 41  IT_LIKE_OPTIMIZA
ff70: 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TION} {.  This o
ff80: 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74  ption disables t
ff90: 68 65 20 61 62 69 6c 69 74 79 20 6f 66 20 53 51  he ability of SQ
ffa0: 4c 69 74 65 20 74 6f 20 75 73 65 20 69 6e 64 69  Lite to use indi
ffb0: 63 65 73 20 74 6f 20 68 65 6c 70 0a 20 20 72 65  ces to help.  re
ffc0: 73 6f 6c 76 65 20 5b 4c 49 4b 45 5d 20 61 6e 64  solve [LIKE] and
ffd0: 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72   [GLOB] operator
ffe0: 73 20 69 6e 20 61 20 57 48 45 52 45 20 63 6c 61  s in a WHERE cla
fff0: 75 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  use..}..COMPILE_
10000 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
10010 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49  MIT_LOAD_EXTENSI
10020 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  ON} {.  This opt
10030 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 65 6e  ion omits the en
10040 74 69 72 65 20 65 78 74 65 6e 73 69 6f 6e 20 6c  tire extension l
10050 6f 61 64 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d  oading mechanism
10060 20 66 72 6f 6d 0a 20 20 53 51 4c 69 74 65 2c 20   from.  SQLite, 
10070 69 6e 63 6c 75 64 69 6e 67 20 5b 73 71 6c 69 74  including [sqlit
10080 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65  e3_enable_load_e
10090 78 74 65 6e 73 69 6f 6e 28 29 5d 20 61 6e 64 0a  xtension()] and.
100a0 20 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f    [sqlite3_load_
100b0 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 69 6e 74  extension()] int
100c0 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50  erfaces..}..COMP
100d0 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
100e0 54 45 5f 4f 4d 49 54 5f 4c 4f 43 41 4c 54 49 4d  TE_OMIT_LOCALTIM
100f0 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
10100 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 22 6c 6f  on omits the "lo
10110 63 61 6c 74 69 6d 65 22 20 6d 6f 64 69 66 69 65  caltime" modifie
10120 72 20 66 72 6f 6d 20 74 68 65 20 64 61 74 65 20  r from the date 
10130 61 6e 64 20 74 69 6d 65 0a 20 20 66 75 6e 63 74  and time.  funct
10140 69 6f 6e 73 2e 20 20 54 68 69 73 20 6f 70 74 69  ions.  This opti
10150 6f 6e 20 69 73 20 73 6f 6d 65 74 69 6d 65 73 20  on is sometimes 
10160 75 73 65 66 75 6c 20 77 68 65 6e 20 74 72 79 69  useful when tryi
10170 6e 67 20 74 6f 20 63 6f 6d 70 69 6c 65 0a 20 20  ng to compile.  
10180 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d  the date and tim
10190 65 20 66 75 6e 63 74 69 6f 6e 73 20 6f 6e 20 61  e functions on a
101a0 20 70 6c 61 74 66 6f 72 6d 20 74 68 61 74 20 64   platform that d
101b0 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20  oes not support 
101c0 74 68 65 0a 20 20 63 6f 6e 63 65 70 74 20 6f 66  the.  concept of
101d0 20 6c 6f 63 61 6c 20 74 69 6d 65 2e 0a 7d 0a 0a   local time..}..
101e0 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
101f0 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 4f 4b  SQLITE_OMIT_LOOK
10200 41 53 49 44 45 7d 20 7b 0a 20 20 54 68 69 73 20  ASIDE} {.  This 
10210 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65  option omits the
10220 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f   [lookaside memo
10230 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 2e 0a 7d  ry allocator]..}
10240 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
10250 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4d 45   {SQLITE_OMIT_ME
10260 4d 4f 52 59 44 42 7d 20 7b 0a 20 20 57 68 65 6e  MORYDB} {.  When
10270 20 74 68 69 73 20 69 73 20 64 65 66 69 6e 65 64   this is defined
10280 2c 20 74 68 65 20 6c 69 62 72 61 72 79 20 64 6f  , the library do
10290 65 73 20 6e 6f 74 20 72 65 73 70 65 63 74 20 74  es not respect t
102a0 68 65 20 73 70 65 63 69 61 6c 20 64 61 74 61 62  he special datab
102b0 61 73 65 0a 20 20 6e 61 6d 65 20 22 3a 6d 65 6d  ase.  name ":mem
102c0 6f 72 79 3a 22 20 28 6e 6f 72 6d 61 6c 6c 79 20  ory:" (normally 
102d0 75 73 65 64 20 74 6f 20 63 72 65 61 74 65 20 61  used to create a
102e0 6e 20 5b 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74  n [in-memory dat
102f0 61 62 61 73 65 5d 29 2e 20 49 66 20 0a 20 20 22  abase]). If .  "
10300 3a 6d 65 6d 6f 72 79 3a 22 20 69 73 20 70 61 73  :memory:" is pas
10310 73 65 64 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  sed to [sqlite3_
10320 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65  open()], [sqlite
10330 33 5f 6f 70 65 6e 31 36 28 29 5d 2c 20 6f 72 0a  3_open16()], or.
10340 20 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f    [sqlite3_open_
10350 76 32 28 29 5d 2c 20 61 20 66 69 6c 65 20 77 69  v2()], a file wi
10360 74 68 20 74 68 69 73 20 6e 61 6d 65 20 77 69 6c  th this name wil
10370 6c 20 62 65 20 0a 20 20 6f 70 65 6e 65 64 20 6f  l be .  opened o
10380 72 20 63 72 65 61 74 65 64 2e 0a 7d 0a 0a 43 4f  r created..}..CO
10390 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
103a0 4c 49 54 45 5f 4f 4d 49 54 5f 4f 52 5f 4f 50 54  LITE_OMIT_OR_OPT
103b0 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54  IMIZATION} {.  T
103c0 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62  his option disab
103d0 6c 65 73 20 74 68 65 20 61 62 69 6c 69 74 79 20  les the ability 
103e0 6f 66 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65  of SQLite to use
103f0 20 61 6e 20 69 6e 64 65 78 20 74 6f 67 65 74 68   an index togeth
10400 65 72 0a 20 20 77 69 74 68 20 74 65 72 6d 73 20  er.  with terms 
10410 6f 66 20 61 20 57 48 45 52 45 20 63 6c 61 75 73  of a WHERE claus
10420 65 20 63 6f 6e 6e 65 63 74 65 64 20 62 79 20 74  e connected by t
10430 68 65 20 4f 52 20 6f 70 65 72 61 74 6f 72 2e 0a  he OR operator..
10440 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
10450 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50  N {SQLITE_OMIT_P
10460 41 47 45 52 5f 50 52 41 47 4d 41 53 7d 20 7b 0a  AGER_PRAGMAS} {.
10470 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20    Defining this 
10480 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61  option omits pra
10490 67 6d 61 73 20 72 65 6c 61 74 65 64 20 74 6f 20  gmas related to 
104a0 74 68 65 20 70 61 67 65 72 20 73 75 62 73 79 73  the pager subsys
104b0 74 65 6d 20 66 72 6f 6d 20 0a 20 20 74 68 65 20  tem from .  the 
104c0 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  build..}..COMPIL
104d0 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
104e0 5f 4f 4d 49 54 5f 50 52 41 47 4d 41 7d 20 7b 0a  _OMIT_PRAGMA} {.
104f0 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
10500 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68   used to omit th
10510 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61  e [PRAGMA] comma
10520 6e 64 0a 20 20 66 72 6f 6d 20 74 68 65 20 6c 69  nd.  from the li
10530 62 72 61 72 79 2e 20 4e 6f 74 65 20 74 68 61 74  brary. Note that
10540 20 69 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f   it is useful to
10550 20 64 65 66 69 6e 65 20 74 68 65 20 6d 61 63 72   define the macr
10560 6f 73 20 74 68 61 74 20 6f 6d 69 74 0a 20 20 73  os that omit.  s
10570 70 65 63 69 66 69 63 20 70 72 61 67 6d 61 73 20  pecific pragmas 
10580 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74  in addition to t
10590 68 69 73 2c 20 61 73 20 74 68 65 79 20 6d 61 79  his, as they may
105a0 20 61 6c 73 6f 20 72 65 6d 6f 76 65 20 73 75 70   also remove sup
105b0 70 6f 72 74 69 6e 67 20 63 6f 64 65 0a 20 20 69  porting code.  i
105c0 6e 20 6f 74 68 65 72 20 73 75 62 2d 73 79 73 74  n other sub-syst
105d0 65 6d 73 2e 20 54 68 69 73 20 6d 61 63 72 6f 20  ems. This macro 
105e0 72 65 6d 6f 76 65 73 20 74 68 65 20 5b 50 52 41  removes the [PRA
105f0 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 20 6f 6e 6c  GMA] command onl
10600 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
10610 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
10620 54 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c 42  T_PROGRESS_CALLB
10630 41 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ACK} {.  This op
10640 74 69 6f 6e 20 6d 61 79 20 62 65 20 64 65 66 69  tion may be defi
10650 6e 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20  ned to omit the 
10660 63 61 70 61 62 69 6c 69 74 79 20 74 6f 20 69 73  capability to is
10670 73 75 65 20 22 70 72 6f 67 72 65 73 73 22 20 0a  sue "progress" .
10680 20 20 63 61 6c 6c 62 61 63 6b 73 20 64 75 72 69    callbacks duri
10690 6e 67 20 6c 6f 6e 67 2d 72 75 6e 6e 69 6e 67 20  ng long-running 
106a0 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 20  SQL statements. 
106b0 54 68 65 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f  The .  [sqlite3_
106c0 70 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72  progress_handler
106d0 28 29 5d 0a 20 20 41 50 49 20 66 75 6e 63 74 69  ()].  API functi
106e0 6f 6e 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e  on is not presen
106f0 74 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79  t in the library
10700 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
10710 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
10720 5f 51 55 49 43 4b 42 41 4c 41 4e 43 45 7d 20 7b  _QUICKBALANCE} {
10730 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
10740 6d 69 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74  mits an alternat
10750 69 76 65 2c 20 66 61 73 74 65 72 20 42 2d 54 72  ive, faster B-Tr
10760 65 65 20 62 61 6c 61 6e 63 69 6e 67 20 72 6f 75  ee balancing rou
10770 74 69 6e 65 2e 0a 20 20 55 73 69 6e 67 20 74 68  tine..  Using th
10780 69 73 20 6f 70 74 69 6f 6e 20 6d 61 6b 65 73 20  is option makes 
10790 53 51 4c 69 74 65 20 73 6c 69 67 68 74 6c 79 20  SQLite slightly 
107a0 73 6d 61 6c 6c 65 72 20 61 74 20 74 68 65 20 65  smaller at the e
107b0 78 70 65 6e 73 65 20 6f 66 0a 20 20 6d 61 6b 69  xpense of.  maki
107c0 6e 67 20 69 74 20 72 75 6e 20 73 6c 69 67 68 74  ng it run slight
107d0 6c 79 20 73 6c 6f 77 65 72 2e 0a 7d 0a 0a 43 4f  ly slower..}..CO
107e0 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
107f0 4c 49 54 45 5f 4f 4d 49 54 5f 52 45 49 4e 44 45  LITE_OMIT_REINDE
10800 58 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  X} {.  When this
10810 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
10820 65 64 2c 20 74 68 65 20 5b 52 45 49 4e 44 45 58  ed, the [REINDEX
10830 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e  ].  command is n
10840 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74  ot included in t
10850 68 65 20 6c 69 62 72 61 72 79 2e 0a 20 20 45 78  he library..  Ex
10860 65 63 75 74 69 6e 67 20 61 20 5b 52 45 49 4e 44  ecuting a [REIND
10870 45 58 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61  EX] statement ca
10880 75 73 65 73 20 0a 20 20 61 20 70 61 72 73 65 20  uses .  a parse 
10890 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  error..}..COMPIL
108a0 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
108b0 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52 41  _OMIT_SCHEMA_PRA
108c0 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69  GMAS} {.  Defini
108d0 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f  ng this option o
108e0 6d 69 74 73 20 70 72 61 67 6d 61 73 20 66 6f 72  mits pragmas for
108f0 20 71 75 65 72 79 69 6e 67 20 74 68 65 20 64 61   querying the da
10900 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 66 72  tabase schema fr
10910 6f 6d 20 0a 20 20 74 68 65 20 62 75 69 6c 64 2e  om .  the build.
10920 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
10930 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
10940 53 43 48 45 4d 41 5f 56 45 52 53 49 4f 4e 5f 50  SCHEMA_VERSION_P
10950 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69  RAGMAS} {.  Defi
10960 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e  ning this option
10970 20 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20 66   omits pragmas f
10980 6f 72 20 71 75 65 72 79 69 6e 67 20 61 6e 64 20  or querying and 
10990 6d 6f 64 69 66 79 69 6e 67 20 74 68 65 20 0a 20  modifying the . 
109a0 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61   database schema
109b0 20 76 65 72 73 69 6f 6e 20 61 6e 64 20 75 73 65   version and use
109c0 72 20 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20 74  r version from t
109d0 68 65 20 62 75 69 6c 64 2e 20 53 70 65 63 69 66  he build. Specif
109e0 69 63 61 6c 6c 79 2c 20 74 68 65 20 0a 20 20 5b  ically, the .  [
109f0 73 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 5d 20  schema_version] 
10a00 61 6e 64 20 5b 75 73 65 72 5f 76 65 72 73 69 6f  and [user_versio
10a10 6e 5d 20 50 52 41 47 4d 41 73 20 61 72 65 20 6f  n] PRAGMAs are o
10a20 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  mitted..}..COMPI
10a30 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
10a40 45 5f 4f 4d 49 54 5f 53 48 41 52 45 44 5f 43 41  E_OMIT_SHARED_CA
10a50 43 48 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  CHE} {.  This op
10a60 74 69 6f 6e 20 62 75 69 6c 64 73 20 53 51 4c 69  tion builds SQLi
10a70 74 65 20 77 69 74 68 6f 75 74 20 73 75 70 70 6f  te without suppo
10a80 72 74 20 66 6f 72 20 73 68 61 72 65 64 2d 63 61  rt for shared-ca
10a90 63 68 65 20 6d 6f 64 65 2e 0a 20 20 54 68 65 20  che mode..  The 
10aa0 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f  [sqlite3_enable_
10ab0 73 68 61 72 65 64 5f 63 61 63 68 65 28 29 5d 20  shared_cache()] 
10ac0 69 73 20 6f 6d 69 74 74 65 64 20 61 6c 6f 6e 67  is omitted along
10ad0 20 77 69 74 68 20 61 20 66 61 69 72 0a 20 20 61   with a fair.  a
10ae0 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 77  mount of logic w
10af0 69 74 68 69 6e 20 74 68 65 20 42 2d 54 72 65 65  ithin the B-Tree
10b00 20 73 75 62 73 79 73 74 65 6d 20 61 73 73 6f 63   subsystem assoc
10b10 69 61 74 65 64 20 77 69 74 68 20 73 68 61 72 65  iated with share
10b20 64 0a 20 20 63 61 63 68 65 20 6d 61 6e 61 67 65  d.  cache manage
10b30 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ment..}..COMPILE
10b40 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
10b50 4f 4d 49 54 5f 53 55 42 51 55 45 52 59 7d 20 7b  OMIT_SUBQUERY} {
10b60 0a 20 20 49 66 20 64 65 66 69 6e 65 64 2c 20 73  .  If defined, s
10b70 75 70 70 6f 72 74 20 66 6f 72 20 73 75 62 2d 73  upport for sub-s
10b80 65 6c 65 63 74 73 20 61 6e 64 20 74 68 65 20 49  elects and the I
10b90 4e 28 29 20 6f 70 65 72 61 74 6f 72 20 61 72 65  N() operator are
10ba0 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   omitted..}..COM
10bb0 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
10bc0 49 54 45 5f 4f 4d 49 54 5f 54 43 4c 5f 56 41 52  ITE_OMIT_TCL_VAR
10bd0 49 41 42 4c 45 7d 20 7b 0a 20 20 49 66 20 74 68  IABLE} {.  If th
10be0 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  is macro is defi
10bf0 6e 65 64 2c 20 74 68 65 6e 20 74 68 65 20 73 70  ned, then the sp
10c00 65 63 69 61 6c 20 22 24 3c 76 61 72 69 61 62 6c  ecial "$<variabl
10c10 65 2d 6e 61 6d 65 3e 22 20 73 79 6e 74 61 78 0a  e-name>" syntax.
10c20 20 20 75 73 65 64 20 74 6f 20 61 75 74 6f 6d 61    used to automa
10c30 74 69 63 61 6c 6c 79 20 62 69 6e 64 20 53 51 4c  tically bind SQL
10c40 20 76 61 72 69 61 62 6c 65 73 20 74 6f 20 54 43   variables to TC
10c50 4c 20 76 61 72 69 61 62 6c 65 73 20 69 73 20 6f  L variables is o
10c60 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  mitted..}..COMPI
10c70 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
10c80 45 5f 4f 4d 49 54 5f 54 45 4d 50 44 42 7d 20 7b  E_OMIT_TEMPDB} {
10c90 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
10ca0 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72  mits support for
10cb0 20 54 45 4d 50 20 6f 72 20 54 45 4d 50 4f 52 41   TEMP or TEMPORA
10cc0 52 59 20 74 61 62 6c 65 73 2e 0a 7d 0a 0a 43 4f  RY tables..}..CO
10cd0 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
10ce0 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 41 43 45 7d  LITE_OMIT_TRACE}
10cf0 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
10d00 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66   omits support f
10d10 6f 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  or the [sqlite3_
10d20 70 72 6f 66 69 6c 65 28 29 5d 20 61 6e 64 0a 20  profile()] and. 
10d30 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28   [sqlite3_trace(
10d40 29 5d 20 69 6e 74 65 72 66 61 63 65 73 20 61 6e  )] interfaces an
10d50 64 20 74 68 65 69 72 20 61 73 73 6f 63 69 61 74  d their associat
10d60 65 64 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d  ed logic..}..COM
10d70 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
10d80 49 54 45 5f 4f 4d 49 54 5f 54 52 49 47 47 45 52  ITE_OMIT_TRIGGER
10d90 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74  } {.  Defining t
10da0 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
10db0 20 73 75 70 70 6f 72 74 20 66 6f 72 20 54 52 49   support for TRI
10dc0 47 47 45 52 20 6f 62 6a 65 63 74 73 2e 20 4e 65  GGER objects. Ne
10dd0 69 74 68 65 72 20 74 68 65 20 0a 20 20 5b 43 52  ither the .  [CR
10de0 45 41 54 45 20 54 52 49 47 47 45 52 5d 20 6f 72  EATE TRIGGER] or
10df0 20 5b 44 52 4f 50 20 54 52 49 47 47 45 52 5d 0a   [DROP TRIGGER].
10e00 20 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61    commands are a
10e10 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 69 73  vailable in this
10e20 20 63 61 73 65 2c 20 61 6e 64 20 61 74 74 65 6d   case, and attem
10e30 70 74 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65  pting to execute
10e40 0a 20 20 65 69 74 68 65 72 20 77 69 6c 6c 20 72  .  either will r
10e50 65 73 75 6c 74 20 69 6e 20 61 20 70 61 72 73 65  esult in a parse
10e60 20 65 72 72 6f 72 2e 0a 20 20 54 68 69 73 20 6f   error..  This o
10e70 70 74 69 6f 6e 20 61 6c 73 6f 20 64 69 73 61 62  ption also disab
10e80 6c 65 73 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20  les enforcement 
10e90 6f 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20  of [foreign key 
10ea0 63 6f 6e 73 74 72 61 69 6e 74 73 5d 2c 0a 20 20  constraints],.  
10eb0 73 69 6e 63 65 20 74 68 65 20 63 6f 64 65 20 74  since the code t
10ec0 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74  hat implements t
10ed0 72 69 67 67 65 72 73 20 61 6e 64 20 77 68 69 63  riggers and whic
10ee0 68 20 69 73 20 6f 6d 69 74 74 65 64 20 62 79 20  h is omitted by 
10ef0 74 68 69 73 0a 20 20 6f 70 74 69 6f 6e 20 69 73  this.  option is
10f00 20 61 6c 73 6f 20 75 73 65 64 20 74 6f 20 69 6d   also used to im
10f10 70 6c 65 6d 65 6e 74 20 5b 66 6f 72 65 69 67 6e  plement [foreign
10f20 20 6b 65 79 20 61 63 74 69 6f 6e 73 5d 2e 0a 7d   key actions]..}
10f30 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
10f40 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52   {SQLITE_OMIT_TR
10f50 55 4e 43 41 54 45 5f 4f 50 54 49 4d 49 5a 41 54  UNCATE_OPTIMIZAT
10f60 49 4f 4e 7d 20 7b 0a 20 20 41 20 64 65 66 61 75  ION} {.  A defau
10f70 6c 74 20 62 75 69 6c 64 20 6f 66 20 53 51 4c 69  lt build of SQLi
10f80 74 65 2c 20 69 66 20 61 20 5b 44 45 4c 45 54 45  te, if a [DELETE
10f90 5d 20 73 74 61 74 65 6d 65 6e 74 20 68 61 73 20  ] statement has 
10fa0 6e 6f 20 57 48 45 52 45 20 63 6c 61 75 73 65 0a  no WHERE clause.
10fb0 20 20 61 6e 64 20 6f 70 65 72 61 74 65 73 20 6f    and operates o
10fc0 6e 20 61 20 74 61 62 6c 65 20 77 69 74 68 20 6e  n a table with n
10fd0 6f 20 74 72 69 67 67 65 72 73 2c 20 61 6e 20 6f  o triggers, an o
10fe0 70 74 69 6d 69 7a 61 74 69 6f 6e 20 6f 63 63 75  ptimization occu
10ff0 72 73 20 74 68 61 74 0a 20 20 63 61 75 73 65 73  rs that.  causes
11000 20 74 68 65 20 44 45 4c 45 54 45 20 74 6f 20 6f   the DELETE to o
11010 63 63 75 72 20 62 79 20 64 72 6f 70 70 69 6e 67  ccur by dropping
11020 20 61 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20   and recreating 
11030 74 68 65 20 74 61 62 6c 65 2e 20 20 0a 20 20 44  the table.  .  D
11040 72 6f 70 70 69 6e 67 20 61 6e 64 20 72 65 63 72  ropping and recr
11050 65 61 74 69 6e 67 20 61 20 74 61 62 6c 65 20 69  eating a table i
11060 73 20 75 73 75 61 6c 6c 79 20 6d 75 63 68 20 66  s usually much f
11070 61 73 74 65 72 20 74 68 61 6e 20 64 65 6c 65 74  aster than delet
11080 69 6e 67 0a 20 20 74 68 65 20 74 61 62 6c 65 20  ing.  the table 
11090 63 6f 6e 74 65 6e 74 20 72 6f 77 20 62 79 20 72  content row by r
110a0 6f 77 2e 20 20 54 68 69 73 20 69 73 20 74 68 65  ow.  This is the
110b0 20 22 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d   "truncate optim
110c0 69 7a 61 74 69 6f 6e 22 2e 0a 7d 0a 0a 43 4f 4d  ization"..}..COM
110d0 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
110e0 49 54 45 5f 4f 4d 49 54 5f 55 54 46 31 36 7d 20  ITE_OMIT_UTF16} 
110f0 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69  {.  This macro i
11100 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 73  s used to omit s
11110 75 70 70 6f 72 74 20 66 6f 72 20 55 54 46 31 36  upport for UTF16
11120 20 74 65 78 74 20 65 6e 63 6f 64 69 6e 67 2e 20   text encoding. 
11130 57 68 65 6e 20 74 68 69 73 20 69 73 0a 20 20 64  When this is.  d
11140 65 66 69 6e 65 64 20 61 6c 6c 20 41 50 49 20 66  efined all API f
11150 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 72 65  unctions that re
11160 74 75 72 6e 20 6f 72 20 61 63 63 65 70 74 20 55  turn or accept U
11170 54 46 31 36 20 65 6e 63 6f 64 65 64 20 74 65 78  TF16 encoded tex
11180 74 20 61 72 65 0a 20 20 75 6e 61 76 61 69 6c 61  t are.  unavaila
11190 62 6c 65 2e 20 54 68 65 73 65 20 66 75 6e 63 74  ble. These funct
111a0 69 6f 6e 73 20 63 61 6e 20 62 65 20 69 64 65 6e  ions can be iden
111b0 74 69 66 69 65 64 20 62 79 20 74 68 65 20 66 61  tified by the fa
111c0 63 74 20 74 68 61 74 20 74 68 65 79 20 65 6e 64  ct that they end
111d0 0a 20 20 77 69 74 68 20 27 31 36 27 2c 20 66 6f  .  with '16', fo
111e0 72 20 65 78 61 6d 70 6c 65 20 5b 73 71 6c 69 74  r example [sqlit
111f0 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 5d 2c  e3_prepare16()],
11200 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
11210 5f 74 65 78 74 31 36 28 29 5d 20 61 6e 64 0a 20  _text16()] and. 
11220 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74   [sqlite3_bind_t
11230 65 78 74 31 36 28 29 5d 2e 0a 7d 0a 0a 43 4f 4d  ext16()]..}..COM
11240 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
11250 49 54 45 5f 4f 4d 49 54 5f 56 41 43 55 55 4d 7d  ITE_OMIT_VACUUM}
11260 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f   {.  When this o
11270 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
11280 2c 20 74 68 65 20 5b 56 41 43 55 55 4d 5d 0a 20  , the [VACUUM]. 
11290 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20   command is not 
112a0 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20  included in the 
112b0 6c 69 62 72 61 72 79 2e 0a 20 20 45 78 65 63 75  library..  Execu
112c0 74 69 6e 67 20 61 20 5b 56 41 43 55 55 4d 5d 20  ting a [VACUUM] 
112d0 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73  statement causes
112e0 20 0a 20 20 61 20 70 61 72 73 65 20 65 72 72 6f   .  a parse erro
112f0 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
11300 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
11310 54 5f 56 49 45 57 7d 20 7b 0a 20 20 44 65 66 69  T_VIEW} {.  Defi
11320 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e  ning this option
11330 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66   omits support f
11340 6f 72 20 56 49 45 57 20 6f 62 6a 65 63 74 73 2e  or VIEW objects.
11350 20 4e 65 69 74 68 65 72 20 74 68 65 20 0a 20 20   Neither the .  
11360 5b 43 52 45 41 54 45 20 56 49 45 57 5d 20 6e 6f  [CREATE VIEW] no
11370 72 20 74 68 65 20 5b 44 52 4f 50 20 56 49 45 57  r the [DROP VIEW
11380 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65  ].  commands are
11390 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68   available in th
113a0 69 73 20 63 61 73 65 2c 20 61 6e 64 0a 20 20 61  is case, and.  a
113b0 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65  ttempting to exe
113c0 63 75 74 65 20 65 69 74 68 65 72 20 77 69 6c 6c  cute either will
113d0 20 72 65 73 75 6c 74 20 69 6e 20 61 20 70 61 72   result in a par
113e0 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20 57 41 52  se error...  WAR
113f0 4e 49 4e 47 3a 20 49 66 20 74 68 69 73 20 6d 61  NING: If this ma
11400 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20  cro is defined, 
11410 69 74 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 70  it will not be p
11420 6f 73 73 69 62 6c 65 20 74 6f 20 6f 70 65 6e 20  ossible to open 
11430 61 20 64 61 74 61 62 61 73 65 0a 20 20 66 6f 72  a database.  for
11440 20 77 68 69 63 68 20 74 68 65 20 73 63 68 65 6d   which the schem
11450 61 20 63 6f 6e 74 61 69 6e 73 20 56 49 45 57 20  a contains VIEW 
11460 6f 62 6a 65 63 74 73 2e 20 0a 7d 0a 0a 43 4f 4d  objects. .}..COM
11470 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
11480 49 54 45 5f 4f 4d 49 54 5f 56 49 52 54 55 41 4c  ITE_OMIT_VIRTUAL
11490 54 41 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20  TABLE} {.  This 
114a0 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70  option omits sup
114b0 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 73 71  port for the [sq
114c0 6c 69 74 65 33 5f 76 74 61 62 20 7c 20 56 69 72  lite3_vtab | Vir
114d0 74 75 61 6c 20 54 61 62 6c 65 5d 0a 20 20 6d 65  tual Table].  me
114e0 63 68 61 6e 69 73 6d 20 69 6e 20 53 51 4c 69 74  chanism in SQLit
114f0 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
11500 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
11510 54 5f 57 41 4c 7d 20 7b 0a 20 20 54 68 69 73 20  T_WAL} {.  This 
11520 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65  option omits the
11530 20 22 5b 77 72 69 74 65 2d 61 68 65 61 64 20 6c   "[write-ahead l
11540 6f 67 5d 22 20 28 61 2e 6b 2e 61 2e 20 22 5b 57  og]" (a.k.a. "[W
11550 41 4c 5d 22 29 20 63 61 70 61 62 69 6c 69 74 79  AL]") capability
11560 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
11570 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
11580 5f 57 53 44 7d 20 7b 0a 20 20 54 68 69 73 20 6f  _WSD} {.  This o
11590 70 74 69 6f 6e 20 62 75 69 6c 64 73 20 61 20 76  ption builds a v
115a0 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 53 51  ersion of the SQ
115b0 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74 68 61  Lite library tha
115c0 74 20 63 6f 6e 74 61 69 6e 73 20 6e 6f 0a 20 20  t contains no.  
115d0 57 72 69 74 61 62 6c 65 20 53 74 61 74 69 63 20  Writable Static 
115e0 44 61 74 61 20 28 57 53 44 29 2e 20 20 57 53 44  Data (WSD).  WSD
115f0 20 69 73 20 67 6c 6f 62 61 6c 20 76 61 72 69 61   is global varia
11600 62 6c 65 73 20 61 6e 64 2f 6f 72 20 73 74 61 74  bles and/or stat
11610 69 63 0a 20 20 76 61 72 69 61 62 6c 65 73 2e 20  ic.  variables. 
11620 20 53 6f 6d 65 20 70 6c 61 74 66 6f 72 6d 73 20   Some platforms 
11630 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 57  do not support W
11640 53 44 2c 20 61 6e 64 20 74 68 69 73 20 6f 70 74  SD, and this opt
11650 69 6f 6e 20 69 73 20 6e 65 63 65 73 73 61 72 79  ion is necessary
11660 0a 20 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20  .  in order for 
11670 53 51 4c 69 74 65 20 74 6f 20 77 6f 72 6b 20 74  SQLite to work t
11680 68 6f 73 65 20 70 6c 61 74 66 6f 72 6d 73 2e 20  hose platforms. 
11690 20 0a 0a 20 20 55 6e 6c 69 6b 65 20 6f 74 68 65   ..  Unlike othe
116a0 72 20 4f 4d 49 54 20 6f 70 74 69 6f 6e 73 20 77  r OMIT options w
116b0 68 69 63 68 20 6d 61 6b 65 20 74 68 65 20 53 51  hich make the SQ
116c0 4c 69 74 65 20 6c 69 62 72 61 72 79 20 73 6d 61  Lite library sma
116d0 6c 6c 65 72 2c 0a 20 20 74 68 69 73 20 6f 70 74  ller,.  this opt
116e0 69 6f 6e 20 61 63 74 75 61 6c 6c 79 20 69 6e 63  ion actually inc
116f0 72 65 61 73 65 73 20 74 68 65 20 73 69 7a 65 20  reases the size 
11700 6f 66 20 53 51 4c 69 74 65 20 61 6e 64 20 6d 61  of SQLite and ma
11710 6b 65 73 20 69 74 20 72 75 6e 0a 20 20 61 20 6c  kes it run.  a l
11720 69 74 74 6c 65 20 73 6c 6f 77 65 72 2e 20 20 4f  ittle slower.  O
11730 6e 6c 79 20 75 73 65 20 74 68 69 73 20 6f 70 74  nly use this opt
11740 69 6f 6e 20 69 66 20 53 51 4c 69 74 65 20 69 73  ion if SQLite is
11750 20 62 65 69 6e 67 20 62 75 69 6c 74 20 66 6f 72   being built for
11760 20 61 6e 0a 20 20 65 6d 62 65 64 64 65 64 20 74   an.  embedded t
11770 61 72 67 65 74 20 74 68 61 74 20 64 6f 65 73 20  arget that does 
11780 6e 6f 74 20 73 75 70 70 6f 72 74 20 57 53 44 2e  not support WSD.
11790 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
117a0 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
117b0 58 46 45 52 5f 4f 50 54 7d 20 7b 0a 20 20 54 68  XFER_OPT} {.  Th
117c0 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
117d0 73 75 70 70 6f 72 74 20 66 6f 72 20 6f 70 74 69  support for opti
117e0 6d 69 7a 61 74 69 6f 6e 73 20 74 68 61 74 20 68  mizations that h
117f0 65 6c 70 20 73 74 61 74 65 6d 65 6e 74 73 0a 20  elp statements. 
11800 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 22 49 4e   of the form "IN
11810 53 45 52 54 20 49 4e 54 4f 20 2e 2e 2e 20 53 45  SERT INTO ... SE
11820 4c 45 43 54 20 2e 2e 2e 22 20 72 75 6e 20 66 61  LECT ..." run fa
11830 73 74 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ster..}..COMPILE
11840 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
11850 55 4e 54 45 53 54 41 42 4c 45 7d 20 7b 0a 20 20  UNTESTABLE} {.  
11860 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
11870 65 20 62 75 69 6c 64 20 69 6e 63 6c 75 64 65 73  e build includes
11880 20 61 20 73 6d 61 6c 6c 20 61 6d 6f 75 6e 74 20   a small amount 
11890 6f 66 20 6c 6f 67 69 63 20 61 73 73 6f 63 69 61  of logic associa
118a0 74 65 64 0a 20 20 77 69 74 68 20 5b 73 71 6c 69  ted.  with [sqli
118b0 74 65 33 5f 74 65 73 74 5f 63 6f 6e 74 72 6f 6c  te3_test_control
118c0 28 29 5d 20 74 6f 20 65 78 65 72 63 69 73 65 0a  ()] to exercise.
118d0 20 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 53    parts of the S
118e0 51 4c 69 74 65 20 63 6f 72 65 20 74 68 61 74 20  QLite core that 
118f0 61 72 65 20 6f 74 68 65 72 77 69 73 65 20 64 69  are otherwise di
11900 66 66 69 63 75 6c 74 20 74 6f 20 76 61 6c 69 64  fficult to valid
11910 61 74 65 2e 0a 20 20 54 68 69 73 20 63 6f 6d 70  ate..  This comp
11920 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
11930 6f 6d 69 74 73 20 74 68 61 74 20 65 78 74 72 61  omits that extra
11940 20 74 65 73 74 69 6e 67 20 6c 6f 67 69 63 2e 20   testing logic. 
11950 20 54 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d   This.  compile-
11960 74 69 6d 65 20 6f 70 74 69 6f 6e 20 77 61 73 20  time option was 
11970 63 61 6c 6c 65 64 20 22 53 51 4c 49 54 45 5f 4f  called "SQLITE_O
11980 4d 49 54 5f 42 55 49 4c 54 49 4e 5f 54 45 53 54  MIT_BUILTIN_TEST
11990 22 20 70 72 69 6f 72 0a 20 20 74 6f 20 53 51 4c  " prior.  to SQL
119a0 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 31 36  ite version 3.16
119b0 2e 30 20 28 5b 64 61 74 65 6f 66 3a 33 2e 31 36  .0 ([dateof:3.16
119c0 2e 30 5d 29 2e 20 20 54 68 65 20 6e 61 6d 65 20  .0]).  The name 
119d0 77 61 73 20 63 68 61 6e 67 65 64 0a 20 20 74 6f  was changed.  to
119e0 20 62 65 74 74 65 72 20 64 65 73 63 72 69 62 65   better describe
119f0 20 74 68 65 20 69 6d 70 6c 69 63 61 74 69 6f 6e   the implication
11a00 73 20 6f 66 20 75 73 69 6e 67 20 69 74 2e 0a 20  s of using it.. 
11a10 20 3c 70 3e 0a 20 20 53 65 74 74 69 6e 67 20 74   <p>.  Setting t
11a20 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
11a30 20 6f 70 74 69 6f 6e 20 70 72 65 76 65 6e 74 73   option prevents
11a40 20 53 51 4c 69 74 65 20 66 72 6f 6d 20 62 65 69   SQLite from bei
11a50 6e 67 20 66 75 6c 6c 79 0a 20 20 74 65 73 74 61  ng fully.  testa
11a60 62 6c 65 2e 20 20 42 72 61 6e 63 68 20 74 65 73  ble.  Branch tes
11a70 74 20 63 6f 76 65 72 61 67 65 20 64 72 6f 70 73  t coverage drops
11a80 20 66 72 6f 6d 20 31 30 30 25 20 64 6f 77 6e 20   from 100% down 
11a90 74 6f 20 61 62 6f 75 74 20 39 35 25 2e 0a 20 20  to about 95%..  
11aa0 3c 70 3e 0a 20 20 53 51 4c 69 74 65 20 64 65 76  <p>.  SQLite dev
11ab0 65 6c 6f 70 65 72 73 20 66 6f 6c 6c 6f 77 20 74  elopers follow t
11ac0 68 65 20 4e 41 53 41 20 70 72 69 6e 63 69 70 6c  he NASA principl
11ad0 65 20 6f 66 0a 20 20 22 66 6c 79 20 77 68 61 74  e of.  "fly what
11ae0 20 79 6f 75 20 74 65 73 74 20 61 6e 64 20 74 65   you test and te
11af0 73 74 20 77 68 61 74 20 79 6f 75 20 66 6c 79 22  st what you fly"
11b00 2e 20 20 54 68 69 73 20 70 72 69 6e 63 69 70 6c  .  This principl
11b10 65 20 69 73 20 76 69 6f 6c 61 74 65 64 0a 20 20  e is violated.  
11b20 69 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  if this option i
11b30 73 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 64 65  s enabled for de
11b40 6c 69 76 65 72 79 20 62 75 74 20 64 69 73 61 62  livery but disab
11b50 6c 65 64 20 66 6f 72 20 74 65 73 74 69 6e 67 2e  led for testing.
11b60 0a 20 20 42 75 74 20 69 66 20 74 68 69 73 20 6f  .  But if this o
11b70 70 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64  ption is enabled
11b80 20 64 75 72 69 6e 67 20 74 65 73 74 69 6e 67 2c   during testing,
11b90 20 6e 6f 74 20 61 6c 6c 20 62 72 61 6e 63 68 65   not all branche
11ba0 73 20 61 72 65 20 0a 20 20 72 65 61 63 68 61 62  s are .  reachab
11bb0 6c 65 2e 20 20 54 68 65 72 65 66 6f 72 65 2c 20  le.  Therefore, 
11bc0 74 68 65 20 75 73 65 20 6f 66 20 74 68 69 73 20  the use of this 
11bd0 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
11be0 69 6f 6e 20 69 73 20 64 69 73 63 6f 75 72 61 67  ion is discourag
11bf0 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
11c00 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 5a 45  PTION {SQLITE_ZE
11c10 52 4f 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54  RO_MALLOC} {.  T
11c20 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
11c30 20 62 6f 74 68 20 74 68 65 20 5b 64 65 66 61 75   both the [defau
11c40 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  lt memory alloca
11c50 74 6f 72 5d 20 61 6e 64 20 74 68 65 0a 20 20 5b  tor] and the.  [
11c60 64 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79  debugging memory
11c70 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 66 72 6f 6d   allocator] from
11c80 20 74 68 65 20 62 75 69 6c 64 20 61 6e 64 20 73   the build and s
11c90 75 62 73 74 69 74 75 74 65 73 20 61 20 73 74 75  ubstitutes a stu
11ca0 62 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  b.  memory alloc
11cb0 61 74 6f 72 20 74 68 61 74 20 61 6c 77 61 79 73  ator that always
11cc0 20 66 61 69 6c 73 2e 20 20 53 51 4c 69 74 65 20   fails.  SQLite 
11cd0 77 69 6c 6c 20 6e 6f 74 20 72 75 6e 20 77 69 74  will not run wit
11ce0 68 20 74 68 69 73 0a 20 20 73 74 75 62 20 6d 65  h this.  stub me
11cf0 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 73  mory allocator s
11d00 69 6e 63 65 20 69 74 20 77 69 6c 6c 20 62 65 20  ince it will be 
11d10 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61  unable to alloca
11d20 74 65 20 6d 65 6d 6f 72 79 2e 20 20 42 75 74 0a  te memory.  But.
11d30 20 20 74 68 69 73 20 73 74 75 62 20 63 61 6e 20    this stub can 
11d40 62 65 20 72 65 70 6c 61 63 65 64 20 61 74 20 73  be replaced at s
11d50 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e 67 0a  tart-time using.
11d60 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69    [sqlite3_confi
11d70 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  g]([SQLITE_CONFI
11d80 47 5f 4d 41 4c 4c 4f 43 5d 2c 2e 2e 2e 29 20 6f  G_MALLOC],...) o
11d90 72 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  r.  [sqlite3_con
11da0 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e  fig]([SQLITE_CON
11db0 46 49 47 5f 48 45 41 50 5d 2c 2e 2e 2e 29 2e 0a  FIG_HEAP],...)..
11dc0 20 20 53 6f 20 74 68 65 20 6e 65 74 20 65 66 66    So the net eff
11dd0 65 63 74 20 6f 66 20 74 68 69 73 20 63 6f 6d 70  ect of this comp
11de0 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
11df0 69 73 20 74 68 61 74 20 69 74 20 61 6c 6c 6f 77  is that it allow
11e00 73 20 53 51 4c 69 74 65 0a 20 20 74 6f 20 62 65  s SQLite.  to be
11e10 20 63 6f 6d 70 69 6c 65 64 20 61 6e 64 20 6c 69   compiled and li
11e20 6e 6b 65 64 20 61 67 61 69 6e 73 74 20 61 20 73  nked against a s
11e30 79 73 74 65 6d 20 6c 69 62 72 61 72 79 20 74 68  ystem library th
11e40 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70  at does not supp
11e50 6f 72 74 0a 20 20 6d 61 6c 6c 6f 63 28 29 2c 20  ort.  malloc(), 
11e60 66 72 65 65 28 29 2c 20 61 6e 64 2f 6f 72 20 72  free(), and/or r
11e70 65 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 3c 2f 74  ealloc()..}..</t
11e80 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 64 65 62  cl>.<a name="deb
11e90 75 67 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61 3e 0a  ugoptions"></a>.
11ea0 3c 68 31 3e 20 41 6e 61 6c 79 73 69 73 20 61 6e  <h1> Analysis an
11eb0 64 20 44 65 62 75 67 67 69 6e 67 20 4f 70 74 69  d Debugging Opti
11ec0 6f 6e 73 3c 2f 68 31 3e 0a 3c 74 63 6c 3e 0a 0a  ons</h1>.<tcl>..
11ed0 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
11ee0 53 51 4c 49 54 45 5f 44 45 42 55 47 7d 20 7b 0a  SQLITE_DEBUG} {.
11ef0 20 20 54 68 65 20 53 51 4c 69 74 65 20 73 6f 75    The SQLite sou
11f00 72 63 65 20 63 6f 64 65 20 63 6f 6e 74 61 69 6e  rce code contain
11f10 73 20 6c 69 74 65 72 61 6c 6c 79 20 74 68 6f 75  s literally thou
11f20 73 61 6e 64 73 20 6f 66 20 61 73 73 65 72 74 28  sands of assert(
11f30 29 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 75  ) statements.  u
11f40 73 65 64 20 74 6f 20 76 65 72 69 66 79 20 69 6e  sed to verify in
11f50 74 65 72 6e 61 6c 20 61 73 73 75 6d 70 74 69 6f  ternal assumptio
11f60 6e 73 20 61 6e 64 20 73 75 62 72 6f 75 74 69 6e  ns and subroutin
11f70 65 20 70 72 65 63 6f 6e 64 69 74 69 6f 6e 73 20  e preconditions 
11f80 61 6e 64 0a 20 20 70 6f 73 74 63 6f 6e 64 69 74  and.  postcondit
11f90 69 6f 6e 73 2e 20 20 54 68 65 73 65 20 61 73 73  ions.  These ass
11fa0 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73  ert() statements
11fb0 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 74 75   are normally tu
11fc0 72 6e 65 64 20 6f 66 66 0a 20 20 28 74 68 65 79  rned off.  (they
11fd0 20 67 65 6e 65 72 61 74 65 20 6e 6f 20 63 6f 64   generate no cod
11fe0 65 29 20 73 69 6e 63 65 20 74 75 72 6e 69 6e 67  e) since turning
11ff0 20 74 68 65 6d 20 6f 6e 20 6d 61 6b 65 73 20 53   them on makes S
12000 51 4c 69 74 65 20 72 75 6e 20 61 70 70 72 6f 78  QLite run approx
12010 69 6d 61 74 65 6c 79 0a 20 20 74 68 72 65 65 20  imately.  three 
12020 74 69 6d 65 73 20 73 6c 6f 77 65 72 2e 20 20 42  times slower.  B
12030 75 74 20 66 6f 72 20 74 65 73 74 69 6e 67 20 61  ut for testing a
12040 6e 64 20 61 6e 61 6c 79 73 69 73 2c 20 69 74 20  nd analysis, it 
12050 69 73 20 75 73 65 66 75 6c 20 74 6f 20 74 75 72  is useful to tur
12060 6e 0a 20 20 74 68 65 20 61 73 73 65 72 74 28 29  n.  the assert()
12070 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e 2e 20   statements on. 
12080 20 54 68 65 20 53 51 4c 49 54 45 5f 44 45 42 55   The SQLITE_DEBU
12090 47 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  G compile-time o
120a0 70 74 69 6f 6e 20 64 6f 65 73 20 74 68 69 73 2e  ption does this.
120b0 0a 20 20 3c 70 3e 53 51 4c 49 54 45 5f 44 45 42  .  <p>SQLITE_DEB
120c0 55 47 20 61 6c 73 6f 20 65 6e 61 62 6c 65 73 20  UG also enables 
120d0 73 6f 6d 65 20 6f 74 68 65 72 20 64 65 62 75 67  some other debug
120e0 67 69 6e 67 20 66 65 61 74 75 72 65 73 2c 20 73  ging features, s
120f0 75 63 68 20 61 73 0a 20 20 73 70 65 63 69 61 6c  uch as.  special
12100 20 5b 50 52 41 47 4d 41 5d 20 73 74 61 74 65 6d   [PRAGMA] statem
12110 65 6e 74 73 20 74 68 61 74 20 74 75 72 6e 20 6f  ents that turn o
12120 6e 20 74 72 61 63 69 6e 67 20 61 6e 64 20 6c 69  n tracing and li
12130 73 74 69 6e 67 20 66 65 61 74 75 72 65 73 0a 20  sting features. 
12140 20 75 73 65 64 20 66 6f 72 20 74 72 6f 75 62 6c   used for troubl
12150 65 73 68 6f 6f 74 69 6e 67 20 61 6e 64 20 61 6e  eshooting and an
12160 61 6c 79 73 69 73 20 6f 66 20 74 68 65 20 5b 56  alysis of the [V
12170 44 42 45 5d 20 61 6e 64 20 63 6f 64 65 20 67 65  DBE] and code ge
12180 6e 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  nerator..}..COMP
12190 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
121a0 54 45 5f 4d 45 4d 44 45 42 55 47 7d 20 7b 0a 20  TE_MEMDEBUG} {. 
121b0 20 54 68 65 20 53 51 4c 49 54 45 5f 4d 45 4d 44   The SQLITE_MEMD
121c0 45 42 55 47 20 6f 70 74 69 6f 6e 20 63 61 75 73  EBUG option caus
121d0 65 73 20 61 6e 20 69 6e 73 74 72 75 6d 65 6e 74  es an instrument
121e0 65 64 20 0a 20 20 5b 64 65 62 75 67 67 69 6e 67  ed .  [debugging
121f0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
12200 72 5d 0a 20 20 74 6f 20 62 65 20 75 73 65 64 20  r].  to be used 
12210 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d  as the default m
12220 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
12230 77 69 74 68 69 6e 20 53 51 4c 69 74 65 2e 20 20  within SQLite.  
12240 54 68 65 0a 20 20 69 6e 73 74 72 75 6d 65 6e 74  The.  instrument
12250 65 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ed memory alloca
12260 74 6f 72 20 63 68 65 63 6b 73 20 66 6f 72 20 6d  tor checks for m
12270 69 73 75 73 65 20 6f 66 20 64 79 6e 61 6d 69 63  isuse of dynamic
12280 61 6c 6c 79 20 61 6c 6c 6f 63 61 74 65 64 0a 20  ally allocated. 
12290 20 6d 65 6d 6f 72 79 2e 20 20 45 78 61 6d 70 6c   memory.  Exampl
122a0 65 73 20 6f 66 20 6d 69 73 75 73 65 20 69 6e 63  es of misuse inc
122b0 6c 75 64 65 20 75 73 69 6e 67 20 6d 65 6d 6f 72  lude using memor
122c0 79 20 61 66 74 65 72 20 69 74 20 69 73 20 66 72  y after it is fr
122d0 65 65 64 2c 0a 20 20 77 72 69 74 69 6e 67 20 6f  eed,.  writing o
122e0 66 66 20 74 68 65 20 65 6e 64 73 20 6f 66 20 61  ff the ends of a
122f0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
12300 6f 6e 2c 20 66 72 65 65 69 6e 67 20 6d 65 6d 6f  on, freeing memo
12310 72 79 20 6e 6f 74 20 70 72 65 76 69 6f 75 73 6c  ry not previousl
12320 79 0a 20 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  y.  obtained fro
12330 6d 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c  m the memory all
12340 6f 63 61 74 6f 72 2c 20 6f 72 20 66 61 69 6c 69  ocator, or faili
12350 6e 67 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65  ng to initialize
12360 20 6e 65 77 6c 79 0a 20 20 61 6c 6c 6f 63 61 74   newly.  allocat
12370 65 64 20 6d 65 6d 6f 72 79 2e 0a 7d 0a 0a 3c 2f  ed memory..}..</
12380 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 77 69  tcl>.<a name="wi
12390 6e 33 32 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61 3e  n32options"></a>
123a0 0a 3c 68 31 3e 20 57 69 6e 64 6f 77 73 2d 53 70  .<h1> Windows-Sp
123b0 65 63 69 66 69 63 20 4f 70 74 69 6f 6e 73 3c 2f  ecific Options</
123c0 68 31 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d 50 49  h1>.<tcl>..COMPI
123d0 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
123e0 45 5f 57 49 4e 33 32 5f 48 45 41 50 5f 43 52 45  E_WIN32_HEAP_CRE
123f0 41 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ATE} {.  This op
12400 74 69 6f 6e 20 66 6f 72 63 65 73 20 74 68 65 20  tion forces the 
12410 57 69 6e 33 32 20 6e 61 74 69 76 65 20 6d 65 6d  Win32 native mem
12420 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 77  ory allocator, w
12430 68 65 6e 20 65 6e 61 62 6c 65 64 2c 20 74 6f 0a  hen enabled, to.
12440 20 20 63 72 65 61 74 65 20 61 20 70 72 69 76 61    create a priva
12450 74 65 20 68 65 61 70 20 74 6f 20 68 6f 6c 64 20  te heap to hold 
12460 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  all memory alloc
12470 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  ations..}..COMPI
12480 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
12490 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 5f 56  E_WIN32_MALLOC_V
124a0 41 4c 49 44 41 54 45 7d 20 7b 0a 20 20 54 68 69  ALIDATE} {.  Thi
124b0 73 20 6f 70 74 69 6f 6e 20 66 6f 72 63 65 73 20  s option forces 
124c0 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65  the Win32 native
124d0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
124e0 72 2c 20 77 68 65 6e 20 65 6e 61 62 6c 65 64 2c  r, when enabled,
124f0 20 74 6f 0a 20 20 6d 61 6b 65 20 73 74 72 61 74   to.  make strat
12500 65 67 69 63 20 63 61 6c 6c 73 20 69 6e 74 6f 20  egic calls into 
12510 74 68 65 20 48 65 61 70 56 61 6c 69 64 61 74 65  the HeapValidate
12520 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 61  () function if a
12530 73 73 65 72 74 28 29 20 69 73 20 61 6c 73 6f 0a  ssert() is also.
12540 20 20 65 6e 61 62 6c 65 64 2e 0a 7d 0a 0a 3c 2f    enabled..}..</
12550 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 6c 69  tcl>.<a name="li
12560 6e 6b 61 67 65 22 3e 3c 2f 61 3e 0a 3c 68 31 3e  nkage"></a>.<h1>
12570 43 6f 6d 70 69 6c 65 72 20 4c 69 6e 6b 61 67 65  Compiler Linkage
12580 20 43 6f 6e 74 72 6f 6c 3c 2f 68 31 3e 0a 0a 3c   Control</h1>..<
12590 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  p>The following 
125a0 6d 61 63 72 6f 73 20 73 70 65 63 69 66 79 0a 69  macros specify.i
125b0 6e 74 65 72 66 61 63 65 20 6c 69 6e 6b 61 67 65  nterface linkage
125c0 20 66 6f 72 20 63 65 72 74 61 69 6e 20 6b 69 6e   for certain kin
125d0 64 73 20 6f 66 20 53 51 4c 69 74 65 20 62 75 69  ds of SQLite bui
125e0 6c 64 73 2e 20 20 54 68 65 20 4d 61 6b 65 66 69  lds.  The Makefi
125f0 6c 65 73 20 77 69 6c 6c 20 6e 6f 72 6d 61 6c 6c  les will normall
12600 79 0a 68 61 6e 64 6c 65 20 73 65 74 74 69 6e 67  y.handle setting
12610 20 74 68 65 73 65 20 6d 61 63 72 6f 73 20 61 75   these macros au
12620 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20 20 41 70  tomatically.  Ap
12630 70 6c 69 63 61 74 69 6f 6e 20 64 65 76 65 6c 6f  plication develo
12640 70 65 72 73 20 73 68 6f 75 6c 64 0a 6e 6f 74 20  pers should.not 
12650 6e 65 65 64 20 74 6f 20 77 6f 72 72 79 20 77 69  need to worry wi
12660 74 68 20 74 68 65 73 65 20 6d 61 63 72 6f 73 2e  th these macros.
12670 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20    The following 
12680 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 61 62  documentation ab
12690 6f 75 74 20 74 68 65 73 65 20 0a 6d 61 63 72 6f  out these .macro
126a0 73 20 69 73 20 69 6e 63 6c 75 64 65 64 20 63 6f  s is included co
126b0 6d 70 6c 65 74 65 6e 65 73 73 2e 3c 2f 70 3e 0a  mpleteness.</p>.
126c0 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f  .<tcl>.COMPILE_O
126d0 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 41 50  PTION {SQLITE_AP
126e0 49 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  I} {.  This macr
126f0 6f 20 69 64 65 6e 74 69 66 69 65 73 20 61 20 65  o identifies a e
12700 78 74 65 72 6e 61 6c 6c 79 20 76 69 73 69 62 6c  xternally visibl
12710 65 20 69 6e 74 65 72 66 61 63 65 20 66 6f 72 20  e interface for 
12720 53 51 4c 69 74 65 2e 0a 20 20 54 68 69 73 20 6d  SQLite..  This m
12730 61 63 72 6f 20 69 73 20 73 6f 6d 65 74 69 6d 65  acro is sometime
12740 73 20 73 65 74 20 74 6f 20 22 65 78 74 65 72 6e  s set to "extern
12750 22 2e 20 20 42 75 74 20 74 68 65 20 64 65 66 69  ".  But the defi
12760 6e 69 74 69 6f 6e 20 69 73 0a 20 20 63 6f 6d 70  nition is.  comp
12770 69 6c 65 72 2d 73 70 65 63 69 66 69 63 2e 0a 7d  iler-specific..}
12780 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
12790 20 7b 53 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c   {SQLITE_APICALL
127a0 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
127b0 20 69 64 65 6e 74 69 66 69 65 73 20 74 68 65 20   identifies the 
127c0 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69  calling conventi
127d0 6f 6e 20 75 73 65 64 20 62 79 20 70 75 62 6c 69  on used by publi
127e0 63 20 69 6e 74 65 72 66 61 63 65 0a 20 20 72 6f  c interface.  ro
127f0 75 74 69 6e 65 73 20 69 6e 20 53 51 4c 69 74 65  utines in SQLite
12800 2e 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
12810 20 6e 6f 72 6d 61 6c 6c 79 20 64 65 66 69 6e 65   normally define
12820 64 20 74 6f 20 62 65 20 6e 6f 74 68 69 6e 67 2c  d to be nothing,
12830 0a 20 20 74 68 6f 75 67 68 20 6f 6e 20 57 69 6e  .  though on Win
12840 64 6f 77 73 20 62 75 69 6c 64 73 20 69 74 20 63  dows builds it c
12850 61 6e 20 73 6f 6d 65 74 69 6d 65 73 20 62 65 20  an sometimes be 
12860 73 65 74 20 74 6f 20 22 5f 5f 63 64 65 63 6c 22  set to "__cdecl"
12870 20 6f 72 20 22 5f 5f 73 74 64 63 61 6c 6c 22 2e   or "__stdcall".
12880 0a 20 20 54 68 65 20 22 5f 5f 63 64 65 63 6c 22  .  The "__cdecl"
12890 20 73 65 74 74 69 6e 67 20 69 73 20 74 68 65 20   setting is the 
128a0 64 65 66 61 75 6c 74 2c 20 62 75 74 20 22 5f 5f  default, but "__
128b0 73 74 64 63 61 6c 6c 22 20 69 73 20 75 73 65 64  stdcall" is used
128c0 20 77 68 65 6e 20 53 51 4c 69 74 65 0a 20 20 69   when SQLite.  i
128d0 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65  s intended to be
128e0 20 63 6f 6d 70 69 6c 65 64 20 61 73 20 61 20 57   compiled as a W
128f0 69 6e 64 6f 77 73 20 73 79 73 74 65 6d 20 6c 69  indows system li
12900 62 72 61 72 79 2e 0a 20 20 3c 70 3e 0a 20 20 41  brary..  <p>.  A
12910 20 73 69 6e 67 6c 65 20 66 75 6e 63 74 69 6f 6e   single function
12920 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 73 68 6f   declaration sho
12930 75 6c 64 20 63 6f 6e 74 61 69 6e 20 6e 6f 20 6d  uld contain no m
12940 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 6f 66 0a  ore than one of.
12950 20 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a    the following:
12960 20 20 5b 53 51 4c 49 54 45 5f 41 50 49 43 41 4c    [SQLITE_APICAL
12970 4c 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 41 4c 4c  L], [SQLITE_CALL
12980 42 41 43 4b 5d 2c 20 5b 53 51 4c 49 54 45 5f 43  BACK], [SQLITE_C
12990 44 45 43 4c 5d 2c 0a 20 20 6f 72 20 5b 53 51 4c  DECL],.  or [SQL
129a0 49 54 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a 7d 0a  ITE_SYSCALL]..}.
129b0 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
129c0 7b 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b  {SQLITE_CALLBACK
129d0 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
129e0 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 63   specifies the c
129f0 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f  alling conventio
12a00 6e 20 75 73 65 64 20 62 79 20 63 61 6c 6c 62 61  n used by callba
12a10 63 6b 20 70 6f 69 6e 74 65 72 73 0a 20 20 69 6e  ck pointers.  in
12a20 20 53 51 4c 69 74 65 2e 20 20 54 68 69 73 20 6d   SQLite.  This m
12a30 61 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c 79  acro is normally
12a40 20 64 65 66 69 6e 65 64 20 74 6f 20 62 65 20 6e   defined to be n
12a50 6f 74 68 69 6e 67 2c 20 74 68 6f 75 67 68 20 6f  othing, though o
12a60 6e 20 57 69 6e 64 6f 77 73 0a 20 20 62 75 69 6c  n Windows.  buil
12a70 64 73 20 69 74 20 63 61 6e 20 73 6f 6d 65 74 69  ds it can someti
12a80 6d 65 73 20 62 65 20 73 65 74 20 74 6f 20 22 5f  mes be set to "_
12a90 5f 63 64 65 63 6c 22 20 6f 72 20 22 5f 5f 73 74  _cdecl" or "__st
12aa0 64 63 61 6c 6c 22 2e 20 20 54 68 65 0a 20 20 22  dcall".  The.  "
12ab0 5f 5f 63 64 65 63 6c 22 20 73 65 74 74 69 6e 67  __cdecl" setting
12ac0 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 2c   is the default,
12ad0 20 62 75 74 20 22 5f 5f 73 74 64 63 61 6c 6c 22   but "__stdcall"
12ae0 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 53 51   is used when SQ
12af0 4c 69 74 65 0a 20 20 69 73 20 69 6e 74 65 6e 64  Lite.  is intend
12b00 65 64 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c 65  ed to be compile
12b10 64 20 61 73 20 61 20 57 69 6e 64 6f 77 73 20 73  d as a Windows s
12b20 79 73 74 65 6d 20 6c 69 62 72 61 72 79 2e 0a 20  ystem library.. 
12b30 20 3c 70 3e 0a 20 20 41 20 73 69 6e 67 6c 65 20   <p>.  A single 
12b40 66 75 6e 63 74 69 6f 6e 20 64 65 63 6c 61 72 61  function declara
12b50 74 69 6f 6e 20 73 68 6f 75 6c 64 20 63 6f 6e 74  tion should cont
12b60 61 69 6e 20 6e 6f 20 6d 6f 72 65 20 74 68 61 6e  ain no more than
12b70 20 6f 6e 65 20 6f 66 0a 20 20 74 68 65 20 66 6f   one of.  the fo
12b80 6c 6c 6f 77 69 6e 67 3a 20 20 5b 53 51 4c 49 54  llowing:  [SQLIT
12b90 45 5f 41 50 49 43 41 4c 4c 5d 2c 20 5b 53 51 4c  E_APICALL], [SQL
12ba0 49 54 45 5f 43 41 4c 4c 42 41 43 4b 5d 2c 20 5b  ITE_CALLBACK], [
12bb0 53 51 4c 49 54 45 5f 43 44 45 43 4c 5d 2c 0a 20  SQLITE_CDECL],. 
12bc0 20 6f 72 20 5b 53 51 4c 49 54 45 5f 53 59 53 43   or [SQLITE_SYSC
12bd0 41 4c 4c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ALL]..}..COMPILE
12be0 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
12bf0 43 44 45 43 4c 7d 20 7b 0a 20 20 54 68 69 73 20  CDECL} {.  This 
12c00 6d 61 63 72 6f 20 73 70 65 63 69 66 69 65 73 20  macro specifies 
12c10 74 68 65 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76  the calling conv
12c20 65 6e 74 69 6f 6e 20 75 73 65 64 20 62 79 20 76  ention used by v
12c30 61 72 61 72 67 73 20 69 6e 74 65 72 66 61 63 65  arargs interface
12c40 0a 20 20 72 6f 75 74 69 6e 65 73 20 69 6e 20 53  .  routines in S
12c50 51 4c 69 74 65 2e 20 20 54 68 69 73 20 6d 61 63  QLite.  This mac
12c60 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 64  ro is normally d
12c70 65 66 69 6e 65 64 20 74 6f 20 62 65 20 6e 6f 74  efined to be not
12c80 68 69 6e 67 2c 0a 20 20 74 68 6f 75 67 68 20 6f  hing,.  though o
12c90 6e 20 57 69 6e 64 6f 77 73 20 62 75 69 6c 64 73  n Windows builds
12ca0 20 69 74 20 63 61 6e 20 73 6f 6d 65 74 69 6d 65   it can sometime
12cb0 73 20 62 65 20 73 65 74 20 74 6f 20 22 5f 5f 63  s be set to "__c
12cc0 64 65 63 6c 22 2e 20 20 54 68 69 73 0a 20 20 6d  decl".  This.  m
12cd0 61 63 72 6f 20 69 73 20 75 73 65 64 20 6f 6e 20  acro is used on 
12ce0 76 61 72 61 72 67 73 20 72 6f 75 74 69 6e 65 73  varargs routines
12cf0 20 61 6e 64 20 73 6f 20 63 61 6e 6e 6f 74 20 62   and so cannot b
12d00 65 20 73 65 74 20 74 6f 20 22 5f 5f 73 74 64 63  e set to "__stdc
12d10 61 6c 6c 22 0a 20 20 73 69 6e 63 65 20 74 68 65  all".  since the
12d20 20 5f 5f 73 74 64 63 61 6c 6c 20 63 61 6c 6c 69   __stdcall calli
12d30 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 64 6f  ng convention do
12d40 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 76  es not support v
12d50 61 72 61 72 67 73 20 66 75 6e 63 74 69 6f 6e 73  arargs functions
12d60 2e 0a 20 20 3c 70 3e 0a 20 20 41 20 73 69 6e 67  ..  <p>.  A sing
12d70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 64 65 63 6c  le function decl
12d80 61 72 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 63  aration should c
12d90 6f 6e 74 61 69 6e 20 6e 6f 20 6d 6f 72 65 20 74  ontain no more t
12da0 68 61 6e 20 6f 6e 65 20 6f 66 0a 20 20 74 68 65  han one of.  the
12db0 20 66 6f 6c 6c 6f 77 69 6e 67 3a 20 20 5b 53 51   following:  [SQ
12dc0 4c 49 54 45 5f 41 50 49 43 41 4c 4c 5d 2c 20 5b  LITE_APICALL], [
12dd0 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b 5d  SQLITE_CALLBACK]
12de0 2c 20 5b 53 51 4c 49 54 45 5f 43 44 45 43 4c 5d  , [SQLITE_CDECL]
12df0 2c 0a 20 20 6f 72 20 5b 53 51 4c 49 54 45 5f 53  ,.  or [SQLITE_S
12e00 59 53 43 41 4c 4c 5d 2e 0a 7d 0a 0a 43 4f 4d 50  YSCALL]..}..COMP
12e10 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
12e20 54 45 5f 53 59 53 43 41 4c 4c 7d 20 7b 0a 20 20  TE_SYSCALL} {.  
12e30 54 68 69 73 20 6d 61 63 72 6f 20 69 64 65 6e 74  This macro ident
12e40 69 66 69 65 73 20 74 68 65 20 63 61 6c 6c 69 6e  ifies the callin
12e50 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 75 73 65  g convention use
12e60 64 20 62 79 20 6f 70 65 72 61 74 69 6e 67 20 73  d by operating s
12e70 79 73 74 65 6d 0a 20 20 69 6e 74 65 72 66 61 63  ystem.  interfac
12e80 65 73 20 66 6f 72 20 74 61 72 67 65 74 20 74 68  es for target th
12e90 65 20 70 6c 61 74 66 6f 72 6d 20 66 6f 72 20 61  e platform for a
12ea0 6e 20 53 51 4c 69 74 65 20 62 75 69 6c 64 2e 0a  n SQLite build..
12eb0 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20    This macro is 
12ec0 6e 6f 72 6d 61 6c 6c 79 20 64 65 66 69 6e 65 64  normally defined
12ed0 20 74 6f 20 62 65 20 6e 6f 74 68 69 6e 67 2c 20   to be nothing, 
12ee0 74 68 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f 77  though on Window
12ef0 73 0a 20 20 62 75 69 6c 64 73 20 69 74 20 63 61  s.  builds it ca
12f00 6e 20 73 6f 6d 65 74 69 6d 65 73 20 62 65 20 73  n sometimes be s
12f10 65 74 20 74 6f 20 22 5f 5f 73 74 64 63 61 6c 6c  et to "__stdcall
12f20 22 2e 0a 20 20 3c 70 3e 0a 20 20 41 20 73 69 6e  "..  <p>.  A sin
12f30 67 6c 65 20 66 75 6e 63 74 69 6f 6e 20 64 65 63  gle function dec
12f40 6c 61 72 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20  laration should 
12f50 63 6f 6e 74 61 69 6e 20 6e 6f 20 6d 6f 72 65 20  contain no more 
12f60 74 68 61 6e 20 6f 6e 65 20 6f 66 0a 20 20 74 68  than one of.  th
12f70 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a 20 20 5b 53  e following:  [S
12f80 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c 5d 2c 20  QLITE_APICALL], 
12f90 5b 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b  [SQLITE_CALLBACK
12fa0 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 44 45 43 4c  ], [SQLITE_CDECL
12fb0 5d 2c 0a 20 20 6f 72 20 5b 53 51 4c 49 54 45 5f  ],.  or [SQLITE_
12fc0 53 59 53 43 41 4c 4c 5d 2e 0a 7d 0a 0a 43 4f 4d  SYSCALL]..}..COM
12fd0 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
12fe0 49 54 45 5f 54 43 4c 41 50 49 7d 20 7b 0a 20 20  ITE_TCLAPI} {.  
12ff0 54 68 69 73 20 6d 61 63 72 6f 20 73 70 65 63 69  This macro speci
13000 66 69 65 73 20 74 68 65 20 63 61 6c 6c 69 6e 67  fies the calling
13010 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 75 73 65 64   convention used
13020 20 62 79 20 74 68 65 20 0a 20 20 5b 68 74 74 70   by the .  [http
13030 3a 2f 2f 77 77 77 2e 74 63 6c 2e 74 6b 20 7c 20  ://www.tcl.tk | 
13040 54 43 4c 5d 20 6c 69 62 72 61 72 79 20 69 6e 74  TCL] library int
13050 65 72 66 61 63 65 20 72 6f 75 74 69 6e 65 73 2e  erface routines.
13060 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
13070 20 6e 6f 74 20 75 73 65 64 20 62 79 20 74 68 65   not used by the
13080 20 53 51 4c 69 74 65 20 63 6f 72 65 2c 20 62 75   SQLite core, bu
13090 74 20 6f 6e 6c 79 20 62 79 20 74 68 65 20 5b 54  t only by the [T
130a0 43 4c 20 49 6e 74 65 72 66 61 63 65 5d 0a 20 20  CL Interface].  
130b0 61 6e 64 20 5b 54 43 4c 20 74 65 73 74 20 73 75  and [TCL test su
130c0 69 74 65 5d 2e 0a 20 20 54 68 69 73 20 6d 61 63  ite]..  This mac
130d0 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 64  ro is normally d
130e0 65 66 69 6e 65 64 20 74 6f 20 62 65 20 6e 6f 74  efined to be not
130f0 68 69 6e 67 2c 0a 20 20 74 68 6f 75 67 68 20 6f  hing,.  though o
13100 6e 20 57 69 6e 64 6f 77 73 20 62 75 69 6c 64 73  n Windows builds
13110 20 69 74 20 63 61 6e 20 73 6f 6d 65 74 69 6d 65   it can sometime
13120 73 20 62 65 20 73 65 74 20 74 6f 20 22 5f 5f 63  s be set to "__c
13130 64 65 63 6c 22 2e 20 20 54 68 69 73 0a 20 20 6d  decl".  This.  m
13140 61 63 72 6f 20 69 73 20 75 73 65 64 20 6f 6e 20  acro is used on 
13150 54 43 4c 20 6c 69 62 72 61 72 79 20 69 6e 74 65  TCL library inte
13160 72 66 61 63 65 20 72 6f 75 74 69 6e 65 73 20 77  rface routines w
13170 68 69 63 68 20 61 72 65 20 61 6c 77 61 79 73 20  hich are always 
13180 63 6f 6d 70 69 6c 65 64 0a 20 20 61 73 20 5f 5f  compiled.  as __
13190 63 64 65 63 6c 2c 20 65 76 65 6e 20 6f 6e 20 70  cdecl, even on p
131a0 6c 61 74 66 6f 72 6d 73 20 74 68 61 74 20 70 72  latforms that pr
131b0 65 66 65 72 20 74 6f 20 75 73 65 20 5f 5f 73 74  efer to use __st
131c0 64 63 61 6c 6c 2c 20 73 6f 20 74 68 69 73 0a 20  dcall, so this. 
131d0 20 6d 61 63 72 6f 20 73 68 6f 75 6c 64 20 6e 6f   macro should no
131e0 74 20 62 65 20 73 65 74 20 74 6f 20 5f 5f 73 74  t be set to __st
131f0 64 63 61 6c 6c 20 75 6e 6c 65 73 73 20 74 68 65  dcall unless the
13200 20 70 6c 61 74 66 6f 72 6d 20 61 73 20 61 20 63   platform as a c
13210 75 73 74 6f 6d 0a 20 20 54 43 4c 20 6c 69 62 72  ustom.  TCL libr
13220 61 72 79 20 62 75 69 6c 64 20 74 68 61 74 20 73  ary build that s
13230 75 70 70 6f 72 74 73 20 5f 5f 73 74 64 63 61 6c  upports __stdcal
13240 6c 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 69 73 20  l..  <p>.  This 
13250 6d 61 63 72 6f 20 6d 61 79 20 6e 6f 74 20 62 65  macro may not be
13260 20 75 73 65 64 20 69 6e 20 63 6f 6d 62 69 6e 61   used in combina
13270 74 69 6f 6e 20 77 69 74 68 20 61 6e 79 20 6f 66  tion with any of
13280 20 5b 53 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c   [SQLITE_APICALL
13290 5d 2c 0a 20 20 5b 53 51 4c 49 54 45 5f 43 41 4c  ],.  [SQLITE_CAL
132a0 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49 54 45 5f  LBACK], [SQLITE_
132b0 43 44 45 43 4c 5d 2c 20 6f 72 20 5b 53 51 4c 49  CDECL], or [SQLI
132c0 54 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a 7d 0a 0a  TE_SYSCALL]..}..
132d0 0a 3c 2f 74 63 6c 3e 0a                          .</tcl>.