Documentation Source Text

Hex Artifact Content
Login

Artifact 6ebdae229a306feafa99ab3079bc2aea918e48c7:


0000: 3c 74 69 74 6c 65 3e 43 6f 6d 70 69 6c 61 74 69  <title>Compilati
0010: 6f 6e 20 4f 70 74 69 6f 6e 73 20 46 6f 72 20 53  on Options For S
0020: 51 4c 69 74 65 3c 2f 74 69 74 6c 65 3e 0a 3c 74  QLite</title>.<t
0030: 63 6c 3e 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b  cl>hd_keywords {
0040: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
0050: 69 6f 6e 73 7d 3c 2f 74 63 6c 3e 0a 0a 3c 68 31  ions}</tcl>..<h1
0060: 3e 31 2e 30 20 43 6f 6d 70 69 6c 61 74 69 6f 6e  >1.0 Compilation
0070: 20 4f 70 74 69 6f 6e 73 20 46 6f 72 20 53 51 4c   Options For SQL
0080: 69 74 65 3c 2f 68 31 3e 0a 0a 3c 70 3e 0a 46 6f  ite</h1>..<p>.Fo
0090: 72 20 6d 6f 73 74 20 70 75 72 70 6f 73 65 73 2c  r most purposes,
00a0: 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65 20 62   SQLite can be b
00b0: 75 69 6c 74 20 6a 75 73 74 20 66 69 6e 65 20 75  uilt just fine u
00c0: 73 69 6e 67 20 74 68 65 20 64 65 66 61 75 6c 74  sing the default
00d0: 0a 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 70 74  .compilation opt
00e0: 69 6f 6e 73 2e 20 48 6f 77 65 76 65 72 2c 20 69  ions. However, i
00f0: 66 20 72 65 71 75 69 72 65 64 2c 20 74 68 65 20  f required, the 
0100: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
0110: 69 6f 6e 73 0a 64 6f 63 75 6d 65 6e 74 65 64 20  ions.documented 
0120: 62 65 6c 6f 77 20 63 61 6e 20 62 65 20 75 73 65  below can be use
0130: 64 20 74 6f 20 0a 3c 61 20 68 72 65 66 3d 22 23  d to .<a href="#
0140: 6f 6d 69 74 66 65 61 74 75 72 65 73 22 3e 6f 6d  omitfeatures">om
0150: 69 74 20 53 51 4c 69 74 65 20 66 65 61 74 75 72  it SQLite featur
0160: 65 73 3c 2f 61 3e 20 28 72 65 73 75 6c 74 69 6e  es</a> (resultin
0170: 67 20 69 6e 0a 61 20 5b 72 65 6c 66 6f 6f 74 70  g in.a [relfootp
0180: 72 69 6e 74 20 7c 20 73 6d 61 6c 6c 65 72 20 63  rint | smaller c
0190: 6f 6d 70 69 6c 65 64 20 6c 69 62 72 61 72 79 20  ompiled library 
01a0: 73 69 7a 65 5d 29 20 6f 72 20 74 6f 20 63 68 61  size]) or to cha
01b0: 6e 67 65 20 74 68 65 0a 3c 61 20 68 72 65 66 3d  nge the.<a href=
01c0: 22 23 64 65 66 61 75 6c 74 73 22 3e 64 65 66 61  "#defaults">defa
01d0: 75 6c 74 20 76 61 6c 75 65 73 3c 2f 61 3e 20 6f  ult values</a> o
01e0: 66 20 73 6f 6d 65 20 70 61 72 61 6d 65 74 65 72  f some parameter
01f0: 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 45 76 65  s..</p>..<p>.Eve
0200: 72 79 20 65 66 66 6f 72 74 20 68 61 73 20 62 65  ry effort has be
0210: 65 6e 20 6d 61 64 65 20 74 6f 20 65 6e 73 75 72  en made to ensur
0220: 65 20 74 68 61 74 20 74 68 65 20 76 61 72 69 6f  e that the vario
0230: 75 73 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 0a  us combinations.
0240: 6f 66 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f  of compilation o
0250: 70 74 69 6f 6e 73 20 77 6f 72 6b 20 68 61 72 6d  ptions work harm
0260: 6f 6e 69 6f 75 73 6c 79 20 61 6e 64 20 70 72 6f  oniously and pro
0270: 64 75 63 65 20 61 20 77 6f 72 6b 69 6e 67 20 6c  duce a working l
0280: 69 62 72 61 72 79 2e 0a 4e 65 76 65 72 74 68 65  ibrary..Neverthe
0290: 6c 65 73 73 2c 20 69 74 20 69 73 20 73 74 72 6f  less, it is stro
02a0: 6e 67 6c 79 20 72 65 63 6f 6d 6d 65 6e 64 65 64  ngly recommended
02b0: 20 74 68 61 74 20 74 68 65 20 53 51 4c 69 74 65   that the SQLite
02c0: 20 74 65 73 74 2d 73 75 69 74 65 0a 62 65 20 65   test-suite.be e
02d0: 78 65 63 75 74 65 64 20 74 6f 20 63 68 65 63 6b  xecuted to check
02e0: 20 66 6f 72 20 65 72 72 6f 72 73 20 62 65 66 6f   for errors befo
02f0: 72 65 20 75 73 69 6e 67 20 61 6e 20 53 51 4c 69  re using an SQLi
0300: 74 65 20 6c 69 62 72 61 72 79 20 62 75 69 6c 74  te library built
0310: 0a 77 69 74 68 20 6e 6f 6e 2d 73 74 61 6e 64 61  .with non-standa
0320: 72 64 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f  rd compilation o
0330: 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 0a 3c 74  ptions..</p>..<t
0340: 63 6c 3e 0a 70 72 6f 63 20 43 4f 4d 50 49 4c 45  cl>.proc COMPILE
0350: 5f 4f 50 54 49 4f 4e 20 7b 6e 61 6d 65 20 74 65  _OPTION {name te
0360: 78 74 7d 20 7b 0a 20 20 69 66 20 7b 5b 72 65 67  xt} {.  if {[reg
0370: 65 78 70 20 7b 28 53 51 4c 49 54 45 7c 48 41 56  exp {(SQLITE|HAV
0380: 45 29 5f 28 5b 41 2d 5a 30 2d 39 5f 5d 2b 29 7d  E)_([A-Z0-9_]+)}
0390: 20 24 6e 61 6d 65 20 61 6c 6c 20 70 72 65 66 69   $name all prefi
03a0: 78 20 6c 61 62 65 6c 5d 7d 20 7b 0a 20 20 20 20  x label]} {.    
03b0: 68 64 5f 66 72 61 67 6d 65 6e 74 20 5b 73 74 72  hd_fragment [str
03c0: 69 6e 67 20 74 6f 6c 6f 77 65 72 20 24 6c 61 62  ing tolower $lab
03d0: 65 6c 5d 0a 20 20 20 20 68 64 5f 6b 65 79 77 6f  el].    hd_keywo
03e0: 72 64 73 20 24 61 6c 6c 20 2d 44 24 61 6c 6c 0a  rds $all -D$all.
03f0: 20 20 7d 0a 20 20 69 66 20 7b 5b 72 65 67 65 78    }.  if {[regex
0400: 70 20 7b 5e 59 59 28 5b 41 2d 5a 30 2d 39 5f 5d  p {^YY([A-Z0-9_]
0410: 2b 29 7d 20 24 6e 61 6d 65 20 61 6c 6c 20 6c 61  +)} $name all la
0420: 62 65 6c 5d 7d 20 7b 0a 20 20 20 20 68 64 5f 66  bel]} {.    hd_f
0430: 72 61 67 6d 65 6e 74 20 5b 73 74 72 69 6e 67 20  ragment [string 
0440: 74 6f 6c 6f 77 65 72 20 24 61 6c 6c 5d 0a 20 20  tolower $all].  
0450: 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 24 61    hd_keywords $a
0460: 6c 6c 0a 20 20 7d 0a 20 20 68 64 5f 70 75 74 73  ll.  }.  hd_puts
0470: 20 3c 70 3e 3c 62 3e 24 6e 61 6d 65 3c 2f 62 3e   <p><b>$name</b>
0480: 3c 2f 70 3e 0a 20 20 72 65 67 73 75 62 20 2d 61  </p>.  regsub -a
0490: 6c 6c 20 22 5c 6e 5c 5c 73 2a 5c 6e 22 20 24 74  ll "\n\\s*\n" $t
04a0: 65 78 74 20 22 3c 2f 70 3e 5c 6e 5c 6e 3c 70 3e  ext "</p>\n\n<p>
04b0: 22 20 74 65 78 74 0a 20 20 68 64 5f 72 65 73 6f  " text.  hd_reso
04c0: 6c 76 65 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  lve <blockquote>
04d0: 3c 70 3e 24 74 65 78 74 3c 2f 70 3e 3c 2f 62 6c  <p>$text</p></bl
04e0: 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 3c 2f 74 63  ockquote>.}.</tc
04f0: 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 6f 73 63  l>..<a name="osc
0500: 6f 6e 66 69 67 22 3e 3c 2f 61 3e 0a 3c 68 32 3e  onfig"></a>.<h2>
0510: 31 2e 31 20 50 6c 61 74 66 6f 72 6d 20 43 6f 6e  1.1 Platform Con
0520: 66 69 67 75 72 61 74 69 6f 6e 3c 2f 68 32 3e 0a  figuration</h2>.
0530: 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f  .<tcl>.COMPILE_O
0540: 50 54 49 4f 4e 20 7b 5f 48 41 56 45 5f 53 51 4c  PTION {_HAVE_SQL
0550: 49 54 45 5f 43 4f 4e 46 49 47 5f 48 7d 20 7b 0a  ITE_CONFIG_H} {.
0560: 20 20 49 66 20 74 68 65 20 5f 48 41 56 45 5f 53    If the _HAVE_S
0570: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 20 6d  QLITE_CONFIG_H m
0580: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 0a  acro is defined.
0590: 20 20 74 68 65 6e 20 74 68 65 20 53 51 4c 69 74    then the SQLit
05a0: 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 77 69  e source code wi
05b0: 6c 6c 20 61 74 74 65 6d 70 74 20 74 6f 20 23 69  ll attempt to #i
05c0: 6e 63 6c 75 64 65 20 61 20 66 69 6c 65 20 6e 61  nclude a file na
05d0: 6d 65 64 20 22 63 6f 6e 66 69 67 2e 68 22 2e 0a  med "config.h"..
05e0: 20 20 54 68 65 20 22 63 6f 6e 66 69 67 2e 68 22    The "config.h"
05f0: 20 66 69 6c 65 20 75 73 75 61 6c 6c 79 20 63 6f   file usually co
0600: 6e 74 61 69 6e 73 20 6f 74 68 65 72 20 63 6f 6e  ntains other con
0610: 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
0620: 6e 73 2c 20 65 73 70 65 63 69 61 6c 6c 79 0a 20  ns, especially. 
0630: 20 22 48 41 56 45 5f 3c 69 3e 49 4e 54 45 52 46   "HAVE_<i>INTERF
0640: 41 43 45 3c 2f 69 3e 22 20 74 79 70 65 20 6f 70  ACE</i>" type op
0650: 74 69 6f 6e 73 20 67 65 6e 65 72 61 74 65 64 20  tions generated 
0660: 62 79 20 61 75 74 6f 63 6f 6e 66 20 73 63 72 69  by autoconf scri
0670: 70 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  pts..}..COMPILE_
0680: 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f 46 44 41  OPTION {HAVE_FDA
0690: 54 41 53 59 4e 43 7d 20 7b 0a 20 20 49 66 20 74  TASYNC} {.  If t
06a0: 68 65 20 48 41 56 45 5f 46 44 41 54 41 53 59 4e  he HAVE_FDATASYN
06b0: 43 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  C compile-time o
06c0: 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20 74  ption is true, t
06d0: 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20  hen the default 
06e0: 5b 56 46 53 5d 0a 20 20 66 6f 72 20 75 6e 69 78  [VFS].  for unix
06f0: 20 73 79 73 74 65 6d 73 20 77 69 6c 6c 20 61 74   systems will at
0700: 74 65 6d 70 74 20 74 6f 20 75 73 65 20 66 64 61  tempt to use fda
0710: 74 61 73 79 6e 63 28 29 20 69 6e 73 74 65 61 64  tasync() instead
0720: 20 6f 66 20 66 73 79 6e 63 28 29 20 77 68 65 72   of fsync() wher
0730: 65 0a 20 20 61 70 70 72 6f 70 72 69 61 74 65 2e  e.  appropriate.
0740: 20 20 49 66 20 74 68 69 73 20 66 6c 61 67 20 69    If this flag i
0750: 73 20 6d 69 73 73 69 6e 67 20 6f 72 20 66 61 6c  s missing or fal
0760: 73 65 2c 20 74 68 65 6e 20 66 73 79 6e 63 28 29  se, then fsync()
0770: 20 69 73 20 61 6c 77 61 79 73 20 75 73 65 64 2e   is always used.
0780: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
0790: 4f 4e 20 7b 48 41 56 45 5f 47 4d 54 49 4d 45 5f  ON {HAVE_GMTIME_
07a0: 52 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48 41  R} {.  If the HA
07b0: 56 45 5f 47 4d 54 49 4d 45 5f 52 20 6f 70 74 69  VE_GMTIME_R opti
07c0: 6f 6e 20 69 73 20 74 72 75 65 20 61 6e 64 20 69  on is true and i
07d0: 66 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44  f [SQLITE_OMIT_D
07e0: 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 5d 20 69  ATETIME_FUNCS] i
07f0: 73 20 74 72 75 65 2c 0a 20 20 74 68 65 6e 20 74  s true,.  then t
0800: 68 65 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c  he CURRENT_TIME,
0810: 20 43 55 52 52 45 4e 54 5f 44 41 54 45 2c 20 61   CURRENT_DATE, a
0820: 6e 64 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53  nd CURRENT_TIMES
0830: 54 41 4d 50 20 6b 65 79 77 6f 72 64 73 20 77 69  TAMP keywords wi
0840: 6c 6c 20 75 73 65 0a 20 20 74 68 65 20 74 68 72  ll use.  the thr
0850: 65 61 64 73 61 66 65 20 22 67 6d 74 69 6d 65 5f  eadsafe "gmtime_
0860: 72 28 29 22 20 69 6e 74 65 72 66 61 63 65 20 72  r()" interface r
0870: 61 74 68 65 72 20 74 68 61 6e 20 22 67 6d 74 69  ather than "gmti
0880: 6d 65 28 29 22 2e 20 20 49 6e 20 74 68 65 20 75  me()".  In the u
0890: 73 75 61 6c 20 63 61 73 65 0a 20 20 77 68 65 72  sual case.  wher
08a0: 65 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44  e [SQLITE_OMIT_D
08b0: 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 5d 20 69  ATETIME_FUNCS] i
08c0: 73 20 6e 6f 74 20 64 65 66 69 6e 65 64 20 6f 72  s not defined or
08d0: 20 69 73 20 66 61 6c 73 65 2c 20 74 68 65 6e 20   is false, then 
08e0: 74 68 65 0a 20 20 62 75 69 6c 74 2d 69 6e 20 5b  the.  built-in [
08f0: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75  date and time fu
0900: 6e 63 74 69 6f 6e 73 5d 20 61 72 65 20 75 73 65  nctions] are use
0910: 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74  d to implement t
0920: 68 65 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c  he CURRENT_TIME,
0930: 0a 20 20 43 55 52 52 45 4e 54 5f 44 41 54 45 2c  .  CURRENT_DATE,
0940: 20 61 6e 64 20 43 55 52 52 45 4e 54 5f 54 49 4d   and CURRENT_TIM
0950: 45 53 54 41 4d 50 20 6b 65 79 77 6f 72 64 73 20  ESTAMP keywords 
0960: 61 6e 64 20 6e 65 69 74 68 65 72 20 67 6d 74 69  and neither gmti
0970: 6d 65 5f 72 28 29 20 6e 6f 72 0a 20 20 67 6d 74  me_r() nor.  gmt
0980: 69 6d 65 28 29 20 69 73 20 65 76 65 72 20 63 61  ime() is ever ca
0990: 6c 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  lled..}..COMPILE
09a0: 5f 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f 49 53  _OPTION {HAVE_IS
09b0: 4e 41 4e 7d 20 7b 0a 20 20 49 66 20 74 68 65 20  NAN} {.  If the 
09c0: 48 41 56 45 5f 49 53 4e 41 4e 20 6f 70 74 69 6f  HAVE_ISNAN optio
09d0: 6e 20 69 73 20 74 72 75 65 2c 20 74 68 65 6e 20  n is true, then 
09e0: 53 51 4c 69 74 65 20 69 6e 76 6f 6b 65 73 20 74  SQLite invokes t
09f0: 68 65 20 73 79 73 74 65 6d 20 6c 69 62 72 61 72  he system librar
0a00: 79 20 69 73 6e 61 6e 28 29 0a 20 20 66 75 6e 63  y isnan().  func
0a10: 74 69 6f 6e 20 74 6f 20 64 65 74 65 72 6d 69 6e  tion to determin
0a20: 65 20 69 66 20 61 20 64 6f 75 62 6c 65 2d 70 72  e if a double-pr
0a30: 65 63 69 73 69 6f 6e 20 66 6c 6f 61 74 69 6e 67  ecision floating
0a40: 20 70 6f 69 6e 74 20 76 61 6c 75 65 20 69 73 20   point value is 
0a50: 61 20 4e 61 4e 2e 0a 20 20 49 66 20 48 41 56 45  a NaN..  If HAVE
0a60: 5f 49 53 4e 41 4e 20 69 73 20 75 6e 64 65 66 69  _ISNAN is undefi
0a70: 6e 65 64 20 6f 72 20 66 61 6c 73 65 2c 20 74 68  ned or false, th
0a80: 65 6e 20 53 51 4c 69 74 65 20 73 75 62 73 74 69  en SQLite substi
0a90: 74 75 74 65 73 20 69 74 73 20 6f 77 6e 20 68 6f  tutes its own ho
0aa0: 6d 65 2d 67 72 6f 77 6e 0a 20 20 69 6d 70 6c 65  me-grown.  imple
0ab0: 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 69 73 6e  mentation of isn
0ac0: 61 6e 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  an()..}..COMPILE
0ad0: 5f 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f 4c 4f  _OPTION {HAVE_LO
0ae0: 43 41 4c 54 49 4d 45 5f 52 7d 20 7b 0a 20 20 49  CALTIME_R} {.  I
0af0: 66 20 74 68 65 20 48 41 56 45 5f 4c 4f 43 41 4c  f the HAVE_LOCAL
0b00: 54 49 4d 45 5f 52 20 6f 70 74 69 6f 6e 20 69 73  TIME_R option is
0b10: 20 74 72 75 65 2c 20 74 68 65 6e 20 53 51 4c 69   true, then SQLi
0b20: 74 65 20 75 73 65 73 20 74 68 65 20 74 68 72 65  te uses the thre
0b30: 61 64 73 61 66 65 0a 20 20 6c 6f 63 61 6c 74 69  adsafe.  localti
0b40: 6d 65 5f 72 28 29 20 6c 69 62 72 61 72 79 20 72  me_r() library r
0b50: 6f 75 74 69 6e 65 20 69 6e 73 74 65 61 64 20 6f  outine instead o
0b60: 66 20 6c 6f 63 61 6c 74 69 6d 65 28 29 0a 20 20  f localtime().  
0b70: 74 6f 20 68 65 6c 70 20 69 6d 70 6c 65 6d 65 6e  to help implemen
0b80: 74 20 74 68 65 20 5b 6c 6f 63 61 6c 74 69 6d 65  t the [localtime
0b90: 20 6d 6f 64 69 66 69 65 72 5d 0a 20 20 74 6f 20   modifier].  to 
0ba0: 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 5b 64 61  the built-in [da
0bb0: 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63  te and time func
0bc0: 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  tions]..}..COMPI
0bd0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f  LE_OPTION {HAVE_
0be0: 4c 4f 43 41 4c 54 49 4d 45 5f 53 7d 20 7b 0a 20  LOCALTIME_S} {. 
0bf0: 20 49 66 20 74 68 65 20 48 41 56 45 5f 4c 4f 43   If the HAVE_LOC
0c00: 41 4c 54 49 4d 45 5f 53 20 6f 70 74 69 6f 6e 20  ALTIME_S option 
0c10: 69 73 20 74 72 75 65 2c 20 74 68 65 6e 20 53 51  is true, then SQ
0c20: 4c 69 74 65 20 75 73 65 73 20 74 68 65 20 74 68  Lite uses the th
0c30: 72 65 61 64 73 61 66 65 0a 20 20 6c 6f 63 61 6c  readsafe.  local
0c40: 74 69 6d 65 5f 73 28 29 20 6c 69 62 72 61 72 79  time_s() library
0c50: 20 72 6f 75 74 69 6e 65 20 69 6e 73 74 65 61 64   routine instead
0c60: 20 6f 66 20 6c 6f 63 61 6c 74 69 6d 65 28 29 0a   of localtime().
0c70: 20 20 74 6f 20 68 65 6c 70 20 69 6d 70 6c 65 6d    to help implem
0c80: 65 6e 74 20 74 68 65 20 5b 6c 6f 63 61 6c 74 69  ent the [localti
0c90: 6d 65 20 6d 6f 64 69 66 69 65 72 5d 0a 20 20 74  me modifier].  t
0ca0: 6f 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 5b  o the built-in [
0cb0: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75  date and time fu
0cc0: 6e 63 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d  nctions]..}..COM
0cd0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56  PILE_OPTION {HAV
0ce0: 45 5f 4d 41 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f  E_MALLOC_USABLE_
0cf0: 53 49 5a 45 7d 20 7b 0a 20 20 49 66 20 74 68 65  SIZE} {.  If the
0d00: 20 48 41 56 45 5f 4d 41 4c 4c 4f 43 5f 55 53 41   HAVE_MALLOC_USA
0d10: 42 4c 45 5f 53 49 5a 45 20 6f 70 74 69 6f 6e 20  BLE_SIZE option 
0d20: 69 73 20 74 72 75 65 2c 20 74 68 65 6e 20 53 51  is true, then SQ
0d30: 4c 69 74 65 20 74 72 69 65 73 20 75 73 65 73 20  Lite tries uses 
0d40: 74 68 65 0a 20 20 6d 61 6c 6c 6f 63 5f 75 73 61  the.  malloc_usa
0d50: 62 6c 65 5f 73 69 7a 65 28 29 20 69 6e 74 65 72  ble_size() inter
0d60: 66 61 63 65 20 74 6f 20 66 69 6e 64 20 74 68 65  face to find the
0d70: 20 73 69 7a 65 20 6f 66 20 61 20 6d 65 6d 6f 72   size of a memor
0d80: 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6f 62 74  y allocation obt
0d90: 61 69 6e 65 64 0a 20 20 66 72 6f 6d 20 74 68 65  ained.  from the
0da0: 20 73 74 61 6e 64 61 72 64 2d 6c 69 62 72 61 72   standard-librar
0db0: 79 20 6d 61 6c 6c 6f 63 28 29 20 6f 72 20 72 65  y malloc() or re
0dc0: 61 6c 6c 6f 63 28 29 20 72 6f 75 74 69 6e 65 73  alloc() routines
0dd0: 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
0de0: 73 20 6f 6e 6c 79 0a 20 20 61 70 70 6c 69 63 61  s only.  applica
0df0: 62 6c 65 20 69 66 20 74 68 65 20 73 74 61 6e 64  ble if the stand
0e00: 61 72 64 2d 6c 69 62 72 61 72 79 20 6d 61 6c 6c  ard-library mall
0e10: 6f 63 28 29 20 69 73 20 75 73 65 64 2e 20 20 4f  oc() is used.  O
0e20: 6e 20 41 70 70 6c 65 20 73 79 73 74 65 6d 73 2c  n Apple systems,
0e30: 0a 20 20 22 7a 6f 6e 65 20 6d 61 6c 6c 6f 63 22  .  "zone malloc"
0e40: 20 69 73 20 75 73 65 64 20 69 6e 73 74 65 61 64   is used instead
0e50: 2c 20 61 6e 64 20 73 6f 20 74 68 69 73 20 6f 70  , and so this op
0e60: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61 70 70 6c  tion is not appl
0e70: 69 63 61 62 6c 65 2e 20 20 41 6e 64 2c 20 6f 66  icable.  And, of
0e80: 0a 20 20 63 6f 75 72 73 65 2c 20 69 66 20 74 68  .  course, if th
0e90: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 75  e application su
0ea0: 70 70 6c 69 65 73 20 69 74 73 20 6f 77 6e 20 6d  pplies its own m
0eb0: 61 6c 6c 6f 63 20 69 6d 70 6c 65 6d 65 6e 74 61  alloc implementa
0ec0: 74 69 6f 6e 20 75 73 69 6e 67 0a 20 20 5b 53 51  tion using.  [SQ
0ed0: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c  LITE_CONFIG_MALL
0ee0: 4f 43 5d 20 74 68 65 6e 20 74 68 69 73 20 6f 70  OC] then this op
0ef0: 74 69 6f 6e 20 68 61 73 20 6e 6f 20 65 66 66 65  tion has no effe
0f00: 63 74 2e 0a 20 20 3c 70 3e 0a 20 20 49 66 20 74  ct..  <p>.  If t
0f10: 68 65 20 48 41 56 45 5f 4d 41 4c 4c 4f 43 5f 55  he HAVE_MALLOC_U
0f20: 53 41 42 4c 45 5f 53 49 5a 45 20 6f 70 74 69 6f  SABLE_SIZE optio
0f30: 6e 20 69 73 20 6f 6d 69 74 74 65 64 20 6f 72 20  n is omitted or 
0f40: 69 73 20 66 61 6c 73 65 2c 20 74 68 65 6e 20 53  is false, then S
0f50: 51 4c 69 74 65 20 0a 20 20 75 73 65 73 20 61 20  QLite .  uses a 
0f60: 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 73  wrapper around s
0f70: 79 73 74 65 6d 20 6d 61 6c 6c 6f 63 28 29 20 61  ystem malloc() a
0f80: 6e 64 20 72 65 61 6c 6c 6f 63 28 29 20 74 68 61  nd realloc() tha
0f90: 74 20 65 6e 6c 61 72 67 65 73 20 65 61 63 68 20  t enlarges each 
0fa0: 61 6c 6c 6f 63 61 74 69 6f 6e 0a 20 20 62 79 20  allocation.  by 
0fb0: 38 20 62 79 74 65 73 20 61 6e 64 20 77 72 69 74  8 bytes and writ
0fc0: 65 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  es the size of t
0fd0: 68 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 6e  he allocation in
0fe0: 20 74 68 65 20 69 6e 69 74 69 61 6c 20 38 20 62   the initial 8 b
0ff0: 79 74 65 73 2c 20 61 6e 64 0a 20 20 74 68 65 6e  ytes, and.  then
1000: 20 53 51 4c 69 74 65 20 61 6c 73 6f 20 69 6d 70   SQLite also imp
1010: 6c 65 6d 65 6e 74 73 20 69 74 73 20 6f 77 6e 20  lements its own 
1020: 68 6f 6d 65 2d 67 72 6f 77 6e 20 76 65 72 73 69  home-grown versi
1030: 6f 6e 20 6f 66 20 6d 61 6c 6c 6f 63 5f 75 73 61  on of malloc_usa
1040: 62 6c 65 5f 73 69 7a 65 28 29 0a 20 20 74 68 61  ble_size().  tha
1050: 74 20 63 6f 6e 73 75 6c 74 73 20 74 68 61 74 20  t consults that 
1060: 38 2d 62 79 74 65 20 70 72 65 66 69 78 20 74 6f  8-byte prefix to
1070: 20 66 69 6e 64 20 74 68 65 20 61 6c 6c 6f 63 61   find the alloca
1080: 74 69 6f 6e 20 73 69 7a 65 2e 20 20 54 68 69 73  tion size.  This
1090: 20 61 70 70 72 6f 61 63 68 0a 20 20 77 6f 72 6b   approach.  work
10a0: 73 20 62 75 74 20 69 74 20 69 73 20 73 75 62 6f  s but it is subo
10b0: 70 74 69 6d 61 6c 2e 20 20 41 70 70 6c 69 63 61  ptimal.  Applica
10c0: 74 69 6f 6e 73 20 61 72 65 20 65 6e 63 6f 75 72  tions are encour
10d0: 61 67 65 64 20 74 6f 20 75 73 65 0a 20 20 48 41  aged to use.  HA
10e0: 56 45 5f 4d 41 4c 4c 4f 43 5f 55 53 41 42 4c 45  VE_MALLOC_USABLE
10f0: 5f 53 49 5a 45 20 77 68 65 6e 65 76 65 72 20 70  _SIZE whenever p
1100: 6f 73 73 69 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50  ossible..}..COMP
1110: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56 45  ILE_OPTION {HAVE
1120: 5f 53 54 52 43 48 52 4e 55 4c 7d 20 7b 0a 20 20  _STRCHRNUL} {.  
1130: 49 66 20 74 68 65 20 48 41 56 45 5f 53 54 52 43  If the HAVE_STRC
1140: 48 52 4e 55 4c 20 6f 70 74 69 6f 6e 20 69 73 20  HRNUL option is 
1150: 74 72 75 65 2c 20 74 68 65 6e 20 53 51 4c 69 74  true, then SQLit
1160: 65 20 75 73 65 73 20 74 68 65 20 73 74 72 63 68  e uses the strch
1170: 72 6e 75 6c 28 29 20 6c 69 62 72 61 72 79 0a 20  rnul() library. 
1180: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 49 66 20 74   function.  If t
1190: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6d 69  his option is mi
11a0: 73 73 69 6e 67 20 6f 72 20 66 61 6c 73 65 2c 20  ssing or false, 
11b0: 74 68 65 6e 20 53 51 4c 69 74 65 20 73 75 62 73  then SQLite subs
11c0: 74 69 74 75 74 65 73 20 69 74 73 20 6f 77 6e 0a  titutes its own.
11d0: 20 20 68 6f 6d 65 2d 67 72 6f 77 6e 20 69 6d 70    home-grown imp
11e0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 73  lementation of s
11f0: 74 72 63 68 72 6e 75 6c 28 29 2e 0a 7d 0a 0a 43  trchrnul()..}..C
1200: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48  OMPILE_OPTION {H
1210: 41 56 45 5f 55 53 4c 45 45 50 7d 20 7b 0a 20 20  AVE_USLEEP} {.  
1220: 49 66 20 74 68 65 20 48 41 56 45 5f 55 53 4c 45  If the HAVE_USLE
1230: 45 50 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75  EP option is tru
1240: 65 2c 20 74 68 65 6e 20 74 68 65 20 64 65 66 61  e, then the defa
1250: 75 6c 74 20 75 6e 69 78 20 56 46 53 20 75 73 65  ult unix VFS use
1260: 73 20 74 68 65 0a 20 20 75 73 6c 65 65 70 28 29  s the.  usleep()
1270: 20 73 79 73 74 65 6d 20 63 61 6c 6c 20 74 6f 20   system call to 
1280: 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 78 53  implement the xS
1290: 6c 65 65 70 20 6d 65 74 68 6f 64 2e 20 20 49 66  leep method.  If
12a0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 0a   this option is.
12b0: 20 20 75 6e 64 65 66 69 6e 65 64 20 6f 72 20 66    undefined or f
12c0: 61 6c 73 65 2c 20 74 68 65 6e 20 78 53 6c 65 65  alse, then xSlee
12d0: 70 20 6f 6e 20 75 6e 69 78 20 69 73 20 69 6d 70  p on unix is imp
12e0: 6c 65 6d 65 6e 74 65 64 20 75 73 69 6e 67 20 73  lemented using s
12f0: 6c 65 65 70 28 29 20 77 68 69 63 68 0a 20 20 6d  leep() which.  m
1300: 65 61 6e 73 20 74 68 61 74 20 5b 73 71 6c 69 74  eans that [sqlit
1310: 65 33 5f 73 6c 65 65 70 28 29 5d 20 77 69 6c 6c  e3_sleep()] will
1320: 20 68 61 76 65 20 61 20 6d 69 6e 69 6d 75 6d 20   have a minimum 
1330: 77 61 69 74 20 69 6e 74 65 72 76 61 6c 20 6f 66  wait interval of
1340: 20 31 30 30 30 0a 20 20 6d 69 6c 6c 69 73 65 63   1000.  millisec
1350: 6f 6e 64 73 20 72 65 67 61 72 64 6c 65 73 73 20  onds regardless 
1360: 6f 66 20 69 74 73 20 61 72 67 75 6d 65 6e 74 2e  of its argument.
1370: 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50    .}..COMPILE_OP
1380: 54 49 4f 4e 20 7b 48 41 56 45 5f 55 54 49 4d 45  TION {HAVE_UTIME
1390: 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48 41 56  } {.  If the HAV
13a0: 45 5f 55 54 49 4d 45 20 6f 70 74 69 6f 6e 20 69  E_UTIME option i
13b0: 73 20 74 72 75 65 2c 20 74 68 65 6e 20 74 68 65  s true, then the
13c0: 20 62 75 69 6c 74 2d 69 6e 20 62 75 74 20 6e 6f   built-in but no
13d0: 6e 2d 73 74 61 6e 64 61 72 64 0a 20 20 22 75 6e  n-standard.  "un
13e0: 69 78 2d 64 6f 74 66 69 6c 65 22 20 56 46 53 20  ix-dotfile" VFS 
13f0: 77 69 6c 6c 20 75 73 65 20 74 68 65 20 75 74 69  will use the uti
1400: 6d 65 28 29 20 73 79 73 74 65 6d 20 63 61 6c 6c  me() system call
1410: 2c 20 69 6e 73 74 65 61 64 20 6f 66 20 75 74 69  , instead of uti
1420: 6d 65 73 28 29 2c 0a 20 20 74 6f 20 73 65 74 20  mes(),.  to set 
1430: 74 68 65 20 6c 61 73 74 20 61 63 63 65 73 73 20  the last access 
1440: 74 69 6d 65 20 6f 6e 20 74 68 65 20 6c 6f 63 6b  time on the lock
1450: 20 66 69 6c 65 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a   file..}.</tcl>.
1460: 0a 3c 61 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c  .<a name="defaul
1470: 74 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 32  ts"></a>.<h2>1.2
1480: 20 4f 70 74 69 6f 6e 73 20 54 6f 20 53 65 74 20   Options To Set 
1490: 44 65 66 61 75 6c 74 20 50 61 72 61 6d 65 74 65  Default Paramete
14a0: 72 20 56 61 6c 75 65 73 3c 2f 68 32 3e 0a 0a 3c  r Values</h2>..<
14b0: 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  tcl>..COMPILE_OP
14c0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
14d0: 41 55 4c 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49  AULT_AUTOMATIC_I
14e0: 4e 44 45 58 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72  NDEX=<i>&lt;0 or
14f0: 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   1&gt;</i>} {.  
1500: 54 68 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72  This macro deter
1510: 6d 69 6e 65 73 20 74 68 65 20 69 6e 69 74 69 61  mines the initia
1520: 6c 20 73 65 74 74 69 6e 67 20 66 6f 72 20 5b 50  l setting for [P
1530: 52 41 47 4d 41 20 61 75 74 6f 6d 61 74 69 63 5f  RAGMA automatic_
1540: 69 6e 64 65 78 5d 0a 20 20 66 6f 72 20 6e 65 77  index].  for new
1550: 6c 79 20 6f 70 65 6e 65 64 20 5b 64 61 74 61 62  ly opened [datab
1560: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d  ase connections]
1570: 2e 0a 20 20 46 6f 72 20 61 6c 6c 20 76 65 72 73  ..  For all vers
1580: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 74  ions of SQLite t
1590: 68 72 6f 75 67 68 20 33 2e 37 2e 31 37 2c 0a 20  hrough 3.7.17,. 
15a0: 20 61 75 74 6f 6d 61 74 69 63 20 69 6e 64 69 63   automatic indic
15b0: 65 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20  es are normally 
15c0: 65 6e 61 62 6c 65 64 20 66 6f 72 20 6e 65 77 20  enabled for new 
15d0: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
15e0: 69 6f 6e 73 20 69 66 0a 20 20 74 68 69 73 20 63  ions if.  this c
15f0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
1600: 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 20  on is omitted.. 
1610: 20 48 6f 77 65 76 65 72 2c 20 74 68 61 74 20 6d   However, that m
1620: 69 67 68 74 20 63 68 61 6e 67 65 20 69 6e 20 66  ight change in f
1630: 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f  uture releases o
1640: 66 20 53 51 4c 69 74 65 2e 0a 20 20 3c 70 3e 53  f SQLite..  <p>S
1650: 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45  ee also: [SQLITE
1660: 5f 4f 4d 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f  _OMIT_AUTOMATIC_
1670: 49 4e 44 45 58 5d 0a 7d 0a 0a 43 4f 4d 50 49 4c  INDEX].}..COMPIL
1680: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
1690: 5f 44 45 46 41 55 4c 54 5f 41 55 54 4f 56 41 43  _DEFAULT_AUTOVAC
16a0: 55 55 4d 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20  UUM=<i>&lt;0 or 
16b0: 31 20 6f 72 20 32 26 67 74 3b 3c 2f 69 3e 7d 20  1 or 2&gt;</i>} 
16c0: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 64  {.  This macro d
16d0: 65 74 65 72 6d 69 6e 65 73 20 69 66 20 53 51 4c  etermines if SQL
16e0: 69 74 65 20 63 72 65 61 74 65 73 20 64 61 74 61  ite creates data
16f0: 62 61 73 65 73 20 77 69 74 68 20 74 68 65 20 0a  bases with the .
1700: 20 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20    [auto_vacuum] 
1710: 66 6c 61 67 20 73 65 74 20 62 79 20 64 65 66 61  flag set by defa
1720: 75 6c 74 20 74 6f 20 4f 46 46 20 28 30 29 2c 20  ult to OFF (0), 
1730: 46 55 4c 4c 20 28 31 29 2c 20 6f 72 0a 20 20 49  FULL (1), or.  I
1740: 4e 43 52 45 4d 45 4e 54 41 4c 20 28 32 29 2e 20  NCREMENTAL (2). 
1750: 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  The default valu
1760: 65 20 69 73 20 30 20 6d 65 61 6e 69 6e 67 20 74  e is 0 meaning t
1770: 68 61 74 20 64 61 74 61 62 61 73 65 73 0a 20 20  hat databases.  
1780: 61 72 65 20 63 72 65 61 74 65 64 20 77 69 74 68  are created with
1790: 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 74 75 72   auto-vacuum tur
17a0: 6e 65 64 20 6f 66 66 2e 0a 20 20 49 6e 20 61 6e  ned off..  In an
17b0: 79 20 63 61 73 65 20 74 68 65 20 63 6f 6d 70 69  y case the compi
17c0: 6c 65 2d 74 69 6d 65 20 64 65 66 61 75 6c 74 20  le-time default 
17d0: 6d 61 79 20 62 65 20 6f 76 65 72 72 69 64 64 65  may be overridde
17e0: 6e 20 62 79 20 74 68 65 20 0a 20 20 5b 50 52 41  n by the .  [PRA
17f0: 47 4d 41 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d  GMA auto_vacuum]
1800: 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d   command..}..COM
1810: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
1820: 49 54 45 5f 44 45 46 41 55 4c 54 5f 43 41 43 48  ITE_DEFAULT_CACH
1830: 45 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 4e 26  E_SIZE=<i>&lt;N&
1840: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
1850: 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65  s macro sets the
1860: 20 64 65 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d   default maximum
1870: 20 73 69 7a 65 20 6f 66 20 74 68 65 20 70 61 67   size of the pag
1880: 65 2d 63 61 63 68 65 20 66 6f 72 20 65 61 63 68  e-cache for each
1890: 20 61 74 74 61 63 68 65 64 0a 20 20 64 61 74 61   attached.  data
18a0: 62 61 73 65 2e 20 20 41 20 70 6f 73 69 74 69 76  base.  A positiv
18b0: 65 20 76 61 6c 75 65 20 6d 65 61 6e 73 20 74 68  e value means th
18c0: 61 74 20 74 68 65 20 6c 69 6d 69 74 20 69 73 20  at the limit is 
18d0: 4e 20 70 61 67 65 2e 20 20 49 66 20 4e 20 69 73  N page.  If N is
18e0: 20 6e 65 67 61 74 69 76 65 0a 20 20 74 68 61 74   negative.  that
18f0: 20 6d 65 61 6e 73 20 74 6f 20 6c 69 6d 69 74 20   means to limit 
1900: 74 68 65 20 63 61 63 68 65 20 73 69 7a 65 20 74  the cache size t
1910: 6f 20 2d 4e 2a 31 30 32 34 20 62 79 74 65 73 2e  o -N*1024 bytes.
1920: 0a 20 20 54 68 65 20 73 75 67 67 65 73 74 65 64  .  The suggested
1930: 20 6d 61 78 69 6d 75 6d 20 63 61 63 68 65 20 73   maximum cache s
1940: 69 7a 65 20 63 61 6e 20 62 65 20 6f 76 65 72 72  ize can be overr
1950: 69 64 64 65 6e 20 62 79 20 74 68 65 20 0a 20 20  idden by the .  
1960: 5b 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69  [PRAGMA cache_si
1970: 7a 65 5d 20 63 6f 6d 6d 61 6e 64 2e 20 54 68 65  ze] command. The
1980: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69   default value i
1990: 73 20 2d 32 30 30 30 2c 20 77 68 69 63 68 20 74  s -2000, which t
19a0: 72 61 6e 73 6c 61 74 65 73 0a 20 20 69 6e 74 6f  ranslates.  into
19b0: 20 61 20 6d 61 78 69 6d 75 6d 20 6f 66 20 32 30   a maximum of 20
19c0: 34 38 30 30 30 20 62 79 74 65 73 20 70 65 72 20  48000 bytes per 
19d0: 63 61 63 68 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  cache..}..COMPIL
19e0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
19f0: 5f 44 45 46 41 55 4c 54 5f 46 49 4c 45 5f 46 4f  _DEFAULT_FILE_FO
1a00: 52 4d 41 54 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72  RMAT=<i>&lt;1 or
1a10: 20 34 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   4&gt;</i>} {.  
1a20: 54 68 65 20 64 65 66 61 75 6c 74 20 5b 73 63 68  The default [sch
1a30: 65 6d 61 20 66 6f 72 6d 61 74 20 6e 75 6d 62 65  ema format numbe
1a40: 72 5d 20 75 73 65 64 20 62 79 20 53 51 4c 69 74  r] used by SQLit
1a50: 65 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67 0a  e when creating.
1a60: 20 20 6e 65 77 20 64 61 74 61 62 61 73 65 20 66    new database f
1a70: 69 6c 65 73 20 69 73 20 73 65 74 20 62 79 20 74  iles is set by t
1a80: 68 69 73 20 6d 61 63 72 6f 2e 20 20 54 68 65 20  his macro.  The 
1a90: 73 63 68 65 6d 61 20 66 6f 72 6d 61 74 73 20 61  schema formats a
1aa0: 72 65 20 61 6c 6c 0a 20 20 76 65 72 79 20 73 69  re all.  very si
1ab0: 6d 69 6c 61 72 2e 20 20 54 68 65 20 64 69 66 66  milar.  The diff
1ac0: 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e 20 66  erence between f
1ad0: 6f 72 6d 61 74 73 20 31 20 61 6e 64 20 34 20 69  ormats 1 and 4 i
1ae0: 73 20 74 68 61 74 20 66 6f 72 6d 61 74 0a 20 20  s that format.  
1af0: 34 20 75 6e 64 65 72 73 74 61 6e 64 73 20 5b 64  4 understands [d
1b00: 65 73 63 65 6e 64 69 6e 67 20 69 6e 64 69 63 65  escending indice
1b10: 73 5d 20 61 6e 64 20 68 61 73 20 61 20 74 69 67  s] and has a tig
1b20: 68 74 65 72 20 65 6e 63 6f 64 69 6e 67 20 66 6f  hter encoding fo
1b30: 72 0a 20 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  r.  boolean valu
1b40: 65 73 2e 0a 0a 20 20 41 6c 6c 20 76 65 72 73 69  es...  All versi
1b50: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 73 69  ons of SQLite si
1b60: 6e 63 65 20 33 2e 33 2e 30 20 28 32 30 30 36 2d  nce 3.3.0 (2006-
1b70: 30 31 2d 31 30 29 0a 20 20 63 61 6e 20 72 65 61  01-10).  can rea
1b80: 64 20 61 6e 64 20 77 72 69 74 65 20 61 6e 79 20  d and write any 
1b90: 73 63 68 65 6d 61 20 66 6f 72 6d 61 74 0a 20 20  schema format.  
1ba0: 62 65 74 77 65 65 6e 20 31 20 61 6e 64 20 34 2e  between 1 and 4.
1bb0: 20 20 42 75 74 20 6f 6c 64 65 72 20 76 65 72 73    But older vers
1bc0: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d  ions of SQLite m
1bd0: 69 67 68 74 20 6e 6f 74 20 62 65 20 61 62 6c 65  ight not be able
1be0: 20 74 6f 0a 20 20 72 65 61 64 20 66 6f 72 6d 61   to.  read forma
1bf0: 74 73 20 67 72 65 61 74 65 72 20 74 68 61 6e 20  ts greater than 
1c00: 31 2e 20 20 53 6f 20 74 68 61 74 20 6f 6c 64 65  1.  So that olde
1c10: 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  r versions of SQ
1c20: 4c 69 74 65 20 77 69 6c 6c 0a 20 20 62 65 20 61  Lite will.  be a
1c30: 62 6c 65 20 74 6f 20 72 65 61 64 20 61 6e 64 20  ble to read and 
1c40: 77 72 69 74 65 20 64 61 74 61 62 61 73 65 20 66  write database f
1c50: 69 6c 65 73 20 63 72 65 61 74 65 64 20 62 79 20  iles created by 
1c60: 6e 65 77 65 72 20 76 65 72 73 69 6f 6e 73 0a 20  newer versions. 
1c70: 20 6f 66 20 53 51 4c 69 74 65 2c 20 74 68 65 20   of SQLite, the 
1c80: 64 65 66 61 75 6c 74 20 73 63 68 65 6d 61 20 66  default schema f
1c90: 6f 72 6d 61 74 20 77 61 73 20 73 65 74 20 74 6f  ormat was set to
1ca0: 20 31 20 66 6f 72 20 53 51 4c 69 74 65 20 76 65   1 for SQLite ve
1cb0: 72 73 69 6f 6e 73 0a 20 20 74 68 72 6f 75 67 68  rsions.  through
1cc0: 20 33 2e 37 2e 39 20 28 32 30 31 31 2d 31 31 2d   3.7.9 (2011-11-
1cd0: 30 31 29 2e 20 20 42 65 67 69 6e 6e 69 6e 67 20  01).  Beginning 
1ce0: 77 69 74 68 20 76 65 72 73 69 6f 6e 20 33 2e 37  with version 3.7
1cf0: 2e 31 30 2c 20 74 68 65 20 64 65 66 61 75 6c 74  .10, the default
1d00: 0a 20 20 73 63 68 65 6d 61 20 66 6f 72 6d 61 74  .  schema format
1d10: 20 69 73 20 34 2e 0a 0a 20 20 54 68 65 20 73 63   is 4...  The sc
1d20: 68 65 6d 61 20 66 6f 72 6d 61 74 20 6e 75 6d 62  hema format numb
1d30: 65 72 20 66 6f 72 20 61 20 6e 65 77 20 64 61 74  er for a new dat
1d40: 61 62 61 73 65 20 63 61 6e 20 62 65 20 73 65 74  abase can be set
1d50: 20 61 74 20 72 75 6e 74 69 6d 65 20 75 73 69 6e   at runtime usin
1d60: 67 0a 20 20 74 68 65 20 5b 50 52 41 47 4d 41 20  g.  the [PRAGMA 
1d70: 6c 65 67 61 63 79 5f 66 69 6c 65 5f 66 6f 72 6d  legacy_file_form
1d80: 61 74 5d 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a  at] command..}..
1d90: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
1da0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 46  SQLITE_DEFAULT_F
1db0: 49 4c 45 5f 50 45 52 4d 49 53 53 49 4f 4e 53 3d  ILE_PERMISSIONS=
1dc0: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  <i>N</i>} {.  Th
1dd0: 65 20 64 65 66 61 75 6c 74 20 6e 75 6d 65 72 69  e default numeri
1de0: 63 20 66 69 6c 65 20 70 65 72 6d 69 73 73 69 6f  c file permissio
1df0: 6e 73 20 66 6f 72 20 6e 65 77 6c 79 20 63 72 65  ns for newly cre
1e00: 61 74 65 64 20 64 61 74 61 62 61 73 65 20 66 69  ated database fi
1e10: 6c 65 73 0a 20 20 75 6e 64 65 72 20 75 6e 69 78  les.  under unix
1e20: 2e 20 20 49 66 20 6e 6f 74 20 73 70 65 63 69 66  .  If not specif
1e30: 69 65 64 2c 20 74 68 65 20 64 65 66 61 75 6c 74  ied, the default
1e40: 20 69 73 20 30 36 34 34 20 77 68 69 63 68 20 6d   is 0644 which m
1e50: 65 61 6e 73 20 74 68 61 74 0a 20 20 74 68 65 20  eans that.  the 
1e60: 66 69 6c 65 73 20 69 73 20 67 6c 6f 62 61 6c 6c  files is globall
1e70: 79 20 72 65 61 64 61 62 6c 65 20 62 75 74 20 6f  y readable but o
1e80: 6e 6c 79 20 77 72 69 74 61 62 6c 65 20 62 79 20  nly writable by 
1e90: 74 68 65 20 63 72 65 61 74 6f 72 2e 0a 7d 0a 0a  the creator..}..
1ea0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
1eb0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 46  SQLITE_DEFAULT_F
1ec0: 4f 52 45 49 47 4e 5f 4b 45 59 53 3d 3c 69 3e 26  OREIGN_KEYS=<i>&
1ed0: 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69  lt;0 or 1&gt;</i
1ee0: 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  >} {.  This macr
1ef0: 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 77 68 65  o determines whe
1f00: 74 68 65 72 20 65 6e 66 6f 72 63 65 6d 65 6e 74  ther enforcement
1f10: 20 6f 66 20 0a 20 20 5b 66 6f 72 65 69 67 6e 20   of .  [foreign 
1f20: 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d  key constraints]
1f30: 20 69 73 20 65 6e 61 62 6c 65 64 20 6f 72 20 64   is enabled or d
1f40: 69 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75  isabled by defau
1f50: 6c 74 20 66 6f 72 0a 20 20 6e 65 77 20 64 61 74  lt for.  new dat
1f60: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1f70: 73 2e 20 20 45 61 63 68 20 64 61 74 61 62 61 73  s.  Each databas
1f80: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 61 6e  e connection can
1f90: 20 61 6c 77 61 79 73 20 74 75 72 6e 0a 20 20 65   always turn.  e
1fa0: 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20 66 6f  nforcement of fo
1fb0: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
1fc0: 61 69 6e 74 73 20 6f 6e 20 61 6e 64 20 6f 66 66  aints on and off
1fd0: 20 61 6e 64 20 72 75 6e 2d 74 69 6d 65 20 75 73   and run-time us
1fe0: 69 6e 67 0a 20 20 74 68 65 20 5b 66 6f 72 65 69  ing.  the [forei
1ff0: 67 6e 5f 6b 65 79 73 20 70 72 61 67 6d 61 5d 2e  gn_keys pragma].
2000: 20 20 45 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66    Enforcement of
2010: 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e   foreign key con
2020: 73 74 72 61 69 6e 74 73 0a 20 20 69 73 20 6e 6f  straints.  is no
2030: 72 6d 61 6c 6c 79 20 6f 66 66 20 62 79 20 64 65  rmally off by de
2040: 66 61 75 6c 74 2c 20 62 75 74 20 69 66 20 74 68  fault, but if th
2050: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  is compile-time 
2060: 70 61 72 61 6d 65 74 65 72 20 69 73 0a 20 20 73  parameter is.  s
2070: 65 74 20 74 6f 20 31 2c 20 65 6e 66 6f 72 63 65  et to 1, enforce
2080: 6d 65 6e 74 20 6f 66 20 66 6f 72 65 69 67 6e 20  ment of foreign 
2090: 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  key constraints 
20a0: 77 69 6c 6c 20 62 65 20 6f 6e 20 62 79 20 64 65  will be on by de
20b0: 66 61 75 6c 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  fault..}..COMPIL
20c0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
20d0: 5f 44 45 46 41 55 4c 54 5f 4d 4d 41 50 5f 53 49  _DEFAULT_MMAP_SI
20e0: 5a 45 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20  ZE=<i>N</i>} {. 
20f0: 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73   This macro sets
2100: 20 74 68 65 20 64 65 66 61 75 6c 74 20 6c 69 6d   the default lim
2110: 69 74 20 6f 6e 20 74 68 65 20 61 6d 6f 75 6e 74  it on the amount
2120: 20 6f 66 20 6d 65 6d 6f 72 79 20 74 68 61 74 0a   of memory that.
2130: 20 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 66    will be used f
2140: 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64  or memory-mapped
2150: 20 49 2f 4f 0a 20 20 66 6f 72 20 65 61 63 68 20   I/O.  for each 
2160: 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20 66 69  open database fi
2170: 6c 65 2e 20 20 49 66 20 74 68 65 20 3c 69 3e 4e  le.  If the <i>N
2180: 3c 2f 69 3e 0a 20 20 69 73 20 7a 65 72 6f 2c 20  </i>.  is zero, 
2190: 74 68 65 6e 20 6d 65 6d 6f 72 79 20 6d 61 70 70  then memory mapp
21a0: 65 64 20 49 2f 4f 20 69 73 20 64 69 73 61 62 6c  ed I/O is disabl
21b0: 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20  ed by default.  
21c0: 54 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74  This.  compile-t
21d0: 69 6d 65 20 6c 69 6d 69 74 20 61 6e 64 20 74 68  ime limit and th
21e0: 65 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d  e [SQLITE_MAX_MM
21f0: 41 50 5f 53 49 5a 45 5d 20 63 61 6e 20 62 65 20  AP_SIZE] can be 
2200: 6d 6f 64 69 66 69 65 64 20 0a 20 20 61 74 20 73  modified .  at s
2210: 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e 67 20  tart-time using 
2220: 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  the.  [sqlite3_c
2230: 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43  onfig]([SQLITE_C
2240: 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 5d  ONFIG_MMAP_SIZE]
2250: 29 20 63 61 6c 6c 2c 20 6f 72 20 61 74 20 72 75  ) call, or at ru
2260: 6e 2d 74 69 6d 65 0a 20 20 75 73 69 6e 67 20 74  n-time.  using t
2270: 68 65 20 5b 6d 6d 61 70 5f 73 69 7a 65 20 70 72  he [mmap_size pr
2280: 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  agma]..}..COMPIL
2290: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
22a0: 5f 44 45 46 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c  _DEFAULT_JOURNAL
22b0: 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d 3c 69 3e 26  _SIZE_LIMIT=<i>&
22c0: 6c 74 3b 62 79 74 65 73 26 67 74 3b 3c 2f 69 3e  lt;bytes&gt;</i>
22d0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
22e0: 6e 20 73 65 74 73 20 74 68 65 20 73 69 7a 65 20  n sets the size 
22f0: 6c 69 6d 69 74 20 6f 6e 20 5b 72 6f 6c 6c 62 61  limit on [rollba
2300: 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20 66 69 6c 65  ck journal] file
2310: 73 20 69 6e 0a 20 20 5b 6a 6f 75 72 6e 61 6c 5f  s in.  [journal_
2320: 6d 6f 64 65 20 70 72 61 67 6d 61 20 7c 20 70 65  mode pragma | pe
2330: 72 73 69 73 74 65 6e 74 20 6a 6f 75 72 6e 61 6c  rsistent journal
2340: 20 6d 6f 64 65 5d 20 61 6e 64 0a 20 20 5b 6c 6f   mode] and.  [lo
2350: 63 6b 69 6e 67 5f 6d 6f 64 65 20 7c 20 65 78 63  cking_mode | exc
2360: 6c 75 73 69 76 65 20 6c 6f 63 6b 69 6e 67 20 6d  lusive locking m
2370: 6f 64 65 5d 20 61 6e 64 20 6f 6e 20 74 68 65 20  ode] and on the 
2380: 73 69 7a 65 20 6f 66 20 74 68 65 0a 20 20 77 72  size of the.  wr
2390: 69 74 65 2d 61 68 65 61 64 20 6c 6f 67 20 66 69  ite-ahead log fi
23a0: 6c 65 20 69 6e 20 5b 57 41 4c 20 6d 6f 64 65 5d  le in [WAL mode]
23b0: 2e 20 57 68 65 6e 20 74 68 69 73 20 0a 20 20 63  . When this .  c
23c0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
23d0: 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 20 74 68  on is omitted th
23e0: 65 72 65 20 69 73 20 6e 6f 20 75 70 70 65 72 20  ere is no upper 
23f0: 62 6f 75 6e 64 20 6f 6e 20 74 68 65 0a 20 20 73  bound on the.  s
2400: 69 7a 65 20 6f 66 20 74 68 65 20 72 6f 6c 6c 62  ize of the rollb
2410: 61 63 6b 20 6a 6f 75 72 6e 61 6c 73 20 6f 72 20  ack journals or 
2420: 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f 67 73  write-ahead logs
2430: 2e 20 20 0a 20 20 54 68 65 20 6a 6f 75 72 6e 61  .  .  The journa
2440: 6c 20 66 69 6c 65 20 73 69 7a 65 20 6c 69 6d 69  l file size limi
2450: 74 0a 20 20 63 61 6e 20 62 65 20 63 68 61 6e 67  t.  can be chang
2460: 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75  ed at run-time u
2470: 73 69 6e 67 20 74 68 65 20 5b 6a 6f 75 72 6e 61  sing the [journa
2480: 6c 5f 73 69 7a 65 5f 6c 69 6d 69 74 20 70 72 61  l_size_limit pra
2490: 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  gma]..}..COMPILE
24a0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
24b0: 44 45 46 41 55 4c 54 5f 4c 4f 43 4b 49 4e 47 5f  DEFAULT_LOCKING_
24c0: 4d 4f 44 45 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72  MODE=<i>&lt;1 or
24d0: 20 30 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   0&gt;</i>} {.  
24e0: 49 66 20 73 65 74 20 74 6f 20 31 2c 20 74 68 65  If set to 1, the
24f0: 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 5b 6c  n the default [l
2500: 6f 63 6b 69 6e 67 5f 6d 6f 64 65 5d 20 69 73 20  ocking_mode] is 
2510: 73 65 74 20 74 6f 20 45 58 43 4c 55 53 49 56 45  set to EXCLUSIVE
2520: 2e 0a 20 20 49 66 20 6f 6d 69 74 74 65 64 20 6f  ..  If omitted o
2530: 72 20 73 65 74 20 74 6f 20 30 20 74 68 65 6e 20  r set to 0 then 
2540: 74 68 65 20 64 65 66 61 75 6c 74 20 5b 6c 6f 63  the default [loc
2550: 6b 69 6e 67 5f 6d 6f 64 65 5d 20 69 73 20 4e 4f  king_mode] is NO
2560: 52 4d 41 4c 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  RMAL..}..COMPILE
2570: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
2580: 44 45 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54 55  DEFAULT_MEMSTATU
2590: 53 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 30 26  S=<i>&lt;1 or 0&
25a0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
25b0: 73 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20  s macro is used 
25c0: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 77 68 65  to determine whe
25d0: 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20  ther or not the 
25e0: 66 65 61 74 75 72 65 73 20 65 6e 61 62 6c 65 64  features enabled
25f0: 20 61 6e 64 0a 20 20 64 69 73 61 62 6c 65 64 20   and.  disabled 
2600: 75 73 69 6e 67 20 74 68 65 20 53 51 4c 49 54 45  using the SQLITE
2610: 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55  _CONFIG_MEMSTATU
2620: 53 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73  S argument to [s
2630: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
2640: 0a 20 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65  .  are available
2650: 20 62 79 20 64 65 66 61 75 6c 74 2e 20 54 68 65   by default. The
2660: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69   default value i
2670: 73 20 31 20 28 5b 53 51 4c 49 54 45 5f 43 4f 4e  s 1 ([SQLITE_CON
2680: 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 0a 20  FIG_MEMSTATUS]. 
2690: 20 72 65 6c 61 74 65 64 20 66 65 61 74 75 72 65   related feature
26a0: 73 20 65 6e 61 62 6c 65 64 29 2e 0a 7d 0a 0a 43  s enabled)..}..C
26b0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
26c0: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 50 41  QLITE_DEFAULT_PA
26d0: 47 45 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 62  GE_SIZE=<i>&lt;b
26e0: 79 74 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  ytes&gt;</i>} {.
26f0: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20    This macro is 
2700: 75 73 65 64 20 74 6f 20 73 65 74 20 74 68 65 20  used to set the 
2710: 64 65 66 61 75 6c 74 20 70 61 67 65 2d 73 69 7a  default page-siz
2720: 65 20 75 73 65 64 20 77 68 65 6e 20 61 0a 20 20  e used when a.  
2730: 64 61 74 61 62 61 73 65 20 69 73 20 63 72 65 61  database is crea
2740: 74 65 64 2e 20 54 68 65 20 76 61 6c 75 65 20 61  ted. The value a
2750: 73 73 69 67 6e 65 64 20 6d 75 73 74 20 62 65 20  ssigned must be 
2760: 61 20 70 6f 77 65 72 20 6f 66 20 32 2e 20 54 68  a power of 2. Th
2770: 65 0a 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75  e.  default valu
2780: 65 20 69 73 20 34 30 39 36 2e 20 54 68 65 20 63  e is 4096. The c
2790: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 64 65 66 61  ompile-time defa
27a0: 75 6c 74 20 6d 61 79 20 62 65 20 6f 76 65 72 72  ult may be overr
27b0: 69 64 64 65 6e 20 61 74 20 0a 20 20 72 75 6e 74  idden at .  runt
27c0: 69 6d 65 20 62 79 20 74 68 65 20 5b 50 52 41 47  ime by the [PRAG
27d0: 4d 41 20 70 61 67 65 5f 73 69 7a 65 5d 20 63 6f  MA page_size] co
27e0: 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  mmand..}..COMPIL
27f0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
2800: 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f 41 55 54  _DEFAULT_WAL_AUT
2810: 4f 43 48 45 43 4b 50 4f 49 4e 54 3d 3c 69 3e 26  OCHECKPOINT=<i>&
2820: 6c 74 3b 70 61 67 65 73 26 67 74 3b 3c 2f 69 3e  lt;pages&gt;</i>
2830: 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
2840: 20 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c   sets the defaul
2850: 74 20 70 61 67 65 20 63 6f 75 6e 74 20 66 6f 72  t page count for
2860: 20 74 68 65 20 5b 57 41 4c 5d 0a 20 20 5b 63 68   the [WAL].  [ch
2870: 65 63 6b 70 6f 69 6e 74 69 6e 67 20 7c 20 61 75  eckpointing | au
2880: 74 6f 6d 61 74 69 63 20 63 68 65 63 6b 70 6f 69  tomatic checkpoi
2890: 6e 74 69 6e 67 5d 20 66 65 61 74 75 72 65 2e 20  nting] feature. 
28a0: 20 49 66 20 75 6e 73 70 65 63 69 66 69 65 64 2c   If unspecified,
28b0: 0a 20 20 74 68 65 20 64 65 66 61 75 6c 74 20 70  .  the default p
28c0: 61 67 65 20 63 6f 75 6e 74 20 69 73 20 31 30 30  age count is 100
28d0: 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  0..}..COMPILE_OP
28e0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
28f0: 41 55 4c 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45  AULT_WORKER_THRE
2900: 41 44 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a  ADS=<i>N</i>} {.
2910: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74    This macro set
2920: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  s the default va
2930: 6c 75 65 20 66 6f 72 0a 20 20 74 68 65 20 5b 53  lue for.  the [S
2940: 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b  QLITE_LIMIT_WORK
2950: 45 52 5f 54 48 52 45 41 44 53 5d 20 70 61 72 61  ER_THREADS] para
2960: 6d 65 74 65 72 2e 20 20 54 68 65 20 5b 53 51 4c  meter.  The [SQL
2970: 49 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52  ITE_LIMIT_WORKER
2980: 5f 54 48 52 45 41 44 53 5d 0a 20 20 70 61 72 61  _THREADS].  para
2990: 6d 65 74 65 72 20 73 65 74 73 20 74 68 65 20 6d  meter sets the m
29a0: 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66  aximum number of
29b0: 20 61 75 78 69 6c 69 61 72 79 20 74 68 72 65 61   auxiliary threa
29c0: 64 73 20 74 68 61 74 20 61 20 73 69 6e 67 6c 65  ds that a single
29d0: 0a 20 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  .  [prepared sta
29e0: 74 65 6d 65 6e 74 5d 20 77 69 6c 6c 20 6c 61 75  tement] will lau
29f0: 6e 63 68 20 74 6f 20 61 73 73 69 73 74 20 69 74  nch to assist it
2a00: 20 77 69 74 68 20 61 20 71 75 65 72 79 2e 20 20   with a query.  
2a10: 49 66 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64  If not specified
2a20: 2c 0a 20 20 74 68 65 20 64 65 66 61 75 6c 74 20  ,.  the default 
2a30: 6d 61 78 69 6d 75 6d 20 69 73 20 30 2e 0a 20 20  maximum is 0..  
2a40: 54 68 65 20 76 61 6c 75 65 20 73 65 74 20 68 65  The value set he
2a50: 72 65 20 63 61 6e 6e 6f 74 20 62 65 20 6d 6f 72  re cannot be mor
2a60: 65 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4d  e than [SQLITE_M
2a70: 41 58 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  AX_WORKER_THREAD
2a80: 53 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  S]..}..COMPILE_O
2a90: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 58  PTION {SQLITE_EX
2aa0: 54 52 41 5f 44 55 52 41 42 4c 45 7d 20 7b 0a 20  TRA_DURABLE} {. 
2ab0: 20 54 68 65 20 53 51 4c 49 54 45 5f 45 58 54 52   The SQLITE_EXTR
2ac0: 41 5f 44 55 52 41 42 4c 45 20 63 6f 6d 70 69 6c  A_DURABLE compil
2ad0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63 61  e-time option ca
2ae0: 75 73 65 73 20 74 68 65 20 64 65 66 61 75 6c 74  uses the default
2af0: 0a 20 20 5b 50 52 41 47 4d 41 20 73 79 6e 63 68  .  [PRAGMA synch
2b00: 72 6f 6e 6f 75 73 5d 20 73 65 74 74 69 6e 67 20  ronous] setting 
2b10: 74 6f 20 62 65 20 45 58 54 52 41 2c 20 72 61 74  to be EXTRA, rat
2b20: 68 65 72 20 74 68 61 6e 20 46 55 4c 4c 2e 0a 7d  her than FULL..}
2b30: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
2b40: 20 7b 53 51 4c 49 54 45 5f 46 54 53 33 5f 4d 41   {SQLITE_FTS3_MA
2b50: 58 5f 45 58 50 52 5f 44 45 50 54 48 3d 3c 69 3e  X_EXPR_DEPTH=<i>
2b60: 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  N</i>} {.  This 
2b70: 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 6d  macro sets the m
2b80: 61 78 69 6d 75 6d 20 64 65 70 74 68 20 6f 66 20  aximum depth of 
2b90: 74 68 65 20 73 65 61 72 63 68 20 74 72 65 65 20  the search tree 
2ba0: 74 68 61 74 20 63 6f 72 72 65 73 70 6f 6e 64 73  that corresponds
2bb0: 20 74 6f 0a 20 20 74 68 65 20 72 69 67 68 74 2d   to.  the right-
2bc0: 68 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65  hand side of the
2bd0: 20 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72 20   MATCH operator 
2be0: 69 6e 20 61 6e 20 5b 46 54 53 33 5d 20 6f 72 20  in an [FTS3] or 
2bf0: 5b 46 54 53 34 5d 20 66 75 6c 6c 2d 74 65 78 74  [FTS4] full-text
2c00: 0a 20 20 69 6e 64 65 78 2e 20 20 54 68 65 20 66  .  index.  The f
2c10: 75 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20  ull-text search 
2c20: 75 73 65 73 20 61 20 72 65 63 75 72 73 69 76 65  uses a recursive
2c30: 20 61 6c 67 6f 72 69 74 68 6d 2c 20 73 6f 20 74   algorithm, so t
2c40: 68 65 20 64 65 70 74 68 20 6f 66 0a 20 20 74 68  he depth of.  th
2c50: 65 20 74 72 65 65 20 69 73 20 6c 69 6d 69 74 65  e tree is limite
2c60: 64 20 74 6f 20 70 72 65 76 65 6e 74 20 75 73 69  d to prevent usi
2c70: 6e 67 20 74 6f 6f 20 6d 75 63 68 20 73 74 61 63  ng too much stac
2c80: 6b 20 73 70 61 63 65 2e 20 20 54 68 65 20 64 65  k space.  The de
2c90: 66 61 75 6c 74 0a 20 20 6c 69 6d 69 74 20 69 73  fault.  limit is
2ca0: 20 31 32 2e 20 20 54 68 69 73 20 6c 69 6d 69 74   12.  This limit
2cb0: 20 69 73 20 73 75 66 66 69 63 69 65 6e 74 20 66   is sufficient f
2cc0: 6f 72 20 75 70 20 74 6f 20 34 30 39 35 20 73 65  or up to 4095 se
2cd0: 61 72 63 68 20 74 65 72 6d 73 20 6f 6e 20 74 68  arch terms on th
2ce0: 65 0a 20 20 72 69 67 68 74 2d 68 61 6e 64 20 73  e.  right-hand s
2cf0: 69 64 65 20 6f 66 20 74 68 65 20 4d 41 54 43 48  ide of the MATCH
2d00: 20 6f 70 65 72 61 74 6f 72 20 61 6e 64 20 69 74   operator and it
2d10: 20 68 6f 6c 64 73 20 73 74 61 63 6b 20 73 70 61   holds stack spa
2d20: 63 65 20 75 73 61 67 65 20 74 6f 20 0a 20 20 6c  ce usage to .  l
2d30: 65 73 73 20 74 68 61 6e 20 32 30 30 30 20 62 79  ess than 2000 by
2d40: 74 65 73 2e 0a 20 20 3c 70 3e 0a 20 20 46 6f 72  tes..  <p>.  For
2d50: 20 6f 72 64 69 6e 61 72 79 20 46 54 53 33 2f 46   ordinary FTS3/F
2d60: 54 53 34 20 71 75 65 72 69 65 73 2c 20 74 68 65  TS4 queries, the
2d70: 20 73 65 61 72 63 68 20 74 72 65 65 20 64 65 70   search tree dep
2d80: 74 68 20 69 73 20 61 70 70 72 6f 78 69 6d 61 74  th is approximat
2d90: 65 6c 79 0a 20 20 74 68 65 20 62 61 73 65 2d 32  ely.  the base-2
2da0: 20 6c 6f 67 61 72 69 74 68 6d 20 6f 66 20 74 68   logarithm of th
2db0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 65 72 6d  e number of term
2dc0: 73 20 69 6e 20 74 68 65 20 72 69 67 68 74 2d 68  s in the right-h
2dd0: 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65 0a  and side of the.
2de0: 20 20 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72    MATCH operator
2df0: 2e 20 20 48 6f 77 65 76 65 72 2c 20 66 6f 72 20  .  However, for 
2e00: 5b 70 68 72 61 73 65 20 71 75 65 72 69 65 73 5d  [phrase queries]
2e10: 20 61 6e 64 20 5b 4e 45 41 52 20 71 75 65 72 69   and [NEAR queri
2e20: 65 73 5d 20 74 68 65 0a 20 20 73 65 61 72 63 68  es] the.  search
2e30: 20 74 72 65 65 20 64 65 70 74 68 20 69 73 20 6c   tree depth is l
2e40: 69 6e 65 61 72 20 69 6e 20 74 68 65 20 6e 75 6d  inear in the num
2e50: 62 65 72 20 6f 66 20 72 69 67 68 74 2d 68 61 6e  ber of right-han
2e60: 64 20 73 69 64 65 20 74 65 72 6d 73 2e 0a 20 20  d side terms..  
2e70: 53 6f 20 74 68 65 20 64 65 66 61 75 6c 74 20 64  So the default d
2e80: 65 70 74 68 20 6c 69 6d 69 74 20 6f 66 20 31 32  epth limit of 12
2e90: 20 69 73 20 73 75 66 66 69 63 69 65 6e 74 20 66   is sufficient f
2ea0: 6f 72 20 75 70 20 74 6f 20 34 30 39 35 20 6f 72  or up to 4095 or
2eb0: 64 69 6e 61 72 79 0a 20 20 74 65 72 6d 73 20 6f  dinary.  terms o
2ec0: 6e 20 61 20 4d 41 54 43 48 2c 20 69 74 20 69 73  n a MATCH, it is
2ed0: 20 6f 6e 6c 79 20 73 75 66 66 69 63 69 65 6e 74   only sufficient
2ee0: 20 66 6f 72 20 31 31 20 6f 72 20 31 32 20 70 68   for 11 or 12 ph
2ef0: 72 61 73 65 20 6f 72 20 4e 45 41 52 0a 20 20 74  rase or NEAR.  t
2f00: 65 72 6d 73 2e 20 20 45 76 65 6e 20 73 6f 2c 20  erms.  Even so, 
2f10: 74 68 65 20 64 65 66 61 75 6c 74 20 69 73 20 6d  the default is m
2f20: 6f 72 65 20 74 68 61 6e 20 65 6e 6f 75 67 68 20  ore than enough 
2f30: 66 6f 72 20 6d 6f 73 74 20 61 70 70 6c 69 63 61  for most applica
2f40: 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tion..}..COMPILE
2f50: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
2f60: 4c 49 4b 45 5f 44 4f 45 53 4e 54 5f 4d 41 54 43  LIKE_DOESNT_MATC
2f70: 48 5f 42 4c 4f 42 53 7d 20 7b 0a 20 20 54 68 69  H_BLOBS} {.  Thi
2f80: 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
2f90: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
2fa0: 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72   [LIKE] operator
2fb0: 20 74 6f 20 61 6c 77 61 79 73 20 72 65 74 75 72   to always retur
2fc0: 6e 20 0a 20 20 46 61 6c 73 65 20 69 66 20 65 69  n .  False if ei
2fd0: 74 68 65 72 20 6f 70 65 72 61 6e 64 20 69 73 20  ther operand is 
2fe0: 61 20 42 4c 4f 42 2e 20 20 54 68 65 20 64 65 66  a BLOB.  The def
2ff0: 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20 6f 66  ault behavior of
3000: 20 5b 4c 49 4b 45 5d 20 0a 20 20 69 73 20 74 68   [LIKE] .  is th
3010: 61 74 20 42 4c 4f 42 20 6f 70 65 72 61 6e 64 73  at BLOB operands
3020: 20 61 72 65 20 63 61 73 74 20 74 6f 20 54 45 58   are cast to TEX
3030: 54 20 62 65 66 6f 72 65 20 74 68 65 20 63 6f 6d  T before the com
3040: 70 61 72 69 73 6f 6e 20 69 73 20 64 6f 6e 65 2e  parison is done.
3050: 0a 20 20 3c 70 3e 0a 20 20 54 68 69 73 20 63 6f  .  <p>.  This co
3060: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
3070: 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20 72  n makes SQLite r
3080: 75 6e 20 6d 6f 72 65 20 65 66 66 69 63 69 65 6e  un more efficien
3090: 74 6c 79 20 77 68 65 6e 20 70 72 6f 63 65 73 73  tly when process
30a0: 69 6e 67 0a 20 20 71 75 65 72 69 65 73 20 74 68  ing.  queries th
30b0: 61 74 20 75 73 65 20 74 68 65 20 5b 4c 49 4b 45  at use the [LIKE
30c0: 5d 20 6f 70 65 72 61 74 6f 72 2c 20 61 74 20 74  ] operator, at t
30d0: 68 65 20 65 78 70 65 6e 73 65 20 6f 66 20 62 72  he expense of br
30e0: 65 61 6b 69 6e 67 20 62 61 63 6b 77 61 72 64 73  eaking backwards
30f0: 0a 20 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  .  compatibility
3100: 2e 20 20 48 6f 77 65 76 65 72 2c 20 74 68 65 20  .  However, the 
3110: 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74  backwards compat
3120: 69 62 69 6c 69 74 79 20 62 72 65 61 6b 20 6d 61  ibility break ma
3130: 79 20 62 65 20 6f 6e 6c 79 0a 20 20 61 20 74 65  y be only.  a te
3140: 63 68 6e 69 63 61 6c 69 74 79 2e 20 20 54 68 65  chnicality.  The
3150: 72 65 20 77 61 73 20 61 20 6c 6f 6e 67 2d 73 74  re was a long-st
3160: 61 6e 64 69 6e 67 20 62 75 67 20 69 6e 20 74 68  anding bug in th
3170: 65 20 5b 4c 49 4b 45 5d 20 70 72 6f 63 65 73 73  e [LIKE] process
3180: 69 6e 67 20 6c 6f 67 69 63 0a 20 20 28 73 65 65  ing logic.  (see
3190: 20 5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e 73 71   [https://www.sq
31a0: 6c 69 74 65 2e 6f 72 67 2f 73 72 63 2f 69 6e 66  lite.org/src/inf
31b0: 6f 2f 30 35 66 34 33 62 65 38 66 64 64 61 39 66  o/05f43be8fdda9f
31c0: 5d 29 20 74 68 61 74 20 63 61 75 73 65 64 20 69  ]) that caused i
31d0: 74 20 74 6f 0a 20 20 6d 69 73 62 65 68 61 76 69  t to.  misbehavi
31e0: 6f 72 20 66 6f 72 20 42 4c 4f 42 20 6f 70 65 72  or for BLOB oper
31f0: 61 6e 64 73 20 61 6e 64 20 6e 6f 62 6f 64 79 20  ands and nobody 
3200: 6f 62 73 65 72 76 65 64 20 74 68 61 74 20 62 75  observed that bu
3210: 67 20 69 6e 20 6e 65 61 72 6c 79 0a 20 20 31 30  g in nearly.  10
3220: 20 79 65 61 72 73 20 6f 66 20 61 63 74 69 76 65   years of active
3230: 20 75 73 65 2e 20 20 53 6f 20 66 6f 72 20 6d 6f   use.  So for mo
3240: 72 65 20 75 73 65 72 73 2c 20 69 74 20 69 73 20  re users, it is 
3250: 70 72 6f 62 61 62 6c 79 20 73 61 66 65 20 74 6f  probably safe to
3260: 0a 20 20 65 6e 61 62 6c 65 20 74 68 69 73 20 63  .  enable this c
3270: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
3280: 6f 6e 20 61 6e 64 20 74 68 65 72 65 62 79 20 73  on and thereby s
3290: 61 76 65 20 61 20 6c 69 74 74 6c 65 20 43 50 55  ave a little CPU
32a0: 20 74 69 6d 65 0a 20 20 6f 6e 20 4c 49 4b 45 20   time.  on LIKE 
32b0: 71 75 65 72 69 65 73 2e 0a 20 20 3c 70 3e 0a 20  queries..  <p>. 
32c0: 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   This compile-ti
32d0: 6d 65 20 6f 70 74 69 6f 6e 20 61 66 66 65 63 74  me option affect
32e0: 73 20 74 68 65 20 53 51 4c 20 5b 4c 49 4b 45 5d  s the SQL [LIKE]
32f0: 20 6f 70 65 72 61 74 6f 72 20 6f 6e 6c 79 20 61   operator only a
3300: 6e 64 20 68 61 73 0a 20 20 6e 6f 20 69 6d 70 61  nd has.  no impa
3310: 63 74 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69 74  ct on the [sqlit
3320: 65 33 5f 73 74 72 6c 69 6b 65 28 29 5d 20 43 2d  e3_strlike()] C-
3330: 6c 61 6e 67 75 61 67 65 20 69 6e 74 65 72 66 61  language interfa
3340: 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ce..}..COMPILE_O
3350: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 41  PTION {SQLITE_MA
3360: 58 5f 4d 4d 41 50 5f 53 49 5a 45 3d 3c 69 3e 4e  X_MMAP_SIZE=<i>N
3370: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d  </i>} {.  This m
3380: 61 63 72 6f 20 73 65 74 73 20 61 20 68 61 72 64  acro sets a hard
3390: 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20   upper bound on 
33a0: 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 61 64  the amount of ad
33b0: 64 72 65 73 73 20 73 70 61 63 65 20 74 68 61 74  dress space that
33c0: 0a 20 20 63 61 6e 20 62 65 20 75 73 65 64 20 62  .  can be used b
33d0: 79 20 61 6e 79 20 73 69 6e 67 6c 65 20 64 61 74  y any single dat
33e0: 61 62 61 73 65 20 66 6f 72 20 6d 65 6d 6f 72 79  abase for memory
33f0: 2d 6d 61 70 70 65 64 20 49 2f 4f 2e 0a 20 20 53  -mapped I/O..  S
3400: 65 74 74 69 6e 67 20 74 68 69 73 20 76 61 6c 75  etting this valu
3410: 65 20 74 6f 20 30 20 63 6f 6d 70 6c 65 74 65 6c  e to 0 completel
3420: 79 20 64 69 73 61 62 6c 65 73 20 6d 65 6d 6f 72  y disables memor
3430: 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20 61 6e 64  y-mapped I/O and
3440: 0a 20 20 63 61 75 73 65 73 20 6c 6f 67 69 63 20  .  causes logic 
3450: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
3460: 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f  memory-mapped I/
3470: 4f 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 20  O to be omitted 
3480: 66 72 6f 6d 20 74 68 65 0a 20 20 62 75 69 6c 64  from the.  build
3490: 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  .  This option d
34a0: 6f 65 73 20 63 68 61 6e 67 65 20 74 68 65 20 64  oes change the d
34b0: 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 2d 6d 61  efault memory-ma
34c0: 70 70 65 64 20 49 2f 4f 20 61 64 64 72 65 73 73  pped I/O address
34d0: 0a 20 20 73 70 61 63 65 20 73 69 7a 65 20 28 73  .  space size (s
34e0: 65 74 20 62 79 20 5b 53 51 4c 49 54 45 5f 44 45  et by [SQLITE_DE
34f0: 46 41 55 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45 5d  FAULT_MMAP_SIZE]
3500: 20 6f 72 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f   or.  sqlite3_co
3510: 6e 66 69 67 28 5b 53 51 4c 49 54 45 5f 43 4f 4e  nfig([SQLITE_CON
3520: 46 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20  FIG_MMAP_SIZE]) 
3530: 6f 72 20 74 68 65 0a 20 20 72 75 6e 2d 74 69 6d  or the.  run-tim
3540: 65 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20  e memory-mapped 
3550: 49 2f 4f 20 61 64 64 72 65 73 73 20 73 70 61 63  I/O address spac
3560: 65 20 73 69 7a 65 20 28 73 65 74 20 62 79 0a 20  e size (set by. 
3570: 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f   sqlite3_file_co
3580: 6e 74 72 6f 6c 28 5b 53 51 4c 49 54 45 5f 46 43  ntrol([SQLITE_FC
3590: 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20  NTL_MMAP_SIZE]) 
35a0: 6f 72 0a 20 20 5b 50 52 41 47 4d 41 20 6d 6d 61  or.  [PRAGMA mma
35b0: 70 5f 73 69 7a 65 5d 29 20 61 73 20 6c 6f 6e 67  p_size]) as long
35c0: 20 61 73 20 74 68 6f 73 65 20 6f 74 68 65 72 20   as those other 
35d0: 73 65 74 74 69 6e 67 73 20 61 72 65 20 6c 65 73  settings are les
35e0: 73 20 74 68 61 6e 20 74 68 65 0a 20 20 6d 61 78  s than the.  max
35f0: 69 6d 75 6d 20 76 61 6c 75 65 20 64 65 66 69 6e  imum value defin
3600: 65 64 20 68 65 72 65 2e 0a 7d 0a 0a 43 4f 4d 50  ed here..}..COMP
3610: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
3620: 54 45 5f 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45  TE_MAX_SCHEMA_RE
3630: 54 52 59 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a  TRY=<i>N</i>} {.
3640: 20 20 57 68 65 6e 65 76 65 72 20 74 68 65 20 64    Whenever the d
3650: 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 63  atabase schema c
3660: 68 61 6e 67 65 73 2c 20 70 72 65 70 61 72 65 64  hanges, prepared
3670: 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20   statements are 
3680: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 20 20  automatically.  
3690: 72 65 70 72 65 70 61 72 65 64 20 74 6f 20 61 63  reprepared to ac
36a0: 63 6f 6d 6d 6f 64 61 74 65 20 74 68 65 20 6e 65  commodate the ne
36b0: 77 20 73 63 68 65 6d 61 2e 20 20 54 68 65 72 65  w schema.  There
36c0: 20 69 73 20 61 20 72 61 63 65 20 63 6f 6e 64 69   is a race condi
36d0: 74 69 6f 6e 20 68 65 72 65 0a 20 20 69 6e 20 74  tion here.  in t
36e0: 68 61 74 20 69 66 20 6f 6e 65 20 74 68 72 65 61  hat if one threa
36f0: 64 20 69 73 20 63 6f 6e 73 74 61 6e 74 6c 79 20  d is constantly 
3700: 63 68 61 6e 67 69 6e 67 20 74 68 65 20 73 63 68  changing the sch
3710: 65 6d 61 2c 20 61 6e 6f 74 68 65 72 20 74 68 72  ema, another thr
3720: 65 61 64 0a 20 20 6d 69 67 68 74 20 73 70 69 6e  ead.  might spin
3730: 20 6f 6e 20 72 65 70 61 72 73 65 73 20 61 6e 64   on reparses and
3740: 20 72 65 70 72 65 70 61 72 61 74 69 6f 6e 73 20   repreparations 
3750: 6f 66 20 61 20 70 72 65 70 61 72 65 64 20 73 74  of a prepared st
3760: 61 74 65 6d 65 6e 74 20 61 6e 64 0a 20 20 6e 65  atement and.  ne
3770: 76 65 72 20 67 65 74 20 61 6e 79 20 72 65 61 6c  ver get any real
3780: 20 77 6f 72 6b 20 64 6f 6e 65 2e 20 20 54 68 69   work done.  Thi
3790: 73 20 70 61 72 61 6d 65 74 65 72 20 70 72 65 76  s parameter prev
37a0: 65 6e 74 73 20 61 6e 20 69 6e 66 69 6e 69 74 65  ents an infinite
37b0: 20 6c 6f 6f 70 0a 20 20 62 79 20 66 6f 72 63 69   loop.  by forci
37c0: 6e 67 20 74 68 65 20 73 70 69 6e 6e 69 6e 67 20  ng the spinning 
37d0: 74 68 72 65 61 64 20 74 6f 20 67 69 76 65 20 75  thread to give u
37e0: 70 20 61 66 74 65 72 20 61 20 66 69 78 65 64 20  p after a fixed 
37f0: 6e 75 6d 62 65 72 20 6f 66 20 61 74 74 65 6d 70  number of attemp
3800: 74 73 0a 20 20 61 74 20 72 65 63 6f 6d 70 69 6c  ts.  at recompil
3810: 69 6e 67 20 74 68 65 20 70 72 65 70 61 72 65 64  ing the prepared
3820: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65   statement.  The
3830: 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67   default setting
3840: 20 69 73 20 35 30 20 77 68 69 63 68 20 69 73 0a   is 50 which is.
3850: 20 20 6d 6f 72 65 20 74 68 61 6e 20 61 64 65 71    more than adeq
3860: 75 61 74 65 20 66 6f 72 20 6d 6f 73 74 20 61 70  uate for most ap
3870: 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43  plications..}..C
3880: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
3890: 51 4c 49 54 45 5f 4d 41 58 5f 57 4f 52 4b 45 52  QLITE_MAX_WORKER
38a0: 5f 54 48 52 45 41 44 53 3d 3c 69 3e 4e 3c 2f 69  _THREADS=<i>N</i
38b0: 3e 7d 20 7b 0a 20 20 53 65 74 20 61 6e 20 75 70  >} {.  Set an up
38c0: 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65  per bound on the
38d0: 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 5d   [sqlite3_limit]
38e0: 28 64 62 2c 5b 53 51 4c 49 54 45 5f 4c 49 4d 49  (db,[SQLITE_LIMI
38f0: 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53  T_WORKER_THREADS
3900: 5d 2c 4e 29 0a 20 20 73 65 74 74 69 6e 67 20 74  ],N).  setting t
3910: 68 61 74 20 64 65 74 65 72 6d 69 6e 65 73 20 74  hat determines t
3920: 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65  he maximum numbe
3930: 72 20 6f 66 20 61 75 78 69 6c 69 61 72 79 20 74  r of auxiliary t
3940: 68 72 65 61 64 73 20 74 68 61 74 20 61 20 73 69  hreads that a si
3950: 6e 67 6c 65 0a 20 20 5b 70 72 65 70 61 72 65 64  ngle.  [prepared
3960: 20 73 74 61 74 65 6d 65 6e 74 5d 20 77 69 6c 6c   statement] will
3970: 20 75 73 65 20 74 6f 20 61 69 64 20 77 69 74 68   use to aid with
3980: 20 43 50 55 2d 69 6e 74 65 6e 73 69 76 65 20 63   CPU-intensive c
3990: 6f 6d 70 75 74 61 74 69 6f 6e 73 0a 20 20 28 6d  omputations.  (m
39a0: 6f 73 74 6c 79 20 73 6f 72 74 69 6e 67 29 2e 20  ostly sorting). 
39b0: 20 53 65 65 20 61 6c 73 6f 20 74 68 65 20 5b 53   See also the [S
39c0: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 4f  QLITE_DEFAULT_WO
39d0: 52 4b 45 52 5f 54 48 52 45 41 44 53 5d 20 6f 70  RKER_THREADS] op
39e0: 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  tions..}..COMPIL
39f0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
3a00: 5f 4d 49 4e 49 4d 55 4d 5f 46 49 4c 45 5f 44 45  _MINIMUM_FILE_DE
3a10: 53 43 52 49 50 54 4f 52 3d 3c 69 3e 4e 3c 2f 69  SCRIPTOR=<i>N</i
3a20: 3e 7d 20 7b 0a 20 20 54 68 65 20 75 6e 69 78 20  >} {.  The unix 
3a30: 5b 56 46 53 5d 20 77 69 6c 6c 20 6e 65 76 65 72  [VFS] will never
3a40: 20 75 73 65 20 61 20 66 69 6c 65 20 64 65 73 63   use a file desc
3a50: 72 69 70 74 6f 72 20 6c 65 73 73 20 74 68 61 6e  riptor less than
3a60: 20 3c 69 3e 4e 3c 2f 69 3e 2e 20 20 54 68 65 0a   <i>N</i>.  The.
3a70: 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20    default value 
3a80: 6f 66 20 3c 69 3e 4e 3c 2f 69 3e 20 69 73 20 33  of <i>N</i> is 3
3a90: 2e 0a 20 20 3c 70 3e 0a 20 20 41 76 6f 69 64 69  ..  <p>.  Avoidi
3aa0: 6e 67 20 74 68 65 20 75 73 65 20 6f 66 20 6c 6f  ng the use of lo
3ab0: 77 2d 6e 75 6d 62 65 72 65 64 20 66 69 6c 65 20  w-numbered file 
3ac0: 64 65 73 63 72 69 70 74 6f 72 73 20 69 73 20 61  descriptors is a
3ad0: 20 64 65 66 65 6e 73 65 20 61 67 61 69 6e 73 74   defense against
3ae0: 0a 20 20 61 63 63 69 64 65 6e 74 61 6c 20 64 61  .  accidental da
3af0: 74 61 62 61 73 65 20 63 6f 72 72 75 70 74 69 6f  tabase corruptio
3b00: 6e 2e 20 20 49 66 20 61 20 64 61 74 61 62 61 73  n.  If a databas
3b10: 65 20 66 69 6c 65 20 77 61 73 20 6f 70 65 6e 65  e file was opene
3b20: 64 20 75 73 69 6e 67 0a 20 20 66 69 6c 65 20 64  d using.  file d
3b30: 65 73 63 72 69 70 74 6f 72 20 32 2c 20 66 6f 72  escriptor 2, for
3b40: 20 65 78 61 6d 70 6c 65 2c 20 61 6e 64 20 74 68   example, and th
3b50: 65 6e 20 61 6e 20 61 73 73 65 72 74 28 29 20 66  en an assert() f
3b60: 61 69 6c 65 64 20 61 6e 64 20 69 6e 76 6f 6b 65  ailed and invoke
3b70: 64 0a 20 20 77 72 69 74 65 28 32 2c 2e 2e 2e 29  d.  write(2,...)
3b80: 2c 20 74 68 61 74 20 77 6f 75 6c 64 20 6c 69 6b  , that would lik
3b90: 65 6c 79 20 63 61 75 73 65 20 64 61 74 61 62 61  ely cause databa
3ba0: 73 65 20 63 6f 72 72 75 70 74 69 6f 6e 20 62 79  se corruption by
3bb0: 20 6f 76 65 72 77 72 69 74 69 6e 67 0a 20 20 70   overwriting.  p
3bc0: 61 72 74 20 6f 66 20 74 68 65 20 64 61 74 61 62  art of the datab
3bd0: 61 73 65 20 66 69 6c 65 20 77 69 74 68 20 74 68  ase file with th
3be0: 65 20 61 73 73 65 72 74 69 6f 6e 20 65 72 72 6f  e assertion erro
3bf0: 72 20 6d 65 73 73 61 67 65 2e 20 20 55 73 69 6e  r message.  Usin
3c00: 67 20 6f 6e 6c 79 0a 20 20 68 69 67 68 65 72 2d  g only.  higher-
3c10: 76 61 6c 75 65 64 20 66 69 6c 65 20 64 65 73 63  valued file desc
3c20: 72 69 70 74 6f 72 73 20 61 76 6f 69 64 73 20 74  riptors avoids t
3c30: 68 69 73 20 70 6f 74 65 6e 74 69 61 6c 20 70 72  his potential pr
3c40: 6f 62 6c 65 6d 2e 20 20 54 68 65 20 0a 20 20 70  oblem.  The .  p
3c50: 72 6f 74 65 63 74 69 6f 6e 20 61 67 61 69 6e 73  rotection agains
3c60: 74 0a 20 20 75 73 69 6e 67 20 6c 6f 77 2d 6e 75  t.  using low-nu
3c70: 6d 62 65 72 65 64 20 66 69 6c 65 20 64 65 73 63  mbered file desc
3c80: 72 69 70 74 6f 72 73 20 63 61 6e 20 62 65 20 64  riptors can be d
3c90: 69 73 61 62 6c 65 64 20 62 79 20 73 65 74 74 69  isabled by setti
3ca0: 6e 67 20 74 68 69 73 0a 20 20 63 6f 6d 70 69 6c  ng this.  compil
3cb0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 6f  e-time option to
3cc0: 20 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f   0..}..COMPILE_O
3cd0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 50 4f  PTION {SQLITE_PO
3ce0: 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54  WERSAFE_OVERWRIT
3cf0: 45 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26  E=<i>&lt;0 or 1&
3d00: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
3d10: 73 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65 73  s option changes
3d20: 20 74 68 65 20 64 65 66 61 75 6c 74 20 61 73 73   the default ass
3d30: 75 6d 70 74 69 6f 6e 20 61 62 6f 75 74 20 5b 70  umption about [p
3d40: 6f 77 65 72 73 61 66 65 20 6f 76 65 72 77 72 69  owersafe overwri
3d50: 74 65 5d 0a 20 20 66 6f 72 20 74 68 65 20 75 6e  te].  for the un
3d60: 64 65 72 6c 79 69 6e 67 20 66 69 6c 65 73 79 73  derlying filesys
3d70: 74 65 6d 73 20 66 6f 72 20 74 68 65 20 75 6e 69  tems for the uni
3d80: 78 20 61 6e 64 20 77 69 6e 64 6f 77 73 20 5b 56  x and windows [V
3d90: 46 53 65 73 5d 2e 0a 20 20 53 65 74 74 69 6e 67  FSes]..  Setting
3da0: 20 53 51 4c 49 54 45 5f 50 4f 57 45 52 53 41 46   SQLITE_POWERSAF
3db0: 45 5f 4f 56 45 52 57 52 49 54 45 20 74 6f 20 31  E_OVERWRITE to 1
3dc0: 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
3dd0: 6f 20 61 73 73 75 6d 65 20 74 68 61 74 0a 20 20  o assume that.  
3de0: 61 70 70 6c 69 63 61 74 69 6f 6e 2d 6c 65 76 65  application-leve
3df0: 6c 20 77 72 69 74 65 73 20 63 61 6e 6e 6f 74 20  l writes cannot 
3e00: 63 68 61 6e 67 65 73 20 62 79 74 65 73 20 6f 75  changes bytes ou
3e10: 74 73 69 64 65 20 74 68 65 20 72 61 6e 67 65 20  tside the range 
3e20: 6f 66 0a 20 20 62 79 74 65 73 20 77 72 69 74 74  of.  bytes writt
3e30: 65 6e 20 65 76 65 6e 20 69 66 20 74 68 65 20 77  en even if the w
3e40: 72 69 74 65 20 6f 63 63 75 72 73 20 6a 75 73 74  rite occurs just
3e50: 20 62 65 66 6f 72 65 20 61 20 70 6f 77 65 72 20   before a power 
3e60: 6c 6f 73 73 2e 0a 20 20 57 69 74 68 20 53 51 4c  loss..  With SQL
3e70: 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56  ITE_POWERSAFE_OV
3e80: 45 52 57 52 49 54 45 20 73 65 74 20 74 6f 20 30  ERWRITE set to 0
3e90: 2c 20 53 51 4c 69 74 65 20 61 73 73 75 6d 65 73  , SQLite assumes
3ea0: 20 74 68 61 74 20 6f 74 68 65 72 0a 20 20 62 79   that other.  by
3eb0: 74 65 73 20 69 6e 20 74 68 65 20 73 61 6d 65 20  tes in the same 
3ec0: 73 65 63 74 6f 72 20 77 69 74 68 20 61 20 77 72  sector with a wr
3ed0: 69 74 74 65 6e 20 62 79 74 65 20 6d 69 67 68 74  itten byte might
3ee0: 20 62 65 20 63 68 61 6e 67 65 64 20 6f 72 20 0a   be changed or .
3ef0: 20 20 64 61 6d 61 67 65 64 20 62 79 20 61 20 70    damaged by a p
3f00: 6f 77 65 72 20 6c 6f 73 73 2e 0a 7d 0a 0a 43 4f  ower loss..}..CO
3f10: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
3f20: 4c 49 54 45 5f 52 45 56 45 52 53 45 5f 55 4e 4f  LITE_REVERSE_UNO
3f30: 52 44 45 52 45 44 5f 53 45 4c 45 43 54 53 7d 20  RDERED_SELECTS} 
3f40: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
3f50: 63 61 75 73 65 73 20 74 68 65 20 5b 50 52 41 47  causes the [PRAG
3f60: 4d 41 20 72 65 76 65 72 73 65 5f 75 6e 6f 72 64  MA reverse_unord
3f70: 65 72 65 64 5f 73 65 6c 65 63 74 73 5d 20 73 65  ered_selects] se
3f80: 74 74 69 6e 67 20 74 6f 20 62 65 0a 20 20 65 6e  tting to be.  en
3f90: 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74  abled by default
3fa0: 2e 20 20 57 68 65 6e 20 65 6e 61 62 6c 65 64 2c  .  When enabled,
3fb0: 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d   [SELECT] statem
3fc0: 65 6e 74 73 20 74 68 61 74 20 6c 61 63 6b 20 61  ents that lack a
3fd0: 6e 0a 20 20 4f 52 44 45 52 20 42 59 20 63 6c 61  n.  ORDER BY cla
3fe0: 75 73 65 20 77 69 6c 6c 20 72 75 6e 20 69 6e 20  use will run in 
3ff0: 72 65 76 65 72 73 65 20 6f 72 64 65 72 2e 3c 70  reverse order.<p
4000: 3e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  >.  This option 
4010: 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20 64 65  is useful for de
4020: 74 65 63 74 69 6e 67 20 77 68 65 6e 20 61 70 70  tecting when app
4030: 6c 69 63 61 74 69 6f 6e 73 20 28 69 6e 63 6f 72  lications (incor
4040: 72 65 63 74 6c 79 29 0a 20 20 61 73 73 75 6d 65  rectly).  assume
4050: 20 74 68 61 74 20 74 68 65 20 6f 72 64 65 72 20   that the order 
4060: 6f 66 20 72 6f 77 73 20 69 6e 20 61 20 53 45 4c  of rows in a SEL
4070: 45 43 54 20 77 69 74 68 6f 75 74 20 61 6e 20 4f  ECT without an O
4080: 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 0a 20  RDER BY clause. 
4090: 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65 20   will always be 
40a0: 74 68 65 20 73 61 6d 65 2e 0a 7d 0a 0a 43 4f 4d  the same..}..COM
40b0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
40c0: 49 54 45 5f 53 4f 52 54 45 52 5f 50 4d 41 53 5a  ITE_SORTER_PMASZ
40d0: 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49  =<i>N</i>} {.  I
40e0: 66 20 6d 75 6c 74 69 2d 74 68 72 65 61 64 65 64  f multi-threaded
40f0: 20 70 72 6f 63 65 73 73 69 6e 67 20 69 73 20 65   processing is e
4100: 6e 61 62 6c 65 64 20 76 69 61 20 74 68 65 0a 20  nabled via the. 
4110: 20 5b 50 52 41 47 4d 41 20 74 68 72 65 61 64 73   [PRAGMA threads
4120: 5d 20 73 65 74 74 69 6e 67 2c 20 74 68 65 6e 20  ] setting, then 
4130: 73 6f 72 74 20 6f 70 65 72 61 74 69 6f 6e 73 20  sort operations 
4140: 77 69 6c 6c 0a 20 20 61 74 74 65 6d 70 74 20 74  will.  attempt t
4150: 6f 20 73 74 61 72 74 20 68 65 6c 70 65 72 20 74  o start helper t
4160: 68 72 65 61 64 73 20 77 68 65 6e 20 74 68 65 20  hreads when the 
4170: 61 6d 6f 75 6e 74 20 6f 66 20 63 6f 6e 74 65 6e  amount of conten
4180: 74 0a 20 20 74 6f 20 62 65 20 73 6f 72 74 65 64  t.  to be sorted
4190: 20 65 78 63 65 65 64 73 20 74 68 65 20 6d 69 6e   exceeds the min
41a0: 69 6d 75 6d 20 6f 66 20 74 68 65 20 5b 63 61 63  imum of the [cac
41b0: 68 65 5f 73 69 7a 65 5d 20 61 6e 64 20 50 4d 41  he_size] and PMA
41c0: 20 53 69 7a 65 0a 20 20 64 65 74 65 72 6d 69 6e   Size.  determin
41d0: 65 64 20 62 79 20 74 68 65 20 5b 53 51 4c 49 54  ed by the [SQLIT
41e0: 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 5d 20  E_CONFIG_PMASZ] 
41f0: 73 74 61 72 74 2d 74 69 6d 65 20 6f 70 74 69 6f  start-time optio
4200: 6e 2e 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c  n..  This compil
4210: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 73 65  e-time option se
4220: 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 76  ts the default v
4230: 61 6c 75 65 20 66 6f 72 20 74 68 65 0a 20 20 5b  alue for the.  [
4240: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d  SQLITE_CONFIG_PM
4250: 41 53 5a 5d 20 73 74 61 72 74 2d 74 69 6d 65 20  ASZ] start-time 
4260: 6f 70 74 69 6f 6e 2e 0a 20 20 54 68 65 20 64 65  option..  The de
4270: 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 32  fault value is 2
4280: 35 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  50..}..COMPILE_O
4290: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 54  PTION {SQLITE_ST
42a0: 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 3d 3c 69 3e  MTJRNL_SPILL=<i>
42b0: 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20 53  N</i>} {.  The S
42c0: 51 4c 49 54 45 5f 53 54 4d 54 4a 52 4e 4c 5f 53  QLITE_STMTJRNL_S
42d0: 50 49 4c 4c 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  PILL compile-tim
42e0: 65 20 6f 70 74 69 6f 6e 20 64 65 74 65 72 6d 69  e option determi
42f0: 6e 65 73 20 74 68 65 0a 20 20 64 65 66 61 75 6c  nes the.  defaul
4300: 74 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68 65  t setting of the
4310: 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
4320: 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 5d 20  STMTJRNL_SPILL] 
4330: 73 74 61 72 74 2d 74 69 6d 65 0a 20 20 73 65 74  start-time.  set
4340: 74 69 6e 67 2e 20 20 54 68 61 74 20 73 65 74 74  ting.  That sett
4350: 69 6e 67 20 64 65 74 65 72 6d 69 6e 65 73 20 74  ing determines t
4360: 68 65 20 73 69 7a 65 20 74 68 72 65 73 68 6f 6c  he size threshol
4370: 64 20 61 62 6f 76 65 20 77 68 69 63 68 0a 20 20  d above which.  
4380: 5b 73 74 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e  [statement journ
4390: 61 6c 73 5d 20 61 72 65 20 6d 6f 76 65 64 20 66  als] are moved f
43a0: 72 6f 6d 20 6d 65 6d 6f 72 79 20 74 6f 20 64 69  rom memory to di
43b0: 73 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  sk..}..COMPILE_O
43c0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49  PTION {SQLITE_WI
43d0: 4e 33 32 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20  N32_MALLOC} {.  
43e0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62  This option enab
43f0: 6c 65 73 20 74 68 65 20 75 73 65 20 6f 66 20 74  les the use of t
4400: 68 65 20 57 69 6e 64 6f 77 73 20 48 65 61 70 20  he Windows Heap 
4410: 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f  API functions fo
4420: 72 20 6d 65 6d 6f 72 79 0a 20 20 61 6c 6c 6f 63  r memory.  alloc
4430: 61 74 69 6f 6e 20 69 6e 73 74 65 61 64 20 6f 66  ation instead of
4440: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 6c 69   the standard li
4450: 62 72 61 72 79 20 6d 61 6c 6c 6f 63 28 29 20 61  brary malloc() a
4460: 6e 64 20 66 72 65 65 28 29 20 72 6f 75 74 69 6e  nd free() routin
4470: 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  es..}..COMPILE_O
4480: 50 54 49 4f 4e 20 7b 59 59 53 54 41 43 4b 44 45  PTION {YYSTACKDE
4490: 50 54 48 3d 3c 69 3e 26 6c 74 3b 6d 61 78 5f 64  PTH=<i>&lt;max_d
44a0: 65 70 74 68 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  epth&gt;</i>} {.
44b0: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74    This macro set
44c0: 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 64 65  s the maximum de
44d0: 70 74 68 20 6f 66 20 74 68 65 20 4c 41 4c 52 28  pth of the LALR(
44e0: 31 29 20 73 74 61 63 6b 20 75 73 65 64 20 62 79  1) stack used by
44f0: 0a 20 20 74 68 65 20 53 51 4c 20 70 61 72 73 65  .  the SQL parse
4500: 72 20 77 69 74 68 69 6e 20 53 51 4c 69 74 65 2e  r within SQLite.
4510: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 61    The default va
4520: 6c 75 65 20 69 73 20 31 30 30 2e 20 20 41 20 74  lue is 100.  A t
4530: 79 70 69 63 61 6c 0a 20 20 61 70 70 6c 69 63 61  ypical.  applica
4540: 74 69 6f 6e 20 77 69 6c 6c 20 75 73 65 20 6c 65  tion will use le
4550: 73 73 20 74 68 61 6e 20 61 62 6f 75 74 20 32 30  ss than about 20
4560: 20 6c 65 76 65 6c 73 20 6f 66 20 74 68 65 20 73   levels of the s
4570: 74 61 63 6b 2e 0a 20 20 44 65 76 65 6c 6f 70 65  tack..  Develope
4580: 72 73 20 77 68 6f 73 65 20 61 70 70 6c 69 63 61  rs whose applica
4590: 74 69 6f 6e 73 20 63 6f 6e 74 61 69 6e 20 53 51  tions contain SQ
45a0: 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61  L statements tha
45b0: 74 20 0a 20 20 6e 65 65 64 20 6d 6f 72 65 20 74  t .  need more t
45c0: 68 61 6e 20 31 30 30 20 4c 41 4c 52 28 31 29 20  han 100 LALR(1) 
45d0: 73 74 61 63 6b 20 65 6e 74 72 69 65 73 20 73 68  stack entries sh
45e0: 6f 75 6c 64 20 73 65 72 69 6f 75 73 6c 79 0a 20  ould seriously. 
45f0: 20 63 6f 6e 73 69 64 65 72 20 72 65 66 61 63 74   consider refact
4600: 6f 72 69 6e 67 20 74 68 65 69 72 20 53 51 4c 20  oring their SQL 
4610: 61 73 20 69 74 20 69 73 20 6c 69 6b 65 6c 79 20  as it is likely 
4620: 74 6f 20 62 65 20 77 65 6c 6c 20 62 65 79 6f 6e  to be well beyon
4630: 64 0a 20 20 74 68 65 20 61 62 69 6c 69 74 79 20  d.  the ability 
4640: 6f 66 20 61 6e 79 20 68 75 6d 61 6e 20 74 6f 20  of any human to 
4650: 63 6f 6d 70 72 65 68 65 6e 64 2e 0a 7d 0a 3c 2f  comprehend..}.</
4660: 74 63 6c 3e 0a 0a 3c 68 32 3e 31 2e 33 20 4f 70  tcl>..<h2>1.3 Op
4670: 74 69 6f 6e 73 20 54 6f 20 53 65 74 20 53 69 7a  tions To Set Siz
4680: 65 20 4c 69 6d 69 74 73 3c 2f 68 32 3e 0a 0a 3c  e Limits</h2>..<
4690: 70 3e 54 68 65 72 65 20 61 72 65 20 63 6f 6d 70  p>There are comp
46a0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
46b0: 20 74 68 61 74 20 77 69 6c 6c 20 73 65 74 20 75   that will set u
46c0: 70 70 65 72 20 62 6f 75 6e 64 73 0a 6f 6e 20 74  pper bounds.on t
46d0: 68 65 20 73 69 7a 65 73 20 6f 66 20 76 61 72 69  he sizes of vari
46e0: 6f 75 73 20 73 74 72 75 63 74 75 72 65 73 20 69  ous structures i
46f0: 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 65 20 63  n SQLite.  The c
4700: 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74 69  ompile-time.opti
4710: 6f 6e 73 20 6e 6f 72 6d 61 6c 6c 79 20 73 65 74  ons normally set
4720: 20 61 20 68 61 72 64 20 75 70 70 65 72 20 62 6f   a hard upper bo
4730: 75 6e 64 20 74 68 61 74 20 63 61 6e 20 62 65 20  und that can be 
4740: 63 68 61 6e 67 65 64 0a 61 74 20 72 75 6e 2d 74  changed.at run-t
4750: 69 6d 65 20 6f 6e 20 69 6e 64 69 76 69 64 75 61  ime on individua
4760: 6c 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  l [database conn
4770: 65 63 74 69 6f 6e 73 5d 20 75 73 69 6e 67 20 74  ections] using t
4780: 68 65 0a 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69  he.[sqlite3_limi
4790: 74 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 3c  t()] interface.<
47a0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f 6d 70  /p>..<p>The comp
47b0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
47c0: 20 66 6f 72 20 73 65 74 74 69 6e 67 20 75 70 70   for setting upp
47d0: 65 72 20 62 6f 75 6e 64 73 20 61 72 65 0a 5b 6c  er bounds are.[l
47e0: 69 6d 69 74 73 20 7c 20 64 6f 63 75 6d 65 6e 74  imits | document
47f0: 65 64 20 73 65 70 61 72 61 74 65 6c 79 5d 2e 20  ed separately]. 
4800: 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 69   The following i
4810: 73 20 61 20 6c 69 73 74 20 6f 66 0a 74 68 65 20  s a list of.the 
4820: 61 76 61 69 6c 61 62 6c 65 20 73 65 74 74 69 6e  available settin
4830: 67 73 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c  gs:</p>..<ul>.<l
4840: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 41  i> [SQLITE_MAX_A
4850: 54 54 41 43 48 45 44 5d 20 20 3c 2f 6c 69 3e 0a  TTACHED]  </li>.
4860: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58  <li> [SQLITE_MAX
4870: 5f 43 4f 4c 55 4d 4e 5d 20 20 3c 2f 6c 69 3e 0a  _COLUMN]  </li>.
4880: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58  <li> [SQLITE_MAX
4890: 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54  _COMPOUND_SELECT
48a0: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
48b0: 51 4c 49 54 45 5f 4d 41 58 5f 45 58 50 52 5f 44  QLITE_MAX_EXPR_D
48c0: 45 50 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69  EPTH]  </li>.<li
48d0: 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 46 55  > [SQLITE_MAX_FU
48e0: 4e 43 54 49 4f 4e 5f 41 52 47 5d 20 20 3c 2f 6c  NCTION_ARG]  </l
48f0: 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  i>.<li> [SQLITE_
4900: 4d 41 58 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c  MAX_LENGTH]  </l
4910: 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  i>.<li> [SQLITE_
4920: 4d 41 58 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e  MAX_LIKE_PATTERN
4930: 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a  _LENGTH]  </li>.
4940: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58  <li> [SQLITE_MAX
4950: 5f 50 41 47 45 5f 43 4f 55 4e 54 5d 20 20 3c 2f  _PAGE_COUNT]  </
4960: 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  li>.<li> [SQLITE
4970: 5f 4d 41 58 5f 53 51 4c 5f 4c 45 4e 47 54 48 5d  _MAX_SQL_LENGTH]
4980: 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51    </li>.<li> [SQ
4990: 4c 49 54 45 5f 4d 41 58 5f 56 41 52 49 41 42 4c  LITE_MAX_VARIABL
49a0: 45 5f 4e 55 4d 42 45 52 5d 20 20 3c 2f 6c 69 3e  E_NUMBER]  </li>
49b0: 0a 3c 2f 75 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d  .</ul>..<a name=
49c0: 22 63 6f 6e 74 72 6f 6c 66 65 61 74 75 72 65 73  "controlfeatures
49d0: 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 34 20 4f  "></a>.<h2>1.4 O
49e0: 70 74 69 6f 6e 73 20 54 6f 20 43 6f 6e 74 72 6f  ptions To Contro
49f0: 6c 20 4f 70 65 72 61 74 69 6e 67 20 43 68 61 72  l Operating Char
4a00: 61 63 74 65 72 69 73 74 69 63 73 3c 2f 68 32 3e  acteristics</h2>
4a10: 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f  ..<tcl>.COMPILE_
4a20: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 34  OPTION {SQLITE_4
4a30: 5f 42 59 54 45 5f 41 4c 49 47 4e 45 44 5f 4d 41  _BYTE_ALIGNED_MA
4a40: 4c 4c 4f 43 7d 20 7b 0a 20 20 4f 6e 20 6d 6f 73  LLOC} {.  On mos
4a50: 74 20 73 79 73 74 65 6d 73 2c 20 74 68 65 20 6d  t systems, the m
4a60: 61 6c 6c 6f 63 28 29 20 73 79 73 74 65 6d 20 63  alloc() system c
4a70: 61 6c 6c 20 72 65 74 75 72 6e 73 20 61 20 62 75  all returns a bu
4a80: 66 66 65 72 20 74 68 61 74 20 69 73 0a 20 20 61  ffer that is.  a
4a90: 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20 38 2d 62  ligned to an 8-b
4aa0: 79 74 65 20 62 6f 75 6e 64 61 72 79 2e 20 20 42  yte boundary.  B
4ab0: 75 74 20 6f 6e 20 73 6f 6d 65 20 73 79 73 74 65  ut on some syste
4ac0: 6d 73 20 28 65 78 3a 20 77 69 6e 64 6f 77 73 29  ms (ex: windows)
4ad0: 20 6d 61 6c 6c 6f 63 28 29 0a 20 20 72 65 74 75   malloc().  retu
4ae0: 72 6e 73 20 34 2d 62 79 74 65 20 61 6c 69 67 6e  rns 4-byte align
4af0: 65 64 20 70 6f 69 6e 74 65 72 2e 20 20 54 68 69  ed pointer.  Thi
4b00: 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
4b10: 70 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 75 73  ption must be us
4b20: 65 64 0a 20 20 6f 6e 20 73 79 73 74 65 6d 73 20  ed.  on systems 
4b30: 74 68 61 74 20 72 65 74 75 72 6e 20 34 2d 62 79  that return 4-by
4b40: 74 65 20 61 6c 69 67 6e 65 64 20 70 6f 69 6e 74  te aligned point
4b50: 65 72 73 20 66 72 6f 6d 20 6d 61 6c 6c 6f 63 28  ers from malloc(
4b60: 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  )..}..COMPILE_OP
4b70: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 43 41 53  TION {SQLITE_CAS
4b80: 45 5f 53 45 4e 53 49 54 49 56 45 5f 4c 49 4b 45  E_SENSITIVE_LIKE
4b90: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70  } {.  If this op
4ba0: 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e 74 2c  tion is present,
4bb0: 20 74 68 65 6e 20 74 68 65 20 62 75 69 6c 74 2d   then the built-
4bc0: 69 6e 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74  in [LIKE] operat
4bd0: 6f 72 20 77 69 6c 6c 20 62 65 0a 20 20 63 61 73  or will be.  cas
4be0: 65 20 73 65 6e 73 69 74 69 76 65 2e 20 20 54 68  e sensitive.  Th
4bf0: 69 73 20 73 61 6d 65 20 65 66 66 65 63 74 20 63  is same effect c
4c00: 61 6e 20 62 65 20 61 63 68 69 65 76 65 64 20 61  an be achieved a
4c10: 74 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67  t run-time using
4c20: 0a 20 20 74 68 65 20 5b 63 61 73 65 5f 73 65 6e  .  the [case_sen
4c30: 73 69 74 69 76 65 5f 6c 69 6b 65 20 70 72 61 67  sitive_like prag
4c40: 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ma]..}..COMPILE_
4c50: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
4c60: 49 52 45 43 54 5f 4f 56 45 52 46 4c 4f 57 5f 52  IRECT_OVERFLOW_R
4c70: 45 41 44 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  EAD} {.  When th
4c80: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65  is option is pre
4c90: 73 65 6e 74 2c 20 63 6f 6e 74 65 6e 74 20 63 6f  sent, content co
4ca0: 6e 74 61 69 6e 65 64 20 69 6e 0a 20 20 5b 6f 76  ntained in.  [ov
4cb0: 65 72 66 6c 6f 77 20 70 61 67 65 73 5d 20 6f 66  erflow pages] of
4cc0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
4cd0: 6c 65 20 69 73 20 72 65 61 64 20 64 69 72 65 63  le is read direc
4ce0: 74 6c 79 20 66 72 6f 6d 20 64 69 73 6b 2c 0a 20  tly from disk,. 
4cf0: 20 62 79 70 61 73 73 69 6e 67 20 74 68 65 20 5b   bypassing the [
4d00: 70 61 67 65 20 63 61 63 68 65 5d 2c 20 64 75 72  page cache], dur
4d10: 69 6e 67 20 72 65 61 64 20 74 72 61 6e 73 61 63  ing read transac
4d20: 74 69 6f 6e 73 2e 20 20 49 6e 20 61 70 70 6c 69  tions.  In appli
4d30: 63 61 74 69 6f 6e 73 0a 20 20 74 68 61 74 20 64  cations.  that d
4d40: 6f 20 61 20 6c 6f 74 20 6f 66 20 72 65 61 64 73  o a lot of reads
4d50: 20 6f 66 20 6c 61 72 67 65 20 42 4c 4f 42 73 2c   of large BLOBs,
4d60: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d 69 67   this option mig
4d70: 68 74 20 69 6d 70 72 6f 76 65 20 72 65 61 64 0a  ht improve read.
4d80: 20 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e 0a 7d    performance..}
4d90: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
4da0: 20 7b 53 51 4c 49 54 45 5f 48 41 56 45 5f 49 53   {SQLITE_HAVE_IS
4db0: 4e 41 4e 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  NAN} {.  If this
4dc0: 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65   option is prese
4dd0: 6e 74 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20  nt, then SQLite 
4de0: 77 69 6c 6c 20 75 73 65 20 74 68 65 20 69 73 6e  will use the isn
4df0: 61 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20 66 72  an() function fr
4e00: 6f 6d 0a 20 20 74 68 65 20 73 79 73 74 65 6d 20  om.  the system 
4e10: 6d 61 74 68 20 6c 69 62 72 61 72 79 2e 20 20 54  math library.  T
4e20: 68 69 73 20 69 73 20 61 6e 20 61 6c 69 61 73 20  his is an alias 
4e30: 66 6f 72 20 74 68 65 20 5b 48 41 56 45 5f 49 53  for the [HAVE_IS
4e40: 4e 41 4e 5d 20 63 6f 6e 66 69 67 75 72 61 74 69  NAN] configurati
4e50: 6f 6e 0a 20 20 6f 70 74 69 6f 6e 2e 0a 7d 0a 0a  on.  option..}..
4e60: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
4e70: 53 51 4c 49 54 45 5f 4f 53 5f 4f 54 48 45 52 3d  SQLITE_OS_OTHER=
4e80: 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74  <i>&lt;0 or 1&gt
4e90: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20 6f  ;</i>} {.  The o
4ea0: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c  ption causes SQL
4eb0: 69 74 65 20 74 6f 20 6f 6d 69 74 20 69 74 73 20  ite to omit its 
4ec0: 62 75 69 6c 74 2d 69 6e 20 6f 70 65 72 61 74 69  built-in operati
4ed0: 6e 67 20 73 79 73 74 65 6d 20 69 6e 74 65 72 66  ng system interf
4ee0: 61 63 65 73 0a 20 20 66 6f 72 20 55 6e 69 78 2c  aces.  for Unix,
4ef0: 20 57 69 6e 64 6f 77 73 2c 20 61 6e 64 20 4f 53   Windows, and OS
4f00: 2f 32 2e 20 20 54 68 65 20 72 65 73 75 6c 74 69  /2.  The resulti
4f10: 6e 67 20 6c 69 62 72 61 72 79 20 77 69 6c 6c 20  ng library will 
4f20: 68 61 76 65 20 6e 6f 20 64 65 66 61 75 6c 74 0a  have no default.
4f30: 20 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 20 7c    [sqlite3_vfs |
4f40: 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
4f50: 6d 20 69 6e 74 65 72 66 61 63 65 5d 2e 20 20 41  m interface].  A
4f60: 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73 74  pplications must
4f70: 20 75 73 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f   use.  [sqlite3_
4f80: 76 66 73 5f 72 65 67 69 73 74 65 72 28 29 5d 20  vfs_register()] 
4f90: 74 6f 20 72 65 67 69 73 74 65 72 20 61 6e 20 61  to register an a
4fa0: 70 70 72 6f 70 72 69 61 74 65 20 69 6e 74 65 72  ppropriate inter
4fb0: 66 61 63 65 20 62 65 66 6f 72 65 0a 20 20 75 73  face before.  us
4fc0: 69 6e 67 20 53 51 4c 69 74 65 2e 20 20 41 70 70  ing SQLite.  App
4fd0: 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73 74 20 61  lications must a
4fe0: 6c 73 6f 20 73 75 70 70 6c 79 20 69 6d 70 6c 65  lso supply imple
4ff0: 6d 65 6e 74 61 74 69 6f 6e 73 20 66 6f 72 20 74  mentations for t
5000: 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f 73  he.  [sqlite3_os
5010: 5f 69 6e 69 74 28 29 5d 20 61 6e 64 20 5b 73 71  _init()] and [sq
5020: 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 5d 20  lite3_os_end()] 
5030: 69 6e 74 65 72 66 61 63 65 73 2e 20 20 54 68 65  interfaces.  The
5040: 20 75 73 75 61 6c 20 70 72 61 63 74 69 63 65 0a   usual practice.
5050: 20 20 69 73 20 66 6f 72 20 74 68 65 20 73 75 70    is for the sup
5060: 70 6c 69 65 64 20 5b 73 71 6c 69 74 65 33 5f 6f  plied [sqlite3_o
5070: 73 5f 69 6e 69 74 28 29 5d 20 74 6f 20 69 6e 76  s_init()] to inv
5080: 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  oke [sqlite3_vfs
5090: 5f 72 65 67 69 73 74 65 72 28 29 5d 2e 0a 20 20  _register()]..  
50a0: 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 75 74 6f  SQLite will auto
50b0: 6d 61 74 69 63 61 6c 6c 79 20 69 6e 76 6f 6b 65  matically invoke
50c0: 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69   [sqlite3_os_ini
50d0: 74 28 29 5d 20 77 68 65 6e 20 69 74 20 69 6e 69  t()] when it ini
50e0: 74 69 61 6c 69 7a 65 73 2e 0a 0a 20 20 54 68 69  tializes...  Thi
50f0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 74 79 70 69  s option is typi
5100: 63 61 6c 6c 79 20 75 73 65 64 20 77 68 65 6e 20  cally used when 
5110: 62 75 69 6c 64 69 6e 67 20 53 51 4c 69 74 65 20  building SQLite 
5120: 66 6f 72 20 61 6e 20 65 6d 62 65 64 64 65 64 0a  for an embedded.
5130: 20 20 70 6c 61 74 66 6f 72 6d 20 77 69 74 68 20    platform with 
5140: 61 20 63 75 73 74 6f 6d 20 6f 70 65 72 61 74 69  a custom operati
5150: 6e 67 20 73 79 73 74 65 6d 2e 0a 7d 0a 0a 43 4f  ng system..}..CO
5160: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
5170: 4c 49 54 45 5f 53 45 43 55 52 45 5f 44 45 4c 45  LITE_SECURE_DELE
5180: 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d  TE} {.  This com
5190: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
51a0: 20 63 68 61 6e 67 65 73 20 74 68 65 20 64 65 66   changes the def
51b0: 61 75 6c 74 20 73 65 74 74 69 6e 67 20 6f 66 20  ault setting of 
51c0: 74 68 65 0a 20 20 5b 73 65 63 75 72 65 5f 64 65  the.  [secure_de
51d0: 6c 65 74 65 20 70 72 61 67 6d 61 5d 2e 20 20 57  lete pragma].  W
51e0: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
51f0: 69 73 20 6e 6f 74 20 75 73 65 64 2c 20 73 65 63  is not used, sec
5200: 75 72 65 5f 64 65 6c 65 74 65 20 64 65 66 61 75  ure_delete defau
5210: 6c 74 73 0a 20 20 74 6f 20 6f 66 66 2e 20 20 57  lts.  to off.  W
5220: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
5230: 69 73 20 70 72 65 73 65 6e 74 2c 20 73 65 63 75  is present, secu
5240: 72 65 5f 64 65 6c 65 74 65 20 64 65 66 61 75 6c  re_delete defaul
5250: 74 73 20 74 6f 20 6f 6e 2e 0a 0a 20 20 54 68 65  ts to on...  The
5260: 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 73   secure_delete s
5270: 65 74 74 69 6e 67 20 63 61 75 73 65 73 20 64 65  etting causes de
5280: 6c 65 74 65 64 20 63 6f 6e 74 65 6e 74 20 74 6f  leted content to
5290: 20 62 65 20 6f 76 65 72 77 72 69 74 74 65 6e 20   be overwritten 
52a0: 77 69 74 68 0a 20 20 7a 65 72 6f 73 2e 20 20 54  with.  zeros.  T
52b0: 68 65 72 65 20 69 73 20 61 20 73 6d 61 6c 6c 20  here is a small 
52c0: 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e 61  performance pena
52d0: 6c 74 79 20 73 69 6e 63 65 20 61 64 64 69 74 69  lty since additi
52e0: 6f 6e 61 6c 20 49 2f 4f 0a 20 20 6d 75 73 74 20  onal I/O.  must 
52f0: 6f 63 63 75 72 2e 20 20 4f 6e 20 74 68 65 20 6f  occur.  On the o
5300: 74 68 65 72 20 68 61 6e 64 2c 20 73 65 63 75 72  ther hand, secur
5310: 65 5f 64 65 6c 65 74 65 20 63 61 6e 20 70 72 65  e_delete can pre
5320: 76 65 6e 74 20 66 72 61 67 6d 65 6e 74 73 20 6f  vent fragments o
5330: 66 20 0a 20 20 73 65 6e 73 69 74 69 76 65 20 69  f .  sensitive i
5340: 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20  nformation from 
5350: 6c 69 6e 67 65 72 69 6e 67 20 69 6e 20 75 6e 75  lingering in unu
5360: 73 65 64 20 70 61 72 74 73 20 6f 66 20 74 68 65  sed parts of the
5370: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 0a   database file .
5380: 20 20 61 66 74 65 72 20 69 74 20 68 61 73 20 62    after it has b
5390: 65 65 6e 20 64 65 6c 65 74 65 64 2e 20 20 53 65  een deleted.  Se
53a0: 65 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74  e the documentat
53b0: 69 6f 6e 20 6f 6e 20 74 68 65 0a 20 20 5b 73 65  ion on the.  [se
53c0: 63 75 72 65 5f 64 65 6c 65 74 65 20 70 72 61 67  cure_delete prag
53d0: 6d 61 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e  ma] for addition
53e0: 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a  al information..
53f0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
5400: 4e 20 7b 53 51 4c 49 54 45 5f 54 48 52 45 41 44  N {SQLITE_THREAD
5410: 53 41 46 45 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72  SAFE=<i>&lt;0 or
5420: 20 31 20 6f 72 20 32 26 67 74 3b 3c 2f 69 3e 7d   1 or 2&gt;</i>}
5430: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
5440: 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68 65   controls whethe
5450: 72 20 6f 72 20 6e 6f 74 20 63 6f 64 65 20 69 73  r or not code is
5460: 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 53 51 4c   included in SQL
5470: 69 74 65 20 74 6f 0a 20 20 65 6e 61 62 6c 65 20  ite to.  enable 
5480: 69 74 20 74 6f 20 6f 70 65 72 61 74 65 20 73 61  it to operate sa
5490: 66 65 6c 79 20 69 6e 20 61 20 6d 75 6c 74 69 74  fely in a multit
54a0: 68 72 65 61 64 65 64 20 65 6e 76 69 72 6f 6e 6d  hreaded environm
54b0: 65 6e 74 2e 20 20 54 68 65 0a 20 20 64 65 66 61  ent.  The.  defa
54c0: 75 6c 74 20 69 73 20 53 51 4c 49 54 45 5f 54 48  ult is SQLITE_TH
54d0: 52 45 41 44 53 41 46 45 3d 31 20 77 68 69 63 68  READSAFE=1 which
54e0: 20 69 73 20 73 61 66 65 20 66 6f 72 20 75 73 65   is safe for use
54f0: 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61   in a multithrea
5500: 64 65 64 0a 20 20 65 6e 76 69 72 6f 6e 6d 65 6e  ded.  environmen
5510: 74 2e 20 20 57 68 65 6e 20 63 6f 6d 70 69 6c 65  t.  When compile
5520: 64 20 77 69 74 68 20 53 51 4c 49 54 45 5f 54 48  d with SQLITE_TH
5530: 52 45 41 44 53 41 46 45 3d 30 20 61 6c 6c 20 6d  READSAFE=0 all m
5540: 75 74 65 78 69 6e 67 20 63 6f 64 65 0a 20 20 69  utexing code.  i
5550: 73 20 6f 6d 69 74 74 65 64 20 61 6e 64 20 69 74  s omitted and it
5560: 20 69 73 20 75 6e 73 61 66 65 20 74 6f 20 75 73   is unsafe to us
5570: 65 20 53 51 4c 69 74 65 20 69 6e 20 61 20 6d 75  e SQLite in a mu
5580: 6c 74 69 74 68 72 65 61 64 65 64 20 70 72 6f 67  ltithreaded prog
5590: 72 61 6d 2e 0a 20 20 57 68 65 6e 20 63 6f 6d 70  ram..  When comp
55a0: 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54 45  iled with SQLITE
55b0: 5f 54 48 52 45 41 44 53 41 46 45 3d 32 2c 20 53  _THREADSAFE=2, S
55c0: 51 4c 69 74 65 20 63 61 6e 20 62 65 20 75 73 65  QLite can be use
55d0: 64 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65  d in a multithre
55e0: 61 64 65 64 0a 20 20 70 72 6f 67 72 61 6d 20 73  aded.  program s
55f0: 6f 20 6c 6f 6e 67 20 61 73 20 6e 6f 20 74 77 6f  o long as no two
5600: 20 74 68 72 65 61 64 73 20 61 74 74 65 6d 70 74   threads attempt
5610: 20 74 6f 20 75 73 65 20 74 68 65 20 73 61 6d 65   to use the same
5620: 0a 20 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  .  [database con
5630: 6e 65 63 74 69 6f 6e 5d 20 28 6f 72 20 61 6e 79  nection] (or any
5640: 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
5650: 6d 65 6e 74 73 5d 20 64 65 72 69 76 65 64 20 66  ments] derived f
5660: 72 6f 6d 0a 20 20 74 68 61 74 20 64 61 74 61 62  rom.  that datab
5670: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 20  ase connection) 
5680: 61 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65  at the same time
5690: 2e 0a 0a 20 20 54 6f 20 70 75 74 20 69 74 20 61  ...  To put it a
56a0: 6e 6f 74 68 65 72 20 77 61 79 2c 20 53 51 4c 49  nother way, SQLI
56b0: 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31 20  TE_THREADSAFE=1 
56c0: 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74  sets the default
56d0: 0a 20 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f  .  [threading mo
56e0: 64 65 5d 20 74 6f 20 53 65 72 69 61 6c 69 7a 65  de] to Serialize
56f0: 64 2e 20 20 53 51 4c 49 54 45 5f 54 48 52 45 41  d.  SQLITE_THREA
5700: 44 53 41 46 45 3d 32 20 73 65 74 73 20 74 68 65  DSAFE=2 sets the
5710: 20 64 65 66 61 75 6c 74 0a 20 20 5b 74 68 72 65   default.  [thre
5720: 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 4d  ading mode] to M
5730: 75 6c 74 69 2d 74 68 72 65 61 64 65 64 2e 20 20  ulti-threaded.  
5740: 41 6e 64 20 53 51 4c 49 54 45 5f 54 48 52 45 41  And SQLITE_THREA
5750: 44 53 41 46 45 3d 30 20 73 65 74 73 20 74 68 65  DSAFE=0 sets the
5760: 0a 20 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f  .  [threading mo
5770: 64 65 5d 20 74 6f 20 53 69 6e 67 6c 65 2d 74 68  de] to Single-th
5780: 72 65 61 64 65 64 2e 0a 0a 20 20 54 68 65 20 76  readed...  The v
5790: 61 6c 75 65 20 6f 66 20 53 51 4c 49 54 45 5f 54  alue of SQLITE_T
57a0: 48 52 45 41 44 53 41 46 45 20 63 61 6e 20 62 65  HREADSAFE can be
57b0: 20 64 65 74 65 72 6d 69 6e 65 64 20 61 74 20 72   determined at r
57c0: 75 6e 2d 74 69 6d 65 0a 20 20 75 73 69 6e 67 20  un-time.  using 
57d0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 68 72  the [sqlite3_thr
57e0: 65 61 64 73 61 66 65 28 29 5d 20 69 6e 74 65 72  eadsafe()] inter
57f0: 66 61 63 65 2e 0a 0a 20 20 57 68 65 6e 20 53 51  face...  When SQ
5800: 4c 69 74 65 20 68 61 73 20 62 65 65 6e 20 63 6f  Lite has been co
5810: 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49  mpiled with SQLI
5820: 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31 20  TE_THREADSAFE=1 
5830: 6f 72 0a 20 20 53 51 4c 49 54 45 5f 54 48 52 45  or.  SQLITE_THRE
5840: 41 44 53 41 46 45 3d 32 20 74 68 65 6e 20 74 68  ADSAFE=2 then th
5850: 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64  e [threading mod
5860: 65 5d 0a 20 20 63 61 6e 20 62 65 20 61 6c 74 65  e].  can be alte
5870: 72 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 20  red at run-time 
5880: 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74  using the [sqlit
5890: 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e 74  e3_config()] int
58a0: 65 72 66 61 63 65 20 74 6f 67 65 74 68 65 72 0a  erface together.
58b0: 20 20 77 69 74 68 20 6f 6e 65 20 6f 66 20 74 68    with one of th
58c0: 65 73 65 20 76 65 72 62 73 3a 0a 0a 20 20 3c 75  ese verbs:..  <u
58d0: 6c 3e 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49 54 45  l>.  <li>[SQLITE
58e0: 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48  _CONFIG_SINGLETH
58f0: 52 45 41 44 5d 0a 20 20 3c 6c 69 3e 5b 53 51 4c  READ].  <li>[SQL
5900: 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49  ITE_CONFIG_MULTI
5910: 54 48 52 45 41 44 5d 0a 20 20 3c 6c 69 3e 5b 53  THREAD].  <li>[S
5920: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52  QLITE_CONFIG_SER
5930: 49 41 4c 49 5a 45 44 5d 0a 20 20 3c 2f 75 6c 3e  IALIZED].  </ul>
5940: 0a 0a 20 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  ..  The [SQLITE_
5950: 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58 5d 20 61 6e  OPEN_NOMUTEX] an
5960: 64 0a 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  d.  [SQLITE_OPEN
5970: 5f 46 55 4c 4c 4d 55 54 45 58 5d 20 66 6c 61 67  _FULLMUTEX] flag
5980: 73 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70  s to [sqlite3_op
5990: 65 6e 5f 76 32 28 29 5d 20 63 61 6e 20 61 6c 73  en_v2()] can als
59a0: 6f 20 62 65 20 75 73 65 64 0a 20 20 74 6f 20 61  o be used.  to a
59b0: 64 6a 75 73 74 20 74 68 65 20 5b 74 68 72 65 61  djust the [threa
59c0: 64 69 6e 67 20 6d 6f 64 65 5d 20 6f 66 20 69 6e  ding mode] of in
59d0: 64 69 76 69 64 75 61 6c 20 5b 64 61 74 61 62 61  dividual [databa
59e0: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 0a  se connections].
59f0: 20 20 61 74 20 72 75 6e 2d 74 69 6d 65 2e 0a 0a    at run-time...
5a00: 20 20 4e 6f 74 65 20 74 68 61 74 20 77 68 65 6e    Note that when
5a10: 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69   SQLite is compi
5a20: 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54 45 5f  led with SQLITE_
5a30: 54 48 52 45 41 44 53 41 46 45 3d 30 2c 20 74 68  THREADSAFE=0, th
5a40: 65 20 63 6f 64 65 0a 20 20 74 6f 20 6d 61 6b 65  e code.  to make
5a50: 20 53 51 4c 69 74 65 20 74 68 72 65 61 64 73 61   SQLite threadsa
5a60: 66 65 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72  fe is omitted fr
5a70: 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e 20 20 57  om the build.  W
5a80: 68 65 6e 20 74 68 69 73 20 6f 63 63 75 72 73 2c  hen this occurs,
5a90: 0a 20 20 69 74 20 69 73 20 69 6d 70 6f 73 73 69  .  it is impossi
5aa0: 62 6c 65 20 74 6f 20 63 68 61 6e 67 65 20 74 68  ble to change th
5ab0: 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64  e [threading mod
5ac0: 65 5d 20 61 74 20 73 74 61 72 74 2d 74 69 6d 65  e] at start-time
5ad0: 20 6f 72 20 72 75 6e 2d 74 69 6d 65 2e 0a 0a 20   or run-time... 
5ae0: 20 53 65 65 20 74 68 65 20 5b 74 68 72 65 61 64   See the [thread
5af0: 69 6e 67 20 6d 6f 64 65 5d 20 64 6f 63 75 6d 65  ing mode] docume
5b00: 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64 64 69  ntation for addi
5b10: 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
5b20: 6f 6e 0a 20 20 6f 6e 20 61 73 70 65 63 74 73 20  on.  on aspects 
5b30: 6f 66 20 75 73 69 6e 67 20 53 51 4c 69 74 65 20  of using SQLite 
5b40: 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64  in a multithread
5b50: 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 0a  ed environment..
5b60: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
5b70: 4e 20 7b 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53  N {SQLITE_TEMP_S
5b80: 54 4f 52 45 3d 3c 69 3e 26 6c 74 3b 30 20 74 68  TORE=<i>&lt;0 th
5b90: 72 6f 75 67 68 20 33 26 67 74 3b 3c 2f 69 3e 7d  rough 3&gt;</i>}
5ba0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
5bb0: 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68 65   controls whethe
5bc0: 72 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65  r temporary file
5bd0: 73 20 61 72 65 20 73 74 6f 72 65 64 20 6f 6e 20  s are stored on 
5be0: 64 69 73 6b 20 6f 72 0a 20 20 69 6e 20 6d 65 6d  disk or.  in mem
5bf0: 6f 72 79 2e 20 20 54 68 65 20 6d 65 61 6e 69 6e  ory.  The meanin
5c00: 67 73 20 66 6f 72 20 76 61 72 69 6f 75 73 20 73  gs for various s
5c10: 65 74 74 69 6e 67 73 20 6f 66 20 74 68 69 73 20  ettings of this 
5c20: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f  compile-time.  o
5c30: 70 74 69 6f 6e 20 61 72 65 20 61 73 20 66 6f 6c  ption are as fol
5c40: 6c 6f 77 73 3a 0a 0a 20 20 3c 74 61 62 6c 65 20  lows:..  <table 
5c50: 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 32 22 20  cellpadding="2" 
5c60: 62 6f 72 64 65 72 3d 22 31 22 3e 0a 20 20 3c 74  border="1">.  <t
5c70: 72 3e 3c 74 68 3e 53 51 4c 49 54 45 5f 54 45 4d  r><th>SQLITE_TEM
5c80: 50 5f 53 54 4f 52 45 3c 2f 74 68 3e 3c 74 68 3e  P_STORE</th><th>
5c90: 4d 65 61 6e 69 6e 67 3c 2f 74 68 3e 3c 2f 74 72  Meaning</th></tr
5ca0: 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67  >.  <tr><td alig
5cb0: 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64  n="center">0</td
5cc0: 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75 73 65 20  ><td>Always use 
5cd0: 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 3c  temporary files<
5ce0: 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e  /td></tr>.  <tr>
5cf0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
5d00: 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e 55 73 65  r">1</td><td>Use
5d10: 20 66 69 6c 65 73 20 62 79 20 64 65 66 61 75 6c   files by defaul
5d20: 74 20 62 75 74 20 61 6c 6c 6f 77 20 74 68 65 0a  t but allow the.
5d30: 20 20 5b 50 52 41 47 4d 41 20 74 65 6d 70 5f 73    [PRAGMA temp_s
5d40: 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f  tore] command to
5d50: 20 6f 76 65 72 72 69 64 65 3c 2f 74 64 3e 3c 2f   override</td></
5d60: 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c  tr>.  <tr><td al
5d70: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 32 3c 2f  ign="center">2</
5d80: 74 64 3e 3c 74 64 3e 55 73 65 20 6d 65 6d 6f 72  td><td>Use memor
5d90: 79 20 62 79 20 64 65 66 61 75 6c 74 20 62 75 74  y by default but
5da0: 20 61 6c 6c 6f 77 20 74 68 65 0a 20 20 5b 50 52   allow the.  [PR
5db0: 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 5d  AGMA temp_store]
5dc0: 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 6f 76 65 72   command to over
5dd0: 72 69 64 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20  ride</td></tr>. 
5de0: 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22   <tr><td align="
5df0: 63 65 6e 74 65 72 22 3e 33 3c 2f 74 64 3e 3c 74  center">3</td><t
5e00: 64 3e 41 6c 77 61 79 73 20 75 73 65 20 6d 65 6d  d>Always use mem
5e10: 6f 72 79 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20  ory</td></tr>.  
5e20: 3c 2f 74 61 62 6c 65 3e 0a 0a 20 20 54 68 65 20  </table>..  The 
5e30: 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20  default setting 
5e40: 69 73 20 31 2e 20 20 0a 20 20 41 64 64 69 74 69  is 1.  .  Additi
5e50: 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
5e60: 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 69 6e   can be found in
5e70: 20 5b 74 65 6d 70 73 74 6f 72 65 20 7c 20 74 65   [tempstore | te
5e80: 6d 70 66 69 6c 65 73 2e 68 74 6d 6c 5d 2e 0a 7d  mpfiles.html]..}
5e90: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
5ea0: 20 7b 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53   {SQLITE_TRACE_S
5eb0: 49 5a 45 5f 4c 49 4d 49 54 3d 3c 69 3e 4e 3c 2f  IZE_LIMIT=<i>N</
5ec0: 69 3e 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  i>} {.  If this 
5ed0: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
5ee0: 20 74 6f 20 61 20 70 6f 73 69 74 69 76 65 20 69   to a positive i
5ef0: 6e 74 65 67 65 72 20 3c 69 3e 4e 3c 2f 69 3e 2c  nteger <i>N</i>,
5f00: 20 74 68 65 6e 20 74 68 65 20 6c 65 6e 67 74 68   then the length
5f10: 20 6f 66 0a 20 20 73 74 72 69 6e 67 73 20 61 6e   of.  strings an
5f20: 64 20 42 4c 4f 42 20 74 68 61 74 20 61 72 65 20  d BLOB that are 
5f30: 65 78 70 61 6e 64 65 64 20 69 6e 74 6f 20 70 61  expanded into pa
5f40: 72 61 6d 65 74 65 72 73 20 69 6e 20 74 68 65 20  rameters in the 
5f50: 6f 75 74 70 75 74 20 6f 66 0a 20 20 5b 73 71 6c  output of.  [sql
5f60: 69 74 65 33 5f 74 72 61 63 65 28 29 5d 20 69 73  ite3_trace()] is
5f70: 20 6c 69 6d 69 74 65 64 20 74 6f 20 3c 69 3e 4e   limited to <i>N
5f80: 3c 2f 69 3e 20 62 79 74 65 73 2e 20 20 0a 7d 0a  </i> bytes.  .}.
5f90: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
5fa0: 7b 53 51 4c 49 54 45 5f 55 53 45 5f 55 52 49 7d  {SQLITE_USE_URI}
5fb0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
5fc0: 20 63 61 75 73 65 73 20 74 68 65 20 5b 55 52 49   causes the [URI
5fd0: 20 66 69 6c 65 6e 61 6d 65 5d 20 70 72 6f 63 65   filename] proce
5fe0: 73 73 20 6c 6f 67 69 63 20 74 6f 20 62 65 20 65  ss logic to be e
5ff0: 6e 61 62 6c 65 64 20 62 79 20 0a 20 20 64 65 66  nabled by .  def
6000: 61 75 6c 74 2e 20 20 0a 7d 0a 0a 3c 2f 74 63 6c  ault.  .}..</tcl
6010: 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 65 6e 61 62  >..<a name="enab
6020: 6c 65 66 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e  lefeatures"></a>
6030: 0a 3c 68 32 3e 31 2e 35 20 4f 70 74 69 6f 6e 73  .<h2>1.5 Options
6040: 20 54 6f 20 45 6e 61 62 6c 65 20 46 65 61 74 75   To Enable Featu
6050: 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20 54 75 72  res Normally Tur
6060: 6e 65 64 20 4f 66 66 3c 2f 68 32 3e 0a 0a 3c 74  ned Off</h2>..<t
6070: 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  cl>.COMPILE_OPTI
6080: 4f 4e 20 7b 53 51 4c 49 54 45 5f 41 4c 4c 4f 57  ON {SQLITE_ALLOW
6090: 5f 55 52 49 5f 41 55 54 48 4f 52 49 54 59 7d 20  _URI_AUTHORITY} 
60a0: 7b 0a 20 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d  {.  [URI filenam
60b0: 65 73 5d 20 6e 6f 72 6d 61 6c 6c 79 20 74 68 72  es] normally thr
60c0: 6f 77 73 20 61 6e 20 65 72 72 6f 72 20 69 66 20  ows an error if 
60d0: 74 68 65 20 61 75 74 68 6f 72 69 74 79 20 73 65  the authority se
60e0: 63 74 69 6f 6e 20 69 73 0a 20 20 6e 6f 74 20 65  ction is.  not e
60f0: 69 74 68 65 72 20 65 6d 70 74 79 20 6f 72 20 22  ither empty or "
6100: 6c 6f 63 61 6c 68 6f 73 74 22 2e 20 20 48 6f 77  localhost".  How
6110: 65 76 65 72 2c 20 69 66 20 53 51 4c 69 74 65 20  ever, if SQLite 
6120: 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  is compiled with
6130: 0a 20 20 74 68 65 20 53 51 4c 49 54 45 5f 41 4c  .  the SQLITE_AL
6140: 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f 52 49 54  LOW_URI_AUTHORIT
6150: 59 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  Y compile-time o
6160: 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20  ption, then the 
6170: 55 52 49 20 69 73 0a 20 20 63 6f 6e 76 65 72 74  URI is.  convert
6180: 65 64 20 69 6e 74 6f 20 61 20 55 6e 69 66 6f 72  ed into a Unifor
6190: 6d 20 4e 61 6d 69 6e 67 20 43 6f 6e 76 65 6e 74  m Naming Convent
61a0: 69 6f 6e 20 28 55 4e 43 29 20 66 69 6c 65 6e 61  ion (UNC) filena
61b0: 6d 65 20 61 6e 64 20 70 61 73 73 65 64 0a 20 20  me and passed.  
61c0: 64 6f 77 6e 20 74 6f 20 74 68 65 20 75 6e 64 65  down to the unde
61d0: 72 6c 79 69 6e 67 20 6f 70 65 72 61 74 69 6e 67  rlying operating
61e0: 20 73 79 73 74 65 6d 20 74 68 61 74 20 77 61 79   system that way
61f0: 2e 20 20 0a 20 20 3c 70 3e 0a 20 20 53 6f 6d 65  .  .  <p>.  Some
6200: 20 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73   future versions
6210: 20 6f 66 20 53 51 4c 69 74 65 20 6d 61 79 20 63   of SQLite may c
6220: 68 61 6e 67 65 20 74 6f 20 65 6e 61 62 6c 65 20  hange to enable 
6230: 74 68 69 73 20 66 65 61 74 75 72 65 0a 20 20 62  this feature.  b
6240: 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 43 4f 4d  y default..}.COM
6250: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
6260: 49 54 45 5f 41 4c 4c 4f 57 5f 43 4f 56 45 52 49  ITE_ALLOW_COVERI
6270: 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 3d 3c 69  NG_INDEX_SCAN=<i
6280: 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c  >&lt;0 or 1&gt;<
6290: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 43 2d  /i>} {.  This C-
62a0: 70 72 65 70 72 6f 63 65 73 73 20 6d 61 63 72 6f  preprocess macro
62b0: 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   determines the 
62c0: 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20  default setting 
62d0: 6f 66 20 74 68 65 0a 20 20 5b 53 51 4c 49 54 45  of the.  [SQLITE
62e0: 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49 4e 47  _CONFIG_COVERING
62f0: 5f 49 4e 44 45 58 5f 53 43 41 4e 5d 20 63 6f 6e  _INDEX_SCAN] con
6300: 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69  figuration setti
6310: 6e 67 2e 20 20 49 74 20 64 65 66 61 75 6c 74 73  ng.  It defaults
6320: 0a 20 20 74 6f 20 31 20 28 6f 6e 29 20 77 68 69  .  to 1 (on) whi
6330: 63 68 20 6d 65 61 6e 73 20 74 68 61 74 20 63 6f  ch means that co
6340: 76 65 72 69 6e 67 20 69 6e 64 69 63 65 73 20 61  vering indices a
6350: 72 65 20 75 73 65 64 20 66 6f 72 20 66 75 6c 6c  re used for full
6360: 20 74 61 62 6c 65 0a 20 20 73 63 61 6e 73 20 77   table.  scans w
6370: 68 65 72 65 20 70 6f 73 73 69 62 6c 65 2c 20 69  here possible, i
6380: 6e 20 6f 72 64 65 72 20 74 6f 20 72 65 64 75 63  n order to reduc
6390: 65 20 49 2f 4f 20 61 6e 64 20 69 6d 70 72 6f 76  e I/O and improv
63a0: 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e 0a 20  e performance.. 
63b0: 20 48 6f 77 65 76 65 72 2c 20 74 68 65 20 75 73   However, the us
63c0: 65 20 6f 66 20 61 20 63 6f 76 65 72 69 6e 67 20  e of a covering 
63d0: 69 6e 64 65 78 20 66 6f 72 20 61 20 66 75 6c 6c  index for a full
63e0: 20 73 63 61 6e 20 77 69 6c 6c 20 63 61 75 73 65   scan will cause
63f0: 20 72 65 73 75 6c 74 73 0a 20 20 74 6f 20 61 70   results.  to ap
6400: 70 65 61 72 20 69 6e 20 61 20 64 69 66 66 65 72  pear in a differ
6410: 65 6e 74 20 6f 72 64 65 72 20 66 72 6f 6d 20 6c  ent order from l
6420: 65 67 61 63 79 2c 20 77 68 69 63 68 20 63 6f 75  egacy, which cou
6430: 6c 64 20 63 61 75 73 65 20 73 6f 6d 65 0a 20 20  ld cause some.  
6440: 28 69 6e 63 6f 72 72 65 63 74 6c 79 2d 63 6f 64  (incorrectly-cod
6450: 65 64 29 20 6c 65 67 61 63 79 20 61 70 70 6c 69  ed) legacy appli
6460: 63 61 74 69 6f 6e 73 20 74 6f 20 62 72 65 61 6b  cations to break
6470: 2e 20 20 48 65 6e 63 65 2c 20 74 68 65 20 63 6f  .  Hence, the co
6480: 76 65 72 69 6e 67 0a 20 20 69 6e 64 65 78 20 73  vering.  index s
6490: 63 61 6e 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62  can option can b
64a0: 65 20 64 69 73 61 62 6c 65 64 20 61 74 20 63 6f  e disabled at co
64b0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 6e 20 73 79  mpile-time on sy
64c0: 73 74 65 6d 73 20 74 68 61 74 20 77 68 61 74 0a  stems that what.
64d0: 20 20 74 6f 20 6d 69 6e 69 6d 69 7a 65 20 74 68    to minimize th
64e0: 65 69 72 20 72 69 73 6b 20 6f 66 20 65 78 70 6f  eir risk of expo
64f0: 73 69 6e 67 20 65 72 72 6f 72 73 20 69 6e 20 6c  sing errors in l
6500: 65 67 61 63 79 20 61 70 70 6c 69 63 61 74 69 6f  egacy applicatio
6510: 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ns..}..COMPILE_O
6520: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
6530: 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d 45 53 3d 3c  ABLE_8_3_NAMES=<
6540: 69 3e 26 6c 74 3b 31 20 6f 72 20 32 26 67 74 3b  i>&lt;1 or 2&gt;
6550: 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20 74 68 69  </i>} {.  If thi
6560: 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72  s C-preprocessor
6570: 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65   macro is define
6580: 64 2c 20 74 68 65 6e 20 65 78 74 72 61 20 63 6f  d, then extra co
6590: 64 65 20 69 73 0a 20 20 69 6e 63 6c 75 64 65 64  de is.  included
65a0: 20 74 68 61 74 20 61 6c 6c 6f 77 73 20 53 51 4c   that allows SQL
65b0: 69 74 65 20 74 6f 20 66 75 6e 63 74 69 6f 6e 20  ite to function 
65c0: 6f 6e 20 61 20 66 69 6c 65 73 79 73 74 65 6d 20  on a filesystem 
65d0: 74 68 61 74 0a 20 20 6f 6e 6c 79 20 73 75 70 70  that.  only supp
65e0: 6f 72 74 20 38 2b 33 20 66 69 6c 65 6e 61 6d 65  ort 8+3 filename
65f0: 73 2e 20 20 49 66 20 74 68 65 20 76 61 6c 75 65  s.  If the value
6600: 20 6f 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69   of this macro i
6610: 73 20 31 2c 0a 20 20 74 68 65 6e 20 74 68 65 20  s 1,.  then the 
6620: 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72  default behavior
6630: 20 69 73 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20   is to continue 
6640: 74 6f 20 75 73 65 20 6c 6f 6e 67 20 66 69 6c 65  to use long file
6650: 6e 61 6d 65 73 20 61 6e 64 0a 20 20 74 6f 20 6f  names and.  to o
6660: 6e 6c 79 20 75 73 65 20 38 2b 33 20 66 69 6c 65  nly use 8+3 file
6670: 6e 61 6d 65 73 20 69 66 20 74 68 65 20 0a 20 20  names if the .  
6680: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
6690: 69 6f 6e 20 69 73 20 6f 70 65 6e 65 64 20 75 73  ion is opened us
66a0: 69 6e 67 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d  ing [URI filenam
66b0: 65 73 5d 20 77 69 74 68 0a 20 20 74 68 65 20 22  es] with.  the "
66c0: 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73 3d 31 3c  <tt>8_3_names=1<
66d0: 2f 74 74 3e 22 20 71 75 65 72 79 20 70 61 72 61  /tt>" query para
66e0: 6d 65 74 65 72 2e 20 20 49 66 20 74 68 65 20 76  meter.  If the v
66f0: 61 6c 75 65 20 6f 66 0a 20 20 74 68 69 73 20 6d  alue of.  this m
6700: 61 63 72 6f 20 69 73 20 32 2c 20 74 68 65 6e 20  acro is 2, then 
6710: 74 68 65 20 75 73 65 20 6f 66 20 38 2b 33 20 66  the use of 8+3 f
6720: 69 6c 65 6e 61 6d 65 73 20 62 65 63 6f 6d 65 73  ilenames becomes
6730: 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20 62   the default.  b
6740: 75 74 20 6d 61 79 20 62 65 20 64 69 73 61 62 6c  ut may be disabl
6750: 65 64 20 6f 6e 20 75 73 69 6e 67 20 74 68 65 20  ed on using the 
6760: 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73 3d 30 3c  <tt>8_3_names=0<
6770: 2f 74 74 3e 20 71 75 65 72 79 20 70 61 72 61 6d  /tt> query param
6780: 65 74 65 72 2e 0a 20 20 53 65 65 20 0a 7d 0a 0a  eter..  See .}..
6790: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
67a0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 41 50  SQLITE_ENABLE_AP
67b0: 49 5f 41 52 4d 4f 52 7d 20 7b 0a 20 20 57 68 65  I_ARMOR} {.  Whe
67c0: 6e 20 64 65 66 69 6e 65 64 2c 20 74 68 69 73 20  n defined, this 
67d0: 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C-preprocessor m
67e0: 61 63 72 6f 20 61 63 74 69 76 61 74 65 73 20 65  acro activates e
67f0: 78 74 72 61 20 63 6f 64 65 20 74 68 61 74 0a 20  xtra code that. 
6800: 20 61 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74   attempts to det
6810: 65 63 74 20 6d 69 73 75 73 65 20 6f 66 20 74 68  ect misuse of th
6820: 65 20 53 51 4c 69 74 65 20 41 50 49 2c 20 73 75  e SQLite API, su
6830: 63 68 20 61 73 20 70 61 73 73 69 6e 67 20 69 6e  ch as passing in
6840: 20 4e 55 4c 4c 0a 20 20 70 6f 69 6e 74 65 72 73   NULL.  pointers
6850: 20 74 6f 20 72 65 71 75 69 72 65 64 20 70 61 72   to required par
6860: 61 6d 65 74 65 72 73 20 6f 72 20 75 73 69 6e 67  ameters or using
6870: 20 6f 62 6a 65 63 74 73 20 61 66 74 65 72 20 74   objects after t
6880: 68 65 79 20 68 61 76 65 20 62 65 65 6e 0a 20 20  hey have been.  
6890: 64 65 73 74 72 6f 79 65 64 2e 0a 7d 0a 0a 43 4f  destroyed..}..CO
68a0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
68b0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 41 54 4f 4d  LITE_ENABLE_ATOM
68c0: 49 43 5f 57 52 49 54 45 7d 20 7b 0a 20 20 49 66  IC_WRITE} {.  If
68d0: 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65   this C-preproce
68e0: 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65  ssor macro is de
68f0: 66 69 6e 65 64 20 61 6e 64 20 69 66 20 74 68 65  fined and if the
6900: 0a 20 20 78 44 65 76 69 63 65 43 68 61 72 61 63  .  xDeviceCharac
6910: 74 65 72 69 73 74 69 63 73 20 6d 65 74 68 6f 64  teristics method
6920: 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f   of [sqlite3_io_
6930: 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20  methods] object 
6940: 66 6f 72 0a 20 20 61 20 64 61 74 61 62 61 73 65  for.  a database
6950: 20 66 69 6c 65 20 72 65 70 6f 72 74 73 20 28 76   file reports (v
6960: 69 61 20 6f 6e 65 20 6f 66 20 74 68 65 20 5b 53  ia one of the [S
6970: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d  QLITE_IOCAP_ATOM
6980: 49 43 5d 20 62 69 74 73 29 0a 20 20 74 68 61 74  IC] bits).  that
6990: 20 74 68 65 20 66 69 6c 65 73 79 73 74 65 6d 20   the filesystem 
69a0: 73 75 70 70 6f 72 74 73 20 61 74 6f 6d 69 63 20  supports atomic 
69b0: 77 72 69 74 65 73 20 61 6e 64 20 69 66 20 61 20  writes and if a 
69c0: 74 72 61 6e 73 61 63 74 69 6f 6e 0a 20 20 69 6e  transaction.  in
69d0: 76 6f 6c 76 65 73 20 61 20 63 68 61 6e 67 65 20  volves a change 
69e0: 74 6f 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65  to only a single
69f0: 20 70 61 67 65 20 6f 66 20 74 68 65 20 64 61 74   page of the dat
6a00: 61 62 61 73 65 20 66 69 6c 65 2c 0a 20 20 74 68  abase file,.  th
6a10: 65 6e 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  en the transacti
6a20: 6f 6e 20 63 6f 6d 6d 69 74 73 20 77 69 74 68 20  on commits with 
6a30: 6a 75 73 74 20 61 20 73 69 6e 67 6c 65 20 77 72  just a single wr
6a40: 69 74 65 20 72 65 71 75 65 73 74 20 6f 66 0a 20  ite request of. 
6a50: 20 61 20 73 69 6e 67 6c 65 20 70 61 67 65 20 6f   a single page o
6a60: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  f the database a
6a70: 6e 64 20 6e 6f 20 72 6f 6c 6c 62 61 63 6b 20 6a  nd no rollback j
6a80: 6f 75 72 6e 61 6c 20 69 73 20 63 72 65 61 74 65  ournal is create
6a90: 64 0a 20 20 6f 72 20 77 72 69 74 74 65 6e 2e 20  d.  or written. 
6aa0: 20 4f 6e 20 66 69 6c 65 73 79 73 74 65 6d 73 20   On filesystems 
6ab0: 74 68 61 74 20 73 75 70 70 6f 72 74 20 61 74 6f  that support ato
6ac0: 6d 69 63 20 77 72 69 74 65 73 2c 20 74 68 69 73  mic writes, this
6ad0: 0a 20 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20  .  optimization 
6ae0: 63 61 6e 20 72 65 73 75 6c 74 20 69 6e 20 73 69  can result in si
6af0: 67 6e 69 66 69 63 61 6e 74 20 73 70 65 65 64 20  gnificant speed 
6b00: 69 6d 70 72 6f 76 65 6d 65 6e 74 73 20 66 6f 72  improvements for
6b10: 0a 20 20 73 6d 61 6c 6c 20 75 70 64 61 74 65 73  .  small updates
6b20: 2e 20 20 48 6f 77 65 76 65 72 2c 20 66 65 77 20  .  However, few 
6b30: 66 69 6c 65 73 79 73 74 65 6d 73 20 73 75 70 70  filesystems supp
6b40: 6f 72 74 20 74 68 69 73 20 63 61 70 61 62 69 6c  ort this capabil
6b50: 69 74 79 0a 20 20 61 6e 64 20 74 68 65 20 63 6f  ity.  and the co
6b60: 64 65 20 70 61 74 68 73 20 74 68 61 74 20 63 68  de paths that ch
6b70: 65 63 6b 20 66 6f 72 20 74 68 69 73 20 63 61 70  eck for this cap
6b80: 61 62 69 6c 69 74 79 20 73 6c 6f 77 20 64 6f 77  ability slow dow
6b90: 6e 20 77 72 69 74 65 0a 20 20 70 65 72 66 6f 72  n write.  perfor
6ba0: 6d 61 6e 63 65 20 6f 6e 20 73 79 73 74 65 6d 73  mance on systems
6bb0: 20 74 68 61 74 20 6c 61 63 6b 20 61 74 6f 6d 69   that lack atomi
6bc0: 63 20 77 72 69 74 65 20 63 61 70 61 62 69 6c 69  c write capabili
6bd0: 74 79 2c 20 73 6f 20 74 68 69 73 0a 20 20 66 65  ty, so this.  fe
6be0: 61 74 75 72 65 20 69 73 20 64 69 73 61 62 6c 65  ature is disable
6bf0: 64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a  d by default..}.
6c00: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
6c10: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43  {SQLITE_ENABLE_C
6c20: 4f 4c 55 4d 4e 5f 4d 45 54 41 44 41 54 41 7d 20  OLUMN_METADATA} 
6c30: 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 43 2d  {.  When this C-
6c40: 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63  preprocessor mac
6c50: 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 53  ro is defined, S
6c60: 51 4c 69 74 65 20 69 6e 63 6c 75 64 65 73 20 73  QLite includes s
6c70: 6f 6d 65 0a 20 20 61 64 64 69 74 69 6f 6e 61 6c  ome.  additional
6c80: 20 41 50 49 73 20 74 68 61 74 20 70 72 6f 76 69   APIs that provi
6c90: 64 65 20 63 6f 6e 76 65 6e 69 65 6e 74 20 61 63  de convenient ac
6ca0: 63 65 73 73 20 74 6f 20 6d 65 74 61 2d 64 61 74  cess to meta-dat
6cb0: 61 20 61 62 6f 75 74 0a 20 20 74 61 62 6c 65 73  a about.  tables
6cc0: 20 61 6e 64 20 71 75 65 72 69 65 73 2e 20 20 54   and queries.  T
6cd0: 68 65 20 41 50 49 73 20 74 68 61 74 20 61 72 65  he APIs that are
6ce0: 20 65 6e 61 62 6c 65 64 20 62 79 20 74 68 69 73   enabled by this
6cf0: 20 6f 70 74 69 6f 6e 20 61 72 65 3a 0a 0a 20 20   option are:..  
6d00: 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c  <ul>.  <li> [sql
6d10: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
6d20: 62 61 73 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c  base_name()] </l
6d30: 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74  i>.  <li> [sqlit
6d40: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
6d50: 73 65 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c  se_name16()] </l
6d60: 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74  i>.  <li> [sqlit
6d70: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
6d80: 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20  name()] </li>.  
6d90: 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f  <li> [sqlite3_co
6da0: 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31  lumn_table_name1
6db0: 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69  6()] </li>.  <li
6dc0: 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  > [sqlite3_colum
6dd0: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 29 5d  n_origin_name()]
6de0: 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73   </li>.  <li> [s
6df0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72  qlite3_column_or
6e00: 69 67 69 6e 5f 6e 61 6d 65 31 36 28 29 5d 20 3c  igin_name16()] <
6e10: 2f 6c 69 3e 0a 20 20 3c 2f 75 6c 3e 0a 7d 0a 0a  /li>.  </ul>.}..
6e20: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
6e30: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 44 42  SQLITE_ENABLE_DB
6e40: 53 54 41 54 5f 56 54 41 42 7d 20 7b 0a 20 20 54  STAT_VTAB} {.  T
6e50: 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c  his option enabl
6e60: 65 73 20 74 68 65 20 5b 64 62 73 74 61 74 20 76  es the [dbstat v
6e70: 69 72 74 75 61 6c 20 74 61 62 6c 65 5d 2e 0a 7d  irtual table]..}
6e80: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
6e90: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
6ea0: 45 58 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53  EXPLAIN_COMMENTS
6eb0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
6ec0: 6e 20 61 64 64 73 20 65 78 74 72 61 20 6c 6f 67  n adds extra log
6ed0: 69 63 20 74 6f 20 53 51 4c 69 74 65 20 74 68 61  ic to SQLite tha
6ee0: 74 20 69 6e 73 65 72 74 73 20 63 6f 6d 6d 65 6e  t inserts commen
6ef0: 74 20 74 65 78 74 20 69 6e 74 6f 20 74 68 65 0a  t text into the.
6f00: 20 20 6f 75 74 70 75 74 20 6f 66 20 5b 45 58 50    output of [EXP
6f10: 4c 41 49 4e 5d 2e 20 20 54 68 65 73 65 20 65 78  LAIN].  These ex
6f20: 74 72 61 20 63 6f 6d 6d 65 6e 74 73 20 75 73 65  tra comments use
6f30: 20 65 78 74 72 61 20 6d 65 6d 6f 72 79 2c 20 74   extra memory, t
6f40: 68 75 73 0a 20 20 6d 61 6b 69 6e 67 20 5b 70 72  hus.  making [pr
6f50: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
6f60: 73 5d 20 6c 61 72 67 65 72 20 61 6e 64 20 76 65  s] larger and ve
6f70: 72 79 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f 77  ry slightly slow
6f80: 65 72 2c 20 61 6e 64 20 73 6f 20 74 68 65 79 20  er, and so they 
6f90: 61 72 65 0a 20 20 74 75 72 6e 65 64 20 6f 66 66  are.  turned off
6fa0: 20 62 79 20 64 65 66 61 75 6c 74 20 61 6e 64 20   by default and 
6fb0: 69 6e 20 6d 6f 73 74 20 61 70 70 6c 69 63 61 74  in most applicat
6fc0: 69 6f 6e 2e 20 20 42 75 74 20 73 6f 6d 65 20 61  ion.  But some a
6fd0: 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20 73 75 63  pplications, suc
6fe0: 68 0a 20 20 61 73 20 74 68 65 20 5b 63 6f 6d 6d  h.  as the [comm
6ff0: 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c 5d 20  and-line shell] 
7000: 66 6f 72 20 53 51 4c 69 74 65 2c 20 76 61 6c 75  for SQLite, valu
7010: 65 20 63 6c 61 72 69 74 79 20 6f 66 20 45 58 50  e clarity of EXP
7020: 4c 41 49 4e 20 6f 75 74 70 75 74 0a 20 20 6f 76  LAIN output.  ov
7030: 65 72 20 72 61 77 20 70 65 72 66 6f 72 6d 61 6e  er raw performan
7040: 63 65 20 61 6e 64 20 73 6f 20 74 68 69 73 20 63  ce and so this c
7050: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
7060: 6f 6e 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20  on is available 
7070: 74 6f 20 74 68 65 6d 2e 0a 20 20 54 68 65 20 53  to them..  The S
7080: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45 58 50  QLITE_ENABLE_EXP
7090: 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53 20 63 6f  LAIN_COMMENTS co
70a0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
70b0: 6e 20 69 73 20 61 6c 73 6f 20 65 6e 61 62 6c 65  n is also enable
70c0: 64 0a 20 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  d.  automaticall
70d0: 79 20 69 66 20 5b 53 51 4c 49 54 45 5f 44 45 42  y if [SQLITE_DEB
70e0: 55 47 5d 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a  UG] is enabled..
70f0: 7d 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  }...COMPILE_OPTI
7100: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
7110: 45 5f 46 54 53 33 7d 20 7b 0a 20 20 57 68 65 6e  E_FTS3} {.  When
7120: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
7130: 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b  defined in the [
7140: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76  amalgamation], v
7150: 65 72 73 69 6f 6e 20 33 0a 20 20 6f 66 20 74 68  ersion 3.  of th
7160: 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72  e full-text sear
7170: 63 68 20 65 6e 67 69 6e 65 20 69 73 20 61 64 64  ch engine is add
7180: 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20  ed to the build 
7190: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d  automatically..}
71a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
71b0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
71c0: 46 54 53 33 5f 50 41 52 45 4e 54 48 45 53 49 53  FTS3_PARENTHESIS
71d0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
71e0: 6e 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20 71  n modifies the q
71f0: 75 65 72 79 20 70 61 74 74 65 72 6e 20 70 61 72  uery pattern par
7200: 73 65 72 20 69 6e 20 46 54 53 33 20 73 75 63 68  ser in FTS3 such
7210: 20 74 68 61 74 20 69 74 0a 20 20 73 75 70 70 6f   that it.  suppo
7220: 72 74 73 20 6f 70 65 72 61 74 6f 72 73 20 41 4e  rts operators AN
7230: 44 20 61 6e 64 20 4e 4f 54 20 28 69 6e 20 61 64  D and NOT (in ad
7240: 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 75 73  dition to the us
7250: 75 61 6c 20 4f 52 20 61 6e 64 20 4e 45 41 52 29  ual OR and NEAR)
7260: 0a 20 20 61 6e 64 20 61 6c 73 6f 20 61 6c 6c 6f  .  and also allo
7270: 77 73 20 71 75 65 72 79 20 65 78 70 72 65 73 73  ws query express
7280: 69 6f 6e 73 20 74 6f 20 63 6f 6e 74 61 69 6e 20  ions to contain 
7290: 6e 65 73 74 65 64 20 70 61 72 65 6e 74 68 65 73  nested parenthes
72a0: 69 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  is..}..COMPILE_O
72b0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
72c0: 41 42 4c 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49  ABLE_FTS3_TOKENI
72d0: 5a 45 52 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ZER} {.  This op
72e0: 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65  tion enables the
72f0: 20 74 77 6f 2d 61 72 67 75 6d 65 6e 74 20 76 65   two-argument ve
7300: 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 5b 66 74  rsion of the [ft
7310: 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 5d 0a  s3_tokenizer()].
7320: 20 20 69 6e 74 65 72 66 61 63 65 2e 20 20 54 68    interface.  Th
7330: 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e  e second argumen
7340: 74 20 74 6f 20 66 74 73 33 5f 74 6f 6b 65 6e 69  t to fts3_tokeni
7350: 7a 65 72 28 29 20 69 73 20 73 75 70 70 6f 73 65  zer() is suppose
7360: 20 74 6f 20 62 65 20 61 0a 20 20 70 6f 69 6e 74   to be a.  point
7370: 65 72 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e  er to a function
7380: 20 28 65 6e 63 6f 64 65 64 20 61 73 20 61 20 42   (encoded as a B
7390: 4c 4f 42 29 20 74 68 61 74 20 69 6d 70 6c 65 6d  LOB) that implem
73a0: 65 6e 74 73 20 61 6e 0a 20 20 61 70 70 6c 69 63  ents an.  applic
73b0: 61 74 69 6f 6e 20 64 65 66 69 6e 65 64 20 74 6f  ation defined to
73c0: 6b 65 6e 69 7a 65 72 2e 20 20 49 66 20 68 6f 73  kenizer.  If hos
73d0: 74 69 6c 65 20 61 63 74 6f 72 73 20 61 72 65 20  tile actors are 
73e0: 61 62 6c 65 20 74 6f 20 72 75 6e 0a 20 20 74 68  able to run.  th
73f0: 65 20 74 77 6f 2d 61 72 67 75 6d 65 6e 74 20 76  e two-argument v
7400: 65 72 73 69 6f 6e 20 6f 66 20 66 74 73 33 5f 74  ersion of fts3_t
7410: 6f 6b 65 6e 69 7a 65 72 28 29 20 77 69 74 68 20  okenizer() with 
7420: 61 6e 20 61 72 62 69 74 72 61 72 79 20 73 65 63  an arbitrary sec
7430: 6f 6e 64 0a 20 20 61 72 67 75 6d 65 6e 74 2c 20  ond.  argument, 
7440: 74 68 65 79 20 63 6f 75 6c 64 20 75 73 65 20 63  they could use c
7450: 72 61 73 68 20 6f 72 20 74 61 6b 65 20 63 6f 6e  rash or take con
7460: 74 72 6f 6c 20 6f 66 20 74 68 65 20 70 72 6f 63  trol of the proc
7470: 65 73 73 2e 20 0a 20 20 3c 70 3e 0a 20 20 42 65  ess. .  <p>.  Be
7480: 63 61 75 73 65 20 6f 66 20 73 65 63 75 72 69 74  cause of securit
7490: 79 20 63 6f 6e 63 65 72 6e 73 2c 20 74 68 65 20  y concerns, the 
74a0: 74 77 6f 2d 61 72 67 75 6d 65 6e 74 20 66 74 73  two-argument fts
74b0: 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 66 65  3_tokenizer() fe
74c0: 61 74 75 72 65 20 0a 20 20 77 61 73 20 64 69 73  ature .  was dis
74d0: 61 62 6c 65 64 20 62 65 67 69 6e 6e 69 6e 67 20  abled beginning 
74e0: 77 69 74 68 20 5b 56 65 72 73 69 6f 6e 20 33 2e  with [Version 3.
74f0: 31 31 2e 30 5d 20 75 6e 6c 65 73 73 20 74 68 69  11.0] unless thi
7500: 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 20  s compile-time. 
7510: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 2e   option is used.
7520: 0a 20 20 5b 56 65 72 73 69 6f 6e 20 33 2e 31 32  .  [Version 3.12
7530: 2e 30 5d 20 61 64 64 65 64 20 74 68 65 20 0a 20  .0] added the . 
7540: 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e   [sqlite3_db_con
7550: 66 69 67 5d 28 64 62 2c 5b 53 51 4c 49 54 45 5f  fig](db,[SQLITE_
7560: 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f  DBCONFIG_ENABLE_
7570: 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 5d 2c  FTS3_TOKENIZER],
7580: 31 2c 30 29 20 69 6e 74 65 72 66 61 63 65 0a 20  1,0) interface. 
7590: 20 74 68 61 74 20 61 63 74 69 76 61 74 65 73 20   that activates 
75a0: 74 68 65 20 74 77 6f 2d 61 72 67 75 6d 65 6e 74  the two-argument
75b0: 20 76 65 72 73 69 6f 6e 20 6f 66 20 5b 66 74 73   version of [fts
75c0: 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 5d 0a 20  3_tokenizer()]. 
75d0: 20 66 6f 72 20 61 20 73 70 65 63 69 66 69 63 20   for a specific 
75e0: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
75f0: 74 69 6f 6e 5d 20 61 74 20 72 75 6e 2d 74 69 6d  tion] at run-tim
7600: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
7610: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
7620: 42 4c 45 5f 46 54 53 34 7d 20 7b 0a 20 20 57 68  BLE_FTS4} {.  Wh
7630: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
7640: 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65  s defined in the
7650: 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c   [amalgamation],
7660: 20 76 65 72 73 69 6f 6e 73 20 33 20 61 6e 64 20   versions 3 and 
7670: 34 0a 20 20 6f 66 20 74 68 65 20 66 75 6c 6c 2d  4.  of the full-
7680: 74 65 78 74 20 73 65 61 72 63 68 20 65 6e 67 69  text search engi
7690: 6e 65 20 69 73 20 61 64 64 65 64 20 74 6f 20 74  ne is added to t
76a0: 68 65 20 62 75 69 6c 64 20 61 75 74 6f 6d 61 74  he build automat
76b0: 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49  ically..}..COMPI
76c0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
76d0: 45 5f 45 4e 41 42 4c 45 5f 46 54 53 35 7d 20 7b  E_ENABLE_FTS5} {
76e0: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
76f0: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 20 69  ion is defined i
7700: 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74  n the [amalgamat
7710: 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e 73 20 35  ion], versions 5
7720: 0a 20 20 6f 66 20 74 68 65 20 66 75 6c 6c 2d 74  .  of the full-t
7730: 65 78 74 20 73 65 61 72 63 68 20 65 6e 67 69 6e  ext search engin
7740: 65 20 28 5b 66 74 73 35 5d 29 20 69 73 20 61 64  e ([fts5]) is ad
7750: 64 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64  ded to the build
7760: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a   automatically..
7770: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
7780: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
7790: 5f 49 43 55 7d 20 7b 0a 20 20 54 68 69 73 20 6f  _ICU} {.  This o
77a0: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
77b0: 20 0a 20 20 5b 68 74 74 70 3a 2f 2f 77 77 77 2e   .  [http://www.
77c0: 69 63 75 2d 70 72 6f 6a 65 63 74 2e 6f 72 67 2f  icu-project.org/
77d0: 20 7c 20 49 6e 74 65 72 6e 61 74 69 6f 6e 61 6c   | International
77e0: 20 43 6f 6d 70 6f 6e 65 6e 74 73 20 66 6f 72 20   Components for 
77f0: 55 6e 69 63 6f 64 65 5d 0a 20 20 6f 72 20 22 49  Unicode].  or "I
7800: 43 55 22 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f  CU" extension to
7810: 20 53 51 4c 69 74 65 20 74 6f 20 62 65 20 61 64   SQLite to be ad
7820: 64 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64  ded to the build
7830: 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  .  .}..COMPILE_O
7840: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
7850: 41 42 4c 45 5f 49 4f 54 52 41 43 45 7d 20 7b 0a  ABLE_IOTRACE} {.
7860: 20 20 57 68 65 6e 20 62 6f 74 68 20 74 68 65 20    When both the 
7870: 53 51 4c 69 74 65 20 63 6f 72 65 20 61 6e 64 20  SQLite core and 
7880: 74 68 65 20 5b 43 6f 6d 6d 61 6e 64 20 4c 69 6e  the [Command Lin
7890: 65 20 49 6e 74 65 72 66 61 63 65 5d 20 28 43 4c  e Interface] (CL
78a0: 49 29 20 61 72 65 20 62 6f 74 68 20 0a 20 20 63  I) are both .  c
78b0: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 69  ompiled with thi
78c0: 73 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74  s option, then t
78d0: 68 65 20 43 4c 49 20 70 72 6f 76 69 64 65 73 20  he CLI provides 
78e0: 61 6e 20 65 78 74 72 61 20 63 6f 6d 6d 61 6e 64  an extra command
78f0: 0a 20 20 6e 61 6d 65 64 20 22 2e 69 6f 74 72 61  .  named ".iotra
7900: 63 65 22 20 74 68 61 74 20 70 72 6f 76 69 64 65  ce" that provide
7910: 73 20 61 20 6c 6f 77 2d 6c 65 76 65 6c 20 6c 6f  s a low-level lo
7920: 67 20 6f 66 20 49 2f 4f 20 61 63 74 69 76 69 74  g of I/O activit
7930: 79 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  y..  This option
7940: 20 69 73 20 65 78 70 65 72 69 6d 65 6e 74 61 6c   is experimental
7950: 20 61 6e 64 20 6d 61 79 20 62 65 20 64 69 73 63   and may be disc
7960: 6f 6e 74 69 6e 75 65 64 20 69 6e 20 61 20 66 75  ontinued in a fu
7970: 74 75 72 65 20 72 65 6c 65 61 73 65 2e 0a 7d 0a  ture release..}.
7980: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
7990: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4a  {SQLITE_ENABLE_J
79a0: 53 4f 4e 31 7d 20 7b 0a 20 20 57 68 65 6e 20 74  SON1} {.  When t
79b0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
79c0: 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 61 6d  fined in the [am
79d0: 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 74 68 65  algamation], the
79e0: 0a 20 20 5b 4a 53 4f 4e 20 53 51 4c 20 66 75 6e  .  [JSON SQL fun
79f0: 63 74 69 6f 6e 73 5d 20 61 72 65 20 61 64 64 65  ctions] are adde
7a00: 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20 61  d to the build a
7a10: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a  utomatically..}.
7a20: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
7a30: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c  {SQLITE_ENABLE_L
7a40: 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 7d 20 7b 0a  OCKING_STYLE} {.
7a50: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
7a60: 61 62 6c 65 73 20 61 64 64 69 74 69 6f 6e 61 6c  ables additional
7a70: 20 6c 6f 67 69 63 20 69 6e 20 74 68 65 20 4f 53   logic in the OS
7a80: 20 69 6e 74 65 72 66 61 63 65 20 6c 61 79 65 72   interface layer
7a90: 20 66 6f 72 0a 20 20 4d 61 63 20 4f 53 20 58 2e   for.  Mac OS X.
7aa0: 20 54 68 65 20 61 64 64 69 74 69 6f 6e 61 6c 20   The additional 
7ab0: 6c 6f 67 69 63 20 61 74 74 65 6d 70 74 73 20 74  logic attempts t
7ac0: 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  o determine the 
7ad0: 74 79 70 65 20 6f 66 20 74 68 65 0a 20 20 75 6e  type of the.  un
7ae0: 64 65 72 6c 79 69 6e 67 20 66 69 6c 65 73 79 73  derlying filesys
7af0: 74 65 6d 20 61 6e 64 20 63 68 6f 6f 73 65 20 61  tem and choose a
7b00: 6e 64 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6c  nd alternative l
7b10: 6f 63 6b 69 6e 67 20 73 74 72 61 74 65 67 79 0a  ocking strategy.
7b20: 20 20 74 68 61 74 20 77 6f 72 6b 73 20 63 6f 72    that works cor
7b30: 72 65 63 74 6c 79 20 66 6f 72 20 74 68 61 74 20  rectly for that 
7b40: 66 69 6c 65 73 79 73 74 65 6d 20 74 79 70 65 2e  filesystem type.
7b50: 20 46 69 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74   Five locking st
7b60: 72 61 74 65 67 69 65 73 20 0a 20 20 61 72 65 20  rategies .  are 
7b70: 61 76 61 69 6c 61 62 6c 65 3a 0a 0a 20 20 3c 75  available:..  <u
7b80: 6c 3e 0a 20 20 20 20 3c 6c 69 3e 20 50 4f 53 49  l>.    <li> POSI
7b90: 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e  X locking style.
7ba0: 20 54 68 69 73 20 69 73 20 74 68 65 20 64 65 66   This is the def
7bb0: 61 75 6c 74 20 6c 6f 63 6b 69 6e 67 20 73 74 79  ault locking sty
7bc0: 6c 65 20 61 6e 64 20 74 68 65 0a 20 20 20 20 20  le and the.     
7bd0: 20 20 20 20 73 74 79 6c 65 20 75 73 65 64 20 62      style used b
7be0: 79 20 6f 74 68 65 72 20 28 6e 6f 6e 20 4d 61 63  y other (non Mac
7bf0: 20 4f 53 20 58 29 20 55 6e 69 78 65 73 2e 20 4c   OS X) Unixes. L
7c00: 6f 63 6b 73 20 61 72 65 20 6f 62 74 61 69 6e 65  ocks are obtaine
7c10: 64 20 61 6e 64 20 0a 20 20 20 20 20 20 20 20 20  d and .         
7c20: 72 65 6c 65 61 73 65 64 20 75 73 69 6e 67 20 74  released using t
7c30: 68 65 20 66 63 6e 74 6c 28 29 20 73 79 73 74 65  he fcntl() syste
7c40: 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20 3c 6c 69  m call...    <li
7c50: 3e 20 41 46 50 20 6c 6f 63 6b 69 6e 67 20 73 74  > AFP locking st
7c60: 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63 6b 69 6e  yle. This lockin
7c70: 67 20 73 74 79 6c 65 20 69 73 20 75 73 65 64 20  g style is used 
7c80: 66 6f 72 20 6e 65 74 77 6f 72 6b 20 66 69 6c 65  for network file
7c90: 20 0a 20 20 20 20 20 20 20 20 20 73 79 73 74 65   .         syste
7ca0: 6d 73 20 74 68 61 74 20 75 73 65 20 74 68 65 20  ms that use the 
7cb0: 41 46 50 20 28 41 70 70 6c 65 20 46 69 6c 69 6e  AFP (Apple Filin
7cc0: 67 20 50 72 6f 74 6f 63 6f 6c 29 20 70 72 6f 74  g Protocol) prot
7cd0: 6f 63 6f 6c 2e 20 4c 6f 63 6b 73 0a 20 20 20 20  ocol. Locks.    
7ce0: 20 20 20 20 20 61 72 65 20 6f 62 74 61 69 6e 65       are obtaine
7cf0: 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 74 68 65  d by calling the
7d00: 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f   library functio
7d10: 6e 20 5f 41 46 50 46 53 53 65 74 4c 6f 63 6b 28  n _AFPFSSetLock(
7d20: 29 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 46 6c 6f  )...    <li> Flo
7d30: 63 6b 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  ck locking style
7d40: 2e 20 54 68 69 73 20 69 73 20 75 73 65 64 20 66  . This is used f
7d50: 6f 72 20 66 69 6c 65 2d 73 79 73 74 65 6d 73 20  or file-systems 
7d60: 74 68 61 74 20 64 6f 20 6e 6f 74 0a 20 20 20 20  that do not.    
7d70: 20 20 20 20 20 73 75 70 70 6f 72 74 20 50 4f 53       support POS
7d80: 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  IX locking style
7d90: 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61  . Locks are obta
7da0: 69 6e 65 64 20 61 6e 64 20 72 65 6c 65 61 73 65  ined and release
7db0: 64 20 75 73 69 6e 67 0a 20 20 20 20 20 20 20 20  d using.        
7dc0: 20 74 68 65 20 66 6c 6f 63 6b 28 29 20 73 79 73   the flock() sys
7dd0: 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20 3c  tem call...    <
7de0: 6c 69 3e 20 44 6f 74 2d 66 69 6c 65 20 6c 6f 63  li> Dot-file loc
7df0: 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73  king style. This
7e00: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 69   locking style i
7e10: 73 20 75 73 65 64 20 77 68 65 6e 20 6e 65 69 74  s used when neit
7e20: 68 65 72 0a 20 20 20 20 20 20 20 20 20 66 6c 6f  her.         flo
7e30: 63 6b 20 6e 6f 72 20 50 4f 53 49 58 20 6c 6f 63  ck nor POSIX loc
7e40: 6b 69 6e 67 20 73 74 79 6c 65 73 20 61 72 65 20  king styles are 
7e50: 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 65  supported by the
7e60: 20 66 69 6c 65 20 73 79 73 74 65 6d 2e 0a 20 20   file system..  
7e70: 20 20 20 20 20 20 20 44 61 74 61 62 61 73 65 20         Database 
7e80: 6c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61 69 6e  locks are obtain
7e90: 65 64 20 62 79 20 63 72 65 61 74 69 6e 67 20 61  ed by creating a
7ea0: 6e 64 20 65 6e 74 72 79 20 69 6e 20 74 68 65 20  nd entry in the 
7eb0: 66 69 6c 65 2d 73 79 73 74 65 6d 0a 20 20 20 20  file-system.    
7ec0: 20 20 20 20 20 61 74 20 61 20 77 65 6c 6c 2d 6b       at a well-k
7ed0: 6e 6f 77 6e 20 6c 6f 63 61 74 69 6f 6e 20 72 65  nown location re
7ee0: 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 64 61  lative to the da
7ef0: 74 61 62 61 73 65 20 66 69 6c 65 20 28 61 20 22  tabase file (a "
7f00: 64 6f 74 2d 66 69 6c 65 22 29 0a 20 20 20 20 20  dot-file").     
7f10: 20 20 20 20 61 6e 64 20 72 65 6c 69 6e 71 75 69      and relinqui
7f20: 73 68 65 64 20 62 79 20 64 65 6c 65 74 69 6e 67  shed by deleting
7f30: 20 74 68 65 20 73 61 6d 65 20 66 69 6c 65 2e 0a   the same file..
7f40: 0a 20 20 20 20 3c 6c 69 3e 20 4e 6f 20 6c 6f 63  .    <li> No loc
7f50: 6b 69 6e 67 20 73 74 79 6c 65 2e 20 49 66 20 6e  king style. If n
7f60: 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65  one of the above
7f70: 20 63 61 6e 20 62 65 20 73 75 70 70 6f 72 74 65   can be supporte
7f80: 64 2c 20 74 68 69 73 20 0a 20 20 20 20 20 20 20  d, this .       
7f90: 20 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20    locking style 
7fa0: 69 73 20 75 73 65 64 2e 20 4e 6f 20 64 61 74 61  is used. No data
7fb0: 62 61 73 65 20 6c 6f 63 6b 69 6e 67 20 6d 65 63  base locking mec
7fc0: 68 61 6e 69 73 6d 20 69 73 20 75 73 65 64 2e 20  hanism is used. 
7fd0: 57 68 65 6e 0a 20 20 20 20 20 20 20 20 20 74 68  When.         th
7fe0: 69 73 20 73 79 73 74 65 6d 20 69 73 20 75 73 65  is system is use
7ff0: 64 20 69 74 20 69 73 20 6e 6f 74 20 73 61 66 65  d it is not safe
8000: 20 66 6f 72 20 61 20 73 69 6e 67 6c 65 20 64 61   for a single da
8010: 74 61 62 61 73 65 20 74 6f 20 62 65 0a 20 20 20  tabase to be.   
8020: 20 20 20 20 20 20 61 63 63 65 73 73 65 64 20 62        accessed b
8030: 79 20 6d 75 6c 74 69 70 6c 65 20 63 6c 69 65 6e  y multiple clien
8040: 74 73 2e 0a 20 20 3c 2f 75 6c 3e 0a 0a 20 20 41  ts..  </ul>..  A
8050: 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 66 69 76  dditionally, fiv
8060: 65 20 65 78 74 72 61 20 5b 56 46 53 5d 20 69 6d  e extra [VFS] im
8070: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 61 72  plementations ar
8080: 65 20 70 72 6f 76 69 64 65 64 20 61 73 20 77 65  e provided as we
8090: 6c 6c 20 61 73 20 74 68 65 0a 20 20 64 65 66 61  ll as the.  defa
80a0: 75 6c 74 2e 20 42 79 20 73 70 65 63 69 66 79 69  ult. By specifyi
80b0: 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 20 65 78  ng one of the ex
80c0: 74 72 61 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e  tra VFS implemen
80d0: 74 61 74 69 6f 6e 73 20 0a 20 20 77 68 65 6e 20  tations .  when 
80e0: 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69 74 65 33  calling [sqlite3
80f0: 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61 6e 20  _open_v2()], an 
8100: 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79 20  application may 
8110: 62 79 70 61 73 73 20 74 68 65 20 66 69 6c 65 2d  bypass the file-
8120: 73 79 73 74 65 6d 0a 20 20 64 65 74 65 63 74 69  system.  detecti
8130: 6f 6e 20 6c 6f 67 69 63 20 61 6e 64 20 65 78 70  on logic and exp
8140: 6c 69 63 69 74 6c 79 20 73 65 6c 65 63 74 20 6f  licitly select o
8150: 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20  ne of the above 
8160: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73 2e 20  locking styles. 
8170: 54 68 65 0a 20 20 66 69 76 65 20 65 78 74 72 61  The.  five extra
8180: 20 5b 56 46 53 5d 20 69 6d 70 6c 65 6d 65 6e 74   [VFS] implement
8190: 61 74 69 6f 6e 73 20 61 72 65 20 63 61 6c 6c 65  ations are calle
81a0: 64 20 22 75 6e 69 78 2d 70 6f 73 69 78 22 2c 20  d "unix-posix", 
81b0: 22 75 6e 69 78 2d 61 66 70 22 2c 0a 20 20 22 75  "unix-afp",.  "u
81c0: 6e 69 78 2d 66 6c 6f 63 6b 22 2c 20 22 75 6e 69  nix-flock", "uni
81d0: 78 2d 64 6f 74 66 69 6c 65 22 20 61 6e 64 20 22  x-dotfile" and "
81e0: 75 6e 69 78 2d 6e 6f 6e 65 22 2e 0a 7d 0a 0a 43  unix-none"..}..C
81f0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8200: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d  QLITE_ENABLE_MEM
8210: 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e 54 7d 20  ORY_MANAGEMENT} 
8220: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
8230: 61 64 64 73 20 65 78 74 72 61 20 6c 6f 67 69 63  adds extra logic
8240: 20 74 6f 20 53 51 4c 69 74 65 20 74 68 61 74 20   to SQLite that 
8250: 61 6c 6c 6f 77 73 20 69 74 20 74 6f 20 72 65 6c  allows it to rel
8260: 65 61 73 65 20 75 6e 75 73 65 64 0a 20 20 6d 65  ease unused.  me
8270: 6d 6f 72 79 20 75 70 6f 6e 20 72 65 71 75 65 73  mory upon reques
8280: 74 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  t.  This option 
8290: 6d 75 73 74 20 62 65 20 65 6e 61 62 6c 65 64 20  must be enabled 
82a0: 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68 65  in order for the
82b0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65  .  [sqlite3_rele
82c0: 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e  ase_memory()] in
82d0: 74 65 72 66 61 63 65 20 74 6f 20 77 6f 72 6b 2e  terface to work.
82e0: 20 20 49 66 20 74 68 69 73 20 63 6f 6d 70 69 6c    If this compil
82f0: 65 2d 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20  e-time.  option 
8300: 69 73 20 6e 6f 74 20 75 73 65 64 2c 20 74 68 65  is not used, the
8310: 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73   [sqlite3_releas
8320: 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74 65  e_memory()] inte
8330: 72 66 61 63 65 20 69 73 20 61 20 0a 20 20 6e 6f  rface is a .  no
8340: 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  -op..}..COMPILE_
8350: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
8360: 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 7d 20 7b  NABLE_MEMSYS3} {
8370: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
8380: 6e 63 6c 75 64 65 73 20 63 6f 64 65 20 69 6e 20  ncludes code in 
8390: 53 51 4c 69 74 65 20 74 68 61 74 20 69 6d 70 6c  SQLite that impl
83a0: 65 6d 65 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e  ements an altern
83b0: 61 74 69 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61  ative.  memory a
83c0: 6c 6c 6f 63 61 74 6f 72 2e 20 20 54 68 69 73 20  llocator.  This 
83d0: 61 6c 74 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f  alternative memo
83e0: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20  ry allocator is 
83f0: 6f 6e 6c 79 20 65 6e 67 61 67 65 64 0a 20 20 77  only engaged.  w
8400: 68 65 6e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  hen the [SQLITE_
8410: 43 4f 4e 46 49 47 5f 48 45 41 50 5d 20 6f 70 74  CONFIG_HEAP] opt
8420: 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  ion to [sqlite3_
8430: 63 6f 6e 66 69 67 28 29 5d 20 69 73 20 75 73 65  config()] is use
8440: 64 20 74 6f 0a 20 20 73 75 70 70 6c 79 20 61 20  d to.  supply a 
8450: 6c 61 72 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d  large chunk of m
8460: 65 6d 6f 72 79 20 66 72 6f 6d 20 77 68 69 63 68  emory from which
8470: 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f   all memory allo
8480: 63 61 74 69 6f 6e 73 20 61 72 65 0a 20 20 74 61  cations are.  ta
8490: 6b 65 6e 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59  ken..  The MEMSY
84a0: 53 33 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  S3 memory alloca
84b0: 74 6f 72 20 75 73 65 73 20 61 20 68 79 62 72 69  tor uses a hybri
84c0: 64 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 61 6c 67  d allocation alg
84d0: 6f 72 69 74 68 6d 20 0a 20 20 70 61 74 74 65 72  orithm .  patter
84e0: 6e 65 64 20 61 66 74 65 72 20 64 6c 6d 61 6c 6c  ned after dlmall
84f0: 6f 63 28 29 2e 20 20 20 4f 6e 6c 79 20 6f 6e 65  oc().   Only one
8500: 20 6f 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c   of SQLITE_ENABL
8510: 45 5f 4d 45 4d 53 59 53 33 20 61 6e 64 20 0a 20  E_MEMSYS3 and . 
8520: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d   SQLITE_ENABLE_M
8530: 45 4d 53 59 53 35 20 6d 61 79 20 62 65 20 65 6e  EMSYS5 may be en
8540: 61 62 6c 65 64 20 61 74 20 6f 6e 63 65 2e 0a 7d  abled at once..}
8550: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8560: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
8570: 4d 45 4d 53 59 53 35 7d 20 7b 0a 20 20 54 68 69  MEMSYS5} {.  Thi
8580: 73 20 6f 70 74 69 6f 6e 20 69 6e 63 6c 75 64 65  s option include
8590: 73 20 63 6f 64 65 20 69 6e 20 53 51 4c 69 74 65  s code in SQLite
85a0: 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73   that implements
85b0: 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a   an alternative.
85c0: 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74    memory allocat
85d0: 6f 72 2e 20 20 54 68 69 73 20 61 6c 74 65 72 6e  or.  This altern
85e0: 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c  ative memory all
85f0: 6f 63 61 74 6f 72 20 69 73 20 6f 6e 6c 79 20 65  ocator is only e
8600: 6e 67 61 67 65 64 0a 20 20 77 68 65 6e 20 74 68  ngaged.  when th
8610: 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  e [SQLITE_CONFIG
8620: 5f 48 45 41 50 5d 20 6f 70 74 69 6f 6e 20 74 6f  _HEAP] option to
8630: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
8640: 28 29 5d 20 69 73 20 75 73 65 64 20 74 6f 0a 20  ()] is used to. 
8650: 20 73 75 70 70 6c 79 20 61 20 6c 61 72 67 65 20   supply a large 
8660: 63 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f 72 79 20  chunk of memory 
8670: 66 72 6f 6d 20 77 68 69 63 68 20 61 6c 6c 20 6d  from which all m
8680: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
8690: 73 20 61 72 65 0a 20 20 74 61 6b 65 6e 2e 0a 20  s are.  taken.. 
86a0: 20 54 68 65 20 4d 45 4d 53 59 53 35 20 6d 6f 64   The MEMSYS5 mod
86b0: 75 6c 65 20 72 6f 75 6e 64 73 20 61 6c 6c 20 61  ule rounds all a
86c0: 6c 6c 6f 63 61 74 69 6f 6e 73 20 75 70 20 74 6f  llocations up to
86d0: 20 74 68 65 20 6e 65 78 74 20 70 6f 77 65 72 0a   the next power.
86e0: 20 20 6f 66 20 74 77 6f 20 61 6e 64 20 75 73 65    of two and use
86f0: 73 20 61 20 66 69 72 73 74 2d 66 69 74 2c 20 62  s a first-fit, b
8700: 75 64 64 79 2d 61 6c 6c 6f 63 61 74 6f 72 20 61  uddy-allocator a
8710: 6c 67 6f 72 69 74 68 6d 0a 20 20 74 68 61 74 20  lgorithm.  that 
8720: 70 72 6f 76 69 64 65 73 20 73 74 72 6f 6e 67 20  provides strong 
8730: 67 75 61 72 61 6e 74 65 65 73 20 61 67 61 69 6e  guarantees again
8740: 73 74 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e  st fragmentation
8750: 20 61 6e 64 20 62 72 65 61 6b 64 6f 77 6e 0a 20   and breakdown. 
8760: 20 73 75 62 6a 65 63 74 20 74 6f 20 63 65 72 74   subject to cert
8770: 61 69 6e 20 6f 70 65 72 61 74 69 6e 67 20 63 6f  ain operating co
8780: 6e 73 74 72 61 69 6e 74 73 2e 0a 7d 0a 0a 43 4f  nstraints..}..CO
8790: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
87a0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52 42 55 7d  LITE_ENABLE_RBU}
87b0: 20 7b 0a 20 20 45 6e 61 62 6c 65 20 74 68 65 20   {.  Enable the 
87c0: 63 6f 64 65 20 74 68 65 20 69 6d 70 6c 65 6d 65  code the impleme
87d0: 6e 74 73 20 74 68 65 20 5b 52 42 55 20 65 78 74  nts the [RBU ext
87e0: 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50  ension]..}..COMP
87f0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
8800: 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45 7d  TE_ENABLE_RTREE}
8810: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
8820: 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
8830: 6f 20 69 6e 63 6c 75 64 65 20 73 75 70 70 6f 72  o include suppor
8840: 74 20 66 6f 72 20 74 68 65 0a 20 20 5b 72 74 72  t for the.  [rtr
8850: 65 65 20 7c 20 52 2a 54 72 65 65 20 69 6e 64 65  ee | R*Tree inde
8860: 78 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a  x extension]..}.
8870: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
8880: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  {SQLITE_ENABLE_S
8890: 54 4d 54 5f 53 43 41 4e 53 54 41 54 55 53 7d 20  TMT_SCANSTATUS} 
88a0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
88b0: 65 6e 61 62 6c 65 73 20 74 68 65 20 5b 73 71 6c  enables the [sql
88c0: 69 74 65 33 5f 73 74 6d 74 5f 73 63 61 6e 73 74  ite3_stmt_scanst
88d0: 61 74 75 73 28 29 5d 20 69 6e 74 65 72 66 61 63  atus()] interfac
88e0: 65 2e 20 20 54 68 65 0a 20 20 5b 73 71 6c 69 74  e.  The.  [sqlit
88f0: 65 33 5f 73 74 6d 74 5f 73 63 61 6e 73 74 61 74  e3_stmt_scanstat
8900: 75 73 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  us()] interface 
8910: 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 6f 6d 69 74  is normally omit
8920: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69  ted from the bui
8930: 6c 64 0a 20 20 62 65 63 61 75 73 65 20 69 74 20  ld.  because it 
8940: 69 6d 70 6f 73 65 73 20 61 20 73 6d 61 6c 6c 20  imposes a small 
8950: 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e 61  performance pena
8960: 6c 74 79 2c 20 65 76 65 6e 20 6f 6e 20 73 74 61  lty, even on sta
8970: 74 65 6d 65 6e 74 73 20 74 68 61 74 0a 20 20 64  tements that.  d
8980: 6f 20 6e 6f 74 20 75 73 65 20 74 68 65 20 66 65  o not use the fe
8990: 61 74 75 72 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ature..}..COMPIL
89a0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
89b0: 5f 52 54 52 45 45 5f 49 4e 54 5f 4f 4e 4c 59 7d  _RTREE_INT_ONLY}
89c0: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74   {.  If this opt
89d0: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 67 65  ion is used toge
89e0: 74 68 65 72 20 77 69 74 68 20 5b 53 51 4c 49 54  ther with [SQLIT
89f0: 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45 5d 20  E_ENABLE_RTREE] 
8a00: 74 68 65 6e 20 74 68 65 0a 20 20 5b 72 74 72 65  then the.  [rtre
8a10: 65 20 7c 20 52 2a 54 72 65 65 20 65 78 74 65 6e  e | R*Tree exten
8a20: 73 69 6f 6e 5d 20 77 69 6c 6c 20 6f 6e 6c 79 20  sion] will only 
8a30: 73 74 6f 72 65 20 33 32 2d 62 69 74 20 73 69 67  store 32-bit sig
8a40: 6e 65 64 20 69 6e 74 65 67 65 72 0a 20 20 63 6f  ned integer.  co
8a50: 6f 72 64 69 6e 61 74 65 73 20 61 6e 64 20 61 6c  ordinates and al
8a60: 6c 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6d 70 75  l internal compu
8a70: 74 61 74 69 6f 6e 73 20 77 69 6c 6c 20 62 65 20  tations will be 
8a80: 64 6f 6e 65 20 75 73 69 6e 67 20 69 6e 74 65 67  done using integ
8a90: 65 72 73 0a 20 20 69 6e 73 74 65 61 64 20 6f 66  ers.  instead of
8aa0: 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
8ab0: 6e 75 6d 62 65 72 73 2e 0a 7d 0a 0a 43 4f 4d 50  numbers..}..COMP
8ac0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
8ad0: 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47  TE_ENABLE_SQLLOG
8ae0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
8af0: 6e 20 65 6e 61 62 6c 65 73 20 65 78 74 72 61 20  n enables extra 
8b00: 63 6f 64 65 20 28 65 73 70 65 63 69 61 6c 6c 79  code (especially
8b10: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e   the [SQLITE_CON
8b20: 46 49 47 5f 53 51 4c 4c 4f 47 5d 0a 20 20 6f 70  FIG_SQLLOG].  op
8b30: 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33  tion to [sqlite3
8b40: 5f 63 6f 6e 66 69 67 28 29 5d 29 20 74 68 61 74  _config()]) that
8b50: 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
8b60: 63 72 65 61 74 65 20 6c 6f 67 73 20 6f 66 20 61  create logs of a
8b70: 6c 6c 0a 20 20 53 51 4c 69 74 65 20 70 72 6f 63  ll.  SQLite proc
8b80: 65 73 73 69 6e 67 20 70 65 72 66 6f 72 6d 65 64  essing performed
8b90: 20 62 79 20 61 6e 20 61 70 70 6c 69 63 61 74 69   by an applicati
8ba0: 6f 6e 2e 20 20 54 68 65 73 65 20 6c 6f 67 73 20  on.  These logs 
8bb0: 63 61 6e 20 62 65 20 75 73 65 66 75 6c 0a 20 20  can be useful.  
8bc0: 69 6e 20 64 6f 69 6e 67 20 6f 66 66 2d 6c 69 6e  in doing off-lin
8bd0: 65 20 61 6e 61 6c 79 73 69 73 20 6f 66 20 74 68  e analysis of th
8be0: 65 20 62 65 68 61 76 69 6f 72 20 6f 66 20 61 6e  e behavior of an
8bf0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c 20 61 6e   application, an
8c00: 64 20 65 73 70 65 63 69 61 6c 6c 79 0a 20 20 66  d especially.  f
8c10: 6f 72 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 61  or performance a
8c20: 6e 61 6c 79 73 69 73 2e 20 20 49 6e 20 6f 72 64  nalysis.  In ord
8c30: 65 72 20 66 6f 72 20 74 68 65 20 53 51 4c 49 54  er for the SQLIT
8c40: 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 20  E_ENABLE_SQLLOG 
8c50: 6f 70 74 69 6f 6e 20 74 6f 20 0a 20 20 62 65 20  option to .  be 
8c60: 75 73 65 66 75 6c 2c 20 73 6f 6d 65 20 65 78 74  useful, some ext
8c70: 72 61 20 63 6f 64 65 20 69 73 20 72 65 71 75 69  ra code is requi
8c80: 72 65 64 2e 20 20 54 68 65 20 0a 20 20 3c 61 20  red.  The .  <a 
8c90: 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77  href="http://www
8ca0: 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 73 72 63 2f  .sqlite.org/src/
8cb0: 64 6f 63 2f 74 72 75 6e 6b 2f 73 72 63 2f 74 65  doc/trunk/src/te
8cc0: 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 3e 22 74 65  st_sqllog.c">"te
8cd0: 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 3c 2f 61 3e  st_sqllog.c"</a>
8ce0: 0a 20 20 73 6f 75 72 63 65 20 63 6f 64 65 0a 20  .  source code. 
8cf0: 20 66 69 6c 65 20 69 6e 20 74 68 65 20 53 51 4c   file in the SQL
8d00: 69 74 65 20 73 6f 75 72 63 65 20 74 72 65 65 20  ite source tree 
8d10: 69 73 20 61 20 77 6f 72 6b 69 6e 67 20 65 78 61  is a working exa
8d20: 6d 70 6c 65 20 6f 66 20 74 68 65 20 72 65 71 75  mple of the requ
8d30: 69 72 65 64 20 65 78 74 72 61 0a 20 20 63 6f 64  ired extra.  cod
8d40: 65 2e 20 20 4f 6e 20 75 6e 69 78 20 61 6e 64 20  e.  On unix and 
8d50: 77 69 6e 64 6f 77 73 20 73 79 73 74 65 6d 73 2c  windows systems,
8d60: 20 61 20 64 65 76 65 6c 6f 70 65 72 20 63 61 6e   a developer can
8d70: 20 61 70 70 65 6e 64 20 74 68 65 20 74 65 78 74   append the text
8d80: 20 6f 66 20 74 68 65 0a 20 20 22 74 65 73 74 5f   of the.  "test_
8d90: 73 71 6c 6c 6f 67 2e 63 22 20 73 6f 75 72 63 65  sqllog.c" source
8da0: 20 63 6f 64 65 20 66 69 6c 65 20 74 6f 20 74 68   code file to th
8db0: 65 20 65 6e 64 20 6f 66 20 61 6e 20 22 73 71 6c  e end of an "sql
8dc0: 69 74 65 33 2e 63 22 20 61 6d 61 6c 67 61 6d 61  ite3.c" amalgama
8dd0: 74 69 6f 6e 2c 0a 20 20 72 65 63 6f 6d 70 69 6c  tion,.  recompil
8de0: 65 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  e the applicatio
8df0: 6e 20 75 73 69 6e 67 20 74 68 65 20 2d 44 53 51  n using the -DSQ
8e00: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c  LITE_ENABLE_SQLL
8e10: 4f 47 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20  OG option, then 
8e20: 0a 20 20 63 6f 6e 74 72 6f 6c 20 6c 6f 67 67 69  .  control loggi
8e30: 6e 67 20 75 73 69 6e 67 20 65 6e 76 69 72 6f 6e  ng using environ
8e40: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 2e 20  ment variables. 
8e50: 20 53 65 65 20 74 68 65 20 68 65 61 64 65 72 20   See the header 
8e60: 63 6f 6d 6d 65 6e 74 20 6f 6e 20 0a 20 20 74 68  comment on .  th
8e70: 65 20 22 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63  e "test_sqllog.c
8e80: 22 20 73 6f 75 72 63 65 20 66 69 6c 65 20 66 6f  " source file fo
8e90: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 65 74  r additional det
8ea0: 61 69 6c 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c  ail.  .}..COMPIL
8eb0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
8ec0: 5f 45 4e 41 42 4c 45 5f 53 54 41 54 32 7d 20 7b  _ENABLE_STAT2} {
8ed0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 75  .  This option u
8ee0: 73 65 64 20 74 6f 20 63 61 75 73 65 20 74 68 65  sed to cause the
8ef0: 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61   [ANALYZE] comma
8f00: 6e 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a 20 20  nd to collect.  
8f10: 69 6e 64 65 78 20 68 69 73 74 6f 67 72 61 6d 20  index histogram 
8f20: 64 61 74 61 20 69 6e 20 74 68 65 20 3c 62 3e 73  data in the <b>s
8f30: 71 6c 69 74 65 5f 73 74 61 74 32 3c 2f 62 3e 20  qlite_stat2</b> 
8f40: 74 61 62 6c 65 2e 20 20 42 75 74 20 74 68 61 74  table.  But that
8f50: 0a 20 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  .  functionality
8f60: 20 77 61 73 20 73 75 70 65 72 63 65 64 65 64 20   was superceded 
8f70: 62 79 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  by [SQLITE_ENABL
8f80: 45 5f 53 54 41 54 33 5d 20 61 73 20 6f 66 0a 20  E_STAT3] as of. 
8f90: 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20   SQLite version 
8fa0: 33 2e 37 2e 39 2e 20 20 54 68 65 20 53 51 4c 49  3.7.9.  The SQLI
8fb0: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 32 20  TE_ENABLE_STAT2 
8fc0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
8fd0: 69 6f 6e 0a 20 20 69 73 20 6e 6f 77 20 61 20 6e  ion.  is now a n
8fe0: 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  o-op..}..COMPILE
8ff0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
9000: 45 4e 41 42 4c 45 5f 53 54 41 54 33 7d 20 7b 0a  ENABLE_STAT3} {.
9010: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64    This option ad
9020: 64 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f  ds additional lo
9030: 67 69 63 20 74 6f 20 74 68 65 20 5b 41 4e 41 4c  gic to the [ANAL
9040: 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 61 6e 64  YZE] command and
9050: 20 74 6f 0a 20 20 74 68 65 20 5b 71 75 65 72 79   to.  the [query
9060: 20 70 6c 61 6e 6e 65 72 5d 20 74 68 61 74 20 63   planner] that c
9070: 61 6e 20 68 65 6c 70 20 53 51 4c 69 74 65 20 74  an help SQLite t
9080: 6f 20 63 68 6f 73 65 20 61 20 62 65 74 74 65 72  o chose a better
9090: 20 71 75 65 72 79 20 70 6c 61 6e 0a 20 20 75 6e   query plan.  un
90a0: 64 65 72 20 63 65 72 74 61 69 6e 20 73 69 74 75  der certain situ
90b0: 61 74 69 6f 6e 73 2e 20 20 54 68 65 20 5b 41 4e  ations.  The [AN
90c0: 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69  ALYZE] command i
90d0: 73 20 65 6e 68 61 6e 63 65 64 20 74 6f 20 63 6f  s enhanced to co
90e0: 6c 6c 65 63 74 0a 20 20 68 69 73 74 6f 67 72 61  llect.  histogra
90f0: 6d 20 64 61 74 61 20 66 72 6f 6d 20 74 68 65 20  m data from the 
9100: 6c 65 66 74 2d 6d 6f 73 74 20 63 6f 6c 75 6d 6e  left-most column
9110: 20 6f 66 20 65 61 63 68 20 69 6e 64 65 78 20 61   of each index a
9120: 6e 64 20 73 74 6f 72 65 20 74 68 61 74 20 64 61  nd store that da
9130: 74 61 0a 20 20 69 6e 20 74 68 65 20 5b 73 71 6c  ta.  in the [sql
9140: 69 74 65 5f 73 74 61 74 33 5d 20 74 61 62 6c 65  ite_stat3] table
9150: 2e 20 20 54 68 65 20 71 75 65 72 79 20 70 6c 61  .  The query pla
9160: 6e 6e 65 72 20 77 69 6c 6c 20 74 68 65 6e 20 75  nner will then u
9170: 73 65 20 74 68 65 0a 20 20 68 69 73 74 6f 67 72  se the.  histogr
9180: 61 6d 20 64 61 74 61 20 74 6f 20 68 65 6c 70 20  am data to help 
9190: 69 74 20 6d 61 6b 65 20 62 65 74 74 65 72 20 69  it make better i
91a0: 6e 64 65 78 20 63 68 6f 69 63 65 73 2e 20 20 4e  ndex choices.  N
91b0: 6f 74 65 2c 20 68 6f 77 65 76 65 72 2c 0a 20 20  ote, however,.  
91c0: 74 68 61 74 20 74 68 65 20 75 73 65 20 6f 66 20  that the use of 
91d0: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 69  histogram data i
91e0: 6e 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20  n query planner 
91f0: 76 69 6f 6c 61 74 65 73 20 74 68 65 0a 20 20 5b  violates the.  [
9200: 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 73 74  query planner st
9210: 61 62 69 6c 69 74 79 20 67 75 61 72 61 6e 74 65  ability guarante
9220: 65 5d 20 77 68 69 63 68 20 69 73 20 69 6d 70 6f  e] which is impo
9230: 72 74 61 6e 74 20 74 6f 20 73 6f 6d 65 20 61 70  rtant to some ap
9240: 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 20 20 3c 70  plications..  <p
9250: 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  >.}..COMPILE_OPT
9260: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
9270: 4c 45 5f 53 54 41 54 34 7d 20 7b 0a 20 20 54 68  LE_STAT4} {.  Th
9280: 69 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 61  is option adds a
9290: 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20  dditional logic 
92a0: 74 6f 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d  to the [ANALYZE]
92b0: 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 6f 0a   command and to.
92c0: 20 20 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61    the [query pla
92d0: 6e 6e 65 72 5d 20 74 68 61 74 20 63 61 6e 20 68  nner] that can h
92e0: 65 6c 70 20 53 51 4c 69 74 65 20 74 6f 20 63 68  elp SQLite to ch
92f0: 6f 73 65 20 61 20 62 65 74 74 65 72 20 71 75 65  ose a better que
9300: 72 79 20 70 6c 61 6e 0a 20 20 75 6e 64 65 72 20  ry plan.  under 
9310: 63 65 72 74 61 69 6e 20 73 69 74 75 61 74 69 6f  certain situatio
9320: 6e 73 2e 20 20 54 68 65 20 5b 41 4e 41 4c 59 5a  ns.  The [ANALYZ
9330: 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 6e  E] command is en
9340: 68 61 6e 63 65 64 20 74 6f 20 63 6f 6c 6c 65 63  hanced to collec
9350: 74 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61  t.  histogram da
9360: 74 61 20 66 72 6f 6d 20 61 6c 6c 20 63 6f 6c 75  ta from all colu
9370: 6d 6e 73 20 6f 66 20 65 76 65 72 79 20 69 6e 64  mns of every ind
9380: 65 78 20 61 6e 64 20 73 74 6f 72 65 20 74 68 61  ex and store tha
9390: 74 20 64 61 74 61 0a 20 20 69 6e 20 74 68 65 20  t data.  in the 
93a0: 5b 73 71 6c 69 74 65 5f 73 74 61 74 34 5d 20 74  [sqlite_stat4] t
93b0: 61 62 6c 65 2e 20 20 54 68 65 20 71 75 65 72 79  able.  The query
93c0: 20 70 6c 61 6e 6e 65 72 20 77 69 6c 6c 20 74 68   planner will th
93d0: 65 6e 20 75 73 65 20 74 68 65 0a 20 20 68 69 73  en use the.  his
93e0: 74 6f 67 72 61 6d 20 64 61 74 61 20 74 6f 20 68  togram data to h
93f0: 65 6c 70 20 69 74 20 6d 61 6b 65 20 62 65 74 74  elp it make bett
9400: 65 72 20 69 6e 64 65 78 20 63 68 6f 69 63 65 73  er index choices
9410: 2e 20 20 54 68 65 20 64 6f 77 6e 73 69 64 65 20  .  The downside 
9420: 6f 66 0a 20 20 74 68 69 73 20 63 6f 6d 70 69 6c  of.  this compil
9430: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73  e-time option is
9440: 20 74 68 61 74 20 69 74 20 76 69 6f 6c 61 74 65   that it violate
9450: 73 20 74 68 65 0a 20 20 5b 71 75 65 72 79 20 70  s the.  [query p
9460: 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c 69 74 79  lanner stability
9470: 20 67 75 61 72 61 6e 74 65 65 5d 20 6d 61 6b 69   guarantee] maki
9480: 6e 67 20 69 74 20 6d 6f 72 65 20 64 69 66 66 69  ng it more diffi
9490: 63 75 6c 74 20 74 6f 20 65 6e 73 75 72 65 0a 20  cult to ensure. 
94a0: 20 63 6f 6e 73 69 73 74 65 6e 74 20 70 65 72 66   consistent perf
94b0: 6f 72 6d 61 6e 63 65 20 69 6e 20 6d 61 73 73 2d  ormance in mass-
94c0: 70 72 6f 64 75 63 65 64 20 61 70 70 6c 69 63 61  produced applica
94d0: 74 69 6f 6e 73 2e 0a 20 20 3c 70 3e 0a 20 20 53  tions..  <p>.  S
94e0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41  QLITE_ENABLE_STA
94f0: 54 34 20 69 73 20 61 6e 20 65 6e 68 61 6e 63 65  T4 is an enhance
9500: 6d 65 6e 74 20 6f 66 20 5b 53 51 4c 49 54 45 5f  ment of [SQLITE_
9510: 45 4e 41 42 4c 45 5f 53 54 41 54 33 5d 2e 20 20  ENABLE_STAT3].  
9520: 53 54 41 54 33 0a 20 20 6f 6e 6c 79 20 72 65 63  STAT3.  only rec
9530: 6f 72 64 65 64 20 68 69 73 74 6f 67 72 61 6d 20  orded histogram 
9540: 64 61 74 61 20 66 6f 72 20 74 68 65 20 6c 65 66  data for the lef
9550: 74 2d 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20 6f 66  t-most column of
9560: 20 65 61 63 68 20 69 6e 64 65 78 0a 20 20 77 68   each index.  wh
9570: 65 72 65 61 73 20 74 68 65 20 53 54 41 54 34 20  ereas the STAT4 
9580: 65 6e 68 61 6e 63 65 6d 65 6e 74 20 72 65 63 6f  enhancement reco
9590: 72 64 73 20 68 69 73 74 6f 67 72 61 6d 20 64 61  rds histogram da
95a0: 74 61 20 66 72 6f 6d 20 61 6c 6c 20 63 6f 6c 75  ta from all colu
95b0: 6d 6e 73 0a 20 20 6f 66 20 65 61 63 68 20 69 6e  mns.  of each in
95c0: 64 65 78 2e 0a 20 20 54 68 65 20 5b 53 51 4c 49  dex..  The [SQLI
95d0: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33 5d  TE_ENABLE_STAT3]
95e0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
95f0: 74 69 6f 6e 20 69 73 20 61 20 6e 6f 2d 6f 70 20  tion is a no-op 
9600: 61 6e 64 20 69 73 20 69 67 6e 6f 72 65 64 0a 20  and is ignored. 
9610: 20 69 66 20 74 68 65 20 53 51 4c 49 54 45 5f 45   if the SQLITE_E
9620: 4e 41 42 4c 45 5f 53 54 41 54 34 20 63 6f 6d 70  NABLE_STAT4 comp
9630: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
9640: 69 73 20 75 73 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  is used..}..COMP
9650: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
9660: 54 45 5f 45 4e 41 42 4c 45 5f 54 52 45 45 5f 45  TE_ENABLE_TREE_E
9670: 58 50 4c 41 49 4e 7d 20 7b 0a 20 20 54 68 69 73  XPLAIN} {.  This
9680: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
9690: 74 69 6f 6e 20 69 73 20 6e 6f 20 6c 6f 6e 67 65  tion is no longe
96a0: 72 20 75 73 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  r used..}..COMPI
96b0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
96c0: 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f  E_ENABLE_UPDATE_
96d0: 44 45 4c 45 54 45 5f 4c 49 4d 49 54 7d 20 7b 0a  DELETE_LIMIT} {.
96e0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
96f0: 61 62 6c 65 73 20 61 6e 20 6f 70 74 69 6f 6e 61  ables an optiona
9700: 6c 20 4f 52 44 45 52 20 42 59 20 61 6e 64 20 4c  l ORDER BY and L
9710: 49 4d 49 54 20 63 6c 61 75 73 65 20 6f 6e 20 0a  IMIT clause on .
9720: 20 20 5b 55 50 44 41 54 45 5d 20 61 6e 64 20 5b    [UPDATE] and [
9730: 44 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65 6e  DELETE] statemen
9740: 74 73 2e 0a 0a 20 20 3c 70 3e 49 66 20 74 68 69  ts...  <p>If thi
9750: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
9760: 6e 65 64 2c 20 74 68 65 6e 20 69 74 20 6d 75 73  ned, then it mus
9770: 74 20 61 6c 73 6f 20 62 65 20 0a 20 20 64 65 66  t also be .  def
9780: 69 6e 65 64 20 77 68 65 6e 20 75 73 69 6e 67 20  ined when using 
9790: 74 68 65 20 27 6c 65 6d 6f 6e 27 20 74 6f 6f 6c  the 'lemon' tool
97a0: 20 74 6f 20 67 65 6e 65 72 61 74 65 20 61 20 70   to generate a p
97b0: 61 72 73 65 2e 63 0a 20 20 66 69 6c 65 2e 20 42  arse.c.  file. B
97c0: 65 63 61 75 73 65 20 6f 66 20 74 68 69 73 2c 20  ecause of this, 
97d0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20  this option may 
97e0: 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68 65  only be used whe
97f0: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73  n the library is
9800: 20 62 75 69 6c 74 0a 20 20 66 72 6f 6d 20 73 6f   built.  from so
9810: 75 72 63 65 2c 20 6e 6f 74 20 66 72 6f 6d 20 74  urce, not from t
9820: 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  he [amalgamation
9830: 5d 20 6f 72 20 66 72 6f 6d 20 74 68 65 20 63 6f  ] or from the co
9840: 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a 20 20 70 72  llection of.  pr
9850: 65 2d 70 61 63 6b 61 67 65 64 20 43 20 66 69 6c  e-packaged C fil
9860: 65 73 20 70 72 6f 76 69 64 65 64 20 66 6f 72 20  es provided for 
9870: 6e 6f 6e 2d 55 6e 69 78 20 6c 69 6b 65 20 70 6c  non-Unix like pl
9880: 61 74 66 6f 72 6d 73 20 6f 6e 20 74 68 65 20 77  atforms on the w
9890: 65 62 73 69 74 65 2e 0a 20 20 3c 2f 70 3e 0a 7d  ebsite..  </p>.}
98a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
98b0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
98c0: 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46 59 7d 20 7b  UNLOCK_NOTIFY} {
98d0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65  .  This option e
98e0: 6e 61 62 6c 65 73 20 74 68 65 20 5b 73 71 6c 69  nables the [sqli
98f0: 74 65 33 5f 75 6e 6c 6f 63 6b 5f 6e 6f 74 69 66  te3_unlock_notif
9900: 79 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 61  y()] interface a
9910: 6e 64 0a 20 20 69 74 73 20 61 73 73 6f 63 69 61  nd.  its associa
9920: 74 65 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  ted functionalit
9930: 79 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63 75  y.  See the docu
9940: 6d 65 6e 74 61 74 69 6f 6e 20 74 69 74 6c 65 64  mentation titled
9950: 0a 20 20 5b 55 73 69 6e 67 20 74 68 65 20 53 51  .  [Using the SQ
9960: 4c 69 74 65 20 55 6e 6c 6f 63 6b 20 4e 6f 74 69  Lite Unlock Noti
9970: 66 69 63 61 74 69 6f 6e 20 46 65 61 74 75 72 65  fication Feature
9980: 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  ] for additional
9990: 0a 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a  .  information..
99a0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
99b0: 4e 20 7b 53 51 4c 49 54 45 5f 53 4f 55 4e 44 45  N {SQLITE_SOUNDE
99c0: 58 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  X} {.  This opti
99d0: 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20 5b  on enables the [
99e0: 73 6f 75 6e 64 65 78 28 29 20 53 51 4c 20 66 75  soundex() SQL fu
99f0: 6e 63 74 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50  nction]..}..COMP
9a00: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
9a10: 54 45 5f 55 53 45 5f 46 43 4e 54 4c 5f 54 52 41  TE_USE_FCNTL_TRA
9a20: 43 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CE} {.  This opt
9a30: 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74  ion causes SQLit
9a40: 65 20 74 6f 20 69 73 73 75 65 20 65 78 74 72 61  e to issue extra
9a50: 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54   [SQLITE_FCNTL_T
9a60: 52 41 43 45 5d 20 66 69 6c 65 20 63 6f 6e 74 72  RACE] file contr
9a70: 6f 6c 73 0a 20 20 74 6f 20 70 72 6f 76 69 64 65  ols.  to provide
9a80: 20 73 75 70 70 6c 65 6d 65 6e 74 61 72 79 20 69   supplementary i
9a90: 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f 20 74 68  nformation to th
9aa0: 65 20 56 46 53 2e 20 20 54 68 65 20 22 76 66 73  e VFS.  The "vfs
9ab0: 6c 6f 67 2e 63 22 20 65 78 74 65 6e 73 69 6f 6e  log.c" extension
9ac0: 0a 20 20 6d 61 6b 65 73 20 75 73 65 20 6f 66 20  .  makes use of 
9ad0: 74 68 69 73 20 74 6f 20 70 72 6f 76 69 64 65 20  this to provide 
9ae0: 65 6e 68 61 6e 63 65 64 20 6c 6f 67 73 20 6f 66  enhanced logs of
9af0: 20 56 46 53 20 61 63 74 69 76 69 74 79 2e 0a 7d   VFS activity..}
9b00: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
9b10: 20 7b 59 59 54 52 41 43 4b 4d 41 58 53 54 41 43   {YYTRACKMAXSTAC
9b20: 4b 44 45 50 54 48 7d 20 7b 0a 20 20 54 68 69 73  KDEPTH} {.  This
9b30: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74   option causes t
9b40: 68 65 20 4c 41 4c 52 28 31 29 20 70 61 72 73 65  he LALR(1) parse
9b50: 72 20 73 74 61 63 6b 20 64 65 70 74 68 20 74 6f  r stack depth to
9b60: 20 62 65 20 74 72 61 63 6b 65 64 0a 20 20 61 6e   be tracked.  an
9b70: 64 20 72 65 70 6f 72 74 65 64 20 75 73 69 6e 67  d reported using
9b80: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74   the [sqlite3_st
9b90: 61 74 75 73 5d 28 5b 53 51 4c 49 54 45 5f 53 54  atus]([SQLITE_ST
9ba0: 41 54 55 53 5f 50 41 52 53 45 52 5f 53 54 41 43  ATUS_PARSER_STAC
9bb0: 4b 5d 2c 2e 2e 2e 29 0a 20 20 69 6e 74 65 72 66  K],...).  interf
9bc0: 61 63 65 2e 20 20 53 51 4c 69 74 65 27 73 20 4c  ace.  SQLite's L
9bd0: 41 4c 52 28 31 29 20 70 61 72 73 65 72 20 68 61  ALR(1) parser ha
9be0: 73 20 61 20 66 69 78 65 64 20 73 74 61 63 6b 20  s a fixed stack 
9bf0: 64 65 70 74 68 0a 20 20 28 64 65 74 65 72 6d 69  depth.  (determi
9c00: 6e 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74  ned at compile-t
9c10: 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b 59  ime using the [Y
9c20: 59 53 54 41 43 4b 44 45 50 54 48 5d 20 6f 70 74  YSTACKDEPTH] opt
9c30: 69 6f 6e 73 29 2e 0a 20 20 54 68 69 73 20 6f 70  ions)..  This op
9c40: 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64  tion can be used
9c50: 20 74 6f 20 68 65 6c 70 20 64 65 74 65 72 6d 69   to help determi
9c60: 6e 65 20 69 66 20 61 6e 20 61 70 70 6c 69 63 61  ne if an applica
9c70: 74 69 6f 6e 20 69 73 0a 20 20 67 65 74 74 69 6e  tion is.  gettin
9c80: 67 20 63 6c 6f 73 65 20 74 6f 20 65 78 63 65 65  g close to excee
9c90: 64 69 6e 67 20 74 68 65 20 6d 61 78 69 6d 75 6d  ding the maximum
9ca0: 20 4c 41 4c 52 28 31 29 20 73 74 61 63 6b 20 64   LALR(1) stack d
9cb0: 65 70 74 68 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a  epth..}.</tcl>..
9cc0: 3c 61 20 6e 61 6d 65 3d 22 64 69 73 61 62 6c 65  <a name="disable
9cd0: 66 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c  features"></a>.<
9ce0: 68 32 3e 31 2e 36 20 4f 70 74 69 6f 6e 73 20 54  h2>1.6 Options T
9cf0: 6f 20 44 69 73 61 62 6c 65 20 46 65 61 74 75 72  o Disable Featur
9d00: 65 73 20 4e 6f 72 6d 61 6c 6c 79 20 54 75 72 6e  es Normally Turn
9d10: 65 64 20 4f 6e 3c 2f 68 32 3e 0a 0a 3c 74 63 6c  ed On</h2>..<tcl
9d20: 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  >.COMPILE_OPTION
9d30: 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45   {SQLITE_DISABLE
9d40: 5f 4c 46 53 7d 20 7b 0a 20 20 49 66 20 74 68 69  _LFS} {.  If thi
9d50: 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72  s C-preprocessor
9d60: 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65   macro is define
9d70: 64 2c 20 6c 61 72 67 65 20 66 69 6c 65 20 73 75  d, large file su
9d80: 70 70 6f 72 74 0a 20 20 69 73 20 64 69 73 61 62  pport.  is disab
9d90: 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  led..}..COMPILE_
9da0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
9db0: 49 53 41 42 4c 45 5f 44 49 52 53 59 4e 43 7d 20  ISABLE_DIRSYNC} 
9dc0: 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70 72  {.  If this C-pr
9dd0: 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f  eprocessor macro
9de0: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 64 69 72   is defined, dir
9df0: 65 63 74 6f 72 79 20 73 79 6e 63 73 0a 20 20 61  ectory syncs.  a
9e00: 72 65 20 64 69 73 61 62 6c 65 64 2e 20 20 53 51  re disabled.  SQ
9e10: 4c 69 74 65 20 74 79 70 69 63 61 6c 6c 79 20 61  Lite typically a
9e20: 74 74 65 6d 70 74 73 20 74 6f 20 73 79 6e 63 20  ttempts to sync 
9e30: 74 68 65 20 70 61 72 65 6e 74 0a 20 20 64 69 72  the parent.  dir
9e40: 65 63 74 6f 72 79 20 77 68 65 6e 20 61 20 66 69  ectory when a fi
9e50: 6c 65 20 69 73 20 64 65 6c 65 74 65 64 20 74 6f  le is deleted to
9e60: 20 65 6e 73 75 72 65 20 74 68 65 20 64 69 72 65   ensure the dire
9e70: 63 74 6f 72 79 0a 20 20 65 6e 74 72 69 65 73 20  ctory.  entries 
9e80: 61 72 65 20 75 70 64 61 74 65 64 20 69 6d 6d 65  are updated imme
9e90: 64 69 61 74 65 6c 79 20 6f 6e 20 64 69 73 6b 2e  diately on disk.
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 44 49 53 41 42  ON {SQLITE_DISAB
9ec0: 4c 45 5f 46 54 53 33 5f 55 4e 49 43 4f 44 45 7d  LE_FTS3_UNICODE}
9ed0: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70   {.  If this C-p
9ee0: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
9ef0: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  o is defined, th
9f00: 65 20 5b 75 6e 69 63 6f 64 65 36 31 5d 20 74 6f  e [unicode61] to
9f10: 6b 65 6e 69 7a 65 72 0a 20 20 69 6e 20 5b 46 54  kenizer.  in [FT
9f20: 53 33 5d 20 69 73 20 6f 6d 69 74 74 65 64 20 66  S3] is omitted f
9f30: 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 20 61 6e  rom the build an
9f40: 64 20 69 73 20 75 6e 61 76 61 69 6c 61 62 6c 65  d is unavailable
9f50: 20 74 6f 20 0a 20 20 61 70 70 6c 69 63 61 74 69   to .  applicati
9f60: 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ons..}..COMPILE_
9f70: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
9f80: 49 53 41 42 4c 45 5f 46 54 53 34 5f 44 45 46 45  ISABLE_FTS4_DEFE
9f90: 52 52 45 44 7d 20 7b 0a 20 20 49 66 20 74 68 69  RRED} {.  If thi
9fa0: 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72  s C-preprocessor
9fb0: 20 6d 61 63 72 6f 20 64 69 73 61 62 6c 65 73 20   macro disables 
9fc0: 74 68 65 20 22 64 65 66 65 72 72 65 64 20 74 6f  the "deferred to
9fd0: 6b 65 6e 22 20 6f 70 74 69 6d 69 7a 61 74 69 6f  ken" optimizatio
9fe0: 6e 0a 20 20 69 6e 20 5b 46 54 53 34 5d 2e 20 20  n.  in [FTS4].  
9ff0: 54 68 65 20 22 64 65 66 65 72 72 65 64 20 74 6f  The "deferred to
a000: 6b 65 6e 22 20 6f 70 74 69 6d 69 7a 61 74 69 6f  ken" optimizatio
a010: 6e 20 61 76 6f 69 64 73 20 6c 6f 61 64 69 6e 67  n avoids loading
a020: 20 6d 61 73 73 69 76 65 0a 20 20 70 6f 73 74 69   massive.  posti
a030: 6e 67 20 6c 69 73 74 73 20 66 6f 72 20 74 65 72  ng lists for ter
a040: 6d 73 20 74 68 61 74 20 61 72 65 20 69 6e 20 6d  ms that are in m
a050: 6f 73 74 20 64 6f 63 75 6d 65 6e 74 73 20 6f 66  ost documents of
a060: 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 0a   the collection.
a070: 20 20 61 6e 64 20 69 6e 73 74 65 61 64 20 73 69    and instead si
a080: 6d 70 6c 79 20 73 63 61 6e 73 20 66 6f 72 20 74  mply scans for t
a090: 68 6f 73 65 20 74 6f 6b 65 6e 73 20 69 6e 20 74  hose tokens in t
a0a0: 68 65 20 64 6f 63 75 6d 65 6e 74 20 73 6f 75 72  he document sour
a0b0: 63 65 2e 20 20 5b 46 54 53 34 5d 0a 20 20 73 68  ce.  [FTS4].  sh
a0c0: 6f 75 6c 64 20 67 65 74 20 65 78 61 63 74 6c 79  ould get exactly
a0d0: 20 74 68 65 20 73 61 6d 65 20 61 6e 73 77 65 72   the same answer
a0e0: 20 62 6f 74 68 20 77 69 74 68 20 61 6e 64 20 77   both with and w
a0f0: 69 74 68 6f 75 74 20 74 68 69 73 20 6f 70 74 69  ithout this opti
a100: 6d 69 7a 61 74 69 6f 6e 2e 0a 7d 0a 3c 2f 74 63  mization..}.</tc
a110: 6c 3e 0a 0a 3c 74 63 6c 3e 0a 20 20 68 64 5f 66  l>..<tcl>.  hd_f
a120: 72 61 67 6d 65 6e 74 20 22 6f 6d 69 74 66 65 61  ragment "omitfea
a130: 74 75 72 65 73 22 0a 20 20 68 64 5f 6b 65 79 77  tures".  hd_keyw
a140: 6f 72 64 73 20 22 6f 6d 69 74 66 65 61 74 75 72  ords "omitfeatur
a150: 65 73 22 0a 3c 2f 74 63 6c 3e 0a 3c 68 32 3e 31  es".</tcl>.<h2>1
a160: 2e 37 20 4f 70 74 69 6f 6e 73 20 54 6f 20 4f 6d  .7 Options To Om
a170: 69 74 20 46 65 61 74 75 72 65 73 3c 2f 68 32 3e  it Features</h2>
a180: 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69  ..<p>The followi
a190: 6e 67 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20 62  ng options can b
a1a0: 65 20 75 73 65 64 20 74 6f 20 0a 5b 72 65 6c 66  e used to .[relf
a1b0: 6f 6f 74 70 72 69 6e 74 20 7c 20 72 65 64 75 63  ootprint | reduc
a1c0: 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68  e the size of th
a1d0: 65 20 63 6f 6d 70 69 6c 65 64 20 6c 69 62 72 61  e compiled libra
a1e0: 72 79 5d 0a 62 79 20 6f 6d 69 74 74 69 6e 67 20  ry].by omitting 
a1f0: 75 6e 75 73 65 64 20 66 65 61 74 75 72 65 73 2e  unused features.
a200: 20 54 68 69 73 20 69 73 20 70 72 6f 62 61 62 6c   This is probabl
a210: 79 20 6f 6e 6c 79 20 75 73 65 66 75 6c 0a 69 6e  y only useful.in
a220: 20 65 6d 62 65 64 64 65 64 20 73 79 73 74 65 6d   embedded system
a230: 73 20 77 68 65 72 65 20 73 70 61 63 65 20 69 73  s where space is
a240: 20 65 73 70 65 63 69 61 6c 6c 79 20 74 69 67 68   especially tigh
a250: 74 2c 20 61 73 20 65 76 65 6e 20 77 69 74 68 20  t, as even with 
a260: 61 6c 6c 0a 66 65 61 74 75 72 65 73 20 69 6e 63  all.features inc
a270: 6c 75 64 65 64 20 74 68 65 20 53 51 4c 69 74 65  luded the SQLite
a280: 20 6c 69 62 72 61 72 79 20 69 73 20 72 65 6c 61   library is rela
a290: 74 69 76 65 6c 79 20 73 6d 61 6c 6c 2e 20 44 6f  tively small. Do
a2a0: 6e 27 74 20 66 6f 72 67 65 74 0a 74 6f 20 74 65  n't forget.to te
a2b0: 6c 6c 20 79 6f 75 72 20 63 6f 6d 70 69 6c 65 72  ll your compiler
a2c0: 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 66 6f 72   to optimize for
a2d0: 20 62 69 6e 61 72 79 20 73 69 7a 65 21 20 28 74   binary size! (t
a2e0: 68 65 20 2d 4f 73 20 6f 70 74 69 6f 6e 20 69 66  he -Os option if
a2f0: 0a 75 73 69 6e 67 20 47 43 43 29 2e 20 20 54 65  .using GCC).  Te
a300: 6c 6c 69 6e 67 20 79 6f 75 72 20 63 6f 6d 70 69  lling your compi
a310: 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20  ler to optimize 
a320: 66 6f 72 20 73 69 7a 65 20 75 73 75 61 6c 6c 79  for size usually
a330: 20 68 61 73 0a 61 20 6d 75 63 68 20 6c 61 72 67   has.a much larg
a340: 65 72 20 69 6d 70 61 63 74 20 6f 6e 20 6c 69 62  er impact on lib
a350: 72 61 72 79 20 66 6f 6f 74 70 72 69 6e 74 20 74  rary footprint t
a360: 68 61 6e 20 65 6d 70 6c 6f 79 69 6e 67 20 61 6e  han employing an
a370: 79 20 6f 66 20 74 68 65 73 65 0a 63 6f 6d 70 69  y of these.compi
a380: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 2e  le-time options.
a390: 20 20 59 6f 75 20 73 68 6f 75 6c 64 20 61 6c 73    You should als
a3a0: 6f 20 76 65 72 69 66 79 20 74 68 61 74 20 0a 3c  o verify that .<
a3b0: 61 20 68 72 65 66 3d 22 23 64 65 62 75 67 6f 70  a href="#debugop
a3c0: 74 69 6f 6e 73 22 3e 64 65 62 75 67 67 69 6e 67  tions">debugging
a3d0: 20 6f 70 74 69 6f 6e 73 3c 2f 61 3e 20 61 72 65   options</a> are
a3e0: 20 64 69 73 61 62 6c 65 64 2e 3c 2f 70 3e 0a 0a   disabled.</p>..
a3f0: 3c 70 3e 54 68 65 20 6d 61 63 72 6f 73 20 69 6e  <p>The macros in
a400: 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20 64 6f   this section do
a410: 20 6e 6f 74 20 72 65 71 75 69 72 65 20 76 61 6c   not require val
a420: 75 65 73 2e 20 54 68 65 20 66 6f 6c 6c 6f 77 69  ues. The followi
a430: 6e 67 20 0a 63 6f 6d 70 69 6c 61 74 69 6f 6e 20  ng .compilation 
a440: 73 77 69 74 63 68 65 73 20 61 6c 6c 20 68 61 76  switches all hav
a450: 65 20 74 68 65 20 73 61 6d 65 20 65 66 66 65 63  e the same effec
a460: 74 3a 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f  t:<br>.-DSQLITE_
a470: 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3c  OMIT_ALTERTABLE<
a480: 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d 49  br>.-DSQLITE_OMI
a490: 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d 31 3c 62  T_ALTERTABLE=1<b
a4a0: 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54  r>.-DSQLITE_OMIT
a4b0: 5f 41 4c 54 45 52 54 41 42 4c 45 3d 30 0a 3c 2f  _ALTERTABLE=0.</
a4c0: 70 3e 0a 0a 3c 70 3e 49 66 20 61 6e 79 20 6f 66  p>..<p>If any of
a4d0: 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 61   these options a
a4e0: 72 65 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e  re defined, then
a4f0: 20 74 68 65 20 73 61 6d 65 20 73 65 74 20 6f 66   the same set of
a500: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 0a 6f   SQLITE_OMIT_*.o
a510: 70 74 69 6f 6e 73 20 6d 75 73 74 20 61 6c 73 6f  ptions must also
a520: 20 62 65 20 64 65 66 69 6e 65 64 20 77 68 65 6e   be defined when
a530: 20 75 73 69 6e 67 20 74 68 65 20 27 6c 65 6d 6f   using the 'lemo
a540: 6e 27 20 74 6f 6f 6c 20 74 6f 20 67 65 6e 65 72  n' tool to gener
a550: 61 74 65 20 74 68 65 0a 70 61 72 73 65 2e 63 20  ate the.parse.c 
a560: 66 69 6c 65 20 61 6e 64 20 77 68 65 6e 20 63 6f  file and when co
a570: 6d 70 69 6c 69 6e 67 20 74 68 65 20 27 6d 6b 6b  mpiling the 'mkk
a580: 65 79 77 6f 72 64 68 61 73 68 27 20 74 6f 6f 6c  eywordhash' tool
a590: 20 77 68 69 63 68 20 67 65 6e 65 72 61 74 65 73   which generates
a5a0: 20 0a 74 68 65 20 6b 65 79 77 6f 72 64 68 61 73   .the keywordhas
a5b0: 68 2e 68 20 66 69 6c 65 2e 0a 42 65 63 61 75 73  h.h file..Becaus
a5c0: 65 20 6f 66 20 74 68 69 73 2c 20 74 68 65 73 65  e of this, these
a5d0: 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20 6f 6e 6c   options may onl
a5e0: 79 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 74  y be used when t
a5f0: 68 65 20 6c 69 62 72 61 72 79 20 69 73 20 62 75  he library is bu
a600: 69 6c 74 0a 66 72 6f 6d 20 63 61 6e 6f 6e 69 63  ilt.from canonic
a610: 61 6c 20 73 6f 75 72 63 65 2c 20 6e 6f 74 20 66  al source, not f
a620: 72 6f 6d 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d  rom the [amalgam
a630: 61 74 69 6f 6e 5d 2e 0a 53 6f 6d 65 20 53 51 4c  ation]..Some SQL
a640: 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f  ITE_OMIT_* optio
a650: 6e 73 20 6d 69 67 68 74 20 77 6f 72 6b 2c 20 6f  ns might work, o
a660: 72 20 61 70 70 65 61 72 20 74 6f 20 77 6f 72 6b  r appear to work
a670: 2c 20 77 68 65 6e 20 75 73 65 64 20 77 69 74 68  , when used with
a680: 0a 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69  .the [amalgamati
a690: 6f 6e 5d 2e 20 20 42 75 74 20 74 68 69 73 20 69  on].  But this i
a6a0: 73 20 6e 6f 74 20 67 75 61 72 61 6e 74 65 65 64  s not guaranteed
a6b0: 2e 20 20 49 6e 20 67 65 6e 65 72 61 6c 2c 20 61  .  In general, a
a6c0: 6c 77 61 79 73 20 63 6f 6d 70 69 6c 65 0a 66 72  lways compile.fr
a6d0: 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75  om canonical sou
a6e0: 72 63 65 73 20 69 6e 20 6f 72 64 65 72 20 74 6f  rces in order to
a6f0: 20 74 61 6b 65 20 61 64 76 61 6e 74 61 67 65 20   take advantage 
a700: 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  of SQLITE_OMIT_*
a710: 20 6f 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 0a   options..</p>..
a720: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e  <blockquote>.<i>
a730: 3c 62 3e 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74  <b>Important Not
a740: 65 3a 3c 2f 62 3e 20 54 68 65 20 53 51 4c 49 54  e:</b> The SQLIT
a750: 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73  E_OMIT_* options
a760: 20 6d 61 79 20 6e 6f 74 20 77 6f 72 6b 20 77 69   may not work wi
a770: 74 68 20 74 68 65 0a 5b 61 6d 61 6c 67 61 6d 61  th the.[amalgama
a780: 74 69 6f 6e 5d 2e 20 20 53 51 4c 49 54 45 5f 4f  tion].  SQLITE_O
a790: 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69  MIT_* compile-ti
a7a0: 6d 65 0a 6f 70 74 69 6f 6e 73 20 75 73 75 61 6c  me.options usual
a7b0: 6c 79 20 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c  ly work correctl
a7c0: 79 20 6f 6e 6c 79 20 77 68 65 6e 20 53 51 4c 69  y only when SQLi
a7d0: 74 65 20 69 73 20 62 75 69 6c 74 20 66 72 6f 6d  te is built from
a7e0: 20 63 61 6e 6f 6e 69 63 61 6c 20 0a 73 6f 75 72   canonical .sour
a7f0: 63 65 20 66 69 6c 65 73 2e 0a 3c 2f 69 3e 0a 3c  ce files..</i>.<
a800: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 0a 3c  /blockquote>...<
a810: 70 3e 53 70 65 63 69 61 6c 20 76 65 72 73 69 6f  p>Special versio
a820: 6e 73 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65  ns of the SQLite
a830: 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20 74 68   amalgamation th
a840: 61 74 20 64 6f 20 77 6f 72 6b 20 77 69 74 68 20  at do work with 
a850: 61 0a 70 72 65 64 65 74 65 72 6d 69 6e 65 64 20  a.predetermined 
a860: 73 65 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d  set of SQLITE_OM
a870: 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 63 61 6e  IT_* options can
a880: 20 62 65 20 67 65 6e 65 72 61 74 65 64 2e 20 20   be generated.  
a890: 54 6f 20 64 6f 20 73 6f 2c 0a 6d 61 6b 65 20 61  To do so,.make a
a8a0: 20 63 6f 70 79 20 6f 66 20 74 68 65 20 4d 61 6b   copy of the Mak
a8b0: 65 66 69 6c 65 2e 6c 69 6e 75 78 2d 67 63 63 20  efile.linux-gcc 
a8c0: 6d 61 6b 65 66 69 6c 65 20 74 65 6d 70 6c 61 74  makefile templat
a8d0: 65 20 69 6e 20 74 68 65 20 63 61 6e 6f 6e 69 63  e in the canonic
a8e0: 61 6c 0a 73 6f 75 72 63 65 20 63 6f 64 65 20 64  al.source code d
a8f0: 69 73 74 72 69 62 75 74 69 6f 6e 2e 20 20 43 68  istribution.  Ch
a900: 61 6e 67 65 20 74 68 65 20 6e 61 6d 65 20 6f 66  ange the name of
a910: 20 79 6f 75 72 20 63 6f 70 79 20 74 6f 20 73 69   your copy to si
a920: 6d 70 6c 79 20 22 4d 61 6b 65 66 69 6c 65 22 2e  mply "Makefile".
a930: 0a 54 68 65 6e 20 65 64 69 74 20 22 4d 61 6b 65  .Then edit "Make
a940: 66 69 6c 65 22 20 74 6f 20 73 65 74 20 75 70 20  file" to set up 
a950: 61 70 70 72 6f 70 72 69 61 74 65 20 63 6f 6d 70  appropriate comp
a960: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
a970: 2e 20 20 54 68 65 6e 0a 74 79 70 65 3a 0a 3c 62  .  Then.type:.<b
a980: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 74 74 3e 6d 61  lockquote><tt>ma
a990: 6b 65 20 63 6c 65 61 6e 3b 20 6d 61 6b 65 20 73  ke clean; make s
a9a0: 71 6c 69 74 65 33 2e 63 3c 2f 74 74 3e 3c 2f 62  qlite3.c</tt></b
a9b0: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 54 68 65 20 72  lockquote>.The r
a9c0: 65 73 75 6c 74 69 6e 67 20 22 73 71 6c 69 74 65  esulting "sqlite
a9d0: 33 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f  3.c" amalgamatio
a9e0: 6e 20 63 6f 64 65 20 66 69 6c 65 20 28 61 6e 64  n code file (and
a9f0: 20 69 74 73 20 61 73 73 6f 63 69 61 74 65 64 0a   its associated.
aa00: 68 65 61 64 65 72 20 66 69 6c 65 20 22 73 71 6c  header file "sql
aa10: 69 74 65 33 2e 68 22 29 20 63 61 6e 20 74 68 65  ite3.h") can the
aa20: 6e 20 62 65 20 6d 6f 76 65 64 20 74 6f 20 61 20  n be moved to a 
aa30: 6e 6f 6e 2d 75 6e 69 78 20 70 6c 61 74 66 6f 72  non-unix platfor
aa40: 6d 0a 66 6f 72 20 66 69 6e 61 6c 20 63 6f 6d 70  m.for final comp
aa50: 69 6c 61 74 69 6f 6e 20 75 73 69 6e 67 20 61 20  ilation using a 
aa60: 6e 61 74 69 76 65 20 63 6f 6d 70 69 6c 65 72 2e  native compiler.
aa70: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 53 51 4c  </p>..<p>The SQL
aa80: 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f  ITE_OMIT_* optio
aa90: 6e 73 20 61 72 65 20 75 6e 73 75 70 70 6f 72 74  ns are unsupport
aaa0: 65 64 2e 20 20 42 79 20 74 68 69 73 20 77 65 20  ed.  By this we 
aab0: 6d 65 61 6e 20 74 68 61 74 0a 61 6e 20 53 51 4c  mean that.an SQL
aac0: 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f  ITE_OMIT_* optio
aad0: 6e 20 74 68 61 74 20 6f 6d 69 74 73 20 63 6f 64  n that omits cod
aae0: 65 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64  e from the build
aaf0: 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0a   in the current.
ab00: 72 65 6c 65 61 73 65 20 6d 69 67 68 74 20 62 65  release might be
ab10: 63 6f 6d 65 20 61 20 6e 6f 2d 6f 70 20 69 6e 20  come a no-op in 
ab20: 74 68 65 20 6e 65 78 74 20 72 65 6c 65 61 73 65  the next release
ab30: 2e 20 20 4f 72 20 74 68 65 20 6f 74 68 65 72 20  .  Or the other 
ab40: 77 61 79 20 61 72 6f 75 6e 64 3a 0a 61 6e 20 53  way around:.an S
ab50: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 74 68 61  QLITE_OMIT_* tha
ab60: 74 20 69 73 20 61 20 6e 6f 2d 6f 70 20 69 6e 20  t is a no-op in 
ab70: 74 68 65 20 63 75 72 72 65 6e 74 20 72 65 6c 65  the current rele
ab80: 61 73 65 20 6d 69 67 68 74 20 63 61 75 73 65 20  ase might cause 
ab90: 63 6f 64 65 0a 74 6f 20 62 65 20 65 78 63 6c 75  code.to be exclu
aba0: 64 65 64 20 69 6e 20 74 68 65 20 6e 65 78 74 20  ded in the next 
abb0: 72 65 6c 65 61 73 65 2e 20 20 41 6c 73 6f 2c 20  release.  Also, 
abc0: 6e 6f 74 20 61 6c 6c 20 53 51 4c 49 54 45 5f 4f  not all SQLITE_O
abd0: 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 0a 61 72  MIT_* options.ar
abe0: 65 20 74 65 73 74 65 64 2e 20 20 53 6f 6d 65 20  e tested.  Some 
abf0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70  SQLITE_OMIT_* op
ac00: 74 69 6f 6e 73 20 6d 69 67 68 74 20 63 61 75 73  tions might caus
ac10: 65 20 53 51 4c 69 74 65 20 74 6f 20 6d 61 6c 66  e SQLite to malf
ac20: 75 6e 63 74 69 6f 6e 0a 61 6e 64 2f 6f 72 20 70  unction.and/or p
ac30: 72 6f 76 69 64 65 20 69 6e 63 6f 72 72 65 63 74  rovide incorrect
ac40: 20 61 6e 73 77 65 72 73 2e 0a 0a 3c 62 6c 6f 63   answers...<bloc
ac50: 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62 3e 49 6d  kquote>.<i><b>Im
ac60: 70 6f 72 74 61 6e 74 20 4e 6f 74 65 3a 3c 2f 62  portant Note:</b
ac70: 3e 0a 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49  >.The SQLITE_OMI
ac80: 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  T_* compile-time
ac90: 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 75 6e 73   options are uns
aca0: 75 70 70 6f 72 74 65 64 2e 0a 3c 2f 69 3e 3c 2f  upported..</i></
acb0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 74 63  blockquote>..<tc
acc0: 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  l>.COMPILE_OPTIO
acd0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  N {SQLITE_OMIT_A
ace0: 4c 54 45 52 54 41 42 4c 45 7d 20 7b 0a 20 20 57  LTERTABLE} {.  W
acf0: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
ad00: 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20  is defined, the 
ad10: 0a 20 20 5b 41 4c 54 45 52 20 54 41 42 4c 45 5d  .  [ALTER TABLE]
ad20: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20   command is not 
ad30: 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20  included in the 
ad40: 0a 20 20 6c 69 62 72 61 72 79 2e 20 45 78 65 63  .  library. Exec
ad50: 75 74 69 6e 67 20 61 6e 20 5b 41 4c 54 45 52 20  uting an [ALTER 
ad60: 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74  TABLE] statement
ad70: 20 63 61 75 73 65 73 20 61 20 70 61 72 73 65 20   causes a parse 
ad80: 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  error..}..COMPIL
ad90: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
ada0: 5f 4f 4d 49 54 5f 41 4e 41 4c 59 5a 45 7d 20 7b  _OMIT_ANALYZE} {
adb0: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
adc0: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
add0: 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f  the [ANALYZE] co
ade0: 6d 6d 61 6e 64 20 69 73 20 6f 6d 69 74 74 65 64  mmand is omitted
adf0: 20 66 72 6f 6d 0a 20 20 74 68 65 20 62 75 69 6c   from.  the buil
ae00: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
ae10: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
ae20: 54 5f 41 54 54 41 43 48 7d 20 7b 0a 20 20 57 68  T_ATTACH} {.  Wh
ae30: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
ae40: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b  s defined, the [
ae50: 41 54 54 41 43 48 5d 20 61 6e 64 20 5b 44 45 54  ATTACH] and [DET
ae60: 41 43 48 5d 20 63 6f 6d 6d 61 6e 64 73 20 61 72  ACH] commands ar
ae70: 65 0a 20 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d  e.  omitted from
ae80: 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43   the build..}..C
ae90: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
aea0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 48 4f  QLITE_OMIT_AUTHO
aeb0: 52 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 44 65  RIZATION} {.  De
aec0: 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69  fining this opti
aed0: 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 61 75 74  on omits the aut
aee0: 68 6f 72 69 7a 61 74 69 6f 6e 20 63 61 6c 6c 62  horization callb
aef0: 61 63 6b 20 66 65 61 74 75 72 65 20 66 72 6f 6d  ack feature from
af00: 20 74 68 65 0a 20 20 6c 69 62 72 61 72 79 2e 20   the.  library. 
af10: 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 65 74  The [sqlite3_set
af20: 5f 61 75 74 68 6f 72 69 7a 65 72 28 29 5d 20 41  _authorizer()] A
af30: 50 49 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e  PI function is n
af40: 6f 74 20 70 72 65 73 65 6e 74 0a 20 20 69 6e 20  ot present.  in 
af50: 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a  the library..}..
af60: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
af70: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
af80: 49 4e 43 52 45 4d 45 4e 54 7d 20 7b 0a 20 20 54  INCREMENT} {.  T
af90: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
afa0: 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 0a  ed to omit the .
afb0: 20 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54    [AUTOINCREMENT
afc0: 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e  ] functionality.
afd0: 20 57 68 65 6e 20 74 68 69 73 20 0a 20 20 69 73   When this .  is
afe0: 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65   macro is define
aff0: 64 2c 20 63 6f 6c 75 6d 6e 73 20 64 65 63 6c 61  d, columns decla
b000: 72 65 64 20 61 73 20 0a 20 20 22 5b 49 4e 54 45  red as .  "[INTE
b010: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 5d  GER PRIMARY KEY]
b020: 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 22 0a   AUTOINCREMENT".
b030: 20 20 62 65 68 61 76 65 20 69 6e 20 74 68 65 20    behave in the 
b040: 73 61 6d 65 20 77 61 79 20 61 73 20 63 6f 6c 75  same way as colu
b050: 6d 6e 73 20 64 65 63 6c 61 72 65 64 20 61 73 20  mns declared as 
b060: 22 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  "[INTEGER PRIMAR
b070: 59 20 4b 45 59 5d 22 20 77 68 65 6e 20 61 20 0a  Y KEY]" when a .
b080: 20 20 4e 55 4c 4c 20 69 73 20 69 6e 73 65 72 74    NULL is insert
b090: 65 64 2e 20 54 68 65 20 73 71 6c 69 74 65 5f 73  ed. The sqlite_s
b0a0: 65 71 75 65 6e 63 65 20 73 79 73 74 65 6d 20 74  equence system t
b0b0: 61 62 6c 65 20 69 73 20 6e 65 69 74 68 65 72 20  able is neither 
b0c0: 63 72 65 61 74 65 64 2c 20 6e 6f 72 0a 20 20 72  created, nor.  r
b0d0: 65 73 70 65 63 74 65 64 20 69 66 20 69 74 20 61  espected if it a
b0e0: 6c 72 65 61 64 79 20 65 78 69 73 74 73 2e 0a 7d  lready exists..}
b0f0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
b100: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55   {SQLITE_OMIT_AU
b110: 54 4f 49 4e 49 54 7d 20 7b 0a 20 20 46 6f 72 20  TOINIT} {.  For 
b120: 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74  backwards compat
b130: 69 62 69 6c 69 74 79 20 77 69 74 68 20 6f 6c 64  ibility with old
b140: 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  er versions of S
b150: 51 4c 69 74 65 20 74 68 61 74 20 6c 61 63 6b 0a  QLite that lack.
b160: 20 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69    the [sqlite3_i
b170: 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 69 6e 74  nitialize()] int
b180: 65 72 66 61 63 65 2c 20 74 68 65 20 5b 73 71 6c  erface, the [sql
b190: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
b1a0: 29 5d 20 69 6e 74 65 72 66 61 63 65 0a 20 20 69  )] interface.  i
b1b0: 73 20 63 61 6c 6c 65 64 20 61 75 74 6f 6d 61 74  s called automat
b1c0: 69 63 61 6c 6c 79 20 75 70 6f 6e 20 65 6e 74 72  ically upon entr
b1d0: 79 20 74 6f 20 63 65 72 74 61 69 6e 20 6b 65 79  y to certain key
b1e0: 20 69 6e 74 65 72 66 61 63 65 73 20 73 75 63 68   interfaces such
b1f0: 20 61 73 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f   as.  [sqlite3_o
b200: 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  pen()], [sqlite3
b210: 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28 29 5d  _vfs_register()]
b220: 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 6d  , and [sqlite3_m
b230: 70 72 69 6e 74 66 28 29 5d 2e 0a 20 20 54 68 65  printf()]..  The
b240: 20 6f 76 65 72 68 65 61 64 20 6f 66 20 69 6e 76   overhead of inv
b250: 6f 6b 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 69  oking [sqlite3_i
b260: 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 61 75 74  nitialize()] aut
b270: 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 20 74 68  omatically in th
b280: 69 73 0a 20 20 77 61 79 20 6d 61 79 20 62 65 20  is.  way may be 
b290: 6f 6d 69 74 74 65 64 20 62 79 20 62 75 69 6c 64  omitted by build
b2a0: 69 6e 67 20 53 51 4c 69 74 65 20 77 69 74 68 20  ing SQLite with 
b2b0: 74 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  the SQLITE_OMIT_
b2c0: 41 55 54 4f 49 4e 49 54 0a 20 20 43 2d 70 72 65  AUTOINIT.  C-pre
b2d0: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 2e  processor macro.
b2e0: 20 20 57 68 65 6e 20 62 75 69 6c 74 20 75 73 69    When built usi
b2f0: 6e 67 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  ng SQLITE_OMIT_A
b300: 55 54 4f 49 4e 49 54 2c 20 53 51 4c 69 74 65 0a  UTOINIT, SQLite.
b310: 20 20 77 69 6c 6c 20 6e 6f 74 20 61 75 74 6f 6d    will not autom
b320: 61 74 69 63 61 6c 6c 79 20 69 6e 69 74 69 61 6c  atically initial
b330: 69 7a 65 20 69 74 73 65 6c 66 20 61 6e 64 20 74  ize itself and t
b340: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69  he application i
b350: 73 20 72 65 71 75 69 72 65 64 0a 20 20 74 6f 20  s required.  to 
b360: 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f  invoke [sqlite3_
b370: 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 64 69  initialize()] di
b380: 72 65 63 74 6c 79 20 70 72 69 6f 72 20 74 6f 20  rectly prior to 
b390: 62 65 67 69 6e 6e 69 6e 67 20 75 73 65 20 6f 66  beginning use of
b3a0: 20 74 68 65 0a 20 20 53 51 4c 69 74 65 20 6c 69   the.  SQLite li
b3b0: 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  brary..}..COMPIL
b3c0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
b3d0: 5f 4f 4d 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f  _OMIT_AUTOMATIC_
b3e0: 49 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69 73 20  INDEX} {.  This 
b3f0: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
b400: 6f 20 6f 6d 69 74 20 74 68 65 20 0a 20 20 5b 61  o omit the .  [a
b410: 75 74 6f 6d 61 74 69 63 20 69 6e 64 65 78 69 6e  utomatic indexin
b420: 67 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  g] functionality
b430: 2e 0a 20 20 53 65 65 20 61 6c 73 6f 3a 20 5b 53  ..  See also: [S
b440: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 41 55  QLITE_DEFAULT_AU
b450: 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58 5d 2e 0a  TOMATIC_INDEX]..
b460: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b470: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  N {SQLITE_OMIT_A
b480: 55 54 4f 52 45 53 45 54 7d 20 7b 0a 20 20 42 79  UTORESET} {.  By
b490: 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20 5b 73   default, the [s
b4a0: 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 69  qlite3_step()] i
b4b0: 6e 74 65 72 66 61 63 65 20 77 69 6c 6c 20 61 75  nterface will au
b4c0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 76 6f  tomatically invo
b4d0: 6b 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72 65  ke.  [sqlite3_re
b4e0: 73 65 74 28 29 5d 20 74 6f 20 72 65 73 65 74 20  set()] to reset 
b4f0: 74 68 65 20 5b 70 72 65 70 61 72 65 64 20 73 74  the [prepared st
b500: 61 74 65 6d 65 6e 74 5d 20 69 66 20 6e 65 63 65  atement] if nece
b510: 73 73 61 72 79 2e 20 20 54 68 69 73 0a 20 20 63  ssary.  This.  c
b520: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
b530: 6f 6e 20 63 68 61 6e 67 65 73 20 74 68 61 74 20  on changes that 
b540: 62 65 68 61 76 69 6f 72 20 73 6f 20 74 68 61 74  behavior so that
b550: 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
b560: 5d 20 77 69 6c 6c 0a 20 20 72 65 74 75 72 6e 20  ] will.  return 
b570: 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20  [SQLITE_MISUSE] 
b580: 69 66 20 69 74 20 63 61 6c 6c 65 64 20 61 67 61  if it called aga
b590: 69 6e 20 61 66 74 65 72 20 72 65 74 75 72 6e 69  in after returni
b5a0: 6e 67 20 61 6e 79 74 68 69 6e 67 20 6f 74 68 65  ng anything othe
b5b0: 72 0a 20 20 74 68 61 6e 20 5b 53 51 4c 49 54 45  r.  than [SQLITE
b5c0: 5f 52 4f 57 5d 2c 20 5b 53 51 4c 49 54 45 5f 42  _ROW], [SQLITE_B
b5d0: 55 53 59 5d 2c 20 6f 72 20 5b 53 51 4c 49 54 45  USY], or [SQLITE
b5e0: 5f 4c 4f 43 4b 45 44 5d 20 75 6e 6c 65 73 73 20  _LOCKED] unless 
b5f0: 74 68 65 72 65 20 77 61 73 20 61 6e 0a 20 20 69  there was an.  i
b600: 6e 74 65 72 76 65 6e 69 6e 67 20 63 61 6c 6c 20  ntervening call 
b610: 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65  to [sqlite3_rese
b620: 74 28 29 5d 2e 0a 0a 20 20 49 6e 20 53 51 4c 69  t()]...  In SQLi
b630: 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 36 2e 32  te version 3.6.2
b640: 33 2e 31 20 61 6e 64 20 65 61 72 6c 69 65 72 2c  3.1 and earlier,
b650: 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
b660: 5d 20 75 73 65 64 20 74 6f 20 61 6c 77 61 79 73  ] used to always
b670: 0a 20 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54  .  return [SQLIT
b680: 45 5f 4d 49 53 55 53 45 5d 20 69 66 20 69 74 20  E_MISUSE] if it 
b690: 77 61 73 20 69 6e 76 6f 6b 65 64 20 61 67 61 69  was invoked agai
b6a0: 6e 20 61 66 74 65 72 20 72 65 74 75 72 6e 69 6e  n after returnin
b6b0: 67 20 61 6e 79 74 68 69 6e 67 0a 20 20 6f 74 68  g anything.  oth
b6c0: 65 72 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f  er than [SQLITE_
b6d0: 52 4f 57 5d 20 77 69 74 68 6f 75 74 20 61 6e 20  ROW] without an 
b6e0: 69 6e 74 65 72 76 65 6e 69 6e 67 20 63 61 6c 6c  intervening call
b6f0: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65 73   to [sqlite3_res
b700: 65 74 28 29 5d 2e 0a 20 20 54 68 69 73 20 63 61  et()]..  This ca
b710: 75 73 65 64 20 70 72 6f 62 6c 65 6d 73 20 6f 6e  used problems on
b720: 20 73 6f 6d 65 20 70 6f 6f 72 6c 79 20 77 72 69   some poorly wri
b730: 74 74 65 6e 20 73 6d 61 72 74 70 68 6f 6e 65 20  tten smartphone 
b740: 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 77 68 69  applications whi
b750: 63 68 0a 20 20 64 69 64 20 6e 6f 74 20 63 6f 72  ch.  did not cor
b760: 72 65 63 74 6c 79 20 68 61 6e 64 6c 65 20 74 68  rectly handle th
b770: 65 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44  e [SQLITE_LOCKED
b780: 5d 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f 42 55  ] and [SQLITE_BU
b790: 53 59 5d 20 65 72 72 6f 72 20 0a 20 20 72 65 74  SY] error .  ret
b7a0: 75 72 6e 73 2e 20 20 52 61 74 68 65 72 20 74 68  urns.  Rather th
b7b0: 61 6e 20 66 69 78 20 74 68 65 20 6d 61 6e 79 20  an fix the many 
b7c0: 64 65 66 65 63 74 69 76 65 20 73 6d 61 72 74 70  defective smartp
b7d0: 68 6f 6e 65 20 61 70 70 6c 69 63 61 74 69 6f 6e  hone application
b7e0: 73 2c 20 0a 20 20 74 68 65 20 62 65 68 61 76 69  s, .  the behavi
b7f0: 6f 72 20 6f 66 20 53 51 4c 69 74 65 20 77 61 73  or of SQLite was
b800: 20 63 68 61 6e 67 65 64 20 69 6e 20 33 2e 36 2e   changed in 3.6.
b810: 32 33 2e 32 20 74 6f 20 61 75 74 6f 6d 61 74 69  23.2 to automati
b820: 63 61 6c 6c 79 20 72 65 73 65 74 0a 20 20 74 68  cally reset.  th
b830: 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  e prepared state
b840: 6d 65 6e 74 2e 20 20 42 75 74 20 74 68 61 74 20  ment.  But that 
b850: 63 68 61 6e 67 65 64 20 63 61 75 73 65 64 20 69  changed caused i
b860: 73 73 75 65 73 20 69 6e 20 6f 74 68 65 72 20 0a  ssues in other .
b870: 20 20 69 6d 70 72 6f 70 65 72 6c 79 20 69 6d 70    improperly imp
b880: 6c 65 6d 65 6e 74 65 64 20 61 70 70 6c 69 63 61  lemented applica
b890: 74 69 6f 6e 73 20 74 68 61 74 20 77 65 72 65 20  tions that were 
b8a0: 61 63 74 75 61 6c 6c 79 20 6c 6f 6f 6b 69 6e 67  actually looking
b8b0: 0a 20 20 66 6f 72 20 61 6e 20 5b 53 51 4c 49 54  .  for an [SQLIT
b8c0: 45 5f 4d 49 53 55 53 45 5d 20 72 65 74 75 72 6e  E_MISUSE] return
b8d0: 20 74 6f 20 74 65 72 6d 69 6e 61 74 65 20 74 68   to terminate th
b8e0: 65 69 72 20 71 75 65 72 79 20 6c 6f 6f 70 73 2e  eir query loops.
b8f0: 20 20 28 41 6e 79 74 69 6d 65 0a 20 20 61 6e 20    (Anytime.  an 
b900: 61 70 70 6c 69 63 61 74 69 6f 6e 20 67 65 74 73  application gets
b910: 20 61 6e 20 53 51 4c 49 54 45 5f 4d 49 53 55 53   an SQLITE_MISUS
b920: 45 20 65 72 72 6f 72 20 63 6f 64 65 20 66 72 6f  E error code fro
b930: 6d 20 53 51 4c 69 74 65 2c 20 74 68 61 74 20 6d  m SQLite, that m
b940: 65 61 6e 73 20 74 68 65 0a 20 20 61 70 70 6c 69  eans the.  appli
b950: 63 61 74 69 6f 6e 20 69 73 20 6d 69 73 75 73 69  cation is misusi
b960: 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20 69 6e  ng the SQLite in
b970: 74 65 72 66 61 63 65 20 61 6e 64 20 69 73 20 74  terface and is t
b980: 68 75 73 20 69 6e 63 6f 72 72 65 63 74 6c 79 0a  hus incorrectly.
b990: 20 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2e 29 20    implemented.) 
b9a0: 20 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54   The SQLITE_OMIT
b9b0: 5f 41 55 54 4f 52 45 53 45 54 20 69 6e 74 65 72  _AUTORESET inter
b9c0: 66 61 63 65 20 77 61 73 20 61 64 64 65 64 20 74  face was added t
b9d0: 6f 20 53 51 4c 69 74 65 0a 20 20 76 65 72 73 69  o SQLite.  versi
b9e0: 6f 6e 20 33 2e 37 2e 35 20 69 6e 20 61 6e 20 65  on 3.7.5 in an e
b9f0: 66 66 6f 72 74 20 74 6f 20 67 65 74 20 61 6c 6c  ffort to get all
ba00: 20 6f 66 20 74 68 65 20 28 62 72 6f 6b 65 6e 29   of the (broken)
ba10: 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20  .  applications 
ba20: 74 6f 20 77 6f 72 6b 20 61 67 61 69 6e 20 77 69  to work again wi
ba30: 74 68 6f 75 74 20 68 61 76 69 6e 67 20 74 6f 20  thout having to 
ba40: 61 63 74 75 61 6c 6c 79 20 66 69 78 20 74 68 65  actually fix the
ba50: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d   applications..}
ba60: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
ba70: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55   {SQLITE_OMIT_AU
ba80: 54 4f 56 41 43 55 55 4d 7d 20 7b 0a 20 20 49 66  TOVACUUM} {.  If
ba90: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
baa0: 64 65 66 69 6e 65 64 2c 20 74 68 65 20 6c 69 62  defined, the lib
bab0: 72 61 72 79 20 63 61 6e 6e 6f 74 20 63 72 65 61  rary cannot crea
bac0: 74 65 20 6f 72 20 77 72 69 74 65 20 74 6f 20 0a  te or write to .
bad0: 20 20 64 61 74 61 62 61 73 65 73 20 74 68 61 74    databases that
bae0: 20 73 75 70 70 6f 72 74 20 5b 61 75 74 6f 5f 76   support [auto_v
baf0: 61 63 75 75 6d 5d 2e 0a 20 20 45 78 65 63 75 74  acuum]..  Execut
bb00: 69 6e 67 20 61 20 5b 50 52 41 47 4d 41 20 61 75  ing a [PRAGMA au
bb10: 74 6f 5f 76 61 63 75 75 6d 5d 20 73 74 61 74 65  to_vacuum] state
bb20: 6d 65 6e 74 20 69 73 20 6e 6f 74 20 61 6e 20 65  ment is not an e
bb30: 72 72 6f 72 0a 20 20 28 73 69 6e 63 65 20 75 6e  rror.  (since un
bb40: 6b 6e 6f 77 6e 20 50 52 41 47 4d 41 73 20 61 72  known PRAGMAs ar
bb50: 65 20 73 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72  e silently ignor
bb60: 65 64 29 2c 20 62 75 74 20 64 6f 65 73 20 6e 6f  ed), but does no
bb70: 74 20 72 65 74 75 72 6e 20 61 20 76 61 6c 75 65  t return a value
bb80: 0a 20 20 6f 72 20 6d 6f 64 69 66 79 20 74 68 65  .  or modify the
bb90: 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 66 6c 61   auto-vacuum fla
bba0: 67 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73  g in the databas
bbb0: 65 20 66 69 6c 65 2e 20 49 66 20 61 20 64 61 74  e file. If a dat
bbc0: 61 62 61 73 65 20 74 68 61 74 0a 20 20 73 75 70  abase that.  sup
bbd0: 70 6f 72 74 73 20 61 75 74 6f 2d 76 61 63 75 75  ports auto-vacuu
bbe0: 6d 20 69 73 20 6f 70 65 6e 65 64 20 62 79 20 61  m is opened by a
bbf0: 20 6c 69 62 72 61 72 79 20 63 6f 6d 70 69 6c 65   library compile
bc00: 64 20 77 69 74 68 20 74 68 69 73 20 6f 70 74 69  d with this opti
bc10: 6f 6e 2c 20 69 74 0a 20 20 69 73 20 61 75 74 6f  on, it.  is auto
bc20: 6d 61 74 69 63 61 6c 6c 79 20 6f 70 65 6e 65 64  matically opened
bc30: 20 69 6e 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f   in read-only mo
bc40: 64 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  de..}..COMPILE_O
bc50: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
bc60: 49 54 5f 42 45 54 57 45 45 4e 5f 4f 50 54 49 4d  IT_BETWEEN_OPTIM
bc70: 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69  IZATION} {.  Thi
bc80: 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65  s option disable
bc90: 73 20 74 68 65 20 75 73 65 20 6f 66 20 69 6e 64  s the use of ind
bca0: 69 63 65 73 20 77 69 74 68 20 57 48 45 52 45 20  ices with WHERE 
bcb0: 63 6c 61 75 73 65 20 74 65 72 6d 73 0a 20 20 74  clause terms.  t
bcc0: 68 61 74 20 65 6d 70 6c 6f 79 20 74 68 65 20 42  hat employ the B
bcd0: 45 54 57 45 45 4e 20 6f 70 65 72 61 74 6f 72 2e  ETWEEN operator.
bce0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
bcf0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
bd00: 42 4c 4f 42 5f 4c 49 54 45 52 41 4c 7d 20 7b 0a  BLOB_LITERAL} {.
bd10: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
bd20: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 69  on is defined, i
bd30: 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c  t is not possibl
bd40: 65 20 74 6f 20 73 70 65 63 69 66 79 20 61 20 62  e to specify a b
bd50: 6c 6f 62 20 69 6e 0a 20 20 61 6e 20 53 51 4c 20  lob in.  an SQL 
bd60: 73 74 61 74 65 6d 65 6e 74 20 75 73 69 6e 67 20  statement using 
bd70: 74 68 65 20 58 27 41 42 43 44 27 20 73 79 6e 74  the X'ABCD' synt
bd80: 61 78 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ax..}..COMPILE_O
bd90: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
bda0: 49 54 5f 42 54 52 45 45 43 4f 55 4e 54 7d 20 7b  IT_BTREECOUNT} {
bdb0: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
bdc0: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
bdd0: 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20  an optimization 
bde0: 74 68 61 74 20 61 63 63 65 6c 65 72 61 74 65 73  that accelerates
bdf0: 20 63 6f 75 6e 74 69 6e 67 0a 20 20 61 6c 6c 20   counting.  all 
be00: 65 6e 74 72 69 65 73 20 69 6e 20 61 20 74 61 62  entries in a tab
be10: 6c 65 20 28 69 6e 20 6f 74 68 65 72 20 77 6f 72  le (in other wor
be20: 64 73 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74  ds, an optimizat
be30: 69 6f 6e 20 74 68 61 74 20 68 65 6c 70 73 0a 20  ion that helps. 
be40: 20 22 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a   "SELECT count(*
be50: 29 20 46 52 4f 4d 20 74 61 62 6c 65 22 20 72 75  ) FROM table" ru
be60: 6e 20 66 61 73 74 65 72 29 20 69 73 20 6f 6d 69  n faster) is omi
be70: 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tted..}..COMPILE
be80: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
be90: 4f 4d 49 54 5f 42 55 49 4c 54 49 4e 5f 54 45 53  OMIT_BUILTIN_TES
bea0: 54 7d 20 7b 0a 20 20 41 20 73 74 61 6e 64 61 72  T} {.  A standar
beb0: 64 20 53 51 4c 69 74 65 20 62 75 69 6c 64 20 69  d SQLite build i
bec0: 6e 63 6c 75 64 65 73 20 61 20 73 6d 61 6c 6c 20  ncludes a small 
bed0: 61 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20  amount of logic 
bee0: 63 6f 6e 74 72 6f 6c 6c 65 64 0a 20 20 62 79 20  controlled.  by 
bef0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 65 73  the [sqlite3_tes
bf00: 74 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 69 6e 74  t_control()] int
bf10: 65 72 66 61 63 65 20 74 68 61 74 20 69 73 20 75  erface that is u
bf20: 73 65 64 20 74 6f 20 65 78 65 72 63 69 73 65 0a  sed to exercise.
bf30: 20 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 53    parts of the S
bf40: 51 4c 69 74 65 20 63 6f 72 65 20 74 68 61 74 20  QLite core that 
bf50: 61 72 65 20 64 69 66 66 69 63 75 6c 74 20 74 6f  are difficult to
bf60: 20 63 6f 6e 74 72 6f 6c 20 61 6e 64 20 6d 65 61   control and mea
bf70: 73 75 72 65 20 75 73 69 6e 67 0a 20 20 74 68 65  sure using.  the
bf80: 20 73 74 61 6e 64 61 72 64 20 41 50 49 2e 20 20   standard API.  
bf90: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
bfa0: 73 20 74 68 61 74 20 62 75 69 6c 74 2d 69 6e 20  s that built-in 
bfb0: 74 65 73 74 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43  test logic..}..C
bfc0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
bfd0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 41 53 54 7d  QLITE_OMIT_CAST}
bfe0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
bff0: 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
c000: 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66  o omit support f
c010: 6f 72 20 74 68 65 20 43 41 53 54 20 6f 70 65 72  or the CAST oper
c020: 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ator..}..COMPILE
c030: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
c040: 4f 4d 49 54 5f 43 48 45 43 4b 7d 20 7b 0a 20 20  OMIT_CHECK} {.  
c050: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
c060: 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69  es SQLite to omi
c070: 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 43 48  t support for CH
c080: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e  ECK constraints.
c090: 0a 20 20 54 68 65 20 70 61 72 73 65 72 20 77 69  .  The parser wi
c0a0: 6c 6c 20 73 74 69 6c 6c 20 61 63 63 65 70 74 20  ll still accept 
c0b0: 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74  CHECK constraint
c0c0: 73 20 69 6e 20 53 51 4c 20 73 74 61 74 65 6d 65  s in SQL stateme
c0d0: 6e 74 73 2c 0a 20 20 74 68 65 79 20 77 69 6c 6c  nts,.  they will
c0e0: 20 6a 75 73 74 20 6e 6f 74 20 62 65 20 65 6e 66   just not be enf
c0f0: 6f 72 63 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  orced..}..COMPIL
c100: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
c110: 5f 4f 4d 49 54 5f 43 4f 4d 50 49 4c 45 4f 50 54  _OMIT_COMPILEOPT
c120: 49 4f 4e 5f 44 49 41 47 53 7d 20 7b 0a 20 20 54  ION_DIAGS} {.  T
c130: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
c140: 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63  ed to omit the c
c150: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
c160: 6f 6e 20 64 69 61 67 6e 6f 73 74 69 63 73 20 61  on diagnostics a
c170: 76 61 69 6c 61 62 6c 65 0a 20 20 69 6e 20 53 51  vailable.  in SQ
c180: 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20  Lite, including 
c190: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d  the [sqlite3_com
c1a0: 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28  pileoption_used(
c1b0: 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65  )] and.  [sqlite
c1c0: 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  3_compileoption_
c1d0: 67 65 74 28 29 5d 20 43 2f 43 2b 2b 20 66 75 6e  get()] C/C++ fun
c1e0: 63 74 69 6f 6e 73 2c 20 74 68 65 0a 20 20 5b 73  ctions, the.  [s
c1f0: 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74  qlite_compileopt
c200: 69 6f 6e 5f 75 73 65 64 28 29 5d 20 61 6e 64 20  ion_used()] and 
c210: 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f  [sqlite_compileo
c220: 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20 53 51 4c  ption_get()] SQL
c230: 20 66 75 6e 63 74 69 6f 6e 73 2c 0a 20 20 61 6e   functions,.  an
c240: 64 20 74 68 65 20 5b 63 6f 6d 70 69 6c 65 5f 6f  d the [compile_o
c250: 70 74 69 6f 6e 73 20 70 72 61 67 6d 61 5d 2e 0a  ptions pragma]..
c260: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
c270: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43  N {SQLITE_OMIT_C
c280: 4f 4d 50 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69  OMPLETE} {.  Thi
c290: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
c2a0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d  the [sqlite3_com
c2b0: 70 6c 65 74 65 28 29 5d 20 61 6e 64 20 5b 73 71  plete()] and [sq
c2c0: 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36  lite3_complete16
c2d0: 28 29 5d 0a 20 20 69 6e 74 65 72 66 61 63 65 73  ()].  interfaces
c2e0: 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a   to be omitted..
c2f0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
c300: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43  N {SQLITE_OMIT_C
c310: 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 7d 20  OMPOUND_SELECT} 
c320: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
c330: 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20  is used to omit 
c340: 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20 5b 53 45  the compound [SE
c350: 4c 45 43 54 5d 20 66 75 6e 63 74 69 6f 6e 61 6c  LECT] functional
c360: 69 74 79 2e 20 0a 20 20 5b 53 45 4c 45 43 54 5d  ity. .  [SELECT]
c370: 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74   statements that
c380: 20 75 73 65 20 74 68 65 20 0a 20 20 55 4e 49 4f   use the .  UNIO
c390: 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e  N, UNION ALL, IN
c3a0: 54 45 52 53 45 43 54 20 6f 72 20 45 58 43 45 50  TERSECT or EXCEP
c3b0: 54 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43  T compound SELEC
c3c0: 54 20 6f 70 65 72 61 74 6f 72 73 20 77 69 6c 6c  T operators will
c3d0: 20 0a 20 20 63 61 75 73 65 20 61 20 70 61 72 73   .  cause a pars
c3e0: 65 20 65 72 72 6f 72 2e 0a 0a 20 20 41 6e 20 5b  e error...  An [
c3f0: 49 4e 53 45 52 54 5d 20 73 74 61 74 65 6d 65 6e  INSERT] statemen
c400: 74 20 77 69 74 68 20 6d 75 6c 74 69 70 6c 65 20  t with multiple 
c410: 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 56 41  values in the VA
c420: 4c 55 45 53 20 63 6c 61 75 73 65 20 69 73 0a 20  LUES clause is. 
c430: 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 74   implemented int
c440: 65 72 6e 61 6c 6c 79 20 61 73 20 61 20 63 6f 6d  ernally as a com
c450: 70 6f 75 6e 64 20 53 45 4c 45 43 54 2e 20 20 48  pound SELECT.  H
c460: 65 6e 63 65 2c 20 74 68 69 73 20 6f 70 74 69 6f  ence, this optio
c470: 6e 20 61 6c 73 6f 0a 20 20 64 69 73 61 62 6c 65  n also.  disable
c480: 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f  s the ability to
c490: 20 69 6e 73 65 72 74 20 6d 6f 72 65 20 74 68 61   insert more tha
c4a0: 6e 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 75  n a single row u
c4b0: 73 69 6e 67 20 61 6e 0a 20 20 49 4e 53 45 52 54  sing an.  INSERT
c4c0: 20 49 4e 54 4f 20 2e 2e 2e 20 56 41 4c 55 45 53   INTO ... VALUES
c4d0: 20 2e 2e 2e 20 73 74 61 74 65 6d 65 6e 74 2e 0a   ... statement..
c4e0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
c4f0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43  N {SQLITE_OMIT_C
c500: 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  TE} {.  This opt
c510: 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70 6f  ion causes suppo
c520: 72 74 20 66 6f 72 20 5b 63 6f 6d 6d 6f 6e 20 74  rt for [common t
c530: 61 62 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 73  able expressions
c540: 5d 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e  ] to be omitted.
c550: 0a 7d 0a 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  .}....COMPILE_OP
c560: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
c570: 54 5f 44 41 54 45 54 49 4d 45 5f 46 55 4e 43 53  T_DATETIME_FUNCS
c580: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70  } {.  If this op
c590: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
c5a0: 20 53 51 4c 69 74 65 27 73 20 62 75 69 6c 74 2d   SQLite's built-
c5b0: 69 6e 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  in date and time
c5c0: 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 0a 20 20   manipulation.  
c5d0: 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d  functions are om
c5e0: 69 74 74 65 64 2e 20 53 70 65 63 69 66 69 63 61  itted. Specifica
c5f0: 6c 6c 79 2c 20 74 68 65 20 53 51 4c 20 66 75 6e  lly, the SQL fun
c600: 63 74 69 6f 6e 73 20 6a 75 6c 69 61 6e 64 61 79  ctions julianday
c610: 28 29 2c 20 64 61 74 65 28 29 2c 0a 20 20 74 69  (), date(),.  ti
c620: 6d 65 28 29 2c 20 64 61 74 65 74 69 6d 65 28 29  me(), datetime()
c630: 20 61 6e 64 20 73 74 72 66 74 69 6d 65 28 29 20   and strftime() 
c640: 61 72 65 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c  are not availabl
c650: 65 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 63  e. The default c
c660: 6f 6c 75 6d 6e 0a 20 20 76 61 6c 75 65 73 20 43  olumn.  values C
c670: 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52  URRENT_TIME, CUR
c680: 52 45 4e 54 5f 44 41 54 45 20 61 6e 64 20 43 55  RENT_DATE and CU
c690: 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20  RRENT_TIMESTAMP 
c6a0: 61 72 65 20 73 74 69 6c 6c 20 61 76 61 69 6c 61  are still availa
c6b0: 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ble..}..COMPILE_
c6c0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
c6d0: 4d 49 54 5f 44 45 43 4c 54 59 50 45 7d 20 7b 0a  MIT_DECLTYPE} {.
c6e0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
c6f0: 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f  uses SQLite to o
c700: 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  mit support for 
c710: 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  the.  [sqlite3_c
c720: 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 29  olumn_decltype()
c730: 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63  ] and [sqlite3_c
c740: 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36  olumn_decltype16
c750: 28 29 5d 0a 20 20 69 6e 74 65 72 66 61 63 65 73  ()].  interfaces
c760: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
c770: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
c780: 5f 44 45 50 52 45 43 41 54 45 44 7d 20 7b 0a 20  _DEPRECATED} {. 
c790: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
c7a0: 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d  ses SQLite to om
c7b0: 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 69  it support for i
c7c0: 6e 74 65 72 66 61 63 65 73 0a 20 20 6d 61 72 6b  nterfaces.  mark
c7d0: 65 64 20 61 73 20 64 65 70 72 65 63 61 74 65 64  ed as deprecated
c7e0: 2e 20 20 54 68 69 73 20 69 6e 63 6c 75 64 65 73  .  This includes
c7f0: 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 61 67 67   .  [sqlite3_agg
c800: 72 65 67 61 74 65 5f 63 6f 75 6e 74 28 29 5d 2c  regate_count()],
c810: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 65 78 70 69  .  [sqlite3_expi
c820: 72 65 64 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74  red()],.  [sqlit
c830: 65 33 5f 74 72 61 6e 73 66 65 72 5f 62 69 6e 64  e3_transfer_bind
c840: 69 6e 67 73 28 29 5d 2c 0a 20 20 5b 73 71 6c 69  ings()],.  [sqli
c850: 74 65 33 5f 67 6c 6f 62 61 6c 5f 72 65 63 6f 76  te3_global_recov
c860: 65 72 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65  er()],.  [sqlite
c870: 33 5f 74 68 72 65 61 64 5f 63 6c 65 61 6e 75 70  3_thread_cleanup
c880: 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
c890: 65 33 5f 6d 65 6d 6f 72 79 5f 61 6c 61 72 6d 28  e3_memory_alarm(
c8a0: 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d  )] interfaces..}
c8b0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
c8c0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 49   {SQLITE_OMIT_DI
c8d0: 53 4b 49 4f 7d 20 7b 0a 20 20 54 68 69 73 20 6f  SKIO} {.  This o
c8e0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6c 6c 20  ption omits all 
c8f0: 73 75 70 70 6f 72 74 20 66 6f 72 20 77 72 69 74  support for writ
c900: 69 6e 67 20 74 6f 20 74 68 65 20 64 69 73 6b 20  ing to the disk 
c910: 61 6e 64 20 66 6f 72 63 65 73 0a 20 20 64 61 74  and forces.  dat
c920: 61 62 61 73 65 73 20 74 6f 20 65 78 69 73 74 20  abases to exist 
c930: 69 6e 20 6d 65 6d 6f 72 79 20 6f 6e 6c 79 2e 20  in memory only. 
c940: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 68 61 73   This option has
c950: 20 6e 6f 74 20 62 65 65 6e 20 0a 20 20 6d 61 69   not been .  mai
c960: 6e 74 61 69 6e 65 64 20 61 6e 64 20 70 72 6f 62  ntained and prob
c970: 61 62 6c 79 20 64 6f 65 73 20 6e 6f 74 20 77 6f  ably does not wo
c980: 72 6b 20 77 69 74 68 20 6e 65 77 65 72 20 76 65  rk with newer ve
c990: 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65  rsions of SQLite
c9a0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
c9b0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
c9c0: 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a 20 20 44 65  _EXPLAIN} {.  De
c9d0: 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69  fining this opti
c9e0: 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b 45  on causes the [E
c9f0: 58 50 4c 41 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20  XPLAIN] command 
ca00: 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72  to be omitted fr
ca10: 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72 61 72 79  om the.  library
ca20: 2e 20 41 74 74 65 6d 70 74 69 6e 67 20 74 6f 20  . Attempting to 
ca30: 65 78 65 63 75 74 65 20 61 6e 20 5b 45 58 50 4c  execute an [EXPL
ca40: 41 49 4e 5d 20 73 74 61 74 65 6d 65 6e 74 20 77  AIN] statement w
ca50: 69 6c 6c 20 63 61 75 73 65 20 61 20 70 61 72 73  ill cause a pars
ca60: 65 0a 20 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f  e.  error..}..CO
ca70: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
ca80: 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50  LITE_OMIT_FLAG_P
ca90: 52 41 47 4d 41 53 7d 20 7b 0a 20 20 54 68 69 73  RAGMAS} {.  This
caa0: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
cab0: 70 70 6f 72 74 20 66 6f 72 20 61 20 73 75 62 73  pport for a subs
cac0: 65 74 20 6f 66 20 5b 50 52 41 47 4d 41 5d 20 63  et of [PRAGMA] c
cad0: 6f 6d 6d 61 6e 64 73 20 74 68 61 74 0a 20 20 71  ommands that.  q
cae0: 75 65 72 79 20 61 6e 64 20 73 65 74 20 62 6f 6f  uery and set boo
caf0: 6c 65 61 6e 20 70 72 6f 70 65 72 74 69 65 73 2e  lean properties.
cb00: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
cb10: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
cb20: 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e 54 7d 20  FLOATING_POINT} 
cb30: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
cb40: 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20  is used to omit 
cb50: 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 6e  floating-point n
cb60: 75 6d 62 65 72 20 73 75 70 70 6f 72 74 20 66 72  umber support fr
cb70: 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 0a 20 20  om the SQLite.  
cb80: 6c 69 62 72 61 72 79 2e 20 57 68 65 6e 20 73 70  library. When sp
cb90: 65 63 69 66 69 65 64 2c 20 73 70 65 63 69 66 79  ecified, specify
cba0: 69 6e 67 20 61 20 66 6c 6f 61 74 69 6e 67 20 70  ing a floating p
cbb0: 6f 69 6e 74 20 6e 75 6d 62 65 72 20 61 73 20 61  oint number as a
cbc0: 20 6c 69 74 65 72 61 6c 20 0a 20 20 28 69 2e 65   literal .  (i.e
cbd0: 2e 20 22 31 2e 30 31 22 29 20 72 65 73 75 6c 74  . "1.01") result
cbe0: 73 20 69 6e 20 61 20 70 61 72 73 65 20 65 72 72  s in a parse err
cbf0: 6f 72 2e 0a 0a 20 20 3c 70 3e 49 6e 20 74 68 65  or...  <p>In the
cc00: 20 66 75 74 75 72 65 2c 20 74 68 69 73 20 6f 70   future, this op
cc10: 74 69 6f 6e 20 6d 61 79 20 61 6c 73 6f 20 64 69  tion may also di
cc20: 73 61 62 6c 65 20 6f 74 68 65 72 20 66 6c 6f 61  sable other floa
cc30: 74 69 6e 67 20 70 6f 69 6e 74 20 0a 20 20 66 75  ting point .  fu
cc40: 6e 63 74 69 6f 6e 61 6c 69 74 79 2c 20 66 6f 72  nctionality, for
cc50: 20 65 78 61 6d 70 6c 65 20 74 68 65 20 5b 73 71   example the [sq
cc60: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
cc70: 62 6c 65 28 29 5d 2c 20 0a 20 20 5b 73 71 6c 69  ble()], .  [sqli
cc80: 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28  te3_bind_double(
cc90: 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c  )], [sqlite3_val
cca0: 75 65 5f 64 6f 75 62 6c 65 28 29 5d 20 61 6e 64  ue_double()] and
ccb0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  .  [sqlite3_colu
ccc0: 6d 6e 5f 64 6f 75 62 6c 65 28 29 5d 20 41 50 49  mn_double()] API
ccd0: 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 20 20 3c 2f   functions..  </
cce0: 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  p>.}..COMPILE_OP
ccf0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
cd00: 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 7d 20 7b  T_FOREIGN_KEY} {
cd10: 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f  .  If this optio
cd20: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  n is defined, th
cd30: 65 6e 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20  en [foreign key 
cd40: 63 6f 6e 73 74 72 61 69 6e 74 5d 20 73 79 6e 74  constraint] synt
cd50: 61 78 20 69 73 0a 20 20 6e 6f 74 20 72 65 63 6f  ax is.  not reco
cd60: 67 6e 69 7a 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  gnized..}..COMPI
cd70: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
cd80: 45 5f 4f 4d 49 54 5f 47 45 54 5f 54 41 42 4c 45  E_OMIT_GET_TABLE
cd90: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
cda0: 6e 20 63 61 75 73 65 73 20 73 75 70 70 6f 72 74  n causes support
cdb0: 20 66 6f 72 20 5b 73 71 6c 69 74 65 33 5f 67 65   for [sqlite3_ge
cdc0: 74 5f 74 61 62 6c 65 28 29 5d 20 61 6e 64 0a 20  t_table()] and. 
cdd0: 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74   [sqlite3_free_t
cde0: 61 62 6c 65 28 29 5d 20 74 6f 20 62 65 20 6f 6d  able()] to be om
cdf0: 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  itted..}..COMPIL
ce00: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
ce10: 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c 4f 42 7d 20  _OMIT_INCRBLOB} 
ce20: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
ce30: 63 61 75 73 65 73 20 73 75 70 70 6f 72 74 20 66  causes support f
ce40: 6f 72 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62  or [sqlite3_blob
ce50: 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42   | incremental B
ce60: 4c 4f 42 20 49 2f 4f 5d 0a 20 20 74 6f 20 62 65  LOB I/O].  to be
ce70: 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   omitted..}..COM
ce80: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
ce90: 49 54 45 5f 4f 4d 49 54 5f 49 4e 54 45 47 52 49  ITE_OMIT_INTEGRI
cea0: 54 59 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68  TY_CHECK} {.  Th
ceb0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
cec0: 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20  support for the 
ced0: 5b 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b  [integrity_check
cee0: 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d   pragma]..}..COM
cef0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
cf00: 49 54 45 5f 4f 4d 49 54 5f 4c 49 4b 45 5f 4f 50  ITE_OMIT_LIKE_OP
cf10: 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20  TIMIZATION} {.  
cf20: 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61  This option disa
cf30: 62 6c 65 73 20 74 68 65 20 61 62 69 6c 69 74 79  bles the ability
cf40: 20 6f 66 20 53 51 4c 69 74 65 20 74 6f 20 75 73   of SQLite to us
cf50: 65 20 69 6e 64 69 63 65 73 20 74 6f 20 68 65 6c  e indices to hel
cf60: 70 0a 20 20 72 65 73 6f 6c 76 65 20 5b 4c 49 4b  p.  resolve [LIK
cf70: 45 5d 20 61 6e 64 20 5b 47 4c 4f 42 5d 20 6f 70  E] and [GLOB] op
cf80: 65 72 61 74 6f 72 73 20 69 6e 20 61 20 57 48 45  erators in a WHE
cf90: 52 45 20 63 6c 61 75 73 65 2e 0a 7d 0a 0a 43 4f  RE clause..}..CO
cfa0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
cfb0: 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45  LITE_OMIT_LOAD_E
cfc0: 58 54 45 4e 53 49 4f 4e 7d 20 7b 0a 20 20 54 68  XTENSION} {.  Th
cfd0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
cfe0: 74 68 65 20 65 6e 74 69 72 65 20 65 78 74 65 6e  the entire exten
cff0: 73 69 6f 6e 20 6c 6f 61 64 69 6e 67 20 6d 65 63  sion loading mec
d000: 68 61 6e 69 73 6d 20 66 72 6f 6d 0a 20 20 53 51  hanism from.  SQ
d010: 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20  Lite, including 
d020: 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f  [sqlite3_enable_
d030: 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29  load_extension()
d040: 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33  ] and.  [sqlite3
d050: 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  _load_extension(
d060: 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d  )] interfaces..}
d070: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
d080: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f   {SQLITE_OMIT_LO
d090: 43 41 4c 54 49 4d 45 7d 20 7b 0a 20 20 54 68 69  CALTIME} {.  Thi
d0a0: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74  s option omits t
d0b0: 68 65 20 22 6c 6f 63 61 6c 74 69 6d 65 22 20 6d  he "localtime" m
d0c0: 6f 64 69 66 69 65 72 20 66 72 6f 6d 20 74 68 65  odifier from the
d0d0: 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 0a 20   date and time. 
d0e0: 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 69   functions.  Thi
d0f0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 73 6f 6d 65  s option is some
d100: 74 69 6d 65 73 20 75 73 65 66 75 6c 20 77 68 65  times useful whe
d110: 6e 20 74 72 79 69 6e 67 20 74 6f 20 63 6f 6d 70  n trying to comp
d120: 69 6c 65 0a 20 20 74 68 65 20 64 61 74 65 20 61  ile.  the date a
d130: 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e  nd time function
d140: 73 20 6f 6e 20 61 20 70 6c 61 74 66 6f 72 6d 20  s on a platform 
d150: 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75  that does not su
d160: 70 70 6f 72 74 20 74 68 65 0a 20 20 63 6f 6e 63  pport the.  conc
d170: 65 70 74 20 6f 66 20 6c 6f 63 61 6c 20 74 69 6d  ept of local tim
d180: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
d190: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
d1a0: 54 5f 4c 4f 4f 4b 41 53 49 44 45 7d 20 7b 0a 20  T_LOOKASIDE} {. 
d1b0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
d1c0: 74 73 20 74 68 65 20 5b 6c 6f 6f 6b 61 73 69 64  ts the [lookasid
d1d0: 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  e memory allocat
d1e0: 6f 72 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  or]..}..COMPILE_
d1f0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
d200: 4d 49 54 5f 4d 45 4d 4f 52 59 44 42 7d 20 7b 0a  MIT_MEMORYDB} {.
d210: 20 20 57 68 65 6e 20 74 68 69 73 20 69 73 20 64    When this is d
d220: 65 66 69 6e 65 64 2c 20 74 68 65 20 6c 69 62 72  efined, the libr
d230: 61 72 79 20 64 6f 65 73 20 6e 6f 74 20 72 65 73  ary does not res
d240: 70 65 63 74 20 74 68 65 20 73 70 65 63 69 61 6c  pect the special
d250: 20 64 61 74 61 62 61 73 65 0a 20 20 6e 61 6d 65   database.  name
d260: 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 28 6e 6f 72   ":memory:" (nor
d270: 6d 61 6c 6c 79 20 75 73 65 64 20 74 6f 20 63 72  mally used to cr
d280: 65 61 74 65 20 61 6e 20 5b 69 6e 2d 6d 65 6d 6f  eate an [in-memo
d290: 72 79 20 64 61 74 61 62 61 73 65 5d 29 2e 20 49  ry database]). I
d2a0: 66 20 0a 20 20 22 3a 6d 65 6d 6f 72 79 3a 22 20  f .  ":memory:" 
d2b0: 69 73 20 70 61 73 73 65 64 20 74 6f 20 5b 73 71  is passed to [sq
d2c0: 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b  lite3_open()], [
d2d0: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29  sqlite3_open16()
d2e0: 5d 2c 20 6f 72 0a 20 20 5b 73 71 6c 69 74 65 33  ], or.  [sqlite3
d2f0: 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61 20 66  _open_v2()], a f
d300: 69 6c 65 20 77 69 74 68 20 74 68 69 73 20 6e 61  ile with this na
d310: 6d 65 20 77 69 6c 6c 20 62 65 20 0a 20 20 6f 70  me will be .  op
d320: 65 6e 65 64 20 6f 72 20 63 72 65 61 74 65 64 2e  ened or created.
d330: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
d340: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
d350: 4f 52 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d  OR_OPTIMIZATION}
d360: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
d370: 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 61 62   disables the ab
d380: 69 6c 69 74 79 20 6f 66 20 53 51 4c 69 74 65 20  ility of SQLite 
d390: 74 6f 20 75 73 65 20 61 6e 20 69 6e 64 65 78 20  to use an index 
d3a0: 74 6f 67 65 74 68 65 72 0a 20 20 77 69 74 68 20  together.  with 
d3b0: 74 65 72 6d 73 20 6f 66 20 61 20 57 48 45 52 45  terms of a WHERE
d3c0: 20 63 6c 61 75 73 65 20 63 6f 6e 6e 65 63 74 65   clause connecte
d3d0: 64 20 62 79 20 74 68 65 20 4f 52 20 6f 70 65 72  d by the OR oper
d3e0: 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ator..}..COMPILE
d3f0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
d400: 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52 41 47 4d  OMIT_PAGER_PRAGM
d410: 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67  AS} {.  Defining
d420: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   this option omi
d430: 74 73 20 70 72 61 67 6d 61 73 20 72 65 6c 61 74  ts pragmas relat
d440: 65 64 20 74 6f 20 74 68 65 20 70 61 67 65 72 20  ed to the pager 
d450: 73 75 62 73 79 73 74 65 6d 20 66 72 6f 6d 20 0a  subsystem from .
d460: 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a    the build..}..
d470: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
d480: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 41 47  SQLITE_OMIT_PRAG
d490: 4d 41 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  MA} {.  This opt
d4a0: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f  ion is used to o
d4b0: 6d 69 74 20 74 68 65 20 5b 50 52 41 47 4d 41 5d  mit the [PRAGMA]
d4c0: 20 63 6f 6d 6d 61 6e 64 0a 20 20 66 72 6f 6d 20   command.  from 
d4d0: 74 68 65 20 6c 69 62 72 61 72 79 2e 20 4e 6f 74  the library. Not
d4e0: 65 20 74 68 61 74 20 69 74 20 69 73 20 75 73 65  e that it is use
d4f0: 66 75 6c 20 74 6f 20 64 65 66 69 6e 65 20 74 68  ful to define th
d500: 65 20 6d 61 63 72 6f 73 20 74 68 61 74 20 6f 6d  e macros that om
d510: 69 74 0a 20 20 73 70 65 63 69 66 69 63 20 70 72  it.  specific pr
d520: 61 67 6d 61 73 20 69 6e 20 61 64 64 69 74 69 6f  agmas in additio
d530: 6e 20 74 6f 20 74 68 69 73 2c 20 61 73 20 74 68  n to this, as th
d540: 65 79 20 6d 61 79 20 61 6c 73 6f 20 72 65 6d 6f  ey may also remo
d550: 76 65 20 73 75 70 70 6f 72 74 69 6e 67 20 63 6f  ve supporting co
d560: 64 65 0a 20 20 69 6e 20 6f 74 68 65 72 20 73 75  de.  in other su
d570: 62 2d 73 79 73 74 65 6d 73 2e 20 54 68 69 73 20  b-systems. This 
d580: 6d 61 63 72 6f 20 72 65 6d 6f 76 65 73 20 74 68  macro removes th
d590: 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61  e [PRAGMA] comma
d5a0: 6e 64 20 6f 6e 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50  nd only..}..COMP
d5b0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
d5c0: 54 45 5f 4f 4d 49 54 5f 50 52 4f 47 52 45 53 53  TE_OMIT_PROGRESS
d5d0: 5f 43 41 4c 4c 42 41 43 4b 7d 20 7b 0a 20 20 54  _CALLBACK} {.  T
d5e0: 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20 62  his option may b
d5f0: 65 20 64 65 66 69 6e 65 64 20 74 6f 20 6f 6d 69  e defined to omi
d600: 74 20 74 68 65 20 63 61 70 61 62 69 6c 69 74 79  t the capability
d610: 20 74 6f 20 69 73 73 75 65 20 22 70 72 6f 67 72   to issue "progr
d620: 65 73 73 22 20 0a 20 20 63 61 6c 6c 62 61 63 6b  ess" .  callback
d630: 73 20 64 75 72 69 6e 67 20 6c 6f 6e 67 2d 72 75  s during long-ru
d640: 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61 74 65 6d  nning SQL statem
d650: 65 6e 74 73 2e 20 54 68 65 20 0a 20 20 5b 73 71  ents. The .  [sq
d660: 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f 68  lite3_progress_h
d670: 61 6e 64 6c 65 72 28 29 5d 0a 20 20 41 50 49 20  andler()].  API 
d680: 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20  function is not 
d690: 70 72 65 73 65 6e 74 20 69 6e 20 74 68 65 20 6c  present in the l
d6a0: 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49  ibrary..}..COMPI
d6b0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
d6c0: 45 5f 4f 4d 49 54 5f 51 55 49 43 4b 42 41 4c 41  E_OMIT_QUICKBALA
d6d0: 4e 43 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  NCE} {.  This op
d6e0: 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6e 20 61 6c  tion omits an al
d6f0: 74 65 72 6e 61 74 69 76 65 2c 20 66 61 73 74 65  ternative, faste
d700: 72 20 42 2d 54 72 65 65 20 62 61 6c 61 6e 63 69  r B-Tree balanci
d710: 6e 67 20 72 6f 75 74 69 6e 65 2e 0a 20 20 55 73  ng routine..  Us
d720: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
d730: 6d 61 6b 65 73 20 53 51 4c 69 74 65 20 73 6c 69  makes SQLite sli
d740: 67 68 74 6c 79 20 73 6d 61 6c 6c 65 72 20 61 74  ghtly smaller at
d750: 20 74 68 65 20 65 78 70 65 6e 73 65 20 6f 66 0a   the expense of.
d760: 20 20 6d 61 6b 69 6e 67 20 69 74 20 72 75 6e 20    making it run 
d770: 73 6c 69 67 68 74 6c 79 20 73 6c 6f 77 65 72 2e  slightly slower.
d780: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
d790: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
d7a0: 52 45 49 4e 44 45 58 7d 20 7b 0a 20 20 57 68 65  REINDEX} {.  Whe
d7b0: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
d7c0: 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 52   defined, the [R
d7d0: 45 49 4e 44 45 58 5d 0a 20 20 63 6f 6d 6d 61 6e  EINDEX].  comman
d7e0: 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65  d is not include
d7f0: 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79  d in the library
d800: 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61 20  ..  Executing a 
d810: 5b 52 45 49 4e 44 45 58 5d 20 73 74 61 74 65 6d  [REINDEX] statem
d820: 65 6e 74 20 63 61 75 73 65 73 20 0a 20 20 61 20  ent causes .  a 
d830: 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a  parse error..}..
d840: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
d850: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45  SQLITE_OMIT_SCHE
d860: 4d 41 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20  MA_PRAGMAS} {.  
d870: 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70  Defining this op
d880: 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d  tion omits pragm
d890: 61 73 20 66 6f 72 20 71 75 65 72 79 69 6e 67 20  as for querying 
d8a0: 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
d8b0: 65 6d 61 20 66 72 6f 6d 20 0a 20 20 74 68 65 20  ema from .  the 
d8c0: 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  build..}..COMPIL
d8d0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
d8e0: 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 56 45 52  _OMIT_SCHEMA_VER
d8f0: 53 49 4f 4e 5f 50 52 41 47 4d 41 53 7d 20 7b 0a  SION_PRAGMAS} {.
d900: 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20    Defining this 
d910: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61  option omits pra
d920: 67 6d 61 73 20 66 6f 72 20 71 75 65 72 79 69 6e  gmas for queryin
d930: 67 20 61 6e 64 20 6d 6f 64 69 66 79 69 6e 67 20  g and modifying 
d940: 74 68 65 20 0a 20 20 64 61 74 61 62 61 73 65 20  the .  database 
d950: 73 63 68 65 6d 61 20 76 65 72 73 69 6f 6e 20 61  schema version a
d960: 6e 64 20 75 73 65 72 20 76 65 72 73 69 6f 6e 20  nd user version 
d970: 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e 20  from the build. 
d980: 53 70 65 63 69 66 69 63 61 6c 6c 79 2c 20 74 68  Specifically, th
d990: 65 20 0a 20 20 5b 73 63 68 65 6d 61 5f 76 65 72  e .  [schema_ver
d9a0: 73 69 6f 6e 5d 20 61 6e 64 20 5b 75 73 65 72 5f  sion] and [user_
d9b0: 76 65 72 73 69 6f 6e 5d 20 50 52 41 47 4d 41 73  version] PRAGMAs
d9c0: 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a   are omitted..}.
d9d0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
d9e0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 48 41  {SQLITE_OMIT_SHA
d9f0: 52 45 44 5f 43 41 43 48 45 7d 20 7b 0a 20 20 54  RED_CACHE} {.  T
da00: 68 69 73 20 6f 70 74 69 6f 6e 20 62 75 69 6c 64  his option build
da10: 73 20 53 51 4c 69 74 65 20 77 69 74 68 6f 75 74  s SQLite without
da20: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 73 68 61   support for sha
da30: 72 65 64 2d 63 61 63 68 65 20 6d 6f 64 65 2e 0a  red-cache mode..
da40: 20 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 65    The [sqlite3_e
da50: 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63  nable_shared_cac
da60: 68 65 28 29 5d 20 69 73 20 6f 6d 69 74 74 65 64  he()] is omitted
da70: 20 61 6c 6f 6e 67 20 77 69 74 68 20 61 20 66 61   along with a fa
da80: 69 72 0a 20 20 61 6d 6f 75 6e 74 20 6f 66 20 6c  ir.  amount of l
da90: 6f 67 69 63 20 77 69 74 68 69 6e 20 74 68 65 20  ogic within the 
daa0: 42 2d 54 72 65 65 20 73 75 62 73 79 73 74 65 6d  B-Tree subsystem
dab0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
dac0: 20 73 68 61 72 65 64 0a 20 20 63 61 63 68 65 20   shared.  cache 
dad0: 6d 61 6e 61 67 65 6d 65 6e 74 2e 0a 7d 0a 0a 43  management..}..C
dae0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
daf0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 55 42 51 55  QLITE_OMIT_SUBQU
db00: 45 52 59 7d 20 7b 0a 20 20 49 66 20 64 65 66 69  ERY} {.  If defi
db10: 6e 65 64 2c 20 73 75 70 70 6f 72 74 20 66 6f 72  ned, support for
db20: 20 73 75 62 2d 73 65 6c 65 63 74 73 20 61 6e 64   sub-selects and
db30: 20 74 68 65 20 49 4e 28 29 20 6f 70 65 72 61 74   the IN() operat
db40: 6f 72 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a  or are omitted..
db50: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
db60: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54  N {SQLITE_OMIT_T
db70: 43 4c 5f 56 41 52 49 41 42 4c 45 7d 20 7b 0a 20  CL_VARIABLE} {. 
db80: 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69   If this macro i
db90: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20  s defined, then 
dba0: 74 68 65 20 73 70 65 63 69 61 6c 20 22 24 3c 76  the special "$<v
dbb0: 61 72 69 61 62 6c 65 2d 6e 61 6d 65 3e 22 20 73  ariable-name>" s
dbc0: 79 6e 74 61 78 0a 20 20 75 73 65 64 20 74 6f 20  yntax.  used to 
dbd0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 69  automatically bi
dbe0: 6e 64 20 53 51 4c 20 76 61 72 69 61 62 6c 65 73  nd SQL variables
dbf0: 20 74 6f 20 54 43 4c 20 76 61 72 69 61 62 6c 65   to TCL variable
dc00: 73 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a  s is omitted..}.
dc10: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
dc20: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 45 4d  {SQLITE_OMIT_TEM
dc30: 50 44 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  PDB} {.  This op
dc40: 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
dc50: 72 74 20 66 6f 72 20 54 45 4d 50 20 6f 72 20 54  rt for TEMP or T
dc60: 45 4d 50 4f 52 41 52 59 20 74 61 62 6c 65 73 2e  EMPORARY tables.
dc70: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
dc80: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
dc90: 54 52 41 43 45 7d 20 7b 0a 20 20 54 68 69 73 20  TRACE} {.  This 
dca0: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70  option omits sup
dcb0: 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 73 71  port for the [sq
dcc0: 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 29 5d  lite3_profile()]
dcd0: 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
dce0: 74 72 61 63 65 28 29 5d 20 69 6e 74 65 72 66 61  trace()] interfa
dcf0: 63 65 73 20 61 6e 64 20 74 68 65 69 72 20 61 73  ces and their as
dd00: 73 6f 63 69 61 74 65 64 20 6c 6f 67 69 63 2e 0a  sociated logic..
dd10: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
dd20: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54  N {SQLITE_OMIT_T
dd30: 52 49 47 47 45 52 7d 20 7b 0a 20 20 44 65 66 69  RIGGER} {.  Defi
dd40: 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e  ning this option
dd50: 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66   omits support f
dd60: 6f 72 20 54 52 49 47 47 45 52 20 6f 62 6a 65 63  or TRIGGER objec
dd70: 74 73 2e 20 4e 65 69 74 68 65 72 20 74 68 65 20  ts. Neither the 
dd80: 0a 20 20 5b 43 52 45 41 54 45 20 54 52 49 47 47  .  [CREATE TRIGG
dd90: 45 52 5d 20 6f 72 20 5b 44 52 4f 50 20 54 52 49  ER] or [DROP TRI
dda0: 47 47 45 52 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73  GGER].  commands
ddb0: 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 69   are available i
ddc0: 6e 20 74 68 69 73 20 63 61 73 65 2c 20 61 6e 64  n this case, and
ddd0: 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 65   attempting to e
dde0: 78 65 63 75 74 65 0a 20 20 65 69 74 68 65 72 20  xecute.  either 
ddf0: 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61  will result in a
de00: 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 20 20   parse error..  
de10: 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 6c 73 6f  This option also
de20: 20 64 69 73 61 62 6c 65 73 20 65 6e 66 6f 72 63   disables enforc
de30: 65 6d 65 6e 74 20 6f 66 20 5b 66 6f 72 65 69 67  ement of [foreig
de40: 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74  n key constraint
de50: 73 5d 2c 0a 20 20 73 69 6e 63 65 20 74 68 65 20  s],.  since the 
de60: 63 6f 64 65 20 74 68 61 74 20 69 6d 70 6c 65 6d  code that implem
de70: 65 6e 74 73 20 74 72 69 67 67 65 72 73 20 61 6e  ents triggers an
de80: 64 20 77 68 69 63 68 20 69 73 20 6f 6d 69 74 74  d which is omitt
de90: 65 64 20 62 79 20 74 68 69 73 0a 20 20 6f 70 74  ed by this.  opt
dea0: 69 6f 6e 20 69 73 20 61 6c 73 6f 20 75 73 65 64  ion is also used
deb0: 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 5b 66   to implement [f
dec0: 6f 72 65 69 67 6e 20 6b 65 79 20 61 63 74 69 6f  oreign key actio
ded0: 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ns]..}..COMPILE_
dee0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
def0: 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f 4f 50 54  MIT_TRUNCATE_OPT
df00: 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 41  IMIZATION} {.  A
df10: 20 64 65 66 61 75 6c 74 20 62 75 69 6c 64 20 6f   default build o
df20: 66 20 53 51 4c 69 74 65 2c 20 69 66 20 61 20 5b  f SQLite, if a [
df30: 44 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65 6e  DELETE] statemen
df40: 74 20 68 61 73 20 6e 6f 20 57 48 45 52 45 20 63  t has no WHERE c
df50: 6c 61 75 73 65 0a 20 20 61 6e 64 20 6f 70 65 72  lause.  and oper
df60: 61 74 65 73 20 6f 6e 20 61 20 74 61 62 6c 65 20  ates on a table 
df70: 77 69 74 68 20 6e 6f 20 74 72 69 67 67 65 72 73  with no triggers
df80: 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f  , an optimizatio
df90: 6e 20 6f 63 63 75 72 73 20 74 68 61 74 0a 20 20  n occurs that.  
dfa0: 63 61 75 73 65 73 20 74 68 65 20 44 45 4c 45 54  causes the DELET
dfb0: 45 20 74 6f 20 6f 63 63 75 72 20 62 79 20 64 72  E to occur by dr
dfc0: 6f 70 70 69 6e 67 20 61 6e 64 20 72 65 63 72 65  opping and recre
dfd0: 61 74 69 6e 67 20 74 68 65 20 74 61 62 6c 65 2e  ating the table.
dfe0: 20 20 0a 20 20 44 72 6f 70 70 69 6e 67 20 61 6e    .  Dropping an
dff0: 64 20 72 65 63 72 65 61 74 69 6e 67 20 61 20 74  d recreating a t
e000: 61 62 6c 65 20 69 73 20 75 73 75 61 6c 6c 79 20  able is usually 
e010: 6d 75 63 68 20 66 61 73 74 65 72 20 74 68 61 6e  much faster than
e020: 20 64 65 6c 65 74 69 6e 67 0a 20 20 74 68 65 20   deleting.  the 
e030: 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74 20 72 6f  table content ro
e040: 77 20 62 79 20 72 6f 77 2e 20 20 54 68 69 73 20  w by row.  This 
e050: 69 73 20 74 68 65 20 22 74 72 75 6e 63 61 74 65  is the "truncate
e060: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 22 2e 0a   optimization"..
e070: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
e080: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 55  N {SQLITE_OMIT_U
e090: 54 46 31 36 7d 20 7b 0a 20 20 54 68 69 73 20 6d  TF16} {.  This m
e0a0: 61 63 72 6f 20 69 73 20 75 73 65 64 20 74 6f 20  acro is used to 
e0b0: 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72  omit support for
e0c0: 20 55 54 46 31 36 20 74 65 78 74 20 65 6e 63 6f   UTF16 text enco
e0d0: 64 69 6e 67 2e 20 57 68 65 6e 20 74 68 69 73 20  ding. When this 
e0e0: 69 73 0a 20 20 64 65 66 69 6e 65 64 20 61 6c 6c  is.  defined all
e0f0: 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 20 74   API functions t
e100: 68 61 74 20 72 65 74 75 72 6e 20 6f 72 20 61 63  hat return or ac
e110: 63 65 70 74 20 55 54 46 31 36 20 65 6e 63 6f 64  cept UTF16 encod
e120: 65 64 20 74 65 78 74 20 61 72 65 0a 20 20 75 6e  ed text are.  un
e130: 61 76 61 69 6c 61 62 6c 65 2e 20 54 68 65 73 65  available. These
e140: 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62   functions can b
e150: 65 20 69 64 65 6e 74 69 66 69 65 64 20 62 79 20  e identified by 
e160: 74 68 65 20 66 61 63 74 20 74 68 61 74 20 74 68  the fact that th
e170: 65 79 20 65 6e 64 0a 20 20 77 69 74 68 20 27 31  ey end.  with '1
e180: 36 27 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20  6', for example 
e190: 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
e1a0: 31 36 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  16()], [sqlite3_
e1b0: 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 29 5d  column_text16()]
e1c0: 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
e1d0: 62 69 6e 64 5f 74 65 78 74 31 36 28 29 5d 2e 0a  bind_text16()]..
e1e0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
e1f0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56  N {SQLITE_OMIT_V
e200: 41 43 55 55 4d 7d 20 7b 0a 20 20 57 68 65 6e 20  ACUUM} {.  When 
e210: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
e220: 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 56 41 43  efined, the [VAC
e230: 55 55 4d 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20 69  UUM].  command i
e240: 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69  s not included i
e250: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 20  n the library.. 
e260: 20 45 78 65 63 75 74 69 6e 67 20 61 20 5b 56 41   Executing a [VA
e270: 43 55 55 4d 5d 20 73 74 61 74 65 6d 65 6e 74 20  CUUM] statement 
e280: 63 61 75 73 65 73 20 0a 20 20 61 20 70 61 72 73  causes .  a pars
e290: 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  e error..}..COMP
e2a0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
e2b0: 54 45 5f 4f 4d 49 54 5f 56 49 45 57 7d 20 7b 0a  TE_OMIT_VIEW} {.
e2c0: 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20    Defining this 
e2d0: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70  option omits sup
e2e0: 70 6f 72 74 20 66 6f 72 20 56 49 45 57 20 6f 62  port for VIEW ob
e2f0: 6a 65 63 74 73 2e 20 4e 65 69 74 68 65 72 20 74  jects. Neither t
e300: 68 65 20 0a 20 20 5b 43 52 45 41 54 45 20 56 49  he .  [CREATE VI
e310: 45 57 5d 20 6e 6f 72 20 74 68 65 20 5b 44 52 4f  EW] nor the [DRO
e320: 50 20 56 49 45 57 5d 0a 20 20 63 6f 6d 6d 61 6e  P VIEW].  comman
e330: 64 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65  ds are available
e340: 20 69 6e 20 74 68 69 73 20 63 61 73 65 2c 20 61   in this case, a
e350: 6e 64 0a 20 20 61 74 74 65 6d 70 74 69 6e 67 20  nd.  attempting 
e360: 74 6f 20 65 78 65 63 75 74 65 20 65 69 74 68 65  to execute eithe
e370: 72 20 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e  r will result in
e380: 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a   a parse error..
e390: 0a 20 20 57 41 52 4e 49 4e 47 3a 20 49 66 20 74  .  WARNING: If t
e3a0: 68 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66  his macro is def
e3b0: 69 6e 65 64 2c 20 69 74 20 77 69 6c 6c 20 6e 6f  ined, it will no
e3c0: 74 20 62 65 20 70 6f 73 73 69 62 6c 65 20 74 6f  t be possible to
e3d0: 20 6f 70 65 6e 20 61 20 64 61 74 61 62 61 73 65   open a database
e3e0: 0a 20 20 66 6f 72 20 77 68 69 63 68 20 74 68 65  .  for which the
e3f0: 20 73 63 68 65 6d 61 20 63 6f 6e 74 61 69 6e 73   schema contains
e400: 20 56 49 45 57 20 6f 62 6a 65 63 74 73 2e 20 0a   VIEW objects. .
e410: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
e420: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56  N {SQLITE_OMIT_V
e430: 49 52 54 55 41 4c 54 41 42 4c 45 7d 20 7b 0a 20  IRTUALTABLE} {. 
e440: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
e450: 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74  ts support for t
e460: 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 74 61 62  he [sqlite3_vtab
e470: 20 7c 20 56 69 72 74 75 61 6c 20 54 61 62 6c 65   | Virtual Table
e480: 5d 0a 20 20 6d 65 63 68 61 6e 69 73 6d 20 69 6e  ].  mechanism in
e490: 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50   SQLite..}..COMP
e4a0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
e4b0: 54 45 5f 4f 4d 49 54 5f 57 41 4c 7d 20 7b 0a 20  TE_OMIT_WAL} {. 
e4c0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
e4d0: 74 73 20 74 68 65 20 22 5b 77 72 69 74 65 2d 61  ts the "[write-a
e4e0: 68 65 61 64 20 6c 6f 67 5d 22 20 28 61 2e 6b 2e  head log]" (a.k.
e4f0: 61 2e 20 22 5b 57 41 4c 5d 22 29 20 63 61 70 61  a. "[WAL]") capa
e500: 62 69 6c 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49  bility..}..COMPI
e510: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
e520: 45 5f 4f 4d 49 54 5f 57 53 44 7d 20 7b 0a 20 20  E_OMIT_WSD} {.  
e530: 54 68 69 73 20 6f 70 74 69 6f 6e 20 62 75 69 6c  This option buil
e540: 64 73 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20  ds a version of 
e550: 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
e560: 72 79 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73  ry that contains
e570: 20 6e 6f 0a 20 20 57 72 69 74 61 62 6c 65 20 53   no.  Writable S
e580: 74 61 74 69 63 20 44 61 74 61 20 28 57 53 44 29  tatic Data (WSD)
e590: 2e 20 20 57 53 44 20 69 73 20 67 6c 6f 62 61 6c  .  WSD is global
e5a0: 20 76 61 72 69 61 62 6c 65 73 20 61 6e 64 2f 6f   variables and/o
e5b0: 72 20 73 74 61 74 69 63 0a 20 20 76 61 72 69 61  r static.  varia
e5c0: 62 6c 65 73 2e 20 20 53 6f 6d 65 20 70 6c 61 74  bles.  Some plat
e5d0: 66 6f 72 6d 73 20 64 6f 20 6e 6f 74 20 73 75 70  forms do not sup
e5e0: 70 6f 72 74 20 57 53 44 2c 20 61 6e 64 20 74 68  port WSD, and th
e5f0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e 65 63  is option is nec
e600: 65 73 73 61 72 79 0a 20 20 69 6e 20 6f 72 64 65  essary.  in orde
e610: 72 20 66 6f 72 20 53 51 4c 69 74 65 20 74 6f 20  r for SQLite to 
e620: 77 6f 72 6b 20 74 68 6f 73 65 20 70 6c 61 74 66  work those platf
e630: 6f 72 6d 73 2e 20 20 0a 0a 20 20 55 6e 6c 69 6b  orms.  ..  Unlik
e640: 65 20 6f 74 68 65 72 20 4f 4d 49 54 20 6f 70 74  e other OMIT opt
e650: 69 6f 6e 73 20 77 68 69 63 68 20 6d 61 6b 65 20  ions which make 
e660: 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
e670: 72 79 20 73 6d 61 6c 6c 65 72 2c 0a 20 20 74 68  ry smaller,.  th
e680: 69 73 20 6f 70 74 69 6f 6e 20 61 63 74 75 61 6c  is option actual
e690: 6c 79 20 69 6e 63 72 65 61 73 65 73 20 74 68 65  ly increases the
e6a0: 20 73 69 7a 65 20 6f 66 20 53 51 4c 69 74 65 20   size of SQLite 
e6b0: 61 6e 64 20 6d 61 6b 65 73 20 69 74 20 72 75 6e  and makes it run
e6c0: 0a 20 20 61 20 6c 69 74 74 6c 65 20 73 6c 6f 77  .  a little slow
e6d0: 65 72 2e 20 20 4f 6e 6c 79 20 75 73 65 20 74 68  er.  Only use th
e6e0: 69 73 20 6f 70 74 69 6f 6e 20 69 66 20 53 51 4c  is option if SQL
e6f0: 69 74 65 20 69 73 20 62 65 69 6e 67 20 62 75 69  ite is being bui
e700: 6c 74 20 66 6f 72 20 61 6e 0a 20 20 65 6d 62 65  lt for an.  embe
e710: 64 64 65 64 20 74 61 72 67 65 74 20 74 68 61 74  dded target that
e720: 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72   does not suppor
e730: 74 20 57 53 44 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  t WSD..}..COMPIL
e740: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
e750: 5f 4f 4d 49 54 5f 58 46 45 52 5f 4f 50 54 7d 20  _OMIT_XFER_OPT} 
e760: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
e770: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
e780: 72 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20  r optimizations 
e790: 74 68 61 74 20 68 65 6c 70 20 73 74 61 74 65 6d  that help statem
e7a0: 65 6e 74 73 0a 20 20 6f 66 20 74 68 65 20 66 6f  ents.  of the fo
e7b0: 72 6d 20 22 49 4e 53 45 52 54 20 49 4e 54 4f 20  rm "INSERT INTO 
e7c0: 2e 2e 2e 20 53 45 4c 45 43 54 20 2e 2e 2e 22 20  ... SELECT ..." 
e7d0: 72 75 6e 20 66 61 73 74 65 72 2e 0a 7d 0a 0a 43  run faster..}..C
e7e0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
e7f0: 51 4c 49 54 45 5f 5a 45 52 4f 5f 4d 41 4c 4c 4f  QLITE_ZERO_MALLO
e800: 43 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  C} {.  This opti
e810: 6f 6e 20 6f 6d 69 74 73 20 62 6f 74 68 20 74 68  on omits both th
e820: 65 20 5b 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72  e [default memor
e830: 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 61 6e 64  y allocator] and
e840: 20 74 68 65 0a 20 20 5b 64 65 62 75 67 67 69 6e   the.  [debuggin
e850: 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  g memory allocat
e860: 6f 72 5d 20 66 72 6f 6d 20 74 68 65 20 62 75 69  or] from the bui
e870: 6c 64 20 61 6e 64 20 73 75 62 73 74 69 74 75 74  ld and substitut
e880: 65 73 20 61 20 73 74 75 62 0a 20 20 6d 65 6d 6f  es a stub.  memo
e890: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 74 68 61  ry allocator tha
e8a0: 74 20 61 6c 77 61 79 73 20 66 61 69 6c 73 2e 20  t always fails. 
e8b0: 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6e 6f 74   SQLite will not
e8c0: 20 72 75 6e 20 77 69 74 68 20 74 68 69 73 0a 20   run with this. 
e8d0: 20 73 74 75 62 20 6d 65 6d 6f 72 79 20 61 6c 6c   stub memory all
e8e0: 6f 63 61 74 6f 72 20 73 69 6e 63 65 20 69 74 20  ocator since it 
e8f0: 77 69 6c 6c 20 62 65 20 75 6e 61 62 6c 65 20 74  will be unable t
e900: 6f 20 61 6c 6c 6f 63 61 74 65 20 6d 65 6d 6f 72  o allocate memor
e910: 79 2e 20 20 42 75 74 0a 20 20 74 68 69 73 20 73  y.  But.  this s
e920: 74 75 62 20 63 61 6e 20 62 65 20 72 65 70 6c 61  tub can be repla
e930: 63 65 64 20 61 74 20 73 74 61 72 74 2d 74 69 6d  ced at start-tim
e940: 65 20 75 73 69 6e 67 0a 20 20 5b 73 71 6c 69 74  e using.  [sqlit
e950: 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49  e3_config]([SQLI
e960: 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43  TE_CONFIG_MALLOC
e970: 5d 2c 2e 2e 2e 29 20 6f 72 0a 20 20 5b 73 71 6c  ],...) or.  [sql
e980: 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51  ite3_config]([SQ
e990: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50  LITE_CONFIG_HEAP
e9a0: 5d 2c 2e 2e 2e 29 2e 0a 20 20 53 6f 20 74 68 65  ],...)..  So the
e9b0: 20 6e 65 74 20 65 66 66 65 63 74 20 6f 66 20 74   net effect of t
e9c0: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
e9d0: 20 6f 70 74 69 6f 6e 20 69 73 20 74 68 61 74 20   option is that 
e9e0: 69 74 20 61 6c 6c 6f 77 73 20 53 51 4c 69 74 65  it allows SQLite
e9f0: 0a 20 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c 65  .  to be compile
ea00: 64 20 61 6e 64 20 6c 69 6e 6b 65 64 20 61 67 61  d and linked aga
ea10: 69 6e 73 74 20 61 20 73 79 73 74 65 6d 20 6c 69  inst a system li
ea20: 62 72 61 72 79 20 74 68 61 74 20 64 6f 65 73 20  brary that does 
ea30: 6e 6f 74 20 73 75 70 70 6f 72 74 0a 20 20 6d 61  not support.  ma
ea40: 6c 6c 6f 63 28 29 2c 20 66 72 65 65 28 29 2c 20  lloc(), free(), 
ea50: 61 6e 64 2f 6f 72 20 72 65 61 6c 6c 6f 63 28 29  and/or realloc()
ea60: 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20 6e  ..}..</tcl>.<a n
ea70: 61 6d 65 3d 22 64 65 62 75 67 6f 70 74 69 6f 6e  ame="debugoption
ea80: 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 38 20  s"></a>.<h2>1.8 
ea90: 41 6e 61 6c 79 73 69 73 20 61 6e 64 20 44 65 62  Analysis and Deb
eaa0: 75 67 67 69 6e 67 20 4f 70 74 69 6f 6e 73 3c 2f  ugging Options</
eab0: 68 32 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d 50 49  h2>.<tcl>..COMPI
eac0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
ead0: 45 5f 44 45 42 55 47 7d 20 7b 0a 20 20 54 68 65  E_DEBUG} {.  The
eae0: 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65 20 63   SQLite source c
eaf0: 6f 64 65 20 63 6f 6e 74 61 69 6e 73 20 6c 69 74  ode contains lit
eb00: 65 72 61 6c 6c 79 20 74 68 6f 75 73 61 6e 64 73  erally thousands
eb10: 20 6f 66 20 61 73 73 65 72 74 28 29 20 73 74 61   of assert() sta
eb20: 74 65 6d 65 6e 74 73 0a 20 20 75 73 65 64 20 74  tements.  used t
eb30: 6f 20 76 65 72 69 66 79 20 69 6e 74 65 72 6e 61  o verify interna
eb40: 6c 20 61 73 73 75 6d 70 74 69 6f 6e 73 20 61 6e  l assumptions an
eb50: 64 20 73 75 62 72 6f 75 74 69 6e 65 20 70 72 65  d subroutine pre
eb60: 63 6f 6e 64 69 74 69 6f 6e 73 20 61 6e 64 0a 20  conditions and. 
eb70: 20 70 6f 73 74 63 6f 6e 64 69 74 69 6f 6e 73 2e   postconditions.
eb80: 20 20 54 68 65 73 65 20 61 73 73 65 72 74 28 29    These assert()
eb90: 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20   statements are 
eba0: 6e 6f 72 6d 61 6c 6c 79 20 74 75 72 6e 65 64 20  normally turned 
ebb0: 6f 66 66 0a 20 20 28 74 68 65 79 20 67 65 6e 65  off.  (they gene
ebc0: 72 61 74 65 20 6e 6f 20 63 6f 64 65 29 20 73 69  rate no code) si
ebd0: 6e 63 65 20 74 75 72 6e 69 6e 67 20 74 68 65 6d  nce turning them
ebe0: 20 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65   on makes SQLite
ebf0: 20 72 75 6e 20 61 70 70 72 6f 78 69 6d 61 74 65   run approximate
ec00: 6c 79 0a 20 20 74 68 72 65 65 20 74 69 6d 65 73  ly.  three times
ec10: 20 73 6c 6f 77 65 72 2e 20 20 42 75 74 20 66 6f   slower.  But fo
ec20: 72 20 74 65 73 74 69 6e 67 20 61 6e 64 20 61 6e  r testing and an
ec30: 61 6c 79 73 69 73 2c 20 69 74 20 69 73 20 75 73  alysis, it is us
ec40: 65 66 75 6c 20 74 6f 20 74 75 72 6e 0a 20 20 74  eful to turn.  t
ec50: 68 65 20 61 73 73 65 72 74 28 29 20 73 74 61 74  he assert() stat
ec60: 65 6d 65 6e 74 73 20 6f 6e 2e 20 20 54 68 65 20  ements on.  The 
ec70: 53 51 4c 49 54 45 5f 44 45 42 55 47 20 63 6f 6d  SQLITE_DEBUG com
ec80: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
ec90: 20 64 6f 65 73 20 74 68 69 73 2e 0a 20 20 3c 70   does this..  <p
eca0: 3e 53 51 4c 49 54 45 5f 44 45 42 55 47 20 61 6c  >SQLITE_DEBUG al
ecb0: 73 6f 20 65 6e 61 62 6c 65 73 20 73 6f 6d 65 20  so enables some 
ecc0: 6f 74 68 65 72 20 64 65 62 75 67 67 69 6e 67 20  other debugging 
ecd0: 66 65 61 74 75 72 65 73 2c 20 73 75 63 68 20 61  features, such a
ece0: 73 0a 20 20 73 70 65 63 69 61 6c 20 5b 50 52 41  s.  special [PRA
ecf0: 47 4d 41 5d 20 73 74 61 74 65 6d 65 6e 74 73 20  GMA] statements 
ed00: 74 68 61 74 20 74 75 72 6e 20 6f 6e 20 74 72 61  that turn on tra
ed10: 63 69 6e 67 20 61 6e 64 20 6c 69 73 74 69 6e 67  cing and listing
ed20: 20 66 65 61 74 75 72 65 73 0a 20 20 75 73 65 64   features.  used
ed30: 20 66 6f 72 20 74 72 6f 75 62 6c 65 73 68 6f 6f   for troubleshoo
ed40: 74 69 6e 67 20 61 6e 64 20 61 6e 61 6c 79 73 69  ting and analysi
ed50: 73 20 6f 66 20 74 68 65 20 5b 56 44 42 45 5d 20  s of the [VDBE] 
ed60: 61 6e 64 20 63 6f 64 65 20 67 65 6e 65 72 61 74  and code generat
ed70: 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  or..}..COMPILE_O
ed80: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 45  PTION {SQLITE_ME
ed90: 4d 44 45 42 55 47 7d 20 7b 0a 20 20 54 68 65 20  MDEBUG} {.  The 
eda0: 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42 55 47 20  SQLITE_MEMDEBUG 
edb0: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 61 6e  option causes an
edc0: 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 20 0a 20   instrumented . 
edd0: 20 5b 64 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f   [debugging memo
ede0: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 0a 20 20  ry allocator].  
edf0: 74 6f 20 62 65 20 75 73 65 64 20 61 73 20 74 68  to be used as th
ee00: 65 20 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79  e default memory
ee10: 20 61 6c 6c 6f 63 61 74 6f 72 20 77 69 74 68 69   allocator withi
ee20: 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 65 0a 20  n SQLite.  The. 
ee30: 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 20 6d 65   instrumented me
ee40: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 63  mory allocator c
ee50: 68 65 63 6b 73 20 66 6f 72 20 6d 69 73 75 73 65  hecks for misuse
ee60: 20 6f 66 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20   of dynamically 
ee70: 61 6c 6c 6f 63 61 74 65 64 0a 20 20 6d 65 6d 6f  allocated.  memo
ee80: 72 79 2e 20 20 45 78 61 6d 70 6c 65 73 20 6f 66  ry.  Examples of
ee90: 20 6d 69 73 75 73 65 20 69 6e 63 6c 75 64 65 20   misuse include 
eea0: 75 73 69 6e 67 20 6d 65 6d 6f 72 79 20 61 66 74  using memory aft
eeb0: 65 72 20 69 74 20 69 73 20 66 72 65 65 64 2c 0a  er it is freed,.
eec0: 20 20 77 72 69 74 69 6e 67 20 6f 66 66 20 74 68    writing off th
eed0: 65 20 65 6e 64 73 20 6f 66 20 61 20 6d 65 6d 6f  e ends of a memo
eee0: 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 66  ry allocation, f
eef0: 72 65 65 69 6e 67 20 6d 65 6d 6f 72 79 20 6e 6f  reeing memory no
ef00: 74 20 70 72 65 76 69 6f 75 73 6c 79 0a 20 20 6f  t previously.  o
ef10: 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65  btained from the
ef20: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
ef30: 72 2c 20 6f 72 20 66 61 69 6c 69 6e 67 20 74 6f  r, or failing to
ef40: 20 69 6e 69 74 69 61 6c 69 7a 65 20 6e 65 77 6c   initialize newl
ef50: 79 0a 20 20 61 6c 6c 6f 63 61 74 65 64 20 6d 65  y.  allocated me
ef60: 6d 6f 72 79 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a  mory..}..</tcl>.
ef70: 3c 61 20 6e 61 6d 65 3d 22 77 69 6e 33 32 6f 70  <a name="win32op
ef80: 74 69 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e  tions"></a>.<h2>
ef90: 31 2e 39 20 57 69 6e 64 6f 77 73 2d 53 70 65 63  1.9 Windows-Spec
efa0: 69 66 69 63 20 4f 70 74 69 6f 6e 73 3c 2f 68 32  ific Options</h2
efb0: 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45  >.<tcl>..COMPILE
efc0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
efd0: 57 49 4e 33 32 5f 48 45 41 50 5f 43 52 45 41 54  WIN32_HEAP_CREAT
efe0: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
eff0: 6f 6e 20 66 6f 72 63 65 73 20 74 68 65 20 57 69  on forces the Wi
f000: 6e 33 32 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72  n32 native memor
f010: 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 77 68 65  y allocator, whe
f020: 6e 20 65 6e 61 62 6c 65 64 2c 20 74 6f 0a 20 20  n enabled, to.  
f030: 63 72 65 61 74 65 20 61 20 70 72 69 76 61 74 65  create a private
f040: 20 68 65 61 70 20 74 6f 20 68 6f 6c 64 20 61 6c   heap to hold al
f050: 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  l memory allocat
f060: 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ions..}..COMPILE
f070: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
f080: 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 5f 56 41 4c  WIN32_MALLOC_VAL
f090: 49 44 41 54 45 7d 20 7b 0a 20 20 54 68 69 73 20  IDATE} {.  This 
f0a0: 6f 70 74 69 6f 6e 20 66 6f 72 63 65 73 20 74 68  option forces th
f0b0: 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 6d  e Win32 native m
f0c0: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c  emory allocator,
f0d0: 20 77 68 65 6e 20 65 6e 61 62 6c 65 64 2c 20 74   when enabled, t
f0e0: 6f 0a 20 20 6d 61 6b 65 20 73 74 72 61 74 65 67  o.  make strateg
f0f0: 69 63 20 63 61 6c 6c 73 20 69 6e 74 6f 20 74 68  ic calls into th
f100: 65 20 48 65 61 70 56 61 6c 69 64 61 74 65 28 29  e HeapValidate()
f110: 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 61 73 73   function if ass
f120: 65 72 74 28 29 20 69 73 20 61 6c 73 6f 0a 20 20  ert() is also.  
f130: 65 6e 61 62 6c 65 64 2e 0a 7d 0a 0a 3c 2f 74 63  enabled..}..</tc
f140: 6c 3e 0a                                         l>.