Documentation Source Text

Hex Artifact Content
Login

Artifact 192d7f774e1bb756a26b9d2553bbe6d9b9c9eec8f88286260579dcb1ebd743bd:


0000: 3c 74 69 74 6c 65 3e 43 6f 6d 70 69 6c 65 2d 74  <title>Compile-t
0010: 69 6d 65 20 4f 70 74 69 6f 6e 73 3c 2f 74 69 74  ime Options</tit
0020: 6c 65 3e 0a 3c 74 63 6c 3e 68 64 5f 6b 65 79 77  le>.<tcl>hd_keyw
0030: 6f 72 64 73 20 7b 63 6f 6d 70 69 6c 65 2d 74 69  ords {compile-ti
0040: 6d 65 20 6f 70 74 69 6f 6e 73 7d 3c 2f 74 63 6c  me options}</tcl
0050: 3e 0a 0a 3c 74 61 62 6c 65 5f 6f 66 5f 63 6f 6e  >..<table_of_con
0060: 74 65 6e 74 73 3e 0a 0a 3c 68 31 3e 4f 76 65 72  tents>..<h1>Over
0070: 76 69 65 77 3c 2f 68 31 3e 0a 0a 3c 70 3e 0a 46  view</h1>..<p>.F
0080: 6f 72 20 6d 6f 73 74 20 70 75 72 70 6f 73 65 73  or most purposes
0090: 2c 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65 20  , SQLite can be 
00a0: 62 75 69 6c 74 20 6a 75 73 74 20 66 69 6e 65 20  built just fine 
00b0: 75 73 69 6e 67 20 74 68 65 20 64 65 66 61 75 6c  using the defaul
00c0: 74 0a 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 70  t.compilation op
00d0: 74 69 6f 6e 73 2e 20 48 6f 77 65 76 65 72 2c 20  tions. However, 
00e0: 69 66 20 72 65 71 75 69 72 65 64 2c 20 74 68 65  if required, the
00f0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
0100: 74 69 6f 6e 73 0a 64 6f 63 75 6d 65 6e 74 65 64  tions.documented
0110: 20 62 65 6c 6f 77 20 63 61 6e 20 62 65 20 75 73   below can be us
0120: 65 64 20 74 6f 20 0a 3c 61 20 68 72 65 66 3d 22  ed to .<a href="
0130: 23 6f 6d 69 74 66 65 61 74 75 72 65 73 22 3e 6f  #omitfeatures">o
0140: 6d 69 74 20 53 51 4c 69 74 65 20 66 65 61 74 75  mit SQLite featu
0150: 72 65 73 3c 2f 61 3e 20 28 72 65 73 75 6c 74 69  res</a> (resulti
0160: 6e 67 20 69 6e 0a 61 20 5b 72 65 6c 66 6f 6f 74  ng in.a [relfoot
0170: 70 72 69 6e 74 20 7c 20 73 6d 61 6c 6c 65 72 20  print | smaller 
0180: 63 6f 6d 70 69 6c 65 64 20 6c 69 62 72 61 72 79  compiled library
0190: 20 73 69 7a 65 5d 29 20 6f 72 20 74 6f 20 63 68   size]) or to ch
01a0: 61 6e 67 65 20 74 68 65 0a 3c 61 20 68 72 65 66  ange the.<a href
01b0: 3d 22 23 64 65 66 61 75 6c 74 73 22 3e 64 65 66  ="#defaults">def
01c0: 61 75 6c 74 20 76 61 6c 75 65 73 3c 2f 61 3e 20  ault values</a> 
01d0: 6f 66 20 73 6f 6d 65 20 70 61 72 61 6d 65 74 65  of some paramete
01e0: 72 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 45 76  rs..</p>..<p>.Ev
01f0: 65 72 79 20 65 66 66 6f 72 74 20 68 61 73 20 62  ery effort has b
0200: 65 65 6e 20 6d 61 64 65 20 74 6f 20 65 6e 73 75  een made to ensu
0210: 72 65 20 74 68 61 74 20 74 68 65 20 76 61 72 69  re that the vari
0220: 6f 75 73 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73  ous combinations
0230: 0a 6f 66 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20  .of compilation 
0240: 6f 70 74 69 6f 6e 73 20 77 6f 72 6b 20 68 61 72  options work har
0250: 6d 6f 6e 69 6f 75 73 6c 79 20 61 6e 64 20 70 72  moniously and pr
0260: 6f 64 75 63 65 20 61 20 77 6f 72 6b 69 6e 67 20  oduce a working 
0270: 6c 69 62 72 61 72 79 2e 0a 4e 65 76 65 72 74 68  library..Neverth
0280: 65 6c 65 73 73 2c 20 69 74 20 69 73 20 73 74 72  eless, it is str
0290: 6f 6e 67 6c 79 20 72 65 63 6f 6d 6d 65 6e 64 65  ongly recommende
02a0: 64 20 74 68 61 74 20 74 68 65 20 53 51 4c 69 74  d that the SQLit
02b0: 65 20 74 65 73 74 2d 73 75 69 74 65 0a 62 65 20  e test-suite.be 
02c0: 65 78 65 63 75 74 65 64 20 74 6f 20 63 68 65 63  executed to chec
02d0: 6b 20 66 6f 72 20 65 72 72 6f 72 73 20 62 65 66  k for errors bef
02e0: 6f 72 65 20 75 73 69 6e 67 20 61 6e 20 53 51 4c  ore using an SQL
02f0: 69 74 65 20 6c 69 62 72 61 72 79 20 62 75 69 6c  ite library buil
0300: 74 0a 77 69 74 68 20 6e 6f 6e 2d 73 74 61 6e 64  t.with non-stand
0310: 61 72 64 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20  ard compilation 
0320: 6f 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 0a 3c  options..</p>..<
0330: 74 63 6c 3e 0a 70 72 6f 63 20 43 4f 4d 50 49 4c  tcl>.proc COMPIL
0340: 45 5f 4f 50 54 49 4f 4e 20 7b 6e 61 6d 65 20 74  E_OPTION {name t
0350: 65 78 74 7d 20 7b 0a 20 20 69 66 20 7b 5b 72 65  ext} {.  if {[re
0360: 67 65 78 70 20 7b 28 53 51 4c 49 54 45 7c 48 41  gexp {(SQLITE|HA
0370: 56 45 29 5f 28 5b 41 2d 5a 30 2d 39 5f 5d 2b 29  VE)_([A-Z0-9_]+)
0380: 7d 20 24 6e 61 6d 65 20 61 6c 6c 20 70 72 65 66  } $name all pref
0390: 69 78 20 6c 61 62 65 6c 5d 7d 20 7b 0a 20 20 20  ix label]} {.   
03a0: 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 5b 73 74   hd_fragment [st
03b0: 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 24 6c 61  ring tolower $la
03c0: 62 65 6c 5d 0a 20 20 20 20 68 64 5f 6b 65 79 77  bel].    hd_keyw
03d0: 6f 72 64 73 20 24 61 6c 6c 20 2d 44 24 61 6c 6c  ords $all -D$all
03e0: 0a 20 20 7d 0a 20 20 69 66 20 7b 5b 72 65 67 65  .  }.  if {[rege
03f0: 78 70 20 7b 5e 59 59 28 5b 41 2d 5a 30 2d 39 5f  xp {^YY([A-Z0-9_
0400: 5d 2b 29 7d 20 24 6e 61 6d 65 20 61 6c 6c 20 6c  ]+)} $name all l
0410: 61 62 65 6c 5d 7d 20 7b 0a 20 20 20 20 68 64 5f  abel]} {.    hd_
0420: 66 72 61 67 6d 65 6e 74 20 5b 73 74 72 69 6e 67  fragment [string
0430: 20 74 6f 6c 6f 77 65 72 20 24 61 6c 6c 5d 0a 20   tolower $all]. 
0440: 20 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 24     hd_keywords $
0450: 61 6c 6c 0a 20 20 7d 0a 20 20 68 64 5f 70 75 74  all.  }.  hd_put
0460: 73 20 3c 70 3e 3c 62 3e 24 6e 61 6d 65 3c 2f 62  s <p><b>$name</b
0470: 3e 3c 2f 70 3e 0a 20 20 72 65 67 73 75 62 20 2d  ></p>.  regsub -
0480: 61 6c 6c 20 22 5c 6e 5c 5c 73 2a 5c 6e 22 20 24  all "\n\\s*\n" $
0490: 74 65 78 74 20 22 3c 2f 70 3e 5c 6e 5c 6e 3c 70  text "</p>\n\n<p
04a0: 3e 22 20 74 65 78 74 0a 20 20 68 64 5f 72 65 73  >" text.  hd_res
04b0: 6f 6c 76 65 20 3c 62 6c 6f 63 6b 71 75 6f 74 65  olve <blockquote
04c0: 3e 3c 70 3e 24 74 65 78 74 3c 2f 70 3e 3c 2f 62  ><p>$text</p></b
04d0: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 68 64  lockquote>.}..hd
04e0: 5f 66 72 61 67 6d 65 6e 74 20 72 63 6d 64 20 7b  _fragment rcmd {
04f0: 72 65 63 6f 6d 6d 65 6e 64 65 64 20 63 6f 6d 70  recommended comp
0500: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
0510: 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 68 31 3e 52 65  }.</tcl>..<h1>Re
0520: 63 6f 6d 6d 65 6e 64 65 64 20 43 6f 6d 70 69 6c  commended Compil
0530: 65 2d 74 69 6d 65 20 4f 70 74 69 6f 6e 73 3c 2f  e-time Options</
0540: 68 31 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c  h1>..<p>The foll
0550: 6f 77 69 6e 67 20 63 6f 6d 70 69 6c 65 2d 74 69  owing compile-ti
0560: 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 72  me options are r
0570: 65 63 6f 6d 6d 65 6e 64 65 64 20 66 6f 72 20 61  ecommended for a
0580: 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74  pplications that
0590: 0a 61 72 65 20 61 62 6c 65 20 74 6f 20 75 73 65  .are able to use
05a0: 20 74 68 65 6d 2c 20 69 6e 20 6f 72 64 65 72 20   them, in order 
05b0: 74 6f 20 6d 69 6e 69 6d 69 7a 65 64 20 74 68 65  to minimized the
05c0: 20 6e 75 6d 62 65 72 20 6f 66 20 43 50 55 20 63   number of CPU c
05d0: 79 63 6c 65 73 20 61 6e 64 0a 74 68 65 20 62 79  ycles and.the by
05e0: 74 65 73 20 6f 66 20 6d 65 6d 6f 72 79 20 75 73  tes of memory us
05f0: 65 64 20 62 79 20 53 51 4c 69 74 65 2e 0a 4e 6f  ed by SQLite..No
0600: 74 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 63  t all of these c
0610: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
0620: 6f 6e 73 20 61 72 65 20 75 73 61 62 6c 65 20 62  ons are usable b
0630: 79 20 65 76 65 72 79 20 61 70 70 6c 69 63 61 74  y every applicat
0640: 69 6f 6e 2e 0a 46 6f 72 20 65 78 61 6d 70 6c 65  ion..For example
0650: 2c 20 74 68 65 20 53 51 4c 49 54 45 5f 54 48 52  , the SQLITE_THR
0660: 45 41 44 53 41 46 45 3d 30 20 6f 70 74 69 6f 6e  EADSAFE=0 option
0670: 20 69 73 20 6f 6e 6c 79 20 75 73 61 62 6c 65 20   is only usable 
0680: 62 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a  by applications.
0690: 74 68 61 74 20 6e 65 76 65 72 20 61 63 63 65 73  that never acces
06a0: 73 20 53 51 4c 69 74 65 20 66 72 6f 6d 20 6d 6f  s SQLite from mo
06b0: 72 65 20 74 68 61 6e 20 6f 6e 65 20 74 68 72 65  re than one thre
06c0: 61 64 20 61 74 20 61 20 74 69 6d 65 2e 20 20 41  ad at a time.  A
06d0: 6e 64 20 74 68 65 0a 53 51 4c 49 54 45 5f 4f 4d  nd the.SQLITE_OM
06e0: 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c  IT_PROGRESS_CALL
06f0: 42 41 43 4b 20 6f 70 74 69 6f 6e 20 69 73 20 6f  BACK option is o
0700: 6e 6c 79 20 75 73 61 62 6c 65 20 62 79 20 61 70  nly usable by ap
0710: 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 0a  plications that.
0720: 64 6f 65 20 6e 6f 74 20 75 73 65 20 74 68 65 20  doe not use the 
0730: 5b 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73  [sqlite3_progres
0740: 73 5f 68 61 6e 64 6c 65 72 28 29 5d 20 69 6e 74  s_handler()] int
0750: 65 72 66 61 63 65 2e 20 20 41 6e 64 20 73 6f 20  erface.  And so 
0760: 66 6f 72 74 68 2e 0a 0a 3c 70 3e 49 74 20 69 73  forth...<p>It is
0770: 20 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 74   impossible to t
0780: 65 73 74 20 65 76 65 72 79 20 70 6f 73 73 69 62  est every possib
0790: 6c 65 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f  le combination o
07a0: 66 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f  f compile-time.o
07b0: 70 74 69 6f 6e 73 20 66 6f 72 20 53 51 4c 69 74  ptions for SQLit
07c0: 65 2e 20 20 42 75 74 20 74 68 65 20 66 6f 6c 6c  e.  But the foll
07d0: 6f 77 69 6e 67 20 73 65 74 20 6f 66 20 63 6f 6d  owing set of com
07e0: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
07f0: 73 20 69 73 0a 6f 6e 65 20 63 6f 6e 66 69 67 75  s is.one configu
0800: 72 61 74 69 6f 6e 20 74 68 61 74 20 69 73 20 61  ration that is a
0810: 6c 77 61 79 73 20 66 75 6c 6c 79 20 74 65 73 74  lways fully test
0820: 65 64 2e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70  ed...<ol>.<li><p
0830: 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 54 48 52 45  ><b>[SQLITE_THRE
0840: 41 44 53 41 46 45 3d 30 5d 3c 2f 62 3e 2e 0a 53  ADSAFE=0]</b>..S
0850: 65 74 74 69 6e 67 20 2d 44 53 51 4c 49 54 45 5f  etting -DSQLITE_
0860: 54 48 52 45 41 44 53 41 46 45 3d 30 20 63 61 75  THREADSAFE=0 cau
0870: 73 65 73 20 61 6c 6c 20 6f 66 20 74 68 65 20 6d  ses all of the m
0880: 75 74 65 78 20 61 6e 64 20 74 68 72 65 61 64 2d  utex and thread-
0890: 73 61 66 65 74 79 20 6c 6f 67 69 63 0a 69 6e 20  safety logic.in 
08a0: 53 51 4c 69 74 65 20 74 6f 20 62 65 20 6f 6d 69  SQLite to be omi
08b0: 74 74 65 64 2e 20 20 54 68 69 73 20 69 73 20 74  tted.  This is t
08c0: 68 65 20 73 69 6e 67 6c 65 20 63 6f 6d 70 69 6c  he single compil
08d0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68  e-time option th
08e0: 61 74 20 6d 61 6b 65 73 0a 74 68 65 20 6d 6f 73  at makes.the mos
08f0: 74 20 64 69 66 66 65 72 65 6e 63 65 20 69 6e 20  t difference in 
0900: 6f 70 74 69 6d 69 7a 69 6e 67 20 74 68 65 20 70  optimizing the p
0910: 65 72 66 6f 72 6d 61 6e 63 65 20 6f 66 20 53 51  erformance of SQ
0920: 4c 69 74 65 2e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62  Lite...<li><p><b
0930: 3e 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  >[SQLITE_DEFAULT
0940: 5f 4d 45 4d 53 54 41 54 55 53 3d 30 5d 3c 2f 62  _MEMSTATUS=0]</b
0950: 3e 2e 0a 54 68 69 73 20 73 65 74 74 69 6e 67 20  >..This setting 
0960: 63 61 75 73 65 73 20 74 68 65 20 5b 73 71 6c 69  causes the [sqli
0970: 74 65 33 5f 73 74 61 74 75 73 28 29 5d 20 69 6e  te3_status()] in
0980: 74 65 72 66 61 63 65 73 20 74 68 61 74 20 74 72  terfaces that tr
0990: 61 63 6b 20 6d 65 6d 6f 72 79 20 75 73 61 67 65  ack memory usage
09a0: 0a 74 6f 20 62 65 20 64 69 73 61 62 6c 65 64 2e  .to be disabled.
09b0: 20 20 54 68 69 73 20 68 65 6c 70 73 20 74 68 65    This helps the
09c0: 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   [sqlite3_malloc
09d0: 28 29 5d 20 72 6f 75 74 69 6e 65 73 20 72 75 6e  ()] routines run
09e0: 20 6d 75 63 68 20 66 61 73 74 65 72 2c 0a 61 6e   much faster,.an
09f0: 64 20 73 69 6e 63 65 20 53 51 4c 69 74 65 20 75  d since SQLite u
0a00: 73 65 73 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  ses [sqlite3_mal
0a10: 6c 6f 63 28 29 5d 20 69 6e 74 65 72 6e 61 6c 6c  loc()] internall
0a20: 79 2c 20 74 68 69 73 20 68 65 6c 70 73 20 74 6f  y, this helps to
0a30: 20 6d 61 6b 65 20 74 68 65 0a 65 6e 74 69 72 65   make the.entire
0a40: 20 6c 69 62 72 61 72 79 20 66 61 73 74 65 72 2e   library faster.
0a50: 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51 4c  ..<li><p><b>[SQL
0a60: 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f  ITE_DEFAULT_WAL_
0a70: 53 59 4e 43 48 52 4f 4e 4f 55 53 3d 31 5d 3c 2f  SYNCHRONOUS=1]</
0a80: 62 3e 2e 0a 46 6f 72 20 6d 61 78 69 6d 75 6d 20  b>..For maximum 
0a90: 64 61 74 61 62 61 73 65 20 73 61 66 65 74 79 20  database safety 
0aa0: 66 6f 6c 6c 6f 77 69 6e 67 20 61 20 70 6f 77 65  following a powe
0ab0: 72 20 6c 6f 73 65 2c 20 74 68 65 20 73 65 74 74  r lose, the sett
0ac0: 69 6e 67 20 6f 66 0a 5b 50 52 41 47 4d 41 20 73  ing of.[PRAGMA s
0ad0: 79 6e 63 68 72 6f 6e 6f 75 73 3d 46 55 4c 4c 5d  ynchronous=FULL]
0ae0: 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2e   is recommended.
0af0: 20 20 48 6f 77 65 76 65 72 2c 20 69 6e 20 5b 57    However, in [W
0b00: 41 4c 20 6d 6f 64 65 5d 2c 20 63 6f 6d 70 6c 65  AL mode], comple
0b10: 74 65 0a 64 61 74 61 62 61 73 65 20 69 6e 74 65  te.database inte
0b20: 67 72 69 74 79 20 69 73 20 67 75 61 72 61 6e 74  grity is guarant
0b30: 65 65 64 20 77 69 74 68 20 5b 50 52 41 47 4d 41  eed with [PRAGMA
0b40: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d 4e 4f 52   synchronous=NOR
0b50: 4d 41 4c 5d 2e 20 20 57 69 74 68 0a 5b 50 52 41  MAL].  With.[PRA
0b60: 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d  GMA synchronous=
0b70: 4e 4f 52 4d 41 4c 5d 20 69 6e 20 5b 57 41 4c 20  NORMAL] in [WAL 
0b80: 6d 6f 64 65 5d 2c 20 72 65 63 65 6e 74 20 63 68  mode], recent ch
0b90: 61 6e 67 65 73 20 74 6f 20 74 68 65 20 64 61 74  anges to the dat
0ba0: 61 62 61 73 65 20 6d 69 67 68 74 0a 62 65 20 72  abase might.be r
0bb0: 6f 6c 6c 65 64 20 62 61 63 6b 20 62 79 20 61 20  olled back by a 
0bc0: 70 6f 77 65 72 20 6c 6f 73 73 2c 20 62 75 74 20  power loss, but 
0bd0: 74 68 65 20 64 61 74 61 62 61 73 65 20 77 69 6c  the database wil
0be0: 6c 20 6e 6f 74 20 62 65 20 63 6f 72 72 75 70 74  l not be corrupt
0bf0: 65 64 2e 0a 46 75 72 74 68 65 72 6d 6f 72 65 2c  ed..Furthermore,
0c00: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d   transaction com
0c10: 6d 69 74 20 69 73 20 6d 75 63 68 20 66 61 73 74  mit is much fast
0c20: 65 72 20 69 6e 20 57 41 4c 20 6d 6f 64 65 20 75  er in WAL mode u
0c30: 73 69 6e 67 0a 73 79 6e 63 68 72 6f 6e 6f 75 73  sing.synchronous
0c40: 3d 4e 4f 52 4d 41 4c 20 74 68 61 6e 20 77 69 74  =NORMAL than wit
0c50: 68 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 79  h the default sy
0c60: 6e 63 68 72 6f 6e 6f 75 73 3d 46 55 4c 4c 2e 20  nchronous=FULL. 
0c70: 20 46 6f 72 20 74 68 65 73 65 0a 72 65 61 73 6f   For these.reaso
0c80: 6e 73 2c 20 69 74 20 69 73 20 72 65 63 6f 6d 6d  ns, it is recomm
0c90: 65 6e 64 65 64 20 74 68 61 74 20 74 68 65 20 73  ended that the s
0ca0: 79 6e 63 68 72 6f 6e 6f 75 73 20 73 65 74 74 69  ynchronous setti
0cb0: 6e 67 20 62 65 20 63 68 61 6e 67 65 64 20 66 72  ng be changed fr
0cc0: 6f 6d 0a 46 55 4c 4c 20 74 6f 20 4e 4f 52 4d 41  om.FULL to NORMA
0cd0: 4c 20 77 68 65 6e 20 73 77 69 74 63 68 69 6e 67  L when switching
0ce0: 20 74 6f 20 57 41 4c 20 6d 6f 64 65 2e 20 20 54   to WAL mode.  T
0cf0: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
0d00: 20 6f 70 74 69 6f 6e 20 77 69 6c 6c 0a 61 63 63   option will.acc
0d10: 6f 6d 70 6c 69 73 68 20 74 68 61 74 2e 0a 0a 3c  omplish that...<
0d20: 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45  li><p><b>[SQLITE
0d30: 5f 4c 49 4b 45 5f 44 4f 45 53 4e 54 5f 4d 41 54  _LIKE_DOESNT_MAT
0d40: 43 48 5f 42 4c 4f 42 53 5d 3c 2f 62 3e 2e 0a 48  CH_BLOBS]</b>..H
0d50: 69 73 74 6f 72 69 63 61 6c 6c 79 2c 20 53 51 4c  istorically, SQL
0d60: 69 74 65 20 68 61 73 20 61 6c 6c 6f 77 65 64 20  ite has allowed 
0d70: 42 4c 4f 42 20 6f 70 65 72 61 6e 64 73 20 74 6f  BLOB operands to
0d80: 20 74 68 65 20 5b 4c 49 4b 45 5d 20 61 6e 64 20   the [LIKE] and 
0d90: 5b 47 4c 4f 42 5d 0a 6f 70 65 72 61 74 6f 72 73  [GLOB].operators
0da0: 2e 20 20 42 75 74 20 68 61 76 69 6e 67 20 61 20  .  But having a 
0db0: 42 4c 4f 42 20 61 73 20 61 6e 20 6f 70 65 72 61  BLOB as an opera
0dc0: 6e 64 20 6f 66 20 5b 4c 49 4b 45 5d 20 6f 72 20  nd of [LIKE] or 
0dd0: 5b 47 4c 4f 42 5d 20 63 6f 6d 70 6c 69 63 61 74  [GLOB] complicat
0de0: 65 73 0a 61 6e 64 20 73 6c 6f 77 73 20 74 68 65  es.and slows the
0df0: 20 5b 4c 49 4b 45 20 6f 70 74 69 6d 69 7a 61 74   [LIKE optimizat
0e00: 69 6f 6e 5d 2e 20 20 57 68 65 6e 20 74 68 69 73  ion].  When this
0e10: 20 6f 70 74 69 6f 6e 20 69 73 20 73 65 74 2c 20   option is set, 
0e20: 69 74 20 6d 65 61 6e 73 20 74 68 61 74 0a 74 68  it means that.th
0e30: 65 20 4c 49 4b 45 20 61 6e 64 20 47 4c 4f 42 20  e LIKE and GLOB 
0e40: 6f 70 65 72 61 74 6f 72 73 20 61 6c 77 61 79 73  operators always
0e50: 20 72 65 74 75 72 6e 20 46 41 4c 53 45 20 69 66   return FALSE if
0e60: 20 65 69 74 68 65 72 20 6f 70 65 72 61 6e 64 20   either operand 
0e70: 69 73 20 61 20 42 4c 4f 42 2e 0a 54 68 61 74 20  is a BLOB..That 
0e80: 73 69 6d 70 6c 69 66 69 65 73 20 74 68 65 20 69  simplifies the i
0e90: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
0ea0: 20 74 68 65 20 5b 4c 49 4b 45 20 6f 70 74 69 6d   the [LIKE optim
0eb0: 69 7a 61 74 69 6f 6e 5d 20 61 6e 64 20 61 6c 6c  ization] and all
0ec0: 6f 77 73 0a 71 75 65 72 69 65 73 20 74 68 61 74  ows.queries that
0ed0: 20 75 73 65 20 74 68 65 20 5b 4c 49 4b 45 20 6f   use the [LIKE o
0ee0: 70 74 69 6d 69 7a 61 74 69 6f 6e 5d 20 74 6f 20  ptimization] to 
0ef0: 72 75 6e 20 66 61 73 74 65 72 2e 0a 0a 3c 6c 69  run faster...<li
0f00: 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 4d  ><p><b>[SQLITE_M
0f10: 41 58 5f 45 58 50 52 5f 44 45 50 54 48 3d 30 5d  AX_EXPR_DEPTH=0]
0f20: 3c 2f 62 3e 2e 0a 53 65 74 74 69 6e 67 20 74 68  </b>..Setting th
0f30: 65 20 6d 61 78 69 6d 75 6d 20 65 78 70 72 65 73  e maximum expres
0f40: 73 69 6f 6e 20 70 61 72 73 65 2d 74 72 65 65 20  sion parse-tree 
0f50: 64 65 70 74 68 20 74 6f 20 7a 65 72 6f 20 64 69  depth to zero di
0f60: 73 61 62 6c 65 73 20 61 6c 6c 20 63 68 65 63 6b  sables all check
0f70: 69 6e 67 0a 6f 66 20 74 68 65 20 65 78 70 72 65  ing.of the expre
0f80: 73 73 69 6f 6e 20 70 61 72 73 65 2d 74 72 65 65  ssion parse-tree
0f90: 20 64 65 70 74 68 2c 20 77 68 69 63 68 20 73 69   depth, which si
0fa0: 6d 70 6c 69 66 69 65 73 20 74 68 65 20 63 6f 64  mplifies the cod
0fb0: 65 20 72 65 73 75 6c 74 69 6e 67 20 69 6e 0a 66  e resulting in.f
0fc0: 61 73 74 65 72 20 65 78 65 63 75 74 69 6f 6e 2c  aster execution,
0fd0: 20 61 6e 64 20 68 65 6c 70 73 20 74 68 65 20 70   and helps the p
0fe0: 61 72 73 65 20 74 72 65 65 20 74 6f 20 75 73 65  arse tree to use
0ff0: 20 6c 65 73 73 20 6d 65 6d 6f 72 79 2e 0a 0a 3c   less memory...<
1000: 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45  li><p><b>[SQLITE
1010: 5f 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45 5d 3c  _OMIT_DECLTYPE]<
1020: 2f 62 3e 2e 0a 42 79 20 6f 6d 69 74 74 69 6e 67  /b>..By omitting
1030: 20 74 68 65 20 28 73 65 6c 64 6f 6d 2d 6e 65 65   the (seldom-nee
1040: 64 65 64 29 20 61 62 69 6c 69 74 79 20 74 6f 20  ded) ability to 
1050: 72 65 74 75 72 6e 20 74 68 65 20 64 65 63 6c 61  return the decla
1060: 72 65 64 20 74 79 70 65 20 6f 66 0a 63 6f 6c 75  red type of.colu
1070: 6d 6e 73 20 66 72 6f 6d 20 74 68 65 20 72 65 73  mns from the res
1080: 75 6c 74 20 73 65 74 20 6f 66 20 71 75 65 72 79  ult set of query
1090: 2c 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  , [prepared stat
10a0: 65 6d 65 6e 74 73 5d 20 63 61 6e 20 62 65 20 6d  ements] can be m
10b0: 61 64 65 0a 74 6f 20 63 6f 6e 73 75 6d 65 20 6c  ade.to consume l
10c0: 65 73 73 20 6d 65 6d 6f 72 79 2e 0a 0a 3c 6c 69  ess memory...<li
10d0: 3e 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 4f  ><p><b>[SQLITE_O
10e0: 4d 49 54 5f 44 45 50 52 45 43 41 54 45 44 5d 3c  MIT_DEPRECATED]<
10f0: 2f 62 3e 2e 0a 4f 6d 69 74 74 69 6e 67 20 64 65  /b>..Omitting de
1100: 70 72 65 63 61 74 65 64 20 69 6e 74 65 72 66 61  precated interfa
1110: 63 65 73 20 61 6e 64 20 66 65 61 74 75 72 65 73  ces and features
1120: 20 77 69 6c 6c 20 6e 6f 74 20 68 65 6c 70 20 53   will not help S
1130: 51 4c 69 74 65 20 74 6f 0a 72 75 6e 20 61 6e 79  QLite to.run any
1140: 20 66 61 73 74 65 72 2e 20 20 49 74 20 77 69 6c   faster.  It wil
1150: 6c 20 72 65 64 75 63 65 20 74 68 65 20 6c 69 62  l reduce the lib
1160: 72 61 72 79 20 66 6f 6f 74 70 72 69 6e 74 2c 20  rary footprint, 
1170: 68 6f 77 65 76 65 72 2e 20 20 41 6e 64 0a 69 74  however.  And.it
1180: 20 69 73 20 74 68 65 20 72 69 67 68 74 20 74 68   is the right th
1190: 69 6e 67 20 74 6f 20 64 6f 2e 0a 0a 3c 6c 69 3e  ing to do...<li>
11a0: 3c 70 3e 3c 62 3e 5b 53 51 4c 49 54 45 5f 4f 4d  <p><b>[SQLITE_OM
11b0: 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c  IT_PROGRESS_CALL
11c0: 42 41 43 4b 5d 3c 2f 62 3e 2e 0a 54 68 65 20 70  BACK]</b>..The p
11d0: 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72 20  rogress handler 
11e0: 63 61 6c 6c 62 61 63 6b 20 63 6f 75 6e 74 65 72  callback counter
11f0: 20 6d 75 73 74 20 62 65 20 63 68 65 63 6b 65 64   must be checked
1200: 20 69 6e 20 74 68 65 20 69 6e 6e 65 72 20 6c 6f   in the inner lo
1210: 6f 70 0a 6f 66 20 74 68 65 20 5b 62 79 74 65 63  op.of the [bytec
1220: 6f 64 65 20 65 6e 67 69 6e 65 5d 2e 20 20 42 79  ode engine].  By
1230: 20 6f 6d 69 74 74 69 6e 67 20 74 68 69 73 20 69   omitting this i
1240: 6e 74 65 72 66 61 63 65 2c 20 61 20 73 69 6e 67  nterface, a sing
1250: 6c 65 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 0a 69  le conditional.i
1260: 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74  s removed from t
1270: 68 65 20 69 6e 6e 65 72 20 6c 6f 6f 70 20 6f 66  he inner loop of
1280: 20 74 68 65 20 5b 62 79 74 65 63 6f 64 65 20 65   the [bytecode e
1290: 6e 67 69 6e 65 5d 2c 20 68 65 6c 70 69 6e 67 20  ngine], helping 
12a0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 0a 74  SQL statements.t
12b0: 6f 20 72 75 6e 20 73 6c 69 67 68 74 6c 79 20 66  o run slightly f
12c0: 61 73 74 65 72 2e 0a 0a 3c 6c 69 3e 3c 70 3e 3c  aster...<li><p><
12d0: 62 3e 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  b>[SQLITE_OMIT_S
12e0: 48 41 52 45 44 5f 43 41 43 48 45 5d 3c 2f 62 3e  HARED_CACHE]</b>
12f0: 2e 0a 4f 6d 69 74 74 69 6e 67 20 74 68 65 20 70  ..Omitting the p
1300: 6f 73 73 69 62 69 6c 69 74 79 20 6f 66 20 75 73  ossibility of us
1310: 69 6e 67 20 5b 73 68 61 72 65 64 20 63 61 63 68  ing [shared cach
1320: 65 5d 20 61 6c 6c 6f 77 73 20 6d 61 6e 79 20 63  e] allows many c
1330: 6f 6e 64 69 74 69 6f 6e 61 6c 73 0a 69 6e 20 70  onditionals.in p
1340: 65 72 66 6f 72 6d 61 6e 63 65 2d 63 72 69 74 69  erformance-criti
1350: 63 61 6c 20 73 65 63 74 69 6f 6e 73 20 6f 66 20  cal sections of 
1360: 74 68 65 20 63 6f 64 65 20 74 6f 20 62 65 20 65  the code to be e
1370: 6c 69 6d 69 6e 61 74 65 64 2e 20 20 54 68 69 73  liminated.  This
1380: 20 63 61 6e 0a 67 69 76 65 20 61 20 6e 6f 74 69   can.give a noti
1390: 63 61 62 6c 65 20 69 6d 70 72 6f 76 65 6d 65 6e  cable improvemen
13a0: 74 20 69 6e 20 70 65 72 66 6f 72 6d 61 6e 63 65  t in performance
13b0: 2e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 5b 53 51  ...<li><p><b>[SQ
13c0: 4c 49 54 45 5f 55 53 45 5f 41 4c 4c 4f 43 41 5d  LITE_USE_ALLOCA]
13d0: 3c 2f 62 3e 2e 0a 4d 61 6b 65 20 75 73 65 20 6f  </b>..Make use o
13e0: 66 20 61 6c 6c 6f 63 61 28 29 20 66 6f 72 20 64  f alloca() for d
13f0: 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c 6c 6f 63  ynamically alloc
1400: 61 74 69 6e 67 20 74 65 6d 70 6f 72 61 72 79 20  ating temporary 
1410: 73 74 61 63 6b 20 73 70 61 63 65 20 66 6f 72 20  stack space for 
1420: 0a 75 73 65 20 77 69 74 68 69 6e 20 61 20 73 69  .use within a si
1430: 6e 67 6c 65 20 66 75 6e 63 74 69 6f 6e 2c 20 6f  ngle function, o
1440: 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 73  n systems that s
1450: 75 70 70 6f 72 74 20 61 6c 6c 6f 63 61 28 29 2e  upport alloca().
1460: 20 20 57 69 74 68 6f 75 74 0a 74 68 69 73 20 6f    Without.this o
1470: 70 74 69 6f 6e 2c 20 74 65 6d 70 6f 72 61 72 79  ption, temporary
1480: 20 73 70 61 63 65 20 69 73 20 61 6c 6c 6f 63 61   space is alloca
1490: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 68 65 61  ted from the hea
14a0: 70 2e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 57 68 65  p..</ol>..<p>Whe
14b0: 6e 20 61 6c 6c 20 6f 66 20 74 68 65 20 72 65 63  n all of the rec
14c0: 6f 6d 6d 65 6e 64 65 64 20 63 6f 6d 70 69 6c 65  ommended compile
14d0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 62  -time options ab
14e0: 6f 76 65 20 61 72 65 20 75 73 65 64 2c 0a 74 68  ove are used,.th
14f0: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
1500: 20 77 69 6c 6c 20 62 65 20 61 70 70 72 6f 78 69   will be approxi
1510: 6d 61 74 65 6c 79 20 33 25 20 73 6d 61 6c 6c 65  mately 3% smalle
1520: 72 20 61 6e 64 20 75 73 65 20 61 62 6f 75 74 20  r and use about 
1530: 35 25 20 66 65 77 65 72 0a 43 50 55 20 63 79 63  5% fewer.CPU cyc
1540: 6c 65 73 2e 20 20 53 6f 20 74 68 65 73 65 20 6f  les.  So these o
1550: 70 74 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 6d 61  ptions do not ma
1560: 6b 65 20 61 20 68 75 67 65 20 64 69 66 66 65 72  ke a huge differ
1570: 65 6e 63 65 2e 20 20 42 75 74 20 69 6e 20 0a 73  ence.  But in .s
1580: 6f 6d 65 20 64 65 73 69 67 6e 20 73 69 74 75 61  ome design situa
1590: 74 69 6f 6e 73 2c 20 65 76 65 72 79 20 6c 69 74  tions, every lit
15a0: 74 6c 65 20 62 69 74 20 68 65 6c 70 73 2e 0a 0a  tle bit helps...
15b0: 3c 61 20 6e 61 6d 65 3d 22 6f 73 63 6f 6e 66 69  <a name="osconfi
15c0: 67 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 50 6c 61  g"></a>.<h1> Pla
15d0: 74 66 6f 72 6d 20 43 6f 6e 66 69 67 75 72 61 74  tform Configurat
15e0: 69 6f 6e 3c 2f 68 31 3e 0a 0a 3c 74 63 6c 3e 0a  ion</h1>..<tcl>.
15f0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
1600: 5f 48 41 56 45 5f 53 51 4c 49 54 45 5f 43 4f 4e  _HAVE_SQLITE_CON
1610: 46 49 47 5f 48 7d 20 7b 0a 20 20 49 66 20 74 68  FIG_H} {.  If th
1620: 65 20 5f 48 41 56 45 5f 53 51 4c 49 54 45 5f 43  e _HAVE_SQLITE_C
1630: 4f 4e 46 49 47 5f 48 20 6d 61 63 72 6f 20 69 73  ONFIG_H macro is
1640: 20 64 65 66 69 6e 65 64 0a 20 20 74 68 65 6e 20   defined.  then 
1650: 74 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63  the SQLite sourc
1660: 65 20 63 6f 64 65 20 77 69 6c 6c 20 61 74 74 65  e code will atte
1670: 6d 70 74 20 74 6f 20 23 69 6e 63 6c 75 64 65 20  mpt to #include 
1680: 61 20 66 69 6c 65 20 6e 61 6d 65 64 20 22 63 6f  a file named "co
1690: 6e 66 69 67 2e 68 22 2e 0a 20 20 54 68 65 20 22  nfig.h"..  The "
16a0: 63 6f 6e 66 69 67 2e 68 22 20 66 69 6c 65 20 75  config.h" file u
16b0: 73 75 61 6c 6c 79 20 63 6f 6e 74 61 69 6e 73 20  sually contains 
16c0: 6f 74 68 65 72 20 63 6f 6e 66 69 67 75 72 61 74  other configurat
16d0: 69 6f 6e 20 6f 70 74 69 6f 6e 73 2c 20 65 73 70  ion options, esp
16e0: 65 63 69 61 6c 6c 79 0a 20 20 22 48 41 56 45 5f  ecially.  "HAVE_
16f0: 3c 69 3e 49 4e 54 45 52 46 41 43 45 3c 2f 69 3e  <i>INTERFACE</i>
1700: 22 20 74 79 70 65 20 6f 70 74 69 6f 6e 73 20 67  " type options g
1710: 65 6e 65 72 61 74 65 64 20 62 79 20 61 75 74 6f  enerated by auto
1720: 63 6f 6e 66 20 73 63 72 69 70 74 73 2e 0a 7d 0a  conf scripts..}.
1730: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
1740: 7b 48 41 56 45 5f 46 44 41 54 41 53 59 4e 43 7d  {HAVE_FDATASYNC}
1750: 20 7b 0a 20 20 49 66 20 74 68 65 20 48 41 56 45   {.  If the HAVE
1760: 5f 46 44 41 54 41 53 59 4e 43 20 63 6f 6d 70 69  _FDATASYNC compi
1770: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
1780: 73 20 74 72 75 65 2c 20 74 68 65 6e 20 74 68 65  s true, then the
1790: 20 64 65 66 61 75 6c 74 20 5b 56 46 53 5d 0a 20   default [VFS]. 
17a0: 20 66 6f 72 20 75 6e 69 78 20 73 79 73 74 65 6d   for unix system
17b0: 73 20 77 69 6c 6c 20 61 74 74 65 6d 70 74 20 74  s will attempt t
17c0: 6f 20 75 73 65 20 66 64 61 74 61 73 79 6e 63 28  o use fdatasync(
17d0: 29 20 69 6e 73 74 65 61 64 20 6f 66 20 66 73 79  ) instead of fsy
17e0: 6e 63 28 29 20 77 68 65 72 65 0a 20 20 61 70 70  nc() where.  app
17f0: 72 6f 70 72 69 61 74 65 2e 20 20 49 66 20 74 68  ropriate.  If th
1800: 69 73 20 66 6c 61 67 20 69 73 20 6d 69 73 73 69  is flag is missi
1810: 6e 67 20 6f 72 20 66 61 6c 73 65 2c 20 74 68 65  ng or false, the
1820: 6e 20 66 73 79 6e 63 28 29 20 69 73 20 61 6c 77  n fsync() is alw
1830: 61 79 73 20 75 73 65 64 2e 0a 7d 0a 0a 43 4f 4d  ays used..}..COM
1840: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56  PILE_OPTION {HAV
1850: 45 5f 47 4d 54 49 4d 45 5f 52 7d 20 7b 0a 20 20  E_GMTIME_R} {.  
1860: 49 66 20 74 68 65 20 48 41 56 45 5f 47 4d 54 49  If the HAVE_GMTI
1870: 4d 45 5f 52 20 6f 70 74 69 6f 6e 20 69 73 20 74  ME_R option is t
1880: 72 75 65 20 61 6e 64 20 69 66 20 5b 53 51 4c 49  rue and if [SQLI
1890: 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45  TE_OMIT_DATETIME
18a0: 5f 46 55 4e 43 53 5d 20 69 73 20 74 72 75 65 2c  _FUNCS] is true,
18b0: 0a 20 20 74 68 65 6e 20 74 68 65 20 43 55 52 52  .  then the CURR
18c0: 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e  ENT_TIME, CURREN
18d0: 54 5f 44 41 54 45 2c 20 61 6e 64 20 43 55 52 52  T_DATE, and CURR
18e0: 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 6b 65  ENT_TIMESTAMP ke
18f0: 79 77 6f 72 64 73 20 77 69 6c 6c 20 75 73 65 0a  ywords will use.
1900: 20 20 74 68 65 20 74 68 72 65 61 64 73 61 66 65    the threadsafe
1910: 20 22 67 6d 74 69 6d 65 5f 72 28 29 22 20 69 6e   "gmtime_r()" in
1920: 74 65 72 66 61 63 65 20 72 61 74 68 65 72 20 74  terface rather t
1930: 68 61 6e 20 22 67 6d 74 69 6d 65 28 29 22 2e 20  han "gmtime()". 
1940: 20 49 6e 20 74 68 65 20 75 73 75 61 6c 20 63 61   In the usual ca
1950: 73 65 0a 20 20 77 68 65 72 65 20 5b 53 51 4c 49  se.  where [SQLI
1960: 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45  TE_OMIT_DATETIME
1970: 5f 46 55 4e 43 53 5d 20 69 73 20 6e 6f 74 20 64  _FUNCS] is not d
1980: 65 66 69 6e 65 64 20 6f 72 20 69 73 20 66 61 6c  efined or is fal
1990: 73 65 2c 20 74 68 65 6e 20 74 68 65 0a 20 20 62  se, then the.  b
19a0: 75 69 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e  uilt-in [date an
19b0: 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73  d time functions
19c0: 5d 20 61 72 65 20 75 73 65 64 20 74 6f 20 69 6d  ] are used to im
19d0: 70 6c 65 6d 65 6e 74 20 74 68 65 20 43 55 52 52  plement the CURR
19e0: 45 4e 54 5f 54 49 4d 45 2c 0a 20 20 43 55 52 52  ENT_TIME,.  CURR
19f0: 45 4e 54 5f 44 41 54 45 2c 20 61 6e 64 20 43 55  ENT_DATE, and CU
1a00: 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20  RRENT_TIMESTAMP 
1a10: 6b 65 79 77 6f 72 64 73 20 61 6e 64 20 6e 65 69  keywords and nei
1a20: 74 68 65 72 20 67 6d 74 69 6d 65 5f 72 28 29 20  ther gmtime_r() 
1a30: 6e 6f 72 0a 20 20 67 6d 74 69 6d 65 28 29 20 69  nor.  gmtime() i
1a40: 73 20 65 76 65 72 20 63 61 6c 6c 65 64 2e 0a 7d  s ever called..}
1a50: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1a60: 20 7b 48 41 56 45 5f 49 53 4e 41 4e 7d 20 7b 0a   {HAVE_ISNAN} {.
1a70: 20 20 49 66 20 74 68 65 20 48 41 56 45 5f 49 53    If the HAVE_IS
1a80: 4e 41 4e 20 6f 70 74 69 6f 6e 20 69 73 20 74 72  NAN option is tr
1a90: 75 65 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20  ue, then SQLite 
1aa0: 69 6e 76 6f 6b 65 73 20 74 68 65 20 73 79 73 74  invokes the syst
1ab0: 65 6d 20 6c 69 62 72 61 72 79 20 69 73 6e 61 6e  em library isnan
1ac0: 28 29 0a 20 20 66 75 6e 63 74 69 6f 6e 20 74 6f  ().  function to
1ad0: 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 61 20   determine if a 
1ae0: 64 6f 75 62 6c 65 2d 70 72 65 63 69 73 69 6f 6e  double-precision
1af0: 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
1b00: 76 61 6c 75 65 20 69 73 20 61 20 4e 61 4e 2e 0a  value is a NaN..
1b10: 20 20 49 66 20 48 41 56 45 5f 49 53 4e 41 4e 20    If HAVE_ISNAN 
1b20: 69 73 20 75 6e 64 65 66 69 6e 65 64 20 6f 72 20  is undefined or 
1b30: 66 61 6c 73 65 2c 20 74 68 65 6e 20 53 51 4c 69  false, then SQLi
1b40: 74 65 20 73 75 62 73 74 69 74 75 74 65 73 20 69  te substitutes i
1b50: 74 73 20 6f 77 6e 20 68 6f 6d 65 2d 67 72 6f 77  ts own home-grow
1b60: 6e 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  n.  implementati
1b70: 6f 6e 20 6f 66 20 69 73 6e 61 6e 28 29 2e 0a 7d  on of isnan()..}
1b80: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1b90: 20 7b 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45   {HAVE_LOCALTIME
1ba0: 5f 52 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48  _R} {.  If the H
1bb0: 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f 52 20  AVE_LOCALTIME_R 
1bc0: 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20  option is true, 
1bd0: 74 68 65 6e 20 53 51 4c 69 74 65 20 75 73 65 73  then SQLite uses
1be0: 20 74 68 65 20 74 68 72 65 61 64 73 61 66 65 0a   the threadsafe.
1bf0: 20 20 6c 6f 63 61 6c 74 69 6d 65 5f 72 28 29 20    localtime_r() 
1c00: 6c 69 62 72 61 72 79 20 72 6f 75 74 69 6e 65 20  library routine 
1c10: 69 6e 73 74 65 61 64 20 6f 66 20 6c 6f 63 61 6c  instead of local
1c20: 74 69 6d 65 28 29 0a 20 20 74 6f 20 68 65 6c 70  time().  to help
1c30: 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 5b   implement the [
1c40: 6c 6f 63 61 6c 74 69 6d 65 20 6d 6f 64 69 66 69  localtime modifi
1c50: 65 72 5d 0a 20 20 74 6f 20 74 68 65 20 62 75 69  er].  to the bui
1c60: 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e 64 20  lt-in [date and 
1c70: 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d 2e  time functions].
1c80: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
1c90: 4f 4e 20 7b 48 41 56 45 5f 4c 4f 43 41 4c 54 49  ON {HAVE_LOCALTI
1ca0: 4d 45 5f 53 7d 20 7b 0a 20 20 49 66 20 74 68 65  ME_S} {.  If the
1cb0: 20 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f   HAVE_LOCALTIME_
1cc0: 53 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65  S option is true
1cd0: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 75 73  , then SQLite us
1ce0: 65 73 20 74 68 65 20 74 68 72 65 61 64 73 61 66  es the threadsaf
1cf0: 65 0a 20 20 6c 6f 63 61 6c 74 69 6d 65 5f 73 28  e.  localtime_s(
1d00: 29 20 6c 69 62 72 61 72 79 20 72 6f 75 74 69 6e  ) library routin
1d10: 65 20 69 6e 73 74 65 61 64 20 6f 66 20 6c 6f 63  e instead of loc
1d20: 61 6c 74 69 6d 65 28 29 0a 20 20 74 6f 20 68 65  altime().  to he
1d30: 6c 70 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65  lp implement the
1d40: 20 5b 6c 6f 63 61 6c 74 69 6d 65 20 6d 6f 64 69   [localtime modi
1d50: 66 69 65 72 5d 0a 20 20 74 6f 20 74 68 65 20 62  fier].  to the b
1d60: 75 69 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e  uilt-in [date an
1d70: 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73  d time functions
1d80: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
1d90: 54 49 4f 4e 20 7b 48 41 56 45 5f 4d 41 4c 4c 4f  TION {HAVE_MALLO
1da0: 43 5f 55 53 41 42 4c 45 5f 53 49 5a 45 7d 20 7b  C_USABLE_SIZE} {
1db0: 0a 20 20 49 66 20 74 68 65 20 48 41 56 45 5f 4d  .  If the HAVE_M
1dc0: 41 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f 53 49 5a  ALLOC_USABLE_SIZ
1dd0: 45 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65  E option is true
1de0: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 74 72  , then SQLite tr
1df0: 69 65 73 20 75 73 65 73 20 74 68 65 0a 20 20 6d  ies uses the.  m
1e00: 61 6c 6c 6f 63 5f 75 73 61 62 6c 65 5f 73 69 7a  alloc_usable_siz
1e10: 65 28 29 20 69 6e 74 65 72 66 61 63 65 20 74 6f  e() interface to
1e20: 20 66 69 6e 64 20 74 68 65 20 73 69 7a 65 20 6f   find the size o
1e30: 66 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  f a memory alloc
1e40: 61 74 69 6f 6e 20 6f 62 74 61 69 6e 65 64 0a 20  ation obtained. 
1e50: 20 66 72 6f 6d 20 74 68 65 20 73 74 61 6e 64 61   from the standa
1e60: 72 64 2d 6c 69 62 72 61 72 79 20 6d 61 6c 6c 6f  rd-library mallo
1e70: 63 28 29 20 6f 72 20 72 65 61 6c 6c 6f 63 28 29  c() or realloc()
1e80: 20 72 6f 75 74 69 6e 65 73 2e 20 20 54 68 69 73   routines.  This
1e90: 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 0a   option is only.
1ea0: 20 20 61 70 70 6c 69 63 61 62 6c 65 20 69 66 20    applicable if 
1eb0: 74 68 65 20 73 74 61 6e 64 61 72 64 2d 6c 69 62  the standard-lib
1ec0: 72 61 72 79 20 6d 61 6c 6c 6f 63 28 29 20 69 73  rary malloc() is
1ed0: 20 75 73 65 64 2e 20 20 4f 6e 20 41 70 70 6c 65   used.  On Apple
1ee0: 20 73 79 73 74 65 6d 73 2c 0a 20 20 22 7a 6f 6e   systems,.  "zon
1ef0: 65 20 6d 61 6c 6c 6f 63 22 20 69 73 20 75 73 65  e malloc" is use
1f00: 64 20 69 6e 73 74 65 61 64 2c 20 61 6e 64 20 73  d instead, and s
1f10: 6f 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  o this option is
1f20: 20 6e 6f 74 20 61 70 70 6c 69 63 61 62 6c 65 2e   not applicable.
1f30: 20 20 41 6e 64 2c 20 6f 66 0a 20 20 63 6f 75 72    And, of.  cour
1f40: 73 65 2c 20 69 66 20 74 68 65 20 61 70 70 6c 69  se, if the appli
1f50: 63 61 74 69 6f 6e 20 73 75 70 70 6c 69 65 73 20  cation supplies 
1f60: 69 74 73 20 6f 77 6e 20 6d 61 6c 6c 6f 63 20 69  its own malloc i
1f70: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 75 73  mplementation us
1f80: 69 6e 67 0a 20 20 5b 53 51 4c 49 54 45 5f 43 4f  ing.  [SQLITE_CO
1f90: 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 20 74 68 65  NFIG_MALLOC] the
1fa0: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 68 61  n this option ha
1fb0: 73 20 6e 6f 20 65 66 66 65 63 74 2e 0a 20 20 3c  s no effect..  <
1fc0: 70 3e 0a 20 20 49 66 20 74 68 65 20 48 41 56 45  p>.  If the HAVE
1fd0: 5f 4d 41 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f 53  _MALLOC_USABLE_S
1fe0: 49 5a 45 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6d  IZE option is om
1ff0: 69 74 74 65 64 20 6f 72 20 69 73 20 66 61 6c 73  itted or is fals
2000: 65 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 0a  e, then SQLite .
2010: 20 20 75 73 65 73 20 61 20 77 72 61 70 70 65 72    uses a wrapper
2020: 20 61 72 6f 75 6e 64 20 73 79 73 74 65 6d 20 6d   around system m
2030: 61 6c 6c 6f 63 28 29 20 61 6e 64 20 72 65 61 6c  alloc() and real
2040: 6c 6f 63 28 29 20 74 68 61 74 20 65 6e 6c 61 72  loc() that enlar
2050: 67 65 73 20 65 61 63 68 20 61 6c 6c 6f 63 61 74  ges each allocat
2060: 69 6f 6e 0a 20 20 62 79 20 38 20 62 79 74 65 73  ion.  by 8 bytes
2070: 20 61 6e 64 20 77 72 69 74 65 73 20 74 68 65 20   and writes the 
2080: 73 69 7a 65 20 6f 66 20 74 68 65 20 61 6c 6c 6f  size of the allo
2090: 63 61 74 69 6f 6e 20 69 6e 20 74 68 65 20 69 6e  cation in the in
20a0: 69 74 69 61 6c 20 38 20 62 79 74 65 73 2c 20 61  itial 8 bytes, a
20b0: 6e 64 0a 20 20 74 68 65 6e 20 53 51 4c 69 74 65  nd.  then SQLite
20c0: 20 61 6c 73 6f 20 69 6d 70 6c 65 6d 65 6e 74 73   also implements
20d0: 20 69 74 73 20 6f 77 6e 20 68 6f 6d 65 2d 67 72   its own home-gr
20e0: 6f 77 6e 20 76 65 72 73 69 6f 6e 20 6f 66 20 6d  own version of m
20f0: 61 6c 6c 6f 63 5f 75 73 61 62 6c 65 5f 73 69 7a  alloc_usable_siz
2100: 65 28 29 0a 20 20 74 68 61 74 20 63 6f 6e 73 75  e().  that consu
2110: 6c 74 73 20 74 68 61 74 20 38 2d 62 79 74 65 20  lts that 8-byte 
2120: 70 72 65 66 69 78 20 74 6f 20 66 69 6e 64 20 74  prefix to find t
2130: 68 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69  he allocation si
2140: 7a 65 2e 20 20 54 68 69 73 20 61 70 70 72 6f 61  ze.  This approa
2150: 63 68 0a 20 20 77 6f 72 6b 73 20 62 75 74 20 69  ch.  works but i
2160: 74 20 69 73 20 73 75 62 6f 70 74 69 6d 61 6c 2e  t is suboptimal.
2170: 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 61    Applications a
2180: 72 65 20 65 6e 63 6f 75 72 61 67 65 64 20 74 6f  re encouraged to
2190: 20 75 73 65 0a 20 20 48 41 56 45 5f 4d 41 4c 4c   use.  HAVE_MALL
21a0: 4f 43 5f 55 53 41 42 4c 45 5f 53 49 5a 45 20 77  OC_USABLE_SIZE w
21b0: 68 65 6e 65 76 65 72 20 70 6f 73 73 69 62 6c 65  henever possible
21c0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
21d0: 49 4f 4e 20 7b 48 41 56 45 5f 53 54 52 43 48 52  ION {HAVE_STRCHR
21e0: 4e 55 4c 7d 20 7b 0a 20 20 49 66 20 74 68 65 20  NUL} {.  If the 
21f0: 48 41 56 45 5f 53 54 52 43 48 52 4e 55 4c 20 6f  HAVE_STRCHRNUL o
2200: 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20 74  ption is true, t
2210: 68 65 6e 20 53 51 4c 69 74 65 20 75 73 65 73 20  hen SQLite uses 
2220: 74 68 65 20 73 74 72 63 68 72 6e 75 6c 28 29 20  the strchrnul() 
2230: 6c 69 62 72 61 72 79 0a 20 20 66 75 6e 63 74 69  library.  functi
2240: 6f 6e 2e 20 20 49 66 20 74 68 69 73 20 6f 70 74  on.  If this opt
2250: 69 6f 6e 20 69 73 20 6d 69 73 73 69 6e 67 20 6f  ion is missing o
2260: 72 20 66 61 6c 73 65 2c 20 74 68 65 6e 20 53 51  r false, then SQ
2270: 4c 69 74 65 20 73 75 62 73 74 69 74 75 74 65 73  Lite substitutes
2280: 20 69 74 73 20 6f 77 6e 0a 20 20 68 6f 6d 65 2d   its own.  home-
2290: 67 72 6f 77 6e 20 69 6d 70 6c 65 6d 65 6e 74 61  grown implementa
22a0: 74 69 6f 6e 20 6f 66 20 73 74 72 63 68 72 6e 75  tion of strchrnu
22b0: 6c 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  l()..}..COMPILE_
22c0: 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f 55 53 4c  OPTION {HAVE_USL
22d0: 45 45 50 7d 20 7b 0a 20 20 49 66 20 74 68 65 20  EEP} {.  If the 
22e0: 48 41 56 45 5f 55 53 4c 45 45 50 20 6f 70 74 69  HAVE_USLEEP opti
22f0: 6f 6e 20 69 73 20 74 72 75 65 2c 20 74 68 65 6e  on is true, then
2300: 20 74 68 65 20 64 65 66 61 75 6c 74 20 75 6e 69   the default uni
2310: 78 20 56 46 53 20 75 73 65 73 20 74 68 65 0a 20  x VFS uses the. 
2320: 20 75 73 6c 65 65 70 28 29 20 73 79 73 74 65 6d   usleep() system
2330: 20 63 61 6c 6c 20 74 6f 20 69 6d 70 6c 65 6d 65   call to impleme
2340: 6e 74 20 74 68 65 20 78 53 6c 65 65 70 20 6d 65  nt the xSleep me
2350: 74 68 6f 64 2e 20 20 49 66 20 74 68 69 73 20 6f  thod.  If this o
2360: 70 74 69 6f 6e 20 69 73 0a 20 20 75 6e 64 65 66  ption is.  undef
2370: 69 6e 65 64 20 6f 72 20 66 61 6c 73 65 2c 20 74  ined or false, t
2380: 68 65 6e 20 78 53 6c 65 65 70 20 6f 6e 20 75 6e  hen xSleep on un
2390: 69 78 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65  ix is implemente
23a0: 64 20 75 73 69 6e 67 20 73 6c 65 65 70 28 29 20  d using sleep() 
23b0: 77 68 69 63 68 0a 20 20 6d 65 61 6e 73 20 74 68  which.  means th
23c0: 61 74 20 5b 73 71 6c 69 74 65 33 5f 73 6c 65 65  at [sqlite3_slee
23d0: 70 28 29 5d 20 77 69 6c 6c 20 68 61 76 65 20 61  p()] will have a
23e0: 20 6d 69 6e 69 6d 75 6d 20 77 61 69 74 20 69 6e   minimum wait in
23f0: 74 65 72 76 61 6c 20 6f 66 20 31 30 30 30 0a 20  terval of 1000. 
2400: 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 72 65   milliseconds re
2410: 67 61 72 64 6c 65 73 73 20 6f 66 20 69 74 73 20  gardless of its 
2420: 61 72 67 75 6d 65 6e 74 2e 20 20 0a 7d 0a 0a 43  argument.  .}..C
2430: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48  OMPILE_OPTION {H
2440: 41 56 45 5f 55 54 49 4d 45 7d 20 7b 0a 20 20 49  AVE_UTIME} {.  I
2450: 66 20 74 68 65 20 48 41 56 45 5f 55 54 49 4d 45  f the HAVE_UTIME
2460: 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c   option is true,
2470: 20 74 68 65 6e 20 74 68 65 20 62 75 69 6c 74 2d   then the built-
2480: 69 6e 20 62 75 74 20 6e 6f 6e 2d 73 74 61 6e 64  in but non-stand
2490: 61 72 64 0a 20 20 22 75 6e 69 78 2d 64 6f 74 66  ard.  "unix-dotf
24a0: 69 6c 65 22 20 56 46 53 20 77 69 6c 6c 20 75 73  ile" VFS will us
24b0: 65 20 74 68 65 20 75 74 69 6d 65 28 29 20 73 79  e the utime() sy
24c0: 73 74 65 6d 20 63 61 6c 6c 2c 20 69 6e 73 74 65  stem call, inste
24d0: 61 64 20 6f 66 20 75 74 69 6d 65 73 28 29 2c 0a  ad of utimes(),.
24e0: 20 20 74 6f 20 73 65 74 20 74 68 65 20 6c 61 73    to set the las
24f0: 74 20 61 63 63 65 73 73 20 74 69 6d 65 20 6f 6e  t access time on
2500: 20 74 68 65 20 6c 6f 63 6b 20 66 69 6c 65 2e 0a   the lock file..
2510: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
2520: 4e 20 7b 53 51 4c 49 54 45 5f 42 59 54 45 4f 52  N {SQLITE_BYTEOR
2530: 44 45 52 3d 3c 69 3e 28 30 7c 31 32 33 34 7c 34  DER=<i>(0|1234|4
2540: 33 32 31 29 3c 2f 69 3e 7d 20 7b 0a 20 20 53 51  321)</i>} {.  SQ
2550: 4c 69 74 65 20 6e 65 65 64 73 20 74 6f 20 6b 6e  Lite needs to kn
2560: 6f 77 20 69 66 20 74 68 65 20 6e 61 74 69 76 65  ow if the native
2570: 20 62 79 74 65 20 6f 72 64 65 72 20 6f 66 20 74   byte order of t
2580: 68 65 20 74 61 72 67 65 74 20 43 50 55 20 69 73  he target CPU is
2590: 0a 20 20 62 69 67 2d 65 6e 64 69 61 6e 20 6f 72  .  big-endian or
25a0: 20 6c 69 74 74 6c 65 2d 65 6e 64 69 6e 67 2e 20   little-ending. 
25b0: 20 54 68 65 20 53 51 4c 49 54 45 5f 42 59 54 45   The SQLITE_BYTE
25c0: 4f 52 44 45 52 20 70 72 65 70 72 6f 63 65 73 73  ORDER preprocess
25d0: 6f 72 20 69 73 20 73 65 74 0a 20 20 74 6f 20 34  or is set.  to 4
25e0: 33 32 31 20 66 6f 72 20 62 69 67 2d 65 6e 64 69  321 for big-endi
25f0: 61 6e 20 6d 61 63 68 69 6e 65 73 20 61 6e 64 20  an machines and 
2600: 31 32 33 34 20 66 6f 72 20 6c 69 74 74 6c 65 2d  1234 for little-
2610: 65 6e 64 69 61 6e 20 6d 61 63 68 69 6e 65 73 2c  endian machines,
2620: 20 6f 72 0a 20 20 69 74 20 63 61 6e 20 62 65 20   or.  it can be 
2630: 30 20 74 6f 20 6d 65 61 6e 20 74 68 61 74 20 74  0 to mean that t
2640: 68 65 20 62 79 74 65 20 6f 72 64 65 72 20 6d 75  he byte order mu
2650: 73 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  st be determined
2660: 20 61 74 20 72 75 6e 2d 74 69 6d 65 2e 0a 20 20   at run-time..  
2670: 54 68 65 72 65 20 61 72 65 20 23 69 66 64 65 66  There are #ifdef
2680: 73 20 69 6e 20 74 68 65 20 63 6f 64 65 20 74 68  s in the code th
2690: 61 74 20 73 65 74 20 53 51 4c 49 54 45 5f 42 59  at set SQLITE_BY
26a0: 54 45 4f 52 44 45 52 20 61 75 74 6f 6d 61 74 69  TEORDER automati
26b0: 63 61 6c 6c 79 0a 20 20 66 6f 72 20 61 6c 6c 20  cally.  for all 
26c0: 63 6f 6d 6d 6f 6e 20 70 6c 61 74 66 6f 72 6d 73  common platforms
26d0: 20 61 6e 64 20 63 6f 6d 70 69 6c 65 72 73 2e 20   and compilers. 
26e0: 20 48 6f 77 65 76 65 72 2c 20 69 74 20 6d 61 79   However, it may
26f0: 20 62 65 20 61 64 76 61 6e 74 61 67 65 6f 75 73   be advantageous
2700: 0a 20 20 74 6f 20 73 65 74 20 53 51 4c 49 54 45  .  to set SQLITE
2710: 5f 42 59 54 45 4f 52 44 45 52 20 61 70 70 72 6f  _BYTEORDER appro
2720: 70 72 69 61 74 65 6c 79 20 77 68 65 6e 20 63 6f  priately when co
2730: 6d 70 69 6c 69 6e 67 20 53 51 4c 69 74 65 20 66  mpiling SQLite f
2740: 6f 72 20 6f 62 73 63 75 72 65 0a 20 20 74 61 72  or obscure.  tar
2750: 67 65 74 73 2e 20 20 49 66 20 74 68 65 20 74 61  gets.  If the ta
2760: 72 67 65 74 20 62 79 74 65 20 6f 72 64 65 72 20  rget byte order 
2770: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
2780: 69 6e 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d  ined at compile-
2790: 74 69 6d 65 2c 0a 20 20 74 68 65 6e 20 53 51 4c  time,.  then SQL
27a0: 69 74 65 20 66 61 6c 6c 73 20 62 61 63 6b 20 74  ite falls back t
27b0: 6f 20 64 6f 69 6e 67 20 72 75 6e 2d 74 69 6d 65  o doing run-time
27c0: 20 63 68 65 63 6b 73 2c 20 77 68 69 63 68 20 61   checks, which a
27d0: 6c 77 61 79 73 20 77 6f 72 6b 2c 20 74 68 6f 75  lways work, thou
27e0: 67 68 0a 20 20 77 69 74 68 20 61 20 73 6d 61 6c  gh.  with a smal
27f0: 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65  l performance pe
2800: 6e 61 6c 74 79 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a  nalty..}.</tcl>.
2810: 0a 3c 61 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c  .<a name="defaul
2820: 74 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 4f 70  ts"></a>.<h1> Op
2830: 74 69 6f 6e 73 20 54 6f 20 53 65 74 20 44 65 66  tions To Set Def
2840: 61 75 6c 74 20 50 61 72 61 6d 65 74 65 72 20 56  ault Parameter V
2850: 61 6c 75 65 73 3c 2f 68 31 3e 0a 0a 3c 74 63 6c  alues</h1>..<tcl
2860: 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  >..COMPILE_OPTIO
2870: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
2880: 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45  T_AUTOMATIC_INDE
2890: 58 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26  X=<i>&lt;0 or 1&
28a0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
28b0: 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e  s macro determin
28c0: 65 73 20 74 68 65 20 69 6e 69 74 69 61 6c 20 73  es the initial s
28d0: 65 74 74 69 6e 67 20 66 6f 72 20 5b 50 52 41 47  etting for [PRAG
28e0: 4d 41 20 61 75 74 6f 6d 61 74 69 63 5f 69 6e 64  MA automatic_ind
28f0: 65 78 5d 0a 20 20 66 6f 72 20 6e 65 77 6c 79 20  ex].  for newly 
2900: 6f 70 65 6e 65 64 20 5b 64 61 74 61 62 61 73 65  opened [database
2910: 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 2e 0a 20   connections].. 
2920: 20 46 6f 72 20 61 6c 6c 20 76 65 72 73 69 6f 6e   For all version
2930: 73 20 6f 66 20 53 51 4c 69 74 65 20 74 68 72 6f  s of SQLite thro
2940: 75 67 68 20 33 2e 37 2e 31 37 2c 0a 20 20 61 75  ugh 3.7.17,.  au
2950: 74 6f 6d 61 74 69 63 20 69 6e 64 69 63 65 73 20  tomatic indices 
2960: 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 65 6e 61  are normally ena
2970: 62 6c 65 64 20 66 6f 72 20 6e 65 77 20 64 61 74  bled for new dat
2980: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2990: 73 20 69 66 0a 20 20 74 68 69 73 20 63 6f 6d 70  s if.  this comp
29a0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
29b0: 69 73 20 6f 6d 69 74 74 65 64 2e 0a 20 20 48 6f  is omitted..  Ho
29c0: 77 65 76 65 72 2c 20 74 68 61 74 20 6d 69 67 68  wever, that migh
29d0: 74 20 63 68 61 6e 67 65 20 69 6e 20 66 75 74 75  t change in futu
29e0: 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53  re releases of S
29f0: 51 4c 69 74 65 2e 0a 20 20 3c 70 3e 53 65 65 20  QLite..  <p>See 
2a00: 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 4f 4d  also: [SQLITE_OM
2a10: 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44  IT_AUTOMATIC_IND
2a20: 45 58 5d 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  EX].}..COMPILE_O
2a30: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
2a40: 46 41 55 4c 54 5f 41 55 54 4f 56 41 43 55 55 4d  FAULT_AUTOVACUUM
2a50: 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 20 6f  =<i>&lt;0 or 1 o
2a60: 72 20 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20  r 2&gt;</i>} {. 
2a70: 20 54 68 69 73 20 6d 61 63 72 6f 20 64 65 74 65   This macro dete
2a80: 72 6d 69 6e 65 73 20 69 66 20 53 51 4c 69 74 65  rmines if SQLite
2a90: 20 63 72 65 61 74 65 73 20 64 61 74 61 62 61 73   creates databas
2aa0: 65 73 20 77 69 74 68 20 74 68 65 20 0a 20 20 5b  es with the .  [
2ab0: 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 66 6c 61  auto_vacuum] fla
2ac0: 67 20 73 65 74 20 62 79 20 64 65 66 61 75 6c 74  g set by default
2ad0: 20 74 6f 20 4f 46 46 20 28 30 29 2c 20 46 55 4c   to OFF (0), FUL
2ae0: 4c 20 28 31 29 2c 20 6f 72 0a 20 20 49 4e 43 52  L (1), or.  INCR
2af0: 45 4d 45 4e 54 41 4c 20 28 32 29 2e 20 54 68 65  EMENTAL (2). The
2b00: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69   default value i
2b10: 73 20 30 20 6d 65 61 6e 69 6e 67 20 74 68 61 74  s 0 meaning that
2b20: 20 64 61 74 61 62 61 73 65 73 0a 20 20 61 72 65   databases.  are
2b30: 20 63 72 65 61 74 65 64 20 77 69 74 68 20 61 75   created with au
2b40: 74 6f 2d 76 61 63 75 75 6d 20 74 75 72 6e 65 64  to-vacuum turned
2b50: 20 6f 66 66 2e 0a 20 20 49 6e 20 61 6e 79 20 63   off..  In any c
2b60: 61 73 65 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d  ase the compile-
2b70: 74 69 6d 65 20 64 65 66 61 75 6c 74 20 6d 61 79  time default may
2b80: 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e 20 62   be overridden b
2b90: 79 20 74 68 65 20 0a 20 20 5b 50 52 41 47 4d 41  y the .  [PRAGMA
2ba0: 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 63 6f   auto_vacuum] co
2bb0: 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  mmand..}..COMPIL
2bc0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
2bd0: 5f 44 45 46 41 55 4c 54 5f 43 41 43 48 45 5f 53  _DEFAULT_CACHE_S
2be0: 49 5a 45 3d 3c 69 3e 26 6c 74 3b 4e 26 67 74 3b  IZE=<i>&lt;N&gt;
2bf0: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d  </i>} {.  This m
2c00: 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 64 65  acro sets the de
2c10: 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d 20 73 69  fault maximum si
2c20: 7a 65 20 6f 66 20 74 68 65 20 70 61 67 65 2d 63  ze of the page-c
2c30: 61 63 68 65 20 66 6f 72 20 65 61 63 68 20 61 74  ache for each at
2c40: 74 61 63 68 65 64 0a 20 20 64 61 74 61 62 61 73  tached.  databas
2c50: 65 2e 20 20 41 20 70 6f 73 69 74 69 76 65 20 76  e.  A positive v
2c60: 61 6c 75 65 20 6d 65 61 6e 73 20 74 68 61 74 20  alue means that 
2c70: 74 68 65 20 6c 69 6d 69 74 20 69 73 20 4e 20 70  the limit is N p
2c80: 61 67 65 2e 20 20 49 66 20 4e 20 69 73 20 6e 65  age.  If N is ne
2c90: 67 61 74 69 76 65 0a 20 20 74 68 61 74 20 6d 65  gative.  that me
2ca0: 61 6e 73 20 74 6f 20 6c 69 6d 69 74 20 74 68 65  ans to limit the
2cb0: 20 63 61 63 68 65 20 73 69 7a 65 20 74 6f 20 2d   cache size to -
2cc0: 4e 2a 31 30 32 34 20 62 79 74 65 73 2e 0a 20 20  N*1024 bytes..  
2cd0: 54 68 65 20 73 75 67 67 65 73 74 65 64 20 6d 61  The suggested ma
2ce0: 78 69 6d 75 6d 20 63 61 63 68 65 20 73 69 7a 65  ximum cache size
2cf0: 20 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64 64   can be overridd
2d00: 65 6e 20 62 79 20 74 68 65 20 0a 20 20 5b 50 52  en by the .  [PR
2d10: 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 5d  AGMA cache_size]
2d20: 20 63 6f 6d 6d 61 6e 64 2e 20 54 68 65 20 64 65   command. The de
2d30: 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 2d  fault value is -
2d40: 32 30 30 30 2c 20 77 68 69 63 68 20 74 72 61 6e  2000, which tran
2d50: 73 6c 61 74 65 73 0a 20 20 69 6e 74 6f 20 61 20  slates.  into a 
2d60: 6d 61 78 69 6d 75 6d 20 6f 66 20 32 30 34 38 30  maximum of 20480
2d70: 30 30 20 62 79 74 65 73 20 70 65 72 20 63 61 63  00 bytes per cac
2d80: 68 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  he..}..COMPILE_O
2d90: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
2da0: 46 41 55 4c 54 5f 46 49 4c 45 5f 46 4f 52 4d 41  FAULT_FILE_FORMA
2db0: 54 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 34 26  T=<i>&lt;1 or 4&
2dc0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65  gt;</i>} {.  The
2dd0: 20 64 65 66 61 75 6c 74 20 5b 73 63 68 65 6d 61   default [schema
2de0: 20 66 6f 72 6d 61 74 20 6e 75 6d 62 65 72 5d 20   format number] 
2df0: 75 73 65 64 20 62 79 20 53 51 4c 69 74 65 20 77  used by SQLite w
2e00: 68 65 6e 20 63 72 65 61 74 69 6e 67 0a 20 20 6e  hen creating.  n
2e10: 65 77 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ew database file
2e20: 73 20 69 73 20 73 65 74 20 62 79 20 74 68 69 73  s is set by this
2e30: 20 6d 61 63 72 6f 2e 20 20 54 68 65 20 73 63 68   macro.  The sch
2e40: 65 6d 61 20 66 6f 72 6d 61 74 73 20 61 72 65 20  ema formats are 
2e50: 61 6c 6c 0a 20 20 76 65 72 79 20 73 69 6d 69 6c  all.  very simil
2e60: 61 72 2e 20 20 54 68 65 20 64 69 66 66 65 72 65  ar.  The differe
2e70: 6e 63 65 20 62 65 74 77 65 65 6e 20 66 6f 72 6d  nce between form
2e80: 61 74 73 20 31 20 61 6e 64 20 34 20 69 73 20 74  ats 1 and 4 is t
2e90: 68 61 74 20 66 6f 72 6d 61 74 0a 20 20 34 20 75  hat format.  4 u
2ea0: 6e 64 65 72 73 74 61 6e 64 73 20 5b 64 65 73 63  nderstands [desc
2eb0: 65 6e 64 69 6e 67 20 69 6e 64 69 63 65 73 5d 20  ending indices] 
2ec0: 61 6e 64 20 68 61 73 20 61 20 74 69 67 68 74 65  and has a tighte
2ed0: 72 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72 0a 20  r encoding for. 
2ee0: 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 73 2e   boolean values.
2ef0: 0a 0a 20 20 41 6c 6c 20 76 65 72 73 69 6f 6e 73  ..  All versions
2f00: 20 6f 66 20 53 51 4c 69 74 65 20 73 69 6e 63 65   of SQLite since
2f10: 20 33 2e 33 2e 30 20 28 32 30 30 36 2d 30 31 2d   3.3.0 (2006-01-
2f20: 31 30 29 0a 20 20 63 61 6e 20 72 65 61 64 20 61  10).  can read a
2f30: 6e 64 20 77 72 69 74 65 20 61 6e 79 20 73 63 68  nd write any sch
2f40: 65 6d 61 20 66 6f 72 6d 61 74 0a 20 20 62 65 74  ema format.  bet
2f50: 77 65 65 6e 20 31 20 61 6e 64 20 34 2e 20 20 42  ween 1 and 4.  B
2f60: 75 74 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e  ut older version
2f70: 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68  s of SQLite migh
2f80: 74 20 6e 6f 74 20 62 65 20 61 62 6c 65 20 74 6f  t not be able to
2f90: 0a 20 20 72 65 61 64 20 66 6f 72 6d 61 74 73 20  .  read formats 
2fa0: 67 72 65 61 74 65 72 20 74 68 61 6e 20 31 2e 20  greater than 1. 
2fb0: 20 53 6f 20 74 68 61 74 20 6f 6c 64 65 72 20 76   So that older v
2fc0: 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
2fd0: 65 20 77 69 6c 6c 0a 20 20 62 65 20 61 62 6c 65  e will.  be able
2fe0: 20 74 6f 20 72 65 61 64 20 61 6e 64 20 77 72 69   to read and wri
2ff0: 74 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  te database file
3000: 73 20 63 72 65 61 74 65 64 20 62 79 20 6e 65 77  s created by new
3010: 65 72 20 76 65 72 73 69 6f 6e 73 0a 20 20 6f 66  er versions.  of
3020: 20 53 51 4c 69 74 65 2c 20 74 68 65 20 64 65 66   SQLite, the def
3030: 61 75 6c 74 20 73 63 68 65 6d 61 20 66 6f 72 6d  ault schema form
3040: 61 74 20 77 61 73 20 73 65 74 20 74 6f 20 31 20  at was set to 1 
3050: 66 6f 72 20 53 51 4c 69 74 65 20 76 65 72 73 69  for SQLite versi
3060: 6f 6e 73 0a 20 20 74 68 72 6f 75 67 68 20 33 2e  ons.  through 3.
3070: 37 2e 39 20 28 32 30 31 31 2d 31 31 2d 30 31 29  7.9 (2011-11-01)
3080: 2e 20 20 42 65 67 69 6e 6e 69 6e 67 20 77 69 74  .  Beginning wit
3090: 68 20 0a 20 20 5b 76 65 72 73 69 6f 6e 20 33 2e  h .  [version 3.
30a0: 37 2e 31 30 5d 20 28 5b 64 61 74 65 6f 66 3a 33  7.10] ([dateof:3
30b0: 2e 37 2e 31 30 5d 29 2c 20 74 68 65 20 64 65 66  .7.10]), the def
30c0: 61 75 6c 74 0a 20 20 73 63 68 65 6d 61 20 66 6f  ault.  schema fo
30d0: 72 6d 61 74 20 69 73 20 34 2e 0a 0a 20 20 54 68  rmat is 4...  Th
30e0: 65 20 73 63 68 65 6d 61 20 66 6f 72 6d 61 74 20  e schema format 
30f0: 6e 75 6d 62 65 72 20 66 6f 72 20 61 20 6e 65 77  number for a new
3100: 20 64 61 74 61 62 61 73 65 20 63 61 6e 20 62 65   database can be
3110: 20 73 65 74 20 61 74 20 72 75 6e 74 69 6d 65 20   set at runtime 
3120: 75 73 69 6e 67 0a 20 20 74 68 65 20 5b 50 52 41  using.  the [PRA
3130: 47 4d 41 20 6c 65 67 61 63 79 5f 66 69 6c 65 5f  GMA legacy_file_
3140: 66 6f 72 6d 61 74 5d 20 63 6f 6d 6d 61 6e 64 2e  format] command.
3150: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3160: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55  ON {SQLITE_DEFAU
3170: 4c 54 5f 46 49 4c 45 5f 50 45 52 4d 49 53 53 49  LT_FILE_PERMISSI
3180: 4f 4e 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a  ONS=<i>N</i>} {.
3190: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 6e 75    The default nu
31a0: 6d 65 72 69 63 20 66 69 6c 65 20 70 65 72 6d 69  meric file permi
31b0: 73 73 69 6f 6e 73 20 66 6f 72 20 6e 65 77 6c 79  ssions for newly
31c0: 20 63 72 65 61 74 65 64 20 64 61 74 61 62 61 73   created databas
31d0: 65 20 66 69 6c 65 73 0a 20 20 75 6e 64 65 72 20  e files.  under 
31e0: 75 6e 69 78 2e 20 20 49 66 20 6e 6f 74 20 73 70  unix.  If not sp
31f0: 65 63 69 66 69 65 64 2c 20 74 68 65 20 64 65 66  ecified, the def
3200: 61 75 6c 74 20 69 73 20 30 36 34 34 20 77 68 69  ault is 0644 whi
3210: 63 68 20 6d 65 61 6e 73 20 74 68 61 74 0a 20 20  ch means that.  
3220: 74 68 65 20 66 69 6c 65 73 20 69 73 20 67 6c 6f  the files is glo
3230: 62 61 6c 6c 79 20 72 65 61 64 61 62 6c 65 20 62  bally readable b
3240: 75 74 20 6f 6e 6c 79 20 77 72 69 74 61 62 6c 65  ut only writable
3250: 20 62 79 20 74 68 65 20 63 72 65 61 74 6f 72 2e   by the creator.
3260: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3270: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55  ON {SQLITE_DEFAU
3280: 4c 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 53 3d  LT_FOREIGN_KEYS=
3290: 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74  <i>&lt;0 or 1&gt
32a0: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
32b0: 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73  macro determines
32c0: 20 77 68 65 74 68 65 72 20 65 6e 66 6f 72 63 65   whether enforce
32d0: 6d 65 6e 74 20 6f 66 20 0a 20 20 5b 66 6f 72 65  ment of .  [fore
32e0: 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69  ign key constrai
32f0: 6e 74 73 5d 20 69 73 20 65 6e 61 62 6c 65 64 20  nts] is enabled 
3300: 6f 72 20 64 69 73 61 62 6c 65 64 20 62 79 20 64  or disabled by d
3310: 65 66 61 75 6c 74 20 66 6f 72 0a 20 20 6e 65 77  efault for.  new
3320: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
3330: 74 69 6f 6e 73 2e 20 20 45 61 63 68 20 64 61 74  tions.  Each dat
3340: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
3350: 20 63 61 6e 20 61 6c 77 61 79 73 20 74 75 72 6e   can always turn
3360: 0a 20 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f  .  enforcement o
3370: 66 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f  f foreign key co
3380: 6e 73 74 72 61 69 6e 74 73 20 6f 6e 20 61 6e 64  nstraints on and
3390: 20 6f 66 66 20 61 6e 64 20 72 75 6e 2d 74 69 6d   off and run-tim
33a0: 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20 5b 66  e using.  the [f
33b0: 6f 72 65 69 67 6e 5f 6b 65 79 73 20 70 72 61 67  oreign_keys prag
33c0: 6d 61 5d 2e 20 20 45 6e 66 6f 72 63 65 6d 65 6e  ma].  Enforcemen
33d0: 74 20 6f 66 20 66 6f 72 65 69 67 6e 20 6b 65 79  t of foreign key
33e0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 0a 20 20 69   constraints.  i
33f0: 73 20 6e 6f 72 6d 61 6c 6c 79 20 6f 66 66 20 62  s normally off b
3400: 79 20 64 65 66 61 75 6c 74 2c 20 62 75 74 20 69  y default, but i
3410: 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  f this compile-t
3420: 69 6d 65 20 70 61 72 61 6d 65 74 65 72 20 69 73  ime parameter is
3430: 0a 20 20 73 65 74 20 74 6f 20 31 2c 20 65 6e 66  .  set to 1, enf
3440: 6f 72 63 65 6d 65 6e 74 20 6f 66 20 66 6f 72 65  orcement of fore
3450: 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69  ign key constrai
3460: 6e 74 73 20 77 69 6c 6c 20 62 65 20 6f 6e 20 62  nts will be on b
3470: 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a 43 4f  y default..}..CO
3480: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
3490: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d 4d 41  LITE_DEFAULT_MMA
34a0: 50 5f 53 49 5a 45 3d 3c 69 3e 4e 3c 2f 69 3e 7d  P_SIZE=<i>N</i>}
34b0: 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20   {.  This macro 
34c0: 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74  sets the default
34d0: 20 6c 69 6d 69 74 20 6f 6e 20 74 68 65 20 61 6d   limit on the am
34e0: 6f 75 6e 74 20 6f 66 20 6d 65 6d 6f 72 79 20 74  ount of memory t
34f0: 68 61 74 0a 20 20 77 69 6c 6c 20 62 65 20 75 73  hat.  will be us
3500: 65 64 20 66 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61  ed for memory-ma
3510: 70 70 65 64 20 49 2f 4f 0a 20 20 66 6f 72 20 65  pped I/O.  for e
3520: 61 63 68 20 6f 70 65 6e 20 64 61 74 61 62 61 73  ach open databas
3530: 65 20 66 69 6c 65 2e 20 20 49 66 20 74 68 65 20  e file.  If the 
3540: 3c 69 3e 4e 3c 2f 69 3e 0a 20 20 69 73 20 7a 65  <i>N</i>.  is ze
3550: 72 6f 2c 20 74 68 65 6e 20 6d 65 6d 6f 72 79 20  ro, then memory 
3560: 6d 61 70 70 65 64 20 49 2f 4f 20 69 73 20 64 69  mapped I/O is di
3570: 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c  sabled by defaul
3580: 74 2e 20 20 54 68 69 73 0a 20 20 63 6f 6d 70 69  t.  This.  compi
3590: 6c 65 2d 74 69 6d 65 20 6c 69 6d 69 74 20 61 6e  le-time limit an
35a0: 64 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4d 41  d the [SQLITE_MA
35b0: 58 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 63 61 6e  X_MMAP_SIZE] can
35c0: 20 62 65 20 6d 6f 64 69 66 69 65 64 20 0a 20 20   be modified .  
35d0: 61 74 20 73 74 61 72 74 2d 74 69 6d 65 20 75 73  at start-time us
35e0: 69 6e 67 20 74 68 65 0a 20 20 5b 73 71 6c 69 74  ing the.  [sqlit
35f0: 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49  e3_config]([SQLI
3600: 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53  TE_CONFIG_MMAP_S
3610: 49 5a 45 5d 29 20 63 61 6c 6c 2c 20 6f 72 20 61  IZE]) call, or a
3620: 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20 75 73 69  t run-time.  usi
3630: 6e 67 20 74 68 65 20 5b 6d 6d 61 70 5f 73 69 7a  ng the [mmap_siz
3640: 65 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f  e pragma]..}..CO
3650: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
3660: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4a 4f 55  LITE_DEFAULT_JOU
3670: 52 4e 41 4c 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d  RNAL_SIZE_LIMIT=
3680: 3c 69 3e 26 6c 74 3b 62 79 74 65 73 26 67 74 3b  <i>&lt;bytes&gt;
3690: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  </i>} {.  This o
36a0: 70 74 69 6f 6e 20 73 65 74 73 20 74 68 65 20 73  ption sets the s
36b0: 69 7a 65 20 6c 69 6d 69 74 20 6f 6e 20 5b 72 6f  ize limit on [ro
36c0: 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20  llback journal] 
36d0: 66 69 6c 65 73 20 69 6e 0a 20 20 5b 6a 6f 75 72  files in.  [jour
36e0: 6e 61 6c 5f 6d 6f 64 65 20 70 72 61 67 6d 61 20  nal_mode pragma 
36f0: 7c 20 70 65 72 73 69 73 74 65 6e 74 20 6a 6f 75  | persistent jou
3700: 72 6e 61 6c 20 6d 6f 64 65 5d 20 61 6e 64 0a 20  rnal mode] and. 
3710: 20 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 20 7c   [locking_mode |
3720: 20 65 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b 69   exclusive locki
3730: 6e 67 20 6d 6f 64 65 5d 20 61 6e 64 20 6f 6e 20  ng mode] and on 
3740: 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 0a  the size of the.
3750: 20 20 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f    write-ahead lo
3760: 67 20 66 69 6c 65 20 69 6e 20 5b 57 41 4c 20 6d  g file in [WAL m
3770: 6f 64 65 5d 2e 20 57 68 65 6e 20 74 68 69 73 20  ode]. When this 
3780: 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  .  compile-time 
3790: 6f 70 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65  option is omitte
37a0: 64 20 74 68 65 72 65 20 69 73 20 6e 6f 20 75 70  d there is no up
37b0: 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65  per bound on the
37c0: 0a 20 20 73 69 7a 65 20 6f 66 20 74 68 65 20 72  .  size of the r
37d0: 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 73  ollback journals
37e0: 20 6f 72 20 77 72 69 74 65 2d 61 68 65 61 64 20   or write-ahead 
37f0: 6c 6f 67 73 2e 20 20 0a 20 20 54 68 65 20 6a 6f  logs.  .  The jo
3800: 75 72 6e 61 6c 20 66 69 6c 65 20 73 69 7a 65 20  urnal file size 
3810: 6c 69 6d 69 74 0a 20 20 63 61 6e 20 62 65 20 63  limit.  can be c
3820: 68 61 6e 67 65 64 20 61 74 20 72 75 6e 2d 74 69  hanged at run-ti
3830: 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b 6a 6f  me using the [jo
3840: 75 72 6e 61 6c 5f 73 69 7a 65 5f 6c 69 6d 69 74  urnal_size_limit
3850: 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d   pragma]..}..COM
3860: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
3870: 49 54 45 5f 44 45 46 41 55 4c 54 5f 4c 4f 43 4b  ITE_DEFAULT_LOCK
3880: 49 4e 47 5f 4d 4f 44 45 3d 3c 69 3e 26 6c 74 3b  ING_MODE=<i>&lt;
3890: 31 20 6f 72 20 30 26 67 74 3b 3c 2f 69 3e 7d 20  1 or 0&gt;</i>} 
38a0: 7b 0a 20 20 49 66 20 73 65 74 20 74 6f 20 31 2c  {.  If set to 1,
38b0: 20 74 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c   then the defaul
38c0: 74 20 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 5d  t [locking_mode]
38d0: 20 69 73 20 73 65 74 20 74 6f 20 45 58 43 4c 55   is set to EXCLU
38e0: 53 49 56 45 2e 0a 20 20 49 66 20 6f 6d 69 74 74  SIVE..  If omitt
38f0: 65 64 20 6f 72 20 73 65 74 20 74 6f 20 30 20 74  ed or set to 0 t
3900: 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20  hen the default 
3910: 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 5d 20 69  [locking_mode] i
3920: 73 20 4e 4f 52 4d 41 4c 2e 0a 7d 0a 0a 43 4f 4d  s NORMAL..}..COM
3930: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
3940: 49 54 45 5f 44 45 46 41 55 4c 54 5f 4c 4f 4f 4b  ITE_DEFAULT_LOOK
3950: 41 53 49 44 45 3d 3c 69 3e 53 5a 2c 4e 3c 2f 69  ASIDE=<i>SZ,N</i
3960: 3e 7d 20 7b 0a 20 20 53 65 74 73 20 74 68 65 20  >} {.  Sets the 
3970: 64 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20  default size of 
3980: 74 68 65 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d  the [lookaside m
3990: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d  emory allocator]
39a0: 20 6d 65 6d 6f 72 79 20 70 6f 6f 6c 0a 20 20 74   memory pool.  t
39b0: 6f 20 4e 20 65 6e 74 72 69 65 73 20 6f 66 20 53  o N entries of S
39c0: 5a 20 62 79 74 65 73 20 65 61 63 68 2e 20 20 54  Z bytes each.  T
39d0: 68 69 73 20 73 65 74 74 69 6e 67 20 63 61 6e 20  his setting can 
39e0: 62 65 20 6d 6f 64 69 66 69 65 64 20 61 74 0a 20  be modified at. 
39f0: 20 73 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e   start-time usin
3a00: 67 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  g [sqlite3_confi
3a10: 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  g]([SQLITE_CONFI
3a20: 47 5f 4c 4f 4f 4b 41 53 49 44 45 5d 29 20 61 6e  G_LOOKASIDE]) an
3a30: 64 2f 6f 72 0a 20 20 61 73 20 65 61 63 68 20 5b  d/or.  as each [
3a40: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
3a50: 69 6f 6e 5d 20 69 73 20 6f 70 65 6e 65 64 20 75  ion] is opened u
3a60: 73 69 6e 67 0a 20 20 5b 73 71 6c 69 74 65 33 5f  sing.  [sqlite3_
3a70: 64 62 5f 63 6f 6e 66 69 67 5d 28 64 62 2c 20 5b  db_config](db, [
3a80: 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
3a90: 4c 4f 4f 4b 41 53 49 44 45 5d 29 2e 0a 7d 0a 0a  LOOKASIDE])..}..
3aa0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
3ab0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d  SQLITE_DEFAULT_M
3ac0: 45 4d 53 54 41 54 55 53 3d 3c 69 3e 26 6c 74 3b  EMSTATUS=<i>&lt;
3ad0: 31 20 6f 72 20 30 26 67 74 3b 3c 2f 69 3e 7d 20  1 or 0&gt;</i>} 
3ae0: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69  {.  This macro i
3af0: 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d  s used to determ
3b00: 69 6e 65 20 77 68 65 74 68 65 72 20 6f 72 20 6e  ine whether or n
3b10: 6f 74 20 74 68 65 20 66 65 61 74 75 72 65 73 20  ot the features 
3b20: 65 6e 61 62 6c 65 64 20 61 6e 64 0a 20 20 64 69  enabled and.  di
3b30: 73 61 62 6c 65 64 20 75 73 69 6e 67 20 74 68 65  sabled using the
3b40: 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d   SQLITE_CONFIG_M
3b50: 45 4d 53 54 41 54 55 53 20 61 72 67 75 6d 65 6e  EMSTATUS argumen
3b60: 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f  t to [sqlite3_co
3b70: 6e 66 69 67 28 29 5d 0a 20 20 61 72 65 20 61 76  nfig()].  are av
3b80: 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61 75  ailable by defau
3b90: 6c 74 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20  lt. The default 
3ba0: 76 61 6c 75 65 20 69 73 20 31 20 28 5b 53 51 4c  value is 1 ([SQL
3bb0: 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54  ITE_CONFIG_MEMST
3bc0: 41 54 55 53 5d 0a 20 20 72 65 6c 61 74 65 64 20  ATUS].  related 
3bd0: 66 65 61 74 75 72 65 73 20 65 6e 61 62 6c 65 64  features enabled
3be0: 29 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 65 20 5b  )..  <p>.  The [
3bf0: 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75  sqlite3_memory_u
3c00: 73 65 64 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69  sed()] and [sqli
3c10: 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
3c20: 61 74 65 72 28 29 5d 20 69 6e 74 65 72 66 61 63  ater()] interfac
3c30: 65 73 2c 0a 20 20 74 68 65 20 5b 73 71 6c 69 74  es,.  the [sqlit
3c40: 65 33 5f 73 74 61 74 75 73 36 34 5d 28 5b 53 51  e3_status64]([SQ
3c50: 4c 49 54 45 5f 53 54 41 54 55 53 5f 4d 45 4d 4f  LITE_STATUS_MEMO
3c60: 52 59 5f 55 53 45 44 5d 29 20 69 6e 74 65 72 66  RY_USED]) interf
3c70: 61 63 65 2c 0a 20 20 61 6e 64 20 74 68 65 20 5b  ace,.  and the [
3c80: 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 45 4d 4f 52  SQLITE_MAX_MEMOR
3c90: 59 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  Y] compile-time 
3ca0: 6f 70 74 69 6f 6e 20 61 72 65 20 61 6c 6c 20 6e  option are all n
3cb0: 6f 6e 2d 66 75 6e 63 74 69 6f 6e 61 6c 0a 20 20  on-functional.  
3cc0: 77 68 65 6e 20 6d 65 6d 6f 72 79 20 75 73 61 67  when memory usag
3cd0: 65 20 74 72 61 63 6b 69 6e 67 20 69 73 20 64 69  e tracking is di
3ce0: 73 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  sabled..}..COMPI
3cf0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
3d00: 45 5f 44 45 46 41 55 4c 54 5f 50 43 41 43 48 45  E_DEFAULT_PCACHE
3d10: 5f 49 4e 49 54 53 5a 3d 3c 69 3e 4e 3c 2f 69 3e  _INITSZ=<i>N</i>
3d20: 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
3d30: 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   determines the 
3d40: 6e 75 6d 62 65 72 20 6f 66 20 70 61 67 65 73 20  number of pages 
3d50: 69 6e 69 74 69 61 6c 6c 79 20 61 6c 6c 6f 63 61  initially alloca
3d60: 74 65 64 20 62 79 20 74 68 65 20 0a 20 20 70 61  ted by the .  pa
3d70: 67 65 20 63 61 63 68 65 20 6d 6f 64 75 6c 65 20  ge cache module 
3d80: 77 68 65 6e 20 5b 53 51 4c 49 54 45 5f 43 4f 4e  when [SQLITE_CON
3d90: 46 49 47 5f 50 41 47 45 43 41 43 48 45 5d 20 63  FIG_PAGECACHE] c
3da0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74  onfiguration opt
3db0: 69 6f 6e 20 69 73 0a 20 20 6e 6f 74 20 75 73 65  ion is.  not use
3dc0: 20 61 6e 64 20 6d 65 6d 6f 72 79 20 66 6f 72 20   and memory for 
3dd0: 74 68 65 20 70 61 67 65 20 63 61 63 68 65 20 69  the page cache i
3de0: 73 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  s obtained from 
3df0: 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  [sqlite3_malloc(
3e00: 29 5d 0a 20 20 69 6e 73 74 65 61 64 2e 20 20 54  )].  instead.  T
3e10: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 67  he number of pag
3e20: 65 73 20 73 65 74 20 62 79 20 74 68 69 73 20 6d  es set by this m
3e30: 61 63 72 6f 20 61 72 65 20 61 6c 6c 6f 63 61 74  acro are allocat
3e40: 65 64 20 69 6e 20 61 20 73 69 6e 67 6c 65 0a 20  ed in a single. 
3e50: 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 77 68 69   allocation, whi
3e60: 63 68 20 72 65 64 75 63 65 73 20 74 68 65 20 6c  ch reduces the l
3e70: 6f 61 64 20 6f 6e 20 74 68 65 20 6d 65 6d 6f 72  oad on the memor
3e80: 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 0a 7d 0a 0a  y allocator..}..
3e90: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
3ea0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 50  SQLITE_DEFAULT_P
3eb0: 41 47 45 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b  AGE_SIZE=<i>&lt;
3ec0: 62 79 74 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b  bytes&gt;</i>} {
3ed0: 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
3ee0: 20 75 73 65 64 20 74 6f 20 73 65 74 20 74 68 65   used to set the
3ef0: 20 64 65 66 61 75 6c 74 20 70 61 67 65 2d 73 69   default page-si
3f00: 7a 65 20 75 73 65 64 20 77 68 65 6e 20 61 0a 20  ze used when a. 
3f10: 20 64 61 74 61 62 61 73 65 20 69 73 20 63 72 65   database is cre
3f20: 61 74 65 64 2e 20 54 68 65 20 76 61 6c 75 65 20  ated. The value 
3f30: 61 73 73 69 67 6e 65 64 20 6d 75 73 74 20 62 65  assigned must be
3f40: 20 61 20 70 6f 77 65 72 20 6f 66 20 32 2e 20 54   a power of 2. T
3f50: 68 65 0a 20 20 64 65 66 61 75 6c 74 20 76 61 6c  he.  default val
3f60: 75 65 20 69 73 20 34 30 39 36 2e 20 54 68 65 20  ue is 4096. The 
3f70: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 64 65 66  compile-time def
3f80: 61 75 6c 74 20 6d 61 79 20 62 65 20 6f 76 65 72  ault may be over
3f90: 72 69 64 64 65 6e 20 61 74 20 0a 20 20 72 75 6e  ridden at .  run
3fa0: 74 69 6d 65 20 62 79 20 74 68 65 20 5b 50 52 41  time by the [PRA
3fb0: 47 4d 41 20 70 61 67 65 5f 73 69 7a 65 5d 20 63  GMA page_size] c
3fc0: 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  ommand..}..COMPI
3fd0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
3fe0: 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43 48 52  E_DEFAULT_SYNCHR
3ff0: 4f 4e 4f 55 53 3d 3c 69 3e 26 6c 74 3b 30 2d 33  ONOUS=<i>&lt;0-3
4000: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
4010: 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69  is macro determi
4020: 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  nes the default 
4030: 76 61 6c 75 65 20 6f 66 20 74 68 65 0a 20 20 5b  value of the.  [
4040: 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
4050: 75 73 5d 20 73 65 74 74 69 6e 67 2e 20 20 49 66  us] setting.  If
4060: 20 6e 6f 74 20 6f 76 65 72 72 69 64 64 65 6e 20   not overridden 
4070: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c  at compile-time,
4080: 0a 20 20 74 68 65 20 64 65 66 61 75 6c 74 20 73  .  the default s
4090: 65 74 74 69 6e 67 20 69 73 20 32 20 28 46 55 4c  etting is 2 (FUL
40a0: 4c 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  L)..}..COMPILE_O
40b0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
40c0: 46 41 55 4c 54 5f 57 41 4c 5f 53 59 4e 43 48 52  FAULT_WAL_SYNCHR
40d0: 4f 4e 4f 55 53 3d 3c 69 3e 26 6c 74 3b 30 2d 33  ONOUS=<i>&lt;0-3
40e0: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
40f0: 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69  is macro determi
4100: 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  nes the default 
4110: 76 61 6c 75 65 20 6f 66 20 74 68 65 0a 20 20 5b  value of the.  [
4120: 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
4130: 75 73 5d 20 73 65 74 74 69 6e 67 20 66 6f 72 20  us] setting for 
4140: 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 74  database files t
4150: 68 61 74 20 6f 70 65 6e 20 69 6e 0a 20 20 5b 57  hat open in.  [W
4160: 41 4c 20 6d 6f 64 65 5d 2e 20 20 49 66 20 6e 6f  AL mode].  If no
4170: 74 20 6f 76 65 72 72 69 64 64 65 6e 20 61 74 20  t overridden at 
4180: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 74 68  compile-time, th
4190: 69 73 20 76 61 6c 75 65 20 69 73 20 74 68 65 0a  is value is the.
41a0: 20 20 73 61 6d 65 20 61 73 20 5b 53 51 4c 49 54    same as [SQLIT
41b0: 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43 48 52  E_DEFAULT_SYNCHR
41c0: 4f 4e 4f 55 53 5d 2e 0a 20 20 3c 70 3e 0a 20 20  ONOUS]..  <p>.  
41d0: 49 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  If SQLITE_DEFAUL
41e0: 54 5f 57 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55  T_WAL_SYNCHRONOU
41f0: 53 20 64 69 66 66 65 72 73 20 66 72 6f 6d 20 53  S differs from S
4200: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 53 59  QLITE_DEFAULT_SY
4210: 4e 43 48 52 4f 4e 4f 55 53 2c 0a 20 20 61 6e 64  NCHRONOUS,.  and
4220: 20 69 66 20 74 68 65 20 61 70 70 6c 69 63 61 74   if the applicat
4230: 69 6f 6e 20 68 61 73 20 6e 6f 74 20 6d 6f 64 69  ion has not modi
4240: 66 69 65 64 20 74 68 65 20 73 79 6e 63 68 72 6f  fied the synchro
4250: 6e 6f 75 73 20 73 65 74 74 69 6e 67 20 66 6f 72  nous setting for
4260: 0a 20 20 74 68 65 20 64 61 74 61 62 61 73 65 20  .  the database 
4270: 66 69 6c 65 20 75 73 69 6e 67 20 74 68 65 20 5b  file using the [
4280: 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
4290: 75 73 5d 20 73 74 61 74 65 6d 65 6e 74 2c 20 74  us] statement, t
42a0: 68 65 6e 0a 20 20 74 68 65 20 73 79 6e 63 68 72  hen.  the synchr
42b0: 6f 6e 6f 75 73 20 73 65 74 74 69 6e 67 20 69 73  onous setting is
42c0: 20 63 68 61 6e 67 65 64 20 74 6f 20 76 61 6c 75   changed to valu
42d0: 65 20 64 65 66 69 6e 65 64 20 62 79 0a 20 20 53  e defined by.  S
42e0: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 41  QLITE_DEFAULT_WA
42f0: 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 20 77 68  L_SYNCHRONOUS wh
4300: 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  en the database 
4310: 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 77 69 74 63  connection switc
4320: 68 65 73 0a 20 20 69 6e 74 6f 20 57 41 4c 20 6d  hes.  into WAL m
4330: 6f 64 65 20 66 6f 72 20 74 68 65 20 66 69 72 73  ode for the firs
4340: 74 20 74 69 6d 65 2e 0a 20 20 49 66 20 74 68 65  t time..  If the
4350: 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f   SQLITE_DEFAULT_
4360: 57 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 20  WAL_SYNCHRONOUS 
4370: 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 6f 76 65  value is not ove
4380: 72 72 69 64 64 65 6e 20 61 74 0a 20 20 63 6f 6d  rridden at.  com
4390: 70 69 6c 65 2d 74 69 6d 65 2c 20 74 68 65 6e 20  pile-time, then 
43a0: 69 74 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62  it will always b
43b0: 65 20 74 68 65 20 73 61 6d 65 20 61 73 0a 20 20  e the same as.  
43c0: 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  [SQLITE_DEFAULT_
43d0: 53 59 4e 43 48 52 4f 4e 4f 55 53 5d 20 61 6e 64  SYNCHRONOUS] and
43e0: 20 73 6f 20 6e 6f 20 61 75 74 6f 6d 61 74 69 63   so no automatic
43f0: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 73 65 74   synchronous set
4400: 74 69 6e 67 0a 20 20 63 68 61 6e 67 65 73 20 77  ting.  changes w
4410: 69 6c 6c 20 65 76 65 72 20 6f 63 63 75 72 2e 0a  ill ever occur..
4420: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
4430: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
4440: 54 5f 57 41 4c 5f 41 55 54 4f 43 48 45 43 4b 50  T_WAL_AUTOCHECKP
4450: 4f 49 4e 54 3d 3c 69 3e 26 6c 74 3b 70 61 67 65  OINT=<i>&lt;page
4460: 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  s&gt;</i>} {.  T
4470: 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74  his macro sets t
4480: 68 65 20 64 65 66 61 75 6c 74 20 70 61 67 65 20  he default page 
4490: 63 6f 75 6e 74 20 66 6f 72 20 74 68 65 20 5b 57  count for the [W
44a0: 41 4c 5d 0a 20 20 5b 63 68 65 63 6b 70 6f 69 6e  AL].  [checkpoin
44b0: 74 69 6e 67 20 7c 20 61 75 74 6f 6d 61 74 69 63  ting | automatic
44c0: 20 63 68 65 63 6b 70 6f 69 6e 74 69 6e 67 5d 20   checkpointing] 
44d0: 66 65 61 74 75 72 65 2e 20 20 49 66 20 75 6e 73  feature.  If uns
44e0: 70 65 63 69 66 69 65 64 2c 0a 20 20 74 68 65 20  pecified,.  the 
44f0: 64 65 66 61 75 6c 74 20 70 61 67 65 20 63 6f 75  default page cou
4500: 6e 74 20 69 73 20 31 30 30 30 2e 0a 7d 0a 0a 43  nt is 1000..}..C
4510: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
4520: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 4f  QLITE_DEFAULT_WO
4530: 52 4b 45 52 5f 54 48 52 45 41 44 53 3d 3c 69 3e  RKER_THREADS=<i>
4540: 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  N</i>} {.  This 
4550: 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 64  macro sets the d
4560: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72  efault value for
4570: 0a 20 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c  .  the [SQLITE_L
4580: 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45  IMIT_WORKER_THRE
4590: 41 44 53 5d 20 70 61 72 61 6d 65 74 65 72 2e 20  ADS] parameter. 
45a0: 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 4c 49 4d   The [SQLITE_LIM
45b0: 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  IT_WORKER_THREAD
45c0: 53 5d 0a 20 20 70 61 72 61 6d 65 74 65 72 20 73  S].  parameter s
45d0: 65 74 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ets the maximum 
45e0: 6e 75 6d 62 65 72 20 6f 66 20 61 75 78 69 6c 69  number of auxili
45f0: 61 72 79 20 74 68 72 65 61 64 73 20 74 68 61 74  ary threads that
4600: 20 61 20 73 69 6e 67 6c 65 0a 20 20 5b 70 72 65   a single.  [pre
4610: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
4620: 20 77 69 6c 6c 20 6c 61 75 6e 63 68 20 74 6f 20   will launch to 
4630: 61 73 73 69 73 74 20 69 74 20 77 69 74 68 20 61  assist it with a
4640: 20 71 75 65 72 79 2e 20 20 49 66 20 6e 6f 74 20   query.  If not 
4650: 73 70 65 63 69 66 69 65 64 2c 0a 20 20 74 68 65  specified,.  the
4660: 20 64 65 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d   default maximum
4670: 20 69 73 20 30 2e 0a 20 20 54 68 65 20 76 61 6c   is 0..  The val
4680: 75 65 20 73 65 74 20 68 65 72 65 20 63 61 6e 6e  ue set here cann
4690: 6f 74 20 62 65 20 6d 6f 72 65 20 74 68 61 6e 20  ot be more than 
46a0: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 57 4f 52 4b  [SQLITE_MAX_WORK
46b0: 45 52 5f 54 48 52 45 41 44 53 5d 2e 0a 7d 0a 0a  ER_THREADS]..}..
46c0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
46d0: 53 51 4c 49 54 45 5f 45 58 54 52 41 5f 44 55 52  SQLITE_EXTRA_DUR
46e0: 41 42 4c 45 7d 20 7b 0a 20 20 54 68 65 20 53 51  ABLE} {.  The SQ
46f0: 4c 49 54 45 5f 45 58 54 52 41 5f 44 55 52 41 42  LITE_EXTRA_DURAB
4700: 4c 45 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  LE compile-time 
4710: 6f 70 74 69 6f 6e 20 74 68 61 74 20 75 73 65 64  option that used
4720: 20 74 6f 20 63 61 75 73 65 20 74 68 65 20 64 65   to cause the de
4730: 66 61 75 6c 74 0a 20 20 5b 50 52 41 47 4d 41 20  fault.  [PRAGMA 
4740: 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 20 73 65 74  synchronous] set
4750: 74 69 6e 67 20 74 6f 20 62 65 20 45 58 54 52 41  ting to be EXTRA
4760: 2c 20 72 61 74 68 65 72 20 74 68 61 6e 20 46 55  , rather than FU
4770: 4c 4c 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  LL.  This option
4780: 0a 20 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20  .  is no longer 
4790: 73 75 70 70 6f 72 74 65 64 2e 20 20 55 73 65 0a  supported.  Use.
47a0: 20 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c    [SQLITE_DEFAUL
47b0: 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 7c 53 51  T_SYNCHRONOUS|SQ
47c0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e  LITE_DEFAULT_SYN
47d0: 43 48 52 4f 4e 4f 55 53 3d 33 5d 20 69 6e 73 74  CHRONOUS=3] inst
47e0: 65 61 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ead..}..COMPILE_
47f0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 46  OPTION {SQLITE_F
4800: 54 53 33 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50  TS3_MAX_EXPR_DEP
4810: 54 48 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20  TH=<i>N</i>} {. 
4820: 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73   This macro sets
4830: 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70   the maximum dep
4840: 74 68 20 6f 66 20 74 68 65 20 73 65 61 72 63 68  th of the search
4850: 20 74 72 65 65 20 74 68 61 74 20 63 6f 72 72 65   tree that corre
4860: 73 70 6f 6e 64 73 20 74 6f 0a 20 20 74 68 65 20  sponds to.  the 
4870: 72 69 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20  right-hand side 
4880: 6f 66 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65  of the MATCH ope
4890: 72 61 74 6f 72 20 69 6e 20 61 6e 20 5b 46 54 53  rator in an [FTS
48a0: 33 5d 20 6f 72 20 5b 46 54 53 34 5d 20 66 75 6c  3] or [FTS4] ful
48b0: 6c 2d 74 65 78 74 0a 20 20 69 6e 64 65 78 2e 20  l-text.  index. 
48c0: 20 54 68 65 20 66 75 6c 6c 2d 74 65 78 74 20 73   The full-text s
48d0: 65 61 72 63 68 20 75 73 65 73 20 61 20 72 65 63  earch uses a rec
48e0: 75 72 73 69 76 65 20 61 6c 67 6f 72 69 74 68 6d  ursive algorithm
48f0: 2c 20 73 6f 20 74 68 65 20 64 65 70 74 68 20 6f  , so the depth o
4900: 66 0a 20 20 74 68 65 20 74 72 65 65 20 69 73 20  f.  the tree is 
4910: 6c 69 6d 69 74 65 64 20 74 6f 20 70 72 65 76 65  limited to preve
4920: 6e 74 20 75 73 69 6e 67 20 74 6f 6f 20 6d 75 63  nt using too muc
4930: 68 20 73 74 61 63 6b 20 73 70 61 63 65 2e 20 20  h stack space.  
4940: 54 68 65 20 64 65 66 61 75 6c 74 0a 20 20 6c 69  The default.  li
4950: 6d 69 74 20 69 73 20 31 32 2e 20 20 54 68 69 73  mit is 12.  This
4960: 20 6c 69 6d 69 74 20 69 73 20 73 75 66 66 69 63   limit is suffic
4970: 69 65 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34  ient for up to 4
4980: 30 39 35 20 73 65 61 72 63 68 20 74 65 72 6d 73  095 search terms
4990: 20 6f 6e 20 74 68 65 0a 20 20 72 69 67 68 74 2d   on the.  right-
49a0: 68 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65  hand side of the
49b0: 20 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72 20   MATCH operator 
49c0: 61 6e 64 20 69 74 20 68 6f 6c 64 73 20 73 74 61  and it holds sta
49d0: 63 6b 20 73 70 61 63 65 20 75 73 61 67 65 20 74  ck space usage t
49e0: 6f 20 0a 20 20 6c 65 73 73 20 74 68 61 6e 20 32  o .  less than 2
49f0: 30 30 30 20 62 79 74 65 73 2e 0a 20 20 3c 70 3e  000 bytes..  <p>
4a00: 0a 20 20 46 6f 72 20 6f 72 64 69 6e 61 72 79 20  .  For ordinary 
4a10: 46 54 53 33 2f 46 54 53 34 20 71 75 65 72 69 65  FTS3/FTS4 querie
4a20: 73 2c 20 74 68 65 20 73 65 61 72 63 68 20 74 72  s, the search tr
4a30: 65 65 20 64 65 70 74 68 20 69 73 20 61 70 70 72  ee depth is appr
4a40: 6f 78 69 6d 61 74 65 6c 79 0a 20 20 74 68 65 20  oximately.  the 
4a50: 62 61 73 65 2d 32 20 6c 6f 67 61 72 69 74 68 6d  base-2 logarithm
4a60: 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   of the number o
4a70: 66 20 74 65 72 6d 73 20 69 6e 20 74 68 65 20 72  f terms in the r
4a80: 69 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f  ight-hand side o
4a90: 66 20 74 68 65 0a 20 20 4d 41 54 43 48 20 6f 70  f the.  MATCH op
4aa0: 65 72 61 74 6f 72 2e 20 20 48 6f 77 65 76 65 72  erator.  However
4ab0: 2c 20 66 6f 72 20 5b 70 68 72 61 73 65 20 71 75  , for [phrase qu
4ac0: 65 72 69 65 73 5d 20 61 6e 64 20 5b 4e 45 41 52  eries] and [NEAR
4ad0: 20 71 75 65 72 69 65 73 5d 20 74 68 65 0a 20 20   queries] the.  
4ae0: 73 65 61 72 63 68 20 74 72 65 65 20 64 65 70 74  search tree dept
4af0: 68 20 69 73 20 6c 69 6e 65 61 72 20 69 6e 20 74  h is linear in t
4b00: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 69 67  he number of rig
4b10: 68 74 2d 68 61 6e 64 20 73 69 64 65 20 74 65 72  ht-hand side ter
4b20: 6d 73 2e 0a 20 20 53 6f 20 74 68 65 20 64 65 66  ms..  So the def
4b30: 61 75 6c 74 20 64 65 70 74 68 20 6c 69 6d 69 74  ault depth limit
4b40: 20 6f 66 20 31 32 20 69 73 20 73 75 66 66 69 63   of 12 is suffic
4b50: 69 65 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34  ient for up to 4
4b60: 30 39 35 20 6f 72 64 69 6e 61 72 79 0a 20 20 74  095 ordinary.  t
4b70: 65 72 6d 73 20 6f 6e 20 61 20 4d 41 54 43 48 2c  erms on a MATCH,
4b80: 20 69 74 20 69 73 20 6f 6e 6c 79 20 73 75 66 66   it is only suff
4b90: 69 63 69 65 6e 74 20 66 6f 72 20 31 31 20 6f 72  icient for 11 or
4ba0: 20 31 32 20 70 68 72 61 73 65 20 6f 72 20 4e 45   12 phrase or NE
4bb0: 41 52 0a 20 20 74 65 72 6d 73 2e 20 20 45 76 65  AR.  terms.  Eve
4bc0: 6e 20 73 6f 2c 20 74 68 65 20 64 65 66 61 75 6c  n so, the defaul
4bd0: 74 20 69 73 20 6d 6f 72 65 20 74 68 61 6e 20 65  t is more than e
4be0: 6e 6f 75 67 68 20 66 6f 72 20 6d 6f 73 74 20 61  nough for most a
4bf0: 70 70 6c 69 63 61 74 69 6f 6e 2e 0a 7d 0a 0a 43  pplication..}..C
4c00: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
4c10: 51 4c 49 54 45 5f 4c 49 4b 45 5f 44 4f 45 53 4e  QLITE_LIKE_DOESN
4c20: 54 5f 4d 41 54 43 48 5f 42 4c 4f 42 53 7d 20 7b  T_MATCH_BLOBS} {
4c30: 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d  .  This compile-
4c40: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63 61 75 73  time option caus
4c50: 65 73 20 74 68 65 20 5b 4c 49 4b 45 5d 20 6f 70  es the [LIKE] op
4c60: 65 72 61 74 6f 72 20 74 6f 20 61 6c 77 61 79 73  erator to always
4c70: 20 72 65 74 75 72 6e 20 0a 20 20 46 61 6c 73 65   return .  False
4c80: 20 69 66 20 65 69 74 68 65 72 20 6f 70 65 72 61   if either opera
4c90: 6e 64 20 69 73 20 61 20 42 4c 4f 42 2e 20 20 54  nd is a BLOB.  T
4ca0: 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76  he default behav
4cb0: 69 6f 72 20 6f 66 20 5b 4c 49 4b 45 5d 20 0a 20  ior of [LIKE] . 
4cc0: 20 69 73 20 74 68 61 74 20 42 4c 4f 42 20 6f 70   is that BLOB op
4cd0: 65 72 61 6e 64 73 20 61 72 65 20 63 61 73 74 20  erands are cast 
4ce0: 74 6f 20 54 45 58 54 20 62 65 66 6f 72 65 20 74  to TEXT before t
4cf0: 68 65 20 63 6f 6d 70 61 72 69 73 6f 6e 20 69 73  he comparison is
4d00: 20 64 6f 6e 65 2e 0a 20 20 3c 70 3e 0a 20 20 54   done..  <p>.  T
4d10: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
4d20: 20 6f 70 74 69 6f 6e 20 6d 61 6b 65 73 20 53 51   option makes SQ
4d30: 4c 69 74 65 20 72 75 6e 20 6d 6f 72 65 20 65 66  Lite run more ef
4d40: 66 69 63 69 65 6e 74 6c 79 20 77 68 65 6e 20 70  ficiently when p
4d50: 72 6f 63 65 73 73 69 6e 67 0a 20 20 71 75 65 72  rocessing.  quer
4d60: 69 65 73 20 74 68 61 74 20 75 73 65 20 74 68 65  ies that use the
4d70: 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72   [LIKE] operator
4d80: 2c 20 61 74 20 74 68 65 20 65 78 70 65 6e 73 65  , at the expense
4d90: 20 6f 66 20 62 72 65 61 6b 69 6e 67 20 62 61 63   of breaking bac
4da0: 6b 77 61 72 64 73 0a 20 20 63 6f 6d 70 61 74 69  kwards.  compati
4db0: 62 69 6c 69 74 79 2e 20 20 48 6f 77 65 76 65 72  bility.  However
4dc0: 2c 20 74 68 65 20 62 61 63 6b 77 61 72 64 73 20  , the backwards 
4dd0: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 62 72  compatibility br
4de0: 65 61 6b 20 6d 61 79 20 62 65 20 6f 6e 6c 79 0a  eak may be only.
4df0: 20 20 61 20 74 65 63 68 6e 69 63 61 6c 69 74 79    a technicality
4e00: 2e 20 20 54 68 65 72 65 20 77 61 73 20 61 20 6c  .  There was a l
4e10: 6f 6e 67 2d 73 74 61 6e 64 69 6e 67 20 62 75 67  ong-standing bug
4e20: 20 69 6e 20 74 68 65 20 5b 4c 49 4b 45 5d 20 70   in the [LIKE] p
4e30: 72 6f 63 65 73 73 69 6e 67 20 6c 6f 67 69 63 0a  rocessing logic.
4e40: 20 20 28 73 65 65 20 5b 68 74 74 70 73 3a 2f 2f    (see [https://
4e50: 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 73  www.sqlite.org/s
4e60: 72 63 2f 69 6e 66 6f 2f 30 35 66 34 33 62 65 38  rc/info/05f43be8
4e70: 66 64 64 61 39 66 5d 29 20 74 68 61 74 20 63 61  fdda9f]) that ca
4e80: 75 73 65 64 20 69 74 20 74 6f 0a 20 20 6d 69 73  used it to.  mis
4e90: 62 65 68 61 76 69 6f 72 20 66 6f 72 20 42 4c 4f  behavior for BLO
4ea0: 42 20 6f 70 65 72 61 6e 64 73 20 61 6e 64 20 6e  B operands and n
4eb0: 6f 62 6f 64 79 20 6f 62 73 65 72 76 65 64 20 74  obody observed t
4ec0: 68 61 74 20 62 75 67 20 69 6e 20 6e 65 61 72 6c  hat bug in nearl
4ed0: 79 0a 20 20 31 30 20 79 65 61 72 73 20 6f 66 20  y.  10 years of 
4ee0: 61 63 74 69 76 65 20 75 73 65 2e 20 20 53 6f 20  active use.  So 
4ef0: 66 6f 72 20 6d 6f 72 65 20 75 73 65 72 73 2c 20  for more users, 
4f00: 69 74 20 69 73 20 70 72 6f 62 61 62 6c 79 20 73  it is probably s
4f10: 61 66 65 20 74 6f 0a 20 20 65 6e 61 62 6c 65 20  afe to.  enable 
4f20: 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  this compile-tim
4f30: 65 20 6f 70 74 69 6f 6e 20 61 6e 64 20 74 68 65  e option and the
4f40: 72 65 62 79 20 73 61 76 65 20 61 20 6c 69 74 74  reby save a litt
4f50: 6c 65 20 43 50 55 20 74 69 6d 65 0a 20 20 6f 6e  le CPU time.  on
4f60: 20 4c 49 4b 45 20 71 75 65 72 69 65 73 2e 0a 20   LIKE queries.. 
4f70: 20 3c 70 3e 0a 20 20 54 68 69 73 20 63 6f 6d 70   <p>.  This comp
4f80: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
4f90: 61 66 66 65 63 74 73 20 74 68 65 20 53 51 4c 20  affects the SQL 
4fa0: 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 20  [LIKE] operator 
4fb0: 6f 6e 6c 79 20 61 6e 64 20 68 61 73 0a 20 20 6e  only and has.  n
4fc0: 6f 20 69 6d 70 61 63 74 20 6f 6e 20 74 68 65 20  o impact on the 
4fd0: 5b 73 71 6c 69 74 65 33 5f 73 74 72 6c 69 6b 65  [sqlite3_strlike
4fe0: 28 29 5d 20 43 2d 6c 61 6e 67 75 61 67 65 20 69  ()] C-language i
4ff0: 6e 74 65 72 66 61 63 65 2e 0a 7d 0a 0a 43 4f 4d  nterface..}..COM
5000: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
5010: 49 54 45 5f 4d 41 58 5f 4d 45 4d 4f 52 59 3d 3c  ITE_MAX_MEMORY=<
5020: 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  i>N</i>} {.  Thi
5030: 73 20 6f 70 74 69 6f 6e 20 6c 69 6d 69 74 73 20  s option limits 
5040: 74 68 65 20 74 6f 74 61 6c 20 61 6d 6f 75 6e 74  the total amount
5050: 20 6f 66 20 6d 65 6d 6f 72 79 20 74 68 61 74 20   of memory that 
5060: 53 51 4c 69 74 65 20 77 69 6c 6c 20 72 65 71 75  SQLite will requ
5070: 65 73 74 0a 20 20 66 72 6f 6d 20 6d 61 6c 6c 6f  est.  from mallo
5080: 63 28 29 20 74 6f 20 3c 69 3e 4e 3c 2f 69 3e 20  c() to <i>N</i> 
5090: 62 79 74 65 73 2e 20 20 41 6e 79 20 61 74 74 65  bytes.  Any atte
50a0: 6d 70 74 20 62 79 20 53 51 4c 69 74 65 20 74 6f  mpt by SQLite to
50b0: 20 61 6c 6c 6f 63 61 74 65 0a 20 20 6e 65 77 20   allocate.  new 
50c0: 6d 65 6d 6f 72 79 20 74 68 61 74 20 77 6f 75 6c  memory that woul
50d0: 64 20 63 61 75 73 65 20 74 68 65 20 73 75 6d 20  d cause the sum 
50e0: 6f 66 20 61 6c 6c 20 61 6c 6c 6f 63 61 74 69 6f  of all allocatio
50f0: 6e 73 20 68 65 6c 64 20 62 79 20 53 51 4c 69 74  ns held by SQLit
5100: 65 20 74 6f 20 65 78 63 65 65 64 0a 20 20 3c 69  e to exceed.  <i
5110: 3e 4e 3c 2f 69 3e 20 62 79 74 65 73 20 77 69 6c  >N</i> bytes wil
5120: 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20 6f  l result in an o
5130: 75 74 2d 6f 66 2d 6d 65 6d 6f 72 79 20 65 72 72  ut-of-memory err
5140: 6f 72 2e 0a 20 20 54 68 69 73 20 69 73 20 61 20  or..  This is a 
5150: 68 61 72 64 20 75 70 70 65 72 20 6c 69 6d 69 74  hard upper limit
5160: 2e 20 20 53 65 65 20 61 6c 73 6f 20 74 68 65 20  .  See also the 
5170: 5b 73 71 6c 69 74 65 33 5f 73 6f 66 74 5f 68 65  [sqlite3_soft_he
5180: 61 70 5f 6c 69 6d 69 74 28 29 5d 0a 20 20 69 6e  ap_limit()].  in
5190: 74 65 72 66 61 63 65 2e 0a 20 20 3c 70 3e 0a 20  terface..  <p>. 
51a0: 20 54 68 69 73 20 6c 69 6d 69 74 20 69 73 20 6f   This limit is o
51b0: 6e 6c 79 20 66 75 6e 63 74 69 6f 6e 61 6c 20 69  nly functional i
51c0: 66 20 6d 65 6d 6f 72 79 20 75 73 61 67 65 20 73  f memory usage s
51d0: 74 61 74 69 73 74 69 63 73 20 61 72 65 20 61 76  tatistics are av
51e0: 61 69 6c 61 62 6c 65 20 76 69 61 0a 20 20 74 68  ailable via.  th
51f0: 65 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  e [sqlite3_memor
5200: 79 5f 75 73 65 64 28 29 5d 20 61 6e 64 20 5b 73  y_used()] and [s
5210: 71 6c 69 74 65 33 5f 73 74 61 74 75 73 36 34 5d  qlite3_status64]
5220: 28 5b 53 51 4c 49 54 45 5f 53 54 41 54 55 53 5f  ([SQLITE_STATUS_
5230: 4d 45 4d 4f 52 59 5f 55 53 45 44 5d 29 0a 20 20  MEMORY_USED]).  
5240: 69 6e 74 65 72 66 61 63 65 73 2e 20 20 57 69 74  interfaces.  Wit
5250: 68 6f 75 74 20 74 68 61 74 20 6d 65 6d 6f 72 79  hout that memory
5260: 20 75 73 61 67 65 20 69 6e 66 6f 72 6d 61 74 69   usage informati
5270: 6f 6e 2c 20 53 51 4c 69 74 65 20 68 61 73 20 6e  on, SQLite has n
5280: 6f 20 77 61 79 20 6f 66 0a 20 20 6b 6e 6f 77 69  o way of.  knowi
5290: 6e 67 20 77 68 65 6e 20 69 74 20 69 73 20 61 62  ng when it is ab
52a0: 6f 75 74 20 74 6f 20 67 6f 20 6f 76 65 72 20 74  out to go over t
52b0: 68 65 20 6c 69 6d 69 74 2c 20 61 6e 64 20 74 68  he limit, and th
52c0: 75 73 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20  us is unable to 
52d0: 70 72 65 76 65 6e 74 0a 20 20 74 68 65 20 65 78  prevent.  the ex
52e0: 63 65 73 73 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  cess memory allo
52f0: 63 61 74 69 6f 6e 2e 20 20 4d 65 6d 6f 72 79 20  cation.  Memory 
5300: 75 73 61 67 65 20 74 72 61 63 6b 69 6e 67 20 69  usage tracking i
5310: 73 20 74 75 72 6e 65 64 20 6f 6e 20 62 79 20 64  s turned on by d
5320: 65 66 61 75 6c 74 2c 0a 20 20 62 75 74 20 63 61  efault,.  but ca
5330: 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 61 74  n be disabled at
5340: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 75 73   compile-time us
5350: 69 6e 67 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  ing the [SQLITE_
5360: 44 45 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54 55  DEFAULT_MEMSTATU
5370: 53 5d 20 6f 70 74 69 6f 6e 2c 0a 20 20 6f 72 20  S] option,.  or 
5380: 61 74 20 73 74 61 72 74 2d 74 69 6d 65 20 75 73  at start-time us
5390: 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  ing [sqlite3_con
53a0: 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e  fig]([SQLITE_CON
53b0: 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 29 2e  FIG_MEMSTATUS]).
53c0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
53d0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 41 58 5f 4d  ON {SQLITE_MAX_M
53e0: 4d 41 50 5f 53 49 5a 45 3d 3c 69 3e 4e 3c 2f 69  MAP_SIZE=<i>N</i
53f0: 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  >} {.  This macr
5400: 6f 20 73 65 74 73 20 61 20 68 61 72 64 20 75 70  o sets a hard up
5410: 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65  per bound on the
5420: 20 61 6d 6f 75 6e 74 20 6f 66 20 61 64 64 72 65   amount of addre
5430: 73 73 20 73 70 61 63 65 20 74 68 61 74 0a 20 20  ss space that.  
5440: 63 61 6e 20 62 65 20 75 73 65 64 20 62 79 20 61  can be used by a
5450: 6e 79 20 73 69 6e 67 6c 65 20 64 61 74 61 62 61  ny single databa
5460: 73 65 20 66 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61  se for memory-ma
5470: 70 70 65 64 20 49 2f 4f 2e 0a 20 20 53 65 74 74  pped I/O..  Sett
5480: 69 6e 67 20 74 68 69 73 20 76 61 6c 75 65 20 74  ing this value t
5490: 6f 20 30 20 63 6f 6d 70 6c 65 74 65 6c 79 20 64  o 0 completely d
54a0: 69 73 61 62 6c 65 73 20 6d 65 6d 6f 72 79 2d 6d  isables memory-m
54b0: 61 70 70 65 64 20 49 2f 4f 20 61 6e 64 0a 20 20  apped I/O and.  
54c0: 63 61 75 73 65 73 20 6c 6f 67 69 63 20 61 73 73  causes logic ass
54d0: 6f 63 69 61 74 65 64 20 77 69 74 68 20 6d 65 6d  ociated with mem
54e0: 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20 74  ory-mapped I/O t
54f0: 6f 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f  o be omitted fro
5500: 6d 20 74 68 65 0a 20 20 62 75 69 6c 64 2e 20 20  m the.  build.  
5510: 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 6f 65 73  This option does
5520: 20 63 68 61 6e 67 65 20 74 68 65 20 64 65 66 61   change the defa
5530: 75 6c 74 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65  ult memory-mappe
5540: 64 20 49 2f 4f 20 61 64 64 72 65 73 73 0a 20 20  d I/O address.  
5550: 73 70 61 63 65 20 73 69 7a 65 20 28 73 65 74 20  space size (set 
5560: 62 79 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55  by [SQLITE_DEFAU
5570: 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 6f 72  LT_MMAP_SIZE] or
5580: 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  .  sqlite3_confi
5590: 67 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  g([SQLITE_CONFIG
55a0: 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 6f 72 20  _MMAP_SIZE]) or 
55b0: 74 68 65 0a 20 20 72 75 6e 2d 74 69 6d 65 20 6d  the.  run-time m
55c0: 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f  emory-mapped I/O
55d0: 20 61 64 64 72 65 73 73 20 73 70 61 63 65 20 73   address space s
55e0: 69 7a 65 20 28 73 65 74 20 62 79 0a 20 20 73 71  ize (set by.  sq
55f0: 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72  lite3_file_contr
5600: 6f 6c 28 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ol([SQLITE_FCNTL
5610: 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 6f 72 0a  _MMAP_SIZE]) or.
5620: 20 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70 5f 73    [PRAGMA mmap_s
5630: 69 7a 65 5d 29 20 61 73 20 6c 6f 6e 67 20 61 73  ize]) as long as
5640: 20 74 68 6f 73 65 20 6f 74 68 65 72 20 73 65 74   those other set
5650: 74 69 6e 67 73 20 61 72 65 20 6c 65 73 73 20 74  tings are less t
5660: 68 61 6e 20 74 68 65 0a 20 20 6d 61 78 69 6d 75  han the.  maximu
5670: 6d 20 76 61 6c 75 65 20 64 65 66 69 6e 65 64 20  m value defined 
5680: 68 65 72 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  here..}..COMPILE
5690: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
56a0: 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45 54 52 59  MAX_SCHEMA_RETRY
56b0: 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 57  =<i>N</i>} {.  W
56c0: 68 65 6e 65 76 65 72 20 74 68 65 20 64 61 74 61  henever the data
56d0: 62 61 73 65 20 73 63 68 65 6d 61 20 63 68 61 6e  base schema chan
56e0: 67 65 73 2c 20 70 72 65 70 61 72 65 64 20 73 74  ges, prepared st
56f0: 61 74 65 6d 65 6e 74 73 20 61 72 65 20 61 75 74  atements are aut
5700: 6f 6d 61 74 69 63 61 6c 6c 79 0a 20 20 72 65 70  omatically.  rep
5710: 72 65 70 61 72 65 64 20 74 6f 20 61 63 63 6f 6d  repared to accom
5720: 6d 6f 64 61 74 65 20 74 68 65 20 6e 65 77 20 73  modate the new s
5730: 63 68 65 6d 61 2e 20 20 54 68 65 72 65 20 69 73  chema.  There is
5740: 20 61 20 72 61 63 65 20 63 6f 6e 64 69 74 69 6f   a race conditio
5750: 6e 20 68 65 72 65 0a 20 20 69 6e 20 74 68 61 74  n here.  in that
5760: 20 69 66 20 6f 6e 65 20 74 68 72 65 61 64 20 69   if one thread i
5770: 73 20 63 6f 6e 73 74 61 6e 74 6c 79 20 63 68 61  s constantly cha
5780: 6e 67 69 6e 67 20 74 68 65 20 73 63 68 65 6d 61  nging the schema
5790: 2c 20 61 6e 6f 74 68 65 72 20 74 68 72 65 61 64  , another thread
57a0: 0a 20 20 6d 69 67 68 74 20 73 70 69 6e 20 6f 6e  .  might spin on
57b0: 20 72 65 70 61 72 73 65 73 20 61 6e 64 20 72 65   reparses and re
57c0: 70 72 65 70 61 72 61 74 69 6f 6e 73 20 6f 66 20  preparations of 
57d0: 61 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  a prepared state
57e0: 6d 65 6e 74 20 61 6e 64 0a 20 20 6e 65 76 65 72  ment and.  never
57f0: 20 67 65 74 20 61 6e 79 20 72 65 61 6c 20 77 6f   get any real wo
5800: 72 6b 20 64 6f 6e 65 2e 20 20 54 68 69 73 20 70  rk done.  This p
5810: 61 72 61 6d 65 74 65 72 20 70 72 65 76 65 6e 74  arameter prevent
5820: 73 20 61 6e 20 69 6e 66 69 6e 69 74 65 20 6c 6f  s an infinite lo
5830: 6f 70 0a 20 20 62 79 20 66 6f 72 63 69 6e 67 20  op.  by forcing 
5840: 74 68 65 20 73 70 69 6e 6e 69 6e 67 20 74 68 72  the spinning thr
5850: 65 61 64 20 74 6f 20 67 69 76 65 20 75 70 20 61  ead to give up a
5860: 66 74 65 72 20 61 20 66 69 78 65 64 20 6e 75 6d  fter a fixed num
5870: 62 65 72 20 6f 66 20 61 74 74 65 6d 70 74 73 0a  ber of attempts.
5880: 20 20 61 74 20 72 65 63 6f 6d 70 69 6c 69 6e 67    at recompiling
5890: 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74   the prepared st
58a0: 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 64 65  atement.  The de
58b0: 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 69 73  fault setting is
58c0: 20 35 30 20 77 68 69 63 68 20 69 73 0a 20 20 6d   50 which is.  m
58d0: 6f 72 65 20 74 68 61 6e 20 61 64 65 71 75 61 74  ore than adequat
58e0: 65 20 66 6f 72 20 6d 6f 73 74 20 61 70 70 6c 69  e for most appli
58f0: 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50  cations..}..COMP
5900: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
5910: 54 45 5f 4d 41 58 5f 57 4f 52 4b 45 52 5f 54 48  TE_MAX_WORKER_TH
5920: 52 45 41 44 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20  READS=<i>N</i>} 
5930: 7b 0a 20 20 53 65 74 20 61 6e 20 75 70 70 65 72  {.  Set an upper
5940: 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65 20 5b 73   bound on the [s
5950: 71 6c 69 74 65 33 5f 6c 69 6d 69 74 5d 28 64 62  qlite3_limit](db
5960: 2c 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57  ,[SQLITE_LIMIT_W
5970: 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 5d 2c 4e  ORKER_THREADS],N
5980: 29 0a 20 20 73 65 74 74 69 6e 67 20 74 68 61 74  ).  setting that
5990: 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   determines the 
59a0: 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f  maximum number o
59b0: 66 20 61 75 78 69 6c 69 61 72 79 20 74 68 72 65  f auxiliary thre
59c0: 61 64 73 20 74 68 61 74 20 61 20 73 69 6e 67 6c  ads that a singl
59d0: 65 0a 20 20 5b 70 72 65 70 61 72 65 64 20 73 74  e.  [prepared st
59e0: 61 74 65 6d 65 6e 74 5d 20 77 69 6c 6c 20 75 73  atement] will us
59f0: 65 20 74 6f 20 61 69 64 20 77 69 74 68 20 43 50  e to aid with CP
5a00: 55 2d 69 6e 74 65 6e 73 69 76 65 20 63 6f 6d 70  U-intensive comp
5a10: 75 74 61 74 69 6f 6e 73 0a 20 20 28 6d 6f 73 74  utations.  (most
5a20: 6c 79 20 73 6f 72 74 69 6e 67 29 2e 20 20 53 65  ly sorting).  Se
5a30: 65 20 61 6c 73 6f 20 74 68 65 20 5b 53 51 4c 49  e also the [SQLI
5a40: 54 45 5f 44 45 46 41 55 4c 54 5f 57 4f 52 4b 45  TE_DEFAULT_WORKE
5a50: 52 5f 54 48 52 45 41 44 53 5d 20 6f 70 74 69 6f  R_THREADS] optio
5a60: 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ns..}..COMPILE_O
5a70: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 49  PTION {SQLITE_MI
5a80: 4e 49 4d 55 4d 5f 46 49 4c 45 5f 44 45 53 43 52  NIMUM_FILE_DESCR
5a90: 49 50 54 4f 52 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20  IPTOR=<i>N</i>} 
5aa0: 7b 0a 20 20 54 68 65 20 75 6e 69 78 20 5b 56 46  {.  The unix [VF
5ab0: 53 5d 20 77 69 6c 6c 20 6e 65 76 65 72 20 75 73  S] will never us
5ac0: 65 20 61 20 66 69 6c 65 20 64 65 73 63 72 69 70  e a file descrip
5ad0: 74 6f 72 20 6c 65 73 73 20 74 68 61 6e 20 3c 69  tor less than <i
5ae0: 3e 4e 3c 2f 69 3e 2e 20 20 54 68 65 0a 20 20 64  >N</i>.  The.  d
5af0: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 66 20  efault value of 
5b00: 3c 69 3e 4e 3c 2f 69 3e 20 69 73 20 33 2e 0a 20  <i>N</i> is 3.. 
5b10: 20 3c 70 3e 0a 20 20 41 76 6f 69 64 69 6e 67 20   <p>.  Avoiding 
5b20: 74 68 65 20 75 73 65 20 6f 66 20 6c 6f 77 2d 6e  the use of low-n
5b30: 75 6d 62 65 72 65 64 20 66 69 6c 65 20 64 65 73  umbered file des
5b40: 63 72 69 70 74 6f 72 73 20 69 73 20 61 20 64 65  criptors is a de
5b50: 66 65 6e 73 65 20 61 67 61 69 6e 73 74 0a 20 20  fense against.  
5b60: 61 63 63 69 64 65 6e 74 61 6c 20 64 61 74 61 62  accidental datab
5b70: 61 73 65 20 63 6f 72 72 75 70 74 69 6f 6e 2e 20  ase corruption. 
5b80: 20 49 66 20 61 20 64 61 74 61 62 61 73 65 20 66   If a database f
5b90: 69 6c 65 20 77 61 73 20 6f 70 65 6e 65 64 20 75  ile was opened u
5ba0: 73 69 6e 67 0a 20 20 66 69 6c 65 20 64 65 73 63  sing.  file desc
5bb0: 72 69 70 74 6f 72 20 32 2c 20 66 6f 72 20 65 78  riptor 2, for ex
5bc0: 61 6d 70 6c 65 2c 20 61 6e 64 20 74 68 65 6e 20  ample, and then 
5bd0: 61 6e 20 61 73 73 65 72 74 28 29 20 66 61 69 6c  an assert() fail
5be0: 65 64 20 61 6e 64 20 69 6e 76 6f 6b 65 64 0a 20  ed and invoked. 
5bf0: 20 77 72 69 74 65 28 32 2c 2e 2e 2e 29 2c 20 74   write(2,...), t
5c00: 68 61 74 20 77 6f 75 6c 64 20 6c 69 6b 65 6c 79  hat would likely
5c10: 20 63 61 75 73 65 20 64 61 74 61 62 61 73 65 20   cause database 
5c20: 63 6f 72 72 75 70 74 69 6f 6e 20 62 79 20 6f 76  corruption by ov
5c30: 65 72 77 72 69 74 69 6e 67 0a 20 20 70 61 72 74  erwriting.  part
5c40: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
5c50: 20 66 69 6c 65 20 77 69 74 68 20 74 68 65 20 61   file with the a
5c60: 73 73 65 72 74 69 6f 6e 20 65 72 72 6f 72 20 6d  ssertion error m
5c70: 65 73 73 61 67 65 2e 20 20 55 73 69 6e 67 20 6f  essage.  Using o
5c80: 6e 6c 79 0a 20 20 68 69 67 68 65 72 2d 76 61 6c  nly.  higher-val
5c90: 75 65 64 20 66 69 6c 65 20 64 65 73 63 72 69 70  ued file descrip
5ca0: 74 6f 72 73 20 61 76 6f 69 64 73 20 74 68 69 73  tors avoids this
5cb0: 20 70 6f 74 65 6e 74 69 61 6c 20 70 72 6f 62 6c   potential probl
5cc0: 65 6d 2e 20 20 54 68 65 20 0a 20 20 70 72 6f 74  em.  The .  prot
5cd0: 65 63 74 69 6f 6e 20 61 67 61 69 6e 73 74 0a 20  ection against. 
5ce0: 20 75 73 69 6e 67 20 6c 6f 77 2d 6e 75 6d 62 65   using low-numbe
5cf0: 72 65 64 20 66 69 6c 65 20 64 65 73 63 72 69 70  red file descrip
5d00: 74 6f 72 73 20 63 61 6e 20 62 65 20 64 69 73 61  tors can be disa
5d10: 62 6c 65 64 20 62 79 20 73 65 74 74 69 6e 67 20  bled by setting 
5d20: 74 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74  this.  compile-t
5d30: 69 6d 65 20 6f 70 74 69 6f 6e 20 74 6f 20 30 2e  ime option to 0.
5d40: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
5d50: 4f 4e 20 7b 53 51 4c 49 54 45 5f 50 4f 57 45 52  ON {SQLITE_POWER
5d60: 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 3d 3c  SAFE_OVERWRITE=<
5d70: 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b  i>&lt;0 or 1&gt;
5d80: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  </i>} {.  This o
5d90: 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68  ption changes th
5da0: 65 20 64 65 66 61 75 6c 74 20 61 73 73 75 6d 70  e default assump
5db0: 74 69 6f 6e 20 61 62 6f 75 74 20 5b 70 6f 77 65  tion about [powe
5dc0: 72 73 61 66 65 20 6f 76 65 72 77 72 69 74 65 5d  rsafe overwrite]
5dd0: 0a 20 20 66 6f 72 20 74 68 65 20 75 6e 64 65 72  .  for the under
5de0: 6c 79 69 6e 67 20 66 69 6c 65 73 79 73 74 65 6d  lying filesystem
5df0: 73 20 66 6f 72 20 74 68 65 20 75 6e 69 78 20 61  s for the unix a
5e00: 6e 64 20 77 69 6e 64 6f 77 73 20 5b 56 46 53 65  nd windows [VFSe
5e10: 73 5d 2e 0a 20 20 53 65 74 74 69 6e 67 20 53 51  s]..  Setting SQ
5e20: 4c 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f  LITE_POWERSAFE_O
5e30: 56 45 52 57 52 49 54 45 20 74 6f 20 31 20 63 61  VERWRITE to 1 ca
5e40: 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 61  uses SQLite to a
5e50: 73 73 75 6d 65 20 74 68 61 74 0a 20 20 61 70 70  ssume that.  app
5e60: 6c 69 63 61 74 69 6f 6e 2d 6c 65 76 65 6c 20 77  lication-level w
5e70: 72 69 74 65 73 20 63 61 6e 6e 6f 74 20 63 68 61  rites cannot cha
5e80: 6e 67 65 73 20 62 79 74 65 73 20 6f 75 74 73 69  nges bytes outsi
5e90: 64 65 20 74 68 65 20 72 61 6e 67 65 20 6f 66 0a  de the range of.
5ea0: 20 20 62 79 74 65 73 20 77 72 69 74 74 65 6e 20    bytes written 
5eb0: 65 76 65 6e 20 69 66 20 74 68 65 20 77 72 69 74  even if the writ
5ec0: 65 20 6f 63 63 75 72 73 20 6a 75 73 74 20 62 65  e occurs just be
5ed0: 66 6f 72 65 20 61 20 70 6f 77 65 72 20 6c 6f 73  fore a power los
5ee0: 73 2e 0a 20 20 57 69 74 68 20 53 51 4c 49 54 45  s..  With SQLITE
5ef0: 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57  _POWERSAFE_OVERW
5f00: 52 49 54 45 20 73 65 74 20 74 6f 20 30 2c 20 53  RITE set to 0, S
5f10: 51 4c 69 74 65 20 61 73 73 75 6d 65 73 20 74 68  QLite assumes th
5f20: 61 74 20 6f 74 68 65 72 0a 20 20 62 79 74 65 73  at other.  bytes
5f30: 20 69 6e 20 74 68 65 20 73 61 6d 65 20 73 65 63   in the same sec
5f40: 74 6f 72 20 77 69 74 68 20 61 20 77 72 69 74 74  tor with a writt
5f50: 65 6e 20 62 79 74 65 20 6d 69 67 68 74 20 62 65  en byte might be
5f60: 20 63 68 61 6e 67 65 64 20 6f 72 20 0a 20 20 64   changed or .  d
5f70: 61 6d 61 67 65 64 20 62 79 20 61 20 70 6f 77 65  amaged by a powe
5f80: 72 20 6c 6f 73 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  r loss..}..COMPI
5f90: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
5fa0: 45 5f 52 45 56 45 52 53 45 5f 55 4e 4f 52 44 45  E_REVERSE_UNORDE
5fb0: 52 45 44 5f 53 45 4c 45 43 54 53 7d 20 7b 0a 20  RED_SELECTS} {. 
5fc0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
5fd0: 73 65 73 20 74 68 65 20 5b 50 52 41 47 4d 41 20  ses the [PRAGMA 
5fe0: 72 65 76 65 72 73 65 5f 75 6e 6f 72 64 65 72 65  reverse_unordere
5ff0: 64 5f 73 65 6c 65 63 74 73 5d 20 73 65 74 74 69  d_selects] setti
6000: 6e 67 20 74 6f 20 62 65 0a 20 20 65 6e 61 62 6c  ng to be.  enabl
6010: 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20  ed by default.  
6020: 57 68 65 6e 20 65 6e 61 62 6c 65 64 2c 20 5b 53  When enabled, [S
6030: 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74  ELECT] statement
6040: 73 20 74 68 61 74 20 6c 61 63 6b 20 61 6e 0a 20  s that lack an. 
6050: 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
6060: 20 77 69 6c 6c 20 72 75 6e 20 69 6e 20 72 65 76   will run in rev
6070: 65 72 73 65 20 6f 72 64 65 72 2e 3c 70 3e 0a 20  erse order.<p>. 
6080: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
6090: 75 73 65 66 75 6c 20 66 6f 72 20 64 65 74 65 63  useful for detec
60a0: 74 69 6e 67 20 77 68 65 6e 20 61 70 70 6c 69 63  ting when applic
60b0: 61 74 69 6f 6e 73 20 28 69 6e 63 6f 72 72 65 63  ations (incorrec
60c0: 74 6c 79 29 0a 20 20 61 73 73 75 6d 65 20 74 68  tly).  assume th
60d0: 61 74 20 74 68 65 20 6f 72 64 65 72 20 6f 66 20  at the order of 
60e0: 72 6f 77 73 20 69 6e 20 61 20 53 45 4c 45 43 54  rows in a SELECT
60f0: 20 77 69 74 68 6f 75 74 20 61 6e 20 4f 52 44 45   without an ORDE
6100: 52 20 42 59 20 63 6c 61 75 73 65 0a 20 20 77 69  R BY clause.  wi
6110: 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 74 68 65  ll always be the
6120: 20 73 61 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c   same..}..COMPIL
6130: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
6140: 5f 53 4f 52 54 45 52 5f 50 4d 41 53 5a 3d 3c 69  _SORTER_PMASZ=<i
6150: 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20 6d  >N</i>} {.  If m
6160: 75 6c 74 69 2d 74 68 72 65 61 64 65 64 20 70 72  ulti-threaded pr
6170: 6f 63 65 73 73 69 6e 67 20 69 73 20 65 6e 61 62  ocessing is enab
6180: 6c 65 64 20 76 69 61 20 74 68 65 0a 20 20 5b 50  led via the.  [P
6190: 52 41 47 4d 41 20 74 68 72 65 61 64 73 5d 20 73  RAGMA threads] s
61a0: 65 74 74 69 6e 67 2c 20 74 68 65 6e 20 73 6f 72  etting, then sor
61b0: 74 20 6f 70 65 72 61 74 69 6f 6e 73 20 77 69 6c  t operations wil
61c0: 6c 0a 20 20 61 74 74 65 6d 70 74 20 74 6f 20 73  l.  attempt to s
61d0: 74 61 72 74 20 68 65 6c 70 65 72 20 74 68 72 65  tart helper thre
61e0: 61 64 73 20 77 68 65 6e 20 74 68 65 20 61 6d 6f  ads when the amo
61f0: 75 6e 74 20 6f 66 20 63 6f 6e 74 65 6e 74 0a 20  unt of content. 
6200: 20 74 6f 20 62 65 20 73 6f 72 74 65 64 20 65 78   to be sorted ex
6210: 63 65 65 64 73 20 74 68 65 20 6d 69 6e 69 6d 75  ceeds the minimu
6220: 6d 20 6f 66 20 74 68 65 20 5b 63 61 63 68 65 5f  m of the [cache_
6230: 73 69 7a 65 5d 20 61 6e 64 20 50 4d 41 20 53 69  size] and PMA Si
6240: 7a 65 0a 20 20 64 65 74 65 72 6d 69 6e 65 64 20  ze.  determined 
6250: 62 79 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43  by the [SQLITE_C
6260: 4f 4e 46 49 47 5f 50 4d 41 53 5a 5d 20 73 74 61  ONFIG_PMASZ] sta
6270: 72 74 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a  rt-time option..
6280: 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74    This compile-t
6290: 69 6d 65 20 6f 70 74 69 6f 6e 20 73 65 74 73 20  ime option sets 
62a0: 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  the default valu
62b0: 65 20 66 6f 72 20 74 68 65 0a 20 20 5b 53 51 4c  e for the.  [SQL
62c0: 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a  ITE_CONFIG_PMASZ
62d0: 5d 20 73 74 61 72 74 2d 74 69 6d 65 20 6f 70 74  ] start-time opt
62e0: 69 6f 6e 2e 0a 20 20 54 68 65 20 64 65 66 61 75  ion..  The defau
62f0: 6c 74 20 76 61 6c 75 65 20 69 73 20 32 35 30 2e  lt value is 250.
6300: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6310: 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 54 4d 54 4a  ON {SQLITE_STMTJ
6320: 52 4e 4c 5f 53 50 49 4c 4c 3d 3c 69 3e 4e 3c 2f  RNL_SPILL=<i>N</
6330: 69 3e 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  i>} {.  The SQLI
6340: 54 45 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c  TE_STMTJRNL_SPIL
6350: 4c 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  L compile-time o
6360: 70 74 69 6f 6e 20 64 65 74 65 72 6d 69 6e 65 73  ption determines
6370: 20 74 68 65 0a 20 20 64 65 66 61 75 6c 74 20 73   the.  default s
6380: 65 74 74 69 6e 67 20 6f 66 20 74 68 65 20 5b 53  etting of the [S
6390: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 54 4d  QLITE_CONFIG_STM
63a0: 54 4a 52 4e 4c 5f 53 50 49 4c 4c 5d 20 73 74 61  TJRNL_SPILL] sta
63b0: 72 74 2d 74 69 6d 65 0a 20 20 73 65 74 74 69 6e  rt-time.  settin
63c0: 67 2e 20 20 54 68 61 74 20 73 65 74 74 69 6e 67  g.  That setting
63d0: 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   determines the 
63e0: 73 69 7a 65 20 74 68 72 65 73 68 6f 6c 64 20 61  size threshold a
63f0: 62 6f 76 65 20 77 68 69 63 68 0a 20 20 5b 73 74  bove which.  [st
6400: 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c 73  atement journals
6410: 5d 20 61 72 65 20 6d 6f 76 65 64 20 66 72 6f 6d  ] are moved from
6420: 20 6d 65 6d 6f 72 79 20 74 6f 20 64 69 73 6b 2e   memory to disk.
6430: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6440: 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e 33 32  ON {SQLITE_WIN32
6450: 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54 68 69  _MALLOC} {.  Thi
6460: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
6470: 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65 20   the use of the 
6480: 57 69 6e 64 6f 77 73 20 48 65 61 70 20 41 50 49  Windows Heap API
6490: 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20 6d   functions for m
64a0: 65 6d 6f 72 79 0a 20 20 61 6c 6c 6f 63 61 74 69  emory.  allocati
64b0: 6f 6e 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68  on instead of th
64c0: 65 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61  e standard libra
64d0: 72 79 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64 20  ry malloc() and 
64e0: 66 72 65 65 28 29 20 72 6f 75 74 69 6e 65 73 2e  free() routines.
64f0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6500: 4f 4e 20 7b 59 59 53 54 41 43 4b 44 45 50 54 48  ON {YYSTACKDEPTH
6510: 3d 3c 69 3e 26 6c 74 3b 6d 61 78 5f 64 65 70 74  =<i>&lt;max_dept
6520: 68 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  h&gt;</i>} {.  T
6530: 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74  his macro sets t
6540: 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74 68  he maximum depth
6550: 20 6f 66 20 74 68 65 20 4c 41 4c 52 28 31 29 20   of the LALR(1) 
6560: 73 74 61 63 6b 20 75 73 65 64 20 62 79 0a 20 20  stack used by.  
6570: 74 68 65 20 53 51 4c 20 70 61 72 73 65 72 20 77  the SQL parser w
6580: 69 74 68 69 6e 20 53 51 4c 69 74 65 2e 20 20 54  ithin SQLite.  T
6590: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
65a0: 20 69 73 20 31 30 30 2e 20 20 41 20 74 79 70 69   is 100.  A typi
65b0: 63 61 6c 0a 20 20 61 70 70 6c 69 63 61 74 69 6f  cal.  applicatio
65c0: 6e 20 77 69 6c 6c 20 75 73 65 20 6c 65 73 73 20  n will use less 
65d0: 74 68 61 6e 20 61 62 6f 75 74 20 32 30 20 6c 65  than about 20 le
65e0: 76 65 6c 73 20 6f 66 20 74 68 65 20 73 74 61 63  vels of the stac
65f0: 6b 2e 0a 20 20 44 65 76 65 6c 6f 70 65 72 73 20  k..  Developers 
6600: 77 68 6f 73 65 20 61 70 70 6c 69 63 61 74 69 6f  whose applicatio
6610: 6e 73 20 63 6f 6e 74 61 69 6e 20 53 51 4c 20 73  ns contain SQL s
6620: 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 0a  tatements that .
6630: 20 20 6e 65 65 64 20 6d 6f 72 65 20 74 68 61 6e    need more than
6640: 20 31 30 30 20 4c 41 4c 52 28 31 29 20 73 74 61   100 LALR(1) sta
6650: 63 6b 20 65 6e 74 72 69 65 73 20 73 68 6f 75 6c  ck entries shoul
6660: 64 20 73 65 72 69 6f 75 73 6c 79 0a 20 20 63 6f  d seriously.  co
6670: 6e 73 69 64 65 72 20 72 65 66 61 63 74 6f 72 69  nsider refactori
6680: 6e 67 20 74 68 65 69 72 20 53 51 4c 20 61 73 20  ng their SQL as 
6690: 69 74 20 69 73 20 6c 69 6b 65 6c 79 20 74 6f 20  it is likely to 
66a0: 62 65 20 77 65 6c 6c 20 62 65 79 6f 6e 64 0a 20  be well beyond. 
66b0: 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66 20   the ability of 
66c0: 61 6e 79 20 68 75 6d 61 6e 20 74 6f 20 63 6f 6d  any human to com
66d0: 70 72 65 68 65 6e 64 2e 0a 7d 0a 3c 2f 74 63 6c  prehend..}.</tcl
66e0: 3e 0a 0a 3c 68 31 3e 20 4f 70 74 69 6f 6e 73 20  >..<h1> Options 
66f0: 54 6f 20 53 65 74 20 53 69 7a 65 20 4c 69 6d 69  To Set Size Limi
6700: 74 73 3c 2f 68 31 3e 0a 0a 3c 70 3e 54 68 65 72  ts</h1>..<p>Ther
6710: 65 20 61 72 65 20 63 6f 6d 70 69 6c 65 2d 74 69  e are compile-ti
6720: 6d 65 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 20  me options that 
6730: 77 69 6c 6c 20 73 65 74 20 75 70 70 65 72 20 62  will set upper b
6740: 6f 75 6e 64 73 0a 6f 6e 20 74 68 65 20 73 69 7a  ounds.on the siz
6750: 65 73 20 6f 66 20 76 61 72 69 6f 75 73 20 73 74  es of various st
6760: 72 75 63 74 75 72 65 73 20 69 6e 20 53 51 4c 69  ructures in SQLi
6770: 74 65 2e 20 20 54 68 65 20 63 6f 6d 70 69 6c 65  te.  The compile
6780: 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e 73 20 6e 6f  -time.options no
6790: 72 6d 61 6c 6c 79 20 73 65 74 20 61 20 68 61 72  rmally set a har
67a0: 64 20 75 70 70 65 72 20 62 6f 75 6e 64 20 74 68  d upper bound th
67b0: 61 74 20 63 61 6e 20 62 65 20 63 68 61 6e 67 65  at can be change
67c0: 64 0a 61 74 20 72 75 6e 2d 74 69 6d 65 20 6f 6e  d.at run-time on
67d0: 20 69 6e 64 69 76 69 64 75 61 6c 20 5b 64 61 74   individual [dat
67e0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
67f0: 73 5d 20 75 73 69 6e 67 20 74 68 65 0a 5b 73 71  s] using the.[sq
6800: 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d 20 69  lite3_limit()] i
6810: 6e 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 3c  nterface.</p>..<
6820: 70 3e 54 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69  p>The compile-ti
6830: 6d 65 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 73  me options for s
6840: 65 74 74 69 6e 67 20 75 70 70 65 72 20 62 6f 75  etting upper bou
6850: 6e 64 73 20 61 72 65 0a 5b 6c 69 6d 69 74 73 20  nds are.[limits 
6860: 7c 20 64 6f 63 75 6d 65 6e 74 65 64 20 73 65 70  | documented sep
6870: 61 72 61 74 65 6c 79 5d 2e 20 20 54 68 65 20 66  arately].  The f
6880: 6f 6c 6c 6f 77 69 6e 67 20 69 73 20 61 20 6c 69  ollowing is a li
6890: 73 74 20 6f 66 0a 74 68 65 20 61 76 61 69 6c 61  st of.the availa
68a0: 62 6c 65 20 73 65 74 74 69 6e 67 73 3a 3c 2f 70  ble settings:</p
68b0: 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 20 5b 53 51  >..<ul>.<li> [SQ
68c0: 4c 49 54 45 5f 4d 41 58 5f 41 54 54 41 43 48 45  LITE_MAX_ATTACHE
68d0: 44 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b  D]  </li>.<li> [
68e0: 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d  SQLITE_MAX_COLUM
68f0: 4e 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b  N]  </li>.<li> [
6900: 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4d 50 4f  SQLITE_MAX_COMPO
6910: 55 4e 44 5f 53 45 4c 45 43 54 5d 20 20 3c 2f 6c  UND_SELECT]  </l
6920: 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  i>.<li> [SQLITE_
6930: 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48 5d 20  MAX_EXPR_DEPTH] 
6940: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
6950: 49 54 45 5f 4d 41 58 5f 46 55 4e 43 54 49 4f 4e  ITE_MAX_FUNCTION
6960: 5f 41 52 47 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69  _ARG]  </li>.<li
6970: 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 45  > [SQLITE_MAX_LE
6980: 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69  NGTH]  </li>.<li
6990: 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 49  > [SQLITE_MAX_LI
69a0: 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54  KE_PATTERN_LENGT
69b0: 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b  H]  </li>.<li> [
69c0: 53 51 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f  SQLITE_MAX_PAGE_
69d0: 43 4f 55 4e 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  COUNT]  </li>.<l
69e0: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 53  i> [SQLITE_MAX_S
69f0: 51 4c 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69  QL_LENGTH]  </li
6a00: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
6a10: 41 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42  AX_VARIABLE_NUMB
6a20: 45 52 5d 20 20 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e  ER]  </li>.</ul>
6a30: 0a 0a 3c 61 20 6e 61 6d 65 3d 22 63 6f 6e 74 72  ..<a name="contr
6a40: 6f 6c 66 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e  olfeatures"></a>
6a50: 0a 3c 68 31 3e 20 4f 70 74 69 6f 6e 73 20 54 6f  .<h1> Options To
6a60: 20 43 6f 6e 74 72 6f 6c 20 4f 70 65 72 61 74 69   Control Operati
6a70: 6e 67 20 43 68 61 72 61 63 74 65 72 69 73 74 69  ng Characteristi
6a80: 63 73 3c 2f 68 31 3e 0a 0a 3c 74 63 6c 3e 0a 43  cs</h1>..<tcl>.C
6a90: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
6aa0: 51 4c 49 54 45 5f 34 5f 42 59 54 45 5f 41 4c 49  QLITE_4_BYTE_ALI
6ab0: 47 4e 45 44 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20  GNED_MALLOC} {. 
6ac0: 20 4f 6e 20 6d 6f 73 74 20 73 79 73 74 65 6d 73   On most systems
6ad0: 2c 20 74 68 65 20 6d 61 6c 6c 6f 63 28 29 20 73  , the malloc() s
6ae0: 79 73 74 65 6d 20 63 61 6c 6c 20 72 65 74 75 72  ystem call retur
6af0: 6e 73 20 61 20 62 75 66 66 65 72 20 74 68 61 74  ns a buffer that
6b00: 20 69 73 0a 20 20 61 6c 69 67 6e 65 64 20 74 6f   is.  aligned to
6b10: 20 61 6e 20 38 2d 62 79 74 65 20 62 6f 75 6e 64   an 8-byte bound
6b20: 61 72 79 2e 20 20 42 75 74 20 6f 6e 20 73 6f 6d  ary.  But on som
6b30: 65 20 73 79 73 74 65 6d 73 20 28 65 78 3a 20 77  e systems (ex: w
6b40: 69 6e 64 6f 77 73 29 20 6d 61 6c 6c 6f 63 28 29  indows) malloc()
6b50: 0a 20 20 72 65 74 75 72 6e 73 20 34 2d 62 79 74  .  returns 4-byt
6b60: 65 20 61 6c 69 67 6e 65 64 20 70 6f 69 6e 74 65  e aligned pointe
6b70: 72 2e 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65  r.  This compile
6b80: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 6d 75 73  -time option mus
6b90: 74 20 62 65 20 75 73 65 64 0a 20 20 6f 6e 20 73  t be used.  on s
6ba0: 79 73 74 65 6d 73 20 74 68 61 74 20 72 65 74 75  ystems that retu
6bb0: 72 6e 20 34 2d 62 79 74 65 20 61 6c 69 67 6e 65  rn 4-byte aligne
6bc0: 64 20 70 6f 69 6e 74 65 72 73 20 66 72 6f 6d 20  d pointers from 
6bd0: 6d 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 43 4f 4d  malloc()..}..COM
6be0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
6bf0: 49 54 45 5f 43 41 53 45 5f 53 45 4e 53 49 54 49  ITE_CASE_SENSITI
6c00: 56 45 5f 4c 49 4b 45 7d 20 7b 0a 20 20 49 66 20  VE_LIKE} {.  If 
6c10: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70  this option is p
6c20: 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 74 68 65  resent, then the
6c30: 20 62 75 69 6c 74 2d 69 6e 20 5b 4c 49 4b 45 5d   built-in [LIKE]
6c40: 20 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 62   operator will b
6c50: 65 0a 20 20 63 61 73 65 20 73 65 6e 73 69 74 69  e.  case sensiti
6c60: 76 65 2e 20 20 54 68 69 73 20 73 61 6d 65 20 65  ve.  This same e
6c70: 66 66 65 63 74 20 63 61 6e 20 62 65 20 61 63 68  ffect can be ach
6c80: 69 65 76 65 64 20 61 74 20 72 75 6e 2d 74 69 6d  ieved at run-tim
6c90: 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20 5b 63  e using.  the [c
6ca0: 61 73 65 5f 73 65 6e 73 69 74 69 76 65 5f 6c 69  ase_sensitive_li
6cb0: 6b 65 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43  ke pragma]..}..C
6cc0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
6cd0: 51 4c 49 54 45 5f 44 49 52 45 43 54 5f 4f 56 45  QLITE_DIRECT_OVE
6ce0: 52 46 4c 4f 57 5f 52 45 41 44 7d 20 7b 0a 20 20  RFLOW_READ} {.  
6cf0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
6d00: 20 69 73 20 70 72 65 73 65 6e 74 2c 20 63 6f 6e   is present, con
6d10: 74 65 6e 74 20 63 6f 6e 74 61 69 6e 65 64 20 69  tent contained i
6d20: 6e 0a 20 20 5b 6f 76 65 72 66 6c 6f 77 20 70 61  n.  [overflow pa
6d30: 67 65 73 5d 20 6f 66 20 74 68 65 20 64 61 74 61  ges] of the data
6d40: 62 61 73 65 20 66 69 6c 65 20 69 73 20 72 65 61  base file is rea
6d50: 64 20 64 69 72 65 63 74 6c 79 20 66 72 6f 6d 20  d directly from 
6d60: 64 69 73 6b 2c 0a 20 20 62 79 70 61 73 73 69 6e  disk,.  bypassin
6d70: 67 20 74 68 65 20 5b 70 61 67 65 20 63 61 63 68  g the [page cach
6d80: 65 5d 2c 20 64 75 72 69 6e 67 20 72 65 61 64 20  e], during read 
6d90: 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20 49  transactions.  I
6da0: 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a 20  n applications. 
6db0: 20 74 68 61 74 20 64 6f 20 61 20 6c 6f 74 20 6f   that do a lot o
6dc0: 66 20 72 65 61 64 73 20 6f 66 20 6c 61 72 67 65  f reads of large
6dd0: 20 42 4c 4f 42 73 2c 20 74 68 69 73 20 6f 70 74   BLOBs, this opt
6de0: 69 6f 6e 20 6d 69 67 68 74 20 69 6d 70 72 6f 76  ion might improv
6df0: 65 20 72 65 61 64 0a 20 20 70 65 72 66 6f 72 6d  e read.  perform
6e00: 61 6e 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ance..}..COMPILE
6e10: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
6e20: 48 41 56 45 5f 49 53 4e 41 4e 7d 20 7b 0a 20 20  HAVE_ISNAN} {.  
6e30: 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  If this option i
6e40: 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20  s present, then 
6e50: 53 51 4c 69 74 65 20 77 69 6c 6c 20 75 73 65 20  SQLite will use 
6e60: 74 68 65 20 69 73 6e 61 6e 28 29 20 66 75 6e 63  the isnan() func
6e70: 74 69 6f 6e 20 66 72 6f 6d 0a 20 20 74 68 65 20  tion from.  the 
6e80: 73 79 73 74 65 6d 20 6d 61 74 68 20 6c 69 62 72  system math libr
6e90: 61 72 79 2e 20 20 54 68 69 73 20 69 73 20 61 6e  ary.  This is an
6ea0: 20 61 6c 69 61 73 20 66 6f 72 20 74 68 65 20 5b   alias for the [
6eb0: 48 41 56 45 5f 49 53 4e 41 4e 5d 20 63 6f 6e 66  HAVE_ISNAN] conf
6ec0: 69 67 75 72 61 74 69 6f 6e 0a 20 20 6f 70 74 69  iguration.  opti
6ed0: 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  on..}..COMPILE_O
6ee0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 53  PTION {SQLITE_OS
6ef0: 5f 4f 54 48 45 52 3d 3c 69 3e 26 6c 74 3b 30 20  _OTHER=<i>&lt;0 
6f00: 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  or 1&gt;</i>} {.
6f10: 20 20 54 68 65 20 6f 70 74 69 6f 6e 20 63 61 75    The option cau
6f20: 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d  ses SQLite to om
6f30: 69 74 20 69 74 73 20 62 75 69 6c 74 2d 69 6e 20  it its built-in 
6f40: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
6f50: 20 69 6e 74 65 72 66 61 63 65 73 0a 20 20 66 6f   interfaces.  fo
6f60: 72 20 55 6e 69 78 2c 20 57 69 6e 64 6f 77 73 2c  r Unix, Windows,
6f70: 20 61 6e 64 20 4f 53 2f 32 2e 20 20 54 68 65 20   and OS/2.  The 
6f80: 72 65 73 75 6c 74 69 6e 67 20 6c 69 62 72 61 72  resulting librar
6f90: 79 20 77 69 6c 6c 20 68 61 76 65 20 6e 6f 20 64  y will have no d
6fa0: 65 66 61 75 6c 74 0a 20 20 5b 73 71 6c 69 74 65  efault.  [sqlite
6fb0: 33 5f 76 66 73 20 7c 20 6f 70 65 72 61 74 69 6e  3_vfs | operatin
6fc0: 67 20 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61  g system interfa
6fd0: 63 65 5d 2e 20 20 41 70 70 6c 69 63 61 74 69 6f  ce].  Applicatio
6fe0: 6e 73 20 6d 75 73 74 20 75 73 65 0a 20 20 5b 73  ns must use.  [s
6ff0: 71 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73  qlite3_vfs_regis
7000: 74 65 72 28 29 5d 20 74 6f 20 72 65 67 69 73 74  ter()] to regist
7010: 65 72 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74  er an appropriat
7020: 65 20 69 6e 74 65 72 66 61 63 65 20 62 65 66 6f  e interface befo
7030: 72 65 0a 20 20 75 73 69 6e 67 20 53 51 4c 69 74  re.  using SQLit
7040: 65 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73  e.  Applications
7050: 20 6d 75 73 74 20 61 6c 73 6f 20 73 75 70 70 6c   must also suppl
7060: 79 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  y implementation
7070: 73 20 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c  s for the.  [sql
7080: 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20  ite3_os_init()] 
7090: 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f  and [sqlite3_os_
70a0: 65 6e 64 28 29 5d 20 69 6e 74 65 72 66 61 63 65  end()] interface
70b0: 73 2e 20 20 54 68 65 20 75 73 75 61 6c 20 70 72  s.  The usual pr
70c0: 61 63 74 69 63 65 0a 20 20 69 73 20 66 6f 72 20  actice.  is for 
70d0: 74 68 65 20 73 75 70 70 6c 69 65 64 20 5b 73 71  the supplied [sq
70e0: 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d  lite3_os_init()]
70f0: 20 74 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69   to invoke [sqli
7100: 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72  te3_vfs_register
7110: 28 29 5d 2e 0a 20 20 53 51 4c 69 74 65 20 77 69  ()]..  SQLite wi
7120: 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ll automatically
7130: 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33   invoke [sqlite3
7140: 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 77 68 65 6e  _os_init()] when
7150: 20 69 74 20 69 6e 69 74 69 61 6c 69 7a 65 73 2e   it initializes.
7160: 0a 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  ..  This option 
7170: 69 73 20 74 79 70 69 63 61 6c 6c 79 20 75 73 65  is typically use
7180: 64 20 77 68 65 6e 20 62 75 69 6c 64 69 6e 67 20  d when building 
7190: 53 51 4c 69 74 65 20 66 6f 72 20 61 6e 20 65 6d  SQLite for an em
71a0: 62 65 64 64 65 64 0a 20 20 70 6c 61 74 66 6f 72  bedded.  platfor
71b0: 6d 20 77 69 74 68 20 61 20 63 75 73 74 6f 6d 20  m with a custom 
71c0: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
71d0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
71e0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 45 43 55  ION {SQLITE_SECU
71f0: 52 45 5f 44 45 4c 45 54 45 7d 20 7b 0a 20 20 54  RE_DELETE} {.  T
7200: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
7210: 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20   option changes 
7220: 74 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74  the default sett
7230: 69 6e 67 20 6f 66 20 74 68 65 0a 20 20 5b 73 65  ing of the.  [se
7240: 63 75 72 65 5f 64 65 6c 65 74 65 20 70 72 61 67  cure_delete prag
7250: 6d 61 5d 2e 20 20 57 68 65 6e 20 74 68 69 73 20  ma].  When this 
7260: 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 74 20 75 73  option is not us
7270: 65 64 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74  ed, secure_delet
7280: 65 20 64 65 66 61 75 6c 74 73 0a 20 20 74 6f 20  e defaults.  to 
7290: 6f 66 66 2e 20 20 57 68 65 6e 20 74 68 69 73 20  off.  When this 
72a0: 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e  option is presen
72b0: 74 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65  t, secure_delete
72c0: 20 64 65 66 61 75 6c 74 73 20 74 6f 20 6f 6e 2e   defaults to on.
72d0: 0a 0a 20 20 54 68 65 20 73 65 63 75 72 65 5f 64  ..  The secure_d
72e0: 65 6c 65 74 65 20 73 65 74 74 69 6e 67 20 63 61  elete setting ca
72f0: 75 73 65 73 20 64 65 6c 65 74 65 64 20 63 6f 6e  uses deleted con
7300: 74 65 6e 74 20 74 6f 20 62 65 20 6f 76 65 72 77  tent to be overw
7310: 72 69 74 74 65 6e 20 77 69 74 68 0a 20 20 7a 65  ritten with.  ze
7320: 72 6f 73 2e 20 20 54 68 65 72 65 20 69 73 20 61  ros.  There is a
7330: 20 73 6d 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e   small performan
7340: 63 65 20 70 65 6e 61 6c 74 79 20 73 69 6e 63 65  ce penalty since
7350: 20 61 64 64 69 74 69 6f 6e 61 6c 20 49 2f 4f 0a   additional I/O.
7360: 20 20 6d 75 73 74 20 6f 63 63 75 72 2e 20 20 4f    must occur.  O
7370: 6e 20 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64  n the other hand
7380: 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20  , secure_delete 
7390: 63 61 6e 20 70 72 65 76 65 6e 74 20 66 72 61 67  can prevent frag
73a0: 6d 65 6e 74 73 20 6f 66 20 0a 20 20 73 65 6e 73  ments of .  sens
73b0: 69 74 69 76 65 20 69 6e 66 6f 72 6d 61 74 69 6f  itive informatio
73c0: 6e 20 66 72 6f 6d 20 6c 69 6e 67 65 72 69 6e 67  n from lingering
73d0: 20 69 6e 20 75 6e 75 73 65 64 20 70 61 72 74 73   in unused parts
73e0: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
73f0: 20 66 69 6c 65 20 0a 20 20 61 66 74 65 72 20 69   file .  after i
7400: 74 20 68 61 73 20 62 65 65 6e 20 64 65 6c 65 74  t has been delet
7410: 65 64 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63  ed.  See the doc
7420: 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e 20 74 68  umentation on th
7430: 65 0a 20 20 5b 73 65 63 75 72 65 5f 64 65 6c 65  e.  [secure_dele
7440: 74 65 20 70 72 61 67 6d 61 5d 20 66 6f 72 20 61  te pragma] for a
7450: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
7460: 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ation..}..COMPIL
7470: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7480: 5f 54 48 52 45 41 44 53 41 46 45 3d 3c 69 3e 26  _THREADSAFE=<i>&
7490: 6c 74 3b 30 20 6f 72 20 31 20 6f 72 20 32 26 67  lt;0 or 1 or 2&g
74a0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  t;</i>} {.  This
74b0: 20 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73   option controls
74c0: 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20   whether or not 
74d0: 63 6f 64 65 20 69 73 20 69 6e 63 6c 75 64 65 64  code is included
74e0: 20 69 6e 20 53 51 4c 69 74 65 20 74 6f 0a 20 20   in SQLite to.  
74f0: 65 6e 61 62 6c 65 20 69 74 20 74 6f 20 6f 70 65  enable it to ope
7500: 72 61 74 65 20 73 61 66 65 6c 79 20 69 6e 20 61  rate safely in a
7510: 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 65   multithreaded e
7520: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 20 20 54 68 65  nvironment.  The
7530: 0a 20 20 64 65 66 61 75 6c 74 20 69 73 20 53 51  .  default is SQ
7540: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
7550: 31 20 77 68 69 63 68 20 69 73 20 73 61 66 65 20  1 which is safe 
7560: 66 6f 72 20 75 73 65 20 69 6e 20 61 20 6d 75 6c  for use in a mul
7570: 74 69 74 68 72 65 61 64 65 64 0a 20 20 65 6e 76  tithreaded.  env
7580: 69 72 6f 6e 6d 65 6e 74 2e 20 20 57 68 65 6e 20  ironment.  When 
7590: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51  compiled with SQ
75a0: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
75b0: 30 20 61 6c 6c 20 6d 75 74 65 78 69 6e 67 20 63  0 all mutexing c
75c0: 6f 64 65 0a 20 20 69 73 20 6f 6d 69 74 74 65 64  ode.  is omitted
75d0: 20 61 6e 64 20 69 74 20 69 73 20 75 6e 73 61 66   and it is unsaf
75e0: 65 20 74 6f 20 75 73 65 20 53 51 4c 69 74 65 20  e to use SQLite 
75f0: 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64  in a multithread
7600: 65 64 20 70 72 6f 67 72 61 6d 2e 0a 20 20 57 68  ed program..  Wh
7610: 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  en compiled with
7620: 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
7630: 46 45 3d 32 2c 20 53 51 4c 69 74 65 20 63 61 6e  FE=2, SQLite can
7640: 20 62 65 20 75 73 65 64 20 69 6e 20 61 20 6d 75   be used in a mu
7650: 6c 74 69 74 68 72 65 61 64 65 64 0a 20 20 70 72  ltithreaded.  pr
7660: 6f 67 72 61 6d 20 73 6f 20 6c 6f 6e 67 20 61 73  ogram so long as
7670: 20 6e 6f 20 74 77 6f 20 74 68 72 65 61 64 73 20   no two threads 
7680: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
7690: 68 65 20 73 61 6d 65 0a 20 20 5b 64 61 74 61 62  he same.  [datab
76a0: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20  ase connection] 
76b0: 28 6f 72 20 61 6e 79 20 5b 70 72 65 70 61 72 65  (or any [prepare
76c0: 64 20 73 74 61 74 65 6d 65 6e 74 73 5d 20 64 65  d statements] de
76d0: 72 69 76 65 64 20 66 72 6f 6d 0a 20 20 74 68 61  rived from.  tha
76e0: 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  t database conne
76f0: 63 74 69 6f 6e 29 20 61 74 20 74 68 65 20 73 61  ction) at the sa
7700: 6d 65 20 74 69 6d 65 2e 0a 0a 20 20 54 6f 20 70  me time...  To p
7710: 75 74 20 69 74 20 61 6e 6f 74 68 65 72 20 77 61  ut it another wa
7720: 79 2c 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44  y, SQLITE_THREAD
7730: 53 41 46 45 3d 31 20 73 65 74 73 20 74 68 65 20  SAFE=1 sets the 
7740: 64 65 66 61 75 6c 74 0a 20 20 5b 74 68 72 65 61  default.  [threa
7750: 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 65  ding mode] to Se
7760: 72 69 61 6c 69 7a 65 64 2e 20 20 53 51 4c 49 54  rialized.  SQLIT
7770: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32 20 73  E_THREADSAFE=2 s
7780: 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a  ets the default.
7790: 20 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64    [threading mod
77a0: 65 5d 20 74 6f 20 4d 75 6c 74 69 2d 74 68 72 65  e] to Multi-thre
77b0: 61 64 65 64 2e 20 20 41 6e 64 20 53 51 4c 49 54  aded.  And SQLIT
77c0: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 20 73  E_THREADSAFE=0 s
77d0: 65 74 73 20 74 68 65 0a 20 20 5b 74 68 72 65 61  ets the.  [threa
77e0: 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 69  ding mode] to Si
77f0: 6e 67 6c 65 2d 74 68 72 65 61 64 65 64 2e 0a 0a  ngle-threaded...
7800: 20 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 53    The value of S
7810: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
7820: 20 63 61 6e 20 62 65 20 64 65 74 65 72 6d 69 6e   can be determin
7830: 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 0a 20  ed at run-time. 
7840: 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69   using the [sqli
7850: 74 65 33 5f 74 68 72 65 61 64 73 61 66 65 28 29  te3_threadsafe()
7860: 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a 0a 20 20  ] interface...  
7870: 57 68 65 6e 20 53 51 4c 69 74 65 20 68 61 73 20  When SQLite has 
7880: 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69  been compiled wi
7890: 74 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44  th SQLITE_THREAD
78a0: 53 41 46 45 3d 31 20 6f 72 0a 20 20 53 51 4c 49  SAFE=1 or.  SQLI
78b0: 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32 20  TE_THREADSAFE=2 
78c0: 74 68 65 6e 20 74 68 65 20 5b 74 68 72 65 61 64  then the [thread
78d0: 69 6e 67 20 6d 6f 64 65 5d 0a 20 20 63 61 6e 20  ing mode].  can 
78e0: 62 65 20 61 6c 74 65 72 65 64 20 61 74 20 72 75  be altered at ru
78f0: 6e 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65  n-time using the
7900: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
7910: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f  ()] interface to
7920: 67 65 74 68 65 72 0a 20 20 77 69 74 68 20 6f 6e  gether.  with on
7930: 65 20 6f 66 20 74 68 65 73 65 20 76 65 72 62 73  e of these verbs
7940: 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e  :..  <ul>.  <li>
7950: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53  [SQLITE_CONFIG_S
7960: 49 4e 47 4c 45 54 48 52 45 41 44 5d 0a 20 20 3c  INGLETHREAD].  <
7970: 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  li>[SQLITE_CONFI
7980: 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 5d 0a 20  G_MULTITHREAD]. 
7990: 20 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e   <li>[SQLITE_CON
79a0: 46 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 5d 0a  FIG_SERIALIZED].
79b0: 20 20 3c 2f 75 6c 3e 0a 0a 20 20 54 68 65 20 5b    </ul>..  The [
79c0: 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55  SQLITE_OPEN_NOMU
79d0: 54 45 58 5d 20 61 6e 64 0a 20 20 5b 53 51 4c 49  TEX] and.  [SQLI
79e0: 54 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45  TE_OPEN_FULLMUTE
79f0: 58 5d 20 66 6c 61 67 73 20 74 6f 20 5b 73 71 6c  X] flags to [sql
7a00: 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 20  ite3_open_v2()] 
7a10: 63 61 6e 20 61 6c 73 6f 20 62 65 20 75 73 65 64  can also be used
7a20: 0a 20 20 74 6f 20 61 64 6a 75 73 74 20 74 68 65  .  to adjust the
7a30: 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
7a40: 5d 20 6f 66 20 69 6e 64 69 76 69 64 75 61 6c 20  ] of individual 
7a50: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
7a60: 74 69 6f 6e 73 5d 0a 20 20 61 74 20 72 75 6e 2d  tions].  at run-
7a70: 74 69 6d 65 2e 0a 0a 20 20 4e 6f 74 65 20 74 68  time...  Note th
7a80: 61 74 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69  at when SQLite i
7a90: 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  s compiled with 
7aa0: 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
7ab0: 45 3d 30 2c 20 74 68 65 20 63 6f 64 65 0a 20 20  E=0, the code.  
7ac0: 74 6f 20 6d 61 6b 65 20 53 51 4c 69 74 65 20 74  to make SQLite t
7ad0: 68 72 65 61 64 73 61 66 65 20 69 73 20 6f 6d 69  hreadsafe is omi
7ae0: 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75  tted from the bu
7af0: 69 6c 64 2e 20 20 57 68 65 6e 20 74 68 69 73 20  ild.  When this 
7b00: 6f 63 63 75 72 73 2c 0a 20 20 69 74 20 69 73 20  occurs,.  it is 
7b10: 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 63 68  impossible to ch
7b20: 61 6e 67 65 20 74 68 65 20 5b 74 68 72 65 61 64  ange the [thread
7b30: 69 6e 67 20 6d 6f 64 65 5d 20 61 74 20 73 74 61  ing mode] at sta
7b40: 72 74 2d 74 69 6d 65 20 6f 72 20 72 75 6e 2d 74  rt-time or run-t
7b50: 69 6d 65 2e 0a 0a 20 20 53 65 65 20 74 68 65 20  ime...  See the 
7b60: 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
7b70: 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66   documentation f
7b80: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
7b90: 66 6f 72 6d 61 74 69 6f 6e 0a 20 20 6f 6e 20 61  formation.  on a
7ba0: 73 70 65 63 74 73 20 6f 66 20 75 73 69 6e 67 20  spects of using 
7bb0: 53 51 4c 69 74 65 20 69 6e 20 61 20 6d 75 6c 74  SQLite in a mult
7bc0: 69 74 68 72 65 61 64 65 64 20 65 6e 76 69 72 6f  ithreaded enviro
7bd0: 6e 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  nment..}..COMPIL
7be0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7bf0: 5f 54 45 4d 50 5f 53 54 4f 52 45 3d 3c 69 3e 26  _TEMP_STORE=<i>&
7c00: 6c 74 3b 30 20 74 68 72 6f 75 67 68 20 33 26 67  lt;0 through 3&g
7c10: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  t;</i>} {.  This
7c20: 20 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73   option controls
7c30: 20 77 68 65 74 68 65 72 20 74 65 6d 70 6f 72 61   whether tempora
7c40: 72 79 20 66 69 6c 65 73 20 61 72 65 20 73 74 6f  ry files are sto
7c50: 72 65 64 20 6f 6e 20 64 69 73 6b 20 6f 72 0a 20  red on disk or. 
7c60: 20 69 6e 20 6d 65 6d 6f 72 79 2e 20 20 54 68 65   in memory.  The
7c70: 20 6d 65 61 6e 69 6e 67 73 20 66 6f 72 20 76 61   meanings for va
7c80: 72 69 6f 75 73 20 73 65 74 74 69 6e 67 73 20 6f  rious settings o
7c90: 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  f this compile-t
7ca0: 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 61 72 65  ime.  option are
7cb0: 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 0a 20 20   as follows:..  
7cc0: 3c 74 61 62 6c 65 20 63 65 6c 6c 70 61 64 64 69  <table cellpaddi
7cd0: 6e 67 3d 22 32 22 20 62 6f 72 64 65 72 3d 22 31  ng="2" border="1
7ce0: 22 3e 0a 20 20 3c 74 72 3e 3c 74 68 3e 53 51 4c  ">.  <tr><th>SQL
7cf0: 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3c 2f  ITE_TEMP_STORE</
7d00: 74 68 3e 3c 74 68 3e 4d 65 61 6e 69 6e 67 3c 2f  th><th>Meaning</
7d10: 74 68 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c  th></tr>.  <tr><
7d20: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
7d30: 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77 61  ">0</td><td>Alwa
7d40: 79 73 20 75 73 65 20 74 65 6d 70 6f 72 61 72 79  ys use temporary
7d50: 20 66 69 6c 65 73 3c 2f 74 64 3e 3c 2f 74 72 3e   files</td></tr>
7d60: 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e  .  <tr><td align
7d70: 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e  ="center">1</td>
7d80: 3c 74 64 3e 55 73 65 20 66 69 6c 65 73 20 62 79  <td>Use files by
7d90: 20 64 65 66 61 75 6c 74 20 62 75 74 20 61 6c 6c   default but all
7da0: 6f 77 20 74 68 65 0a 20 20 5b 50 52 41 47 4d 41  ow the.  [PRAGMA
7db0: 20 74 65 6d 70 5f 73 74 6f 72 65 5d 20 63 6f 6d   temp_store] com
7dc0: 6d 61 6e 64 20 74 6f 20 6f 76 65 72 72 69 64 65  mand to override
7dd0: 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72  </td></tr>.  <tr
7de0: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
7df0: 65 72 22 3e 32 3c 2f 74 64 3e 3c 74 64 3e 55 73  er">2</td><td>Us
7e00: 65 20 6d 65 6d 6f 72 79 20 62 79 20 64 65 66 61  e memory by defa
7e10: 75 6c 74 20 62 75 74 20 61 6c 6c 6f 77 20 74 68  ult but allow th
7e20: 65 0a 20 20 5b 50 52 41 47 4d 41 20 74 65 6d 70  e.  [PRAGMA temp
7e30: 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64 20  _store] command 
7e40: 74 6f 20 6f 76 65 72 72 69 64 65 3c 2f 74 64 3e  to override</td>
7e50: 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20  </tr>.  <tr><td 
7e60: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 33  align="center">3
7e70: 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73 20  </td><td>Always 
7e80: 75 73 65 20 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c  use memory</td><
7e90: 2f 74 72 3e 0a 20 20 3c 2f 74 61 62 6c 65 3e 0a  /tr>.  </table>.
7ea0: 0a 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 73  .  The default s
7eb0: 65 74 74 69 6e 67 20 69 73 20 31 2e 20 20 0a 20  etting is 1.  . 
7ec0: 20 41 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f   Additional info
7ed0: 72 6d 61 74 69 6f 6e 20 63 61 6e 20 62 65 20 66  rmation can be f
7ee0: 6f 75 6e 64 20 69 6e 20 5b 74 65 6d 70 73 74 6f  ound in [tempsto
7ef0: 72 65 20 7c 20 74 65 6d 70 66 69 6c 65 73 2e 68  re | tempfiles.h
7f00: 74 6d 6c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tml]..}..COMPILE
7f10: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7f20: 54 52 41 43 45 5f 53 49 5a 45 5f 4c 49 4d 49 54  TRACE_SIZE_LIMIT
7f30: 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49  =<i>N</i>} {.  I
7f40: 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20  f this macro is 
7f50: 64 65 66 69 6e 65 64 20 74 6f 20 61 20 70 6f 73  defined to a pos
7f60: 69 74 69 76 65 20 69 6e 74 65 67 65 72 20 3c 69  itive integer <i
7f70: 3e 4e 3c 2f 69 3e 2c 20 74 68 65 6e 20 74 68 65  >N</i>, then the
7f80: 20 6c 65 6e 67 74 68 20 6f 66 0a 20 20 73 74 72   length of.  str
7f90: 69 6e 67 73 20 61 6e 64 20 42 4c 4f 42 20 74 68  ings and BLOB th
7fa0: 61 74 20 61 72 65 20 65 78 70 61 6e 64 65 64 20  at are expanded 
7fb0: 69 6e 74 6f 20 70 61 72 61 6d 65 74 65 72 73 20  into parameters 
7fc0: 69 6e 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66  in the output of
7fd0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63  .  [sqlite3_trac
7fe0: 65 28 29 5d 20 69 73 20 6c 69 6d 69 74 65 64 20  e()] is limited 
7ff0: 74 6f 20 3c 69 3e 4e 3c 2f 69 3e 20 62 79 74 65  to <i>N</i> byte
8000: 73 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  s.  .}..COMPILE_
8010: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 55  OPTION {SQLITE_U
8020: 53 45 5f 55 52 49 7d 20 7b 0a 20 20 54 68 69 73  SE_URI} {.  This
8030: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74   option causes t
8040: 68 65 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65  he [URI filename
8050: 5d 20 70 72 6f 63 65 73 73 20 6c 6f 67 69 63 20  ] process logic 
8060: 74 6f 20 62 65 20 65 6e 61 62 6c 65 64 20 62 79  to be enabled by
8070: 20 0a 20 20 64 65 66 61 75 6c 74 2e 20 20 0a 7d   .  default.  .}
8080: 0a 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d  ..</tcl>..<a nam
8090: 65 3d 22 65 6e 61 62 6c 65 66 65 61 74 75 72 65  e="enablefeature
80a0: 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 4f 70 74  s"></a>.<h1> Opt
80b0: 69 6f 6e 73 20 54 6f 20 45 6e 61 62 6c 65 20 46  ions To Enable F
80c0: 65 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79  eatures Normally
80d0: 20 54 75 72 6e 65 64 20 4f 66 66 3c 2f 68 31 3e   Turned Off</h1>
80e0: 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f  ..<tcl>.COMPILE_
80f0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 41  OPTION {SQLITE_A
8100: 4c 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f 52 49  LLOW_URI_AUTHORI
8110: 54 59 7d 20 7b 0a 20 20 5b 55 52 49 20 66 69 6c  TY} {.  [URI fil
8120: 65 6e 61 6d 65 73 5d 20 6e 6f 72 6d 61 6c 6c 79  enames] normally
8130: 20 74 68 72 6f 77 73 20 61 6e 20 65 72 72 6f 72   throws an error
8140: 20 69 66 20 74 68 65 20 61 75 74 68 6f 72 69 74   if the authorit
8150: 79 20 73 65 63 74 69 6f 6e 20 69 73 0a 20 20 6e  y section is.  n
8160: 6f 74 20 65 69 74 68 65 72 20 65 6d 70 74 79 20  ot either empty 
8170: 6f 72 20 22 6c 6f 63 61 6c 68 6f 73 74 22 2e 20  or "localhost". 
8180: 20 48 6f 77 65 76 65 72 2c 20 69 66 20 53 51 4c   However, if SQL
8190: 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20  ite is compiled 
81a0: 77 69 74 68 0a 20 20 74 68 65 20 53 51 4c 49 54  with.  the SQLIT
81b0: 45 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54 48  E_ALLOW_URI_AUTH
81c0: 4f 52 49 54 59 20 63 6f 6d 70 69 6c 65 2d 74 69  ORITY compile-ti
81d0: 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20  me option, then 
81e0: 74 68 65 20 55 52 49 20 69 73 0a 20 20 63 6f 6e  the URI is.  con
81f0: 76 65 72 74 65 64 20 69 6e 74 6f 20 61 20 55 6e  verted into a Un
8200: 69 66 6f 72 6d 20 4e 61 6d 69 6e 67 20 43 6f 6e  iform Naming Con
8210: 76 65 6e 74 69 6f 6e 20 28 55 4e 43 29 20 66 69  vention (UNC) fi
8220: 6c 65 6e 61 6d 65 20 61 6e 64 20 70 61 73 73 65  lename and passe
8230: 64 0a 20 20 64 6f 77 6e 20 74 6f 20 74 68 65 20  d.  down to the 
8240: 75 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61  underlying opera
8250: 74 69 6e 67 20 73 79 73 74 65 6d 20 74 68 61 74  ting system that
8260: 20 77 61 79 2e 20 20 0a 20 20 3c 70 3e 0a 20 20   way.  .  <p>.  
8270: 53 6f 6d 65 20 66 75 74 75 72 65 20 76 65 72 73  Some future vers
8280: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d  ions of SQLite m
8290: 61 79 20 63 68 61 6e 67 65 20 74 6f 20 65 6e 61  ay change to ena
82a0: 62 6c 65 20 74 68 69 73 20 66 65 61 74 75 72 65  ble this feature
82b0: 0a 20 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d  .  by default..}
82c0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
82d0: 7b 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43 4f  {SQLITE_ALLOW_CO
82e0: 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41  VERING_INDEX_SCA
82f0: 4e 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26  N=<i>&lt;0 or 1&
8300: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
8310: 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 20 6d  s C-preprocess m
8320: 61 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20  acro determines 
8330: 74 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74  the default sett
8340: 69 6e 67 20 6f 66 20 74 68 65 0a 20 20 5b 53 51  ing of the.  [SQ
8350: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45  LITE_CONFIG_COVE
8360: 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 5d  RING_INDEX_SCAN]
8370: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73   configuration s
8380: 65 74 74 69 6e 67 2e 20 20 49 74 20 64 65 66 61  etting.  It defa
8390: 75 6c 74 73 0a 20 20 74 6f 20 31 20 28 6f 6e 29  ults.  to 1 (on)
83a0: 20 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68 61   which means tha
83b0: 74 20 63 6f 76 65 72 69 6e 67 20 69 6e 64 69 63  t covering indic
83c0: 65 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20  es are used for 
83d0: 66 75 6c 6c 20 74 61 62 6c 65 0a 20 20 73 63 61  full table.  sca
83e0: 6e 73 20 77 68 65 72 65 20 70 6f 73 73 69 62 6c  ns where possibl
83f0: 65 2c 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 72  e, in order to r
8400: 65 64 75 63 65 20 49 2f 4f 20 61 6e 64 20 69 6d  educe I/O and im
8410: 70 72 6f 76 65 20 70 65 72 66 6f 72 6d 61 6e 63  prove performanc
8420: 65 2e 0a 20 20 48 6f 77 65 76 65 72 2c 20 74 68  e..  However, th
8430: 65 20 75 73 65 20 6f 66 20 61 20 63 6f 76 65 72  e use of a cover
8440: 69 6e 67 20 69 6e 64 65 78 20 66 6f 72 20 61 20  ing index for a 
8450: 66 75 6c 6c 20 73 63 61 6e 20 77 69 6c 6c 20 63  full scan will c
8460: 61 75 73 65 20 72 65 73 75 6c 74 73 0a 20 20 74  ause results.  t
8470: 6f 20 61 70 70 65 61 72 20 69 6e 20 61 20 64 69  o appear in a di
8480: 66 66 65 72 65 6e 74 20 6f 72 64 65 72 20 66 72  fferent order fr
8490: 6f 6d 20 6c 65 67 61 63 79 2c 20 77 68 69 63 68  om legacy, which
84a0: 20 63 6f 75 6c 64 20 63 61 75 73 65 20 73 6f 6d   could cause som
84b0: 65 0a 20 20 28 69 6e 63 6f 72 72 65 63 74 6c 79  e.  (incorrectly
84c0: 2d 63 6f 64 65 64 29 20 6c 65 67 61 63 79 20 61  -coded) legacy a
84d0: 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20 62  pplications to b
84e0: 72 65 61 6b 2e 20 20 48 65 6e 63 65 2c 20 74 68  reak.  Hence, th
84f0: 65 20 63 6f 76 65 72 69 6e 67 0a 20 20 69 6e 64  e covering.  ind
8500: 65 78 20 73 63 61 6e 20 6f 70 74 69 6f 6e 20 63  ex scan option c
8510: 61 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 61  an be disabled a
8520: 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  t compile-time o
8530: 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 77  n systems that w
8540: 68 61 74 0a 20 20 74 6f 20 6d 69 6e 69 6d 69 7a  hat.  to minimiz
8550: 65 20 74 68 65 69 72 20 72 69 73 6b 20 6f 66 20  e their risk of 
8560: 65 78 70 6f 73 69 6e 67 20 65 72 72 6f 72 73 20  exposing errors 
8570: 69 6e 20 6c 65 67 61 63 79 20 61 70 70 6c 69 63  in legacy applic
8580: 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  ations..}..COMPI
8590: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
85a0: 45 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d  E_ENABLE_8_3_NAM
85b0: 45 53 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 32  ES=<i>&lt;1 or 2
85c0: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66  &gt;</i>} {.  If
85d0: 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65   this C-preproce
85e0: 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65  ssor macro is de
85f0: 66 69 6e 65 64 2c 20 74 68 65 6e 20 65 78 74 72  fined, then extr
8600: 61 20 63 6f 64 65 20 69 73 0a 20 20 69 6e 63 6c  a code is.  incl
8610: 75 64 65 64 20 74 68 61 74 20 61 6c 6c 6f 77 73  uded that allows
8620: 20 53 51 4c 69 74 65 20 74 6f 20 66 75 6e 63 74   SQLite to funct
8630: 69 6f 6e 20 6f 6e 20 61 20 66 69 6c 65 73 79 73  ion on a filesys
8640: 74 65 6d 20 74 68 61 74 0a 20 20 6f 6e 6c 79 20  tem that.  only 
8650: 73 75 70 70 6f 72 74 20 38 2b 33 20 66 69 6c 65  support 8+3 file
8660: 6e 61 6d 65 73 2e 20 20 49 66 20 74 68 65 20 76  names.  If the v
8670: 61 6c 75 65 20 6f 66 20 74 68 69 73 20 6d 61 63  alue of this mac
8680: 72 6f 20 69 73 20 31 2c 0a 20 20 74 68 65 6e 20  ro is 1,.  then 
8690: 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61  the default beha
86a0: 76 69 6f 72 20 69 73 20 74 6f 20 63 6f 6e 74 69  vior is to conti
86b0: 6e 75 65 20 74 6f 20 75 73 65 20 6c 6f 6e 67 20  nue to use long 
86c0: 66 69 6c 65 6e 61 6d 65 73 20 61 6e 64 0a 20 20  filenames and.  
86d0: 74 6f 20 6f 6e 6c 79 20 75 73 65 20 38 2b 33 20  to only use 8+3 
86e0: 66 69 6c 65 6e 61 6d 65 73 20 69 66 20 74 68 65  filenames if the
86f0: 20 0a 20 20 64 61 74 61 62 61 73 65 20 63 6f 6e   .  database con
8700: 6e 65 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 65  nection is opene
8710: 64 20 75 73 69 6e 67 20 5b 55 52 49 20 66 69 6c  d using [URI fil
8720: 65 6e 61 6d 65 73 5d 20 77 69 74 68 0a 20 20 74  enames] with.  t
8730: 68 65 20 22 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65  he "<tt>8_3_name
8740: 73 3d 31 3c 2f 74 74 3e 22 20 71 75 65 72 79 20  s=1</tt>" query 
8750: 70 61 72 61 6d 65 74 65 72 2e 20 20 49 66 20 74  parameter.  If t
8760: 68 65 20 76 61 6c 75 65 20 6f 66 0a 20 20 74 68  he value of.  th
8770: 69 73 20 6d 61 63 72 6f 20 69 73 20 32 2c 20 74  is macro is 2, t
8780: 68 65 6e 20 74 68 65 20 75 73 65 20 6f 66 20 38  hen the use of 8
8790: 2b 33 20 66 69 6c 65 6e 61 6d 65 73 20 62 65 63  +3 filenames bec
87a0: 6f 6d 65 73 20 74 68 65 20 64 65 66 61 75 6c 74  omes the default
87b0: 0a 20 20 62 75 74 20 6d 61 79 20 62 65 20 64 69  .  but may be di
87c0: 73 61 62 6c 65 64 20 6f 6e 20 75 73 69 6e 67 20  sabled on using 
87d0: 74 68 65 20 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65  the <tt>8_3_name
87e0: 73 3d 30 3c 2f 74 74 3e 20 71 75 65 72 79 20 70  s=0</tt> query p
87f0: 61 72 61 6d 65 74 65 72 2e 0a 7d 0a 0a 43 4f 4d  arameter..}..COM
8800: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
8810: 49 54 45 5f 45 4e 41 42 4c 45 5f 41 50 49 5f 41  ITE_ENABLE_API_A
8820: 52 4d 4f 52 7d 20 7b 0a 20 20 57 68 65 6e 20 64  RMOR} {.  When d
8830: 65 66 69 6e 65 64 2c 20 74 68 69 73 20 43 2d 70  efined, this C-p
8840: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
8850: 6f 20 61 63 74 69 76 61 74 65 73 20 65 78 74 72  o activates extr
8860: 61 20 63 6f 64 65 20 74 68 61 74 0a 20 20 61 74  a code that.  at
8870: 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65 63 74  tempts to detect
8880: 20 6d 69 73 75 73 65 20 6f 66 20 74 68 65 20 53   misuse of the S
8890: 51 4c 69 74 65 20 41 50 49 2c 20 73 75 63 68 20  QLite API, such 
88a0: 61 73 20 70 61 73 73 69 6e 67 20 69 6e 20 4e 55  as passing in NU
88b0: 4c 4c 0a 20 20 70 6f 69 6e 74 65 72 73 20 74 6f  LL.  pointers to
88c0: 20 72 65 71 75 69 72 65 64 20 70 61 72 61 6d 65   required parame
88d0: 74 65 72 73 20 6f 72 20 75 73 69 6e 67 20 6f 62  ters or using ob
88e0: 6a 65 63 74 73 20 61 66 74 65 72 20 74 68 65 79  jects after they
88f0: 20 68 61 76 65 20 62 65 65 6e 0a 20 20 64 65 73   have been.  des
8900: 74 72 6f 79 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  troyed..}..COMPI
8910: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
8920: 45 5f 45 4e 41 42 4c 45 5f 41 54 4f 4d 49 43 5f  E_ENABLE_ATOMIC_
8930: 57 52 49 54 45 7d 20 7b 0a 20 20 49 66 20 74 68  WRITE} {.  If th
8940: 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f  is C-preprocesso
8950: 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e  r macro is defin
8960: 65 64 20 61 6e 64 20 69 66 20 74 68 65 0a 20 20  ed and if the.  
8970: 78 44 65 76 69 63 65 43 68 61 72 61 63 74 65 72  xDeviceCharacter
8980: 69 73 74 69 63 73 20 6d 65 74 68 6f 64 20 6f 66  istics method of
8990: 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74   [sqlite3_io_met
89a0: 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 66 6f 72  hods] object for
89b0: 0a 20 20 61 20 64 61 74 61 62 61 73 65 20 66 69  .  a database fi
89c0: 6c 65 20 72 65 70 6f 72 74 73 20 28 76 69 61 20  le reports (via 
89d0: 6f 6e 65 20 6f 66 20 74 68 65 20 5b 53 51 4c 49  one of the [SQLI
89e0: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 5d  TE_IOCAP_ATOMIC]
89f0: 20 62 69 74 73 29 0a 20 20 74 68 61 74 20 74 68   bits).  that th
8a00: 65 20 66 69 6c 65 73 79 73 74 65 6d 20 73 75 70  e filesystem sup
8a10: 70 6f 72 74 73 20 61 74 6f 6d 69 63 20 77 72 69  ports atomic wri
8a20: 74 65 73 20 61 6e 64 20 69 66 20 61 20 74 72 61  tes and if a tra
8a30: 6e 73 61 63 74 69 6f 6e 0a 20 20 69 6e 76 6f 6c  nsaction.  invol
8a40: 76 65 73 20 61 20 63 68 61 6e 67 65 20 74 6f 20  ves a change to 
8a50: 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 70 61  only a single pa
8a60: 67 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  ge of the databa
8a70: 73 65 20 66 69 6c 65 2c 0a 20 20 74 68 65 6e 20  se file,.  then 
8a80: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
8a90: 63 6f 6d 6d 69 74 73 20 77 69 74 68 20 6a 75 73  commits with jus
8aa0: 74 20 61 20 73 69 6e 67 6c 65 20 77 72 69 74 65  t a single write
8ab0: 20 72 65 71 75 65 73 74 20 6f 66 0a 20 20 61 20   request of.  a 
8ac0: 73 69 6e 67 6c 65 20 70 61 67 65 20 6f 66 20 74  single page of t
8ad0: 68 65 20 64 61 74 61 62 61 73 65 20 61 6e 64 20  he database and 
8ae0: 6e 6f 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72  no rollback jour
8af0: 6e 61 6c 20 69 73 20 63 72 65 61 74 65 64 0a 20  nal is created. 
8b00: 20 6f 72 20 77 72 69 74 74 65 6e 2e 20 20 4f 6e   or written.  On
8b10: 20 66 69 6c 65 73 79 73 74 65 6d 73 20 74 68 61   filesystems tha
8b20: 74 20 73 75 70 70 6f 72 74 20 61 74 6f 6d 69 63  t support atomic
8b30: 20 77 72 69 74 65 73 2c 20 74 68 69 73 0a 20 20   writes, this.  
8b40: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 63 61 6e  optimization can
8b50: 20 72 65 73 75 6c 74 20 69 6e 20 73 69 67 6e 69   result in signi
8b60: 66 69 63 61 6e 74 20 73 70 65 65 64 20 69 6d 70  ficant speed imp
8b70: 72 6f 76 65 6d 65 6e 74 73 20 66 6f 72 0a 20 20  rovements for.  
8b80: 73 6d 61 6c 6c 20 75 70 64 61 74 65 73 2e 20 20  small updates.  
8b90: 48 6f 77 65 76 65 72 2c 20 66 65 77 20 66 69 6c  However, few fil
8ba0: 65 73 79 73 74 65 6d 73 20 73 75 70 70 6f 72 74  esystems support
8bb0: 20 74 68 69 73 20 63 61 70 61 62 69 6c 69 74 79   this capability
8bc0: 0a 20 20 61 6e 64 20 74 68 65 20 63 6f 64 65 20  .  and the code 
8bd0: 70 61 74 68 73 20 74 68 61 74 20 63 68 65 63 6b  paths that check
8be0: 20 66 6f 72 20 74 68 69 73 20 63 61 70 61 62 69   for this capabi
8bf0: 6c 69 74 79 20 73 6c 6f 77 20 64 6f 77 6e 20 77  lity slow down w
8c00: 72 69 74 65 0a 20 20 70 65 72 66 6f 72 6d 61 6e  rite.  performan
8c10: 63 65 20 6f 6e 20 73 79 73 74 65 6d 73 20 74 68  ce on systems th
8c20: 61 74 20 6c 61 63 6b 20 61 74 6f 6d 69 63 20 77  at lack atomic w
8c30: 72 69 74 65 20 63 61 70 61 62 69 6c 69 74 79 2c  rite capability,
8c40: 20 73 6f 20 74 68 69 73 0a 20 20 66 65 61 74 75   so this.  featu
8c50: 72 65 20 69 73 20 64 69 73 61 62 6c 65 64 20 62  re is disabled b
8c60: 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a 43 4f  y default..}..CO
8c70: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
8c80: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 42 41 54 43  LITE_ENABLE_BATC
8c90: 48 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 7d 20  H_ATOMIC_WRITE} 
8ca0: 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65  {.  This compile
8cb0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 65 6e 61  -time option ena
8cc0: 62 6c 65 73 20 53 51 4c 69 74 65 20 74 6f 20 74  bles SQLite to t
8cd0: 61 6b 65 20 61 64 76 61 6e 74 61 67 65 20 62 61  ake advantage ba
8ce0: 74 63 68 0a 20 20 61 74 6f 6d 69 63 20 77 72 69  tch.  atomic wri
8cf0: 74 65 20 63 61 70 61 62 69 6c 69 74 69 65 73 20  te capabilities 
8d00: 69 6e 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e  in the underlyin
8d10: 67 20 66 69 6c 65 73 79 73 74 65 6d 2e 20 20 41  g filesystem.  A
8d20: 73 20 6f 66 0a 20 20 53 51 4c 69 74 65 20 76 65  s of.  SQLite ve
8d30: 72 73 69 6f 6e 20 33 2e 32 31 2e 30 20 28 5b 64  rsion 3.21.0 ([d
8d40: 61 74 65 6f 66 3a 33 2e 32 31 2e 30 5d 29 20 74  ateof:3.21.0]) t
8d50: 68 69 73 20 69 73 20 6f 6e 6c 79 20 73 75 70 70  his is only supp
8d60: 6f 72 74 65 64 20 6f 6e 0a 20 20 5b 68 74 74 70  orted on.  [http
8d70: 73 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61  s://en.wikipedia
8d80: 2e 6f 72 67 2f 77 69 6b 69 2f 46 32 46 53 7c 46  .org/wiki/F2FS|F
8d90: 32 46 53 5d 2e 20 20 48 6f 77 65 76 65 72 2c 20  2FS].  However, 
8da0: 74 68 65 20 69 6e 74 65 72 66 61 63 65 0a 20 20  the interface.  
8db0: 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 67  is implemented g
8dc0: 65 6e 65 72 69 63 61 6c 6c 79 2c 20 75 73 69 6e  enerically, usin
8dd0: 67 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  g [sqlite3_file_
8de0: 63 6f 6e 74 72 6f 6c 28 29 5d 20 77 69 74 68 0a  control()] with.
8df0: 20 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f    [SQLITE_FCNTL_
8e00: 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49  BEGIN_ATOMIC_WRI
8e10: 54 45 5d 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f  TE] and [SQLITE_
8e20: 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f  FCNTL_COMMIT_ATO
8e30: 4d 49 43 5f 57 52 49 54 45 5d 0a 20 20 73 6f 20  MIC_WRITE].  so 
8e40: 74 68 65 20 63 61 70 61 62 69 6c 69 74 79 20 63  the capability c
8e50: 61 6e 20 62 65 20 61 64 64 65 64 20 74 6f 20 6f  an be added to o
8e60: 74 68 65 72 20 66 69 6c 65 73 79 73 74 65 6d 20  ther filesystem 
8e70: 74 69 6d 65 73 20 69 6e 20 74 68 65 0a 20 20 66  times in the.  f
8e80: 75 74 75 72 65 2e 20 20 57 68 65 6e 20 74 68 69  uture.  When thi
8e90: 73 20 6f 70 74 69 6f 6e 20 69 73 20 65 6e 61 62  s option is enab
8ea0: 6c 65 64 2c 20 53 51 4c 69 74 65 20 61 75 74 6f  led, SQLite auto
8eb0: 6d 61 74 69 63 61 6c 6c 79 20 64 65 74 65 63 74  matically detect
8ec0: 73 0a 20 20 74 68 61 74 20 74 68 65 20 75 6e 64  s.  that the und
8ed0: 65 72 6c 79 69 6e 67 20 66 69 6c 65 73 79 73 74  erlying filesyst
8ee0: 65 6d 20 73 75 70 70 6f 72 74 73 20 62 61 74 63  em supports batc
8ef0: 68 20 61 74 6f 6d 69 63 20 77 72 69 74 65 73 2c  h atomic writes,
8f00: 20 61 6e 64 0a 20 20 77 68 65 6e 20 69 74 20 64   and.  when it d
8f10: 6f 65 73 20 73 6f 20 69 74 20 61 76 6f 69 64 73  oes so it avoids
8f20: 20 77 72 69 74 69 6e 67 20 74 68 65 20 5b 72 6f   writing the [ro
8f30: 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20  llback journal] 
8f40: 66 6f 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a  for transaction.
8f50: 20 20 63 6f 6e 74 72 6f 6c 2e 20 20 54 68 69 73    control.  This
8f60: 20 63 61 6e 20 6d 61 6b 65 20 74 72 61 6e 73 61   can make transa
8f70: 63 74 69 6f 6e 73 20 6f 76 65 72 20 74 77 69 63  ctions over twic
8f80: 65 20 61 73 20 66 61 73 74 2c 20 77 68 69 6c 65  e as fast, while
8f90: 0a 20 20 73 69 6d 75 6c 74 61 6e 65 6f 75 73 6c  .  simultaneousl
8fa0: 79 20 72 65 64 75 63 69 6e 67 20 77 65 61 72 20  y reducing wear 
8fb0: 6f 6e 20 53 53 44 20 73 74 6f 72 61 67 65 20 64  on SSD storage d
8fc0: 65 76 69 63 65 73 2e 0a 3c 70 3e 0a 20 20 46 75  evices..<p>.  Fu
8fd0: 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66  ture versions of
8fe0: 20 53 51 4c 69 74 65 20 6d 69 67 68 74 20 65 6e   SQLite might en
8ff0: 61 62 6c 65 20 74 68 65 20 62 61 74 63 68 2d 61  able the batch-a
9000: 74 6f 6d 69 63 2d 77 72 69 74 65 0a 20 20 63 61  tomic-write.  ca
9010: 70 61 62 69 6c 69 74 79 20 62 79 20 64 65 66 61  pability by defa
9020: 75 6c 74 2c 20 61 74 20 77 68 69 63 68 20 70 6f  ult, at which po
9030: 69 6e 74 20 74 68 69 73 20 63 6f 6d 70 69 6c 65  int this compile
9040: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 0a 20 20 77  -time option.  w
9050: 69 6c 6c 20 62 65 63 6f 6d 65 20 73 75 70 65 72  ill become super
9060: 66 6c 75 6f 75 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  fluous..}..COMPI
9070: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
9080: 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e 5f  E_ENABLE_COLUMN_
9090: 4d 45 54 41 44 41 54 41 7d 20 7b 0a 20 20 57 68  METADATA} {.  Wh
90a0: 65 6e 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f  en this C-prepro
90b0: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20  cessor macro is 
90c0: 64 65 66 69 6e 65 64 2c 20 53 51 4c 69 74 65 20  defined, SQLite 
90d0: 69 6e 63 6c 75 64 65 73 20 73 6f 6d 65 0a 20 20  includes some.  
90e0: 61 64 64 69 74 69 6f 6e 61 6c 20 41 50 49 73 20  additional APIs 
90f0: 74 68 61 74 20 70 72 6f 76 69 64 65 20 63 6f 6e  that provide con
9100: 76 65 6e 69 65 6e 74 20 61 63 63 65 73 73 20 74  venient access t
9110: 6f 20 6d 65 74 61 2d 64 61 74 61 20 61 62 6f 75  o meta-data abou
9120: 74 0a 20 20 74 61 62 6c 65 73 20 61 6e 64 20 71  t.  tables and q
9130: 75 65 72 69 65 73 2e 20 20 54 68 65 20 41 50 49  ueries.  The API
9140: 73 20 74 68 61 74 20 61 72 65 20 65 6e 61 62 6c  s that are enabl
9150: 65 64 20 62 79 20 74 68 69 73 20 6f 70 74 69 6f  ed by this optio
9160: 6e 20 61 72 65 3a 0a 0a 20 20 3c 75 6c 3e 0a 20  n are:..  <ul>. 
9170: 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63   <li> [sqlite3_c
9180: 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
9190: 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c  ame()] </li>.  <
91a0: 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  li> [sqlite3_col
91b0: 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d  umn_database_nam
91c0: 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c  e16()] </li>.  <
91d0: 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  li> [sqlite3_col
91e0: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 29  umn_table_name()
91f0: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b  ] </li>.  <li> [
9200: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
9210: 61 62 6c 65 5f 6e 61 6d 65 31 36 28 29 5d 20 3c  able_name16()] <
9220: 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c  /li>.  <li> [sql
9230: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67  ite3_column_orig
9240: 69 6e 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e  in_name()] </li>
9250: 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33  .  <li> [sqlite3
9260: 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e  _column_origin_n
9270: 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20  ame16()] </li>. 
9280: 20 3c 2f 75 6c 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c   </ul>.}..COMPIL
9290: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
92a0: 5f 45 4e 41 42 4c 45 5f 44 42 50 41 47 45 5f 56  _ENABLE_DBPAGE_V
92b0: 54 41 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  TAB} {.  This op
92c0: 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65  tion enables the
92d0: 20 0a 20 20 5b 68 74 74 70 73 3a 2f 2f 73 71 6c   .  [https://sql
92e0: 69 74 65 2e 6f 72 67 2f 73 72 63 2f 66 69 6c 65  ite.org/src/file
92f0: 2f 73 72 63 2f 64 62 70 61 67 65 2e 63 7c 73 71  /src/dbpage.c|sq
9300: 6c 69 74 65 5f 64 62 70 61 67 65 20 76 69 72 74  lite_dbpage virt
9310: 75 61 6c 20 74 61 62 6c 65 5d 2e 0a 7d 0a 0a 43  ual table]..}..C
9320: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9330: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 44 42 53  QLITE_ENABLE_DBS
9340: 54 41 54 5f 56 54 41 42 7d 20 7b 0a 20 20 54 68  TAT_VTAB} {.  Th
9350: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
9360: 73 20 74 68 65 20 5b 64 62 73 74 61 74 20 76 69  s the [dbstat vi
9370: 72 74 75 61 6c 20 74 61 62 6c 65 5d 2e 0a 7d 0a  rtual table]..}.
9380: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
9390: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45  {SQLITE_ENABLE_E
93a0: 58 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53 7d  XPLAIN_COMMENTS}
93b0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
93c0: 20 61 64 64 73 20 65 78 74 72 61 20 6c 6f 67 69   adds extra logi
93d0: 63 20 74 6f 20 53 51 4c 69 74 65 20 74 68 61 74  c to SQLite that
93e0: 20 69 6e 73 65 72 74 73 20 63 6f 6d 6d 65 6e 74   inserts comment
93f0: 20 74 65 78 74 20 69 6e 74 6f 20 74 68 65 0a 20   text into the. 
9400: 20 6f 75 74 70 75 74 20 6f 66 20 5b 45 58 50 4c   output of [EXPL
9410: 41 49 4e 5d 2e 20 20 54 68 65 73 65 20 65 78 74  AIN].  These ext
9420: 72 61 20 63 6f 6d 6d 65 6e 74 73 20 75 73 65 20  ra comments use 
9430: 65 78 74 72 61 20 6d 65 6d 6f 72 79 2c 20 74 68  extra memory, th
9440: 75 73 0a 20 20 6d 61 6b 69 6e 67 20 5b 70 72 65  us.  making [pre
9450: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73  pared statements
9460: 5d 20 6c 61 72 67 65 72 20 61 6e 64 20 76 65 72  ] larger and ver
9470: 79 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f 77 65  y slightly slowe
9480: 72 2c 20 61 6e 64 20 73 6f 20 74 68 65 79 20 61  r, and so they a
9490: 72 65 0a 20 20 74 75 72 6e 65 64 20 6f 66 66 20  re.  turned off 
94a0: 62 79 20 64 65 66 61 75 6c 74 20 61 6e 64 20 69  by default and i
94b0: 6e 20 6d 6f 73 74 20 61 70 70 6c 69 63 61 74 69  n most applicati
94c0: 6f 6e 2e 20 20 42 75 74 20 73 6f 6d 65 20 61 70  on.  But some ap
94d0: 70 6c 69 63 61 74 69 6f 6e 73 2c 20 73 75 63 68  plications, such
94e0: 0a 20 20 61 73 20 74 68 65 20 5b 63 6f 6d 6d 61  .  as the [comma
94f0: 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c 5d 20 66  nd-line shell] f
9500: 6f 72 20 53 51 4c 69 74 65 2c 20 76 61 6c 75 65  or SQLite, value
9510: 20 63 6c 61 72 69 74 79 20 6f 66 20 45 58 50 4c   clarity of EXPL
9520: 41 49 4e 20 6f 75 74 70 75 74 0a 20 20 6f 76 65  AIN output.  ove
9530: 72 20 72 61 77 20 70 65 72 66 6f 72 6d 61 6e 63  r raw performanc
9540: 65 20 61 6e 64 20 73 6f 20 74 68 69 73 20 63 6f  e and so this co
9550: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
9560: 6e 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 74  n is available t
9570: 6f 20 74 68 65 6d 2e 0a 20 20 54 68 65 20 53 51  o them..  The SQ
9580: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45 58 50 4c  LITE_ENABLE_EXPL
9590: 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53 20 63 6f 6d  AIN_COMMENTS com
95a0: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
95b0: 20 69 73 20 61 6c 73 6f 20 65 6e 61 62 6c 65 64   is also enabled
95c0: 0a 20 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  .  automatically
95d0: 20 69 66 20 5b 53 51 4c 49 54 45 5f 44 45 42 55   if [SQLITE_DEBU
95e0: 47 5d 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a 7d  G] is enabled..}
95f0: 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  ...COMPILE_OPTIO
9600: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
9610: 5f 46 54 53 33 7d 20 7b 0a 20 20 57 68 65 6e 20  _FTS3} {.  When 
9620: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
9630: 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 61  efined in the [a
9640: 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76 65  malgamation], ve
9650: 72 73 69 6f 6e 20 33 0a 20 20 6f 66 20 74 68 65  rsion 3.  of the
9660: 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72 63   full-text searc
9670: 68 20 65 6e 67 69 6e 65 20 69 73 20 61 64 64 65  h engine is adde
9680: 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20 61  d to the build a
9690: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a  utomatically..}.
96a0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
96b0: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46  {SQLITE_ENABLE_F
96c0: 54 53 33 5f 50 41 52 45 4e 54 48 45 53 49 53 7d  TS3_PARENTHESIS}
96d0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
96e0: 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20 71 75   modifies the qu
96f0: 65 72 79 20 70 61 74 74 65 72 6e 20 70 61 72 73  ery pattern pars
9700: 65 72 20 69 6e 20 46 54 53 33 20 73 75 63 68 20  er in FTS3 such 
9710: 74 68 61 74 20 69 74 0a 20 20 73 75 70 70 6f 72  that it.  suppor
9720: 74 73 20 6f 70 65 72 61 74 6f 72 73 20 41 4e 44  ts operators AND
9730: 20 61 6e 64 20 4e 4f 54 20 28 69 6e 20 61 64 64   and NOT (in add
9740: 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 75 73 75  ition to the usu
9750: 61 6c 20 4f 52 20 61 6e 64 20 4e 45 41 52 29 0a  al OR and NEAR).
9760: 20 20 61 6e 64 20 61 6c 73 6f 20 61 6c 6c 6f 77    and also allow
9770: 73 20 71 75 65 72 79 20 65 78 70 72 65 73 73 69  s query expressi
9780: 6f 6e 73 20 74 6f 20 63 6f 6e 74 61 69 6e 20 6e  ons to contain n
9790: 65 73 74 65 64 20 70 61 72 65 6e 74 68 65 73 69  ested parenthesi
97a0: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
97b0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
97c0: 42 4c 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a  BLE_FTS3_TOKENIZ
97d0: 45 52 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  ER} {.  This opt
97e0: 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20  ion enables the 
97f0: 74 77 6f 2d 61 72 67 75 6d 65 6e 74 20 76 65 72  two-argument ver
9800: 73 69 6f 6e 20 6f 66 20 74 68 65 20 5b 66 74 73  sion of the [fts
9810: 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 5d 0a 20  3_tokenizer()]. 
9820: 20 69 6e 74 65 72 66 61 63 65 2e 20 20 54 68 65   interface.  The
9830: 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
9840: 20 74 6f 20 66 74 73 33 5f 74 6f 6b 65 6e 69 7a   to fts3_tokeniz
9850: 65 72 28 29 20 69 73 20 73 75 70 70 6f 73 65 20  er() is suppose 
9860: 74 6f 20 62 65 20 61 0a 20 20 70 6f 69 6e 74 65  to be a.  pointe
9870: 72 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20  r to a function 
9880: 28 65 6e 63 6f 64 65 64 20 61 73 20 61 20 42 4c  (encoded as a BL
9890: 4f 42 29 20 74 68 61 74 20 69 6d 70 6c 65 6d 65  OB) that impleme
98a0: 6e 74 73 20 61 6e 0a 20 20 61 70 70 6c 69 63 61  nts an.  applica
98b0: 74 69 6f 6e 20 64 65 66 69 6e 65 64 20 74 6f 6b  tion defined tok
98c0: 65 6e 69 7a 65 72 2e 20 20 49 66 20 68 6f 73 74  enizer.  If host
98d0: 69 6c 65 20 61 63 74 6f 72 73 20 61 72 65 20 61  ile actors are a
98e0: 62 6c 65 20 74 6f 20 72 75 6e 0a 20 20 74 68 65  ble to run.  the
98f0: 20 74 77 6f 2d 61 72 67 75 6d 65 6e 74 20 76 65   two-argument ve
9900: 72 73 69 6f 6e 20 6f 66 20 66 74 73 33 5f 74 6f  rsion of fts3_to
9910: 6b 65 6e 69 7a 65 72 28 29 20 77 69 74 68 20 61  kenizer() with a
9920: 6e 20 61 72 62 69 74 72 61 72 79 20 73 65 63 6f  n arbitrary seco
9930: 6e 64 0a 20 20 61 72 67 75 6d 65 6e 74 2c 20 74  nd.  argument, t
9940: 68 65 79 20 63 6f 75 6c 64 20 75 73 65 20 63 72  hey could use cr
9950: 61 73 68 20 6f 72 20 74 61 6b 65 20 63 6f 6e 74  ash or take cont
9960: 72 6f 6c 20 6f 66 20 74 68 65 20 70 72 6f 63 65  rol of the proce
9970: 73 73 2e 20 0a 20 20 3c 70 3e 0a 20 20 42 65 63  ss. .  <p>.  Bec
9980: 61 75 73 65 20 6f 66 20 73 65 63 75 72 69 74 79  ause of security
9990: 20 63 6f 6e 63 65 72 6e 73 2c 20 74 68 65 20 74   concerns, the t
99a0: 77 6f 2d 61 72 67 75 6d 65 6e 74 20 66 74 73 33  wo-argument fts3
99b0: 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 66 65 61  _tokenizer() fea
99c0: 74 75 72 65 20 0a 20 20 77 61 73 20 64 69 73 61  ture .  was disa
99d0: 62 6c 65 64 20 62 65 67 69 6e 6e 69 6e 67 20 77  bled beginning w
99e0: 69 74 68 20 5b 56 65 72 73 69 6f 6e 20 33 2e 31  ith [Version 3.1
99f0: 31 2e 30 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e  1.0] ([dateof:3.
9a00: 31 31 2e 30 5d 29 0a 20 20 75 6e 6c 65 73 73 20  11.0]).  unless 
9a10: 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  this compile-tim
9a20: 65 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  e option is used
9a30: 2e 0a 20 20 5b 56 65 72 73 69 6f 6e 20 33 2e 31  ..  [Version 3.1
9a40: 32 2e 30 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e  2.0] ([dateof:3.
9a50: 31 32 2e 30 5d 29 20 61 64 64 65 64 20 74 68 65  12.0]) added the
9a60: 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f   .  [sqlite3_db_
9a70: 63 6f 6e 66 69 67 5d 28 64 62 2c 5b 53 51 4c 49  config](db,[SQLI
9a80: 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42  TE_DBCONFIG_ENAB
9a90: 4c 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45  LE_FTS3_TOKENIZE
9aa0: 52 5d 2c 31 2c 30 29 20 69 6e 74 65 72 66 61 63  R],1,0) interfac
9ab0: 65 0a 20 20 74 68 61 74 20 61 63 74 69 76 61 74  e.  that activat
9ac0: 65 73 20 74 68 65 20 74 77 6f 2d 61 72 67 75 6d  es the two-argum
9ad0: 65 6e 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 5b  ent version of [
9ae0: 66 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29  fts3_tokenizer()
9af0: 5d 0a 20 20 66 6f 72 20 61 20 73 70 65 63 69 66  ].  for a specif
9b00: 69 63 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  ic [database con
9b10: 6e 65 63 74 69 6f 6e 5d 20 61 74 20 72 75 6e 2d  nection] at run-
9b20: 74 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  time..}..COMPILE
9b30: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
9b40: 45 4e 41 42 4c 45 5f 46 54 53 34 7d 20 7b 0a 20  ENABLE_FTS4} {. 
9b50: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
9b60: 6e 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20  n is defined in 
9b70: 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f  the [amalgamatio
9b80: 6e 5d 2c 20 76 65 72 73 69 6f 6e 73 20 33 20 61  n], versions 3 a
9b90: 6e 64 20 34 0a 20 20 6f 66 20 74 68 65 20 66 75  nd 4.  of the fu
9ba0: 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20 65  ll-text search e
9bb0: 6e 67 69 6e 65 20 69 73 20 61 64 64 65 64 20 74  ngine is added t
9bc0: 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f  o the build auto
9bd0: 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f  matically..}..CO
9be0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
9bf0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 35  LITE_ENABLE_FTS5
9c00: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
9c10: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
9c20: 64 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61  d in the [amalga
9c30: 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e  mation], version
9c40: 73 20 35 0a 20 20 6f 66 20 74 68 65 20 66 75 6c  s 5.  of the ful
9c50: 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20 65 6e  l-text search en
9c60: 67 69 6e 65 20 28 5b 66 74 73 35 5d 29 20 69 73  gine ([fts5]) is
9c70: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75   added to the bu
9c80: 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ild automaticall
9c90: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
9ca0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
9cb0: 42 4c 45 5f 49 43 55 7d 20 7b 0a 20 20 54 68 69  BLE_ICU} {.  Thi
9cc0: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
9cd0: 74 68 65 20 0a 20 20 5b 68 74 74 70 3a 2f 2f 77  the .  [http://w
9ce0: 77 77 2e 69 63 75 2d 70 72 6f 6a 65 63 74 2e 6f  ww.icu-project.o
9cf0: 72 67 2f 20 7c 20 49 6e 74 65 72 6e 61 74 69 6f  rg/ | Internatio
9d00: 6e 61 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73 20 66  nal Components f
9d10: 6f 72 20 55 6e 69 63 6f 64 65 5d 0a 20 20 6f 72  or Unicode].  or
9d20: 20 22 49 43 55 22 20 65 78 74 65 6e 73 69 6f 6e   "ICU" extension
9d30: 20 74 6f 20 53 51 4c 69 74 65 20 74 6f 20 62 65   to SQLite to be
9d40: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75   added to the bu
9d50: 69 6c 64 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c  ild.  .}..COMPIL
9d60: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
9d70: 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43 45 7d  _ENABLE_IOTRACE}
9d80: 20 7b 0a 20 20 57 68 65 6e 20 62 6f 74 68 20 74   {.  When both t
9d90: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 61  he SQLite core a
9da0: 6e 64 20 74 68 65 20 5b 43 6f 6d 6d 61 6e 64 20  nd the [Command 
9db0: 4c 69 6e 65 20 49 6e 74 65 72 66 61 63 65 5d 20  Line Interface] 
9dc0: 28 43 4c 49 29 20 61 72 65 20 62 6f 74 68 20 0a  (CLI) are both .
9dd0: 20 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20    compiled with 
9de0: 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 74 68 65  this option, the
9df0: 6e 20 74 68 65 20 43 4c 49 20 70 72 6f 76 69 64  n the CLI provid
9e00: 65 73 20 61 6e 20 65 78 74 72 61 20 63 6f 6d 6d  es an extra comm
9e10: 61 6e 64 0a 20 20 6e 61 6d 65 64 20 22 2e 69 6f  and.  named ".io
9e20: 74 72 61 63 65 22 20 74 68 61 74 20 70 72 6f 76  trace" that prov
9e30: 69 64 65 73 20 61 20 6c 6f 77 2d 6c 65 76 65 6c  ides a low-level
9e40: 20 6c 6f 67 20 6f 66 20 49 2f 4f 20 61 63 74 69   log of I/O acti
9e50: 76 69 74 79 2e 0a 20 20 54 68 69 73 20 6f 70 74  vity..  This opt
9e60: 69 6f 6e 20 69 73 20 65 78 70 65 72 69 6d 65 6e  ion is experimen
9e70: 74 61 6c 20 61 6e 64 20 6d 61 79 20 62 65 20 64  tal and may be d
9e80: 69 73 63 6f 6e 74 69 6e 75 65 64 20 69 6e 20 61  iscontinued in a
9e90: 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 2e   future release.
9ea0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9eb0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
9ec0: 45 5f 4a 53 4f 4e 31 7d 20 7b 0a 20 20 57 68 65  E_JSON1} {.  Whe
9ed0: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
9ee0: 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20   defined in the 
9ef0: 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20  [amalgamation], 
9f00: 74 68 65 0a 20 20 5b 4a 53 4f 4e 20 53 51 4c 20  the.  [JSON SQL 
9f10: 66 75 6e 63 74 69 6f 6e 73 5d 20 61 72 65 20 61  functions] are a
9f20: 64 64 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c  dded to the buil
9f30: 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e  d automatically.
9f40: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9f50: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
9f60: 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 7d  E_LOCKING_STYLE}
9f70: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
9f80: 20 65 6e 61 62 6c 65 73 20 61 64 64 69 74 69 6f   enables additio
9f90: 6e 61 6c 20 6c 6f 67 69 63 20 69 6e 20 74 68 65  nal logic in the
9fa0: 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20 6c 61   OS interface la
9fb0: 79 65 72 20 66 6f 72 0a 20 20 4d 61 63 20 4f 53  yer for.  Mac OS
9fc0: 20 58 2e 20 54 68 65 20 61 64 64 69 74 69 6f 6e   X. The addition
9fd0: 61 6c 20 6c 6f 67 69 63 20 61 74 74 65 6d 70 74  al logic attempt
9fe0: 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74  s to determine t
9ff0: 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 0a 20  he type of the. 
a000: 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 69 6c 65   underlying file
a010: 73 79 73 74 65 6d 20 61 6e 64 20 63 68 6f 6f 73  system and choos
a020: 65 20 61 6e 64 20 61 6c 74 65 72 6e 61 74 69 76  e and alternativ
a030: 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61 74 65  e locking strate
a040: 67 79 0a 20 20 74 68 61 74 20 77 6f 72 6b 73 20  gy.  that works 
a050: 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 20 74 68  correctly for th
a060: 61 74 20 66 69 6c 65 73 79 73 74 65 6d 20 74 79  at filesystem ty
a070: 70 65 2e 20 46 69 76 65 20 6c 6f 63 6b 69 6e 67  pe. Five locking
a080: 20 73 74 72 61 74 65 67 69 65 73 20 0a 20 20 61   strategies .  a
a090: 72 65 20 61 76 61 69 6c 61 62 6c 65 3a 0a 0a 20  re available:.. 
a0a0: 20 3c 75 6c 3e 0a 20 20 20 20 3c 6c 69 3e 20 50   <ul>.    <li> P
a0b0: 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79  OSIX locking sty
a0c0: 6c 65 2e 20 54 68 69 73 20 69 73 20 74 68 65 20  le. This is the 
a0d0: 64 65 66 61 75 6c 74 20 6c 6f 63 6b 69 6e 67 20  default locking 
a0e0: 73 74 79 6c 65 20 61 6e 64 20 74 68 65 0a 20 20  style and the.  
a0f0: 20 20 20 20 20 20 20 73 74 79 6c 65 20 75 73 65         style use
a100: 64 20 62 79 20 6f 74 68 65 72 20 28 6e 6f 6e 20  d by other (non 
a110: 4d 61 63 20 4f 53 20 58 29 20 55 6e 69 78 65 73  Mac OS X) Unixes
a120: 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61  . Locks are obta
a130: 69 6e 65 64 20 61 6e 64 20 0a 20 20 20 20 20 20  ined and .      
a140: 20 20 20 72 65 6c 65 61 73 65 64 20 75 73 69 6e     released usin
a150: 67 20 74 68 65 20 66 63 6e 74 6c 28 29 20 73 79  g the fcntl() sy
a160: 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20  stem call...    
a170: 3c 6c 69 3e 20 41 46 50 20 6c 6f 63 6b 69 6e 67  <li> AFP locking
a180: 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63   style. This loc
a190: 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73  king style is us
a1a0: 65 64 20 66 6f 72 20 6e 65 74 77 6f 72 6b 20 66  ed for network f
a1b0: 69 6c 65 20 0a 20 20 20 20 20 20 20 20 20 73 79  ile .         sy
a1c0: 73 74 65 6d 73 20 74 68 61 74 20 75 73 65 20 74  stems that use t
a1d0: 68 65 20 41 46 50 20 28 41 70 70 6c 65 20 46 69  he AFP (Apple Fi
a1e0: 6c 69 6e 67 20 50 72 6f 74 6f 63 6f 6c 29 20 70  ling Protocol) p
a1f0: 72 6f 74 6f 63 6f 6c 2e 20 4c 6f 63 6b 73 0a 20  rotocol. Locks. 
a200: 20 20 20 20 20 20 20 20 61 72 65 20 6f 62 74 61          are obta
a210: 69 6e 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 20  ined by calling 
a220: 74 68 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63  the library func
a230: 74 69 6f 6e 20 5f 41 46 50 46 53 53 65 74 4c 6f  tion _AFPFSSetLo
a240: 63 6b 28 29 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20  ck()...    <li> 
a250: 46 6c 6f 63 6b 20 6c 6f 63 6b 69 6e 67 20 73 74  Flock locking st
a260: 79 6c 65 2e 20 54 68 69 73 20 69 73 20 75 73 65  yle. This is use
a270: 64 20 66 6f 72 20 66 69 6c 65 2d 73 79 73 74 65  d for file-syste
a280: 6d 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 0a 20  ms that do not. 
a290: 20 20 20 20 20 20 20 20 73 75 70 70 6f 72 74 20          support 
a2a0: 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74  POSIX locking st
a2b0: 79 6c 65 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f  yle. Locks are o
a2c0: 62 74 61 69 6e 65 64 20 61 6e 64 20 72 65 6c 65  btained and rele
a2d0: 61 73 65 64 20 75 73 69 6e 67 0a 20 20 20 20 20  ased using.     
a2e0: 20 20 20 20 74 68 65 20 66 6c 6f 63 6b 28 29 20      the flock() 
a2f0: 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20  system call...  
a300: 20 20 3c 6c 69 3e 20 44 6f 74 2d 66 69 6c 65 20    <li> Dot-file 
a310: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54  locking style. T
a320: 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  his locking styl
a330: 65 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 6e  e is used when n
a340: 65 69 74 68 65 72 0a 20 20 20 20 20 20 20 20 20  either.         
a350: 66 6c 6f 63 6b 20 6e 6f 72 20 50 4f 53 49 58 20  flock nor POSIX 
a360: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73 20 61  locking styles a
a370: 72 65 20 73 75 70 70 6f 72 74 65 64 20 62 79 20  re supported by 
a380: 74 68 65 20 66 69 6c 65 20 73 79 73 74 65 6d 2e  the file system.
a390: 0a 20 20 20 20 20 20 20 20 20 44 61 74 61 62 61  .         Databa
a3a0: 73 65 20 6c 6f 63 6b 73 20 61 72 65 20 6f 62 74  se locks are obt
a3b0: 61 69 6e 65 64 20 62 79 20 63 72 65 61 74 69 6e  ained by creatin
a3c0: 67 20 61 6e 64 20 65 6e 74 72 79 20 69 6e 20 74  g and entry in t
a3d0: 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d 0a 20  he file-system. 
a3e0: 20 20 20 20 20 20 20 20 61 74 20 61 20 77 65 6c          at a wel
a3f0: 6c 2d 6b 6e 6f 77 6e 20 6c 6f 63 61 74 69 6f 6e  l-known location
a400: 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65   relative to the
a410: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 28   database file (
a420: 61 20 22 64 6f 74 2d 66 69 6c 65 22 29 0a 20 20  a "dot-file").  
a430: 20 20 20 20 20 20 20 61 6e 64 20 72 65 6c 69 6e         and relin
a440: 71 75 69 73 68 65 64 20 62 79 20 64 65 6c 65 74  quished by delet
a450: 69 6e 67 20 74 68 65 20 73 61 6d 65 20 66 69 6c  ing the same fil
a460: 65 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 4e 6f 20  e...    <li> No 
a470: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 49  locking style. I
a480: 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 61 62  f none of the ab
a490: 6f 76 65 20 63 61 6e 20 62 65 20 73 75 70 70 6f  ove can be suppo
a4a0: 72 74 65 64 2c 20 74 68 69 73 20 0a 20 20 20 20  rted, this .    
a4b0: 20 20 20 20 20 6c 6f 63 6b 69 6e 67 20 73 74 79       locking sty
a4c0: 6c 65 20 69 73 20 75 73 65 64 2e 20 4e 6f 20 64  le is used. No d
a4d0: 61 74 61 62 61 73 65 20 6c 6f 63 6b 69 6e 67 20  atabase locking 
a4e0: 6d 65 63 68 61 6e 69 73 6d 20 69 73 20 75 73 65  mechanism is use
a4f0: 64 2e 20 57 68 65 6e 0a 20 20 20 20 20 20 20 20  d. When.        
a500: 20 74 68 69 73 20 73 79 73 74 65 6d 20 69 73 20   this system is 
a510: 75 73 65 64 20 69 74 20 69 73 20 6e 6f 74 20 73  used it is not s
a520: 61 66 65 20 66 6f 72 20 61 20 73 69 6e 67 6c 65  afe for a single
a530: 20 64 61 74 61 62 61 73 65 20 74 6f 20 62 65 0a   database to be.
a540: 20 20 20 20 20 20 20 20 20 61 63 63 65 73 73 65           accesse
a550: 64 20 62 79 20 6d 75 6c 74 69 70 6c 65 20 63 6c  d by multiple cl
a560: 69 65 6e 74 73 2e 0a 20 20 3c 2f 75 6c 3e 0a 0a  ients..  </ul>..
a570: 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20    Additionally, 
a580: 66 69 76 65 20 65 78 74 72 61 20 5b 56 46 53 5d  five extra [VFS]
a590: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
a5a0: 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 61 73   are provided as
a5b0: 20 77 65 6c 6c 20 61 73 20 74 68 65 0a 20 20 64   well as the.  d
a5c0: 65 66 61 75 6c 74 2e 20 42 79 20 73 70 65 63 69  efault. By speci
a5d0: 66 79 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65  fying one of the
a5e0: 20 65 78 74 72 61 20 56 46 53 20 69 6d 70 6c 65   extra VFS imple
a5f0: 6d 65 6e 74 61 74 69 6f 6e 73 20 0a 20 20 77 68  mentations .  wh
a600: 65 6e 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69  en calling [sqli
a610: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20  te3_open_v2()], 
a620: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  an application m
a630: 61 79 20 62 79 70 61 73 73 20 74 68 65 20 66 69  ay bypass the fi
a640: 6c 65 2d 73 79 73 74 65 6d 0a 20 20 64 65 74 65  le-system.  dete
a650: 63 74 69 6f 6e 20 6c 6f 67 69 63 20 61 6e 64 20  ction logic and 
a660: 65 78 70 6c 69 63 69 74 6c 79 20 73 65 6c 65 63  explicitly selec
a670: 74 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f  t one of the abo
a680: 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  ve locking style
a690: 73 2e 20 54 68 65 0a 20 20 66 69 76 65 20 65 78  s. The.  five ex
a6a0: 74 72 61 20 5b 56 46 53 5d 20 69 6d 70 6c 65 6d  tra [VFS] implem
a6b0: 65 6e 74 61 74 69 6f 6e 73 20 61 72 65 20 63 61  entations are ca
a6c0: 6c 6c 65 64 20 22 75 6e 69 78 2d 70 6f 73 69 78  lled "unix-posix
a6d0: 22 2c 20 22 75 6e 69 78 2d 61 66 70 22 2c 0a 20  ", "unix-afp",. 
a6e0: 20 22 75 6e 69 78 2d 66 6c 6f 63 6b 22 2c 20 22   "unix-flock", "
a6f0: 75 6e 69 78 2d 64 6f 74 66 69 6c 65 22 20 61 6e  unix-dotfile" an
a700: 64 20 22 75 6e 69 78 2d 6e 6f 6e 65 22 2e 0a 7d  d "unix-none"..}
a710: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
a720: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
a730: 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e  MEMORY_MANAGEMEN
a740: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
a750: 6f 6e 20 61 64 64 73 20 65 78 74 72 61 20 6c 6f  on adds extra lo
a760: 67 69 63 20 74 6f 20 53 51 4c 69 74 65 20 74 68  gic to SQLite th
a770: 61 74 20 61 6c 6c 6f 77 73 20 69 74 20 74 6f 20  at allows it to 
a780: 72 65 6c 65 61 73 65 20 75 6e 75 73 65 64 0a 20  release unused. 
a790: 20 6d 65 6d 6f 72 79 20 75 70 6f 6e 20 72 65 71   memory upon req
a7a0: 75 65 73 74 2e 20 20 54 68 69 73 20 6f 70 74 69  uest.  This opti
a7b0: 6f 6e 20 6d 75 73 74 20 62 65 20 65 6e 61 62 6c  on must be enabl
a7c0: 65 64 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20  ed in order for 
a7d0: 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72  the.  [sqlite3_r
a7e0: 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d  elease_memory()]
a7f0: 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 77 6f   interface to wo
a800: 72 6b 2e 20 20 49 66 20 74 68 69 73 20 63 6f 6d  rk.  If this com
a810: 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f 70 74 69  pile-time.  opti
a820: 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65 64 2c 20  on is not used, 
a830: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c  the [sqlite3_rel
a840: 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69  ease_memory()] i
a850: 6e 74 65 72 66 61 63 65 20 69 73 20 61 20 0a 20  nterface is a . 
a860: 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50 49   no-op..}..COMPI
a870: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
a880: 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33  E_ENABLE_MEMSYS3
a890: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
a8a0: 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64 65 20  n includes code 
a8b0: 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74 20 69  in SQLite that i
a8c0: 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61 6c 74  mplements an alt
a8d0: 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d 6f 72  ernative.  memor
a8e0: 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 54 68  y allocator.  Th
a8f0: 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6d  is alternative m
a900: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
a910: 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65 64 0a  is only engaged.
a920: 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51 4c 49    when the [SQLI
a930: 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 20  TE_CONFIG_HEAP] 
a940: 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74  option to [sqlit
a950: 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73 20  e3_config()] is 
a960: 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70 6c 79  used to.  supply
a970: 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b 20 6f   a large chunk o
a980: 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 77 68  f memory from wh
a990: 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61  ich all memory a
a9a0: 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65 0a 20  llocations are. 
a9b0: 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20 4d 45   taken..  The ME
a9c0: 4d 53 59 53 33 20 6d 65 6d 6f 72 79 20 61 6c 6c  MSYS3 memory all
a9d0: 6f 63 61 74 6f 72 20 75 73 65 73 20 61 20 68 79  ocator uses a hy
a9e0: 62 72 69 64 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  brid allocation 
a9f0: 61 6c 67 6f 72 69 74 68 6d 20 0a 20 20 70 61 74  algorithm .  pat
aa00: 74 65 72 6e 65 64 20 61 66 74 65 72 20 64 6c 6d  terned after dlm
aa10: 61 6c 6c 6f 63 28 29 2e 20 20 20 4f 6e 6c 79 20  alloc().   Only 
aa20: 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f 45 4e  one of SQLITE_EN
aa30: 41 42 4c 45 5f 4d 45 4d 53 59 53 33 20 61 6e 64  ABLE_MEMSYS3 and
aa40: 20 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c   .  SQLITE_ENABL
aa50: 45 5f 4d 45 4d 53 59 53 35 20 6d 61 79 20 62 65  E_MEMSYS5 may be
aa60: 20 65 6e 61 62 6c 65 64 20 61 74 20 6f 6e 63 65   enabled at once
aa70: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
aa80: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
aa90: 4c 45 5f 4d 45 4d 53 59 53 35 7d 20 7b 0a 20 20  LE_MEMSYS5} {.  
aaa0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e 63 6c  This option incl
aab0: 75 64 65 73 20 63 6f 64 65 20 69 6e 20 53 51 4c  udes code in SQL
aac0: 69 74 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65  ite that impleme
aad0: 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69  nts an alternati
aae0: 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ve.  memory allo
aaf0: 63 61 74 6f 72 2e 20 20 54 68 69 73 20 61 6c 74  cator.  This alt
ab00: 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20  ernative memory 
ab10: 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f 6e 6c  allocator is onl
ab20: 79 20 65 6e 67 61 67 65 64 0a 20 20 77 68 65 6e  y engaged.  when
ab30: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e   the [SQLITE_CON
ab40: 46 49 47 5f 48 45 41 50 5d 20 6f 70 74 69 6f 6e  FIG_HEAP] option
ab50: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e   to [sqlite3_con
ab60: 66 69 67 28 29 5d 20 69 73 20 75 73 65 64 20 74  fig()] is used t
ab70: 6f 0a 20 20 73 75 70 70 6c 79 20 61 20 6c 61 72  o.  supply a lar
ab80: 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f  ge chunk of memo
ab90: 72 79 20 66 72 6f 6d 20 77 68 69 63 68 20 61 6c  ry from which al
aba0: 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  l memory allocat
abb0: 69 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b 65 6e  ions are.  taken
abc0: 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59 53 35 20  ..  The MEMSYS5 
abd0: 6d 6f 64 75 6c 65 20 72 6f 75 6e 64 73 20 61 6c  module rounds al
abe0: 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 75 70  l allocations up
abf0: 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70 6f 77   to the next pow
ac00: 65 72 0a 20 20 6f 66 20 74 77 6f 20 61 6e 64 20  er.  of two and 
ac10: 75 73 65 73 20 61 20 66 69 72 73 74 2d 66 69 74  uses a first-fit
ac20: 2c 20 62 75 64 64 79 2d 61 6c 6c 6f 63 61 74 6f  , buddy-allocato
ac30: 72 20 61 6c 67 6f 72 69 74 68 6d 0a 20 20 74 68  r algorithm.  th
ac40: 61 74 20 70 72 6f 76 69 64 65 73 20 73 74 72 6f  at provides stro
ac50: 6e 67 20 67 75 61 72 61 6e 74 65 65 73 20 61 67  ng guarantees ag
ac60: 61 69 6e 73 74 20 66 72 61 67 6d 65 6e 74 61 74  ainst fragmentat
ac70: 69 6f 6e 20 61 6e 64 20 62 72 65 61 6b 64 6f 77  ion and breakdow
ac80: 6e 0a 20 20 73 75 62 6a 65 63 74 20 74 6f 20 63  n.  subject to c
ac90: 65 72 74 61 69 6e 20 6f 70 65 72 61 74 69 6e 67  ertain operating
aca0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 7d 0a   constraints..}.
acb0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
acc0: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4e  {SQLITE_ENABLE_N
acd0: 55 4c 4c 5f 54 52 49 4d 7d 20 7b 0a 20 20 54 68  ULL_TRIM} {.  Th
ace0: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
acf0: 73 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f  s an optimizatio
ad00: 6e 20 74 68 61 74 20 6f 6d 69 74 73 20 4e 55 4c  n that omits NUL
ad10: 4c 20 63 6f 6c 75 6d 6e 73 20 61 74 0a 20 20 74  L columns at.  t
ad20: 68 65 20 65 6e 64 73 20 6f 66 20 72 6f 77 73 2c  he ends of rows,
ad30: 20 66 6f 72 20 61 20 73 70 61 63 65 20 73 61 76   for a space sav
ad40: 69 6e 67 73 20 6f 6e 20 64 69 73 6b 2e 0a 20 20  ings on disk..  
ad50: 3c 70 3e 0a 20 20 44 61 74 61 62 61 73 65 73 20  <p>.  Databases 
ad60: 67 65 6e 65 72 61 74 65 64 20 77 69 74 68 20 74  generated with t
ad70: 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c  his option enabl
ad80: 65 64 20 61 72 65 20 6e 6f 74 20 72 65 61 64 61  ed are not reada
ad90: 62 6c 65 0a 20 20 62 79 20 53 51 4c 69 74 65 20  ble.  by SQLite 
ada0: 76 65 72 73 69 6f 6e 20 33 2e 31 2e 36 20 28 5b  version 3.1.6 ([
adb0: 64 61 74 65 6f 66 3a 33 2e 31 2e 36 5d 29 20 61  dateof:3.1.6]) a
adc0: 6e 64 20 65 61 72 6c 69 65 72 2e 20 20 41 6c 73  nd earlier.  Als
add0: 6f 2c 0a 20 20 64 61 74 61 62 61 73 65 73 20 67  o,.  databases g
ade0: 65 6e 65 72 61 74 65 64 20 77 69 74 68 20 74 68  enerated with th
adf0: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
ae00: 64 20 61 72 65 20 70 72 6f 6e 65 20 74 6f 0a 20  d are prone to. 
ae10: 20 74 72 69 67 67 65 72 69 6e 67 20 74 68 65 0a   triggering the.
ae20: 20 20 5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e 73    [https://www.s
ae30: 71 6c 69 74 65 2e 6f 72 67 2f 73 72 63 2f 69 6e  qlite.org/src/in
ae40: 66 6f 2f 65 36 65 39 36 32 64 36 62 30 66 30 36  fo/e6e962d6b0f06
ae50: 66 34 36 65 7c 65 36 65 39 36 32 64 36 62 30 66  f46e|e6e962d6b0f
ae60: 30 36 66 34 36 5d 0a 20 20 62 75 67 20 69 6e 20  06f46].  bug in 
ae70: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f  the [sqlite3_blo
ae80: 62 5f 72 65 6f 70 65 6e 28 29 5d 20 69 6e 74 65  b_reopen()] inte
ae90: 72 66 61 63 65 2e 20 20 46 6f 72 20 74 68 6f 73  rface.  For thos
aea0: 65 20 72 65 61 73 6f 6e 73 2c 0a 20 20 74 68 69  e reasons,.  thi
aeb0: 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 69  s optimization i
aec0: 73 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65  s disabled by de
aed0: 66 61 75 6c 74 2e 20 20 48 6f 77 65 76 65 72 2c  fault.  However,
aee0: 20 74 68 69 73 20 6f 70 74 69 6d 69 7a 61 74 69   this optimizati
aef0: 6f 6e 0a 20 20 6d 61 79 20 62 65 20 65 6e 61 62  on.  may be enab
af00: 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 20 69  led by default i
af10: 6e 20 61 20 66 75 74 75 72 65 20 72 65 6c 65 61  n a future relea
af20: 73 65 20 6f 66 20 53 51 4c 69 74 65 2e 0a 7d 0a  se of SQLite..}.
af30: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
af40: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4f  {SQLITE_ENABLE_O
af50: 46 46 53 45 54 5f 53 51 4c 5f 46 55 4e 43 7d 20  FFSET_SQL_FUNC} 
af60: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
af70: 65 6e 61 62 6c 65 73 20 73 75 70 70 6f 72 74 20  enables support 
af80: 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74 65 5f  for the [sqlite_
af90: 6f 66 66 73 65 74 28 58 29 5d 20 53 51 4c 20 66  offset(X)] SQL f
afa0: 75 6e 63 74 69 6f 6e 2e 0a 20 20 3c 70 3e 0a 20  unction..  <p>. 
afb0: 20 54 68 65 20 5b 73 71 6c 69 74 65 5f 6f 66 66   The [sqlite_off
afc0: 73 65 74 28 58 29 5d 20 53 51 4c 20 66 75 6e 63  set(X)] SQL func
afd0: 74 69 6f 6e 20 72 65 71 75 69 72 65 73 20 61 20  tion requires a 
afe0: 6e 65 77 20 69 6e 74 65 72 66 61 63 65 20 6f 6e  new interface on
aff0: 20 74 68 65 0a 20 20 42 2d 74 72 65 65 20 73 74   the.  B-tree st
b000: 6f 72 61 67 65 20 65 6e 67 69 6e 65 2c 20 61 20  orage engine, a 
b010: 6e 65 77 20 6f 70 63 6f 64 65 20 69 6e 20 74 68  new opcode in th
b020: 65 20 5b 76 69 72 74 75 61 6c 20 6d 61 63 68 69  e [virtual machi
b030: 6e 65 5d 20 74 68 61 74 0a 20 20 72 75 6e 73 20  ne] that.  runs 
b040: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2c 20  SQL statements, 
b050: 61 6e 64 20 61 20 6e 65 77 20 63 6f 6e 64 69 74  and a new condit
b060: 69 6f 6e 61 6c 20 69 6e 20 61 20 63 72 69 74 69  ional in a criti
b070: 63 61 6c 20 70 61 74 68 20 6f 66 20 74 68 65 0a  cal path of the.
b080: 20 20 63 6f 64 65 20 67 65 6e 65 72 61 74 6f 72    code generator
b090: 2e 20 20 54 6f 20 61 76 6f 69 64 20 74 68 61 74  .  To avoid that
b0a0: 20 6f 76 65 72 68 65 61 64 20 69 6e 20 61 70 70   overhead in app
b0b0: 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20 64  lications that d
b0c0: 6f 20 6e 6f 74 0a 20 20 6e 65 65 64 20 74 68 65  o not.  need the
b0d0: 20 75 74 69 6c 69 74 79 20 6f 66 20 73 71 6c 69   utility of sqli
b0e0: 74 65 5f 6f 66 66 73 65 74 28 58 29 2c 20 74 68  te_offset(X), th
b0f0: 65 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 64 69  e function is di
b100: 73 61 62 6c 65 64 20 62 79 0a 20 20 64 65 66 61  sabled by.  defa
b110: 75 6c 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ult..}..COMPILE_
b120: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
b130: 4e 41 42 4c 45 5f 50 52 45 55 50 44 41 54 45 5f  NABLE_PREUPDATE_
b140: 48 4f 4f 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f  HOOK} {.  This o
b150: 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 0a 20  ption enables . 
b160: 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 75 70 64   [sqlite3_preupd
b170: 61 74 65 5f 68 6f 6f 6b 7c 73 65 76 65 72 61 6c  ate_hook|several
b180: 20 6e 65 77 20 41 50 49 73 5d 20 74 68 61 74 20   new APIs] that 
b190: 70 72 6f 76 69 64 65 20 63 61 6c 6c 62 61 63 6b  provide callback
b1a0: 73 0a 20 20 70 72 69 6f 72 20 74 6f 20 61 6e 79  s.  prior to any
b1b0: 20 63 68 61 6e 67 65 20 74 6f 20 61 20 5b 72 6f   change to a [ro
b1c0: 77 69 64 20 74 61 62 6c 65 5d 2e 20 20 54 68 65  wid table].  The
b1d0: 20 63 61 6c 6c 62 61 63 6b 73 20 63 61 6e 20 62   callbacks can b
b1e0: 65 20 75 73 65 64 0a 20 20 74 6f 20 72 65 63 6f  e used.  to reco
b1f0: 72 64 20 74 68 65 20 73 74 61 74 65 20 6f 66 20  rd the state of 
b200: 74 68 65 20 72 6f 77 20 62 65 66 6f 72 65 20 74  the row before t
b210: 68 65 20 63 68 61 6e 67 65 20 6f 63 63 75 72 73  he change occurs
b220: 2e 0a 20 20 3c 70 3e 54 68 65 20 61 63 74 69 6f  ..  <p>The actio
b230: 6e 20 6f 66 20 74 68 65 20 70 72 65 75 70 64 61  n of the preupda
b240: 74 65 20 68 6f 6f 6b 20 69 73 20 73 69 6d 69 6c  te hook is simil
b250: 61 72 20 74 6f 20 74 68 65 0a 20 20 5b 73 71 6c  ar to the.  [sql
b260: 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b  ite3_update_hook
b270: 7c 75 70 64 61 74 65 20 68 6f 6f 6b 5d 20 65 78  |update hook] ex
b280: 63 65 70 74 20 74 68 61 74 20 74 68 65 20 63 61  cept that the ca
b290: 6c 6c 62 61 63 6b 20 69 73 0a 20 20 69 6e 76 6f  llback is.  invo
b2a0: 6b 65 64 20 62 65 66 6f 72 65 20 74 68 65 20 63  ked before the c
b2b0: 68 61 6e 67 65 2c 20 6e 6f 74 20 61 66 74 65 72  hange, not after
b2c0: 77 61 72 64 73 2c 20 61 6e 64 20 74 68 65 20 70  wards, and the p
b2d0: 72 65 75 70 64 61 74 65 0a 20 20 68 6f 6f 6b 20  reupdate.  hook 
b2e0: 69 6e 74 65 72 66 61 63 65 73 20 61 72 65 20 6f  interfaces are o
b2f0: 6d 69 74 74 65 64 20 75 6e 6c 65 73 73 20 74 68  mitted unless th
b300: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  is compile-time 
b310: 6f 70 74 69 6f 6e 20 69 73 0a 20 20 75 73 65 64  option is.  used
b320: 2e 0a 20 20 3c 70 3e 54 68 65 20 70 72 65 75 70  ..  <p>The preup
b330: 64 61 74 65 20 68 6f 6f 6b 20 69 6e 74 65 72 66  date hook interf
b340: 61 63 65 73 20 77 65 72 65 20 6f 72 69 67 69 6e  aces were origin
b350: 61 6c 6c 79 20 61 64 64 65 64 20 74 6f 0a 20 20  ally added to.  
b360: 73 75 70 70 6f 72 74 20 74 68 65 20 5b 73 65 73  support the [ses
b370: 73 69 6f 6e 5d 20 65 78 74 65 6e 73 69 6f 6e 2e  sion] extension.
b380: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
b390: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
b3a0: 45 5f 51 50 53 47 7d 20 7b 0a 20 20 54 68 69 73  E_QPSG} {.  This
b3b0: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74   option causes t
b3c0: 68 65 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65  he [query planne
b3d0: 72 20 73 74 61 62 69 6c 69 74 79 20 67 75 61 72  r stability guar
b3e0: 61 6e 74 65 65 5d 20 28 51 50 53 47 29 20 74 6f  antee] (QPSG) to
b3f0: 0a 20 20 62 65 20 6f 6e 20 62 79 20 64 65 66 61  .  be on by defa
b400: 75 6c 74 2e 20 20 4e 6f 72 6d 61 6c 6c 79 20 74  ult.  Normally t
b410: 68 65 20 51 50 53 47 20 69 73 20 6f 66 66 20 61  he QPSG is off a
b420: 6e 64 20 6d 75 73 74 20 62 65 20 61 63 74 69 76  nd must be activ
b430: 61 74 65 64 0a 20 20 61 74 20 72 75 6e 2d 74 69  ated.  at run-ti
b440: 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b 53 51  me using the [SQ
b450: 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
b460: 41 42 4c 45 5f 51 50 53 47 5d 20 6f 70 74 69 6f  ABLE_QPSG] optio
b470: 6e 20 74 6f 20 74 68 65 0a 20 20 5b 73 71 6c 69  n to the.  [sqli
b480: 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d  te3_db_config()]
b490: 20 69 6e 74 65 72 66 61 63 65 2e 0a 7d 0a 0a 43   interface..}..C
b4a0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
b4b0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52 42 55  QLITE_ENABLE_RBU
b4c0: 7d 20 7b 0a 20 20 45 6e 61 62 6c 65 20 74 68 65  } {.  Enable the
b4d0: 20 63 6f 64 65 20 74 68 65 20 69 6d 70 6c 65 6d   code the implem
b4e0: 65 6e 74 73 20 74 68 65 20 5b 52 42 55 20 65 78  ents the [RBU ex
b4f0: 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d  tension]..}..COM
b500: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
b510: 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45  ITE_ENABLE_RTREE
b520: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
b530: 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  n causes SQLite 
b540: 74 6f 20 69 6e 63 6c 75 64 65 20 73 75 70 70 6f  to include suppo
b550: 72 74 20 66 6f 72 20 74 68 65 0a 20 20 5b 72 74  rt for the.  [rt
b560: 72 65 65 20 7c 20 52 2a 54 72 65 65 20 69 6e 64  ree | R*Tree ind
b570: 65 78 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d  ex extension]..}
b580: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
b590: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
b5a0: 53 45 53 53 49 4f 4e 7d 20 7b 0a 20 20 54 68 69  SESSION} {.  Thi
b5b0: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
b5c0: 20 74 68 65 20 5b 73 65 73 73 69 6f 6e 20 65 78   the [session ex
b5d0: 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d  tension]..}..COM
b5e0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
b5f0: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 4d 54 5f  ITE_ENABLE_STMT_
b600: 53 43 41 4e 53 54 41 54 55 53 7d 20 7b 0a 20 20  SCANSTATUS} {.  
b610: 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62  This option enab
b620: 6c 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33  les the [sqlite3
b630: 5f 73 74 6d 74 5f 73 63 61 6e 73 74 61 74 75 73  _stmt_scanstatus
b640: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 20 20  ()] interface.  
b650: 54 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 73  The.  [sqlite3_s
b660: 74 6d 74 5f 73 63 61 6e 73 74 61 74 75 73 28 29  tmt_scanstatus()
b670: 5d 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 6e  ] interface is n
b680: 6f 72 6d 61 6c 6c 79 20 6f 6d 69 74 74 65 64 20  ormally omitted 
b690: 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 0a 20  from the build. 
b6a0: 20 62 65 63 61 75 73 65 20 69 74 20 69 6d 70 6f   because it impo
b6b0: 73 65 73 20 61 20 73 6d 61 6c 6c 20 70 65 72 66  ses a small perf
b6c0: 6f 72 6d 61 6e 63 65 20 70 65 6e 61 6c 74 79 2c  ormance penalty,
b6d0: 20 65 76 65 6e 20 6f 6e 20 73 74 61 74 65 6d 65   even on stateme
b6e0: 6e 74 73 20 74 68 61 74 0a 20 20 64 6f 20 6e 6f  nts that.  do no
b6f0: 74 20 75 73 65 20 74 68 65 20 66 65 61 74 75 72  t use the featur
b700: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
b710: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
b720: 42 4c 45 5f 53 54 4d 54 56 54 41 42 7d 20 7b 0a  BLE_STMTVTAB} {.
b730: 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74    This compile-t
b740: 69 6d 65 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c  ime option enabl
b750: 65 73 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 53  es the [SQLITE_S
b760: 54 4d 54 20 76 69 72 74 75 61 6c 20 74 61 62 6c  TMT virtual tabl
b770: 65 5d 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d  e] logic..}..COM
b780: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
b790: 49 54 45 5f 52 54 52 45 45 5f 49 4e 54 5f 4f 4e  ITE_RTREE_INT_ON
b7a0: 4c 59 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d  LY} {.  This com
b7b0: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
b7c0: 20 69 73 20 64 65 70 72 65 63 61 74 65 64 20 61   is deprecated a
b7d0: 6e 64 20 75 6e 74 65 73 74 65 64 2e 0a 7d 0a 0a  nd untested..}..
b7e0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
b7f0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51  SQLITE_ENABLE_SQ
b800: 4c 4c 4f 47 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LLOG} {.  This o
b810: 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 65 78  ption enables ex
b820: 74 72 61 20 63 6f 64 65 20 28 65 73 70 65 63 69  tra code (especi
b830: 61 6c 6c 79 20 74 68 65 20 5b 53 51 4c 49 54 45  ally the [SQLITE
b840: 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 5d 0a  _CONFIG_SQLLOG].
b850: 20 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c    option to [sql
b860: 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 29 20  ite3_config()]) 
b870: 74 68 61 74 20 63 61 6e 20 62 65 20 75 73 65 64  that can be used
b880: 20 74 6f 20 63 72 65 61 74 65 20 6c 6f 67 73 20   to create logs 
b890: 6f 66 20 61 6c 6c 0a 20 20 53 51 4c 69 74 65 20  of all.  SQLite 
b8a0: 70 72 6f 63 65 73 73 69 6e 67 20 70 65 72 66 6f  processing perfo
b8b0: 72 6d 65 64 20 62 79 20 61 6e 20 61 70 70 6c 69  rmed by an appli
b8c0: 63 61 74 69 6f 6e 2e 20 20 54 68 65 73 65 20 6c  cation.  These l
b8d0: 6f 67 73 20 63 61 6e 20 62 65 20 75 73 65 66 75  ogs can be usefu
b8e0: 6c 0a 20 20 69 6e 20 64 6f 69 6e 67 20 6f 66 66  l.  in doing off
b8f0: 2d 6c 69 6e 65 20 61 6e 61 6c 79 73 69 73 20 6f  -line analysis o
b900: 66 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f  f the behavior o
b910: 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  f an application
b920: 2c 20 61 6e 64 20 65 73 70 65 63 69 61 6c 6c 79  , and especially
b930: 0a 20 20 66 6f 72 20 70 65 72 66 6f 72 6d 61 6e  .  for performan
b940: 63 65 20 61 6e 61 6c 79 73 69 73 2e 20 20 49 6e  ce analysis.  In
b950: 20 6f 72 64 65 72 20 66 6f 72 20 74 68 65 20 53   order for the S
b960: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c  QLITE_ENABLE_SQL
b970: 4c 4f 47 20 6f 70 74 69 6f 6e 20 74 6f 20 0a 20  LOG option to . 
b980: 20 62 65 20 75 73 65 66 75 6c 2c 20 73 6f 6d 65   be useful, some
b990: 20 65 78 74 72 61 20 63 6f 64 65 20 69 73 20 72   extra code is r
b9a0: 65 71 75 69 72 65 64 2e 20 20 54 68 65 20 0a 20  equired.  The . 
b9b0: 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f   <a href="http:/
b9c0: 2f 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f  /www.sqlite.org/
b9d0: 73 72 63 2f 64 6f 63 2f 74 72 75 6e 6b 2f 73 72  src/doc/trunk/sr
b9e0: 63 2f 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22  c/test_sqllog.c"
b9f0: 3e 22 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22  >"test_sqllog.c"
ba00: 3c 2f 61 3e 0a 20 20 73 6f 75 72 63 65 20 63 6f  </a>.  source co
ba10: 64 65 0a 20 20 66 69 6c 65 20 69 6e 20 74 68 65  de.  file in the
ba20: 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65 20 74   SQLite source t
ba30: 72 65 65 20 69 73 20 61 20 77 6f 72 6b 69 6e 67  ree is a working
ba40: 20 65 78 61 6d 70 6c 65 20 6f 66 20 74 68 65 20   example of the 
ba50: 72 65 71 75 69 72 65 64 20 65 78 74 72 61 0a 20  required extra. 
ba60: 20 63 6f 64 65 2e 20 20 4f 6e 20 75 6e 69 78 20   code.  On unix 
ba70: 61 6e 64 20 77 69 6e 64 6f 77 73 20 73 79 73 74  and windows syst
ba80: 65 6d 73 2c 20 61 20 64 65 76 65 6c 6f 70 65 72  ems, a developer
ba90: 20 63 61 6e 20 61 70 70 65 6e 64 20 74 68 65 20   can append the 
baa0: 74 65 78 74 20 6f 66 20 74 68 65 0a 20 20 22 74  text of the.  "t
bab0: 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f  est_sqllog.c" so
bac0: 75 72 63 65 20 63 6f 64 65 20 66 69 6c 65 20 74  urce code file t
bad0: 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 61 6e 20  o the end of an 
bae0: 22 73 71 6c 69 74 65 33 2e 63 22 20 61 6d 61 6c  "sqlite3.c" amal
baf0: 67 61 6d 61 74 69 6f 6e 2c 0a 20 20 72 65 63 6f  gamation,.  reco
bb00: 6d 70 69 6c 65 20 74 68 65 20 61 70 70 6c 69 63  mpile the applic
bb10: 61 74 69 6f 6e 20 75 73 69 6e 67 20 74 68 65 20  ation using the 
bb20: 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  -DSQLITE_ENABLE_
bb30: 53 51 4c 4c 4f 47 20 6f 70 74 69 6f 6e 2c 20 74  SQLLOG option, t
bb40: 68 65 6e 20 0a 20 20 63 6f 6e 74 72 6f 6c 20 6c  hen .  control l
bb50: 6f 67 67 69 6e 67 20 75 73 69 6e 67 20 65 6e 76  ogging using env
bb60: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
bb70: 65 73 2e 20 20 53 65 65 20 74 68 65 20 68 65 61  es.  See the hea
bb80: 64 65 72 20 63 6f 6d 6d 65 6e 74 20 6f 6e 20 0a  der comment on .
bb90: 20 20 74 68 65 20 22 74 65 73 74 5f 73 71 6c 6c    the "test_sqll
bba0: 6f 67 2e 63 22 20 73 6f 75 72 63 65 20 66 69 6c  og.c" source fil
bbb0: 65 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  e for additional
bbc0: 20 64 65 74 61 69 6c 2e 20 20 0a 7d 0a 0a 43 4f   detail.  .}..CO
bbd0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
bbe0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54  LITE_ENABLE_STAT
bbf0: 32 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  2} {.  This opti
bc00: 6f 6e 20 75 73 65 64 20 74 6f 20 63 61 75 73 65  on used to cause
bc10: 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63   the [ANALYZE] c
bc20: 6f 6d 6d 61 6e 64 20 74 6f 20 63 6f 6c 6c 65 63  ommand to collec
bc30: 74 0a 20 20 69 6e 64 65 78 20 68 69 73 74 6f 67  t.  index histog
bc40: 72 61 6d 20 64 61 74 61 20 69 6e 20 74 68 65 20  ram data in the 
bc50: 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 32 3c  <b>sqlite_stat2<
bc60: 2f 62 3e 20 74 61 62 6c 65 2e 20 20 42 75 74 20  /b> table.  But 
bc70: 74 68 61 74 0a 20 20 66 75 6e 63 74 69 6f 6e 61  that.  functiona
bc80: 6c 69 74 79 20 77 61 73 20 73 75 70 65 72 63 65  lity was superce
bc90: 64 65 64 20 62 79 20 5b 53 51 4c 49 54 45 5f 45  ded by [SQLITE_E
bca0: 4e 41 42 4c 45 5f 53 54 41 54 33 5d 20 61 73 20  NABLE_STAT3] as 
bcb0: 6f 66 0a 20 20 53 51 4c 69 74 65 20 5b 76 65 72  of.  SQLite [ver
bcc0: 73 69 6f 6e 20 33 2e 37 2e 39 5d 20 28 5b 64 61  sion 3.7.9] ([da
bcd0: 74 65 6f 66 3a 33 2e 37 2e 39 5d 29 2e 20 20 0a  teof:3.7.9]).  .
bce0: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 45 4e 41    The SQLITE_ENA
bcf0: 42 4c 45 5f 53 54 41 54 32 20 63 6f 6d 70 69 6c  BLE_STAT2 compil
bd00: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 0a 20 20  e-time option.  
bd10: 69 73 20 6e 6f 77 20 61 20 6e 6f 2d 6f 70 2e 0a  is now a no-op..
bd20: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
bd30: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
bd40: 5f 53 54 41 54 33 7d 20 7b 0a 20 20 54 68 69 73  _STAT3} {.  This
bd50: 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 61 64 64   option adds add
bd60: 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 74 6f  itional logic to
bd70: 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63   the [ANALYZE] c
bd80: 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 6f 0a 20 20  ommand and to.  
bd90: 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e  the [query plann
bda0: 65 72 5d 20 74 68 61 74 20 63 61 6e 20 68 65 6c  er] that can hel
bdb0: 70 20 53 51 4c 69 74 65 20 74 6f 20 63 68 6f 73  p SQLite to chos
bdc0: 65 20 61 20 62 65 74 74 65 72 20 71 75 65 72 79  e a better query
bdd0: 20 70 6c 61 6e 0a 20 20 75 6e 64 65 72 20 63 65   plan.  under ce
bde0: 72 74 61 69 6e 20 73 69 74 75 61 74 69 6f 6e 73  rtain situations
bdf0: 2e 20 20 54 68 65 20 5b 41 4e 41 4c 59 5a 45 5d  .  The [ANALYZE]
be00: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 6e 68 61   command is enha
be10: 6e 63 65 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a  nced to collect.
be20: 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61    histogram data
be30: 20 66 72 6f 6d 20 74 68 65 20 6c 65 66 74 2d 6d   from the left-m
be40: 6f 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20 65 61  ost column of ea
be50: 63 68 20 69 6e 64 65 78 20 61 6e 64 20 73 74 6f  ch index and sto
be60: 72 65 20 74 68 61 74 20 64 61 74 61 0a 20 20 69  re that data.  i
be70: 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 5f 73 74  n the [sqlite_st
be80: 61 74 33 5d 20 74 61 62 6c 65 2e 20 20 54 68 65  at3] table.  The
be90: 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 77   query planner w
bea0: 69 6c 6c 20 74 68 65 6e 20 75 73 65 20 74 68 65  ill then use the
beb0: 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74  .  histogram dat
bec0: 61 20 74 6f 20 68 65 6c 70 20 69 74 20 6d 61 6b  a to help it mak
bed0: 65 20 62 65 74 74 65 72 20 69 6e 64 65 78 20 63  e better index c
bee0: 68 6f 69 63 65 73 2e 20 20 4e 6f 74 65 2c 20 68  hoices.  Note, h
bef0: 6f 77 65 76 65 72 2c 0a 20 20 74 68 61 74 20 74  owever,.  that t
bf00: 68 65 20 75 73 65 20 6f 66 20 68 69 73 74 6f 67  he use of histog
bf10: 72 61 6d 20 64 61 74 61 20 69 6e 20 71 75 65 72  ram data in quer
bf20: 79 20 70 6c 61 6e 6e 65 72 20 76 69 6f 6c 61 74  y planner violat
bf30: 65 73 20 74 68 65 0a 20 20 5b 71 75 65 72 79 20  es the.  [query 
bf40: 70 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c 69 74  planner stabilit
bf50: 79 20 67 75 61 72 61 6e 74 65 65 5d 20 77 68 69  y guarantee] whi
bf60: 63 68 20 69 73 20 69 6d 70 6f 72 74 61 6e 74 20  ch is important 
bf70: 74 6f 20 73 6f 6d 65 20 61 70 70 6c 69 63 61 74  to some applicat
bf80: 69 6f 6e 73 2e 0a 20 20 3c 70 3e 0a 7d 0a 0a 43  ions..  <p>.}..C
bf90: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
bfa0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41  QLITE_ENABLE_STA
bfb0: 54 34 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  T4} {.  This opt
bfc0: 69 6f 6e 20 61 64 64 73 20 61 64 64 69 74 69 6f  ion adds additio
bfd0: 6e 61 6c 20 6c 6f 67 69 63 20 74 6f 20 74 68 65  nal logic to the
bfe0: 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61   [ANALYZE] comma
bff0: 6e 64 20 61 6e 64 20 74 6f 0a 20 20 74 68 65 20  nd and to.  the 
c000: 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 5d 20  [query planner] 
c010: 74 68 61 74 20 63 61 6e 20 68 65 6c 70 20 53 51  that can help SQ
c020: 4c 69 74 65 20 74 6f 20 63 68 6f 73 65 20 61 20  Lite to chose a 
c030: 62 65 74 74 65 72 20 71 75 65 72 79 20 70 6c 61  better query pla
c040: 6e 0a 20 20 75 6e 64 65 72 20 63 65 72 74 61 69  n.  under certai
c050: 6e 20 73 69 74 75 61 74 69 6f 6e 73 2e 20 20 54  n situations.  T
c060: 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d  he [ANALYZE] com
c070: 6d 61 6e 64 20 69 73 20 65 6e 68 61 6e 63 65 64  mand is enhanced
c080: 20 74 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 68 69   to collect.  hi
c090: 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66 72 6f  stogram data fro
c0a0: 6d 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66  m all columns of
c0b0: 20 65 76 65 72 79 20 69 6e 64 65 78 20 61 6e 64   every index and
c0c0: 20 73 74 6f 72 65 20 74 68 61 74 20 64 61 74 61   store that data
c0d0: 0a 20 20 69 6e 20 74 68 65 20 5b 73 71 6c 69 74  .  in the [sqlit
c0e0: 65 5f 73 74 61 74 34 5d 20 74 61 62 6c 65 2e 20  e_stat4] table. 
c0f0: 20 54 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e   The query plann
c100: 65 72 20 77 69 6c 6c 20 74 68 65 6e 20 75 73 65  er will then use
c110: 20 74 68 65 0a 20 20 68 69 73 74 6f 67 72 61 6d   the.  histogram
c120: 20 64 61 74 61 20 74 6f 20 68 65 6c 70 20 69 74   data to help it
c130: 20 6d 61 6b 65 20 62 65 74 74 65 72 20 69 6e 64   make better ind
c140: 65 78 20 63 68 6f 69 63 65 73 2e 20 20 54 68 65  ex choices.  The
c150: 20 64 6f 77 6e 73 69 64 65 20 6f 66 0a 20 20 74   downside of.  t
c160: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
c170: 20 6f 70 74 69 6f 6e 20 69 73 20 74 68 61 74 20   option is that 
c180: 69 74 20 76 69 6f 6c 61 74 65 73 20 74 68 65 0a  it violates the.
c190: 20 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72    [query planner
c1a0: 20 73 74 61 62 69 6c 69 74 79 20 67 75 61 72 61   stability guara
c1b0: 6e 74 65 65 5d 20 6d 61 6b 69 6e 67 20 69 74 20  ntee] making it 
c1c0: 6d 6f 72 65 20 64 69 66 66 69 63 75 6c 74 20 74  more difficult t
c1d0: 6f 20 65 6e 73 75 72 65 0a 20 20 63 6f 6e 73 69  o ensure.  consi
c1e0: 73 74 65 6e 74 20 70 65 72 66 6f 72 6d 61 6e 63  stent performanc
c1f0: 65 20 69 6e 20 6d 61 73 73 2d 70 72 6f 64 75 63  e in mass-produc
c200: 65 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e  ed applications.
c210: 0a 20 20 3c 70 3e 0a 20 20 53 51 4c 49 54 45 5f  .  <p>.  SQLITE_
c220: 45 4e 41 42 4c 45 5f 53 54 41 54 34 20 69 73 20  ENABLE_STAT4 is 
c230: 61 6e 20 65 6e 68 61 6e 63 65 6d 65 6e 74 20 6f  an enhancement o
c240: 66 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  f [SQLITE_ENABLE
c250: 5f 53 54 41 54 33 5d 2e 20 20 53 54 41 54 33 0a  _STAT3].  STAT3.
c260: 20 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65 64 20    only recorded 
c270: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66  histogram data f
c280: 6f 72 20 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74  or the left-most
c290: 20 63 6f 6c 75 6d 6e 20 6f 66 20 65 61 63 68 20   column of each 
c2a0: 69 6e 64 65 78 0a 20 20 77 68 65 72 65 61 73 20  index.  whereas 
c2b0: 74 68 65 20 53 54 41 54 34 20 65 6e 68 61 6e 63  the STAT4 enhanc
c2c0: 65 6d 65 6e 74 20 72 65 63 6f 72 64 73 20 68 69  ement records hi
c2d0: 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66 72 6f  stogram data fro
c2e0: 6d 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 0a 20 20  m all columns.  
c2f0: 6f 66 20 65 61 63 68 20 69 6e 64 65 78 2e 0a 20  of each index.. 
c300: 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41   The [SQLITE_ENA
c310: 42 4c 45 5f 53 54 41 54 33 5d 20 63 6f 6d 70 69  BLE_STAT3] compi
c320: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
c330: 73 20 61 20 6e 6f 2d 6f 70 20 61 6e 64 20 69 73  s a no-op and is
c340: 20 69 67 6e 6f 72 65 64 0a 20 20 69 66 20 74 68   ignored.  if th
c350: 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  e SQLITE_ENABLE_
c360: 53 54 41 54 34 20 63 6f 6d 70 69 6c 65 2d 74 69  STAT4 compile-ti
c370: 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  me option is use
c380: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
c390: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
c3a0: 42 4c 45 5f 54 52 45 45 5f 45 58 50 4c 41 49 4e  BLE_TREE_EXPLAIN
c3b0: 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70 69  } {.  This compi
c3c0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
c3d0: 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64  s no longer used
c3e0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
c3f0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
c400: 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45  LE_UPDATE_DELETE
c410: 5f 4c 49 4d 49 54 7d 20 7b 0a 20 20 54 68 69 73  _LIMIT} {.  This
c420: 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20   option enables 
c430: 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44 45  an optional ORDE
c440: 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20 63  R BY and LIMIT c
c450: 6c 61 75 73 65 20 6f 6e 20 0a 20 20 5b 55 50 44  lause on .  [UPD
c460: 41 54 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54 45  ATE] and [DELETE
c470: 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 0a 20  ] statements... 
c480: 20 3c 70 3e 49 66 20 74 68 69 73 20 6f 70 74 69   <p>If this opti
c490: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
c4a0: 68 65 6e 20 69 74 20 6d 75 73 74 20 61 6c 73 6f  hen it must also
c4b0: 20 62 65 20 0a 20 20 64 65 66 69 6e 65 64 20 77   be .  defined w
c4c0: 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 5b 4c  hen using the [L
c4d0: 65 6d 6f 6e 20 70 61 72 73 65 72 20 67 65 6e 65  emon parser gene
c4e0: 72 61 74 6f 72 5d 20 74 6f 6f 6c 20 74 6f 20 67  rator] tool to g
c4f0: 65 6e 65 72 61 74 65 20 61 20 70 61 72 73 65 2e  enerate a parse.
c500: 63 0a 20 20 66 69 6c 65 2e 20 42 65 63 61 75 73  c.  file. Becaus
c510: 65 20 6f 66 20 74 68 69 73 2c 20 74 68 69 73 20  e of this, this 
c520: 6f 70 74 69 6f 6e 20 6d 61 79 20 6f 6e 6c 79 20  option may only 
c530: 62 65 20 75 73 65 64 20 77 68 65 6e 20 74 68 65  be used when the
c540: 20 6c 69 62 72 61 72 79 20 69 73 20 62 75 69 6c   library is buil
c550: 74 0a 20 20 66 72 6f 6d 20 73 6f 75 72 63 65 2c  t.  from source,
c560: 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b 61   not from the [a
c570: 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20  malgamation] or 
c580: 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74  from the collect
c590: 69 6f 6e 20 6f 66 0a 20 20 70 72 65 2d 70 61 63  ion of.  pre-pac
c5a0: 6b 61 67 65 64 20 43 20 66 69 6c 65 73 20 70 72  kaged C files pr
c5b0: 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d 55  ovided for non-U
c5c0: 6e 69 78 20 6c 69 6b 65 20 70 6c 61 74 66 6f 72  nix like platfor
c5d0: 6d 73 20 6f 6e 20 74 68 65 20 77 65 62 73 69 74  ms on the websit
c5e0: 65 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d  e..  </p>.}..COM
c5f0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
c600: 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f  ITE_ENABLE_UNKNO
c610: 57 4e 5f 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 7d  WN_SQL_FUNCTION}
c620: 20 7b 0a 20 20 57 68 65 6e 20 74 68 65 20 53 51   {.  When the SQ
c630: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e  LITE_ENABLE_UNKN
c640: 4f 57 4e 5f 53 51 4c 5f 46 55 4e 43 54 49 4f 4e  OWN_SQL_FUNCTION
c650: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
c660: 74 69 6f 6e 20 69 73 0a 20 20 61 63 74 69 76 61  tion is.  activa
c670: 74 65 64 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c  ted, SQLite will
c680: 20 73 75 70 70 72 65 73 73 20 22 75 6e 6b 6e 6f   suppress "unkno
c690: 77 6e 20 66 75 6e 63 74 69 6f 6e 22 20 65 72 72  wn function" err
c6a0: 6f 72 73 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67  ors when running
c6b0: 0a 20 20 61 6e 20 5b 45 58 50 4c 41 49 4e 5d 20  .  an [EXPLAIN] 
c6c0: 6f 72 20 5b 45 58 50 4c 41 49 4e 20 51 55 45 52  or [EXPLAIN QUER
c6d0: 59 20 50 4c 41 4e 5d 2e 20 20 49 6e 73 74 65 61  Y PLAN].  Instea
c6e0: 64 20 6f 66 20 74 68 72 6f 77 69 6e 67 20 61 6e  d of throwing an
c6f0: 20 65 72 72 6f 72 2c 0a 20 20 53 51 4c 69 74 65   error,.  SQLite
c700: 20 77 69 6c 6c 20 69 6e 73 65 72 74 20 61 20 73   will insert a s
c710: 75 62 73 74 69 74 75 74 65 20 6e 6f 2d 6f 70 20  ubstitute no-op 
c720: 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 64 20 22  function named "
c730: 75 6e 6b 6e 6f 77 6e 28 29 22 2e 0a 20 20 54 68  unknown()"..  Th
c740: 65 20 73 75 62 73 74 69 74 75 74 69 6f 6e 20 6f  e substitution o
c750: 66 20 22 75 6e 6b 6e 6f 77 6e 28 29 22 20 69 6e  f "unknown()" in
c760: 20 70 6c 61 63 65 20 6f 66 20 75 6e 72 65 63 6f   place of unreco
c770: 67 6e 69 7a 65 64 20 66 75 6e 63 74 69 6f 6e 73  gnized functions
c780: 0a 20 20 6f 6e 6c 79 20 6f 63 63 75 72 73 20 6f  .  only occurs o
c790: 6e 20 5b 45 58 50 4c 41 49 4e 5d 20 61 6e 64 20  n [EXPLAIN] and 
c7a0: 5b 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50  [EXPLAIN QUERY P
c7b0: 4c 41 4e 5d 2c 20 6e 6f 74 20 6f 6e 20 6f 72 64  LAN], not on ord
c7c0: 69 6e 61 72 79 0a 20 20 73 74 61 74 65 6d 65 6e  inary.  statemen
c7d0: 74 73 2e 0a 20 20 3c 70 3e 0a 20 20 57 68 65 6e  ts..  <p>.  When
c7e0: 20 75 73 65 64 20 69 6e 20 74 68 65 20 5b 63 6f   used in the [co
c7f0: 6d 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c  mmand-line shell
c800: 5d 2c 20 74 68 65 0a 20 20 53 51 4c 49 54 45 5f  ], the.  SQLITE_
c810: 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e 5f 53  ENABLE_UNKNOWN_S
c820: 51 4c 5f 46 55 4e 43 54 49 4f 4e 20 66 65 61 74  QL_FUNCTION feat
c830: 75 72 65 20 61 6c 6c 6f 77 73 20 53 51 4c 20 74  ure allows SQL t
c840: 65 78 74 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  ext that contain
c850: 73 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d  s.  application-
c860: 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e  defined function
c870: 73 20 74 6f 20 62 65 20 70 61 73 74 65 64 20 69  s to be pasted i
c880: 6e 74 6f 20 74 68 65 20 73 68 65 6c 6c 20 66 6f  nto the shell fo
c890: 72 20 0a 20 20 61 6e 61 6c 79 73 69 73 20 61 6e  r .  analysis an
c8a0: 64 20 64 65 62 75 67 67 69 6e 67 20 77 69 74 68  d debugging with
c8b0: 6f 75 74 20 68 61 76 69 6e 67 20 74 6f 20 63 72  out having to cr
c8c0: 65 61 74 65 20 61 6e 64 20 6c 6f 61 64 20 61 6e  eate and load an
c8d0: 0a 20 20 65 78 74 65 6e 73 69 6f 6e 20 74 68 61  .  extension tha
c8e0: 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65  t implements the
c8f0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66   application-def
c900: 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0a  ined functions..
c910: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
c920: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
c930: 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46 59 7d 20  _UNLOCK_NOTIFY} 
c940: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
c950: 65 6e 61 62 6c 65 73 20 74 68 65 20 5b 73 71 6c  enables the [sql
c960: 69 74 65 33 5f 75 6e 6c 6f 63 6b 5f 6e 6f 74 69  ite3_unlock_noti
c970: 66 79 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  fy()] interface 
c980: 61 6e 64 0a 20 20 69 74 73 20 61 73 73 6f 63 69  and.  its associ
c990: 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69  ated functionali
c9a0: 74 79 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63  ty.  See the doc
c9b0: 75 6d 65 6e 74 61 74 69 6f 6e 20 74 69 74 6c 65  umentation title
c9c0: 64 0a 20 20 5b 55 73 69 6e 67 20 74 68 65 20 53  d.  [Using the S
c9d0: 51 4c 69 74 65 20 55 6e 6c 6f 63 6b 20 4e 6f 74  QLite Unlock Not
c9e0: 69 66 69 63 61 74 69 6f 6e 20 46 65 61 74 75 72  ification Featur
c9f0: 65 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  e] for additiona
ca00: 6c 0a 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  l.  information.
ca10: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
ca20: 4f 4e 20 7b 53 51 4c 49 54 45 5f 49 4e 54 52 4f  ON {SQLITE_INTRO
ca30: 53 50 45 43 54 49 4f 4e 5f 50 52 41 47 4d 41 53  SPECTION_PRAGMAS
ca40: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
ca50: 6e 20 61 64 64 73 20 73 6f 6d 65 20 65 78 74 72  n adds some extr
ca60: 61 20 50 52 41 47 4d 41 20 73 74 61 74 65 6d 65  a PRAGMA stateme
ca70: 6e 74 73 20 73 75 63 68 20 61 73 0a 20 20 5b 50  nts such as.  [P
ca80: 52 41 47 4d 41 20 66 75 6e 63 74 69 6f 6e 5f 6c  RAGMA function_l
ca90: 69 73 74 5d 2c 20 5b 50 52 41 47 4d 41 20 6d 6f  ist], [PRAGMA mo
caa0: 64 75 6c 65 5f 6c 69 73 74 5d 2c 20 61 6e 64 0a  dule_list], and.
cab0: 20 20 5b 50 52 41 47 4d 41 20 70 72 61 67 6d 61    [PRAGMA pragma
cac0: 5f 6c 69 73 74 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  _list]..}..COMPI
cad0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
cae0: 45 5f 53 4f 55 4e 44 45 58 7d 20 7b 0a 20 20 54  E_SOUNDEX} {.  T
caf0: 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c  his option enabl
cb00: 65 73 20 74 68 65 20 5b 73 6f 75 6e 64 65 78 28  es the [soundex(
cb10: 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e  ) SQL function].
cb20: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
cb30: 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 53 45 5f 41  ON {SQLITE_USE_A
cb40: 4c 4c 4f 43 41 7d 20 7b 0a 20 20 49 66 20 74 68  LLOCA} {.  If th
cb50: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 65 6e 61  is option is ena
cb60: 62 6c 65 64 2c 20 74 68 65 6e 20 74 68 65 20 61  bled, then the a
cb70: 6c 6c 6f 63 61 28 29 20 6d 65 6d 6f 72 79 20 61  lloca() memory a
cb80: 6c 6c 6f 63 61 74 6f 72 20 77 69 6c 6c 20 62 65  llocator will be
cb90: 0a 20 20 75 73 65 64 20 69 6e 20 61 20 66 65 77  .  used in a few
cba0: 20 73 69 74 75 61 74 69 6f 6e 73 20 77 68 65 72   situations wher
cbb0: 65 20 69 74 20 69 73 20 61 70 70 72 6f 70 72 69  e it is appropri
cbc0: 61 74 65 2e 20 20 54 68 69 73 20 72 65 73 75 6c  ate.  This resul
cbd0: 74 73 20 69 6e 20 61 20 73 6c 69 67 68 74 6c 79  ts in a slightly
cbe0: 0a 20 20 73 6d 61 6c 6c 65 72 20 61 6e 64 20 66  .  smaller and f
cbf0: 61 73 74 65 72 20 62 69 6e 61 72 79 2e 20 20 54  aster binary.  T
cc00: 68 65 20 53 51 4c 49 54 45 5f 55 53 45 5f 41 4c  he SQLITE_USE_AL
cc10: 4c 4f 43 41 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  LOCA compile-tim
cc20: 65 20 6f 6e 6c 79 20 6f 6e 6c 79 20 0a 20 20 77  e only only .  w
cc30: 6f 72 6b 73 2c 20 6f 66 20 63 6f 75 72 73 65 2c  orks, of course,
cc40: 20 6f 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74   on systems that
cc50: 20 73 75 70 70 6f 72 74 20 61 6c 6c 6f 63 61 28   support alloca(
cc60: 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  )..}..COMPILE_OP
cc70: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 53 45  TION {SQLITE_USE
cc80: 5f 46 43 4e 54 4c 5f 54 52 41 43 45 7d 20 7b 0a  _FCNTL_TRACE} {.
cc90: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
cca0: 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 69  uses SQLite to i
ccb0: 73 73 75 65 20 65 78 74 72 61 20 5b 53 51 4c 49  ssue extra [SQLI
ccc0: 54 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 5d 20  TE_FCNTL_TRACE] 
ccd0: 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 73 0a 20 20  file controls.  
cce0: 74 6f 20 70 72 6f 76 69 64 65 20 73 75 70 70 6c  to provide suppl
ccf0: 65 6d 65 6e 74 61 72 79 20 69 6e 66 6f 72 6d 61  ementary informa
cd00: 74 69 6f 6e 20 74 6f 20 74 68 65 20 56 46 53 2e  tion to the VFS.
cd10: 20 20 54 68 65 20 22 76 66 73 6c 6f 67 2e 63 22    The "vfslog.c"
cd20: 20 65 78 74 65 6e 73 69 6f 6e 0a 20 20 6d 61 6b   extension.  mak
cd30: 65 73 20 75 73 65 20 6f 66 20 74 68 69 73 20 74  es use of this t
cd40: 6f 20 70 72 6f 76 69 64 65 20 65 6e 68 61 6e 63  o provide enhanc
cd50: 65 64 20 6c 6f 67 73 20 6f 66 20 56 46 53 20 61  ed logs of VFS a
cd60: 63 74 69 76 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50  ctivity..}..COMP
cd70: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
cd80: 54 45 5f 55 53 45 5f 5a 4c 49 42 7d 20 7b 0a 20  TE_USE_ZLIB} {. 
cd90: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
cda0: 73 65 73 20 73 6f 6d 65 20 65 78 74 65 6e 73 69  ses some extensi
cdb0: 6f 6e 73 20 74 6f 20 6c 69 6e 6b 20 61 67 61 69  ons to link agai
cdc0: 6e 73 74 20 74 68 65 20 0a 20 20 5b 68 74 74 70  nst the .  [http
cdd0: 73 3a 2f 2f 7a 6c 69 62 2e 6e 65 74 7c 7a 6c 69  s://zlib.net|zli
cde0: 62 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6c 69  b compression li
cdf0: 62 72 61 72 79 5d 2e 0a 20 20 3c 70 3e 0a 20 20  brary]..  <p>.  
ce00: 54 68 69 73 20 6f 70 74 69 6f 6e 20 68 61 73 20  This option has 
ce10: 6e 6f 20 61 66 66 65 63 74 20 6f 6e 20 74 68 65  no affect on the
ce20: 20 53 51 4c 69 74 65 20 63 6f 72 65 2e 20 20 49   SQLite core.  I
ce30: 74 20 69 73 20 6f 6e 6c 79 20 75 73 65 64 20 62  t is only used b
ce40: 79 20 65 78 74 65 6e 73 69 6f 6e 73 2e 0a 20 20  y extensions..  
ce50: 54 68 69 73 20 69 73 20 6f 70 74 69 6f 6e 20 69  This is option i
ce60: 73 20 6e 65 63 65 73 73 61 72 79 20 66 6f 72 20  s necessary for 
ce70: 74 68 65 20 63 6f 6d 6d 70 72 65 73 73 69 6f 6e  the commpression
ce80: 20 61 6e 64 20 64 65 63 6f 6d 70 72 65 73 73 69   and decompressi
ce90: 6f 6e 0a 20 20 66 75 6e 63 74 69 6f 6e 73 20 74  on.  functions t
cea0: 68 61 74 20 61 72 65 20 70 61 72 74 20 6f 66 20  hat are part of 
ceb0: 5b 53 51 4c 20 41 72 63 68 69 76 65 5d 20 73 75  [SQL Archive] su
cec0: 70 70 6f 72 74 20 69 6e 20 74 68 65 0a 20 20 5b  pport in the.  [
ced0: 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65  command-line she
cee0: 6c 6c 5d 2e 0a 20 20 3c 70 3e 0a 20 20 57 68 65  ll]..  <p>.  Whe
cef0: 6e 20 63 6f 6d 70 69 6c 69 6e 67 20 77 69 74 68  n compiling with
cf00: 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 69 74   this option, it
cf10: 20 77 69 6c 6c 20 6e 6f 72 6d 61 6c 6c 79 0a 20   will normally. 
cf20: 20 62 65 20 6e 65 63 65 73 73 61 72 79 20 74 6f   be necessary to
cf30: 20 61 64 64 20 61 20 6c 69 6e 6b 65 72 20 6f 70   add a linker op
cf40: 74 69 6f 6e 20 74 6f 20 69 6e 63 6c 75 64 65 20  tion to include 
cf50: 74 68 65 20 7a 6c 69 62 20 6c 69 62 72 61 72 79  the zlib library
cf60: 20 69 6e 20 74 68 65 0a 20 20 62 75 69 6c 64 2e   in the.  build.
cf70: 20 20 4e 6f 72 6d 61 6c 20 74 68 69 73 20 6f 70    Normal this op
cf80: 74 69 6f 6e 20 69 73 20 22 2d 6c 7a 22 20 62 75  tion is "-lz" bu
cf90: 74 20 6d 69 67 68 74 20 62 65 20 64 69 66 66 65  t might be diffe
cfa0: 72 65 6e 74 20 6f 6e 20 64 69 66 66 65 72 65 6e  rent on differen
cfb0: 74 0a 20 20 73 79 73 74 65 6d 73 2e 0a 20 20 3c  t.  systems..  <
cfc0: 70 3e 0a 20 20 57 68 65 6e 20 62 75 69 6c 64 69  p>.  When buildi
cfd0: 6e 67 20 77 69 74 68 20 4d 53 56 43 20 6f 6e 20  ng with MSVC on 
cfe0: 57 69 6e 64 6f 77 73 20 73 79 73 74 65 6d 73 2c  Windows systems,
cff0: 20 6f 6e 65 20 63 61 6e 20 70 75 74 20 74 68 65   one can put the
d000: 20 7a 6c 69 62 20 73 6f 75 72 63 65 0a 20 20 63   zlib source.  c
d010: 6f 64 65 20 69 6e 20 74 68 65 20 63 6f 6d 70 61  ode in the compa
d020: 74 2f 7a 6c 69 62 20 73 75 62 64 69 72 65 63 74  t/zlib subdirect
d030: 6f 72 79 20 6f 66 20 74 68 65 20 73 6f 75 72 63  ory of the sourc
d040: 65 20 74 72 65 65 20 61 6e 64 20 74 68 65 6e 20  e tree and then 
d050: 61 64 64 0a 20 20 74 68 65 20 55 53 45 5f 5a 4c  add.  the USE_ZL
d060: 49 42 3d 31 20 6f 70 74 69 6f 6e 20 74 6f 20 74  IB=1 option to t
d070: 68 65 20 6e 6d 61 6b 65 20 63 6f 6d 6d 61 6e 64  he nmake command
d080: 20 74 6f 20 63 61 75 73 65 20 74 68 65 20 54 68   to cause the Th
d090: 65 20 4d 61 6b 65 66 69 6c 65 2e 6d 73 63 0a 20  e Makefile.msc. 
d0a0: 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   to automaticall
d0b0: 79 20 62 75 69 6c 64 20 61 6e 64 20 75 73 65 20  y build and use 
d0c0: 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 7a  an appropriate z
d0d0: 6c 69 62 20 6c 69 62 72 61 72 79 20 69 6d 70 6c  lib library impl
d0e0: 65 6d 65 6e 74 61 74 69 6f 6e 2e 0a 7d 0a 0a 43  ementation..}..C
d0f0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 59  OMPILE_OPTION {Y
d100: 59 54 52 41 43 4b 4d 41 58 53 54 41 43 4b 44 45  YTRACKMAXSTACKDE
d110: 50 54 48 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  PTH} {.  This op
d120: 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20  tion causes the 
d130: 4c 41 4c 52 28 31 29 20 70 61 72 73 65 72 20 73  LALR(1) parser s
d140: 74 61 63 6b 20 64 65 70 74 68 20 74 6f 20 62 65  tack depth to be
d150: 20 74 72 61 63 6b 65 64 0a 20 20 61 6e 64 20 72   tracked.  and r
d160: 65 70 6f 72 74 65 64 20 75 73 69 6e 67 20 74 68  eported using th
d170: 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 61 74 75  e [sqlite3_statu
d180: 73 5d 28 5b 53 51 4c 49 54 45 5f 53 54 41 54 55  s]([SQLITE_STATU
d190: 53 5f 50 41 52 53 45 52 5f 53 54 41 43 4b 5d 2c  S_PARSER_STACK],
d1a0: 2e 2e 2e 29 0a 20 20 69 6e 74 65 72 66 61 63 65  ...).  interface
d1b0: 2e 20 20 53 51 4c 69 74 65 27 73 20 4c 41 4c 52  .  SQLite's LALR
d1c0: 28 31 29 20 70 61 72 73 65 72 20 68 61 73 20 61  (1) parser has a
d1d0: 20 66 69 78 65 64 20 73 74 61 63 6b 20 64 65 70   fixed stack dep
d1e0: 74 68 0a 20 20 28 64 65 74 65 72 6d 69 6e 65 64  th.  (determined
d1f0: 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65   at compile-time
d200: 20 75 73 69 6e 67 20 74 68 65 20 5b 59 59 53 54   using the [YYST
d210: 41 43 4b 44 45 50 54 48 5d 20 6f 70 74 69 6f 6e  ACKDEPTH] option
d220: 73 29 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  s)..  This optio
d230: 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  n can be used to
d240: 20 68 65 6c 70 20 64 65 74 65 72 6d 69 6e 65 20   help determine 
d250: 69 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f  if an applicatio
d260: 6e 20 69 73 0a 20 20 67 65 74 74 69 6e 67 20 63  n is.  getting c
d270: 6c 6f 73 65 20 74 6f 20 65 78 63 65 65 64 69 6e  lose to exceedin
d280: 67 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 4c 41  g the maximum LA
d290: 4c 52 28 31 29 20 73 74 61 63 6b 20 64 65 70 74  LR(1) stack dept
d2a0: 68 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20  h..}.</tcl>..<a 
d2b0: 6e 61 6d 65 3d 22 64 69 73 61 62 6c 65 66 65 61  name="disablefea
d2c0: 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e  tures"></a>.<h1>
d2d0: 20 4f 70 74 69 6f 6e 73 20 54 6f 20 44 69 73 61   Options To Disa
d2e0: 62 6c 65 20 46 65 61 74 75 72 65 73 20 4e 6f 72  ble Features Nor
d2f0: 6d 61 6c 6c 79 20 54 75 72 6e 65 64 20 4f 6e 3c  mally Turned On<
d300: 2f 68 31 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50  /h1>..<tcl>.COMP
d310: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
d320: 54 45 5f 44 49 53 41 42 4c 45 5f 4c 46 53 7d 20  TE_DISABLE_LFS} 
d330: 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70 72  {.  If this C-pr
d340: 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f  eprocessor macro
d350: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 6c 61 72   is defined, lar
d360: 67 65 20 66 69 6c 65 20 73 75 70 70 6f 72 74 0a  ge file support.
d370: 20 20 69 73 20 64 69 73 61 62 6c 65 64 2e 0a 7d    is disabled..}
d380: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
d390: 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45   {SQLITE_DISABLE
d3a0: 5f 44 49 52 53 59 4e 43 7d 20 7b 0a 20 20 49 66  _DIRSYNC} {.  If
d3b0: 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65   this C-preproce
d3c0: 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65  ssor macro is de
d3d0: 66 69 6e 65 64 2c 20 64 69 72 65 63 74 6f 72 79  fined, directory
d3e0: 20 73 79 6e 63 73 0a 20 20 61 72 65 20 64 69 73   syncs.  are dis
d3f0: 61 62 6c 65 64 2e 20 20 53 51 4c 69 74 65 20 74  abled.  SQLite t
d400: 79 70 69 63 61 6c 6c 79 20 61 74 74 65 6d 70 74  ypically attempt
d410: 73 20 74 6f 20 73 79 6e 63 20 74 68 65 20 70 61  s to sync the pa
d420: 72 65 6e 74 0a 20 20 64 69 72 65 63 74 6f 72 79  rent.  directory
d430: 20 77 68 65 6e 20 61 20 66 69 6c 65 20 69 73 20   when a file is 
d440: 64 65 6c 65 74 65 64 20 74 6f 20 65 6e 73 75 72  deleted to ensur
d450: 65 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 0a  e the directory.
d460: 20 20 65 6e 74 72 69 65 73 20 61 72 65 20 75 70    entries are up
d470: 64 61 74 65 64 20 69 6d 6d 65 64 69 61 74 65 6c  dated immediatel
d480: 79 20 6f 6e 20 64 69 73 6b 2e 0a 7d 0a 0a 43 4f  y on disk..}..CO
d490: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
d4a0: 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 46 54 53  LITE_DISABLE_FTS
d4b0: 33 5f 55 4e 49 43 4f 44 45 7d 20 7b 0a 20 20 49  3_UNICODE} {.  I
d4c0: 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63  f this C-preproc
d4d0: 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64  essor macro is d
d4e0: 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 75 6e 69  efined, the [uni
d4f0: 63 6f 64 65 36 31 5d 20 74 6f 6b 65 6e 69 7a 65  code61] tokenize
d500: 72 0a 20 20 69 6e 20 5b 46 54 53 33 5d 20 69 73  r.  in [FTS3] is
d510: 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68   omitted from th
d520: 65 20 62 75 69 6c 64 20 61 6e 64 20 69 73 20 75  e build and is u
d530: 6e 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 0a 20  navailable to . 
d540: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d   applications..}
d550: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
d560: 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45   {SQLITE_DISABLE
d570: 5f 46 54 53 34 5f 44 45 46 45 52 52 45 44 7d 20  _FTS4_DEFERRED} 
d580: 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70 72  {.  If this C-pr
d590: 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f  eprocessor macro
d5a0: 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 22 64   disables the "d
d5b0: 65 66 65 72 72 65 64 20 74 6f 6b 65 6e 22 20 6f  eferred token" o
d5c0: 70 74 69 6d 69 7a 61 74 69 6f 6e 0a 20 20 69 6e  ptimization.  in
d5d0: 20 5b 46 54 53 34 5d 2e 20 20 54 68 65 20 22 64   [FTS4].  The "d
d5e0: 65 66 65 72 72 65 64 20 74 6f 6b 65 6e 22 20 6f  eferred token" o
d5f0: 70 74 69 6d 69 7a 61 74 69 6f 6e 20 61 76 6f 69  ptimization avoi
d600: 64 73 20 6c 6f 61 64 69 6e 67 20 6d 61 73 73 69  ds loading massi
d610: 76 65 0a 20 20 70 6f 73 74 69 6e 67 20 6c 69 73  ve.  posting lis
d620: 74 73 20 66 6f 72 20 74 65 72 6d 73 20 74 68 61  ts for terms tha
d630: 74 20 61 72 65 20 69 6e 20 6d 6f 73 74 20 64 6f  t are in most do
d640: 63 75 6d 65 6e 74 73 20 6f 66 20 74 68 65 20 63  cuments of the c
d650: 6f 6c 6c 65 63 74 69 6f 6e 0a 20 20 61 6e 64 20  ollection.  and 
d660: 69 6e 73 74 65 61 64 20 73 69 6d 70 6c 79 20 73  instead simply s
d670: 63 61 6e 73 20 66 6f 72 20 74 68 6f 73 65 20 74  cans for those t
d680: 6f 6b 65 6e 73 20 69 6e 20 74 68 65 20 64 6f 63  okens in the doc
d690: 75 6d 65 6e 74 20 73 6f 75 72 63 65 2e 20 20 5b  ument source.  [
d6a0: 46 54 53 34 5d 0a 20 20 73 68 6f 75 6c 64 20 67  FTS4].  should g
d6b0: 65 74 20 65 78 61 63 74 6c 79 20 74 68 65 20 73  et exactly the s
d6c0: 61 6d 65 20 61 6e 73 77 65 72 20 62 6f 74 68 20  ame answer both 
d6d0: 77 69 74 68 20 61 6e 64 20 77 69 74 68 6f 75 74  with and without
d6e0: 20 74 68 69 73 20 6f 70 74 69 6d 69 7a 61 74 69   this optimizati
d6f0: 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  on..}..COMPILE_O
d700: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49  PTION {SQLITE_DI
d710: 53 41 42 4c 45 5f 49 4e 54 52 49 4e 53 49 43 7d  SABLE_INTRINSIC}
d720: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
d730: 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 75 73   disables the us
d740: 65 20 6f 66 20 63 6f 6d 70 69 6c 65 72 2d 73 70  e of compiler-sp
d750: 65 63 69 66 69 63 20 62 75 69 6c 74 2d 69 6e 20  ecific built-in 
d760: 66 75 6e 63 74 69 6f 6e 73 0a 20 20 73 75 63 68  functions.  such
d770: 20 61 73 20 5f 5f 62 75 69 6c 74 69 6e 5f 62 73   as __builtin_bs
d780: 77 61 70 33 32 28 29 20 61 6e 64 20 5f 5f 62 75  wap32() and __bu
d790: 69 6c 74 69 6e 5f 61 64 64 5f 6f 76 65 72 66 6c  iltin_add_overfl
d7a0: 6f 77 28 29 20 69 6e 20 47 43 43 20 61 6e 64 20  ow() in GCC and 
d7b0: 43 6c 61 6e 67 2c 20 0a 20 20 6f 72 20 5f 62 79  Clang, .  or _by
d7c0: 74 65 73 77 61 70 5f 75 6c 6f 6e 67 28 29 20 61  teswap_ulong() a
d7d0: 6e 64 20 5f 52 65 61 64 57 72 69 74 65 42 61 72  nd _ReadWriteBar
d7e0: 72 69 65 72 28 29 20 77 69 74 68 20 4d 53 56 43  rier() with MSVC
d7f0: 2e 20 20 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 74  .  .}.</tcl>..<t
d800: 63 6c 3e 0a 20 20 68 64 5f 66 72 61 67 6d 65 6e  cl>.  hd_fragmen
d810: 74 20 22 6f 6d 69 74 66 65 61 74 75 72 65 73 22  t "omitfeatures"
d820: 0a 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 22  .  hd_keywords "
d830: 6f 6d 69 74 66 65 61 74 75 72 65 73 22 0a 3c 2f  omitfeatures".</
d840: 74 63 6c 3e 0a 3c 68 31 3e 20 4f 70 74 69 6f 6e  tcl>.<h1> Option
d850: 73 20 54 6f 20 4f 6d 69 74 20 46 65 61 74 75 72  s To Omit Featur
d860: 65 73 3c 2f 68 31 3e 0a 0a 3c 70 3e 54 68 65 20  es</h1>..<p>The 
d870: 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e  following option
d880: 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  s can be used to
d890: 20 0a 5b 72 65 6c 66 6f 6f 74 70 72 69 6e 74 20   .[relfootprint 
d8a0: 7c 20 72 65 64 75 63 65 20 74 68 65 20 73 69 7a  | reduce the siz
d8b0: 65 20 6f 66 20 74 68 65 20 63 6f 6d 70 69 6c 65  e of the compile
d8c0: 64 20 6c 69 62 72 61 72 79 5d 0a 62 79 20 6f 6d  d library].by om
d8d0: 69 74 74 69 6e 67 20 75 6e 75 73 65 64 20 66 65  itting unused fe
d8e0: 61 74 75 72 65 73 2e 20 54 68 69 73 20 69 73 20  atures. This is 
d8f0: 70 72 6f 62 61 62 6c 79 20 6f 6e 6c 79 20 75 73  probably only us
d900: 65 66 75 6c 0a 69 6e 20 65 6d 62 65 64 64 65 64  eful.in embedded
d910: 20 73 79 73 74 65 6d 73 20 77 68 65 72 65 20 73   systems where s
d920: 70 61 63 65 20 69 73 20 65 73 70 65 63 69 61 6c  pace is especial
d930: 6c 79 20 74 69 67 68 74 2c 20 61 73 20 65 76 65  ly tight, as eve
d940: 6e 20 77 69 74 68 20 61 6c 6c 0a 66 65 61 74 75  n with all.featu
d950: 72 65 73 20 69 6e 63 6c 75 64 65 64 20 74 68 65  res included the
d960: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
d970: 69 73 20 72 65 6c 61 74 69 76 65 6c 79 20 73 6d  is relatively sm
d980: 61 6c 6c 2e 20 44 6f 6e 27 74 20 66 6f 72 67 65  all. Don't forge
d990: 74 0a 74 6f 20 74 65 6c 6c 20 79 6f 75 72 20 63  t.to tell your c
d9a0: 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d  ompiler to optim
d9b0: 69 7a 65 20 66 6f 72 20 62 69 6e 61 72 79 20 73  ize for binary s
d9c0: 69 7a 65 21 20 28 74 68 65 20 2d 4f 73 20 6f 70  ize! (the -Os op
d9d0: 74 69 6f 6e 20 69 66 0a 75 73 69 6e 67 20 47 43  tion if.using GC
d9e0: 43 29 2e 20 20 54 65 6c 6c 69 6e 67 20 79 6f 75  C).  Telling you
d9f0: 72 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70  r compiler to op
da00: 74 69 6d 69 7a 65 20 66 6f 72 20 73 69 7a 65 20  timize for size 
da10: 75 73 75 61 6c 6c 79 20 68 61 73 0a 61 20 6d 75  usually has.a mu
da20: 63 68 20 6c 61 72 67 65 72 20 69 6d 70 61 63 74  ch larger impact
da30: 20 6f 6e 20 6c 69 62 72 61 72 79 20 66 6f 6f 74   on library foot
da40: 70 72 69 6e 74 20 74 68 61 6e 20 65 6d 70 6c 6f  print than emplo
da50: 79 69 6e 67 20 61 6e 79 20 6f 66 20 74 68 65 73  ying any of thes
da60: 65 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  e.compile-time o
da70: 70 74 69 6f 6e 73 2e 20 20 59 6f 75 20 73 68 6f  ptions.  You sho
da80: 75 6c 64 20 61 6c 73 6f 20 76 65 72 69 66 79 20  uld also verify 
da90: 74 68 61 74 20 0a 3c 61 20 68 72 65 66 3d 22 23  that .<a href="#
daa0: 64 65 62 75 67 6f 70 74 69 6f 6e 73 22 3e 64 65  debugoptions">de
dab0: 62 75 67 67 69 6e 67 20 6f 70 74 69 6f 6e 73 3c  bugging options<
dac0: 2f 61 3e 20 61 72 65 20 64 69 73 61 62 6c 65 64  /a> are disabled
dad0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6d 61  .</p>..<p>The ma
dae0: 63 72 6f 73 20 69 6e 20 74 68 69 73 20 73 65 63  cros in this sec
daf0: 74 69 6f 6e 20 64 6f 20 6e 6f 74 20 72 65 71 75  tion do not requ
db00: 69 72 65 20 76 61 6c 75 65 73 2e 20 54 68 65 20  ire values. The 
db10: 66 6f 6c 6c 6f 77 69 6e 67 20 0a 63 6f 6d 70 69  following .compi
db20: 6c 61 74 69 6f 6e 20 73 77 69 74 63 68 65 73 20  lation switches 
db30: 61 6c 6c 20 68 61 76 65 20 74 68 65 20 73 61 6d  all have the sam
db40: 65 20 65 66 66 65 63 74 3a 3c 62 72 3e 0a 2d 44  e effect:<br>.-D
db50: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45  SQLITE_OMIT_ALTE
db60: 52 54 41 42 4c 45 3c 62 72 3e 0a 2d 44 53 51 4c  RTABLE<br>.-DSQL
db70: 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41  ITE_OMIT_ALTERTA
db80: 42 4c 45 3d 31 3c 62 72 3e 0a 2d 44 53 51 4c 49  BLE=1<br>.-DSQLI
db90: 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42  TE_OMIT_ALTERTAB
dba0: 4c 45 3d 30 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66  LE=0.</p>..<p>If
dbb0: 20 61 6e 79 20 6f 66 20 74 68 65 73 65 20 6f 70   any of these op
dbc0: 74 69 6f 6e 73 20 61 72 65 20 64 65 66 69 6e 65  tions are define
dbd0: 64 2c 20 74 68 65 6e 20 74 68 65 20 73 61 6d 65  d, then the same
dbe0: 20 73 65 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f   set of SQLITE_O
dbf0: 4d 49 54 5f 2a 0a 6f 70 74 69 6f 6e 73 20 6d 75  MIT_*.options mu
dc00: 73 74 20 61 6c 73 6f 20 62 65 20 64 65 66 69 6e  st also be defin
dc10: 65 64 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68  ed when using th
dc20: 65 20 5b 4c 65 6d 6f 6e 20 70 61 72 73 65 72 20  e [Lemon parser 
dc30: 67 65 6e 65 72 61 74 6f 72 5d 0a 74 6f 6f 6c 20  generator].tool 
dc40: 74 6f 20 67 65 6e 65 72 61 74 65 20 74 68 65 0a  to generate the.
dc50: 70 61 72 73 65 2e 63 20 66 69 6c 65 20 61 6e 64  parse.c file and
dc60: 20 77 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 20   when compiling 
dc70: 74 68 65 20 27 6d 6b 6b 65 79 77 6f 72 64 68 61  the 'mkkeywordha
dc80: 73 68 27 20 74 6f 6f 6c 20 77 68 69 63 68 20 67  sh' tool which g
dc90: 65 6e 65 72 61 74 65 73 20 0a 74 68 65 20 6b 65  enerates .the ke
dca0: 79 77 6f 72 64 68 61 73 68 2e 68 20 66 69 6c 65  ywordhash.h file
dcb0: 2e 0a 42 65 63 61 75 73 65 20 6f 66 20 74 68 69  ..Because of thi
dcc0: 73 2c 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73  s, these options
dcd0: 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65   may only be use
dce0: 64 20 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61  d when the libra
dcf0: 72 79 20 69 73 20 62 75 69 6c 74 0a 66 72 6f 6d  ry is built.from
dd00: 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75 72 63   canonical sourc
dd10: 65 2c 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20  e, not from the 
dd20: 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2e 0a  [amalgamation]..
dd30: 53 6f 6d 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54  Some SQLITE_OMIT
dd40: 5f 2a 20 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74  _* options might
dd50: 20 77 6f 72 6b 2c 20 6f 72 20 61 70 70 65 61 72   work, or appear
dd60: 20 74 6f 20 77 6f 72 6b 2c 20 77 68 65 6e 20 75   to work, when u
dd70: 73 65 64 20 77 69 74 68 0a 74 68 65 20 5b 61 6d  sed with.the [am
dd80: 61 6c 67 61 6d 61 74 69 6f 6e 5d 2e 20 20 42 75  algamation].  Bu
dd90: 74 20 74 68 69 73 20 69 73 20 6e 6f 74 20 67 75  t this is not gu
dda0: 61 72 61 6e 74 65 65 64 2e 20 20 49 6e 20 67 65  aranteed.  In ge
ddb0: 6e 65 72 61 6c 2c 20 61 6c 77 61 79 73 20 63 6f  neral, always co
ddc0: 6d 70 69 6c 65 0a 66 72 6f 6d 20 63 61 6e 6f 6e  mpile.from canon
ddd0: 69 63 61 6c 20 73 6f 75 72 63 65 73 20 69 6e 20  ical sources in 
dde0: 6f 72 64 65 72 20 74 6f 20 74 61 6b 65 20 61 64  order to take ad
ddf0: 76 61 6e 74 61 67 65 20 6f 66 20 53 51 4c 49 54  vantage of SQLIT
de00: 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73  E_OMIT_* options
de10: 2e 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  ..</p>..<blockqu
de20: 6f 74 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72  ote>.<i><b>Impor
de30: 74 61 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e 20 54  tant Note:</b> T
de40: 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  he SQLITE_OMIT_*
de50: 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20 6e 6f 74   options may not
de60: 20 77 6f 72 6b 20 77 69 74 68 20 74 68 65 0a 5b   work with the.[
de70: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2e 20 20  amalgamation].  
de80: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f  SQLITE_OMIT_* co
de90: 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f  mpile-time.optio
dea0: 6e 73 20 75 73 75 61 6c 6c 79 20 77 6f 72 6b 20  ns usually work 
deb0: 63 6f 72 72 65 63 74 6c 79 20 6f 6e 6c 79 20 77  correctly only w
dec0: 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20 62 75  hen SQLite is bu
ded0: 69 6c 74 20 66 72 6f 6d 20 63 61 6e 6f 6e 69 63  ilt from canonic
dee0: 61 6c 20 0a 73 6f 75 72 63 65 20 66 69 6c 65 73  al .source files
def0: 2e 0a 3c 2f 69 3e 0a 3c 2f 62 6c 6f 63 6b 71 75  ..</i>.</blockqu
df00: 6f 74 65 3e 0a 0a 0a 3c 70 3e 53 70 65 63 69 61  ote>...<p>Specia
df10: 6c 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68  l versions of th
df20: 65 20 53 51 4c 69 74 65 20 61 6d 61 6c 67 61 6d  e SQLite amalgam
df30: 61 74 69 6f 6e 20 74 68 61 74 20 64 6f 20 77 6f  ation that do wo
df40: 72 6b 20 77 69 74 68 20 61 0a 70 72 65 64 65 74  rk with a.predet
df50: 65 72 6d 69 6e 65 64 20 73 65 74 20 6f 66 20 53  ermined set of S
df60: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74  QLITE_OMIT_* opt
df70: 69 6f 6e 73 20 63 61 6e 20 62 65 20 67 65 6e 65  ions can be gene
df80: 72 61 74 65 64 2e 20 20 54 6f 20 64 6f 20 73 6f  rated.  To do so
df90: 2c 0a 6d 61 6b 65 20 61 20 63 6f 70 79 20 6f 66  ,.make a copy of
dfa0: 20 74 68 65 20 4d 61 6b 65 66 69 6c 65 2e 6c 69   the Makefile.li
dfb0: 6e 75 78 2d 67 63 63 20 6d 61 6b 65 66 69 6c 65  nux-gcc makefile
dfc0: 20 74 65 6d 70 6c 61 74 65 20 69 6e 20 74 68 65   template in the
dfd0: 20 63 61 6e 6f 6e 69 63 61 6c 0a 73 6f 75 72 63   canonical.sourc
dfe0: 65 20 63 6f 64 65 20 64 69 73 74 72 69 62 75 74  e code distribut
dff0: 69 6f 6e 2e 20 20 43 68 61 6e 67 65 20 74 68 65  ion.  Change the
e000: 20 6e 61 6d 65 20 6f 66 20 79 6f 75 72 20 63 6f   name of your co
e010: 70 79 20 74 6f 20 73 69 6d 70 6c 79 20 22 4d 61  py to simply "Ma
e020: 6b 65 66 69 6c 65 22 2e 0a 54 68 65 6e 20 65 64  kefile"..Then ed
e030: 69 74 20 22 4d 61 6b 65 66 69 6c 65 22 20 74 6f  it "Makefile" to
e040: 20 73 65 74 20 75 70 20 61 70 70 72 6f 70 72 69   set up appropri
e050: 61 74 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  ate compile-time
e060: 20 6f 70 74 69 6f 6e 73 2e 20 20 54 68 65 6e 0a   options.  Then.
e070: 74 79 70 65 3a 0a 3c 63 6f 64 65 62 6c 6f 63 6b  type:.<codeblock
e080: 3e 0a 6d 61 6b 65 20 63 6c 65 61 6e 3b 20 6d 61  >.make clean; ma
e090: 6b 65 20 73 71 6c 69 74 65 33 2e 63 0a 3c 2f 63  ke sqlite3.c.</c
e0a0: 6f 64 65 62 6c 6f 63 6b 3e 0a 3c 70 3e 54 68 65  odeblock>.<p>The
e0b0: 20 72 65 73 75 6c 74 69 6e 67 20 22 73 71 6c 69   resulting "sqli
e0c0: 74 65 33 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74  te3.c" amalgamat
e0d0: 69 6f 6e 20 63 6f 64 65 20 66 69 6c 65 20 28 61  ion code file (a
e0e0: 6e 64 20 69 74 73 20 61 73 73 6f 63 69 61 74 65  nd its associate
e0f0: 64 0a 68 65 61 64 65 72 20 66 69 6c 65 20 22 73  d.header file "s
e100: 71 6c 69 74 65 33 2e 68 22 29 20 63 61 6e 20 74  qlite3.h") can t
e110: 68 65 6e 20 62 65 20 6d 6f 76 65 64 20 74 6f 20  hen be moved to 
e120: 61 20 6e 6f 6e 2d 75 6e 69 78 20 70 6c 61 74 66  a non-unix platf
e130: 6f 72 6d 0a 66 6f 72 20 66 69 6e 61 6c 20 63 6f  orm.for final co
e140: 6d 70 69 6c 61 74 69 6f 6e 20 75 73 69 6e 67 20  mpilation using 
e150: 61 20 6e 61 74 69 76 65 20 63 6f 6d 70 69 6c 65  a native compile
e160: 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 53  r.</p>..<p>The S
e170: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74  QLITE_OMIT_* opt
e180: 69 6f 6e 73 20 61 72 65 20 75 6e 73 75 70 70 6f  ions are unsuppo
e190: 72 74 65 64 2e 20 20 42 79 20 74 68 69 73 20 77  rted.  By this w
e1a0: 65 20 6d 65 61 6e 20 74 68 61 74 0a 61 6e 20 53  e mean that.an S
e1b0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74  QLITE_OMIT_* opt
e1c0: 69 6f 6e 20 74 68 61 74 20 6f 6d 69 74 73 20 63  ion that omits c
e1d0: 6f 64 65 20 66 72 6f 6d 20 74 68 65 20 62 75 69  ode from the bui
e1e0: 6c 64 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e  ld in the curren
e1f0: 74 0a 72 65 6c 65 61 73 65 20 6d 69 67 68 74 20  t.release might 
e200: 62 65 63 6f 6d 65 20 61 20 6e 6f 2d 6f 70 20 69  become a no-op i
e210: 6e 20 74 68 65 20 6e 65 78 74 20 72 65 6c 65 61  n the next relea
e220: 73 65 2e 20 20 4f 72 20 74 68 65 20 6f 74 68 65  se.  Or the othe
e230: 72 20 77 61 79 20 61 72 6f 75 6e 64 3a 0a 61 6e  r way around:.an
e240: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 74   SQLITE_OMIT_* t
e250: 68 61 74 20 69 73 20 61 20 6e 6f 2d 6f 70 20 69  hat is a no-op i
e260: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 65  n the current re
e270: 6c 65 61 73 65 20 6d 69 67 68 74 20 63 61 75 73  lease might caus
e280: 65 20 63 6f 64 65 0a 74 6f 20 62 65 20 65 78 63  e code.to be exc
e290: 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6e 65 78  luded in the nex
e2a0: 74 20 72 65 6c 65 61 73 65 2e 20 20 41 6c 73 6f  t release.  Also
e2b0: 2c 20 6e 6f 74 20 61 6c 6c 20 53 51 4c 49 54 45  , not all SQLITE
e2c0: 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 0a  _OMIT_* options.
e2d0: 61 72 65 20 74 65 73 74 65 64 2e 20 20 53 6f 6d  are tested.  Som
e2e0: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  e SQLITE_OMIT_* 
e2f0: 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74 20 63 61  options might ca
e300: 75 73 65 20 53 51 4c 69 74 65 20 74 6f 20 6d 61  use SQLite to ma
e310: 6c 66 75 6e 63 74 69 6f 6e 0a 61 6e 64 2f 6f 72  lfunction.and/or
e320: 20 70 72 6f 76 69 64 65 20 69 6e 63 6f 72 72 65   provide incorre
e330: 63 74 20 61 6e 73 77 65 72 73 2e 0a 0a 3c 62 6c  ct answers...<bl
e340: 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62 3e  ockquote>.<i><b>
e350: 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65 3a 3c  Important Note:<
e360: 2f 62 3e 0a 54 68 65 20 53 51 4c 49 54 45 5f 4f  /b>.The SQLITE_O
e370: 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69  MIT_* compile-ti
e380: 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 6d  me options are m
e390: 6f 73 74 6c 79 20 75 6e 73 75 70 70 6f 72 74 65  ostly unsupporte
e3a0: 64 2e 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b 71 75  d..</i></blockqu
e3b0: 6f 74 65 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c  ote>..<p>The fol
e3c0: 6c 6f 77 69 6e 67 20 61 72 65 20 74 68 65 20 61  lowing are the a
e3d0: 76 61 69 6c 61 62 6c 65 20 4f 4d 49 54 20 6f 70  vailable OMIT op
e3e0: 74 69 6f 6e 73 3a 0a 0a 3c 74 63 6c 3e 0a 43 4f  tions:..<tcl>.CO
e3f0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
e400: 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54  LITE_OMIT_ALTERT
e410: 41 42 4c 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74  ABLE} {.  When t
e420: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
e430: 66 69 6e 65 64 2c 20 74 68 65 20 0a 20 20 5b 41  fined, the .  [A
e440: 4c 54 45 52 20 54 41 42 4c 45 5d 20 63 6f 6d 6d  LTER TABLE] comm
e450: 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75  and is not inclu
e460: 64 65 64 20 69 6e 20 74 68 65 20 0a 20 20 6c 69  ded in the .  li
e470: 62 72 61 72 79 2e 20 45 78 65 63 75 74 69 6e 67  brary. Executing
e480: 20 61 6e 20 5b 41 4c 54 45 52 20 54 41 42 4c 45   an [ALTER TABLE
e490: 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73  ] statement caus
e4a0: 65 73 20 61 20 70 61 72 73 65 20 65 72 72 6f 72  es a parse error
e4b0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
e4c0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
e4d0: 5f 41 4e 41 4c 59 5a 45 7d 20 7b 0a 20 20 57 68  _ANALYZE} {.  Wh
e4e0: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
e4f0: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b  s defined, the [
e500: 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64  ANALYZE] command
e510: 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d   is omitted from
e520: 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a  .  the build..}.
e530: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
e540: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 54 54  {SQLITE_OMIT_ATT
e550: 41 43 48 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  ACH} {.  When th
e560: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
e570: 69 6e 65 64 2c 20 74 68 65 20 5b 41 54 54 41 43  ined, the [ATTAC
e580: 48 5d 20 61 6e 64 20 5b 44 45 54 41 43 48 5d 20  H] and [DETACH] 
e590: 63 6f 6d 6d 61 6e 64 73 20 61 72 65 0a 20 20 6f  commands are.  o
e5a0: 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20  mitted from the 
e5b0: 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  build..}..COMPIL
e5c0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
e5d0: 5f 4f 4d 49 54 5f 41 55 54 48 4f 52 49 5a 41 54  _OMIT_AUTHORIZAT
e5e0: 49 4f 4e 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  ION} {.  Definin
e5f0: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d  g this option om
e600: 69 74 73 20 74 68 65 20 61 75 74 68 6f 72 69 7a  its the authoriz
e610: 61 74 69 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 66  ation callback f
e620: 65 61 74 75 72 65 20 66 72 6f 6d 20 74 68 65 0a  eature from the.
e630: 20 20 6c 69 62 72 61 72 79 2e 20 54 68 65 20 5b    library. The [
e640: 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68  sqlite3_set_auth
e650: 6f 72 69 7a 65 72 28 29 5d 20 41 50 49 20 66 75  orizer()] API fu
e660: 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72  nction is not pr
e670: 65 73 65 6e 74 0a 20 20 69 6e 20 74 68 65 20 6c  esent.  in the l
e680: 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49  ibrary..}..COMPI
e690: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
e6a0: 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 43 52 45  E_OMIT_AUTOINCRE
e6b0: 4d 45 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f  MENT} {.  This o
e6c0: 70 74 69 6f 6e 20 69 73 20 6f 6d 69 74 73 20 74  ption is omits t
e6d0: 68 65 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e  he [AUTOINCREMEN
e6e0: 54 5d 20 66 65 61 74 75 72 65 2e 20 0a 20 20 57  T] feature. .  W
e6f0: 68 65 6e 20 74 68 69 73 20 69 73 20 6d 61 63 72  hen this is macr
e700: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 63 6f  o is defined, co
e710: 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65 64 20 61  lumns declared a
e720: 73 20 0a 20 20 22 5b 49 4e 54 45 47 45 52 20 50  s .  "[INTEGER P
e730: 52 49 4d 41 52 59 20 4b 45 59 5d 20 41 55 54 4f  RIMARY KEY] AUTO
e740: 49 4e 43 52 45 4d 45 4e 54 22 0a 20 20 62 65 68  INCREMENT".  beh
e750: 61 76 65 20 69 6e 20 74 68 65 20 73 61 6d 65 20  ave in the same 
e760: 77 61 79 20 61 73 20 63 6f 6c 75 6d 6e 73 20 64  way as columns d
e770: 65 63 6c 61 72 65 64 20 61 73 20 22 5b 49 4e 54  eclared as "[INT
e780: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
e790: 5d 22 20 77 68 65 6e 20 61 20 0a 20 20 4e 55 4c  ]" when a .  NUL
e7a0: 4c 20 69 73 20 69 6e 73 65 72 74 65 64 2e 20 54  L is inserted. T
e7b0: 68 65 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e  he sqlite_sequen
e7c0: 63 65 20 73 79 73 74 65 6d 20 74 61 62 6c 65 20  ce system table 
e7d0: 69 73 20 6e 65 69 74 68 65 72 20 63 72 65 61 74  is neither creat
e7e0: 65 64 2c 20 6e 6f 72 0a 20 20 72 65 73 70 65 63  ed, nor.  respec
e7f0: 74 65 64 20 69 66 20 69 74 20 61 6c 72 65 61 64  ted if it alread
e800: 79 20 65 78 69 73 74 73 2e 0a 7d 0a 0a 43 4f 4d  y exists..}..COM
e810: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
e820: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49  ITE_OMIT_AUTOINI
e830: 54 7d 20 7b 0a 20 20 46 6f 72 20 62 61 63 6b 77  T} {.  For backw
e840: 61 72 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69  ards compatibili
e850: 74 79 20 77 69 74 68 20 6f 6c 64 65 72 20 76 65  ty with older ve
e860: 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65  rsions of SQLite
e870: 20 74 68 61 74 20 6c 61 63 6b 0a 20 20 74 68 65   that lack.  the
e880: 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61   [sqlite3_initia
e890: 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72 66 61 63  lize()] interfac
e8a0: 65 2c 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  e, the [sqlite3_
e8b0: 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 69 6e  initialize()] in
e8c0: 74 65 72 66 61 63 65 0a 20 20 69 73 20 63 61 6c  terface.  is cal
e8d0: 6c 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  led automaticall
e8e0: 79 20 75 70 6f 6e 20 65 6e 74 72 79 20 74 6f 20  y upon entry to 
e8f0: 63 65 72 74 61 69 6e 20 6b 65 79 20 69 6e 74 65  certain key inte
e900: 72 66 61 63 65 73 20 73 75 63 68 20 61 73 0a 20  rfaces such as. 
e910: 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29   [sqlite3_open()
e920: 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f  ], [sqlite3_vfs_
e930: 72 65 67 69 73 74 65 72 28 29 5d 2c 20 61 6e 64  register()], and
e940: 20 5b 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74   [sqlite3_mprint
e950: 66 28 29 5d 2e 0a 20 20 54 68 65 20 6f 76 65 72  f()]..  The over
e960: 68 65 61 64 20 6f 66 20 69 6e 76 6f 6b 69 6e 67  head of invoking
e970: 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61   [sqlite3_initia
e980: 6c 69 7a 65 28 29 5d 20 61 75 74 6f 6d 61 74 69  lize()] automati
e990: 63 61 6c 6c 79 20 69 6e 20 74 68 69 73 0a 20 20  cally in this.  
e9a0: 77 61 79 20 6d 61 79 20 62 65 20 6f 6d 69 74 74  way may be omitt
e9b0: 65 64 20 62 79 20 62 75 69 6c 64 69 6e 67 20 53  ed by building S
e9c0: 51 4c 69 74 65 20 77 69 74 68 20 74 68 65 20 53  QLite with the S
e9d0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49  QLITE_OMIT_AUTOI
e9e0: 4e 49 54 0a 20 20 43 2d 70 72 65 70 72 6f 63 65  NIT.  C-preproce
e9f0: 73 73 6f 72 20 6d 61 63 72 6f 2e 20 20 57 68 65  ssor macro.  Whe
ea00: 6e 20 62 75 69 6c 74 20 75 73 69 6e 67 20 53 51  n built using SQ
ea10: 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e  LITE_OMIT_AUTOIN
ea20: 49 54 2c 20 53 51 4c 69 74 65 0a 20 20 77 69 6c  IT, SQLite.  wil
ea30: 6c 20 6e 6f 74 20 61 75 74 6f 6d 61 74 69 63 61  l not automatica
ea40: 6c 6c 79 20 69 6e 69 74 69 61 6c 69 7a 65 20 69  lly initialize i
ea50: 74 73 65 6c 66 20 61 6e 64 20 74 68 65 20 61 70  tself and the ap
ea60: 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 72 65 71  plication is req
ea70: 75 69 72 65 64 0a 20 20 74 6f 20 69 6e 76 6f 6b  uired.  to invok
ea80: 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  e [sqlite3_initi
ea90: 61 6c 69 7a 65 28 29 5d 20 64 69 72 65 63 74 6c  alize()] directl
eaa0: 79 20 70 72 69 6f 72 20 74 6f 20 62 65 67 69 6e  y prior to begin
eab0: 6e 69 6e 67 20 75 73 65 20 6f 66 20 74 68 65 0a  ning use of the.
eac0: 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79    SQLite library
ead0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
eae0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
eaf0: 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58  _AUTOMATIC_INDEX
eb00: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
eb10: 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69  n is used to omi
eb20: 74 20 74 68 65 20 0a 20 20 5b 61 75 74 6f 6d 61  t the .  [automa
eb30: 74 69 63 20 69 6e 64 65 78 69 6e 67 5d 20 66 75  tic indexing] fu
eb40: 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 0a 20 20 53  nctionality..  S
eb50: 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45  ee also: [SQLITE
eb60: 5f 44 45 46 41 55 4c 54 5f 41 55 54 4f 4d 41 54  _DEFAULT_AUTOMAT
eb70: 49 43 5f 49 4e 44 45 58 5d 2e 0a 7d 0a 0a 43 4f  IC_INDEX]..}..CO
eb80: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
eb90: 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 52 45  LITE_OMIT_AUTORE
eba0: 53 45 54 7d 20 7b 0a 20 20 42 79 20 64 65 66 61  SET} {.  By defa
ebb0: 75 6c 74 2c 20 74 68 65 20 5b 73 71 6c 69 74 65  ult, the [sqlite
ebc0: 33 5f 73 74 65 70 28 29 5d 20 69 6e 74 65 72 66  3_step()] interf
ebd0: 61 63 65 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74  ace will automat
ebe0: 69 63 61 6c 6c 79 20 69 6e 76 6f 6b 65 0a 20 20  ically invoke.  
ebf0: 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29  [sqlite3_reset()
ec00: 5d 20 74 6f 20 72 65 73 65 74 20 74 68 65 20 5b  ] to reset the [
ec10: 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
ec20: 6e 74 5d 20 69 66 20 6e 65 63 65 73 73 61 72 79  nt] if necessary
ec30: 2e 20 20 54 68 69 73 0a 20 20 63 6f 6d 70 69 6c  .  This.  compil
ec40: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63 68  e-time option ch
ec50: 61 6e 67 65 73 20 74 68 61 74 20 62 65 68 61 76  anges that behav
ec60: 69 6f 72 20 73 6f 20 74 68 61 74 20 5b 73 71 6c  ior so that [sql
ec70: 69 74 65 33 5f 73 74 65 70 28 29 5d 20 77 69 6c  ite3_step()] wil
ec80: 6c 0a 20 20 72 65 74 75 72 6e 20 5b 53 51 4c 49  l.  return [SQLI
ec90: 54 45 5f 4d 49 53 55 53 45 5d 20 69 66 20 69 74  TE_MISUSE] if it
eca0: 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 20 61 66   called again af
ecb0: 74 65 72 20 72 65 74 75 72 6e 69 6e 67 20 61 6e  ter returning an
ecc0: 79 74 68 69 6e 67 20 6f 74 68 65 72 0a 20 20 74  ything other.  t
ecd0: 68 61 6e 20 5b 53 51 4c 49 54 45 5f 52 4f 57 5d  han [SQLITE_ROW]
ece0: 2c 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 2c  , [SQLITE_BUSY],
ecf0: 20 6f 72 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b   or [SQLITE_LOCK
ed00: 45 44 5d 20 75 6e 6c 65 73 73 20 74 68 65 72 65  ED] unless there
ed10: 20 77 61 73 20 61 6e 0a 20 20 69 6e 74 65 72 76   was an.  interv
ed20: 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f 20 5b 73  ening call to [s
ed30: 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 2e  qlite3_reset()].
ed40: 0a 0a 20 20 49 6e 20 53 51 4c 69 74 65 20 5b 76  ..  In SQLite [v
ed50: 65 72 73 69 6f 6e 20 33 2e 36 2e 32 33 2e 31 5d  ersion 3.6.23.1]
ed60: 20 28 5b 64 61 74 65 6f 66 3a 33 2e 36 2e 32 33   ([dateof:3.6.23
ed70: 2e 31 5d 29 0a 20 20 61 6e 64 20 65 61 72 6c 69  .1]).  and earli
ed80: 65 72 2c 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  er, [sqlite3_ste
ed90: 70 28 29 5d 20 75 73 65 64 20 74 6f 20 61 6c 77  p()] used to alw
eda0: 61 79 73 0a 20 20 72 65 74 75 72 6e 20 5b 53 51  ays.  return [SQ
edb0: 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 69 66 20  LITE_MISUSE] if 
edc0: 69 74 20 77 61 73 20 69 6e 76 6f 6b 65 64 20 61  it was invoked a
edd0: 67 61 69 6e 20 61 66 74 65 72 20 72 65 74 75 72  gain after retur
ede0: 6e 69 6e 67 20 61 6e 79 74 68 69 6e 67 0a 20 20  ning anything.  
edf0: 6f 74 68 65 72 20 74 68 61 6e 20 5b 53 51 4c 49  other than [SQLI
ee00: 54 45 5f 52 4f 57 5d 20 77 69 74 68 6f 75 74 20  TE_ROW] without 
ee10: 61 6e 20 69 6e 74 65 72 76 65 6e 69 6e 67 20 63  an intervening c
ee20: 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  all to [sqlite3_
ee30: 72 65 73 65 74 28 29 5d 2e 0a 20 20 54 68 69 73  reset()]..  This
ee40: 20 63 61 75 73 65 64 20 70 72 6f 62 6c 65 6d 73   caused problems
ee50: 20 6f 6e 20 73 6f 6d 65 20 70 6f 6f 72 6c 79 20   on some poorly 
ee60: 77 72 69 74 74 65 6e 20 73 6d 61 72 74 70 68 6f  written smartpho
ee70: 6e 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20  ne applications 
ee80: 77 68 69 63 68 0a 20 20 64 69 64 20 6e 6f 74 20  which.  did not 
ee90: 63 6f 72 72 65 63 74 6c 79 20 68 61 6e 64 6c 65  correctly handle
eea0: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c 4f 43   the [SQLITE_LOC
eeb0: 4b 45 44 5d 20 61 6e 64 20 5b 53 51 4c 49 54 45  KED] and [SQLITE
eec0: 5f 42 55 53 59 5d 20 65 72 72 6f 72 20 0a 20 20  _BUSY] error .  
eed0: 72 65 74 75 72 6e 73 2e 20 20 52 61 74 68 65 72  returns.  Rather
eee0: 20 74 68 61 6e 20 66 69 78 20 74 68 65 20 6d 61   than fix the ma
eef0: 6e 79 20 64 65 66 65 63 74 69 76 65 20 73 6d 61  ny defective sma
ef00: 72 74 70 68 6f 6e 65 20 61 70 70 6c 69 63 61 74  rtphone applicat
ef10: 69 6f 6e 73 2c 20 0a 20 20 74 68 65 20 62 65 68  ions, .  the beh
ef20: 61 76 69 6f 72 20 6f 66 20 53 51 4c 69 74 65 20  avior of SQLite 
ef30: 77 61 73 20 63 68 61 6e 67 65 64 20 69 6e 20 33  was changed in 3
ef40: 2e 36 2e 32 33 2e 32 20 74 6f 20 61 75 74 6f 6d  .6.23.2 to autom
ef50: 61 74 69 63 61 6c 6c 79 20 72 65 73 65 74 0a 20  atically reset. 
ef60: 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74   the prepared st
ef70: 61 74 65 6d 65 6e 74 2e 20 20 42 75 74 20 74 68  atement.  But th
ef80: 61 74 20 63 68 61 6e 67 65 64 20 63 61 75 73 65  at changed cause
ef90: 64 20 69 73 73 75 65 73 20 69 6e 20 6f 74 68 65  d issues in othe
efa0: 72 20 0a 20 20 69 6d 70 72 6f 70 65 72 6c 79 20  r .  improperly 
efb0: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 61 70 70 6c  implemented appl
efc0: 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20 77 65  ications that we
efd0: 72 65 20 61 63 74 75 61 6c 6c 79 20 6c 6f 6f 6b  re actually look
efe0: 69 6e 67 0a 20 20 66 6f 72 20 61 6e 20 5b 53 51  ing.  for an [SQ
eff0: 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 72 65 74  LITE_MISUSE] ret
f000: 75 72 6e 20 74 6f 20 74 65 72 6d 69 6e 61 74 65  urn to terminate
f010: 20 74 68 65 69 72 20 71 75 65 72 79 20 6c 6f 6f   their query loo
f020: 70 73 2e 20 20 28 41 6e 79 74 69 6d 65 0a 20 20  ps.  (Anytime.  
f030: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 67  an application g
f040: 65 74 73 20 61 6e 20 53 51 4c 49 54 45 5f 4d 49  ets an SQLITE_MI
f050: 53 55 53 45 20 65 72 72 6f 72 20 63 6f 64 65 20  SUSE error code 
f060: 66 72 6f 6d 20 53 51 4c 69 74 65 2c 20 74 68 61  from SQLite, tha
f070: 74 20 6d 65 61 6e 73 20 74 68 65 0a 20 20 61 70  t means the.  ap
f080: 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 6d 69 73  plication is mis
f090: 75 73 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65  using the SQLite
f0a0: 20 69 6e 74 65 72 66 61 63 65 20 61 6e 64 20 69   interface and i
f0b0: 73 20 74 68 75 73 20 69 6e 63 6f 72 72 65 63 74  s thus incorrect
f0c0: 6c 79 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 65 64  ly.  implemented
f0d0: 2e 29 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4f  .)  The SQLITE_O
f0e0: 4d 49 54 5f 41 55 54 4f 52 45 53 45 54 20 69 6e  MIT_AUTORESET in
f0f0: 74 65 72 66 61 63 65 20 77 61 73 20 61 64 64 65  terface was adde
f100: 64 20 74 6f 20 53 51 4c 69 74 65 0a 20 20 5b 76  d to SQLite.  [v
f110: 65 72 73 69 6f 6e 20 33 2e 37 2e 35 5d 20 28 5b  ersion 3.7.5] ([
f120: 64 61 74 65 6f 66 3a 33 2e 37 2e 35 5d 29 20 69  dateof:3.7.5]) i
f130: 6e 20 61 6e 20 65 66 66 6f 72 74 20 74 6f 20 67  n an effort to g
f140: 65 74 20 61 6c 6c 20 6f 66 20 74 68 65 20 28 62  et all of the (b
f150: 72 6f 6b 65 6e 29 0a 20 20 61 70 70 6c 69 63 61  roken).  applica
f160: 74 69 6f 6e 73 20 74 6f 20 77 6f 72 6b 20 61 67  tions to work ag
f170: 61 69 6e 20 77 69 74 68 6f 75 74 20 68 61 76 69  ain without havi
f180: 6e 67 20 74 6f 20 61 63 74 75 61 6c 6c 79 20 66  ng to actually f
f190: 69 78 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  ix the applicati
f1a0: 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ons..}..COMPILE_
f1b0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
f1c0: 4d 49 54 5f 41 55 54 4f 56 41 43 55 55 4d 7d 20  MIT_AUTOVACUUM} 
f1d0: 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  {.  If this opti
f1e0: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
f1f0: 68 65 20 6c 69 62 72 61 72 79 20 63 61 6e 6e 6f  he library canno
f200: 74 20 63 72 65 61 74 65 20 6f 72 20 77 72 69 74  t create or writ
f210: 65 20 74 6f 20 0a 20 20 64 61 74 61 62 61 73 65  e to .  database
f220: 73 20 74 68 61 74 20 73 75 70 70 6f 72 74 20 5b  s that support [
f230: 61 75 74 6f 5f 76 61 63 75 75 6d 5d 2e 0a 20 20  auto_vacuum]..  
f240: 45 78 65 63 75 74 69 6e 67 20 61 20 5b 50 52 41  Executing a [PRA
f250: 47 4d 41 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d  GMA auto_vacuum]
f260: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f   statement is no
f270: 74 20 61 6e 20 65 72 72 6f 72 0a 20 20 28 73 69  t an error.  (si
f280: 6e 63 65 20 75 6e 6b 6e 6f 77 6e 20 50 52 41 47  nce unknown PRAG
f290: 4d 41 73 20 61 72 65 20 73 69 6c 65 6e 74 6c 79  MAs are silently
f2a0: 20 69 67 6e 6f 72 65 64 29 2c 20 62 75 74 20 64   ignored), but d
f2b0: 6f 65 73 20 6e 6f 74 20 72 65 74 75 72 6e 20 61  oes not return a
f2c0: 20 76 61 6c 75 65 0a 20 20 6f 72 20 6d 6f 64 69   value.  or modi
f2d0: 66 79 20 74 68 65 20 61 75 74 6f 2d 76 61 63 75  fy the auto-vacu
f2e0: 75 6d 20 66 6c 61 67 20 69 6e 20 74 68 65 20 64  um flag in the d
f2f0: 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20 49 66  atabase file. If
f300: 20 61 20 64 61 74 61 62 61 73 65 20 74 68 61 74   a database that
f310: 0a 20 20 73 75 70 70 6f 72 74 73 20 61 75 74 6f  .  supports auto
f320: 2d 76 61 63 75 75 6d 20 69 73 20 6f 70 65 6e 65  -vacuum is opene
f330: 64 20 62 79 20 61 20 6c 69 62 72 61 72 79 20 63  d by a library c
f340: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 69  ompiled with thi
f350: 73 20 6f 70 74 69 6f 6e 2c 20 69 74 0a 20 20 69  s option, it.  i
f360: 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  s automatically 
f370: 6f 70 65 6e 65 64 20 69 6e 20 72 65 61 64 2d 6f  opened in read-o
f380: 6e 6c 79 20 6d 6f 64 65 2e 0a 7d 0a 0a 43 4f 4d  nly mode..}..COM
f390: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
f3a0: 49 54 45 5f 4f 4d 49 54 5f 42 45 54 57 45 45 4e  ITE_OMIT_BETWEEN
f3b0: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b  _OPTIMIZATION} {
f3c0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  .  This option d
f3d0: 69 73 61 62 6c 65 73 20 74 68 65 20 75 73 65 20  isables the use 
f3e0: 6f 66 20 69 6e 64 69 63 65 73 20 77 69 74 68 20  of indices with 
f3f0: 57 48 45 52 45 20 63 6c 61 75 73 65 20 74 65 72  WHERE clause ter
f400: 6d 73 0a 20 20 74 68 61 74 20 65 6d 70 6c 6f 79  ms.  that employ
f410: 20 74 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65   the BETWEEN ope
f420: 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  rator..}..COMPIL
f430: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
f440: 5f 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54 45 52  _OMIT_BLOB_LITER
f450: 41 4c 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  AL} {.  When thi
f460: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
f470: 6e 65 64 2c 20 69 74 20 69 73 20 6e 6f 74 20 70  ned, it is not p
f480: 6f 73 73 69 62 6c 65 20 74 6f 20 73 70 65 63 69  ossible to speci
f490: 66 79 20 61 20 62 6c 6f 62 20 69 6e 0a 20 20 61  fy a blob in.  a
f4a0: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  n SQL statement 
f4b0: 75 73 69 6e 67 20 74 68 65 20 58 27 41 42 43 44  using the X'ABCD
f4c0: 27 20 73 79 6e 74 61 78 2e 0a 7d 0a 0a 43 4f 4d  ' syntax..}..COM
f4d0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
f4e0: 49 54 45 5f 4f 4d 49 54 5f 42 54 52 45 45 43 4f  ITE_OMIT_BTREECO
f4f0: 55 4e 54 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  UNT} {.  When th
f500: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
f510: 69 6e 65 64 2c 20 61 6e 20 6f 70 74 69 6d 69 7a  ined, an optimiz
f520: 61 74 69 6f 6e 20 74 68 61 74 20 61 63 63 65 6c  ation that accel
f530: 65 72 61 74 65 73 20 63 6f 75 6e 74 69 6e 67 0a  erates counting.
f540: 20 20 61 6c 6c 20 65 6e 74 72 69 65 73 20 69 6e    all entries in
f550: 20 61 20 74 61 62 6c 65 20 28 69 6e 20 6f 74 68   a table (in oth
f560: 65 72 20 77 6f 72 64 73 2c 20 61 6e 20 6f 70 74  er words, an opt
f570: 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61 74 20 68  imization that h
f580: 65 6c 70 73 0a 20 20 22 53 45 4c 45 43 54 20 63  elps.  "SELECT c
f590: 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 61 62  ount(*) FROM tab
f5a0: 6c 65 22 20 72 75 6e 20 66 61 73 74 65 72 29 20  le" run faster) 
f5b0: 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43  is omitted..}..C
f5c0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
f5d0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55 49 4c 54  QLITE_OMIT_BUILT
f5e0: 49 4e 5f 54 45 53 54 7d 20 7b 0a 20 20 54 68 69  IN_TEST} {.  Thi
f5f0: 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
f600: 70 74 69 6f 6e 20 68 61 73 20 62 65 65 6e 20 72  ption has been r
f610: 65 6e 61 6d 65 64 20 74 6f 20 5b 53 51 4c 49 54  enamed to [SQLIT
f620: 45 5f 55 4e 54 45 53 54 41 42 4c 45 5d 2e 0a 7d  E_UNTESTABLE]..}
f630: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
f640: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 41   {SQLITE_OMIT_CA
f650: 53 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  ST} {.  This opt
f660: 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74  ion causes SQLit
f670: 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72  e to omit suppor
f680: 74 20 66 6f 72 20 74 68 65 20 43 41 53 54 20 6f  t for the CAST o
f690: 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  perator..}..COMP
f6a0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
f6b0: 54 45 5f 4f 4d 49 54 5f 43 48 45 43 4b 7d 20 7b  TE_OMIT_CHECK} {
f6c0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
f6d0: 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20  auses SQLite to 
f6e0: 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72  omit support for
f6f0: 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e   CHECK constrain
f700: 74 73 2e 0a 20 20 54 68 65 20 70 61 72 73 65 72  ts..  The parser
f710: 20 77 69 6c 6c 20 73 74 69 6c 6c 20 61 63 63 65   will still acce
f720: 70 74 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61  pt CHECK constra
f730: 69 6e 74 73 20 69 6e 20 53 51 4c 20 73 74 61 74  ints in SQL stat
f740: 65 6d 65 6e 74 73 2c 0a 20 20 74 68 65 79 20 77  ements,.  they w
f750: 69 6c 6c 20 6a 75 73 74 20 6e 6f 74 20 62 65 20  ill just not be 
f760: 65 6e 66 6f 72 63 65 64 2e 0a 7d 0a 0a 43 4f 4d  enforced..}..COM
f770: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
f780: 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49 4c 45  ITE_OMIT_COMPILE
f790: 4f 50 54 49 4f 4e 5f 44 49 41 47 53 7d 20 7b 0a  OPTION_DIAGS} {.
f7a0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
f7b0: 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68   used to omit th
f7c0: 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  e compile-time o
f7d0: 70 74 69 6f 6e 20 64 69 61 67 6e 6f 73 74 69 63  ption diagnostic
f7e0: 73 20 61 76 61 69 6c 61 62 6c 65 0a 20 20 69 6e  s available.  in
f7f0: 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69   SQLite, includi
f800: 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  ng the [sqlite3_
f810: 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73  compileoption_us
f820: 65 64 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c  ed()] and.  [sql
f830: 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
f840: 6f 6e 5f 67 65 74 28 29 5d 20 43 2f 43 2b 2b 20  on_get()] C/C++ 
f850: 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68 65 0a 20  functions, the. 
f860: 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65   [sqlite_compile
f870: 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20 61  option_used()] a
f880: 6e 64 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69  nd [sqlite_compi
f890: 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20  leoption_get()] 
f8a0: 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 2c 0a 20  SQL functions,. 
f8b0: 20 61 6e 64 20 74 68 65 20 5b 63 6f 6d 70 69 6c   and the [compil
f8c0: 65 5f 6f 70 74 69 6f 6e 73 20 70 72 61 67 6d 61  e_options pragma
f8d0: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
f8e0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
f8f0: 54 5f 43 4f 4d 50 4c 45 54 45 7d 20 7b 0a 20 20  T_COMPLETE} {.  
f900: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
f910: 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  es the [sqlite3_
f920: 63 6f 6d 70 6c 65 74 65 28 29 5d 20 61 6e 64 20  complete()] and 
f930: 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74  [sqlite3_complet
f940: 65 31 36 28 29 5d 0a 20 20 69 6e 74 65 72 66 61  e16()].  interfa
f950: 63 65 73 20 74 6f 20 62 65 20 6f 6d 69 74 74 65  ces to be omitte
f960: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
f970: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
f980: 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43  T_COMPOUND_SELEC
f990: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
f9a0: 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d  on is used to om
f9b0: 69 74 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20  it the compound 
f9c0: 5b 53 45 4c 45 43 54 5d 20 66 75 6e 63 74 69 6f  [SELECT] functio
f9d0: 6e 61 6c 69 74 79 2e 20 0a 20 20 5b 53 45 4c 45  nality. .  [SELE
f9e0: 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 74  CT] statements t
f9f0: 68 61 74 20 75 73 65 20 74 68 65 20 0a 20 20 55  hat use the .  U
fa00: 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c  NION, UNION ALL,
fa10: 20 49 4e 54 45 52 53 45 43 54 20 6f 72 20 45 58   INTERSECT or EX
fa20: 43 45 50 54 20 63 6f 6d 70 6f 75 6e 64 20 53 45  CEPT compound SE
fa30: 4c 45 43 54 20 6f 70 65 72 61 74 6f 72 73 20 77  LECT operators w
fa40: 69 6c 6c 20 0a 20 20 63 61 75 73 65 20 61 20 70  ill .  cause a p
fa50: 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20 41  arse error...  A
fa60: 6e 20 5b 49 4e 53 45 52 54 5d 20 73 74 61 74 65  n [INSERT] state
fa70: 6d 65 6e 74 20 77 69 74 68 20 6d 75 6c 74 69 70  ment with multip
fa80: 6c 65 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65  le values in the
fa90: 20 56 41 4c 55 45 53 20 63 6c 61 75 73 65 20 69   VALUES clause i
faa0: 73 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20  s.  implemented 
fab0: 69 6e 74 65 72 6e 61 6c 6c 79 20 61 73 20 61 20  internally as a 
fac0: 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 2e  compound SELECT.
fad0: 20 20 48 65 6e 63 65 2c 20 74 68 69 73 20 6f 70    Hence, this op
fae0: 74 69 6f 6e 20 61 6c 73 6f 0a 20 20 64 69 73 61  tion also.  disa
faf0: 62 6c 65 73 20 74 68 65 20 61 62 69 6c 69 74 79  bles the ability
fb00: 20 74 6f 20 69 6e 73 65 72 74 20 6d 6f 72 65 20   to insert more 
fb10: 74 68 61 6e 20 61 20 73 69 6e 67 6c 65 20 72 6f  than a single ro
fb20: 77 20 75 73 69 6e 67 20 61 6e 0a 20 20 49 4e 53  w using an.  INS
fb30: 45 52 54 20 49 4e 54 4f 20 2e 2e 2e 20 56 41 4c  ERT INTO ... VAL
fb40: 55 45 53 20 2e 2e 2e 20 73 74 61 74 65 6d 65 6e  UES ... statemen
fb50: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
fb60: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
fb70: 54 5f 43 54 45 7d 20 7b 0a 20 20 54 68 69 73 20  T_CTE} {.  This 
fb80: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75  option causes su
fb90: 70 70 6f 72 74 20 66 6f 72 20 5b 63 6f 6d 6d 6f  pport for [commo
fba0: 6e 20 74 61 62 6c 65 20 65 78 70 72 65 73 73 69  n table expressi
fbb0: 6f 6e 73 5d 20 74 6f 20 62 65 20 6f 6d 69 74 74  ons] to be omitt
fbc0: 65 64 2e 0a 7d 0a 0a 0a 0a 43 4f 4d 50 49 4c 45  ed..}....COMPILE
fbd0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
fbe0: 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f 46 55  OMIT_DATETIME_FU
fbf0: 4e 43 53 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  NCS} {.  If this
fc00: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
fc10: 65 64 2c 20 53 51 4c 69 74 65 27 73 20 62 75 69  ed, SQLite's bui
fc20: 6c 74 2d 69 6e 20 64 61 74 65 20 61 6e 64 20 74  lt-in date and t
fc30: 69 6d 65 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e  ime manipulation
fc40: 0a 20 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  .  functions are
fc50: 20 6f 6d 69 74 74 65 64 2e 20 53 70 65 63 69 66   omitted. Specif
fc60: 69 63 61 6c 6c 79 2c 20 74 68 65 20 53 51 4c 20  ically, the SQL 
fc70: 66 75 6e 63 74 69 6f 6e 73 20 6a 75 6c 69 61 6e  functions julian
fc80: 64 61 79 28 29 2c 20 64 61 74 65 28 29 2c 0a 20  day(), date(),. 
fc90: 20 74 69 6d 65 28 29 2c 20 64 61 74 65 74 69 6d   time(), datetim
fca0: 65 28 29 20 61 6e 64 20 73 74 72 66 74 69 6d 65  e() and strftime
fcb0: 28 29 20 61 72 65 20 6e 6f 74 20 61 76 61 69 6c  () are not avail
fcc0: 61 62 6c 65 2e 20 54 68 65 20 64 65 66 61 75 6c  able. The defaul
fcd0: 74 20 63 6f 6c 75 6d 6e 0a 20 20 76 61 6c 75 65  t column.  value
fce0: 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20  s CURRENT_TIME, 
fcf0: 43 55 52 52 45 4e 54 5f 44 41 54 45 20 61 6e 64  CURRENT_DATE and
fd00: 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41   CURRENT_TIMESTA
fd10: 4d 50 20 61 72 65 20 73 74 69 6c 6c 20 61 76 61  MP are still ava
fd20: 69 6c 61 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  ilable..}..COMPI
fd30: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
fd40: 45 5f 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45 7d  E_OMIT_DECLTYPE}
fd50: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
fd60: 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
fd70: 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66  o omit support f
fd80: 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65  or the.  [sqlite
fd90: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
fda0: 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  e()] and [sqlite
fdb0: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
fdc0: 65 31 36 28 29 5d 0a 20 20 69 6e 74 65 72 66 61  e16()].  interfa
fdd0: 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ces..}..COMPILE_
fde0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
fdf0: 4d 49 54 5f 44 45 50 52 45 43 41 54 45 44 7d 20  MIT_DEPRECATED} 
fe00: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
fe10: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
fe20: 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f   omit support fo
fe30: 72 20 69 6e 74 65 72 66 61 63 65 73 0a 20 20 6d  r interfaces.  m
fe40: 61 72 6b 65 64 20 61 73 20 64 65 70 72 65 63 61  arked as depreca
fe50: 74 65 64 2e 20 20 54 68 69 73 20 69 6e 63 6c 75  ted.  This inclu
fe60: 64 65 73 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f  des .  [sqlite3_
fe70: 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28  aggregate_count(
fe80: 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 65  )],.  [sqlite3_e
fe90: 78 70 69 72 65 64 28 29 5d 2c 0a 20 20 5b 73 71  xpired()],.  [sq
fea0: 6c 69 74 65 33 5f 74 72 61 6e 73 66 65 72 5f 62  lite3_transfer_b
feb0: 69 6e 64 69 6e 67 73 28 29 5d 2c 0a 20 20 5b 73  indings()],.  [s
fec0: 71 6c 69 74 65 33 5f 67 6c 6f 62 61 6c 5f 72 65  qlite3_global_re
fed0: 63 6f 76 65 72 28 29 5d 2c 0a 20 20 5b 73 71 6c  cover()],.  [sql
fee0: 69 74 65 33 5f 74 68 72 65 61 64 5f 63 6c 65 61  ite3_thread_clea
fef0: 6e 75 70 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71  nup()] and.  [sq
ff00: 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 61 6c 61  lite3_memory_ala
ff10: 72 6d 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  rm()] interfaces
ff20: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
ff30: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
ff40: 5f 44 49 53 4b 49 4f 7d 20 7b 0a 20 20 54 68 69  _DISKIO} {.  Thi
ff50: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61  s option omits a
ff60: 6c 6c 20 73 75 70 70 6f 72 74 20 66 6f 72 20 77  ll support for w
ff70: 72 69 74 69 6e 67 20 74 6f 20 74 68 65 20 64 69  riting to the di
ff80: 73 6b 20 61 6e 64 20 66 6f 72 63 65 73 0a 20 20  sk and forces.  
ff90: 64 61 74 61 62 61 73 65 73 20 74 6f 20 65 78 69  databases to exi
ffa0: 73 74 20 69 6e 20 6d 65 6d 6f 72 79 20 6f 6e 6c  st in memory onl
ffb0: 79 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  y.  This option 
ffc0: 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 0a 20 20  has not been .  
ffd0: 6d 61 69 6e 74 61 69 6e 65 64 20 61 6e 64 20 70  maintained and p
ffe0: 72 6f 62 61 62 6c 79 20 64 6f 65 73 20 6e 6f 74  robably does not
fff0: 20 77 6f 72 6b 20 77 69 74 68 20 6e 65 77 65 72   work with newer
10000 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c   versions of SQL
10010 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ite..}..COMPILE_
10020 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
10030 4d 49 54 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a 20  MIT_EXPLAIN} {. 
10040 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
10050 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
10060 20 5b 45 58 50 4c 41 49 4e 5d 20 63 6f 6d 6d 61   [EXPLAIN] comma
10070 6e 64 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64  nd to be omitted
10080 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72   from the.  libr
10090 61 72 79 2e 20 41 74 74 65 6d 70 74 69 6e 67 20  ary. Attempting 
100a0 74 6f 20 65 78 65 63 75 74 65 20 61 6e 20 5b 45  to execute an [E
100b0 58 50 4c 41 49 4e 5d 20 73 74 61 74 65 6d 65 6e  XPLAIN] statemen
100c0 74 20 77 69 6c 6c 20 63 61 75 73 65 20 61 20 70  t will cause a p
100d0 61 72 73 65 0a 20 20 65 72 72 6f 72 2e 0a 7d 0a  arse.  error..}.
100e0 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
100f0 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41  {SQLITE_OMIT_FLA
10100 47 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 54  G_PRAGMAS} {.  T
10110 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
10120 20 73 75 70 70 6f 72 74 20 66 6f 72 20 61 20 73   support for a s
10130 75 62 73 65 74 20 6f 66 20 5b 50 52 41 47 4d 41  ubset of [PRAGMA
10140 5d 20 63 6f 6d 6d 61 6e 64 73 20 74 68 61 74 0a  ] commands that.
10150 20 20 71 75 65 72 79 20 61 6e 64 20 73 65 74 20    query and set 
10160 62 6f 6f 6c 65 61 6e 20 70 72 6f 70 65 72 74 69  boolean properti
10170 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  es..}..COMPILE_O
10180 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
10190 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e  IT_FLOATING_POIN
101a0 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
101b0 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d  on is used to om
101c0 69 74 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  it floating-poin
101d0 74 20 6e 75 6d 62 65 72 20 73 75 70 70 6f 72 74  t number support
101e0 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65   from the SQLite
101f0 0a 20 20 6c 69 62 72 61 72 79 2e 20 57 68 65 6e  .  library. When
10200 20 73 70 65 63 69 66 69 65 64 2c 20 73 70 65 63   specified, spec
10210 69 66 79 69 6e 67 20 61 20 66 6c 6f 61 74 69 6e  ifying a floatin
10220 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 20 61  g point number a
10230 73 20 61 20 6c 69 74 65 72 61 6c 20 0a 20 20 28  s a literal .  (
10240 69 2e 65 2e 20 22 31 2e 30 31 22 29 20 72 65 73  i.e. "1.01") res
10250 75 6c 74 73 20 69 6e 20 61 20 70 61 72 73 65 20  ults in a parse 
10260 65 72 72 6f 72 2e 0a 0a 20 20 3c 70 3e 49 6e 20  error...  <p>In 
10270 74 68 65 20 66 75 74 75 72 65 2c 20 74 68 69 73  the future, this
10280 20 6f 70 74 69 6f 6e 20 6d 61 79 20 61 6c 73 6f   option may also
10290 20 64 69 73 61 62 6c 65 20 6f 74 68 65 72 20 66   disable other f
102a0 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 0a 20  loating point . 
102b0 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2c 20   functionality, 
102c0 66 6f 72 20 65 78 61 6d 70 6c 65 20 74 68 65 20  for example the 
102d0 5b 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  [sqlite3_result_
102e0 64 6f 75 62 6c 65 28 29 5d 2c 20 0a 20 20 5b 73  double()], .  [s
102f0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62  qlite3_bind_doub
10300 6c 65 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  le()], [sqlite3_
10310 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 29 5d 20  value_double()] 
10320 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  and.  [sqlite3_c
10330 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 29 5d 20  olumn_double()] 
10340 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 20  API functions.. 
10350 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45   </p>.}..COMPILE
10360 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
10370 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59  OMIT_FOREIGN_KEY
10380 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70  } {.  If this op
10390 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
103a0 20 74 68 65 6e 20 5b 66 6f 72 65 69 67 6e 20 6b   then [foreign k
103b0 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 5d 20 73  ey constraint] s
103c0 79 6e 74 61 78 20 69 73 0a 20 20 6e 6f 74 20 72  yntax is.  not r
103d0 65 63 6f 67 6e 69 7a 65 64 2e 0a 7d 0a 0a 43 4f  ecognized..}..CO
103e0 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
103f0 4c 49 54 45 5f 4f 4d 49 54 5f 47 45 54 5f 54 41  LITE_OMIT_GET_TA
10400 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  BLE} {.  This op
10410 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70  tion causes supp
10420 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69 74 65 33  ort for [sqlite3
10430 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 61 6e  _get_table()] an
10440 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 66 72 65  d.  [sqlite3_fre
10450 65 5f 74 61 62 6c 65 28 29 5d 20 74 6f 20 62 65  e_table()] to be
10460 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   omitted..}..COM
10470 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
10480 49 54 45 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c 4f  ITE_OMIT_INCRBLO
10490 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  B} {.  This opti
104a0 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70 6f 72  on causes suppor
104b0 74 20 66 6f 72 20 5b 73 71 6c 69 74 65 33 5f 62  t for [sqlite3_b
104c0 6c 6f 62 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61  lob | incrementa
104d0 6c 20 42 4c 4f 42 20 49 2f 4f 5d 0a 20 20 74 6f  l BLOB I/O].  to
104e0 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a   be omitted..}..
104f0 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
10500 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 54 45  SQLITE_OMIT_INTE
10510 47 52 49 54 59 5f 43 48 45 43 4b 7d 20 7b 0a 20  GRITY_CHECK} {. 
10520 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
10530 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74  ts support for t
10540 68 65 20 5b 69 6e 74 65 67 72 69 74 79 5f 63 68  he [integrity_ch
10550 65 63 6b 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a  eck pragma]..}..
10560 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
10570 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 49 4b 45  SQLITE_OMIT_LIKE
10580 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b  _OPTIMIZATION} {
10590 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  .  This option d
105a0 69 73 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c  isables the abil
105b0 69 74 79 20 6f 66 20 53 51 4c 69 74 65 20 74 6f  ity of SQLite to
105c0 20 75 73 65 20 69 6e 64 69 63 65 73 20 74 6f 20   use indices to 
105d0 68 65 6c 70 0a 20 20 72 65 73 6f 6c 76 65 20 5b  help.  resolve [
105e0 4c 49 4b 45 5d 20 61 6e 64 20 5b 47 4c 4f 42 5d  LIKE] and [GLOB]
105f0 20 6f 70 65 72 61 74 6f 72 73 20 69 6e 20 61 20   operators in a 
10600 57 48 45 52 45 20 63 6c 61 75 73 65 2e 0a 7d 0a  WHERE clause..}.
10610 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
10620 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 41  {SQLITE_OMIT_LOA
10630 44 5f 45 58 54 45 4e 53 49 4f 4e 7d 20 7b 0a 20  D_EXTENSION} {. 
10640 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
10650 74 73 20 74 68 65 20 65 6e 74 69 72 65 20 65 78  ts the entire ex
10660 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67 20  tension loading 
10670 6d 65 63 68 61 6e 69 73 6d 20 66 72 6f 6d 0a 20  mechanism from. 
10680 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69   SQLite, includi
10690 6e 67 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62  ng [sqlite3_enab
106a0 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  le_load_extensio
106b0 6e 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69  n()] and.  [sqli
106c0 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  te3_load_extensi
106d0 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  on()] interfaces
106e0 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
106f0 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
10700 5f 4c 4f 43 41 4c 54 49 4d 45 7d 20 7b 0a 20 20  _LOCALTIME} {.  
10710 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
10720 73 20 74 68 65 20 22 6c 6f 63 61 6c 74 69 6d 65  s the "localtime
10730 22 20 6d 6f 64 69 66 69 65 72 20 66 72 6f 6d 20  " modifier from 
10740 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d  the date and tim
10750 65 0a 20 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20  e.  functions.  
10760 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 73  This option is s
10770 6f 6d 65 74 69 6d 65 73 20 75 73 65 66 75 6c 20  ometimes useful 
10780 77 68 65 6e 20 74 72 79 69 6e 67 20 74 6f 20 63  when trying to c
10790 6f 6d 70 69 6c 65 0a 20 20 74 68 65 20 64 61 74  ompile.  the dat
107a0 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74  e and time funct
107b0 69 6f 6e 73 20 6f 6e 20 61 20 70 6c 61 74 66 6f  ions on a platfo
107c0 72 6d 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74  rm that does not
107d0 20 73 75 70 70 6f 72 74 20 74 68 65 0a 20 20 63   support the.  c
107e0 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 63 61 6c 20  oncept of local 
107f0 74 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  time..}..COMPILE
10800 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
10810 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44 45 7d 20  OMIT_LOOKASIDE} 
10820 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
10830 6f 6d 69 74 73 20 74 68 65 20 5b 6c 6f 6f 6b 61  omits the [looka
10840 73 69 64 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  side memory allo
10850 63 61 74 6f 72 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  cator]..}..COMPI
10860 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
10870 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44 42 7d  E_OMIT_MEMORYDB}
10880 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 69   {.  When this i
10890 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 6c  s defined, the l
108a0 69 62 72 61 72 79 20 64 6f 65 73 20 6e 6f 74 20  ibrary does not 
108b0 72 65 73 70 65 63 74 20 74 68 65 20 73 70 65 63  respect the spec
108c0 69 61 6c 20 64 61 74 61 62 61 73 65 0a 20 20 6e  ial database.  n
108d0 61 6d 65 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 28  ame ":memory:" (
108e0 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64 20 74 6f  normally used to
108f0 20 63 72 65 61 74 65 20 61 6e 20 5b 69 6e 2d 6d   create an [in-m
10900 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 5d 29  emory database])
10910 2e 20 49 66 20 0a 20 20 22 3a 6d 65 6d 6f 72 79  . If .  ":memory
10920 3a 22 20 69 73 20 70 61 73 73 65 64 20 74 6f 20  :" is passed to 
10930 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d  [sqlite3_open()]
10940 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31  , [sqlite3_open1
10950 36 28 29 5d 2c 20 6f 72 0a 20 20 5b 73 71 6c 69  6()], or.  [sqli
10960 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20  te3_open_v2()], 
10970 61 20 66 69 6c 65 20 77 69 74 68 20 74 68 69 73  a file with this
10980 20 6e 61 6d 65 20 77 69 6c 6c 20 62 65 20 0a 20   name will be . 
10990 20 6f 70 65 6e 65 64 20 6f 72 20 63 72 65 61 74   opened or creat
109a0 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
109b0 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
109c0 49 54 5f 4f 52 5f 4f 50 54 49 4d 49 5a 41 54 49  IT_OR_OPTIMIZATI
109d0 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  ON} {.  This opt
109e0 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65  ion disables the
109f0 20 61 62 69 6c 69 74 79 20 6f 66 20 53 51 4c 69   ability of SQLi
10a00 74 65 20 74 6f 20 75 73 65 20 61 6e 20 69 6e 64  te to use an ind
10a10 65 78 20 74 6f 67 65 74 68 65 72 0a 20 20 77 69  ex together.  wi
10a20 74 68 20 74 65 72 6d 73 20 6f 66 20 61 20 57 48  th terms of a WH
10a30 45 52 45 20 63 6c 61 75 73 65 20 63 6f 6e 6e 65  ERE clause conne
10a40 63 74 65 64 20 62 79 20 74 68 65 20 4f 52 20 6f  cted by the OR o
10a50 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  perator..}..COMP
10a60 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
10a70 54 45 5f 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52  TE_OMIT_PAGER_PR
10a80 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e  AGMAS} {.  Defin
10a90 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
10aa0 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20 72 65  omits pragmas re
10ab0 6c 61 74 65 64 20 74 6f 20 74 68 65 20 70 61 67  lated to the pag
10ac0 65 72 20 73 75 62 73 79 73 74 65 6d 20 66 72 6f  er subsystem fro
10ad0 6d 20 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a  m .  the build..
10ae0 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
10af0 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50  N {SQLITE_OMIT_P
10b00 52 41 47 4d 41 7d 20 7b 0a 20 20 54 68 69 73 20  RAGMA} {.  This 
10b10 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
10b20 6f 20 6f 6d 69 74 20 74 68 65 20 5b 50 52 41 47  o omit the [PRAG
10b30 4d 41 5d 20 63 6f 6d 6d 61 6e 64 0a 20 20 66 72  MA] command.  fr
10b40 6f 6d 20 74 68 65 20 6c 69 62 72 61 72 79 2e 20  om the library. 
10b50 4e 6f 74 65 20 74 68 61 74 20 69 74 20 69 73 20  Note that it is 
10b60 75 73 65 66 75 6c 20 74 6f 20 64 65 66 69 6e 65  useful to define
10b70 20 74 68 65 20 6d 61 63 72 6f 73 20 74 68 61 74   the macros that
10b80 20 6f 6d 69 74 0a 20 20 73 70 65 63 69 66 69 63   omit.  specific
10b90 20 70 72 61 67 6d 61 73 20 69 6e 20 61 64 64 69   pragmas in addi
10ba0 74 69 6f 6e 20 74 6f 20 74 68 69 73 2c 20 61 73  tion to this, as
10bb0 20 74 68 65 79 20 6d 61 79 20 61 6c 73 6f 20 72   they may also r
10bc0 65 6d 6f 76 65 20 73 75 70 70 6f 72 74 69 6e 67  emove supporting
10bd0 20 63 6f 64 65 0a 20 20 69 6e 20 6f 74 68 65 72   code.  in other
10be0 20 73 75 62 2d 73 79 73 74 65 6d 73 2e 20 54 68   sub-systems. Th
10bf0 69 73 20 6d 61 63 72 6f 20 72 65 6d 6f 76 65 73  is macro removes
10c00 20 74 68 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f   the [PRAGMA] co
10c10 6d 6d 61 6e 64 20 6f 6e 6c 79 2e 0a 7d 0a 0a 43  mmand only..}..C
10c20 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
10c30 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 4f 47 52  QLITE_OMIT_PROGR
10c40 45 53 53 5f 43 41 4c 4c 42 41 43 4b 7d 20 7b 0a  ESS_CALLBACK} {.
10c50 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61    This option ma
10c60 79 20 62 65 20 64 65 66 69 6e 65 64 20 74 6f 20  y be defined to 
10c70 6f 6d 69 74 20 74 68 65 20 63 61 70 61 62 69 6c  omit the capabil
10c80 69 74 79 20 74 6f 20 69 73 73 75 65 20 22 70 72  ity to issue "pr
10c90 6f 67 72 65 73 73 22 20 0a 20 20 63 61 6c 6c 62  ogress" .  callb
10ca0 61 63 6b 73 20 64 75 72 69 6e 67 20 6c 6f 6e 67  acks during long
10cb0 2d 72 75 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61  -running SQL sta
10cc0 74 65 6d 65 6e 74 73 2e 20 54 68 65 20 0a 20 20  tements. The .  
10cd0 5b 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73  [sqlite3_progres
10ce0 73 5f 68 61 6e 64 6c 65 72 28 29 5d 0a 20 20 41  s_handler()].  A
10cf0 50 49 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e  PI function is n
10d00 6f 74 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68  ot present in th
10d10 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f  e library..}..CO
10d20 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
10d30 4c 49 54 45 5f 4f 4d 49 54 5f 51 55 49 43 4b 42  LITE_OMIT_QUICKB
10d40 41 4c 41 4e 43 45 7d 20 7b 0a 20 20 54 68 69 73  ALANCE} {.  This
10d50 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6e   option omits an
10d60 20 61 6c 74 65 72 6e 61 74 69 76 65 2c 20 66 61   alternative, fa
10d70 73 74 65 72 20 42 2d 54 72 65 65 20 62 61 6c 61  ster B-Tree bala
10d80 6e 63 69 6e 67 20 72 6f 75 74 69 6e 65 2e 0a 20  ncing routine.. 
10d90 20 55 73 69 6e 67 20 74 68 69 73 20 6f 70 74 69   Using this opti
10da0 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20  on makes SQLite 
10db0 73 6c 69 67 68 74 6c 79 20 73 6d 61 6c 6c 65 72  slightly smaller
10dc0 20 61 74 20 74 68 65 20 65 78 70 65 6e 73 65 20   at the expense 
10dd0 6f 66 0a 20 20 6d 61 6b 69 6e 67 20 69 74 20 72  of.  making it r
10de0 75 6e 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f 77  un slightly slow
10df0 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  er..}..COMPILE_O
10e00 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
10e10 49 54 5f 52 45 49 4e 44 45 58 7d 20 7b 0a 20 20  IT_REINDEX} {.  
10e20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
10e30 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
10e40 20 5b 52 45 49 4e 44 45 58 5d 0a 20 20 63 6f 6d   [REINDEX].  com
10e50 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c  mand is not incl
10e60 75 64 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72  uded in the libr
10e70 61 72 79 2e 0a 20 20 45 78 65 63 75 74 69 6e 67  ary..  Executing
10e80 20 61 20 5b 52 45 49 4e 44 45 58 5d 20 73 74 61   a [REINDEX] sta
10e90 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20 0a 20  tement causes . 
10ea0 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a   a parse error..
10eb0 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
10ec0 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  N {SQLITE_OMIT_S
10ed0 43 48 45 4d 41 5f 50 52 41 47 4d 41 53 7d 20 7b  CHEMA_PRAGMAS} {
10ee0 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73  .  Defining this
10ef0 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72   option omits pr
10f00 61 67 6d 61 73 20 66 6f 72 20 71 75 65 72 79 69  agmas for queryi
10f10 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ng the database 
10f20 73 63 68 65 6d 61 20 66 72 6f 6d 20 0a 20 20 74  schema from .  t
10f30 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d  he build..}..COM
10f40 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
10f50 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f  ITE_OMIT_SCHEMA_
10f60 56 45 52 53 49 4f 4e 5f 50 52 41 47 4d 41 53 7d  VERSION_PRAGMAS}
10f70 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
10f80 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
10f90 70 72 61 67 6d 61 73 20 66 6f 72 20 71 75 65 72  pragmas for quer
10fa0 79 69 6e 67 20 61 6e 64 20 6d 6f 64 69 66 79 69  ying and modifyi
10fb0 6e 67 20 74 68 65 20 0a 20 20 64 61 74 61 62 61  ng the .  databa
10fc0 73 65 20 73 63 68 65 6d 61 20 76 65 72 73 69 6f  se schema versio
10fd0 6e 20 61 6e 64 20 75 73 65 72 20 76 65 72 73 69  n and user versi
10fe0 6f 6e 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c  on from the buil
10ff0 64 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79 2c  d. Specifically,
11000 20 74 68 65 20 0a 20 20 5b 73 63 68 65 6d 61 5f   the .  [schema_
11010 76 65 72 73 69 6f 6e 5d 20 61 6e 64 20 5b 75 73  version] and [us
11020 65 72 5f 76 65 72 73 69 6f 6e 5d 20 50 52 41 47  er_version] PRAG
11030 4d 41 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e  MAs are omitted.
11040 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
11050 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
11060 53 48 41 52 45 44 5f 43 41 43 48 45 7d 20 7b 0a  SHARED_CACHE} {.
11070 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 62 75    This option bu
11080 69 6c 64 73 20 53 51 4c 69 74 65 20 77 69 74 68  ilds SQLite with
11090 6f 75 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  out support for 
110a0 73 68 61 72 65 64 2d 63 61 63 68 65 20 6d 6f 64  shared-cache mod
110b0 65 2e 0a 20 20 54 68 65 20 5b 73 71 6c 69 74 65  e..  The [sqlite
110c0 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f  3_enable_shared_
110d0 63 61 63 68 65 28 29 5d 20 69 73 20 6f 6d 69 74  cache()] is omit
110e0 74 65 64 20 61 6c 6f 6e 67 20 77 69 74 68 20 61  ted along with a
110f0 20 66 61 69 72 0a 20 20 61 6d 6f 75 6e 74 20 6f   fair.  amount o
11100 66 20 6c 6f 67 69 63 20 77 69 74 68 69 6e 20 74  f logic within t
11110 68 65 20 42 2d 54 72 65 65 20 73 75 62 73 79 73  he B-Tree subsys
11120 74 65 6d 20 61 73 73 6f 63 69 61 74 65 64 20 77  tem associated w
11130 69 74 68 20 73 68 61 72 65 64 0a 20 20 63 61 63  ith shared.  cac
11140 68 65 20 6d 61 6e 61 67 65 6d 65 6e 74 2e 0a 7d  he management..}
11150 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
11160 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 55   {SQLITE_OMIT_SU
11170 42 51 55 45 52 59 7d 20 7b 0a 20 20 49 66 20 64  BQUERY} {.  If d
11180 65 66 69 6e 65 64 2c 20 73 75 70 70 6f 72 74 20  efined, support 
11190 66 6f 72 20 73 75 62 2d 73 65 6c 65 63 74 73 20  for sub-selects 
111a0 61 6e 64 20 74 68 65 20 49 4e 28 29 20 6f 70 65  and the IN() ope
111b0 72 61 74 6f 72 20 61 72 65 20 6f 6d 69 74 74 65  rator are omitte
111c0 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
111d0 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
111e0 54 5f 54 43 4c 5f 56 41 52 49 41 42 4c 45 7d 20  T_TCL_VARIABLE} 
111f0 7b 0a 20 20 49 66 20 74 68 69 73 20 6d 61 63 72  {.  If this macr
11200 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  o is defined, th
11210 65 6e 20 74 68 65 20 73 70 65 63 69 61 6c 20 22  en the special "
11220 24 3c 76 61 72 69 61 62 6c 65 2d 6e 61 6d 65 3e  $<variable-name>
11230 22 20 73 79 6e 74 61 78 0a 20 20 75 73 65 64 20  " syntax.  used 
11240 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  to automatically
11250 20 62 69 6e 64 20 53 51 4c 20 76 61 72 69 61 62   bind SQL variab
11260 6c 65 73 20 74 6f 20 54 43 4c 20 76 61 72 69 61  les to TCL varia
11270 62 6c 65 73 20 69 73 20 6f 6d 69 74 74 65 64 2e  bles is omitted.
11280 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
11290 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
112a0 54 45 4d 50 44 42 7d 20 7b 0a 20 20 54 68 69 73  TEMPDB} {.  This
112b0 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
112c0 70 70 6f 72 74 20 66 6f 72 20 54 45 4d 50 20 6f  pport for TEMP o
112d0 72 20 54 45 4d 50 4f 52 41 52 59 20 74 61 62 6c  r TEMPORARY tabl
112e0 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  es..}..COMPILE_O
112f0 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
11300 49 54 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54 68  IT_TRACE} {.  Th
11310 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
11320 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20  support for the 
11330 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65  [sqlite3_profile
11340 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
11350 65 33 5f 74 72 61 63 65 28 29 5d 20 69 6e 74 65  e3_trace()] inte
11360 72 66 61 63 65 73 20 61 6e 64 20 74 68 65 69 72  rfaces and their
11370 20 61 73 73 6f 63 69 61 74 65 64 20 6c 6f 67 69   associated logi
11380 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  c..}..COMPILE_OP
11390 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
113a0 54 5f 54 52 49 47 47 45 52 7d 20 7b 0a 20 20 44  T_TRIGGER} {.  D
113b0 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74  efining this opt
113c0 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72  ion omits suppor
113d0 74 20 66 6f 72 20 54 52 49 47 47 45 52 20 6f 62  t for TRIGGER ob
113e0 6a 65 63 74 73 2e 20 4e 65 69 74 68 65 72 20 74  jects. Neither t
113f0 68 65 20 0a 20 20 5b 43 52 45 41 54 45 20 54 52  he .  [CREATE TR
11400 49 47 47 45 52 5d 20 6f 72 20 5b 44 52 4f 50 20  IGGER] or [DROP 
11410 54 52 49 47 47 45 52 5d 0a 20 20 63 6f 6d 6d 61  TRIGGER].  comma
11420 6e 64 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c  nds are availabl
11430 65 20 69 6e 20 74 68 69 73 20 63 61 73 65 2c 20  e in this case, 
11440 61 6e 64 20 61 74 74 65 6d 70 74 69 6e 67 20 74  and attempting t
11450 6f 20 65 78 65 63 75 74 65 0a 20 20 65 69 74 68  o execute.  eith
11460 65 72 20 77 69 6c 6c 20 72 65 73 75 6c 74 20 69  er will result i
11470 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e  n a parse error.
11480 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61  .  This option a
11490 6c 73 6f 20 64 69 73 61 62 6c 65 73 20 65 6e 66  lso disables enf
114a0 6f 72 63 65 6d 65 6e 74 20 6f 66 20 5b 66 6f 72  orcement of [for
114b0 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61  eign key constra
114c0 69 6e 74 73 5d 2c 0a 20 20 73 69 6e 63 65 20 74  ints],.  since t
114d0 68 65 20 63 6f 64 65 20 74 68 61 74 20 69 6d 70  he code that imp
114e0 6c 65 6d 65 6e 74 73 20 74 72 69 67 67 65 72 73  lements triggers
114f0 20 61 6e 64 20 77 68 69 63 68 20 69 73 20 6f 6d   and which is om
11500 69 74 74 65 64 20 62 79 20 74 68 69 73 0a 20 20  itted by this.  
11510 6f 70 74 69 6f 6e 20 69 73 20 61 6c 73 6f 20 75  option is also u
11520 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  sed to implement
11530 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63   [foreign key ac
11540 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  tions]..}..COMPI
11550 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
11560 45 5f 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f  E_OMIT_TRUNCATE_
11570 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a  OPTIMIZATION} {.
11580 20 20 41 20 64 65 66 61 75 6c 74 20 62 75 69 6c    A default buil
11590 64 20 6f 66 20 53 51 4c 69 74 65 2c 20 69 66 20  d of SQLite, if 
115a0 61 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65  a [DELETE] state
115b0 6d 65 6e 74 20 68 61 73 20 6e 6f 20 57 48 45 52  ment has no WHER
115c0 45 20 63 6c 61 75 73 65 0a 20 20 61 6e 64 20 6f  E clause.  and o
115d0 70 65 72 61 74 65 73 20 6f 6e 20 61 20 74 61 62  perates on a tab
115e0 6c 65 20 77 69 74 68 20 6e 6f 20 74 72 69 67 67  le with no trigg
115f0 65 72 73 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61  ers, an optimiza
11600 74 69 6f 6e 20 6f 63 63 75 72 73 20 74 68 61 74  tion occurs that
11610 0a 20 20 63 61 75 73 65 73 20 74 68 65 20 44 45  .  causes the DE
11620 4c 45 54 45 20 74 6f 20 6f 63 63 75 72 20 62 79  LETE to occur by
11630 20 64 72 6f 70 70 69 6e 67 20 61 6e 64 20 72 65   dropping and re
11640 63 72 65 61 74 69 6e 67 20 74 68 65 20 74 61 62  creating the tab
11650 6c 65 2e 20 20 0a 20 20 44 72 6f 70 70 69 6e 67  le.  .  Dropping
11660 20 61 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20   and recreating 
11670 61 20 74 61 62 6c 65 20 69 73 20 75 73 75 61 6c  a table is usual
11680 6c 79 20 6d 75 63 68 20 66 61 73 74 65 72 20 74  ly much faster t
11690 68 61 6e 20 64 65 6c 65 74 69 6e 67 0a 20 20 74  han deleting.  t
116a0 68 65 20 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74  he table content
116b0 20 72 6f 77 20 62 79 20 72 6f 77 2e 20 20 54 68   row by row.  Th
116c0 69 73 20 69 73 20 74 68 65 20 22 74 72 75 6e 63  is is the "trunc
116d0 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  ate optimization
116e0 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  "..}..COMPILE_OP
116f0 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
11700 54 5f 55 54 46 31 36 7d 20 7b 0a 20 20 54 68 69  T_UTF16} {.  Thi
11710 73 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20  s macro is used 
11720 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20  to omit support 
11730 66 6f 72 20 55 54 46 31 36 20 74 65 78 74 20 65  for UTF16 text e
11740 6e 63 6f 64 69 6e 67 2e 20 57 68 65 6e 20 74 68  ncoding. When th
11750 69 73 20 69 73 0a 20 20 64 65 66 69 6e 65 64 20  is is.  defined 
11760 61 6c 6c 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  all API function
11770 73 20 74 68 61 74 20 72 65 74 75 72 6e 20 6f 72  s that return or
11780 20 61 63 63 65 70 74 20 55 54 46 31 36 20 65 6e   accept UTF16 en
11790 63 6f 64 65 64 20 74 65 78 74 20 61 72 65 0a 20  coded text are. 
117a0 20 75 6e 61 76 61 69 6c 61 62 6c 65 2e 20 54 68   unavailable. Th
117b0 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 63 61  ese functions ca
117c0 6e 20 62 65 20 69 64 65 6e 74 69 66 69 65 64 20  n be identified 
117d0 62 79 20 74 68 65 20 66 61 63 74 20 74 68 61 74  by the fact that
117e0 20 74 68 65 79 20 65 6e 64 0a 20 20 77 69 74 68   they end.  with
117f0 20 27 31 36 27 2c 20 66 6f 72 20 65 78 61 6d 70   '16', for examp
11800 6c 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  le [sqlite3_prep
11810 61 72 65 31 36 28 29 5d 2c 20 5b 73 71 6c 69 74  are16()], [sqlit
11820 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36  e3_column_text16
11830 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
11840 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 29  e3_bind_text16()
11850 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
11860 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
11870 54 5f 56 41 43 55 55 4d 7d 20 7b 0a 20 20 57 68  T_VACUUM} {.  Wh
11880 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
11890 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b  s defined, the [
118a0 56 41 43 55 55 4d 5d 0a 20 20 63 6f 6d 6d 61 6e  VACUUM].  comman
118b0 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65  d is not include
118c0 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79  d in the library
118d0 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61 20  ..  Executing a 
118e0 5b 56 41 43 55 55 4d 5d 20 73 74 61 74 65 6d 65  [VACUUM] stateme
118f0 6e 74 20 63 61 75 73 65 73 20 0a 20 20 61 20 70  nt causes .  a p
11900 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43  arse error..}..C
11910 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
11920 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 45 57 7d  QLITE_OMIT_VIEW}
11930 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
11940 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
11950 73 75 70 70 6f 72 74 20 66 6f 72 20 56 49 45 57  support for VIEW
11960 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74 68 65   objects. Neithe
11970 72 20 74 68 65 20 0a 20 20 5b 43 52 45 41 54 45  r the .  [CREATE
11980 20 56 49 45 57 5d 20 6e 6f 72 20 74 68 65 20 5b   VIEW] nor the [
11990 44 52 4f 50 20 56 49 45 57 5d 0a 20 20 63 6f 6d  DROP VIEW].  com
119a0 6d 61 6e 64 73 20 61 72 65 20 61 76 61 69 6c 61  mands are availa
119b0 62 6c 65 20 69 6e 20 74 68 69 73 20 63 61 73 65  ble in this case
119c0 2c 20 61 6e 64 0a 20 20 61 74 74 65 6d 70 74 69  , and.  attempti
119d0 6e 67 20 74 6f 20 65 78 65 63 75 74 65 20 65 69  ng to execute ei
119e0 74 68 65 72 20 77 69 6c 6c 20 72 65 73 75 6c 74  ther will result
119f0 20 69 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f   in a parse erro
11a00 72 2e 0a 0a 20 20 57 41 52 4e 49 4e 47 3a 20 49  r...  WARNING: I
11a10 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20  f this macro is 
11a20 64 65 66 69 6e 65 64 2c 20 69 74 20 77 69 6c 6c  defined, it will
11a30 20 6e 6f 74 20 62 65 20 70 6f 73 73 69 62 6c 65   not be possible
11a40 20 74 6f 20 6f 70 65 6e 20 61 20 64 61 74 61 62   to open a datab
11a50 61 73 65 0a 20 20 66 6f 72 20 77 68 69 63 68 20  ase.  for which 
11a60 74 68 65 20 73 63 68 65 6d 61 20 63 6f 6e 74 61  the schema conta
11a70 69 6e 73 20 56 49 45 57 20 6f 62 6a 65 63 74 73  ins VIEW objects
11a80 2e 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  . .}..COMPILE_OP
11a90 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
11aa0 54 5f 56 49 52 54 55 41 4c 54 41 42 4c 45 7d 20  T_VIRTUALTABLE} 
11ab0 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
11ac0 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
11ad0 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76  r the [sqlite3_v
11ae0 74 61 62 20 7c 20 56 69 72 74 75 61 6c 20 54 61  tab | Virtual Ta
11af0 62 6c 65 5d 0a 20 20 6d 65 63 68 61 6e 69 73 6d  ble].  mechanism
11b00 20 69 6e 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43   in SQLite..}..C
11b10 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
11b20 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 41 4c 7d 20  QLITE_OMIT_WAL} 
11b30 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
11b40 6f 6d 69 74 73 20 74 68 65 20 22 5b 77 72 69 74  omits the "[writ
11b50 65 2d 61 68 65 61 64 20 6c 6f 67 5d 22 20 28 61  e-ahead log]" (a
11b60 2e 6b 2e 61 2e 20 22 5b 57 41 4c 5d 22 29 20 63  .k.a. "[WAL]") c
11b70 61 70 61 62 69 6c 69 74 79 2e 0a 7d 0a 0a 43 4f  apability..}..CO
11b80 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
11b90 4c 49 54 45 5f 4f 4d 49 54 5f 57 53 44 7d 20 7b  LITE_OMIT_WSD} {
11ba0 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 62  .  This option b
11bb0 75 69 6c 64 73 20 61 20 76 65 72 73 69 6f 6e 20  uilds a version 
11bc0 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  of the SQLite li
11bd0 62 72 61 72 79 20 74 68 61 74 20 63 6f 6e 74 61  brary that conta
11be0 69 6e 73 20 6e 6f 0a 20 20 57 72 69 74 61 62 6c  ins no.  Writabl
11bf0 65 20 53 74 61 74 69 63 20 44 61 74 61 20 28 57  e Static Data (W
11c00 53 44 29 2e 20 20 57 53 44 20 69 73 20 67 6c 6f  SD).  WSD is glo
11c10 62 61 6c 20 76 61 72 69 61 62 6c 65 73 20 61 6e  bal variables an
11c20 64 2f 6f 72 20 73 74 61 74 69 63 0a 20 20 76 61  d/or static.  va
11c30 72 69 61 62 6c 65 73 2e 20 20 53 6f 6d 65 20 70  riables.  Some p
11c40 6c 61 74 66 6f 72 6d 73 20 64 6f 20 6e 6f 74 20  latforms do not 
11c50 73 75 70 70 6f 72 74 20 57 53 44 2c 20 61 6e 64  support WSD, and
11c60 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
11c70 6e 65 63 65 73 73 61 72 79 0a 20 20 69 6e 20 6f  necessary.  in o
11c80 72 64 65 72 20 66 6f 72 20 53 51 4c 69 74 65 20  rder for SQLite 
11c90 74 6f 20 77 6f 72 6b 20 74 68 6f 73 65 20 70 6c  to work those pl
11ca0 61 74 66 6f 72 6d 73 2e 20 20 0a 0a 20 20 55 6e  atforms.  ..  Un
11cb0 6c 69 6b 65 20 6f 74 68 65 72 20 4f 4d 49 54 20  like other OMIT 
11cc0 6f 70 74 69 6f 6e 73 20 77 68 69 63 68 20 6d 61  options which ma
11cd0 6b 65 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  ke the SQLite li
11ce0 62 72 61 72 79 20 73 6d 61 6c 6c 65 72 2c 0a 20  brary smaller,. 
11cf0 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 63 74   this option act
11d00 75 61 6c 6c 79 20 69 6e 63 72 65 61 73 65 73 20  ually increases 
11d10 74 68 65 20 73 69 7a 65 20 6f 66 20 53 51 4c 69  the size of SQLi
11d20 74 65 20 61 6e 64 20 6d 61 6b 65 73 20 69 74 20  te and makes it 
11d30 72 75 6e 0a 20 20 61 20 6c 69 74 74 6c 65 20 73  run.  a little s
11d40 6c 6f 77 65 72 2e 20 20 4f 6e 6c 79 20 75 73 65  lower.  Only use
11d50 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 66 20   this option if 
11d60 53 51 4c 69 74 65 20 69 73 20 62 65 69 6e 67 20  SQLite is being 
11d70 62 75 69 6c 74 20 66 6f 72 20 61 6e 0a 20 20 65  built for an.  e
11d80 6d 62 65 64 64 65 64 20 74 61 72 67 65 74 20 74  mbedded target t
11d90 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70  hat does not sup
11da0 70 6f 72 74 20 57 53 44 2e 0a 7d 0a 0a 43 4f 4d  port WSD..}..COM
11db0 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
11dc0 49 54 45 5f 4f 4d 49 54 5f 58 46 45 52 5f 4f 50  ITE_OMIT_XFER_OP
11dd0 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
11de0 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74  on omits support
11df0 20 66 6f 72 20 6f 70 74 69 6d 69 7a 61 74 69 6f   for optimizatio
11e00 6e 73 20 74 68 61 74 20 68 65 6c 70 20 73 74 61  ns that help sta
11e10 74 65 6d 65 6e 74 73 0a 20 20 6f 66 20 74 68 65  tements.  of the
11e20 20 66 6f 72 6d 20 22 49 4e 53 45 52 54 20 49 4e   form "INSERT IN
11e30 54 4f 20 2e 2e 2e 20 53 45 4c 45 43 54 20 2e 2e  TO ... SELECT ..
11e40 2e 22 20 72 75 6e 20 66 61 73 74 65 72 2e 0a 7d  ." run faster..}
11e50 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
11e60 20 7b 53 51 4c 49 54 45 5f 55 4e 54 45 53 54 41   {SQLITE_UNTESTA
11e70 42 4c 45 7d 20 7b 0a 20 20 41 20 73 74 61 6e 64  BLE} {.  A stand
11e80 61 72 64 20 53 51 4c 69 74 65 20 62 75 69 6c 64  ard SQLite build
11e90 20 69 6e 63 6c 75 64 65 73 20 61 20 73 6d 61 6c   includes a smal
11ea0 6c 20 61 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69  l amount of logi
11eb0 63 20 61 73 73 6f 63 69 61 74 65 64 0a 20 20 77  c associated.  w
11ec0 69 74 68 20 5b 73 71 6c 69 74 65 33 5f 74 65 73  ith [sqlite3_tes
11ed0 74 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 74 6f 20  t_control()] to 
11ee0 65 78 65 72 63 69 73 65 0a 20 20 70 61 72 74 73  exercise.  parts
11ef0 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 63   of the SQLite c
11f00 6f 72 65 20 74 68 61 74 20 61 72 65 20 6f 74 68  ore that are oth
11f10 65 72 77 69 73 65 20 64 69 66 66 69 63 75 6c 74  erwise difficult
11f20 20 74 6f 20 76 61 6c 69 64 61 74 65 2e 0a 20 20   to validate..  
11f30 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  This compile-tim
11f40 65 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74  e option omits t
11f50 68 61 74 20 65 78 74 72 61 20 74 65 73 74 69 6e  hat extra testin
11f60 67 20 6c 6f 67 69 63 2e 20 20 54 68 69 73 0a 20  g logic.  This. 
11f70 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
11f80 74 69 6f 6e 20 77 61 73 20 63 61 6c 6c 65 64 20  tion was called 
11f90 22 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55 49  "SQLITE_OMIT_BUI
11fa0 4c 54 49 4e 5f 54 45 53 54 22 20 70 72 69 6f 72  LTIN_TEST" prior
11fb0 0a 20 20 74 6f 20 53 51 4c 69 74 65 20 76 65 72  .  to SQLite ver
11fc0 73 69 6f 6e 20 33 2e 31 36 2e 30 20 28 5b 64 61  sion 3.16.0 ([da
11fd0 74 65 6f 66 3a 33 2e 31 36 2e 30 5d 29 2e 20 20  teof:3.16.0]).  
11fe0 54 68 65 20 6e 61 6d 65 20 77 61 73 20 63 68 61  The name was cha
11ff0 6e 67 65 64 0a 20 20 74 6f 20 62 65 74 74 65 72  nged.  to better
12000 20 64 65 73 63 72 69 62 65 20 74 68 65 20 69 6d   describe the im
12010 70 6c 69 63 61 74 69 6f 6e 73 20 6f 66 20 75 73  plications of us
12020 69 6e 67 20 69 74 2e 0a 20 20 3c 70 3e 0a 20 20  ing it..  <p>.  
12030 53 65 74 74 69 6e 67 20 74 68 69 73 20 63 6f 6d  Setting this com
12040 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
12050 20 70 72 65 76 65 6e 74 73 20 53 51 4c 69 74 65   prevents SQLite
12060 20 66 72 6f 6d 20 62 65 69 6e 67 20 66 75 6c 6c   from being full
12070 79 0a 20 20 74 65 73 74 61 62 6c 65 2e 20 20 42  y.  testable.  B
12080 72 61 6e 63 68 20 74 65 73 74 20 63 6f 76 65 72  ranch test cover
12090 61 67 65 20 64 72 6f 70 73 20 66 72 6f 6d 20 31  age drops from 1
120a0 30 30 25 20 64 6f 77 6e 20 74 6f 20 61 62 6f 75  00% down to abou
120b0 74 20 39 35 25 2e 0a 20 20 3c 70 3e 0a 20 20 53  t 95%..  <p>.  S
120c0 51 4c 69 74 65 20 64 65 76 65 6c 6f 70 65 72 73  QLite developers
120d0 20 66 6f 6c 6c 6f 77 20 74 68 65 20 4e 41 53 41   follow the NASA
120e0 20 70 72 69 6e 63 69 70 6c 65 20 6f 66 0a 20 20   principle of.  
120f0 22 66 6c 79 20 77 68 61 74 20 79 6f 75 20 74 65  "fly what you te
12100 73 74 20 61 6e 64 20 74 65 73 74 20 77 68 61 74  st and test what
12110 20 79 6f 75 20 66 6c 79 22 2e 20 20 54 68 69 73   you fly".  This
12120 20 70 72 69 6e 63 69 70 6c 65 20 69 73 20 76 69   principle is vi
12130 6f 6c 61 74 65 64 0a 20 20 69 66 20 74 68 69 73  olated.  if this
12140 20 6f 70 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c   option is enabl
12150 65 64 20 66 6f 72 20 64 65 6c 69 76 65 72 79 20  ed for delivery 
12160 62 75 74 20 64 69 73 61 62 6c 65 64 20 66 6f 72  but disabled for
12170 20 74 65 73 74 69 6e 67 2e 0a 20 20 42 75 74 20   testing..  But 
12180 69 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  if this option i
12190 73 20 65 6e 61 62 6c 65 64 20 64 75 72 69 6e 67  s enabled during
121a0 20 74 65 73 74 69 6e 67 2c 20 6e 6f 74 20 61 6c   testing, not al
121b0 6c 20 62 72 61 6e 63 68 65 73 20 61 72 65 20 0a  l branches are .
121c0 20 20 72 65 61 63 68 61 62 6c 65 2e 20 20 54 68    reachable.  Th
121d0 65 72 65 66 6f 72 65 2c 20 74 68 65 20 75 73 65  erefore, the use
121e0 20 6f 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65   of this compile
121f0 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20  -time option is 
12200 64 69 73 63 6f 75 72 61 67 65 64 2e 0a 7d 0a 0a  discouraged..}..
12210 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
12220 53 51 4c 49 54 45 5f 5a 45 52 4f 5f 4d 41 4c 4c  SQLITE_ZERO_MALL
12230 4f 43 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  OC} {.  This opt
12240 69 6f 6e 20 6f 6d 69 74 73 20 62 6f 74 68 20 74  ion omits both t
12250 68 65 20 5b 64 65 66 61 75 6c 74 20 6d 65 6d 6f  he [default memo
12260 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 61 6e  ry allocator] an
12270 64 20 74 68 65 0a 20 20 5b 64 65 62 75 67 67 69  d the.  [debuggi
12280 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ng memory alloca
12290 74 6f 72 5d 20 66 72 6f 6d 20 74 68 65 20 62 75  tor] from the bu
122a0 69 6c 64 20 61 6e 64 20 73 75 62 73 74 69 74 75  ild and substitu
122b0 74 65 73 20 61 20 73 74 75 62 0a 20 20 6d 65 6d  tes a stub.  mem
122c0 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 74 68  ory allocator th
122d0 61 74 20 61 6c 77 61 79 73 20 66 61 69 6c 73 2e  at always fails.
122e0 20 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6e 6f    SQLite will no
122f0 74 20 72 75 6e 20 77 69 74 68 20 74 68 69 73 0a  t run with this.
12300 20 20 73 74 75 62 20 6d 65 6d 6f 72 79 20 61 6c    stub memory al
12310 6c 6f 63 61 74 6f 72 20 73 69 6e 63 65 20 69 74  locator since it
12320 20 77 69 6c 6c 20 62 65 20 75 6e 61 62 6c 65 20   will be unable 
12330 74 6f 20 61 6c 6c 6f 63 61 74 65 20 6d 65 6d 6f  to allocate memo
12340 72 79 2e 20 20 42 75 74 0a 20 20 74 68 69 73 20  ry.  But.  this 
12350 73 74 75 62 20 63 61 6e 20 62 65 20 72 65 70 6c  stub can be repl
12360 61 63 65 64 20 61 74 20 73 74 61 72 74 2d 74 69  aced at start-ti
12370 6d 65 20 75 73 69 6e 67 0a 20 20 5b 73 71 6c 69  me using.  [sqli
12380 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c  te3_config]([SQL
12390 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f  ITE_CONFIG_MALLO
123a0 43 5d 2c 2e 2e 2e 29 20 6f 72 0a 20 20 5b 73 71  C],...) or.  [sq
123b0 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53  lite3_config]([S
123c0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41  QLITE_CONFIG_HEA
123d0 50 5d 2c 2e 2e 2e 29 2e 0a 20 20 53 6f 20 74 68  P],...)..  So th
123e0 65 20 6e 65 74 20 65 66 66 65 63 74 20 6f 66 20  e net effect of 
123f0 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  this compile-tim
12400 65 20 6f 70 74 69 6f 6e 20 69 73 20 74 68 61 74  e option is that
12410 20 69 74 20 61 6c 6c 6f 77 73 20 53 51 4c 69 74   it allows SQLit
12420 65 0a 20 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c  e.  to be compil
12430 65 64 20 61 6e 64 20 6c 69 6e 6b 65 64 20 61 67  ed and linked ag
12440 61 69 6e 73 74 20 61 20 73 79 73 74 65 6d 20 6c  ainst a system l
12450 69 62 72 61 72 79 20 74 68 61 74 20 64 6f 65 73  ibrary that does
12460 20 6e 6f 74 20 73 75 70 70 6f 72 74 0a 20 20 6d   not support.  m
12470 61 6c 6c 6f 63 28 29 2c 20 66 72 65 65 28 29 2c  alloc(), free(),
12480 20 61 6e 64 2f 6f 72 20 72 65 61 6c 6c 6f 63 28   and/or realloc(
12490 29 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20  )..}..</tcl>.<a 
124a0 6e 61 6d 65 3d 22 64 65 62 75 67 6f 70 74 69 6f  name="debugoptio
124b0 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 41 6e  ns"></a>.<h1> An
124c0 61 6c 79 73 69 73 20 61 6e 64 20 44 65 62 75 67  alysis and Debug
124d0 67 69 6e 67 20 4f 70 74 69 6f 6e 73 3c 2f 68 31  ging Options</h1
124e0 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45  >.<tcl>..COMPILE
124f0 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
12500 44 45 42 55 47 7d 20 7b 0a 20 20 54 68 65 20 53  DEBUG} {.  The S
12510 51 4c 69 74 65 20 73 6f 75 72 63 65 20 63 6f 64  QLite source cod
12520 65 20 63 6f 6e 74 61 69 6e 73 20 6c 69 74 65 72  e contains liter
12530 61 6c 6c 79 20 74 68 6f 75 73 61 6e 64 73 20 6f  ally thousands o
12540 66 20 61 73 73 65 72 74 28 29 20 73 74 61 74 65  f assert() state
12550 6d 65 6e 74 73 0a 20 20 75 73 65 64 20 74 6f 20  ments.  used to 
12560 76 65 72 69 66 79 20 69 6e 74 65 72 6e 61 6c 20  verify internal 
12570 61 73 73 75 6d 70 74 69 6f 6e 73 20 61 6e 64 20  assumptions and 
12580 73 75 62 72 6f 75 74 69 6e 65 20 70 72 65 63 6f  subroutine preco
12590 6e 64 69 74 69 6f 6e 73 20 61 6e 64 0a 20 20 70  nditions and.  p
125a0 6f 73 74 63 6f 6e 64 69 74 69 6f 6e 73 2e 20 20  ostconditions.  
125b0 54 68 65 73 65 20 61 73 73 65 72 74 28 29 20 73  These assert() s
125c0 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 6e 6f  tatements are no
125d0 72 6d 61 6c 6c 79 20 74 75 72 6e 65 64 20 6f 66  rmally turned of
125e0 66 0a 20 20 28 74 68 65 79 20 67 65 6e 65 72 61  f.  (they genera
125f0 74 65 20 6e 6f 20 63 6f 64 65 29 20 73 69 6e 63  te no code) sinc
12600 65 20 74 75 72 6e 69 6e 67 20 74 68 65 6d 20 6f  e turning them o
12610 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20 72  n makes SQLite r
12620 75 6e 20 61 70 70 72 6f 78 69 6d 61 74 65 6c 79  un approximately
12630 0a 20 20 74 68 72 65 65 20 74 69 6d 65 73 20 73  .  three times s
12640 6c 6f 77 65 72 2e 20 20 42 75 74 20 66 6f 72 20  lower.  But for 
12650 74 65 73 74 69 6e 67 20 61 6e 64 20 61 6e 61 6c  testing and anal
12660 79 73 69 73 2c 20 69 74 20 69 73 20 75 73 65 66  ysis, it is usef
12670 75 6c 20 74 6f 20 74 75 72 6e 0a 20 20 74 68 65  ul to turn.  the
12680 20 61 73 73 65 72 74 28 29 20 73 74 61 74 65 6d   assert() statem
12690 65 6e 74 73 20 6f 6e 2e 20 20 54 68 65 20 53 51  ents on.  The SQ
126a0 4c 49 54 45 5f 44 45 42 55 47 20 63 6f 6d 70 69  LITE_DEBUG compi
126b0 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 64  le-time option d
126c0 6f 65 73 20 74 68 69 73 2e 0a 20 20 3c 70 3e 53  oes this..  <p>S
126d0 51 4c 49 54 45 5f 44 45 42 55 47 20 61 6c 73 6f  QLITE_DEBUG also
126e0 20 65 6e 61 62 6c 65 73 20 73 6f 6d 65 20 6f 74   enables some ot
126f0 68 65 72 20 64 65 62 75 67 67 69 6e 67 20 66 65  her debugging fe
12700 61 74 75 72 65 73 2c 20 73 75 63 68 20 61 73 0a  atures, such as.
12710 20 20 73 70 65 63 69 61 6c 20 5b 50 52 41 47 4d    special [PRAGM
12720 41 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68  A] statements th
12730 61 74 20 74 75 72 6e 20 6f 6e 20 74 72 61 63 69  at turn on traci
12740 6e 67 20 61 6e 64 20 6c 69 73 74 69 6e 67 20 66  ng and listing f
12750 65 61 74 75 72 65 73 0a 20 20 75 73 65 64 20 66  eatures.  used f
12760 6f 72 20 74 72 6f 75 62 6c 65 73 68 6f 6f 74 69  or troubleshooti
12770 6e 67 20 61 6e 64 20 61 6e 61 6c 79 73 69 73 20  ng and analysis 
12780 6f 66 20 74 68 65 20 5b 56 44 42 45 5d 20 61 6e  of the [VDBE] an
12790 64 20 63 6f 64 65 20 67 65 6e 65 72 61 74 6f 72  d code generator
127a0 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
127b0 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 45 4d 44  ION {SQLITE_MEMD
127c0 45 42 55 47 7d 20 7b 0a 20 20 54 68 65 20 53 51  EBUG} {.  The SQ
127d0 4c 49 54 45 5f 4d 45 4d 44 45 42 55 47 20 6f 70  LITE_MEMDEBUG op
127e0 74 69 6f 6e 20 63 61 75 73 65 73 20 61 6e 20 69  tion causes an i
127f0 6e 73 74 72 75 6d 65 6e 74 65 64 20 0a 20 20 5b  nstrumented .  [
12800 64 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79  debugging memory
12810 20 61 6c 6c 6f 63 61 74 6f 72 5d 0a 20 20 74 6f   allocator].  to
12820 20 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20   be used as the 
12830 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61  default memory a
12840 6c 6c 6f 63 61 74 6f 72 20 77 69 74 68 69 6e 20  llocator within 
12850 53 51 4c 69 74 65 2e 20 20 54 68 65 0a 20 20 69  SQLite.  The.  i
12860 6e 73 74 72 75 6d 65 6e 74 65 64 20 6d 65 6d 6f  nstrumented memo
12870 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 63 68 65  ry allocator che
12880 63 6b 73 20 66 6f 72 20 6d 69 73 75 73 65 20 6f  cks for misuse o
12890 66 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c  f dynamically al
128a0 6c 6f 63 61 74 65 64 0a 20 20 6d 65 6d 6f 72 79  located.  memory
128b0 2e 20 20 45 78 61 6d 70 6c 65 73 20 6f 66 20 6d  .  Examples of m
128c0 69 73 75 73 65 20 69 6e 63 6c 75 64 65 20 75 73  isuse include us
128d0 69 6e 67 20 6d 65 6d 6f 72 79 20 61 66 74 65 72  ing memory after
128e0 20 69 74 20 69 73 20 66 72 65 65 64 2c 0a 20 20   it is freed,.  
128f0 77 72 69 74 69 6e 67 20 6f 66 66 20 74 68 65 20  writing off the 
12900 65 6e 64 73 20 6f 66 20 61 20 6d 65 6d 6f 72 79  ends of a memory
12910 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 66 72 65   allocation, fre
12920 65 69 6e 67 20 6d 65 6d 6f 72 79 20 6e 6f 74 20  eing memory not 
12930 70 72 65 76 69 6f 75 73 6c 79 0a 20 20 6f 62 74  previously.  obt
12940 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 6d  ained from the m
12950 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c  emory allocator,
12960 20 6f 72 20 66 61 69 6c 69 6e 67 20 74 6f 20 69   or failing to i
12970 6e 69 74 69 61 6c 69 7a 65 20 6e 65 77 6c 79 0a  nitialize newly.
12980 20 20 61 6c 6c 6f 63 61 74 65 64 20 6d 65 6d 6f    allocated memo
12990 72 79 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61  ry..}..</tcl>.<a
129a0 20 6e 61 6d 65 3d 22 77 69 6e 33 32 6f 70 74 69   name="win32opti
129b0 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 31 3e 20 57  ons"></a>.<h1> W
129c0 69 6e 64 6f 77 73 2d 53 70 65 63 69 66 69 63 20  indows-Specific 
129d0 4f 70 74 69 6f 6e 73 3c 2f 68 31 3e 0a 3c 74 63  Options</h1>.<tc
129e0 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  l>..COMPILE_OPTI
129f0 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e 33 32  ON {SQLITE_WIN32
12a00 5f 48 45 41 50 5f 43 52 45 41 54 45 7d 20 7b 0a  _HEAP_CREATE} {.
12a10 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 66 6f    This option fo
12a20 72 63 65 73 20 74 68 65 20 57 69 6e 33 32 20 6e  rces the Win32 n
12a30 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c  ative memory all
12a40 6f 63 61 74 6f 72 2c 20 77 68 65 6e 20 65 6e 61  ocator, when ena
12a50 62 6c 65 64 2c 20 74 6f 0a 20 20 63 72 65 61 74  bled, to.  creat
12a60 65 20 61 20 70 72 69 76 61 74 65 20 68 65 61 70  e a private heap
12a70 20 74 6f 20 68 6f 6c 64 20 61 6c 6c 20 6d 65 6d   to hold all mem
12a80 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 2e  ory allocations.
12a90 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
12aa0 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e 33 32  ON {SQLITE_WIN32
12ab0 5f 4d 41 4c 4c 4f 43 5f 56 41 4c 49 44 41 54 45  _MALLOC_VALIDATE
12ac0 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
12ad0 6e 20 66 6f 72 63 65 73 20 74 68 65 20 57 69 6e  n forces the Win
12ae0 33 32 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79  32 native memory
12af0 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 77 68 65 6e   allocator, when
12b00 20 65 6e 61 62 6c 65 64 2c 20 74 6f 0a 20 20 6d   enabled, to.  m
12b10 61 6b 65 20 73 74 72 61 74 65 67 69 63 20 63 61  ake strategic ca
12b20 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 48 65 61  lls into the Hea
12b30 70 56 61 6c 69 64 61 74 65 28 29 20 66 75 6e 63  pValidate() func
12b40 74 69 6f 6e 20 69 66 20 61 73 73 65 72 74 28 29  tion if assert()
12b50 20 69 73 20 61 6c 73 6f 0a 20 20 65 6e 61 62 6c   is also.  enabl
12b60 65 64 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61  ed..}..</tcl>.<a
12b70 20 6e 61 6d 65 3d 22 6c 69 6e 6b 61 67 65 22 3e   name="linkage">
12b80 3c 2f 61 3e 0a 3c 68 31 3e 43 6f 6d 70 69 6c 65  </a>.<h1>Compile
12b90 72 20 4c 69 6e 6b 61 67 65 20 43 6f 6e 74 72 6f  r Linkage Contro
12ba0 6c 3c 2f 68 31 3e 0a 0a 3c 70 3e 54 68 65 20 66  l</h1>..<p>The f
12bb0 6f 6c 6c 6f 77 69 6e 67 20 6d 61 63 72 6f 73 20  ollowing macros 
12bc0 73 70 65 63 69 66 79 0a 69 6e 74 65 72 66 61 63  specify.interfac
12bd0 65 20 6c 69 6e 6b 61 67 65 20 66 6f 72 20 63 65  e linkage for ce
12be0 72 74 61 69 6e 20 6b 69 6e 64 73 20 6f 66 20 53  rtain kinds of S
12bf0 51 4c 69 74 65 20 62 75 69 6c 64 73 2e 20 20 54  QLite builds.  T
12c00 68 65 20 4d 61 6b 65 66 69 6c 65 73 20 77 69 6c  he Makefiles wil
12c10 6c 20 6e 6f 72 6d 61 6c 6c 79 0a 68 61 6e 64 6c  l normally.handl
12c20 65 20 73 65 74 74 69 6e 67 20 74 68 65 73 65 20  e setting these 
12c30 6d 61 63 72 6f 73 20 61 75 74 6f 6d 61 74 69 63  macros automatic
12c40 61 6c 6c 79 2e 20 20 41 70 70 6c 69 63 61 74 69  ally.  Applicati
12c50 6f 6e 20 64 65 76 65 6c 6f 70 65 72 73 20 73 68  on developers sh
12c60 6f 75 6c 64 0a 6e 6f 74 20 6e 65 65 64 20 74 6f  ould.not need to
12c70 20 77 6f 72 72 79 20 77 69 74 68 20 74 68 65 73   worry with thes
12c80 65 20 6d 61 63 72 6f 73 2e 20 20 54 68 65 20 66  e macros.  The f
12c90 6f 6c 6c 6f 77 69 6e 67 20 64 6f 63 75 6d 65 6e  ollowing documen
12ca0 74 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65  tation about the
12cb0 73 65 20 0a 6d 61 63 72 6f 73 20 69 73 20 69 6e  se .macros is in
12cc0 63 6c 75 64 65 64 20 63 6f 6d 70 6c 65 74 65 6e  cluded completen
12cd0 65 73 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  ess.</p>..<tcl>.
12ce0 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
12cf0 53 51 4c 49 54 45 5f 41 50 49 7d 20 7b 0a 20 20  SQLITE_API} {.  
12d00 54 68 69 73 20 6d 61 63 72 6f 20 69 64 65 6e 74  This macro ident
12d10 69 66 69 65 73 20 61 20 65 78 74 65 72 6e 61 6c  ifies a external
12d20 6c 79 20 76 69 73 69 62 6c 65 20 69 6e 74 65 72  ly visible inter
12d30 66 61 63 65 20 66 6f 72 20 53 51 4c 69 74 65 2e  face for SQLite.
12d40 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
12d50 20 73 6f 6d 65 74 69 6d 65 73 20 73 65 74 20 74   sometimes set t
12d60 6f 20 22 65 78 74 65 72 6e 22 2e 20 20 42 75 74  o "extern".  But
12d70 20 74 68 65 20 64 65 66 69 6e 69 74 69 6f 6e 20   the definition 
12d80 69 73 0a 20 20 63 6f 6d 70 69 6c 65 72 2d 73 70  is.  compiler-sp
12d90 65 63 69 66 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49  ecific..}..COMPI
12da0 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
12db0 45 5f 41 50 49 43 41 4c 4c 7d 20 7b 0a 20 20 54  E_APICALL} {.  T
12dc0 68 69 73 20 6d 61 63 72 6f 20 69 64 65 6e 74 69  his macro identi
12dd0 66 69 65 73 20 74 68 65 20 63 61 6c 6c 69 6e 67  fies the calling
12de0 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 75 73 65 64   convention used
12df0 20 62 79 20 70 75 62 6c 69 63 20 69 6e 74 65 72   by public inter
12e00 66 61 63 65 0a 20 20 72 6f 75 74 69 6e 65 73 20  face.  routines 
12e10 69 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 69 73  in SQLite.  This
12e20 20 6d 61 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c   macro is normal
12e30 6c 79 20 64 65 66 69 6e 65 64 20 74 6f 20 62 65  ly defined to be
12e40 20 6e 6f 74 68 69 6e 67 2c 0a 20 20 74 68 6f 75   nothing,.  thou
12e50 67 68 20 6f 6e 20 57 69 6e 64 6f 77 73 20 62 75  gh on Windows bu
12e60 69 6c 64 73 20 69 74 20 63 61 6e 20 73 6f 6d 65  ilds it can some
12e70 74 69 6d 65 73 20 62 65 20 73 65 74 20 74 6f 20  times be set to 
12e80 22 5f 5f 63 64 65 63 6c 22 20 6f 72 20 22 5f 5f  "__cdecl" or "__
12e90 73 74 64 63 61 6c 6c 22 2e 0a 20 20 54 68 65 20  stdcall"..  The 
12ea0 22 5f 5f 63 64 65 63 6c 22 20 73 65 74 74 69 6e  "__cdecl" settin
12eb0 67 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74  g is the default
12ec0 2c 20 62 75 74 20 22 5f 5f 73 74 64 63 61 6c 6c  , but "__stdcall
12ed0 22 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 53  " is used when S
12ee0 51 4c 69 74 65 0a 20 20 69 73 20 69 6e 74 65 6e  QLite.  is inten
12ef0 64 65 64 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c  ded to be compil
12f00 65 64 20 61 73 20 61 20 57 69 6e 64 6f 77 73 20  ed as a Windows 
12f10 73 79 73 74 65 6d 20 6c 69 62 72 61 72 79 2e 0a  system library..
12f20 20 20 3c 70 3e 0a 20 20 41 20 73 69 6e 67 6c 65    <p>.  A single
12f30 20 66 75 6e 63 74 69 6f 6e 20 64 65 63 6c 61 72   function declar
12f40 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 63 6f 6e  ation should con
12f50 74 61 69 6e 20 6e 6f 20 6d 6f 72 65 20 74 68 61  tain no more tha
12f60 6e 20 6f 6e 65 20 6f 66 0a 20 20 74 68 65 20 66  n one of.  the f
12f70 6f 6c 6c 6f 77 69 6e 67 3a 20 20 5b 53 51 4c 49  ollowing:  [SQLI
12f80 54 45 5f 41 50 49 43 41 4c 4c 5d 2c 20 5b 53 51  TE_APICALL], [SQ
12f90 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b 5d 2c 20  LITE_CALLBACK], 
12fa0 5b 53 51 4c 49 54 45 5f 43 44 45 43 4c 5d 2c 0a  [SQLITE_CDECL],.
12fb0 20 20 6f 72 20 5b 53 51 4c 49 54 45 5f 53 59 53    or [SQLITE_SYS
12fc0 43 41 4c 4c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  CALL]..}..COMPIL
12fd0 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
12fe0 5f 43 41 4c 4c 42 41 43 4b 7d 20 7b 0a 20 20 54  _CALLBACK} {.  T
12ff0 68 69 73 20 6d 61 63 72 6f 20 73 70 65 63 69 66  his macro specif
13000 69 65 73 20 74 68 65 20 63 61 6c 6c 69 6e 67 20  ies the calling 
13010 63 6f 6e 76 65 6e 74 69 6f 6e 20 75 73 65 64 20  convention used 
13020 62 79 20 63 61 6c 6c 62 61 63 6b 20 70 6f 69 6e  by callback poin
13030 74 65 72 73 0a 20 20 69 6e 20 53 51 4c 69 74 65  ters.  in SQLite
13040 2e 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
13050 20 6e 6f 72 6d 61 6c 6c 79 20 64 65 66 69 6e 65   normally define
13060 64 20 74 6f 20 62 65 20 6e 6f 74 68 69 6e 67 2c  d to be nothing,
13070 20 74 68 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f   though on Windo
13080 77 73 0a 20 20 62 75 69 6c 64 73 20 69 74 20 63  ws.  builds it c
13090 61 6e 20 73 6f 6d 65 74 69 6d 65 73 20 62 65 20  an sometimes be 
130a0 73 65 74 20 74 6f 20 22 5f 5f 63 64 65 63 6c 22  set to "__cdecl"
130b0 20 6f 72 20 22 5f 5f 73 74 64 63 61 6c 6c 22 2e   or "__stdcall".
130c0 20 20 54 68 65 0a 20 20 22 5f 5f 63 64 65 63 6c    The.  "__cdecl
130d0 22 20 73 65 74 74 69 6e 67 20 69 73 20 74 68 65  " setting is the
130e0 20 64 65 66 61 75 6c 74 2c 20 62 75 74 20 22 5f   default, but "_
130f0 5f 73 74 64 63 61 6c 6c 22 20 69 73 20 75 73 65  _stdcall" is use
13100 64 20 77 68 65 6e 20 53 51 4c 69 74 65 0a 20 20  d when SQLite.  
13110 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62  is intended to b
13120 65 20 63 6f 6d 70 69 6c 65 64 20 61 73 20 61 20  e compiled as a 
13130 57 69 6e 64 6f 77 73 20 73 79 73 74 65 6d 20 6c  Windows system l
13140 69 62 72 61 72 79 2e 0a 20 20 3c 70 3e 0a 20 20  ibrary..  <p>.  
13150 41 20 73 69 6e 67 6c 65 20 66 75 6e 63 74 69 6f  A single functio
13160 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 73 68  n declaration sh
13170 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 6e 6f 20  ould contain no 
13180 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 6f 66  more than one of
13190 0a 20 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  .  the following
131a0 3a 20 20 5b 53 51 4c 49 54 45 5f 41 50 49 43 41  :  [SQLITE_APICA
131b0 4c 4c 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 41 4c  LL], [SQLITE_CAL
131c0 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49 54 45 5f  LBACK], [SQLITE_
131d0 43 44 45 43 4c 5d 2c 0a 20 20 6f 72 20 5b 53 51  CDECL],.  or [SQ
131e0 4c 49 54 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a 7d  LITE_SYSCALL]..}
131f0 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
13200 20 7b 53 51 4c 49 54 45 5f 43 44 45 43 4c 7d 20   {SQLITE_CDECL} 
13210 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73  {.  This macro s
13220 70 65 63 69 66 69 65 73 20 74 68 65 20 63 61 6c  pecifies the cal
13230 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20  ling convention 
13240 75 73 65 64 20 62 79 20 76 61 72 61 72 67 73 20  used by varargs 
13250 69 6e 74 65 72 66 61 63 65 0a 20 20 72 6f 75 74  interface.  rout
13260 69 6e 65 73 20 69 6e 20 53 51 4c 69 74 65 2e 20  ines in SQLite. 
13270 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20 6e   This macro is n
13280 6f 72 6d 61 6c 6c 79 20 64 65 66 69 6e 65 64 20  ormally defined 
13290 74 6f 20 62 65 20 6e 6f 74 68 69 6e 67 2c 0a 20  to be nothing,. 
132a0 20 74 68 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f   though on Windo
132b0 77 73 20 62 75 69 6c 64 73 20 69 74 20 63 61 6e  ws builds it can
132c0 20 73 6f 6d 65 74 69 6d 65 73 20 62 65 20 73 65   sometimes be se
132d0 74 20 74 6f 20 22 5f 5f 63 64 65 63 6c 22 2e 20  t to "__cdecl". 
132e0 20 54 68 69 73 0a 20 20 6d 61 63 72 6f 20 69 73   This.  macro is
132f0 20 75 73 65 64 20 6f 6e 20 76 61 72 61 72 67 73   used on varargs
13300 20 72 6f 75 74 69 6e 65 73 20 61 6e 64 20 73 6f   routines and so
13310 20 63 61 6e 6e 6f 74 20 62 65 20 73 65 74 20 74   cannot be set t
13320 6f 20 22 5f 5f 73 74 64 63 61 6c 6c 22 0a 20 20  o "__stdcall".  
13330 73 69 6e 63 65 20 74 68 65 20 5f 5f 73 74 64 63  since the __stdc
13340 61 6c 6c 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76  all calling conv
13350 65 6e 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 20  ention does not 
13360 73 75 70 70 6f 72 74 20 76 61 72 61 72 67 73 20  support varargs 
13370 66 75 6e 63 74 69 6f 6e 73 2e 0a 20 20 3c 70 3e  functions..  <p>
13380 0a 20 20 41 20 73 69 6e 67 6c 65 20 66 75 6e 63  .  A single func
13390 74 69 6f 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e  tion declaration
133a0 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20   should contain 
133b0 6e 6f 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65  no more than one
133c0 20 6f 66 0a 20 20 74 68 65 20 66 6f 6c 6c 6f 77   of.  the follow
133d0 69 6e 67 3a 20 20 5b 53 51 4c 49 54 45 5f 41 50  ing:  [SQLITE_AP
133e0 49 43 41 4c 4c 5d 2c 20 5b 53 51 4c 49 54 45 5f  ICALL], [SQLITE_
133f0 43 41 4c 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49  CALLBACK], [SQLI
13400 54 45 5f 43 44 45 43 4c 5d 2c 0a 20 20 6f 72 20  TE_CDECL],.  or 
13410 5b 53 51 4c 49 54 45 5f 53 59 53 43 41 4c 4c 5d  [SQLITE_SYSCALL]
13420 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
13430 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 59 53 43  ION {SQLITE_SYSC
13440 41 4c 4c 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  ALL} {.  This ma
13450 63 72 6f 20 69 64 65 6e 74 69 66 69 65 73 20 74  cro identifies t
13460 68 65 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65  he calling conve
13470 6e 74 69 6f 6e 20 75 73 65 64 20 62 79 20 6f 70  ntion used by op
13480 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 0a 20  erating system. 
13490 20 69 6e 74 65 72 66 61 63 65 73 20 66 6f 72 20   interfaces for 
134a0 74 61 72 67 65 74 20 74 68 65 20 70 6c 61 74 66  target the platf
134b0 6f 72 6d 20 66 6f 72 20 61 6e 20 53 51 4c 69 74  orm for an SQLit
134c0 65 20 62 75 69 6c 64 2e 0a 20 20 54 68 69 73 20  e build..  This 
134d0 6d 61 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c  macro is normall
134e0 79 20 64 65 66 69 6e 65 64 20 74 6f 20 62 65 20  y defined to be 
134f0 6e 6f 74 68 69 6e 67 2c 20 74 68 6f 75 67 68 20  nothing, though 
13500 6f 6e 20 57 69 6e 64 6f 77 73 0a 20 20 62 75 69  on Windows.  bui
13510 6c 64 73 20 69 74 20 63 61 6e 20 73 6f 6d 65 74  lds it can somet
13520 69 6d 65 73 20 62 65 20 73 65 74 20 74 6f 20 22  imes be set to "
13530 5f 5f 73 74 64 63 61 6c 6c 22 2e 0a 20 20 3c 70  __stdcall"..  <p
13540 3e 0a 20 20 41 20 73 69 6e 67 6c 65 20 66 75 6e  >.  A single fun
13550 63 74 69 6f 6e 20 64 65 63 6c 61 72 61 74 69 6f  ction declaratio
13560 6e 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e  n should contain
13570 20 6e 6f 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e   no more than on
13580 65 20 6f 66 0a 20 20 74 68 65 20 66 6f 6c 6c 6f  e of.  the follo
13590 77 69 6e 67 3a 20 20 5b 53 51 4c 49 54 45 5f 41  wing:  [SQLITE_A
135a0 50 49 43 41 4c 4c 5d 2c 20 5b 53 51 4c 49 54 45  PICALL], [SQLITE
135b0 5f 43 41 4c 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c  _CALLBACK], [SQL
135c0 49 54 45 5f 43 44 45 43 4c 5d 2c 0a 20 20 6f 72  ITE_CDECL],.  or
135d0 20 5b 53 51 4c 49 54 45 5f 53 59 53 43 41 4c 4c   [SQLITE_SYSCALL
135e0 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
135f0 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 43 4c  TION {SQLITE_TCL
13600 41 50 49 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  API} {.  This ma
13610 63 72 6f 20 73 70 65 63 69 66 69 65 73 20 74 68  cro specifies th
13620 65 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e  e calling conven
13630 74 69 6f 6e 20 75 73 65 64 20 62 79 20 74 68 65  tion used by the
13640 20 0a 20 20 5b 68 74 74 70 3a 2f 2f 77 77 77 2e   .  [http://www.
13650 74 63 6c 2e 74 6b 20 7c 20 54 43 4c 5d 20 6c 69  tcl.tk | TCL] li
13660 62 72 61 72 79 20 69 6e 74 65 72 66 61 63 65 20  brary interface 
13670 72 6f 75 74 69 6e 65 73 2e 0a 20 20 54 68 69 73  routines..  This
13680 20 6d 61 63 72 6f 20 69 73 20 6e 6f 74 20 75 73   macro is not us
13690 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74 65  ed by the SQLite
136a0 20 63 6f 72 65 2c 20 62 75 74 20 6f 6e 6c 79 20   core, but only 
136b0 62 79 20 74 68 65 20 5b 54 43 4c 20 49 6e 74 65  by the [TCL Inte
136c0 72 66 61 63 65 5d 0a 20 20 61 6e 64 20 5b 54 43  rface].  and [TC
136d0 4c 20 74 65 73 74 20 73 75 69 74 65 5d 2e 0a 20  L test suite].. 
136e0 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20 6e   This macro is n
136f0 6f 72 6d 61 6c 6c 79 20 64 65 66 69 6e 65 64 20  ormally defined 
13700 74 6f 20 62 65 20 6e 6f 74 68 69 6e 67 2c 0a 20  to be nothing,. 
13710 20 74 68 6f 75 67 68 20 6f 6e 20 57 69 6e 64 6f   though on Windo
13720 77 73 20 62 75 69 6c 64 73 20 69 74 20 63 61 6e  ws builds it can
13730 20 73 6f 6d 65 74 69 6d 65 73 20 62 65 20 73 65   sometimes be se
13740 74 20 74 6f 20 22 5f 5f 63 64 65 63 6c 22 2e 20  t to "__cdecl". 
13750 20 54 68 69 73 0a 20 20 6d 61 63 72 6f 20 69 73   This.  macro is
13760 20 75 73 65 64 20 6f 6e 20 54 43 4c 20 6c 69 62   used on TCL lib
13770 72 61 72 79 20 69 6e 74 65 72 66 61 63 65 20 72  rary interface r
13780 6f 75 74 69 6e 65 73 20 77 68 69 63 68 20 61 72  outines which ar
13790 65 20 61 6c 77 61 79 73 20 63 6f 6d 70 69 6c 65  e always compile
137a0 64 0a 20 20 61 73 20 5f 5f 63 64 65 63 6c 2c 20  d.  as __cdecl, 
137b0 65 76 65 6e 20 6f 6e 20 70 6c 61 74 66 6f 72 6d  even on platform
137c0 73 20 74 68 61 74 20 70 72 65 66 65 72 20 74 6f  s that prefer to
137d0 20 75 73 65 20 5f 5f 73 74 64 63 61 6c 6c 2c 20   use __stdcall, 
137e0 73 6f 20 74 68 69 73 0a 20 20 6d 61 63 72 6f 20  so this.  macro 
137f0 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 73 65  should not be se
13800 74 20 74 6f 20 5f 5f 73 74 64 63 61 6c 6c 20 75  t to __stdcall u
13810 6e 6c 65 73 73 20 74 68 65 20 70 6c 61 74 66 6f  nless the platfo
13820 72 6d 20 61 73 20 61 20 63 75 73 74 6f 6d 0a 20  rm as a custom. 
13830 20 54 43 4c 20 6c 69 62 72 61 72 79 20 62 75 69   TCL library bui
13840 6c 64 20 74 68 61 74 20 73 75 70 70 6f 72 74 73  ld that supports
13850 20 5f 5f 73 74 64 63 61 6c 6c 2e 0a 20 20 3c 70   __stdcall..  <p
13860 3e 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 6d  >.  This macro m
13870 61 79 20 6e 6f 74 20 62 65 20 75 73 65 64 20 69  ay not be used i
13880 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 77 69  n combination wi
13890 74 68 20 61 6e 79 20 6f 66 20 5b 53 51 4c 49 54  th any of [SQLIT
138a0 45 5f 41 50 49 43 41 4c 4c 5d 2c 0a 20 20 5b 53  E_APICALL],.  [S
138b0 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b 5d 2c  QLITE_CALLBACK],
138c0 20 5b 53 51 4c 49 54 45 5f 43 44 45 43 4c 5d 2c   [SQLITE_CDECL],
138d0 20 6f 72 20 5b 53 51 4c 49 54 45 5f 53 59 53 43   or [SQLITE_SYSC
138e0 41 4c 4c 5d 2e 0a 7d 0a 0a 0a 3c 2f 74 63 6c 3e  ALL]..}...</tcl>
138f0 0a                                               .