Documentation Source Text

Hex Artifact Content
Login

Artifact 110299f856e65e88fe3c19231fa8175acea0ae6a:


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 65 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20  te all of these 
0610: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
0620: 69 6f 6e 73 20 61 72 65 20 75 73 61 62 6c 65 20  ions are usable 
0630: 62 79 20 65 76 65 72 79 20 61 70 70 6c 69 63 61  by every applica
0640: 74 69 6f 6e 2e 0a 46 6f 72 20 65 78 61 6d 70 6c  tion..For exampl
0650: 65 2c 20 74 68 65 20 53 51 4c 49 54 45 5f 54 48  e, the SQLITE_TH
0660: 52 45 41 44 53 41 46 45 3d 30 20 6f 70 74 69 6f  READSAFE=0 optio
0670: 6e 20 69 73 20 6f 6e 6c 79 20 75 73 61 62 6c 65  n is only usable
0680: 20 62 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73   by applications
0690: 0a 74 68 61 74 20 6e 65 76 65 72 20 61 63 63 65  .that never acce
06a0: 73 73 20 53 51 4c 69 74 65 20 66 72 6f 6d 20 6d  ss SQLite from m
06b0: 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 74 68 72  ore than one thr
06c0: 65 61 64 20 61 74 20 61 20 74 69 6d 65 2e 20 20  ead at a time.  
06d0: 41 6e 64 20 74 68 65 0a 53 51 4c 49 54 45 5f 4f  And the.SQLITE_O
06e0: 4d 49 54 5f 50 52 4f 47 45 53 53 5f 43 41 4c 4c  MIT_PROGESS_CALL
06f0: 42 41 43 4b 20 6f 70 74 69 6f 6e 20 69 73 20 6f  BACK option is o
0700: 6e 6c 79 20 75 73 61 62 6c 65 20 62 79 20 61 70  nly usable by ap
0710: 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 0a  plications that.
0720: 64 6f 65 20 6e 6f 74 20 75 73 65 20 74 68 65 20  doe not use the 
0730: 5b 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73  [sqlite3_progres
0740: 73 5f 68 61 6e 64 6c 65 72 28 29 5d 20 69 6e 74  s_handler()] int
0750: 65 72 66 61 63 65 2e 20 20 41 6e 64 20 73 6f 20  erface.  And so 
0760: 66 6f 72 74 68 2e 0a 0a 3c 70 3e 49 74 20 69 73  forth...<p>It is
0770: 20 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 74   impossible to t
0780: 65 73 74 20 65 76 65 72 79 20 70 6f 73 73 69 62  est every possib
0790: 6c 65 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f  le combination o
07a0: 66 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f  f compile-time.o
07b0: 70 74 69 6f 6e 73 20 66 6f 72 20 53 51 4c 69 74  ptions for SQLit
07c0: 65 2e 20 20 42 75 74 20 74 68 65 20 66 6f 6c 6c  e.  But the foll
07d0: 6f 77 69 6e 67 20 73 65 74 20 6f 66 20 63 6f 6d  owing set of com
07e0: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
07f0: 73 20 69 73 0a 6f 6e 65 20 63 6f 6e 66 69 67 75  s is.one configu
0800: 72 61 74 69 6f 6e 20 74 68 61 74 20 69 73 20 61  ration that is a
0810: 6c 77 61 79 73 20 66 75 6c 6c 79 20 74 65 73 74  lways fully test
0820: 65 64 2e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70  ed...<ol>.<li><p
0830: 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 54 48 52 45  ><b>[SQLITE_THRE
0840: 41 44 53 41 46 45 3d 30 5d 3c 2f 62 3e 2e 0a 53  ADSAFE=0]</b>..S
0850: 65 74 74 69 6e 67 20 2d 44 53 51 4c 49 54 45 5f  etting -DSQLITE_
0860: 54 48 52 45 41 44 53 41 46 45 3d 30 20 63 61 75  THREADSAFE=0 cau
0870: 73 65 73 20 61 6c 6c 20 6f 66 20 74 68 65 20 6d  ses all of the m
0880: 75 74 65 78 20 61 6e 64 20 74 68 72 65 61 64 2d  utex and thread-
0890: 73 61 66 65 74 79 20 6c 6f 67 69 63 0a 69 6e 20  safety logic.in 
08a0: 53 51 4c 69 74 65 20 74 6f 20 62 65 20 6f 6d 69  SQLite to be omi
08b0: 74 74 65 64 2e 20 20 54 68 69 73 20 69 73 20 74  tted.  This is t
08c0: 68 65 20 73 69 6e 67 6c 65 20 63 6f 6d 70 69 6c  he single compil
08d0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68  e-time option th
08e0: 61 74 20 6d 61 6b 65 73 0a 74 68 65 20 6d 6f 73  at makes.the mos
08f0: 74 20 64 69 66 66 65 72 65 6e 63 65 20 69 6e 20  t difference in 
0900: 6f 70 74 69 6d 69 7a 69 6e 67 20 74 68 65 20 70  optimizing the p
0910: 65 72 66 6f 72 6d 61 6e 63 65 20 6f 66 20 53 51  erformance of SQ
0920: 4c 69 74 65 2e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62  Lite...<li><p><b
0930: 3e 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  >[SQLITE_DEFAULT
0940: 5f 4d 45 4d 53 54 41 54 55 53 3d 30 5d 3c 2f 62  _MEMSTATUS=0]</b
0950: 3e 2e 0a 54 68 69 73 20 73 65 74 74 69 6e 67 20  >..This setting 
0960: 63 61 75 73 65 73 20 74 68 65 20 5b 73 71 6c 69  causes the [sqli
0970: 74 65 33 5f 73 74 61 74 75 73 28 29 5d 20 69 6e  te3_status()] in
0980: 74 65 72 66 61 63 65 73 20 74 68 61 74 20 74 72  terfaces that tr
0990: 61 63 6b 20 6d 65 6d 6f 72 79 20 75 73 61 67 65  ack memory usage
09a0: 0a 74 6f 20 62 65 20 64 69 73 61 62 6c 65 64 2e  .to be disabled.
09b0: 20 20 54 68 69 73 20 68 65 6c 70 73 20 74 68 65    This helps the
09c0: 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   [sqlite3_malloc
09d0: 28 29 5d 20 72 6f 75 74 69 6e 65 73 20 72 75 6e  ()] routines run
09e0: 20 6d 75 63 68 20 66 61 73 74 65 72 2c 0a 61 6e   much faster,.an
09f0: 64 20 73 69 6e 63 65 20 53 51 4c 69 74 65 20 75  d since SQLite u
0a00: 73 65 73 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  ses [sqlite3_mal
0a10: 6c 6f 63 28 29 5d 20 69 6e 74 65 72 6e 61 6c 6c  loc()] internall
0a20: 79 2c 20 74 68 69 73 20 68 65 6c 70 73 20 74 6f  y, this helps to
0a30: 20 6d 61 6b 65 20 74 68 65 0a 65 6e 74 69 72 65   make the.entire
0a40: 20 6c 69 62 72 61 72 79 20 66 61 73 74 65 72 2e   library faster.
0a50: 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51 4c  ..<li><p><b>[SQL
0a60: 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f  ITE_DEFAULT_WAL_
0a70: 53 59 4e 43 48 52 4f 4e 4f 55 53 3d 31 5d 3c 2f  SYNCHRONOUS=1]</
0a80: 62 3e 2e 0a 46 6f 72 20 6d 61 78 69 6d 75 6d 20  b>..For maximum 
0a90: 64 61 74 61 62 61 73 65 20 73 61 66 65 74 79 20  database safety 
0aa0: 66 6f 6c 6c 6f 77 69 6e 67 20 61 20 70 6f 77 65  following a powe
0ab0: 72 20 6c 6f 73 65 2c 20 74 68 65 20 73 65 74 74  r lose, the sett
0ac0: 69 6e 67 20 6f 66 0a 5b 50 52 41 47 4d 41 20 73  ing of.[PRAGMA s
0ad0: 79 6e 63 68 72 6f 6e 6f 75 73 3d 46 55 4c 4c 5d  ynchronous=FULL]
0ae0: 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2e   is recommended.
0af0: 20 20 48 6f 77 65 76 65 72 2c 20 69 6e 20 5b 57    However, in [W
0b00: 41 4c 20 6d 6f 64 65 5d 2c 20 63 6f 6d 70 6c 65  AL mode], comple
0b10: 74 65 0a 64 61 74 61 62 61 73 65 20 69 6e 74 65  te.database inte
0b20: 67 72 69 74 79 20 69 73 20 67 75 61 72 61 6e 74  grity is guarant
0b30: 65 65 64 20 77 69 74 68 20 5b 50 52 41 47 4d 41  eed with [PRAGMA
0b40: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d 4e 4f 52   synchronous=NOR
0b50: 4d 41 4c 5d 2e 20 20 57 69 74 68 0a 5b 50 52 41  MAL].  With.[PRA
0b60: 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d  GMA synchronous=
0b70: 4e 4f 52 4d 41 4c 5d 20 69 6e 20 5b 57 41 4c 20  NORMAL] in [WAL 
0b80: 6d 6f 64 65 5d 2c 20 72 65 63 65 6e 74 20 63 68  mode], recent ch
0b90: 61 6e 67 65 73 20 74 6f 20 74 68 65 20 64 61 74  anges to the dat
0ba0: 61 62 61 73 65 20 6d 69 67 68 74 0a 62 65 20 72  abase might.be r
0bb0: 6f 6c 6c 65 64 20 62 61 63 6b 20 62 79 20 61 20  olled back by a 
0bc0: 70 6f 77 65 72 20 6c 6f 73 73 2c 20 62 75 74 20  power loss, but 
0bd0: 74 68 65 20 64 61 74 61 62 61 73 65 20 77 69 6c  the database wil
0be0: 6c 20 6e 6f 74 20 62 65 20 63 6f 72 72 75 70 74  l not be corrupt
0bf0: 65 64 2e 0a 46 75 72 74 68 65 72 6d 6f 72 65 2c  ed..Furthermore,
0c00: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d   transaction com
0c10: 6d 69 74 20 69 73 20 6d 75 63 68 20 66 61 73 74  mit is much fast
0c20: 65 72 20 69 6e 20 57 41 4c 20 6d 6f 64 65 20 75  er in WAL mode u
0c30: 73 69 6e 67 0a 73 79 6e 63 68 72 6f 6e 6f 75 73  sing.synchronous
0c40: 3d 4e 4f 52 4d 41 4c 20 74 68 61 6e 20 77 69 74  =NORMAL than wit
0c50: 68 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 79  h the default sy
0c60: 6e 63 68 72 6f 6e 6f 75 73 3d 46 55 4c 4c 2e 20  nchronous=FULL. 
0c70: 20 46 6f 72 20 74 68 65 73 65 0a 72 65 61 73 6f   For these.reaso
0c80: 6e 73 2c 20 69 74 20 69 73 20 72 65 63 6f 6d 6d  ns, it is recomm
0c90: 65 6e 64 65 64 20 74 68 61 74 20 74 68 65 20 73  ended that the s
0ca0: 79 6e 63 68 72 6f 6e 6f 75 73 20 73 65 74 74 69  ynchronous setti
0cb0: 6e 67 20 62 65 20 63 68 61 6e 67 65 64 20 66 72  ng be changed fr
0cc0: 6f 6d 0a 46 55 4c 4c 20 74 6f 20 4e 4f 52 4d 41  om.FULL to NORMA
0cd0: 4c 20 77 68 65 6e 20 73 77 69 74 63 68 69 6e 67  L when switching
0ce0: 20 74 6f 20 57 41 4c 20 6d 6f 64 65 2e 20 20 54   to WAL mode.  T
0cf0: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
0d00: 20 6f 70 74 69 6f 6e 20 77 69 6c 6c 0a 61 63 63   option will.acc
0d10: 6f 6d 70 6c 69 73 68 20 74 68 61 74 2e 0a 0a 3c  omplish that...<
0d20: 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45  li><p><b>[SQLITE
0d30: 5f 4c 49 4b 45 5f 44 4f 45 53 4e 54 5f 4d 41 54  _LIKE_DOESNT_MAT
0d40: 43 48 5f 42 4c 4f 42 53 5d 3c 2f 62 3e 2e 0a 48  CH_BLOBS]</b>..H
0d50: 69 73 74 6f 72 69 63 61 6c 6c 79 2c 20 53 51 4c  istorically, SQL
0d60: 69 74 65 20 68 61 73 20 61 6c 6c 6f 77 65 64 20  ite has allowed 
0d70: 42 4c 4f 42 20 6f 70 65 72 61 6e 64 73 20 74 6f  BLOB operands to
0d80: 20 74 68 65 20 5b 4c 49 4b 45 5d 20 61 6e 64 20   the [LIKE] and 
0d90: 5b 47 4c 4f 42 5d 0a 6f 70 65 72 61 74 6f 72 73  [GLOB].operators
0da0: 2e 20 20 42 75 74 20 68 61 76 69 6e 67 20 61 20  .  But having a 
0db0: 42 4c 4f 42 20 61 73 20 61 6e 20 6f 70 65 72 61  BLOB as an opera
0dc0: 6e 64 20 6f 66 20 5b 4c 49 4b 45 5d 20 6f 72 20  nd of [LIKE] or 
0dd0: 5b 47 4c 4f 42 5d 20 63 6f 6d 70 6c 69 63 61 74  [GLOB] complicat
0de0: 65 73 0a 61 6e 64 20 73 6c 6f 77 73 20 74 68 65  es.and slows the
0df0: 20 5b 4c 49 4b 45 20 6f 70 74 69 6d 69 7a 61 74   [LIKE optimizat
0e00: 69 6f 6e 5d 2e 20 20 57 68 65 6e 20 74 68 69 73  ion].  When this
0e10: 20 6f 70 74 69 6f 6e 20 69 73 20 73 65 74 2c 20   option is set, 
0e20: 69 74 20 6d 65 61 6e 73 20 74 68 61 74 0a 74 68  it means that.th
0e30: 65 20 4c 49 4b 45 20 61 6e 64 20 47 4c 4f 42 20  e LIKE and GLOB 
0e40: 6f 70 65 72 61 74 6f 72 73 20 61 6c 77 61 79 73  operators always
0e50: 20 72 65 74 75 72 6e 20 46 41 4c 53 45 20 69 66   return FALSE if
0e60: 20 65 69 74 68 65 72 20 6f 70 65 72 61 6e 64 20   either operand 
0e70: 69 73 20 61 20 42 4c 4f 42 2e 0a 54 68 61 74 20  is a BLOB..That 
0e80: 73 69 6d 70 6c 69 66 69 65 73 20 74 68 65 20 69  simplifies the i
0e90: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
0ea0: 20 74 68 65 20 5b 4c 49 4b 45 20 6f 70 74 69 6d   the [LIKE optim
0eb0: 69 7a 61 74 69 6f 6e 5d 20 61 6e 64 20 61 6c 6c  ization] and all
0ec0: 6f 77 73 0a 71 75 65 72 69 65 73 20 74 68 61 74  ows.queries that
0ed0: 20 75 73 65 20 74 68 65 20 5b 4c 49 4b 45 20 6f   use the [LIKE o
0ee0: 70 74 69 6d 69 7a 61 74 69 6f 6e 5d 20 74 6f 20  ptimization] to 
0ef0: 72 75 6e 20 66 61 73 74 65 72 2e 0a 0a 3c 6c 69  run faster...<li
0f00: 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 4d  ><p><b>[SQLITE_M
0f10: 41 58 5f 45 58 50 52 5f 44 45 50 54 48 3d 30 5d  AX_EXPR_DEPTH=0]
0f20: 3c 2f 62 3e 2e 0a 53 65 74 74 69 6e 67 20 74 68  </b>..Setting th
0f30: 65 20 6d 61 78 69 6d 75 6d 20 65 78 70 72 65 73  e maximum expres
0f40: 73 69 6f 6e 20 70 61 72 73 65 2d 74 72 65 65 20  sion parse-tree 
0f50: 64 65 70 74 68 20 74 6f 20 7a 65 72 6f 20 64 69  depth to zero di
0f60: 73 61 62 6c 65 73 20 61 6c 6c 20 63 68 65 63 6b  sables all check
0f70: 69 6e 67 0a 6f 66 20 74 68 65 20 65 78 70 72 65  ing.of the expre
0f80: 73 73 69 6f 6e 20 70 61 72 73 65 2d 74 72 65 65  ssion parse-tree
0f90: 20 64 65 70 74 68 2c 20 77 68 69 63 68 20 73 69   depth, which si
0fa0: 6d 70 6c 69 66 69 65 73 20 74 68 65 20 63 6f 64  mplifies the cod
0fb0: 65 20 72 65 73 75 6c 74 69 6e 67 20 69 6e 0a 66  e resulting in.f
0fc0: 61 73 74 65 72 20 65 78 65 63 75 74 69 6f 6e 2c  aster execution,
0fd0: 20 61 6e 64 20 68 65 6c 70 73 20 74 68 65 20 70   and helps the p
0fe0: 61 72 73 65 20 74 72 65 65 20 74 6f 20 75 73 65  arse tree to use
0ff0: 20 6c 65 73 73 20 6d 65 6d 6f 72 79 2e 0a 0a 3c   less memory...<
1000: 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45  li><p><b>[SQLITE
1010: 5f 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45 5d 3c  _OMIT_DECLTYPE]<
1020: 2f 62 3e 2e 0a 42 79 20 6f 6d 69 74 74 69 6e 67  /b>..By omitting
1030: 20 74 68 65 20 28 73 65 6c 64 6f 6d 2d 6e 65 65   the (seldom-nee
1040: 64 65 64 29 20 61 62 69 6c 69 74 79 20 74 6f 20  ded) ability to 
1050: 72 65 74 75 72 6e 20 74 68 65 20 64 65 63 6c 61  return the decla
1060: 72 65 64 20 74 79 70 65 20 6f 66 0a 63 6f 6c 75  red type of.colu
1070: 6d 6e 73 20 66 72 6f 6d 20 74 68 65 20 72 65 73  mns from the res
1080: 75 6c 74 20 73 65 74 20 6f 66 20 71 75 65 72 79  ult set of query
1090: 2c 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  , [prepared stat
10a0: 65 6d 65 6e 74 73 5d 20 63 61 6e 20 62 65 20 6d  ements] can be m
10b0: 61 64 65 0a 74 6f 20 63 6f 6e 73 75 6d 65 20 6c  ade.to consume l
10c0: 65 73 73 20 6d 65 6d 6f 72 79 2e 0a 0a 3c 6c 69  ess memory...<li
10d0: 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 4f  ><p><b>[SQLITE_O
10e0: 4d 49 54 5f 44 45 50 52 45 43 41 54 45 44 5d 3c  MIT_DEPRECATED]<
10f0: 2f 62 3e 2e 0a 4f 6d 69 74 74 69 6e 67 20 64 65  /b>..Omitting de
1100: 70 72 65 63 61 74 65 64 20 69 6e 74 65 72 66 61  precated interfa
1110: 63 65 73 20 61 6e 64 20 66 65 61 74 75 72 65 73  ces and features
1120: 20 77 69 6c 6c 20 6e 6f 74 20 68 65 6c 70 20 53   will not help S
1130: 51 4c 69 74 65 20 74 6f 0a 72 75 6e 20 61 6e 79  QLite to.run any
1140: 20 66 61 73 74 65 72 2e 20 20 49 74 20 77 69 6c   faster.  It wil
1150: 6c 20 72 65 64 75 63 65 20 74 68 65 20 6c 69 62  l reduce the lib
1160: 72 61 72 79 20 66 6f 6f 74 70 72 69 6e 74 2c 20  rary footprint, 
1170: 68 6f 77 65 76 65 72 2e 20 20 41 6e 64 0a 69 74  however.  And.it
1180: 20 69 73 20 74 68 65 20 72 69 67 68 74 20 74 68   is the right th
1190: 69 6e 67 20 74 6f 20 64 6f 2e 0a 0a 3c 6c 69 3e  ing to do...<li>
11a0: 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 4f 4d  <p><b>[SQLITE_OM
11b0: 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c  IT_PROGRESS_CALL
11c0: 42 41 43 4b 5d 3c 2f 62 3e 2e 0a 54 68 65 20 70  BACK]</b>..The p
11d0: 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72 20  rogress handler 
11e0: 63 61 6c 6c 62 61 63 6b 20 63 6f 75 6e 74 65 72  callback counter
11f0: 20 6d 75 73 74 20 62 65 20 63 68 65 63 6b 65 64   must be checked
1200: 20 69 6e 20 74 68 65 20 69 6e 6e 65 72 20 6c 6f   in the inner lo
1210: 6f 70 0a 6f 66 20 74 68 65 20 5b 62 79 74 65 63  op.of the [bytec
1220: 6f 64 65 20 65 6e 67 69 6e 65 5d 2e 20 20 42 79  ode engine].  By
1230: 20 6f 6d 69 74 74 69 6e 67 20 74 68 69 73 20 69   omitting this i
1240: 6e 74 65 72 66 61 63 65 2c 20 61 20 73 69 6e 67  nterface, a sing
1250: 6c 65 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 0a 69  le conditional.i
1260: 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74  s removed from t
1270: 68 65 20 69 6e 6e 65 72 20 6c 6f 6f 70 20 6f 66  he inner loop of
1280: 20 74 68 65 20 5b 62 79 74 65 63 6f 64 65 20 65   the [bytecode e
1290: 6e 67 69 6e 65 5d 2c 20 68 65 6c 70 69 6e 67 20  ngine], helping 
12a0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 0a 74  SQL statements.t
12b0: 6f 20 72 75 6e 20 73 6c 69 67 68 74 6c 79 20 66  o run slightly f
12c0: 61 73 74 65 72 2e 0a 0a 3c 6c 69 3e 3c 70 3e 3c  aster...<li><p><
12d0: 62 3e 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  b>[SQLITE_OMIT_S
12e0: 48 41 52 45 44 5f 43 41 43 48 45 5d 3c 2f 62 3e  HARED_CACHE]</b>
12f0: 2e 0a 4f 6d 69 74 74 69 6e 67 20 74 68 65 20 70  ..Omitting the p
1300: 6f 73 73 69 62 69 6c 69 74 79 20 6f 66 20 75 73  ossibility of us
1310: 69 6e 67 20 5b 73 68 61 72 65 64 20 63 61 63 68  ing [shared cach
1320: 65 5d 20 61 6c 6c 6f 77 73 20 6d 61 6e 79 20 63  e] allows many c
1330: 6f 6e 64 69 74 69 6f 6e 61 6c 73 0a 69 6e 20 70  onditionals.in p
1340: 65 72 66 6f 72 6d 61 6e 63 65 2d 63 72 69 74 69  erformance-criti
1350: 63 61 6c 20 73 65 63 74 69 6f 6e 73 20 6f 66 20  cal sections of 
1360: 74 68 65 20 63 6f 64 65 20 74 6f 20 62 65 20 65  the code to be e
1370: 6c 69 6d 69 6e 61 74 65 64 2e 20 20 54 68 69 73  liminated.  This
1380: 20 63 61 6e 0a 67 69 76 65 20 61 20 6e 6f 74 69   can.give a noti
1390: 63 61 62 6c 65 20 69 6d 70 72 6f 76 65 6d 65 6e  cable improvemen
13a0: 74 20 69 6e 20 70 65 72 66 6f 72 6d 61 6e 63 65  t in performance
13b0: 2e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 57 68 65 6e  ..</ol>..<p>When
13c0: 20 61 6c 6c 20 6f 66 20 74 68 65 20 72 65 63 6f   all of the reco
13d0: 6d 6d 65 6e 64 65 64 20 63 6f 6d 70 69 6c 65 2d  mmended compile-
13e0: 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 62 6f  time options abo
13f0: 76 65 20 61 72 65 20 75 73 65 64 2c 0a 74 68 65  ve are used,.the
1400: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
1410: 77 69 6c 6c 20 62 65 20 61 70 70 72 6f 78 69 6d  will be approxim
1420: 61 74 65 6c 79 20 33 25 20 73 6d 61 6c 6c 65 72  ately 3% smaller
1430: 20 61 6e 64 20 75 73 65 20 61 62 6f 75 74 20 35   and use about 5
1440: 25 20 66 65 77 65 72 0a 43 50 55 20 63 79 63 6c  % fewer.CPU cycl
1450: 65 73 2e 20 20 53 6f 20 74 68 65 73 65 20 6f 70  es.  So these op
1460: 74 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 6d 61 6b  tions do not mak
1470: 65 20 61 20 68 75 67 65 20 64 69 66 66 65 72 65  e a huge differe
1480: 6e 63 65 2e 20 20 42 75 74 20 69 6e 20 0a 73 6f  nce.  But in .so
1490: 6d 65 20 64 65 73 69 67 6e 20 73 69 74 75 61 74  me design situat
14a0: 69 6f 6e 73 2c 20 65 76 65 72 79 20 6c 69 74 74  ions, every litt
14b0: 6c 65 20 62 69 74 20 68 65 6c 70 73 2e 0a 0a 3c  le bit helps...<
14c0: 61 20 6e 61 6d 65 3d 22 6f 73 63 6f 6e 66 69 67  a name="osconfig
14d0: 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 50 6c 61 74  "></a>.<h1> Plat
14e0: 66 6f 72 6d 20 43 6f 6e 66 69 67 75 72 61 74 69  form Configurati
14f0: 6f 6e 3c 2f 68 31 3e 0a 0a 3c 74 63 6c 3e 0a 43  on</h1>..<tcl>.C
1500: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 5f  OMPILE_OPTION {_
1510: 48 41 56 45 5f 53 51 4c 49 54 45 5f 43 4f 4e 46  HAVE_SQLITE_CONF
1520: 49 47 5f 48 7d 20 7b 0a 20 20 49 66 20 74 68 65  IG_H} {.  If the
1530: 20 5f 48 41 56 45 5f 53 51 4c 49 54 45 5f 43 4f   _HAVE_SQLITE_CO
1540: 4e 46 49 47 5f 48 20 6d 61 63 72 6f 20 69 73 20  NFIG_H macro is 
1550: 64 65 66 69 6e 65 64 0a 20 20 74 68 65 6e 20 74  defined.  then t
1560: 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65  he SQLite source
1570: 20 63 6f 64 65 20 77 69 6c 6c 20 61 74 74 65 6d   code will attem
1580: 70 74 20 74 6f 20 23 69 6e 63 6c 75 64 65 20 61  pt to #include a
1590: 20 66 69 6c 65 20 6e 61 6d 65 64 20 22 63 6f 6e   file named "con
15a0: 66 69 67 2e 68 22 2e 0a 20 20 54 68 65 20 22 63  fig.h"..  The "c
15b0: 6f 6e 66 69 67 2e 68 22 20 66 69 6c 65 20 75 73  onfig.h" file us
15c0: 75 61 6c 6c 79 20 63 6f 6e 74 61 69 6e 73 20 6f  ually contains o
15d0: 74 68 65 72 20 63 6f 6e 66 69 67 75 72 61 74 69  ther configurati
15e0: 6f 6e 20 6f 70 74 69 6f 6e 73 2c 20 65 73 70 65  on options, espe
15f0: 63 69 61 6c 6c 79 0a 20 20 22 48 41 56 45 5f 3c  cially.  "HAVE_<
1600: 69 3e 49 4e 54 45 52 46 41 43 45 3c 2f 69 3e 22  i>INTERFACE</i>"
1610: 20 74 79 70 65 20 6f 70 74 69 6f 6e 73 20 67 65   type options ge
1620: 6e 65 72 61 74 65 64 20 62 79 20 61 75 74 6f 63  nerated by autoc
1630: 6f 6e 66 20 73 63 72 69 70 74 73 2e 0a 7d 0a 0a  onf scripts..}..
1640: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
1650: 48 41 56 45 5f 46 44 41 54 41 53 59 4e 43 7d 20  HAVE_FDATASYNC} 
1660: 7b 0a 20 20 49 66 20 74 68 65 20 48 41 56 45 5f  {.  If the HAVE_
1670: 46 44 41 54 41 53 59 4e 43 20 63 6f 6d 70 69 6c  FDATASYNC compil
1680: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73  e-time option is
1690: 20 74 72 75 65 2c 20 74 68 65 6e 20 74 68 65 20   true, then the 
16a0: 64 65 66 61 75 6c 74 20 5b 56 46 53 5d 0a 20 20  default [VFS].  
16b0: 66 6f 72 20 75 6e 69 78 20 73 79 73 74 65 6d 73  for unix systems
16c0: 20 77 69 6c 6c 20 61 74 74 65 6d 70 74 20 74 6f   will attempt to
16d0: 20 75 73 65 20 66 64 61 74 61 73 79 6e 63 28 29   use fdatasync()
16e0: 20 69 6e 73 74 65 61 64 20 6f 66 20 66 73 79 6e   instead of fsyn
16f0: 63 28 29 20 77 68 65 72 65 0a 20 20 61 70 70 72  c() where.  appr
1700: 6f 70 72 69 61 74 65 2e 20 20 49 66 20 74 68 69  opriate.  If thi
1710: 73 20 66 6c 61 67 20 69 73 20 6d 69 73 73 69 6e  s flag is missin
1720: 67 20 6f 72 20 66 61 6c 73 65 2c 20 74 68 65 6e  g or false, then
1730: 20 66 73 79 6e 63 28 29 20 69 73 20 61 6c 77 61   fsync() is alwa
1740: 79 73 20 75 73 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  ys used..}..COMP
1750: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56 45  ILE_OPTION {HAVE
1760: 5f 47 4d 54 49 4d 45 5f 52 7d 20 7b 0a 20 20 49  _GMTIME_R} {.  I
1770: 66 20 74 68 65 20 48 41 56 45 5f 47 4d 54 49 4d  f the HAVE_GMTIM
1780: 45 5f 52 20 6f 70 74 69 6f 6e 20 69 73 20 74 72  E_R option is tr
1790: 75 65 20 61 6e 64 20 69 66 20 5b 53 51 4c 49 54  ue and if [SQLIT
17a0: 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f  E_OMIT_DATETIME_
17b0: 46 55 4e 43 53 5d 20 69 73 20 74 72 75 65 2c 0a  FUNCS] is true,.
17c0: 20 20 74 68 65 6e 20 74 68 65 20 43 55 52 52 45    then the CURRE
17d0: 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e 54  NT_TIME, CURRENT
17e0: 5f 44 41 54 45 2c 20 61 6e 64 20 43 55 52 52 45  _DATE, and CURRE
17f0: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 6b 65 79  NT_TIMESTAMP key
1800: 77 6f 72 64 73 20 77 69 6c 6c 20 75 73 65 0a 20  words will use. 
1810: 20 74 68 65 20 74 68 72 65 61 64 73 61 66 65 20   the threadsafe 
1820: 22 67 6d 74 69 6d 65 5f 72 28 29 22 20 69 6e 74  "gmtime_r()" int
1830: 65 72 66 61 63 65 20 72 61 74 68 65 72 20 74 68  erface rather th
1840: 61 6e 20 22 67 6d 74 69 6d 65 28 29 22 2e 20 20  an "gmtime()".  
1850: 49 6e 20 74 68 65 20 75 73 75 61 6c 20 63 61 73  In the usual cas
1860: 65 0a 20 20 77 68 65 72 65 20 5b 53 51 4c 49 54  e.  where [SQLIT
1870: 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f  E_OMIT_DATETIME_
1880: 46 55 4e 43 53 5d 20 69 73 20 6e 6f 74 20 64 65  FUNCS] is not de
1890: 66 69 6e 65 64 20 6f 72 20 69 73 20 66 61 6c 73  fined or is fals
18a0: 65 2c 20 74 68 65 6e 20 74 68 65 0a 20 20 62 75  e, then the.  bu
18b0: 69 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e 64  ilt-in [date and
18c0: 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d   time functions]
18d0: 20 61 72 65 20 75 73 65 64 20 74 6f 20 69 6d 70   are used to imp
18e0: 6c 65 6d 65 6e 74 20 74 68 65 20 43 55 52 52 45  lement the CURRE
18f0: 4e 54 5f 54 49 4d 45 2c 0a 20 20 43 55 52 52 45  NT_TIME,.  CURRE
1900: 4e 54 5f 44 41 54 45 2c 20 61 6e 64 20 43 55 52  NT_DATE, and CUR
1910: 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 6b  RENT_TIMESTAMP k
1920: 65 79 77 6f 72 64 73 20 61 6e 64 20 6e 65 69 74  eywords and neit
1930: 68 65 72 20 67 6d 74 69 6d 65 5f 72 28 29 20 6e  her gmtime_r() n
1940: 6f 72 0a 20 20 67 6d 74 69 6d 65 28 29 20 69 73  or.  gmtime() is
1950: 20 65 76 65 72 20 63 61 6c 6c 65 64 2e 0a 7d 0a   ever called..}.
1960: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
1970: 7b 48 41 56 45 5f 49 53 4e 41 4e 7d 20 7b 0a 20  {HAVE_ISNAN} {. 
1980: 20 49 66 20 74 68 65 20 48 41 56 45 5f 49 53 4e   If the HAVE_ISN
1990: 41 4e 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75  AN option is tru
19a0: 65 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 69  e, then SQLite i
19b0: 6e 76 6f 6b 65 73 20 74 68 65 20 73 79 73 74 65  nvokes the syste
19c0: 6d 20 6c 69 62 72 61 72 79 20 69 73 6e 61 6e 28  m library isnan(
19d0: 29 0a 20 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20  ).  function to 
19e0: 64 65 74 65 72 6d 69 6e 65 20 69 66 20 61 20 64  determine if a d
19f0: 6f 75 62 6c 65 2d 70 72 65 63 69 73 69 6f 6e 20  ouble-precision 
1a00: 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76  floating point v
1a10: 61 6c 75 65 20 69 73 20 61 20 4e 61 4e 2e 0a 20  alue is a NaN.. 
1a20: 20 49 66 20 48 41 56 45 5f 49 53 4e 41 4e 20 69   If HAVE_ISNAN i
1a30: 73 20 75 6e 64 65 66 69 6e 65 64 20 6f 72 20 66  s undefined or f
1a40: 61 6c 73 65 2c 20 74 68 65 6e 20 53 51 4c 69 74  alse, then SQLit
1a50: 65 20 73 75 62 73 74 69 74 75 74 65 73 20 69 74  e substitutes it
1a60: 73 20 6f 77 6e 20 68 6f 6d 65 2d 67 72 6f 77 6e  s own home-grown
1a70: 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  .  implementatio
1a80: 6e 20 6f 66 20 69 73 6e 61 6e 28 29 2e 0a 7d 0a  n of isnan()..}.
1a90: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
1aa0: 7b 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f  {HAVE_LOCALTIME_
1ab0: 52 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48 41  R} {.  If the HA
1ac0: 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f 52 20 6f  VE_LOCALTIME_R o
1ad0: 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20 74  ption is true, t
1ae0: 68 65 6e 20 53 51 4c 69 74 65 20 75 73 65 73 20  hen SQLite uses 
1af0: 74 68 65 20 74 68 72 65 61 64 73 61 66 65 0a 20  the threadsafe. 
1b00: 20 6c 6f 63 61 6c 74 69 6d 65 5f 72 28 29 20 6c   localtime_r() l
1b10: 69 62 72 61 72 79 20 72 6f 75 74 69 6e 65 20 69  ibrary routine i
1b20: 6e 73 74 65 61 64 20 6f 66 20 6c 6f 63 61 6c 74  nstead of localt
1b30: 69 6d 65 28 29 0a 20 20 74 6f 20 68 65 6c 70 20  ime().  to help 
1b40: 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 5b 6c  implement the [l
1b50: 6f 63 61 6c 74 69 6d 65 20 6d 6f 64 69 66 69 65  ocaltime modifie
1b60: 72 5d 0a 20 20 74 6f 20 74 68 65 20 62 75 69 6c  r].  to the buil
1b70: 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e 64 20 74  t-in [date and t
1b80: 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d 2e 0a  ime functions]..
1b90: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
1ba0: 4e 20 7b 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d  N {HAVE_LOCALTIM
1bb0: 45 5f 53 7d 20 7b 0a 20 20 49 66 20 74 68 65 20  E_S} {.  If the 
1bc0: 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f 53  HAVE_LOCALTIME_S
1bd0: 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c   option is true,
1be0: 20 74 68 65 6e 20 53 51 4c 69 74 65 20 75 73 65   then SQLite use
1bf0: 73 20 74 68 65 20 74 68 72 65 61 64 73 61 66 65  s the threadsafe
1c00: 0a 20 20 6c 6f 63 61 6c 74 69 6d 65 5f 73 28 29  .  localtime_s()
1c10: 20 6c 69 62 72 61 72 79 20 72 6f 75 74 69 6e 65   library routine
1c20: 20 69 6e 73 74 65 61 64 20 6f 66 20 6c 6f 63 61   instead of loca
1c30: 6c 74 69 6d 65 28 29 0a 20 20 74 6f 20 68 65 6c  ltime().  to hel
1c40: 70 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20  p implement the 
1c50: 5b 6c 6f 63 61 6c 74 69 6d 65 20 6d 6f 64 69 66  [localtime modif
1c60: 69 65 72 5d 0a 20 20 74 6f 20 74 68 65 20 62 75  ier].  to the bu
1c70: 69 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e 64  ilt-in [date and
1c80: 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d   time functions]
1c90: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
1ca0: 49 4f 4e 20 7b 48 41 56 45 5f 4d 41 4c 4c 4f 43  ION {HAVE_MALLOC
1cb0: 5f 55 53 41 42 4c 45 5f 53 49 5a 45 7d 20 7b 0a  _USABLE_SIZE} {.
1cc0: 20 20 49 66 20 74 68 65 20 48 41 56 45 5f 4d 41    If the HAVE_MA
1cd0: 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f 53 49 5a 45  LLOC_USABLE_SIZE
1ce0: 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c   option is true,
1cf0: 20 74 68 65 6e 20 53 51 4c 69 74 65 20 74 72 69   then SQLite tri
1d00: 65 73 20 75 73 65 73 20 74 68 65 0a 20 20 6d 61  es uses the.  ma
1d10: 6c 6c 6f 63 5f 75 73 61 62 6c 65 5f 73 69 7a 65  lloc_usable_size
1d20: 28 29 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20  () interface to 
1d30: 66 69 6e 64 20 74 68 65 20 73 69 7a 65 20 6f 66  find the size of
1d40: 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61   a memory alloca
1d50: 74 69 6f 6e 20 6f 62 74 61 69 6e 65 64 0a 20 20  tion obtained.  
1d60: 66 72 6f 6d 20 74 68 65 20 73 74 61 6e 64 61 72  from the standar
1d70: 64 2d 6c 69 62 72 61 72 79 20 6d 61 6c 6c 6f 63  d-library malloc
1d80: 28 29 20 6f 72 20 72 65 61 6c 6c 6f 63 28 29 20  () or realloc() 
1d90: 72 6f 75 74 69 6e 65 73 2e 20 20 54 68 69 73 20  routines.  This 
1da0: 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 0a 20  option is only. 
1db0: 20 61 70 70 6c 69 63 61 62 6c 65 20 69 66 20 74   applicable if t
1dc0: 68 65 20 73 74 61 6e 64 61 72 64 2d 6c 69 62 72  he standard-libr
1dd0: 61 72 79 20 6d 61 6c 6c 6f 63 28 29 20 69 73 20  ary malloc() is 
1de0: 75 73 65 64 2e 20 20 4f 6e 20 41 70 70 6c 65 20  used.  On Apple 
1df0: 73 79 73 74 65 6d 73 2c 0a 20 20 22 7a 6f 6e 65  systems,.  "zone
1e00: 20 6d 61 6c 6c 6f 63 22 20 69 73 20 75 73 65 64   malloc" is used
1e10: 20 69 6e 73 74 65 61 64 2c 20 61 6e 64 20 73 6f   instead, and so
1e20: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
1e30: 6e 6f 74 20 61 70 70 6c 69 63 61 62 6c 65 2e 20  not applicable. 
1e40: 20 41 6e 64 2c 20 6f 66 0a 20 20 63 6f 75 72 73   And, of.  cours
1e50: 65 2c 20 69 66 20 74 68 65 20 61 70 70 6c 69 63  e, if the applic
1e60: 61 74 69 6f 6e 20 73 75 70 70 6c 69 65 73 20 69  ation supplies i
1e70: 74 73 20 6f 77 6e 20 6d 61 6c 6c 6f 63 20 69 6d  ts own malloc im
1e80: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 75 73 69  plementation usi
1e90: 6e 67 0a 20 20 5b 53 51 4c 49 54 45 5f 43 4f 4e  ng.  [SQLITE_CON
1ea0: 46 49 47 5f 4d 41 4c 4c 4f 43 5d 20 74 68 65 6e  FIG_MALLOC] then
1eb0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 68 61 73   this option has
1ec0: 20 6e 6f 20 65 66 66 65 63 74 2e 0a 20 20 3c 70   no effect..  <p
1ed0: 3e 0a 20 20 49 66 20 74 68 65 20 48 41 56 45 5f  >.  If the HAVE_
1ee0: 4d 41 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f 53 49  MALLOC_USABLE_SI
1ef0: 5a 45 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6d 69  ZE option is omi
1f00: 74 74 65 64 20 6f 72 20 69 73 20 66 61 6c 73 65  tted or is false
1f10: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 0a 20  , then SQLite . 
1f20: 20 75 73 65 73 20 61 20 77 72 61 70 70 65 72 20   uses a wrapper 
1f30: 61 72 6f 75 6e 64 20 73 79 73 74 65 6d 20 6d 61  around system ma
1f40: 6c 6c 6f 63 28 29 20 61 6e 64 20 72 65 61 6c 6c  lloc() and reall
1f50: 6f 63 28 29 20 74 68 61 74 20 65 6e 6c 61 72 67  oc() that enlarg
1f60: 65 73 20 65 61 63 68 20 61 6c 6c 6f 63 61 74 69  es each allocati
1f70: 6f 6e 0a 20 20 62 79 20 38 20 62 79 74 65 73 20  on.  by 8 bytes 
1f80: 61 6e 64 20 77 72 69 74 65 73 20 74 68 65 20 73  and writes the s
1f90: 69 7a 65 20 6f 66 20 74 68 65 20 61 6c 6c 6f 63  ize of the alloc
1fa0: 61 74 69 6f 6e 20 69 6e 20 74 68 65 20 69 6e 69  ation in the ini
1fb0: 74 69 61 6c 20 38 20 62 79 74 65 73 2c 20 61 6e  tial 8 bytes, an
1fc0: 64 0a 20 20 74 68 65 6e 20 53 51 4c 69 74 65 20  d.  then SQLite 
1fd0: 61 6c 73 6f 20 69 6d 70 6c 65 6d 65 6e 74 73 20  also implements 
1fe0: 69 74 73 20 6f 77 6e 20 68 6f 6d 65 2d 67 72 6f  its own home-gro
1ff0: 77 6e 20 76 65 72 73 69 6f 6e 20 6f 66 20 6d 61  wn version of ma
2000: 6c 6c 6f 63 5f 75 73 61 62 6c 65 5f 73 69 7a 65  lloc_usable_size
2010: 28 29 0a 20 20 74 68 61 74 20 63 6f 6e 73 75 6c  ().  that consul
2020: 74 73 20 74 68 61 74 20 38 2d 62 79 74 65 20 70  ts that 8-byte p
2030: 72 65 66 69 78 20 74 6f 20 66 69 6e 64 20 74 68  refix to find th
2040: 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69 7a  e allocation siz
2050: 65 2e 20 20 54 68 69 73 20 61 70 70 72 6f 61 63  e.  This approac
2060: 68 0a 20 20 77 6f 72 6b 73 20 62 75 74 20 69 74  h.  works but it
2070: 20 69 73 20 73 75 62 6f 70 74 69 6d 61 6c 2e 20   is suboptimal. 
2080: 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 61 72   Applications ar
2090: 65 20 65 6e 63 6f 75 72 61 67 65 64 20 74 6f 20  e encouraged to 
20a0: 75 73 65 0a 20 20 48 41 56 45 5f 4d 41 4c 4c 4f  use.  HAVE_MALLO
20b0: 43 5f 55 53 41 42 4c 45 5f 53 49 5a 45 20 77 68  C_USABLE_SIZE wh
20c0: 65 6e 65 76 65 72 20 70 6f 73 73 69 62 6c 65 2e  enever possible.
20d0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
20e0: 4f 4e 20 7b 48 41 56 45 5f 53 54 52 43 48 52 4e  ON {HAVE_STRCHRN
20f0: 55 4c 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48  UL} {.  If the H
2100: 41 56 45 5f 53 54 52 43 48 52 4e 55 4c 20 6f 70  AVE_STRCHRNUL op
2110: 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20 74 68  tion is true, th
2120: 65 6e 20 53 51 4c 69 74 65 20 75 73 65 73 20 74  en SQLite uses t
2130: 68 65 20 73 74 72 63 68 72 6e 75 6c 28 29 20 6c  he strchrnul() l
2140: 69 62 72 61 72 79 0a 20 20 66 75 6e 63 74 69 6f  ibrary.  functio
2150: 6e 2e 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  n.  If this opti
2160: 6f 6e 20 69 73 20 6d 69 73 73 69 6e 67 20 6f 72  on is missing or
2170: 20 66 61 6c 73 65 2c 20 74 68 65 6e 20 53 51 4c   false, then SQL
2180: 69 74 65 20 73 75 62 73 74 69 74 75 74 65 73 20  ite substitutes 
2190: 69 74 73 20 6f 77 6e 0a 20 20 68 6f 6d 65 2d 67  its own.  home-g
21a0: 72 6f 77 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74  rown implementat
21b0: 69 6f 6e 20 6f 66 20 73 74 72 63 68 72 6e 75 6c  ion of strchrnul
21c0: 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ()..}..COMPILE_O
21d0: 50 54 49 4f 4e 20 7b 48 41 56 45 5f 55 53 4c 45  PTION {HAVE_USLE
21e0: 45 50 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48  EP} {.  If the H
21f0: 41 56 45 5f 55 53 4c 45 45 50 20 6f 70 74 69 6f  AVE_USLEEP optio
2200: 6e 20 69 73 20 74 72 75 65 2c 20 74 68 65 6e 20  n is true, then 
2210: 74 68 65 20 64 65 66 61 75 6c 74 20 75 6e 69 78  the default unix
2220: 20 56 46 53 20 75 73 65 73 20 74 68 65 0a 20 20   VFS uses the.  
2230: 75 73 6c 65 65 70 28 29 20 73 79 73 74 65 6d 20  usleep() system 
2240: 63 61 6c 6c 20 74 6f 20 69 6d 70 6c 65 6d 65 6e  call to implemen
2250: 74 20 74 68 65 20 78 53 6c 65 65 70 20 6d 65 74  t the xSleep met
2260: 68 6f 64 2e 20 20 49 66 20 74 68 69 73 20 6f 70  hod.  If this op
2270: 74 69 6f 6e 20 69 73 0a 20 20 75 6e 64 65 66 69  tion is.  undefi
2280: 6e 65 64 20 6f 72 20 66 61 6c 73 65 2c 20 74 68  ned or false, th
2290: 65 6e 20 78 53 6c 65 65 70 20 6f 6e 20 75 6e 69  en xSleep on uni
22a0: 78 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64  x is implemented
22b0: 20 75 73 69 6e 67 20 73 6c 65 65 70 28 29 20 77   using sleep() w
22c0: 68 69 63 68 0a 20 20 6d 65 61 6e 73 20 74 68 61  hich.  means tha
22d0: 74 20 5b 73 71 6c 69 74 65 33 5f 73 6c 65 65 70  t [sqlite3_sleep
22e0: 28 29 5d 20 77 69 6c 6c 20 68 61 76 65 20 61 20  ()] will have a 
22f0: 6d 69 6e 69 6d 75 6d 20 77 61 69 74 20 69 6e 74  minimum wait int
2300: 65 72 76 61 6c 20 6f 66 20 31 30 30 30 0a 20 20  erval of 1000.  
2310: 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 72 65 67  milliseconds reg
2320: 61 72 64 6c 65 73 73 20 6f 66 20 69 74 73 20 61  ardless of its a
2330: 72 67 75 6d 65 6e 74 2e 20 20 0a 7d 0a 0a 43 4f  rgument.  .}..CO
2340: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41  MPILE_OPTION {HA
2350: 56 45 5f 55 54 49 4d 45 7d 20 7b 0a 20 20 49 66  VE_UTIME} {.  If
2360: 20 74 68 65 20 48 41 56 45 5f 55 54 49 4d 45 20   the HAVE_UTIME 
2370: 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20  option is true, 
2380: 74 68 65 6e 20 74 68 65 20 62 75 69 6c 74 2d 69  then the built-i
2390: 6e 20 62 75 74 20 6e 6f 6e 2d 73 74 61 6e 64 61  n but non-standa
23a0: 72 64 0a 20 20 22 75 6e 69 78 2d 64 6f 74 66 69  rd.  "unix-dotfi
23b0: 6c 65 22 20 56 46 53 20 77 69 6c 6c 20 75 73 65  le" VFS will use
23c0: 20 74 68 65 20 75 74 69 6d 65 28 29 20 73 79 73   the utime() sys
23d0: 74 65 6d 20 63 61 6c 6c 2c 20 69 6e 73 74 65 61  tem call, instea
23e0: 64 20 6f 66 20 75 74 69 6d 65 73 28 29 2c 0a 20  d of utimes(),. 
23f0: 20 74 6f 20 73 65 74 20 74 68 65 20 6c 61 73 74   to set the last
2400: 20 61 63 63 65 73 73 20 74 69 6d 65 20 6f 6e 20   access time on 
2410: 74 68 65 20 6c 6f 63 6b 20 66 69 6c 65 2e 0a 7d  the lock file..}
2420: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65  .</tcl>..<a name
2430: 3d 22 64 65 66 61 75 6c 74 73 22 3e 3c 2f 61 3e  ="defaults"></a>
2440: 0a 3c 68 31 3e 20 4f 70 74 69 6f 6e 73 20 54 6f  .<h1> Options To
2450: 20 53 65 74 20 44 65 66 61 75 6c 74 20 50 61 72   Set Default Par
2460: 61 6d 65 74 65 72 20 56 61 6c 75 65 73 3c 2f 68  ameter Values</h
2470: 31 3e 0a 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d 50 49  1>..<tcl>..COMPI
2480: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
2490: 45 5f 44 45 46 41 55 4c 54 5f 41 55 54 4f 4d 41  E_DEFAULT_AUTOMA
24a0: 54 49 43 5f 49 4e 44 45 58 3d 3c 69 3e 26 6c 74  TIC_INDEX=<i>&lt
24b0: 3b 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d  ;0 or 1&gt;</i>}
24c0: 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20   {.  This macro 
24d0: 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 69  determines the i
24e0: 6e 69 74 69 61 6c 20 73 65 74 74 69 6e 67 20 66  nitial setting f
24f0: 6f 72 20 5b 50 52 41 47 4d 41 20 61 75 74 6f 6d  or [PRAGMA autom
2500: 61 74 69 63 5f 69 6e 64 65 78 5d 0a 20 20 66 6f  atic_index].  fo
2510: 72 20 6e 65 77 6c 79 20 6f 70 65 6e 65 64 20 5b  r newly opened [
2520: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
2530: 69 6f 6e 73 5d 2e 0a 20 20 46 6f 72 20 61 6c 6c  ions]..  For all
2540: 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c   versions of SQL
2550: 69 74 65 20 74 68 72 6f 75 67 68 20 33 2e 37 2e  ite through 3.7.
2560: 31 37 2c 0a 20 20 61 75 74 6f 6d 61 74 69 63 20  17,.  automatic 
2570: 69 6e 64 69 63 65 73 20 61 72 65 20 6e 6f 72 6d  indices are norm
2580: 61 6c 6c 79 20 65 6e 61 62 6c 65 64 20 66 6f 72  ally enabled for
2590: 20 6e 65 77 20 64 61 74 61 62 61 73 65 20 63 6f   new database co
25a0: 6e 6e 65 63 74 69 6f 6e 73 20 69 66 0a 20 20 74  nnections if.  t
25b0: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
25c0: 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74   option is omitt
25d0: 65 64 2e 0a 20 20 48 6f 77 65 76 65 72 2c 20 74  ed..  However, t
25e0: 68 61 74 20 6d 69 67 68 74 20 63 68 61 6e 67 65  hat might change
25f0: 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61   in future relea
2600: 73 65 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 20  ses of SQLite.. 
2610: 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 20 5b 53   <p>See also: [S
2620: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 4d  QLITE_OMIT_AUTOM
2630: 41 54 49 43 5f 49 4e 44 45 58 5d 0a 7d 0a 0a 43  ATIC_INDEX].}..C
2640: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
2650: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 41 55  QLITE_DEFAULT_AU
2660: 54 4f 56 41 43 55 55 4d 3d 3c 69 3e 26 6c 74 3b  TOVACUUM=<i>&lt;
2670: 30 20 6f 72 20 31 20 6f 72 20 32 26 67 74 3b 3c  0 or 1 or 2&gt;<
2680: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
2690: 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 69  cro determines i
26a0: 66 20 53 51 4c 69 74 65 20 63 72 65 61 74 65 73  f SQLite creates
26b0: 20 64 61 74 61 62 61 73 65 73 20 77 69 74 68 20   databases with 
26c0: 74 68 65 20 0a 20 20 5b 61 75 74 6f 5f 76 61 63  the .  [auto_vac
26d0: 75 75 6d 5d 20 66 6c 61 67 20 73 65 74 20 62 79  uum] flag set by
26e0: 20 64 65 66 61 75 6c 74 20 74 6f 20 4f 46 46 20   default to OFF 
26f0: 28 30 29 2c 20 46 55 4c 4c 20 28 31 29 2c 20 6f  (0), FULL (1), o
2700: 72 0a 20 20 49 4e 43 52 45 4d 45 4e 54 41 4c 20  r.  INCREMENTAL 
2710: 28 32 29 2e 20 54 68 65 20 64 65 66 61 75 6c 74  (2). The default
2720: 20 76 61 6c 75 65 20 69 73 20 30 20 6d 65 61 6e   value is 0 mean
2730: 69 6e 67 20 74 68 61 74 20 64 61 74 61 62 61 73  ing that databas
2740: 65 73 0a 20 20 61 72 65 20 63 72 65 61 74 65 64  es.  are created
2750: 20 77 69 74 68 20 61 75 74 6f 2d 76 61 63 75 75   with auto-vacuu
2760: 6d 20 74 75 72 6e 65 64 20 6f 66 66 2e 0a 20 20  m turned off..  
2770: 49 6e 20 61 6e 79 20 63 61 73 65 20 74 68 65 20  In any case the 
2780: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 64 65 66  compile-time def
2790: 61 75 6c 74 20 6d 61 79 20 62 65 20 6f 76 65 72  ault may be over
27a0: 72 69 64 64 65 6e 20 62 79 20 74 68 65 20 0a 20  ridden by the . 
27b0: 20 5b 50 52 41 47 4d 41 20 61 75 74 6f 5f 76 61   [PRAGMA auto_va
27c0: 63 75 75 6d 5d 20 63 6f 6d 6d 61 6e 64 2e 0a 7d  cuum] command..}
27d0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
27e0: 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   {SQLITE_DEFAULT
27f0: 5f 43 41 43 48 45 5f 53 49 5a 45 3d 3c 69 3e 26  _CACHE_SIZE=<i>&
2800: 6c 74 3b 4e 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  lt;N&gt;</i>} {.
2810: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74    This macro set
2820: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 61  s the default ma
2830: 78 69 6d 75 6d 20 73 69 7a 65 20 6f 66 20 74 68  ximum size of th
2840: 65 20 70 61 67 65 2d 63 61 63 68 65 20 66 6f 72  e page-cache for
2850: 20 65 61 63 68 20 61 74 74 61 63 68 65 64 0a 20   each attached. 
2860: 20 64 61 74 61 62 61 73 65 2e 20 20 41 20 70 6f   database.  A po
2870: 73 69 74 69 76 65 20 76 61 6c 75 65 20 6d 65 61  sitive value mea
2880: 6e 73 20 74 68 61 74 20 74 68 65 20 6c 69 6d 69  ns that the limi
2890: 74 20 69 73 20 4e 20 70 61 67 65 2e 20 20 49 66  t is N page.  If
28a0: 20 4e 20 69 73 20 6e 65 67 61 74 69 76 65 0a 20   N is negative. 
28b0: 20 74 68 61 74 20 6d 65 61 6e 73 20 74 6f 20 6c   that means to l
28c0: 69 6d 69 74 20 74 68 65 20 63 61 63 68 65 20 73  imit the cache s
28d0: 69 7a 65 20 74 6f 20 2d 4e 2a 31 30 32 34 20 62  ize to -N*1024 b
28e0: 79 74 65 73 2e 0a 20 20 54 68 65 20 73 75 67 67  ytes..  The sugg
28f0: 65 73 74 65 64 20 6d 61 78 69 6d 75 6d 20 63 61  ested maximum ca
2900: 63 68 65 20 73 69 7a 65 20 63 61 6e 20 62 65 20  che size can be 
2910: 6f 76 65 72 72 69 64 64 65 6e 20 62 79 20 74 68  overridden by th
2920: 65 20 0a 20 20 5b 50 52 41 47 4d 41 20 63 61 63  e .  [PRAGMA cac
2930: 68 65 5f 73 69 7a 65 5d 20 63 6f 6d 6d 61 6e 64  he_size] command
2940: 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 61  . The default va
2950: 6c 75 65 20 69 73 20 2d 32 30 30 30 2c 20 77 68  lue is -2000, wh
2960: 69 63 68 20 74 72 61 6e 73 6c 61 74 65 73 0a 20  ich translates. 
2970: 20 69 6e 74 6f 20 61 20 6d 61 78 69 6d 75 6d 20   into a maximum 
2980: 6f 66 20 32 30 34 38 30 30 30 20 62 79 74 65 73  of 2048000 bytes
2990: 20 70 65 72 20 63 61 63 68 65 2e 0a 7d 0a 0a 43   per cache..}..C
29a0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
29b0: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 46 49  QLITE_DEFAULT_FI
29c0: 4c 45 5f 46 4f 52 4d 41 54 3d 3c 69 3e 26 6c 74  LE_FORMAT=<i>&lt
29d0: 3b 31 20 6f 72 20 34 26 67 74 3b 3c 2f 69 3e 7d  ;1 or 4&gt;</i>}
29e0: 20 7b 0a 20 20 54 68 65 20 64 65 66 61 75 6c 74   {.  The default
29f0: 20 5b 73 63 68 65 6d 61 20 66 6f 72 6d 61 74 20   [schema format 
2a00: 6e 75 6d 62 65 72 5d 20 75 73 65 64 20 62 79 20  number] used by 
2a10: 53 51 4c 69 74 65 20 77 68 65 6e 20 63 72 65 61  SQLite when crea
2a20: 74 69 6e 67 0a 20 20 6e 65 77 20 64 61 74 61 62  ting.  new datab
2a30: 61 73 65 20 66 69 6c 65 73 20 69 73 20 73 65 74  ase files is set
2a40: 20 62 79 20 74 68 69 73 20 6d 61 63 72 6f 2e 20   by this macro. 
2a50: 20 54 68 65 20 73 63 68 65 6d 61 20 66 6f 72 6d   The schema form
2a60: 61 74 73 20 61 72 65 20 61 6c 6c 0a 20 20 76 65  ats are all.  ve
2a70: 72 79 20 73 69 6d 69 6c 61 72 2e 20 20 54 68 65  ry similar.  The
2a80: 20 64 69 66 66 65 72 65 6e 63 65 20 62 65 74 77   difference betw
2a90: 65 65 6e 20 66 6f 72 6d 61 74 73 20 31 20 61 6e  een formats 1 an
2aa0: 64 20 34 20 69 73 20 74 68 61 74 20 66 6f 72 6d  d 4 is that form
2ab0: 61 74 0a 20 20 34 20 75 6e 64 65 72 73 74 61 6e  at.  4 understan
2ac0: 64 73 20 5b 64 65 73 63 65 6e 64 69 6e 67 20 69  ds [descending i
2ad0: 6e 64 69 63 65 73 5d 20 61 6e 64 20 68 61 73 20  ndices] and has 
2ae0: 61 20 74 69 67 68 74 65 72 20 65 6e 63 6f 64 69  a tighter encodi
2af0: 6e 67 20 66 6f 72 0a 20 20 62 6f 6f 6c 65 61 6e  ng for.  boolean
2b00: 20 76 61 6c 75 65 73 2e 0a 0a 20 20 41 6c 6c 20   values...  All 
2b10: 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69  versions of SQLi
2b20: 74 65 20 73 69 6e 63 65 20 33 2e 33 2e 30 20 28  te since 3.3.0 (
2b30: 32 30 30 36 2d 30 31 2d 31 30 29 0a 20 20 63 61  2006-01-10).  ca
2b40: 6e 20 72 65 61 64 20 61 6e 64 20 77 72 69 74 65  n read and write
2b50: 20 61 6e 79 20 73 63 68 65 6d 61 20 66 6f 72 6d   any schema form
2b60: 61 74 0a 20 20 62 65 74 77 65 65 6e 20 31 20 61  at.  between 1 a
2b70: 6e 64 20 34 2e 20 20 42 75 74 20 6f 6c 64 65 72  nd 4.  But older
2b80: 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c   versions of SQL
2b90: 69 74 65 20 6d 69 67 68 74 20 6e 6f 74 20 62 65  ite might not be
2ba0: 20 61 62 6c 65 20 74 6f 0a 20 20 72 65 61 64 20   able to.  read 
2bb0: 66 6f 72 6d 61 74 73 20 67 72 65 61 74 65 72 20  formats greater 
2bc0: 74 68 61 6e 20 31 2e 20 20 53 6f 20 74 68 61 74  than 1.  So that
2bd0: 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20   older versions 
2be0: 6f 66 20 53 51 4c 69 74 65 20 77 69 6c 6c 0a 20  of SQLite will. 
2bf0: 20 62 65 20 61 62 6c 65 20 74 6f 20 72 65 61 64   be able to read
2c00: 20 61 6e 64 20 77 72 69 74 65 20 64 61 74 61 62   and write datab
2c10: 61 73 65 20 66 69 6c 65 73 20 63 72 65 61 74 65  ase files create
2c20: 64 20 62 79 20 6e 65 77 65 72 20 76 65 72 73 69  d by newer versi
2c30: 6f 6e 73 0a 20 20 6f 66 20 53 51 4c 69 74 65 2c  ons.  of SQLite,
2c40: 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 63 68   the default sch
2c50: 65 6d 61 20 66 6f 72 6d 61 74 20 77 61 73 20 73  ema format was s
2c60: 65 74 20 74 6f 20 31 20 66 6f 72 20 53 51 4c 69  et to 1 for SQLi
2c70: 74 65 20 76 65 72 73 69 6f 6e 73 0a 20 20 74 68  te versions.  th
2c80: 72 6f 75 67 68 20 33 2e 37 2e 39 20 28 32 30 31  rough 3.7.9 (201
2c90: 31 2d 31 31 2d 30 31 29 2e 20 20 42 65 67 69 6e  1-11-01).  Begin
2ca0: 6e 69 6e 67 20 77 69 74 68 20 0a 20 20 5b 76 65  ning with .  [ve
2cb0: 72 73 69 6f 6e 20 33 2e 37 2e 31 30 5d 20 28 5b  rsion 3.7.10] ([
2cc0: 64 61 74 65 6f 66 3a 33 2e 37 2e 31 30 5d 29 2c  dateof:3.7.10]),
2cd0: 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20 73   the default.  s
2ce0: 63 68 65 6d 61 20 66 6f 72 6d 61 74 20 69 73 20  chema format is 
2cf0: 34 2e 0a 0a 20 20 54 68 65 20 73 63 68 65 6d 61  4...  The schema
2d00: 20 66 6f 72 6d 61 74 20 6e 75 6d 62 65 72 20 66   format number f
2d10: 6f 72 20 61 20 6e 65 77 20 64 61 74 61 62 61 73  or a new databas
2d20: 65 20 63 61 6e 20 62 65 20 73 65 74 20 61 74 20  e can be set at 
2d30: 72 75 6e 74 69 6d 65 20 75 73 69 6e 67 0a 20 20  runtime using.  
2d40: 74 68 65 20 5b 50 52 41 47 4d 41 20 6c 65 67 61  the [PRAGMA lega
2d50: 63 79 5f 66 69 6c 65 5f 66 6f 72 6d 61 74 5d 20  cy_file_format] 
2d60: 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50  command..}..COMP
2d70: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
2d80: 54 45 5f 44 45 46 41 55 4c 54 5f 46 49 4c 45 5f  TE_DEFAULT_FILE_
2d90: 50 45 52 4d 49 53 53 49 4f 4e 53 3d 3c 69 3e 4e  PERMISSIONS=<i>N
2da0: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20 64 65  </i>} {.  The de
2db0: 66 61 75 6c 74 20 6e 75 6d 65 72 69 63 20 66 69  fault numeric fi
2dc0: 6c 65 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 66  le permissions f
2dd0: 6f 72 20 6e 65 77 6c 79 20 63 72 65 61 74 65 64  or newly created
2de0: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 0a   database files.
2df0: 20 20 75 6e 64 65 72 20 75 6e 69 78 2e 20 20 49    under unix.  I
2e00: 66 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64 2c  f not specified,
2e10: 20 74 68 65 20 64 65 66 61 75 6c 74 20 69 73 20   the default is 
2e20: 30 36 34 34 20 77 68 69 63 68 20 6d 65 61 6e 73  0644 which means
2e30: 20 74 68 61 74 0a 20 20 74 68 65 20 66 69 6c 65   that.  the file
2e40: 73 20 69 73 20 67 6c 6f 62 61 6c 6c 79 20 72 65  s is globally re
2e50: 61 64 61 62 6c 65 20 62 75 74 20 6f 6e 6c 79 20  adable but only 
2e60: 77 72 69 74 61 62 6c 65 20 62 79 20 74 68 65 20  writable by the 
2e70: 63 72 65 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  creator..}..COMP
2e80: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
2e90: 54 45 5f 44 45 46 41 55 4c 54 5f 46 4f 52 45 49  TE_DEFAULT_FOREI
2ea0: 47 4e 5f 4b 45 59 53 3d 3c 69 3e 26 6c 74 3b 30  GN_KEYS=<i>&lt;0
2eb0: 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b   or 1&gt;</i>} {
2ec0: 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 64 65  .  This macro de
2ed0: 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65 72  termines whether
2ee0: 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20   enforcement of 
2ef0: 0a 20 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20  .  [foreign key 
2f00: 63 6f 6e 73 74 72 61 69 6e 74 73 5d 20 69 73 20  constraints] is 
2f10: 65 6e 61 62 6c 65 64 20 6f 72 20 64 69 73 61 62  enabled or disab
2f20: 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 20 66  led by default f
2f30: 6f 72 0a 20 20 6e 65 77 20 64 61 74 61 62 61 73  or.  new databas
2f40: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 20 20  e connections.  
2f50: 45 61 63 68 20 64 61 74 61 62 61 73 65 20 63 6f  Each database co
2f60: 6e 6e 65 63 74 69 6f 6e 20 63 61 6e 20 61 6c 77  nnection can alw
2f70: 61 79 73 20 74 75 72 6e 0a 20 20 65 6e 66 6f 72  ays turn.  enfor
2f80: 63 65 6d 65 6e 74 20 6f 66 20 66 6f 72 65 69 67  cement of foreig
2f90: 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74  n key constraint
2fa0: 73 20 6f 6e 20 61 6e 64 20 6f 66 66 20 61 6e 64  s on and off and
2fb0: 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 0a   run-time using.
2fc0: 20 20 74 68 65 20 5b 66 6f 72 65 69 67 6e 5f 6b    the [foreign_k
2fd0: 65 79 73 20 70 72 61 67 6d 61 5d 2e 20 20 45 6e  eys pragma].  En
2fe0: 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20 66 6f 72  forcement of for
2ff0: 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61  eign key constra
3000: 69 6e 74 73 0a 20 20 69 73 20 6e 6f 72 6d 61 6c  ints.  is normal
3010: 6c 79 20 6f 66 66 20 62 79 20 64 65 66 61 75 6c  ly off by defaul
3020: 74 2c 20 62 75 74 20 69 66 20 74 68 69 73 20 63  t, but if this c
3030: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 70 61 72 61  ompile-time para
3040: 6d 65 74 65 72 20 69 73 0a 20 20 73 65 74 20 74  meter is.  set t
3050: 6f 20 31 2c 20 65 6e 66 6f 72 63 65 6d 65 6e 74  o 1, enforcement
3060: 20 6f 66 20 66 6f 72 65 69 67 6e 20 6b 65 79 20   of foreign key 
3070: 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69 6c 6c  constraints will
3080: 20 62 65 20 6f 6e 20 62 79 20 64 65 66 61 75 6c   be on by defaul
3090: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
30a0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
30b0: 41 55 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45 3d 3c  AULT_MMAP_SIZE=<
30c0: 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  i>N</i>} {.  Thi
30d0: 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65  s macro sets the
30e0: 20 64 65 66 61 75 6c 74 20 6c 69 6d 69 74 20 6f   default limit o
30f0: 6e 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20  n the amount of 
3100: 6d 65 6d 6f 72 79 20 74 68 61 74 0a 20 20 77 69  memory that.  wi
3110: 6c 6c 20 62 65 20 75 73 65 64 20 66 6f 72 20 6d  ll be used for m
3120: 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f  emory-mapped I/O
3130: 0a 20 20 66 6f 72 20 65 61 63 68 20 6f 70 65 6e  .  for each open
3140: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20   database file. 
3150: 20 49 66 20 74 68 65 20 3c 69 3e 4e 3c 2f 69 3e   If the <i>N</i>
3160: 0a 20 20 69 73 20 7a 65 72 6f 2c 20 74 68 65 6e  .  is zero, then
3170: 20 6d 65 6d 6f 72 79 20 6d 61 70 70 65 64 20 49   memory mapped I
3180: 2f 4f 20 69 73 20 64 69 73 61 62 6c 65 64 20 62  /O is disabled b
3190: 79 20 64 65 66 61 75 6c 74 2e 20 20 54 68 69 73  y default.  This
31a0: 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  .  compile-time 
31b0: 6c 69 6d 69 74 20 61 6e 64 20 74 68 65 20 5b 53  limit and the [S
31c0: 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53  QLITE_MAX_MMAP_S
31d0: 49 5a 45 5d 20 63 61 6e 20 62 65 20 6d 6f 64 69  IZE] can be modi
31e0: 66 69 65 64 20 0a 20 20 61 74 20 73 74 61 72 74  fied .  at start
31f0: 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65 0a  -time using the.
3200: 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69    [sqlite3_confi
3210: 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  g]([SQLITE_CONFI
3220: 47 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 63 61  G_MMAP_SIZE]) ca
3230: 6c 6c 2c 20 6f 72 20 61 74 20 72 75 6e 2d 74 69  ll, or at run-ti
3240: 6d 65 0a 20 20 75 73 69 6e 67 20 74 68 65 20 5b  me.  using the [
3250: 6d 6d 61 70 5f 73 69 7a 65 20 70 72 61 67 6d 61  mmap_size pragma
3260: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
3270: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
3280: 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c 5f 53 49 5a  AULT_JOURNAL_SIZ
3290: 45 5f 4c 49 4d 49 54 3d 3c 69 3e 26 6c 74 3b 62  E_LIMIT=<i>&lt;b
32a0: 79 74 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  ytes&gt;</i>} {.
32b0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 73 65    This option se
32c0: 74 73 20 74 68 65 20 73 69 7a 65 20 6c 69 6d 69  ts the size limi
32d0: 74 20 6f 6e 20 5b 72 6f 6c 6c 62 61 63 6b 20 6a  t on [rollback j
32e0: 6f 75 72 6e 61 6c 5d 20 66 69 6c 65 73 20 69 6e  ournal] files in
32f0: 0a 20 20 5b 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65  .  [journal_mode
3300: 20 70 72 61 67 6d 61 20 7c 20 70 65 72 73 69 73   pragma | persis
3310: 74 65 6e 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64  tent journal mod
3320: 65 5d 20 61 6e 64 0a 20 20 5b 6c 6f 63 6b 69 6e  e] and.  [lockin
3330: 67 5f 6d 6f 64 65 20 7c 20 65 78 63 6c 75 73 69  g_mode | exclusi
3340: 76 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 5d  ve locking mode]
3350: 20 61 6e 64 20 6f 6e 20 74 68 65 20 73 69 7a 65   and on the size
3360: 20 6f 66 20 74 68 65 0a 20 20 77 72 69 74 65 2d   of the.  write-
3370: 61 68 65 61 64 20 6c 6f 67 20 66 69 6c 65 20 69  ahead log file i
3380: 6e 20 5b 57 41 4c 20 6d 6f 64 65 5d 2e 20 57 68  n [WAL mode]. Wh
3390: 65 6e 20 74 68 69 73 20 0a 20 20 63 6f 6d 70 69  en this .  compi
33a0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
33b0: 73 20 6f 6d 69 74 74 65 64 20 74 68 65 72 65 20  s omitted there 
33c0: 69 73 20 6e 6f 20 75 70 70 65 72 20 62 6f 75 6e  is no upper boun
33d0: 64 20 6f 6e 20 74 68 65 0a 20 20 73 69 7a 65 20  d on the.  size 
33e0: 6f 66 20 74 68 65 20 72 6f 6c 6c 62 61 63 6b 20  of the rollback 
33f0: 6a 6f 75 72 6e 61 6c 73 20 6f 72 20 77 72 69 74  journals or writ
3400: 65 2d 61 68 65 61 64 20 6c 6f 67 73 2e 20 20 0a  e-ahead logs.  .
3410: 20 20 54 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69    The journal fi
3420: 6c 65 20 73 69 7a 65 20 6c 69 6d 69 74 0a 20 20  le size limit.  
3430: 63 61 6e 20 62 65 20 63 68 61 6e 67 65 64 20 61  can be changed a
3440: 74 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67  t run-time using
3450: 20 74 68 65 20 5b 6a 6f 75 72 6e 61 6c 5f 73 69   the [journal_si
3460: 7a 65 5f 6c 69 6d 69 74 20 70 72 61 67 6d 61 5d  ze_limit pragma]
3470: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
3480: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41  ION {SQLITE_DEFA
3490: 55 4c 54 5f 4c 4f 43 4b 49 4e 47 5f 4d 4f 44 45  ULT_LOCKING_MODE
34a0: 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 30 26 67  =<i>&lt;1 or 0&g
34b0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20 73  t;</i>} {.  If s
34c0: 65 74 20 74 6f 20 31 2c 20 74 68 65 6e 20 74 68  et to 1, then th
34d0: 65 20 64 65 66 61 75 6c 74 20 5b 6c 6f 63 6b 69  e default [locki
34e0: 6e 67 5f 6d 6f 64 65 5d 20 69 73 20 73 65 74 20  ng_mode] is set 
34f0: 74 6f 20 45 58 43 4c 55 53 49 56 45 2e 0a 20 20  to EXCLUSIVE..  
3500: 49 66 20 6f 6d 69 74 74 65 64 20 6f 72 20 73 65  If omitted or se
3510: 74 20 74 6f 20 30 20 74 68 65 6e 20 74 68 65 20  t to 0 then the 
3520: 64 65 66 61 75 6c 74 20 5b 6c 6f 63 6b 69 6e 67  default [locking
3530: 5f 6d 6f 64 65 5d 20 69 73 20 4e 4f 52 4d 41 4c  _mode] is NORMAL
3540: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
3550: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41  ION {SQLITE_DEFA
3560: 55 4c 54 5f 4c 4f 4f 4b 41 53 49 44 45 3d 3c 69  ULT_LOOKASIDE=<i
3570: 3e 53 5a 2c 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 53  >SZ,N</i>} {.  S
3580: 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  ets the default 
3590: 73 69 7a 65 20 6f 66 20 74 68 65 20 5b 6c 6f 6f  size of the [loo
35a0: 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20 61 6c  kaside memory al
35b0: 6c 6f 63 61 74 6f 72 5d 20 6d 65 6d 6f 72 79 20  locator] memory 
35c0: 70 6f 6f 6c 0a 20 20 74 6f 20 4e 20 65 6e 74 72  pool.  to N entr
35d0: 69 65 73 20 6f 66 20 53 5a 20 62 79 74 65 73 20  ies of SZ bytes 
35e0: 65 61 63 68 2e 20 20 54 68 69 73 20 73 65 74 74  each.  This sett
35f0: 69 6e 67 20 63 61 6e 20 62 65 20 6d 6f 64 69 66  ing can be modif
3600: 69 65 64 20 61 74 0a 20 20 73 74 61 72 74 2d 74  ied at.  start-t
3610: 69 6d 65 20 75 73 69 6e 67 20 5b 73 71 6c 69 74  ime using [sqlit
3620: 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49  e3_config]([SQLI
3630: 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53  TE_CONFIG_LOOKAS
3640: 49 44 45 5d 29 20 61 6e 64 2f 6f 72 0a 20 20 61  IDE]) and/or.  a
3650: 73 20 65 61 63 68 20 5b 64 61 74 61 62 61 73 65  s each [database
3660: 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 69 73 20   connection] is 
3670: 6f 70 65 6e 65 64 20 75 73 69 6e 67 0a 20 20 5b  opened using.  [
3680: 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
3690: 67 5d 28 64 62 2c 20 5b 53 51 4c 49 54 45 5f 44  g](db, [SQLITE_D
36a0: 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44  BCONFIG_LOOKASID
36b0: 45 5d 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  E])..}..COMPILE_
36c0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
36d0: 45 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54 55 53  EFAULT_MEMSTATUS
36e0: 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 30 26 67  =<i>&lt;1 or 0&g
36f0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  t;</i>} {.  This
3700: 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20 74   macro is used t
3710: 6f 20 64 65 74 65 72 6d 69 6e 65 20 77 68 65 74  o determine whet
3720: 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 66  her or not the f
3730: 65 61 74 75 72 65 73 20 65 6e 61 62 6c 65 64 20  eatures enabled 
3740: 61 6e 64 0a 20 20 64 69 73 61 62 6c 65 64 20 75  and.  disabled u
3750: 73 69 6e 67 20 74 68 65 20 53 51 4c 49 54 45 5f  sing the SQLITE_
3760: 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53  CONFIG_MEMSTATUS
3770: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73 71   argument to [sq
3780: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 0a  lite3_config()].
3790: 20 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20    are available 
37a0: 62 79 20 64 65 66 61 75 6c 74 2e 20 54 68 65 20  by default. The 
37b0: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73  default value is
37c0: 20 31 20 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46   1 ([SQLITE_CONF
37d0: 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 0a 20 20  IG_MEMSTATUS].  
37e0: 72 65 6c 61 74 65 64 20 66 65 61 74 75 72 65 73  related features
37f0: 20 65 6e 61 62 6c 65 64 29 2e 0a 7d 0a 0a 43 4f   enabled)..}..CO
3800: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
3810: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 50 43 41  LITE_DEFAULT_PCA
3820: 43 48 45 5f 49 4e 49 54 53 5a 3d 3c 69 3e 4e 3c  CHE_INITSZ=<i>N<
3830: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
3840: 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 74  cro determines t
3850: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 67  he number of pag
3860: 65 73 20 69 6e 69 74 69 61 6c 6c 79 20 61 6c 6c  es initially all
3870: 6f 63 61 74 65 64 20 62 79 20 74 68 65 20 0a 20  ocated by the . 
3880: 20 70 61 67 65 20 63 61 63 68 65 20 6d 6f 64 75   page cache modu
3890: 6c 65 20 77 68 65 6e 20 5b 53 51 4c 49 54 45 5f  le when [SQLITE_
38a0: 43 4f 4e 46 49 47 5f 50 41 47 45 43 41 43 48 45  CONFIG_PAGECACHE
38b0: 5d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  ] configuration 
38c0: 6f 70 74 69 6f 6e 20 69 73 0a 20 20 6e 6f 74 20  option is.  not 
38d0: 75 73 65 20 61 6e 64 20 6d 65 6d 6f 72 79 20 66  use and memory f
38e0: 6f 72 20 74 68 65 20 70 61 67 65 20 63 61 63 68  or the page cach
38f0: 65 20 69 73 20 6f 62 74 61 69 6e 65 64 20 66 72  e is obtained fr
3900: 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  om [sqlite3_mall
3910: 6f 63 28 29 5d 0a 20 20 69 6e 73 74 65 61 64 2e  oc()].  instead.
3920: 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20    The number of 
3930: 70 61 67 65 73 20 73 65 74 20 62 79 20 74 68 69  pages set by thi
3940: 73 20 6d 61 63 72 6f 20 61 72 65 20 61 6c 6c 6f  s macro are allo
3950: 63 61 74 65 64 20 69 6e 20 61 20 73 69 6e 67 6c  cated in a singl
3960: 65 0a 20 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20  e.  allocation, 
3970: 77 68 69 63 68 20 72 65 64 75 63 65 73 20 74 68  which reduces th
3980: 65 20 6c 6f 61 64 20 6f 6e 20 74 68 65 20 6d 65  e load on the me
3990: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 0a  mory allocator..
39a0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
39b0: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
39c0: 54 5f 50 41 47 45 5f 53 49 5a 45 3d 3c 69 3e 26  T_PAGE_SIZE=<i>&
39d0: 6c 74 3b 62 79 74 65 73 26 67 74 3b 3c 2f 69 3e  lt;bytes&gt;</i>
39e0: 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
39f0: 20 69 73 20 75 73 65 64 20 74 6f 20 73 65 74 20   is used to set 
3a00: 74 68 65 20 64 65 66 61 75 6c 74 20 70 61 67 65  the default page
3a10: 2d 73 69 7a 65 20 75 73 65 64 20 77 68 65 6e 20  -size used when 
3a20: 61 0a 20 20 64 61 74 61 62 61 73 65 20 69 73 20  a.  database is 
3a30: 63 72 65 61 74 65 64 2e 20 54 68 65 20 76 61 6c  created. The val
3a40: 75 65 20 61 73 73 69 67 6e 65 64 20 6d 75 73 74  ue assigned must
3a50: 20 62 65 20 61 20 70 6f 77 65 72 20 6f 66 20 32   be a power of 2
3a60: 2e 20 54 68 65 0a 20 20 64 65 66 61 75 6c 74 20  . The.  default 
3a70: 76 61 6c 75 65 20 69 73 20 34 30 39 36 2e 20 54  value is 4096. T
3a80: 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  he compile-time 
3a90: 64 65 66 61 75 6c 74 20 6d 61 79 20 62 65 20 6f  default may be o
3aa0: 76 65 72 72 69 64 64 65 6e 20 61 74 20 0a 20 20  verridden at .  
3ab0: 72 75 6e 74 69 6d 65 20 62 79 20 74 68 65 20 5b  runtime by the [
3ac0: 50 52 41 47 4d 41 20 70 61 67 65 5f 73 69 7a 65  PRAGMA page_size
3ad0: 5d 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f  ] command..}..CO
3ae0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
3af0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e  LITE_DEFAULT_SYN
3b00: 43 48 52 4f 4e 4f 55 53 3d 3c 69 3e 26 6c 74 3b  CHRONOUS=<i>&lt;
3b10: 30 2d 33 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20  0-3&gt;</i>} {. 
3b20: 20 54 68 69 73 20 6d 61 63 72 6f 20 64 65 74 65   This macro dete
3b30: 72 6d 69 6e 65 73 20 74 68 65 20 64 65 66 61 75  rmines the defau
3b40: 6c 74 20 76 61 6c 75 65 20 6f 66 20 74 68 65 0a  lt value of the.
3b50: 20 20 5b 50 52 41 47 4d 41 20 73 79 6e 63 68 72    [PRAGMA synchr
3b60: 6f 6e 6f 75 73 5d 20 73 65 74 74 69 6e 67 2e 20  onous] setting. 
3b70: 20 49 66 20 6e 6f 74 20 6f 76 65 72 72 69 64 64   If not overridd
3b80: 65 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  en at compile-ti
3b90: 6d 65 2c 0a 20 20 74 68 65 20 64 65 66 61 75 6c  me,.  the defaul
3ba0: 74 20 73 65 74 74 69 6e 67 20 69 73 20 32 20 28  t setting is 2 (
3bb0: 46 55 4c 4c 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  FULL)..}..COMPIL
3bc0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
3bd0: 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f 53 59 4e  _DEFAULT_WAL_SYN
3be0: 43 48 52 4f 4e 4f 55 53 3d 3c 69 3e 26 6c 74 3b  CHRONOUS=<i>&lt;
3bf0: 30 2d 33 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20  0-3&gt;</i>} {. 
3c00: 20 54 68 69 73 20 6d 61 63 72 6f 20 64 65 74 65   This macro dete
3c10: 72 6d 69 6e 65 73 20 74 68 65 20 64 65 66 61 75  rmines the defau
3c20: 6c 74 20 76 61 6c 75 65 20 6f 66 20 74 68 65 0a  lt value of the.
3c30: 20 20 5b 50 52 41 47 4d 41 20 73 79 6e 63 68 72    [PRAGMA synchr
3c40: 6f 6e 6f 75 73 5d 20 73 65 74 74 69 6e 67 20 66  onous] setting f
3c50: 6f 72 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  or database file
3c60: 73 20 74 68 61 74 20 6f 70 65 6e 20 69 6e 0a 20  s that open in. 
3c70: 20 5b 57 41 4c 20 6d 6f 64 65 5d 2e 20 20 49 66   [WAL mode].  If
3c80: 20 6e 6f 74 20 6f 76 65 72 72 69 64 64 65 6e 20   not overridden 
3c90: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c  at compile-time,
3ca0: 20 74 68 69 73 20 76 61 6c 75 65 20 69 73 20 74   this value is t
3cb0: 68 65 0a 20 20 73 61 6d 65 20 61 73 20 5b 53 51  he.  same as [SQ
3cc0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e  LITE_DEFAULT_SYN
3cd0: 43 48 52 4f 4e 4f 55 53 5d 2e 0a 20 20 3c 70 3e  CHRONOUS]..  <p>
3ce0: 0a 20 20 49 66 20 53 51 4c 49 54 45 5f 44 45 46  .  If SQLITE_DEF
3cf0: 41 55 4c 54 5f 57 41 4c 5f 53 59 4e 43 48 52 4f  AULT_WAL_SYNCHRO
3d00: 4e 4f 55 53 20 64 69 66 66 65 72 73 20 66 72 6f  NOUS differs fro
3d10: 6d 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  m SQLITE_DEFAULT
3d20: 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 2c 0a 20 20  _SYNCHRONOUS,.  
3d30: 61 6e 64 20 69 66 20 74 68 65 20 61 70 70 6c 69  and if the appli
3d40: 63 61 74 69 6f 6e 20 68 61 73 20 6e 6f 74 20 6d  cation has not m
3d50: 6f 64 69 66 69 65 64 20 74 68 65 20 73 79 6e 63  odified the sync
3d60: 68 72 6f 6e 6f 75 73 20 73 65 74 74 69 6e 67 20  hronous setting 
3d70: 66 6f 72 0a 20 20 74 68 65 20 64 61 74 61 62 61  for.  the databa
3d80: 73 65 20 66 69 6c 65 20 75 73 69 6e 67 20 74 68  se file using th
3d90: 65 20 5b 50 52 41 47 4d 41 20 73 79 6e 63 68 72  e [PRAGMA synchr
3da0: 6f 6e 6f 75 73 5d 20 73 74 61 74 65 6d 65 6e 74  onous] statement
3db0: 2c 20 74 68 65 6e 0a 20 20 74 68 65 20 73 79 6e  , then.  the syn
3dc0: 63 68 72 6f 6e 6f 75 73 20 73 65 74 74 69 6e 67  chronous setting
3dd0: 20 69 73 20 63 68 61 6e 67 65 64 20 74 6f 20 76   is changed to v
3de0: 61 6c 75 65 20 64 65 66 69 6e 65 64 20 62 79 0a  alue defined by.
3df0: 20 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54    SQLITE_DEFAULT
3e00: 5f 57 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53  _WAL_SYNCHRONOUS
3e10: 20 77 68 65 6e 20 74 68 65 20 64 61 74 61 62 61   when the databa
3e20: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 77  se connection sw
3e30: 69 74 63 68 65 73 0a 20 20 69 6e 74 6f 20 57 41  itches.  into WA
3e40: 4c 20 6d 6f 64 65 20 66 6f 72 20 74 68 65 20 66  L mode for the f
3e50: 69 72 73 74 20 74 69 6d 65 2e 0a 20 20 49 66 20  irst time..  If 
3e60: 74 68 65 20 53 51 4c 49 54 45 5f 44 45 46 41 55  the SQLITE_DEFAU
3e70: 4c 54 5f 57 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f  LT_WAL_SYNCHRONO
3e80: 55 53 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20  US value is not 
3e90: 6f 76 65 72 72 69 64 64 65 6e 20 61 74 0a 20 20  overridden at.  
3ea0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 74 68  compile-time, th
3eb0: 65 6e 20 69 74 20 77 69 6c 6c 20 61 6c 77 61 79  en it will alway
3ec0: 73 20 62 65 20 74 68 65 20 73 61 6d 65 20 61 73  s be the same as
3ed0: 0a 20 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55  .  [SQLITE_DEFAU
3ee0: 4c 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 5d 20  LT_SYNCHRONOUS] 
3ef0: 61 6e 64 20 73 6f 20 6e 6f 20 61 75 74 6f 6d 61  and so no automa
3f00: 74 69 63 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20  tic synchronous 
3f10: 73 65 74 74 69 6e 67 0a 20 20 63 68 61 6e 67 65  setting.  change
3f20: 73 20 77 69 6c 6c 20 65 76 65 72 20 6f 63 63 75  s will ever occu
3f30: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
3f40: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
3f50: 41 55 4c 54 5f 57 41 4c 5f 41 55 54 4f 43 48 45  AULT_WAL_AUTOCHE
3f60: 43 4b 50 4f 49 4e 54 3d 3c 69 3e 26 6c 74 3b 70  CKPOINT=<i>&lt;p
3f70: 61 67 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  ages&gt;</i>} {.
3f80: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74    This macro set
3f90: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 70 61  s the default pa
3fa0: 67 65 20 63 6f 75 6e 74 20 66 6f 72 20 74 68 65  ge count for the
3fb0: 20 5b 57 41 4c 5d 0a 20 20 5b 63 68 65 63 6b 70   [WAL].  [checkp
3fc0: 6f 69 6e 74 69 6e 67 20 7c 20 61 75 74 6f 6d 61  ointing | automa
3fd0: 74 69 63 20 63 68 65 63 6b 70 6f 69 6e 74 69 6e  tic checkpointin
3fe0: 67 5d 20 66 65 61 74 75 72 65 2e 20 20 49 66 20  g] feature.  If 
3ff0: 75 6e 73 70 65 63 69 66 69 65 64 2c 0a 20 20 74  unspecified,.  t
4000: 68 65 20 64 65 66 61 75 6c 74 20 70 61 67 65 20  he default page 
4010: 63 6f 75 6e 74 20 69 73 20 31 30 30 30 2e 0a 7d  count is 1000..}
4020: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
4030: 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   {SQLITE_DEFAULT
4040: 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 3d  _WORKER_THREADS=
4050: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  <i>N</i>} {.  Th
4060: 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68  is macro sets th
4070: 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20  e default value 
4080: 66 6f 72 0a 20 20 74 68 65 20 5b 53 51 4c 49 54  for.  the [SQLIT
4090: 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54  E_LIMIT_WORKER_T
40a0: 48 52 45 41 44 53 5d 20 70 61 72 61 6d 65 74 65  HREADS] paramete
40b0: 72 2e 20 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  r.  The [SQLITE_
40c0: 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52  LIMIT_WORKER_THR
40d0: 45 41 44 53 5d 0a 20 20 70 61 72 61 6d 65 74 65  EADS].  paramete
40e0: 72 20 73 65 74 73 20 74 68 65 20 6d 61 78 69 6d  r sets the maxim
40f0: 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 61 75 78  um number of aux
4100: 69 6c 69 61 72 79 20 74 68 72 65 61 64 73 20 74  iliary threads t
4110: 68 61 74 20 61 20 73 69 6e 67 6c 65 0a 20 20 5b  hat a single.  [
4120: 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
4130: 6e 74 5d 20 77 69 6c 6c 20 6c 61 75 6e 63 68 20  nt] will launch 
4140: 74 6f 20 61 73 73 69 73 74 20 69 74 20 77 69 74  to assist it wit
4150: 68 20 61 20 71 75 65 72 79 2e 20 20 49 66 20 6e  h a query.  If n
4160: 6f 74 20 73 70 65 63 69 66 69 65 64 2c 0a 20 20  ot specified,.  
4170: 74 68 65 20 64 65 66 61 75 6c 74 20 6d 61 78 69  the default maxi
4180: 6d 75 6d 20 69 73 20 30 2e 0a 20 20 54 68 65 20  mum is 0..  The 
4190: 76 61 6c 75 65 20 73 65 74 20 68 65 72 65 20 63  value set here c
41a0: 61 6e 6e 6f 74 20 62 65 20 6d 6f 72 65 20 74 68  annot be more th
41b0: 61 6e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 57  an [SQLITE_MAX_W
41c0: 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 5d 2e 0a  ORKER_THREADS]..
41d0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
41e0: 4e 20 7b 53 51 4c 49 54 45 5f 45 58 54 52 41 5f  N {SQLITE_EXTRA_
41f0: 44 55 52 41 42 4c 45 7d 20 7b 0a 20 20 54 68 65  DURABLE} {.  The
4200: 20 53 51 4c 49 54 45 5f 45 58 54 52 41 5f 44 55   SQLITE_EXTRA_DU
4210: 52 41 42 4c 45 20 63 6f 6d 70 69 6c 65 2d 74 69  RABLE compile-ti
4220: 6d 65 20 6f 70 74 69 6f 6e 20 74 68 61 74 20 75  me option that u
4230: 73 65 64 20 74 6f 20 63 61 75 73 65 20 74 68 65  sed to cause the
4240: 20 64 65 66 61 75 6c 74 0a 20 20 5b 50 52 41 47   default.  [PRAG
4250: 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 20  MA synchronous] 
4260: 73 65 74 74 69 6e 67 20 74 6f 20 62 65 20 45 58  setting to be EX
4270: 54 52 41 2c 20 72 61 74 68 65 72 20 74 68 61 6e  TRA, rather than
4280: 20 46 55 4c 4c 2e 20 20 54 68 69 73 20 6f 70 74   FULL.  This opt
4290: 69 6f 6e 0a 20 20 69 73 20 6e 6f 20 6c 6f 6e 67  ion.  is no long
42a0: 65 72 20 73 75 70 70 6f 72 74 65 64 2e 20 20 55  er supported.  U
42b0: 73 65 0a 20 20 5b 53 51 4c 49 54 45 5f 44 45 46  se.  [SQLITE_DEF
42c0: 41 55 4c 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53  AULT_SYNCHRONOUS
42d0: 7c 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  |SQLITE_DEFAULT_
42e0: 53 59 4e 43 48 52 4f 4e 4f 55 53 3d 33 5d 20 69  SYNCHRONOUS=3] i
42f0: 6e 73 74 65 61 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  nstead..}..COMPI
4300: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
4310: 45 5f 46 54 53 33 5f 4d 41 58 5f 45 58 50 52 5f  E_FTS3_MAX_EXPR_
4320: 44 45 50 54 48 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20  DEPTH=<i>N</i>} 
4330: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73  {.  This macro s
4340: 65 74 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ets the maximum 
4350: 64 65 70 74 68 20 6f 66 20 74 68 65 20 73 65 61  depth of the sea
4360: 72 63 68 20 74 72 65 65 20 74 68 61 74 20 63 6f  rch tree that co
4370: 72 72 65 73 70 6f 6e 64 73 20 74 6f 0a 20 20 74  rresponds to.  t
4380: 68 65 20 72 69 67 68 74 2d 68 61 6e 64 20 73 69  he right-hand si
4390: 64 65 20 6f 66 20 74 68 65 20 4d 41 54 43 48 20  de of the MATCH 
43a0: 6f 70 65 72 61 74 6f 72 20 69 6e 20 61 6e 20 5b  operator in an [
43b0: 46 54 53 33 5d 20 6f 72 20 5b 46 54 53 34 5d 20  FTS3] or [FTS4] 
43c0: 66 75 6c 6c 2d 74 65 78 74 0a 20 20 69 6e 64 65  full-text.  inde
43d0: 78 2e 20 20 54 68 65 20 66 75 6c 6c 2d 74 65 78  x.  The full-tex
43e0: 74 20 73 65 61 72 63 68 20 75 73 65 73 20 61 20  t search uses a 
43f0: 72 65 63 75 72 73 69 76 65 20 61 6c 67 6f 72 69  recursive algori
4400: 74 68 6d 2c 20 73 6f 20 74 68 65 20 64 65 70 74  thm, so the dept
4410: 68 20 6f 66 0a 20 20 74 68 65 20 74 72 65 65 20  h of.  the tree 
4420: 69 73 20 6c 69 6d 69 74 65 64 20 74 6f 20 70 72  is limited to pr
4430: 65 76 65 6e 74 20 75 73 69 6e 67 20 74 6f 6f 20  event using too 
4440: 6d 75 63 68 20 73 74 61 63 6b 20 73 70 61 63 65  much stack space
4450: 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 0a 20  .  The default. 
4460: 20 6c 69 6d 69 74 20 69 73 20 31 32 2e 20 20 54   limit is 12.  T
4470: 68 69 73 20 6c 69 6d 69 74 20 69 73 20 73 75 66  his limit is suf
4480: 66 69 63 69 65 6e 74 20 66 6f 72 20 75 70 20 74  ficient for up t
4490: 6f 20 34 30 39 35 20 73 65 61 72 63 68 20 74 65  o 4095 search te
44a0: 72 6d 73 20 6f 6e 20 74 68 65 0a 20 20 72 69 67  rms on the.  rig
44b0: 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20  ht-hand side of 
44c0: 74 68 65 20 4d 41 54 43 48 20 6f 70 65 72 61 74  the MATCH operat
44d0: 6f 72 20 61 6e 64 20 69 74 20 68 6f 6c 64 73 20  or and it holds 
44e0: 73 74 61 63 6b 20 73 70 61 63 65 20 75 73 61 67  stack space usag
44f0: 65 20 74 6f 20 0a 20 20 6c 65 73 73 20 74 68 61  e to .  less tha
4500: 6e 20 32 30 30 30 20 62 79 74 65 73 2e 0a 20 20  n 2000 bytes..  
4510: 3c 70 3e 0a 20 20 46 6f 72 20 6f 72 64 69 6e 61  <p>.  For ordina
4520: 72 79 20 46 54 53 33 2f 46 54 53 34 20 71 75 65  ry FTS3/FTS4 que
4530: 72 69 65 73 2c 20 74 68 65 20 73 65 61 72 63 68  ries, the search
4540: 20 74 72 65 65 20 64 65 70 74 68 20 69 73 20 61   tree depth is a
4550: 70 70 72 6f 78 69 6d 61 74 65 6c 79 0a 20 20 74  pproximately.  t
4560: 68 65 20 62 61 73 65 2d 32 20 6c 6f 67 61 72 69  he base-2 logari
4570: 74 68 6d 20 6f 66 20 74 68 65 20 6e 75 6d 62 65  thm of the numbe
4580: 72 20 6f 66 20 74 65 72 6d 73 20 69 6e 20 74 68  r of terms in th
4590: 65 20 72 69 67 68 74 2d 68 61 6e 64 20 73 69 64  e right-hand sid
45a0: 65 20 6f 66 20 74 68 65 0a 20 20 4d 41 54 43 48  e of the.  MATCH
45b0: 20 6f 70 65 72 61 74 6f 72 2e 20 20 48 6f 77 65   operator.  Howe
45c0: 76 65 72 2c 20 66 6f 72 20 5b 70 68 72 61 73 65  ver, for [phrase
45d0: 20 71 75 65 72 69 65 73 5d 20 61 6e 64 20 5b 4e   queries] and [N
45e0: 45 41 52 20 71 75 65 72 69 65 73 5d 20 74 68 65  EAR queries] the
45f0: 0a 20 20 73 65 61 72 63 68 20 74 72 65 65 20 64  .  search tree d
4600: 65 70 74 68 20 69 73 20 6c 69 6e 65 61 72 20 69  epth is linear i
4610: 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  n the number of 
4620: 72 69 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20  right-hand side 
4630: 74 65 72 6d 73 2e 0a 20 20 53 6f 20 74 68 65 20  terms..  So the 
4640: 64 65 66 61 75 6c 74 20 64 65 70 74 68 20 6c 69  default depth li
4650: 6d 69 74 20 6f 66 20 31 32 20 69 73 20 73 75 66  mit of 12 is suf
4660: 66 69 63 69 65 6e 74 20 66 6f 72 20 75 70 20 74  ficient for up t
4670: 6f 20 34 30 39 35 20 6f 72 64 69 6e 61 72 79 0a  o 4095 ordinary.
4680: 20 20 74 65 72 6d 73 20 6f 6e 20 61 20 4d 41 54    terms on a MAT
4690: 43 48 2c 20 69 74 20 69 73 20 6f 6e 6c 79 20 73  CH, it is only s
46a0: 75 66 66 69 63 69 65 6e 74 20 66 6f 72 20 31 31  ufficient for 11
46b0: 20 6f 72 20 31 32 20 70 68 72 61 73 65 20 6f 72   or 12 phrase or
46c0: 20 4e 45 41 52 0a 20 20 74 65 72 6d 73 2e 20 20   NEAR.  terms.  
46d0: 45 76 65 6e 20 73 6f 2c 20 74 68 65 20 64 65 66  Even so, the def
46e0: 61 75 6c 74 20 69 73 20 6d 6f 72 65 20 74 68 61  ault is more tha
46f0: 6e 20 65 6e 6f 75 67 68 20 66 6f 72 20 6d 6f 73  n enough for mos
4700: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 0a 7d  t application..}
4710: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
4720: 20 7b 53 51 4c 49 54 45 5f 4c 49 4b 45 5f 44 4f   {SQLITE_LIKE_DO
4730: 45 53 4e 54 5f 4d 41 54 43 48 5f 42 4c 4f 42 53  ESNT_MATCH_BLOBS
4740: 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70 69  } {.  This compi
4750: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63  le-time option c
4760: 61 75 73 65 73 20 74 68 65 20 5b 4c 49 4b 45 5d  auses the [LIKE]
4770: 20 6f 70 65 72 61 74 6f 72 20 74 6f 20 61 6c 77   operator to alw
4780: 61 79 73 20 72 65 74 75 72 6e 20 0a 20 20 46 61  ays return .  Fa
4790: 6c 73 65 20 69 66 20 65 69 74 68 65 72 20 6f 70  lse if either op
47a0: 65 72 61 6e 64 20 69 73 20 61 20 42 4c 4f 42 2e  erand is a BLOB.
47b0: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 62 65    The default be
47c0: 68 61 76 69 6f 72 20 6f 66 20 5b 4c 49 4b 45 5d  havior of [LIKE]
47d0: 20 0a 20 20 69 73 20 74 68 61 74 20 42 4c 4f 42   .  is that BLOB
47e0: 20 6f 70 65 72 61 6e 64 73 20 61 72 65 20 63 61   operands are ca
47f0: 73 74 20 74 6f 20 54 45 58 54 20 62 65 66 6f 72  st to TEXT befor
4800: 65 20 74 68 65 20 63 6f 6d 70 61 72 69 73 6f 6e  e the comparison
4810: 20 69 73 20 64 6f 6e 65 2e 0a 20 20 3c 70 3e 0a   is done..  <p>.
4820: 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74    This compile-t
4830: 69 6d 65 20 6f 70 74 69 6f 6e 20 6d 61 6b 65 73  ime option makes
4840: 20 53 51 4c 69 74 65 20 72 75 6e 20 6d 6f 72 65   SQLite run more
4850: 20 65 66 66 69 63 69 65 6e 74 6c 79 20 77 68 65   efficiently whe
4860: 6e 20 70 72 6f 63 65 73 73 69 6e 67 0a 20 20 71  n processing.  q
4870: 75 65 72 69 65 73 20 74 68 61 74 20 75 73 65 20  ueries that use 
4880: 74 68 65 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61  the [LIKE] opera
4890: 74 6f 72 2c 20 61 74 20 74 68 65 20 65 78 70 65  tor, at the expe
48a0: 6e 73 65 20 6f 66 20 62 72 65 61 6b 69 6e 67 20  nse of breaking 
48b0: 62 61 63 6b 77 61 72 64 73 0a 20 20 63 6f 6d 70  backwards.  comp
48c0: 61 74 69 62 69 6c 69 74 79 2e 20 20 48 6f 77 65  atibility.  Howe
48d0: 76 65 72 2c 20 74 68 65 20 62 61 63 6b 77 61 72  ver, the backwar
48e0: 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  ds compatibility
48f0: 20 62 72 65 61 6b 20 6d 61 79 20 62 65 20 6f 6e   break may be on
4900: 6c 79 0a 20 20 61 20 74 65 63 68 6e 69 63 61 6c  ly.  a technical
4910: 69 74 79 2e 20 20 54 68 65 72 65 20 77 61 73 20  ity.  There was 
4920: 61 20 6c 6f 6e 67 2d 73 74 61 6e 64 69 6e 67 20  a long-standing 
4930: 62 75 67 20 69 6e 20 74 68 65 20 5b 4c 49 4b 45  bug in the [LIKE
4940: 5d 20 70 72 6f 63 65 73 73 69 6e 67 20 6c 6f 67  ] processing log
4950: 69 63 0a 20 20 28 73 65 65 20 5b 68 74 74 70 73  ic.  (see [https
4960: 3a 2f 2f 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72  ://www.sqlite.or
4970: 67 2f 73 72 63 2f 69 6e 66 6f 2f 30 35 66 34 33  g/src/info/05f43
4980: 62 65 38 66 64 64 61 39 66 5d 29 20 74 68 61 74  be8fdda9f]) that
4990: 20 63 61 75 73 65 64 20 69 74 20 74 6f 0a 20 20   caused it to.  
49a0: 6d 69 73 62 65 68 61 76 69 6f 72 20 66 6f 72 20  misbehavior for 
49b0: 42 4c 4f 42 20 6f 70 65 72 61 6e 64 73 20 61 6e  BLOB operands an
49c0: 64 20 6e 6f 62 6f 64 79 20 6f 62 73 65 72 76 65  d nobody observe
49d0: 64 20 74 68 61 74 20 62 75 67 20 69 6e 20 6e 65  d that bug in ne
49e0: 61 72 6c 79 0a 20 20 31 30 20 79 65 61 72 73 20  arly.  10 years 
49f0: 6f 66 20 61 63 74 69 76 65 20 75 73 65 2e 20 20  of active use.  
4a00: 53 6f 20 66 6f 72 20 6d 6f 72 65 20 75 73 65 72  So for more user
4a10: 73 2c 20 69 74 20 69 73 20 70 72 6f 62 61 62 6c  s, it is probabl
4a20: 79 20 73 61 66 65 20 74 6f 0a 20 20 65 6e 61 62  y safe to.  enab
4a30: 6c 65 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d  le this compile-
4a40: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 61 6e 64 20  time option and 
4a50: 74 68 65 72 65 62 79 20 73 61 76 65 20 61 20 6c  thereby save a l
4a60: 69 74 74 6c 65 20 43 50 55 20 74 69 6d 65 0a 20  ittle CPU time. 
4a70: 20 6f 6e 20 4c 49 4b 45 20 71 75 65 72 69 65 73   on LIKE queries
4a80: 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 69 73 20 63  ..  <p>.  This c
4a90: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
4aa0: 6f 6e 20 61 66 66 65 63 74 73 20 74 68 65 20 53  on affects the S
4ab0: 51 4c 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74  QL [LIKE] operat
4ac0: 6f 72 20 6f 6e 6c 79 20 61 6e 64 20 68 61 73 0a  or only and has.
4ad0: 20 20 6e 6f 20 69 6d 70 61 63 74 20 6f 6e 20 74    no impact on t
4ae0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 72 6c  he [sqlite3_strl
4af0: 69 6b 65 28 29 5d 20 43 2d 6c 61 6e 67 75 61 67  ike()] C-languag
4b00: 65 20 69 6e 74 65 72 66 61 63 65 2e 0a 7d 0a 0a  e interface..}..
4b10: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
4b20: 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f  SQLITE_MAX_MMAP_
4b30: 53 49 5a 45 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b  SIZE=<i>N</i>} {
4b40: 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65  .  This macro se
4b50: 74 73 20 61 20 68 61 72 64 20 75 70 70 65 72 20  ts a hard upper 
4b60: 62 6f 75 6e 64 20 6f 6e 20 74 68 65 20 61 6d 6f  bound on the amo
4b70: 75 6e 74 20 6f 66 20 61 64 64 72 65 73 73 20 73  unt of address s
4b80: 70 61 63 65 20 74 68 61 74 0a 20 20 63 61 6e 20  pace that.  can 
4b90: 62 65 20 75 73 65 64 20 62 79 20 61 6e 79 20 73  be used by any s
4ba0: 69 6e 67 6c 65 20 64 61 74 61 62 61 73 65 20 66  ingle database f
4bb0: 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64  or memory-mapped
4bc0: 20 49 2f 4f 2e 0a 20 20 53 65 74 74 69 6e 67 20   I/O..  Setting 
4bd0: 74 68 69 73 20 76 61 6c 75 65 20 74 6f 20 30 20  this value to 0 
4be0: 63 6f 6d 70 6c 65 74 65 6c 79 20 64 69 73 61 62  completely disab
4bf0: 6c 65 73 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65  les memory-mappe
4c00: 64 20 49 2f 4f 20 61 6e 64 0a 20 20 63 61 75 73  d I/O and.  caus
4c10: 65 73 20 6c 6f 67 69 63 20 61 73 73 6f 63 69 61  es logic associa
4c20: 74 65 64 20 77 69 74 68 20 6d 65 6d 6f 72 79 2d  ted with memory-
4c30: 6d 61 70 70 65 64 20 49 2f 4f 20 74 6f 20 62 65  mapped I/O to be
4c40: 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68   omitted from th
4c50: 65 0a 20 20 62 75 69 6c 64 2e 20 20 54 68 69 73  e.  build.  This
4c60: 20 6f 70 74 69 6f 6e 20 64 6f 65 73 20 63 68 61   option does cha
4c70: 6e 67 65 20 74 68 65 20 64 65 66 61 75 6c 74 20  nge the default 
4c80: 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f  memory-mapped I/
4c90: 4f 20 61 64 64 72 65 73 73 0a 20 20 73 70 61 63  O address.  spac
4ca0: 65 20 73 69 7a 65 20 28 73 65 74 20 62 79 20 5b  e size (set by [
4cb0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d  SQLITE_DEFAULT_M
4cc0: 4d 41 50 5f 53 49 5a 45 5d 20 6f 72 0a 20 20 73  MAP_SIZE] or.  s
4cd0: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 5b 53  qlite3_config([S
4ce0: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41  QLITE_CONFIG_MMA
4cf0: 50 5f 53 49 5a 45 5d 29 20 6f 72 20 74 68 65 0a  P_SIZE]) or the.
4d00: 20 20 72 75 6e 2d 74 69 6d 65 20 6d 65 6d 6f 72    run-time memor
4d10: 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20 61 64 64  y-mapped I/O add
4d20: 72 65 73 73 20 73 70 61 63 65 20 73 69 7a 65 20  ress space size 
4d30: 28 73 65 74 20 62 79 0a 20 20 73 71 6c 69 74 65  (set by.  sqlite
4d40: 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 5b  3_file_control([
4d50: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4d 4d 41  SQLITE_FCNTL_MMA
4d60: 50 5f 53 49 5a 45 5d 29 20 6f 72 0a 20 20 5b 50  P_SIZE]) or.  [P
4d70: 52 41 47 4d 41 20 6d 6d 61 70 5f 73 69 7a 65 5d  RAGMA mmap_size]
4d80: 29 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 6f  ) as long as tho
4d90: 73 65 20 6f 74 68 65 72 20 73 65 74 74 69 6e 67  se other setting
4da0: 73 20 61 72 65 20 6c 65 73 73 20 74 68 61 6e 20  s are less than 
4db0: 74 68 65 0a 20 20 6d 61 78 69 6d 75 6d 20 76 61  the.  maximum va
4dc0: 6c 75 65 20 64 65 66 69 6e 65 64 20 68 65 72 65  lue defined here
4dd0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
4de0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 41 58 5f  ION {SQLITE_MAX_
4df0: 53 43 48 45 4d 41 5f 52 45 54 52 59 3d 3c 69 3e  SCHEMA_RETRY=<i>
4e00: 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 57 68 65 6e 65  N</i>} {.  Whene
4e10: 76 65 72 20 74 68 65 20 64 61 74 61 62 61 73 65  ver the database
4e20: 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65 73 2c   schema changes,
4e30: 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
4e40: 65 6e 74 73 20 61 72 65 20 61 75 74 6f 6d 61 74  ents are automat
4e50: 69 63 61 6c 6c 79 0a 20 20 72 65 70 72 65 70 61  ically.  reprepa
4e60: 72 65 64 20 74 6f 20 61 63 63 6f 6d 6d 6f 64 61  red to accommoda
4e70: 74 65 20 74 68 65 20 6e 65 77 20 73 63 68 65 6d  te the new schem
4e80: 61 2e 20 20 54 68 65 72 65 20 69 73 20 61 20 72  a.  There is a r
4e90: 61 63 65 20 63 6f 6e 64 69 74 69 6f 6e 20 68 65  ace condition he
4ea0: 72 65 0a 20 20 69 6e 20 74 68 61 74 20 69 66 20  re.  in that if 
4eb0: 6f 6e 65 20 74 68 72 65 61 64 20 69 73 20 63 6f  one thread is co
4ec0: 6e 73 74 61 6e 74 6c 79 20 63 68 61 6e 67 69 6e  nstantly changin
4ed0: 67 20 74 68 65 20 73 63 68 65 6d 61 2c 20 61 6e  g the schema, an
4ee0: 6f 74 68 65 72 20 74 68 72 65 61 64 0a 20 20 6d  other thread.  m
4ef0: 69 67 68 74 20 73 70 69 6e 20 6f 6e 20 72 65 70  ight spin on rep
4f00: 61 72 73 65 73 20 61 6e 64 20 72 65 70 72 65 70  arses and reprep
4f10: 61 72 61 74 69 6f 6e 73 20 6f 66 20 61 20 70 72  arations of a pr
4f20: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
4f30: 20 61 6e 64 0a 20 20 6e 65 76 65 72 20 67 65 74   and.  never get
4f40: 20 61 6e 79 20 72 65 61 6c 20 77 6f 72 6b 20 64   any real work d
4f50: 6f 6e 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d  one.  This param
4f60: 65 74 65 72 20 70 72 65 76 65 6e 74 73 20 61 6e  eter prevents an
4f70: 20 69 6e 66 69 6e 69 74 65 20 6c 6f 6f 70 0a 20   infinite loop. 
4f80: 20 62 79 20 66 6f 72 63 69 6e 67 20 74 68 65 20   by forcing the 
4f90: 73 70 69 6e 6e 69 6e 67 20 74 68 72 65 61 64 20  spinning thread 
4fa0: 74 6f 20 67 69 76 65 20 75 70 20 61 66 74 65 72  to give up after
4fb0: 20 61 20 66 69 78 65 64 20 6e 75 6d 62 65 72 20   a fixed number 
4fc0: 6f 66 20 61 74 74 65 6d 70 74 73 0a 20 20 61 74  of attempts.  at
4fd0: 20 72 65 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65   recompiling the
4fe0: 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
4ff0: 65 6e 74 2e 20 20 54 68 65 20 64 65 66 61 75 6c  ent.  The defaul
5000: 74 20 73 65 74 74 69 6e 67 20 69 73 20 35 30 20  t setting is 50 
5010: 77 68 69 63 68 20 69 73 0a 20 20 6d 6f 72 65 20  which is.  more 
5020: 74 68 61 6e 20 61 64 65 71 75 61 74 65 20 66 6f  than adequate fo
5030: 72 20 6d 6f 73 74 20 61 70 70 6c 69 63 61 74 69  r most applicati
5040: 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ons..}..COMPILE_
5050: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d  OPTION {SQLITE_M
5060: 41 58 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  AX_WORKER_THREAD
5070: 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20  S=<i>N</i>} {.  
5080: 53 65 74 20 61 6e 20 75 70 70 65 72 20 62 6f 75  Set an upper bou
5090: 6e 64 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69 74  nd on the [sqlit
50a0: 65 33 5f 6c 69 6d 69 74 5d 28 64 62 2c 5b 53 51  e3_limit](db,[SQ
50b0: 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45  LITE_LIMIT_WORKE
50c0: 52 5f 54 48 52 45 41 44 53 5d 2c 4e 29 0a 20 20  R_THREADS],N).  
50d0: 73 65 74 74 69 6e 67 20 74 68 61 74 20 64 65 74  setting that det
50e0: 65 72 6d 69 6e 65 73 20 74 68 65 20 6d 61 78 69  ermines the maxi
50f0: 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 61 75  mum number of au
5100: 78 69 6c 69 61 72 79 20 74 68 72 65 61 64 73 20  xiliary threads 
5110: 74 68 61 74 20 61 20 73 69 6e 67 6c 65 0a 20 20  that a single.  
5120: 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
5130: 65 6e 74 5d 20 77 69 6c 6c 20 75 73 65 20 74 6f  ent] will use to
5140: 20 61 69 64 20 77 69 74 68 20 43 50 55 2d 69 6e   aid with CPU-in
5150: 74 65 6e 73 69 76 65 20 63 6f 6d 70 75 74 61 74  tensive computat
5160: 69 6f 6e 73 0a 20 20 28 6d 6f 73 74 6c 79 20 73  ions.  (mostly s
5170: 6f 72 74 69 6e 67 29 2e 20 20 53 65 65 20 61 6c  orting).  See al
5180: 73 6f 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 44  so the [SQLITE_D
5190: 45 46 41 55 4c 54 5f 57 4f 52 4b 45 52 5f 54 48  EFAULT_WORKER_TH
51a0: 52 45 41 44 53 5d 20 6f 70 74 69 6f 6e 73 2e 0a  READS] options..
51b0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
51c0: 4e 20 7b 53 51 4c 49 54 45 5f 4d 49 4e 49 4d 55  N {SQLITE_MINIMU
51d0: 4d 5f 46 49 4c 45 5f 44 45 53 43 52 49 50 54 4f  M_FILE_DESCRIPTO
51e0: 52 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20  R=<i>N</i>} {.  
51f0: 54 68 65 20 75 6e 69 78 20 5b 56 46 53 5d 20 77  The unix [VFS] w
5200: 69 6c 6c 20 6e 65 76 65 72 20 75 73 65 20 61 20  ill never use a 
5210: 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20  file descriptor 
5220: 6c 65 73 73 20 74 68 61 6e 20 3c 69 3e 4e 3c 2f  less than <i>N</
5230: 69 3e 2e 20 20 54 68 65 0a 20 20 64 65 66 61 75  i>.  The.  defau
5240: 6c 74 20 76 61 6c 75 65 20 6f 66 20 3c 69 3e 4e  lt value of <i>N
5250: 3c 2f 69 3e 20 69 73 20 33 2e 0a 20 20 3c 70 3e  </i> is 3..  <p>
5260: 0a 20 20 41 76 6f 69 64 69 6e 67 20 74 68 65 20  .  Avoiding the 
5270: 75 73 65 20 6f 66 20 6c 6f 77 2d 6e 75 6d 62 65  use of low-numbe
5280: 72 65 64 20 66 69 6c 65 20 64 65 73 63 72 69 70  red file descrip
5290: 74 6f 72 73 20 69 73 20 61 20 64 65 66 65 6e 73  tors is a defens
52a0: 65 20 61 67 61 69 6e 73 74 0a 20 20 61 63 63 69  e against.  acci
52b0: 64 65 6e 74 61 6c 20 64 61 74 61 62 61 73 65 20  dental database 
52c0: 63 6f 72 72 75 70 74 69 6f 6e 2e 20 20 49 66 20  corruption.  If 
52d0: 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  a database file 
52e0: 77 61 73 20 6f 70 65 6e 65 64 20 75 73 69 6e 67  was opened using
52f0: 0a 20 20 66 69 6c 65 20 64 65 73 63 72 69 70 74  .  file descript
5300: 6f 72 20 32 2c 20 66 6f 72 20 65 78 61 6d 70 6c  or 2, for exampl
5310: 65 2c 20 61 6e 64 20 74 68 65 6e 20 61 6e 20 61  e, and then an a
5320: 73 73 65 72 74 28 29 20 66 61 69 6c 65 64 20 61  ssert() failed a
5330: 6e 64 20 69 6e 76 6f 6b 65 64 0a 20 20 77 72 69  nd invoked.  wri
5340: 74 65 28 32 2c 2e 2e 2e 29 2c 20 74 68 61 74 20  te(2,...), that 
5350: 77 6f 75 6c 64 20 6c 69 6b 65 6c 79 20 63 61 75  would likely cau
5360: 73 65 20 64 61 74 61 62 61 73 65 20 63 6f 72 72  se database corr
5370: 75 70 74 69 6f 6e 20 62 79 20 6f 76 65 72 77 72  uption by overwr
5380: 69 74 69 6e 67 0a 20 20 70 61 72 74 20 6f 66 20  iting.  part of 
5390: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
53a0: 65 20 77 69 74 68 20 74 68 65 20 61 73 73 65 72  e with the asser
53b0: 74 69 6f 6e 20 65 72 72 6f 72 20 6d 65 73 73 61  tion error messa
53c0: 67 65 2e 20 20 55 73 69 6e 67 20 6f 6e 6c 79 0a  ge.  Using only.
53d0: 20 20 68 69 67 68 65 72 2d 76 61 6c 75 65 64 20    higher-valued 
53e0: 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 73  file descriptors
53f0: 20 61 76 6f 69 64 73 20 74 68 69 73 20 70 6f 74   avoids this pot
5400: 65 6e 74 69 61 6c 20 70 72 6f 62 6c 65 6d 2e 20  ential problem. 
5410: 20 54 68 65 20 0a 20 20 70 72 6f 74 65 63 74 69   The .  protecti
5420: 6f 6e 20 61 67 61 69 6e 73 74 0a 20 20 75 73 69  on against.  usi
5430: 6e 67 20 6c 6f 77 2d 6e 75 6d 62 65 72 65 64 20  ng low-numbered 
5440: 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 73  file descriptors
5450: 20 63 61 6e 20 62 65 20 64 69 73 61 62 6c 65 64   can be disabled
5460: 20 62 79 20 73 65 74 74 69 6e 67 20 74 68 69 73   by setting this
5470: 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  .  compile-time 
5480: 6f 70 74 69 6f 6e 20 74 6f 20 30 2e 0a 7d 0a 0a  option to 0..}..
5490: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
54a0: 53 51 4c 49 54 45 5f 50 4f 57 45 52 53 41 46 45  SQLITE_POWERSAFE
54b0: 5f 4f 56 45 52 57 52 49 54 45 3d 3c 69 3e 26 6c  _OVERWRITE=<i>&l
54c0: 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e  t;0 or 1&gt;</i>
54d0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
54e0: 6e 20 63 68 61 6e 67 65 73 20 74 68 65 20 64 65  n changes the de
54f0: 66 61 75 6c 74 20 61 73 73 75 6d 70 74 69 6f 6e  fault assumption
5500: 20 61 62 6f 75 74 20 5b 70 6f 77 65 72 73 61 66   about [powersaf
5510: 65 20 6f 76 65 72 77 72 69 74 65 5d 0a 20 20 66  e overwrite].  f
5520: 6f 72 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e  or the underlyin
5530: 67 20 66 69 6c 65 73 79 73 74 65 6d 73 20 66 6f  g filesystems fo
5540: 72 20 74 68 65 20 75 6e 69 78 20 61 6e 64 20 77  r the unix and w
5550: 69 6e 64 6f 77 73 20 5b 56 46 53 65 73 5d 2e 0a  indows [VFSes]..
5560: 20 20 53 65 74 74 69 6e 67 20 53 51 4c 49 54 45    Setting SQLITE
5570: 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57  _POWERSAFE_OVERW
5580: 52 49 54 45 20 74 6f 20 31 20 63 61 75 73 65 73  RITE to 1 causes
5590: 20 53 51 4c 69 74 65 20 74 6f 20 61 73 73 75 6d   SQLite to assum
55a0: 65 20 74 68 61 74 0a 20 20 61 70 70 6c 69 63 61  e that.  applica
55b0: 74 69 6f 6e 2d 6c 65 76 65 6c 20 77 72 69 74 65  tion-level write
55c0: 73 20 63 61 6e 6e 6f 74 20 63 68 61 6e 67 65 73  s cannot changes
55d0: 20 62 79 74 65 73 20 6f 75 74 73 69 64 65 20 74   bytes outside t
55e0: 68 65 20 72 61 6e 67 65 20 6f 66 0a 20 20 62 79  he range of.  by
55f0: 74 65 73 20 77 72 69 74 74 65 6e 20 65 76 65 6e  tes written even
5600: 20 69 66 20 74 68 65 20 77 72 69 74 65 20 6f 63   if the write oc
5610: 63 75 72 73 20 6a 75 73 74 20 62 65 66 6f 72 65  curs just before
5620: 20 61 20 70 6f 77 65 72 20 6c 6f 73 73 2e 0a 20   a power loss.. 
5630: 20 57 69 74 68 20 53 51 4c 49 54 45 5f 50 4f 57   With SQLITE_POW
5640: 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45  ERSAFE_OVERWRITE
5650: 20 73 65 74 20 74 6f 20 30 2c 20 53 51 4c 69 74   set to 0, SQLit
5660: 65 20 61 73 73 75 6d 65 73 20 74 68 61 74 20 6f  e assumes that o
5670: 74 68 65 72 0a 20 20 62 79 74 65 73 20 69 6e 20  ther.  bytes in 
5680: 74 68 65 20 73 61 6d 65 20 73 65 63 74 6f 72 20  the same sector 
5690: 77 69 74 68 20 61 20 77 72 69 74 74 65 6e 20 62  with a written b
56a0: 79 74 65 20 6d 69 67 68 74 20 62 65 20 63 68 61  yte might be cha
56b0: 6e 67 65 64 20 6f 72 20 0a 20 20 64 61 6d 61 67  nged or .  damag
56c0: 65 64 20 62 79 20 61 20 70 6f 77 65 72 20 6c 6f  ed by a power lo
56d0: 73 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ss..}..COMPILE_O
56e0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 52 45  PTION {SQLITE_RE
56f0: 56 45 52 53 45 5f 55 4e 4f 52 44 45 52 45 44 5f  VERSE_UNORDERED_
5700: 53 45 4c 45 43 54 53 7d 20 7b 0a 20 20 54 68 69  SELECTS} {.  Thi
5710: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
5720: 74 68 65 20 5b 50 52 41 47 4d 41 20 72 65 76 65  the [PRAGMA reve
5730: 72 73 65 5f 75 6e 6f 72 64 65 72 65 64 5f 73 65  rse_unordered_se
5740: 6c 65 63 74 73 5d 20 73 65 74 74 69 6e 67 20 74  lects] setting t
5750: 6f 20 62 65 0a 20 20 65 6e 61 62 6c 65 64 20 62  o be.  enabled b
5760: 79 20 64 65 66 61 75 6c 74 2e 20 20 57 68 65 6e  y default.  When
5770: 20 65 6e 61 62 6c 65 64 2c 20 5b 53 45 4c 45 43   enabled, [SELEC
5780: 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68  T] statements th
5790: 61 74 20 6c 61 63 6b 20 61 6e 0a 20 20 4f 52 44  at lack an.  ORD
57a0: 45 52 20 42 59 20 63 6c 61 75 73 65 20 77 69 6c  ER BY clause wil
57b0: 6c 20 72 75 6e 20 69 6e 20 72 65 76 65 72 73 65  l run in reverse
57c0: 20 6f 72 64 65 72 2e 3c 70 3e 0a 20 20 54 68 69   order.<p>.  Thi
57d0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 66  s option is usef
57e0: 75 6c 20 66 6f 72 20 64 65 74 65 63 74 69 6e 67  ul for detecting
57f0: 20 77 68 65 6e 20 61 70 70 6c 69 63 61 74 69 6f   when applicatio
5800: 6e 73 20 28 69 6e 63 6f 72 72 65 63 74 6c 79 29  ns (incorrectly)
5810: 0a 20 20 61 73 73 75 6d 65 20 74 68 61 74 20 74  .  assume that t
5820: 68 65 20 6f 72 64 65 72 20 6f 66 20 72 6f 77 73  he order of rows
5830: 20 69 6e 20 61 20 53 45 4c 45 43 54 20 77 69 74   in a SELECT wit
5840: 68 6f 75 74 20 61 6e 20 4f 52 44 45 52 20 42 59  hout an ORDER BY
5850: 20 63 6c 61 75 73 65 0a 20 20 77 69 6c 6c 20 61   clause.  will a
5860: 6c 77 61 79 73 20 62 65 20 74 68 65 20 73 61 6d  lways be the sam
5870: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
5880: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 4f 52  TION {SQLITE_SOR
5890: 54 45 52 5f 50 4d 41 53 5a 3d 3c 69 3e 4e 3c 2f  TER_PMASZ=<i>N</
58a0: 69 3e 7d 20 7b 0a 20 20 49 66 20 6d 75 6c 74 69  i>} {.  If multi
58b0: 2d 74 68 72 65 61 64 65 64 20 70 72 6f 63 65 73  -threaded proces
58c0: 73 69 6e 67 20 69 73 20 65 6e 61 62 6c 65 64 20  sing is enabled 
58d0: 76 69 61 20 74 68 65 0a 20 20 5b 50 52 41 47 4d  via the.  [PRAGM
58e0: 41 20 74 68 72 65 61 64 73 5d 20 73 65 74 74 69  A threads] setti
58f0: 6e 67 2c 20 74 68 65 6e 20 73 6f 72 74 20 6f 70  ng, then sort op
5900: 65 72 61 74 69 6f 6e 73 20 77 69 6c 6c 0a 20 20  erations will.  
5910: 61 74 74 65 6d 70 74 20 74 6f 20 73 74 61 72 74  attempt to start
5920: 20 68 65 6c 70 65 72 20 74 68 72 65 61 64 73 20   helper threads 
5930: 77 68 65 6e 20 74 68 65 20 61 6d 6f 75 6e 74 20  when the amount 
5940: 6f 66 20 63 6f 6e 74 65 6e 74 0a 20 20 74 6f 20  of content.  to 
5950: 62 65 20 73 6f 72 74 65 64 20 65 78 63 65 65 64  be sorted exceed
5960: 73 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 6f 66  s the minimum of
5970: 20 74 68 65 20 5b 63 61 63 68 65 5f 73 69 7a 65   the [cache_size
5980: 5d 20 61 6e 64 20 50 4d 41 20 53 69 7a 65 0a 20  ] and PMA Size. 
5990: 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74   determined by t
59a0: 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  he [SQLITE_CONFI
59b0: 47 5f 50 4d 41 53 5a 5d 20 73 74 61 72 74 2d 74  G_PMASZ] start-t
59c0: 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a 20 20 54 68  ime option..  Th
59d0: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  is compile-time 
59e0: 6f 70 74 69 6f 6e 20 73 65 74 73 20 74 68 65 20  option sets the 
59f0: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f  default value fo
5a00: 72 20 74 68 65 0a 20 20 5b 53 51 4c 49 54 45 5f  r the.  [SQLITE_
5a10: 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 5d 20 73 74  CONFIG_PMASZ] st
5a20: 61 72 74 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e  art-time option.
5a30: 0a 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 76  .  The default v
5a40: 61 6c 75 65 20 69 73 20 32 35 30 2e 0a 7d 0a 0a  alue is 250..}..
5a50: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
5a60: 53 51 4c 49 54 45 5f 53 54 4d 54 4a 52 4e 4c 5f  SQLITE_STMTJRNL_
5a70: 53 50 49 4c 4c 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20  SPILL=<i>N</i>} 
5a80: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 53  {.  The SQLITE_S
5a90: 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 20 63 6f  TMTJRNL_SPILL co
5aa0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
5ab0: 6e 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65  n determines the
5ac0: 0a 20 20 64 65 66 61 75 6c 74 20 73 65 74 74 69  .  default setti
5ad0: 6e 67 20 6f 66 20 74 68 65 20 5b 53 51 4c 49 54  ng of the [SQLIT
5ae0: 45 5f 43 4f 4e 46 49 47 5f 53 54 4d 54 4a 52 4e  E_CONFIG_STMTJRN
5af0: 4c 5f 53 50 49 4c 4c 5d 20 73 74 61 72 74 2d 74  L_SPILL] start-t
5b00: 69 6d 65 0a 20 20 73 65 74 74 69 6e 67 2e 20 20  ime.  setting.  
5b10: 54 68 61 74 20 73 65 74 74 69 6e 67 20 64 65 74  That setting det
5b20: 65 72 6d 69 6e 65 73 20 74 68 65 20 73 69 7a 65  ermines the size
5b30: 20 74 68 72 65 73 68 6f 6c 64 20 61 62 6f 76 65   threshold above
5b40: 20 77 68 69 63 68 0a 20 20 5b 73 74 61 74 65 6d   which.  [statem
5b50: 65 6e 74 20 6a 6f 75 72 6e 61 6c 73 5d 20 61 72  ent journals] ar
5b60: 65 20 6d 6f 76 65 64 20 66 72 6f 6d 20 6d 65 6d  e moved from mem
5b70: 6f 72 79 20 74 6f 20 64 69 73 6b 2e 0a 7d 0a 0a  ory to disk..}..
5b80: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
5b90: 53 51 4c 49 54 45 5f 57 49 4e 33 32 5f 4d 41 4c  SQLITE_WIN32_MAL
5ba0: 4c 4f 43 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  LOC} {.  This op
5bb0: 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65  tion enables the
5bc0: 20 75 73 65 20 6f 66 20 74 68 65 20 57 69 6e 64   use of the Wind
5bd0: 6f 77 73 20 48 65 61 70 20 41 50 49 20 66 75 6e  ows Heap API fun
5be0: 63 74 69 6f 6e 73 20 66 6f 72 20 6d 65 6d 6f 72  ctions for memor
5bf0: 79 0a 20 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69  y.  allocation i
5c00: 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 73 74  nstead of the st
5c10: 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d  andard library m
5c20: 61 6c 6c 6f 63 28 29 20 61 6e 64 20 66 72 65 65  alloc() and free
5c30: 28 29 20 72 6f 75 74 69 6e 65 73 2e 0a 7d 0a 0a  () routines..}..
5c40: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
5c50: 59 59 53 54 41 43 4b 44 45 50 54 48 3d 3c 69 3e  YYSTACKDEPTH=<i>
5c60: 26 6c 74 3b 6d 61 78 5f 64 65 70 74 68 26 67 74  &lt;max_depth&gt
5c70: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
5c80: 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 6d  macro sets the m
5c90: 61 78 69 6d 75 6d 20 64 65 70 74 68 20 6f 66 20  aximum depth of 
5ca0: 74 68 65 20 4c 41 4c 52 28 31 29 20 73 74 61 63  the LALR(1) stac
5cb0: 6b 20 75 73 65 64 20 62 79 0a 20 20 74 68 65 20  k used by.  the 
5cc0: 53 51 4c 20 70 61 72 73 65 72 20 77 69 74 68 69  SQL parser withi
5cd0: 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 65 20 64  n SQLite.  The d
5ce0: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20  efault value is 
5cf0: 31 30 30 2e 20 20 41 20 74 79 70 69 63 61 6c 0a  100.  A typical.
5d00: 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 77 69    application wi
5d10: 6c 6c 20 75 73 65 20 6c 65 73 73 20 74 68 61 6e  ll use less than
5d20: 20 61 62 6f 75 74 20 32 30 20 6c 65 76 65 6c 73   about 20 levels
5d30: 20 6f 66 20 74 68 65 20 73 74 61 63 6b 2e 0a 20   of the stack.. 
5d40: 20 44 65 76 65 6c 6f 70 65 72 73 20 77 68 6f 73   Developers whos
5d50: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 63  e applications c
5d60: 6f 6e 74 61 69 6e 20 53 51 4c 20 73 74 61 74 65  ontain SQL state
5d70: 6d 65 6e 74 73 20 74 68 61 74 20 0a 20 20 6e 65  ments that .  ne
5d80: 65 64 20 6d 6f 72 65 20 74 68 61 6e 20 31 30 30  ed more than 100
5d90: 20 4c 41 4c 52 28 31 29 20 73 74 61 63 6b 20 65   LALR(1) stack e
5da0: 6e 74 72 69 65 73 20 73 68 6f 75 6c 64 20 73 65  ntries should se
5db0: 72 69 6f 75 73 6c 79 0a 20 20 63 6f 6e 73 69 64  riously.  consid
5dc0: 65 72 20 72 65 66 61 63 74 6f 72 69 6e 67 20 74  er refactoring t
5dd0: 68 65 69 72 20 53 51 4c 20 61 73 20 69 74 20 69  heir SQL as it i
5de0: 73 20 6c 69 6b 65 6c 79 20 74 6f 20 62 65 20 77  s likely to be w
5df0: 65 6c 6c 20 62 65 79 6f 6e 64 0a 20 20 74 68 65  ell beyond.  the
5e00: 20 61 62 69 6c 69 74 79 20 6f 66 20 61 6e 79 20   ability of any 
5e10: 68 75 6d 61 6e 20 74 6f 20 63 6f 6d 70 72 65 68  human to compreh
5e20: 65 6e 64 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  end..}.</tcl>..<
5e30: 68 31 3e 20 4f 70 74 69 6f 6e 73 20 54 6f 20 53  h1> Options To S
5e40: 65 74 20 53 69 7a 65 20 4c 69 6d 69 74 73 3c 2f  et Size Limits</
5e50: 68 31 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72  h1>..<p>There ar
5e60: 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  e compile-time o
5e70: 70 74 69 6f 6e 73 20 74 68 61 74 20 77 69 6c 6c  ptions that will
5e80: 20 73 65 74 20 75 70 70 65 72 20 62 6f 75 6e 64   set upper bound
5e90: 73 0a 6f 6e 20 74 68 65 20 73 69 7a 65 73 20 6f  s.on the sizes o
5ea0: 66 20 76 61 72 69 6f 75 73 20 73 74 72 75 63 74  f various struct
5eb0: 75 72 65 73 20 69 6e 20 53 51 4c 69 74 65 2e 20  ures in SQLite. 
5ec0: 20 54 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   The compile-tim
5ed0: 65 0a 6f 70 74 69 6f 6e 73 20 6e 6f 72 6d 61 6c  e.options normal
5ee0: 6c 79 20 73 65 74 20 61 20 68 61 72 64 20 75 70  ly set a hard up
5ef0: 70 65 72 20 62 6f 75 6e 64 20 74 68 61 74 20 63  per bound that c
5f00: 61 6e 20 62 65 20 63 68 61 6e 67 65 64 0a 61 74  an be changed.at
5f10: 20 72 75 6e 2d 74 69 6d 65 20 6f 6e 20 69 6e 64   run-time on ind
5f20: 69 76 69 64 75 61 6c 20 5b 64 61 74 61 62 61 73  ividual [databas
5f30: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 75  e connections] u
5f40: 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74 65  sing the.[sqlite
5f50: 33 5f 6c 69 6d 69 74 28 29 5d 20 69 6e 74 65 72  3_limit()] inter
5f60: 66 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  face.</p>..<p>Th
5f70: 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  e compile-time o
5f80: 70 74 69 6f 6e 73 20 66 6f 72 20 73 65 74 74 69  ptions for setti
5f90: 6e 67 20 75 70 70 65 72 20 62 6f 75 6e 64 73 20  ng upper bounds 
5fa0: 61 72 65 0a 5b 6c 69 6d 69 74 73 20 7c 20 64 6f  are.[limits | do
5fb0: 63 75 6d 65 6e 74 65 64 20 73 65 70 61 72 61 74  cumented separat
5fc0: 65 6c 79 5d 2e 20 20 54 68 65 20 66 6f 6c 6c 6f  ely].  The follo
5fd0: 77 69 6e 67 20 69 73 20 61 20 6c 69 73 74 20 6f  wing is a list o
5fe0: 66 0a 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20  f.the available 
5ff0: 73 65 74 74 69 6e 67 73 3a 3c 2f 70 3e 0a 0a 3c  settings:</p>..<
6000: 75 6c 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  ul>.<li> [SQLITE
6010: 5f 4d 41 58 5f 41 54 54 41 43 48 45 44 5d 20 20  _MAX_ATTACHED]  
6020: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
6030: 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 20 20  TE_MAX_COLUMN]  
6040: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
6050: 54 45 5f 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f  TE_MAX_COMPOUND_
6060: 53 45 4c 45 43 54 5d 20 20 3c 2f 6c 69 3e 0a 3c  SELECT]  </li>.<
6070: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  li> [SQLITE_MAX_
6080: 45 58 50 52 5f 44 45 50 54 48 5d 20 20 3c 2f 6c  EXPR_DEPTH]  </l
6090: 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  i>.<li> [SQLITE_
60a0: 4d 41 58 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47  MAX_FUNCTION_ARG
60b0: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
60c0: 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e 47 54 48  QLITE_MAX_LENGTH
60d0: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
60e0: 51 4c 49 54 45 5f 4d 41 58 5f 4c 49 4b 45 5f 50  QLITE_MAX_LIKE_P
60f0: 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48 5d 20 20  ATTERN_LENGTH]  
6100: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
6110: 54 45 5f 4d 41 58 5f 50 41 47 45 5f 43 4f 55 4e  TE_MAX_PAGE_COUN
6120: 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b  T]  </li>.<li> [
6130: 53 51 4c 49 54 45 5f 4d 41 58 5f 53 51 4c 5f 4c  SQLITE_MAX_SQL_L
6140: 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  ENGTH]  </li>.<l
6150: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 56  i> [SQLITE_MAX_V
6160: 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 5d 20  ARIABLE_NUMBER] 
6170: 20 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 61   </li>.</ul>..<a
6180: 20 6e 61 6d 65 3d 22 63 6f 6e 74 72 6f 6c 66 65   name="controlfe
6190: 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 31  atures"></a>.<h1
61a0: 3e 20 4f 70 74 69 6f 6e 73 20 54 6f 20 43 6f 6e  > Options To Con
61b0: 74 72 6f 6c 20 4f 70 65 72 61 74 69 6e 67 20 43  trol Operating C
61c0: 68 61 72 61 63 74 65 72 69 73 74 69 63 73 3c 2f  haracteristics</
61d0: 68 31 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49  h1>..<tcl>.COMPI
61e0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
61f0: 45 5f 34 5f 42 59 54 45 5f 41 4c 49 47 4e 45 44  E_4_BYTE_ALIGNED
6200: 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 4f 6e 20  _MALLOC} {.  On 
6210: 6d 6f 73 74 20 73 79 73 74 65 6d 73 2c 20 74 68  most systems, th
6220: 65 20 6d 61 6c 6c 6f 63 28 29 20 73 79 73 74 65  e malloc() syste
6230: 6d 20 63 61 6c 6c 20 72 65 74 75 72 6e 73 20 61  m call returns a
6240: 20 62 75 66 66 65 72 20 74 68 61 74 20 69 73 0a   buffer that is.
6250: 20 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20    aligned to an 
6260: 38 2d 62 79 74 65 20 62 6f 75 6e 64 61 72 79 2e  8-byte boundary.
6270: 20 20 42 75 74 20 6f 6e 20 73 6f 6d 65 20 73 79    But on some sy
6280: 73 74 65 6d 73 20 28 65 78 3a 20 77 69 6e 64 6f  stems (ex: windo
6290: 77 73 29 20 6d 61 6c 6c 6f 63 28 29 0a 20 20 72  ws) malloc().  r
62a0: 65 74 75 72 6e 73 20 34 2d 62 79 74 65 20 61 6c  eturns 4-byte al
62b0: 69 67 6e 65 64 20 70 6f 69 6e 74 65 72 2e 20 20  igned pointer.  
62c0: 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  This compile-tim
62d0: 65 20 6f 70 74 69 6f 6e 20 6d 75 73 74 20 62 65  e option must be
62e0: 20 75 73 65 64 0a 20 20 6f 6e 20 73 79 73 74 65   used.  on syste
62f0: 6d 73 20 74 68 61 74 20 72 65 74 75 72 6e 20 34  ms that return 4
6300: 2d 62 79 74 65 20 61 6c 69 67 6e 65 64 20 70 6f  -byte aligned po
6310: 69 6e 74 65 72 73 20 66 72 6f 6d 20 6d 61 6c 6c  inters from mall
6320: 6f 63 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  oc()..}..COMPILE
6330: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
6340: 43 41 53 45 5f 53 45 4e 53 49 54 49 56 45 5f 4c  CASE_SENSITIVE_L
6350: 49 4b 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  IKE} {.  If this
6360: 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65   option is prese
6370: 6e 74 2c 20 74 68 65 6e 20 74 68 65 20 62 75 69  nt, then the bui
6380: 6c 74 2d 69 6e 20 5b 4c 49 4b 45 5d 20 6f 70 65  lt-in [LIKE] ope
6390: 72 61 74 6f 72 20 77 69 6c 6c 20 62 65 0a 20 20  rator will be.  
63a0: 63 61 73 65 20 73 65 6e 73 69 74 69 76 65 2e 20  case sensitive. 
63b0: 20 54 68 69 73 20 73 61 6d 65 20 65 66 66 65 63   This same effec
63c0: 74 20 63 61 6e 20 62 65 20 61 63 68 69 65 76 65  t can be achieve
63d0: 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75 73  d at run-time us
63e0: 69 6e 67 0a 20 20 74 68 65 20 5b 63 61 73 65 5f  ing.  the [case_
63f0: 73 65 6e 73 69 74 69 76 65 5f 6c 69 6b 65 20 70  sensitive_like p
6400: 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  ragma]..}..COMPI
6410: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
6420: 45 5f 44 49 52 45 43 54 5f 4f 56 45 52 46 4c 4f  E_DIRECT_OVERFLO
6430: 57 5f 52 45 41 44 7d 20 7b 0a 20 20 57 68 65 6e  W_READ} {.  When
6440: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
6450: 70 72 65 73 65 6e 74 2c 20 63 6f 6e 74 65 6e 74  present, content
6460: 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0a 20 20   contained in.  
6470: 5b 6f 76 65 72 66 6c 6f 77 20 70 61 67 65 73 5d  [overflow pages]
6480: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
6490: 20 66 69 6c 65 20 69 73 20 72 65 61 64 20 64 69   file is read di
64a0: 72 65 63 74 6c 79 20 66 72 6f 6d 20 64 69 73 6b  rectly from disk
64b0: 2c 0a 20 20 62 79 70 61 73 73 69 6e 67 20 74 68  ,.  bypassing th
64c0: 65 20 5b 70 61 67 65 20 63 61 63 68 65 5d 2c 20  e [page cache], 
64d0: 64 75 72 69 6e 67 20 72 65 61 64 20 74 72 61 6e  during read tran
64e0: 73 61 63 74 69 6f 6e 73 2e 20 20 49 6e 20 61 70  sactions.  In ap
64f0: 70 6c 69 63 61 74 69 6f 6e 73 0a 20 20 74 68 61  plications.  tha
6500: 74 20 64 6f 20 61 20 6c 6f 74 20 6f 66 20 72 65  t do a lot of re
6510: 61 64 73 20 6f 66 20 6c 61 72 67 65 20 42 4c 4f  ads of large BLO
6520: 42 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  Bs, this option 
6530: 6d 69 67 68 74 20 69 6d 70 72 6f 76 65 20 72 65  might improve re
6540: 61 64 0a 20 20 70 65 72 66 6f 72 6d 61 6e 63 65  ad.  performance
6550: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
6560: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 48 41 56 45  ION {SQLITE_HAVE
6570: 5f 49 53 4e 41 4e 7d 20 7b 0a 20 20 49 66 20 74  _ISNAN} {.  If t
6580: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70 72  his option is pr
6590: 65 73 65 6e 74 2c 20 74 68 65 6e 20 53 51 4c 69  esent, then SQLi
65a0: 74 65 20 77 69 6c 6c 20 75 73 65 20 74 68 65 20  te will use the 
65b0: 69 73 6e 61 6e 28 29 20 66 75 6e 63 74 69 6f 6e  isnan() function
65c0: 20 66 72 6f 6d 0a 20 20 74 68 65 20 73 79 73 74   from.  the syst
65d0: 65 6d 20 6d 61 74 68 20 6c 69 62 72 61 72 79 2e  em math library.
65e0: 20 20 54 68 69 73 20 69 73 20 61 6e 20 61 6c 69    This is an ali
65f0: 61 73 20 66 6f 72 20 74 68 65 20 5b 48 41 56 45  as for the [HAVE
6600: 5f 49 53 4e 41 4e 5d 20 63 6f 6e 66 69 67 75 72  _ISNAN] configur
6610: 61 74 69 6f 6e 0a 20 20 6f 70 74 69 6f 6e 2e 0a  ation.  option..
6620: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6630: 4e 20 7b 53 51 4c 49 54 45 5f 4f 53 5f 4f 54 48  N {SQLITE_OS_OTH
6640: 45 52 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31  ER=<i>&lt;0 or 1
6650: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
6660: 65 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  e option causes 
6670: 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 69  SQLite to omit i
6680: 74 73 20 62 75 69 6c 74 2d 69 6e 20 6f 70 65 72  ts built-in oper
6690: 61 74 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74  ating system int
66a0: 65 72 66 61 63 65 73 0a 20 20 66 6f 72 20 55 6e  erfaces.  for Un
66b0: 69 78 2c 20 57 69 6e 64 6f 77 73 2c 20 61 6e 64  ix, Windows, and
66c0: 20 4f 53 2f 32 2e 20 20 54 68 65 20 72 65 73 75   OS/2.  The resu
66d0: 6c 74 69 6e 67 20 6c 69 62 72 61 72 79 20 77 69  lting library wi
66e0: 6c 6c 20 68 61 76 65 20 6e 6f 20 64 65 66 61 75  ll have no defau
66f0: 6c 74 0a 20 20 5b 73 71 6c 69 74 65 33 5f 76 66  lt.  [sqlite3_vf
6700: 73 20 7c 20 6f 70 65 72 61 74 69 6e 67 20 73 79  s | operating sy
6710: 73 74 65 6d 20 69 6e 74 65 72 66 61 63 65 5d 2e  stem interface].
6720: 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d    Applications m
6730: 75 73 74 20 75 73 65 0a 20 20 5b 73 71 6c 69 74  ust use.  [sqlit
6740: 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28  e3_vfs_register(
6750: 29 5d 20 74 6f 20 72 65 67 69 73 74 65 72 20 61  )] to register a
6760: 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 69 6e  n appropriate in
6770: 74 65 72 66 61 63 65 20 62 65 66 6f 72 65 0a 20  terface before. 
6780: 20 75 73 69 6e 67 20 53 51 4c 69 74 65 2e 20 20   using SQLite.  
6790: 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73  Applications mus
67a0: 74 20 61 6c 73 6f 20 73 75 70 70 6c 79 20 69 6d  t also supply im
67b0: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66 6f  plementations fo
67c0: 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33  r the.  [sqlite3
67d0: 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 61 6e 64 20  _os_init()] and 
67e0: 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28  [sqlite3_os_end(
67f0: 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e 20 20  )] interfaces.  
6800: 54 68 65 20 75 73 75 61 6c 20 70 72 61 63 74 69  The usual practi
6810: 63 65 0a 20 20 69 73 20 66 6f 72 20 74 68 65 20  ce.  is for the 
6820: 73 75 70 70 6c 69 65 64 20 5b 73 71 6c 69 74 65  supplied [sqlite
6830: 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 74 6f 20  3_os_init()] to 
6840: 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f  invoke [sqlite3_
6850: 76 66 73 5f 72 65 67 69 73 74 65 72 28 29 5d 2e  vfs_register()].
6860: 0a 20 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 61  .  SQLite will a
6870: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 76  utomatically inv
6880: 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f  oke [sqlite3_os_
6890: 69 6e 69 74 28 29 5d 20 77 68 65 6e 20 69 74 20  init()] when it 
68a0: 69 6e 69 74 69 61 6c 69 7a 65 73 2e 0a 0a 20 20  initializes...  
68b0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 74  This option is t
68c0: 79 70 69 63 61 6c 6c 79 20 75 73 65 64 20 77 68  ypically used wh
68d0: 65 6e 20 62 75 69 6c 64 69 6e 67 20 53 51 4c 69  en building SQLi
68e0: 74 65 20 66 6f 72 20 61 6e 20 65 6d 62 65 64 64  te for an embedd
68f0: 65 64 0a 20 20 70 6c 61 74 66 6f 72 6d 20 77 69  ed.  platform wi
6900: 74 68 20 61 20 63 75 73 74 6f 6d 20 6f 70 65 72  th a custom oper
6910: 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0a 7d 0a  ating system..}.
6920: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
6930: 7b 53 51 4c 49 54 45 5f 53 45 43 55 52 45 5f 44  {SQLITE_SECURE_D
6940: 45 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69 73 20  ELETE} {.  This 
6950: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
6960: 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68 65 20  ion changes the 
6970: 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20  default setting 
6980: 6f 66 20 74 68 65 0a 20 20 5b 73 65 63 75 72 65  of the.  [secure
6990: 5f 64 65 6c 65 74 65 20 70 72 61 67 6d 61 5d 2e  _delete pragma].
69a0: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
69b0: 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65 64 2c 20  on is not used, 
69c0: 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 64 65  secure_delete de
69d0: 66 61 75 6c 74 73 0a 20 20 74 6f 20 6f 66 66 2e  faults.  to off.
69e0: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
69f0: 6f 6e 20 69 73 20 70 72 65 73 65 6e 74 2c 20 73  on is present, s
6a00: 65 63 75 72 65 5f 64 65 6c 65 74 65 20 64 65 66  ecure_delete def
6a10: 61 75 6c 74 73 20 74 6f 20 6f 6e 2e 0a 0a 20 20  aults to on...  
6a20: 54 68 65 20 73 65 63 75 72 65 5f 64 65 6c 65 74  The secure_delet
6a30: 65 20 73 65 74 74 69 6e 67 20 63 61 75 73 65 73  e setting causes
6a40: 20 64 65 6c 65 74 65 64 20 63 6f 6e 74 65 6e 74   deleted content
6a50: 20 74 6f 20 62 65 20 6f 76 65 72 77 72 69 74 74   to be overwritt
6a60: 65 6e 20 77 69 74 68 0a 20 20 7a 65 72 6f 73 2e  en with.  zeros.
6a70: 20 20 54 68 65 72 65 20 69 73 20 61 20 73 6d 61    There is a sma
6a80: 6c 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70  ll performance p
6a90: 65 6e 61 6c 74 79 20 73 69 6e 63 65 20 61 64 64  enalty since add
6aa0: 69 74 69 6f 6e 61 6c 20 49 2f 4f 0a 20 20 6d 75  itional I/O.  mu
6ab0: 73 74 20 6f 63 63 75 72 2e 20 20 4f 6e 20 74 68  st occur.  On th
6ac0: 65 20 6f 74 68 65 72 20 68 61 6e 64 2c 20 73 65  e other hand, se
6ad0: 63 75 72 65 5f 64 65 6c 65 74 65 20 63 61 6e 20  cure_delete can 
6ae0: 70 72 65 76 65 6e 74 20 66 72 61 67 6d 65 6e 74  prevent fragment
6af0: 73 20 6f 66 20 0a 20 20 73 65 6e 73 69 74 69 76  s of .  sensitiv
6b00: 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 72  e information fr
6b10: 6f 6d 20 6c 69 6e 67 65 72 69 6e 67 20 69 6e 20  om lingering in 
6b20: 75 6e 75 73 65 64 20 70 61 72 74 73 20 6f 66 20  unused parts of 
6b30: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
6b40: 65 20 0a 20 20 61 66 74 65 72 20 69 74 20 68 61  e .  after it ha
6b50: 73 20 62 65 65 6e 20 64 65 6c 65 74 65 64 2e 20  s been deleted. 
6b60: 20 53 65 65 20 74 68 65 20 64 6f 63 75 6d 65 6e   See the documen
6b70: 74 61 74 69 6f 6e 20 6f 6e 20 74 68 65 0a 20 20  tation on the.  
6b80: 5b 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 70  [secure_delete p
6b90: 72 61 67 6d 61 5d 20 66 6f 72 20 61 64 64 69 74  ragma] for addit
6ba0: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
6bb0: 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  n..}..COMPILE_OP
6bc0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 48 52  TION {SQLITE_THR
6bd0: 45 41 44 53 41 46 45 3d 3c 69 3e 26 6c 74 3b 30  EADSAFE=<i>&lt;0
6be0: 20 6f 72 20 31 20 6f 72 20 32 26 67 74 3b 3c 2f   or 1 or 2&gt;</
6bf0: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  i>} {.  This opt
6c00: 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65  ion controls whe
6c10: 74 68 65 72 20 6f 72 20 6e 6f 74 20 63 6f 64 65  ther or not code
6c20: 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20   is included in 
6c30: 53 51 4c 69 74 65 20 74 6f 0a 20 20 65 6e 61 62  SQLite to.  enab
6c40: 6c 65 20 69 74 20 74 6f 20 6f 70 65 72 61 74 65  le it to operate
6c50: 20 73 61 66 65 6c 79 20 69 6e 20 61 20 6d 75 6c   safely in a mul
6c60: 74 69 74 68 72 65 61 64 65 64 20 65 6e 76 69 72  tithreaded envir
6c70: 6f 6e 6d 65 6e 74 2e 20 20 54 68 65 0a 20 20 64  onment.  The.  d
6c80: 65 66 61 75 6c 74 20 69 73 20 53 51 4c 49 54 45  efault is SQLITE
6c90: 5f 54 48 52 45 41 44 53 41 46 45 3d 31 20 77 68  _THREADSAFE=1 wh
6ca0: 69 63 68 20 69 73 20 73 61 66 65 20 66 6f 72 20  ich is safe for 
6cb0: 75 73 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68  use in a multith
6cc0: 72 65 61 64 65 64 0a 20 20 65 6e 76 69 72 6f 6e  readed.  environ
6cd0: 6d 65 6e 74 2e 20 20 57 68 65 6e 20 63 6f 6d 70  ment.  When comp
6ce0: 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54 45  iled with SQLITE
6cf0: 5f 54 48 52 45 41 44 53 41 46 45 3d 30 20 61 6c  _THREADSAFE=0 al
6d00: 6c 20 6d 75 74 65 78 69 6e 67 20 63 6f 64 65 0a  l mutexing code.
6d10: 20 20 69 73 20 6f 6d 69 74 74 65 64 20 61 6e 64    is omitted and
6d20: 20 69 74 20 69 73 20 75 6e 73 61 66 65 20 74 6f   it is unsafe to
6d30: 20 75 73 65 20 53 51 4c 69 74 65 20 69 6e 20 61   use SQLite in a
6d40: 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 70   multithreaded p
6d50: 72 6f 67 72 61 6d 2e 0a 20 20 57 68 65 6e 20 63  rogram..  When c
6d60: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c  ompiled with SQL
6d70: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32  ITE_THREADSAFE=2
6d80: 2c 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65 20  , SQLite can be 
6d90: 75 73 65 64 20 69 6e 20 61 20 6d 75 6c 74 69 74  used in a multit
6da0: 68 72 65 61 64 65 64 0a 20 20 70 72 6f 67 72 61  hreaded.  progra
6db0: 6d 20 73 6f 20 6c 6f 6e 67 20 61 73 20 6e 6f 20  m so long as no 
6dc0: 74 77 6f 20 74 68 72 65 61 64 73 20 61 74 74 65  two threads atte
6dd0: 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65 20 73  mpt to use the s
6de0: 61 6d 65 0a 20 20 5b 64 61 74 61 62 61 73 65 20  ame.  [database 
6df0: 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 28 6f 72 20  connection] (or 
6e00: 61 6e 79 20 5b 70 72 65 70 61 72 65 64 20 73 74  any [prepared st
6e10: 61 74 65 6d 65 6e 74 73 5d 20 64 65 72 69 76 65  atements] derive
6e20: 64 20 66 72 6f 6d 0a 20 20 74 68 61 74 20 64 61  d from.  that da
6e30: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
6e40: 6e 29 20 61 74 20 74 68 65 20 73 61 6d 65 20 74  n) at the same t
6e50: 69 6d 65 2e 0a 0a 20 20 54 6f 20 70 75 74 20 69  ime...  To put i
6e60: 74 20 61 6e 6f 74 68 65 72 20 77 61 79 2c 20 53  t another way, S
6e70: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
6e80: 3d 31 20 73 65 74 73 20 74 68 65 20 64 65 66 61  =1 sets the defa
6e90: 75 6c 74 0a 20 20 5b 74 68 72 65 61 64 69 6e 67  ult.  [threading
6ea0: 20 6d 6f 64 65 5d 20 74 6f 20 53 65 72 69 61 6c   mode] to Serial
6eb0: 69 7a 65 64 2e 20 20 53 51 4c 49 54 45 5f 54 48  ized.  SQLITE_TH
6ec0: 52 45 41 44 53 41 46 45 3d 32 20 73 65 74 73 20  READSAFE=2 sets 
6ed0: 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20 5b 74  the default.  [t
6ee0: 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74  hreading mode] t
6ef0: 6f 20 4d 75 6c 74 69 2d 74 68 72 65 61 64 65 64  o Multi-threaded
6f00: 2e 20 20 41 6e 64 20 53 51 4c 49 54 45 5f 54 48  .  And SQLITE_TH
6f10: 52 45 41 44 53 41 46 45 3d 30 20 73 65 74 73 20  READSAFE=0 sets 
6f20: 74 68 65 0a 20 20 5b 74 68 72 65 61 64 69 6e 67  the.  [threading
6f30: 20 6d 6f 64 65 5d 20 74 6f 20 53 69 6e 67 6c 65   mode] to Single
6f40: 2d 74 68 72 65 61 64 65 64 2e 0a 0a 20 20 54 68  -threaded...  Th
6f50: 65 20 76 61 6c 75 65 20 6f 66 20 53 51 4c 49 54  e value of SQLIT
6f60: 45 5f 54 48 52 45 41 44 53 41 46 45 20 63 61 6e  E_THREADSAFE can
6f70: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20 61   be determined a
6f80: 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20 75 73 69  t run-time.  usi
6f90: 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  ng the [sqlite3_
6fa0: 74 68 72 65 61 64 73 61 66 65 28 29 5d 20 69 6e  threadsafe()] in
6fb0: 74 65 72 66 61 63 65 2e 0a 0a 20 20 57 68 65 6e  terface...  When
6fc0: 20 53 51 4c 69 74 65 20 68 61 73 20 62 65 65 6e   SQLite has been
6fd0: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53   compiled with S
6fe0: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
6ff0: 3d 31 20 6f 72 0a 20 20 53 51 4c 49 54 45 5f 54  =1 or.  SQLITE_T
7000: 48 52 45 41 44 53 41 46 45 3d 32 20 74 68 65 6e  HREADSAFE=2 then
7010: 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20   the [threading 
7020: 6d 6f 64 65 5d 0a 20 20 63 61 6e 20 62 65 20 61  mode].  can be a
7030: 6c 74 65 72 65 64 20 61 74 20 72 75 6e 2d 74 69  ltered at run-ti
7040: 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71  me using the [sq
7050: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20  lite3_config()] 
7060: 69 6e 74 65 72 66 61 63 65 20 74 6f 67 65 74 68  interface togeth
7070: 65 72 0a 20 20 77 69 74 68 20 6f 6e 65 20 6f 66  er.  with one of
7080: 20 74 68 65 73 65 20 76 65 72 62 73 3a 0a 0a 20   these verbs:.. 
7090: 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 5b 53 51 4c   <ul>.  <li>[SQL
70a0: 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c  ITE_CONFIG_SINGL
70b0: 45 54 48 52 45 41 44 5d 0a 20 20 3c 6c 69 3e 5b  ETHREAD].  <li>[
70c0: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55  SQLITE_CONFIG_MU
70d0: 4c 54 49 54 48 52 45 41 44 5d 0a 20 20 3c 6c 69  LTITHREAD].  <li
70e0: 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  >[SQLITE_CONFIG_
70f0: 53 45 52 49 41 4c 49 5a 45 44 5d 0a 20 20 3c 2f  SERIALIZED].  </
7100: 75 6c 3e 0a 0a 20 20 54 68 65 20 5b 53 51 4c 49  ul>..  The [SQLI
7110: 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58 5d  TE_OPEN_NOMUTEX]
7120: 20 61 6e 64 0a 20 20 5b 53 51 4c 49 54 45 5f 4f   and.  [SQLITE_O
7130: 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 5d 20 66  PEN_FULLMUTEX] f
7140: 6c 61 67 73 20 74 6f 20 5b 73 71 6c 69 74 65 33  lags to [sqlite3
7150: 5f 6f 70 65 6e 5f 76 32 28 29 5d 20 63 61 6e 20  _open_v2()] can 
7160: 61 6c 73 6f 20 62 65 20 75 73 65 64 0a 20 20 74  also be used.  t
7170: 6f 20 61 64 6a 75 73 74 20 74 68 65 20 5b 74 68  o adjust the [th
7180: 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 6f 66  reading mode] of
7190: 20 69 6e 64 69 76 69 64 75 61 6c 20 5b 64 61 74   individual [dat
71a0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
71b0: 73 5d 0a 20 20 61 74 20 72 75 6e 2d 74 69 6d 65  s].  at run-time
71c0: 2e 0a 0a 20 20 4e 6f 74 65 20 74 68 61 74 20 77  ...  Note that w
71d0: 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20 63 6f  hen SQLite is co
71e0: 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49  mpiled with SQLI
71f0: 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 2c  TE_THREADSAFE=0,
7200: 20 74 68 65 20 63 6f 64 65 0a 20 20 74 6f 20 6d   the code.  to m
7210: 61 6b 65 20 53 51 4c 69 74 65 20 74 68 72 65 61  ake SQLite threa
7220: 64 73 61 66 65 20 69 73 20 6f 6d 69 74 74 65 64  dsafe is omitted
7230: 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e   from the build.
7240: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 63 63 75    When this occu
7250: 72 73 2c 0a 20 20 69 74 20 69 73 20 69 6d 70 6f  rs,.  it is impo
7260: 73 73 69 62 6c 65 20 74 6f 20 63 68 61 6e 67 65  ssible to change
7270: 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20   the [threading 
7280: 6d 6f 64 65 5d 20 61 74 20 73 74 61 72 74 2d 74  mode] at start-t
7290: 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69 6d 65 2e  ime or run-time.
72a0: 0a 0a 20 20 53 65 65 20 74 68 65 20 5b 74 68 72  ..  See the [thr
72b0: 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 64 6f 63  eading mode] doc
72c0: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61  umentation for a
72d0: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
72e0: 61 74 69 6f 6e 0a 20 20 6f 6e 20 61 73 70 65 63  ation.  on aspec
72f0: 74 73 20 6f 66 20 75 73 69 6e 67 20 53 51 4c 69  ts of using SQLi
7300: 74 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72  te in a multithr
7310: 65 61 64 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e  eaded environmen
7320: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
7330: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 45 4d  TION {SQLITE_TEM
7340: 50 5f 53 54 4f 52 45 3d 3c 69 3e 26 6c 74 3b 30  P_STORE=<i>&lt;0
7350: 20 74 68 72 6f 75 67 68 20 33 26 67 74 3b 3c 2f   through 3&gt;</
7360: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  i>} {.  This opt
7370: 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65  ion controls whe
7380: 74 68 65 72 20 74 65 6d 70 6f 72 61 72 79 20 66  ther temporary f
7390: 69 6c 65 73 20 61 72 65 20 73 74 6f 72 65 64 20  iles are stored 
73a0: 6f 6e 20 64 69 73 6b 20 6f 72 0a 20 20 69 6e 20  on disk or.  in 
73b0: 6d 65 6d 6f 72 79 2e 20 20 54 68 65 20 6d 65 61  memory.  The mea
73c0: 6e 69 6e 67 73 20 66 6f 72 20 76 61 72 69 6f 75  nings for variou
73d0: 73 20 73 65 74 74 69 6e 67 73 20 6f 66 20 74 68  s settings of th
73e0: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a  is compile-time.
73f0: 20 20 6f 70 74 69 6f 6e 20 61 72 65 20 61 73 20    option are as 
7400: 66 6f 6c 6c 6f 77 73 3a 0a 0a 20 20 3c 74 61 62  follows:..  <tab
7410: 6c 65 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22  le cellpadding="
7420: 32 22 20 62 6f 72 64 65 72 3d 22 31 22 3e 0a 20  2" border="1">. 
7430: 20 3c 74 72 3e 3c 74 68 3e 53 51 4c 49 54 45 5f   <tr><th>SQLITE_
7440: 54 45 4d 50 5f 53 54 4f 52 45 3c 2f 74 68 3e 3c  TEMP_STORE</th><
7450: 74 68 3e 4d 65 61 6e 69 6e 67 3c 2f 74 68 3e 3c  th>Meaning</th><
7460: 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61  /tr>.  <tr><td a
7470: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c  lign="center">0<
7480: 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75  /td><td>Always u
7490: 73 65 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c  se temporary fil
74a0: 65 73 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c  es</td></tr>.  <
74b0: 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  tr><td align="ce
74c0: 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e  nter">1</td><td>
74d0: 55 73 65 20 66 69 6c 65 73 20 62 79 20 64 65 66  Use files by def
74e0: 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f 77 20 74  ault but allow t
74f0: 68 65 0a 20 20 5b 50 52 41 47 4d 41 20 74 65 6d  he.  [PRAGMA tem
7500: 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64  p_store] command
7510: 20 74 6f 20 6f 76 65 72 72 69 64 65 3c 2f 74 64   to override</td
7520: 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64  ></tr>.  <tr><td
7530: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
7540: 32 3c 2f 74 64 3e 3c 74 64 3e 55 73 65 20 6d 65  2</td><td>Use me
7550: 6d 6f 72 79 20 62 79 20 64 65 66 61 75 6c 74 20  mory by default 
7560: 62 75 74 20 61 6c 6c 6f 77 20 74 68 65 0a 20 20  but allow the.  
7570: 5b 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f  [PRAGMA temp_sto
7580: 72 65 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 6f  re] command to o
7590: 76 65 72 72 69 64 65 3c 2f 74 64 3e 3c 2f 74 72  verride</td></tr
75a0: 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67  >.  <tr><td alig
75b0: 6e 3d 22 63 65 6e 74 65 72 22 3e 33 3c 2f 74 64  n="center">3</td
75c0: 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75 73 65 20  ><td>Always use 
75d0: 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f 74 72 3e  memory</td></tr>
75e0: 0a 20 20 3c 2f 74 61 62 6c 65 3e 0a 0a 20 20 54  .  </table>..  T
75f0: 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69  he default setti
7600: 6e 67 20 69 73 20 31 2e 20 20 0a 20 20 41 64 64  ng is 1.  .  Add
7610: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
7620: 69 6f 6e 20 63 61 6e 20 62 65 20 66 6f 75 6e 64  ion can be found
7630: 20 69 6e 20 5b 74 65 6d 70 73 74 6f 72 65 20 7c   in [tempstore |
7640: 20 74 65 6d 70 66 69 6c 65 73 2e 68 74 6d 6c 5d   tempfiles.html]
7650: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
7660: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 52 41 43  ION {SQLITE_TRAC
7670: 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d 3c 69 3e  E_SIZE_LIMIT=<i>
7680: 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20 74 68  N</i>} {.  If th
7690: 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  is macro is defi
76a0: 6e 65 64 20 74 6f 20 61 20 70 6f 73 69 74 69 76  ned to a positiv
76b0: 65 20 69 6e 74 65 67 65 72 20 3c 69 3e 4e 3c 2f  e integer <i>N</
76c0: 69 3e 2c 20 74 68 65 6e 20 74 68 65 20 6c 65 6e  i>, then the len
76d0: 67 74 68 20 6f 66 0a 20 20 73 74 72 69 6e 67 73  gth of.  strings
76e0: 20 61 6e 64 20 42 4c 4f 42 20 74 68 61 74 20 61   and BLOB that a
76f0: 72 65 20 65 78 70 61 6e 64 65 64 20 69 6e 74 6f  re expanded into
7700: 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e 20 74   parameters in t
7710: 68 65 20 6f 75 74 70 75 74 20 6f 66 0a 20 20 5b  he output of.  [
7720: 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 5d  sqlite3_trace()]
7730: 20 69 73 20 6c 69 6d 69 74 65 64 20 74 6f 20 3c   is limited to <
7740: 69 3e 4e 3c 2f 69 3e 20 62 79 74 65 73 2e 20 20  i>N</i> bytes.  
7750: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
7760: 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 53 45 5f 55  ON {SQLITE_USE_U
7770: 52 49 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  RI} {.  This opt
7780: 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b  ion causes the [
7790: 55 52 49 20 66 69 6c 65 6e 61 6d 65 5d 20 70 72  URI filename] pr
77a0: 6f 63 65 73 73 20 6c 6f 67 69 63 20 74 6f 20 62  ocess logic to b
77b0: 65 20 65 6e 61 62 6c 65 64 20 62 79 20 0a 20 20  e enabled by .  
77c0: 64 65 66 61 75 6c 74 2e 20 20 0a 7d 0a 0a 3c 2f  default.  .}..</
77d0: 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 65  tcl>..<a name="e
77e0: 6e 61 62 6c 65 66 65 61 74 75 72 65 73 22 3e 3c  nablefeatures"><
77f0: 2f 61 3e 0a 3c 68 31 3e 20 4f 70 74 69 6f 6e 73  /a>.<h1> Options
7800: 20 54 6f 20 45 6e 61 62 6c 65 20 46 65 61 74 75   To Enable Featu
7810: 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20 54 75 72  res Normally Tur
7820: 6e 65 64 20 4f 66 66 3c 2f 68 31 3e 0a 0a 3c 74  ned Off</h1>..<t
7830: 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  cl>.COMPILE_OPTI
7840: 4f 4e 20 7b 53 51 4c 49 54 45 5f 41 4c 4c 4f 57  ON {SQLITE_ALLOW
7850: 5f 55 52 49 5f 41 55 54 48 4f 52 49 54 59 7d 20  _URI_AUTHORITY} 
7860: 7b 0a 20 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d  {.  [URI filenam
7870: 65 73 5d 20 6e 6f 72 6d 61 6c 6c 79 20 74 68 72  es] normally thr
7880: 6f 77 73 20 61 6e 20 65 72 72 6f 72 20 69 66 20  ows an error if 
7890: 74 68 65 20 61 75 74 68 6f 72 69 74 79 20 73 65  the authority se
78a0: 63 74 69 6f 6e 20 69 73 0a 20 20 6e 6f 74 20 65  ction is.  not e
78b0: 69 74 68 65 72 20 65 6d 70 74 79 20 6f 72 20 22  ither empty or "
78c0: 6c 6f 63 61 6c 68 6f 73 74 22 2e 20 20 48 6f 77  localhost".  How
78d0: 65 76 65 72 2c 20 69 66 20 53 51 4c 69 74 65 20  ever, if SQLite 
78e0: 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  is compiled with
78f0: 0a 20 20 74 68 65 20 53 51 4c 49 54 45 5f 41 4c  .  the SQLITE_AL
7900: 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f 52 49 54  LOW_URI_AUTHORIT
7910: 59 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  Y compile-time o
7920: 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20  ption, then the 
7930: 55 52 49 20 69 73 0a 20 20 63 6f 6e 76 65 72 74  URI is.  convert
7940: 65 64 20 69 6e 74 6f 20 61 20 55 6e 69 66 6f 72  ed into a Unifor
7950: 6d 20 4e 61 6d 69 6e 67 20 43 6f 6e 76 65 6e 74  m Naming Convent
7960: 69 6f 6e 20 28 55 4e 43 29 20 66 69 6c 65 6e 61  ion (UNC) filena
7970: 6d 65 20 61 6e 64 20 70 61 73 73 65 64 0a 20 20  me and passed.  
7980: 64 6f 77 6e 20 74 6f 20 74 68 65 20 75 6e 64 65  down to the unde
7990: 72 6c 79 69 6e 67 20 6f 70 65 72 61 74 69 6e 67  rlying operating
79a0: 20 73 79 73 74 65 6d 20 74 68 61 74 20 77 61 79   system that way
79b0: 2e 20 20 0a 20 20 3c 70 3e 0a 20 20 53 6f 6d 65  .  .  <p>.  Some
79c0: 20 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73   future versions
79d0: 20 6f 66 20 53 51 4c 69 74 65 20 6d 61 79 20 63   of SQLite may c
79e0: 68 61 6e 67 65 20 74 6f 20 65 6e 61 62 6c 65 20  hange to enable 
79f0: 74 68 69 73 20 66 65 61 74 75 72 65 0a 20 20 62  this feature.  b
7a00: 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 43 4f 4d  y default..}.COM
7a10: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
7a20: 49 54 45 5f 41 4c 4c 4f 57 5f 43 4f 56 45 52 49  ITE_ALLOW_COVERI
7a30: 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 3d 3c 69  NG_INDEX_SCAN=<i
7a40: 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c  >&lt;0 or 1&gt;<
7a50: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 43 2d  /i>} {.  This C-
7a60: 70 72 65 70 72 6f 63 65 73 73 20 6d 61 63 72 6f  preprocess macro
7a70: 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   determines the 
7a80: 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20  default setting 
7a90: 6f 66 20 74 68 65 0a 20 20 5b 53 51 4c 49 54 45  of the.  [SQLITE
7aa0: 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49 4e 47  _CONFIG_COVERING
7ab0: 5f 49 4e 44 45 58 5f 53 43 41 4e 5d 20 63 6f 6e  _INDEX_SCAN] con
7ac0: 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69  figuration setti
7ad0: 6e 67 2e 20 20 49 74 20 64 65 66 61 75 6c 74 73  ng.  It defaults
7ae0: 0a 20 20 74 6f 20 31 20 28 6f 6e 29 20 77 68 69  .  to 1 (on) whi
7af0: 63 68 20 6d 65 61 6e 73 20 74 68 61 74 20 63 6f  ch means that co
7b00: 76 65 72 69 6e 67 20 69 6e 64 69 63 65 73 20 61  vering indices a
7b10: 72 65 20 75 73 65 64 20 66 6f 72 20 66 75 6c 6c  re used for full
7b20: 20 74 61 62 6c 65 0a 20 20 73 63 61 6e 73 20 77   table.  scans w
7b30: 68 65 72 65 20 70 6f 73 73 69 62 6c 65 2c 20 69  here possible, i
7b40: 6e 20 6f 72 64 65 72 20 74 6f 20 72 65 64 75 63  n order to reduc
7b50: 65 20 49 2f 4f 20 61 6e 64 20 69 6d 70 72 6f 76  e I/O and improv
7b60: 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e 0a 20  e performance.. 
7b70: 20 48 6f 77 65 76 65 72 2c 20 74 68 65 20 75 73   However, the us
7b80: 65 20 6f 66 20 61 20 63 6f 76 65 72 69 6e 67 20  e of a covering 
7b90: 69 6e 64 65 78 20 66 6f 72 20 61 20 66 75 6c 6c  index for a full
7ba0: 20 73 63 61 6e 20 77 69 6c 6c 20 63 61 75 73 65   scan will cause
7bb0: 20 72 65 73 75 6c 74 73 0a 20 20 74 6f 20 61 70   results.  to ap
7bc0: 70 65 61 72 20 69 6e 20 61 20 64 69 66 66 65 72  pear in a differ
7bd0: 65 6e 74 20 6f 72 64 65 72 20 66 72 6f 6d 20 6c  ent order from l
7be0: 65 67 61 63 79 2c 20 77 68 69 63 68 20 63 6f 75  egacy, which cou
7bf0: 6c 64 20 63 61 75 73 65 20 73 6f 6d 65 0a 20 20  ld cause some.  
7c00: 28 69 6e 63 6f 72 72 65 63 74 6c 79 2d 63 6f 64  (incorrectly-cod
7c10: 65 64 29 20 6c 65 67 61 63 79 20 61 70 70 6c 69  ed) legacy appli
7c20: 63 61 74 69 6f 6e 73 20 74 6f 20 62 72 65 61 6b  cations to break
7c30: 2e 20 20 48 65 6e 63 65 2c 20 74 68 65 20 63 6f  .  Hence, the co
7c40: 76 65 72 69 6e 67 0a 20 20 69 6e 64 65 78 20 73  vering.  index s
7c50: 63 61 6e 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62  can option can b
7c60: 65 20 64 69 73 61 62 6c 65 64 20 61 74 20 63 6f  e disabled at co
7c70: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 6e 20 73 79  mpile-time on sy
7c80: 73 74 65 6d 73 20 74 68 61 74 20 77 68 61 74 0a  stems that what.
7c90: 20 20 74 6f 20 6d 69 6e 69 6d 69 7a 65 20 74 68    to minimize th
7ca0: 65 69 72 20 72 69 73 6b 20 6f 66 20 65 78 70 6f  eir risk of expo
7cb0: 73 69 6e 67 20 65 72 72 6f 72 73 20 69 6e 20 6c  sing errors in l
7cc0: 65 67 61 63 79 20 61 70 70 6c 69 63 61 74 69 6f  egacy applicatio
7cd0: 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ns..}..COMPILE_O
7ce0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
7cf0: 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d 45 53 3d 3c  ABLE_8_3_NAMES=<
7d00: 69 3e 26 6c 74 3b 31 20 6f 72 20 32 26 67 74 3b  i>&lt;1 or 2&gt;
7d10: 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20 74 68 69  </i>} {.  If thi
7d20: 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72  s C-preprocessor
7d30: 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65   macro is define
7d40: 64 2c 20 74 68 65 6e 20 65 78 74 72 61 20 63 6f  d, then extra co
7d50: 64 65 20 69 73 0a 20 20 69 6e 63 6c 75 64 65 64  de is.  included
7d60: 20 74 68 61 74 20 61 6c 6c 6f 77 73 20 53 51 4c   that allows SQL
7d70: 69 74 65 20 74 6f 20 66 75 6e 63 74 69 6f 6e 20  ite to function 
7d80: 6f 6e 20 61 20 66 69 6c 65 73 79 73 74 65 6d 20  on a filesystem 
7d90: 74 68 61 74 0a 20 20 6f 6e 6c 79 20 73 75 70 70  that.  only supp
7da0: 6f 72 74 20 38 2b 33 20 66 69 6c 65 6e 61 6d 65  ort 8+3 filename
7db0: 73 2e 20 20 49 66 20 74 68 65 20 76 61 6c 75 65  s.  If the value
7dc0: 20 6f 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69   of this macro i
7dd0: 73 20 31 2c 0a 20 20 74 68 65 6e 20 74 68 65 20  s 1,.  then the 
7de0: 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72  default behavior
7df0: 20 69 73 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20   is to continue 
7e00: 74 6f 20 75 73 65 20 6c 6f 6e 67 20 66 69 6c 65  to use long file
7e10: 6e 61 6d 65 73 20 61 6e 64 0a 20 20 74 6f 20 6f  names and.  to o
7e20: 6e 6c 79 20 75 73 65 20 38 2b 33 20 66 69 6c 65  nly use 8+3 file
7e30: 6e 61 6d 65 73 20 69 66 20 74 68 65 20 0a 20 20  names if the .  
7e40: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
7e50: 69 6f 6e 20 69 73 20 6f 70 65 6e 65 64 20 75 73  ion is opened us
7e60: 69 6e 67 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d  ing [URI filenam
7e70: 65 73 5d 20 77 69 74 68 0a 20 20 74 68 65 20 22  es] with.  the "
7e80: 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73 3d 31 3c  <tt>8_3_names=1<
7e90: 2f 74 74 3e 22 20 71 75 65 72 79 20 70 61 72 61  /tt>" query para
7ea0: 6d 65 74 65 72 2e 20 20 49 66 20 74 68 65 20 76  meter.  If the v
7eb0: 61 6c 75 65 20 6f 66 0a 20 20 74 68 69 73 20 6d  alue of.  this m
7ec0: 61 63 72 6f 20 69 73 20 32 2c 20 74 68 65 6e 20  acro is 2, then 
7ed0: 74 68 65 20 75 73 65 20 6f 66 20 38 2b 33 20 66  the use of 8+3 f
7ee0: 69 6c 65 6e 61 6d 65 73 20 62 65 63 6f 6d 65 73  ilenames becomes
7ef0: 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20 62   the default.  b
7f00: 75 74 20 6d 61 79 20 62 65 20 64 69 73 61 62 6c  ut may be disabl
7f10: 65 64 20 6f 6e 20 75 73 69 6e 67 20 74 68 65 20  ed on using the 
7f20: 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73 3d 30 3c  <tt>8_3_names=0<
7f30: 2f 74 74 3e 20 71 75 65 72 79 20 70 61 72 61 6d  /tt> query param
7f40: 65 74 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  eter..}..COMPILE
7f50: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7f60: 45 4e 41 42 4c 45 5f 41 50 49 5f 41 52 4d 4f 52  ENABLE_API_ARMOR
7f70: 7d 20 7b 0a 20 20 57 68 65 6e 20 64 65 66 69 6e  } {.  When defin
7f80: 65 64 2c 20 74 68 69 73 20 43 2d 70 72 65 70 72  ed, this C-prepr
7f90: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 61 63  ocessor macro ac
7fa0: 74 69 76 61 74 65 73 20 65 78 74 72 61 20 63 6f  tivates extra co
7fb0: 64 65 20 74 68 61 74 0a 20 20 61 74 74 65 6d 70  de that.  attemp
7fc0: 74 73 20 74 6f 20 64 65 74 65 63 74 20 6d 69 73  ts to detect mis
7fd0: 75 73 65 20 6f 66 20 74 68 65 20 53 51 4c 69 74  use of the SQLit
7fe0: 65 20 41 50 49 2c 20 73 75 63 68 20 61 73 20 70  e API, such as p
7ff0: 61 73 73 69 6e 67 20 69 6e 20 4e 55 4c 4c 0a 20  assing in NULL. 
8000: 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 72 65 71   pointers to req
8010: 75 69 72 65 64 20 70 61 72 61 6d 65 74 65 72 73  uired parameters
8020: 20 6f 72 20 75 73 69 6e 67 20 6f 62 6a 65 63 74   or using object
8030: 73 20 61 66 74 65 72 20 74 68 65 79 20 68 61 76  s after they hav
8040: 65 20 62 65 65 6e 0a 20 20 64 65 73 74 72 6f 79  e been.  destroy
8050: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
8060: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
8070: 41 42 4c 45 5f 41 54 4f 4d 49 43 5f 57 52 49 54  ABLE_ATOMIC_WRIT
8080: 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43  E} {.  If this C
8090: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
80a0: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 20 61  cro is defined a
80b0: 6e 64 20 69 66 20 74 68 65 0a 20 20 78 44 65 76  nd if the.  xDev
80c0: 69 63 65 43 68 61 72 61 63 74 65 72 69 73 74 69  iceCharacteristi
80d0: 63 73 20 6d 65 74 68 6f 64 20 6f 66 20 5b 73 71  cs method of [sq
80e0: 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73  lite3_io_methods
80f0: 5d 20 6f 62 6a 65 63 74 20 66 6f 72 0a 20 20 61  ] object for.  a
8100: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 72   database file r
8110: 65 70 6f 72 74 73 20 28 76 69 61 20 6f 6e 65 20  eports (via one 
8120: 6f 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 49  of the [SQLITE_I
8130: 4f 43 41 50 5f 41 54 4f 4d 49 43 5d 20 62 69 74  OCAP_ATOMIC] bit
8140: 73 29 0a 20 20 74 68 61 74 20 74 68 65 20 66 69  s).  that the fi
8150: 6c 65 73 79 73 74 65 6d 20 73 75 70 70 6f 72 74  lesystem support
8160: 73 20 61 74 6f 6d 69 63 20 77 72 69 74 65 73 20  s atomic writes 
8170: 61 6e 64 20 69 66 20 61 20 74 72 61 6e 73 61 63  and if a transac
8180: 74 69 6f 6e 0a 20 20 69 6e 76 6f 6c 76 65 73 20  tion.  involves 
8190: 61 20 63 68 61 6e 67 65 20 74 6f 20 6f 6e 6c 79  a change to only
81a0: 20 61 20 73 69 6e 67 6c 65 20 70 61 67 65 20 6f   a single page o
81b0: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  f the database f
81c0: 69 6c 65 2c 0a 20 20 74 68 65 6e 20 74 68 65 20  ile,.  then the 
81d0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d 6d  transaction comm
81e0: 69 74 73 20 77 69 74 68 20 6a 75 73 74 20 61 20  its with just a 
81f0: 73 69 6e 67 6c 65 20 77 72 69 74 65 20 72 65 71  single write req
8200: 75 65 73 74 20 6f 66 0a 20 20 61 20 73 69 6e 67  uest of.  a sing
8210: 6c 65 20 70 61 67 65 20 6f 66 20 74 68 65 20 64  le page of the d
8220: 61 74 61 62 61 73 65 20 61 6e 64 20 6e 6f 20 72  atabase and no r
8230: 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20  ollback journal 
8240: 69 73 20 63 72 65 61 74 65 64 0a 20 20 6f 72 20  is created.  or 
8250: 77 72 69 74 74 65 6e 2e 20 20 4f 6e 20 66 69 6c  written.  On fil
8260: 65 73 79 73 74 65 6d 73 20 74 68 61 74 20 73 75  esystems that su
8270: 70 70 6f 72 74 20 61 74 6f 6d 69 63 20 77 72 69  pport atomic wri
8280: 74 65 73 2c 20 74 68 69 73 0a 20 20 6f 70 74 69  tes, this.  opti
8290: 6d 69 7a 61 74 69 6f 6e 20 63 61 6e 20 72 65 73  mization can res
82a0: 75 6c 74 20 69 6e 20 73 69 67 6e 69 66 69 63 61  ult in significa
82b0: 6e 74 20 73 70 65 65 64 20 69 6d 70 72 6f 76 65  nt speed improve
82c0: 6d 65 6e 74 73 20 66 6f 72 0a 20 20 73 6d 61 6c  ments for.  smal
82d0: 6c 20 75 70 64 61 74 65 73 2e 20 20 48 6f 77 65  l updates.  Howe
82e0: 76 65 72 2c 20 66 65 77 20 66 69 6c 65 73 79 73  ver, few filesys
82f0: 74 65 6d 73 20 73 75 70 70 6f 72 74 20 74 68 69  tems support thi
8300: 73 20 63 61 70 61 62 69 6c 69 74 79 0a 20 20 61  s capability.  a
8310: 6e 64 20 74 68 65 20 63 6f 64 65 20 70 61 74 68  nd the code path
8320: 73 20 74 68 61 74 20 63 68 65 63 6b 20 66 6f 72  s that check for
8330: 20 74 68 69 73 20 63 61 70 61 62 69 6c 69 74 79   this capability
8340: 20 73 6c 6f 77 20 64 6f 77 6e 20 77 72 69 74 65   slow down write
8350: 0a 20 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 6f  .  performance o
8360: 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 6c  n systems that l
8370: 61 63 6b 20 61 74 6f 6d 69 63 20 77 72 69 74 65  ack atomic write
8380: 20 63 61 70 61 62 69 6c 69 74 79 2c 20 73 6f 20   capability, so 
8390: 74 68 69 73 0a 20 20 66 65 61 74 75 72 65 20 69  this.  feature i
83a0: 73 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65  s disabled by de
83b0: 66 61 75 6c 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  fault..}..COMPIL
83c0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
83d0: 5f 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d  _ENABLE_COLUMN_M
83e0: 45 54 41 44 41 54 41 7d 20 7b 0a 20 20 57 68 65  ETADATA} {.  Whe
83f0: 6e 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63  n this C-preproc
8400: 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64  essor macro is d
8410: 65 66 69 6e 65 64 2c 20 53 51 4c 69 74 65 20 69  efined, SQLite i
8420: 6e 63 6c 75 64 65 73 20 73 6f 6d 65 0a 20 20 61  ncludes some.  a
8430: 64 64 69 74 69 6f 6e 61 6c 20 41 50 49 73 20 74  dditional APIs t
8440: 68 61 74 20 70 72 6f 76 69 64 65 20 63 6f 6e 76  hat provide conv
8450: 65 6e 69 65 6e 74 20 61 63 63 65 73 73 20 74 6f  enient access to
8460: 20 6d 65 74 61 2d 64 61 74 61 20 61 62 6f 75 74   meta-data about
8470: 0a 20 20 74 61 62 6c 65 73 20 61 6e 64 20 71 75  .  tables and qu
8480: 65 72 69 65 73 2e 20 20 54 68 65 20 41 50 49 73  eries.  The APIs
8490: 20 74 68 61 74 20 61 72 65 20 65 6e 61 62 6c 65   that are enable
84a0: 64 20 62 79 20 74 68 69 73 20 6f 70 74 69 6f 6e  d by this option
84b0: 20 61 72 65 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20   are:..  <ul>.  
84c0: 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f  <li> [sqlite3_co
84d0: 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
84e0: 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c  me()] </li>.  <l
84f0: 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  i> [sqlite3_colu
8500: 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
8510: 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c  16()] </li>.  <l
8520: 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  i> [sqlite3_colu
8530: 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 29 5d  mn_table_name()]
8540: 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73   </li>.  <li> [s
8550: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
8560: 62 6c 65 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f  ble_name16()] </
8570: 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  li>.  <li> [sqli
8580: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
8590: 6e 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a  n_name()] </li>.
85a0: 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
85b0: 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
85c0: 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20  me16()] </li>.  
85d0: 3c 2f 75 6c 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  </ul>.}..COMPILE
85e0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
85f0: 45 4e 41 42 4c 45 5f 44 42 53 54 41 54 5f 56 54  ENABLE_DBSTAT_VT
8600: 41 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  AB} {.  This opt
8610: 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20  ion enables the 
8620: 5b 64 62 73 74 61 74 20 76 69 72 74 75 61 6c 20  [dbstat virtual 
8630: 74 61 62 6c 65 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  table]..}..COMPI
8640: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
8650: 45 5f 45 4e 41 42 4c 45 5f 45 58 50 4c 41 49 4e  E_ENABLE_EXPLAIN
8660: 5f 43 4f 4d 4d 45 4e 54 53 7d 20 7b 0a 20 20 54  _COMMENTS} {.  T
8670: 68 69 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20  his option adds 
8680: 65 78 74 72 61 20 6c 6f 67 69 63 20 74 6f 20 53  extra logic to S
8690: 51 4c 69 74 65 20 74 68 61 74 20 69 6e 73 65 72  QLite that inser
86a0: 74 73 20 63 6f 6d 6d 65 6e 74 20 74 65 78 74 20  ts comment text 
86b0: 69 6e 74 6f 20 74 68 65 0a 20 20 6f 75 74 70 75  into the.  outpu
86c0: 74 20 6f 66 20 5b 45 58 50 4c 41 49 4e 5d 2e 20  t of [EXPLAIN]. 
86d0: 20 54 68 65 73 65 20 65 78 74 72 61 20 63 6f 6d   These extra com
86e0: 6d 65 6e 74 73 20 75 73 65 20 65 78 74 72 61 20  ments use extra 
86f0: 6d 65 6d 6f 72 79 2c 20 74 68 75 73 0a 20 20 6d  memory, thus.  m
8700: 61 6b 69 6e 67 20 5b 70 72 65 70 61 72 65 64 20  aking [prepared 
8710: 73 74 61 74 65 6d 65 6e 74 73 5d 20 6c 61 72 67  statements] larg
8720: 65 72 20 61 6e 64 20 76 65 72 79 20 73 6c 69 67  er and very slig
8730: 68 74 6c 79 20 73 6c 6f 77 65 72 2c 20 61 6e 64  htly slower, and
8740: 20 73 6f 20 74 68 65 79 20 61 72 65 0a 20 20 74   so they are.  t
8750: 75 72 6e 65 64 20 6f 66 66 20 62 79 20 64 65 66  urned off by def
8760: 61 75 6c 74 20 61 6e 64 20 69 6e 20 6d 6f 73 74  ault and in most
8770: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20 20 42   application.  B
8780: 75 74 20 73 6f 6d 65 20 61 70 70 6c 69 63 61 74  ut some applicat
8790: 69 6f 6e 73 2c 20 73 75 63 68 0a 20 20 61 73 20  ions, such.  as 
87a0: 74 68 65 20 5b 63 6f 6d 6d 61 6e 64 2d 6c 69 6e  the [command-lin
87b0: 65 20 73 68 65 6c 6c 5d 20 66 6f 72 20 53 51 4c  e shell] for SQL
87c0: 69 74 65 2c 20 76 61 6c 75 65 20 63 6c 61 72 69  ite, value clari
87d0: 74 79 20 6f 66 20 45 58 50 4c 41 49 4e 20 6f 75  ty of EXPLAIN ou
87e0: 74 70 75 74 0a 20 20 6f 76 65 72 20 72 61 77 20  tput.  over raw 
87f0: 70 65 72 66 6f 72 6d 61 6e 63 65 20 61 6e 64 20  performance and 
8800: 73 6f 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d  so this compile-
8810: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 61  time option is a
8820: 76 61 69 6c 61 62 6c 65 20 74 6f 20 74 68 65 6d  vailable to them
8830: 2e 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 45  ..  The SQLITE_E
8840: 4e 41 42 4c 45 5f 45 58 50 4c 41 49 4e 5f 43 4f  NABLE_EXPLAIN_CO
8850: 4d 4d 45 4e 54 53 20 63 6f 6d 70 69 6c 65 2d 74  MMENTS compile-t
8860: 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 61 6c  ime option is al
8870: 73 6f 20 65 6e 61 62 6c 65 64 0a 20 20 61 75 74  so enabled.  aut
8880: 6f 6d 61 74 69 63 61 6c 6c 79 20 69 66 20 5b 53  omatically if [S
8890: 51 4c 49 54 45 5f 44 45 42 55 47 5d 20 69 73 20  QLITE_DEBUG] is 
88a0: 65 6e 61 62 6c 65 64 2e 0a 7d 0a 0a 0a 43 4f 4d  enabled..}...COM
88b0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
88c0: 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 7d  ITE_ENABLE_FTS3}
88d0: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f   {.  When this o
88e0: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
88f0: 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d   in the [amalgam
8900: 61 74 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e 20  ation], version 
8910: 33 0a 20 20 6f 66 20 74 68 65 20 66 75 6c 6c 2d  3.  of the full-
8920: 74 65 78 74 20 73 65 61 72 63 68 20 65 6e 67 69  text search engi
8930: 6e 65 20 69 73 20 61 64 64 65 64 20 74 6f 20 74  ne is added to t
8940: 68 65 20 62 75 69 6c 64 20 61 75 74 6f 6d 61 74  he build automat
8950: 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49  ically..}..COMPI
8960: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
8970: 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 5f 50 41  E_ENABLE_FTS3_PA
8980: 52 45 4e 54 48 45 53 49 53 7d 20 7b 0a 20 20 54  RENTHESIS} {.  T
8990: 68 69 73 20 6f 70 74 69 6f 6e 20 6d 6f 64 69 66  his option modif
89a0: 69 65 73 20 74 68 65 20 71 75 65 72 79 20 70 61  ies the query pa
89b0: 74 74 65 72 6e 20 70 61 72 73 65 72 20 69 6e 20  ttern parser in 
89c0: 46 54 53 33 20 73 75 63 68 20 74 68 61 74 20 69  FTS3 such that i
89d0: 74 0a 20 20 73 75 70 70 6f 72 74 73 20 6f 70 65  t.  supports ope
89e0: 72 61 74 6f 72 73 20 41 4e 44 20 61 6e 64 20 4e  rators AND and N
89f0: 4f 54 20 28 69 6e 20 61 64 64 69 74 69 6f 6e 20  OT (in addition 
8a00: 74 6f 20 74 68 65 20 75 73 75 61 6c 20 4f 52 20  to the usual OR 
8a10: 61 6e 64 20 4e 45 41 52 29 0a 20 20 61 6e 64 20  and NEAR).  and 
8a20: 61 6c 73 6f 20 61 6c 6c 6f 77 73 20 71 75 65 72  also allows quer
8a30: 79 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 6f  y expressions to
8a40: 20 63 6f 6e 74 61 69 6e 20 6e 65 73 74 65 64 20   contain nested 
8a50: 70 61 72 65 6e 74 68 65 73 69 73 2e 0a 7d 0a 0a  parenthesis..}..
8a60: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
8a70: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54  SQLITE_ENABLE_FT
8a80: 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 7d 20 7b 0a  S3_TOKENIZER} {.
8a90: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
8aa0: 61 62 6c 65 73 20 74 68 65 20 74 77 6f 2d 61 72  ables the two-ar
8ab0: 67 75 6d 65 6e 74 20 76 65 72 73 69 6f 6e 20 6f  gument version o
8ac0: 66 20 74 68 65 20 5b 66 74 73 33 5f 74 6f 6b 65  f the [fts3_toke
8ad0: 6e 69 7a 65 72 28 29 5d 0a 20 20 69 6e 74 65 72  nizer()].  inter
8ae0: 66 61 63 65 2e 20 20 54 68 65 20 73 65 63 6f 6e  face.  The secon
8af0: 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 66 74  d argument to ft
8b00: 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 69  s3_tokenizer() i
8b10: 73 20 73 75 70 70 6f 73 65 20 74 6f 20 62 65 20  s suppose to be 
8b20: 61 0a 20 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  a.  pointer to a
8b30: 20 66 75 6e 63 74 69 6f 6e 20 28 65 6e 63 6f 64   function (encod
8b40: 65 64 20 61 73 20 61 20 42 4c 4f 42 29 20 74 68  ed as a BLOB) th
8b50: 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e  at implements an
8b60: 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  .  application d
8b70: 65 66 69 6e 65 64 20 74 6f 6b 65 6e 69 7a 65 72  efined tokenizer
8b80: 2e 20 20 49 66 20 68 6f 73 74 69 6c 65 20 61 63  .  If hostile ac
8b90: 74 6f 72 73 20 61 72 65 20 61 62 6c 65 20 74 6f  tors are able to
8ba0: 20 72 75 6e 0a 20 20 74 68 65 20 74 77 6f 2d 61   run.  the two-a
8bb0: 72 67 75 6d 65 6e 74 20 76 65 72 73 69 6f 6e 20  rgument version 
8bc0: 6f 66 20 66 74 73 33 5f 74 6f 6b 65 6e 69 7a 65  of fts3_tokenize
8bd0: 72 28 29 20 77 69 74 68 20 61 6e 20 61 72 62 69  r() with an arbi
8be0: 74 72 61 72 79 20 73 65 63 6f 6e 64 0a 20 20 61  trary second.  a
8bf0: 72 67 75 6d 65 6e 74 2c 20 74 68 65 79 20 63 6f  rgument, they co
8c00: 75 6c 64 20 75 73 65 20 63 72 61 73 68 20 6f 72  uld use crash or
8c10: 20 74 61 6b 65 20 63 6f 6e 74 72 6f 6c 20 6f 66   take control of
8c20: 20 74 68 65 20 70 72 6f 63 65 73 73 2e 20 0a 20   the process. . 
8c30: 20 3c 70 3e 0a 20 20 42 65 63 61 75 73 65 20 6f   <p>.  Because o
8c40: 66 20 73 65 63 75 72 69 74 79 20 63 6f 6e 63 65  f security conce
8c50: 72 6e 73 2c 20 74 68 65 20 74 77 6f 2d 61 72 67  rns, the two-arg
8c60: 75 6d 65 6e 74 20 66 74 73 33 5f 74 6f 6b 65 6e  ument fts3_token
8c70: 69 7a 65 72 28 29 20 66 65 61 74 75 72 65 20 0a  izer() feature .
8c80: 20 20 77 61 73 20 64 69 73 61 62 6c 65 64 20 62    was disabled b
8c90: 65 67 69 6e 6e 69 6e 67 20 77 69 74 68 20 5b 56  eginning with [V
8ca0: 65 72 73 69 6f 6e 20 33 2e 31 31 2e 30 5d 20 28  ersion 3.11.0] (
8cb0: 5b 64 61 74 65 6f 66 3a 33 2e 31 31 2e 30 5d 29  [dateof:3.11.0])
8cc0: 0a 20 20 75 6e 6c 65 73 73 20 74 68 69 73 20 63  .  unless this c
8cd0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
8ce0: 6f 6e 20 69 73 20 75 73 65 64 2e 0a 20 20 5b 56  on is used..  [V
8cf0: 65 72 73 69 6f 6e 20 33 2e 31 32 2e 30 5d 20 28  ersion 3.12.0] (
8d00: 5b 64 61 74 65 6f 66 3a 33 2e 31 32 2e 30 5d 29  [dateof:3.12.0])
8d10: 20 61 64 64 65 64 20 74 68 65 20 0a 20 20 5b 73   added the .  [s
8d20: 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
8d30: 5d 28 64 62 2c 5b 53 51 4c 49 54 45 5f 44 42 43  ](db,[SQLITE_DBC
8d40: 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 54 53  ONFIG_ENABLE_FTS
8d50: 33 5f 54 4f 4b 45 4e 49 5a 45 52 5d 2c 31 2c 30  3_TOKENIZER],1,0
8d60: 29 20 69 6e 74 65 72 66 61 63 65 0a 20 20 74 68  ) interface.  th
8d70: 61 74 20 61 63 74 69 76 61 74 65 73 20 74 68 65  at activates the
8d80: 20 74 77 6f 2d 61 72 67 75 6d 65 6e 74 20 76 65   two-argument ve
8d90: 72 73 69 6f 6e 20 6f 66 20 5b 66 74 73 33 5f 74  rsion of [fts3_t
8da0: 6f 6b 65 6e 69 7a 65 72 28 29 5d 0a 20 20 66 6f  okenizer()].  fo
8db0: 72 20 61 20 73 70 65 63 69 66 69 63 20 5b 64 61  r a specific [da
8dc0: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
8dd0: 6e 5d 20 61 74 20 72 75 6e 2d 74 69 6d 65 2e 0a  n] at run-time..
8de0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
8df0: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
8e00: 5f 46 54 53 34 7d 20 7b 0a 20 20 57 68 65 6e 20  _FTS4} {.  When 
8e10: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
8e20: 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 61  efined in the [a
8e30: 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76 65  malgamation], ve
8e40: 72 73 69 6f 6e 73 20 33 20 61 6e 64 20 34 0a 20  rsions 3 and 4. 
8e50: 20 6f 66 20 74 68 65 20 66 75 6c 6c 2d 74 65 78   of the full-tex
8e60: 74 20 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20  t search engine 
8e70: 69 73 20 61 64 64 65 64 20 74 6f 20 74 68 65 20  is added to the 
8e80: 62 75 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61  build automatica
8e90: 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  lly..}..COMPILE_
8ea0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
8eb0: 4e 41 42 4c 45 5f 46 54 53 35 7d 20 7b 0a 20 20  NABLE_FTS5} {.  
8ec0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
8ed0: 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74   is defined in t
8ee0: 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  he [amalgamation
8ef0: 5d 2c 20 76 65 72 73 69 6f 6e 73 20 35 0a 20 20  ], versions 5.  
8f00: 6f 66 20 74 68 65 20 66 75 6c 6c 2d 74 65 78 74  of the full-text
8f10: 20 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20 28   search engine (
8f20: 5b 66 74 73 35 5d 29 20 69 73 20 61 64 64 65 64  [fts5]) is added
8f30: 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75   to the build au
8f40: 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a  tomatically..}..
8f50: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
8f60: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 49 43  SQLITE_ENABLE_IC
8f70: 55 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  U} {.  This opti
8f80: 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 0a 20  on causes the . 
8f90: 20 5b 68 74 74 70 3a 2f 2f 77 77 77 2e 69 63 75   [http://www.icu
8fa0: 2d 70 72 6f 6a 65 63 74 2e 6f 72 67 2f 20 7c 20  -project.org/ | 
8fb0: 49 6e 74 65 72 6e 61 74 69 6f 6e 61 6c 20 43 6f  International Co
8fc0: 6d 70 6f 6e 65 6e 74 73 20 66 6f 72 20 55 6e 69  mponents for Uni
8fd0: 63 6f 64 65 5d 0a 20 20 6f 72 20 22 49 43 55 22  code].  or "ICU"
8fe0: 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f 20 53 51   extension to SQ
8ff0: 4c 69 74 65 20 74 6f 20 62 65 20 61 64 64 65 64  Lite to be added
9000: 20 74 6f 20 74 68 65 20 62 75 69 6c 64 2e 20 20   to the build.  
9010: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9020: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
9030: 45 5f 49 4f 54 52 41 43 45 7d 20 7b 0a 20 20 57  E_IOTRACE} {.  W
9040: 68 65 6e 20 62 6f 74 68 20 74 68 65 20 53 51 4c  hen both the SQL
9050: 69 74 65 20 63 6f 72 65 20 61 6e 64 20 74 68 65  ite core and the
9060: 20 5b 43 6f 6d 6d 61 6e 64 20 4c 69 6e 65 20 49   [Command Line I
9070: 6e 74 65 72 66 61 63 65 5d 20 28 43 4c 49 29 20  nterface] (CLI) 
9080: 61 72 65 20 62 6f 74 68 20 0a 20 20 63 6f 6d 70  are both .  comp
9090: 69 6c 65 64 20 77 69 74 68 20 74 68 69 73 20 6f  iled with this o
90a0: 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20  ption, then the 
90b0: 43 4c 49 20 70 72 6f 76 69 64 65 73 20 61 6e 20  CLI provides an 
90c0: 65 78 74 72 61 20 63 6f 6d 6d 61 6e 64 0a 20 20  extra command.  
90d0: 6e 61 6d 65 64 20 22 2e 69 6f 74 72 61 63 65 22  named ".iotrace"
90e0: 20 74 68 61 74 20 70 72 6f 76 69 64 65 73 20 61   that provides a
90f0: 20 6c 6f 77 2d 6c 65 76 65 6c 20 6c 6f 67 20 6f   low-level log o
9100: 66 20 49 2f 4f 20 61 63 74 69 76 69 74 79 2e 0a  f I/O activity..
9110: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
9120: 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 61 6e   experimental an
9130: 64 20 6d 61 79 20 62 65 20 64 69 73 63 6f 6e 74  d may be discont
9140: 69 6e 75 65 64 20 69 6e 20 61 20 66 75 74 75 72  inued in a futur
9150: 65 20 72 65 6c 65 61 73 65 2e 0a 7d 0a 0a 43 4f  e release..}..CO
9160: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
9170: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4a 53 4f 4e  LITE_ENABLE_JSON
9180: 31 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  1} {.  When this
9190: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
91a0: 65 64 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c 67  ed in the [amalg
91b0: 61 6d 61 74 69 6f 6e 5d 2c 20 74 68 65 0a 20 20  amation], the.  
91c0: 5b 4a 53 4f 4e 20 53 51 4c 20 66 75 6e 63 74 69  [JSON SQL functi
91d0: 6f 6e 73 5d 20 61 72 65 20 61 64 64 65 64 20 74  ons] are added t
91e0: 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f  o the build auto
91f0: 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f  matically..}..CO
9200: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
9210: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f 43 4b  LITE_ENABLE_LOCK
9220: 49 4e 47 5f 53 54 59 4c 45 7d 20 7b 0a 20 20 54  ING_STYLE} {.  T
9230: 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c  his option enabl
9240: 65 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f  es additional lo
9250: 67 69 63 20 69 6e 20 74 68 65 20 4f 53 20 69 6e  gic in the OS in
9260: 74 65 72 66 61 63 65 20 6c 61 79 65 72 20 66 6f  terface layer fo
9270: 72 0a 20 20 4d 61 63 20 4f 53 20 58 2e 20 54 68  r.  Mac OS X. Th
9280: 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67  e additional log
9290: 69 63 20 61 74 74 65 6d 70 74 73 20 74 6f 20 64  ic attempts to d
92a0: 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74 79 70  etermine the typ
92b0: 65 20 6f 66 20 74 68 65 0a 20 20 75 6e 64 65 72  e of the.  under
92c0: 6c 79 69 6e 67 20 66 69 6c 65 73 79 73 74 65 6d  lying filesystem
92d0: 20 61 6e 64 20 63 68 6f 6f 73 65 20 61 6e 64 20   and choose and 
92e0: 61 6c 74 65 72 6e 61 74 69 76 65 20 6c 6f 63 6b  alternative lock
92f0: 69 6e 67 20 73 74 72 61 74 65 67 79 0a 20 20 74  ing strategy.  t
9300: 68 61 74 20 77 6f 72 6b 73 20 63 6f 72 72 65 63  hat works correc
9310: 74 6c 79 20 66 6f 72 20 74 68 61 74 20 66 69 6c  tly for that fil
9320: 65 73 79 73 74 65 6d 20 74 79 70 65 2e 20 46 69  esystem type. Fi
9330: 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61 74  ve locking strat
9340: 65 67 69 65 73 20 0a 20 20 61 72 65 20 61 76 61  egies .  are ava
9350: 69 6c 61 62 6c 65 3a 0a 0a 20 20 3c 75 6c 3e 0a  ilable:..  <ul>.
9360: 20 20 20 20 3c 6c 69 3e 20 50 4f 53 49 58 20 6c      <li> POSIX l
9370: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54 68  ocking style. Th
9380: 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75 6c  is is the defaul
9390: 74 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20  t locking style 
93a0: 61 6e 64 20 74 68 65 0a 20 20 20 20 20 20 20 20  and the.        
93b0: 20 73 74 79 6c 65 20 75 73 65 64 20 62 79 20 6f   style used by o
93c0: 74 68 65 72 20 28 6e 6f 6e 20 4d 61 63 20 4f 53  ther (non Mac OS
93d0: 20 58 29 20 55 6e 69 78 65 73 2e 20 4c 6f 63 6b   X) Unixes. Lock
93e0: 73 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20 61  s are obtained a
93f0: 6e 64 20 0a 20 20 20 20 20 20 20 20 20 72 65 6c  nd .         rel
9400: 65 61 73 65 64 20 75 73 69 6e 67 20 74 68 65 20  eased using the 
9410: 66 63 6e 74 6c 28 29 20 73 79 73 74 65 6d 20 63  fcntl() system c
9420: 61 6c 6c 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 41  all...    <li> A
9430: 46 50 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  FP locking style
9440: 2e 20 54 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73  . This locking s
9450: 74 79 6c 65 20 69 73 20 75 73 65 64 20 66 6f 72  tyle is used for
9460: 20 6e 65 74 77 6f 72 6b 20 66 69 6c 65 20 0a 20   network file . 
9470: 20 20 20 20 20 20 20 20 73 79 73 74 65 6d 73 20          systems 
9480: 74 68 61 74 20 75 73 65 20 74 68 65 20 41 46 50  that use the AFP
9490: 20 28 41 70 70 6c 65 20 46 69 6c 69 6e 67 20 50   (Apple Filing P
94a0: 72 6f 74 6f 63 6f 6c 29 20 70 72 6f 74 6f 63 6f  rotocol) protoco
94b0: 6c 2e 20 4c 6f 63 6b 73 0a 20 20 20 20 20 20 20  l. Locks.       
94c0: 20 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20 62    are obtained b
94d0: 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 6c 69  y calling the li
94e0: 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 5f  brary function _
94f0: 41 46 50 46 53 53 65 74 4c 6f 63 6b 28 29 2e 0a  AFPFSSetLock()..
9500: 0a 20 20 20 20 3c 6c 69 3e 20 46 6c 6f 63 6b 20  .    <li> Flock 
9510: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54  locking style. T
9520: 68 69 73 20 69 73 20 75 73 65 64 20 66 6f 72 20  his is used for 
9530: 66 69 6c 65 2d 73 79 73 74 65 6d 73 20 74 68 61  file-systems tha
9540: 74 20 64 6f 20 6e 6f 74 0a 20 20 20 20 20 20 20  t do not.       
9550: 20 20 73 75 70 70 6f 72 74 20 50 4f 53 49 58 20    support POSIX 
9560: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 4c  locking style. L
9570: 6f 63 6b 73 20 61 72 65 20 6f 62 74 61 69 6e 65  ocks are obtaine
9580: 64 20 61 6e 64 20 72 65 6c 65 61 73 65 64 20 75  d and released u
9590: 73 69 6e 67 0a 20 20 20 20 20 20 20 20 20 74 68  sing.         th
95a0: 65 20 66 6c 6f 63 6b 28 29 20 73 79 73 74 65 6d  e flock() system
95b0: 20 63 61 6c 6c 2e 0a 0a 20 20 20 20 3c 6c 69 3e   call...    <li>
95c0: 20 44 6f 74 2d 66 69 6c 65 20 6c 6f 63 6b 69 6e   Dot-file lockin
95d0: 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c 6f  g style. This lo
95e0: 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20 75  cking style is u
95f0: 73 65 64 20 77 68 65 6e 20 6e 65 69 74 68 65 72  sed when neither
9600: 0a 20 20 20 20 20 20 20 20 20 66 6c 6f 63 6b 20  .         flock 
9610: 6e 6f 72 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e  nor POSIX lockin
9620: 67 20 73 74 79 6c 65 73 20 61 72 65 20 73 75 70  g styles are sup
9630: 70 6f 72 74 65 64 20 62 79 20 74 68 65 20 66 69  ported by the fi
9640: 6c 65 20 73 79 73 74 65 6d 2e 0a 20 20 20 20 20  le system..     
9650: 20 20 20 20 44 61 74 61 62 61 73 65 20 6c 6f 63      Database loc
9660: 6b 73 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20  ks are obtained 
9670: 62 79 20 63 72 65 61 74 69 6e 67 20 61 6e 64 20  by creating and 
9680: 65 6e 74 72 79 20 69 6e 20 74 68 65 20 66 69 6c  entry in the fil
9690: 65 2d 73 79 73 74 65 6d 0a 20 20 20 20 20 20 20  e-system.       
96a0: 20 20 61 74 20 61 20 77 65 6c 6c 2d 6b 6e 6f 77    at a well-know
96b0: 6e 20 6c 6f 63 61 74 69 6f 6e 20 72 65 6c 61 74  n location relat
96c0: 69 76 65 20 74 6f 20 74 68 65 20 64 61 74 61 62  ive to the datab
96d0: 61 73 65 20 66 69 6c 65 20 28 61 20 22 64 6f 74  ase file (a "dot
96e0: 2d 66 69 6c 65 22 29 0a 20 20 20 20 20 20 20 20  -file").        
96f0: 20 61 6e 64 20 72 65 6c 69 6e 71 75 69 73 68 65   and relinquishe
9700: 64 20 62 79 20 64 65 6c 65 74 69 6e 67 20 74 68  d by deleting th
9710: 65 20 73 61 6d 65 20 66 69 6c 65 2e 0a 0a 20 20  e same file...  
9720: 20 20 3c 6c 69 3e 20 4e 6f 20 6c 6f 63 6b 69 6e    <li> No lockin
9730: 67 20 73 74 79 6c 65 2e 20 49 66 20 6e 6f 6e 65  g style. If none
9740: 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 63 61   of the above ca
9750: 6e 20 62 65 20 73 75 70 70 6f 72 74 65 64 2c 20  n be supported, 
9760: 74 68 69 73 20 0a 20 20 20 20 20 20 20 20 20 6c  this .         l
9770: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20  ocking style is 
9780: 75 73 65 64 2e 20 4e 6f 20 64 61 74 61 62 61 73  used. No databas
9790: 65 20 6c 6f 63 6b 69 6e 67 20 6d 65 63 68 61 6e  e locking mechan
97a0: 69 73 6d 20 69 73 20 75 73 65 64 2e 20 57 68 65  ism is used. Whe
97b0: 6e 0a 20 20 20 20 20 20 20 20 20 74 68 69 73 20  n.         this 
97c0: 73 79 73 74 65 6d 20 69 73 20 75 73 65 64 20 69  system is used i
97d0: 74 20 69 73 20 6e 6f 74 20 73 61 66 65 20 66 6f  t is not safe fo
97e0: 72 20 61 20 73 69 6e 67 6c 65 20 64 61 74 61 62  r a single datab
97f0: 61 73 65 20 74 6f 20 62 65 0a 20 20 20 20 20 20  ase to be.      
9800: 20 20 20 61 63 63 65 73 73 65 64 20 62 79 20 6d     accessed by m
9810: 75 6c 74 69 70 6c 65 20 63 6c 69 65 6e 74 73 2e  ultiple clients.
9820: 0a 20 20 3c 2f 75 6c 3e 0a 0a 20 20 41 64 64 69  .  </ul>..  Addi
9830: 74 69 6f 6e 61 6c 6c 79 2c 20 66 69 76 65 20 65  tionally, five e
9840: 78 74 72 61 20 5b 56 46 53 5d 20 69 6d 70 6c 65  xtra [VFS] imple
9850: 6d 65 6e 74 61 74 69 6f 6e 73 20 61 72 65 20 70  mentations are p
9860: 72 6f 76 69 64 65 64 20 61 73 20 77 65 6c 6c 20  rovided as well 
9870: 61 73 20 74 68 65 0a 20 20 64 65 66 61 75 6c 74  as the.  default
9880: 2e 20 42 79 20 73 70 65 63 69 66 79 69 6e 67 20  . By specifying 
9890: 6f 6e 65 20 6f 66 20 74 68 65 20 65 78 74 72 61  one of the extra
98a0: 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74   VFS implementat
98b0: 69 6f 6e 73 20 0a 20 20 77 68 65 6e 20 63 61 6c  ions .  when cal
98c0: 6c 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6f 70  ling [sqlite3_op
98d0: 65 6e 5f 76 32 28 29 5d 2c 20 61 6e 20 61 70 70  en_v2()], an app
98e0: 6c 69 63 61 74 69 6f 6e 20 6d 61 79 20 62 79 70  lication may byp
98f0: 61 73 73 20 74 68 65 20 66 69 6c 65 2d 73 79 73  ass the file-sys
9900: 74 65 6d 0a 20 20 64 65 74 65 63 74 69 6f 6e 20  tem.  detection 
9910: 6c 6f 67 69 63 20 61 6e 64 20 65 78 70 6c 69 63  logic and explic
9920: 69 74 6c 79 20 73 65 6c 65 63 74 20 6f 6e 65 20  itly select one 
9930: 6f 66 20 74 68 65 20 61 62 6f 76 65 20 6c 6f 63  of the above loc
9940: 6b 69 6e 67 20 73 74 79 6c 65 73 2e 20 54 68 65  king styles. The
9950: 0a 20 20 66 69 76 65 20 65 78 74 72 61 20 5b 56  .  five extra [V
9960: 46 53 5d 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  FS] implementati
9970: 6f 6e 73 20 61 72 65 20 63 61 6c 6c 65 64 20 22  ons are called "
9980: 75 6e 69 78 2d 70 6f 73 69 78 22 2c 20 22 75 6e  unix-posix", "un
9990: 69 78 2d 61 66 70 22 2c 0a 20 20 22 75 6e 69 78  ix-afp",.  "unix
99a0: 2d 66 6c 6f 63 6b 22 2c 20 22 75 6e 69 78 2d 64  -flock", "unix-d
99b0: 6f 74 66 69 6c 65 22 20 61 6e 64 20 22 75 6e 69  otfile" and "uni
99c0: 78 2d 6e 6f 6e 65 22 2e 0a 7d 0a 0a 43 4f 4d 50  x-none"..}..COMP
99d0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
99e0: 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 4f 52 59  TE_ENABLE_MEMORY
99f0: 5f 4d 41 4e 41 47 45 4d 45 4e 54 7d 20 7b 0a 20  _MANAGEMENT} {. 
9a00: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64 64   This option add
9a10: 73 20 65 78 74 72 61 20 6c 6f 67 69 63 20 74 6f  s extra logic to
9a20: 20 53 51 4c 69 74 65 20 74 68 61 74 20 61 6c 6c   SQLite that all
9a30: 6f 77 73 20 69 74 20 74 6f 20 72 65 6c 65 61 73  ows it to releas
9a40: 65 20 75 6e 75 73 65 64 0a 20 20 6d 65 6d 6f 72  e unused.  memor
9a50: 79 20 75 70 6f 6e 20 72 65 71 75 65 73 74 2e 20  y upon request. 
9a60: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 75 73   This option mus
9a70: 74 20 62 65 20 65 6e 61 62 6c 65 64 20 69 6e 20  t be enabled in 
9a80: 6f 72 64 65 72 20 66 6f 72 20 74 68 65 0a 20 20  order for the.  
9a90: 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65  [sqlite3_release
9aa0: 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74 65 72  _memory()] inter
9ab0: 66 61 63 65 20 74 6f 20 77 6f 72 6b 2e 20 20 49  face to work.  I
9ac0: 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  f this compile-t
9ad0: 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 69 73 20  ime.  option is 
9ae0: 6e 6f 74 20 75 73 65 64 2c 20 74 68 65 20 5b 73  not used, the [s
9af0: 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d  qlite3_release_m
9b00: 65 6d 6f 72 79 28 29 5d 20 69 6e 74 65 72 66 61  emory()] interfa
9b10: 63 65 20 69 73 20 61 20 0a 20 20 6e 6f 2d 6f 70  ce is a .  no-op
9b20: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
9b30: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
9b40: 4c 45 5f 4d 45 4d 53 59 53 33 7d 20 7b 0a 20 20  LE_MEMSYS3} {.  
9b50: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e 63 6c  This option incl
9b60: 75 64 65 73 20 63 6f 64 65 20 69 6e 20 53 51 4c  udes code in SQL
9b70: 69 74 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65  ite that impleme
9b80: 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69  nts an alternati
9b90: 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ve.  memory allo
9ba0: 63 61 74 6f 72 2e 20 20 54 68 69 73 20 61 6c 74  cator.  This alt
9bb0: 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20  ernative memory 
9bc0: 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f 6e 6c  allocator is onl
9bd0: 79 20 65 6e 67 61 67 65 64 0a 20 20 77 68 65 6e  y engaged.  when
9be0: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e   the [SQLITE_CON
9bf0: 46 49 47 5f 48 45 41 50 5d 20 6f 70 74 69 6f 6e  FIG_HEAP] option
9c00: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e   to [sqlite3_con
9c10: 66 69 67 28 29 5d 20 69 73 20 75 73 65 64 20 74  fig()] is used t
9c20: 6f 0a 20 20 73 75 70 70 6c 79 20 61 20 6c 61 72  o.  supply a lar
9c30: 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f  ge chunk of memo
9c40: 72 79 20 66 72 6f 6d 20 77 68 69 63 68 20 61 6c  ry from which al
9c50: 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  l memory allocat
9c60: 69 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b 65 6e  ions are.  taken
9c70: 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59 53 33 20  ..  The MEMSYS3 
9c80: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
9c90: 20 75 73 65 73 20 61 20 68 79 62 72 69 64 20 61   uses a hybrid a
9ca0: 6c 6c 6f 63 61 74 69 6f 6e 20 61 6c 67 6f 72 69  llocation algori
9cb0: 74 68 6d 20 0a 20 20 70 61 74 74 65 72 6e 65 64  thm .  patterned
9cc0: 20 61 66 74 65 72 20 64 6c 6d 61 6c 6c 6f 63 28   after dlmalloc(
9cd0: 29 2e 20 20 20 4f 6e 6c 79 20 6f 6e 65 20 6f 66  ).   Only one of
9ce0: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d   SQLITE_ENABLE_M
9cf0: 45 4d 53 59 53 33 20 61 6e 64 20 0a 20 20 53 51  EMSYS3 and .  SQ
9d00: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53  LITE_ENABLE_MEMS
9d10: 59 53 35 20 6d 61 79 20 62 65 20 65 6e 61 62 6c  YS5 may be enabl
9d20: 65 64 20 61 74 20 6f 6e 63 65 2e 0a 7d 0a 0a 43  ed at once..}..C
9d30: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9d40: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d  QLITE_ENABLE_MEM
9d50: 53 59 53 35 7d 20 7b 0a 20 20 54 68 69 73 20 6f  SYS5} {.  This o
9d60: 70 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 63  ption includes c
9d70: 6f 64 65 20 69 6e 20 53 51 4c 69 74 65 20 74 68  ode in SQLite th
9d80: 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e  at implements an
9d90: 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 20 20 6d   alternative.  m
9da0: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e  emory allocator.
9db0: 20 20 54 68 69 73 20 61 6c 74 65 72 6e 61 74 69    This alternati
9dc0: 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ve memory alloca
9dd0: 74 6f 72 20 69 73 20 6f 6e 6c 79 20 65 6e 67 61  tor is only enga
9de0: 67 65 64 0a 20 20 77 68 65 6e 20 74 68 65 20 5b  ged.  when the [
9df0: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45  SQLITE_CONFIG_HE
9e00: 41 50 5d 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73  AP] option to [s
9e10: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
9e20: 20 69 73 20 75 73 65 64 20 74 6f 0a 20 20 73 75   is used to.  su
9e30: 70 70 6c 79 20 61 20 6c 61 72 67 65 20 63 68 75  pply a large chu
9e40: 6e 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 66 72 6f  nk of memory fro
9e50: 6d 20 77 68 69 63 68 20 61 6c 6c 20 6d 65 6d 6f  m which all memo
9e60: 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61  ry allocations a
9e70: 72 65 0a 20 20 74 61 6b 65 6e 2e 0a 20 20 54 68  re.  taken..  Th
9e80: 65 20 4d 45 4d 53 59 53 35 20 6d 6f 64 75 6c 65  e MEMSYS5 module
9e90: 20 72 6f 75 6e 64 73 20 61 6c 6c 20 61 6c 6c 6f   rounds all allo
9ea0: 63 61 74 69 6f 6e 73 20 75 70 20 74 6f 20 74 68  cations up to th
9eb0: 65 20 6e 65 78 74 20 70 6f 77 65 72 0a 20 20 6f  e next power.  o
9ec0: 66 20 74 77 6f 20 61 6e 64 20 75 73 65 73 20 61  f two and uses a
9ed0: 20 66 69 72 73 74 2d 66 69 74 2c 20 62 75 64 64   first-fit, budd
9ee0: 79 2d 61 6c 6c 6f 63 61 74 6f 72 20 61 6c 67 6f  y-allocator algo
9ef0: 72 69 74 68 6d 0a 20 20 74 68 61 74 20 70 72 6f  rithm.  that pro
9f00: 76 69 64 65 73 20 73 74 72 6f 6e 67 20 67 75 61  vides strong gua
9f10: 72 61 6e 74 65 65 73 20 61 67 61 69 6e 73 74 20  rantees against 
9f20: 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20 61 6e  fragmentation an
9f30: 64 20 62 72 65 61 6b 64 6f 77 6e 0a 20 20 73 75  d breakdown.  su
9f40: 62 6a 65 63 74 20 74 6f 20 63 65 72 74 61 69 6e  bject to certain
9f50: 20 6f 70 65 72 61 74 69 6e 67 20 63 6f 6e 73 74   operating const
9f60: 72 61 69 6e 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  raints..}..COMPI
9f70: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
9f80: 45 5f 45 4e 41 42 4c 45 5f 50 52 45 55 50 44 41  E_ENABLE_PREUPDA
9f90: 54 45 5f 48 4f 4f 4b 7d 20 7b 0a 20 20 54 68 69  TE_HOOK} {.  Thi
9fa0: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
9fb0: 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 70 72 65   .  [sqlite3_pre
9fc0: 75 70 64 61 74 65 5f 68 6f 6f 6b 7c 73 65 76 65  update_hook|seve
9fd0: 72 61 6c 20 6e 65 77 20 41 50 49 73 5d 20 74 68  ral new APIs] th
9fe0: 61 74 20 70 72 6f 76 69 64 65 20 63 61 6c 6c 62  at provide callb
9ff0: 61 63 6b 73 0a 20 20 70 72 69 6f 72 20 74 6f 20  acks.  prior to 
a000: 61 6e 79 20 63 68 61 6e 67 65 20 74 6f 20 61 20  any change to a 
a010: 5b 72 6f 77 69 64 20 74 61 62 6c 65 5d 2e 20 20  [rowid table].  
a020: 54 68 65 20 63 61 6c 6c 62 61 63 6b 73 20 63 61  The callbacks ca
a030: 6e 20 62 65 20 75 73 65 64 0a 20 20 74 6f 20 72  n be used.  to r
a040: 65 63 6f 72 64 20 74 68 65 20 73 74 61 74 65 20  ecord the state 
a050: 6f 66 20 74 68 65 20 72 6f 77 20 62 65 66 6f 72  of the row befor
a060: 65 20 74 68 65 20 63 68 61 6e 67 65 20 6f 63 63  e the change occ
a070: 75 72 73 2e 0a 20 20 3c 70 3e 54 68 65 20 61 63  urs..  <p>The ac
a080: 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 72 65 75  tion of the preu
a090: 70 64 61 74 65 20 68 6f 6f 6b 20 69 73 20 73 69  pdate hook is si
a0a0: 6d 69 6c 61 72 20 74 6f 20 74 68 65 0a 20 20 5b  milar to the.  [
a0b0: 73 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68  sqlite3_update_h
a0c0: 6f 6f 6b 7c 75 70 64 61 74 65 20 68 6f 6f 6b 5d  ook|update hook]
a0d0: 20 65 78 63 65 70 74 20 74 68 61 74 20 74 68 65   except that the
a0e0: 20 63 61 6c 6c 62 61 63 6b 20 69 73 0a 20 20 69   callback is.  i
a0f0: 6e 76 6f 6b 65 64 20 62 65 66 6f 72 65 20 74 68  nvoked before th
a100: 65 20 63 68 61 6e 67 65 2c 20 6e 6f 74 20 61 66  e change, not af
a110: 74 65 72 77 61 72 64 73 2c 20 61 6e 64 20 74 68  terwards, and th
a120: 65 20 70 72 65 75 70 64 61 74 65 0a 20 20 68 6f  e preupdate.  ho
a130: 6f 6b 20 69 6e 74 65 72 66 61 63 65 73 20 61 72  ok interfaces ar
a140: 65 20 6f 6d 69 74 74 65 64 20 75 6e 6c 65 73 73  e omitted unless
a150: 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   this compile-ti
a160: 6d 65 20 6f 70 74 69 6f 6e 20 69 73 0a 20 20 75  me option is.  u
a170: 73 65 64 2e 0a 20 20 3c 70 3e 54 68 65 20 70 72  sed..  <p>The pr
a180: 65 75 70 64 61 74 65 20 68 6f 6f 6b 20 69 6e 74  eupdate hook int
a190: 65 72 66 61 63 65 73 20 77 65 72 65 20 6f 72 69  erfaces were ori
a1a0: 67 69 6e 61 6c 6c 79 20 61 64 64 65 64 20 74 6f  ginally added to
a1b0: 0a 20 20 73 75 70 70 6f 72 74 20 74 68 65 20 5b  .  support the [
a1c0: 73 65 73 73 69 6f 6e 5d 20 65 78 74 65 6e 73 69  session] extensi
a1d0: 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  on..}..COMPILE_O
a1e0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
a1f0: 41 42 4c 45 5f 52 42 55 7d 20 7b 0a 20 20 45 6e  ABLE_RBU} {.  En
a200: 61 62 6c 65 20 74 68 65 20 63 6f 64 65 20 74 68  able the code th
a210: 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65  e implements the
a220: 20 5b 52 42 55 20 65 78 74 65 6e 73 69 6f 6e 5d   [RBU extension]
a230: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
a240: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
a250: 4c 45 5f 52 54 52 45 45 7d 20 7b 0a 20 20 54 68  LE_RTREE} {.  Th
a260: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
a270: 20 53 51 4c 69 74 65 20 74 6f 20 69 6e 63 6c 75   SQLite to inclu
a280: 64 65 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74  de support for t
a290: 68 65 0a 20 20 5b 72 74 72 65 65 20 7c 20 52 2a  he.  [rtree | R*
a2a0: 54 72 65 65 20 69 6e 64 65 78 20 65 78 74 65 6e  Tree index exten
a2b0: 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  sion]..}..COMPIL
a2c0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
a2d0: 5f 45 4e 41 42 4c 45 5f 53 45 53 53 49 4f 4e 7d  _ENABLE_SESSION}
a2e0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
a2f0: 20 65 6e 61 62 6c 65 73 20 74 68 65 20 5b 73 65   enables the [se
a300: 73 73 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 5d  ssion extension]
a310: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
a320: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
a330: 4c 45 5f 53 54 4d 54 5f 53 43 41 4e 53 54 41 54  LE_STMT_SCANSTAT
a340: 55 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  US} {.  This opt
a350: 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20  ion enables the 
a360: 5b 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 73 63  [sqlite3_stmt_sc
a370: 61 6e 73 74 61 74 75 73 28 29 5d 20 69 6e 74 65  anstatus()] inte
a380: 72 66 61 63 65 2e 20 20 54 68 65 0a 20 20 5b 73  rface.  The.  [s
a390: 71 6c 69 74 65 33 5f 73 74 6d 74 5f 73 63 61 6e  qlite3_stmt_scan
a3a0: 73 74 61 74 75 73 28 29 5d 20 69 6e 74 65 72 66  status()] interf
a3b0: 61 63 65 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20  ace is normally 
a3c0: 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65  omitted from the
a3d0: 20 62 75 69 6c 64 0a 20 20 62 65 63 61 75 73 65   build.  because
a3e0: 20 69 74 20 69 6d 70 6f 73 65 73 20 61 20 73 6d   it imposes a sm
a3f0: 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65 20  all performance 
a400: 70 65 6e 61 6c 74 79 2c 20 65 76 65 6e 20 6f 6e  penalty, even on
a410: 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74   statements that
a420: 0a 20 20 64 6f 20 6e 6f 74 20 75 73 65 20 74 68  .  do not use th
a430: 65 20 66 65 61 74 75 72 65 2e 0a 7d 0a 0a 43 4f  e feature..}..CO
a440: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
a450: 4c 49 54 45 5f 52 54 52 45 45 5f 49 4e 54 5f 4f  LITE_RTREE_INT_O
a460: 4e 4c 59 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  NLY} {.  If this
a470: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
a480: 74 6f 67 65 74 68 65 72 20 77 69 74 68 20 5b 53  together with [S
a490: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52  QLITE_ENABLE_RTR
a4a0: 45 45 5d 20 74 68 65 6e 20 74 68 65 0a 20 20 5b  EE] then the.  [
a4b0: 72 74 72 65 65 20 7c 20 52 2a 54 72 65 65 20 65  rtree | R*Tree e
a4c0: 78 74 65 6e 73 69 6f 6e 5d 20 77 69 6c 6c 20 6f  xtension] will o
a4d0: 6e 6c 79 20 73 74 6f 72 65 20 33 32 2d 62 69 74  nly store 32-bit
a4e0: 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 0a   signed integer.
a4f0: 20 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 61 6e    coordinates an
a500: 64 20 61 6c 6c 20 69 6e 74 65 72 6e 61 6c 20 63  d all internal c
a510: 6f 6d 70 75 74 61 74 69 6f 6e 73 20 77 69 6c 6c  omputations will
a520: 20 62 65 20 64 6f 6e 65 20 75 73 69 6e 67 20 69   be done using i
a530: 6e 74 65 67 65 72 73 0a 20 20 69 6e 73 74 65 61  ntegers.  instea
a540: 64 20 6f 66 20 66 6c 6f 61 74 69 6e 67 20 70 6f  d of floating po
a550: 69 6e 74 20 6e 75 6d 62 65 72 73 2e 0a 7d 0a 0a  int numbers..}..
a560: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a570: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51  SQLITE_ENABLE_SQ
a580: 4c 4c 4f 47 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LLOG} {.  This o
a590: 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 65 78  ption enables ex
a5a0: 74 72 61 20 63 6f 64 65 20 28 65 73 70 65 63 69  tra code (especi
a5b0: 61 6c 6c 79 20 74 68 65 20 5b 53 51 4c 49 54 45  ally the [SQLITE
a5c0: 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 5d 0a  _CONFIG_SQLLOG].
a5d0: 20 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c    option to [sql
a5e0: 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 29 20  ite3_config()]) 
a5f0: 74 68 61 74 20 63 61 6e 20 62 65 20 75 73 65 64  that can be used
a600: 20 74 6f 20 63 72 65 61 74 65 20 6c 6f 67 73 20   to create logs 
a610: 6f 66 20 61 6c 6c 0a 20 20 53 51 4c 69 74 65 20  of all.  SQLite 
a620: 70 72 6f 63 65 73 73 69 6e 67 20 70 65 72 66 6f  processing perfo
a630: 72 6d 65 64 20 62 79 20 61 6e 20 61 70 70 6c 69  rmed by an appli
a640: 63 61 74 69 6f 6e 2e 20 20 54 68 65 73 65 20 6c  cation.  These l
a650: 6f 67 73 20 63 61 6e 20 62 65 20 75 73 65 66 75  ogs can be usefu
a660: 6c 0a 20 20 69 6e 20 64 6f 69 6e 67 20 6f 66 66  l.  in doing off
a670: 2d 6c 69 6e 65 20 61 6e 61 6c 79 73 69 73 20 6f  -line analysis o
a680: 66 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f  f the behavior o
a690: 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  f an application
a6a0: 2c 20 61 6e 64 20 65 73 70 65 63 69 61 6c 6c 79  , and especially
a6b0: 0a 20 20 66 6f 72 20 70 65 72 66 6f 72 6d 61 6e  .  for performan
a6c0: 63 65 20 61 6e 61 6c 79 73 69 73 2e 20 20 49 6e  ce analysis.  In
a6d0: 20 6f 72 64 65 72 20 66 6f 72 20 74 68 65 20 53   order for the S
a6e0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c  QLITE_ENABLE_SQL
a6f0: 4c 4f 47 20 6f 70 74 69 6f 6e 20 74 6f 20 0a 20  LOG option to . 
a700: 20 62 65 20 75 73 65 66 75 6c 2c 20 73 6f 6d 65   be useful, some
a710: 20 65 78 74 72 61 20 63 6f 64 65 20 69 73 20 72   extra code is r
a720: 65 71 75 69 72 65 64 2e 20 20 54 68 65 20 0a 20  equired.  The . 
a730: 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f   <a href="http:/
a740: 2f 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f  /www.sqlite.org/
a750: 73 72 63 2f 64 6f 63 2f 74 72 75 6e 6b 2f 73 72  src/doc/trunk/sr
a760: 63 2f 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22  c/test_sqllog.c"
a770: 3e 22 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22  >"test_sqllog.c"
a780: 3c 2f 61 3e 0a 20 20 73 6f 75 72 63 65 20 63 6f  </a>.  source co
a790: 64 65 0a 20 20 66 69 6c 65 20 69 6e 20 74 68 65  de.  file in the
a7a0: 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65 20 74   SQLite source t
a7b0: 72 65 65 20 69 73 20 61 20 77 6f 72 6b 69 6e 67  ree is a working
a7c0: 20 65 78 61 6d 70 6c 65 20 6f 66 20 74 68 65 20   example of the 
a7d0: 72 65 71 75 69 72 65 64 20 65 78 74 72 61 0a 20  required extra. 
a7e0: 20 63 6f 64 65 2e 20 20 4f 6e 20 75 6e 69 78 20   code.  On unix 
a7f0: 61 6e 64 20 77 69 6e 64 6f 77 73 20 73 79 73 74  and windows syst
a800: 65 6d 73 2c 20 61 20 64 65 76 65 6c 6f 70 65 72  ems, a developer
a810: 20 63 61 6e 20 61 70 70 65 6e 64 20 74 68 65 20   can append the 
a820: 74 65 78 74 20 6f 66 20 74 68 65 0a 20 20 22 74  text of the.  "t
a830: 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f  est_sqllog.c" so
a840: 75 72 63 65 20 63 6f 64 65 20 66 69 6c 65 20 74  urce code file t
a850: 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 61 6e 20  o the end of an 
a860: 22 73 71 6c 69 74 65 33 2e 63 22 20 61 6d 61 6c  "sqlite3.c" amal
a870: 67 61 6d 61 74 69 6f 6e 2c 0a 20 20 72 65 63 6f  gamation,.  reco
a880: 6d 70 69 6c 65 20 74 68 65 20 61 70 70 6c 69 63  mpile the applic
a890: 61 74 69 6f 6e 20 75 73 69 6e 67 20 74 68 65 20  ation using the 
a8a0: 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  -DSQLITE_ENABLE_
a8b0: 53 51 4c 4c 4f 47 20 6f 70 74 69 6f 6e 2c 20 74  SQLLOG option, t
a8c0: 68 65 6e 20 0a 20 20 63 6f 6e 74 72 6f 6c 20 6c  hen .  control l
a8d0: 6f 67 67 69 6e 67 20 75 73 69 6e 67 20 65 6e 76  ogging using env
a8e0: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
a8f0: 65 73 2e 20 20 53 65 65 20 74 68 65 20 68 65 61  es.  See the hea
a900: 64 65 72 20 63 6f 6d 6d 65 6e 74 20 6f 6e 20 0a  der comment on .
a910: 20 20 74 68 65 20 22 74 65 73 74 5f 73 71 6c 6c    the "test_sqll
a920: 6f 67 2e 63 22 20 73 6f 75 72 63 65 20 66 69 6c  og.c" source fil
a930: 65 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  e for additional
a940: 20 64 65 74 61 69 6c 2e 20 20 0a 7d 0a 0a 43 4f   detail.  .}..CO
a950: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
a960: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54  LITE_ENABLE_STAT
a970: 32 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  2} {.  This opti
a980: 6f 6e 20 75 73 65 64 20 74 6f 20 63 61 75 73 65  on used to cause
a990: 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63   the [ANALYZE] c
a9a0: 6f 6d 6d 61 6e 64 20 74 6f 20 63 6f 6c 6c 65 63  ommand to collec
a9b0: 74 0a 20 20 69 6e 64 65 78 20 68 69 73 74 6f 67  t.  index histog
a9c0: 72 61 6d 20 64 61 74 61 20 69 6e 20 74 68 65 20  ram data in the 
a9d0: 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 32 3c  <b>sqlite_stat2<
a9e0: 2f 62 3e 20 74 61 62 6c 65 2e 20 20 42 75 74 20  /b> table.  But 
a9f0: 74 68 61 74 0a 20 20 66 75 6e 63 74 69 6f 6e 61  that.  functiona
aa00: 6c 69 74 79 20 77 61 73 20 73 75 70 65 72 63 65  lity was superce
aa10: 64 65 64 20 62 79 20 5b 53 51 4c 49 54 45 5f 45  ded by [SQLITE_E
aa20: 4e 41 42 4c 45 5f 53 54 41 54 33 5d 20 61 73 20  NABLE_STAT3] as 
aa30: 6f 66 0a 20 20 53 51 4c 69 74 65 20 5b 76 65 72  of.  SQLite [ver
aa40: 73 69 6f 6e 20 33 2e 37 2e 39 5d 20 28 5b 64 61  sion 3.7.9] ([da
aa50: 74 65 6f 66 3a 33 2e 37 2e 39 5d 29 2e 20 20 0a  teof:3.7.9]).  .
aa60: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 45 4e 41    The SQLITE_ENA
aa70: 42 4c 45 5f 53 54 41 54 32 20 63 6f 6d 70 69 6c  BLE_STAT2 compil
aa80: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 0a 20 20  e-time option.  
aa90: 69 73 20 6e 6f 77 20 61 20 6e 6f 2d 6f 70 2e 0a  is now a no-op..
aaa0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
aab0: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
aac0: 5f 53 54 41 54 33 7d 20 7b 0a 20 20 54 68 69 73  _STAT3} {.  This
aad0: 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 61 64 64   option adds add
aae0: 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 74 6f  itional logic to
aaf0: 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63   the [ANALYZE] c
ab00: 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 6f 0a 20 20  ommand and to.  
ab10: 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e  the [query plann
ab20: 65 72 5d 20 74 68 61 74 20 63 61 6e 20 68 65 6c  er] that can hel
ab30: 70 20 53 51 4c 69 74 65 20 74 6f 20 63 68 6f 73  p SQLite to chos
ab40: 65 20 61 20 62 65 74 74 65 72 20 71 75 65 72 79  e a better query
ab50: 20 70 6c 61 6e 0a 20 20 75 6e 64 65 72 20 63 65   plan.  under ce
ab60: 72 74 61 69 6e 20 73 69 74 75 61 74 69 6f 6e 73  rtain situations
ab70: 2e 20 20 54 68 65 20 5b 41 4e 41 4c 59 5a 45 5d  .  The [ANALYZE]
ab80: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 6e 68 61   command is enha
ab90: 6e 63 65 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a  nced to collect.
aba0: 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61    histogram data
abb0: 20 66 72 6f 6d 20 74 68 65 20 6c 65 66 74 2d 6d   from the left-m
abc0: 6f 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20 65 61  ost column of ea
abd0: 63 68 20 69 6e 64 65 78 20 61 6e 64 20 73 74 6f  ch index and sto
abe0: 72 65 20 74 68 61 74 20 64 61 74 61 0a 20 20 69  re that data.  i
abf0: 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 5f 73 74  n the [sqlite_st
ac00: 61 74 33 5d 20 74 61 62 6c 65 2e 20 20 54 68 65  at3] table.  The
ac10: 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 77   query planner w
ac20: 69 6c 6c 20 74 68 65 6e 20 75 73 65 20 74 68 65  ill then use the
ac30: 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74  .  histogram dat
ac40: 61 20 74 6f 20 68 65 6c 70 20 69 74 20 6d 61 6b  a to help it mak
ac50: 65 20 62 65 74 74 65 72 20 69 6e 64 65 78 20 63  e better index c
ac60: 68 6f 69 63 65 73 2e 20 20 4e 6f 74 65 2c 20 68  hoices.  Note, h
ac70: 6f 77 65 76 65 72 2c 0a 20 20 74 68 61 74 20 74  owever,.  that t
ac80: 68 65 20 75 73 65 20 6f 66 20 68 69 73 74 6f 67  he use of histog
ac90: 72 61 6d 20 64 61 74 61 20 69 6e 20 71 75 65 72  ram data in quer
aca0: 79 20 70 6c 61 6e 6e 65 72 20 76 69 6f 6c 61 74  y planner violat
acb0: 65 73 20 74 68 65 0a 20 20 5b 71 75 65 72 79 20  es the.  [query 
acc0: 70 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c 69 74  planner stabilit
acd0: 79 20 67 75 61 72 61 6e 74 65 65 5d 20 77 68 69  y guarantee] whi
ace0: 63 68 20 69 73 20 69 6d 70 6f 72 74 61 6e 74 20  ch is important 
acf0: 74 6f 20 73 6f 6d 65 20 61 70 70 6c 69 63 61 74  to some applicat
ad00: 69 6f 6e 73 2e 0a 20 20 3c 70 3e 0a 7d 0a 0a 43  ions..  <p>.}..C
ad10: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
ad20: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41  QLITE_ENABLE_STA
ad30: 54 34 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  T4} {.  This opt
ad40: 69 6f 6e 20 61 64 64 73 20 61 64 64 69 74 69 6f  ion adds additio
ad50: 6e 61 6c 20 6c 6f 67 69 63 20 74 6f 20 74 68 65  nal logic to the
ad60: 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61   [ANALYZE] comma
ad70: 6e 64 20 61 6e 64 20 74 6f 0a 20 20 74 68 65 20  nd and to.  the 
ad80: 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 5d 20  [query planner] 
ad90: 74 68 61 74 20 63 61 6e 20 68 65 6c 70 20 53 51  that can help SQ
ada0: 4c 69 74 65 20 74 6f 20 63 68 6f 73 65 20 61 20  Lite to chose a 
adb0: 62 65 74 74 65 72 20 71 75 65 72 79 20 70 6c 61  better query pla
adc0: 6e 0a 20 20 75 6e 64 65 72 20 63 65 72 74 61 69  n.  under certai
add0: 6e 20 73 69 74 75 61 74 69 6f 6e 73 2e 20 20 54  n situations.  T
ade0: 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d  he [ANALYZE] com
adf0: 6d 61 6e 64 20 69 73 20 65 6e 68 61 6e 63 65 64  mand is enhanced
ae00: 20 74 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 68 69   to collect.  hi
ae10: 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66 72 6f  stogram data fro
ae20: 6d 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66  m all columns of
ae30: 20 65 76 65 72 79 20 69 6e 64 65 78 20 61 6e 64   every index and
ae40: 20 73 74 6f 72 65 20 74 68 61 74 20 64 61 74 61   store that data
ae50: 0a 20 20 69 6e 20 74 68 65 20 5b 73 71 6c 69 74  .  in the [sqlit
ae60: 65 5f 73 74 61 74 34 5d 20 74 61 62 6c 65 2e 20  e_stat4] table. 
ae70: 20 54 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e   The query plann
ae80: 65 72 20 77 69 6c 6c 20 74 68 65 6e 20 75 73 65  er will then use
ae90: 20 74 68 65 0a 20 20 68 69 73 74 6f 67 72 61 6d   the.  histogram
aea0: 20 64 61 74 61 20 74 6f 20 68 65 6c 70 20 69 74   data to help it
aeb0: 20 6d 61 6b 65 20 62 65 74 74 65 72 20 69 6e 64   make better ind
aec0: 65 78 20 63 68 6f 69 63 65 73 2e 20 20 54 68 65  ex choices.  The
aed0: 20 64 6f 77 6e 73 69 64 65 20 6f 66 0a 20 20 74   downside of.  t
aee0: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
aef0: 20 6f 70 74 69 6f 6e 20 69 73 20 74 68 61 74 20   option is that 
af00: 69 74 20 76 69 6f 6c 61 74 65 73 20 74 68 65 0a  it violates the.
af10: 20 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72    [query planner
af20: 20 73 74 61 62 69 6c 69 74 79 20 67 75 61 72 61   stability guara
af30: 6e 74 65 65 5d 20 6d 61 6b 69 6e 67 20 69 74 20  ntee] making it 
af40: 6d 6f 72 65 20 64 69 66 66 69 63 75 6c 74 20 74  more difficult t
af50: 6f 20 65 6e 73 75 72 65 0a 20 20 63 6f 6e 73 69  o ensure.  consi
af60: 73 74 65 6e 74 20 70 65 72 66 6f 72 6d 61 6e 63  stent performanc
af70: 65 20 69 6e 20 6d 61 73 73 2d 70 72 6f 64 75 63  e in mass-produc
af80: 65 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e  ed applications.
af90: 0a 20 20 3c 70 3e 0a 20 20 53 51 4c 49 54 45 5f  .  <p>.  SQLITE_
afa0: 45 4e 41 42 4c 45 5f 53 54 41 54 34 20 69 73 20  ENABLE_STAT4 is 
afb0: 61 6e 20 65 6e 68 61 6e 63 65 6d 65 6e 74 20 6f  an enhancement o
afc0: 66 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  f [SQLITE_ENABLE
afd0: 5f 53 54 41 54 33 5d 2e 20 20 53 54 41 54 33 0a  _STAT3].  STAT3.
afe0: 20 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65 64 20    only recorded 
aff0: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66  histogram data f
b000: 6f 72 20 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74  or the left-most
b010: 20 63 6f 6c 75 6d 6e 20 6f 66 20 65 61 63 68 20   column of each 
b020: 69 6e 64 65 78 0a 20 20 77 68 65 72 65 61 73 20  index.  whereas 
b030: 74 68 65 20 53 54 41 54 34 20 65 6e 68 61 6e 63  the STAT4 enhanc
b040: 65 6d 65 6e 74 20 72 65 63 6f 72 64 73 20 68 69  ement records hi
b050: 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66 72 6f  stogram data fro
b060: 6d 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 0a 20 20  m all columns.  
b070: 6f 66 20 65 61 63 68 20 69 6e 64 65 78 2e 0a 20  of each index.. 
b080: 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41   The [SQLITE_ENA
b090: 42 4c 45 5f 53 54 41 54 33 5d 20 63 6f 6d 70 69  BLE_STAT3] compi
b0a0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
b0b0: 73 20 61 20 6e 6f 2d 6f 70 20 61 6e 64 20 69 73  s a no-op and is
b0c0: 20 69 67 6e 6f 72 65 64 0a 20 20 69 66 20 74 68   ignored.  if th
b0d0: 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  e SQLITE_ENABLE_
b0e0: 53 54 41 54 34 20 63 6f 6d 70 69 6c 65 2d 74 69  STAT4 compile-ti
b0f0: 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  me option is use
b100: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
b110: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
b120: 42 4c 45 5f 54 52 45 45 5f 45 58 50 4c 41 49 4e  BLE_TREE_EXPLAIN
b130: 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70 69  } {.  This compi
b140: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
b150: 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64  s no longer used
b160: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
b170: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
b180: 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45  LE_UPDATE_DELETE
b190: 5f 4c 49 4d 49 54 7d 20 7b 0a 20 20 54 68 69 73  _LIMIT} {.  This
b1a0: 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20   option enables 
b1b0: 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44 45  an optional ORDE
b1c0: 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20 63  R BY and LIMIT c
b1d0: 6c 61 75 73 65 20 6f 6e 20 0a 20 20 5b 55 50 44  lause on .  [UPD
b1e0: 41 54 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54 45  ATE] and [DELETE
b1f0: 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 0a 20  ] statements... 
b200: 20 3c 70 3e 49 66 20 74 68 69 73 20 6f 70 74 69   <p>If this opti
b210: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
b220: 68 65 6e 20 69 74 20 6d 75 73 74 20 61 6c 73 6f  hen it must also
b230: 20 62 65 20 0a 20 20 64 65 66 69 6e 65 64 20 77   be .  defined w
b240: 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 27 6c  hen using the 'l
b250: 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67 65  emon' tool to ge
b260: 6e 65 72 61 74 65 20 61 20 70 61 72 73 65 2e 63  nerate a parse.c
b270: 0a 20 20 66 69 6c 65 2e 20 42 65 63 61 75 73 65  .  file. Because
b280: 20 6f 66 20 74 68 69 73 2c 20 74 68 69 73 20 6f   of this, this o
b290: 70 74 69 6f 6e 20 6d 61 79 20 6f 6e 6c 79 20 62  ption may only b
b2a0: 65 20 75 73 65 64 20 77 68 65 6e 20 74 68 65 20  e used when the 
b2b0: 6c 69 62 72 61 72 79 20 69 73 20 62 75 69 6c 74  library is built
b2c0: 0a 20 20 66 72 6f 6d 20 73 6f 75 72 63 65 2c 20  .  from source, 
b2d0: 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d  not from the [am
b2e0: 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 66  algamation] or f
b2f0: 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74 69  rom the collecti
b300: 6f 6e 20 6f 66 0a 20 20 70 72 65 2d 70 61 63 6b  on of.  pre-pack
b310: 61 67 65 64 20 43 20 66 69 6c 65 73 20 70 72 6f  aged C files pro
b320: 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d 55 6e  vided for non-Un
b330: 69 78 20 6c 69 6b 65 20 70 6c 61 74 66 6f 72 6d  ix like platform
b340: 73 20 6f 6e 20 74 68 65 20 77 65 62 73 69 74 65  s on the website
b350: 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50  ..  </p>.}..COMP
b360: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
b370: 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57  TE_ENABLE_UNKNOW
b380: 4e 5f 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 7d 20  N_SQL_FUNCTION} 
b390: 7b 0a 20 20 57 68 65 6e 20 74 68 65 20 53 51 4c  {.  When the SQL
b3a0: 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f  ITE_ENABLE_UNKNO
b3b0: 57 4e 5f 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 20  WN_SQL_FUNCTION 
b3c0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
b3d0: 69 6f 6e 20 69 73 0a 20 20 61 63 74 69 76 61 74  ion is.  activat
b3e0: 65 64 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  ed, SQLite will 
b3f0: 73 75 70 70 72 65 73 73 20 22 75 6e 6b 6e 6f 77  suppress "unknow
b400: 6e 20 66 75 6e 63 74 69 6f 6e 22 20 65 72 72 6f  n function" erro
b410: 72 73 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 0a  rs when running.
b420: 20 20 61 6e 20 5b 45 58 50 4c 41 49 4e 5d 20 6f    an [EXPLAIN] o
b430: 72 20 5b 45 58 50 4c 41 49 4e 20 51 55 45 52 59  r [EXPLAIN QUERY
b440: 20 50 4c 41 4e 5d 2e 20 20 49 6e 73 74 65 61 64   PLAN].  Instead
b450: 20 6f 66 20 74 68 72 6f 77 69 6e 67 20 61 6e 20   of throwing an 
b460: 65 72 72 6f 72 2c 0a 20 20 53 51 4c 69 74 65 20  error,.  SQLite 
b470: 77 69 6c 6c 20 69 6e 73 65 72 74 20 61 20 73 75  will insert a su
b480: 62 73 74 69 74 75 74 65 20 6e 6f 2d 6f 70 20 66  bstitute no-op f
b490: 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 64 20 22 75  unction named "u
b4a0: 6e 6b 6e 6f 77 6e 28 29 22 2e 0a 20 20 54 68 65  nknown()"..  The
b4b0: 20 73 75 62 73 74 69 74 75 74 69 6f 6e 20 6f 66   substitution of
b4c0: 20 22 75 6e 6b 6e 6f 77 6e 28 29 22 20 69 6e 20   "unknown()" in 
b4d0: 70 6c 61 63 65 20 6f 66 20 75 6e 72 65 63 6f 67  place of unrecog
b4e0: 6e 69 7a 65 64 20 66 75 6e 63 74 69 6f 6e 73 0a  nized functions.
b4f0: 20 20 6f 6e 6c 79 20 6f 63 63 75 72 73 20 6f 6e    only occurs on
b500: 20 5b 45 58 50 4c 41 49 4e 5d 20 61 6e 64 20 5b   [EXPLAIN] and [
b510: 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c  EXPLAIN QUERY PL
b520: 41 4e 5d 2c 20 6e 6f 74 20 6f 6e 20 6f 72 64 69  AN], not on ordi
b530: 6e 61 72 79 0a 20 20 73 74 61 74 65 6d 65 6e 74  nary.  statement
b540: 73 2e 0a 20 20 3c 70 3e 0a 20 20 57 68 65 6e 20  s..  <p>.  When 
b550: 75 73 65 64 20 69 6e 20 74 68 65 20 5b 63 6f 6d  used in the [com
b560: 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c 5d  mand-line shell]
b570: 2c 20 74 68 65 0a 20 20 53 51 4c 49 54 45 5f 45  , the.  SQLITE_E
b580: 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e 5f 53 51  NABLE_UNKNOWN_SQ
b590: 4c 5f 46 55 4e 43 54 49 4f 4e 20 66 65 61 74 75  L_FUNCTION featu
b5a0: 72 65 20 61 6c 6c 6f 77 73 20 53 51 4c 20 74 65  re allows SQL te
b5b0: 78 74 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73  xt that contains
b5c0: 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64  .  application-d
b5d0: 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 73  efined functions
b5e0: 20 74 6f 20 62 65 20 70 61 73 74 65 64 20 69 6e   to be pasted in
b5f0: 74 6f 20 74 68 65 20 73 68 65 6c 6c 20 66 6f 72  to the shell for
b600: 20 0a 20 20 61 6e 61 6c 79 73 69 73 20 61 6e 64   .  analysis and
b610: 20 64 65 62 75 67 67 69 6e 67 20 77 69 74 68 6f   debugging witho
b620: 75 74 20 68 61 76 69 6e 67 20 74 6f 20 63 72 65  ut having to cre
b630: 61 74 65 20 61 6e 64 20 6c 6f 61 64 20 61 6e 0a  ate and load an.
b640: 20 20 65 78 74 65 6e 73 69 6f 6e 20 74 68 61 74    extension that
b650: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20   implements the 
b660: 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69  application-defi
b670: 6e 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 7d  ned functions..}
b680: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
b690: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
b6a0: 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46 59 7d 20 7b  UNLOCK_NOTIFY} {
b6b0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65  .  This option e
b6c0: 6e 61 62 6c 65 73 20 74 68 65 20 5b 73 71 6c 69  nables the [sqli
b6d0: 74 65 33 5f 75 6e 6c 6f 63 6b 5f 6e 6f 74 69 66  te3_unlock_notif
b6e0: 79 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 61  y()] interface a
b6f0: 6e 64 0a 20 20 69 74 73 20 61 73 73 6f 63 69 61  nd.  its associa
b700: 74 65 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  ted functionalit
b710: 79 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63 75  y.  See the docu
b720: 6d 65 6e 74 61 74 69 6f 6e 20 74 69 74 6c 65 64  mentation titled
b730: 0a 20 20 5b 55 73 69 6e 67 20 74 68 65 20 53 51  .  [Using the SQ
b740: 4c 69 74 65 20 55 6e 6c 6f 63 6b 20 4e 6f 74 69  Lite Unlock Noti
b750: 66 69 63 61 74 69 6f 6e 20 46 65 61 74 75 72 65  fication Feature
b760: 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  ] for additional
b770: 0a 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a  .  information..
b780: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b790: 4e 20 7b 53 51 4c 49 54 45 5f 53 4f 55 4e 44 45  N {SQLITE_SOUNDE
b7a0: 58 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  X} {.  This opti
b7b0: 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20 5b  on enables the [
b7c0: 73 6f 75 6e 64 65 78 28 29 20 53 51 4c 20 66 75  soundex() SQL fu
b7d0: 6e 63 74 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50  nction]..}..COMP
b7e0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
b7f0: 54 45 5f 55 53 45 5f 46 43 4e 54 4c 5f 54 52 41  TE_USE_FCNTL_TRA
b800: 43 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CE} {.  This opt
b810: 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74  ion causes SQLit
b820: 65 20 74 6f 20 69 73 73 75 65 20 65 78 74 72 61  e to issue extra
b830: 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54   [SQLITE_FCNTL_T
b840: 52 41 43 45 5d 20 66 69 6c 65 20 63 6f 6e 74 72  RACE] file contr
b850: 6f 6c 73 0a 20 20 74 6f 20 70 72 6f 76 69 64 65  ols.  to provide
b860: 20 73 75 70 70 6c 65 6d 65 6e 74 61 72 79 20 69   supplementary i
b870: 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f 20 74 68  nformation to th
b880: 65 20 56 46 53 2e 20 20 54 68 65 20 22 76 66 73  e VFS.  The "vfs
b890: 6c 6f 67 2e 63 22 20 65 78 74 65 6e 73 69 6f 6e  log.c" extension
b8a0: 0a 20 20 6d 61 6b 65 73 20 75 73 65 20 6f 66 20  .  makes use of 
b8b0: 74 68 69 73 20 74 6f 20 70 72 6f 76 69 64 65 20  this to provide 
b8c0: 65 6e 68 61 6e 63 65 64 20 6c 6f 67 73 20 6f 66  enhanced logs of
b8d0: 20 56 46 53 20 61 63 74 69 76 69 74 79 2e 0a 7d   VFS activity..}
b8e0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
b8f0: 20 7b 59 59 54 52 41 43 4b 4d 41 58 53 54 41 43   {YYTRACKMAXSTAC
b900: 4b 44 45 50 54 48 7d 20 7b 0a 20 20 54 68 69 73  KDEPTH} {.  This
b910: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74   option causes t
b920: 68 65 20 4c 41 4c 52 28 31 29 20 70 61 72 73 65  he LALR(1) parse
b930: 72 20 73 74 61 63 6b 20 64 65 70 74 68 20 74 6f  r stack depth to
b940: 20 62 65 20 74 72 61 63 6b 65 64 0a 20 20 61 6e   be tracked.  an
b950: 64 20 72 65 70 6f 72 74 65 64 20 75 73 69 6e 67  d reported using
b960: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74   the [sqlite3_st
b970: 61 74 75 73 5d 28 5b 53 51 4c 49 54 45 5f 53 54  atus]([SQLITE_ST
b980: 41 54 55 53 5f 50 41 52 53 45 52 5f 53 54 41 43  ATUS_PARSER_STAC
b990: 4b 5d 2c 2e 2e 2e 29 0a 20 20 69 6e 74 65 72 66  K],...).  interf
b9a0: 61 63 65 2e 20 20 53 51 4c 69 74 65 27 73 20 4c  ace.  SQLite's L
b9b0: 41 4c 52 28 31 29 20 70 61 72 73 65 72 20 68 61  ALR(1) parser ha
b9c0: 73 20 61 20 66 69 78 65 64 20 73 74 61 63 6b 20  s a fixed stack 
b9d0: 64 65 70 74 68 0a 20 20 28 64 65 74 65 72 6d 69  depth.  (determi
b9e0: 6e 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74  ned at compile-t
b9f0: 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b 59  ime using the [Y
ba00: 59 53 54 41 43 4b 44 45 50 54 48 5d 20 6f 70 74  YSTACKDEPTH] opt
ba10: 69 6f 6e 73 29 2e 0a 20 20 54 68 69 73 20 6f 70  ions)..  This op
ba20: 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64  tion can be used
ba30: 20 74 6f 20 68 65 6c 70 20 64 65 74 65 72 6d 69   to help determi
ba40: 6e 65 20 69 66 20 61 6e 20 61 70 70 6c 69 63 61  ne if an applica
ba50: 74 69 6f 6e 20 69 73 0a 20 20 67 65 74 74 69 6e  tion is.  gettin
ba60: 67 20 63 6c 6f 73 65 20 74 6f 20 65 78 63 65 65  g close to excee
ba70: 64 69 6e 67 20 74 68 65 20 6d 61 78 69 6d 75 6d  ding the maximum
ba80: 20 4c 41 4c 52 28 31 29 20 73 74 61 63 6b 20 64   LALR(1) stack d
ba90: 65 70 74 68 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a  epth..}.</tcl>..
baa0: 3c 61 20 6e 61 6d 65 3d 22 64 69 73 61 62 6c 65  <a name="disable
bab0: 66 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c  features"></a>.<
bac0: 68 31 3e 20 4f 70 74 69 6f 6e 73 20 54 6f 20 44  h1> Options To D
bad0: 69 73 61 62 6c 65 20 46 65 61 74 75 72 65 73 20  isable Features 
bae0: 4e 6f 72 6d 61 6c 6c 79 20 54 75 72 6e 65 64 20  Normally Turned 
baf0: 4f 6e 3c 2f 68 31 3e 0a 0a 3c 74 63 6c 3e 0a 43  On</h1>..<tcl>.C
bb00: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
bb10: 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 4c 46  QLITE_DISABLE_LF
bb20: 53 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43  S} {.  If this C
bb30: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
bb40: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20  cro is defined, 
bb50: 6c 61 72 67 65 20 66 69 6c 65 20 73 75 70 70 6f  large file suppo
bb60: 72 74 0a 20 20 69 73 20 64 69 73 61 62 6c 65 64  rt.  is disabled
bb70: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
bb80: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41  ION {SQLITE_DISA
bb90: 42 4c 45 5f 44 49 52 53 59 4e 43 7d 20 7b 0a 20  BLE_DIRSYNC} {. 
bba0: 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72   If this C-prepr
bbb0: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73  ocessor macro is
bbc0: 20 64 65 66 69 6e 65 64 2c 20 64 69 72 65 63 74   defined, direct
bbd0: 6f 72 79 20 73 79 6e 63 73 0a 20 20 61 72 65 20  ory syncs.  are 
bbe0: 64 69 73 61 62 6c 65 64 2e 20 20 53 51 4c 69 74  disabled.  SQLit
bbf0: 65 20 74 79 70 69 63 61 6c 6c 79 20 61 74 74 65  e typically atte
bc00: 6d 70 74 73 20 74 6f 20 73 79 6e 63 20 74 68 65  mpts to sync the
bc10: 20 70 61 72 65 6e 74 0a 20 20 64 69 72 65 63 74   parent.  direct
bc20: 6f 72 79 20 77 68 65 6e 20 61 20 66 69 6c 65 20  ory when a file 
bc30: 69 73 20 64 65 6c 65 74 65 64 20 74 6f 20 65 6e  is deleted to en
bc40: 73 75 72 65 20 74 68 65 20 64 69 72 65 63 74 6f  sure the directo
bc50: 72 79 0a 20 20 65 6e 74 72 69 65 73 20 61 72 65  ry.  entries are
bc60: 20 75 70 64 61 74 65 64 20 69 6d 6d 65 64 69 61   updated immedia
bc70: 74 65 6c 79 20 6f 6e 20 64 69 73 6b 2e 0a 7d 0a  tely on disk..}.
bc80: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
bc90: 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f  {SQLITE_DISABLE_
bca0: 46 54 53 33 5f 55 4e 49 43 4f 44 45 7d 20 7b 0a  FTS3_UNICODE} {.
bcb0: 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70    If this C-prep
bcc0: 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69  rocessor macro i
bcd0: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b  s defined, the [
bce0: 75 6e 69 63 6f 64 65 36 31 5d 20 74 6f 6b 65 6e  unicode61] token
bcf0: 69 7a 65 72 0a 20 20 69 6e 20 5b 46 54 53 33 5d  izer.  in [FTS3]
bd00: 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d   is omitted from
bd10: 20 74 68 65 20 62 75 69 6c 64 20 61 6e 64 20 69   the build and i
bd20: 73 20 75 6e 61 76 61 69 6c 61 62 6c 65 20 74 6f  s unavailable to
bd30: 20 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 73   .  applications
bd40: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
bd50: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41  ION {SQLITE_DISA
bd60: 42 4c 45 5f 46 54 53 34 5f 44 45 46 45 52 52 45  BLE_FTS4_DEFERRE
bd70: 44 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43  D} {.  If this C
bd80: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
bd90: 63 72 6f 20 64 69 73 61 62 6c 65 73 20 74 68 65  cro disables the
bda0: 20 22 64 65 66 65 72 72 65 64 20 74 6f 6b 65 6e   "deferred token
bdb0: 22 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 0a 20  " optimization. 
bdc0: 20 69 6e 20 5b 46 54 53 34 5d 2e 20 20 54 68 65   in [FTS4].  The
bdd0: 20 22 64 65 66 65 72 72 65 64 20 74 6f 6b 65 6e   "deferred token
bde0: 22 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 61  " optimization a
bdf0: 76 6f 69 64 73 20 6c 6f 61 64 69 6e 67 20 6d 61  voids loading ma
be00: 73 73 69 76 65 0a 20 20 70 6f 73 74 69 6e 67 20  ssive.  posting 
be10: 6c 69 73 74 73 20 66 6f 72 20 74 65 72 6d 73 20  lists for terms 
be20: 74 68 61 74 20 61 72 65 20 69 6e 20 6d 6f 73 74  that are in most
be30: 20 64 6f 63 75 6d 65 6e 74 73 20 6f 66 20 74 68   documents of th
be40: 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 0a 20 20 61  e collection.  a
be50: 6e 64 20 69 6e 73 74 65 61 64 20 73 69 6d 70 6c  nd instead simpl
be60: 79 20 73 63 61 6e 73 20 66 6f 72 20 74 68 6f 73  y scans for thos
be70: 65 20 74 6f 6b 65 6e 73 20 69 6e 20 74 68 65 20  e tokens in the 
be80: 64 6f 63 75 6d 65 6e 74 20 73 6f 75 72 63 65 2e  document source.
be90: 20 20 5b 46 54 53 34 5d 0a 20 20 73 68 6f 75 6c    [FTS4].  shoul
bea0: 64 20 67 65 74 20 65 78 61 63 74 6c 79 20 74 68  d get exactly th
beb0: 65 20 73 61 6d 65 20 61 6e 73 77 65 72 20 62 6f  e same answer bo
bec0: 74 68 20 77 69 74 68 20 61 6e 64 20 77 69 74 68  th with and with
bed0: 6f 75 74 20 74 68 69 73 20 6f 70 74 69 6d 69 7a  out this optimiz
bee0: 61 74 69 6f 6e 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a  ation..}.</tcl>.
bef0: 0a 3c 74 63 6c 3e 0a 20 20 68 64 5f 66 72 61 67  .<tcl>.  hd_frag
bf00: 6d 65 6e 74 20 22 6f 6d 69 74 66 65 61 74 75 72  ment "omitfeatur
bf10: 65 73 22 0a 20 20 68 64 5f 6b 65 79 77 6f 72 64  es".  hd_keyword
bf20: 73 20 22 6f 6d 69 74 66 65 61 74 75 72 65 73 22  s "omitfeatures"
bf30: 0a 3c 2f 74 63 6c 3e 0a 3c 68 31 3e 20 4f 70 74  .</tcl>.<h1> Opt
bf40: 69 6f 6e 73 20 54 6f 20 4f 6d 69 74 20 46 65 61  ions To Omit Fea
bf50: 74 75 72 65 73 3c 2f 68 31 3e 0a 0a 3c 70 3e 54  tures</h1>..<p>T
bf60: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 74  he following opt
bf70: 69 6f 6e 73 20 63 61 6e 20 62 65 20 75 73 65 64  ions can be used
bf80: 20 74 6f 20 0a 5b 72 65 6c 66 6f 6f 74 70 72 69   to .[relfootpri
bf90: 6e 74 20 7c 20 72 65 64 75 63 65 20 74 68 65 20  nt | reduce the 
bfa0: 73 69 7a 65 20 6f 66 20 74 68 65 20 63 6f 6d 70  size of the comp
bfb0: 69 6c 65 64 20 6c 69 62 72 61 72 79 5d 0a 62 79  iled library].by
bfc0: 20 6f 6d 69 74 74 69 6e 67 20 75 6e 75 73 65 64   omitting unused
bfd0: 20 66 65 61 74 75 72 65 73 2e 20 54 68 69 73 20   features. This 
bfe0: 69 73 20 70 72 6f 62 61 62 6c 79 20 6f 6e 6c 79  is probably only
bff0: 20 75 73 65 66 75 6c 0a 69 6e 20 65 6d 62 65 64   useful.in embed
c000: 64 65 64 20 73 79 73 74 65 6d 73 20 77 68 65 72  ded systems wher
c010: 65 20 73 70 61 63 65 20 69 73 20 65 73 70 65 63  e space is espec
c020: 69 61 6c 6c 79 20 74 69 67 68 74 2c 20 61 73 20  ially tight, as 
c030: 65 76 65 6e 20 77 69 74 68 20 61 6c 6c 0a 66 65  even with all.fe
c040: 61 74 75 72 65 73 20 69 6e 63 6c 75 64 65 64 20  atures included 
c050: 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
c060: 72 79 20 69 73 20 72 65 6c 61 74 69 76 65 6c 79  ry is relatively
c070: 20 73 6d 61 6c 6c 2e 20 44 6f 6e 27 74 20 66 6f   small. Don't fo
c080: 72 67 65 74 0a 74 6f 20 74 65 6c 6c 20 79 6f 75  rget.to tell you
c090: 72 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70  r compiler to op
c0a0: 74 69 6d 69 7a 65 20 66 6f 72 20 62 69 6e 61 72  timize for binar
c0b0: 79 20 73 69 7a 65 21 20 28 74 68 65 20 2d 4f 73  y size! (the -Os
c0c0: 20 6f 70 74 69 6f 6e 20 69 66 0a 75 73 69 6e 67   option if.using
c0d0: 20 47 43 43 29 2e 20 20 54 65 6c 6c 69 6e 67 20   GCC).  Telling 
c0e0: 79 6f 75 72 20 63 6f 6d 70 69 6c 65 72 20 74 6f  your compiler to
c0f0: 20 6f 70 74 69 6d 69 7a 65 20 66 6f 72 20 73 69   optimize for si
c100: 7a 65 20 75 73 75 61 6c 6c 79 20 68 61 73 0a 61  ze usually has.a
c110: 20 6d 75 63 68 20 6c 61 72 67 65 72 20 69 6d 70   much larger imp
c120: 61 63 74 20 6f 6e 20 6c 69 62 72 61 72 79 20 66  act on library f
c130: 6f 6f 74 70 72 69 6e 74 20 74 68 61 6e 20 65 6d  ootprint than em
c140: 70 6c 6f 79 69 6e 67 20 61 6e 79 20 6f 66 20 74  ploying any of t
c150: 68 65 73 65 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d  hese.compile-tim
c160: 65 20 6f 70 74 69 6f 6e 73 2e 20 20 59 6f 75 20  e options.  You 
c170: 73 68 6f 75 6c 64 20 61 6c 73 6f 20 76 65 72 69  should also veri
c180: 66 79 20 74 68 61 74 20 0a 3c 61 20 68 72 65 66  fy that .<a href
c190: 3d 22 23 64 65 62 75 67 6f 70 74 69 6f 6e 73 22  ="#debugoptions"
c1a0: 3e 64 65 62 75 67 67 69 6e 67 20 6f 70 74 69 6f  >debugging optio
c1b0: 6e 73 3c 2f 61 3e 20 61 72 65 20 64 69 73 61 62  ns</a> are disab
c1c0: 6c 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  led.</p>..<p>The
c1d0: 20 6d 61 63 72 6f 73 20 69 6e 20 74 68 69 73 20   macros in this 
c1e0: 73 65 63 74 69 6f 6e 20 64 6f 20 6e 6f 74 20 72  section do not r
c1f0: 65 71 75 69 72 65 20 76 61 6c 75 65 73 2e 20 54  equire values. T
c200: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 0a 63 6f  he following .co
c210: 6d 70 69 6c 61 74 69 6f 6e 20 73 77 69 74 63 68  mpilation switch
c220: 65 73 20 61 6c 6c 20 68 61 76 65 20 74 68 65 20  es all have the 
c230: 73 61 6d 65 20 65 66 66 65 63 74 3a 3c 62 72 3e  same effect:<br>
c240: 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  .-DSQLITE_OMIT_A
c250: 4c 54 45 52 54 41 42 4c 45 3c 62 72 3e 0a 2d 44  LTERTABLE<br>.-D
c260: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45  SQLITE_OMIT_ALTE
c270: 52 54 41 42 4c 45 3d 31 3c 62 72 3e 0a 2d 44 53  RTABLE=1<br>.-DS
c280: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52  QLITE_OMIT_ALTER
c290: 54 41 42 4c 45 3d 30 0a 3c 2f 70 3e 0a 0a 3c 70  TABLE=0.</p>..<p
c2a0: 3e 49 66 20 61 6e 79 20 6f 66 20 74 68 65 73 65  >If any of these
c2b0: 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 64 65 66   options are def
c2c0: 69 6e 65 64 2c 20 74 68 65 6e 20 74 68 65 20 73  ined, then the s
c2d0: 61 6d 65 20 73 65 74 20 6f 66 20 53 51 4c 49 54  ame set of SQLIT
c2e0: 45 5f 4f 4d 49 54 5f 2a 0a 6f 70 74 69 6f 6e 73  E_OMIT_*.options
c2f0: 20 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 64 65   must also be de
c300: 66 69 6e 65 64 20 77 68 65 6e 20 75 73 69 6e 67  fined when using
c310: 20 74 68 65 20 27 6c 65 6d 6f 6e 27 20 74 6f 6f   the 'lemon' too
c320: 6c 20 74 6f 20 67 65 6e 65 72 61 74 65 20 74 68  l to generate th
c330: 65 0a 70 61 72 73 65 2e 63 20 66 69 6c 65 20 61  e.parse.c file a
c340: 6e 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 69 6e  nd when compilin
c350: 67 20 74 68 65 20 27 6d 6b 6b 65 79 77 6f 72 64  g the 'mkkeyword
c360: 68 61 73 68 27 20 74 6f 6f 6c 20 77 68 69 63 68  hash' tool which
c370: 20 67 65 6e 65 72 61 74 65 73 20 0a 74 68 65 20   generates .the 
c380: 6b 65 79 77 6f 72 64 68 61 73 68 2e 68 20 66 69  keywordhash.h fi
c390: 6c 65 2e 0a 42 65 63 61 75 73 65 20 6f 66 20 74  le..Because of t
c3a0: 68 69 73 2c 20 74 68 65 73 65 20 6f 70 74 69 6f  his, these optio
c3b0: 6e 73 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75  ns may only be u
c3c0: 73 65 64 20 77 68 65 6e 20 74 68 65 20 6c 69 62  sed when the lib
c3d0: 72 61 72 79 20 69 73 20 62 75 69 6c 74 0a 66 72  rary is built.fr
c3e0: 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75  om canonical sou
c3f0: 72 63 65 2c 20 6e 6f 74 20 66 72 6f 6d 20 74 68  rce, not from th
c400: 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d  e [amalgamation]
c410: 2e 0a 53 6f 6d 65 20 53 51 4c 49 54 45 5f 4f 4d  ..Some SQLITE_OM
c420: 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 6d 69 67  IT_* options mig
c430: 68 74 20 77 6f 72 6b 2c 20 6f 72 20 61 70 70 65  ht work, or appe
c440: 61 72 20 74 6f 20 77 6f 72 6b 2c 20 77 68 65 6e  ar to work, when
c450: 20 75 73 65 64 20 77 69 74 68 0a 74 68 65 20 5b   used with.the [
c460: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2e 20 20  amalgamation].  
c470: 42 75 74 20 74 68 69 73 20 69 73 20 6e 6f 74 20  But this is not 
c480: 67 75 61 72 61 6e 74 65 65 64 2e 20 20 49 6e 20  guaranteed.  In 
c490: 67 65 6e 65 72 61 6c 2c 20 61 6c 77 61 79 73 20  general, always 
c4a0: 63 6f 6d 70 69 6c 65 0a 66 72 6f 6d 20 63 61 6e  compile.from can
c4b0: 6f 6e 69 63 61 6c 20 73 6f 75 72 63 65 73 20 69  onical sources i
c4c0: 6e 20 6f 72 64 65 72 20 74 6f 20 74 61 6b 65 20  n order to take 
c4d0: 61 64 76 61 6e 74 61 67 65 20 6f 66 20 53 51 4c  advantage of SQL
c4e0: 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f  ITE_OMIT_* optio
c4f0: 6e 73 2e 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b  ns..</p>..<block
c500: 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70  quote>.<i><b>Imp
c510: 6f 72 74 61 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e  ortant Note:</b>
c520: 20 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54   The SQLITE_OMIT
c530: 5f 2a 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20 6e  _* options may n
c540: 6f 74 20 77 6f 72 6b 20 77 69 74 68 20 74 68 65  ot work with the
c550: 0a 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2e  .[amalgamation].
c560: 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20    SQLITE_OMIT_* 
c570: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74  compile-time.opt
c580: 69 6f 6e 73 20 75 73 75 61 6c 6c 79 20 77 6f 72  ions usually wor
c590: 6b 20 63 6f 72 72 65 63 74 6c 79 20 6f 6e 6c 79  k correctly only
c5a0: 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20   when SQLite is 
c5b0: 62 75 69 6c 74 20 66 72 6f 6d 20 63 61 6e 6f 6e  built from canon
c5c0: 69 63 61 6c 20 0a 73 6f 75 72 63 65 20 66 69 6c  ical .source fil
c5d0: 65 73 2e 0a 3c 2f 69 3e 0a 3c 2f 62 6c 6f 63 6b  es..</i>.</block
c5e0: 71 75 6f 74 65 3e 0a 0a 0a 3c 70 3e 53 70 65 63  quote>...<p>Spec
c5f0: 69 61 6c 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  ial versions of 
c600: 74 68 65 20 53 51 4c 69 74 65 20 61 6d 61 6c 67  the SQLite amalg
c610: 61 6d 61 74 69 6f 6e 20 74 68 61 74 20 64 6f 20  amation that do 
c620: 77 6f 72 6b 20 77 69 74 68 20 61 0a 70 72 65 64  work with a.pred
c630: 65 74 65 72 6d 69 6e 65 64 20 73 65 74 20 6f 66  etermined set of
c640: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f   SQLITE_OMIT_* o
c650: 70 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 67 65  ptions can be ge
c660: 6e 65 72 61 74 65 64 2e 20 20 54 6f 20 64 6f 20  nerated.  To do 
c670: 73 6f 2c 0a 6d 61 6b 65 20 61 20 63 6f 70 79 20  so,.make a copy 
c680: 6f 66 20 74 68 65 20 4d 61 6b 65 66 69 6c 65 2e  of the Makefile.
c690: 6c 69 6e 75 78 2d 67 63 63 20 6d 61 6b 65 66 69  linux-gcc makefi
c6a0: 6c 65 20 74 65 6d 70 6c 61 74 65 20 69 6e 20 74  le template in t
c6b0: 68 65 20 63 61 6e 6f 6e 69 63 61 6c 0a 73 6f 75  he canonical.sou
c6c0: 72 63 65 20 63 6f 64 65 20 64 69 73 74 72 69 62  rce code distrib
c6d0: 75 74 69 6f 6e 2e 20 20 43 68 61 6e 67 65 20 74  ution.  Change t
c6e0: 68 65 20 6e 61 6d 65 20 6f 66 20 79 6f 75 72 20  he name of your 
c6f0: 63 6f 70 79 20 74 6f 20 73 69 6d 70 6c 79 20 22  copy to simply "
c700: 4d 61 6b 65 66 69 6c 65 22 2e 0a 54 68 65 6e 20  Makefile"..Then 
c710: 65 64 69 74 20 22 4d 61 6b 65 66 69 6c 65 22 20  edit "Makefile" 
c720: 74 6f 20 73 65 74 20 75 70 20 61 70 70 72 6f 70  to set up approp
c730: 72 69 61 74 65 20 63 6f 6d 70 69 6c 65 2d 74 69  riate compile-ti
c740: 6d 65 20 6f 70 74 69 6f 6e 73 2e 20 20 54 68 65  me options.  The
c750: 6e 0a 74 79 70 65 3a 0a 3c 63 6f 64 65 62 6c 6f  n.type:.<codeblo
c760: 63 6b 3e 0a 6d 61 6b 65 20 63 6c 65 61 6e 3b 20  ck>.make clean; 
c770: 6d 61 6b 65 20 73 71 6c 69 74 65 33 2e 63 0a 3c  make sqlite3.c.<
c780: 2f 63 6f 64 65 62 6c 6f 63 6b 3e 0a 3c 70 3e 54  /codeblock>.<p>T
c790: 68 65 20 72 65 73 75 6c 74 69 6e 67 20 22 73 71  he resulting "sq
c7a0: 6c 69 74 65 33 2e 63 22 20 61 6d 61 6c 67 61 6d  lite3.c" amalgam
c7b0: 61 74 69 6f 6e 20 63 6f 64 65 20 66 69 6c 65 20  ation code file 
c7c0: 28 61 6e 64 20 69 74 73 20 61 73 73 6f 63 69 61  (and its associa
c7d0: 74 65 64 0a 68 65 61 64 65 72 20 66 69 6c 65 20  ted.header file 
c7e0: 22 73 71 6c 69 74 65 33 2e 68 22 29 20 63 61 6e  "sqlite3.h") can
c7f0: 20 74 68 65 6e 20 62 65 20 6d 6f 76 65 64 20 74   then be moved t
c800: 6f 20 61 20 6e 6f 6e 2d 75 6e 69 78 20 70 6c 61  o a non-unix pla
c810: 74 66 6f 72 6d 0a 66 6f 72 20 66 69 6e 61 6c 20  tform.for final 
c820: 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 75 73 69 6e  compilation usin
c830: 67 20 61 20 6e 61 74 69 76 65 20 63 6f 6d 70 69  g a native compi
c840: 6c 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ler.</p>..<p>The
c850: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f   SQLITE_OMIT_* o
c860: 70 74 69 6f 6e 73 20 61 72 65 20 75 6e 73 75 70  ptions are unsup
c870: 70 6f 72 74 65 64 2e 20 20 42 79 20 74 68 69 73  ported.  By this
c880: 20 77 65 20 6d 65 61 6e 20 74 68 61 74 0a 61 6e   we mean that.an
c890: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f   SQLITE_OMIT_* o
c8a0: 70 74 69 6f 6e 20 74 68 61 74 20 6f 6d 69 74 73  ption that omits
c8b0: 20 63 6f 64 65 20 66 72 6f 6d 20 74 68 65 20 62   code from the b
c8c0: 75 69 6c 64 20 69 6e 20 74 68 65 20 63 75 72 72  uild in the curr
c8d0: 65 6e 74 0a 72 65 6c 65 61 73 65 20 6d 69 67 68  ent.release migh
c8e0: 74 20 62 65 63 6f 6d 65 20 61 20 6e 6f 2d 6f 70  t become a no-op
c8f0: 20 69 6e 20 74 68 65 20 6e 65 78 74 20 72 65 6c   in the next rel
c900: 65 61 73 65 2e 20 20 4f 72 20 74 68 65 20 6f 74  ease.  Or the ot
c910: 68 65 72 20 77 61 79 20 61 72 6f 75 6e 64 3a 0a  her way around:.
c920: 61 6e 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  an SQLITE_OMIT_*
c930: 20 74 68 61 74 20 69 73 20 61 20 6e 6f 2d 6f 70   that is a no-op
c940: 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20   in the current 
c950: 72 65 6c 65 61 73 65 20 6d 69 67 68 74 20 63 61  release might ca
c960: 75 73 65 20 63 6f 64 65 0a 74 6f 20 62 65 20 65  use code.to be e
c970: 78 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6e  xcluded in the n
c980: 65 78 74 20 72 65 6c 65 61 73 65 2e 20 20 41 6c  ext release.  Al
c990: 73 6f 2c 20 6e 6f 74 20 61 6c 6c 20 53 51 4c 49  so, not all SQLI
c9a0: 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e  TE_OMIT_* option
c9b0: 73 0a 61 72 65 20 74 65 73 74 65 64 2e 20 20 53  s.are tested.  S
c9c0: 6f 6d 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ome SQLITE_OMIT_
c9d0: 2a 20 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74 20  * options might 
c9e0: 63 61 75 73 65 20 53 51 4c 69 74 65 20 74 6f 20  cause SQLite to 
c9f0: 6d 61 6c 66 75 6e 63 74 69 6f 6e 0a 61 6e 64 2f  malfunction.and/
ca00: 6f 72 20 70 72 6f 76 69 64 65 20 69 6e 63 6f 72  or provide incor
ca10: 72 65 63 74 20 61 6e 73 77 65 72 73 2e 0a 0a 3c  rect answers...<
ca20: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c  blockquote>.<i><
ca30: 62 3e 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65  b>Important Note
ca40: 3a 3c 2f 62 3e 0a 54 68 65 20 53 51 4c 49 54 45  :</b>.The SQLITE
ca50: 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d  _OMIT_* compile-
ca60: 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65  time options are
ca70: 20 6d 6f 73 74 6c 79 20 75 6e 73 75 70 70 6f 72   mostly unsuppor
ca80: 74 65 64 2e 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b  ted..</i></block
ca90: 71 75 6f 74 65 3e 0a 0a 3c 70 3e 54 68 65 20 66  quote>..<p>The f
caa0: 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20 74 68 65  ollowing are the
cab0: 20 61 76 61 69 6c 61 62 6c 65 20 4f 4d 49 54 20   available OMIT 
cac0: 6f 70 74 69 6f 6e 73 3a 0a 0a 3c 74 63 6c 3e 0a  options:..<tcl>.
cad0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
cae0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45  SQLITE_OMIT_ALTE
caf0: 52 54 41 42 4c 45 7d 20 7b 0a 20 20 57 68 65 6e  RTABLE} {.  When
cb00: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
cb10: 64 65 66 69 6e 65 64 2c 20 74 68 65 20 0a 20 20  defined, the .  
cb20: 5b 41 4c 54 45 52 20 54 41 42 4c 45 5d 20 63 6f  [ALTER TABLE] co
cb30: 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63  mmand is not inc
cb40: 6c 75 64 65 64 20 69 6e 20 74 68 65 20 0a 20 20  luded in the .  
cb50: 6c 69 62 72 61 72 79 2e 20 45 78 65 63 75 74 69  library. Executi
cb60: 6e 67 20 61 6e 20 5b 41 4c 54 45 52 20 54 41 42  ng an [ALTER TAB
cb70: 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61  LE] statement ca
cb80: 75 73 65 73 20 61 20 70 61 72 73 65 20 65 72 72  uses a parse err
cb90: 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  or..}..COMPILE_O
cba0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
cbb0: 49 54 5f 41 4e 41 4c 59 5a 45 7d 20 7b 0a 20 20  IT_ANALYZE} {.  
cbc0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
cbd0: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
cbe0: 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61   [ANALYZE] comma
cbf0: 6e 64 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72  nd is omitted fr
cc00: 6f 6d 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a  om.  the build..
cc10: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
cc20: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  N {SQLITE_OMIT_A
cc30: 54 54 41 43 48 7d 20 7b 0a 20 20 57 68 65 6e 20  TTACH} {.  When 
cc40: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
cc50: 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 41 54 54  efined, the [ATT
cc60: 41 43 48 5d 20 61 6e 64 20 5b 44 45 54 41 43 48  ACH] and [DETACH
cc70: 5d 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 0a 20  ] commands are. 
cc80: 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68   omitted from th
cc90: 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50  e build..}..COMP
cca0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
ccb0: 54 45 5f 4f 4d 49 54 5f 41 55 54 48 4f 52 49 5a  TE_OMIT_AUTHORIZ
ccc0: 41 54 49 4f 4e 7d 20 7b 0a 20 20 44 65 66 69 6e  ATION} {.  Defin
ccd0: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
cce0: 6f 6d 69 74 73 20 74 68 65 20 61 75 74 68 6f 72  omits the author
ccf0: 69 7a 61 74 69 6f 6e 20 63 61 6c 6c 62 61 63 6b  ization callback
cd00: 20 66 65 61 74 75 72 65 20 66 72 6f 6d 20 74 68   feature from th
cd10: 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 54 68 65  e.  library. The
cd20: 20 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75   [sqlite3_set_au
cd30: 74 68 6f 72 69 7a 65 72 28 29 5d 20 41 50 49 20  thorizer()] API 
cd40: 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20  function is not 
cd50: 70 72 65 73 65 6e 74 0a 20 20 69 6e 20 74 68 65  present.  in the
cd60: 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d   library..}..COM
cd70: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
cd80: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 43  ITE_OMIT_AUTOINC
cd90: 52 45 4d 45 4e 54 7d 20 7b 0a 20 20 54 68 69 73  REMENT} {.  This
cda0: 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6d 69 74 73   option is omits
cdb0: 20 74 68 65 20 5b 41 55 54 4f 49 4e 43 52 45 4d   the [AUTOINCREM
cdc0: 45 4e 54 5d 20 66 65 61 74 75 72 65 2e 20 0a 20  ENT] feature. . 
cdd0: 20 57 68 65 6e 20 74 68 69 73 20 69 73 20 6d 61   When this is ma
cde0: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20  cro is defined, 
cdf0: 63 6f 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65 64  columns declared
ce00: 20 61 73 20 0a 20 20 22 5b 49 4e 54 45 47 45 52   as .  "[INTEGER
ce10: 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 20 41 55   PRIMARY KEY] AU
ce20: 54 4f 49 4e 43 52 45 4d 45 4e 54 22 0a 20 20 62  TOINCREMENT".  b
ce30: 65 68 61 76 65 20 69 6e 20 74 68 65 20 73 61 6d  ehave in the sam
ce40: 65 20 77 61 79 20 61 73 20 63 6f 6c 75 6d 6e 73  e way as columns
ce50: 20 64 65 63 6c 61 72 65 64 20 61 73 20 22 5b 49   declared as "[I
ce60: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
ce70: 45 59 5d 22 20 77 68 65 6e 20 61 20 0a 20 20 4e  EY]" when a .  N
ce80: 55 4c 4c 20 69 73 20 69 6e 73 65 72 74 65 64 2e  ULL is inserted.
ce90: 20 54 68 65 20 73 71 6c 69 74 65 5f 73 65 71 75   The sqlite_sequ
cea0: 65 6e 63 65 20 73 79 73 74 65 6d 20 74 61 62 6c  ence system tabl
ceb0: 65 20 69 73 20 6e 65 69 74 68 65 72 20 63 72 65  e is neither cre
cec0: 61 74 65 64 2c 20 6e 6f 72 0a 20 20 72 65 73 70  ated, nor.  resp
ced0: 65 63 74 65 64 20 69 66 20 69 74 20 61 6c 72 65  ected if it alre
cee0: 61 64 79 20 65 78 69 73 74 73 2e 0a 7d 0a 0a 43  ady exists..}..C
cef0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
cf00: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49  QLITE_OMIT_AUTOI
cf10: 4e 49 54 7d 20 7b 0a 20 20 46 6f 72 20 62 61 63  NIT} {.  For bac
cf20: 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62 69  kwards compatibi
cf30: 6c 69 74 79 20 77 69 74 68 20 6f 6c 64 65 72 20  lity with older 
cf40: 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69  versions of SQLi
cf50: 74 65 20 74 68 61 74 20 6c 61 63 6b 0a 20 20 74  te that lack.  t
cf60: 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74  he [sqlite3_init
cf70: 69 61 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72 66  ialize()] interf
cf80: 61 63 65 2c 20 74 68 65 20 5b 73 71 6c 69 74 65  ace, the [sqlite
cf90: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20  3_initialize()] 
cfa0: 69 6e 74 65 72 66 61 63 65 0a 20 20 69 73 20 63  interface.  is c
cfb0: 61 6c 6c 65 64 20 61 75 74 6f 6d 61 74 69 63 61  alled automatica
cfc0: 6c 6c 79 20 75 70 6f 6e 20 65 6e 74 72 79 20 74  lly upon entry t
cfd0: 6f 20 63 65 72 74 61 69 6e 20 6b 65 79 20 69 6e  o certain key in
cfe0: 74 65 72 66 61 63 65 73 20 73 75 63 68 20 61 73  terfaces such as
cff0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  .  [sqlite3_open
d000: 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 76 66  ()], [sqlite3_vf
d010: 73 5f 72 65 67 69 73 74 65 72 28 29 5d 2c 20 61  s_register()], a
d020: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 6d 70 72 69  nd [sqlite3_mpri
d030: 6e 74 66 28 29 5d 2e 0a 20 20 54 68 65 20 6f 76  ntf()]..  The ov
d040: 65 72 68 65 61 64 20 6f 66 20 69 6e 76 6f 6b 69  erhead of invoki
d050: 6e 67 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74  ng [sqlite3_init
d060: 69 61 6c 69 7a 65 28 29 5d 20 61 75 74 6f 6d 61  ialize()] automa
d070: 74 69 63 61 6c 6c 79 20 69 6e 20 74 68 69 73 0a  tically in this.
d080: 20 20 77 61 79 20 6d 61 79 20 62 65 20 6f 6d 69    way may be omi
d090: 74 74 65 64 20 62 79 20 62 75 69 6c 64 69 6e 67  tted by building
d0a0: 20 53 51 4c 69 74 65 20 77 69 74 68 20 74 68 65   SQLite with the
d0b0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54   SQLITE_OMIT_AUT
d0c0: 4f 49 4e 49 54 0a 20 20 43 2d 70 72 65 70 72 6f  OINIT.  C-prepro
d0d0: 63 65 73 73 6f 72 20 6d 61 63 72 6f 2e 20 20 57  cessor macro.  W
d0e0: 68 65 6e 20 62 75 69 6c 74 20 75 73 69 6e 67 20  hen built using 
d0f0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
d100: 49 4e 49 54 2c 20 53 51 4c 69 74 65 0a 20 20 77  INIT, SQLite.  w
d110: 69 6c 6c 20 6e 6f 74 20 61 75 74 6f 6d 61 74 69  ill not automati
d120: 63 61 6c 6c 79 20 69 6e 69 74 69 61 6c 69 7a 65  cally initialize
d130: 20 69 74 73 65 6c 66 20 61 6e 64 20 74 68 65 20   itself and the 
d140: 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 72  application is r
d150: 65 71 75 69 72 65 64 0a 20 20 74 6f 20 69 6e 76  equired.  to inv
d160: 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69  oke [sqlite3_ini
d170: 74 69 61 6c 69 7a 65 28 29 5d 20 64 69 72 65 63  tialize()] direc
d180: 74 6c 79 20 70 72 69 6f 72 20 74 6f 20 62 65 67  tly prior to beg
d190: 69 6e 6e 69 6e 67 20 75 73 65 20 6f 66 20 74 68  inning use of th
d1a0: 65 0a 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61  e.  SQLite libra
d1b0: 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ry..}..COMPILE_O
d1c0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
d1d0: 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44  IT_AUTOMATIC_IND
d1e0: 45 58 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  EX} {.  This opt
d1f0: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f  ion is used to o
d200: 6d 69 74 20 74 68 65 20 0a 20 20 5b 61 75 74 6f  mit the .  [auto
d210: 6d 61 74 69 63 20 69 6e 64 65 78 69 6e 67 5d 20  matic indexing] 
d220: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 0a 20  functionality.. 
d230: 20 53 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49   See also: [SQLI
d240: 54 45 5f 44 45 46 41 55 4c 54 5f 41 55 54 4f 4d  TE_DEFAULT_AUTOM
d250: 41 54 49 43 5f 49 4e 44 45 58 5d 2e 0a 7d 0a 0a  ATIC_INDEX]..}..
d260: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
d270: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
d280: 52 45 53 45 54 7d 20 7b 0a 20 20 42 79 20 64 65  RESET} {.  By de
d290: 66 61 75 6c 74 2c 20 74 68 65 20 5b 73 71 6c 69  fault, the [sqli
d2a0: 74 65 33 5f 73 74 65 70 28 29 5d 20 69 6e 74 65  te3_step()] inte
d2b0: 72 66 61 63 65 20 77 69 6c 6c 20 61 75 74 6f 6d  rface will autom
d2c0: 61 74 69 63 61 6c 6c 79 20 69 6e 76 6f 6b 65 0a  atically invoke.
d2d0: 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74    [sqlite3_reset
d2e0: 28 29 5d 20 74 6f 20 72 65 73 65 74 20 74 68 65  ()] to reset the
d2f0: 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
d300: 6d 65 6e 74 5d 20 69 66 20 6e 65 63 65 73 73 61  ment] if necessa
d310: 72 79 2e 20 20 54 68 69 73 0a 20 20 63 6f 6d 70  ry.  This.  comp
d320: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
d330: 63 68 61 6e 67 65 73 20 74 68 61 74 20 62 65 68  changes that beh
d340: 61 76 69 6f 72 20 73 6f 20 74 68 61 74 20 5b 73  avior so that [s
d350: 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 77  qlite3_step()] w
d360: 69 6c 6c 0a 20 20 72 65 74 75 72 6e 20 5b 53 51  ill.  return [SQ
d370: 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 69 66 20  LITE_MISUSE] if 
d380: 69 74 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 20  it called again 
d390: 61 66 74 65 72 20 72 65 74 75 72 6e 69 6e 67 20  after returning 
d3a0: 61 6e 79 74 68 69 6e 67 20 6f 74 68 65 72 0a 20  anything other. 
d3b0: 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 52 4f   than [SQLITE_RO
d3c0: 57 5d 2c 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  W], [SQLITE_BUSY
d3d0: 5d 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f 4c 4f  ], or [SQLITE_LO
d3e0: 43 4b 45 44 5d 20 75 6e 6c 65 73 73 20 74 68 65  CKED] unless the
d3f0: 72 65 20 77 61 73 20 61 6e 0a 20 20 69 6e 74 65  re was an.  inte
d400: 72 76 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f 20  rvening call to 
d410: 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29  [sqlite3_reset()
d420: 5d 2e 0a 0a 20 20 49 6e 20 53 51 4c 69 74 65 20  ]...  In SQLite 
d430: 5b 76 65 72 73 69 6f 6e 20 33 2e 36 2e 32 33 2e  [version 3.6.23.
d440: 31 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e 36 2e  1] ([dateof:3.6.
d450: 32 33 2e 31 5d 29 0a 20 20 61 6e 64 20 65 61 72  23.1]).  and ear
d460: 6c 69 65 72 2c 20 5b 73 71 6c 69 74 65 33 5f 73  lier, [sqlite3_s
d470: 74 65 70 28 29 5d 20 75 73 65 64 20 74 6f 20 61  tep()] used to a
d480: 6c 77 61 79 73 0a 20 20 72 65 74 75 72 6e 20 5b  lways.  return [
d490: 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 69  SQLITE_MISUSE] i
d4a0: 66 20 69 74 20 77 61 73 20 69 6e 76 6f 6b 65 64  f it was invoked
d4b0: 20 61 67 61 69 6e 20 61 66 74 65 72 20 72 65 74   again after ret
d4c0: 75 72 6e 69 6e 67 20 61 6e 79 74 68 69 6e 67 0a  urning anything.
d4d0: 20 20 6f 74 68 65 72 20 74 68 61 6e 20 5b 53 51    other than [SQ
d4e0: 4c 49 54 45 5f 52 4f 57 5d 20 77 69 74 68 6f 75  LITE_ROW] withou
d4f0: 74 20 61 6e 20 69 6e 74 65 72 76 65 6e 69 6e 67  t an intervening
d500: 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65   call to [sqlite
d510: 33 5f 72 65 73 65 74 28 29 5d 2e 0a 20 20 54 68  3_reset()]..  Th
d520: 69 73 20 63 61 75 73 65 64 20 70 72 6f 62 6c 65  is caused proble
d530: 6d 73 20 6f 6e 20 73 6f 6d 65 20 70 6f 6f 72 6c  ms on some poorl
d540: 79 20 77 72 69 74 74 65 6e 20 73 6d 61 72 74 70  y written smartp
d550: 68 6f 6e 65 20 61 70 70 6c 69 63 61 74 69 6f 6e  hone application
d560: 73 20 77 68 69 63 68 0a 20 20 64 69 64 20 6e 6f  s which.  did no
d570: 74 20 63 6f 72 72 65 63 74 6c 79 20 68 61 6e 64  t correctly hand
d580: 6c 65 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c  le the [SQLITE_L
d590: 4f 43 4b 45 44 5d 20 61 6e 64 20 5b 53 51 4c 49  OCKED] and [SQLI
d5a0: 54 45 5f 42 55 53 59 5d 20 65 72 72 6f 72 20 0a  TE_BUSY] error .
d5b0: 20 20 72 65 74 75 72 6e 73 2e 20 20 52 61 74 68    returns.  Rath
d5c0: 65 72 20 74 68 61 6e 20 66 69 78 20 74 68 65 20  er than fix the 
d5d0: 6d 61 6e 79 20 64 65 66 65 63 74 69 76 65 20 73  many defective s
d5e0: 6d 61 72 74 70 68 6f 6e 65 20 61 70 70 6c 69 63  martphone applic
d5f0: 61 74 69 6f 6e 73 2c 20 0a 20 20 74 68 65 20 62  ations, .  the b
d600: 65 68 61 76 69 6f 72 20 6f 66 20 53 51 4c 69 74  ehavior of SQLit
d610: 65 20 77 61 73 20 63 68 61 6e 67 65 64 20 69 6e  e was changed in
d620: 20 33 2e 36 2e 32 33 2e 32 20 74 6f 20 61 75 74   3.6.23.2 to aut
d630: 6f 6d 61 74 69 63 61 6c 6c 79 20 72 65 73 65 74  omatically reset
d640: 0a 20 20 74 68 65 20 70 72 65 70 61 72 65 64 20  .  the prepared 
d650: 73 74 61 74 65 6d 65 6e 74 2e 20 20 42 75 74 20  statement.  But 
d660: 74 68 61 74 20 63 68 61 6e 67 65 64 20 63 61 75  that changed cau
d670: 73 65 64 20 69 73 73 75 65 73 20 69 6e 20 6f 74  sed issues in ot
d680: 68 65 72 20 0a 20 20 69 6d 70 72 6f 70 65 72 6c  her .  improperl
d690: 79 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 61 70  y implemented ap
d6a0: 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20  plications that 
d6b0: 77 65 72 65 20 61 63 74 75 61 6c 6c 79 20 6c 6f  were actually lo
d6c0: 6f 6b 69 6e 67 0a 20 20 66 6f 72 20 61 6e 20 5b  oking.  for an [
d6d0: 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 72  SQLITE_MISUSE] r
d6e0: 65 74 75 72 6e 20 74 6f 20 74 65 72 6d 69 6e 61  eturn to termina
d6f0: 74 65 20 74 68 65 69 72 20 71 75 65 72 79 20 6c  te their query l
d700: 6f 6f 70 73 2e 20 20 28 41 6e 79 74 69 6d 65 0a  oops.  (Anytime.
d710: 20 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e    an application
d720: 20 67 65 74 73 20 61 6e 20 53 51 4c 49 54 45 5f   gets an SQLITE_
d730: 4d 49 53 55 53 45 20 65 72 72 6f 72 20 63 6f 64  MISUSE error cod
d740: 65 20 66 72 6f 6d 20 53 51 4c 69 74 65 2c 20 74  e from SQLite, t
d750: 68 61 74 20 6d 65 61 6e 73 20 74 68 65 0a 20 20  hat means the.  
d760: 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 6d  application is m
d770: 69 73 75 73 69 6e 67 20 74 68 65 20 53 51 4c 69  isusing the SQLi
d780: 74 65 20 69 6e 74 65 72 66 61 63 65 20 61 6e 64  te interface and
d790: 20 69 73 20 74 68 75 73 20 69 6e 63 6f 72 72 65   is thus incorre
d7a0: 63 74 6c 79 0a 20 20 69 6d 70 6c 65 6d 65 6e 74  ctly.  implement
d7b0: 65 64 2e 29 20 20 54 68 65 20 53 51 4c 49 54 45  ed.)  The SQLITE
d7c0: 5f 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45 54 20  _OMIT_AUTORESET 
d7d0: 69 6e 74 65 72 66 61 63 65 20 77 61 73 20 61 64  interface was ad
d7e0: 64 65 64 20 74 6f 20 53 51 4c 69 74 65 0a 20 20  ded to SQLite.  
d7f0: 5b 76 65 72 73 69 6f 6e 20 33 2e 37 2e 35 5d 20  [version 3.7.5] 
d800: 28 5b 64 61 74 65 6f 66 3a 33 2e 37 2e 35 5d 29  ([dateof:3.7.5])
d810: 20 69 6e 20 61 6e 20 65 66 66 6f 72 74 20 74 6f   in an effort to
d820: 20 67 65 74 20 61 6c 6c 20 6f 66 20 74 68 65 20   get all of the 
d830: 28 62 72 6f 6b 65 6e 29 0a 20 20 61 70 70 6c 69  (broken).  appli
d840: 63 61 74 69 6f 6e 73 20 74 6f 20 77 6f 72 6b 20  cations to work 
d850: 61 67 61 69 6e 20 77 69 74 68 6f 75 74 20 68 61  again without ha
d860: 76 69 6e 67 20 74 6f 20 61 63 74 75 61 6c 6c 79  ving to actually
d870: 20 66 69 78 20 74 68 65 20 61 70 70 6c 69 63 61   fix the applica
d880: 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  tions..}..COMPIL
d890: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
d8a0: 5f 4f 4d 49 54 5f 41 55 54 4f 56 41 43 55 55 4d  _OMIT_AUTOVACUUM
d8b0: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70  } {.  If this op
d8c0: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
d8d0: 20 74 68 65 20 6c 69 62 72 61 72 79 20 63 61 6e   the library can
d8e0: 6e 6f 74 20 63 72 65 61 74 65 20 6f 72 20 77 72  not create or wr
d8f0: 69 74 65 20 74 6f 20 0a 20 20 64 61 74 61 62 61  ite to .  databa
d900: 73 65 73 20 74 68 61 74 20 73 75 70 70 6f 72 74  ses that support
d910: 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 2e 0a   [auto_vacuum]..
d920: 20 20 45 78 65 63 75 74 69 6e 67 20 61 20 5b 50    Executing a [P
d930: 52 41 47 4d 41 20 61 75 74 6f 5f 76 61 63 75 75  RAGMA auto_vacuu
d940: 6d 5d 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  m] statement is 
d950: 6e 6f 74 20 61 6e 20 65 72 72 6f 72 0a 20 20 28  not an error.  (
d960: 73 69 6e 63 65 20 75 6e 6b 6e 6f 77 6e 20 50 52  since unknown PR
d970: 41 47 4d 41 73 20 61 72 65 20 73 69 6c 65 6e 74  AGMAs are silent
d980: 6c 79 20 69 67 6e 6f 72 65 64 29 2c 20 62 75 74  ly ignored), but
d990: 20 64 6f 65 73 20 6e 6f 74 20 72 65 74 75 72 6e   does not return
d9a0: 20 61 20 76 61 6c 75 65 0a 20 20 6f 72 20 6d 6f   a value.  or mo
d9b0: 64 69 66 79 20 74 68 65 20 61 75 74 6f 2d 76 61  dify the auto-va
d9c0: 63 75 75 6d 20 66 6c 61 67 20 69 6e 20 74 68 65  cuum flag in the
d9d0: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20   database file. 
d9e0: 49 66 20 61 20 64 61 74 61 62 61 73 65 20 74 68  If a database th
d9f0: 61 74 0a 20 20 73 75 70 70 6f 72 74 73 20 61 75  at.  supports au
da00: 74 6f 2d 76 61 63 75 75 6d 20 69 73 20 6f 70 65  to-vacuum is ope
da10: 6e 65 64 20 62 79 20 61 20 6c 69 62 72 61 72 79  ned by a library
da20: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
da30: 68 69 73 20 6f 70 74 69 6f 6e 2c 20 69 74 0a 20  his option, it. 
da40: 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   is automaticall
da50: 79 20 6f 70 65 6e 65 64 20 69 6e 20 72 65 61 64  y opened in read
da60: 2d 6f 6e 6c 79 20 6d 6f 64 65 2e 0a 7d 0a 0a 43  -only mode..}..C
da70: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
da80: 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 45 54 57 45  QLITE_OMIT_BETWE
da90: 45 4e 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d  EN_OPTIMIZATION}
daa0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
dab0: 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 75 73   disables the us
dac0: 65 20 6f 66 20 69 6e 64 69 63 65 73 20 77 69 74  e of indices wit
dad0: 68 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 74  h WHERE clause t
dae0: 65 72 6d 73 0a 20 20 74 68 61 74 20 65 6d 70 6c  erms.  that empl
daf0: 6f 79 20 74 68 65 20 42 45 54 57 45 45 4e 20 6f  oy the BETWEEN o
db00: 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  perator..}..COMP
db10: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
db20: 54 45 5f 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54  TE_OMIT_BLOB_LIT
db30: 45 52 41 4c 7d 20 7b 0a 20 20 57 68 65 6e 20 74  ERAL} {.  When t
db40: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
db50: 66 69 6e 65 64 2c 20 69 74 20 69 73 20 6e 6f 74  fined, it is not
db60: 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 73 70 65   possible to spe
db70: 63 69 66 79 20 61 20 62 6c 6f 62 20 69 6e 0a 20  cify a blob in. 
db80: 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   an SQL statemen
db90: 74 20 75 73 69 6e 67 20 74 68 65 20 58 27 41 42  t using the X'AB
dba0: 43 44 27 20 73 79 6e 74 61 78 2e 0a 7d 0a 0a 43  CD' syntax..}..C
dbb0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
dbc0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 54 52 45 45  QLITE_OMIT_BTREE
dbd0: 43 4f 55 4e 54 7d 20 7b 0a 20 20 57 68 65 6e 20  COUNT} {.  When 
dbe0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
dbf0: 65 66 69 6e 65 64 2c 20 61 6e 20 6f 70 74 69 6d  efined, an optim
dc00: 69 7a 61 74 69 6f 6e 20 74 68 61 74 20 61 63 63  ization that acc
dc10: 65 6c 65 72 61 74 65 73 20 63 6f 75 6e 74 69 6e  elerates countin
dc20: 67 0a 20 20 61 6c 6c 20 65 6e 74 72 69 65 73 20  g.  all entries 
dc30: 69 6e 20 61 20 74 61 62 6c 65 20 28 69 6e 20 6f  in a table (in o
dc40: 74 68 65 72 20 77 6f 72 64 73 2c 20 61 6e 20 6f  ther words, an o
dc50: 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61 74  ptimization that
dc60: 20 68 65 6c 70 73 0a 20 20 22 53 45 4c 45 43 54   helps.  "SELECT
dc70: 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74   count(*) FROM t
dc80: 61 62 6c 65 22 20 72 75 6e 20 66 61 73 74 65 72  able" run faster
dc90: 29 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a  ) is omitted..}.
dca0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
dcb0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55 49  {SQLITE_OMIT_BUI
dcc0: 4c 54 49 4e 5f 54 45 53 54 7d 20 7b 0a 20 20 54  LTIN_TEST} {.  T
dcd0: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
dce0: 20 6f 70 74 69 6f 6e 20 68 61 73 20 62 65 65 6e   option has been
dcf0: 20 72 65 6e 61 6d 65 64 20 74 6f 20 5b 53 51 4c   renamed to [SQL
dd00: 49 54 45 5f 55 4e 54 45 53 54 41 42 4c 45 5d 2e  ITE_UNTESTABLE].
dd10: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
dd20: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
dd30: 43 41 53 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f  CAST} {.  This o
dd40: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c  ption causes SQL
dd50: 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70  ite to omit supp
dd60: 6f 72 74 20 66 6f 72 20 74 68 65 20 43 41 53 54  ort for the CAST
dd70: 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f   operator..}..CO
dd80: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
dd90: 4c 49 54 45 5f 4f 4d 49 54 5f 43 48 45 43 4b 7d  LITE_OMIT_CHECK}
dda0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
ddb0: 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
ddc0: 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66  o omit support f
ddd0: 6f 72 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61  or CHECK constra
dde0: 69 6e 74 73 2e 0a 20 20 54 68 65 20 70 61 72 73  ints..  The pars
ddf0: 65 72 20 77 69 6c 6c 20 73 74 69 6c 6c 20 61 63  er will still ac
de00: 63 65 70 74 20 43 48 45 43 4b 20 63 6f 6e 73 74  cept CHECK const
de10: 72 61 69 6e 74 73 20 69 6e 20 53 51 4c 20 73 74  raints in SQL st
de20: 61 74 65 6d 65 6e 74 73 2c 0a 20 20 74 68 65 79  atements,.  they
de30: 20 77 69 6c 6c 20 6a 75 73 74 20 6e 6f 74 20 62   will just not b
de40: 65 20 65 6e 66 6f 72 63 65 64 2e 0a 7d 0a 0a 43  e enforced..}..C
de50: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
de60: 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49  QLITE_OMIT_COMPI
de70: 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47 53 7d 20  LEOPTION_DIAGS} 
de80: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
de90: 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20  is used to omit 
dea0: 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  the compile-time
deb0: 20 6f 70 74 69 6f 6e 20 64 69 61 67 6e 6f 73 74   option diagnost
dec0: 69 63 73 20 61 76 61 69 6c 61 62 6c 65 0a 20 20  ics available.  
ded0: 69 6e 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75  in SQLite, inclu
dee0: 64 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65  ding the [sqlite
def0: 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  3_compileoption_
df00: 75 73 65 64 28 29 5d 20 61 6e 64 0a 20 20 5b 73  used()] and.  [s
df10: 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
df20: 74 69 6f 6e 5f 67 65 74 28 29 5d 20 43 2f 43 2b  tion_get()] C/C+
df30: 2b 20 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68 65  + functions, the
df40: 0a 20 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69  .  [sqlite_compi
df50: 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d  leoption_used()]
df60: 20 61 6e 64 20 5b 73 71 6c 69 74 65 5f 63 6f 6d   and [sqlite_com
df70: 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29  pileoption_get()
df80: 5d 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 2c  ] SQL functions,
df90: 0a 20 20 61 6e 64 20 74 68 65 20 5b 63 6f 6d 70  .  and the [comp
dfa0: 69 6c 65 5f 6f 70 74 69 6f 6e 73 20 70 72 61 67  ile_options prag
dfb0: 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ma]..}..COMPILE_
dfc0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
dfd0: 4d 49 54 5f 43 4f 4d 50 4c 45 54 45 7d 20 7b 0a  MIT_COMPLETE} {.
dfe0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
dff0: 75 73 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65  uses the [sqlite
e000: 33 5f 63 6f 6d 70 6c 65 74 65 28 29 5d 20 61 6e  3_complete()] an
e010: 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c  d [sqlite3_compl
e020: 65 74 65 31 36 28 29 5d 0a 20 20 69 6e 74 65 72  ete16()].  inter
e030: 66 61 63 65 73 20 74 6f 20 62 65 20 6f 6d 69 74  faces to be omit
e040: 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ted..}..COMPILE_
e050: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
e060: 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c  MIT_COMPOUND_SEL
e070: 45 43 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ECT} {.  This op
e080: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
e090: 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70 6f 75 6e  omit the compoun
e0a0: 64 20 5b 53 45 4c 45 43 54 5d 20 66 75 6e 63 74  d [SELECT] funct
e0b0: 69 6f 6e 61 6c 69 74 79 2e 20 0a 20 20 5b 53 45  ionality. .  [SE
e0c0: 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73  LECT] statements
e0d0: 20 74 68 61 74 20 75 73 65 20 74 68 65 20 0a 20   that use the . 
e0e0: 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41 4c   UNION, UNION AL
e0f0: 4c 2c 20 49 4e 54 45 52 53 45 43 54 20 6f 72 20  L, INTERSECT or 
e100: 45 58 43 45 50 54 20 63 6f 6d 70 6f 75 6e 64 20  EXCEPT compound 
e110: 53 45 4c 45 43 54 20 6f 70 65 72 61 74 6f 72 73  SELECT operators
e120: 20 77 69 6c 6c 20 0a 20 20 63 61 75 73 65 20 61   will .  cause a
e130: 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20   parse error... 
e140: 20 41 6e 20 5b 49 4e 53 45 52 54 5d 20 73 74 61   An [INSERT] sta
e150: 74 65 6d 65 6e 74 20 77 69 74 68 20 6d 75 6c 74  tement with mult
e160: 69 70 6c 65 20 76 61 6c 75 65 73 20 69 6e 20 74  iple values in t
e170: 68 65 20 56 41 4c 55 45 53 20 63 6c 61 75 73 65  he VALUES clause
e180: 20 69 73 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 65   is.  implemente
e190: 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61 73 20  d internally as 
e1a0: 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43  a compound SELEC
e1b0: 54 2e 20 20 48 65 6e 63 65 2c 20 74 68 69 73 20  T.  Hence, this 
e1c0: 6f 70 74 69 6f 6e 20 61 6c 73 6f 0a 20 20 64 69  option also.  di
e1d0: 73 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c 69  sables the abili
e1e0: 74 79 20 74 6f 20 69 6e 73 65 72 74 20 6d 6f 72  ty to insert mor
e1f0: 65 20 74 68 61 6e 20 61 20 73 69 6e 67 6c 65 20  e than a single 
e200: 72 6f 77 20 75 73 69 6e 67 20 61 6e 0a 20 20 49  row using an.  I
e210: 4e 53 45 52 54 20 49 4e 54 4f 20 2e 2e 2e 20 56  NSERT INTO ... V
e220: 41 4c 55 45 53 20 2e 2e 2e 20 73 74 61 74 65 6d  ALUES ... statem
e230: 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ent..}..COMPILE_
e240: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
e250: 4d 49 54 5f 43 54 45 7d 20 7b 0a 20 20 54 68 69  MIT_CTE} {.  Thi
e260: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
e270: 73 75 70 70 6f 72 74 20 66 6f 72 20 5b 63 6f 6d  support for [com
e280: 6d 6f 6e 20 74 61 62 6c 65 20 65 78 70 72 65 73  mon table expres
e290: 73 69 6f 6e 73 5d 20 74 6f 20 62 65 20 6f 6d 69  sions] to be omi
e2a0: 74 74 65 64 2e 0a 7d 0a 0a 0a 0a 43 4f 4d 50 49  tted..}....COMPI
e2b0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
e2c0: 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f  E_OMIT_DATETIME_
e2d0: 46 55 4e 43 53 7d 20 7b 0a 20 20 49 66 20 74 68  FUNCS} {.  If th
e2e0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
e2f0: 69 6e 65 64 2c 20 53 51 4c 69 74 65 27 73 20 62  ined, SQLite's b
e300: 75 69 6c 74 2d 69 6e 20 64 61 74 65 20 61 6e 64  uilt-in date and
e310: 20 74 69 6d 65 20 6d 61 6e 69 70 75 6c 61 74 69   time manipulati
e320: 6f 6e 0a 20 20 66 75 6e 63 74 69 6f 6e 73 20 61  on.  functions a
e330: 72 65 20 6f 6d 69 74 74 65 64 2e 20 53 70 65 63  re omitted. Spec
e340: 69 66 69 63 61 6c 6c 79 2c 20 74 68 65 20 53 51  ifically, the SQ
e350: 4c 20 66 75 6e 63 74 69 6f 6e 73 20 6a 75 6c 69  L functions juli
e360: 61 6e 64 61 79 28 29 2c 20 64 61 74 65 28 29 2c  anday(), date(),
e370: 0a 20 20 74 69 6d 65 28 29 2c 20 64 61 74 65 74  .  time(), datet
e380: 69 6d 65 28 29 20 61 6e 64 20 73 74 72 66 74 69  ime() and strfti
e390: 6d 65 28 29 20 61 72 65 20 6e 6f 74 20 61 76 61  me() are not ava
e3a0: 69 6c 61 62 6c 65 2e 20 54 68 65 20 64 65 66 61  ilable. The defa
e3b0: 75 6c 74 20 63 6f 6c 75 6d 6e 0a 20 20 76 61 6c  ult column.  val
e3c0: 75 65 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45  ues CURRENT_TIME
e3d0: 2c 20 43 55 52 52 45 4e 54 5f 44 41 54 45 20 61  , CURRENT_DATE a
e3e0: 6e 64 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53  nd CURRENT_TIMES
e3f0: 54 41 4d 50 20 61 72 65 20 73 74 69 6c 6c 20 61  TAMP are still a
e400: 76 61 69 6c 61 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d  vailable..}..COM
e410: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
e420: 49 54 45 5f 4f 4d 49 54 5f 44 45 43 4c 54 59 50  ITE_OMIT_DECLTYP
e430: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
e440: 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65  on causes SQLite
e450: 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74   to omit support
e460: 20 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c 69   for the.  [sqli
e470: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
e480: 79 70 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69  ype()] and [sqli
e490: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
e4a0: 79 70 65 31 36 28 29 5d 0a 20 20 69 6e 74 65 72  ype16()].  inter
e4b0: 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  faces..}..COMPIL
e4c0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
e4d0: 5f 4f 4d 49 54 5f 44 45 50 52 45 43 41 54 45 44  _OMIT_DEPRECATED
e4e0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
e4f0: 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  n causes SQLite 
e500: 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20  to omit support 
e510: 66 6f 72 20 69 6e 74 65 72 66 61 63 65 73 0a 20  for interfaces. 
e520: 20 6d 61 72 6b 65 64 20 61 73 20 64 65 70 72 65   marked as depre
e530: 63 61 74 65 64 2e 20 20 54 68 69 73 20 69 6e 63  cated.  This inc
e540: 6c 75 64 65 73 20 0a 20 20 5b 73 71 6c 69 74 65  ludes .  [sqlite
e550: 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e  3_aggregate_coun
e560: 74 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33  t()],.  [sqlite3
e570: 5f 65 78 70 69 72 65 64 28 29 5d 2c 0a 20 20 5b  _expired()],.  [
e580: 73 71 6c 69 74 65 33 5f 74 72 61 6e 73 66 65 72  sqlite3_transfer
e590: 5f 62 69 6e 64 69 6e 67 73 28 29 5d 2c 0a 20 20  _bindings()],.  
e5a0: 5b 73 71 6c 69 74 65 33 5f 67 6c 6f 62 61 6c 5f  [sqlite3_global_
e5b0: 72 65 63 6f 76 65 72 28 29 5d 2c 0a 20 20 5b 73  recover()],.  [s
e5c0: 71 6c 69 74 65 33 5f 74 68 72 65 61 64 5f 63 6c  qlite3_thread_cl
e5d0: 65 61 6e 75 70 28 29 5d 20 61 6e 64 0a 20 20 5b  eanup()] and.  [
e5e0: 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 61  sqlite3_memory_a
e5f0: 6c 61 72 6d 28 29 5d 20 69 6e 74 65 72 66 61 63  larm()] interfac
e600: 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  es..}..COMPILE_O
e610: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
e620: 49 54 5f 44 49 53 4b 49 4f 7d 20 7b 0a 20 20 54  IT_DISKIO} {.  T
e630: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
e640: 20 61 6c 6c 20 73 75 70 70 6f 72 74 20 66 6f 72   all support for
e650: 20 77 72 69 74 69 6e 67 20 74 6f 20 74 68 65 20   writing to the 
e660: 64 69 73 6b 20 61 6e 64 20 66 6f 72 63 65 73 0a  disk and forces.
e670: 20 20 64 61 74 61 62 61 73 65 73 20 74 6f 20 65    databases to e
e680: 78 69 73 74 20 69 6e 20 6d 65 6d 6f 72 79 20 6f  xist in memory o
e690: 6e 6c 79 2e 20 20 54 68 69 73 20 6f 70 74 69 6f  nly.  This optio
e6a0: 6e 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 0a  n has not been .
e6b0: 20 20 6d 61 69 6e 74 61 69 6e 65 64 20 61 6e 64    maintained and
e6c0: 20 70 72 6f 62 61 62 6c 79 20 64 6f 65 73 20 6e   probably does n
e6d0: 6f 74 20 77 6f 72 6b 20 77 69 74 68 20 6e 65 77  ot work with new
e6e0: 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  er versions of S
e6f0: 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  QLite..}..COMPIL
e700: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
e710: 5f 4f 4d 49 54 5f 45 58 50 4c 41 49 4e 7d 20 7b  _OMIT_EXPLAIN} {
e720: 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73  .  Defining this
e730: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74   option causes t
e740: 68 65 20 5b 45 58 50 4c 41 49 4e 5d 20 63 6f 6d  he [EXPLAIN] com
e750: 6d 61 6e 64 20 74 6f 20 62 65 20 6f 6d 69 74 74  mand to be omitt
e760: 65 64 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69  ed from the.  li
e770: 62 72 61 72 79 2e 20 41 74 74 65 6d 70 74 69 6e  brary. Attemptin
e780: 67 20 74 6f 20 65 78 65 63 75 74 65 20 61 6e 20  g to execute an 
e790: 5b 45 58 50 4c 41 49 4e 5d 20 73 74 61 74 65 6d  [EXPLAIN] statem
e7a0: 65 6e 74 20 77 69 6c 6c 20 63 61 75 73 65 20 61  ent will cause a
e7b0: 20 70 61 72 73 65 0a 20 20 65 72 72 6f 72 2e 0a   parse.  error..
e7c0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
e7d0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46  N {SQLITE_OMIT_F
e7e0: 4c 41 47 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20  LAG_PRAGMAS} {. 
e7f0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
e800: 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 61  ts support for a
e810: 20 73 75 62 73 65 74 20 6f 66 20 5b 50 52 41 47   subset of [PRAG
e820: 4d 41 5d 20 63 6f 6d 6d 61 6e 64 73 20 74 68 61  MA] commands tha
e830: 74 0a 20 20 71 75 65 72 79 20 61 6e 64 20 73 65  t.  query and se
e840: 74 20 62 6f 6f 6c 65 61 6e 20 70 72 6f 70 65 72  t boolean proper
e850: 74 69 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ties..}..COMPILE
e860: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
e870: 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f  OMIT_FLOATING_PO
e880: 49 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  INT} {.  This op
e890: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
e8a0: 6f 6d 69 74 20 66 6c 6f 61 74 69 6e 67 2d 70 6f  omit floating-po
e8b0: 69 6e 74 20 6e 75 6d 62 65 72 20 73 75 70 70 6f  int number suppo
e8c0: 72 74 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  rt from the SQLi
e8d0: 74 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 57 68  te.  library. Wh
e8e0: 65 6e 20 73 70 65 63 69 66 69 65 64 2c 20 73 70  en specified, sp
e8f0: 65 63 69 66 79 69 6e 67 20 61 20 66 6c 6f 61 74  ecifying a float
e900: 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72  ing point number
e910: 20 61 73 20 61 20 6c 69 74 65 72 61 6c 20 0a 20   as a literal . 
e920: 20 28 69 2e 65 2e 20 22 31 2e 30 31 22 29 20 72   (i.e. "1.01") r
e930: 65 73 75 6c 74 73 20 69 6e 20 61 20 70 61 72 73  esults in a pars
e940: 65 20 65 72 72 6f 72 2e 0a 0a 20 20 3c 70 3e 49  e error...  <p>I
e950: 6e 20 74 68 65 20 66 75 74 75 72 65 2c 20 74 68  n the future, th
e960: 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20 61 6c  is option may al
e970: 73 6f 20 64 69 73 61 62 6c 65 20 6f 74 68 65 72  so disable other
e980: 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
e990: 0a 20 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  .  functionality
e9a0: 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 74 68  , for example th
e9b0: 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  e [sqlite3_resul
e9c0: 74 5f 64 6f 75 62 6c 65 28 29 5d 2c 20 0a 20 20  t_double()], .  
e9d0: 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f  [sqlite3_bind_do
e9e0: 75 62 6c 65 28 29 5d 2c 20 5b 73 71 6c 69 74 65  uble()], [sqlite
e9f0: 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 29  3_value_double()
ea00: 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33  ] and.  [sqlite3
ea10: 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 29  _column_double()
ea20: 5d 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 2e  ] API functions.
ea30: 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49  .  </p>.}..COMPI
ea40: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
ea50: 45 5f 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f 4b  E_OMIT_FOREIGN_K
ea60: 45 59 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  EY} {.  If this 
ea70: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
ea80: 64 2c 20 74 68 65 6e 20 5b 66 6f 72 65 69 67 6e  d, then [foreign
ea90: 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 5d   key constraint]
eaa0: 20 73 79 6e 74 61 78 20 69 73 0a 20 20 6e 6f 74   syntax is.  not
eab0: 20 72 65 63 6f 67 6e 69 7a 65 64 2e 0a 7d 0a 0a   recognized..}..
eac0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
ead0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 47 45 54 5f  SQLITE_OMIT_GET_
eae0: 54 41 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20  TABLE} {.  This 
eaf0: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75  option causes su
eb00: 70 70 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69 74  pport for [sqlit
eb10: 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20  e3_get_table()] 
eb20: 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 66  and.  [sqlite3_f
eb30: 72 65 65 5f 74 61 62 6c 65 28 29 5d 20 74 6f 20  ree_table()] to 
eb40: 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43  be omitted..}..C
eb50: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
eb60: 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 43 52 42  QLITE_OMIT_INCRB
eb70: 4c 4f 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  LOB} {.  This op
eb80: 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70  tion causes supp
eb90: 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69 74 65 33  ort for [sqlite3
eba0: 5f 62 6c 6f 62 20 7c 20 69 6e 63 72 65 6d 65 6e  _blob | incremen
ebb0: 74 61 6c 20 42 4c 4f 42 20 49 2f 4f 5d 0a 20 20  tal BLOB I/O].  
ebc0: 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d  to be omitted..}
ebd0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
ebe0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e   {SQLITE_OMIT_IN
ebf0: 54 45 47 52 49 54 59 5f 43 48 45 43 4b 7d 20 7b  TEGRITY_CHECK} {
ec00: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
ec10: 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72  mits support for
ec20: 20 74 68 65 20 5b 69 6e 74 65 67 72 69 74 79 5f   the [integrity_
ec30: 63 68 65 63 6b 20 70 72 61 67 6d 61 5d 2e 0a 7d  check pragma]..}
ec40: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
ec50: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 49   {SQLITE_OMIT_LI
ec60: 4b 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d  KE_OPTIMIZATION}
ec70: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
ec80: 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 61 62   disables the ab
ec90: 69 6c 69 74 79 20 6f 66 20 53 51 4c 69 74 65 20  ility of SQLite 
eca0: 74 6f 20 75 73 65 20 69 6e 64 69 63 65 73 20 74  to use indices t
ecb0: 6f 20 68 65 6c 70 0a 20 20 72 65 73 6f 6c 76 65  o help.  resolve
ecc0: 20 5b 4c 49 4b 45 5d 20 61 6e 64 20 5b 47 4c 4f   [LIKE] and [GLO
ecd0: 42 5d 20 6f 70 65 72 61 74 6f 72 73 20 69 6e 20  B] operators in 
ece0: 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 2e 0a  a WHERE clause..
ecf0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
ed00: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  N {SQLITE_OMIT_L
ed10: 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e 7d 20 7b  OAD_EXTENSION} {
ed20: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
ed30: 6d 69 74 73 20 74 68 65 20 65 6e 74 69 72 65 20  mits the entire 
ed40: 65 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e  extension loadin
ed50: 67 20 6d 65 63 68 61 6e 69 73 6d 20 66 72 6f 6d  g mechanism from
ed60: 0a 20 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75  .  SQLite, inclu
ed70: 64 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 65 6e  ding [sqlite3_en
ed80: 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73  able_load_extens
ed90: 69 6f 6e 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71  ion()] and.  [sq
eda0: 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e  lite3_load_exten
edb0: 73 69 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63  sion()] interfac
edc0: 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  es..}..COMPILE_O
edd0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
ede0: 49 54 5f 4c 4f 43 41 4c 54 49 4d 45 7d 20 7b 0a  IT_LOCALTIME} {.
edf0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
ee00: 69 74 73 20 74 68 65 20 22 6c 6f 63 61 6c 74 69  its the "localti
ee10: 6d 65 22 20 6d 6f 64 69 66 69 65 72 20 66 72 6f  me" modifier fro
ee20: 6d 20 74 68 65 20 64 61 74 65 20 61 6e 64 20 74  m the date and t
ee30: 69 6d 65 0a 20 20 66 75 6e 63 74 69 6f 6e 73 2e  ime.  functions.
ee40: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
ee50: 20 73 6f 6d 65 74 69 6d 65 73 20 75 73 65 66 75   sometimes usefu
ee60: 6c 20 77 68 65 6e 20 74 72 79 69 6e 67 20 74 6f  l when trying to
ee70: 20 63 6f 6d 70 69 6c 65 0a 20 20 74 68 65 20 64   compile.  the d
ee80: 61 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e  ate and time fun
ee90: 63 74 69 6f 6e 73 20 6f 6e 20 61 20 70 6c 61 74  ctions on a plat
eea0: 66 6f 72 6d 20 74 68 61 74 20 64 6f 65 73 20 6e  form that does n
eeb0: 6f 74 20 73 75 70 70 6f 72 74 20 74 68 65 0a 20  ot support the. 
eec0: 20 63 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 63 61   concept of loca
eed0: 6c 20 74 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  l time..}..COMPI
eee0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
eef0: 45 5f 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44 45  E_OMIT_LOOKASIDE
ef00: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
ef10: 6e 20 6f 6d 69 74 73 20 74 68 65 20 5b 6c 6f 6f  n omits the [loo
ef20: 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20 61 6c  kaside memory al
ef30: 6c 6f 63 61 74 6f 72 5d 2e 0a 7d 0a 0a 43 4f 4d  locator]..}..COM
ef40: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
ef50: 49 54 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44  ITE_OMIT_MEMORYD
ef60: 42 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  B} {.  When this
ef70: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
ef80: 20 6c 69 62 72 61 72 79 20 64 6f 65 73 20 6e 6f   library does no
ef90: 74 20 72 65 73 70 65 63 74 20 74 68 65 20 73 70  t respect the sp
efa0: 65 63 69 61 6c 20 64 61 74 61 62 61 73 65 0a 20  ecial database. 
efb0: 20 6e 61 6d 65 20 22 3a 6d 65 6d 6f 72 79 3a 22   name ":memory:"
efc0: 20 28 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64 20   (normally used 
efd0: 74 6f 20 63 72 65 61 74 65 20 61 6e 20 5b 69 6e  to create an [in
efe0: 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65  -memory database
eff0: 5d 29 2e 20 49 66 20 0a 20 20 22 3a 6d 65 6d 6f  ]). If .  ":memo
f000: 72 79 3a 22 20 69 73 20 70 61 73 73 65 64 20 74  ry:" is passed t
f010: 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28  o [sqlite3_open(
f020: 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65  )], [sqlite3_ope
f030: 6e 31 36 28 29 5d 2c 20 6f 72 0a 20 20 5b 73 71  n16()], or.  [sq
f040: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d  lite3_open_v2()]
f050: 2c 20 61 20 66 69 6c 65 20 77 69 74 68 20 74 68  , a file with th
f060: 69 73 20 6e 61 6d 65 20 77 69 6c 6c 20 62 65 20  is name will be 
f070: 0a 20 20 6f 70 65 6e 65 64 20 6f 72 20 63 72 65  .  opened or cre
f080: 61 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ated..}..COMPILE
f090: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
f0a0: 4f 4d 49 54 5f 4f 52 5f 4f 50 54 49 4d 49 5a 41  OMIT_OR_OPTIMIZA
f0b0: 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TION} {.  This o
f0c0: 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74  ption disables t
f0d0: 68 65 20 61 62 69 6c 69 74 79 20 6f 66 20 53 51  he ability of SQ
f0e0: 4c 69 74 65 20 74 6f 20 75 73 65 20 61 6e 20 69  Lite to use an i
f0f0: 6e 64 65 78 20 74 6f 67 65 74 68 65 72 0a 20 20  ndex together.  
f100: 77 69 74 68 20 74 65 72 6d 73 20 6f 66 20 61 20  with terms of a 
f110: 57 48 45 52 45 20 63 6c 61 75 73 65 20 63 6f 6e  WHERE clause con
f120: 6e 65 63 74 65 64 20 62 79 20 74 68 65 20 4f 52  nected by the OR
f130: 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f   operator..}..CO
f140: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
f150: 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47 45 52 5f  LITE_OMIT_PAGER_
f160: 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66  PRAGMAS} {.  Def
f170: 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f  ining this optio
f180: 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20  n omits pragmas 
f190: 72 65 6c 61 74 65 64 20 74 6f 20 74 68 65 20 70  related to the p
f1a0: 61 67 65 72 20 73 75 62 73 79 73 74 65 6d 20 66  ager subsystem f
f1b0: 72 6f 6d 20 0a 20 20 74 68 65 20 62 75 69 6c 64  rom .  the build
f1c0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
f1d0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
f1e0: 5f 50 52 41 47 4d 41 7d 20 7b 0a 20 20 54 68 69  _PRAGMA} {.  Thi
f1f0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
f200: 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 5b 50 52   to omit the [PR
f210: 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 0a 20 20  AGMA] command.  
f220: 66 72 6f 6d 20 74 68 65 20 6c 69 62 72 61 72 79  from the library
f230: 2e 20 4e 6f 74 65 20 74 68 61 74 20 69 74 20 69  . Note that it i
f240: 73 20 75 73 65 66 75 6c 20 74 6f 20 64 65 66 69  s useful to defi
f250: 6e 65 20 74 68 65 20 6d 61 63 72 6f 73 20 74 68  ne the macros th
f260: 61 74 20 6f 6d 69 74 0a 20 20 73 70 65 63 69 66  at omit.  specif
f270: 69 63 20 70 72 61 67 6d 61 73 20 69 6e 20 61 64  ic pragmas in ad
f280: 64 69 74 69 6f 6e 20 74 6f 20 74 68 69 73 2c 20  dition to this, 
f290: 61 73 20 74 68 65 79 20 6d 61 79 20 61 6c 73 6f  as they may also
f2a0: 20 72 65 6d 6f 76 65 20 73 75 70 70 6f 72 74 69   remove supporti
f2b0: 6e 67 20 63 6f 64 65 0a 20 20 69 6e 20 6f 74 68  ng code.  in oth
f2c0: 65 72 20 73 75 62 2d 73 79 73 74 65 6d 73 2e 20  er sub-systems. 
f2d0: 54 68 69 73 20 6d 61 63 72 6f 20 72 65 6d 6f 76  This macro remov
f2e0: 65 73 20 74 68 65 20 5b 50 52 41 47 4d 41 5d 20  es the [PRAGMA] 
f2f0: 63 6f 6d 6d 61 6e 64 20 6f 6e 6c 79 2e 0a 7d 0a  command only..}.
f300: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
f310: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 4f  {SQLITE_OMIT_PRO
f320: 47 52 45 53 53 5f 43 41 4c 4c 42 41 43 4b 7d 20  GRESS_CALLBACK} 
f330: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
f340: 6d 61 79 20 62 65 20 64 65 66 69 6e 65 64 20 74  may be defined t
f350: 6f 20 6f 6d 69 74 20 74 68 65 20 63 61 70 61 62  o omit the capab
f360: 69 6c 69 74 79 20 74 6f 20 69 73 73 75 65 20 22  ility to issue "
f370: 70 72 6f 67 72 65 73 73 22 20 0a 20 20 63 61 6c  progress" .  cal
f380: 6c 62 61 63 6b 73 20 64 75 72 69 6e 67 20 6c 6f  lbacks during lo
f390: 6e 67 2d 72 75 6e 6e 69 6e 67 20 53 51 4c 20 73  ng-running SQL s
f3a0: 74 61 74 65 6d 65 6e 74 73 2e 20 54 68 65 20 0a  tatements. The .
f3b0: 20 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f 67 72    [sqlite3_progr
f3c0: 65 73 73 5f 68 61 6e 64 6c 65 72 28 29 5d 0a 20  ess_handler()]. 
f3d0: 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 69 73   API function is
f3e0: 20 6e 6f 74 20 70 72 65 73 65 6e 74 20 69 6e 20   not present in 
f3f0: 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a  the library..}..
f400: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
f410: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 51 55 49 43  SQLITE_OMIT_QUIC
f420: 4b 42 41 4c 41 4e 43 45 7d 20 7b 0a 20 20 54 68  KBALANCE} {.  Th
f430: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
f440: 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 2c 20  an alternative, 
f450: 66 61 73 74 65 72 20 42 2d 54 72 65 65 20 62 61  faster B-Tree ba
f460: 6c 61 6e 63 69 6e 67 20 72 6f 75 74 69 6e 65 2e  lancing routine.
f470: 0a 20 20 55 73 69 6e 67 20 74 68 69 73 20 6f 70  .  Using this op
f480: 74 69 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74  tion makes SQLit
f490: 65 20 73 6c 69 67 68 74 6c 79 20 73 6d 61 6c 6c  e slightly small
f4a0: 65 72 20 61 74 20 74 68 65 20 65 78 70 65 6e 73  er at the expens
f4b0: 65 20 6f 66 0a 20 20 6d 61 6b 69 6e 67 20 69 74  e of.  making it
f4c0: 20 72 75 6e 20 73 6c 69 67 68 74 6c 79 20 73 6c   run slightly sl
f4d0: 6f 77 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ower..}..COMPILE
f4e0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
f4f0: 4f 4d 49 54 5f 52 45 49 4e 44 45 58 7d 20 7b 0a  OMIT_REINDEX} {.
f500: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
f510: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
f520: 68 65 20 5b 52 45 49 4e 44 45 58 5d 0a 20 20 63  he [REINDEX].  c
f530: 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e  ommand is not in
f540: 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6c 69  cluded in the li
f550: 62 72 61 72 79 2e 0a 20 20 45 78 65 63 75 74 69  brary..  Executi
f560: 6e 67 20 61 20 5b 52 45 49 4e 44 45 58 5d 20 73  ng a [REINDEX] s
f570: 74 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20  tatement causes 
f580: 0a 20 20 61 20 70 61 72 73 65 20 65 72 72 6f 72  .  a parse error
f590: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
f5a0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
f5b0: 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d 41 53 7d  _SCHEMA_PRAGMAS}
f5c0: 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
f5d0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
f5e0: 70 72 61 67 6d 61 73 20 66 6f 72 20 71 75 65 72  pragmas for quer
f5f0: 79 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 73  ying the databas
f600: 65 20 73 63 68 65 6d 61 20 66 72 6f 6d 20 0a 20  e schema from . 
f610: 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43   the build..}..C
f620: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
f630: 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d  QLITE_OMIT_SCHEM
f640: 41 5f 56 45 52 53 49 4f 4e 5f 50 52 41 47 4d 41  A_VERSION_PRAGMA
f650: 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20  S} {.  Defining 
f660: 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  this option omit
f670: 73 20 70 72 61 67 6d 61 73 20 66 6f 72 20 71 75  s pragmas for qu
f680: 65 72 79 69 6e 67 20 61 6e 64 20 6d 6f 64 69 66  erying and modif
f690: 79 69 6e 67 20 74 68 65 20 0a 20 20 64 61 74 61  ying the .  data
f6a0: 62 61 73 65 20 73 63 68 65 6d 61 20 76 65 72 73  base schema vers
f6b0: 69 6f 6e 20 61 6e 64 20 75 73 65 72 20 76 65 72  ion and user ver
f6c0: 73 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 62 75  sion from the bu
f6d0: 69 6c 64 2e 20 53 70 65 63 69 66 69 63 61 6c 6c  ild. Specificall
f6e0: 79 2c 20 74 68 65 20 0a 20 20 5b 73 63 68 65 6d  y, the .  [schem
f6f0: 61 5f 76 65 72 73 69 6f 6e 5d 20 61 6e 64 20 5b  a_version] and [
f700: 75 73 65 72 5f 76 65 72 73 69 6f 6e 5d 20 50 52  user_version] PR
f710: 41 47 4d 41 73 20 61 72 65 20 6f 6d 69 74 74 65  AGMAs are omitte
f720: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
f730: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
f740: 54 5f 53 48 41 52 45 44 5f 43 41 43 48 45 7d 20  T_SHARED_CACHE} 
f750: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
f760: 62 75 69 6c 64 73 20 53 51 4c 69 74 65 20 77 69  builds SQLite wi
f770: 74 68 6f 75 74 20 73 75 70 70 6f 72 74 20 66 6f  thout support fo
f780: 72 20 73 68 61 72 65 64 2d 63 61 63 68 65 20 6d  r shared-cache m
f790: 6f 64 65 2e 0a 20 20 54 68 65 20 5b 73 71 6c 69  ode..  The [sqli
f7a0: 74 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65  te3_enable_share
f7b0: 64 5f 63 61 63 68 65 28 29 5d 20 69 73 20 6f 6d  d_cache()] is om
f7c0: 69 74 74 65 64 20 61 6c 6f 6e 67 20 77 69 74 68  itted along with
f7d0: 20 61 20 66 61 69 72 0a 20 20 61 6d 6f 75 6e 74   a fair.  amount
f7e0: 20 6f 66 20 6c 6f 67 69 63 20 77 69 74 68 69 6e   of logic within
f7f0: 20 74 68 65 20 42 2d 54 72 65 65 20 73 75 62 73   the B-Tree subs
f800: 79 73 74 65 6d 20 61 73 73 6f 63 69 61 74 65 64  ystem associated
f810: 20 77 69 74 68 20 73 68 61 72 65 64 0a 20 20 63   with shared.  c
f820: 61 63 68 65 20 6d 61 6e 61 67 65 6d 65 6e 74 2e  ache management.
f830: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
f840: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
f850: 53 55 42 51 55 45 52 59 7d 20 7b 0a 20 20 49 66  SUBQUERY} {.  If
f860: 20 64 65 66 69 6e 65 64 2c 20 73 75 70 70 6f 72   defined, suppor
f870: 74 20 66 6f 72 20 73 75 62 2d 73 65 6c 65 63 74  t for sub-select
f880: 73 20 61 6e 64 20 74 68 65 20 49 4e 28 29 20 6f  s and the IN() o
f890: 70 65 72 61 74 6f 72 20 61 72 65 20 6f 6d 69 74  perator are omit
f8a0: 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ted..}..COMPILE_
f8b0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
f8c0: 4d 49 54 5f 54 43 4c 5f 56 41 52 49 41 42 4c 45  MIT_TCL_VARIABLE
f8d0: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6d 61  } {.  If this ma
f8e0: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20  cro is defined, 
f8f0: 74 68 65 6e 20 74 68 65 20 73 70 65 63 69 61 6c  then the special
f900: 20 22 24 3c 76 61 72 69 61 62 6c 65 2d 6e 61 6d   "$<variable-nam
f910: 65 3e 22 20 73 79 6e 74 61 78 0a 20 20 75 73 65  e>" syntax.  use
f920: 64 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c  d to automatical
f930: 6c 79 20 62 69 6e 64 20 53 51 4c 20 76 61 72 69  ly bind SQL vari
f940: 61 62 6c 65 73 20 74 6f 20 54 43 4c 20 76 61 72  ables to TCL var
f950: 69 61 62 6c 65 73 20 69 73 20 6f 6d 69 74 74 65  iables is omitte
f960: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
f970: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
f980: 54 5f 54 45 4d 50 44 42 7d 20 7b 0a 20 20 54 68  T_TEMPDB} {.  Th
f990: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
f9a0: 73 75 70 70 6f 72 74 20 66 6f 72 20 54 45 4d 50  support for TEMP
f9b0: 20 6f 72 20 54 45 4d 50 4f 52 41 52 59 20 74 61   or TEMPORARY ta
f9c0: 62 6c 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  bles..}..COMPILE
f9d0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
f9e0: 4f 4d 49 54 5f 54 52 41 43 45 7d 20 7b 0a 20 20  OMIT_TRACE} {.  
f9f0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
fa00: 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68  s support for th
fa10: 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66 69  e [sqlite3_profi
fa20: 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c  le()] and.  [sql
fa30: 69 74 65 33 5f 74 72 61 63 65 28 29 5d 20 69 6e  ite3_trace()] in
fa40: 74 65 72 66 61 63 65 73 20 61 6e 64 20 74 68 65  terfaces and the
fa50: 69 72 20 61 73 73 6f 63 69 61 74 65 64 20 6c 6f  ir associated lo
fa60: 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  gic..}..COMPILE_
fa70: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
fa80: 4d 49 54 5f 54 52 49 47 47 45 52 7d 20 7b 0a 20  MIT_TRIGGER} {. 
fa90: 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
faa0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70  ption omits supp
fab0: 6f 72 74 20 66 6f 72 20 54 52 49 47 47 45 52 20  ort for TRIGGER 
fac0: 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74 68 65 72  objects. Neither
fad0: 20 74 68 65 20 0a 20 20 5b 43 52 45 41 54 45 20   the .  [CREATE 
fae0: 54 52 49 47 47 45 52 5d 20 6f 72 20 5b 44 52 4f  TRIGGER] or [DRO
faf0: 50 20 54 52 49 47 47 45 52 5d 0a 20 20 63 6f 6d  P TRIGGER].  com
fb00: 6d 61 6e 64 73 20 61 72 65 20 61 76 61 69 6c 61  mands are availa
fb10: 62 6c 65 20 69 6e 20 74 68 69 73 20 63 61 73 65  ble in this case
fb20: 2c 20 61 6e 64 20 61 74 74 65 6d 70 74 69 6e 67  , and attempting
fb30: 20 74 6f 20 65 78 65 63 75 74 65 0a 20 20 65 69   to execute.  ei
fb40: 74 68 65 72 20 77 69 6c 6c 20 72 65 73 75 6c 74  ther will result
fb50: 20 69 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f   in a parse erro
fb60: 72 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  r..  This option
fb70: 20 61 6c 73 6f 20 64 69 73 61 62 6c 65 73 20 65   also disables e
fb80: 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20 5b 66  nforcement of [f
fb90: 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74  oreign key const
fba0: 72 61 69 6e 74 73 5d 2c 0a 20 20 73 69 6e 63 65  raints],.  since
fbb0: 20 74 68 65 20 63 6f 64 65 20 74 68 61 74 20 69   the code that i
fbc0: 6d 70 6c 65 6d 65 6e 74 73 20 74 72 69 67 67 65  mplements trigge
fbd0: 72 73 20 61 6e 64 20 77 68 69 63 68 20 69 73 20  rs and which is 
fbe0: 6f 6d 69 74 74 65 64 20 62 79 20 74 68 69 73 0a  omitted by this.
fbf0: 20 20 6f 70 74 69 6f 6e 20 69 73 20 61 6c 73 6f    option is also
fc00: 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65   used to impleme
fc10: 6e 74 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20  nt [foreign key 
fc20: 61 63 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d  actions]..}..COM
fc30: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
fc40: 49 54 45 5f 4f 4d 49 54 5f 54 52 55 4e 43 41 54  ITE_OMIT_TRUNCAT
fc50: 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20  E_OPTIMIZATION} 
fc60: 7b 0a 20 20 41 20 64 65 66 61 75 6c 74 20 62 75  {.  A default bu
fc70: 69 6c 64 20 6f 66 20 53 51 4c 69 74 65 2c 20 69  ild of SQLite, i
fc80: 66 20 61 20 5b 44 45 4c 45 54 45 5d 20 73 74 61  f a [DELETE] sta
fc90: 74 65 6d 65 6e 74 20 68 61 73 20 6e 6f 20 57 48  tement has no WH
fca0: 45 52 45 20 63 6c 61 75 73 65 0a 20 20 61 6e 64  ERE clause.  and
fcb0: 20 6f 70 65 72 61 74 65 73 20 6f 6e 20 61 20 74   operates on a t
fcc0: 61 62 6c 65 20 77 69 74 68 20 6e 6f 20 74 72 69  able with no tri
fcd0: 67 67 65 72 73 2c 20 61 6e 20 6f 70 74 69 6d 69  ggers, an optimi
fce0: 7a 61 74 69 6f 6e 20 6f 63 63 75 72 73 20 74 68  zation occurs th
fcf0: 61 74 0a 20 20 63 61 75 73 65 73 20 74 68 65 20  at.  causes the 
fd00: 44 45 4c 45 54 45 20 74 6f 20 6f 63 63 75 72 20  DELETE to occur 
fd10: 62 79 20 64 72 6f 70 70 69 6e 67 20 61 6e 64 20  by dropping and 
fd20: 72 65 63 72 65 61 74 69 6e 67 20 74 68 65 20 74  recreating the t
fd30: 61 62 6c 65 2e 20 20 0a 20 20 44 72 6f 70 70 69  able.  .  Droppi
fd40: 6e 67 20 61 6e 64 20 72 65 63 72 65 61 74 69 6e  ng and recreatin
fd50: 67 20 61 20 74 61 62 6c 65 20 69 73 20 75 73 75  g a table is usu
fd60: 61 6c 6c 79 20 6d 75 63 68 20 66 61 73 74 65 72  ally much faster
fd70: 20 74 68 61 6e 20 64 65 6c 65 74 69 6e 67 0a 20   than deleting. 
fd80: 20 74 68 65 20 74 61 62 6c 65 20 63 6f 6e 74 65   the table conte
fd90: 6e 74 20 72 6f 77 20 62 79 20 72 6f 77 2e 20 20  nt row by row.  
fda0: 54 68 69 73 20 69 73 20 74 68 65 20 22 74 72 75  This is the "tru
fdb0: 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69  ncate optimizati
fdc0: 6f 6e 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  on"..}..COMPILE_
fdd0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
fde0: 4d 49 54 5f 55 54 46 31 36 7d 20 7b 0a 20 20 54  MIT_UTF16} {.  T
fdf0: 68 69 73 20 6d 61 63 72 6f 20 69 73 20 75 73 65  his macro is use
fe00: 64 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72  d to omit suppor
fe10: 74 20 66 6f 72 20 55 54 46 31 36 20 74 65 78 74  t for UTF16 text
fe20: 20 65 6e 63 6f 64 69 6e 67 2e 20 57 68 65 6e 20   encoding. When 
fe30: 74 68 69 73 20 69 73 0a 20 20 64 65 66 69 6e 65  this is.  define
fe40: 64 20 61 6c 6c 20 41 50 49 20 66 75 6e 63 74 69  d all API functi
fe50: 6f 6e 73 20 74 68 61 74 20 72 65 74 75 72 6e 20  ons that return 
fe60: 6f 72 20 61 63 63 65 70 74 20 55 54 46 31 36 20  or accept UTF16 
fe70: 65 6e 63 6f 64 65 64 20 74 65 78 74 20 61 72 65  encoded text are
fe80: 0a 20 20 75 6e 61 76 61 69 6c 61 62 6c 65 2e 20  .  unavailable. 
fe90: 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20  These functions 
fea0: 63 61 6e 20 62 65 20 69 64 65 6e 74 69 66 69 65  can be identifie
feb0: 64 20 62 79 20 74 68 65 20 66 61 63 74 20 74 68  d by the fact th
fec0: 61 74 20 74 68 65 79 20 65 6e 64 0a 20 20 77 69  at they end.  wi
fed0: 74 68 20 27 31 36 27 2c 20 66 6f 72 20 65 78 61  th '16', for exa
fee0: 6d 70 6c 65 20 5b 73 71 6c 69 74 65 33 5f 70 72  mple [sqlite3_pr
fef0: 65 70 61 72 65 31 36 28 29 5d 2c 20 5b 73 71 6c  epare16()], [sql
ff00: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
ff10: 31 36 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c  16()] and.  [sql
ff20: 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36  ite3_bind_text16
ff30: 28 29 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ()]..}..COMPILE_
ff40: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
ff50: 4d 49 54 5f 56 41 43 55 55 4d 7d 20 7b 0a 20 20  MIT_VACUUM} {.  
ff60: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
ff70: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
ff80: 20 5b 56 41 43 55 55 4d 5d 0a 20 20 63 6f 6d 6d   [VACUUM].  comm
ff90: 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75  and is not inclu
ffa0: 64 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61  ded in the libra
ffb0: 72 79 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20  ry..  Executing 
ffc0: 61 20 5b 56 41 43 55 55 4d 5d 20 73 74 61 74 65  a [VACUUM] state
ffd0: 6d 65 6e 74 20 63 61 75 73 65 73 20 0a 20 20 61  ment causes .  a
ffe0: 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a   parse error..}.
fff0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
10000 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 45  {SQLITE_OMIT_VIE
10010 57 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20  W} {.  Defining 
10020 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  this option omit
10030 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 56 49  s support for VI
10040 45 57 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74  EW objects. Neit
10050 68 65 72 20 74 68 65 20 0a 20 20 5b 43 52 45 41  her the .  [CREA
10060 54 45 20 56 49 45 57 5d 20 6e 6f 72 20 74 68 65  TE VIEW] nor the
10070 20 5b 44 52 4f 50 20 56 49 45 57 5d 0a 20 20 63   [DROP VIEW].  c
10080 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61 76 61 69  ommands are avai
10090 6c 61 62 6c 65 20 69 6e 20 74 68 69 73 20 63 61  lable in this ca
100a0 73 65 2c 20 61 6e 64 0a 20 20 61 74 74 65 6d 70  se, and.  attemp
100b0 74 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65 20  ting to execute 
100c0 65 69 74 68 65 72 20 77 69 6c 6c 20 72 65 73 75  either will resu
100d0 6c 74 20 69 6e 20 61 20 70 61 72 73 65 20 65 72  lt in a parse er
100e0 72 6f 72 2e 0a 0a 20 20 57 41 52 4e 49 4e 47 3a  ror...  WARNING:
100f0 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69   If this macro i
10100 73 20 64 65 66 69 6e 65 64 2c 20 69 74 20 77 69  s defined, it wi
10110 6c 6c 20 6e 6f 74 20 62 65 20 70 6f 73 73 69 62  ll not be possib
10120 6c 65 20 74 6f 20 6f 70 65 6e 20 61 20 64 61 74  le to open a dat
10130 61 62 61 73 65 0a 20 20 66 6f 72 20 77 68 69 63  abase.  for whic
10140 68 20 74 68 65 20 73 63 68 65 6d 61 20 63 6f 6e  h the schema con
10150 74 61 69 6e 73 20 56 49 45 57 20 6f 62 6a 65 63  tains VIEW objec
10160 74 73 2e 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ts. .}..COMPILE_
10170 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
10180 4d 49 54 5f 56 49 52 54 55 41 4c 54 41 42 4c 45  MIT_VIRTUALTABLE
10190 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
101a0 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20  n omits support 
101b0 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33  for the [sqlite3
101c0 5f 76 74 61 62 20 7c 20 56 69 72 74 75 61 6c 20  _vtab | Virtual 
101d0 54 61 62 6c 65 5d 0a 20 20 6d 65 63 68 61 6e 69  Table].  mechani
101e0 73 6d 20 69 6e 20 53 51 4c 69 74 65 2e 0a 7d 0a  sm in SQLite..}.
101f0 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
10200 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 41 4c  {SQLITE_OMIT_WAL
10210 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
10220 6e 20 6f 6d 69 74 73 20 74 68 65 20 22 5b 77 72  n omits the "[wr
10230 69 74 65 2d 61 68 65 61 64 20 6c 6f 67 5d 22 20  ite-ahead log]" 
10240 28 61 2e 6b 2e 61 2e 20 22 5b 57 41 4c 5d 22 29  (a.k.a. "[WAL]")
10250 20 63 61 70 61 62 69 6c 69 74 79 2e 0a 7d 0a 0a   capability..}..
10260 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
10270 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 53 44 7d  SQLITE_OMIT_WSD}
10280 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
10290 20 62 75 69 6c 64 73 20 61 20 76 65 72 73 69 6f   builds a versio
102a0 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20  n of the SQLite 
102b0 6c 69 62 72 61 72 79 20 74 68 61 74 20 63 6f 6e  library that con
102c0 74 61 69 6e 73 20 6e 6f 0a 20 20 57 72 69 74 61  tains no.  Writa
102d0 62 6c 65 20 53 74 61 74 69 63 20 44 61 74 61 20  ble Static Data 
102e0 28 57 53 44 29 2e 20 20 57 53 44 20 69 73 20 67  (WSD).  WSD is g
102f0 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 73 20  lobal variables 
10300 61 6e 64 2f 6f 72 20 73 74 61 74 69 63 0a 20 20  and/or static.  
10310 76 61 72 69 61 62 6c 65 73 2e 20 20 53 6f 6d 65  variables.  Some
10320 20 70 6c 61 74 66 6f 72 6d 73 20 64 6f 20 6e 6f   platforms do no
10330 74 20 73 75 70 70 6f 72 74 20 57 53 44 2c 20 61  t support WSD, a
10340 6e 64 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  nd this option i
10350 73 20 6e 65 63 65 73 73 61 72 79 0a 20 20 69 6e  s necessary.  in
10360 20 6f 72 64 65 72 20 66 6f 72 20 53 51 4c 69 74   order for SQLit
10370 65 20 74 6f 20 77 6f 72 6b 20 74 68 6f 73 65 20  e to work those 
10380 70 6c 61 74 66 6f 72 6d 73 2e 20 20 0a 0a 20 20  platforms.  ..  
10390 55 6e 6c 69 6b 65 20 6f 74 68 65 72 20 4f 4d 49  Unlike other OMI
103a0 54 20 6f 70 74 69 6f 6e 73 20 77 68 69 63 68 20  T options which 
103b0 6d 61 6b 65 20 74 68 65 20 53 51 4c 69 74 65 20  make the SQLite 
103c0 6c 69 62 72 61 72 79 20 73 6d 61 6c 6c 65 72 2c  library smaller,
103d0 0a 20 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61  .  this option a
103e0 63 74 75 61 6c 6c 79 20 69 6e 63 72 65 61 73 65  ctually increase
103f0 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20 53 51  s the size of SQ
10400 4c 69 74 65 20 61 6e 64 20 6d 61 6b 65 73 20 69  Lite and makes i
10410 74 20 72 75 6e 0a 20 20 61 20 6c 69 74 74 6c 65  t run.  a little
10420 20 73 6c 6f 77 65 72 2e 20 20 4f 6e 6c 79 20 75   slower.  Only u
10430 73 65 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  se this option i
10440 66 20 53 51 4c 69 74 65 20 69 73 20 62 65 69 6e  f SQLite is bein
10450 67 20 62 75 69 6c 74 20 66 6f 72 20 61 6e 0a 20  g built for an. 
10460 20 65 6d 62 65 64 64 65 64 20 74 61 72 67 65 74   embedded target
10470 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73   that does not s
10480 75 70 70 6f 72 74 20 57 53 44 2e 0a 7d 0a 0a 43  upport WSD..}..C
10490 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
104a0 51 4c 49 54 45 5f 4f 4d 49 54 5f 58 46 45 52 5f  QLITE_OMIT_XFER_
104b0 4f 50 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  OPT} {.  This op
104c0 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
104d0 72 74 20 66 6f 72 20 6f 70 74 69 6d 69 7a 61 74  rt for optimizat
104e0 69 6f 6e 73 20 74 68 61 74 20 68 65 6c 70 20 73  ions that help s
104f0 74 61 74 65 6d 65 6e 74 73 0a 20 20 6f 66 20 74  tatements.  of t
10500 68 65 20 66 6f 72 6d 20 22 49 4e 53 45 52 54 20  he form "INSERT 
10510 49 4e 54 4f 20 2e 2e 2e 20 53 45 4c 45 43 54 20  INTO ... SELECT 
10520 2e 2e 2e 22 20 72 75 6e 20 66 61 73 74 65 72 2e  ..." run faster.
10530 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
10540 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 4e 54 45 53  ON {SQLITE_UNTES
10550 54 41 42 4c 45 7d 20 7b 0a 20 20 41 20 73 74 61  TABLE} {.  A sta
10560 6e 64 61 72 64 20 53 51 4c 69 74 65 20 62 75 69  ndard SQLite bui
10570 6c 64 20 69 6e 63 6c 75 64 65 73 20 61 20 73 6d  ld includes a sm
10580 61 6c 6c 20 61 6d 6f 75 6e 74 20 6f 66 20 6c 6f  all amount of lo
10590 67 69 63 20 61 73 73 6f 63 69 61 74 65 64 0a 20  gic associated. 
105a0 20 77 69 74 68 20 5b 73 71 6c 69 74 65 33 5f 74   with [sqlite3_t
105b0 65 73 74 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 74  est_control()] t
105c0 6f 20 65 78 65 72 63 69 73 65 0a 20 20 70 61 72  o exercise.  par
105d0 74 73 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65  ts of the SQLite
105e0 20 63 6f 72 65 20 74 68 61 74 20 61 72 65 20 6f   core that are o
105f0 74 68 65 72 77 69 73 65 20 64 69 66 66 69 63 75  therwise difficu
10600 6c 74 20 74 6f 20 76 61 6c 69 64 61 74 65 2e 0a  lt to validate..
10610 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74    This compile-t
10620 69 6d 65 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  ime option omits
10630 20 74 68 61 74 20 65 78 74 72 61 20 74 65 73 74   that extra test
10640 69 6e 67 20 6c 6f 67 69 63 2e 20 20 54 68 69 73  ing logic.  This
10650 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  .  compile-time 
10660 6f 70 74 69 6f 6e 20 77 61 73 20 63 61 6c 6c 65  option was calle
10670 64 20 22 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42  d "SQLITE_OMIT_B
10680 55 49 4c 54 49 4e 5f 54 45 53 54 22 20 70 72 69  UILTIN_TEST" pri
10690 6f 72 0a 20 20 74 6f 20 53 51 4c 69 74 65 20 76  or.  to SQLite v
106a0 65 72 73 69 6f 6e 20 33 2e 31 36 2e 30 20 28 5b  ersion 3.16.0 ([
106b0 64 61 74 65 6f 66 3a 33 2e 31 36 2e 30 5d 29 2e  dateof:3.16.0]).
106c0 20 20 54 68 65 20 6e 61 6d 65 20 77 61 73 20 63    The name was c
106d0 68 61 6e 67 65 64 0a 20 20 74 6f 20 62 65 74 74  hanged.  to bett
106e0 65 72 20 64 65 73 63 72 69 62 65 20 74 68 65 20  er describe the 
106f0 69 6d 70 6c 69 63 61 74 69 6f 6e 73 20 6f 66 20  implications of 
10700 75 73 69 6e 67 20 69 74 2e 0a 20 20 3c 70 3e 0a  using it..  <p>.
10710 20 20 53 65 74 74 69 6e 67 20 74 68 69 73 20 63    Setting this c
10720 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
10730 6f 6e 20 70 72 65 76 65 6e 74 73 20 53 51 4c 69  on prevents SQLi
10740 74 65 20 66 72 6f 6d 20 62 65 69 6e 67 20 66 75  te from being fu
10750 6c 6c 79 0a 20 20 74 65 73 74 61 62 6c 65 2e 20  lly.  testable. 
10760 20 42 72 61 6e 63 68 20 74 65 73 74 20 63 6f 76   Branch test cov
10770 65 72 61 67 65 20 64 72 6f 70 73 20 66 72 6f 6d  erage drops from
10780 20 31 30 30 25 20 64 6f 77 6e 20 74 6f 20 61 62   100% down to ab
10790 6f 75 74 20 39 35 25 2e 0a 20 20 3c 70 3e 0a 20  out 95%..  <p>. 
107a0 20 53 51 4c 69 74 65 20 64 65 76 65 6c 6f 70 65   SQLite develope
107b0 72 73 20 66 6f 6c 6c 6f 77 20 74 68 65 20 4e 41  rs follow the NA
107c0 53 41 20 70 72 69 6e 63 69 70 6c 65 20 6f 66 0a  SA principle of.
107d0 20 20 22 66 6c 79 20 77 68 61 74 20 79 6f 75 20    "fly what you 
107e0 74 65 73 74 20 61 6e 64 20 74 65 73 74 20 77 68  test and test wh
107f0 61 74 20 79 6f 75 20 66 6c 79 22 2e 20 20 54 68  at you fly".  Th
10800 69 73 20 70 72 69 6e 63 69 70 6c 65 20 69 73 20  is principle is 
10810 76 69 6f 6c 61 74 65 64 0a 20 20 69 66 20 74 68  violated.  if th
10820 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 65 6e 61  is option is ena
10830 62 6c 65 64 20 66 6f 72 20 64 65 6c 69 76 65 72  bled for deliver
10840 79 20 62 75 74 20 64 69 73 61 62 6c 65 64 20 66  y but disabled f
10850 6f 72 20 74 65 73 74 69 6e 67 2e 0a 20 20 42 75  or testing..  Bu
10860 74 20 69 66 20 74 68 69 73 20 6f 70 74 69 6f 6e  t if this option
10870 20 69 73 20 65 6e 61 62 6c 65 64 20 64 75 72 69   is enabled duri
10880 6e 67 20 74 65 73 74 69 6e 67 2c 20 6e 6f 74 20  ng testing, not 
10890 61 6c 6c 20 62 72 61 6e 63 68 65 73 20 61 72 65  all branches are
108a0 20 0a 20 20 72 65 61 63 68 61 62 6c 65 2e 20 20   .  reachable.  
108b0 54 68 65 72 65 66 6f 72 65 2c 20 74 68 65 20 75  Therefore, the u
108c0 73 65 20 6f 66 20 74 68 69 73 20 63 6f 6d 70 69  se of this compi
108d0 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
108e0 73 20 64 69 73 63 6f 75 72 61 67 65 64 2e 0a 7d  s discouraged..}
108f0 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
10900 20 7b 53 51 4c 49 54 45 5f 5a 45 52 4f 5f 4d 41   {SQLITE_ZERO_MA
10910 4c 4c 4f 43 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LLOC} {.  This o
10920 70 74 69 6f 6e 20 6f 6d 69 74 73 20 62 6f 74 68  ption omits both
10930 20 74 68 65 20 5b 64 65 66 61 75 6c 74 20 6d 65   the [default me
10940 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20  mory allocator] 
10950 61 6e 64 20 74 68 65 0a 20 20 5b 64 65 62 75 67  and the.  [debug
10960 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ging memory allo
10970 63 61 74 6f 72 5d 20 66 72 6f 6d 20 74 68 65 20  cator] from the 
10980 62 75 69 6c 64 20 61 6e 64 20 73 75 62 73 74 69  build and substi
10990 74 75 74 65 73 20 61 20 73 74 75 62 0a 20 20 6d  tutes a stub.  m
109a0 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
109b0 74 68 61 74 20 61 6c 77 61 79 73 20 66 61 69 6c  that always fail
109c0 73 2e 20 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  s.  SQLite will 
109d0 6e 6f 74 20 72 75 6e 20 77 69 74 68 20 74 68 69  not run with thi
109e0 73 0a 20 20 73 74 75 62 20 6d 65 6d 6f 72 79 20  s.  stub memory 
109f0 61 6c 6c 6f 63 61 74 6f 72 20 73 69 6e 63 65 20  allocator since 
10a00 69 74 20 77 69 6c 6c 20 62 65 20 75 6e 61 62 6c  it will be unabl
10a10 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 6d 65  e to allocate me
10a20 6d 6f 72 79 2e 20 20 42 75 74 0a 20 20 74 68 69  mory.  But.  thi
10a30 73 20 73 74 75 62 20 63 61 6e 20 62 65 20 72 65  s stub can be re
10a40 70 6c 61 63 65 64 20 61 74 20 73 74 61 72 74 2d  placed at start-
10a50 74 69 6d 65 20 75 73 69 6e 67 0a 20 20 5b 73 71  time using.  [sq
10a60 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53  lite3_config]([S
10a70 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c  QLITE_CONFIG_MAL
10a80 4c 4f 43 5d 2c 2e 2e 2e 29 20 6f 72 0a 20 20 5b  LOC],...) or.  [
10a90 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28  sqlite3_config](
10aa0 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48  [SQLITE_CONFIG_H
10ab0 45 41 50 5d 2c 2e 2e 2e 29 2e 0a 20 20 53 6f 20  EAP],...)..  So 
10ac0 74 68 65 20 6e 65 74 20 65 66 66 65 63 74 20 6f  the net effect o
10ad0 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  f this compile-t
10ae0 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 74 68  ime option is th
10af0 61 74 20 69 74 20 61 6c 6c 6f 77 73 20 53 51 4c  at it allows SQL
10b00 69 74 65 0a 20 20 74 6f 20 62 65 20 63 6f 6d 70  ite.  to be comp
10b10 69 6c 65 64 20 61 6e 64 20 6c 69 6e 6b 65 64 20  iled and linked 
10b20 61 67 61 69 6e 73 74 20 61 20 73 79 73 74 65 6d  against a system
10b30 20 6c 69 62 72 61 72 79 20 74 68 61 74 20 64 6f   library that do
10b40 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 0a 20  es not support. 
10b50 20 6d 61 6c 6c 6f 63 28 29 2c 20 66 72 65 65 28   malloc(), free(
10b60 29 2c 20 61 6e 64 2f 6f 72 20 72 65 61 6c 6c 6f  ), and/or reallo
10b70 63 28 29 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c  c()..}..</tcl>.<
10b80 61 20 6e 61 6d 65 3d 22 64 65 62 75 67 6f 70 74  a name="debugopt
10b90 69 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20  ions"></a>.<h1> 
10ba0 41 6e 61 6c 79 73 69 73 20 61 6e 64 20 44 65 62  Analysis and Deb
10bb0 75 67 67 69 6e 67 20 4f 70 74 69 6f 6e 73 3c 2f  ugging Options</
10bc0 68 31 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d 50 49  h1>.<tcl>..COMPI
10bd0 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
10be0 45 5f 44 45 42 55 47 7d 20 7b 0a 20 20 54 68 65  E_DEBUG} {.  The
10bf0 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65 20 63   SQLite source c
10c00 6f 64 65 20 63 6f 6e 74 61 69 6e 73 20 6c 69 74  ode contains lit
10c10 65 72 61 6c 6c 79 20 74 68 6f 75 73 61 6e 64 73  erally thousands
10c20 20 6f 66 20 61 73 73 65 72 74 28 29 20 73 74 61   of assert() sta
10c30 74 65 6d 65 6e 74 73 0a 20 20 75 73 65 64 20 74  tements.  used t
10c40 6f 20 76 65 72 69 66 79 20 69 6e 74 65 72 6e 61  o verify interna
10c50 6c 20 61 73 73 75 6d 70 74 69 6f 6e 73 20 61 6e  l assumptions an
10c60 64 20 73 75 62 72 6f 75 74 69 6e 65 20 70 72 65  d subroutine pre
10c70 63 6f 6e 64 69 74 69 6f 6e 73 20 61 6e 64 0a 20  conditions and. 
10c80 20 70 6f 73 74 63 6f 6e 64 69 74 69 6f 6e 73 2e   postconditions.
10c90 20 20 54 68 65 73 65 20 61 73 73 65 72 74 28 29    These assert()
10ca0 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20   statements are 
10cb0 6e 6f 72 6d 61 6c 6c 79 20 74 75 72 6e 65 64 20  normally turned 
10cc0 6f 66 66 0a 20 20 28 74 68 65 79 20 67 65 6e 65  off.  (they gene
10cd0 72 61 74 65 20 6e 6f 20 63 6f 64 65 29 20 73 69  rate no code) si
10ce0 6e 63 65 20 74 75 72 6e 69 6e 67 20 74 68 65 6d  nce turning them
10cf0 20 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65   on makes SQLite
10d00 20 72 75 6e 20 61 70 70 72 6f 78 69 6d 61 74 65   run approximate
10d10 6c 79 0a 20 20 74 68 72 65 65 20 74 69 6d 65 73  ly.  three times
10d20 20 73 6c 6f 77 65 72 2e 20 20 42 75 74 20 66 6f   slower.  But fo
10d30 72 20 74 65 73 74 69 6e 67 20 61 6e 64 20 61 6e  r testing and an
10d40 61 6c 79 73 69 73 2c 20 69 74 20 69 73 20 75 73  alysis, it is us
10d50 65 66 75 6c 20 74 6f 20 74 75 72 6e 0a 20 20 74  eful to turn.  t
10d60 68 65 20 61 73 73 65 72 74 28 29 20 73 74 61 74  he assert() stat
10d70 65 6d 65 6e 74 73 20 6f 6e 2e 20 20 54 68 65 20  ements on.  The 
10d80 53 51 4c 49 54 45 5f 44 45 42 55 47 20 63 6f 6d  SQLITE_DEBUG com
10d90 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
10da0 20 64 6f 65 73 20 74 68 69 73 2e 0a 20 20 3c 70   does this..  <p
10db0 3e 53 51 4c 49 54 45 5f 44 45 42 55 47 20 61 6c  >SQLITE_DEBUG al
10dc0 73 6f 20 65 6e 61 62 6c 65 73 20 73 6f 6d 65 20  so enables some 
10dd0 6f 74 68 65 72 20 64 65 62 75 67 67 69 6e 67 20  other debugging 
10de0 66 65 61 74 75 72 65 73 2c 20 73 75 63 68 20 61  features, such a
10df0 73 0a 20 20 73 70 65 63 69 61 6c 20 5b 50 52 41  s.  special [PRA
10e00 47 4d 41 5d 20 73 74 61 74 65 6d 65 6e 74 73 20  GMA] statements 
10e10 74 68 61 74 20 74 75 72 6e 20 6f 6e 20 74 72 61  that turn on tra
10e20 63 69 6e 67 20 61 6e 64 20 6c 69 73 74 69 6e 67  cing and listing
10e30 20 66 65 61 74 75 72 65 73 0a 20 20 75 73 65 64   features.  used
10e40 20 66 6f 72 20 74 72 6f 75 62 6c 65 73 68 6f 6f   for troubleshoo
10e50 74 69 6e 67 20 61 6e 64 20 61 6e 61 6c 79 73 69  ting and analysi
10e60 73 20 6f 66 20 74 68 65 20 5b 56 44 42 45 5d 20  s of the [VDBE] 
10e70 61 6e 64 20 63 6f 64 65 20 67 65 6e 65 72 61 74  and code generat
10e80 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  or..}..COMPILE_O
10e90 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 45  PTION {SQLITE_ME
10ea0 4d 44 45 42 55 47 7d 20 7b 0a 20 20 54 68 65 20  MDEBUG} {.  The 
10eb0 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42 55 47 20  SQLITE_MEMDEBUG 
10ec0 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 61 6e  option causes an
10ed0 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 20 0a 20   instrumented . 
10ee0 20 5b 64 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f   [debugging memo
10ef0 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 0a 20 20  ry allocator].  
10f00 74 6f 20 62 65 20 75 73 65 64 20 61 73 20 74 68  to be used as th
10f10 65 20 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79  e default memory
10f20 20 61 6c 6c 6f 63 61 74 6f 72 20 77 69 74 68 69   allocator withi
10f30 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 65 0a 20  n SQLite.  The. 
10f40 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 20 6d 65   instrumented me
10f50 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 63  mory allocator c
10f60 68 65 63 6b 73 20 66 6f 72 20 6d 69 73 75 73 65  hecks for misuse
10f70 20 6f 66 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20   of dynamically 
10f80 61 6c 6c 6f 63 61 74 65 64 0a 20 20 6d 65 6d 6f  allocated.  memo
10f90 72 79 2e 20 20 45 78 61 6d 70 6c 65 73 20 6f 66  ry.  Examples of
10fa0 20 6d 69 73 75 73 65 20 69 6e 63 6c 75 64 65 20   misuse include 
10fb0 75 73 69 6e 67 20 6d 65 6d 6f 72 79 20 61 66 74  using memory aft
10fc0 65 72 20 69 74 20 69 73 20 66 72 65 65 64 2c 0a  er it is freed,.
10fd0 20 20 77 72 69 74 69 6e 67 20 6f 66 66 20 74 68    writing off th
10fe0 65 20 65 6e 64 73 20 6f 66 20 61 20 6d 65 6d 6f  e ends of a memo
10ff0 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 66  ry allocation, f
11000 72 65 65 69 6e 67 20 6d 65 6d 6f 72 79 20 6e 6f  reeing memory no
11010 74 20 70 72 65 76 69 6f 75 73 6c 79 0a 20 20 6f  t previously.  o
11020 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65  btained from the
11030 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
11040 72 2c 20 6f 72 20 66 61 69 6c 69 6e 67 20 74 6f  r, or failing to
11050 20 69 6e 69 74 69 61 6c 69 7a 65 20 6e 65 77 6c   initialize newl
11060 79 0a 20 20 61 6c 6c 6f 63 61 74 65 64 20 6d 65  y.  allocated me
11070 6d 6f 72 79 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a  mory..}..</tcl>.
11080 3c 61 20 6e 61 6d 65 3d 22 77 69 6e 33 32 6f 70  <a name="win32op
11090 74 69 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e  tions"></a>.<h1>
110a0 20 57 69 6e 64 6f 77 73 2d 53 70 65 63 69 66 69   Windows-Specifi
110b0 63 20 4f 70 74 69 6f 6e 73 3c 2f 68 31 3e 0a 3c  c Options</h1>.<
110c0 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  tcl>..COMPILE_OP
110d0 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e  TION {SQLITE_WIN
110e0 33 32 5f 48 45 41 50 5f 43 52 45 41 54 45 7d 20  32_HEAP_CREATE} 
110f0 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
11100 66 6f 72 63 65 73 20 74 68 65 20 57 69 6e 33 32  forces the Win32
11110 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61   native memory a
11120 6c 6c 6f 63 61 74 6f 72 2c 20 77 68 65 6e 20 65  llocator, when e
11130 6e 61 62 6c 65 64 2c 20 74 6f 0a 20 20 63 72 65  nabled, to.  cre
11140 61 74 65 20 61 20 70 72 69 76 61 74 65 20 68 65  ate a private he
11150 61 70 20 74 6f 20 68 6f 6c 64 20 61 6c 6c 20 6d  ap to hold all m
11160 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
11170 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
11180 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e  TION {SQLITE_WIN
11190 33 32 5f 4d 41 4c 4c 4f 43 5f 56 41 4c 49 44 41  32_MALLOC_VALIDA
111a0 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  TE} {.  This opt
111b0 69 6f 6e 20 66 6f 72 63 65 73 20 74 68 65 20 57  ion forces the W
111c0 69 6e 33 32 20 6e 61 74 69 76 65 20 6d 65 6d 6f  in32 native memo
111d0 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 77 68  ry allocator, wh
111e0 65 6e 20 65 6e 61 62 6c 65 64 2c 20 74 6f 0a 20  en enabled, to. 
111f0 20 6d 61 6b 65 20 73 74 72 61 74 65 67 69 63 20   make strategic 
11200 63 61 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 48  calls into the H
11210 65 61 70 56 61 6c 69 64 61 74 65 28 29 20 66 75  eapValidate() fu
11220 6e 63 74 69 6f 6e 20 69 66 20 61 73 73 65 72 74  nction if assert
11230 28 29 20 69 73 20 61 6c 73 6f 0a 20 20 65 6e 61  () is also.  ena
11240 62 6c 65 64 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a  bled..}..</tcl>.
11250 3c 61 20 6e 61 6d 65 3d 22 6c 69 6e 6b 61 67 65  <a name="linkage
11260 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 43 6f 6d 70 69  "></a>.<h1>Compi
11270 6c 65 72 20 4c 69 6e 6b 61 67 65 20 43 6f 6e 74  ler Linkage Cont
11280 72 6f 6c 3c 2f 68 31 3e 0a 0a 3c 70 3e 54 68 65  rol</h1>..<p>The
11290 20 66 6f 6c 6c 6f 77 69 6e 67 20 6d 61 63 72 6f   following macro
112a0 73 20 73 70 65 63 69 66 79 0a 69 6e 74 65 72 66  s specify.interf
112b0 61 63 65 20 6c 69 6e 6b 61 67 65 20 66 6f 72 20  ace linkage for 
112c0 63 65 72 74 61 69 6e 20 6b 69 6e 64 73 20 6f 66  certain kinds of
112d0 20 53 51 4c 69 74 65 20 62 75 69 6c 64 73 2e 20   SQLite builds. 
112e0 20 54 68 65 20 4d 61 6b 65 66 69 6c 65 73 20 77   The Makefiles w
112f0 69 6c 6c 20 6e 6f 72 6d 61 6c 6c 79 0a 68 61 6e  ill normally.han
11300 64 6c 65 20 73 65 74 74 69 6e 67 20 74 68 65 73  dle setting thes
11310 65 20 6d 61 63 72 6f 73 20 61 75 74 6f 6d 61 74  e macros automat
11320 69 63 61 6c 6c 79 2e 20 20 41 70 70 6c 69 63 61  ically.  Applica
11330 74 69 6f 6e 20 64 65 76 65 6c 6f 70 65 72 73 20  tion developers 
11340 73 68 6f 75 6c 64 0a 6e 6f 74 20 6e 65 65 64 20  should.not need 
11350 74 6f 20 77 6f 72 72 79 20 77 69 74 68 20 74 68  to worry with th
11360 65 73 65 20 6d 61 63 72 6f 73 2e 20 20 54 68 65  ese macros.  The
11370 20 66 6f 6c 6c 6f 77 69 6e 67 20 64 6f 63 75 6d   following docum
11380 65 6e 74 61 74 69 6f 6e 20 61 62 6f 75 74 20 74  entation about t
11390 68 65 73 65 20 0a 6d 61 63 72 6f 73 20 69 73 20  hese .macros is 
113a0 69 6e 63 6c 75 64 65 64 20 63 6f 6d 70 6c 65 74  included complet
113b0 65 6e 65 73 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  eness.</p>..<tcl
113c0 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  >.COMPILE_OPTION
113d0 20 7b 53 51 4c 49 54 45 5f 41 50 49 7d 20 7b 0a   {SQLITE_API} {.
113e0 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 64 65    This macro ide
113f0 6e 74 69 66 69 65 73 20 61 20 65 78 74 65 72 6e  ntifies a extern
11400 61 6c 6c 79 20 76 69 73 69 62 6c 65 20 69 6e 74  ally visible int
11410 65 72 66 61 63 65 20 66 6f 72 20 53 51 4c 69 74  erface for SQLit
11420 65 2e 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20  e..  This macro 
11430 69 73 20 73 6f 6d 65 74 69 6d 65 73 20 73 65 74  is sometimes set
11440 20 74 6f 20 22 65 78 74 65 72 6e 22 2e 20 20 42   to "extern".  B
11450 75 74 20 74 68 65 20 64 65 66 69 6e 69 74 69 6f  ut the definitio
11460 6e 20 69 73 0a 20 20 63 6f 6d 70 69 6c 65 72 2d  n is.  compiler-
11470 73 70 65 63 69 66 69 63 2e 0a 7d 0a 0a 43 4f 4d  specific..}..COM
11480 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
11490 49 54 45 5f 41 50 49 43 41 4c 4c 7d 20 7b 0a 20  ITE_APICALL} {. 
114a0 20 54 68 69 73 20 6d 61 63 72 6f 20 69 64 65 6e   This macro iden
114b0 74 69 66 69 65 73 20 74 68 65 20 63 61 6c 6c 69  tifies the calli
114c0 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 75 73  ng convention us
114d0 65 64 20 62 79 20 70 75 62 6c 69 63 20 69 6e 74  ed by public int
114e0 65 72 66 61 63 65 0a 20 20 72 6f 75 74 69 6e 65  erface.  routine
114f0 73 20 69 6e 20 53 51 4c 69 74 65 2e 20 20 54 68  s in SQLite.  Th
11500 69 73 20 6d 61 63 72 6f 20 69 73 20 6e 6f 72 6d  is macro is norm
11510 61 6c 6c 79 20 64 65 66 69 6e 65 64 20 74 6f 20  ally defined to 
11520 62 65 20 6e 6f 74 68 69 6e 67 2c 0a 20 20 74 68  be nothing,.  th
11530 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f 77 73 20  ough on Windows 
11540 62 75 69 6c 64 73 20 69 74 20 63 61 6e 20 73 6f  builds it can so
11550 6d 65 74 69 6d 65 73 20 62 65 20 73 65 74 20 74  metimes be set t
11560 6f 20 22 5f 5f 63 64 65 63 6c 22 20 6f 72 20 22  o "__cdecl" or "
11570 5f 5f 73 74 64 63 61 6c 6c 22 2e 0a 20 20 54 68  __stdcall"..  Th
11580 65 20 22 5f 5f 63 64 65 63 6c 22 20 73 65 74 74  e "__cdecl" sett
11590 69 6e 67 20 69 73 20 74 68 65 20 64 65 66 61 75  ing is the defau
115a0 6c 74 2c 20 62 75 74 20 22 5f 5f 73 74 64 63 61  lt, but "__stdca
115b0 6c 6c 22 20 69 73 20 75 73 65 64 20 77 68 65 6e  ll" is used when
115c0 20 53 51 4c 69 74 65 0a 20 20 69 73 20 69 6e 74   SQLite.  is int
115d0 65 6e 64 65 64 20 74 6f 20 62 65 20 63 6f 6d 70  ended to be comp
115e0 69 6c 65 64 20 61 73 20 61 20 57 69 6e 64 6f 77  iled as a Window
115f0 73 20 73 79 73 74 65 6d 20 6c 69 62 72 61 72 79  s system library
11600 2e 0a 20 20 3c 70 3e 0a 20 20 41 20 73 69 6e 67  ..  <p>.  A sing
11610 6c 65 20 66 75 6e 63 74 69 6f 6e 20 64 65 63 6c  le function decl
11620 61 72 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 63  aration should c
11630 6f 6e 74 61 69 6e 20 6e 6f 20 6d 6f 72 65 20 74  ontain no more t
11640 68 61 6e 20 6f 6e 65 20 6f 66 0a 20 20 74 68 65  han one of.  the
11650 20 66 6f 6c 6c 6f 77 69 6e 67 3a 20 20 5b 53 51   following:  [SQ
11660 4c 49 54 45 5f 41 50 49 43 41 4c 4c 5d 2c 20 5b  LITE_APICALL], [
11670 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b 5d  SQLITE_CALLBACK]
11680 2c 20 5b 53 51 4c 49 54 45 5f 43 44 45 43 4c 5d  , [SQLITE_CDECL]
11690 2c 0a 20 20 6f 72 20 5b 53 51 4c 49 54 45 5f 53  ,.  or [SQLITE_S
116a0 59 53 43 41 4c 4c 5d 2e 0a 7d 0a 0a 43 4f 4d 50  YSCALL]..}..COMP
116b0 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
116c0 54 45 5f 43 41 4c 4c 42 41 43 4b 7d 20 7b 0a 20  TE_CALLBACK} {. 
116d0 20 54 68 69 73 20 6d 61 63 72 6f 20 73 70 65 63   This macro spec
116e0 69 66 69 65 73 20 74 68 65 20 63 61 6c 6c 69 6e  ifies the callin
116f0 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 75 73 65  g convention use
11700 64 20 62 79 20 63 61 6c 6c 62 61 63 6b 20 70 6f  d by callback po
11710 69 6e 74 65 72 73 0a 20 20 69 6e 20 53 51 4c 69  inters.  in SQLi
11720 74 65 2e 20 20 54 68 69 73 20 6d 61 63 72 6f 20  te.  This macro 
11730 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 64 65 66 69  is normally defi
11740 6e 65 64 20 74 6f 20 62 65 20 6e 6f 74 68 69 6e  ned to be nothin
11750 67 2c 20 74 68 6f 75 67 68 20 6f 6e 20 57 69 6e  g, though on Win
11760 64 6f 77 73 0a 20 20 62 75 69 6c 64 73 20 69 74  dows.  builds it
11770 20 63 61 6e 20 73 6f 6d 65 74 69 6d 65 73 20 62   can sometimes b
11780 65 20 73 65 74 20 74 6f 20 22 5f 5f 63 64 65 63  e set to "__cdec
11790 6c 22 20 6f 72 20 22 5f 5f 73 74 64 63 61 6c 6c  l" or "__stdcall
117a0 22 2e 20 20 54 68 65 0a 20 20 22 5f 5f 63 64 65  ".  The.  "__cde
117b0 63 6c 22 20 73 65 74 74 69 6e 67 20 69 73 20 74  cl" setting is t
117c0 68 65 20 64 65 66 61 75 6c 74 2c 20 62 75 74 20  he default, but 
117d0 22 5f 5f 73 74 64 63 61 6c 6c 22 20 69 73 20 75  "__stdcall" is u
117e0 73 65 64 20 77 68 65 6e 20 53 51 4c 69 74 65 0a  sed when SQLite.
117f0 20 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f    is intended to
11800 20 62 65 20 63 6f 6d 70 69 6c 65 64 20 61 73 20   be compiled as 
11810 61 20 57 69 6e 64 6f 77 73 20 73 79 73 74 65 6d  a Windows system
11820 20 6c 69 62 72 61 72 79 2e 0a 20 20 3c 70 3e 0a   library..  <p>.
11830 20 20 41 20 73 69 6e 67 6c 65 20 66 75 6e 63 74    A single funct
11840 69 6f 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20  ion declaration 
11850 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 6e  should contain n
11860 6f 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20  o more than one 
11870 6f 66 0a 20 20 74 68 65 20 66 6f 6c 6c 6f 77 69  of.  the followi
11880 6e 67 3a 20 20 5b 53 51 4c 49 54 45 5f 41 50 49  ng:  [SQLITE_API
11890 43 41 4c 4c 5d 2c 20 5b 53 51 4c 49 54 45 5f 43  CALL], [SQLITE_C
118a0 41 4c 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49 54  ALLBACK], [SQLIT
118b0 45 5f 43 44 45 43 4c 5d 2c 0a 20 20 6f 72 20 5b  E_CDECL],.  or [
118c0 53 51 4c 49 54 45 5f 53 59 53 43 41 4c 4c 5d 2e  SQLITE_SYSCALL].
118d0 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
118e0 4f 4e 20 7b 53 51 4c 49 54 45 5f 43 44 45 43 4c  ON {SQLITE_CDECL
118f0 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
11900 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 63   specifies the c
11910 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f  alling conventio
11920 6e 20 75 73 65 64 20 62 79 20 76 61 72 61 72 67  n used by vararg
11930 73 20 69 6e 74 65 72 66 61 63 65 0a 20 20 72 6f  s interface.  ro
11940 75 74 69 6e 65 73 20 69 6e 20 53 51 4c 69 74 65  utines in SQLite
11950 2e 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
11960 20 6e 6f 72 6d 61 6c 6c 79 20 64 65 66 69 6e 65   normally define
11970 64 20 74 6f 20 62 65 20 6e 6f 74 68 69 6e 67 2c  d to be nothing,
11980 0a 20 20 74 68 6f 75 67 68 20 6f 6e 20 57 69 6e  .  though on Win
11990 64 6f 77 73 20 62 75 69 6c 64 73 20 69 74 20 63  dows builds it c
119a0 61 6e 20 73 6f 6d 65 74 69 6d 65 73 20 62 65 20  an sometimes be 
119b0 73 65 74 20 74 6f 20 22 5f 5f 63 64 65 63 6c 22  set to "__cdecl"
119c0 2e 20 20 54 68 69 73 0a 20 20 6d 61 63 72 6f 20  .  This.  macro 
119d0 69 73 20 75 73 65 64 20 6f 6e 20 76 61 72 61 72  is used on varar
119e0 67 73 20 72 6f 75 74 69 6e 65 73 20 61 6e 64 20  gs routines and 
119f0 73 6f 20 63 61 6e 6e 6f 74 20 62 65 20 73 65 74  so cannot be set
11a00 20 74 6f 20 22 5f 5f 73 74 64 63 61 6c 6c 22 0a   to "__stdcall".
11a10 20 20 73 69 6e 63 65 20 74 68 65 20 5f 5f 73 74    since the __st
11a20 64 63 61 6c 6c 20 63 61 6c 6c 69 6e 67 20 63 6f  dcall calling co
11a30 6e 76 65 6e 74 69 6f 6e 20 64 6f 65 73 20 6e 6f  nvention does no
11a40 74 20 73 75 70 70 6f 72 74 20 76 61 72 61 72 67  t support vararg
11a50 73 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 20 20 3c  s functions..  <
11a60 70 3e 0a 20 20 41 20 73 69 6e 67 6c 65 20 66 75  p>.  A single fu
11a70 6e 63 74 69 6f 6e 20 64 65 63 6c 61 72 61 74 69  nction declarati
11a80 6f 6e 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69  on should contai
11a90 6e 20 6e 6f 20 6d 6f 72 65 20 74 68 61 6e 20 6f  n no more than o
11aa0 6e 65 20 6f 66 0a 20 20 74 68 65 20 66 6f 6c 6c  ne of.  the foll
11ab0 6f 77 69 6e 67 3a 20 20 5b 53 51 4c 49 54 45 5f  owing:  [SQLITE_
11ac0 41 50 49 43 41 4c 4c 5d 2c 20 5b 53 51 4c 49 54  APICALL], [SQLIT
11ad0 45 5f 43 41 4c 4c 42 41 43 4b 5d 2c 20 5b 53 51  E_CALLBACK], [SQ
11ae0 4c 49 54 45 5f 43 44 45 43 4c 5d 2c 0a 20 20 6f  LITE_CDECL],.  o
11af0 72 20 5b 53 51 4c 49 54 45 5f 53 59 53 43 41 4c  r [SQLITE_SYSCAL
11b00 4c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  L]..}..COMPILE_O
11b10 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 59  PTION {SQLITE_SY
11b20 53 43 41 4c 4c 7d 20 7b 0a 20 20 54 68 69 73 20  SCALL} {.  This 
11b30 6d 61 63 72 6f 20 69 64 65 6e 74 69 66 69 65 73  macro identifies
11b40 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 63 6f 6e   the calling con
11b50 76 65 6e 74 69 6f 6e 20 75 73 65 64 20 62 79 20  vention used by 
11b60 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
11b70 0a 20 20 69 6e 74 65 72 66 61 63 65 73 20 66 6f  .  interfaces fo
11b80 72 20 74 61 72 67 65 74 20 74 68 65 20 70 6c 61  r target the pla
11b90 74 66 6f 72 6d 20 66 6f 72 20 61 6e 20 53 51 4c  tform for an SQL
11ba0 69 74 65 20 62 75 69 6c 64 2e 0a 20 20 54 68 69  ite build..  Thi
11bb0 73 20 6d 61 63 72 6f 20 69 73 20 6e 6f 72 6d 61  s macro is norma
11bc0 6c 6c 79 20 64 65 66 69 6e 65 64 20 74 6f 20 62  lly defined to b
11bd0 65 20 6e 6f 74 68 69 6e 67 2c 20 74 68 6f 75 67  e nothing, thoug
11be0 68 20 6f 6e 20 57 69 6e 64 6f 77 73 0a 20 20 62  h on Windows.  b
11bf0 75 69 6c 64 73 20 69 74 20 63 61 6e 20 73 6f 6d  uilds it can som
11c00 65 74 69 6d 65 73 20 62 65 20 73 65 74 20 74 6f  etimes be set to
11c10 20 22 5f 5f 73 74 64 63 61 6c 6c 22 2e 0a 20 20   "__stdcall"..  
11c20 3c 70 3e 0a 20 20 41 20 73 69 6e 67 6c 65 20 66  <p>.  A single f
11c30 75 6e 63 74 69 6f 6e 20 64 65 63 6c 61 72 61 74  unction declarat
11c40 69 6f 6e 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61  ion should conta
11c50 69 6e 20 6e 6f 20 6d 6f 72 65 20 74 68 61 6e 20  in no more than 
11c60 6f 6e 65 20 6f 66 0a 20 20 74 68 65 20 66 6f 6c  one of.  the fol
11c70 6c 6f 77 69 6e 67 3a 20 20 5b 53 51 4c 49 54 45  lowing:  [SQLITE
11c80 5f 41 50 49 43 41 4c 4c 5d 2c 20 5b 53 51 4c 49  _APICALL], [SQLI
11c90 54 45 5f 43 41 4c 4c 42 41 43 4b 5d 2c 20 5b 53  TE_CALLBACK], [S
11ca0 51 4c 49 54 45 5f 43 44 45 43 4c 5d 2c 0a 20 20  QLITE_CDECL],.  
11cb0 6f 72 20 5b 53 51 4c 49 54 45 5f 53 59 53 43 41  or [SQLITE_SYSCA
11cc0 4c 4c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  LL]..}..COMPILE_
11cd0 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54  OPTION {SQLITE_T
11ce0 43 4c 41 50 49 7d 20 7b 0a 20 20 54 68 69 73 20  CLAPI} {.  This 
11cf0 6d 61 63 72 6f 20 73 70 65 63 69 66 69 65 73 20  macro specifies 
11d00 74 68 65 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76  the calling conv
11d10 65 6e 74 69 6f 6e 20 75 73 65 64 20 62 79 20 74  ention used by t
11d20 68 65 20 0a 20 20 5b 68 74 74 70 3a 2f 2f 77 77  he .  [http://ww
11d30 77 2e 74 63 6c 2e 74 6b 20 7c 20 54 43 4c 5d 20  w.tcl.tk | TCL] 
11d40 6c 69 62 72 61 72 79 20 69 6e 74 65 72 66 61 63  library interfac
11d50 65 20 72 6f 75 74 69 6e 65 73 2e 0a 20 20 54 68  e routines..  Th
11d60 69 73 20 6d 61 63 72 6f 20 69 73 20 6e 6f 74 20  is macro is not 
11d70 75 73 65 64 20 62 79 20 74 68 65 20 53 51 4c 69  used by the SQLi
11d80 74 65 20 63 6f 72 65 2c 20 62 75 74 20 6f 6e 6c  te core, but onl
11d90 79 20 62 79 20 74 68 65 20 5b 54 43 4c 20 49 6e  y by the [TCL In
11da0 74 65 72 66 61 63 65 5d 0a 20 20 61 6e 64 20 5b  terface].  and [
11db0 54 43 4c 20 74 65 73 74 20 73 75 69 74 65 5d 2e  TCL test suite].
11dc0 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
11dd0 20 6e 6f 72 6d 61 6c 6c 79 20 64 65 66 69 6e 65   normally define
11de0 64 20 74 6f 20 62 65 20 6e 6f 74 68 69 6e 67 2c  d to be nothing,
11df0 0a 20 20 74 68 6f 75 67 68 20 6f 6e 20 57 69 6e  .  though on Win
11e00 64 6f 77 73 20 62 75 69 6c 64 73 20 69 74 20 63  dows builds it c
11e10 61 6e 20 73 6f 6d 65 74 69 6d 65 73 20 62 65 20  an sometimes be 
11e20 73 65 74 20 74 6f 20 22 5f 5f 63 64 65 63 6c 22  set to "__cdecl"
11e30 2e 20 20 54 68 69 73 0a 20 20 6d 61 63 72 6f 20  .  This.  macro 
11e40 69 73 20 75 73 65 64 20 6f 6e 20 54 43 4c 20 6c  is used on TCL l
11e50 69 62 72 61 72 79 20 69 6e 74 65 72 66 61 63 65  ibrary interface
11e60 20 72 6f 75 74 69 6e 65 73 20 77 68 69 63 68 20   routines which 
11e70 61 72 65 20 61 6c 77 61 79 73 20 63 6f 6d 70 69  are always compi
11e80 6c 65 64 0a 20 20 61 73 20 5f 5f 63 64 65 63 6c  led.  as __cdecl
11e90 2c 20 65 76 65 6e 20 6f 6e 20 70 6c 61 74 66 6f  , even on platfo
11ea0 72 6d 73 20 74 68 61 74 20 70 72 65 66 65 72 20  rms that prefer 
11eb0 74 6f 20 75 73 65 20 5f 5f 73 74 64 63 61 6c 6c  to use __stdcall
11ec0 2c 20 73 6f 20 74 68 69 73 0a 20 20 6d 61 63 72  , so this.  macr
11ed0 6f 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20  o should not be 
11ee0 73 65 74 20 74 6f 20 5f 5f 73 74 64 63 61 6c 6c  set to __stdcall
11ef0 20 75 6e 6c 65 73 73 20 74 68 65 20 70 6c 61 74   unless the plat
11f00 66 6f 72 6d 20 61 73 20 61 20 63 75 73 74 6f 6d  form as a custom
11f10 0a 20 20 54 43 4c 20 6c 69 62 72 61 72 79 20 62  .  TCL library b
11f20 75 69 6c 64 20 74 68 61 74 20 73 75 70 70 6f 72  uild that suppor
11f30 74 73 20 5f 5f 73 74 64 63 61 6c 6c 2e 0a 20 20  ts __stdcall..  
11f40 3c 70 3e 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  <p>.  This macro
11f50 20 6d 61 79 20 6e 6f 74 20 62 65 20 75 73 65 64   may not be used
11f60 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20   in combination 
11f70 77 69 74 68 20 61 6e 79 20 6f 66 20 5b 53 51 4c  with any of [SQL
11f80 49 54 45 5f 41 50 49 43 41 4c 4c 5d 2c 0a 20 20  ITE_APICALL],.  
11f90 5b 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b  [SQLITE_CALLBACK
11fa0 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 44 45 43 4c  ], [SQLITE_CDECL
11fb0 5d 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f 53 59  ], or [SQLITE_SY
11fc0 53 43 41 4c 4c 5d 2e 0a 7d 0a 0a 0a 3c 2f 74 63  SCALL]..}...</tc
11fd0 6c 3e 0a                                         l>.