Documentation Source Text

Hex Artifact Content
Login

Artifact c32a33c7eadea9d28f4d39f9d5f7dfb68a2ddb6d:


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 4d 45 4d 53 54 41 54 55 53 3d 3c 69  ULT_MEMSTATUS=<i
3570: 3e 26 6c 74 3b 31 20 6f 72 20 30 26 67 74 3b 3c  >&lt;1 or 0&gt;<
3580: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
3590: 63 72 6f 20 69 73 20 75 73 65 64 20 74 6f 20 64  cro is used to d
35a0: 65 74 65 72 6d 69 6e 65 20 77 68 65 74 68 65 72  etermine whether
35b0: 20 6f 72 20 6e 6f 74 20 74 68 65 20 66 65 61 74   or not the feat
35c0: 75 72 65 73 20 65 6e 61 62 6c 65 64 20 61 6e 64  ures enabled and
35d0: 0a 20 20 64 69 73 61 62 6c 65 64 20 75 73 69 6e  .  disabled usin
35e0: 67 20 74 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  g the SQLITE_CON
35f0: 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 20 61 72  FIG_MEMSTATUS ar
3600: 67 75 6d 65 6e 74 20 74 6f 20 5b 73 71 6c 69 74  gument to [sqlit
3610: 65 33 5f 63 6f 6e 66 69 67 28 29 5d 0a 20 20 61  e3_config()].  a
3620: 72 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79 20  re available by 
3630: 64 65 66 61 75 6c 74 2e 20 54 68 65 20 64 65 66  default. The def
3640: 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 31 20  ault value is 1 
3650: 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  ([SQLITE_CONFIG_
3660: 4d 45 4d 53 54 41 54 55 53 5d 0a 20 20 72 65 6c  MEMSTATUS].  rel
3670: 61 74 65 64 20 66 65 61 74 75 72 65 73 20 65 6e  ated features en
3680: 61 62 6c 65 64 29 2e 0a 7d 0a 0a 43 4f 4d 50 49  abled)..}..COMPI
3690: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
36a0: 45 5f 44 45 46 41 55 4c 54 5f 50 41 47 45 5f 53  E_DEFAULT_PAGE_S
36b0: 49 5a 45 3d 3c 69 3e 26 6c 74 3b 62 79 74 65 73  IZE=<i>&lt;bytes
36c0: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
36d0: 69 73 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64  is macro is used
36e0: 20 74 6f 20 73 65 74 20 74 68 65 20 64 65 66 61   to set the defa
36f0: 75 6c 74 20 70 61 67 65 2d 73 69 7a 65 20 75 73  ult page-size us
3700: 65 64 20 77 68 65 6e 20 61 0a 20 20 64 61 74 61  ed when a.  data
3710: 62 61 73 65 20 69 73 20 63 72 65 61 74 65 64 2e  base is created.
3720: 20 54 68 65 20 76 61 6c 75 65 20 61 73 73 69 67   The value assig
3730: 6e 65 64 20 6d 75 73 74 20 62 65 20 61 20 70 6f  ned must be a po
3740: 77 65 72 20 6f 66 20 32 2e 20 54 68 65 0a 20 20  wer of 2. The.  
3750: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73  default value is
3760: 20 34 30 39 36 2e 20 54 68 65 20 63 6f 6d 70 69   4096. The compi
3770: 6c 65 2d 74 69 6d 65 20 64 65 66 61 75 6c 74 20  le-time default 
3780: 6d 61 79 20 62 65 20 6f 76 65 72 72 69 64 64 65  may be overridde
3790: 6e 20 61 74 20 0a 20 20 72 75 6e 74 69 6d 65 20  n at .  runtime 
37a0: 62 79 20 74 68 65 20 5b 50 52 41 47 4d 41 20 70  by the [PRAGMA p
37b0: 61 67 65 5f 73 69 7a 65 5d 20 63 6f 6d 6d 61 6e  age_size] comman
37c0: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
37d0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
37e0: 41 55 4c 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53  AULT_SYNCHRONOUS
37f0: 3d 3c 69 3e 26 6c 74 3b 30 2d 33 26 67 74 3b 3c  =<i>&lt;0-3&gt;<
3800: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
3810: 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 74  cro determines t
3820: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
3830: 20 6f 66 20 74 68 65 0a 20 20 5b 50 52 41 47 4d   of the.  [PRAGM
3840: 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 20 73  A synchronous] s
3850: 65 74 74 69 6e 67 2e 20 20 49 66 20 6e 6f 74 20  etting.  If not 
3860: 6f 76 65 72 72 69 64 64 65 6e 20 61 74 20 63 6f  overridden at co
3870: 6d 70 69 6c 65 2d 74 69 6d 65 2c 0a 20 20 74 68  mpile-time,.  th
3880: 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e  e default settin
3890: 67 20 69 73 20 32 20 28 46 55 4c 4c 29 2e 0a 7d  g is 2 (FULL)..}
38a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
38b0: 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   {SQLITE_DEFAULT
38c0: 5f 57 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53  _WAL_SYNCHRONOUS
38d0: 3d 3c 69 3e 26 6c 74 3b 30 2d 33 26 67 74 3b 3c  =<i>&lt;0-3&gt;<
38e0: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
38f0: 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 74  cro determines t
3900: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
3910: 20 6f 66 20 74 68 65 0a 20 20 5b 50 52 41 47 4d   of the.  [PRAGM
3920: 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 20 73  A synchronous] s
3930: 65 74 74 69 6e 67 20 66 6f 72 20 64 61 74 61 62  etting for datab
3940: 61 73 65 20 66 69 6c 65 73 20 74 68 61 74 20 6f  ase files that o
3950: 70 65 6e 20 69 6e 0a 20 20 5b 57 41 4c 20 6d 6f  pen in.  [WAL mo
3960: 64 65 5d 2e 20 20 49 66 20 6e 6f 74 20 6f 76 65  de].  If not ove
3970: 72 72 69 64 64 65 6e 20 61 74 20 63 6f 6d 70 69  rridden at compi
3980: 6c 65 2d 74 69 6d 65 2c 20 74 68 69 73 20 76 61  le-time, this va
3990: 6c 75 65 20 69 73 20 74 68 65 0a 20 20 73 61 6d  lue is the.  sam
39a0: 65 20 61 73 20 5b 53 51 4c 49 54 45 5f 44 45 46  e as [SQLITE_DEF
39b0: 41 55 4c 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53  AULT_SYNCHRONOUS
39c0: 5d 2e 0a 20 20 3c 70 3e 0a 20 20 49 66 20 53 51  ]..  <p>.  If SQ
39d0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 41 4c  LITE_DEFAULT_WAL
39e0: 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 20 64 69 66  _SYNCHRONOUS dif
39f0: 66 65 72 73 20 66 72 6f 6d 20 53 51 4c 49 54 45  fers from SQLITE
3a00: 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43 48 52 4f  _DEFAULT_SYNCHRO
3a10: 4e 4f 55 53 2c 0a 20 20 61 6e 64 20 69 66 20 74  NOUS,.  and if t
3a20: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 68  he application h
3a30: 61 73 20 6e 6f 74 20 6d 6f 64 69 66 69 65 64 20  as not modified 
3a40: 74 68 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20  the synchronous 
3a50: 73 65 74 74 69 6e 67 20 66 6f 72 0a 20 20 74 68  setting for.  th
3a60: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
3a70: 75 73 69 6e 67 20 74 68 65 20 5b 50 52 41 47 4d  using the [PRAGM
3a80: 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 20 73  A synchronous] s
3a90: 74 61 74 65 6d 65 6e 74 2c 20 74 68 65 6e 0a 20  tatement, then. 
3aa0: 20 74 68 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73   the synchronous
3ab0: 20 73 65 74 74 69 6e 67 20 69 73 20 63 68 61 6e   setting is chan
3ac0: 67 65 64 20 74 6f 20 76 61 6c 75 65 20 64 65 66  ged to value def
3ad0: 69 6e 65 64 20 62 79 0a 20 20 53 51 4c 49 54 45  ined by.  SQLITE
3ae0: 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f 53 59 4e  _DEFAULT_WAL_SYN
3af0: 43 48 52 4f 4e 4f 55 53 20 77 68 65 6e 20 74 68  CHRONOUS when th
3b00: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
3b10: 63 74 69 6f 6e 20 73 77 69 74 63 68 65 73 0a 20  ction switches. 
3b20: 20 69 6e 74 6f 20 57 41 4c 20 6d 6f 64 65 20 66   into WAL mode f
3b30: 6f 72 20 74 68 65 20 66 69 72 73 74 20 74 69 6d  or the first tim
3b40: 65 2e 0a 20 20 49 66 20 74 68 65 20 53 51 4c 49  e..  If the SQLI
3b50: 54 45 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f 53  TE_DEFAULT_WAL_S
3b60: 59 4e 43 48 52 4f 4e 4f 55 53 20 76 61 6c 75 65  YNCHRONOUS value
3b70: 20 69 73 20 6e 6f 74 20 6f 76 65 72 72 69 64 64   is not overridd
3b80: 65 6e 20 61 74 0a 20 20 63 6f 6d 70 69 6c 65 2d  en at.  compile-
3b90: 74 69 6d 65 2c 20 74 68 65 6e 20 69 74 20 77 69  time, then it wi
3ba0: 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 74 68 65  ll always be the
3bb0: 20 73 61 6d 65 20 61 73 0a 20 20 5b 53 51 4c 49   same as.  [SQLI
3bc0: 54 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43 48  TE_DEFAULT_SYNCH
3bd0: 52 4f 4e 4f 55 53 5d 20 61 6e 64 20 73 6f 20 6e  RONOUS] and so n
3be0: 6f 20 61 75 74 6f 6d 61 74 69 63 20 73 79 6e 63  o automatic sync
3bf0: 68 72 6f 6e 6f 75 73 20 73 65 74 74 69 6e 67 0a  hronous setting.
3c00: 20 20 63 68 61 6e 67 65 73 20 77 69 6c 6c 20 65    changes will e
3c10: 76 65 72 20 6f 63 63 75 72 2e 0a 7d 0a 0a 43 4f  ver occur..}..CO
3c20: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
3c30: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 41 4c  LITE_DEFAULT_WAL
3c40: 5f 41 55 54 4f 43 48 45 43 4b 50 4f 49 4e 54 3d  _AUTOCHECKPOINT=
3c50: 3c 69 3e 26 6c 74 3b 70 61 67 65 73 26 67 74 3b  <i>&lt;pages&gt;
3c60: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d  </i>} {.  This m
3c70: 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 64 65  acro sets the de
3c80: 66 61 75 6c 74 20 70 61 67 65 20 63 6f 75 6e 74  fault page count
3c90: 20 66 6f 72 20 74 68 65 20 5b 57 41 4c 5d 0a 20   for the [WAL]. 
3ca0: 20 5b 63 68 65 63 6b 70 6f 69 6e 74 69 6e 67 20   [checkpointing 
3cb0: 7c 20 61 75 74 6f 6d 61 74 69 63 20 63 68 65 63  | automatic chec
3cc0: 6b 70 6f 69 6e 74 69 6e 67 5d 20 66 65 61 74 75  kpointing] featu
3cd0: 72 65 2e 20 20 49 66 20 75 6e 73 70 65 63 69 66  re.  If unspecif
3ce0: 69 65 64 2c 0a 20 20 74 68 65 20 64 65 66 61 75  ied,.  the defau
3cf0: 6c 74 20 70 61 67 65 20 63 6f 75 6e 74 20 69 73  lt page count is
3d00: 20 31 30 30 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c   1000..}..COMPIL
3d10: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
3d20: 5f 44 45 46 41 55 4c 54 5f 57 4f 52 4b 45 52 5f  _DEFAULT_WORKER_
3d30: 54 48 52 45 41 44 53 3d 3c 69 3e 4e 3c 2f 69 3e  THREADS=<i>N</i>
3d40: 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
3d50: 20 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c   sets the defaul
3d60: 74 20 76 61 6c 75 65 20 66 6f 72 0a 20 20 74 68  t value for.  th
3d70: 65 20 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  e [SQLITE_LIMIT_
3d80: 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 5d 20  WORKER_THREADS] 
3d90: 70 61 72 61 6d 65 74 65 72 2e 20 20 54 68 65 20  parameter.  The 
3da0: 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f  [SQLITE_LIMIT_WO
3db0: 52 4b 45 52 5f 54 48 52 45 41 44 53 5d 0a 20 20  RKER_THREADS].  
3dc0: 70 61 72 61 6d 65 74 65 72 20 73 65 74 73 20 74  parameter sets t
3dd0: 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65  he maximum numbe
3de0: 72 20 6f 66 20 61 75 78 69 6c 69 61 72 79 20 74  r of auxiliary t
3df0: 68 72 65 61 64 73 20 74 68 61 74 20 61 20 73 69  hreads that a si
3e00: 6e 67 6c 65 0a 20 20 5b 70 72 65 70 61 72 65 64  ngle.  [prepared
3e10: 20 73 74 61 74 65 6d 65 6e 74 5d 20 77 69 6c 6c   statement] will
3e20: 20 6c 61 75 6e 63 68 20 74 6f 20 61 73 73 69 73   launch to assis
3e30: 74 20 69 74 20 77 69 74 68 20 61 20 71 75 65 72  t it with a quer
3e40: 79 2e 20 20 49 66 20 6e 6f 74 20 73 70 65 63 69  y.  If not speci
3e50: 66 69 65 64 2c 0a 20 20 74 68 65 20 64 65 66 61  fied,.  the defa
3e60: 75 6c 74 20 6d 61 78 69 6d 75 6d 20 69 73 20 30  ult maximum is 0
3e70: 2e 0a 20 20 54 68 65 20 76 61 6c 75 65 20 73 65  ..  The value se
3e80: 74 20 68 65 72 65 20 63 61 6e 6e 6f 74 20 62 65  t here cannot be
3e90: 20 6d 6f 72 65 20 74 68 61 6e 20 5b 53 51 4c 49   more than [SQLI
3ea0: 54 45 5f 4d 41 58 5f 57 4f 52 4b 45 52 5f 54 48  TE_MAX_WORKER_TH
3eb0: 52 45 41 44 53 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  READS]..}..COMPI
3ec0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
3ed0: 45 5f 45 58 54 52 41 5f 44 55 52 41 42 4c 45 7d  E_EXTRA_DURABLE}
3ee0: 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f   {.  The SQLITE_
3ef0: 45 58 54 52 41 5f 44 55 52 41 42 4c 45 20 63 6f  EXTRA_DURABLE co
3f00: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
3f10: 6e 20 74 68 61 74 20 75 73 65 64 20 74 6f 20 63  n that used to c
3f20: 61 75 73 65 20 74 68 65 20 64 65 66 61 75 6c 74  ause the default
3f30: 0a 20 20 5b 50 52 41 47 4d 41 20 73 79 6e 63 68  .  [PRAGMA synch
3f40: 72 6f 6e 6f 75 73 5d 20 73 65 74 74 69 6e 67 20  ronous] setting 
3f50: 74 6f 20 62 65 20 45 58 54 52 41 2c 20 72 61 74  to be EXTRA, rat
3f60: 68 65 72 20 74 68 61 6e 20 46 55 4c 4c 2e 20 20  her than FULL.  
3f70: 54 68 69 73 20 6f 70 74 69 6f 6e 0a 20 20 69 73  This option.  is
3f80: 20 6e 6f 20 6c 6f 6e 67 65 72 20 73 75 70 70 6f   no longer suppo
3f90: 72 74 65 64 2e 20 20 55 73 65 0a 20 20 5b 53 51  rted.  Use.  [SQ
3fa0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e  LITE_DEFAULT_SYN
3fb0: 43 48 52 4f 4e 4f 55 53 7c 53 51 4c 49 54 45 5f  CHRONOUS|SQLITE_
3fc0: 44 45 46 41 55 4c 54 5f 53 59 4e 43 48 52 4f 4e  DEFAULT_SYNCHRON
3fd0: 4f 55 53 3d 33 5d 20 69 6e 73 74 65 61 64 2e 0a  OUS=3] instead..
3fe0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
3ff0: 4e 20 7b 53 51 4c 49 54 45 5f 46 54 53 33 5f 4d  N {SQLITE_FTS3_M
4000: 41 58 5f 45 58 50 52 5f 44 45 50 54 48 3d 3c 69  AX_EXPR_DEPTH=<i
4010: 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  >N</i>} {.  This
4020: 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65 20   macro sets the 
4030: 6d 61 78 69 6d 75 6d 20 64 65 70 74 68 20 6f 66  maximum depth of
4040: 20 74 68 65 20 73 65 61 72 63 68 20 74 72 65 65   the search tree
4050: 20 74 68 61 74 20 63 6f 72 72 65 73 70 6f 6e 64   that correspond
4060: 73 20 74 6f 0a 20 20 74 68 65 20 72 69 67 68 74  s to.  the right
4070: 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68  -hand side of th
4080: 65 20 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72  e MATCH operator
4090: 20 69 6e 20 61 6e 20 5b 46 54 53 33 5d 20 6f 72   in an [FTS3] or
40a0: 20 5b 46 54 53 34 5d 20 66 75 6c 6c 2d 74 65 78   [FTS4] full-tex
40b0: 74 0a 20 20 69 6e 64 65 78 2e 20 20 54 68 65 20  t.  index.  The 
40c0: 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68  full-text search
40d0: 20 75 73 65 73 20 61 20 72 65 63 75 72 73 69 76   uses a recursiv
40e0: 65 20 61 6c 67 6f 72 69 74 68 6d 2c 20 73 6f 20  e algorithm, so 
40f0: 74 68 65 20 64 65 70 74 68 20 6f 66 0a 20 20 74  the depth of.  t
4100: 68 65 20 74 72 65 65 20 69 73 20 6c 69 6d 69 74  he tree is limit
4110: 65 64 20 74 6f 20 70 72 65 76 65 6e 74 20 75 73  ed to prevent us
4120: 69 6e 67 20 74 6f 6f 20 6d 75 63 68 20 73 74 61  ing too much sta
4130: 63 6b 20 73 70 61 63 65 2e 20 20 54 68 65 20 64  ck space.  The d
4140: 65 66 61 75 6c 74 0a 20 20 6c 69 6d 69 74 20 69  efault.  limit i
4150: 73 20 31 32 2e 20 20 54 68 69 73 20 6c 69 6d 69  s 12.  This limi
4160: 74 20 69 73 20 73 75 66 66 69 63 69 65 6e 74 20  t is sufficient 
4170: 66 6f 72 20 75 70 20 74 6f 20 34 30 39 35 20 73  for up to 4095 s
4180: 65 61 72 63 68 20 74 65 72 6d 73 20 6f 6e 20 74  earch terms on t
4190: 68 65 0a 20 20 72 69 67 68 74 2d 68 61 6e 64 20  he.  right-hand 
41a0: 73 69 64 65 20 6f 66 20 74 68 65 20 4d 41 54 43  side of the MATC
41b0: 48 20 6f 70 65 72 61 74 6f 72 20 61 6e 64 20 69  H operator and i
41c0: 74 20 68 6f 6c 64 73 20 73 74 61 63 6b 20 73 70  t holds stack sp
41d0: 61 63 65 20 75 73 61 67 65 20 74 6f 20 0a 20 20  ace usage to .  
41e0: 6c 65 73 73 20 74 68 61 6e 20 32 30 30 30 20 62  less than 2000 b
41f0: 79 74 65 73 2e 0a 20 20 3c 70 3e 0a 20 20 46 6f  ytes..  <p>.  Fo
4200: 72 20 6f 72 64 69 6e 61 72 79 20 46 54 53 33 2f  r ordinary FTS3/
4210: 46 54 53 34 20 71 75 65 72 69 65 73 2c 20 74 68  FTS4 queries, th
4220: 65 20 73 65 61 72 63 68 20 74 72 65 65 20 64 65  e search tree de
4230: 70 74 68 20 69 73 20 61 70 70 72 6f 78 69 6d 61  pth is approxima
4240: 74 65 6c 79 0a 20 20 74 68 65 20 62 61 73 65 2d  tely.  the base-
4250: 32 20 6c 6f 67 61 72 69 74 68 6d 20 6f 66 20 74  2 logarithm of t
4260: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 65 72  he number of ter
4270: 6d 73 20 69 6e 20 74 68 65 20 72 69 67 68 74 2d  ms in the right-
4280: 68 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65  hand side of the
4290: 0a 20 20 4d 41 54 43 48 20 6f 70 65 72 61 74 6f  .  MATCH operato
42a0: 72 2e 20 20 48 6f 77 65 76 65 72 2c 20 66 6f 72  r.  However, for
42b0: 20 5b 70 68 72 61 73 65 20 71 75 65 72 69 65 73   [phrase queries
42c0: 5d 20 61 6e 64 20 5b 4e 45 41 52 20 71 75 65 72  ] and [NEAR quer
42d0: 69 65 73 5d 20 74 68 65 0a 20 20 73 65 61 72 63  ies] the.  searc
42e0: 68 20 74 72 65 65 20 64 65 70 74 68 20 69 73 20  h tree depth is 
42f0: 6c 69 6e 65 61 72 20 69 6e 20 74 68 65 20 6e 75  linear in the nu
4300: 6d 62 65 72 20 6f 66 20 72 69 67 68 74 2d 68 61  mber of right-ha
4310: 6e 64 20 73 69 64 65 20 74 65 72 6d 73 2e 0a 20  nd side terms.. 
4320: 20 53 6f 20 74 68 65 20 64 65 66 61 75 6c 74 20   So the default 
4330: 64 65 70 74 68 20 6c 69 6d 69 74 20 6f 66 20 31  depth limit of 1
4340: 32 20 69 73 20 73 75 66 66 69 63 69 65 6e 74 20  2 is sufficient 
4350: 66 6f 72 20 75 70 20 74 6f 20 34 30 39 35 20 6f  for up to 4095 o
4360: 72 64 69 6e 61 72 79 0a 20 20 74 65 72 6d 73 20  rdinary.  terms 
4370: 6f 6e 20 61 20 4d 41 54 43 48 2c 20 69 74 20 69  on a MATCH, it i
4380: 73 20 6f 6e 6c 79 20 73 75 66 66 69 63 69 65 6e  s only sufficien
4390: 74 20 66 6f 72 20 31 31 20 6f 72 20 31 32 20 70  t for 11 or 12 p
43a0: 68 72 61 73 65 20 6f 72 20 4e 45 41 52 0a 20 20  hrase or NEAR.  
43b0: 74 65 72 6d 73 2e 20 20 45 76 65 6e 20 73 6f 2c  terms.  Even so,
43c0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 69 73 20   the default is 
43d0: 6d 6f 72 65 20 74 68 61 6e 20 65 6e 6f 75 67 68  more than enough
43e0: 20 66 6f 72 20 6d 6f 73 74 20 61 70 70 6c 69 63   for most applic
43f0: 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ation..}..COMPIL
4400: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
4410: 5f 4c 49 4b 45 5f 44 4f 45 53 4e 54 5f 4d 41 54  _LIKE_DOESNT_MAT
4420: 43 48 5f 42 4c 4f 42 53 7d 20 7b 0a 20 20 54 68  CH_BLOBS} {.  Th
4430: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  is compile-time 
4440: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
4450: 65 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f  e [LIKE] operato
4460: 72 20 74 6f 20 61 6c 77 61 79 73 20 72 65 74 75  r to always retu
4470: 72 6e 20 0a 20 20 46 61 6c 73 65 20 69 66 20 65  rn .  False if e
4480: 69 74 68 65 72 20 6f 70 65 72 61 6e 64 20 69 73  ither operand is
4490: 20 61 20 42 4c 4f 42 2e 20 20 54 68 65 20 64 65   a BLOB.  The de
44a0: 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20 6f  fault behavior o
44b0: 66 20 5b 4c 49 4b 45 5d 20 0a 20 20 69 73 20 74  f [LIKE] .  is t
44c0: 68 61 74 20 42 4c 4f 42 20 6f 70 65 72 61 6e 64  hat BLOB operand
44d0: 73 20 61 72 65 20 63 61 73 74 20 74 6f 20 54 45  s are cast to TE
44e0: 58 54 20 62 65 66 6f 72 65 20 74 68 65 20 63 6f  XT before the co
44f0: 6d 70 61 72 69 73 6f 6e 20 69 73 20 64 6f 6e 65  mparison is done
4500: 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 69 73 20 63  ..  <p>.  This c
4510: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
4520: 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20  on makes SQLite 
4530: 72 75 6e 20 6d 6f 72 65 20 65 66 66 69 63 69 65  run more efficie
4540: 6e 74 6c 79 20 77 68 65 6e 20 70 72 6f 63 65 73  ntly when proces
4550: 73 69 6e 67 0a 20 20 71 75 65 72 69 65 73 20 74  sing.  queries t
4560: 68 61 74 20 75 73 65 20 74 68 65 20 5b 4c 49 4b  hat use the [LIK
4570: 45 5d 20 6f 70 65 72 61 74 6f 72 2c 20 61 74 20  E] operator, at 
4580: 74 68 65 20 65 78 70 65 6e 73 65 20 6f 66 20 62  the expense of b
4590: 72 65 61 6b 69 6e 67 20 62 61 63 6b 77 61 72 64  reaking backward
45a0: 73 0a 20 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  s.  compatibilit
45b0: 79 2e 20 20 48 6f 77 65 76 65 72 2c 20 74 68 65  y.  However, the
45c0: 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61   backwards compa
45d0: 74 69 62 69 6c 69 74 79 20 62 72 65 61 6b 20 6d  tibility break m
45e0: 61 79 20 62 65 20 6f 6e 6c 79 0a 20 20 61 20 74  ay be only.  a t
45f0: 65 63 68 6e 69 63 61 6c 69 74 79 2e 20 20 54 68  echnicality.  Th
4600: 65 72 65 20 77 61 73 20 61 20 6c 6f 6e 67 2d 73  ere was a long-s
4610: 74 61 6e 64 69 6e 67 20 62 75 67 20 69 6e 20 74  tanding bug in t
4620: 68 65 20 5b 4c 49 4b 45 5d 20 70 72 6f 63 65 73  he [LIKE] proces
4630: 73 69 6e 67 20 6c 6f 67 69 63 0a 20 20 28 73 65  sing logic.  (se
4640: 65 20 5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e 73  e [https://www.s
4650: 71 6c 69 74 65 2e 6f 72 67 2f 73 72 63 2f 69 6e  qlite.org/src/in
4660: 66 6f 2f 30 35 66 34 33 62 65 38 66 64 64 61 39  fo/05f43be8fdda9
4670: 66 5d 29 20 74 68 61 74 20 63 61 75 73 65 64 20  f]) that caused 
4680: 69 74 20 74 6f 0a 20 20 6d 69 73 62 65 68 61 76  it to.  misbehav
4690: 69 6f 72 20 66 6f 72 20 42 4c 4f 42 20 6f 70 65  ior for BLOB ope
46a0: 72 61 6e 64 73 20 61 6e 64 20 6e 6f 62 6f 64 79  rands and nobody
46b0: 20 6f 62 73 65 72 76 65 64 20 74 68 61 74 20 62   observed that b
46c0: 75 67 20 69 6e 20 6e 65 61 72 6c 79 0a 20 20 31  ug in nearly.  1
46d0: 30 20 79 65 61 72 73 20 6f 66 20 61 63 74 69 76  0 years of activ
46e0: 65 20 75 73 65 2e 20 20 53 6f 20 66 6f 72 20 6d  e use.  So for m
46f0: 6f 72 65 20 75 73 65 72 73 2c 20 69 74 20 69 73  ore users, it is
4700: 20 70 72 6f 62 61 62 6c 79 20 73 61 66 65 20 74   probably safe t
4710: 6f 0a 20 20 65 6e 61 62 6c 65 20 74 68 69 73 20  o.  enable this 
4720: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
4730: 69 6f 6e 20 61 6e 64 20 74 68 65 72 65 62 79 20  ion and thereby 
4740: 73 61 76 65 20 61 20 6c 69 74 74 6c 65 20 43 50  save a little CP
4750: 55 20 74 69 6d 65 0a 20 20 6f 6e 20 4c 49 4b 45  U time.  on LIKE
4760: 20 71 75 65 72 69 65 73 2e 0a 20 20 3c 70 3e 0a   queries..  <p>.
4770: 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74    This compile-t
4780: 69 6d 65 20 6f 70 74 69 6f 6e 20 61 66 66 65 63  ime option affec
4790: 74 73 20 74 68 65 20 53 51 4c 20 5b 4c 49 4b 45  ts the SQL [LIKE
47a0: 5d 20 6f 70 65 72 61 74 6f 72 20 6f 6e 6c 79 20  ] operator only 
47b0: 61 6e 64 20 68 61 73 0a 20 20 6e 6f 20 69 6d 70  and has.  no imp
47c0: 61 63 74 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69  act on the [sqli
47d0: 74 65 33 5f 73 74 72 6c 69 6b 65 28 29 5d 20 43  te3_strlike()] C
47e0: 2d 6c 61 6e 67 75 61 67 65 20 69 6e 74 65 72 66  -language interf
47f0: 61 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ace..}..COMPILE_
4800: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d  OPTION {SQLITE_M
4810: 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 3d 3c 69 3e  AX_MMAP_SIZE=<i>
4820: 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  N</i>} {.  This 
4830: 6d 61 63 72 6f 20 73 65 74 73 20 61 20 68 61 72  macro sets a har
4840: 64 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e  d upper bound on
4850: 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 61   the amount of a
4860: 64 64 72 65 73 73 20 73 70 61 63 65 20 74 68 61  ddress space tha
4870: 74 0a 20 20 63 61 6e 20 62 65 20 75 73 65 64 20  t.  can be used 
4880: 62 79 20 61 6e 79 20 73 69 6e 67 6c 65 20 64 61  by any single da
4890: 74 61 62 61 73 65 20 66 6f 72 20 6d 65 6d 6f 72  tabase for memor
48a0: 79 2d 6d 61 70 70 65 64 20 49 2f 4f 2e 0a 20 20  y-mapped I/O..  
48b0: 53 65 74 74 69 6e 67 20 74 68 69 73 20 76 61 6c  Setting this val
48c0: 75 65 20 74 6f 20 30 20 63 6f 6d 70 6c 65 74 65  ue to 0 complete
48d0: 6c 79 20 64 69 73 61 62 6c 65 73 20 6d 65 6d 6f  ly disables memo
48e0: 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20 61 6e  ry-mapped I/O an
48f0: 64 0a 20 20 63 61 75 73 65 73 20 6c 6f 67 69 63  d.  causes logic
4900: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4910: 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49   memory-mapped I
4920: 2f 4f 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64  /O to be omitted
4930: 20 66 72 6f 6d 20 74 68 65 0a 20 20 62 75 69 6c   from the.  buil
4940: 64 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  d.  This option 
4950: 64 6f 65 73 20 63 68 61 6e 67 65 20 74 68 65 20  does change the 
4960: 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 2d 6d  default memory-m
4970: 61 70 70 65 64 20 49 2f 4f 20 61 64 64 72 65 73  apped I/O addres
4980: 73 0a 20 20 73 70 61 63 65 20 73 69 7a 65 20 28  s.  space size (
4990: 73 65 74 20 62 79 20 5b 53 51 4c 49 54 45 5f 44  set by [SQLITE_D
49a0: 45 46 41 55 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45  EFAULT_MMAP_SIZE
49b0: 5d 20 6f 72 0a 20 20 73 71 6c 69 74 65 33 5f 63  ] or.  sqlite3_c
49c0: 6f 6e 66 69 67 28 5b 53 51 4c 49 54 45 5f 43 4f  onfig([SQLITE_CO
49d0: 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29  NFIG_MMAP_SIZE])
49e0: 20 6f 72 20 74 68 65 0a 20 20 72 75 6e 2d 74 69   or the.  run-ti
49f0: 6d 65 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64  me memory-mapped
4a00: 20 49 2f 4f 20 61 64 64 72 65 73 73 20 73 70 61   I/O address spa
4a10: 63 65 20 73 69 7a 65 20 28 73 65 74 20 62 79 0a  ce size (set by.
4a20: 20 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63    sqlite3_file_c
4a30: 6f 6e 74 72 6f 6c 28 5b 53 51 4c 49 54 45 5f 46  ontrol([SQLITE_F
4a40: 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29  CNTL_MMAP_SIZE])
4a50: 20 6f 72 0a 20 20 5b 50 52 41 47 4d 41 20 6d 6d   or.  [PRAGMA mm
4a60: 61 70 5f 73 69 7a 65 5d 29 20 61 73 20 6c 6f 6e  ap_size]) as lon
4a70: 67 20 61 73 20 74 68 6f 73 65 20 6f 74 68 65 72  g as those other
4a80: 20 73 65 74 74 69 6e 67 73 20 61 72 65 20 6c 65   settings are le
4a90: 73 73 20 74 68 61 6e 20 74 68 65 0a 20 20 6d 61  ss than the.  ma
4aa0: 78 69 6d 75 6d 20 76 61 6c 75 65 20 64 65 66 69  ximum value defi
4ab0: 6e 65 64 20 68 65 72 65 2e 0a 7d 0a 0a 43 4f 4d  ned here..}..COM
4ac0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
4ad0: 49 54 45 5f 4d 41 58 5f 53 43 48 45 4d 41 5f 52  ITE_MAX_SCHEMA_R
4ae0: 45 54 52 59 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b  ETRY=<i>N</i>} {
4af0: 0a 20 20 57 68 65 6e 65 76 65 72 20 74 68 65 20  .  Whenever the 
4b00: 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20  database schema 
4b10: 63 68 61 6e 67 65 73 2c 20 70 72 65 70 61 72 65  changes, prepare
4b20: 64 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65  d statements are
4b30: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 20   automatically. 
4b40: 20 72 65 70 72 65 70 61 72 65 64 20 74 6f 20 61   reprepared to a
4b50: 63 63 6f 6d 6d 6f 64 61 74 65 20 74 68 65 20 6e  ccommodate the n
4b60: 65 77 20 73 63 68 65 6d 61 2e 20 20 54 68 65 72  ew schema.  Ther
4b70: 65 20 69 73 20 61 20 72 61 63 65 20 63 6f 6e 64  e is a race cond
4b80: 69 74 69 6f 6e 20 68 65 72 65 0a 20 20 69 6e 20  ition here.  in 
4b90: 74 68 61 74 20 69 66 20 6f 6e 65 20 74 68 72 65  that if one thre
4ba0: 61 64 20 69 73 20 63 6f 6e 73 74 61 6e 74 6c 79  ad is constantly
4bb0: 20 63 68 61 6e 67 69 6e 67 20 74 68 65 20 73 63   changing the sc
4bc0: 68 65 6d 61 2c 20 61 6e 6f 74 68 65 72 20 74 68  hema, another th
4bd0: 72 65 61 64 0a 20 20 6d 69 67 68 74 20 73 70 69  read.  might spi
4be0: 6e 20 6f 6e 20 72 65 70 61 72 73 65 73 20 61 6e  n on reparses an
4bf0: 64 20 72 65 70 72 65 70 61 72 61 74 69 6f 6e 73  d repreparations
4c00: 20 6f 66 20 61 20 70 72 65 70 61 72 65 64 20 73   of a prepared s
4c10: 74 61 74 65 6d 65 6e 74 20 61 6e 64 0a 20 20 6e  tatement and.  n
4c20: 65 76 65 72 20 67 65 74 20 61 6e 79 20 72 65 61  ever get any rea
4c30: 6c 20 77 6f 72 6b 20 64 6f 6e 65 2e 20 20 54 68  l work done.  Th
4c40: 69 73 20 70 61 72 61 6d 65 74 65 72 20 70 72 65  is parameter pre
4c50: 76 65 6e 74 73 20 61 6e 20 69 6e 66 69 6e 69 74  vents an infinit
4c60: 65 20 6c 6f 6f 70 0a 20 20 62 79 20 66 6f 72 63  e loop.  by forc
4c70: 69 6e 67 20 74 68 65 20 73 70 69 6e 6e 69 6e 67  ing the spinning
4c80: 20 74 68 72 65 61 64 20 74 6f 20 67 69 76 65 20   thread to give 
4c90: 75 70 20 61 66 74 65 72 20 61 20 66 69 78 65 64  up after a fixed
4ca0: 20 6e 75 6d 62 65 72 20 6f 66 20 61 74 74 65 6d   number of attem
4cb0: 70 74 73 0a 20 20 61 74 20 72 65 63 6f 6d 70 69  pts.  at recompi
4cc0: 6c 69 6e 67 20 74 68 65 20 70 72 65 70 61 72 65  ling the prepare
4cd0: 64 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68  d statement.  Th
4ce0: 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e  e default settin
4cf0: 67 20 69 73 20 35 30 20 77 68 69 63 68 20 69 73  g is 50 which is
4d00: 0a 20 20 6d 6f 72 65 20 74 68 61 6e 20 61 64 65  .  more than ade
4d10: 71 75 61 74 65 20 66 6f 72 20 6d 6f 73 74 20 61  quate for most a
4d20: 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a  pplications..}..
4d30: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
4d40: 53 51 4c 49 54 45 5f 4d 41 58 5f 57 4f 52 4b 45  SQLITE_MAX_WORKE
4d50: 52 5f 54 48 52 45 41 44 53 3d 3c 69 3e 4e 3c 2f  R_THREADS=<i>N</
4d60: 69 3e 7d 20 7b 0a 20 20 53 65 74 20 61 6e 20 75  i>} {.  Set an u
4d70: 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68  pper bound on th
4d80: 65 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74  e [sqlite3_limit
4d90: 5d 28 64 62 2c 5b 53 51 4c 49 54 45 5f 4c 49 4d  ](db,[SQLITE_LIM
4da0: 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  IT_WORKER_THREAD
4db0: 53 5d 2c 4e 29 0a 20 20 73 65 74 74 69 6e 67 20  S],N).  setting 
4dc0: 74 68 61 74 20 64 65 74 65 72 6d 69 6e 65 73 20  that determines 
4dd0: 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62  the maximum numb
4de0: 65 72 20 6f 66 20 61 75 78 69 6c 69 61 72 79 20  er of auxiliary 
4df0: 74 68 72 65 61 64 73 20 74 68 61 74 20 61 20 73  threads that a s
4e00: 69 6e 67 6c 65 0a 20 20 5b 70 72 65 70 61 72 65  ingle.  [prepare
4e10: 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 77 69 6c  d statement] wil
4e20: 6c 20 75 73 65 20 74 6f 20 61 69 64 20 77 69 74  l use to aid wit
4e30: 68 20 43 50 55 2d 69 6e 74 65 6e 73 69 76 65 20  h CPU-intensive 
4e40: 63 6f 6d 70 75 74 61 74 69 6f 6e 73 0a 20 20 28  computations.  (
4e50: 6d 6f 73 74 6c 79 20 73 6f 72 74 69 6e 67 29 2e  mostly sorting).
4e60: 20 20 53 65 65 20 61 6c 73 6f 20 74 68 65 20 5b    See also the [
4e70: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57  SQLITE_DEFAULT_W
4e80: 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 5d 20 6f  ORKER_THREADS] o
4e90: 70 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  ptions..}..COMPI
4ea0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
4eb0: 45 5f 4d 49 4e 49 4d 55 4d 5f 46 49 4c 45 5f 44  E_MINIMUM_FILE_D
4ec0: 45 53 43 52 49 50 54 4f 52 3d 3c 69 3e 4e 3c 2f  ESCRIPTOR=<i>N</
4ed0: 69 3e 7d 20 7b 0a 20 20 54 68 65 20 75 6e 69 78  i>} {.  The unix
4ee0: 20 5b 56 46 53 5d 20 77 69 6c 6c 20 6e 65 76 65   [VFS] will neve
4ef0: 72 20 75 73 65 20 61 20 66 69 6c 65 20 64 65 73  r use a file des
4f00: 63 72 69 70 74 6f 72 20 6c 65 73 73 20 74 68 61  criptor less tha
4f10: 6e 20 3c 69 3e 4e 3c 2f 69 3e 2e 20 20 54 68 65  n <i>N</i>.  The
4f20: 0a 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  .  default value
4f30: 20 6f 66 20 3c 69 3e 4e 3c 2f 69 3e 20 69 73 20   of <i>N</i> is 
4f40: 33 2e 0a 20 20 3c 70 3e 0a 20 20 41 76 6f 69 64  3..  <p>.  Avoid
4f50: 69 6e 67 20 74 68 65 20 75 73 65 20 6f 66 20 6c  ing the use of l
4f60: 6f 77 2d 6e 75 6d 62 65 72 65 64 20 66 69 6c 65  ow-numbered file
4f70: 20 64 65 73 63 72 69 70 74 6f 72 73 20 69 73 20   descriptors is 
4f80: 61 20 64 65 66 65 6e 73 65 20 61 67 61 69 6e 73  a defense agains
4f90: 74 0a 20 20 61 63 63 69 64 65 6e 74 61 6c 20 64  t.  accidental d
4fa0: 61 74 61 62 61 73 65 20 63 6f 72 72 75 70 74 69  atabase corrupti
4fb0: 6f 6e 2e 20 20 49 66 20 61 20 64 61 74 61 62 61  on.  If a databa
4fc0: 73 65 20 66 69 6c 65 20 77 61 73 20 6f 70 65 6e  se file was open
4fd0: 65 64 20 75 73 69 6e 67 0a 20 20 66 69 6c 65 20  ed using.  file 
4fe0: 64 65 73 63 72 69 70 74 6f 72 20 32 2c 20 66 6f  descriptor 2, fo
4ff0: 72 20 65 78 61 6d 70 6c 65 2c 20 61 6e 64 20 74  r example, and t
5000: 68 65 6e 20 61 6e 20 61 73 73 65 72 74 28 29 20  hen an assert() 
5010: 66 61 69 6c 65 64 20 61 6e 64 20 69 6e 76 6f 6b  failed and invok
5020: 65 64 0a 20 20 77 72 69 74 65 28 32 2c 2e 2e 2e  ed.  write(2,...
5030: 29 2c 20 74 68 61 74 20 77 6f 75 6c 64 20 6c 69  ), that would li
5040: 6b 65 6c 79 20 63 61 75 73 65 20 64 61 74 61 62  kely cause datab
5050: 61 73 65 20 63 6f 72 72 75 70 74 69 6f 6e 20 62  ase corruption b
5060: 79 20 6f 76 65 72 77 72 69 74 69 6e 67 0a 20 20  y overwriting.  
5070: 70 61 72 74 20 6f 66 20 74 68 65 20 64 61 74 61  part of the data
5080: 62 61 73 65 20 66 69 6c 65 20 77 69 74 68 20 74  base file with t
5090: 68 65 20 61 73 73 65 72 74 69 6f 6e 20 65 72 72  he assertion err
50a0: 6f 72 20 6d 65 73 73 61 67 65 2e 20 20 55 73 69  or message.  Usi
50b0: 6e 67 20 6f 6e 6c 79 0a 20 20 68 69 67 68 65 72  ng only.  higher
50c0: 2d 76 61 6c 75 65 64 20 66 69 6c 65 20 64 65 73  -valued file des
50d0: 63 72 69 70 74 6f 72 73 20 61 76 6f 69 64 73 20  criptors avoids 
50e0: 74 68 69 73 20 70 6f 74 65 6e 74 69 61 6c 20 70  this potential p
50f0: 72 6f 62 6c 65 6d 2e 20 20 54 68 65 20 0a 20 20  roblem.  The .  
5100: 70 72 6f 74 65 63 74 69 6f 6e 20 61 67 61 69 6e  protection again
5110: 73 74 0a 20 20 75 73 69 6e 67 20 6c 6f 77 2d 6e  st.  using low-n
5120: 75 6d 62 65 72 65 64 20 66 69 6c 65 20 64 65 73  umbered file des
5130: 63 72 69 70 74 6f 72 73 20 63 61 6e 20 62 65 20  criptors can be 
5140: 64 69 73 61 62 6c 65 64 20 62 79 20 73 65 74 74  disabled by sett
5150: 69 6e 67 20 74 68 69 73 0a 20 20 63 6f 6d 70 69  ing this.  compi
5160: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74  le-time option t
5170: 6f 20 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  o 0..}..COMPILE_
5180: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 50  OPTION {SQLITE_P
5190: 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49  OWERSAFE_OVERWRI
51a0: 54 45 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31  TE=<i>&lt;0 or 1
51b0: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
51c0: 69 73 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65  is option change
51d0: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 61 73  s the default as
51e0: 73 75 6d 70 74 69 6f 6e 20 61 62 6f 75 74 20 5b  sumption about [
51f0: 70 6f 77 65 72 73 61 66 65 20 6f 76 65 72 77 72  powersafe overwr
5200: 69 74 65 5d 0a 20 20 66 6f 72 20 74 68 65 20 75  ite].  for the u
5210: 6e 64 65 72 6c 79 69 6e 67 20 66 69 6c 65 73 79  nderlying filesy
5220: 73 74 65 6d 73 20 66 6f 72 20 74 68 65 20 75 6e  stems for the un
5230: 69 78 20 61 6e 64 20 77 69 6e 64 6f 77 73 20 5b  ix and windows [
5240: 56 46 53 65 73 5d 2e 0a 20 20 53 65 74 74 69 6e  VFSes]..  Settin
5250: 67 20 53 51 4c 49 54 45 5f 50 4f 57 45 52 53 41  g SQLITE_POWERSA
5260: 46 45 5f 4f 56 45 52 57 52 49 54 45 20 74 6f 20  FE_OVERWRITE to 
5270: 31 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  1 causes SQLite 
5280: 74 6f 20 61 73 73 75 6d 65 20 74 68 61 74 0a 20  to assume that. 
5290: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 6c 65 76   application-lev
52a0: 65 6c 20 77 72 69 74 65 73 20 63 61 6e 6e 6f 74  el writes cannot
52b0: 20 63 68 61 6e 67 65 73 20 62 79 74 65 73 20 6f   changes bytes o
52c0: 75 74 73 69 64 65 20 74 68 65 20 72 61 6e 67 65  utside the range
52d0: 20 6f 66 0a 20 20 62 79 74 65 73 20 77 72 69 74   of.  bytes writ
52e0: 74 65 6e 20 65 76 65 6e 20 69 66 20 74 68 65 20  ten even if the 
52f0: 77 72 69 74 65 20 6f 63 63 75 72 73 20 6a 75 73  write occurs jus
5300: 74 20 62 65 66 6f 72 65 20 61 20 70 6f 77 65 72  t before a power
5310: 20 6c 6f 73 73 2e 0a 20 20 57 69 74 68 20 53 51   loss..  With SQ
5320: 4c 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f  LITE_POWERSAFE_O
5330: 56 45 52 57 52 49 54 45 20 73 65 74 20 74 6f 20  VERWRITE set to 
5340: 30 2c 20 53 51 4c 69 74 65 20 61 73 73 75 6d 65  0, SQLite assume
5350: 73 20 74 68 61 74 20 6f 74 68 65 72 0a 20 20 62  s that other.  b
5360: 79 74 65 73 20 69 6e 20 74 68 65 20 73 61 6d 65  ytes in the same
5370: 20 73 65 63 74 6f 72 20 77 69 74 68 20 61 20 77   sector with a w
5380: 72 69 74 74 65 6e 20 62 79 74 65 20 6d 69 67 68  ritten byte migh
5390: 74 20 62 65 20 63 68 61 6e 67 65 64 20 6f 72 20  t be changed or 
53a0: 0a 20 20 64 61 6d 61 67 65 64 20 62 79 20 61 20  .  damaged by a 
53b0: 70 6f 77 65 72 20 6c 6f 73 73 2e 0a 7d 0a 0a 43  power loss..}..C
53c0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
53d0: 51 4c 49 54 45 5f 52 45 56 45 52 53 45 5f 55 4e  QLITE_REVERSE_UN
53e0: 4f 52 44 45 52 45 44 5f 53 45 4c 45 43 54 53 7d  ORDERED_SELECTS}
53f0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
5400: 20 63 61 75 73 65 73 20 74 68 65 20 5b 50 52 41   causes the [PRA
5410: 47 4d 41 20 72 65 76 65 72 73 65 5f 75 6e 6f 72  GMA reverse_unor
5420: 64 65 72 65 64 5f 73 65 6c 65 63 74 73 5d 20 73  dered_selects] s
5430: 65 74 74 69 6e 67 20 74 6f 20 62 65 0a 20 20 65  etting to be.  e
5440: 6e 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c  nabled by defaul
5450: 74 2e 20 20 57 68 65 6e 20 65 6e 61 62 6c 65 64  t.  When enabled
5460: 2c 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65  , [SELECT] state
5470: 6d 65 6e 74 73 20 74 68 61 74 20 6c 61 63 6b 20  ments that lack 
5480: 61 6e 0a 20 20 4f 52 44 45 52 20 42 59 20 63 6c  an.  ORDER BY cl
5490: 61 75 73 65 20 77 69 6c 6c 20 72 75 6e 20 69 6e  ause will run in
54a0: 20 72 65 76 65 72 73 65 20 6f 72 64 65 72 2e 3c   reverse order.<
54b0: 70 3e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  p>.  This option
54c0: 20 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20 64   is useful for d
54d0: 65 74 65 63 74 69 6e 67 20 77 68 65 6e 20 61 70  etecting when ap
54e0: 70 6c 69 63 61 74 69 6f 6e 73 20 28 69 6e 63 6f  plications (inco
54f0: 72 72 65 63 74 6c 79 29 0a 20 20 61 73 73 75 6d  rrectly).  assum
5500: 65 20 74 68 61 74 20 74 68 65 20 6f 72 64 65 72  e that the order
5510: 20 6f 66 20 72 6f 77 73 20 69 6e 20 61 20 53 45   of rows in a SE
5520: 4c 45 43 54 20 77 69 74 68 6f 75 74 20 61 6e 20  LECT without an 
5530: 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 0a  ORDER BY clause.
5540: 20 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65    will always be
5550: 20 74 68 65 20 73 61 6d 65 2e 0a 7d 0a 0a 43 4f   the same..}..CO
5560: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
5570: 4c 49 54 45 5f 53 4f 52 54 45 52 5f 50 4d 41 53  LITE_SORTER_PMAS
5580: 5a 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20  Z=<i>N</i>} {.  
5590: 49 66 20 6d 75 6c 74 69 2d 74 68 72 65 61 64 65  If multi-threade
55a0: 64 20 70 72 6f 63 65 73 73 69 6e 67 20 69 73 20  d processing is 
55b0: 65 6e 61 62 6c 65 64 20 76 69 61 20 74 68 65 0a  enabled via the.
55c0: 20 20 5b 50 52 41 47 4d 41 20 74 68 72 65 61 64    [PRAGMA thread
55d0: 73 5d 20 73 65 74 74 69 6e 67 2c 20 74 68 65 6e  s] setting, then
55e0: 20 73 6f 72 74 20 6f 70 65 72 61 74 69 6f 6e 73   sort operations
55f0: 20 77 69 6c 6c 0a 20 20 61 74 74 65 6d 70 74 20   will.  attempt 
5600: 74 6f 20 73 74 61 72 74 20 68 65 6c 70 65 72 20  to start helper 
5610: 74 68 72 65 61 64 73 20 77 68 65 6e 20 74 68 65  threads when the
5620: 20 61 6d 6f 75 6e 74 20 6f 66 20 63 6f 6e 74 65   amount of conte
5630: 6e 74 0a 20 20 74 6f 20 62 65 20 73 6f 72 74 65  nt.  to be sorte
5640: 64 20 65 78 63 65 65 64 73 20 74 68 65 20 6d 69  d exceeds the mi
5650: 6e 69 6d 75 6d 20 6f 66 20 74 68 65 20 5b 63 61  nimum of the [ca
5660: 63 68 65 5f 73 69 7a 65 5d 20 61 6e 64 20 50 4d  che_size] and PM
5670: 41 20 53 69 7a 65 0a 20 20 64 65 74 65 72 6d 69  A Size.  determi
5680: 6e 65 64 20 62 79 20 74 68 65 20 5b 53 51 4c 49  ned by the [SQLI
5690: 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 5d  TE_CONFIG_PMASZ]
56a0: 20 73 74 61 72 74 2d 74 69 6d 65 20 6f 70 74 69   start-time opti
56b0: 6f 6e 2e 0a 20 20 54 68 69 73 20 63 6f 6d 70 69  on..  This compi
56c0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 73  le-time option s
56d0: 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  ets the default 
56e0: 76 61 6c 75 65 20 66 6f 72 20 74 68 65 0a 20 20  value for the.  
56f0: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50  [SQLITE_CONFIG_P
5700: 4d 41 53 5a 5d 20 73 74 61 72 74 2d 74 69 6d 65  MASZ] start-time
5710: 20 6f 70 74 69 6f 6e 2e 0a 20 20 54 68 65 20 64   option..  The d
5720: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20  efault value is 
5730: 32 35 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  250..}..COMPILE_
5740: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53  OPTION {SQLITE_S
5750: 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 3d 3c 69  TMTJRNL_SPILL=<i
5760: 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20  >N</i>} {.  The 
5770: 53 51 4c 49 54 45 5f 53 54 4d 54 4a 52 4e 4c 5f  SQLITE_STMTJRNL_
5780: 53 50 49 4c 4c 20 63 6f 6d 70 69 6c 65 2d 74 69  SPILL compile-ti
5790: 6d 65 20 6f 70 74 69 6f 6e 20 64 65 74 65 72 6d  me option determ
57a0: 69 6e 65 73 20 74 68 65 0a 20 20 64 65 66 61 75  ines the.  defau
57b0: 6c 74 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68  lt setting of th
57c0: 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  e [SQLITE_CONFIG
57d0: 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 5d  _STMTJRNL_SPILL]
57e0: 20 73 74 61 72 74 2d 74 69 6d 65 0a 20 20 73 65   start-time.  se
57f0: 74 74 69 6e 67 2e 20 20 54 68 61 74 20 73 65 74  tting.  That set
5800: 74 69 6e 67 20 64 65 74 65 72 6d 69 6e 65 73 20  ting determines 
5810: 74 68 65 20 73 69 7a 65 20 74 68 72 65 73 68 6f  the size thresho
5820: 6c 64 20 61 62 6f 76 65 20 77 68 69 63 68 0a 20  ld above which. 
5830: 20 5b 73 74 61 74 65 6d 65 6e 74 20 6a 6f 75 72   [statement jour
5840: 6e 61 6c 73 5d 20 61 72 65 20 6d 6f 76 65 64 20  nals] are moved 
5850: 66 72 6f 6d 20 6d 65 6d 6f 72 79 20 74 6f 20 64  from memory to d
5860: 69 73 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  isk..}..COMPILE_
5870: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 57  OPTION {SQLITE_W
5880: 49 4e 33 32 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20  IN32_MALLOC} {. 
5890: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61   This option ena
58a0: 62 6c 65 73 20 74 68 65 20 75 73 65 20 6f 66 20  bles the use of 
58b0: 74 68 65 20 57 69 6e 64 6f 77 73 20 48 65 61 70  the Windows Heap
58c0: 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 20 66   API functions f
58d0: 6f 72 20 6d 65 6d 6f 72 79 0a 20 20 61 6c 6c 6f  or memory.  allo
58e0: 63 61 74 69 6f 6e 20 69 6e 73 74 65 61 64 20 6f  cation instead o
58f0: 66 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 6c  f the standard l
5900: 69 62 72 61 72 79 20 6d 61 6c 6c 6f 63 28 29 20  ibrary malloc() 
5910: 61 6e 64 20 66 72 65 65 28 29 20 72 6f 75 74 69  and free() routi
5920: 6e 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  nes..}..COMPILE_
5930: 4f 50 54 49 4f 4e 20 7b 59 59 53 54 41 43 4b 44  OPTION {YYSTACKD
5940: 45 50 54 48 3d 3c 69 3e 26 6c 74 3b 6d 61 78 5f  EPTH=<i>&lt;max_
5950: 64 65 70 74 68 26 67 74 3b 3c 2f 69 3e 7d 20 7b  depth&gt;</i>} {
5960: 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65  .  This macro se
5970: 74 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 64  ts the maximum d
5980: 65 70 74 68 20 6f 66 20 74 68 65 20 4c 41 4c 52  epth of the LALR
5990: 28 31 29 20 73 74 61 63 6b 20 75 73 65 64 20 62  (1) stack used b
59a0: 79 0a 20 20 74 68 65 20 53 51 4c 20 70 61 72 73  y.  the SQL pars
59b0: 65 72 20 77 69 74 68 69 6e 20 53 51 4c 69 74 65  er within SQLite
59c0: 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 76  .  The default v
59d0: 61 6c 75 65 20 69 73 20 31 30 30 2e 20 20 41 20  alue is 100.  A 
59e0: 74 79 70 69 63 61 6c 0a 20 20 61 70 70 6c 69 63  typical.  applic
59f0: 61 74 69 6f 6e 20 77 69 6c 6c 20 75 73 65 20 6c  ation will use l
5a00: 65 73 73 20 74 68 61 6e 20 61 62 6f 75 74 20 32  ess than about 2
5a10: 30 20 6c 65 76 65 6c 73 20 6f 66 20 74 68 65 20  0 levels of the 
5a20: 73 74 61 63 6b 2e 0a 20 20 44 65 76 65 6c 6f 70  stack..  Develop
5a30: 65 72 73 20 77 68 6f 73 65 20 61 70 70 6c 69 63  ers whose applic
5a40: 61 74 69 6f 6e 73 20 63 6f 6e 74 61 69 6e 20 53  ations contain S
5a50: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68  QL statements th
5a60: 61 74 20 0a 20 20 6e 65 65 64 20 6d 6f 72 65 20  at .  need more 
5a70: 74 68 61 6e 20 31 30 30 20 4c 41 4c 52 28 31 29  than 100 LALR(1)
5a80: 20 73 74 61 63 6b 20 65 6e 74 72 69 65 73 20 73   stack entries s
5a90: 68 6f 75 6c 64 20 73 65 72 69 6f 75 73 6c 79 0a  hould seriously.
5aa0: 20 20 63 6f 6e 73 69 64 65 72 20 72 65 66 61 63    consider refac
5ab0: 74 6f 72 69 6e 67 20 74 68 65 69 72 20 53 51 4c  toring their SQL
5ac0: 20 61 73 20 69 74 20 69 73 20 6c 69 6b 65 6c 79   as it is likely
5ad0: 20 74 6f 20 62 65 20 77 65 6c 6c 20 62 65 79 6f   to be well beyo
5ae0: 6e 64 0a 20 20 74 68 65 20 61 62 69 6c 69 74 79  nd.  the ability
5af0: 20 6f 66 20 61 6e 79 20 68 75 6d 61 6e 20 74 6f   of any human to
5b00: 20 63 6f 6d 70 72 65 68 65 6e 64 2e 0a 7d 0a 3c   comprehend..}.<
5b10: 2f 74 63 6c 3e 0a 0a 3c 68 31 3e 20 4f 70 74 69  /tcl>..<h1> Opti
5b20: 6f 6e 73 20 54 6f 20 53 65 74 20 53 69 7a 65 20  ons To Set Size 
5b30: 4c 69 6d 69 74 73 3c 2f 68 31 3e 0a 0a 3c 70 3e  Limits</h1>..<p>
5b40: 54 68 65 72 65 20 61 72 65 20 63 6f 6d 70 69 6c  There are compil
5b50: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 74  e-time options t
5b60: 68 61 74 20 77 69 6c 6c 20 73 65 74 20 75 70 70  hat will set upp
5b70: 65 72 20 62 6f 75 6e 64 73 0a 6f 6e 20 74 68 65  er bounds.on the
5b80: 20 73 69 7a 65 73 20 6f 66 20 76 61 72 69 6f 75   sizes of variou
5b90: 73 20 73 74 72 75 63 74 75 72 65 73 20 69 6e 20  s structures in 
5ba0: 53 51 4c 69 74 65 2e 20 20 54 68 65 20 63 6f 6d  SQLite.  The com
5bb0: 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e  pile-time.option
5bc0: 73 20 6e 6f 72 6d 61 6c 6c 79 20 73 65 74 20 61  s normally set a
5bd0: 20 68 61 72 64 20 75 70 70 65 72 20 62 6f 75 6e   hard upper boun
5be0: 64 20 74 68 61 74 20 63 61 6e 20 62 65 20 63 68  d that can be ch
5bf0: 61 6e 67 65 64 0a 61 74 20 72 75 6e 2d 74 69 6d  anged.at run-tim
5c00: 65 20 6f 6e 20 69 6e 64 69 76 69 64 75 61 6c 20  e on individual 
5c10: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
5c20: 74 69 6f 6e 73 5d 20 75 73 69 6e 67 20 74 68 65  tions] using the
5c30: 0a 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28  .[sqlite3_limit(
5c40: 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 3c 2f 70  )] interface.</p
5c50: 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f 6d 70 69 6c  >..<p>The compil
5c60: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 66  e-time options f
5c70: 6f 72 20 73 65 74 74 69 6e 67 20 75 70 70 65 72  or setting upper
5c80: 20 62 6f 75 6e 64 73 20 61 72 65 0a 5b 6c 69 6d   bounds are.[lim
5c90: 69 74 73 20 7c 20 64 6f 63 75 6d 65 6e 74 65 64  its | documented
5ca0: 20 73 65 70 61 72 61 74 65 6c 79 5d 2e 20 20 54   separately].  T
5cb0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 73 20  he following is 
5cc0: 61 20 6c 69 73 74 20 6f 66 0a 74 68 65 20 61 76  a list of.the av
5cd0: 61 69 6c 61 62 6c 65 20 73 65 74 74 69 6e 67 73  ailable settings
5ce0: 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e  :</p>..<ul>.<li>
5cf0: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 41 54 54   [SQLITE_MAX_ATT
5d00: 41 43 48 45 44 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  ACHED]  </li>.<l
5d10: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43  i> [SQLITE_MAX_C
5d20: 4f 4c 55 4d 4e 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  OLUMN]  </li>.<l
5d30: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43  i> [SQLITE_MAX_C
5d40: 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 5d 20  OMPOUND_SELECT] 
5d50: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
5d60: 49 54 45 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50  ITE_MAX_EXPR_DEP
5d70: 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  TH]  </li>.<li> 
5d80: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 46 55 4e 43  [SQLITE_MAX_FUNC
5d90: 54 49 4f 4e 5f 41 52 47 5d 20 20 3c 2f 6c 69 3e  TION_ARG]  </li>
5da0: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
5db0: 58 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e  X_LENGTH]  </li>
5dc0: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
5dd0: 58 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c  X_LIKE_PATTERN_L
5de0: 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  ENGTH]  </li>.<l
5df0: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 50  i> [SQLITE_MAX_P
5e00: 41 47 45 5f 43 4f 55 4e 54 5d 20 20 3c 2f 6c 69  AGE_COUNT]  </li
5e10: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
5e20: 41 58 5f 53 51 4c 5f 4c 45 4e 47 54 48 5d 20 20  AX_SQL_LENGTH]  
5e30: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
5e40: 54 45 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f  TE_MAX_VARIABLE_
5e50: 4e 55 4d 42 45 52 5d 20 20 3c 2f 6c 69 3e 0a 3c  NUMBER]  </li>.<
5e60: 2f 75 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 63  /ul>..<a name="c
5e70: 6f 6e 74 72 6f 6c 66 65 61 74 75 72 65 73 22 3e  ontrolfeatures">
5e80: 3c 2f 61 3e 0a 3c 68 31 3e 20 4f 70 74 69 6f 6e  </a>.<h1> Option
5e90: 73 20 54 6f 20 43 6f 6e 74 72 6f 6c 20 4f 70 65  s To Control Ope
5ea0: 72 61 74 69 6e 67 20 43 68 61 72 61 63 74 65 72  rating Character
5eb0: 69 73 74 69 63 73 3c 2f 68 31 3e 0a 0a 3c 74 63  istics</h1>..<tc
5ec0: 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  l>.COMPILE_OPTIO
5ed0: 4e 20 7b 53 51 4c 49 54 45 5f 34 5f 42 59 54 45  N {SQLITE_4_BYTE
5ee0: 5f 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c 4f 43 7d  _ALIGNED_MALLOC}
5ef0: 20 7b 0a 20 20 4f 6e 20 6d 6f 73 74 20 73 79 73   {.  On most sys
5f00: 74 65 6d 73 2c 20 74 68 65 20 6d 61 6c 6c 6f 63  tems, the malloc
5f10: 28 29 20 73 79 73 74 65 6d 20 63 61 6c 6c 20 72  () system call r
5f20: 65 74 75 72 6e 73 20 61 20 62 75 66 66 65 72 20  eturns a buffer 
5f30: 74 68 61 74 20 69 73 0a 20 20 61 6c 69 67 6e 65  that is.  aligne
5f40: 64 20 74 6f 20 61 6e 20 38 2d 62 79 74 65 20 62  d to an 8-byte b
5f50: 6f 75 6e 64 61 72 79 2e 20 20 42 75 74 20 6f 6e  oundary.  But on
5f60: 20 73 6f 6d 65 20 73 79 73 74 65 6d 73 20 28 65   some systems (e
5f70: 78 3a 20 77 69 6e 64 6f 77 73 29 20 6d 61 6c 6c  x: windows) mall
5f80: 6f 63 28 29 0a 20 20 72 65 74 75 72 6e 73 20 34  oc().  returns 4
5f90: 2d 62 79 74 65 20 61 6c 69 67 6e 65 64 20 70 6f  -byte aligned po
5fa0: 69 6e 74 65 72 2e 20 20 54 68 69 73 20 63 6f 6d  inter.  This com
5fb0: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
5fc0: 20 6d 75 73 74 20 62 65 20 75 73 65 64 0a 20 20   must be used.  
5fd0: 6f 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74 20  on systems that 
5fe0: 72 65 74 75 72 6e 20 34 2d 62 79 74 65 20 61 6c  return 4-byte al
5ff0: 69 67 6e 65 64 20 70 6f 69 6e 74 65 72 73 20 66  igned pointers f
6000: 72 6f 6d 20 6d 61 6c 6c 6f 63 28 29 2e 0a 7d 0a  rom malloc()..}.
6010: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
6020: 7b 53 51 4c 49 54 45 5f 43 41 53 45 5f 53 45 4e  {SQLITE_CASE_SEN
6030: 53 49 54 49 56 45 5f 4c 49 4b 45 7d 20 7b 0a 20  SITIVE_LIKE} {. 
6040: 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20   If this option 
6050: 69 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e  is present, then
6060: 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 5b 4c   the built-in [L
6070: 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 20 77 69  IKE] operator wi
6080: 6c 6c 20 62 65 0a 20 20 63 61 73 65 20 73 65 6e  ll be.  case sen
6090: 73 69 74 69 76 65 2e 20 20 54 68 69 73 20 73 61  sitive.  This sa
60a0: 6d 65 20 65 66 66 65 63 74 20 63 61 6e 20 62 65  me effect can be
60b0: 20 61 63 68 69 65 76 65 64 20 61 74 20 72 75 6e   achieved at run
60c0: 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20 20 74 68  -time using.  th
60d0: 65 20 5b 63 61 73 65 5f 73 65 6e 73 69 74 69 76  e [case_sensitiv
60e0: 65 5f 6c 69 6b 65 20 70 72 61 67 6d 61 5d 2e 0a  e_like pragma]..
60f0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6100: 4e 20 7b 53 51 4c 49 54 45 5f 44 49 52 45 43 54  N {SQLITE_DIRECT
6110: 5f 4f 56 45 52 46 4c 4f 57 5f 52 45 41 44 7d 20  _OVERFLOW_READ} 
6120: 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  {.  When this op
6130: 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e 74 2c  tion is present,
6140: 20 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 61 69 6e   content contain
6150: 65 64 20 69 6e 0a 20 20 5b 6f 76 65 72 66 6c 6f  ed in.  [overflo
6160: 77 20 70 61 67 65 73 5d 20 6f 66 20 74 68 65 20  w pages] of the 
6170: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 69 73  database file is
6180: 20 72 65 61 64 20 64 69 72 65 63 74 6c 79 20 66   read directly f
6190: 72 6f 6d 20 64 69 73 6b 2c 0a 20 20 62 79 70 61  rom disk,.  bypa
61a0: 73 73 69 6e 67 20 74 68 65 20 5b 70 61 67 65 20  ssing the [page 
61b0: 63 61 63 68 65 5d 2c 20 64 75 72 69 6e 67 20 72  cache], during r
61c0: 65 61 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  ead transactions
61d0: 2e 20 20 49 6e 20 61 70 70 6c 69 63 61 74 69 6f  .  In applicatio
61e0: 6e 73 0a 20 20 74 68 61 74 20 64 6f 20 61 20 6c  ns.  that do a l
61f0: 6f 74 20 6f 66 20 72 65 61 64 73 20 6f 66 20 6c  ot of reads of l
6200: 61 72 67 65 20 42 4c 4f 42 73 2c 20 74 68 69 73  arge BLOBs, this
6210: 20 6f 70 74 69 6f 6e 20 6d 69 67 68 74 20 69 6d   option might im
6220: 70 72 6f 76 65 20 72 65 61 64 0a 20 20 70 65 72  prove read.  per
6230: 66 6f 72 6d 61 6e 63 65 2e 0a 7d 0a 0a 43 4f 4d  formance..}..COM
6240: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
6250: 49 54 45 5f 48 41 56 45 5f 49 53 4e 41 4e 7d 20  ITE_HAVE_ISNAN} 
6260: 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  {.  If this opti
6270: 6f 6e 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74  on is present, t
6280: 68 65 6e 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  hen SQLite will 
6290: 75 73 65 20 74 68 65 20 69 73 6e 61 6e 28 29 20  use the isnan() 
62a0: 66 75 6e 63 74 69 6f 6e 20 66 72 6f 6d 0a 20 20  function from.  
62b0: 74 68 65 20 73 79 73 74 65 6d 20 6d 61 74 68 20  the system math 
62c0: 6c 69 62 72 61 72 79 2e 20 20 54 68 69 73 20 69  library.  This i
62d0: 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74  s an alias for t
62e0: 68 65 20 5b 48 41 56 45 5f 49 53 4e 41 4e 5d 20  he [HAVE_ISNAN] 
62f0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 20 20  configuration.  
6300: 6f 70 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49  option..}..COMPI
6310: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
6320: 45 5f 4f 53 5f 4f 54 48 45 52 3d 3c 69 3e 26 6c  E_OS_OTHER=<i>&l
6330: 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e  t;0 or 1&gt;</i>
6340: 7d 20 7b 0a 20 20 54 68 65 20 6f 70 74 69 6f 6e  } {.  The option
6350: 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
6360: 6f 20 6f 6d 69 74 20 69 74 73 20 62 75 69 6c 74  o omit its built
6370: 2d 69 6e 20 6f 70 65 72 61 74 69 6e 67 20 73 79  -in operating sy
6380: 73 74 65 6d 20 69 6e 74 65 72 66 61 63 65 73 0a  stem interfaces.
6390: 20 20 66 6f 72 20 55 6e 69 78 2c 20 57 69 6e 64    for Unix, Wind
63a0: 6f 77 73 2c 20 61 6e 64 20 4f 53 2f 32 2e 20 20  ows, and OS/2.  
63b0: 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20 6c 69  The resulting li
63c0: 62 72 61 72 79 20 77 69 6c 6c 20 68 61 76 65 20  brary will have 
63d0: 6e 6f 20 64 65 66 61 75 6c 74 0a 20 20 5b 73 71  no default.  [sq
63e0: 6c 69 74 65 33 5f 76 66 73 20 7c 20 6f 70 65 72  lite3_vfs | oper
63f0: 61 74 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74  ating system int
6400: 65 72 66 61 63 65 5d 2e 20 20 41 70 70 6c 69 63  erface].  Applic
6410: 61 74 69 6f 6e 73 20 6d 75 73 74 20 75 73 65 0a  ations must use.
6420: 20 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 72    [sqlite3_vfs_r
6430: 65 67 69 73 74 65 72 28 29 5d 20 74 6f 20 72 65  egister()] to re
6440: 67 69 73 74 65 72 20 61 6e 20 61 70 70 72 6f 70  gister an approp
6450: 72 69 61 74 65 20 69 6e 74 65 72 66 61 63 65 20  riate interface 
6460: 62 65 66 6f 72 65 0a 20 20 75 73 69 6e 67 20 53  before.  using S
6470: 51 4c 69 74 65 2e 20 20 41 70 70 6c 69 63 61 74  QLite.  Applicat
6480: 69 6f 6e 73 20 6d 75 73 74 20 61 6c 73 6f 20 73  ions must also s
6490: 75 70 70 6c 79 20 69 6d 70 6c 65 6d 65 6e 74 61  upply implementa
64a0: 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 0a 20 20  tions for the.  
64b0: 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74  [sqlite3_os_init
64c0: 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  ()] and [sqlite3
64d0: 5f 6f 73 5f 65 6e 64 28 29 5d 20 69 6e 74 65 72  _os_end()] inter
64e0: 66 61 63 65 73 2e 20 20 54 68 65 20 75 73 75 61  faces.  The usua
64f0: 6c 20 70 72 61 63 74 69 63 65 0a 20 20 69 73 20  l practice.  is 
6500: 66 6f 72 20 74 68 65 20 73 75 70 70 6c 69 65 64  for the supplied
6510: 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69   [sqlite3_os_ini
6520: 74 28 29 5d 20 74 6f 20 69 6e 76 6f 6b 65 20 5b  t()] to invoke [
6530: 73 71 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69  sqlite3_vfs_regi
6540: 73 74 65 72 28 29 5d 2e 0a 20 20 53 51 4c 69 74  ster()]..  SQLit
6550: 65 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63  e will automatic
6560: 61 6c 6c 79 20 69 6e 76 6f 6b 65 20 5b 73 71 6c  ally invoke [sql
6570: 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20  ite3_os_init()] 
6580: 77 68 65 6e 20 69 74 20 69 6e 69 74 69 61 6c 69  when it initiali
6590: 7a 65 73 2e 0a 0a 20 20 54 68 69 73 20 6f 70 74  zes...  This opt
65a0: 69 6f 6e 20 69 73 20 74 79 70 69 63 61 6c 6c 79  ion is typically
65b0: 20 75 73 65 64 20 77 68 65 6e 20 62 75 69 6c 64   used when build
65c0: 69 6e 67 20 53 51 4c 69 74 65 20 66 6f 72 20 61  ing SQLite for a
65d0: 6e 20 65 6d 62 65 64 64 65 64 0a 20 20 70 6c 61  n embedded.  pla
65e0: 74 66 6f 72 6d 20 77 69 74 68 20 61 20 63 75 73  tform with a cus
65f0: 74 6f 6d 20 6f 70 65 72 61 74 69 6e 67 20 73 79  tom operating sy
6600: 73 74 65 6d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  stem..}..COMPILE
6610: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
6620: 53 45 43 55 52 45 5f 44 45 4c 45 54 45 7d 20 7b  SECURE_DELETE} {
6630: 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d  .  This compile-
6640: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63 68 61 6e  time option chan
6650: 67 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  ges the default 
6660: 73 65 74 74 69 6e 67 20 6f 66 20 74 68 65 0a 20  setting of the. 
6670: 20 5b 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20   [secure_delete 
6680: 70 72 61 67 6d 61 5d 2e 20 20 57 68 65 6e 20 74  pragma].  When t
6690: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f  his option is no
66a0: 74 20 75 73 65 64 2c 20 73 65 63 75 72 65 5f 64  t used, secure_d
66b0: 65 6c 65 74 65 20 64 65 66 61 75 6c 74 73 0a 20  elete defaults. 
66c0: 20 74 6f 20 6f 66 66 2e 20 20 57 68 65 6e 20 74   to off.  When t
66d0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70 72  his option is pr
66e0: 65 73 65 6e 74 2c 20 73 65 63 75 72 65 5f 64 65  esent, secure_de
66f0: 6c 65 74 65 20 64 65 66 61 75 6c 74 73 20 74 6f  lete defaults to
6700: 20 6f 6e 2e 0a 0a 20 20 54 68 65 20 73 65 63 75   on...  The secu
6710: 72 65 5f 64 65 6c 65 74 65 20 73 65 74 74 69 6e  re_delete settin
6720: 67 20 63 61 75 73 65 73 20 64 65 6c 65 74 65 64  g causes deleted
6730: 20 63 6f 6e 74 65 6e 74 20 74 6f 20 62 65 20 6f   content to be o
6740: 76 65 72 77 72 69 74 74 65 6e 20 77 69 74 68 0a  verwritten with.
6750: 20 20 7a 65 72 6f 73 2e 20 20 54 68 65 72 65 20    zeros.  There 
6760: 69 73 20 61 20 73 6d 61 6c 6c 20 70 65 72 66 6f  is a small perfo
6770: 72 6d 61 6e 63 65 20 70 65 6e 61 6c 74 79 20 73  rmance penalty s
6780: 69 6e 63 65 20 61 64 64 69 74 69 6f 6e 61 6c 20  ince additional 
6790: 49 2f 4f 0a 20 20 6d 75 73 74 20 6f 63 63 75 72  I/O.  must occur
67a0: 2e 20 20 4f 6e 20 74 68 65 20 6f 74 68 65 72 20  .  On the other 
67b0: 68 61 6e 64 2c 20 73 65 63 75 72 65 5f 64 65 6c  hand, secure_del
67c0: 65 74 65 20 63 61 6e 20 70 72 65 76 65 6e 74 20  ete can prevent 
67d0: 66 72 61 67 6d 65 6e 74 73 20 6f 66 20 0a 20 20  fragments of .  
67e0: 73 65 6e 73 69 74 69 76 65 20 69 6e 66 6f 72 6d  sensitive inform
67f0: 61 74 69 6f 6e 20 66 72 6f 6d 20 6c 69 6e 67 65  ation from linge
6800: 72 69 6e 67 20 69 6e 20 75 6e 75 73 65 64 20 70  ring in unused p
6810: 61 72 74 73 20 6f 66 20 74 68 65 20 64 61 74 61  arts of the data
6820: 62 61 73 65 20 66 69 6c 65 20 0a 20 20 61 66 74  base file .  aft
6830: 65 72 20 69 74 20 68 61 73 20 62 65 65 6e 20 64  er it has been d
6840: 65 6c 65 74 65 64 2e 20 20 53 65 65 20 74 68 65  eleted.  See the
6850: 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f   documentation o
6860: 6e 20 74 68 65 0a 20 20 5b 73 65 63 75 72 65 5f  n the.  [secure_
6870: 64 65 6c 65 74 65 20 70 72 61 67 6d 61 5d 20 66  delete pragma] f
6880: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
6890: 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f  formation..}..CO
68a0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
68b0: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
68c0: 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 20 6f 72  <i>&lt;0 or 1 or
68d0: 20 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   2&gt;</i>} {.  
68e0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 6f 6e 74  This option cont
68f0: 72 6f 6c 73 20 77 68 65 74 68 65 72 20 6f 72 20  rols whether or 
6900: 6e 6f 74 20 63 6f 64 65 20 69 73 20 69 6e 63 6c  not code is incl
6910: 75 64 65 64 20 69 6e 20 53 51 4c 69 74 65 20 74  uded in SQLite t
6920: 6f 0a 20 20 65 6e 61 62 6c 65 20 69 74 20 74 6f  o.  enable it to
6930: 20 6f 70 65 72 61 74 65 20 73 61 66 65 6c 79 20   operate safely 
6940: 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64  in a multithread
6950: 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 20  ed environment. 
6960: 20 54 68 65 0a 20 20 64 65 66 61 75 6c 74 20 69   The.  default i
6970: 73 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  s SQLITE_THREADS
6980: 41 46 45 3d 31 20 77 68 69 63 68 20 69 73 20 73  AFE=1 which is s
6990: 61 66 65 20 66 6f 72 20 75 73 65 20 69 6e 20 61  afe for use in a
69a0: 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 0a 20   multithreaded. 
69b0: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 20 20 57   environment.  W
69c0: 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  hen compiled wit
69d0: 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  h SQLITE_THREADS
69e0: 41 46 45 3d 30 20 61 6c 6c 20 6d 75 74 65 78 69  AFE=0 all mutexi
69f0: 6e 67 20 63 6f 64 65 0a 20 20 69 73 20 6f 6d 69  ng code.  is omi
6a00: 74 74 65 64 20 61 6e 64 20 69 74 20 69 73 20 75  tted and it is u
6a10: 6e 73 61 66 65 20 74 6f 20 75 73 65 20 53 51 4c  nsafe to use SQL
6a20: 69 74 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68  ite in a multith
6a30: 72 65 61 64 65 64 20 70 72 6f 67 72 61 6d 2e 0a  readed program..
6a40: 20 20 57 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20    When compiled 
6a50: 77 69 74 68 20 53 51 4c 49 54 45 5f 54 48 52 45  with SQLITE_THRE
6a60: 41 44 53 41 46 45 3d 32 2c 20 53 51 4c 69 74 65  ADSAFE=2, SQLite
6a70: 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20   can be used in 
6a80: 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 0a  a multithreaded.
6a90: 20 20 70 72 6f 67 72 61 6d 20 73 6f 20 6c 6f 6e    program so lon
6aa0: 67 20 61 73 20 6e 6f 20 74 77 6f 20 74 68 72 65  g as no two thre
6ab0: 61 64 73 20 61 74 74 65 6d 70 74 20 74 6f 20 75  ads attempt to u
6ac0: 73 65 20 74 68 65 20 73 61 6d 65 0a 20 20 5b 64  se the same.  [d
6ad0: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
6ae0: 6f 6e 5d 20 28 6f 72 20 61 6e 79 20 5b 70 72 65  on] (or any [pre
6af0: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73  pared statements
6b00: 5d 20 64 65 72 69 76 65 64 20 66 72 6f 6d 0a 20  ] derived from. 
6b10: 20 74 68 61 74 20 64 61 74 61 62 61 73 65 20 63   that database c
6b20: 6f 6e 6e 65 63 74 69 6f 6e 29 20 61 74 20 74 68  onnection) at th
6b30: 65 20 73 61 6d 65 20 74 69 6d 65 2e 0a 0a 20 20  e same time...  
6b40: 54 6f 20 70 75 74 20 69 74 20 61 6e 6f 74 68 65  To put it anothe
6b50: 72 20 77 61 79 2c 20 53 51 4c 49 54 45 5f 54 48  r way, SQLITE_TH
6b60: 52 45 41 44 53 41 46 45 3d 31 20 73 65 74 73 20  READSAFE=1 sets 
6b70: 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20 5b 74  the default.  [t
6b80: 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74  hreading mode] t
6b90: 6f 20 53 65 72 69 61 6c 69 7a 65 64 2e 20 20 53  o Serialized.  S
6ba0: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
6bb0: 3d 32 20 73 65 74 73 20 74 68 65 20 64 65 66 61  =2 sets the defa
6bc0: 75 6c 74 0a 20 20 5b 74 68 72 65 61 64 69 6e 67  ult.  [threading
6bd0: 20 6d 6f 64 65 5d 20 74 6f 20 4d 75 6c 74 69 2d   mode] to Multi-
6be0: 74 68 72 65 61 64 65 64 2e 20 20 41 6e 64 20 53  threaded.  And S
6bf0: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
6c00: 3d 30 20 73 65 74 73 20 74 68 65 0a 20 20 5b 74  =0 sets the.  [t
6c10: 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74  hreading mode] t
6c20: 6f 20 53 69 6e 67 6c 65 2d 74 68 72 65 61 64 65  o Single-threade
6c30: 64 2e 0a 0a 20 20 54 68 65 20 76 61 6c 75 65 20  d...  The value 
6c40: 6f 66 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44  of SQLITE_THREAD
6c50: 53 41 46 45 20 63 61 6e 20 62 65 20 64 65 74 65  SAFE can be dete
6c60: 72 6d 69 6e 65 64 20 61 74 20 72 75 6e 2d 74 69  rmined at run-ti
6c70: 6d 65 0a 20 20 75 73 69 6e 67 20 74 68 65 20 5b  me.  using the [
6c80: 73 71 6c 69 74 65 33 5f 74 68 72 65 61 64 73 61  sqlite3_threadsa
6c90: 66 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e  fe()] interface.
6ca0: 0a 0a 20 20 57 68 65 6e 20 53 51 4c 69 74 65 20  ..  When SQLite 
6cb0: 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65  has been compile
6cc0: 64 20 77 69 74 68 20 53 51 4c 49 54 45 5f 54 48  d with SQLITE_TH
6cd0: 52 45 41 44 53 41 46 45 3d 31 20 6f 72 0a 20 20  READSAFE=1 or.  
6ce0: 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
6cf0: 45 3d 32 20 74 68 65 6e 20 74 68 65 20 5b 74 68  E=2 then the [th
6d00: 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 0a 20 20  reading mode].  
6d10: 63 61 6e 20 62 65 20 61 6c 74 65 72 65 64 20 61  can be altered a
6d20: 74 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67  t run-time using
6d30: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f   the [sqlite3_co
6d40: 6e 66 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63  nfig()] interfac
6d50: 65 20 74 6f 67 65 74 68 65 72 0a 20 20 77 69 74  e together.  wit
6d60: 68 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 76  h one of these v
6d70: 65 72 62 73 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20  erbs:..  <ul>.  
6d80: 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  <li>[SQLITE_CONF
6d90: 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 5d  IG_SINGLETHREAD]
6da0: 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43  .  <li>[SQLITE_C
6db0: 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41  ONFIG_MULTITHREA
6dc0: 44 5d 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49 54 45  D].  <li>[SQLITE
6dd0: 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a  _CONFIG_SERIALIZ
6de0: 45 44 5d 0a 20 20 3c 2f 75 6c 3e 0a 0a 20 20 54  ED].  </ul>..  T
6df0: 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  he [SQLITE_OPEN_
6e00: 4e 4f 4d 55 54 45 58 5d 20 61 6e 64 0a 20 20 5b  NOMUTEX] and.  [
6e10: 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 46 55 4c 4c  SQLITE_OPEN_FULL
6e20: 4d 55 54 45 58 5d 20 66 6c 61 67 73 20 74 6f 20  MUTEX] flags to 
6e30: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32  [sqlite3_open_v2
6e40: 28 29 5d 20 63 61 6e 20 61 6c 73 6f 20 62 65 20  ()] can also be 
6e50: 75 73 65 64 0a 20 20 74 6f 20 61 64 6a 75 73 74  used.  to adjust
6e60: 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20   the [threading 
6e70: 6d 6f 64 65 5d 20 6f 66 20 69 6e 64 69 76 69 64  mode] of individ
6e80: 75 61 6c 20 5b 64 61 74 61 62 61 73 65 20 63 6f  ual [database co
6e90: 6e 6e 65 63 74 69 6f 6e 73 5d 0a 20 20 61 74 20  nnections].  at 
6ea0: 72 75 6e 2d 74 69 6d 65 2e 0a 0a 20 20 4e 6f 74  run-time...  Not
6eb0: 65 20 74 68 61 74 20 77 68 65 6e 20 53 51 4c 69  e that when SQLi
6ec0: 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77  te is compiled w
6ed0: 69 74 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41  ith SQLITE_THREA
6ee0: 44 53 41 46 45 3d 30 2c 20 74 68 65 20 63 6f 64  DSAFE=0, the cod
6ef0: 65 0a 20 20 74 6f 20 6d 61 6b 65 20 53 51 4c 69  e.  to make SQLi
6f00: 74 65 20 74 68 72 65 61 64 73 61 66 65 20 69 73  te threadsafe is
6f10: 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68   omitted from th
6f20: 65 20 62 75 69 6c 64 2e 20 20 57 68 65 6e 20 74  e build.  When t
6f30: 68 69 73 20 6f 63 63 75 72 73 2c 0a 20 20 69 74  his occurs,.  it
6f40: 20 69 73 20 69 6d 70 6f 73 73 69 62 6c 65 20 74   is impossible t
6f50: 6f 20 63 68 61 6e 67 65 20 74 68 65 20 5b 74 68  o change the [th
6f60: 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 61 74  reading mode] at
6f70: 20 73 74 61 72 74 2d 74 69 6d 65 20 6f 72 20 72   start-time or r
6f80: 75 6e 2d 74 69 6d 65 2e 0a 0a 20 20 53 65 65 20  un-time...  See 
6f90: 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d  the [threading m
6fa0: 6f 64 65 5d 20 64 6f 63 75 6d 65 6e 74 61 74 69  ode] documentati
6fb0: 6f 6e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  on for additiona
6fc0: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 20 20  l information.  
6fd0: 6f 6e 20 61 73 70 65 63 74 73 20 6f 66 20 75 73  on aspects of us
6fe0: 69 6e 67 20 53 51 4c 69 74 65 20 69 6e 20 61 20  ing SQLite in a 
6ff0: 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 65 6e  multithreaded en
7000: 76 69 72 6f 6e 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f  vironment..}..CO
7010: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
7020: 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3d  LITE_TEMP_STORE=
7030: 3c 69 3e 26 6c 74 3b 30 20 74 68 72 6f 75 67 68  <i>&lt;0 through
7040: 20 33 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   3&gt;</i>} {.  
7050: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 6f 6e 74  This option cont
7060: 72 6f 6c 73 20 77 68 65 74 68 65 72 20 74 65 6d  rols whether tem
7070: 70 6f 72 61 72 79 20 66 69 6c 65 73 20 61 72 65  porary files are
7080: 20 73 74 6f 72 65 64 20 6f 6e 20 64 69 73 6b 20   stored on disk 
7090: 6f 72 0a 20 20 69 6e 20 6d 65 6d 6f 72 79 2e 20  or.  in memory. 
70a0: 20 54 68 65 20 6d 65 61 6e 69 6e 67 73 20 66 6f   The meanings fo
70b0: 72 20 76 61 72 69 6f 75 73 20 73 65 74 74 69 6e  r various settin
70c0: 67 73 20 6f 66 20 74 68 69 73 20 63 6f 6d 70 69  gs of this compi
70d0: 6c 65 2d 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e  le-time.  option
70e0: 20 61 72 65 20 61 73 20 66 6f 6c 6c 6f 77 73 3a   are as follows:
70f0: 0a 0a 20 20 3c 74 61 62 6c 65 20 63 65 6c 6c 70  ..  <table cellp
7100: 61 64 64 69 6e 67 3d 22 32 22 20 62 6f 72 64 65  adding="2" borde
7110: 72 3d 22 31 22 3e 0a 20 20 3c 74 72 3e 3c 74 68  r="1">.  <tr><th
7120: 3e 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f  >SQLITE_TEMP_STO
7130: 52 45 3c 2f 74 68 3e 3c 74 68 3e 4d 65 61 6e 69  RE</th><th>Meani
7140: 6e 67 3c 2f 74 68 3e 3c 2f 74 72 3e 0a 20 20 3c  ng</th></tr>.  <
7150: 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  tr><td align="ce
7160: 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e  nter">0</td><td>
7170: 41 6c 77 61 79 73 20 75 73 65 20 74 65 6d 70 6f  Always use tempo
7180: 72 61 72 79 20 66 69 6c 65 73 3c 2f 74 64 3e 3c  rary files</td><
7190: 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61  /tr>.  <tr><td a
71a0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c  lign="center">1<
71b0: 2f 74 64 3e 3c 74 64 3e 55 73 65 20 66 69 6c 65  /td><td>Use file
71c0: 73 20 62 79 20 64 65 66 61 75 6c 74 20 62 75 74  s by default but
71d0: 20 61 6c 6c 6f 77 20 74 68 65 0a 20 20 5b 50 52   allow the.  [PR
71e0: 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 5d  AGMA temp_store]
71f0: 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 6f 76 65 72   command to over
7200: 72 69 64 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20  ride</td></tr>. 
7210: 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22   <tr><td align="
7220: 63 65 6e 74 65 72 22 3e 32 3c 2f 74 64 3e 3c 74  center">2</td><t
7230: 64 3e 55 73 65 20 6d 65 6d 6f 72 79 20 62 79 20  d>Use memory by 
7240: 64 65 66 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f  default but allo
7250: 77 20 74 68 65 0a 20 20 5b 50 52 41 47 4d 41 20  w the.  [PRAGMA 
7260: 74 65 6d 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d  temp_store] comm
7270: 61 6e 64 20 74 6f 20 6f 76 65 72 72 69 64 65 3c  and to override<
7280: 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e  /td></tr>.  <tr>
7290: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
72a0: 72 22 3e 33 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77  r">3</td><td>Alw
72b0: 61 79 73 20 75 73 65 20 6d 65 6d 6f 72 79 3c 2f  ays use memory</
72c0: 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 2f 74 61 62  td></tr>.  </tab
72d0: 6c 65 3e 0a 0a 20 20 54 68 65 20 64 65 66 61 75  le>..  The defau
72e0: 6c 74 20 73 65 74 74 69 6e 67 20 69 73 20 31 2e  lt setting is 1.
72f0: 20 20 0a 20 20 41 64 64 69 74 69 6f 6e 61 6c 20    .  Additional 
7300: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 63 61 6e 20  information can 
7310: 62 65 20 66 6f 75 6e 64 20 69 6e 20 5b 74 65 6d  be found in [tem
7320: 70 73 74 6f 72 65 20 7c 20 74 65 6d 70 66 69 6c  pstore | tempfil
7330: 65 73 2e 68 74 6d 6c 5d 2e 0a 7d 0a 0a 43 4f 4d  es.html]..}..COM
7340: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
7350: 49 54 45 5f 54 52 41 43 45 5f 53 49 5a 45 5f 4c  ITE_TRACE_SIZE_L
7360: 49 4d 49 54 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b  IMIT=<i>N</i>} {
7370: 0a 20 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f  .  If this macro
7380: 20 69 73 20 64 65 66 69 6e 65 64 20 74 6f 20 61   is defined to a
7390: 20 70 6f 73 69 74 69 76 65 20 69 6e 74 65 67 65   positive intege
73a0: 72 20 3c 69 3e 4e 3c 2f 69 3e 2c 20 74 68 65 6e  r <i>N</i>, then
73b0: 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 0a 20   the length of. 
73c0: 20 73 74 72 69 6e 67 73 20 61 6e 64 20 42 4c 4f   strings and BLO
73d0: 42 20 74 68 61 74 20 61 72 65 20 65 78 70 61 6e  B that are expan
73e0: 64 65 64 20 69 6e 74 6f 20 70 61 72 61 6d 65 74  ded into paramet
73f0: 65 72 73 20 69 6e 20 74 68 65 20 6f 75 74 70 75  ers in the outpu
7400: 74 20 6f 66 0a 20 20 5b 73 71 6c 69 74 65 33 5f  t of.  [sqlite3_
7410: 74 72 61 63 65 28 29 5d 20 69 73 20 6c 69 6d 69  trace()] is limi
7420: 74 65 64 20 74 6f 20 3c 69 3e 4e 3c 2f 69 3e 20  ted to <i>N</i> 
7430: 62 79 74 65 73 2e 20 20 0a 7d 0a 0a 43 4f 4d 50  bytes.  .}..COMP
7440: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7450: 54 45 5f 55 53 45 5f 55 52 49 7d 20 7b 0a 20 20  TE_USE_URI} {.  
7460: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
7470: 65 73 20 74 68 65 20 5b 55 52 49 20 66 69 6c 65  es the [URI file
7480: 6e 61 6d 65 5d 20 70 72 6f 63 65 73 73 20 6c 6f  name] process lo
7490: 67 69 63 20 74 6f 20 62 65 20 65 6e 61 62 6c 65  gic to be enable
74a0: 64 20 62 79 20 0a 20 20 64 65 66 61 75 6c 74 2e  d by .  default.
74b0: 20 20 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61    .}..</tcl>..<a
74c0: 20 6e 61 6d 65 3d 22 65 6e 61 62 6c 65 66 65 61   name="enablefea
74d0: 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e  tures"></a>.<h1>
74e0: 20 4f 70 74 69 6f 6e 73 20 54 6f 20 45 6e 61 62   Options To Enab
74f0: 6c 65 20 46 65 61 74 75 72 65 73 20 4e 6f 72 6d  le Features Norm
7500: 61 6c 6c 79 20 54 75 72 6e 65 64 20 4f 66 66 3c  ally Turned Off<
7510: 2f 68 31 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50  /h1>..<tcl>.COMP
7520: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7530: 54 45 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54  TE_ALLOW_URI_AUT
7540: 48 4f 52 49 54 59 7d 20 7b 0a 20 20 5b 55 52 49  HORITY} {.  [URI
7550: 20 66 69 6c 65 6e 61 6d 65 73 5d 20 6e 6f 72 6d   filenames] norm
7560: 61 6c 6c 79 20 74 68 72 6f 77 73 20 61 6e 20 65  ally throws an e
7570: 72 72 6f 72 20 69 66 20 74 68 65 20 61 75 74 68  rror if the auth
7580: 6f 72 69 74 79 20 73 65 63 74 69 6f 6e 20 69 73  ority section is
7590: 0a 20 20 6e 6f 74 20 65 69 74 68 65 72 20 65 6d  .  not either em
75a0: 70 74 79 20 6f 72 20 22 6c 6f 63 61 6c 68 6f 73  pty or "localhos
75b0: 74 22 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 66  t".  However, if
75c0: 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69   SQLite is compi
75d0: 6c 65 64 20 77 69 74 68 0a 20 20 74 68 65 20 53  led with.  the S
75e0: 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 55 52 49 5f  QLITE_ALLOW_URI_
75f0: 41 55 54 48 4f 52 49 54 59 20 63 6f 6d 70 69 6c  AUTHORITY compil
7600: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74  e-time option, t
7610: 68 65 6e 20 74 68 65 20 55 52 49 20 69 73 0a 20  hen the URI is. 
7620: 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20   converted into 
7630: 61 20 55 6e 69 66 6f 72 6d 20 4e 61 6d 69 6e 67  a Uniform Naming
7640: 20 43 6f 6e 76 65 6e 74 69 6f 6e 20 28 55 4e 43   Convention (UNC
7650: 29 20 66 69 6c 65 6e 61 6d 65 20 61 6e 64 20 70  ) filename and p
7660: 61 73 73 65 64 0a 20 20 64 6f 77 6e 20 74 6f 20  assed.  down to 
7670: 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6f  the underlying o
7680: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
7690: 74 68 61 74 20 77 61 79 2e 20 20 0a 20 20 3c 70  that way.  .  <p
76a0: 3e 0a 20 20 53 6f 6d 65 20 66 75 74 75 72 65 20  >.  Some future 
76b0: 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69  versions of SQLi
76c0: 74 65 20 6d 61 79 20 63 68 61 6e 67 65 20 74 6f  te may change to
76d0: 20 65 6e 61 62 6c 65 20 74 68 69 73 20 66 65 61   enable this fea
76e0: 74 75 72 65 0a 20 20 62 79 20 64 65 66 61 75 6c  ture.  by defaul
76f0: 74 2e 0a 7d 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  t..}.COMPILE_OPT
7700: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 41 4c 4c 4f  ION {SQLITE_ALLO
7710: 57 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58  W_COVERING_INDEX
7720: 5f 53 43 41 4e 3d 3c 69 3e 26 6c 74 3b 30 20 6f  _SCAN=<i>&lt;0 o
7730: 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20  r 1&gt;</i>} {. 
7740: 20 54 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65   This C-preproce
7750: 73 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69  ss macro determi
7760: 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  nes the default 
7770: 73 65 74 74 69 6e 67 20 6f 66 20 74 68 65 0a 20  setting of the. 
7780: 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
7790: 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53  COVERING_INDEX_S
77a0: 43 41 4e 5d 20 63 6f 6e 66 69 67 75 72 61 74 69  CAN] configurati
77b0: 6f 6e 20 73 65 74 74 69 6e 67 2e 20 20 49 74 20  on setting.  It 
77c0: 64 65 66 61 75 6c 74 73 0a 20 20 74 6f 20 31 20  defaults.  to 1 
77d0: 28 6f 6e 29 20 77 68 69 63 68 20 6d 65 61 6e 73  (on) which means
77e0: 20 74 68 61 74 20 63 6f 76 65 72 69 6e 67 20 69   that covering i
77f0: 6e 64 69 63 65 73 20 61 72 65 20 75 73 65 64 20  ndices are used 
7800: 66 6f 72 20 66 75 6c 6c 20 74 61 62 6c 65 0a 20  for full table. 
7810: 20 73 63 61 6e 73 20 77 68 65 72 65 20 70 6f 73   scans where pos
7820: 73 69 62 6c 65 2c 20 69 6e 20 6f 72 64 65 72 20  sible, in order 
7830: 74 6f 20 72 65 64 75 63 65 20 49 2f 4f 20 61 6e  to reduce I/O an
7840: 64 20 69 6d 70 72 6f 76 65 20 70 65 72 66 6f 72  d improve perfor
7850: 6d 61 6e 63 65 2e 0a 20 20 48 6f 77 65 76 65 72  mance..  However
7860: 2c 20 74 68 65 20 75 73 65 20 6f 66 20 61 20 63  , the use of a c
7870: 6f 76 65 72 69 6e 67 20 69 6e 64 65 78 20 66 6f  overing index fo
7880: 72 20 61 20 66 75 6c 6c 20 73 63 61 6e 20 77 69  r a full scan wi
7890: 6c 6c 20 63 61 75 73 65 20 72 65 73 75 6c 74 73  ll cause results
78a0: 0a 20 20 74 6f 20 61 70 70 65 61 72 20 69 6e 20  .  to appear in 
78b0: 61 20 64 69 66 66 65 72 65 6e 74 20 6f 72 64 65  a different orde
78c0: 72 20 66 72 6f 6d 20 6c 65 67 61 63 79 2c 20 77  r from legacy, w
78d0: 68 69 63 68 20 63 6f 75 6c 64 20 63 61 75 73 65  hich could cause
78e0: 20 73 6f 6d 65 0a 20 20 28 69 6e 63 6f 72 72 65   some.  (incorre
78f0: 63 74 6c 79 2d 63 6f 64 65 64 29 20 6c 65 67 61  ctly-coded) lega
7900: 63 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20  cy applications 
7910: 74 6f 20 62 72 65 61 6b 2e 20 20 48 65 6e 63 65  to break.  Hence
7920: 2c 20 74 68 65 20 63 6f 76 65 72 69 6e 67 0a 20  , the covering. 
7930: 20 69 6e 64 65 78 20 73 63 61 6e 20 6f 70 74 69   index scan opti
7940: 6f 6e 20 63 61 6e 20 62 65 20 64 69 73 61 62 6c  on can be disabl
7950: 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  ed at compile-ti
7960: 6d 65 20 6f 6e 20 73 79 73 74 65 6d 73 20 74 68  me on systems th
7970: 61 74 20 77 68 61 74 0a 20 20 74 6f 20 6d 69 6e  at what.  to min
7980: 69 6d 69 7a 65 20 74 68 65 69 72 20 72 69 73 6b  imize their risk
7990: 20 6f 66 20 65 78 70 6f 73 69 6e 67 20 65 72 72   of exposing err
79a0: 6f 72 73 20 69 6e 20 6c 65 67 61 63 79 20 61 70  ors in legacy ap
79b0: 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43  plications..}..C
79c0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
79d0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 38 5f 33  QLITE_ENABLE_8_3
79e0: 5f 4e 41 4d 45 53 3d 3c 69 3e 26 6c 74 3b 31 20  _NAMES=<i>&lt;1 
79f0: 6f 72 20 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  or 2&gt;</i>} {.
7a00: 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70    If this C-prep
7a10: 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69  rocessor macro i
7a20: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20  s defined, then 
7a30: 65 78 74 72 61 20 63 6f 64 65 20 69 73 0a 20 20  extra code is.  
7a40: 69 6e 63 6c 75 64 65 64 20 74 68 61 74 20 61 6c  included that al
7a50: 6c 6f 77 73 20 53 51 4c 69 74 65 20 74 6f 20 66  lows SQLite to f
7a60: 75 6e 63 74 69 6f 6e 20 6f 6e 20 61 20 66 69 6c  unction on a fil
7a70: 65 73 79 73 74 65 6d 20 74 68 61 74 0a 20 20 6f  esystem that.  o
7a80: 6e 6c 79 20 73 75 70 70 6f 72 74 20 38 2b 33 20  nly support 8+3 
7a90: 66 69 6c 65 6e 61 6d 65 73 2e 20 20 49 66 20 74  filenames.  If t
7aa0: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73  he value of this
7ab0: 20 6d 61 63 72 6f 20 69 73 20 31 2c 0a 20 20 74   macro is 1,.  t
7ac0: 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20  hen the default 
7ad0: 62 65 68 61 76 69 6f 72 20 69 73 20 74 6f 20 63  behavior is to c
7ae0: 6f 6e 74 69 6e 75 65 20 74 6f 20 75 73 65 20 6c  ontinue to use l
7af0: 6f 6e 67 20 66 69 6c 65 6e 61 6d 65 73 20 61 6e  ong filenames an
7b00: 64 0a 20 20 74 6f 20 6f 6e 6c 79 20 75 73 65 20  d.  to only use 
7b10: 38 2b 33 20 66 69 6c 65 6e 61 6d 65 73 20 69 66  8+3 filenames if
7b20: 20 74 68 65 20 0a 20 20 64 61 74 61 62 61 73 65   the .  database
7b30: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6f   connection is o
7b40: 70 65 6e 65 64 20 75 73 69 6e 67 20 5b 55 52 49  pened using [URI
7b50: 20 66 69 6c 65 6e 61 6d 65 73 5d 20 77 69 74 68   filenames] with
7b60: 0a 20 20 74 68 65 20 22 3c 74 74 3e 38 5f 33 5f  .  the "<tt>8_3_
7b70: 6e 61 6d 65 73 3d 31 3c 2f 74 74 3e 22 20 71 75  names=1</tt>" qu
7b80: 65 72 79 20 70 61 72 61 6d 65 74 65 72 2e 20 20  ery parameter.  
7b90: 49 66 20 74 68 65 20 76 61 6c 75 65 20 6f 66 0a  If the value of.
7ba0: 20 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20    this macro is 
7bb0: 32 2c 20 74 68 65 6e 20 74 68 65 20 75 73 65 20  2, then the use 
7bc0: 6f 66 20 38 2b 33 20 66 69 6c 65 6e 61 6d 65 73  of 8+3 filenames
7bd0: 20 62 65 63 6f 6d 65 73 20 74 68 65 20 64 65 66   becomes the def
7be0: 61 75 6c 74 0a 20 20 62 75 74 20 6d 61 79 20 62  ault.  but may b
7bf0: 65 20 64 69 73 61 62 6c 65 64 20 6f 6e 20 75 73  e disabled on us
7c00: 69 6e 67 20 74 68 65 20 3c 74 74 3e 38 5f 33 5f  ing the <tt>8_3_
7c10: 6e 61 6d 65 73 3d 30 3c 2f 74 74 3e 20 71 75 65  names=0</tt> que
7c20: 72 79 20 70 61 72 61 6d 65 74 65 72 2e 0a 7d 0a  ry parameter..}.
7c30: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
7c40: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 41  {SQLITE_ENABLE_A
7c50: 50 49 5f 41 52 4d 4f 52 7d 20 7b 0a 20 20 57 68  PI_ARMOR} {.  Wh
7c60: 65 6e 20 64 65 66 69 6e 65 64 2c 20 74 68 69 73  en defined, this
7c70: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C-preprocessor 
7c80: 6d 61 63 72 6f 20 61 63 74 69 76 61 74 65 73 20  macro activates 
7c90: 65 78 74 72 61 20 63 6f 64 65 20 74 68 61 74 0a  extra code that.
7ca0: 20 20 61 74 74 65 6d 70 74 73 20 74 6f 20 64 65    attempts to de
7cb0: 74 65 63 74 20 6d 69 73 75 73 65 20 6f 66 20 74  tect misuse of t
7cc0: 68 65 20 53 51 4c 69 74 65 20 41 50 49 2c 20 73  he SQLite API, s
7cd0: 75 63 68 20 61 73 20 70 61 73 73 69 6e 67 20 69  uch as passing i
7ce0: 6e 20 4e 55 4c 4c 0a 20 20 70 6f 69 6e 74 65 72  n NULL.  pointer
7cf0: 73 20 74 6f 20 72 65 71 75 69 72 65 64 20 70 61  s to required pa
7d00: 72 61 6d 65 74 65 72 73 20 6f 72 20 75 73 69 6e  rameters or usin
7d10: 67 20 6f 62 6a 65 63 74 73 20 61 66 74 65 72 20  g objects after 
7d20: 74 68 65 79 20 68 61 76 65 20 62 65 65 6e 0a 20  they have been. 
7d30: 20 64 65 73 74 72 6f 79 65 64 2e 0a 7d 0a 0a 43   destroyed..}..C
7d40: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
7d50: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 41 54 4f  QLITE_ENABLE_ATO
7d60: 4d 49 43 5f 57 52 49 54 45 7d 20 7b 0a 20 20 49  MIC_WRITE} {.  I
7d70: 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63  f this C-preproc
7d80: 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64  essor macro is d
7d90: 65 66 69 6e 65 64 20 61 6e 64 20 69 66 20 74 68  efined and if th
7da0: 65 0a 20 20 78 44 65 76 69 63 65 43 68 61 72 61  e.  xDeviceChara
7db0: 63 74 65 72 69 73 74 69 63 73 20 6d 65 74 68 6f  cteristics metho
7dc0: 64 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 69 6f  d of [sqlite3_io
7dd0: 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74  _methods] object
7de0: 20 66 6f 72 0a 20 20 61 20 64 61 74 61 62 61 73   for.  a databas
7df0: 65 20 66 69 6c 65 20 72 65 70 6f 72 74 73 20 28  e file reports (
7e00: 76 69 61 20 6f 6e 65 20 6f 66 20 74 68 65 20 5b  via one of the [
7e10: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
7e20: 4d 49 43 5d 20 62 69 74 73 29 0a 20 20 74 68 61  MIC] bits).  tha
7e30: 74 20 74 68 65 20 66 69 6c 65 73 79 73 74 65 6d  t the filesystem
7e40: 20 73 75 70 70 6f 72 74 73 20 61 74 6f 6d 69 63   supports atomic
7e50: 20 77 72 69 74 65 73 20 61 6e 64 20 69 66 20 61   writes and if a
7e60: 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 20 20 69   transaction.  i
7e70: 6e 76 6f 6c 76 65 73 20 61 20 63 68 61 6e 67 65  nvolves a change
7e80: 20 74 6f 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c   to only a singl
7e90: 65 20 70 61 67 65 20 6f 66 20 74 68 65 20 64 61  e page of the da
7ea0: 74 61 62 61 73 65 20 66 69 6c 65 2c 0a 20 20 74  tabase file,.  t
7eb0: 68 65 6e 20 74 68 65 20 74 72 61 6e 73 61 63 74  hen the transact
7ec0: 69 6f 6e 20 63 6f 6d 6d 69 74 73 20 77 69 74 68  ion commits with
7ed0: 20 6a 75 73 74 20 61 20 73 69 6e 67 6c 65 20 77   just a single w
7ee0: 72 69 74 65 20 72 65 71 75 65 73 74 20 6f 66 0a  rite request of.
7ef0: 20 20 61 20 73 69 6e 67 6c 65 20 70 61 67 65 20    a single page 
7f00: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
7f10: 61 6e 64 20 6e 6f 20 72 6f 6c 6c 62 61 63 6b 20  and no rollback 
7f20: 6a 6f 75 72 6e 61 6c 20 69 73 20 63 72 65 61 74  journal is creat
7f30: 65 64 0a 20 20 6f 72 20 77 72 69 74 74 65 6e 2e  ed.  or written.
7f40: 20 20 4f 6e 20 66 69 6c 65 73 79 73 74 65 6d 73    On filesystems
7f50: 20 74 68 61 74 20 73 75 70 70 6f 72 74 20 61 74   that support at
7f60: 6f 6d 69 63 20 77 72 69 74 65 73 2c 20 74 68 69  omic writes, thi
7f70: 73 0a 20 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  s.  optimization
7f80: 20 63 61 6e 20 72 65 73 75 6c 74 20 69 6e 20 73   can result in s
7f90: 69 67 6e 69 66 69 63 61 6e 74 20 73 70 65 65 64  ignificant speed
7fa0: 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 20 66 6f   improvements fo
7fb0: 72 0a 20 20 73 6d 61 6c 6c 20 75 70 64 61 74 65  r.  small update
7fc0: 73 2e 20 20 48 6f 77 65 76 65 72 2c 20 66 65 77  s.  However, few
7fd0: 20 66 69 6c 65 73 79 73 74 65 6d 73 20 73 75 70   filesystems sup
7fe0: 70 6f 72 74 20 74 68 69 73 20 63 61 70 61 62 69  port this capabi
7ff0: 6c 69 74 79 0a 20 20 61 6e 64 20 74 68 65 20 63  lity.  and the c
8000: 6f 64 65 20 70 61 74 68 73 20 74 68 61 74 20 63  ode paths that c
8010: 68 65 63 6b 20 66 6f 72 20 74 68 69 73 20 63 61  heck for this ca
8020: 70 61 62 69 6c 69 74 79 20 73 6c 6f 77 20 64 6f  pability slow do
8030: 77 6e 20 77 72 69 74 65 0a 20 20 70 65 72 66 6f  wn write.  perfo
8040: 72 6d 61 6e 63 65 20 6f 6e 20 73 79 73 74 65 6d  rmance on system
8050: 73 20 74 68 61 74 20 6c 61 63 6b 20 61 74 6f 6d  s that lack atom
8060: 69 63 20 77 72 69 74 65 20 63 61 70 61 62 69 6c  ic write capabil
8070: 69 74 79 2c 20 73 6f 20 74 68 69 73 0a 20 20 66  ity, so this.  f
8080: 65 61 74 75 72 65 20 69 73 20 64 69 73 61 62 6c  eature is disabl
8090: 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d  ed by default..}
80a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
80b0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
80c0: 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44 41 54 41 7d  COLUMN_METADATA}
80d0: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 43   {.  When this C
80e0: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
80f0: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20  cro is defined, 
8100: 53 51 4c 69 74 65 20 69 6e 63 6c 75 64 65 73 20  SQLite includes 
8110: 73 6f 6d 65 0a 20 20 61 64 64 69 74 69 6f 6e 61  some.  additiona
8120: 6c 20 41 50 49 73 20 74 68 61 74 20 70 72 6f 76  l APIs that prov
8130: 69 64 65 20 63 6f 6e 76 65 6e 69 65 6e 74 20 61  ide convenient a
8140: 63 63 65 73 73 20 74 6f 20 6d 65 74 61 2d 64 61  ccess to meta-da
8150: 74 61 20 61 62 6f 75 74 0a 20 20 74 61 62 6c 65  ta about.  table
8160: 73 20 61 6e 64 20 71 75 65 72 69 65 73 2e 20 20  s and queries.  
8170: 54 68 65 20 41 50 49 73 20 74 68 61 74 20 61 72  The APIs that ar
8180: 65 20 65 6e 61 62 6c 65 64 20 62 79 20 74 68 69  e enabled by thi
8190: 73 20 6f 70 74 69 6f 6e 20 61 72 65 3a 0a 0a 20  s option are:.. 
81a0: 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71   <ul>.  <li> [sq
81b0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
81c0: 61 62 61 73 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f  abase_name()] </
81d0: 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  li>.  <li> [sqli
81e0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
81f0: 61 73 65 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f  ase_name16()] </
8200: 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  li>.  <li> [sqli
8210: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65  te3_column_table
8220: 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20  _name()] </li>. 
8230: 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63   <li> [sqlite3_c
8240: 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65  olumn_table_name
8250: 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c  16()] </li>.  <l
8260: 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  i> [sqlite3_colu
8270: 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 29  mn_origin_name()
8280: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b  ] </li>.  <li> [
8290: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
82a0: 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 29 5d 20  rigin_name16()] 
82b0: 3c 2f 6c 69 3e 0a 20 20 3c 2f 75 6c 3e 0a 7d 0a  </li>.  </ul>.}.
82c0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
82d0: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 44  {SQLITE_ENABLE_D
82e0: 42 53 54 41 54 5f 56 54 41 42 7d 20 7b 0a 20 20  BSTAT_VTAB} {.  
82f0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62  This option enab
8300: 6c 65 73 20 74 68 65 20 5b 64 62 73 74 61 74 20  les the [dbstat 
8310: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 5d 2e 0a  virtual table]..
8320: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
8330: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
8340: 5f 45 58 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54  _EXPLAIN_COMMENT
8350: 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  S} {.  This opti
8360: 6f 6e 20 61 64 64 73 20 65 78 74 72 61 20 6c 6f  on adds extra lo
8370: 67 69 63 20 74 6f 20 53 51 4c 69 74 65 20 74 68  gic to SQLite th
8380: 61 74 20 69 6e 73 65 72 74 73 20 63 6f 6d 6d 65  at inserts comme
8390: 6e 74 20 74 65 78 74 20 69 6e 74 6f 20 74 68 65  nt text into the
83a0: 0a 20 20 6f 75 74 70 75 74 20 6f 66 20 5b 45 58  .  output of [EX
83b0: 50 4c 41 49 4e 5d 2e 20 20 54 68 65 73 65 20 65  PLAIN].  These e
83c0: 78 74 72 61 20 63 6f 6d 6d 65 6e 74 73 20 75 73  xtra comments us
83d0: 65 20 65 78 74 72 61 20 6d 65 6d 6f 72 79 2c 20  e extra memory, 
83e0: 74 68 75 73 0a 20 20 6d 61 6b 69 6e 67 20 5b 70  thus.  making [p
83f0: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
8400: 74 73 5d 20 6c 61 72 67 65 72 20 61 6e 64 20 76  ts] larger and v
8410: 65 72 79 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f  ery slightly slo
8420: 77 65 72 2c 20 61 6e 64 20 73 6f 20 74 68 65 79  wer, and so they
8430: 20 61 72 65 0a 20 20 74 75 72 6e 65 64 20 6f 66   are.  turned of
8440: 66 20 62 79 20 64 65 66 61 75 6c 74 20 61 6e 64  f by default and
8450: 20 69 6e 20 6d 6f 73 74 20 61 70 70 6c 69 63 61   in most applica
8460: 74 69 6f 6e 2e 20 20 42 75 74 20 73 6f 6d 65 20  tion.  But some 
8470: 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20 73 75  applications, su
8480: 63 68 0a 20 20 61 73 20 74 68 65 20 5b 63 6f 6d  ch.  as the [com
8490: 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c 5d  mand-line shell]
84a0: 20 66 6f 72 20 53 51 4c 69 74 65 2c 20 76 61 6c   for SQLite, val
84b0: 75 65 20 63 6c 61 72 69 74 79 20 6f 66 20 45 58  ue clarity of EX
84c0: 50 4c 41 49 4e 20 6f 75 74 70 75 74 0a 20 20 6f  PLAIN output.  o
84d0: 76 65 72 20 72 61 77 20 70 65 72 66 6f 72 6d 61  ver raw performa
84e0: 6e 63 65 20 61 6e 64 20 73 6f 20 74 68 69 73 20  nce and so this 
84f0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
8500: 69 6f 6e 20 69 73 20 61 76 61 69 6c 61 62 6c 65  ion is available
8510: 20 74 6f 20 74 68 65 6d 2e 0a 20 20 54 68 65 20   to them..  The 
8520: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45 58  SQLITE_ENABLE_EX
8530: 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53 20 63  PLAIN_COMMENTS c
8540: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
8550: 6f 6e 20 69 73 20 61 6c 73 6f 20 65 6e 61 62 6c  on is also enabl
8560: 65 64 0a 20 20 61 75 74 6f 6d 61 74 69 63 61 6c  ed.  automatical
8570: 6c 79 20 69 66 20 5b 53 51 4c 49 54 45 5f 44 45  ly if [SQLITE_DE
8580: 42 55 47 5d 20 69 73 20 65 6e 61 62 6c 65 64 2e  BUG] is enabled.
8590: 0a 7d 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  .}...COMPILE_OPT
85a0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
85b0: 4c 45 5f 46 54 53 33 7d 20 7b 0a 20 20 57 68 65  LE_FTS3} {.  Whe
85c0: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
85d0: 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20   defined in the 
85e0: 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20  [amalgamation], 
85f0: 76 65 72 73 69 6f 6e 20 33 0a 20 20 6f 66 20 74  version 3.  of t
8600: 68 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61  he full-text sea
8610: 72 63 68 20 65 6e 67 69 6e 65 20 69 73 20 61 64  rch engine is ad
8620: 64 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64  ded to the build
8630: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a   automatically..
8640: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
8650: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
8660: 5f 46 54 53 33 5f 50 41 52 45 4e 54 48 45 53 49  _FTS3_PARENTHESI
8670: 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  S} {.  This opti
8680: 6f 6e 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20  on modifies the 
8690: 71 75 65 72 79 20 70 61 74 74 65 72 6e 20 70 61  query pattern pa
86a0: 72 73 65 72 20 69 6e 20 46 54 53 33 20 73 75 63  rser in FTS3 suc
86b0: 68 20 74 68 61 74 20 69 74 0a 20 20 73 75 70 70  h that it.  supp
86c0: 6f 72 74 73 20 6f 70 65 72 61 74 6f 72 73 20 41  orts operators A
86d0: 4e 44 20 61 6e 64 20 4e 4f 54 20 28 69 6e 20 61  ND and NOT (in a
86e0: 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 75  ddition to the u
86f0: 73 75 61 6c 20 4f 52 20 61 6e 64 20 4e 45 41 52  sual OR and NEAR
8700: 29 0a 20 20 61 6e 64 20 61 6c 73 6f 20 61 6c 6c  ).  and also all
8710: 6f 77 73 20 71 75 65 72 79 20 65 78 70 72 65 73  ows query expres
8720: 73 69 6f 6e 73 20 74 6f 20 63 6f 6e 74 61 69 6e  sions to contain
8730: 20 6e 65 73 74 65 64 20 70 61 72 65 6e 74 68 65   nested parenthe
8740: 73 69 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  sis..}..COMPILE_
8750: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
8760: 4e 41 42 4c 45 5f 46 54 53 33 5f 54 4f 4b 45 4e  NABLE_FTS3_TOKEN
8770: 49 5a 45 52 7d 20 7b 0a 20 20 54 68 69 73 20 6f  IZER} {.  This o
8780: 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68  ption enables th
8790: 65 20 74 77 6f 2d 61 72 67 75 6d 65 6e 74 20 76  e two-argument v
87a0: 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 5b 66  ersion of the [f
87b0: 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 5d  ts3_tokenizer()]
87c0: 0a 20 20 69 6e 74 65 72 66 61 63 65 2e 20 20 54  .  interface.  T
87d0: 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65  he second argume
87e0: 6e 74 20 74 6f 20 66 74 73 33 5f 74 6f 6b 65 6e  nt to fts3_token
87f0: 69 7a 65 72 28 29 20 69 73 20 73 75 70 70 6f 73  izer() is suppos
8800: 65 20 74 6f 20 62 65 20 61 0a 20 20 70 6f 69 6e  e to be a.  poin
8810: 74 65 72 20 74 6f 20 61 20 66 75 6e 63 74 69 6f  ter to a functio
8820: 6e 20 28 65 6e 63 6f 64 65 64 20 61 73 20 61 20  n (encoded as a 
8830: 42 4c 4f 42 29 20 74 68 61 74 20 69 6d 70 6c 65  BLOB) that imple
8840: 6d 65 6e 74 73 20 61 6e 0a 20 20 61 70 70 6c 69  ments an.  appli
8850: 63 61 74 69 6f 6e 20 64 65 66 69 6e 65 64 20 74  cation defined t
8860: 6f 6b 65 6e 69 7a 65 72 2e 20 20 49 66 20 68 6f  okenizer.  If ho
8870: 73 74 69 6c 65 20 61 63 74 6f 72 73 20 61 72 65  stile actors are
8880: 20 61 62 6c 65 20 74 6f 20 72 75 6e 0a 20 20 74   able to run.  t
8890: 68 65 20 74 77 6f 2d 61 72 67 75 6d 65 6e 74 20  he two-argument 
88a0: 76 65 72 73 69 6f 6e 20 6f 66 20 66 74 73 33 5f  version of fts3_
88b0: 74 6f 6b 65 6e 69 7a 65 72 28 29 20 77 69 74 68  tokenizer() with
88c0: 20 61 6e 20 61 72 62 69 74 72 61 72 79 20 73 65   an arbitrary se
88d0: 63 6f 6e 64 0a 20 20 61 72 67 75 6d 65 6e 74 2c  cond.  argument,
88e0: 20 74 68 65 79 20 63 6f 75 6c 64 20 75 73 65 20   they could use 
88f0: 63 72 61 73 68 20 6f 72 20 74 61 6b 65 20 63 6f  crash or take co
8900: 6e 74 72 6f 6c 20 6f 66 20 74 68 65 20 70 72 6f  ntrol of the pro
8910: 63 65 73 73 2e 20 0a 20 20 3c 70 3e 0a 20 20 42  cess. .  <p>.  B
8920: 65 63 61 75 73 65 20 6f 66 20 73 65 63 75 72 69  ecause of securi
8930: 74 79 20 63 6f 6e 63 65 72 6e 73 2c 20 74 68 65  ty concerns, the
8940: 20 74 77 6f 2d 61 72 67 75 6d 65 6e 74 20 66 74   two-argument ft
8950: 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 66  s3_tokenizer() f
8960: 65 61 74 75 72 65 20 0a 20 20 77 61 73 20 64 69  eature .  was di
8970: 73 61 62 6c 65 64 20 62 65 67 69 6e 6e 69 6e 67  sabled beginning
8980: 20 77 69 74 68 20 5b 56 65 72 73 69 6f 6e 20 33   with [Version 3
8990: 2e 31 31 2e 30 5d 20 28 5b 64 61 74 65 6f 66 3a  .11.0] ([dateof:
89a0: 33 2e 31 31 2e 30 5d 29 0a 20 20 75 6e 6c 65 73  3.11.0]).  unles
89b0: 73 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  s this compile-t
89c0: 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  ime option is us
89d0: 65 64 2e 0a 20 20 5b 56 65 72 73 69 6f 6e 20 33  ed..  [Version 3
89e0: 2e 31 32 2e 30 5d 20 28 5b 64 61 74 65 6f 66 3a  .12.0] ([dateof:
89f0: 33 2e 31 32 2e 30 5d 29 20 61 64 64 65 64 20 74  3.12.0]) added t
8a00: 68 65 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 64  he .  [sqlite3_d
8a10: 62 5f 63 6f 6e 66 69 67 5d 28 64 62 2c 5b 53 51  b_config](db,[SQ
8a20: 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
8a30: 41 42 4c 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49  ABLE_FTS3_TOKENI
8a40: 5a 45 52 5d 2c 31 2c 30 29 20 69 6e 74 65 72 66  ZER],1,0) interf
8a50: 61 63 65 0a 20 20 74 68 61 74 20 61 63 74 69 76  ace.  that activ
8a60: 61 74 65 73 20 74 68 65 20 74 77 6f 2d 61 72 67  ates the two-arg
8a70: 75 6d 65 6e 74 20 76 65 72 73 69 6f 6e 20 6f 66  ument version of
8a80: 20 5b 66 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72   [fts3_tokenizer
8a90: 28 29 5d 0a 20 20 66 6f 72 20 61 20 73 70 65 63  ()].  for a spec
8aa0: 69 66 69 63 20 5b 64 61 74 61 62 61 73 65 20 63  ific [database c
8ab0: 6f 6e 6e 65 63 74 69 6f 6e 5d 20 61 74 20 72 75  onnection] at ru
8ac0: 6e 2d 74 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  n-time..}..COMPI
8ad0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
8ae0: 45 5f 45 4e 41 42 4c 45 5f 46 54 53 34 7d 20 7b  E_ENABLE_FTS4} {
8af0: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
8b00: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 20 69  ion is defined i
8b10: 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74  n the [amalgamat
8b20: 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e 73 20 33  ion], versions 3
8b30: 20 61 6e 64 20 34 0a 20 20 6f 66 20 74 68 65 20   and 4.  of the 
8b40: 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68  full-text search
8b50: 20 65 6e 67 69 6e 65 20 69 73 20 61 64 64 65 64   engine is added
8b60: 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75   to the build au
8b70: 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a  tomatically..}..
8b80: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
8b90: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54  SQLITE_ENABLE_FT
8ba0: 53 35 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  S5} {.  When thi
8bb0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
8bc0: 6e 65 64 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c  ned in the [amal
8bd0: 67 61 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73 69  gamation], versi
8be0: 6f 6e 73 20 35 0a 20 20 6f 66 20 74 68 65 20 66  ons 5.  of the f
8bf0: 75 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20  ull-text search 
8c00: 65 6e 67 69 6e 65 20 28 5b 66 74 73 35 5d 29 20  engine ([fts5]) 
8c10: 69 73 20 61 64 64 65 64 20 74 6f 20 74 68 65 20  is added to the 
8c20: 62 75 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61  build automatica
8c30: 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  lly..}..COMPILE_
8c40: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
8c50: 4e 41 42 4c 45 5f 49 43 55 7d 20 7b 0a 20 20 54  NABLE_ICU} {.  T
8c60: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
8c70: 73 20 74 68 65 20 0a 20 20 5b 68 74 74 70 3a 2f  s the .  [http:/
8c80: 2f 77 77 77 2e 69 63 75 2d 70 72 6f 6a 65 63 74  /www.icu-project
8c90: 2e 6f 72 67 2f 20 7c 20 49 6e 74 65 72 6e 61 74  .org/ | Internat
8ca0: 69 6f 6e 61 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73  ional Components
8cb0: 20 66 6f 72 20 55 6e 69 63 6f 64 65 5d 0a 20 20   for Unicode].  
8cc0: 6f 72 20 22 49 43 55 22 20 65 78 74 65 6e 73 69  or "ICU" extensi
8cd0: 6f 6e 20 74 6f 20 53 51 4c 69 74 65 20 74 6f 20  on to SQLite to 
8ce0: 62 65 20 61 64 64 65 64 20 74 6f 20 74 68 65 20  be added to the 
8cf0: 62 75 69 6c 64 2e 20 20 0a 7d 0a 0a 43 4f 4d 50  build.  .}..COMP
8d00: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
8d10: 54 45 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43  TE_ENABLE_IOTRAC
8d20: 45 7d 20 7b 0a 20 20 57 68 65 6e 20 62 6f 74 68  E} {.  When both
8d30: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
8d40: 20 61 6e 64 20 74 68 65 20 5b 43 6f 6d 6d 61 6e   and the [Comman
8d50: 64 20 4c 69 6e 65 20 49 6e 74 65 72 66 61 63 65  d Line Interface
8d60: 5d 20 28 43 4c 49 29 20 61 72 65 20 62 6f 74 68  ] (CLI) are both
8d70: 20 0a 20 20 63 6f 6d 70 69 6c 65 64 20 77 69 74   .  compiled wit
8d80: 68 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 74  h this option, t
8d90: 68 65 6e 20 74 68 65 20 43 4c 49 20 70 72 6f 76  hen the CLI prov
8da0: 69 64 65 73 20 61 6e 20 65 78 74 72 61 20 63 6f  ides an extra co
8db0: 6d 6d 61 6e 64 0a 20 20 6e 61 6d 65 64 20 22 2e  mmand.  named ".
8dc0: 69 6f 74 72 61 63 65 22 20 74 68 61 74 20 70 72  iotrace" that pr
8dd0: 6f 76 69 64 65 73 20 61 20 6c 6f 77 2d 6c 65 76  ovides a low-lev
8de0: 65 6c 20 6c 6f 67 20 6f 66 20 49 2f 4f 20 61 63  el log of I/O ac
8df0: 74 69 76 69 74 79 2e 0a 20 20 54 68 69 73 20 6f  tivity..  This o
8e00: 70 74 69 6f 6e 20 69 73 20 65 78 70 65 72 69 6d  ption is experim
8e10: 65 6e 74 61 6c 20 61 6e 64 20 6d 61 79 20 62 65  ental and may be
8e20: 20 64 69 73 63 6f 6e 74 69 6e 75 65 64 20 69 6e   discontinued in
8e30: 20 61 20 66 75 74 75 72 65 20 72 65 6c 65 61 73   a future releas
8e40: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
8e50: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
8e60: 42 4c 45 5f 4a 53 4f 4e 31 7d 20 7b 0a 20 20 57  BLE_JSON1} {.  W
8e70: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
8e80: 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68  is defined in th
8e90: 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d  e [amalgamation]
8ea0: 2c 20 74 68 65 0a 20 20 5b 4a 53 4f 4e 20 53 51  , the.  [JSON SQ
8eb0: 4c 20 66 75 6e 63 74 69 6f 6e 73 5d 20 61 72 65  L functions] are
8ec0: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75   added to the bu
8ed0: 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ild automaticall
8ee0: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
8ef0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
8f00: 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c  BLE_LOCKING_STYL
8f10: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
8f20: 6f 6e 20 65 6e 61 62 6c 65 73 20 61 64 64 69 74  on enables addit
8f30: 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 69 6e 20 74  ional logic in t
8f40: 68 65 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20  he OS interface 
8f50: 6c 61 79 65 72 20 66 6f 72 0a 20 20 4d 61 63 20  layer for.  Mac 
8f60: 4f 53 20 58 2e 20 54 68 65 20 61 64 64 69 74 69  OS X. The additi
8f70: 6f 6e 61 6c 20 6c 6f 67 69 63 20 61 74 74 65 6d  onal logic attem
8f80: 70 74 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65  pts to determine
8f90: 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 68 65   the type of the
8fa0: 0a 20 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 69  .  underlying fi
8fb0: 6c 65 73 79 73 74 65 6d 20 61 6e 64 20 63 68 6f  lesystem and cho
8fc0: 6f 73 65 20 61 6e 64 20 61 6c 74 65 72 6e 61 74  ose and alternat
8fd0: 69 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61  ive locking stra
8fe0: 74 65 67 79 0a 20 20 74 68 61 74 20 77 6f 72 6b  tegy.  that work
8ff0: 73 20 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 20  s correctly for 
9000: 74 68 61 74 20 66 69 6c 65 73 79 73 74 65 6d 20  that filesystem 
9010: 74 79 70 65 2e 20 46 69 76 65 20 6c 6f 63 6b 69  type. Five locki
9020: 6e 67 20 73 74 72 61 74 65 67 69 65 73 20 0a 20  ng strategies . 
9030: 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3a 0a   are available:.
9040: 0a 20 20 3c 75 6c 3e 0a 20 20 20 20 3c 6c 69 3e  .  <ul>.    <li>
9050: 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73   POSIX locking s
9060: 74 79 6c 65 2e 20 54 68 69 73 20 69 73 20 74 68  tyle. This is th
9070: 65 20 64 65 66 61 75 6c 74 20 6c 6f 63 6b 69 6e  e default lockin
9080: 67 20 73 74 79 6c 65 20 61 6e 64 20 74 68 65 0a  g style and the.
9090: 20 20 20 20 20 20 20 20 20 73 74 79 6c 65 20 75           style u
90a0: 73 65 64 20 62 79 20 6f 74 68 65 72 20 28 6e 6f  sed by other (no
90b0: 6e 20 4d 61 63 20 4f 53 20 58 29 20 55 6e 69 78  n Mac OS X) Unix
90c0: 65 73 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62  es. Locks are ob
90d0: 74 61 69 6e 65 64 20 61 6e 64 20 0a 20 20 20 20  tained and .    
90e0: 20 20 20 20 20 72 65 6c 65 61 73 65 64 20 75 73       released us
90f0: 69 6e 67 20 74 68 65 20 66 63 6e 74 6c 28 29 20  ing the fcntl() 
9100: 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20  system call...  
9110: 20 20 3c 6c 69 3e 20 41 46 50 20 6c 6f 63 6b 69    <li> AFP locki
9120: 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c  ng style. This l
9130: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20  ocking style is 
9140: 75 73 65 64 20 66 6f 72 20 6e 65 74 77 6f 72 6b  used for network
9150: 20 66 69 6c 65 20 0a 20 20 20 20 20 20 20 20 20   file .         
9160: 73 79 73 74 65 6d 73 20 74 68 61 74 20 75 73 65  systems that use
9170: 20 74 68 65 20 41 46 50 20 28 41 70 70 6c 65 20   the AFP (Apple 
9180: 46 69 6c 69 6e 67 20 50 72 6f 74 6f 63 6f 6c 29  Filing Protocol)
9190: 20 70 72 6f 74 6f 63 6f 6c 2e 20 4c 6f 63 6b 73   protocol. Locks
91a0: 0a 20 20 20 20 20 20 20 20 20 61 72 65 20 6f 62  .         are ob
91b0: 74 61 69 6e 65 64 20 62 79 20 63 61 6c 6c 69 6e  tained by callin
91c0: 67 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 75  g the library fu
91d0: 6e 63 74 69 6f 6e 20 5f 41 46 50 46 53 53 65 74  nction _AFPFSSet
91e0: 4c 6f 63 6b 28 29 2e 0a 0a 20 20 20 20 3c 6c 69  Lock()...    <li
91f0: 3e 20 46 6c 6f 63 6b 20 6c 6f 63 6b 69 6e 67 20  > Flock locking 
9200: 73 74 79 6c 65 2e 20 54 68 69 73 20 69 73 20 75  style. This is u
9210: 73 65 64 20 66 6f 72 20 66 69 6c 65 2d 73 79 73  sed for file-sys
9220: 74 65 6d 73 20 74 68 61 74 20 64 6f 20 6e 6f 74  tems that do not
9230: 0a 20 20 20 20 20 20 20 20 20 73 75 70 70 6f 72  .         suppor
9240: 74 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20  t POSIX locking 
9250: 73 74 79 6c 65 2e 20 4c 6f 63 6b 73 20 61 72 65  style. Locks are
9260: 20 6f 62 74 61 69 6e 65 64 20 61 6e 64 20 72 65   obtained and re
9270: 6c 65 61 73 65 64 20 75 73 69 6e 67 0a 20 20 20  leased using.   
9280: 20 20 20 20 20 20 74 68 65 20 66 6c 6f 63 6b 28        the flock(
9290: 29 20 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a  ) system call...
92a0: 20 20 20 20 3c 6c 69 3e 20 44 6f 74 2d 66 69 6c      <li> Dot-fil
92b0: 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e  e locking style.
92c0: 20 54 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74   This locking st
92d0: 79 6c 65 20 69 73 20 75 73 65 64 20 77 68 65 6e  yle is used when
92e0: 20 6e 65 69 74 68 65 72 0a 20 20 20 20 20 20 20   neither.       
92f0: 20 20 66 6c 6f 63 6b 20 6e 6f 72 20 50 4f 53 49    flock nor POSI
9300: 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73  X locking styles
9310: 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 20 62   are supported b
9320: 79 20 74 68 65 20 66 69 6c 65 20 73 79 73 74 65  y the file syste
9330: 6d 2e 0a 20 20 20 20 20 20 20 20 20 44 61 74 61  m..         Data
9340: 62 61 73 65 20 6c 6f 63 6b 73 20 61 72 65 20 6f  base locks are o
9350: 62 74 61 69 6e 65 64 20 62 79 20 63 72 65 61 74  btained by creat
9360: 69 6e 67 20 61 6e 64 20 65 6e 74 72 79 20 69 6e  ing and entry in
9370: 20 74 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d   the file-system
9380: 0a 20 20 20 20 20 20 20 20 20 61 74 20 61 20 77  .         at a w
9390: 65 6c 6c 2d 6b 6e 6f 77 6e 20 6c 6f 63 61 74 69  ell-known locati
93a0: 6f 6e 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74  on relative to t
93b0: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
93c0: 20 28 61 20 22 64 6f 74 2d 66 69 6c 65 22 29 0a   (a "dot-file").
93d0: 20 20 20 20 20 20 20 20 20 61 6e 64 20 72 65 6c           and rel
93e0: 69 6e 71 75 69 73 68 65 64 20 62 79 20 64 65 6c  inquished by del
93f0: 65 74 69 6e 67 20 74 68 65 20 73 61 6d 65 20 66  eting the same f
9400: 69 6c 65 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 4e  ile...    <li> N
9410: 6f 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e  o locking style.
9420: 20 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20   If none of the 
9430: 61 62 6f 76 65 20 63 61 6e 20 62 65 20 73 75 70  above can be sup
9440: 70 6f 72 74 65 64 2c 20 74 68 69 73 20 0a 20 20  ported, this .  
9450: 20 20 20 20 20 20 20 6c 6f 63 6b 69 6e 67 20 73         locking s
9460: 74 79 6c 65 20 69 73 20 75 73 65 64 2e 20 4e 6f  tyle is used. No
9470: 20 64 61 74 61 62 61 73 65 20 6c 6f 63 6b 69 6e   database lockin
9480: 67 20 6d 65 63 68 61 6e 69 73 6d 20 69 73 20 75  g mechanism is u
9490: 73 65 64 2e 20 57 68 65 6e 0a 20 20 20 20 20 20  sed. When.      
94a0: 20 20 20 74 68 69 73 20 73 79 73 74 65 6d 20 69     this system i
94b0: 73 20 75 73 65 64 20 69 74 20 69 73 20 6e 6f 74  s used it is not
94c0: 20 73 61 66 65 20 66 6f 72 20 61 20 73 69 6e 67   safe for a sing
94d0: 6c 65 20 64 61 74 61 62 61 73 65 20 74 6f 20 62  le database to b
94e0: 65 0a 20 20 20 20 20 20 20 20 20 61 63 63 65 73  e.         acces
94f0: 73 65 64 20 62 79 20 6d 75 6c 74 69 70 6c 65 20  sed by multiple 
9500: 63 6c 69 65 6e 74 73 2e 0a 20 20 3c 2f 75 6c 3e  clients..  </ul>
9510: 0a 0a 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79  ..  Additionally
9520: 2c 20 66 69 76 65 20 65 78 74 72 61 20 5b 56 46  , five extra [VF
9530: 53 5d 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  S] implementatio
9540: 6e 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 20  ns are provided 
9550: 61 73 20 77 65 6c 6c 20 61 73 20 74 68 65 0a 20  as well as the. 
9560: 20 64 65 66 61 75 6c 74 2e 20 42 79 20 73 70 65   default. By spe
9570: 63 69 66 79 69 6e 67 20 6f 6e 65 20 6f 66 20 74  cifying one of t
9580: 68 65 20 65 78 74 72 61 20 56 46 53 20 69 6d 70  he extra VFS imp
9590: 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 0a 20 20  lementations .  
95a0: 77 68 65 6e 20 63 61 6c 6c 69 6e 67 20 5b 73 71  when calling [sq
95b0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d  lite3_open_v2()]
95c0: 2c 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  , an application
95d0: 20 6d 61 79 20 62 79 70 61 73 73 20 74 68 65 20   may bypass the 
95e0: 66 69 6c 65 2d 73 79 73 74 65 6d 0a 20 20 64 65  file-system.  de
95f0: 74 65 63 74 69 6f 6e 20 6c 6f 67 69 63 20 61 6e  tection logic an
9600: 64 20 65 78 70 6c 69 63 69 74 6c 79 20 73 65 6c  d explicitly sel
9610: 65 63 74 20 6f 6e 65 20 6f 66 20 74 68 65 20 61  ect one of the a
9620: 62 6f 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79  bove locking sty
9630: 6c 65 73 2e 20 54 68 65 0a 20 20 66 69 76 65 20  les. The.  five 
9640: 65 78 74 72 61 20 5b 56 46 53 5d 20 69 6d 70 6c  extra [VFS] impl
9650: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 61 72 65 20  ementations are 
9660: 63 61 6c 6c 65 64 20 22 75 6e 69 78 2d 70 6f 73  called "unix-pos
9670: 69 78 22 2c 20 22 75 6e 69 78 2d 61 66 70 22 2c  ix", "unix-afp",
9680: 0a 20 20 22 75 6e 69 78 2d 66 6c 6f 63 6b 22 2c  .  "unix-flock",
9690: 20 22 75 6e 69 78 2d 64 6f 74 66 69 6c 65 22 20   "unix-dotfile" 
96a0: 61 6e 64 20 22 75 6e 69 78 2d 6e 6f 6e 65 22 2e  and "unix-none".
96b0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
96c0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
96d0: 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d  E_MEMORY_MANAGEM
96e0: 45 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ENT} {.  This op
96f0: 74 69 6f 6e 20 61 64 64 73 20 65 78 74 72 61 20  tion adds extra 
9700: 6c 6f 67 69 63 20 74 6f 20 53 51 4c 69 74 65 20  logic to SQLite 
9710: 74 68 61 74 20 61 6c 6c 6f 77 73 20 69 74 20 74  that allows it t
9720: 6f 20 72 65 6c 65 61 73 65 20 75 6e 75 73 65 64  o release unused
9730: 0a 20 20 6d 65 6d 6f 72 79 20 75 70 6f 6e 20 72  .  memory upon r
9740: 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 6f 70  equest.  This op
9750: 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 65 6e 61  tion must be ena
9760: 62 6c 65 64 20 69 6e 20 6f 72 64 65 72 20 66 6f  bled in order fo
9770: 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33  r the.  [sqlite3
9780: 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28  _release_memory(
9790: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20  )] interface to 
97a0: 77 6f 72 6b 2e 20 20 49 66 20 74 68 69 73 20 63  work.  If this c
97b0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f 70  ompile-time.  op
97c0: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65 64  tion is not used
97d0: 2c 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72  , the [sqlite3_r
97e0: 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d  elease_memory()]
97f0: 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 61 20   interface is a 
9800: 0a 20 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d  .  no-op..}..COM
9810: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
9820: 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59  ITE_ENABLE_MEMSY
9830: 53 33 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  S3} {.  This opt
9840: 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64  ion includes cod
9850: 65 20 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74  e in SQLite that
9860: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61   implements an a
9870: 6c 74 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d  lternative.  mem
9880: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20  ory allocator.  
9890: 54 68 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65  This alternative
98a0: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
98b0: 72 20 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65  r is only engage
98c0: 64 0a 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51  d.  when the [SQ
98d0: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50  LITE_CONFIG_HEAP
98e0: 5d 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c  ] option to [sql
98f0: 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69  ite3_config()] i
9900: 73 20 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70  s used to.  supp
9910: 6c 79 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b  ly a large chunk
9920: 20 6f 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20   of memory from 
9930: 77 68 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79  which all memory
9940: 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65   allocations are
9950: 0a 20 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20  .  taken..  The 
9960: 4d 45 4d 53 59 53 33 20 6d 65 6d 6f 72 79 20 61  MEMSYS3 memory a
9970: 6c 6c 6f 63 61 74 6f 72 20 75 73 65 73 20 61 20  llocator uses a 
9980: 68 79 62 72 69 64 20 61 6c 6c 6f 63 61 74 69 6f  hybrid allocatio
9990: 6e 20 61 6c 67 6f 72 69 74 68 6d 20 0a 20 20 70  n algorithm .  p
99a0: 61 74 74 65 72 6e 65 64 20 61 66 74 65 72 20 64  atterned after d
99b0: 6c 6d 61 6c 6c 6f 63 28 29 2e 20 20 20 4f 6e 6c  lmalloc().   Onl
99c0: 79 20 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f  y one of SQLITE_
99d0: 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 20 61  ENABLE_MEMSYS3 a
99e0: 6e 64 20 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41  nd .  SQLITE_ENA
99f0: 42 4c 45 5f 4d 45 4d 53 59 53 35 20 6d 61 79 20  BLE_MEMSYS5 may 
9a00: 62 65 20 65 6e 61 62 6c 65 64 20 61 74 20 6f 6e  be enabled at on
9a10: 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ce..}..COMPILE_O
9a20: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
9a30: 41 42 4c 45 5f 4d 45 4d 53 59 53 35 7d 20 7b 0a  ABLE_MEMSYS5} {.
9a40: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e    This option in
9a50: 63 6c 75 64 65 73 20 63 6f 64 65 20 69 6e 20 53  cludes code in S
9a60: 51 4c 69 74 65 20 74 68 61 74 20 69 6d 70 6c 65  QLite that imple
9a70: 6d 65 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e 61  ments an alterna
9a80: 74 69 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c  tive.  memory al
9a90: 6c 6f 63 61 74 6f 72 2e 20 20 54 68 69 73 20 61  locator.  This a
9aa0: 6c 74 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72  lternative memor
9ab0: 79 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f  y allocator is o
9ac0: 6e 6c 79 20 65 6e 67 61 67 65 64 0a 20 20 77 68  nly engaged.  wh
9ad0: 65 6e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43  en the [SQLITE_C
9ae0: 4f 4e 46 49 47 5f 48 45 41 50 5d 20 6f 70 74 69  ONFIG_HEAP] opti
9af0: 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  on to [sqlite3_c
9b00: 6f 6e 66 69 67 28 29 5d 20 69 73 20 75 73 65 64  onfig()] is used
9b10: 20 74 6f 0a 20 20 73 75 70 70 6c 79 20 61 20 6c   to.  supply a l
9b20: 61 72 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65  arge chunk of me
9b30: 6d 6f 72 79 20 66 72 6f 6d 20 77 68 69 63 68 20  mory from which 
9b40: 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  all memory alloc
9b50: 61 74 69 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b  ations are.  tak
9b60: 65 6e 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59 53  en..  The MEMSYS
9b70: 35 20 6d 6f 64 75 6c 65 20 72 6f 75 6e 64 73 20  5 module rounds 
9b80: 61 6c 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20  all allocations 
9b90: 75 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70  up to the next p
9ba0: 6f 77 65 72 0a 20 20 6f 66 20 74 77 6f 20 61 6e  ower.  of two an
9bb0: 64 20 75 73 65 73 20 61 20 66 69 72 73 74 2d 66  d uses a first-f
9bc0: 69 74 2c 20 62 75 64 64 79 2d 61 6c 6c 6f 63 61  it, buddy-alloca
9bd0: 74 6f 72 20 61 6c 67 6f 72 69 74 68 6d 0a 20 20  tor algorithm.  
9be0: 74 68 61 74 20 70 72 6f 76 69 64 65 73 20 73 74  that provides st
9bf0: 72 6f 6e 67 20 67 75 61 72 61 6e 74 65 65 73 20  rong guarantees 
9c00: 61 67 61 69 6e 73 74 20 66 72 61 67 6d 65 6e 74  against fragment
9c10: 61 74 69 6f 6e 20 61 6e 64 20 62 72 65 61 6b 64  ation and breakd
9c20: 6f 77 6e 0a 20 20 73 75 62 6a 65 63 74 20 74 6f  own.  subject to
9c30: 20 63 65 72 74 61 69 6e 20 6f 70 65 72 61 74 69   certain operati
9c40: 6e 67 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a  ng constraints..
9c50: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
9c60: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
9c70: 5f 50 52 45 55 50 44 41 54 45 5f 48 4f 4f 4b 7d  _PREUPDATE_HOOK}
9c80: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
9c90: 20 65 6e 61 62 6c 65 73 20 0a 20 20 5b 73 71 6c   enables .  [sql
9ca0: 69 74 65 33 5f 70 72 65 75 70 64 61 74 65 5f 68  ite3_preupdate_h
9cb0: 6f 6f 6b 7c 73 65 76 65 72 61 6c 20 6e 65 77 20  ook|several new 
9cc0: 41 50 49 73 5d 20 74 68 61 74 20 70 72 6f 76 69  APIs] that provi
9cd0: 64 65 20 63 61 6c 6c 62 61 63 6b 73 0a 20 20 70  de callbacks.  p
9ce0: 72 69 6f 72 20 74 6f 20 61 6e 79 20 63 68 61 6e  rior to any chan
9cf0: 67 65 20 74 6f 20 61 20 5b 72 6f 77 69 64 20 74  ge to a [rowid t
9d00: 61 62 6c 65 5d 2e 20 20 54 68 65 20 63 61 6c 6c  able].  The call
9d10: 62 61 63 6b 73 20 63 61 6e 20 62 65 20 75 73 65  backs can be use
9d20: 64 0a 20 20 74 6f 20 72 65 63 6f 72 64 20 74 68  d.  to record th
9d30: 65 20 73 74 61 74 65 20 6f 66 20 74 68 65 20 72  e state of the r
9d40: 6f 77 20 62 65 66 6f 72 65 20 74 68 65 20 63 68  ow before the ch
9d50: 61 6e 67 65 20 6f 63 63 75 72 73 2e 0a 20 20 3c  ange occurs..  <
9d60: 70 3e 54 68 65 20 61 63 74 69 6f 6e 20 6f 66 20  p>The action of 
9d70: 74 68 65 20 70 72 65 75 70 64 61 74 65 20 68 6f  the preupdate ho
9d80: 6f 6b 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f  ok is similar to
9d90: 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f   the.  [sqlite3_
9da0: 75 70 64 61 74 65 5f 68 6f 6f 6b 7c 75 70 64 61  update_hook|upda
9db0: 74 65 20 68 6f 6f 6b 5d 20 65 78 63 65 70 74 20  te hook] except 
9dc0: 74 68 61 74 20 74 68 65 20 63 61 6c 6c 62 61 63  that the callbac
9dd0: 6b 20 69 73 0a 20 20 69 6e 76 6f 6b 65 64 20 62  k is.  invoked b
9de0: 65 66 6f 72 65 20 74 68 65 20 63 68 61 6e 67 65  efore the change
9df0: 2c 20 6e 6f 74 20 61 66 74 65 72 77 61 72 64 73  , not afterwards
9e00: 2c 20 61 6e 64 20 74 68 65 20 70 72 65 75 70 64  , and the preupd
9e10: 61 74 65 0a 20 20 68 6f 6f 6b 20 69 6e 74 65 72  ate.  hook inter
9e20: 66 61 63 65 73 20 61 72 65 20 6f 6d 69 74 74 65  faces are omitte
9e30: 64 20 75 6e 6c 65 73 73 20 74 68 69 73 20 63 6f  d unless this co
9e40: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
9e50: 6e 20 69 73 0a 20 20 75 73 65 64 2e 0a 20 20 3c  n is.  used..  <
9e60: 70 3e 54 68 65 20 70 72 65 75 70 64 61 74 65 20  p>The preupdate 
9e70: 68 6f 6f 6b 20 69 6e 74 65 72 66 61 63 65 73 20  hook interfaces 
9e80: 77 65 72 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20  were originally 
9e90: 61 64 64 65 64 20 74 6f 0a 20 20 73 75 70 70 6f  added to.  suppo
9ea0: 72 74 20 74 68 65 20 5b 73 65 73 73 69 6f 6e 5d  rt the [session]
9eb0: 20 65 78 74 65 6e 73 69 6f 6e 2e 0a 7d 0a 0a 43   extension..}..C
9ec0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9ed0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52 42 55  QLITE_ENABLE_RBU
9ee0: 7d 20 7b 0a 20 20 45 6e 61 62 6c 65 20 74 68 65  } {.  Enable the
9ef0: 20 63 6f 64 65 20 74 68 65 20 69 6d 70 6c 65 6d   code the implem
9f00: 65 6e 74 73 20 74 68 65 20 5b 52 42 55 20 65 78  ents the [RBU ex
9f10: 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d  tension]..}..COM
9f20: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
9f30: 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45  ITE_ENABLE_RTREE
9f40: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
9f50: 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  n causes SQLite 
9f60: 74 6f 20 69 6e 63 6c 75 64 65 20 73 75 70 70 6f  to include suppo
9f70: 72 74 20 66 6f 72 20 74 68 65 0a 20 20 5b 72 74  rt for the.  [rt
9f80: 72 65 65 20 7c 20 52 2a 54 72 65 65 20 69 6e 64  ree | R*Tree ind
9f90: 65 78 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d  ex extension]..}
9fa0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
9fb0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
9fc0: 53 45 53 53 49 4f 4e 7d 20 7b 0a 20 20 54 68 69  SESSION} {.  Thi
9fd0: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
9fe0: 20 74 68 65 20 5b 73 65 73 73 69 6f 6e 20 65 78   the [session ex
9ff0: 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d  tension]..}..COM
a000: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
a010: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 4d 54 5f  ITE_ENABLE_STMT_
a020: 53 43 41 4e 53 54 41 54 55 53 7d 20 7b 0a 20 20  SCANSTATUS} {.  
a030: 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62  This option enab
a040: 6c 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33  les the [sqlite3
a050: 5f 73 74 6d 74 5f 73 63 61 6e 73 74 61 74 75 73  _stmt_scanstatus
a060: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 20 20  ()] interface.  
a070: 54 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 73  The.  [sqlite3_s
a080: 74 6d 74 5f 73 63 61 6e 73 74 61 74 75 73 28 29  tmt_scanstatus()
a090: 5d 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 6e  ] interface is n
a0a0: 6f 72 6d 61 6c 6c 79 20 6f 6d 69 74 74 65 64 20  ormally omitted 
a0b0: 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 0a 20  from the build. 
a0c0: 20 62 65 63 61 75 73 65 20 69 74 20 69 6d 70 6f   because it impo
a0d0: 73 65 73 20 61 20 73 6d 61 6c 6c 20 70 65 72 66  ses a small perf
a0e0: 6f 72 6d 61 6e 63 65 20 70 65 6e 61 6c 74 79 2c  ormance penalty,
a0f0: 20 65 76 65 6e 20 6f 6e 20 73 74 61 74 65 6d 65   even on stateme
a100: 6e 74 73 20 74 68 61 74 0a 20 20 64 6f 20 6e 6f  nts that.  do no
a110: 74 20 75 73 65 20 74 68 65 20 66 65 61 74 75 72  t use the featur
a120: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
a130: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 52 54 52  TION {SQLITE_RTR
a140: 45 45 5f 49 4e 54 5f 4f 4e 4c 59 7d 20 7b 0a 20  EE_INT_ONLY} {. 
a150: 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20   If this option 
a160: 69 73 20 75 73 65 64 20 74 6f 67 65 74 68 65 72  is used together
a170: 20 77 69 74 68 20 5b 53 51 4c 49 54 45 5f 45 4e   with [SQLITE_EN
a180: 41 42 4c 45 5f 52 54 52 45 45 5d 20 74 68 65 6e  ABLE_RTREE] then
a190: 20 74 68 65 0a 20 20 5b 72 74 72 65 65 20 7c 20   the.  [rtree | 
a1a0: 52 2a 54 72 65 65 20 65 78 74 65 6e 73 69 6f 6e  R*Tree extension
a1b0: 5d 20 77 69 6c 6c 20 6f 6e 6c 79 20 73 74 6f 72  ] will only stor
a1c0: 65 20 33 32 2d 62 69 74 20 73 69 67 6e 65 64 20  e 32-bit signed 
a1d0: 69 6e 74 65 67 65 72 0a 20 20 63 6f 6f 72 64 69  integer.  coordi
a1e0: 6e 61 74 65 73 20 61 6e 64 20 61 6c 6c 20 69 6e  nates and all in
a1f0: 74 65 72 6e 61 6c 20 63 6f 6d 70 75 74 61 74 69  ternal computati
a200: 6f 6e 73 20 77 69 6c 6c 20 62 65 20 64 6f 6e 65  ons will be done
a210: 20 75 73 69 6e 67 20 69 6e 74 65 67 65 72 73 0a   using integers.
a220: 20 20 69 6e 73 74 65 61 64 20 6f 66 20 66 6c 6f    instead of flo
a230: 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62  ating point numb
a240: 65 72 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ers..}..COMPILE_
a250: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
a260: 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 7d 20 7b 0a  NABLE_SQLLOG} {.
a270: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
a280: 61 62 6c 65 73 20 65 78 74 72 61 20 63 6f 64 65  ables extra code
a290: 20 28 65 73 70 65 63 69 61 6c 6c 79 20 74 68 65   (especially the
a2a0: 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
a2b0: 53 51 4c 4c 4f 47 5d 0a 20 20 6f 70 74 69 6f 6e  SQLLOG].  option
a2c0: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e   to [sqlite3_con
a2d0: 66 69 67 28 29 5d 29 20 74 68 61 74 20 63 61 6e  fig()]) that can
a2e0: 20 62 65 20 75 73 65 64 20 74 6f 20 63 72 65 61   be used to crea
a2f0: 74 65 20 6c 6f 67 73 20 6f 66 20 61 6c 6c 0a 20  te logs of all. 
a300: 20 53 51 4c 69 74 65 20 70 72 6f 63 65 73 73 69   SQLite processi
a310: 6e 67 20 70 65 72 66 6f 72 6d 65 64 20 62 79 20  ng performed by 
a320: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20  an application. 
a330: 20 54 68 65 73 65 20 6c 6f 67 73 20 63 61 6e 20   These logs can 
a340: 62 65 20 75 73 65 66 75 6c 0a 20 20 69 6e 20 64  be useful.  in d
a350: 6f 69 6e 67 20 6f 66 66 2d 6c 69 6e 65 20 61 6e  oing off-line an
a360: 61 6c 79 73 69 73 20 6f 66 20 74 68 65 20 62 65  alysis of the be
a370: 68 61 76 69 6f 72 20 6f 66 20 61 6e 20 61 70 70  havior of an app
a380: 6c 69 63 61 74 69 6f 6e 2c 20 61 6e 64 20 65 73  lication, and es
a390: 70 65 63 69 61 6c 6c 79 0a 20 20 66 6f 72 20 70  pecially.  for p
a3a0: 65 72 66 6f 72 6d 61 6e 63 65 20 61 6e 61 6c 79  erformance analy
a3b0: 73 69 73 2e 20 20 49 6e 20 6f 72 64 65 72 20 66  sis.  In order f
a3c0: 6f 72 20 74 68 65 20 53 51 4c 49 54 45 5f 45 4e  or the SQLITE_EN
a3d0: 41 42 4c 45 5f 53 51 4c 4c 4f 47 20 6f 70 74 69  ABLE_SQLLOG opti
a3e0: 6f 6e 20 74 6f 20 0a 20 20 62 65 20 75 73 65 66  on to .  be usef
a3f0: 75 6c 2c 20 73 6f 6d 65 20 65 78 74 72 61 20 63  ul, some extra c
a400: 6f 64 65 20 69 73 20 72 65 71 75 69 72 65 64 2e  ode is required.
a410: 20 20 54 68 65 20 0a 20 20 3c 61 20 68 72 65 66    The .  <a href
a420: 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 73 71 6c  ="http://www.sql
a430: 69 74 65 2e 6f 72 67 2f 73 72 63 2f 64 6f 63 2f  ite.org/src/doc/
a440: 74 72 75 6e 6b 2f 73 72 63 2f 74 65 73 74 5f 73  trunk/src/test_s
a450: 71 6c 6c 6f 67 2e 63 22 3e 22 74 65 73 74 5f 73  qllog.c">"test_s
a460: 71 6c 6c 6f 67 2e 63 22 3c 2f 61 3e 0a 20 20 73  qllog.c"</a>.  s
a470: 6f 75 72 63 65 20 63 6f 64 65 0a 20 20 66 69 6c  ource code.  fil
a480: 65 20 69 6e 20 74 68 65 20 53 51 4c 69 74 65 20  e in the SQLite 
a490: 73 6f 75 72 63 65 20 74 72 65 65 20 69 73 20 61  source tree is a
a4a0: 20 77 6f 72 6b 69 6e 67 20 65 78 61 6d 70 6c 65   working example
a4b0: 20 6f 66 20 74 68 65 20 72 65 71 75 69 72 65 64   of the required
a4c0: 20 65 78 74 72 61 0a 20 20 63 6f 64 65 2e 20 20   extra.  code.  
a4d0: 4f 6e 20 75 6e 69 78 20 61 6e 64 20 77 69 6e 64  On unix and wind
a4e0: 6f 77 73 20 73 79 73 74 65 6d 73 2c 20 61 20 64  ows systems, a d
a4f0: 65 76 65 6c 6f 70 65 72 20 63 61 6e 20 61 70 70  eveloper can app
a500: 65 6e 64 20 74 68 65 20 74 65 78 74 20 6f 66 20  end the text of 
a510: 74 68 65 0a 20 20 22 74 65 73 74 5f 73 71 6c 6c  the.  "test_sqll
a520: 6f 67 2e 63 22 20 73 6f 75 72 63 65 20 63 6f 64  og.c" source cod
a530: 65 20 66 69 6c 65 20 74 6f 20 74 68 65 20 65 6e  e file to the en
a540: 64 20 6f 66 20 61 6e 20 22 73 71 6c 69 74 65 33  d of an "sqlite3
a550: 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  .c" amalgamation
a560: 2c 0a 20 20 72 65 63 6f 6d 70 69 6c 65 20 74 68  ,.  recompile th
a570: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 75 73  e application us
a580: 69 6e 67 20 74 68 65 20 2d 44 53 51 4c 49 54 45  ing the -DSQLITE
a590: 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 20 6f  _ENABLE_SQLLOG o
a5a0: 70 74 69 6f 6e 2c 20 74 68 65 6e 20 0a 20 20 63  ption, then .  c
a5b0: 6f 6e 74 72 6f 6c 20 6c 6f 67 67 69 6e 67 20 75  ontrol logging u
a5c0: 73 69 6e 67 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  sing environment
a5d0: 20 76 61 72 69 61 62 6c 65 73 2e 20 20 53 65 65   variables.  See
a5e0: 20 74 68 65 20 68 65 61 64 65 72 20 63 6f 6d 6d   the header comm
a5f0: 65 6e 74 20 6f 6e 20 0a 20 20 74 68 65 20 22 74  ent on .  the "t
a600: 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f  est_sqllog.c" so
a610: 75 72 63 65 20 66 69 6c 65 20 66 6f 72 20 61 64  urce file for ad
a620: 64 69 74 69 6f 6e 61 6c 20 64 65 74 61 69 6c 2e  ditional detail.
a630: 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50    .}..COMPILE_OP
a640: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
a650: 42 4c 45 5f 53 54 41 54 32 7d 20 7b 0a 20 20 54  BLE_STAT2} {.  T
a660: 68 69 73 20 6f 70 74 69 6f 6e 20 75 73 65 64 20  his option used 
a670: 74 6f 20 63 61 75 73 65 20 74 68 65 20 5b 41 4e  to cause the [AN
a680: 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 74  ALYZE] command t
a690: 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 69 6e 64 65  o collect.  inde
a6a0: 78 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61  x histogram data
a6b0: 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74   in the <b>sqlit
a6c0: 65 5f 73 74 61 74 32 3c 2f 62 3e 20 74 61 62 6c  e_stat2</b> tabl
a6d0: 65 2e 20 20 42 75 74 20 74 68 61 74 0a 20 20 66  e.  But that.  f
a6e0: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 77 61 73  unctionality was
a6f0: 20 73 75 70 65 72 63 65 64 65 64 20 62 79 20 5b   superceded by [
a700: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
a710: 41 54 33 5d 20 61 73 20 6f 66 0a 20 20 53 51 4c  AT3] as of.  SQL
a720: 69 74 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 37  ite [version 3.7
a730: 2e 39 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e 37  .9] ([dateof:3.7
a740: 2e 39 5d 29 2e 20 20 0a 20 20 54 68 65 20 53 51  .9]).  .  The SQ
a750: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54  LITE_ENABLE_STAT
a760: 32 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  2 compile-time o
a770: 70 74 69 6f 6e 0a 20 20 69 73 20 6e 6f 77 20 61  ption.  is now a
a780: 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50 49   no-op..}..COMPI
a790: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
a7a0: 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33 7d 20  E_ENABLE_STAT3} 
a7b0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
a7c0: 61 64 64 73 20 61 64 64 69 74 69 6f 6e 61 6c 20  adds additional 
a7d0: 6c 6f 67 69 63 20 74 6f 20 74 68 65 20 5b 41 4e  logic to the [AN
a7e0: 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 61  ALYZE] command a
a7f0: 6e 64 20 74 6f 0a 20 20 74 68 65 20 5b 71 75 65  nd to.  the [que
a800: 72 79 20 70 6c 61 6e 6e 65 72 5d 20 74 68 61 74  ry planner] that
a810: 20 63 61 6e 20 68 65 6c 70 20 53 51 4c 69 74 65   can help SQLite
a820: 20 74 6f 20 63 68 6f 73 65 20 61 20 62 65 74 74   to chose a bett
a830: 65 72 20 71 75 65 72 79 20 70 6c 61 6e 0a 20 20  er query plan.  
a840: 75 6e 64 65 72 20 63 65 72 74 61 69 6e 20 73 69  under certain si
a850: 74 75 61 74 69 6f 6e 73 2e 20 20 54 68 65 20 5b  tuations.  The [
a860: 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64  ANALYZE] command
a870: 20 69 73 20 65 6e 68 61 6e 63 65 64 20 74 6f 20   is enhanced to 
a880: 63 6f 6c 6c 65 63 74 0a 20 20 68 69 73 74 6f 67  collect.  histog
a890: 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20 74 68  ram data from th
a8a0: 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63 6f 6c 75  e left-most colu
a8b0: 6d 6e 20 6f 66 20 65 61 63 68 20 69 6e 64 65 78  mn of each index
a8c0: 20 61 6e 64 20 73 74 6f 72 65 20 74 68 61 74 20   and store that 
a8d0: 64 61 74 61 0a 20 20 69 6e 20 74 68 65 20 5b 73  data.  in the [s
a8e0: 71 6c 69 74 65 5f 73 74 61 74 33 5d 20 74 61 62  qlite_stat3] tab
a8f0: 6c 65 2e 20 20 54 68 65 20 71 75 65 72 79 20 70  le.  The query p
a900: 6c 61 6e 6e 65 72 20 77 69 6c 6c 20 74 68 65 6e  lanner will then
a910: 20 75 73 65 20 74 68 65 0a 20 20 68 69 73 74 6f   use the.  histo
a920: 67 72 61 6d 20 64 61 74 61 20 74 6f 20 68 65 6c  gram data to hel
a930: 70 20 69 74 20 6d 61 6b 65 20 62 65 74 74 65 72  p it make better
a940: 20 69 6e 64 65 78 20 63 68 6f 69 63 65 73 2e 20   index choices. 
a950: 20 4e 6f 74 65 2c 20 68 6f 77 65 76 65 72 2c 0a   Note, however,.
a960: 20 20 74 68 61 74 20 74 68 65 20 75 73 65 20 6f    that the use o
a970: 66 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61  f histogram data
a980: 20 69 6e 20 71 75 65 72 79 20 70 6c 61 6e 6e 65   in query planne
a990: 72 20 76 69 6f 6c 61 74 65 73 20 74 68 65 0a 20  r violates the. 
a9a0: 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20   [query planner 
a9b0: 73 74 61 62 69 6c 69 74 79 20 67 75 61 72 61 6e  stability guaran
a9c0: 74 65 65 5d 20 77 68 69 63 68 20 69 73 20 69 6d  tee] which is im
a9d0: 70 6f 72 74 61 6e 74 20 74 6f 20 73 6f 6d 65 20  portant to some 
a9e0: 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 20 20  applications..  
a9f0: 3c 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  <p>.}..COMPILE_O
aa00: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
aa10: 41 42 4c 45 5f 53 54 41 54 34 7d 20 7b 0a 20 20  ABLE_STAT4} {.  
aa20: 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64 64 73  This option adds
aa30: 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69   additional logi
aa40: 63 20 74 6f 20 74 68 65 20 5b 41 4e 41 4c 59 5a  c to the [ANALYZ
aa50: 45 5d 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 74  E] command and t
aa60: 6f 0a 20 20 74 68 65 20 5b 71 75 65 72 79 20 70  o.  the [query p
aa70: 6c 61 6e 6e 65 72 5d 20 74 68 61 74 20 63 61 6e  lanner] that can
aa80: 20 68 65 6c 70 20 53 51 4c 69 74 65 20 74 6f 20   help SQLite to 
aa90: 63 68 6f 73 65 20 61 20 62 65 74 74 65 72 20 71  chose a better q
aaa0: 75 65 72 79 20 70 6c 61 6e 0a 20 20 75 6e 64 65  uery plan.  unde
aab0: 72 20 63 65 72 74 61 69 6e 20 73 69 74 75 61 74  r certain situat
aac0: 69 6f 6e 73 2e 20 20 54 68 65 20 5b 41 4e 41 4c  ions.  The [ANAL
aad0: 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20  YZE] command is 
aae0: 65 6e 68 61 6e 63 65 64 20 74 6f 20 63 6f 6c 6c  enhanced to coll
aaf0: 65 63 74 0a 20 20 68 69 73 74 6f 67 72 61 6d 20  ect.  histogram 
ab00: 64 61 74 61 20 66 72 6f 6d 20 61 6c 6c 20 63 6f  data from all co
ab10: 6c 75 6d 6e 73 20 6f 66 20 65 76 65 72 79 20 69  lumns of every i
ab20: 6e 64 65 78 20 61 6e 64 20 73 74 6f 72 65 20 74  ndex and store t
ab30: 68 61 74 20 64 61 74 61 0a 20 20 69 6e 20 74 68  hat data.  in th
ab40: 65 20 5b 73 71 6c 69 74 65 5f 73 74 61 74 34 5d  e [sqlite_stat4]
ab50: 20 74 61 62 6c 65 2e 20 20 54 68 65 20 71 75 65   table.  The que
ab60: 72 79 20 70 6c 61 6e 6e 65 72 20 77 69 6c 6c 20  ry planner will 
ab70: 74 68 65 6e 20 75 73 65 20 74 68 65 0a 20 20 68  then use the.  h
ab80: 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 74 6f  istogram data to
ab90: 20 68 65 6c 70 20 69 74 20 6d 61 6b 65 20 62 65   help it make be
aba0: 74 74 65 72 20 69 6e 64 65 78 20 63 68 6f 69 63  tter index choic
abb0: 65 73 2e 20 20 54 68 65 20 64 6f 77 6e 73 69 64  es.  The downsid
abc0: 65 20 6f 66 0a 20 20 74 68 69 73 20 63 6f 6d 70  e of.  this comp
abd0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
abe0: 69 73 20 74 68 61 74 20 69 74 20 76 69 6f 6c 61  is that it viola
abf0: 74 65 73 20 74 68 65 0a 20 20 5b 71 75 65 72 79  tes the.  [query
ac00: 20 70 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c 69   planner stabili
ac10: 74 79 20 67 75 61 72 61 6e 74 65 65 5d 20 6d 61  ty guarantee] ma
ac20: 6b 69 6e 67 20 69 74 20 6d 6f 72 65 20 64 69 66  king it more dif
ac30: 66 69 63 75 6c 74 20 74 6f 20 65 6e 73 75 72 65  ficult to ensure
ac40: 0a 20 20 63 6f 6e 73 69 73 74 65 6e 74 20 70 65  .  consistent pe
ac50: 72 66 6f 72 6d 61 6e 63 65 20 69 6e 20 6d 61 73  rformance in mas
ac60: 73 2d 70 72 6f 64 75 63 65 64 20 61 70 70 6c 69  s-produced appli
ac70: 63 61 74 69 6f 6e 73 2e 0a 20 20 3c 70 3e 0a 20  cations..  <p>. 
ac80: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53   SQLITE_ENABLE_S
ac90: 54 41 54 34 20 69 73 20 61 6e 20 65 6e 68 61 6e  TAT4 is an enhan
aca0: 63 65 6d 65 6e 74 20 6f 66 20 5b 53 51 4c 49 54  cement of [SQLIT
acb0: 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33 5d 2e  E_ENABLE_STAT3].
acc0: 20 20 53 54 41 54 33 0a 20 20 6f 6e 6c 79 20 72    STAT3.  only r
acd0: 65 63 6f 72 64 65 64 20 68 69 73 74 6f 67 72 61  ecorded histogra
ace0: 6d 20 64 61 74 61 20 66 6f 72 20 74 68 65 20 6c  m data for the l
acf0: 65 66 74 2d 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20  eft-most column 
ad00: 6f 66 20 65 61 63 68 20 69 6e 64 65 78 0a 20 20  of each index.  
ad10: 77 68 65 72 65 61 73 20 74 68 65 20 53 54 41 54  whereas the STAT
ad20: 34 20 65 6e 68 61 6e 63 65 6d 65 6e 74 20 72 65  4 enhancement re
ad30: 63 6f 72 64 73 20 68 69 73 74 6f 67 72 61 6d 20  cords histogram 
ad40: 64 61 74 61 20 66 72 6f 6d 20 61 6c 6c 20 63 6f  data from all co
ad50: 6c 75 6d 6e 73 0a 20 20 6f 66 20 65 61 63 68 20  lumns.  of each 
ad60: 69 6e 64 65 78 2e 0a 20 20 54 68 65 20 5b 53 51  index..  The [SQ
ad70: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54  LITE_ENABLE_STAT
ad80: 33 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  3] compile-time 
ad90: 6f 70 74 69 6f 6e 20 69 73 20 61 20 6e 6f 2d 6f  option is a no-o
ada0: 70 20 61 6e 64 20 69 73 20 69 67 6e 6f 72 65 64  p and is ignored
adb0: 0a 20 20 69 66 20 74 68 65 20 53 51 4c 49 54 45  .  if the SQLITE
adc0: 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34 20 63 6f  _ENABLE_STAT4 co
add0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
ade0: 6e 20 69 73 20 75 73 65 64 2e 0a 7d 0a 0a 43 4f  n is used..}..CO
adf0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
ae00: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 54 52 45 45  LITE_ENABLE_TREE
ae10: 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a 20 20 54 68  _EXPLAIN} {.  Th
ae20: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  is compile-time 
ae30: 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 20 6c 6f 6e  option is no lon
ae40: 67 65 72 20 75 73 65 64 2e 0a 7d 0a 0a 43 4f 4d  ger used..}..COM
ae50: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
ae60: 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54  ITE_ENABLE_UPDAT
ae70: 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 7d 20  E_DELETE_LIMIT} 
ae80: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
ae90: 65 6e 61 62 6c 65 73 20 61 6e 20 6f 70 74 69 6f  enables an optio
aea0: 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61 6e 64  nal ORDER BY and
aeb0: 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 6f 6e   LIMIT clause on
aec0: 20 0a 20 20 5b 55 50 44 41 54 45 5d 20 61 6e 64   .  [UPDATE] and
aed0: 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65 6d   [DELETE] statem
aee0: 65 6e 74 73 2e 0a 0a 20 20 3c 70 3e 49 66 20 74  ents...  <p>If t
aef0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
af00: 66 69 6e 65 64 2c 20 74 68 65 6e 20 69 74 20 6d  fined, then it m
af10: 75 73 74 20 61 6c 73 6f 20 62 65 20 0a 20 20 64  ust also be .  d
af20: 65 66 69 6e 65 64 20 77 68 65 6e 20 75 73 69 6e  efined when usin
af30: 67 20 74 68 65 20 27 6c 65 6d 6f 6e 27 20 74 6f  g the 'lemon' to
af40: 6f 6c 20 74 6f 20 67 65 6e 65 72 61 74 65 20 61  ol to generate a
af50: 20 70 61 72 73 65 2e 63 0a 20 20 66 69 6c 65 2e   parse.c.  file.
af60: 20 42 65 63 61 75 73 65 20 6f 66 20 74 68 69 73   Because of this
af70: 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61  , this option ma
af80: 79 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 77  y only be used w
af90: 68 65 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20  hen the library 
afa0: 69 73 20 62 75 69 6c 74 0a 20 20 66 72 6f 6d 20  is built.  from 
afb0: 73 6f 75 72 63 65 2c 20 6e 6f 74 20 66 72 6f 6d  source, not from
afc0: 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69   the [amalgamati
afd0: 6f 6e 5d 20 6f 72 20 66 72 6f 6d 20 74 68 65 20  on] or from the 
afe0: 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a 20 20  collection of.  
aff0: 70 72 65 2d 70 61 63 6b 61 67 65 64 20 43 20 66  pre-packaged C f
b000: 69 6c 65 73 20 70 72 6f 76 69 64 65 64 20 66 6f  iles provided fo
b010: 72 20 6e 6f 6e 2d 55 6e 69 78 20 6c 69 6b 65 20  r non-Unix like 
b020: 70 6c 61 74 66 6f 72 6d 73 20 6f 6e 20 74 68 65  platforms on the
b030: 20 77 65 62 73 69 74 65 2e 0a 20 20 3c 2f 70 3e   website..  </p>
b040: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
b050: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
b060: 45 5f 55 4e 4b 4e 4f 57 4e 5f 53 51 4c 5f 46 55  E_UNKNOWN_SQL_FU
b070: 4e 43 54 49 4f 4e 7d 20 7b 0a 20 20 57 68 65 6e  NCTION} {.  When
b080: 20 74 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42   the SQLITE_ENAB
b090: 4c 45 5f 55 4e 4b 4e 4f 57 4e 5f 53 51 4c 5f 46  LE_UNKNOWN_SQL_F
b0a0: 55 4e 43 54 49 4f 4e 20 63 6f 6d 70 69 6c 65 2d  UNCTION compile-
b0b0: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 0a 20  time option is. 
b0c0: 20 61 63 74 69 76 61 74 65 64 2c 20 53 51 4c 69   activated, SQLi
b0d0: 74 65 20 77 69 6c 6c 20 73 75 70 70 72 65 73 73  te will suppress
b0e0: 20 22 75 6e 6b 6e 6f 77 6e 20 66 75 6e 63 74 69   "unknown functi
b0f0: 6f 6e 22 20 65 72 72 6f 72 73 20 77 68 65 6e 20  on" errors when 
b100: 72 75 6e 6e 69 6e 67 0a 20 20 61 6e 20 5b 45 58  running.  an [EX
b110: 50 4c 41 49 4e 5d 20 6f 72 20 5b 45 58 50 4c 41  PLAIN] or [EXPLA
b120: 49 4e 20 51 55 45 52 59 20 50 4c 41 4e 5d 2e 20  IN QUERY PLAN]. 
b130: 20 49 6e 73 74 65 61 64 20 6f 66 20 74 68 72 6f   Instead of thro
b140: 77 69 6e 67 20 61 6e 20 65 72 72 6f 72 2c 0a 20  wing an error,. 
b150: 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 69 6e 73   SQLite will ins
b160: 65 72 74 20 61 20 73 75 62 73 74 69 74 75 74 65  ert a substitute
b170: 20 6e 6f 2d 6f 70 20 66 75 6e 63 74 69 6f 6e 20   no-op function 
b180: 6e 61 6d 65 64 20 22 75 6e 6b 6e 6f 77 6e 28 29  named "unknown()
b190: 22 2e 0a 20 20 54 68 65 20 73 75 62 73 74 69 74  "..  The substit
b1a0: 75 74 69 6f 6e 20 6f 66 20 22 75 6e 6b 6e 6f 77  ution of "unknow
b1b0: 6e 28 29 22 20 69 6e 20 70 6c 61 63 65 20 6f 66  n()" in place of
b1c0: 20 75 6e 72 65 63 6f 67 6e 69 7a 65 64 20 66 75   unrecognized fu
b1d0: 6e 63 74 69 6f 6e 73 0a 20 20 6f 6e 6c 79 20 6f  nctions.  only o
b1e0: 63 63 75 72 73 20 6f 6e 20 5b 45 58 50 4c 41 49  ccurs on [EXPLAI
b1f0: 4e 5d 20 61 6e 64 20 5b 45 58 50 4c 41 49 4e 20  N] and [EXPLAIN 
b200: 51 55 45 52 59 20 50 4c 41 4e 5d 2c 20 6e 6f 74  QUERY PLAN], not
b210: 20 6f 6e 20 6f 72 64 69 6e 61 72 79 0a 20 20 73   on ordinary.  s
b220: 74 61 74 65 6d 65 6e 74 73 2e 0a 20 20 3c 70 3e  tatements..  <p>
b230: 0a 20 20 57 68 65 6e 20 75 73 65 64 20 69 6e 20  .  When used in 
b240: 74 68 65 20 5b 63 6f 6d 6d 61 6e 64 2d 6c 69 6e  the [command-lin
b250: 65 20 73 68 65 6c 6c 5d 2c 20 74 68 65 0a 20 20  e shell], the.  
b260: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e  SQLITE_ENABLE_UN
b270: 4b 4e 4f 57 4e 5f 53 51 4c 5f 46 55 4e 43 54 49  KNOWN_SQL_FUNCTI
b280: 4f 4e 20 66 65 61 74 75 72 65 20 61 6c 6c 6f 77  ON feature allow
b290: 73 20 53 51 4c 20 74 65 78 74 20 74 68 61 74 20  s SQL text that 
b2a0: 63 6f 6e 74 61 69 6e 73 0a 20 20 61 70 70 6c 69  contains.  appli
b2b0: 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 66  cation-defined f
b2c0: 75 6e 63 74 69 6f 6e 73 20 74 6f 20 62 65 20 70  unctions to be p
b2d0: 61 73 74 65 64 20 69 6e 74 6f 20 74 68 65 20 73  asted into the s
b2e0: 68 65 6c 6c 20 66 6f 72 20 0a 20 20 61 6e 61 6c  hell for .  anal
b2f0: 79 73 69 73 20 61 6e 64 20 64 65 62 75 67 67 69  ysis and debuggi
b300: 6e 67 20 77 69 74 68 6f 75 74 20 68 61 76 69 6e  ng without havin
b310: 67 20 74 6f 20 63 72 65 61 74 65 20 61 6e 64 20  g to create and 
b320: 6c 6f 61 64 20 61 6e 0a 20 20 65 78 74 65 6e 73  load an.  extens
b330: 69 6f 6e 20 74 68 61 74 20 69 6d 70 6c 65 6d 65  ion that impleme
b340: 6e 74 73 20 74 68 65 20 61 70 70 6c 69 63 61 74  nts the applicat
b350: 69 6f 6e 2d 64 65 66 69 6e 65 64 20 66 75 6e 63  ion-defined func
b360: 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  tions..}..COMPIL
b370: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
b380: 5f 45 4e 41 42 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e  _ENABLE_UNLOCK_N
b390: 4f 54 49 46 59 7d 20 7b 0a 20 20 54 68 69 73 20  OTIFY} {.  This 
b3a0: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74  option enables t
b3b0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 75 6e 6c 6f  he [sqlite3_unlo
b3c0: 63 6b 5f 6e 6f 74 69 66 79 28 29 5d 20 69 6e 74  ck_notify()] int
b3d0: 65 72 66 61 63 65 20 61 6e 64 0a 20 20 69 74 73  erface and.  its
b3e0: 20 61 73 73 6f 63 69 61 74 65 64 20 66 75 6e 63   associated func
b3f0: 74 69 6f 6e 61 6c 69 74 79 2e 20 20 53 65 65 20  tionality.  See 
b400: 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  the documentatio
b410: 6e 20 74 69 74 6c 65 64 0a 20 20 5b 55 73 69 6e  n titled.  [Usin
b420: 67 20 74 68 65 20 53 51 4c 69 74 65 20 55 6e 6c  g the SQLite Unl
b430: 6f 63 6b 20 4e 6f 74 69 66 69 63 61 74 69 6f 6e  ock Notification
b440: 20 46 65 61 74 75 72 65 5d 20 66 6f 72 20 61 64   Feature] for ad
b450: 64 69 74 69 6f 6e 61 6c 0a 20 20 69 6e 66 6f 72  ditional.  infor
b460: 6d 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49  mation..}..COMPI
b470: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
b480: 45 5f 53 4f 55 4e 44 45 58 7d 20 7b 0a 20 20 54  E_SOUNDEX} {.  T
b490: 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c  his option enabl
b4a0: 65 73 20 74 68 65 20 5b 73 6f 75 6e 64 65 78 28  es the [soundex(
b4b0: 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e  ) SQL function].
b4c0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
b4d0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 53 45 5f 46  ON {SQLITE_USE_F
b4e0: 43 4e 54 4c 5f 54 52 41 43 45 7d 20 7b 0a 20 20  CNTL_TRACE} {.  
b4f0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
b500: 65 73 20 53 51 4c 69 74 65 20 74 6f 20 69 73 73  es SQLite to iss
b510: 75 65 20 65 78 74 72 61 20 5b 53 51 4c 49 54 45  ue extra [SQLITE
b520: 5f 46 43 4e 54 4c 5f 54 52 41 43 45 5d 20 66 69  _FCNTL_TRACE] fi
b530: 6c 65 20 63 6f 6e 74 72 6f 6c 73 0a 20 20 74 6f  le controls.  to
b540: 20 70 72 6f 76 69 64 65 20 73 75 70 70 6c 65 6d   provide supplem
b550: 65 6e 74 61 72 79 20 69 6e 66 6f 72 6d 61 74 69  entary informati
b560: 6f 6e 20 74 6f 20 74 68 65 20 56 46 53 2e 20 20  on to the VFS.  
b570: 54 68 65 20 22 76 66 73 6c 6f 67 2e 63 22 20 65  The "vfslog.c" e
b580: 78 74 65 6e 73 69 6f 6e 0a 20 20 6d 61 6b 65 73  xtension.  makes
b590: 20 75 73 65 20 6f 66 20 74 68 69 73 20 74 6f 20   use of this to 
b5a0: 70 72 6f 76 69 64 65 20 65 6e 68 61 6e 63 65 64  provide enhanced
b5b0: 20 6c 6f 67 73 20 6f 66 20 56 46 53 20 61 63 74   logs of VFS act
b5c0: 69 76 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ivity..}..COMPIL
b5d0: 45 5f 4f 50 54 49 4f 4e 20 7b 59 59 54 52 41 43  E_OPTION {YYTRAC
b5e0: 4b 4d 41 58 53 54 41 43 4b 44 45 50 54 48 7d 20  KMAXSTACKDEPTH} 
b5f0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
b600: 63 61 75 73 65 73 20 74 68 65 20 4c 41 4c 52 28  causes the LALR(
b610: 31 29 20 70 61 72 73 65 72 20 73 74 61 63 6b 20  1) parser stack 
b620: 64 65 70 74 68 20 74 6f 20 62 65 20 74 72 61 63  depth to be trac
b630: 6b 65 64 0a 20 20 61 6e 64 20 72 65 70 6f 72 74  ked.  and report
b640: 65 64 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71  ed using the [sq
b650: 6c 69 74 65 33 5f 73 74 61 74 75 73 5d 28 5b 53  lite3_status]([S
b660: 51 4c 49 54 45 5f 53 54 41 54 55 53 5f 50 41 52  QLITE_STATUS_PAR
b670: 53 45 52 5f 53 54 41 43 4b 5d 2c 2e 2e 2e 29 0a  SER_STACK],...).
b680: 20 20 69 6e 74 65 72 66 61 63 65 2e 20 20 53 51    interface.  SQ
b690: 4c 69 74 65 27 73 20 4c 41 4c 52 28 31 29 20 70  Lite's LALR(1) p
b6a0: 61 72 73 65 72 20 68 61 73 20 61 20 66 69 78 65  arser has a fixe
b6b0: 64 20 73 74 61 63 6b 20 64 65 70 74 68 0a 20 20  d stack depth.  
b6c0: 28 64 65 74 65 72 6d 69 6e 65 64 20 61 74 20 63  (determined at c
b6d0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 75 73 69 6e  ompile-time usin
b6e0: 67 20 74 68 65 20 5b 59 59 53 54 41 43 4b 44 45  g the [YYSTACKDE
b6f0: 50 54 48 5d 20 6f 70 74 69 6f 6e 73 29 2e 0a 20  PTH] options).. 
b700: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 6e   This option can
b710: 20 62 65 20 75 73 65 64 20 74 6f 20 68 65 6c 70   be used to help
b720: 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 61 6e   determine if an
b730: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 0a   application is.
b740: 20 20 67 65 74 74 69 6e 67 20 63 6c 6f 73 65 20    getting close 
b750: 74 6f 20 65 78 63 65 65 64 69 6e 67 20 74 68 65  to exceeding the
b760: 20 6d 61 78 69 6d 75 6d 20 4c 41 4c 52 28 31 29   maximum LALR(1)
b770: 20 73 74 61 63 6b 20 64 65 70 74 68 2e 0a 7d 0a   stack depth..}.
b780: 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d  </tcl>..<a name=
b790: 22 64 69 73 61 62 6c 65 66 65 61 74 75 72 65 73  "disablefeatures
b7a0: 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 4f 70 74 69  "></a>.<h1> Opti
b7b0: 6f 6e 73 20 54 6f 20 44 69 73 61 62 6c 65 20 46  ons To Disable F
b7c0: 65 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79  eatures Normally
b7d0: 20 54 75 72 6e 65 64 20 4f 6e 3c 2f 68 31 3e 0a   Turned On</h1>.
b7e0: 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f  .<tcl>.COMPILE_O
b7f0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49  PTION {SQLITE_DI
b800: 53 41 42 4c 45 5f 4c 46 53 7d 20 7b 0a 20 20 49  SABLE_LFS} {.  I
b810: 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63  f this C-preproc
b820: 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64  essor macro is d
b830: 65 66 69 6e 65 64 2c 20 6c 61 72 67 65 20 66 69  efined, large fi
b840: 6c 65 20 73 75 70 70 6f 72 74 0a 20 20 69 73 20  le support.  is 
b850: 64 69 73 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d  disabled..}..COM
b860: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
b870: 49 54 45 5f 44 49 53 41 42 4c 45 5f 44 49 52 53  ITE_DISABLE_DIRS
b880: 59 4e 43 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  YNC} {.  If this
b890: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C-preprocessor 
b8a0: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
b8b0: 2c 20 64 69 72 65 63 74 6f 72 79 20 73 79 6e 63  , directory sync
b8c0: 73 0a 20 20 61 72 65 20 64 69 73 61 62 6c 65 64  s.  are disabled
b8d0: 2e 20 20 53 51 4c 69 74 65 20 74 79 70 69 63 61  .  SQLite typica
b8e0: 6c 6c 79 20 61 74 74 65 6d 70 74 73 20 74 6f 20  lly attempts to 
b8f0: 73 79 6e 63 20 74 68 65 20 70 61 72 65 6e 74 0a  sync the parent.
b900: 20 20 64 69 72 65 63 74 6f 72 79 20 77 68 65 6e    directory when
b910: 20 61 20 66 69 6c 65 20 69 73 20 64 65 6c 65 74   a file is delet
b920: 65 64 20 74 6f 20 65 6e 73 75 72 65 20 74 68 65  ed to ensure the
b930: 20 64 69 72 65 63 74 6f 72 79 0a 20 20 65 6e 74   directory.  ent
b940: 72 69 65 73 20 61 72 65 20 75 70 64 61 74 65 64  ries are updated
b950: 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 6f 6e 20   immediately on 
b960: 64 69 73 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  disk..}..COMPILE
b970: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
b980: 44 49 53 41 42 4c 45 5f 46 54 53 33 5f 55 4e 49  DISABLE_FTS3_UNI
b990: 43 4f 44 45 7d 20 7b 0a 20 20 49 66 20 74 68 69  CODE} {.  If thi
b9a0: 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72  s C-preprocessor
b9b0: 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65   macro is define
b9c0: 64 2c 20 74 68 65 20 5b 75 6e 69 63 6f 64 65 36  d, the [unicode6
b9d0: 31 5d 20 74 6f 6b 65 6e 69 7a 65 72 0a 20 20 69  1] tokenizer.  i
b9e0: 6e 20 5b 46 54 53 33 5d 20 69 73 20 6f 6d 69 74  n [FTS3] is omit
b9f0: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69  ted from the bui
ba00: 6c 64 20 61 6e 64 20 69 73 20 75 6e 61 76 61 69  ld and is unavai
ba10: 6c 61 62 6c 65 20 74 6f 20 0a 20 20 61 70 70 6c  lable to .  appl
ba20: 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d  ications..}..COM
ba30: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
ba40: 49 54 45 5f 44 49 53 41 42 4c 45 5f 46 54 53 34  ITE_DISABLE_FTS4
ba50: 5f 44 45 46 45 52 52 45 44 7d 20 7b 0a 20 20 49  _DEFERRED} {.  I
ba60: 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63  f this C-preproc
ba70: 65 73 73 6f 72 20 6d 61 63 72 6f 20 64 69 73 61  essor macro disa
ba80: 62 6c 65 73 20 74 68 65 20 22 64 65 66 65 72 72  bles the "deferr
ba90: 65 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69  ed token" optimi
baa0: 7a 61 74 69 6f 6e 0a 20 20 69 6e 20 5b 46 54 53  zation.  in [FTS
bab0: 34 5d 2e 20 20 54 68 65 20 22 64 65 66 65 72 72  4].  The "deferr
bac0: 65 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69  ed token" optimi
bad0: 7a 61 74 69 6f 6e 20 61 76 6f 69 64 73 20 6c 6f  zation avoids lo
bae0: 61 64 69 6e 67 20 6d 61 73 73 69 76 65 0a 20 20  ading massive.  
baf0: 70 6f 73 74 69 6e 67 20 6c 69 73 74 73 20 66 6f  posting lists fo
bb00: 72 20 74 65 72 6d 73 20 74 68 61 74 20 61 72 65  r terms that are
bb10: 20 69 6e 20 6d 6f 73 74 20 64 6f 63 75 6d 65 6e   in most documen
bb20: 74 73 20 6f 66 20 74 68 65 20 63 6f 6c 6c 65 63  ts of the collec
bb30: 74 69 6f 6e 0a 20 20 61 6e 64 20 69 6e 73 74 65  tion.  and inste
bb40: 61 64 20 73 69 6d 70 6c 79 20 73 63 61 6e 73 20  ad simply scans 
bb50: 66 6f 72 20 74 68 6f 73 65 20 74 6f 6b 65 6e 73  for those tokens
bb60: 20 69 6e 20 74 68 65 20 64 6f 63 75 6d 65 6e 74   in the document
bb70: 20 73 6f 75 72 63 65 2e 20 20 5b 46 54 53 34 5d   source.  [FTS4]
bb80: 0a 20 20 73 68 6f 75 6c 64 20 67 65 74 20 65 78  .  should get ex
bb90: 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20 61  actly the same a
bba0: 6e 73 77 65 72 20 62 6f 74 68 20 77 69 74 68 20  nswer both with 
bbb0: 61 6e 64 20 77 69 74 68 6f 75 74 20 74 68 69 73  and without this
bbc0: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2e 0a 7d   optimization..}
bbd0: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a 20  .</tcl>..<tcl>. 
bbe0: 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 22 6f 6d   hd_fragment "om
bbf0: 69 74 66 65 61 74 75 72 65 73 22 0a 20 20 68 64  itfeatures".  hd
bc00: 5f 6b 65 79 77 6f 72 64 73 20 22 6f 6d 69 74 66  _keywords "omitf
bc10: 65 61 74 75 72 65 73 22 0a 3c 2f 74 63 6c 3e 0a  eatures".</tcl>.
bc20: 3c 68 31 3e 20 4f 70 74 69 6f 6e 73 20 54 6f 20  <h1> Options To 
bc30: 4f 6d 69 74 20 46 65 61 74 75 72 65 73 3c 2f 68  Omit Features</h
bc40: 31 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f  1>..<p>The follo
bc50: 77 69 6e 67 20 6f 70 74 69 6f 6e 73 20 63 61 6e  wing options can
bc60: 20 62 65 20 75 73 65 64 20 74 6f 20 0a 5b 72 65   be used to .[re
bc70: 6c 66 6f 6f 74 70 72 69 6e 74 20 7c 20 72 65 64  lfootprint | red
bc80: 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20  uce the size of 
bc90: 74 68 65 20 63 6f 6d 70 69 6c 65 64 20 6c 69 62  the compiled lib
bca0: 72 61 72 79 5d 0a 62 79 20 6f 6d 69 74 74 69 6e  rary].by omittin
bcb0: 67 20 75 6e 75 73 65 64 20 66 65 61 74 75 72 65  g unused feature
bcc0: 73 2e 20 54 68 69 73 20 69 73 20 70 72 6f 62 61  s. This is proba
bcd0: 62 6c 79 20 6f 6e 6c 79 20 75 73 65 66 75 6c 0a  bly only useful.
bce0: 69 6e 20 65 6d 62 65 64 64 65 64 20 73 79 73 74  in embedded syst
bcf0: 65 6d 73 20 77 68 65 72 65 20 73 70 61 63 65 20  ems where space 
bd00: 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 74 69  is especially ti
bd10: 67 68 74 2c 20 61 73 20 65 76 65 6e 20 77 69 74  ght, as even wit
bd20: 68 20 61 6c 6c 0a 66 65 61 74 75 72 65 73 20 69  h all.features i
bd30: 6e 63 6c 75 64 65 64 20 74 68 65 20 53 51 4c 69  ncluded the SQLi
bd40: 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 72 65  te library is re
bd50: 6c 61 74 69 76 65 6c 79 20 73 6d 61 6c 6c 2e 20  latively small. 
bd60: 44 6f 6e 27 74 20 66 6f 72 67 65 74 0a 74 6f 20  Don't forget.to 
bd70: 74 65 6c 6c 20 79 6f 75 72 20 63 6f 6d 70 69 6c  tell your compil
bd80: 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 66  er to optimize f
bd90: 6f 72 20 62 69 6e 61 72 79 20 73 69 7a 65 21 20  or binary size! 
bda0: 28 74 68 65 20 2d 4f 73 20 6f 70 74 69 6f 6e 20  (the -Os option 
bdb0: 69 66 0a 75 73 69 6e 67 20 47 43 43 29 2e 20 20  if.using GCC).  
bdc0: 54 65 6c 6c 69 6e 67 20 79 6f 75 72 20 63 6f 6d  Telling your com
bdd0: 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a  piler to optimiz
bde0: 65 20 66 6f 72 20 73 69 7a 65 20 75 73 75 61 6c  e for size usual
bdf0: 6c 79 20 68 61 73 0a 61 20 6d 75 63 68 20 6c 61  ly has.a much la
be00: 72 67 65 72 20 69 6d 70 61 63 74 20 6f 6e 20 6c  rger impact on l
be10: 69 62 72 61 72 79 20 66 6f 6f 74 70 72 69 6e 74  ibrary footprint
be20: 20 74 68 61 6e 20 65 6d 70 6c 6f 79 69 6e 67 20   than employing 
be30: 61 6e 79 20 6f 66 20 74 68 65 73 65 0a 63 6f 6d  any of these.com
be40: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
be50: 73 2e 20 20 59 6f 75 20 73 68 6f 75 6c 64 20 61  s.  You should a
be60: 6c 73 6f 20 76 65 72 69 66 79 20 74 68 61 74 20  lso verify that 
be70: 0a 3c 61 20 68 72 65 66 3d 22 23 64 65 62 75 67  .<a href="#debug
be80: 6f 70 74 69 6f 6e 73 22 3e 64 65 62 75 67 67 69  options">debuggi
be90: 6e 67 20 6f 70 74 69 6f 6e 73 3c 2f 61 3e 20 61  ng options</a> a
bea0: 72 65 20 64 69 73 61 62 6c 65 64 2e 3c 2f 70 3e  re disabled.</p>
beb0: 0a 0a 3c 70 3e 54 68 65 20 6d 61 63 72 6f 73 20  ..<p>The macros 
bec0: 69 6e 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20  in this section 
bed0: 64 6f 20 6e 6f 74 20 72 65 71 75 69 72 65 20 76  do not require v
bee0: 61 6c 75 65 73 2e 20 54 68 65 20 66 6f 6c 6c 6f  alues. The follo
bef0: 77 69 6e 67 20 0a 63 6f 6d 70 69 6c 61 74 69 6f  wing .compilatio
bf00: 6e 20 73 77 69 74 63 68 65 73 20 61 6c 6c 20 68  n switches all h
bf10: 61 76 65 20 74 68 65 20 73 61 6d 65 20 65 66 66  ave the same eff
bf20: 65 63 74 3a 3c 62 72 3e 0a 2d 44 53 51 4c 49 54  ect:<br>.-DSQLIT
bf30: 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c  E_OMIT_ALTERTABL
bf40: 45 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f  E<br>.-DSQLITE_O
bf50: 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d 31  MIT_ALTERTABLE=1
bf60: 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d  <br>.-DSQLITE_OM
bf70: 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d 30 0a  IT_ALTERTABLE=0.
bf80: 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 6e 79 20  </p>..<p>If any 
bf90: 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73  of these options
bfa0: 20 61 72 65 20 64 65 66 69 6e 65 64 2c 20 74 68   are defined, th
bfb0: 65 6e 20 74 68 65 20 73 61 6d 65 20 73 65 74 20  en the same set 
bfc0: 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  of SQLITE_OMIT_*
bfd0: 0a 6f 70 74 69 6f 6e 73 20 6d 75 73 74 20 61 6c  .options must al
bfe0: 73 6f 20 62 65 20 64 65 66 69 6e 65 64 20 77 68  so be defined wh
bff0: 65 6e 20 75 73 69 6e 67 20 74 68 65 20 27 6c 65  en using the 'le
c000: 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67 65 6e  mon' tool to gen
c010: 65 72 61 74 65 20 74 68 65 0a 70 61 72 73 65 2e  erate the.parse.
c020: 63 20 66 69 6c 65 20 61 6e 64 20 77 68 65 6e 20  c file and when 
c030: 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20 27 6d  compiling the 'm
c040: 6b 6b 65 79 77 6f 72 64 68 61 73 68 27 20 74 6f  kkeywordhash' to
c050: 6f 6c 20 77 68 69 63 68 20 67 65 6e 65 72 61 74  ol which generat
c060: 65 73 20 0a 74 68 65 20 6b 65 79 77 6f 72 64 68  es .the keywordh
c070: 61 73 68 2e 68 20 66 69 6c 65 2e 0a 42 65 63 61  ash.h file..Beca
c080: 75 73 65 20 6f 66 20 74 68 69 73 2c 20 74 68 65  use of this, the
c090: 73 65 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20 6f  se options may o
c0a0: 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68 65 6e  nly be used when
c0b0: 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73 20   the library is 
c0c0: 62 75 69 6c 74 0a 66 72 6f 6d 20 63 61 6e 6f 6e  built.from canon
c0d0: 69 63 61 6c 20 73 6f 75 72 63 65 2c 20 6e 6f 74  ical source, not
c0e0: 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d 61 6c 67   from the [amalg
c0f0: 61 6d 61 74 69 6f 6e 5d 2e 0a 53 6f 6d 65 20 53  amation]..Some S
c100: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74  QLITE_OMIT_* opt
c110: 69 6f 6e 73 20 6d 69 67 68 74 20 77 6f 72 6b 2c  ions might work,
c120: 20 6f 72 20 61 70 70 65 61 72 20 74 6f 20 77 6f   or appear to wo
c130: 72 6b 2c 20 77 68 65 6e 20 75 73 65 64 20 77 69  rk, when used wi
c140: 74 68 0a 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61  th.the [amalgama
c150: 74 69 6f 6e 5d 2e 20 20 42 75 74 20 74 68 69 73  tion].  But this
c160: 20 69 73 20 6e 6f 74 20 67 75 61 72 61 6e 74 65   is not guarante
c170: 65 64 2e 20 20 49 6e 20 67 65 6e 65 72 61 6c 2c  ed.  In general,
c180: 20 61 6c 77 61 79 73 20 63 6f 6d 70 69 6c 65 0a   always compile.
c190: 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 73  from canonical s
c1a0: 6f 75 72 63 65 73 20 69 6e 20 6f 72 64 65 72 20  ources in order 
c1b0: 74 6f 20 74 61 6b 65 20 61 64 76 61 6e 74 61 67  to take advantag
c1c0: 65 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  e of SQLITE_OMIT
c1d0: 5f 2a 20 6f 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e  _* options..</p>
c1e0: 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c  ..<blockquote>.<
c1f0: 69 3e 3c 62 3e 49 6d 70 6f 72 74 61 6e 74 20 4e  i><b>Important N
c200: 6f 74 65 3a 3c 2f 62 3e 20 54 68 65 20 53 51 4c  ote:</b> The SQL
c210: 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f  ITE_OMIT_* optio
c220: 6e 73 20 6d 61 79 20 6e 6f 74 20 77 6f 72 6b 20  ns may not work 
c230: 77 69 74 68 20 74 68 65 0a 5b 61 6d 61 6c 67 61  with the.[amalga
c240: 6d 61 74 69 6f 6e 5d 2e 20 20 53 51 4c 49 54 45  mation].  SQLITE
c250: 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d  _OMIT_* compile-
c260: 74 69 6d 65 0a 6f 70 74 69 6f 6e 73 20 75 73 75  time.options usu
c270: 61 6c 6c 79 20 77 6f 72 6b 20 63 6f 72 72 65 63  ally work correc
c280: 74 6c 79 20 6f 6e 6c 79 20 77 68 65 6e 20 53 51  tly only when SQ
c290: 4c 69 74 65 20 69 73 20 62 75 69 6c 74 20 66 72  Lite is built fr
c2a0: 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 0a 73 6f  om canonical .so
c2b0: 75 72 63 65 20 66 69 6c 65 73 2e 0a 3c 2f 69 3e  urce files..</i>
c2c0: 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  .</blockquote>..
c2d0: 0a 3c 70 3e 53 70 65 63 69 61 6c 20 76 65 72 73  .<p>Special vers
c2e0: 69 6f 6e 73 20 6f 66 20 74 68 65 20 53 51 4c 69  ions of the SQLi
c2f0: 74 65 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20  te amalgamation 
c300: 74 68 61 74 20 64 6f 20 77 6f 72 6b 20 77 69 74  that do work wit
c310: 68 20 61 0a 70 72 65 64 65 74 65 72 6d 69 6e 65  h a.predetermine
c320: 64 20 73 65 74 20 6f 66 20 53 51 4c 49 54 45 5f  d set of SQLITE_
c330: 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 63  OMIT_* options c
c340: 61 6e 20 62 65 20 67 65 6e 65 72 61 74 65 64 2e  an be generated.
c350: 20 20 54 6f 20 64 6f 20 73 6f 2c 0a 6d 61 6b 65    To do so,.make
c360: 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 4d   a copy of the M
c370: 61 6b 65 66 69 6c 65 2e 6c 69 6e 75 78 2d 67 63  akefile.linux-gc
c380: 63 20 6d 61 6b 65 66 69 6c 65 20 74 65 6d 70 6c  c makefile templ
c390: 61 74 65 20 69 6e 20 74 68 65 20 63 61 6e 6f 6e  ate in the canon
c3a0: 69 63 61 6c 0a 73 6f 75 72 63 65 20 63 6f 64 65  ical.source code
c3b0: 20 64 69 73 74 72 69 62 75 74 69 6f 6e 2e 20 20   distribution.  
c3c0: 43 68 61 6e 67 65 20 74 68 65 20 6e 61 6d 65 20  Change the name 
c3d0: 6f 66 20 79 6f 75 72 20 63 6f 70 79 20 74 6f 20  of your copy to 
c3e0: 73 69 6d 70 6c 79 20 22 4d 61 6b 65 66 69 6c 65  simply "Makefile
c3f0: 22 2e 0a 54 68 65 6e 20 65 64 69 74 20 22 4d 61  "..Then edit "Ma
c400: 6b 65 66 69 6c 65 22 20 74 6f 20 73 65 74 20 75  kefile" to set u
c410: 70 20 61 70 70 72 6f 70 72 69 61 74 65 20 63 6f  p appropriate co
c420: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
c430: 6e 73 2e 20 20 54 68 65 6e 0a 74 79 70 65 3a 0a  ns.  Then.type:.
c440: 3c 63 6f 64 65 62 6c 6f 63 6b 3e 0a 6d 61 6b 65  <codeblock>.make
c450: 20 63 6c 65 61 6e 3b 20 6d 61 6b 65 20 73 71 6c   clean; make sql
c460: 69 74 65 33 2e 63 0a 3c 2f 63 6f 64 65 62 6c 6f  ite3.c.</codeblo
c470: 63 6b 3e 0a 3c 70 3e 54 68 65 20 72 65 73 75 6c  ck>.<p>The resul
c480: 74 69 6e 67 20 22 73 71 6c 69 74 65 33 2e 63 22  ting "sqlite3.c"
c490: 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20 63 6f   amalgamation co
c4a0: 64 65 20 66 69 6c 65 20 28 61 6e 64 20 69 74 73  de file (and its
c4b0: 20 61 73 73 6f 63 69 61 74 65 64 0a 68 65 61 64   associated.head
c4c0: 65 72 20 66 69 6c 65 20 22 73 71 6c 69 74 65 33  er file "sqlite3
c4d0: 2e 68 22 29 20 63 61 6e 20 74 68 65 6e 20 62 65  .h") can then be
c4e0: 20 6d 6f 76 65 64 20 74 6f 20 61 20 6e 6f 6e 2d   moved to a non-
c4f0: 75 6e 69 78 20 70 6c 61 74 66 6f 72 6d 0a 66 6f  unix platform.fo
c500: 72 20 66 69 6e 61 6c 20 63 6f 6d 70 69 6c 61 74  r final compilat
c510: 69 6f 6e 20 75 73 69 6e 67 20 61 20 6e 61 74 69  ion using a nati
c520: 76 65 20 63 6f 6d 70 69 6c 65 72 2e 3c 2f 70 3e  ve compiler.</p>
c530: 0a 0a 3c 70 3e 54 68 65 20 53 51 4c 49 54 45 5f  ..<p>The SQLITE_
c540: 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 61  OMIT_* options a
c550: 72 65 20 75 6e 73 75 70 70 6f 72 74 65 64 2e 20  re unsupported. 
c560: 20 42 79 20 74 68 69 73 20 77 65 20 6d 65 61 6e   By this we mean
c570: 20 74 68 61 74 0a 61 6e 20 53 51 4c 49 54 45 5f   that.an SQLITE_
c580: 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 20 74 68  OMIT_* option th
c590: 61 74 20 6f 6d 69 74 73 20 63 6f 64 65 20 66 72  at omits code fr
c5a0: 6f 6d 20 74 68 65 20 62 75 69 6c 64 20 69 6e 20  om the build in 
c5b0: 74 68 65 20 63 75 72 72 65 6e 74 0a 72 65 6c 65  the current.rele
c5c0: 61 73 65 20 6d 69 67 68 74 20 62 65 63 6f 6d 65  ase might become
c5d0: 20 61 20 6e 6f 2d 6f 70 20 69 6e 20 74 68 65 20   a no-op in the 
c5e0: 6e 65 78 74 20 72 65 6c 65 61 73 65 2e 20 20 4f  next release.  O
c5f0: 72 20 74 68 65 20 6f 74 68 65 72 20 77 61 79 20  r the other way 
c600: 61 72 6f 75 6e 64 3a 0a 61 6e 20 53 51 4c 49 54  around:.an SQLIT
c610: 45 5f 4f 4d 49 54 5f 2a 20 74 68 61 74 20 69 73  E_OMIT_* that is
c620: 20 61 20 6e 6f 2d 6f 70 20 69 6e 20 74 68 65 20   a no-op in the 
c630: 63 75 72 72 65 6e 74 20 72 65 6c 65 61 73 65 20  current release 
c640: 6d 69 67 68 74 20 63 61 75 73 65 20 63 6f 64 65  might cause code
c650: 0a 74 6f 20 62 65 20 65 78 63 6c 75 64 65 64 20  .to be excluded 
c660: 69 6e 20 74 68 65 20 6e 65 78 74 20 72 65 6c 65  in the next rele
c670: 61 73 65 2e 20 20 41 6c 73 6f 2c 20 6e 6f 74 20  ase.  Also, not 
c680: 61 6c 6c 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  all SQLITE_OMIT_
c690: 2a 20 6f 70 74 69 6f 6e 73 0a 61 72 65 20 74 65  * options.are te
c6a0: 73 74 65 64 2e 20 20 53 6f 6d 65 20 53 51 4c 49  sted.  Some SQLI
c6b0: 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e  TE_OMIT_* option
c6c0: 73 20 6d 69 67 68 74 20 63 61 75 73 65 20 53 51  s might cause SQ
c6d0: 4c 69 74 65 20 74 6f 20 6d 61 6c 66 75 6e 63 74  Lite to malfunct
c6e0: 69 6f 6e 0a 61 6e 64 2f 6f 72 20 70 72 6f 76 69  ion.and/or provi
c6f0: 64 65 20 69 6e 63 6f 72 72 65 63 74 20 61 6e 73  de incorrect ans
c700: 77 65 72 73 2e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  wers...<blockquo
c710: 74 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74  te>.<i><b>Import
c720: 61 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e 0a 54 68  ant Note:</b>.Th
c730: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  e SQLITE_OMIT_* 
c740: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
c750: 69 6f 6e 73 20 61 72 65 20 6d 6f 73 74 6c 79 20  ions are mostly 
c760: 75 6e 73 75 70 70 6f 72 74 65 64 2e 0a 3c 2f 69  unsupported..</i
c770: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  ></blockquote>..
c780: 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  <p>The following
c790: 20 61 72 65 20 74 68 65 20 61 76 61 69 6c 61 62   are the availab
c7a0: 6c 65 20 4f 4d 49 54 20 6f 70 74 69 6f 6e 73 3a  le OMIT options:
c7b0: 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f  ..<tcl>.COMPILE_
c7c0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
c7d0: 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 7d 20  MIT_ALTERTABLE} 
c7e0: 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  {.  When this op
c7f0: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
c800: 20 74 68 65 20 0a 20 20 5b 41 4c 54 45 52 20 54   the .  [ALTER T
c810: 41 42 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73  ABLE] command is
c820: 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e   not included in
c830: 20 74 68 65 20 0a 20 20 6c 69 62 72 61 72 79 2e   the .  library.
c840: 20 45 78 65 63 75 74 69 6e 67 20 61 6e 20 5b 41   Executing an [A
c850: 4c 54 45 52 20 54 41 42 4c 45 5d 20 73 74 61 74  LTER TABLE] stat
c860: 65 6d 65 6e 74 20 63 61 75 73 65 73 20 61 20 70  ement causes a p
c870: 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43  arse error..}..C
c880: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
c890: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4e 41 4c 59  QLITE_OMIT_ANALY
c8a0: 5a 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  ZE} {.  When thi
c8b0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
c8c0: 6e 65 64 2c 20 74 68 65 20 5b 41 4e 41 4c 59 5a  ned, the [ANALYZ
c8d0: 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6f 6d  E] command is om
c8e0: 69 74 74 65 64 20 66 72 6f 6d 0a 20 20 74 68 65  itted from.  the
c8f0: 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49   build..}..COMPI
c900: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
c910: 45 5f 4f 4d 49 54 5f 41 54 54 41 43 48 7d 20 7b  E_OMIT_ATTACH} {
c920: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
c930: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
c940: 74 68 65 20 5b 41 54 54 41 43 48 5d 20 61 6e 64  the [ATTACH] and
c950: 20 5b 44 45 54 41 43 48 5d 20 63 6f 6d 6d 61 6e   [DETACH] comman
c960: 64 73 20 61 72 65 0a 20 20 6f 6d 69 74 74 65 64  ds are.  omitted
c970: 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e   from the build.
c980: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
c990: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
c9a0: 41 55 54 48 4f 52 49 5a 41 54 49 4f 4e 7d 20 7b  AUTHORIZATION} {
c9b0: 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73  .  Defining this
c9c0: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68   option omits th
c9d0: 65 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20  e authorization 
c9e0: 63 61 6c 6c 62 61 63 6b 20 66 65 61 74 75 72 65  callback feature
c9f0: 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72   from the.  libr
ca00: 61 72 79 2e 20 54 68 65 20 5b 73 71 6c 69 74 65  ary. The [sqlite
ca10: 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72  3_set_authorizer
ca20: 28 29 5d 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  ()] API function
ca30: 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 0a   is not present.
ca40: 20 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79    in the library
ca50: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
ca60: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
ca70: 5f 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 7d 20  _AUTOINCREMENT} 
ca80: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
ca90: 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20  is used to omit 
caa0: 74 68 65 20 0a 20 20 5b 41 55 54 4f 49 4e 43 52  the .  [AUTOINCR
cab0: 45 4d 45 4e 54 5d 20 66 75 6e 63 74 69 6f 6e 61  EMENT] functiona
cac0: 6c 69 74 79 2e 20 57 68 65 6e 20 74 68 69 73 20  lity. When this 
cad0: 0a 20 20 69 73 20 6d 61 63 72 6f 20 69 73 20 64  .  is macro is d
cae0: 65 66 69 6e 65 64 2c 20 63 6f 6c 75 6d 6e 73 20  efined, columns 
caf0: 64 65 63 6c 61 72 65 64 20 61 73 20 0a 20 20 22  declared as .  "
cb00: 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59  [INTEGER PRIMARY
cb10: 20 4b 45 59 5d 20 41 55 54 4f 49 4e 43 52 45 4d   KEY] AUTOINCREM
cb20: 45 4e 54 22 0a 20 20 62 65 68 61 76 65 20 69 6e  ENT".  behave in
cb30: 20 74 68 65 20 73 61 6d 65 20 77 61 79 20 61 73   the same way as
cb40: 20 63 6f 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65   columns declare
cb50: 64 20 61 73 20 22 5b 49 4e 54 45 47 45 52 20 50  d as "[INTEGER P
cb60: 52 49 4d 41 52 59 20 4b 45 59 5d 22 20 77 68 65  RIMARY KEY]" whe
cb70: 6e 20 61 20 0a 20 20 4e 55 4c 4c 20 69 73 20 69  n a .  NULL is i
cb80: 6e 73 65 72 74 65 64 2e 20 54 68 65 20 73 71 6c  nserted. The sql
cb90: 69 74 65 5f 73 65 71 75 65 6e 63 65 20 73 79 73  ite_sequence sys
cba0: 74 65 6d 20 74 61 62 6c 65 20 69 73 20 6e 65 69  tem table is nei
cbb0: 74 68 65 72 20 63 72 65 61 74 65 64 2c 20 6e 6f  ther created, no
cbc0: 72 0a 20 20 72 65 73 70 65 63 74 65 64 20 69 66  r.  respected if
cbd0: 20 69 74 20 61 6c 72 65 61 64 79 20 65 78 69 73   it already exis
cbe0: 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ts..}..COMPILE_O
cbf0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
cc00: 49 54 5f 41 55 54 4f 49 4e 49 54 7d 20 7b 0a 20  IT_AUTOINIT} {. 
cc10: 20 46 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63   For backwards c
cc20: 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74  ompatibility wit
cc30: 68 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73  h older versions
cc40: 20 6f 66 20 53 51 4c 69 74 65 20 74 68 61 74 20   of SQLite that 
cc50: 6c 61 63 6b 0a 20 20 74 68 65 20 5b 73 71 6c 69  lack.  the [sqli
cc60: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
cc70: 5d 20 69 6e 74 65 72 66 61 63 65 2c 20 74 68 65  ] interface, the
cc80: 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61   [sqlite3_initia
cc90: 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72 66 61 63  lize()] interfac
cca0: 65 0a 20 20 69 73 20 63 61 6c 6c 65 64 20 61 75  e.  is called au
ccb0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 75 70 6f 6e  tomatically upon
ccc0: 20 65 6e 74 72 79 20 74 6f 20 63 65 72 74 61 69   entry to certai
ccd0: 6e 20 6b 65 79 20 69 6e 74 65 72 66 61 63 65 73  n key interfaces
cce0: 20 73 75 63 68 20 61 73 0a 20 20 5b 73 71 6c 69   such as.  [sqli
ccf0: 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71  te3_open()], [sq
cd00: 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74  lite3_vfs_regist
cd10: 65 72 28 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69  er()], and [sqli
cd20: 74 65 33 5f 6d 70 72 69 6e 74 66 28 29 5d 2e 0a  te3_mprintf()]..
cd30: 20 20 54 68 65 20 6f 76 65 72 68 65 61 64 20 6f    The overhead o
cd40: 66 20 69 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c 69  f invoking [sqli
cd50: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
cd60: 5d 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  ] automatically 
cd70: 69 6e 20 74 68 69 73 0a 20 20 77 61 79 20 6d 61  in this.  way ma
cd80: 79 20 62 65 20 6f 6d 69 74 74 65 64 20 62 79 20  y be omitted by 
cd90: 62 75 69 6c 64 69 6e 67 20 53 51 4c 69 74 65 20  building SQLite 
cda0: 77 69 74 68 20 74 68 65 20 53 51 4c 49 54 45 5f  with the SQLITE_
cdb0: 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 0a 20 20  OMIT_AUTOINIT.  
cdc0: 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C-preprocessor m
cdd0: 61 63 72 6f 2e 20 20 57 68 65 6e 20 62 75 69 6c  acro.  When buil
cde0: 74 20 75 73 69 6e 67 20 53 51 4c 49 54 45 5f 4f  t using SQLITE_O
cdf0: 4d 49 54 5f 41 55 54 4f 49 4e 49 54 2c 20 53 51  MIT_AUTOINIT, SQ
ce00: 4c 69 74 65 0a 20 20 77 69 6c 6c 20 6e 6f 74 20  Lite.  will not 
ce10: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e  automatically in
ce20: 69 74 69 61 6c 69 7a 65 20 69 74 73 65 6c 66 20  itialize itself 
ce30: 61 6e 64 20 74 68 65 20 61 70 70 6c 69 63 61 74  and the applicat
ce40: 69 6f 6e 20 69 73 20 72 65 71 75 69 72 65 64 0a  ion is required.
ce50: 20 20 74 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c    to invoke [sql
ce60: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
ce70: 29 5d 20 64 69 72 65 63 74 6c 79 20 70 72 69 6f  )] directly prio
ce80: 72 20 74 6f 20 62 65 67 69 6e 6e 69 6e 67 20 75  r to beginning u
ce90: 73 65 20 6f 66 20 74 68 65 0a 20 20 53 51 4c 69  se of the.  SQLi
cea0: 74 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43  te library..}..C
ceb0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
cec0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 4d  QLITE_OMIT_AUTOM
ced0: 41 54 49 43 5f 49 4e 44 45 58 7d 20 7b 0a 20 20  ATIC_INDEX} {.  
cee0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  This option is u
cef0: 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20  sed to omit the 
cf00: 0a 20 20 5b 61 75 74 6f 6d 61 74 69 63 20 69 6e  .  [automatic in
cf10: 64 65 78 69 6e 67 5d 20 66 75 6e 63 74 69 6f 6e  dexing] function
cf20: 61 6c 69 74 79 2e 0a 20 20 53 65 65 20 61 6c 73  ality..  See als
cf30: 6f 3a 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55  o: [SQLITE_DEFAU
cf40: 4c 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44  LT_AUTOMATIC_IND
cf50: 45 58 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  EX]..}..COMPILE_
cf60: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
cf70: 4d 49 54 5f 41 55 54 4f 52 45 53 45 54 7d 20 7b  MIT_AUTORESET} {
cf80: 0a 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 74  .  By default, t
cf90: 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  he [sqlite3_step
cfa0: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 77 69  ()] interface wi
cfb0: 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ll automatically
cfc0: 20 69 6e 76 6f 6b 65 0a 20 20 5b 73 71 6c 69 74   invoke.  [sqlit
cfd0: 65 33 5f 72 65 73 65 74 28 29 5d 20 74 6f 20 72  e3_reset()] to r
cfe0: 65 73 65 74 20 74 68 65 20 5b 70 72 65 70 61 72  eset the [prepar
cff0: 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 69 66  ed statement] if
d000: 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68 69   necessary.  Thi
d010: 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  s.  compile-time
d020: 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20   option changes 
d030: 74 68 61 74 20 62 65 68 61 76 69 6f 72 20 73 6f  that behavior so
d040: 20 74 68 61 74 20 5b 73 71 6c 69 74 65 33 5f 73   that [sqlite3_s
d050: 74 65 70 28 29 5d 20 77 69 6c 6c 0a 20 20 72 65  tep()] will.  re
d060: 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53  turn [SQLITE_MIS
d070: 55 53 45 5d 20 69 66 20 69 74 20 63 61 6c 6c 65  USE] if it calle
d080: 64 20 61 67 61 69 6e 20 61 66 74 65 72 20 72 65  d again after re
d090: 74 75 72 6e 69 6e 67 20 61 6e 79 74 68 69 6e 67  turning anything
d0a0: 20 6f 74 68 65 72 0a 20 20 74 68 61 6e 20 5b 53   other.  than [S
d0b0: 51 4c 49 54 45 5f 52 4f 57 5d 2c 20 5b 53 51 4c  QLITE_ROW], [SQL
d0c0: 49 54 45 5f 42 55 53 59 5d 2c 20 6f 72 20 5b 53  ITE_BUSY], or [S
d0d0: 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 75 6e  QLITE_LOCKED] un
d0e0: 6c 65 73 73 20 74 68 65 72 65 20 77 61 73 20 61  less there was a
d0f0: 6e 0a 20 20 69 6e 74 65 72 76 65 6e 69 6e 67 20  n.  intervening 
d100: 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33  call to [sqlite3
d110: 5f 72 65 73 65 74 28 29 5d 2e 0a 0a 20 20 49 6e  _reset()]...  In
d120: 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e   SQLite [version
d130: 20 33 2e 36 2e 32 33 2e 31 5d 20 28 5b 64 61 74   3.6.23.1] ([dat
d140: 65 6f 66 3a 33 2e 36 2e 32 33 2e 31 5d 29 0a 20  eof:3.6.23.1]). 
d150: 20 61 6e 64 20 65 61 72 6c 69 65 72 2c 20 5b 73   and earlier, [s
d160: 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 75  qlite3_step()] u
d170: 73 65 64 20 74 6f 20 61 6c 77 61 79 73 0a 20 20  sed to always.  
d180: 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4d  return [SQLITE_M
d190: 49 53 55 53 45 5d 20 69 66 20 69 74 20 77 61 73  ISUSE] if it was
d1a0: 20 69 6e 76 6f 6b 65 64 20 61 67 61 69 6e 20 61   invoked again a
d1b0: 66 74 65 72 20 72 65 74 75 72 6e 69 6e 67 20 61  fter returning a
d1c0: 6e 79 74 68 69 6e 67 0a 20 20 6f 74 68 65 72 20  nything.  other 
d1d0: 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 52 4f 57  than [SQLITE_ROW
d1e0: 5d 20 77 69 74 68 6f 75 74 20 61 6e 20 69 6e 74  ] without an int
d1f0: 65 72 76 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f  ervening call to
d200: 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28   [sqlite3_reset(
d210: 29 5d 2e 0a 20 20 54 68 69 73 20 63 61 75 73 65  )]..  This cause
d220: 64 20 70 72 6f 62 6c 65 6d 73 20 6f 6e 20 73 6f  d problems on so
d230: 6d 65 20 70 6f 6f 72 6c 79 20 77 72 69 74 74 65  me poorly writte
d240: 6e 20 73 6d 61 72 74 70 68 6f 6e 65 20 61 70 70  n smartphone app
d250: 6c 69 63 61 74 69 6f 6e 73 20 77 68 69 63 68 0a  lications which.
d260: 20 20 64 69 64 20 6e 6f 74 20 63 6f 72 72 65 63    did not correc
d270: 74 6c 79 20 68 61 6e 64 6c 65 20 74 68 65 20 5b  tly handle the [
d280: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 61  SQLITE_LOCKED] a
d290: 6e 64 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d  nd [SQLITE_BUSY]
d2a0: 20 65 72 72 6f 72 20 0a 20 20 72 65 74 75 72 6e   error .  return
d2b0: 73 2e 20 20 52 61 74 68 65 72 20 74 68 61 6e 20  s.  Rather than 
d2c0: 66 69 78 20 74 68 65 20 6d 61 6e 79 20 64 65 66  fix the many def
d2d0: 65 63 74 69 76 65 20 73 6d 61 72 74 70 68 6f 6e  ective smartphon
d2e0: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20  e applications, 
d2f0: 0a 20 20 74 68 65 20 62 65 68 61 76 69 6f 72 20  .  the behavior 
d300: 6f 66 20 53 51 4c 69 74 65 20 77 61 73 20 63 68  of SQLite was ch
d310: 61 6e 67 65 64 20 69 6e 20 33 2e 36 2e 32 33 2e  anged in 3.6.23.
d320: 32 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c  2 to automatical
d330: 6c 79 20 72 65 73 65 74 0a 20 20 74 68 65 20 70  ly reset.  the p
d340: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
d350: 74 2e 20 20 42 75 74 20 74 68 61 74 20 63 68 61  t.  But that cha
d360: 6e 67 65 64 20 63 61 75 73 65 64 20 69 73 73 75  nged caused issu
d370: 65 73 20 69 6e 20 6f 74 68 65 72 20 0a 20 20 69  es in other .  i
d380: 6d 70 72 6f 70 65 72 6c 79 20 69 6d 70 6c 65 6d  mproperly implem
d390: 65 6e 74 65 64 20 61 70 70 6c 69 63 61 74 69 6f  ented applicatio
d3a0: 6e 73 20 74 68 61 74 20 77 65 72 65 20 61 63 74  ns that were act
d3b0: 75 61 6c 6c 79 20 6c 6f 6f 6b 69 6e 67 0a 20 20  ually looking.  
d3c0: 66 6f 72 20 61 6e 20 5b 53 51 4c 49 54 45 5f 4d  for an [SQLITE_M
d3d0: 49 53 55 53 45 5d 20 72 65 74 75 72 6e 20 74 6f  ISUSE] return to
d3e0: 20 74 65 72 6d 69 6e 61 74 65 20 74 68 65 69 72   terminate their
d3f0: 20 71 75 65 72 79 20 6c 6f 6f 70 73 2e 20 20 28   query loops.  (
d400: 41 6e 79 74 69 6d 65 0a 20 20 61 6e 20 61 70 70  Anytime.  an app
d410: 6c 69 63 61 74 69 6f 6e 20 67 65 74 73 20 61 6e  lication gets an
d420: 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 20 65   SQLITE_MISUSE e
d430: 72 72 6f 72 20 63 6f 64 65 20 66 72 6f 6d 20 53  rror code from S
d440: 51 4c 69 74 65 2c 20 74 68 61 74 20 6d 65 61 6e  QLite, that mean
d450: 73 20 74 68 65 0a 20 20 61 70 70 6c 69 63 61 74  s the.  applicat
d460: 69 6f 6e 20 69 73 20 6d 69 73 75 73 69 6e 67 20  ion is misusing 
d470: 74 68 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72  the SQLite inter
d480: 66 61 63 65 20 61 6e 64 20 69 73 20 74 68 75 73  face and is thus
d490: 20 69 6e 63 6f 72 72 65 63 74 6c 79 0a 20 20 69   incorrectly.  i
d4a0: 6d 70 6c 65 6d 65 6e 74 65 64 2e 29 20 20 54 68  mplemented.)  Th
d4b0: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55  e SQLITE_OMIT_AU
d4c0: 54 4f 52 45 53 45 54 20 69 6e 74 65 72 66 61 63  TORESET interfac
d4d0: 65 20 77 61 73 20 61 64 64 65 64 20 74 6f 20 53  e was added to S
d4e0: 51 4c 69 74 65 0a 20 20 5b 76 65 72 73 69 6f 6e  QLite.  [version
d4f0: 20 33 2e 37 2e 35 5d 20 28 5b 64 61 74 65 6f 66   3.7.5] ([dateof
d500: 3a 33 2e 37 2e 35 5d 29 20 69 6e 20 61 6e 20 65  :3.7.5]) in an e
d510: 66 66 6f 72 74 20 74 6f 20 67 65 74 20 61 6c 6c  ffort to get all
d520: 20 6f 66 20 74 68 65 20 28 62 72 6f 6b 65 6e 29   of the (broken)
d530: 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20  .  applications 
d540: 74 6f 20 77 6f 72 6b 20 61 67 61 69 6e 20 77 69  to work again wi
d550: 74 68 6f 75 74 20 68 61 76 69 6e 67 20 74 6f 20  thout having to 
d560: 61 63 74 75 61 6c 6c 79 20 66 69 78 20 74 68 65  actually fix the
d570: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d   applications..}
d580: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
d590: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55   {SQLITE_OMIT_AU
d5a0: 54 4f 56 41 43 55 55 4d 7d 20 7b 0a 20 20 49 66  TOVACUUM} {.  If
d5b0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
d5c0: 64 65 66 69 6e 65 64 2c 20 74 68 65 20 6c 69 62  defined, the lib
d5d0: 72 61 72 79 20 63 61 6e 6e 6f 74 20 63 72 65 61  rary cannot crea
d5e0: 74 65 20 6f 72 20 77 72 69 74 65 20 74 6f 20 0a  te or write to .
d5f0: 20 20 64 61 74 61 62 61 73 65 73 20 74 68 61 74    databases that
d600: 20 73 75 70 70 6f 72 74 20 5b 61 75 74 6f 5f 76   support [auto_v
d610: 61 63 75 75 6d 5d 2e 0a 20 20 45 78 65 63 75 74  acuum]..  Execut
d620: 69 6e 67 20 61 20 5b 50 52 41 47 4d 41 20 61 75  ing a [PRAGMA au
d630: 74 6f 5f 76 61 63 75 75 6d 5d 20 73 74 61 74 65  to_vacuum] state
d640: 6d 65 6e 74 20 69 73 20 6e 6f 74 20 61 6e 20 65  ment is not an e
d650: 72 72 6f 72 0a 20 20 28 73 69 6e 63 65 20 75 6e  rror.  (since un
d660: 6b 6e 6f 77 6e 20 50 52 41 47 4d 41 73 20 61 72  known PRAGMAs ar
d670: 65 20 73 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72  e silently ignor
d680: 65 64 29 2c 20 62 75 74 20 64 6f 65 73 20 6e 6f  ed), but does no
d690: 74 20 72 65 74 75 72 6e 20 61 20 76 61 6c 75 65  t return a value
d6a0: 0a 20 20 6f 72 20 6d 6f 64 69 66 79 20 74 68 65  .  or modify the
d6b0: 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 66 6c 61   auto-vacuum fla
d6c0: 67 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73  g in the databas
d6d0: 65 20 66 69 6c 65 2e 20 49 66 20 61 20 64 61 74  e file. If a dat
d6e0: 61 62 61 73 65 20 74 68 61 74 0a 20 20 73 75 70  abase that.  sup
d6f0: 70 6f 72 74 73 20 61 75 74 6f 2d 76 61 63 75 75  ports auto-vacuu
d700: 6d 20 69 73 20 6f 70 65 6e 65 64 20 62 79 20 61  m is opened by a
d710: 20 6c 69 62 72 61 72 79 20 63 6f 6d 70 69 6c 65   library compile
d720: 64 20 77 69 74 68 20 74 68 69 73 20 6f 70 74 69  d with this opti
d730: 6f 6e 2c 20 69 74 0a 20 20 69 73 20 61 75 74 6f  on, it.  is auto
d740: 6d 61 74 69 63 61 6c 6c 79 20 6f 70 65 6e 65 64  matically opened
d750: 20 69 6e 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f   in read-only mo
d760: 64 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  de..}..COMPILE_O
d770: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
d780: 49 54 5f 42 45 54 57 45 45 4e 5f 4f 50 54 49 4d  IT_BETWEEN_OPTIM
d790: 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69  IZATION} {.  Thi
d7a0: 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65  s option disable
d7b0: 73 20 74 68 65 20 75 73 65 20 6f 66 20 69 6e 64  s the use of ind
d7c0: 69 63 65 73 20 77 69 74 68 20 57 48 45 52 45 20  ices with WHERE 
d7d0: 63 6c 61 75 73 65 20 74 65 72 6d 73 0a 20 20 74  clause terms.  t
d7e0: 68 61 74 20 65 6d 70 6c 6f 79 20 74 68 65 20 42  hat employ the B
d7f0: 45 54 57 45 45 4e 20 6f 70 65 72 61 74 6f 72 2e  ETWEEN operator.
d800: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
d810: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
d820: 42 4c 4f 42 5f 4c 49 54 45 52 41 4c 7d 20 7b 0a  BLOB_LITERAL} {.
d830: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
d840: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 69  on is defined, i
d850: 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c  t is not possibl
d860: 65 20 74 6f 20 73 70 65 63 69 66 79 20 61 20 62  e to specify a b
d870: 6c 6f 62 20 69 6e 0a 20 20 61 6e 20 53 51 4c 20  lob in.  an SQL 
d880: 73 74 61 74 65 6d 65 6e 74 20 75 73 69 6e 67 20  statement using 
d890: 74 68 65 20 58 27 41 42 43 44 27 20 73 79 6e 74  the X'ABCD' synt
d8a0: 61 78 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ax..}..COMPILE_O
d8b0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
d8c0: 49 54 5f 42 54 52 45 45 43 4f 55 4e 54 7d 20 7b  IT_BTREECOUNT} {
d8d0: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
d8e0: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
d8f0: 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20  an optimization 
d900: 74 68 61 74 20 61 63 63 65 6c 65 72 61 74 65 73  that accelerates
d910: 20 63 6f 75 6e 74 69 6e 67 0a 20 20 61 6c 6c 20   counting.  all 
d920: 65 6e 74 72 69 65 73 20 69 6e 20 61 20 74 61 62  entries in a tab
d930: 6c 65 20 28 69 6e 20 6f 74 68 65 72 20 77 6f 72  le (in other wor
d940: 64 73 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74  ds, an optimizat
d950: 69 6f 6e 20 74 68 61 74 20 68 65 6c 70 73 0a 20  ion that helps. 
d960: 20 22 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a   "SELECT count(*
d970: 29 20 46 52 4f 4d 20 74 61 62 6c 65 22 20 72 75  ) FROM table" ru
d980: 6e 20 66 61 73 74 65 72 29 20 69 73 20 6f 6d 69  n faster) is omi
d990: 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tted..}..COMPILE
d9a0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
d9b0: 4f 4d 49 54 5f 42 55 49 4c 54 49 4e 5f 54 45 53  OMIT_BUILTIN_TES
d9c0: 54 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70  T} {.  This comp
d9d0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
d9e0: 68 61 73 20 62 65 65 6e 20 72 65 6e 61 6d 65 64  has been renamed
d9f0: 20 74 6f 20 5b 53 51 4c 49 54 45 5f 55 4e 54 45   to [SQLITE_UNTE
da00: 53 54 41 42 4c 45 5d 2e 0a 7d 0a 0a 43 4f 4d 50  STABLE]..}..COMP
da10: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
da20: 54 45 5f 4f 4d 49 54 5f 43 41 53 54 7d 20 7b 0a  TE_OMIT_CAST} {.
da30: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
da40: 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f  uses SQLite to o
da50: 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  mit support for 
da60: 74 68 65 20 43 41 53 54 20 6f 70 65 72 61 74 6f  the CAST operato
da70: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
da80: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
da90: 54 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69  T_CHECK} {.  Thi
daa0: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
dab0: 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73  SQLite to omit s
dac0: 75 70 70 6f 72 74 20 66 6f 72 20 43 48 45 43 4b  upport for CHECK
dad0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 20 20   constraints..  
dae0: 54 68 65 20 70 61 72 73 65 72 20 77 69 6c 6c 20  The parser will 
daf0: 73 74 69 6c 6c 20 61 63 63 65 70 74 20 43 48 45  still accept CHE
db00: 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 69  CK constraints i
db10: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  n SQL statements
db20: 2c 0a 20 20 74 68 65 79 20 77 69 6c 6c 20 6a 75  ,.  they will ju
db30: 73 74 20 6e 6f 74 20 62 65 20 65 6e 66 6f 72 63  st not be enforc
db40: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
db50: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
db60: 49 54 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e  IT_COMPILEOPTION
db70: 5f 44 49 41 47 53 7d 20 7b 0a 20 20 54 68 69 73  _DIAGS} {.  This
db80: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
db90: 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70  to omit the comp
dba0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
dbb0: 64 69 61 67 6e 6f 73 74 69 63 73 20 61 76 61 69  diagnostics avai
dbc0: 6c 61 62 6c 65 0a 20 20 69 6e 20 53 51 4c 69 74  lable.  in SQLit
dbd0: 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65  e, including the
dbe0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c   [sqlite3_compil
dbf0: 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20  eoption_used()] 
dc00: 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  and.  [sqlite3_c
dc10: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74  ompileoption_get
dc20: 28 29 5d 20 43 2f 43 2b 2b 20 66 75 6e 63 74 69  ()] C/C++ functi
dc30: 6f 6e 73 2c 20 74 68 65 0a 20 20 5b 73 71 6c 69  ons, the.  [sqli
dc40: 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  te_compileoption
dc50: 5f 75 73 65 64 28 29 5d 20 61 6e 64 20 5b 73 71  _used()] and [sq
dc60: 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  lite_compileopti
dc70: 6f 6e 5f 67 65 74 28 29 5d 20 53 51 4c 20 66 75  on_get()] SQL fu
dc80: 6e 63 74 69 6f 6e 73 2c 0a 20 20 61 6e 64 20 74  nctions,.  and t
dc90: 68 65 20 5b 63 6f 6d 70 69 6c 65 5f 6f 70 74 69  he [compile_opti
dca0: 6f 6e 73 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a  ons pragma]..}..
dcb0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
dcc0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50  SQLITE_OMIT_COMP
dcd0: 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LETE} {.  This o
dce0: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
dcf0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65   [sqlite3_comple
dd00: 74 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74  te()] and [sqlit
dd10: 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 5d  e3_complete16()]
dd20: 0a 20 20 69 6e 74 65 72 66 61 63 65 73 20 74 6f  .  interfaces to
dd30: 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a   be omitted..}..
dd40: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
dd50: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50  SQLITE_OMIT_COMP
dd60: 4f 55 4e 44 5f 53 45 4c 45 43 54 7d 20 7b 0a 20  OUND_SELECT} {. 
dd70: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
dd80: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65  used to omit the
dd90: 20 63 6f 6d 70 6f 75 6e 64 20 5b 53 45 4c 45 43   compound [SELEC
dda0: 54 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  T] functionality
ddb0: 2e 20 0a 20 20 5b 53 45 4c 45 43 54 5d 20 73 74  . .  [SELECT] st
ddc0: 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 75 73  atements that us
ddd0: 65 20 74 68 65 20 0a 20 20 55 4e 49 4f 4e 2c 20  e the .  UNION, 
dde0: 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52  UNION ALL, INTER
ddf0: 53 45 43 54 20 6f 72 20 45 58 43 45 50 54 20 63  SECT or EXCEPT c
de00: 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 6f  ompound SELECT o
de10: 70 65 72 61 74 6f 72 73 20 77 69 6c 6c 20 0a 20  perators will . 
de20: 20 63 61 75 73 65 20 61 20 70 61 72 73 65 20 65   cause a parse e
de30: 72 72 6f 72 2e 0a 0a 20 20 41 6e 20 5b 49 4e 53  rror...  An [INS
de40: 45 52 54 5d 20 73 74 61 74 65 6d 65 6e 74 20 77  ERT] statement w
de50: 69 74 68 20 6d 75 6c 74 69 70 6c 65 20 76 61 6c  ith multiple val
de60: 75 65 73 20 69 6e 20 74 68 65 20 56 41 4c 55 45  ues in the VALUE
de70: 53 20 63 6c 61 75 73 65 20 69 73 0a 20 20 69 6d  S clause is.  im
de80: 70 6c 65 6d 65 6e 74 65 64 20 69 6e 74 65 72 6e  plemented intern
de90: 61 6c 6c 79 20 61 73 20 61 20 63 6f 6d 70 6f 75  ally as a compou
dea0: 6e 64 20 53 45 4c 45 43 54 2e 20 20 48 65 6e 63  nd SELECT.  Henc
deb0: 65 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61  e, this option a
dec0: 6c 73 6f 0a 20 20 64 69 73 61 62 6c 65 73 20 74  lso.  disables t
ded0: 68 65 20 61 62 69 6c 69 74 79 20 74 6f 20 69 6e  he ability to in
dee0: 73 65 72 74 20 6d 6f 72 65 20 74 68 61 6e 20 61  sert more than a
def0: 20 73 69 6e 67 6c 65 20 72 6f 77 20 75 73 69 6e   single row usin
df00: 67 20 61 6e 0a 20 20 49 4e 53 45 52 54 20 49 4e  g an.  INSERT IN
df10: 54 4f 20 2e 2e 2e 20 56 41 4c 55 45 53 20 2e 2e  TO ... VALUES ..
df20: 2e 20 73 74 61 74 65 6d 65 6e 74 2e 0a 7d 0a 0a  . statement..}..
df30: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
df40: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 54 45 7d  SQLITE_OMIT_CTE}
df50: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
df60: 20 63 61 75 73 65 73 20 73 75 70 70 6f 72 74 20   causes support 
df70: 66 6f 72 20 5b 63 6f 6d 6d 6f 6e 20 74 61 62 6c  for [common tabl
df80: 65 20 65 78 70 72 65 73 73 69 6f 6e 73 5d 20 74  e expressions] t
df90: 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a  o be omitted..}.
dfa0: 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  ...COMPILE_OPTIO
dfb0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44  N {SQLITE_OMIT_D
dfc0: 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 7d 20 7b  ATETIME_FUNCS} {
dfd0: 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f  .  If this optio
dfe0: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 53 51  n is defined, SQ
dff0: 4c 69 74 65 27 73 20 62 75 69 6c 74 2d 69 6e 20  Lite's built-in 
e000: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 6d 61  date and time ma
e010: 6e 69 70 75 6c 61 74 69 6f 6e 0a 20 20 66 75 6e  nipulation.  fun
e020: 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d 69 74 74  ctions are omitt
e030: 65 64 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79  ed. Specifically
e040: 2c 20 74 68 65 20 53 51 4c 20 66 75 6e 63 74 69  , the SQL functi
e050: 6f 6e 73 20 6a 75 6c 69 61 6e 64 61 79 28 29 2c  ons julianday(),
e060: 20 64 61 74 65 28 29 2c 0a 20 20 74 69 6d 65 28   date(),.  time(
e070: 29 2c 20 64 61 74 65 74 69 6d 65 28 29 20 61 6e  ), datetime() an
e080: 64 20 73 74 72 66 74 69 6d 65 28 29 20 61 72 65  d strftime() are
e090: 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 20   not available. 
e0a0: 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6c 75  The default colu
e0b0: 6d 6e 0a 20 20 76 61 6c 75 65 73 20 43 55 52 52  mn.  values CURR
e0c0: 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e  ENT_TIME, CURREN
e0d0: 54 5f 44 41 54 45 20 61 6e 64 20 43 55 52 52 45  T_DATE and CURRE
e0e0: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 61 72 65  NT_TIMESTAMP are
e0f0: 20 73 74 69 6c 6c 20 61 76 61 69 6c 61 62 6c 65   still available
e100: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
e110: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
e120: 5f 44 45 43 4c 54 59 50 45 7d 20 7b 0a 20 20 54  _DECLTYPE} {.  T
e130: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
e140: 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74  s SQLite to omit
e150: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
e160: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  .  [sqlite3_colu
e170: 6d 6e 5f 64 65 63 6c 74 79 70 65 28 29 5d 20 61  mn_decltype()] a
e180: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  nd [sqlite3_colu
e190: 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 29 5d  mn_decltype16()]
e1a0: 0a 20 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d  .  interfaces..}
e1b0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
e1c0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45   {SQLITE_OMIT_DE
e1d0: 50 52 45 43 41 54 45 44 7d 20 7b 0a 20 20 54 68  PRECATED} {.  Th
e1e0: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
e1f0: 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20   SQLite to omit 
e200: 73 75 70 70 6f 72 74 20 66 6f 72 20 69 6e 74 65  support for inte
e210: 72 66 61 63 65 73 0a 20 20 6d 61 72 6b 65 64 20  rfaces.  marked 
e220: 61 73 20 64 65 70 72 65 63 61 74 65 64 2e 20 20  as deprecated.  
e230: 54 68 69 73 20 69 6e 63 6c 75 64 65 73 20 0a 20  This includes . 
e240: 20 5b 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67   [sqlite3_aggreg
e250: 61 74 65 5f 63 6f 75 6e 74 28 29 5d 2c 0a 20 20  ate_count()],.  
e260: 5b 73 71 6c 69 74 65 33 5f 65 78 70 69 72 65 64  [sqlite3_expired
e270: 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f  ()],.  [sqlite3_
e280: 74 72 61 6e 73 66 65 72 5f 62 69 6e 64 69 6e 67  transfer_binding
e290: 73 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33  s()],.  [sqlite3
e2a0: 5f 67 6c 6f 62 61 6c 5f 72 65 63 6f 76 65 72 28  _global_recover(
e2b0: 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74  )],.  [sqlite3_t
e2c0: 68 72 65 61 64 5f 63 6c 65 61 6e 75 70 28 29 5d  hread_cleanup()]
e2d0: 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
e2e0: 6d 65 6d 6f 72 79 5f 61 6c 61 72 6d 28 29 5d 20  memory_alarm()] 
e2f0: 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43  interfaces..}..C
e300: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
e310: 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 49 53 4b 49  QLITE_OMIT_DISKI
e320: 4f 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  O} {.  This opti
e330: 6f 6e 20 6f 6d 69 74 73 20 61 6c 6c 20 73 75 70  on omits all sup
e340: 70 6f 72 74 20 66 6f 72 20 77 72 69 74 69 6e 67  port for writing
e350: 20 74 6f 20 74 68 65 20 64 69 73 6b 20 61 6e 64   to the disk and
e360: 20 66 6f 72 63 65 73 0a 20 20 64 61 74 61 62 61   forces.  databa
e370: 73 65 73 20 74 6f 20 65 78 69 73 74 20 69 6e 20  ses to exist in 
e380: 6d 65 6d 6f 72 79 20 6f 6e 6c 79 2e 20 20 54 68  memory only.  Th
e390: 69 73 20 6f 70 74 69 6f 6e 20 68 61 73 20 6e 6f  is option has no
e3a0: 74 20 62 65 65 6e 20 0a 20 20 6d 61 69 6e 74 61  t been .  mainta
e3b0: 69 6e 65 64 20 61 6e 64 20 70 72 6f 62 61 62 6c  ined and probabl
e3c0: 79 20 64 6f 65 73 20 6e 6f 74 20 77 6f 72 6b 20  y does not work 
e3d0: 77 69 74 68 20 6e 65 77 65 72 20 76 65 72 73 69  with newer versi
e3e0: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 7d  ons of SQLite..}
e3f0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
e400: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 45 58   {SQLITE_OMIT_EX
e410: 50 4c 41 49 4e 7d 20 7b 0a 20 20 44 65 66 69 6e  PLAIN} {.  Defin
e420: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
e430: 63 61 75 73 65 73 20 74 68 65 20 5b 45 58 50 4c  causes the [EXPL
e440: 41 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20  AIN] command to 
e450: 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20  be omitted from 
e460: 74 68 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 41  the.  library. A
e470: 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65  ttempting to exe
e480: 63 75 74 65 20 61 6e 20 5b 45 58 50 4c 41 49 4e  cute an [EXPLAIN
e490: 5d 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c  ] statement will
e4a0: 20 63 61 75 73 65 20 61 20 70 61 72 73 65 0a 20   cause a parse. 
e4b0: 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49   error..}..COMPI
e4c0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
e4d0: 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47  E_OMIT_FLAG_PRAG
e4e0: 4d 41 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  MAS} {.  This op
e4f0: 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
e500: 72 74 20 66 6f 72 20 61 20 73 75 62 73 65 74 20  rt for a subset 
e510: 6f 66 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d  of [PRAGMA] comm
e520: 61 6e 64 73 20 74 68 61 74 0a 20 20 71 75 65 72  ands that.  quer
e530: 79 20 61 6e 64 20 73 65 74 20 62 6f 6f 6c 65 61  y and set boolea
e540: 6e 20 70 72 6f 70 65 72 74 69 65 73 2e 0a 7d 0a  n properties..}.
e550: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
e560: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f  {SQLITE_OMIT_FLO
e570: 41 54 49 4e 47 5f 50 4f 49 4e 54 7d 20 7b 0a 20  ATING_POINT} {. 
e580: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
e590: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 66 6c 6f  used to omit flo
e5a0: 61 74 69 6e 67 2d 70 6f 69 6e 74 20 6e 75 6d 62  ating-point numb
e5b0: 65 72 20 73 75 70 70 6f 72 74 20 66 72 6f 6d 20  er support from 
e5c0: 74 68 65 20 53 51 4c 69 74 65 0a 20 20 6c 69 62  the SQLite.  lib
e5d0: 72 61 72 79 2e 20 57 68 65 6e 20 73 70 65 63 69  rary. When speci
e5e0: 66 69 65 64 2c 20 73 70 65 63 69 66 79 69 6e 67  fied, specifying
e5f0: 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e   a floating poin
e600: 74 20 6e 75 6d 62 65 72 20 61 73 20 61 20 6c 69  t number as a li
e610: 74 65 72 61 6c 20 0a 20 20 28 69 2e 65 2e 20 22  teral .  (i.e. "
e620: 31 2e 30 31 22 29 20 72 65 73 75 6c 74 73 20 69  1.01") results i
e630: 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e  n a parse error.
e640: 0a 0a 20 20 3c 70 3e 49 6e 20 74 68 65 20 66 75  ..  <p>In the fu
e650: 74 75 72 65 2c 20 74 68 69 73 20 6f 70 74 69 6f  ture, this optio
e660: 6e 20 6d 61 79 20 61 6c 73 6f 20 64 69 73 61 62  n may also disab
e670: 6c 65 20 6f 74 68 65 72 20 66 6c 6f 61 74 69 6e  le other floatin
e680: 67 20 70 6f 69 6e 74 20 0a 20 20 66 75 6e 63 74  g point .  funct
e690: 69 6f 6e 61 6c 69 74 79 2c 20 66 6f 72 20 65 78  ionality, for ex
e6a0: 61 6d 70 6c 65 20 74 68 65 20 5b 73 71 6c 69 74  ample the [sqlit
e6b0: 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65  e3_result_double
e6c0: 28 29 5d 2c 20 0a 20 20 5b 73 71 6c 69 74 65 33  ()], .  [sqlite3
e6d0: 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 29 5d 2c  _bind_double()],
e6e0: 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f   [sqlite3_value_
e6f0: 64 6f 75 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20  double()] and.  
e700: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
e710: 64 6f 75 62 6c 65 28 29 5d 20 41 50 49 20 66 75  double()] API fu
e720: 6e 63 74 69 6f 6e 73 2e 0a 20 20 3c 2f 70 3e 0a  nctions..  </p>.
e730: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
e740: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46  N {SQLITE_OMIT_F
e750: 4f 52 45 49 47 4e 5f 4b 45 59 7d 20 7b 0a 20 20  OREIGN_KEY} {.  
e760: 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  If this option i
e770: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20  s defined, then 
e780: 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e  [foreign key con
e790: 73 74 72 61 69 6e 74 5d 20 73 79 6e 74 61 78 20  straint] syntax 
e7a0: 69 73 0a 20 20 6e 6f 74 20 72 65 63 6f 67 6e 69  is.  not recogni
e7b0: 7a 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  zed..}..COMPILE_
e7c0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
e7d0: 4d 49 54 5f 47 45 54 5f 54 41 42 4c 45 7d 20 7b  MIT_GET_TABLE} {
e7e0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
e7f0: 61 75 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f  auses support fo
e800: 72 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 74  r [sqlite3_get_t
e810: 61 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73  able()] and.  [s
e820: 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62 6c  qlite3_free_tabl
e830: 65 28 29 5d 20 74 6f 20 62 65 20 6f 6d 69 74 74  e()] to be omitt
e840: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
e850: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
e860: 49 54 5f 49 4e 43 52 42 4c 4f 42 7d 20 7b 0a 20  IT_INCRBLOB} {. 
e870: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
e880: 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ses support for 
e890: 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 20 7c 20  [sqlite3_blob | 
e8a0: 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42  incremental BLOB
e8b0: 20 49 2f 4f 5d 0a 20 20 74 6f 20 62 65 20 6f 6d   I/O].  to be om
e8c0: 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  itted..}..COMPIL
e8d0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
e8e0: 5f 4f 4d 49 54 5f 49 4e 54 45 47 52 49 54 59 5f  _OMIT_INTEGRITY_
e8f0: 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20  CHECK} {.  This 
e900: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70  option omits sup
e910: 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 69 6e  port for the [in
e920: 74 65 67 72 69 74 79 5f 63 68 65 63 6b 20 70 72  tegrity_check pr
e930: 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  agma]..}..COMPIL
e940: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
e950: 5f 4f 4d 49 54 5f 4c 49 4b 45 5f 4f 50 54 49 4d  _OMIT_LIKE_OPTIM
e960: 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69  IZATION} {.  Thi
e970: 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65  s option disable
e980: 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66  s the ability of
e990: 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20 69   SQLite to use i
e9a0: 6e 64 69 63 65 73 20 74 6f 20 68 65 6c 70 0a 20  ndices to help. 
e9b0: 20 72 65 73 6f 6c 76 65 20 5b 4c 49 4b 45 5d 20   resolve [LIKE] 
e9c0: 61 6e 64 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61  and [GLOB] opera
e9d0: 74 6f 72 73 20 69 6e 20 61 20 57 48 45 52 45 20  tors in a WHERE 
e9e0: 63 6c 61 75 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  clause..}..COMPI
e9f0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
ea00: 45 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45  E_OMIT_LOAD_EXTE
ea10: 4e 53 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20  NSION} {.  This 
ea20: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65  option omits the
ea30: 20 65 6e 74 69 72 65 20 65 78 74 65 6e 73 69 6f   entire extensio
ea40: 6e 20 6c 6f 61 64 69 6e 67 20 6d 65 63 68 61 6e  n loading mechan
ea50: 69 73 6d 20 66 72 6f 6d 0a 20 20 53 51 4c 69 74  ism from.  SQLit
ea60: 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 5b 73 71  e, including [sq
ea70: 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61  lite3_enable_loa
ea80: 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 61  d_extension()] a
ea90: 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 6f  nd.  [sqlite3_lo
eaa0: 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20  ad_extension()] 
eab0: 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43  interfaces..}..C
eac0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
ead0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 43 41 4c  QLITE_OMIT_LOCAL
eae0: 54 49 4d 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TIME} {.  This o
eaf0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20  ption omits the 
eb00: 22 6c 6f 63 61 6c 74 69 6d 65 22 20 6d 6f 64 69  "localtime" modi
eb10: 66 69 65 72 20 66 72 6f 6d 20 74 68 65 20 64 61  fier from the da
eb20: 74 65 20 61 6e 64 20 74 69 6d 65 0a 20 20 66 75  te and time.  fu
eb30: 6e 63 74 69 6f 6e 73 2e 20 20 54 68 69 73 20 6f  nctions.  This o
eb40: 70 74 69 6f 6e 20 69 73 20 73 6f 6d 65 74 69 6d  ption is sometim
eb50: 65 73 20 75 73 65 66 75 6c 20 77 68 65 6e 20 74  es useful when t
eb60: 72 79 69 6e 67 20 74 6f 20 63 6f 6d 70 69 6c 65  rying to compile
eb70: 0a 20 20 74 68 65 20 64 61 74 65 20 61 6e 64 20  .  the date and 
eb80: 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20 6f  time functions o
eb90: 6e 20 61 20 70 6c 61 74 66 6f 72 6d 20 74 68 61  n a platform tha
eba0: 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f  t does not suppo
ebb0: 72 74 20 74 68 65 0a 20 20 63 6f 6e 63 65 70 74  rt the.  concept
ebc0: 20 6f 66 20 6c 6f 63 61 6c 20 74 69 6d 65 2e 0a   of local time..
ebd0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
ebe0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  N {SQLITE_OMIT_L
ebf0: 4f 4f 4b 41 53 49 44 45 7d 20 7b 0a 20 20 54 68  OOKASIDE} {.  Th
ec00: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
ec10: 74 68 65 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d  the [lookaside m
ec20: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d  emory allocator]
ec30: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
ec40: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
ec50: 5f 4d 45 4d 4f 52 59 44 42 7d 20 7b 0a 20 20 57  _MEMORYDB} {.  W
ec60: 68 65 6e 20 74 68 69 73 20 69 73 20 64 65 66 69  hen this is defi
ec70: 6e 65 64 2c 20 74 68 65 20 6c 69 62 72 61 72 79  ned, the library
ec80: 20 64 6f 65 73 20 6e 6f 74 20 72 65 73 70 65 63   does not respec
ec90: 74 20 74 68 65 20 73 70 65 63 69 61 6c 20 64 61  t the special da
eca0: 74 61 62 61 73 65 0a 20 20 6e 61 6d 65 20 22 3a  tabase.  name ":
ecb0: 6d 65 6d 6f 72 79 3a 22 20 28 6e 6f 72 6d 61 6c  memory:" (normal
ecc0: 6c 79 20 75 73 65 64 20 74 6f 20 63 72 65 61 74  ly used to creat
ecd0: 65 20 61 6e 20 5b 69 6e 2d 6d 65 6d 6f 72 79 20  e an [in-memory 
ece0: 64 61 74 61 62 61 73 65 5d 29 2e 20 49 66 20 0a  database]). If .
ecf0: 20 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 69 73 20    ":memory:" is 
ed00: 70 61 73 73 65 64 20 74 6f 20 5b 73 71 6c 69 74  passed to [sqlit
ed10: 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c  e3_open()], [sql
ed20: 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d 2c 20  ite3_open16()], 
ed30: 6f 72 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f 70  or.  [sqlite3_op
ed40: 65 6e 5f 76 32 28 29 5d 2c 20 61 20 66 69 6c 65  en_v2()], a file
ed50: 20 77 69 74 68 20 74 68 69 73 20 6e 61 6d 65 20   with this name 
ed60: 77 69 6c 6c 20 62 65 20 0a 20 20 6f 70 65 6e 65  will be .  opene
ed70: 64 20 6f 72 20 63 72 65 61 74 65 64 2e 0a 7d 0a  d or created..}.
ed80: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
ed90: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4f 52 5f  {SQLITE_OMIT_OR_
eda0: 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a  OPTIMIZATION} {.
edb0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69    This option di
edc0: 73 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c 69  sables the abili
edd0: 74 79 20 6f 66 20 53 51 4c 69 74 65 20 74 6f 20  ty of SQLite to 
ede0: 75 73 65 20 61 6e 20 69 6e 64 65 78 20 74 6f 67  use an index tog
edf0: 65 74 68 65 72 0a 20 20 77 69 74 68 20 74 65 72  ether.  with ter
ee00: 6d 73 20 6f 66 20 61 20 57 48 45 52 45 20 63 6c  ms of a WHERE cl
ee10: 61 75 73 65 20 63 6f 6e 6e 65 63 74 65 64 20 62  ause connected b
ee20: 79 20 74 68 65 20 4f 52 20 6f 70 65 72 61 74 6f  y the OR operato
ee30: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
ee40: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
ee50: 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53 7d  T_PAGER_PRAGMAS}
ee60: 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
ee70: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
ee80: 70 72 61 67 6d 61 73 20 72 65 6c 61 74 65 64 20  pragmas related 
ee90: 74 6f 20 74 68 65 20 70 61 67 65 72 20 73 75 62  to the pager sub
eea0: 73 79 73 74 65 6d 20 66 72 6f 6d 20 0a 20 20 74  system from .  t
eeb0: 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d  he build..}..COM
eec0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
eed0: 49 54 45 5f 4f 4d 49 54 5f 50 52 41 47 4d 41 7d  ITE_OMIT_PRAGMA}
eee0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
eef0: 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74   is used to omit
ef00: 20 74 68 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f   the [PRAGMA] co
ef10: 6d 6d 61 6e 64 0a 20 20 66 72 6f 6d 20 74 68 65  mmand.  from the
ef20: 20 6c 69 62 72 61 72 79 2e 20 4e 6f 74 65 20 74   library. Note t
ef30: 68 61 74 20 69 74 20 69 73 20 75 73 65 66 75 6c  hat it is useful
ef40: 20 74 6f 20 64 65 66 69 6e 65 20 74 68 65 20 6d   to define the m
ef50: 61 63 72 6f 73 20 74 68 61 74 20 6f 6d 69 74 0a  acros that omit.
ef60: 20 20 73 70 65 63 69 66 69 63 20 70 72 61 67 6d    specific pragm
ef70: 61 73 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74  as in addition t
ef80: 6f 20 74 68 69 73 2c 20 61 73 20 74 68 65 79 20  o this, as they 
ef90: 6d 61 79 20 61 6c 73 6f 20 72 65 6d 6f 76 65 20  may also remove 
efa0: 73 75 70 70 6f 72 74 69 6e 67 20 63 6f 64 65 0a  supporting code.
efb0: 20 20 69 6e 20 6f 74 68 65 72 20 73 75 62 2d 73    in other sub-s
efc0: 79 73 74 65 6d 73 2e 20 54 68 69 73 20 6d 61 63  ystems. This mac
efd0: 72 6f 20 72 65 6d 6f 76 65 73 20 74 68 65 20 5b  ro removes the [
efe0: 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 20  PRAGMA] command 
eff0: 6f 6e 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  only..}..COMPILE
f000: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
f010: 4f 4d 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41  OMIT_PROGRESS_CA
f020: 4c 4c 42 41 43 4b 7d 20 7b 0a 20 20 54 68 69 73  LLBACK} {.  This
f030: 20 6f 70 74 69 6f 6e 20 6d 61 79 20 62 65 20 64   option may be d
f040: 65 66 69 6e 65 64 20 74 6f 20 6f 6d 69 74 20 74  efined to omit t
f050: 68 65 20 63 61 70 61 62 69 6c 69 74 79 20 74 6f  he capability to
f060: 20 69 73 73 75 65 20 22 70 72 6f 67 72 65 73 73   issue "progress
f070: 22 20 0a 20 20 63 61 6c 6c 62 61 63 6b 73 20 64  " .  callbacks d
f080: 75 72 69 6e 67 20 6c 6f 6e 67 2d 72 75 6e 6e 69  uring long-runni
f090: 6e 67 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ng SQL statement
f0a0: 73 2e 20 54 68 65 20 0a 20 20 5b 73 71 6c 69 74  s. The .  [sqlit
f0b0: 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e 64  e3_progress_hand
f0c0: 6c 65 72 28 29 5d 0a 20 20 41 50 49 20 66 75 6e  ler()].  API fun
f0d0: 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72 65  ction is not pre
f0e0: 73 65 6e 74 20 69 6e 20 74 68 65 20 6c 69 62 72  sent in the libr
f0f0: 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ary..}..COMPILE_
f100: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
f110: 4d 49 54 5f 51 55 49 43 4b 42 41 4c 41 4e 43 45  MIT_QUICKBALANCE
f120: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
f130: 6e 20 6f 6d 69 74 73 20 61 6e 20 61 6c 74 65 72  n omits an alter
f140: 6e 61 74 69 76 65 2c 20 66 61 73 74 65 72 20 42  native, faster B
f150: 2d 54 72 65 65 20 62 61 6c 61 6e 63 69 6e 67 20  -Tree balancing 
f160: 72 6f 75 74 69 6e 65 2e 0a 20 20 55 73 69 6e 67  routine..  Using
f170: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 6b   this option mak
f180: 65 73 20 53 51 4c 69 74 65 20 73 6c 69 67 68 74  es SQLite slight
f190: 6c 79 20 73 6d 61 6c 6c 65 72 20 61 74 20 74 68  ly smaller at th
f1a0: 65 20 65 78 70 65 6e 73 65 20 6f 66 0a 20 20 6d  e expense of.  m
f1b0: 61 6b 69 6e 67 20 69 74 20 72 75 6e 20 73 6c 69  aking it run sli
f1c0: 67 68 74 6c 79 20 73 6c 6f 77 65 72 2e 0a 7d 0a  ghtly slower..}.
f1d0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
f1e0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 52 45 49  {SQLITE_OMIT_REI
f1f0: 4e 44 45 58 7d 20 7b 0a 20 20 57 68 65 6e 20 74  NDEX} {.  When t
f200: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
f210: 66 69 6e 65 64 2c 20 74 68 65 20 5b 52 45 49 4e  fined, the [REIN
f220: 44 45 58 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20 69  DEX].  command i
f230: 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69  s not included i
f240: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 20  n the library.. 
f250: 20 45 78 65 63 75 74 69 6e 67 20 61 20 5b 52 45   Executing a [RE
f260: 49 4e 44 45 58 5d 20 73 74 61 74 65 6d 65 6e 74  INDEX] statement
f270: 20 63 61 75 73 65 73 20 0a 20 20 61 20 70 61 72   causes .  a par
f280: 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d  se error..}..COM
f290: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
f2a0: 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f  ITE_OMIT_SCHEMA_
f2b0: 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66  PRAGMAS} {.  Def
f2c0: 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f  ining this optio
f2d0: 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20  n omits pragmas 
f2e0: 66 6f 72 20 71 75 65 72 79 69 6e 67 20 74 68 65  for querying the
f2f0: 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61   database schema
f300: 20 66 72 6f 6d 20 0a 20 20 74 68 65 20 62 75 69   from .  the bui
f310: 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ld..}..COMPILE_O
f320: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
f330: 49 54 5f 53 43 48 45 4d 41 5f 56 45 52 53 49 4f  IT_SCHEMA_VERSIO
f340: 4e 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44  N_PRAGMAS} {.  D
f350: 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74  efining this opt
f360: 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d 61  ion omits pragma
f370: 73 20 66 6f 72 20 71 75 65 72 79 69 6e 67 20 61  s for querying a
f380: 6e 64 20 6d 6f 64 69 66 79 69 6e 67 20 74 68 65  nd modifying the
f390: 20 0a 20 20 64 61 74 61 62 61 73 65 20 73 63 68   .  database sch
f3a0: 65 6d 61 20 76 65 72 73 69 6f 6e 20 61 6e 64 20  ema version and 
f3b0: 75 73 65 72 20 76 65 72 73 69 6f 6e 20 66 72 6f  user version fro
f3c0: 6d 20 74 68 65 20 62 75 69 6c 64 2e 20 53 70 65  m the build. Spe
f3d0: 63 69 66 69 63 61 6c 6c 79 2c 20 74 68 65 20 0a  cifically, the .
f3e0: 20 20 5b 73 63 68 65 6d 61 5f 76 65 72 73 69 6f    [schema_versio
f3f0: 6e 5d 20 61 6e 64 20 5b 75 73 65 72 5f 76 65 72  n] and [user_ver
f400: 73 69 6f 6e 5d 20 50 52 41 47 4d 41 73 20 61 72  sion] PRAGMAs ar
f410: 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f  e omitted..}..CO
f420: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
f430: 4c 49 54 45 5f 4f 4d 49 54 5f 53 48 41 52 45 44  LITE_OMIT_SHARED
f440: 5f 43 41 43 48 45 7d 20 7b 0a 20 20 54 68 69 73  _CACHE} {.  This
f450: 20 6f 70 74 69 6f 6e 20 62 75 69 6c 64 73 20 53   option builds S
f460: 51 4c 69 74 65 20 77 69 74 68 6f 75 74 20 73 75  QLite without su
f470: 70 70 6f 72 74 20 66 6f 72 20 73 68 61 72 65 64  pport for shared
f480: 2d 63 61 63 68 65 20 6d 6f 64 65 2e 0a 20 20 54  -cache mode..  T
f490: 68 65 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62  he [sqlite3_enab
f4a0: 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65 28  le_shared_cache(
f4b0: 29 5d 20 69 73 20 6f 6d 69 74 74 65 64 20 61 6c  )] is omitted al
f4c0: 6f 6e 67 20 77 69 74 68 20 61 20 66 61 69 72 0a  ong with a fair.
f4d0: 20 20 61 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69    amount of logi
f4e0: 63 20 77 69 74 68 69 6e 20 74 68 65 20 42 2d 54  c within the B-T
f4f0: 72 65 65 20 73 75 62 73 79 73 74 65 6d 20 61 73  ree subsystem as
f500: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 73 68  sociated with sh
f510: 61 72 65 64 0a 20 20 63 61 63 68 65 20 6d 61 6e  ared.  cache man
f520: 61 67 65 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50  agement..}..COMP
f530: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
f540: 54 45 5f 4f 4d 49 54 5f 53 55 42 51 55 45 52 59  TE_OMIT_SUBQUERY
f550: 7d 20 7b 0a 20 20 49 66 20 64 65 66 69 6e 65 64  } {.  If defined
f560: 2c 20 73 75 70 70 6f 72 74 20 66 6f 72 20 73 75  , support for su
f570: 62 2d 73 65 6c 65 63 74 73 20 61 6e 64 20 74 68  b-selects and th
f580: 65 20 49 4e 28 29 20 6f 70 65 72 61 74 6f 72 20  e IN() operator 
f590: 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a  are omitted..}..
f5a0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
f5b0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 43 4c 5f  SQLITE_OMIT_TCL_
f5c0: 56 41 52 49 41 42 4c 45 7d 20 7b 0a 20 20 49 66  VARIABLE} {.  If
f5d0: 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20 64   this macro is d
f5e0: 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 74 68 65  efined, then the
f5f0: 20 73 70 65 63 69 61 6c 20 22 24 3c 76 61 72 69   special "$<vari
f600: 61 62 6c 65 2d 6e 61 6d 65 3e 22 20 73 79 6e 74  able-name>" synt
f610: 61 78 0a 20 20 75 73 65 64 20 74 6f 20 61 75 74  ax.  used to aut
f620: 6f 6d 61 74 69 63 61 6c 6c 79 20 62 69 6e 64 20  omatically bind 
f630: 53 51 4c 20 76 61 72 69 61 62 6c 65 73 20 74 6f  SQL variables to
f640: 20 54 43 4c 20 76 61 72 69 61 62 6c 65 73 20 69   TCL variables i
f650: 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f  s omitted..}..CO
f660: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
f670: 4c 49 54 45 5f 4f 4d 49 54 5f 54 45 4d 50 44 42  LITE_OMIT_TEMPDB
f680: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
f690: 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20  n omits support 
f6a0: 66 6f 72 20 54 45 4d 50 20 6f 72 20 54 45 4d 50  for TEMP or TEMP
f6b0: 4f 52 41 52 59 20 74 61 62 6c 65 73 2e 0a 7d 0a  ORARY tables..}.
f6c0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
f6d0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 41  {SQLITE_OMIT_TRA
f6e0: 43 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CE} {.  This opt
f6f0: 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72  ion omits suppor
f700: 74 20 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74  t for the [sqlit
f710: 65 33 5f 70 72 6f 66 69 6c 65 28 29 5d 20 61 6e  e3_profile()] an
f720: 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61  d.  [sqlite3_tra
f730: 63 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  ce()] interfaces
f740: 20 61 6e 64 20 74 68 65 69 72 20 61 73 73 6f 63   and their assoc
f750: 69 61 74 65 64 20 6c 6f 67 69 63 2e 0a 7d 0a 0a  iated logic..}..
f760: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
f770: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 49 47  SQLITE_OMIT_TRIG
f780: 47 45 52 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  GER} {.  Definin
f790: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d  g this option om
f7a0: 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
f7b0: 54 52 49 47 47 45 52 20 6f 62 6a 65 63 74 73 2e  TRIGGER objects.
f7c0: 20 4e 65 69 74 68 65 72 20 74 68 65 20 0a 20 20   Neither the .  
f7d0: 5b 43 52 45 41 54 45 20 54 52 49 47 47 45 52 5d  [CREATE TRIGGER]
f7e0: 20 6f 72 20 5b 44 52 4f 50 20 54 52 49 47 47 45   or [DROP TRIGGE
f7f0: 52 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73 20 61 72  R].  commands ar
f800: 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74  e available in t
f810: 68 69 73 20 63 61 73 65 2c 20 61 6e 64 20 61 74  his case, and at
f820: 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65 63  tempting to exec
f830: 75 74 65 0a 20 20 65 69 74 68 65 72 20 77 69 6c  ute.  either wil
f840: 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 20 70 61  l result in a pa
f850: 72 73 65 20 65 72 72 6f 72 2e 0a 20 20 54 68 69  rse error..  Thi
f860: 73 20 6f 70 74 69 6f 6e 20 61 6c 73 6f 20 64 69  s option also di
f870: 73 61 62 6c 65 73 20 65 6e 66 6f 72 63 65 6d 65  sables enforceme
f880: 6e 74 20 6f 66 20 5b 66 6f 72 65 69 67 6e 20 6b  nt of [foreign k
f890: 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 2c  ey constraints],
f8a0: 0a 20 20 73 69 6e 63 65 20 74 68 65 20 63 6f 64  .  since the cod
f8b0: 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74  e that implement
f8c0: 73 20 74 72 69 67 67 65 72 73 20 61 6e 64 20 77  s triggers and w
f8d0: 68 69 63 68 20 69 73 20 6f 6d 69 74 74 65 64 20  hich is omitted 
f8e0: 62 79 20 74 68 69 73 0a 20 20 6f 70 74 69 6f 6e  by this.  option
f8f0: 20 69 73 20 61 6c 73 6f 20 75 73 65 64 20 74 6f   is also used to
f900: 20 69 6d 70 6c 65 6d 65 6e 74 20 5b 66 6f 72 65   implement [fore
f910: 69 67 6e 20 6b 65 79 20 61 63 74 69 6f 6e 73 5d  ign key actions]
f920: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
f930: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
f940: 5f 54 52 55 4e 43 41 54 45 5f 4f 50 54 49 4d 49  _TRUNCATE_OPTIMI
f950: 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 41 20 64 65  ZATION} {.  A de
f960: 66 61 75 6c 74 20 62 75 69 6c 64 20 6f 66 20 53  fault build of S
f970: 51 4c 69 74 65 2c 20 69 66 20 61 20 5b 44 45 4c  QLite, if a [DEL
f980: 45 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 20 68  ETE] statement h
f990: 61 73 20 6e 6f 20 57 48 45 52 45 20 63 6c 61 75  as no WHERE clau
f9a0: 73 65 0a 20 20 61 6e 64 20 6f 70 65 72 61 74 65  se.  and operate
f9b0: 73 20 6f 6e 20 61 20 74 61 62 6c 65 20 77 69 74  s on a table wit
f9c0: 68 20 6e 6f 20 74 72 69 67 67 65 72 73 2c 20 61  h no triggers, a
f9d0: 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 6f  n optimization o
f9e0: 63 63 75 72 73 20 74 68 61 74 0a 20 20 63 61 75  ccurs that.  cau
f9f0: 73 65 73 20 74 68 65 20 44 45 4c 45 54 45 20 74  ses the DELETE t
fa00: 6f 20 6f 63 63 75 72 20 62 79 20 64 72 6f 70 70  o occur by dropp
fa10: 69 6e 67 20 61 6e 64 20 72 65 63 72 65 61 74 69  ing and recreati
fa20: 6e 67 20 74 68 65 20 74 61 62 6c 65 2e 20 20 0a  ng the table.  .
fa30: 20 20 44 72 6f 70 70 69 6e 67 20 61 6e 64 20 72    Dropping and r
fa40: 65 63 72 65 61 74 69 6e 67 20 61 20 74 61 62 6c  ecreating a tabl
fa50: 65 20 69 73 20 75 73 75 61 6c 6c 79 20 6d 75 63  e is usually muc
fa60: 68 20 66 61 73 74 65 72 20 74 68 61 6e 20 64 65  h faster than de
fa70: 6c 65 74 69 6e 67 0a 20 20 74 68 65 20 74 61 62  leting.  the tab
fa80: 6c 65 20 63 6f 6e 74 65 6e 74 20 72 6f 77 20 62  le content row b
fa90: 79 20 72 6f 77 2e 20 20 54 68 69 73 20 69 73 20  y row.  This is 
faa0: 74 68 65 20 22 74 72 75 6e 63 61 74 65 20 6f 70  the "truncate op
fab0: 74 69 6d 69 7a 61 74 69 6f 6e 22 2e 0a 7d 0a 0a  timization"..}..
fac0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
fad0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 55 54 46 31  SQLITE_OMIT_UTF1
fae0: 36 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  6} {.  This macr
faf0: 6f 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69  o is used to omi
fb00: 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 55 54  t support for UT
fb10: 46 31 36 20 74 65 78 74 20 65 6e 63 6f 64 69 6e  F16 text encodin
fb20: 67 2e 20 57 68 65 6e 20 74 68 69 73 20 69 73 0a  g. When this is.
fb30: 20 20 64 65 66 69 6e 65 64 20 61 6c 6c 20 41 50    defined all AP
fb40: 49 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74  I functions that
fb50: 20 72 65 74 75 72 6e 20 6f 72 20 61 63 63 65 70   return or accep
fb60: 74 20 55 54 46 31 36 20 65 6e 63 6f 64 65 64 20  t UTF16 encoded 
fb70: 74 65 78 74 20 61 72 65 0a 20 20 75 6e 61 76 61  text are.  unava
fb80: 69 6c 61 62 6c 65 2e 20 54 68 65 73 65 20 66 75  ilable. These fu
fb90: 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 69  nctions can be i
fba0: 64 65 6e 74 69 66 69 65 64 20 62 79 20 74 68 65  dentified by the
fbb0: 20 66 61 63 74 20 74 68 61 74 20 74 68 65 79 20   fact that they 
fbc0: 65 6e 64 0a 20 20 77 69 74 68 20 27 31 36 27 2c  end.  with '16',
fbd0: 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 5b 73 71   for example [sq
fbe0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28  lite3_prepare16(
fbf0: 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  )], [sqlite3_col
fc00: 75 6d 6e 5f 74 65 78 74 31 36 28 29 5d 20 61 6e  umn_text16()] an
fc10: 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e  d.  [sqlite3_bin
fc20: 64 5f 74 65 78 74 31 36 28 29 5d 2e 0a 7d 0a 0a  d_text16()]..}..
fc30: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
fc40: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 41 43 55  SQLITE_OMIT_VACU
fc50: 55 4d 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  UM} {.  When thi
fc60: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
fc70: 6e 65 64 2c 20 74 68 65 20 5b 56 41 43 55 55 4d  ned, the [VACUUM
fc80: 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e  ].  command is n
fc90: 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74  ot included in t
fca0: 68 65 20 6c 69 62 72 61 72 79 2e 0a 20 20 45 78  he library..  Ex
fcb0: 65 63 75 74 69 6e 67 20 61 20 5b 56 41 43 55 55  ecuting a [VACUU
fcc0: 4d 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75  M] statement cau
fcd0: 73 65 73 20 0a 20 20 61 20 70 61 72 73 65 20 65  ses .  a parse e
fce0: 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rror..}..COMPILE
fcf0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
fd00: 4f 4d 49 54 5f 56 49 45 57 7d 20 7b 0a 20 20 44  OMIT_VIEW} {.  D
fd10: 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74  efining this opt
fd20: 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72  ion omits suppor
fd30: 74 20 66 6f 72 20 56 49 45 57 20 6f 62 6a 65 63  t for VIEW objec
fd40: 74 73 2e 20 4e 65 69 74 68 65 72 20 74 68 65 20  ts. Neither the 
fd50: 0a 20 20 5b 43 52 45 41 54 45 20 56 49 45 57 5d  .  [CREATE VIEW]
fd60: 20 6e 6f 72 20 74 68 65 20 5b 44 52 4f 50 20 56   nor the [DROP V
fd70: 49 45 57 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73 20  IEW].  commands 
fd80: 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e  are available in
fd90: 20 74 68 69 73 20 63 61 73 65 2c 20 61 6e 64 0a   this case, and.
fda0: 20 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20    attempting to 
fdb0: 65 78 65 63 75 74 65 20 65 69 74 68 65 72 20 77  execute either w
fdc0: 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 20  ill result in a 
fdd0: 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20  parse error...  
fde0: 57 41 52 4e 49 4e 47 3a 20 49 66 20 74 68 69 73  WARNING: If this
fdf0: 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65   macro is define
fe00: 64 2c 20 69 74 20 77 69 6c 6c 20 6e 6f 74 20 62  d, it will not b
fe10: 65 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 6f 70  e possible to op
fe20: 65 6e 20 61 20 64 61 74 61 62 61 73 65 0a 20 20  en a database.  
fe30: 66 6f 72 20 77 68 69 63 68 20 74 68 65 20 73 63  for which the sc
fe40: 68 65 6d 61 20 63 6f 6e 74 61 69 6e 73 20 56 49  hema contains VI
fe50: 45 57 20 6f 62 6a 65 63 74 73 2e 20 0a 7d 0a 0a  EW objects. .}..
fe60: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
fe70: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 52 54  SQLITE_OMIT_VIRT
fe80: 55 41 4c 54 41 42 4c 45 7d 20 7b 0a 20 20 54 68  UALTABLE} {.  Th
fe90: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
fea0: 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20  support for the 
feb0: 5b 73 71 6c 69 74 65 33 5f 76 74 61 62 20 7c 20  [sqlite3_vtab | 
fec0: 56 69 72 74 75 61 6c 20 54 61 62 6c 65 5d 0a 20  Virtual Table]. 
fed0: 20 6d 65 63 68 61 6e 69 73 6d 20 69 6e 20 53 51   mechanism in SQ
fee0: 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  Lite..}..COMPILE
fef0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
ff00: 4f 4d 49 54 5f 57 41 4c 7d 20 7b 0a 20 20 54 68  OMIT_WAL} {.  Th
ff10: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
ff20: 74 68 65 20 22 5b 77 72 69 74 65 2d 61 68 65 61  the "[write-ahea
ff30: 64 20 6c 6f 67 5d 22 20 28 61 2e 6b 2e 61 2e 20  d log]" (a.k.a. 
ff40: 22 5b 57 41 4c 5d 22 29 20 63 61 70 61 62 69 6c  "[WAL]") capabil
ff50: 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ity..}..COMPILE_
ff60: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
ff70: 4d 49 54 5f 57 53 44 7d 20 7b 0a 20 20 54 68 69  MIT_WSD} {.  Thi
ff80: 73 20 6f 70 74 69 6f 6e 20 62 75 69 6c 64 73 20  s option builds 
ff90: 61 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  a version of the
ffa0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
ffb0: 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 6e 6f  that contains no
ffc0: 0a 20 20 57 72 69 74 61 62 6c 65 20 53 74 61 74  .  Writable Stat
ffd0: 69 63 20 44 61 74 61 20 28 57 53 44 29 2e 20 20  ic Data (WSD).  
ffe0: 57 53 44 20 69 73 20 67 6c 6f 62 61 6c 20 76 61  WSD is global va
fff0: 72 69 61 62 6c 65 73 20 61 6e 64 2f 6f 72 20 73  riables and/or s
10000 74 61 74 69 63 0a 20 20 76 61 72 69 61 62 6c 65  tatic.  variable
10010 73 2e 20 20 53 6f 6d 65 20 70 6c 61 74 66 6f 72  s.  Some platfor
10020 6d 73 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72  ms do not suppor
10030 74 20 57 53 44 2c 20 61 6e 64 20 74 68 69 73 20  t WSD, and this 
10040 6f 70 74 69 6f 6e 20 69 73 20 6e 65 63 65 73 73  option is necess
10050 61 72 79 0a 20 20 69 6e 20 6f 72 64 65 72 20 66  ary.  in order f
10060 6f 72 20 53 51 4c 69 74 65 20 74 6f 20 77 6f 72  or SQLite to wor
10070 6b 20 74 68 6f 73 65 20 70 6c 61 74 66 6f 72 6d  k those platform
10080 73 2e 20 20 0a 0a 20 20 55 6e 6c 69 6b 65 20 6f  s.  ..  Unlike o
10090 74 68 65 72 20 4f 4d 49 54 20 6f 70 74 69 6f 6e  ther OMIT option
100a0 73 20 77 68 69 63 68 20 6d 61 6b 65 20 74 68 65  s which make the
100b0 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
100c0 73 6d 61 6c 6c 65 72 2c 0a 20 20 74 68 69 73 20  smaller,.  this 
100d0 6f 70 74 69 6f 6e 20 61 63 74 75 61 6c 6c 79 20  option actually 
100e0 69 6e 63 72 65 61 73 65 73 20 74 68 65 20 73 69  increases the si
100f0 7a 65 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64  ze of SQLite and
10100 20 6d 61 6b 65 73 20 69 74 20 72 75 6e 0a 20 20   makes it run.  
10110 61 20 6c 69 74 74 6c 65 20 73 6c 6f 77 65 72 2e  a little slower.
10120 20 20 4f 6e 6c 79 20 75 73 65 20 74 68 69 73 20    Only use this 
10130 6f 70 74 69 6f 6e 20 69 66 20 53 51 4c 69 74 65  option if SQLite
10140 20 69 73 20 62 65 69 6e 67 20 62 75 69 6c 74 20   is being built 
10150 66 6f 72 20 61 6e 0a 20 20 65 6d 62 65 64 64 65  for an.  embedde
10160 64 20 74 61 72 67 65 74 20 74 68 61 74 20 64 6f  d target that do
10170 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 57  es not support W
10180 53 44 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  SD..}..COMPILE_O
10190 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
101a0 49 54 5f 58 46 45 52 5f 4f 50 54 7d 20 7b 0a 20  IT_XFER_OPT} {. 
101b0 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
101c0 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 6f  ts support for o
101d0 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 74 68 61  ptimizations tha
101e0 74 20 68 65 6c 70 20 73 74 61 74 65 6d 65 6e 74  t help statement
101f0 73 0a 20 20 6f 66 20 74 68 65 20 66 6f 72 6d 20  s.  of the form 
10200 22 49 4e 53 45 52 54 20 49 4e 54 4f 20 2e 2e 2e  "INSERT INTO ...
10210 20 53 45 4c 45 43 54 20 2e 2e 2e 22 20 72 75 6e   SELECT ..." run
10220 20 66 61 73 74 65 72 2e 0a 7d 0a 0a 43 4f 4d 50   faster..}..COMP
10230 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
10240 54 45 5f 55 4e 54 45 53 54 41 42 4c 45 7d 20 7b  TE_UNTESTABLE} {
10250 0a 20 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  .  A standard SQ
10260 4c 69 74 65 20 62 75 69 6c 64 20 69 6e 63 6c 75  Lite build inclu
10270 64 65 73 20 61 20 73 6d 61 6c 6c 20 61 6d 6f 75  des a small amou
10280 6e 74 20 6f 66 20 6c 6f 67 69 63 20 69 6e 0a 20  nt of logic in. 
10290 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 65   the [sqlite3_te
102a0 73 74 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 74 68  st_control()] th
102b0 61 74 20 65 78 65 72 63 69 73 65 0a 20 20 70 61  at exercise.  pa
102c0 72 74 73 20 6f 66 20 74 68 65 20 53 51 4c 69 74  rts of the SQLit
102d0 65 20 63 6f 72 65 20 74 68 61 74 20 61 72 65 20  e core that are 
102e0 6f 74 68 65 72 77 69 73 65 20 64 69 66 66 69 63  otherwise diffic
102f0 75 6c 74 20 74 6f 20 72 65 61 63 68 20 61 6e 64  ult to reach and
10300 20 76 61 6c 69 64 61 74 65 2e 0a 20 20 54 68 69   validate..  Thi
10310 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
10320 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 61 74  ption omits that
10330 20 65 78 74 72 61 20 74 65 73 74 69 6e 67 20 6c   extra testing l
10340 6f 67 69 63 2e 20 20 54 68 69 73 0a 20 20 63 6f  ogic.  This.  co
10350 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
10360 6e 20 77 61 73 20 63 61 6c 6c 65 64 20 22 53 51  n was called "SQ
10370 4c 49 54 45 5f 4f 4d 49 54 5f 42 55 49 4c 54 49  LITE_OMIT_BUILTI
10380 4e 5f 54 45 53 54 22 20 70 72 69 6f 72 0a 20 20  N_TEST" prior.  
10390 74 6f 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  to SQLite versio
103a0 6e 20 33 2e 31 36 2e 30 20 28 5b 64 61 74 65 6f  n 3.16.0 ([dateo
103b0 66 3a 33 2e 31 36 2e 30 5d 29 2e 20 20 54 68 65  f:3.16.0]).  The
103c0 20 6e 61 6d 65 20 77 61 73 20 63 68 61 6e 67 65   name was change
103d0 64 0a 20 20 74 6f 20 62 65 74 74 65 72 20 64 65  d.  to better de
103e0 73 63 72 69 62 65 20 74 68 65 20 69 6d 70 6c 69  scribe the impli
103f0 63 61 74 69 6f 6e 73 20 6f 66 20 75 73 69 6e 67  cations of using
10400 20 69 74 2e 0a 20 20 3c 70 3e 0a 20 20 53 65 74   it..  <p>.  Set
10410 74 69 6e 67 20 74 68 69 73 20 63 6f 6d 70 69 6c  ting this compil
10420 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 70 72  e-time option pr
10430 65 76 65 6e 74 73 20 53 51 4c 69 74 65 20 66 72  events SQLite fr
10440 6f 6d 20 62 65 69 6e 67 20 66 75 6c 6c 79 0a 20  om being fully. 
10450 20 74 65 73 74 61 62 6c 65 2e 20 20 42 79 20 64   testable.  By d
10460 65 66 61 75 6c 74 2c 20 53 51 4c 69 74 65 20 67  efault, SQLite g
10470 6f 65 73 20 62 79 20 74 68 65 20 4e 41 53 41 20  oes by the NASA 
10480 70 72 69 6e 63 69 70 6c 65 20 6f 66 0a 20 20 22  principle of.  "
10490 66 6c 79 20 77 68 61 74 20 79 6f 75 20 74 65 73  fly what you tes
104a0 74 20 61 6e 64 20 74 65 73 74 20 77 68 61 74 20  t and test what 
104b0 79 6f 75 20 66 6c 79 22 2e 20 20 55 73 69 6e 67  you fly".  Using
104c0 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   this compile-ti
104d0 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 76 69 6f 6c  me.  option viol
104e0 61 74 65 73 20 74 68 61 74 20 70 72 69 6e 69 63  ates that prinic
104f0 70 6c 65 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 65  ple..  <p>.  The
10500 20 75 73 65 20 6f 66 20 74 68 69 73 20 63 6f 6d   use of this com
10510 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
10520 20 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e   is not recommen
10530 64 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ded..}..COMPILE_
10540 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 5a  OPTION {SQLITE_Z
10550 45 52 4f 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20  ERO_MALLOC} {.  
10560 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
10570 73 20 62 6f 74 68 20 74 68 65 20 5b 64 65 66 61  s both the [defa
10580 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ult memory alloc
10590 61 74 6f 72 5d 20 61 6e 64 20 74 68 65 0a 20 20  ator] and the.  
105a0 5b 64 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72  [debugging memor
105b0 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 66 72 6f  y allocator] fro
105c0 6d 20 74 68 65 20 62 75 69 6c 64 20 61 6e 64 20  m the build and 
105d0 73 75 62 73 74 69 74 75 74 65 73 20 61 20 73 74  substitutes a st
105e0 75 62 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ub.  memory allo
105f0 63 61 74 6f 72 20 74 68 61 74 20 61 6c 77 61 79  cator that alway
10600 73 20 66 61 69 6c 73 2e 20 20 53 51 4c 69 74 65  s fails.  SQLite
10610 20 77 69 6c 6c 20 6e 6f 74 20 72 75 6e 20 77 69   will not run wi
10620 74 68 20 74 68 69 73 0a 20 20 73 74 75 62 20 6d  th this.  stub m
10630 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
10640 73 69 6e 63 65 20 69 74 20 77 69 6c 6c 20 62 65  since it will be
10650 20 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63   unable to alloc
10660 61 74 65 20 6d 65 6d 6f 72 79 2e 20 20 42 75 74  ate memory.  But
10670 0a 20 20 74 68 69 73 20 73 74 75 62 20 63 61 6e  .  this stub can
10680 20 62 65 20 72 65 70 6c 61 63 65 64 20 61 74 20   be replaced at 
10690 73 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e 67  start-time using
106a0 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  .  [sqlite3_conf
106b0 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ig]([SQLITE_CONF
106c0 49 47 5f 4d 41 4c 4c 4f 43 5d 2c 2e 2e 2e 29 20  IG_MALLOC],...) 
106d0 6f 72 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f  or.  [sqlite3_co
106e0 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f  nfig]([SQLITE_CO
106f0 4e 46 49 47 5f 48 45 41 50 5d 2c 2e 2e 2e 29 2e  NFIG_HEAP],...).
10700 0a 20 20 53 6f 20 74 68 65 20 6e 65 74 20 65 66  .  So the net ef
10710 66 65 63 74 20 6f 66 20 74 68 69 73 20 63 6f 6d  fect of this com
10720 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
10730 20 69 73 20 74 68 61 74 20 69 74 20 61 6c 6c 6f   is that it allo
10740 77 73 20 53 51 4c 69 74 65 0a 20 20 74 6f 20 62  ws SQLite.  to b
10750 65 20 63 6f 6d 70 69 6c 65 64 20 61 6e 64 20 6c  e compiled and l
10760 69 6e 6b 65 64 20 61 67 61 69 6e 73 74 20 61 20  inked against a 
10770 73 79 73 74 65 6d 20 6c 69 62 72 61 72 79 20 74  system library t
10780 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70  hat does not sup
10790 70 6f 72 74 0a 20 20 6d 61 6c 6c 6f 63 28 29 2c  port.  malloc(),
107a0 20 66 72 65 65 28 29 2c 20 61 6e 64 2f 6f 72 20   free(), and/or 
107b0 72 65 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 3c 2f  realloc()..}..</
107c0 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 64 65  tcl>.<a name="de
107d0 62 75 67 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61 3e  bugoptions"></a>
107e0 0a 3c 68 31 3e 20 41 6e 61 6c 79 73 69 73 20 61  .<h1> Analysis a
107f0 6e 64 20 44 65 62 75 67 67 69 6e 67 20 4f 70 74  nd Debugging Opt
10800 69 6f 6e 73 3c 2f 68 31 3e 0a 3c 74 63 6c 3e 0a  ions</h1>.<tcl>.
10810 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
10820 7b 53 51 4c 49 54 45 5f 44 45 42 55 47 7d 20 7b  {SQLITE_DEBUG} {
10830 0a 20 20 54 68 65 20 53 51 4c 69 74 65 20 73 6f  .  The SQLite so
10840 75 72 63 65 20 63 6f 64 65 20 63 6f 6e 74 61 69  urce code contai
10850 6e 73 20 6c 69 74 65 72 61 6c 6c 79 20 74 68 6f  ns literally tho
10860 75 73 61 6e 64 73 20 6f 66 20 61 73 73 65 72 74  usands of assert
10870 28 29 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20  () statements.  
10880 75 73 65 64 20 74 6f 20 76 65 72 69 66 79 20 69  used to verify i
10890 6e 74 65 72 6e 61 6c 20 61 73 73 75 6d 70 74 69  nternal assumpti
108a0 6f 6e 73 20 61 6e 64 20 73 75 62 72 6f 75 74 69  ons and subrouti
108b0 6e 65 20 70 72 65 63 6f 6e 64 69 74 69 6f 6e 73  ne preconditions
108c0 20 61 6e 64 0a 20 20 70 6f 73 74 63 6f 6e 64 69   and.  postcondi
108d0 74 69 6f 6e 73 2e 20 20 54 68 65 73 65 20 61 73  tions.  These as
108e0 73 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e 74  sert() statement
108f0 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 74  s are normally t
10900 75 72 6e 65 64 20 6f 66 66 0a 20 20 28 74 68 65  urned off.  (the
10910 79 20 67 65 6e 65 72 61 74 65 20 6e 6f 20 63 6f  y generate no co
10920 64 65 29 20 73 69 6e 63 65 20 74 75 72 6e 69 6e  de) since turnin
10930 67 20 74 68 65 6d 20 6f 6e 20 6d 61 6b 65 73 20  g them on makes 
10940 53 51 4c 69 74 65 20 72 75 6e 20 61 70 70 72 6f  SQLite run appro
10950 78 69 6d 61 74 65 6c 79 0a 20 20 74 68 72 65 65  ximately.  three
10960 20 74 69 6d 65 73 20 73 6c 6f 77 65 72 2e 20 20   times slower.  
10970 42 75 74 20 66 6f 72 20 74 65 73 74 69 6e 67 20  But for testing 
10980 61 6e 64 20 61 6e 61 6c 79 73 69 73 2c 20 69 74  and analysis, it
10990 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20 74 75   is useful to tu
109a0 72 6e 0a 20 20 74 68 65 20 61 73 73 65 72 74 28  rn.  the assert(
109b0 29 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e 2e  ) statements on.
109c0 20 20 54 68 65 20 53 51 4c 49 54 45 5f 44 45 42    The SQLITE_DEB
109d0 55 47 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  UG compile-time 
109e0 6f 70 74 69 6f 6e 20 64 6f 65 73 20 74 68 69 73  option does this
109f0 2e 0a 20 20 3c 70 3e 53 51 4c 49 54 45 5f 44 45  ..  <p>SQLITE_DE
10a00 42 55 47 20 61 6c 73 6f 20 65 6e 61 62 6c 65 73  BUG also enables
10a10 20 73 6f 6d 65 20 6f 74 68 65 72 20 64 65 62 75   some other debu
10a20 67 67 69 6e 67 20 66 65 61 74 75 72 65 73 2c 20  gging features, 
10a30 73 75 63 68 20 61 73 0a 20 20 73 70 65 63 69 61  such as.  specia
10a40 6c 20 5b 50 52 41 47 4d 41 5d 20 73 74 61 74 65  l [PRAGMA] state
10a50 6d 65 6e 74 73 20 74 68 61 74 20 74 75 72 6e 20  ments that turn 
10a60 6f 6e 20 74 72 61 63 69 6e 67 20 61 6e 64 20 6c  on tracing and l
10a70 69 73 74 69 6e 67 20 66 65 61 74 75 72 65 73 0a  isting features.
10a80 20 20 75 73 65 64 20 66 6f 72 20 74 72 6f 75 62    used for troub
10a90 6c 65 73 68 6f 6f 74 69 6e 67 20 61 6e 64 20 61  leshooting and a
10aa0 6e 61 6c 79 73 69 73 20 6f 66 20 74 68 65 20 5b  nalysis of the [
10ab0 56 44 42 45 5d 20 61 6e 64 20 63 6f 64 65 20 67  VDBE] and code g
10ac0 65 6e 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d  enerator..}..COM
10ad0 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
10ae0 49 54 45 5f 4d 45 4d 44 45 42 55 47 7d 20 7b 0a  ITE_MEMDEBUG} {.
10af0 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4d 45 4d    The SQLITE_MEM
10b00 44 45 42 55 47 20 6f 70 74 69 6f 6e 20 63 61 75  DEBUG option cau
10b10 73 65 73 20 61 6e 20 69 6e 73 74 72 75 6d 65 6e  ses an instrumen
10b20 74 65 64 20 0a 20 20 5b 64 65 62 75 67 67 69 6e  ted .  [debuggin
10b30 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  g memory allocat
10b40 6f 72 5d 0a 20 20 74 6f 20 62 65 20 75 73 65 64  or].  to be used
10b50 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20   as the default 
10b60 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
10b70 20 77 69 74 68 69 6e 20 53 51 4c 69 74 65 2e 20   within SQLite. 
10b80 20 54 68 65 0a 20 20 69 6e 73 74 72 75 6d 65 6e   The.  instrumen
10b90 74 65 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ted memory alloc
10ba0 61 74 6f 72 20 63 68 65 63 6b 73 20 66 6f 72 20  ator checks for 
10bb0 6d 69 73 75 73 65 20 6f 66 20 64 79 6e 61 6d 69  misuse of dynami
10bc0 63 61 6c 6c 79 20 61 6c 6c 6f 63 61 74 65 64 0a  cally allocated.
10bd0 20 20 6d 65 6d 6f 72 79 2e 20 20 45 78 61 6d 70    memory.  Examp
10be0 6c 65 73 20 6f 66 20 6d 69 73 75 73 65 20 69 6e  les of misuse in
10bf0 63 6c 75 64 65 20 75 73 69 6e 67 20 6d 65 6d 6f  clude using memo
10c00 72 79 20 61 66 74 65 72 20 69 74 20 69 73 20 66  ry after it is f
10c10 72 65 65 64 2c 0a 20 20 77 72 69 74 69 6e 67 20  reed,.  writing 
10c20 6f 66 66 20 74 68 65 20 65 6e 64 73 20 6f 66 20  off the ends of 
10c30 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  a memory allocat
10c40 69 6f 6e 2c 20 66 72 65 65 69 6e 67 20 6d 65 6d  ion, freeing mem
10c50 6f 72 79 20 6e 6f 74 20 70 72 65 76 69 6f 75 73  ory not previous
10c60 6c 79 0a 20 20 6f 62 74 61 69 6e 65 64 20 66 72  ly.  obtained fr
10c70 6f 6d 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c  om the memory al
10c80 6c 6f 63 61 74 6f 72 2c 20 6f 72 20 66 61 69 6c  locator, or fail
10c90 69 6e 67 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a  ing to initializ
10ca0 65 20 6e 65 77 6c 79 0a 20 20 61 6c 6c 6f 63 61  e newly.  alloca
10cb0 74 65 64 20 6d 65 6d 6f 72 79 2e 0a 7d 0a 0a 3c  ted memory..}..<
10cc0 2f 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 77  /tcl>.<a name="w
10cd0 69 6e 33 32 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61  in32options"></a
10ce0 3e 0a 3c 68 31 3e 20 57 69 6e 64 6f 77 73 2d 53  >.<h1> Windows-S
10cf0 70 65 63 69 66 69 63 20 4f 70 74 69 6f 6e 73 3c  pecific Options<
10d00 2f 68 31 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d 50  /h1>.<tcl>..COMP
10d10 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
10d20 54 45 5f 57 49 4e 33 32 5f 48 45 41 50 5f 43 52  TE_WIN32_HEAP_CR
10d30 45 41 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  EATE} {.  This o
10d40 70 74 69 6f 6e 20 66 6f 72 63 65 73 20 74 68 65  ption forces the
10d50 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 6d 65   Win32 native me
10d60 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20  mory allocator, 
10d70 77 68 65 6e 20 65 6e 61 62 6c 65 64 2c 20 74 6f  when enabled, to
10d80 0a 20 20 63 72 65 61 74 65 20 61 20 70 72 69 76  .  create a priv
10d90 61 74 65 20 68 65 61 70 20 74 6f 20 68 6f 6c 64  ate heap to hold
10da0 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f   all memory allo
10db0 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50  cations..}..COMP
10dc0 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
10dd0 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 5f  TE_WIN32_MALLOC_
10de0 56 41 4c 49 44 41 54 45 7d 20 7b 0a 20 20 54 68  VALIDATE} {.  Th
10df0 69 73 20 6f 70 74 69 6f 6e 20 66 6f 72 63 65 73  is option forces
10e00 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76   the Win32 nativ
10e10 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  e memory allocat
10e20 6f 72 2c 20 77 68 65 6e 20 65 6e 61 62 6c 65 64  or, when enabled
10e30 2c 20 74 6f 0a 20 20 6d 61 6b 65 20 73 74 72 61  , to.  make stra
10e40 74 65 67 69 63 20 63 61 6c 6c 73 20 69 6e 74 6f  tegic calls into
10e50 20 74 68 65 20 48 65 61 70 56 61 6c 69 64 61 74   the HeapValidat
10e60 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 66 20  e() function if 
10e70 61 73 73 65 72 74 28 29 20 69 73 20 61 6c 73 6f  assert() is also
10e80 0a 20 20 65 6e 61 62 6c 65 64 2e 0a 7d 0a 0a 3c  .  enabled..}..<
10e90 2f 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 6c  /tcl>.<a name="l
10ea0 69 6e 6b 61 67 65 22 3e 3c 2f 61 3e 0a 3c 68 31  inkage"></a>.<h1
10eb0 3e 43 6f 6d 70 69 6c 65 72 20 4c 69 6e 6b 61 67  >Compiler Linkag
10ec0 65 20 43 6f 6e 74 72 6f 6c 3c 2f 68 31 3e 0a 0a  e Control</h1>..
10ed0 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  <p>The following
10ee0 20 6d 61 63 72 6f 73 20 73 70 65 63 69 66 79 0a   macros specify.
10ef0 69 6e 74 65 72 66 61 63 65 20 6c 69 6e 6b 61 67  interface linkag
10f00 65 20 66 6f 72 20 63 65 72 74 61 69 6e 20 6b 69  e for certain ki
10f10 6e 64 73 20 6f 66 20 53 51 4c 69 74 65 20 62 75  nds of SQLite bu
10f20 69 6c 64 73 2e 20 20 54 68 65 20 4d 61 6b 65 66  ilds.  The Makef
10f30 69 6c 65 73 20 77 69 6c 6c 20 6e 6f 72 6d 61 6c  iles will normal
10f40 6c 79 0a 68 61 6e 64 6c 65 20 73 65 74 74 69 6e  ly.handle settin
10f50 67 20 74 68 65 73 65 20 6d 61 63 72 6f 73 20 61  g these macros a
10f60 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20 20 41  utomatically.  A
10f70 70 70 6c 69 63 61 74 69 6f 6e 20 64 65 76 65 6c  pplication devel
10f80 6f 70 65 72 73 20 73 68 6f 75 6c 64 0a 6e 6f 74  opers should.not
10f90 20 6e 65 65 64 20 74 6f 20 77 6f 72 72 79 20 77   need to worry w
10fa0 69 74 68 20 74 68 65 73 65 20 6d 61 63 72 6f 73  ith these macros
10fb0 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  .  The following
10fc0 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 61   documentation a
10fd0 62 6f 75 74 20 74 68 65 73 65 20 0a 6d 61 63 72  bout these .macr
10fe0 6f 73 20 69 73 20 69 6e 63 6c 75 64 65 64 20 63  os is included c
10ff0 6f 6d 70 6c 65 74 65 6e 65 73 73 2e 3c 2f 70 3e  ompleteness.</p>
11000 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f  ..<tcl>.COMPILE_
11010 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 41  OPTION {SQLITE_A
11020 50 49 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63  PI} {.  This mac
11030 72 6f 20 69 64 65 6e 74 69 66 69 65 73 20 61 20  ro identifies a 
11040 65 78 74 65 72 6e 61 6c 6c 79 20 76 69 73 69 62  externally visib
11050 6c 65 20 69 6e 74 65 72 66 61 63 65 20 66 6f 72  le interface for
11060 20 53 51 4c 69 74 65 2e 0a 20 20 54 68 69 73 20   SQLite..  This 
11070 6d 61 63 72 6f 20 69 73 20 73 6f 6d 65 74 69 6d  macro is sometim
11080 65 73 20 73 65 74 20 74 6f 20 22 65 78 74 65 72  es set to "exter
11090 6e 22 2e 20 20 42 75 74 20 74 68 65 20 64 65 66  n".  But the def
110a0 69 6e 69 74 69 6f 6e 20 69 73 0a 20 20 63 6f 6d  inition is.  com
110b0 70 69 6c 65 72 2d 73 70 65 63 69 66 69 63 2e 0a  piler-specific..
110c0 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
110d0 4e 20 7b 53 51 4c 49 54 45 5f 41 50 49 43 41 4c  N {SQLITE_APICAL
110e0 4c 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  L} {.  This macr
110f0 6f 20 69 64 65 6e 74 69 66 69 65 73 20 74 68 65  o identifies the
11100 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74   calling convent
11110 69 6f 6e 20 75 73 65 64 20 62 79 20 70 75 62 6c  ion used by publ
11120 69 63 20 69 6e 74 65 72 66 61 63 65 0a 20 20 72  ic interface.  r
11130 6f 75 74 69 6e 65 73 20 69 6e 20 53 51 4c 69 74  outines in SQLit
11140 65 2e 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69  e.  This macro i
11150 73 20 6e 6f 72 6d 61 6c 6c 79 20 64 65 66 69 6e  s normally defin
11160 65 64 20 74 6f 20 62 65 20 6e 6f 74 68 69 6e 67  ed to be nothing
11170 2c 0a 20 20 74 68 6f 75 67 68 20 6f 6e 20 57 69  ,.  though on Wi
11180 6e 64 6f 77 73 20 62 75 69 6c 64 73 20 69 74 20  ndows builds it 
11190 63 61 6e 20 73 6f 6d 65 74 69 6d 65 73 20 62 65  can sometimes be
111a0 20 73 65 74 20 74 6f 20 22 5f 5f 63 64 65 63 6c   set to "__cdecl
111b0 22 20 6f 72 20 22 5f 5f 73 74 64 63 61 6c 6c 22  " or "__stdcall"
111c0 2e 0a 20 20 54 68 65 20 22 5f 5f 63 64 65 63 6c  ..  The "__cdecl
111d0 22 20 73 65 74 74 69 6e 67 20 69 73 20 74 68 65  " setting is the
111e0 20 64 65 66 61 75 6c 74 2c 20 62 75 74 20 22 5f   default, but "_
111f0 5f 73 74 64 63 61 6c 6c 22 20 69 73 20 75 73 65  _stdcall" is use
11200 64 20 77 68 65 6e 20 53 51 4c 69 74 65 0a 20 20  d when SQLite.  
11210 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62  is intended to b
11220 65 20 63 6f 6d 70 69 6c 65 64 20 61 73 20 61 20  e compiled as a 
11230 57 69 6e 64 6f 77 73 20 73 79 73 74 65 6d 20 6c  Windows system l
11240 69 62 72 61 72 79 2e 0a 20 20 3c 70 3e 0a 20 20  ibrary..  <p>.  
11250 41 20 73 69 6e 67 6c 65 20 66 75 6e 63 74 69 6f  A single functio
11260 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 73 68  n declaration sh
11270 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 6e 6f 20  ould contain no 
11280 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 6f 66  more than one of
11290 0a 20 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  .  the following
112a0 3a 20 20 5b 53 51 4c 49 54 45 5f 41 50 49 43 41  :  [SQLITE_APICA
112b0 4c 4c 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 41 4c  LL], [SQLITE_CAL
112c0 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49 54 45 5f  LBACK], [SQLITE_
112d0 43 44 45 43 4c 5d 2c 0a 20 20 6f 72 20 5b 53 51  CDECL],.  or [SQ
112e0 4c 49 54 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a 7d  LITE_SYSCALL]..}
112f0 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
11300 20 7b 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43   {SQLITE_CALLBAC
11310 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  K} {.  This macr
11320 6f 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20  o specifies the 
11330 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69  calling conventi
11340 6f 6e 20 75 73 65 64 20 62 79 20 63 61 6c 6c 62  on used by callb
11350 61 63 6b 20 70 6f 69 6e 74 65 72 73 0a 20 20 69  ack pointers.  i
11360 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 69 73 20  n SQLite.  This 
11370 6d 61 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c  macro is normall
11380 79 20 64 65 66 69 6e 65 64 20 74 6f 20 62 65 20  y defined to be 
11390 6e 6f 74 68 69 6e 67 2c 20 74 68 6f 75 67 68 20  nothing, though 
113a0 6f 6e 20 57 69 6e 64 6f 77 73 0a 20 20 62 75 69  on Windows.  bui
113b0 6c 64 73 20 69 74 20 63 61 6e 20 73 6f 6d 65 74  lds it can somet
113c0 69 6d 65 73 20 62 65 20 73 65 74 20 74 6f 20 22  imes be set to "
113d0 5f 5f 63 64 65 63 6c 22 20 6f 72 20 22 5f 5f 73  __cdecl" or "__s
113e0 74 64 63 61 6c 6c 22 2e 20 20 54 68 65 0a 20 20  tdcall".  The.  
113f0 22 5f 5f 63 64 65 63 6c 22 20 73 65 74 74 69 6e  "__cdecl" settin
11400 67 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74  g is the default
11410 2c 20 62 75 74 20 22 5f 5f 73 74 64 63 61 6c 6c  , but "__stdcall
11420 22 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 53  " is used when S
11430 51 4c 69 74 65 0a 20 20 69 73 20 69 6e 74 65 6e  QLite.  is inten
11440 64 65 64 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c  ded to be compil
11450 65 64 20 61 73 20 61 20 57 69 6e 64 6f 77 73 20  ed as a Windows 
11460 73 79 73 74 65 6d 20 6c 69 62 72 61 72 79 2e 0a  system library..
11470 20 20 3c 70 3e 0a 20 20 41 20 73 69 6e 67 6c 65    <p>.  A single
11480 20 66 75 6e 63 74 69 6f 6e 20 64 65 63 6c 61 72   function declar
11490 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 63 6f 6e  ation should con
114a0 74 61 69 6e 20 6e 6f 20 6d 6f 72 65 20 74 68 61  tain no more tha
114b0 6e 20 6f 6e 65 20 6f 66 0a 20 20 74 68 65 20 66  n one of.  the f
114c0 6f 6c 6c 6f 77 69 6e 67 3a 20 20 5b 53 51 4c 49  ollowing:  [SQLI
114d0 54 45 5f 41 50 49 43 41 4c 4c 5d 2c 20 5b 53 51  TE_APICALL], [SQ
114e0 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b 5d 2c 20  LITE_CALLBACK], 
114f0 5b 53 51 4c 49 54 45 5f 43 44 45 43 4c 5d 2c 0a  [SQLITE_CDECL],.
11500 20 20 6f 72 20 5b 53 51 4c 49 54 45 5f 53 59 53    or [SQLITE_SYS
11510 43 41 4c 4c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  CALL]..}..COMPIL
11520 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
11530 5f 43 44 45 43 4c 7d 20 7b 0a 20 20 54 68 69 73  _CDECL} {.  This
11540 20 6d 61 63 72 6f 20 73 70 65 63 69 66 69 65 73   macro specifies
11550 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 63 6f 6e   the calling con
11560 76 65 6e 74 69 6f 6e 20 75 73 65 64 20 62 79 20  vention used by 
11570 76 61 72 61 72 67 73 20 69 6e 74 65 72 66 61 63  varargs interfac
11580 65 0a 20 20 72 6f 75 74 69 6e 65 73 20 69 6e 20  e.  routines in 
11590 53 51 4c 69 74 65 2e 20 20 54 68 69 73 20 6d 61  SQLite.  This ma
115a0 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20  cro is normally 
115b0 64 65 66 69 6e 65 64 20 74 6f 20 62 65 20 6e 6f  defined to be no
115c0 74 68 69 6e 67 2c 0a 20 20 74 68 6f 75 67 68 20  thing,.  though 
115d0 6f 6e 20 57 69 6e 64 6f 77 73 20 62 75 69 6c 64  on Windows build
115e0 73 20 69 74 20 63 61 6e 20 73 6f 6d 65 74 69 6d  s it can sometim
115f0 65 73 20 62 65 20 73 65 74 20 74 6f 20 22 5f 5f  es be set to "__
11600 63 64 65 63 6c 22 2e 20 20 54 68 69 73 0a 20 20  cdecl".  This.  
11610 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20 6f 6e  macro is used on
11620 20 76 61 72 61 72 67 73 20 72 6f 75 74 69 6e 65   varargs routine
11630 73 20 61 6e 64 20 73 6f 20 63 61 6e 6e 6f 74 20  s and so cannot 
11640 62 65 20 73 65 74 20 74 6f 20 22 5f 5f 73 74 64  be set to "__std
11650 63 61 6c 6c 22 0a 20 20 73 69 6e 63 65 20 74 68  call".  since th
11660 65 20 5f 5f 73 74 64 63 61 6c 6c 20 63 61 6c 6c  e __stdcall call
11670 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 64  ing convention d
11680 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20  oes not support 
11690 76 61 72 61 72 67 73 20 66 75 6e 63 74 69 6f 6e  varargs function
116a0 73 2e 0a 20 20 3c 70 3e 0a 20 20 41 20 73 69 6e  s..  <p>.  A sin
116b0 67 6c 65 20 66 75 6e 63 74 69 6f 6e 20 64 65 63  gle function dec
116c0 6c 61 72 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20  laration should 
116d0 63 6f 6e 74 61 69 6e 20 6e 6f 20 6d 6f 72 65 20  contain no more 
116e0 74 68 61 6e 20 6f 6e 65 20 6f 66 0a 20 20 74 68  than one of.  th
116f0 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a 20 20 5b 53  e following:  [S
11700 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c 5d 2c 20  QLITE_APICALL], 
11710 5b 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b  [SQLITE_CALLBACK
11720 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 44 45 43 4c  ], [SQLITE_CDECL
11730 5d 2c 0a 20 20 6f 72 20 5b 53 51 4c 49 54 45 5f  ],.  or [SQLITE_
11740 53 59 53 43 41 4c 4c 5d 2e 0a 7d 0a 0a 43 4f 4d  SYSCALL]..}..COM
11750 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
11760 49 54 45 5f 53 59 53 43 41 4c 4c 7d 20 7b 0a 20  ITE_SYSCALL} {. 
11770 20 54 68 69 73 20 6d 61 63 72 6f 20 69 64 65 6e   This macro iden
11780 74 69 66 69 65 73 20 74 68 65 20 63 61 6c 6c 69  tifies the calli
11790 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 75 73  ng convention us
117a0 65 64 20 62 79 20 6f 70 65 72 61 74 69 6e 67 20  ed by operating 
117b0 73 79 73 74 65 6d 0a 20 20 69 6e 74 65 72 66 61  system.  interfa
117c0 63 65 73 20 66 6f 72 20 74 61 72 67 65 74 20 74  ces for target t
117d0 68 65 20 70 6c 61 74 66 6f 72 6d 20 66 6f 72 20  he platform for 
117e0 61 6e 20 53 51 4c 69 74 65 20 62 75 69 6c 64 2e  an SQLite build.
117f0 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
11800 20 6e 6f 72 6d 61 6c 6c 79 20 64 65 66 69 6e 65   normally define
11810 64 20 74 6f 20 62 65 20 6e 6f 74 68 69 6e 67 2c  d to be nothing,
11820 20 74 68 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f   though on Windo
11830 77 73 0a 20 20 62 75 69 6c 64 73 20 69 74 20 63  ws.  builds it c
11840 61 6e 20 73 6f 6d 65 74 69 6d 65 73 20 62 65 20  an sometimes be 
11850 73 65 74 20 74 6f 20 22 5f 5f 73 74 64 63 61 6c  set to "__stdcal
11860 6c 22 2e 0a 20 20 3c 70 3e 0a 20 20 41 20 73 69  l"..  <p>.  A si
11870 6e 67 6c 65 20 66 75 6e 63 74 69 6f 6e 20 64 65  ngle function de
11880 63 6c 61 72 61 74 69 6f 6e 20 73 68 6f 75 6c 64  claration should
11890 20 63 6f 6e 74 61 69 6e 20 6e 6f 20 6d 6f 72 65   contain no more
118a0 20 74 68 61 6e 20 6f 6e 65 20 6f 66 0a 20 20 74   than one of.  t
118b0 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a 20 20 5b  he following:  [
118c0 53 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c 5d 2c  SQLITE_APICALL],
118d0 20 5b 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43   [SQLITE_CALLBAC
118e0 4b 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 44 45 43  K], [SQLITE_CDEC
118f0 4c 5d 2c 0a 20 20 6f 72 20 5b 53 51 4c 49 54 45  L],.  or [SQLITE
11900 5f 53 59 53 43 41 4c 4c 5d 2e 0a 7d 0a 0a 43 4f  _SYSCALL]..}..CO
11910 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
11920 4c 49 54 45 5f 54 43 4c 41 50 49 7d 20 7b 0a 20  LITE_TCLAPI} {. 
11930 20 54 68 69 73 20 6d 61 63 72 6f 20 73 70 65 63   This macro spec
11940 69 66 69 65 73 20 74 68 65 20 63 61 6c 6c 69 6e  ifies the callin
11950 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 75 73 65  g convention use
11960 64 20 62 79 20 74 68 65 20 0a 20 20 5b 68 74 74  d by the .  [htt
11970 70 3a 2f 2f 77 77 77 2e 74 63 6c 2e 74 6b 20 7c  p://www.tcl.tk |
11980 20 54 43 4c 5d 20 6c 69 62 72 61 72 79 20 69 6e   TCL] library in
11990 74 65 72 66 61 63 65 20 72 6f 75 74 69 6e 65 73  terface routines
119a0 2e 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69  ..  This macro i
119b0 73 20 6e 6f 74 20 75 73 65 64 20 62 79 20 74 68  s not used by th
119c0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 2c 20 62  e SQLite core, b
119d0 75 74 20 6f 6e 6c 79 20 62 79 20 74 68 65 20 5b  ut only by the [
119e0 54 43 4c 20 49 6e 74 65 72 66 61 63 65 5d 0a 20  TCL Interface]. 
119f0 20 61 6e 64 20 5b 54 43 4c 20 74 65 73 74 20 73   and [TCL test s
11a00 75 69 74 65 5d 2e 0a 20 20 54 68 69 73 20 6d 61  uite]..  This ma
11a10 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20  cro is normally 
11a20 64 65 66 69 6e 65 64 20 74 6f 20 62 65 20 6e 6f  defined to be no
11a30 74 68 69 6e 67 2c 0a 20 20 74 68 6f 75 67 68 20  thing,.  though 
11a40 6f 6e 20 57 69 6e 64 6f 77 73 20 62 75 69 6c 64  on Windows build
11a50 73 20 69 74 20 63 61 6e 20 73 6f 6d 65 74 69 6d  s it can sometim
11a60 65 73 20 62 65 20 73 65 74 20 74 6f 20 22 5f 5f  es be set to "__
11a70 63 64 65 63 6c 22 2e 20 20 54 68 69 73 0a 20 20  cdecl".  This.  
11a80 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20 6f 6e  macro is used on
11a90 20 54 43 4c 20 6c 69 62 72 61 72 79 20 69 6e 74   TCL library int
11aa0 65 72 66 61 63 65 20 72 6f 75 74 69 6e 65 73 20  erface routines 
11ab0 77 68 69 63 68 20 61 72 65 20 61 6c 77 61 79 73  which are always
11ac0 20 63 6f 6d 70 69 6c 65 64 0a 20 20 61 73 20 5f   compiled.  as _
11ad0 5f 63 64 65 63 6c 2c 20 65 76 65 6e 20 6f 6e 20  _cdecl, even on 
11ae0 70 6c 61 74 66 6f 72 6d 73 20 74 68 61 74 20 70  platforms that p
11af0 72 65 66 65 72 20 74 6f 20 75 73 65 20 5f 5f 73  refer to use __s
11b00 74 64 63 61 6c 6c 2c 20 73 6f 20 74 68 69 73 0a  tdcall, so this.
11b10 20 20 6d 61 63 72 6f 20 73 68 6f 75 6c 64 20 6e    macro should n
11b20 6f 74 20 62 65 20 73 65 74 20 74 6f 20 5f 5f 73  ot be set to __s
11b30 74 64 63 61 6c 6c 20 75 6e 6c 65 73 73 20 74 68  tdcall unless th
11b40 65 20 70 6c 61 74 66 6f 72 6d 20 61 73 20 61 20  e platform as a 
11b50 63 75 73 74 6f 6d 0a 20 20 54 43 4c 20 6c 69 62  custom.  TCL lib
11b60 72 61 72 79 20 62 75 69 6c 64 20 74 68 61 74 20  rary build that 
11b70 73 75 70 70 6f 72 74 73 20 5f 5f 73 74 64 63 61  supports __stdca
11b80 6c 6c 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 69 73  ll..  <p>.  This
11b90 20 6d 61 63 72 6f 20 6d 61 79 20 6e 6f 74 20 62   macro may not b
11ba0 65 20 75 73 65 64 20 69 6e 20 63 6f 6d 62 69 6e  e used in combin
11bb0 61 74 69 6f 6e 20 77 69 74 68 20 61 6e 79 20 6f  ation with any o
11bc0 66 20 5b 53 51 4c 49 54 45 5f 41 50 49 43 41 4c  f [SQLITE_APICAL
11bd0 4c 5d 2c 0a 20 20 5b 53 51 4c 49 54 45 5f 43 41  L],.  [SQLITE_CA
11be0 4c 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49 54 45  LLBACK], [SQLITE
11bf0 5f 43 44 45 43 4c 5d 2c 20 6f 72 20 5b 53 51 4c  _CDECL], or [SQL
11c00 49 54 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a 7d 0a  ITE_SYSCALL]..}.
11c10 0a 0a 3c 2f 74 63 6c 3e 0a                       ..</tcl>.