Documentation Source Text

Hex Artifact Content
Login

Artifact 9a07018f185e53ef95d3ac73a810e0d37b625f4e:


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 0a 20 20 7d 0a 20 20 69  rds $all.  }.  i
03f0: 66 20 7b 5b 72 65 67 65 78 70 20 7b 5e 59 59 28  f {[regexp {^YY(
0400: 5b 41 2d 5a 30 2d 39 5f 5d 2b 29 7d 20 24 6e 61  [A-Z0-9_]+)} $na
0410: 6d 65 20 61 6c 6c 20 6c 61 62 65 6c 5d 7d 20 7b  me all label]} {
0420: 0a 20 20 20 20 68 64 5f 66 72 61 67 6d 65 6e 74  .    hd_fragment
0430: 20 5b 73 74 72 69 6e 67 20 74 6f 6c 6f 77 65 72   [string tolower
0440: 20 24 61 6c 6c 5d 0a 20 20 20 20 68 64 5f 6b 65   $all].    hd_ke
0450: 79 77 6f 72 64 73 20 24 61 6c 6c 0a 20 20 7d 0a  ywords $all.  }.
0460: 20 20 68 64 5f 70 75 74 73 20 3c 70 3e 3c 62 3e    hd_puts <p><b>
0470: 24 6e 61 6d 65 3c 2f 62 3e 3c 2f 70 3e 0a 20 20  $name</b></p>.  
0480: 72 65 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e 5c  regsub -all "\n\
0490: 5c 73 2a 5c 6e 22 20 24 74 65 78 74 20 22 3c 2f  \s*\n" $text "</
04a0: 70 3e 5c 6e 5c 6e 3c 70 3e 22 20 74 65 78 74 0a  p>\n\n<p>" text.
04b0: 20 20 68 64 5f 72 65 73 6f 6c 76 65 20 3c 62 6c    hd_resolve <bl
04c0: 6f 63 6b 71 75 6f 74 65 3e 3c 70 3e 24 74 65 78  ockquote><p>$tex
04d0: 74 3c 2f 70 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  t</p></blockquot
04e0: 65 3e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20  e>.}.</tcl>..<a 
04f0: 6e 61 6d 65 3d 22 6f 73 63 6f 6e 66 69 67 22 3e  name="osconfig">
0500: 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 31 20 50 6c 61  </a>.<h2>1.1 Pla
0510: 74 66 6f 72 6d 20 43 6f 6e 66 69 67 75 72 61 74  tform Configurat
0520: 69 6f 6e 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a  ion</h2>..<tcl>.
0530: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
0540: 5f 48 41 56 45 5f 53 51 4c 49 54 45 5f 43 4f 4e  _HAVE_SQLITE_CON
0550: 46 49 47 5f 48 7d 20 7b 0a 20 20 49 66 20 74 68  FIG_H} {.  If th
0560: 65 20 5f 48 41 56 45 5f 53 51 4c 49 54 45 5f 43  e _HAVE_SQLITE_C
0570: 4f 4e 46 49 47 5f 48 20 6d 61 63 72 6f 20 69 73  ONFIG_H macro is
0580: 20 64 65 66 69 6e 65 64 0a 20 20 74 68 65 6e 20   defined.  then 
0590: 74 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63  the SQLite sourc
05a0: 65 20 63 6f 64 65 20 77 69 6c 6c 20 61 74 74 65  e code will atte
05b0: 6d 70 74 20 74 6f 20 23 69 6e 63 6c 75 64 65 20  mpt to #include 
05c0: 61 20 66 69 6c 65 20 6e 61 6d 65 64 20 22 63 6f  a file named "co
05d0: 6e 66 69 67 2e 68 22 2e 0a 20 20 54 68 65 20 22  nfig.h"..  The "
05e0: 63 6f 6e 66 69 67 2e 68 22 20 66 69 6c 65 20 75  config.h" file u
05f0: 73 75 61 6c 6c 79 20 63 6f 6e 74 61 69 6e 73 20  sually contains 
0600: 6f 74 68 65 72 20 63 6f 6e 66 69 67 75 72 61 74  other configurat
0610: 69 6f 6e 20 6f 70 74 69 6f 6e 73 2c 20 65 73 70  ion options, esp
0620: 65 63 69 61 6c 6c 79 0a 20 20 22 48 41 56 45 5f  ecially.  "HAVE_
0630: 3c 69 3e 49 4e 54 45 52 46 41 43 45 3c 2f 69 3e  <i>INTERFACE</i>
0640: 22 20 74 79 70 65 20 6f 70 74 69 6f 6e 73 20 67  " type options g
0650: 65 6e 65 72 61 74 65 64 20 62 79 20 61 75 74 6f  enerated by auto
0660: 63 6f 6e 66 20 73 63 72 69 70 74 73 2e 0a 7d 0a  conf scripts..}.
0670: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
0680: 7b 48 41 56 45 5f 46 44 41 54 41 53 59 4e 43 7d  {HAVE_FDATASYNC}
0690: 20 7b 0a 20 20 49 66 20 74 68 65 20 48 41 56 45   {.  If the HAVE
06a0: 5f 46 44 41 54 41 53 59 4e 43 20 63 6f 6d 70 69  _FDATASYNC compi
06b0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
06c0: 73 20 74 72 75 65 2c 20 74 68 65 6e 20 74 68 65  s true, then the
06d0: 20 64 65 66 61 75 6c 74 20 5b 56 46 53 5d 0a 20   default [VFS]. 
06e0: 20 66 6f 72 20 75 6e 69 78 20 73 79 73 74 65 6d   for unix system
06f0: 73 20 77 69 6c 6c 20 61 74 74 65 6d 70 74 20 74  s will attempt t
0700: 6f 20 75 73 65 20 66 64 61 74 61 73 79 6e 63 28  o use fdatasync(
0710: 29 20 69 6e 73 74 65 61 64 20 6f 66 20 66 73 79  ) instead of fsy
0720: 6e 63 28 29 20 77 68 65 72 65 0a 20 20 61 70 70  nc() where.  app
0730: 72 6f 70 72 69 61 74 65 2e 20 20 49 66 20 74 68  ropriate.  If th
0740: 69 73 20 66 6c 61 67 20 69 73 20 6d 69 73 73 69  is flag is missi
0750: 6e 67 20 6f 72 20 66 61 6c 73 65 2c 20 74 68 65  ng or false, the
0760: 6e 20 66 73 79 6e 63 28 29 20 69 73 20 61 6c 77  n fsync() is alw
0770: 61 79 73 20 75 73 65 64 2e 0a 7d 0a 0a 43 4f 4d  ays used..}..COM
0780: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56  PILE_OPTION {HAV
0790: 45 5f 47 4d 54 49 4d 45 5f 52 7d 20 7b 0a 20 20  E_GMTIME_R} {.  
07a0: 49 66 20 74 68 65 20 48 41 56 45 5f 47 4d 54 49  If the HAVE_GMTI
07b0: 4d 45 5f 52 20 6f 70 74 69 6f 6e 20 69 73 20 74  ME_R option is t
07c0: 72 75 65 20 61 6e 64 20 69 66 20 5b 53 51 4c 49  rue and if [SQLI
07d0: 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45  TE_OMIT_DATETIME
07e0: 5f 46 55 4e 43 53 5d 20 69 73 20 74 72 75 65 2c  _FUNCS] is true,
07f0: 0a 20 20 74 68 65 6e 20 74 68 65 20 43 55 52 52  .  then the CURR
0800: 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e  ENT_TIME, CURREN
0810: 54 5f 44 41 54 45 2c 20 61 6e 64 20 43 55 52 52  T_DATE, and CURR
0820: 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 6b 65  ENT_TIMESTAMP ke
0830: 79 77 6f 72 64 73 20 77 69 6c 6c 20 75 73 65 0a  ywords will use.
0840: 20 20 74 68 65 20 74 68 72 65 61 64 73 61 66 65    the threadsafe
0850: 20 22 67 6d 74 69 6d 65 5f 72 28 29 22 20 69 6e   "gmtime_r()" in
0860: 74 65 72 66 61 63 65 20 72 61 74 68 65 72 20 74  terface rather t
0870: 68 61 6e 20 22 67 6d 74 69 6d 65 28 29 22 2e 20  han "gmtime()". 
0880: 20 49 6e 20 74 68 65 20 75 73 75 61 6c 20 63 61   In the usual ca
0890: 73 65 0a 20 20 77 68 65 72 65 20 5b 53 51 4c 49  se.  where [SQLI
08a0: 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45  TE_OMIT_DATETIME
08b0: 5f 46 55 4e 43 53 5d 20 69 73 20 6e 6f 74 20 64  _FUNCS] is not d
08c0: 65 66 69 6e 65 64 20 6f 72 20 69 73 20 66 61 6c  efined or is fal
08d0: 73 65 2c 20 74 68 65 6e 20 74 68 65 0a 20 20 62  se, then the.  b
08e0: 75 69 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e  uilt-in [date an
08f0: 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73  d time functions
0900: 5d 20 61 72 65 20 75 73 65 64 20 74 6f 20 69 6d  ] are used to im
0910: 70 6c 65 6d 65 6e 74 20 74 68 65 20 43 55 52 52  plement the CURR
0920: 45 4e 54 5f 54 49 4d 45 2c 0a 20 20 43 55 52 52  ENT_TIME,.  CURR
0930: 45 4e 54 5f 44 41 54 45 2c 20 61 6e 64 20 43 55  ENT_DATE, and CU
0940: 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20  RRENT_TIMESTAMP 
0950: 6b 65 79 77 6f 72 64 73 20 61 6e 64 20 6e 65 69  keywords and nei
0960: 74 68 65 72 20 67 6d 74 69 6d 65 5f 72 28 29 20  ther gmtime_r() 
0970: 6e 6f 72 0a 20 20 67 6d 74 69 6d 65 28 29 20 69  nor.  gmtime() i
0980: 73 20 65 76 65 72 20 63 61 6c 6c 65 64 2e 0a 7d  s ever called..}
0990: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
09a0: 20 7b 48 41 56 45 5f 49 53 4e 41 4e 7d 20 7b 0a   {HAVE_ISNAN} {.
09b0: 20 20 49 66 20 74 68 65 20 48 41 56 45 5f 49 53    If the HAVE_IS
09c0: 4e 41 4e 20 6f 70 74 69 6f 6e 20 69 73 20 74 72  NAN option is tr
09d0: 75 65 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20  ue, then SQLite 
09e0: 69 6e 76 6f 6b 65 73 20 74 68 65 20 73 79 73 74  invokes the syst
09f0: 65 6d 20 6c 69 62 72 61 72 79 20 69 73 6e 61 6e  em library isnan
0a00: 28 29 0a 20 20 66 75 6e 63 74 69 6f 6e 20 74 6f  ().  function to
0a10: 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 61 20   determine if a 
0a20: 64 6f 75 62 6c 65 2d 70 72 65 63 69 73 69 6f 6e  double-precision
0a30: 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
0a40: 76 61 6c 75 65 20 69 73 20 61 20 4e 61 4e 2e 0a  value is a NaN..
0a50: 20 20 49 66 20 48 41 56 45 5f 49 53 4e 41 4e 20    If HAVE_ISNAN 
0a60: 69 73 20 75 6e 64 65 66 69 6e 65 64 20 6f 72 20  is undefined or 
0a70: 66 61 6c 73 65 2c 20 74 68 65 6e 20 53 51 4c 69  false, then SQLi
0a80: 74 65 20 73 75 62 73 74 69 74 75 74 65 73 20 69  te substitutes i
0a90: 74 73 20 6f 77 6e 20 68 6f 6d 65 2d 67 72 6f 77  ts own home-grow
0aa0: 6e 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  n.  implementati
0ab0: 6f 6e 20 6f 66 20 69 73 6e 61 6e 28 29 2e 0a 7d  on of isnan()..}
0ac0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
0ad0: 20 7b 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45   {HAVE_LOCALTIME
0ae0: 5f 52 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48  _R} {.  If the H
0af0: 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f 52 20  AVE_LOCALTIME_R 
0b00: 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20  option is true, 
0b10: 74 68 65 6e 20 53 51 4c 69 74 65 20 75 73 65 73  then SQLite uses
0b20: 20 74 68 65 20 74 68 72 65 61 64 73 61 66 65 0a   the threadsafe.
0b30: 20 20 6c 6f 63 61 6c 74 69 6d 65 5f 72 28 29 20    localtime_r() 
0b40: 6c 69 62 72 61 72 79 20 72 6f 75 74 69 6e 65 20  library routine 
0b50: 69 6e 73 74 65 61 64 20 6f 66 20 6c 6f 63 61 6c  instead of local
0b60: 74 69 6d 65 28 29 0a 20 20 74 6f 20 68 65 6c 70  time().  to help
0b70: 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 5b   implement the [
0b80: 6c 6f 63 61 6c 74 69 6d 65 20 6d 6f 64 69 66 69  localtime modifi
0b90: 65 72 5d 0a 20 20 74 6f 20 74 68 65 20 62 75 69  er].  to the bui
0ba0: 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e 64 20  lt-in [date and 
0bb0: 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d 2e  time functions].
0bc0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
0bd0: 4f 4e 20 7b 48 41 56 45 5f 4c 4f 43 41 4c 54 49  ON {HAVE_LOCALTI
0be0: 4d 45 5f 53 7d 20 7b 0a 20 20 49 66 20 74 68 65  ME_S} {.  If the
0bf0: 20 48 41 56 45 5f 4c 4f 43 41 4c 54 49 4d 45 5f   HAVE_LOCALTIME_
0c00: 53 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65  S option is true
0c10: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 75 73  , then SQLite us
0c20: 65 73 20 74 68 65 20 74 68 72 65 61 64 73 61 66  es the threadsaf
0c30: 65 0a 20 20 6c 6f 63 61 6c 74 69 6d 65 5f 73 28  e.  localtime_s(
0c40: 29 20 6c 69 62 72 61 72 79 20 72 6f 75 74 69 6e  ) library routin
0c50: 65 20 69 6e 73 74 65 61 64 20 6f 66 20 6c 6f 63  e instead of loc
0c60: 61 6c 74 69 6d 65 28 29 0a 20 20 74 6f 20 68 65  altime().  to he
0c70: 6c 70 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65  lp implement the
0c80: 20 5b 6c 6f 63 61 6c 74 69 6d 65 20 6d 6f 64 69   [localtime modi
0c90: 66 69 65 72 5d 0a 20 20 74 6f 20 74 68 65 20 62  fier].  to the b
0ca0: 75 69 6c 74 2d 69 6e 20 5b 64 61 74 65 20 61 6e  uilt-in [date an
0cb0: 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73  d time functions
0cc0: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
0cd0: 54 49 4f 4e 20 7b 48 41 56 45 5f 4d 41 4c 4c 4f  TION {HAVE_MALLO
0ce0: 43 5f 55 53 41 42 4c 45 5f 53 49 5a 45 7d 20 7b  C_USABLE_SIZE} {
0cf0: 0a 20 20 49 66 20 74 68 65 20 48 41 56 45 5f 4d  .  If the HAVE_M
0d00: 41 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f 53 49 5a  ALLOC_USABLE_SIZ
0d10: 45 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65  E option is true
0d20: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 74 72  , then SQLite tr
0d30: 69 65 73 20 75 73 65 73 20 74 68 65 0a 20 20 6d  ies uses the.  m
0d40: 61 6c 6c 6f 63 5f 75 73 61 62 6c 65 5f 73 69 7a  alloc_usable_siz
0d50: 65 28 29 20 69 6e 74 65 72 66 61 63 65 20 74 6f  e() interface to
0d60: 20 66 69 6e 64 20 74 68 65 20 73 69 7a 65 20 6f   find the size o
0d70: 66 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  f a memory alloc
0d80: 61 74 69 6f 6e 20 6f 62 74 61 69 6e 65 64 0a 20  ation obtained. 
0d90: 20 66 72 6f 6d 20 74 68 65 20 73 74 61 6e 64 61   from the standa
0da0: 72 64 2d 6c 69 62 72 61 72 79 20 6d 61 6c 6c 6f  rd-library mallo
0db0: 63 28 29 20 6f 72 20 72 65 61 6c 6c 6f 63 28 29  c() or realloc()
0dc0: 20 72 6f 75 74 69 6e 65 73 2e 20 20 54 68 69 73   routines.  This
0dd0: 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 0a   option is only.
0de0: 20 20 61 70 70 6c 69 63 61 62 6c 65 20 69 66 20    applicable if 
0df0: 74 68 65 20 73 74 61 6e 64 61 72 64 2d 6c 69 62  the standard-lib
0e00: 72 61 72 79 20 6d 61 6c 6c 6f 63 28 29 20 69 73  rary malloc() is
0e10: 20 75 73 65 64 2e 20 20 4f 6e 20 41 70 70 6c 79   used.  On Apply
0e20: 20 73 79 73 74 65 6d 73 2c 0a 20 20 22 7a 6f 6e   systems,.  "zon
0e30: 65 20 6d 61 6c 6c 6f 63 22 20 69 73 20 75 73 65  e malloc" is use
0e40: 64 20 69 6e 73 74 65 61 64 2c 20 61 6e 64 20 73  d instead, and s
0e50: 6f 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  o this option is
0e60: 20 6e 6f 74 20 61 70 70 6c 69 63 61 62 6c 65 2e   not applicable.
0e70: 20 20 41 6e 64 2c 20 6f 66 0a 20 20 63 6f 75 72    And, of.  cour
0e80: 73 65 2c 20 69 66 20 74 68 65 20 61 70 70 6c 69  se, if the appli
0e90: 63 61 74 69 6f 6e 20 73 75 70 70 6c 69 65 73 20  cation supplies 
0ea0: 69 74 73 20 6f 77 6e 20 6d 61 6c 6c 6f 63 20 69  its own malloc i
0eb0: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 75 73  mplementation us
0ec0: 69 6e 67 0a 20 20 5b 53 51 4c 49 54 45 5f 43 4f  ing.  [SQLITE_CO
0ed0: 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 20 74 68 65  NFIG_MALLOC] the
0ee0: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 68 61  n this option ha
0ef0: 73 20 6e 6f 20 65 66 66 65 63 74 2e 0a 20 20 3c  s no effect..  <
0f00: 70 3e 0a 20 20 49 66 20 74 68 65 20 48 41 56 45  p>.  If the HAVE
0f10: 5f 4d 41 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f 53  _MALLOC_USABLE_S
0f20: 49 5a 45 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6d  IZE option is om
0f30: 69 74 74 65 64 20 6f 72 20 69 73 20 66 61 6c 73  itted or is fals
0f40: 65 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 0a  e, then SQLite .
0f50: 20 20 75 73 65 73 20 61 20 77 72 61 70 70 65 72    uses a wrapper
0f60: 20 61 72 6f 75 6e 64 20 73 79 73 74 65 6d 20 6d   around system m
0f70: 61 6c 6c 6f 63 28 29 20 61 6e 64 20 72 65 61 6c  alloc() and real
0f80: 6c 6f 63 28 29 20 74 68 61 74 20 65 6e 6c 61 72  loc() that enlar
0f90: 67 65 73 20 65 61 63 68 20 61 6c 6c 6f 63 61 74  ges each allocat
0fa0: 69 6f 6e 0a 20 20 62 79 20 38 20 62 79 74 65 73  ion.  by 8 bytes
0fb0: 20 61 6e 64 20 77 72 69 74 65 73 20 74 68 65 20   and writes the 
0fc0: 73 69 7a 65 20 6f 66 20 74 68 65 20 61 6c 6c 6f  size of the allo
0fd0: 63 61 74 69 6f 6e 20 69 6e 20 74 68 65 20 69 6e  cation in the in
0fe0: 69 74 69 61 6c 20 38 20 62 79 74 65 73 2c 20 61  itial 8 bytes, a
0ff0: 6e 64 0a 20 20 74 68 65 6e 20 53 51 4c 69 74 65  nd.  then SQLite
1000: 20 61 6c 73 6f 20 69 6d 70 6c 65 6d 65 6e 74 73   also implements
1010: 20 69 74 73 20 6f 77 6e 20 68 6f 6d 65 2d 67 72   its own home-gr
1020: 6f 77 6e 20 76 65 72 73 69 6f 6e 20 6f 66 20 6d  own version of m
1030: 61 6c 6c 6f 63 5f 75 73 61 62 6c 65 5f 73 69 7a  alloc_usable_siz
1040: 65 28 29 0a 20 20 74 68 61 74 20 63 6f 6e 73 75  e().  that consu
1050: 6c 74 73 20 74 68 61 74 20 38 2d 62 79 74 65 20  lts that 8-byte 
1060: 70 72 65 66 69 78 20 74 6f 20 66 69 6e 64 20 74  prefix to find t
1070: 68 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69  he allocation si
1080: 7a 65 2e 20 20 54 68 69 73 20 61 70 70 72 6f 61  ze.  This approa
1090: 63 68 0a 20 20 77 6f 72 6b 73 20 62 75 74 20 69  ch.  works but i
10a0: 74 20 69 73 20 73 75 62 6f 70 74 69 6d 61 6c 2e  t is suboptimal.
10b0: 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 61    Applications a
10c0: 72 65 20 65 6e 63 6f 75 72 61 67 65 64 20 74 6f  re encouraged to
10d0: 20 75 73 65 0a 20 20 48 41 56 45 5f 4d 41 4c 4c   use.  HAVE_MALL
10e0: 4f 43 5f 55 53 41 42 4c 45 5f 53 49 5a 45 20 77  OC_USABLE_SIZE w
10f0: 68 65 6e 65 76 65 72 20 70 6f 73 73 69 62 6c 65  henever possible
1100: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
1110: 49 4f 4e 20 7b 48 41 56 45 5f 53 54 52 43 48 52  ION {HAVE_STRCHR
1120: 4e 55 4c 7d 20 7b 0a 20 20 49 66 20 74 68 65 20  NUL} {.  If the 
1130: 48 41 56 45 5f 53 54 52 43 48 52 4e 55 4c 20 6f  HAVE_STRCHRNUL o
1140: 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20 74  ption is true, t
1150: 68 65 6e 20 53 51 4c 69 74 65 20 75 73 65 73 20  hen SQLite uses 
1160: 74 68 65 20 73 74 72 63 68 72 6e 75 6c 28 29 20  the strchrnul() 
1170: 6c 69 62 72 61 72 79 0a 20 20 66 75 6e 63 74 69  library.  functi
1180: 6f 6e 2e 20 20 49 66 20 74 68 69 73 20 6f 70 74  on.  If this opt
1190: 69 6f 6e 20 69 73 20 6d 69 73 73 69 6e 67 20 6f  ion is missing o
11a0: 72 20 66 61 6c 73 65 2c 20 74 68 65 6e 20 53 51  r false, then SQ
11b0: 4c 69 74 65 20 73 75 62 73 74 69 74 75 74 65 73  Lite substitutes
11c0: 20 69 74 73 20 6f 77 6e 0a 20 20 68 6f 6d 65 2d   its own.  home-
11d0: 67 72 6f 77 6e 20 69 6d 70 6c 65 6d 65 6e 74 61  grown implementa
11e0: 74 69 6f 6e 20 6f 66 20 73 74 72 63 68 72 6e 75  tion of strchrnu
11f0: 6c 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  l()..}..COMPILE_
1200: 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f 55 53 4c  OPTION {HAVE_USL
1210: 45 45 50 7d 20 7b 0a 20 20 49 66 20 74 68 65 20  EEP} {.  If the 
1220: 48 41 56 45 5f 55 53 4c 45 45 50 20 6f 70 74 69  HAVE_USLEEP opti
1230: 6f 6e 20 69 73 20 74 72 75 65 2c 20 74 68 65 6e  on is true, then
1240: 20 74 68 65 20 64 65 66 61 75 6c 74 20 75 6e 69   the default uni
1250: 78 20 56 46 53 20 75 73 65 73 20 74 68 65 0a 20  x VFS uses the. 
1260: 20 75 73 6c 65 65 70 28 29 20 73 79 73 74 65 6d   usleep() system
1270: 20 63 61 6c 6c 20 74 6f 20 69 6d 70 6c 65 6d 65   call to impleme
1280: 6e 74 20 74 68 65 20 78 53 6c 65 65 70 20 6d 65  nt the xSleep me
1290: 74 68 6f 64 2e 20 20 49 66 20 74 68 69 73 20 6f  thod.  If this o
12a0: 70 74 69 6f 6e 20 69 73 0a 20 20 75 6e 64 65 66  ption is.  undef
12b0: 69 6e 65 64 20 6f 72 20 66 61 6c 73 65 2c 20 74  ined or false, t
12c0: 68 65 6e 20 78 53 6c 65 65 70 20 6f 6e 20 75 6e  hen xSleep on un
12d0: 69 78 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65  ix is implemente
12e0: 64 20 75 73 69 6e 67 20 73 6c 65 65 70 28 29 20  d using sleep() 
12f0: 77 68 69 63 68 0a 20 20 6d 65 61 6e 73 20 74 68  which.  means th
1300: 61 74 20 5b 73 71 6c 69 74 65 33 5f 73 6c 65 65  at [sqlite3_slee
1310: 70 28 29 5d 20 77 69 6c 6c 20 68 61 76 65 20 61  p()] will have a
1320: 20 6d 69 6e 69 6d 75 6d 20 77 61 69 74 20 69 6e   minimum wait in
1330: 74 65 72 76 61 6c 20 6f 66 20 31 30 30 30 0a 20  terval of 1000. 
1340: 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 72 65   milliseconds re
1350: 67 61 72 64 6c 65 73 73 20 6f 66 20 69 74 73 20  gardless of its 
1360: 61 72 67 75 6d 65 6e 74 2e 20 20 0a 7d 0a 0a 43  argument.  .}..C
1370: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48  OMPILE_OPTION {H
1380: 41 56 45 5f 55 54 49 4d 45 7d 20 7b 0a 20 20 49  AVE_UTIME} {.  I
1390: 66 20 74 68 65 20 48 41 56 45 5f 55 54 49 4d 45  f the HAVE_UTIME
13a0: 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c   option is true,
13b0: 20 74 68 65 6e 20 74 68 65 20 62 75 69 6c 74 2d   then the built-
13c0: 69 6e 20 62 75 74 20 6e 6f 6e 2d 73 74 61 6e 64  in but non-stand
13d0: 61 72 64 0a 20 20 22 75 6e 69 78 2d 64 6f 74 66  ard.  "unix-dotf
13e0: 69 6c 65 22 20 56 46 53 20 77 69 6c 6c 20 75 73  ile" VFS will us
13f0: 65 20 74 68 65 20 75 74 69 6d 65 28 29 20 73 79  e the utime() sy
1400: 73 74 65 6d 20 63 61 6c 6c 2c 20 69 6e 73 74 65  stem call, inste
1410: 61 64 20 6f 66 20 75 74 69 6d 65 73 28 29 2c 0a  ad of utimes(),.
1420: 20 20 74 6f 20 73 65 74 20 74 68 65 20 6c 61 73    to set the las
1430: 74 20 61 63 63 65 73 73 20 74 69 6d 65 20 6f 6e  t access time on
1440: 20 74 68 65 20 6c 6f 63 6b 20 66 69 6c 65 2e 0a   the lock file..
1450: 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d  }.</tcl>..<a nam
1460: 65 3d 22 64 65 66 61 75 6c 74 73 22 3e 3c 2f 61  e="defaults"></a
1470: 3e 0a 3c 68 32 3e 31 2e 32 20 4f 70 74 69 6f 6e  >.<h2>1.2 Option
1480: 73 20 54 6f 20 53 65 74 20 44 65 66 61 75 6c 74  s To Set Default
1490: 20 50 61 72 61 6d 65 74 65 72 20 56 61 6c 75 65   Parameter Value
14a0: 73 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 0a 43  s</h2>..<tcl>..C
14b0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
14c0: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 41 55  QLITE_DEFAULT_AU
14d0: 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58 3d 3c 69  TOMATIC_INDEX=<i
14e0: 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c  >&lt;0 or 1&gt;<
14f0: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
1500: 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 74  cro determines t
1510: 68 65 20 69 6e 69 74 69 61 6c 20 73 65 74 74 69  he initial setti
1520: 6e 67 20 66 6f 72 20 5b 50 52 41 47 4d 41 20 61  ng for [PRAGMA a
1530: 75 74 6f 6d 61 74 69 63 5f 69 6e 64 65 78 5d 0a  utomatic_index].
1540: 20 20 66 6f 72 20 6e 65 77 6c 79 20 6f 70 65 6e    for newly open
1550: 65 64 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  ed [database con
1560: 6e 65 63 74 69 6f 6e 73 5d 2e 0a 20 20 46 6f 72  nections]..  For
1570: 20 61 6c 6c 20 76 65 72 73 69 6f 6e 73 20 6f 66   all versions of
1580: 20 53 51 4c 69 74 65 20 74 68 72 6f 75 67 68 20   SQLite through 
1590: 33 2e 37 2e 31 37 2c 0a 20 20 61 75 74 6f 6d 61  3.7.17,.  automa
15a0: 74 69 63 20 69 6e 64 69 63 65 73 20 61 72 65 20  tic indices are 
15b0: 6e 6f 72 6d 61 6c 6c 79 20 65 6e 61 62 6c 65 64  normally enabled
15c0: 20 66 6f 72 20 6e 65 77 20 64 61 74 61 62 61 73   for new databas
15d0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 69 66  e connections if
15e0: 0a 20 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d  .  this compile-
15f0: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 6f  time option is o
1600: 6d 69 74 74 65 64 2e 0a 20 20 48 6f 77 65 76 65  mitted..  Howeve
1610: 72 2c 20 74 68 61 74 20 6d 69 67 68 74 20 63 68  r, that might ch
1620: 61 6e 67 65 20 69 6e 20 66 75 74 75 72 65 20 72  ange in future r
1630: 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74  eleases of SQLit
1640: 65 2e 0a 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f  e..  <p>See also
1650: 3a 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  : [SQLITE_OMIT_A
1660: 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58 5d 0a  UTOMATIC_INDEX].
1670: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
1680: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
1690: 54 5f 41 55 54 4f 56 41 43 55 55 4d 3d 3c 69 3e  T_AUTOVACUUM=<i>
16a0: 26 6c 74 3b 30 20 6f 72 20 31 20 6f 72 20 32 26  &lt;0 or 1 or 2&
16b0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
16c0: 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e  s macro determin
16d0: 65 73 20 69 66 20 53 51 4c 69 74 65 20 63 72 65  es if SQLite cre
16e0: 61 74 65 73 20 64 61 74 61 62 61 73 65 73 20 77  ates databases w
16f0: 69 74 68 20 74 68 65 20 0a 20 20 5b 61 75 74 6f  ith the .  [auto
1700: 5f 76 61 63 75 75 6d 5d 20 66 6c 61 67 20 73 65  _vacuum] flag se
1710: 74 20 62 79 20 64 65 66 61 75 6c 74 20 74 6f 20  t by default to 
1720: 4f 46 46 20 28 30 29 2c 20 46 55 4c 4c 20 28 31  OFF (0), FULL (1
1730: 29 2c 20 6f 72 0a 20 20 49 4e 43 52 45 4d 45 4e  ), or.  INCREMEN
1740: 54 41 4c 20 28 32 29 2e 20 54 68 65 20 64 65 66  TAL (2). The def
1750: 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 30 20  ault value is 0 
1760: 6d 65 61 6e 69 6e 67 20 74 68 61 74 20 64 61 74  meaning that dat
1770: 61 62 61 73 65 73 0a 20 20 61 72 65 20 63 72 65  abases.  are cre
1780: 61 74 65 64 20 77 69 74 68 20 61 75 74 6f 2d 76  ated with auto-v
1790: 61 63 75 75 6d 20 74 75 72 6e 65 64 20 6f 66 66  acuum turned off
17a0: 2e 0a 20 20 49 6e 20 61 6e 79 20 63 61 73 65 20  ..  In any case 
17b0: 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  the compile-time
17c0: 20 64 65 66 61 75 6c 74 20 6d 61 79 20 62 65 20   default may be 
17d0: 6f 76 65 72 72 69 64 64 65 6e 20 62 79 20 74 68  overridden by th
17e0: 65 20 0a 20 20 5b 50 52 41 47 4d 41 20 61 75 74  e .  [PRAGMA aut
17f0: 6f 5f 76 61 63 75 75 6d 5d 20 63 6f 6d 6d 61 6e  o_vacuum] comman
1800: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
1810: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
1820: 41 55 4c 54 5f 43 41 43 48 45 5f 53 49 5a 45 3d  AULT_CACHE_SIZE=
1830: 3c 69 3e 26 6c 74 3b 70 61 67 65 73 26 67 74 3b  <i>&lt;pages&gt;
1840: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d  </i>} {.  This m
1850: 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 64 65  acro sets the de
1860: 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 74 68  fault size of th
1870: 65 20 70 61 67 65 2d 63 61 63 68 65 20 66 6f 72  e page-cache for
1880: 20 65 61 63 68 20 61 74 74 61 63 68 65 64 0a 20   each attached. 
1890: 20 64 61 74 61 62 61 73 65 2c 20 69 6e 20 70 61   database, in pa
18a0: 67 65 73 2e 20 54 68 69 73 20 63 61 6e 20 62 65  ges. This can be
18b0: 20 6f 76 65 72 72 69 64 64 65 6e 20 62 79 20 74   overridden by t
18c0: 68 65 20 0a 20 20 5b 50 52 41 47 4d 41 20 63 61  he .  [PRAGMA ca
18d0: 63 68 65 5f 73 69 7a 65 5d 20 63 6f 6d 6d 61 6e  che_size] comman
18e0: 64 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 76  d. The default v
18f0: 61 6c 75 65 20 69 73 20 32 30 30 30 2e 0a 7d 0a  alue is 2000..}.
1900: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
1910: 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  {SQLITE_DEFAULT_
1920: 46 49 4c 45 5f 46 4f 52 4d 41 54 3d 3c 69 3e 26  FILE_FORMAT=<i>&
1930: 6c 74 3b 31 20 6f 72 20 34 26 67 74 3b 3c 2f 69  lt;1 or 4&gt;</i
1940: 3e 7d 20 7b 0a 20 20 54 68 65 20 64 65 66 61 75  >} {.  The defau
1950: 6c 74 20 5b 73 63 68 65 6d 61 20 66 6f 72 6d 61  lt [schema forma
1960: 74 20 6e 75 6d 62 65 72 5d 20 75 73 65 64 20 62  t number] used b
1970: 79 20 53 51 4c 69 74 65 20 77 68 65 6e 20 63 72  y SQLite when cr
1980: 65 61 74 69 6e 67 0a 20 20 6e 65 77 20 64 61 74  eating.  new dat
1990: 61 62 61 73 65 20 66 69 6c 65 73 20 69 73 20 73  abase files is s
19a0: 65 74 20 62 79 20 74 68 69 73 20 6d 61 63 72 6f  et by this macro
19b0: 2e 20 20 54 68 65 20 73 63 68 65 6d 61 20 66 6f  .  The schema fo
19c0: 72 6d 61 74 73 20 61 72 65 20 61 6c 6c 0a 20 20  rmats are all.  
19d0: 76 65 72 79 20 73 69 6d 69 6c 61 72 2e 20 20 54  very similar.  T
19e0: 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 62 65  he difference be
19f0: 74 77 65 65 6e 20 66 6f 72 6d 61 74 73 20 31 20  tween formats 1 
1a00: 61 6e 64 20 34 20 69 73 20 74 68 61 74 20 66 6f  and 4 is that fo
1a10: 72 6d 61 74 0a 20 20 34 20 75 6e 64 65 72 73 74  rmat.  4 underst
1a20: 61 6e 64 73 20 5b 64 65 73 63 65 6e 64 69 6e 67  ands [descending
1a30: 20 69 6e 64 69 63 65 73 5d 20 61 6e 64 20 68 61   indices] and ha
1a40: 73 20 61 20 74 69 67 68 74 65 72 20 65 6e 63 6f  s a tighter enco
1a50: 64 69 6e 67 20 66 6f 72 0a 20 20 62 6f 6f 6c 65  ding for.  boole
1a60: 61 6e 20 76 61 6c 75 65 73 2e 0a 0a 20 20 41 6c  an values...  Al
1a70: 6c 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  l versions of SQ
1a80: 4c 69 74 65 20 73 69 6e 63 65 20 33 2e 33 2e 30  Lite since 3.3.0
1a90: 20 28 32 30 30 36 2d 30 31 2d 31 30 29 0a 20 20   (2006-01-10).  
1aa0: 63 61 6e 20 72 65 61 64 20 61 6e 64 20 77 72 69  can read and wri
1ab0: 74 65 20 61 6e 79 20 73 63 68 65 6d 61 20 66 6f  te any schema fo
1ac0: 72 6d 61 74 0a 20 20 62 65 74 77 65 65 6e 20 31  rmat.  between 1
1ad0: 20 61 6e 64 20 34 2e 20 20 42 75 74 20 6f 6c 64   and 4.  But old
1ae0: 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  er versions of S
1af0: 51 4c 69 74 65 20 6d 69 67 68 74 20 6e 6f 74 20  QLite might not 
1b00: 62 65 20 61 62 6c 65 20 74 6f 0a 20 20 72 65 61  be able to.  rea
1b10: 64 20 66 6f 72 6d 61 74 73 20 67 72 65 61 74 65  d formats greate
1b20: 72 20 74 68 61 6e 20 31 2e 20 20 53 6f 20 74 68  r than 1.  So th
1b30: 61 74 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e  at older version
1b40: 73 20 6f 66 20 53 51 4c 69 74 65 20 77 69 6c 6c  s of SQLite will
1b50: 0a 20 20 62 65 20 61 62 6c 65 20 74 6f 20 72 65  .  be able to re
1b60: 61 64 20 61 6e 64 20 77 72 69 74 65 20 64 61 74  ad and write dat
1b70: 61 62 61 73 65 20 66 69 6c 65 73 20 63 72 65 61  abase files crea
1b80: 74 65 64 20 62 79 20 6e 65 77 65 72 20 76 65 72  ted by newer ver
1b90: 73 69 6f 6e 73 0a 20 20 6f 66 20 53 51 4c 69 74  sions.  of SQLit
1ba0: 65 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 73  e, the default s
1bb0: 63 68 65 6d 61 20 66 6f 72 6d 61 74 20 77 61 73  chema format was
1bc0: 20 73 65 74 20 74 6f 20 31 20 66 6f 72 20 53 51   set to 1 for SQ
1bd0: 4c 69 74 65 20 76 65 72 73 69 6f 6e 73 0a 20 20  Lite versions.  
1be0: 74 68 72 6f 75 67 68 20 33 2e 37 2e 39 20 28 32  through 3.7.9 (2
1bf0: 30 31 31 2d 31 31 2d 30 31 29 2e 20 20 42 65 67  011-11-01).  Beg
1c00: 69 6e 6e 69 6e 67 20 77 69 74 68 20 76 65 72 73  inning with vers
1c10: 69 6f 6e 20 33 2e 37 2e 31 30 2c 20 74 68 65 20  ion 3.7.10, the 
1c20: 64 65 66 61 75 6c 74 0a 20 20 73 63 68 65 6d 61  default.  schema
1c30: 20 66 6f 72 6d 61 74 20 69 73 20 34 2e 0a 0a 20   format is 4... 
1c40: 20 54 68 65 20 73 63 68 65 6d 61 20 66 6f 72 6d   The schema form
1c50: 61 74 20 6e 75 6d 62 65 72 20 66 6f 72 20 61 20  at number for a 
1c60: 6e 65 77 20 64 61 74 61 62 61 73 65 20 63 61 6e  new database can
1c70: 20 62 65 20 73 65 74 20 61 74 20 72 75 6e 74 69   be set at runti
1c80: 6d 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20 5b  me using.  the [
1c90: 50 52 41 47 4d 41 20 6c 65 67 61 63 79 5f 66 69  PRAGMA legacy_fi
1ca0: 6c 65 5f 66 6f 72 6d 61 74 5d 20 63 6f 6d 6d 61  le_format] comma
1cb0: 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  nd..}..COMPILE_O
1cc0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
1cd0: 46 41 55 4c 54 5f 46 49 4c 45 5f 50 45 52 4d 49  FAULT_FILE_PERMI
1ce0: 53 53 49 4f 4e 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d  SSIONS=<i>N</i>}
1cf0: 20 7b 0a 20 20 54 68 65 20 64 65 66 61 75 6c 74   {.  The default
1d00: 20 6e 75 6d 65 72 69 63 20 66 69 6c 65 20 70 65   numeric file pe
1d10: 72 6d 69 73 73 69 6f 6e 73 20 66 6f 72 20 6e 65  rmissions for ne
1d20: 77 6c 79 20 63 72 65 61 74 65 64 20 64 61 74 61  wly created data
1d30: 62 61 73 65 20 66 69 6c 65 73 0a 20 20 75 6e 64  base files.  und
1d40: 65 72 20 75 6e 69 78 2e 20 20 49 66 20 6e 6f 74  er unix.  If not
1d50: 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 20   specified, the 
1d60: 64 65 66 61 75 6c 74 20 69 73 20 30 36 34 34 20  default is 0644 
1d70: 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68 61 74  which means that
1d80: 0a 20 20 74 68 65 20 66 69 6c 65 73 20 69 73 20  .  the files is 
1d90: 67 6c 6f 62 61 6c 6c 79 20 72 65 61 64 61 62 6c  globally readabl
1da0: 65 20 62 75 74 20 6f 6e 6c 79 20 77 72 69 74 61  e but only writa
1db0: 62 6c 65 20 62 79 20 74 68 65 20 63 72 65 61 74  ble by the creat
1dc0: 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  or..}..COMPILE_O
1dd0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
1de0: 46 41 55 4c 54 5f 46 4f 52 45 49 47 4e 5f 4b 45  FAULT_FOREIGN_KE
1df0: 59 53 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31  YS=<i>&lt;0 or 1
1e00: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
1e10: 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69  is macro determi
1e20: 6e 65 73 20 77 68 65 74 68 65 72 20 65 6e 66 6f  nes whether enfo
1e30: 72 63 65 6d 65 6e 74 20 6f 66 20 0a 20 20 5b 66  rcement of .  [f
1e40: 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74  oreign key const
1e50: 72 61 69 6e 74 73 5d 20 69 73 20 65 6e 61 62 6c  raints] is enabl
1e60: 65 64 20 6f 72 20 64 69 73 61 62 6c 65 64 20 62  ed or disabled b
1e70: 79 20 64 65 66 61 75 6c 74 20 66 6f 72 0a 20 20  y default for.  
1e80: 6e 65 77 20 64 61 74 61 62 61 73 65 20 63 6f 6e  new database con
1e90: 6e 65 63 74 69 6f 6e 73 2e 20 20 45 61 63 68 20  nections.  Each 
1ea0: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1eb0: 69 6f 6e 20 63 61 6e 20 61 6c 77 61 79 73 20 74  ion can always t
1ec0: 75 72 6e 0a 20 20 65 6e 66 6f 72 63 65 6d 65 6e  urn.  enforcemen
1ed0: 74 20 6f 66 20 66 6f 72 65 69 67 6e 20 6b 65 79  t of foreign key
1ee0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 6f 6e 20   constraints on 
1ef0: 61 6e 64 20 6f 66 66 20 61 6e 64 20 72 75 6e 2d  and off and run-
1f00: 74 69 6d 65 20 75 73 69 6e 67 0a 20 20 74 68 65  time using.  the
1f10: 20 5b 66 6f 72 65 69 67 6e 5f 6b 65 79 73 20 70   [foreign_keys p
1f20: 72 61 67 6d 61 5d 2e 20 20 45 6e 66 6f 72 63 65  ragma].  Enforce
1f30: 6d 65 6e 74 20 6f 66 20 66 6f 72 65 69 67 6e 20  ment of foreign 
1f40: 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 0a  key constraints.
1f50: 20 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 6f 66    is normally of
1f60: 66 20 62 79 20 64 65 66 61 75 6c 74 2c 20 62 75  f by default, bu
1f70: 74 20 69 66 20 74 68 69 73 20 63 6f 6d 70 69 6c  t if this compil
1f80: 65 2d 74 69 6d 65 20 70 61 72 61 6d 65 74 65 72  e-time parameter
1f90: 20 69 73 0a 20 20 73 65 74 20 74 6f 20 31 2c 20   is.  set to 1, 
1fa0: 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20 66  enforcement of f
1fb0: 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74  oreign key const
1fc0: 72 61 69 6e 74 73 20 77 69 6c 6c 20 62 65 20 6f  raints will be o
1fd0: 6e 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a  n by default..}.
1fe0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
1ff0: 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  {SQLITE_DEFAULT_
2000: 4d 4d 41 50 5f 53 49 5a 45 3d 3c 69 3e 4e 3c 2f  MMAP_SIZE=<i>N</
2010: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63  i>} {.  This mac
2020: 72 6f 20 73 65 74 73 20 74 68 65 20 64 65 66 61  ro sets the defa
2030: 75 6c 74 20 6c 69 6d 69 74 20 6f 6e 20 74 68 65  ult limit on the
2040: 20 61 6d 6f 75 6e 74 20 6f 66 20 6d 65 6d 6f 72   amount of memor
2050: 79 20 74 68 61 74 0a 20 20 77 69 6c 6c 20 62 65  y that.  will be
2060: 20 75 73 65 64 20 66 6f 72 20 6d 65 6d 6f 72 79   used for memory
2070: 2d 6d 61 70 70 65 64 20 49 2f 4f 0a 20 20 66 6f  -mapped I/O.  fo
2080: 72 20 65 61 63 68 20 6f 70 65 6e 20 64 61 74 61  r each open data
2090: 62 61 73 65 20 66 69 6c 65 2e 20 20 49 66 20 74  base file.  If t
20a0: 68 65 20 3c 69 3e 4e 3c 2f 69 3e 0a 20 20 69 73  he <i>N</i>.  is
20b0: 20 7a 65 72 6f 2c 20 74 68 65 6e 20 6d 65 6d 6f   zero, then memo
20c0: 72 79 20 6d 61 70 70 65 64 20 49 2f 4f 20 69 73  ry mapped I/O is
20d0: 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66   disabled by def
20e0: 61 75 6c 74 2e 20 20 54 68 69 73 0a 20 20 63 6f  ault.  This.  co
20f0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6c 69 6d 69 74  mpile-time limit
2100: 20 61 6e 64 20 74 68 65 20 5b 53 51 4c 49 54 45   and the [SQLITE
2110: 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20  _MAX_MMAP_SIZE] 
2120: 63 61 6e 20 62 65 20 6d 6f 64 69 66 69 65 64 20  can be modified 
2130: 0a 20 20 61 74 20 73 74 61 72 74 2d 74 69 6d 65  .  at start-time
2140: 20 75 73 69 6e 67 20 74 68 65 0a 20 20 5b 73 71   using the.  [sq
2150: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53  lite3_config]([S
2160: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41  QLITE_CONFIG_MMA
2170: 50 5f 53 49 5a 45 5d 29 20 63 61 6c 6c 2c 20 6f  P_SIZE]) call, o
2180: 72 20 61 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20  r at run-time.  
2190: 75 73 69 6e 67 20 74 68 65 20 5b 6d 6d 61 70 5f  using the [mmap_
21a0: 73 69 7a 65 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a  size pragma]..}.
21b0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
21c0: 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  {SQLITE_DEFAULT_
21d0: 4a 4f 55 52 4e 41 4c 5f 53 49 5a 45 5f 4c 49 4d  JOURNAL_SIZE_LIM
21e0: 49 54 3d 3c 69 3e 26 6c 74 3b 62 79 74 65 73 26  IT=<i>&lt;bytes&
21f0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
2200: 73 20 6f 70 74 69 6f 6e 20 73 65 74 73 20 74 68  s option sets th
2210: 65 20 73 69 7a 65 20 6c 69 6d 69 74 20 6f 6e 20  e size limit on 
2220: 5b 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61  [rollback journa
2230: 6c 5d 20 66 69 6c 65 73 20 69 6e 0a 20 20 5b 6a  l] files in.  [j
2240: 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20 70 72 61 67  ournal_mode prag
2250: 6d 61 20 7c 20 70 65 72 73 69 73 74 65 6e 74 20  ma | persistent 
2260: 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 5d 20 61 6e  journal mode] an
2270: 64 0a 20 20 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f 64  d.  [locking_mod
2280: 65 20 7c 20 65 78 63 6c 75 73 69 76 65 20 6c 6f  e | exclusive lo
2290: 63 6b 69 6e 67 20 6d 6f 64 65 5d 20 61 6e 64 20  cking mode] and 
22a0: 6f 6e 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  on the size of t
22b0: 68 65 0a 20 20 77 72 69 74 65 2d 61 68 65 61 64  he.  write-ahead
22c0: 20 6c 6f 67 20 66 69 6c 65 20 69 6e 20 5b 57 41   log file in [WA
22d0: 4c 20 6d 6f 64 65 5d 2e 20 57 68 65 6e 20 74 68  L mode]. When th
22e0: 69 73 20 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69  is .  compile-ti
22f0: 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6d 69  me option is omi
2300: 74 74 65 64 20 74 68 65 72 65 20 69 73 20 6e 6f  tted there is no
2310: 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20   upper bound on 
2320: 74 68 65 0a 20 20 73 69 7a 65 20 6f 66 20 74 68  the.  size of th
2330: 65 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e  e rollback journ
2340: 61 6c 73 20 6f 72 20 77 72 69 74 65 2d 61 68 65  als or write-ahe
2350: 61 64 20 6c 6f 67 73 2e 20 20 0a 20 20 54 68 65  ad logs.  .  The
2360: 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 73 69   journal file si
2370: 7a 65 20 6c 69 6d 69 74 0a 20 20 63 61 6e 20 62  ze limit.  can b
2380: 65 20 63 68 61 6e 67 65 64 20 61 74 20 72 75 6e  e changed at run
2390: 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20  -time using the 
23a0: 5b 6a 6f 75 72 6e 61 6c 5f 73 69 7a 65 5f 6c 69  [journal_size_li
23b0: 6d 69 74 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a  mit pragma]..}..
23c0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
23d0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4c  SQLITE_DEFAULT_L
23e0: 4f 43 4b 49 4e 47 5f 4d 4f 44 45 3d 3c 69 3e 26  OCKING_MODE=<i>&
23f0: 6c 74 3b 31 20 6f 72 20 30 26 67 74 3b 3c 2f 69  lt;1 or 0&gt;</i
2400: 3e 7d 20 7b 0a 20 20 49 66 20 73 65 74 20 74 6f  >} {.  If set to
2410: 20 31 2c 20 74 68 65 6e 20 74 68 65 20 64 65 66   1, then the def
2420: 61 75 6c 74 20 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f  ault [locking_mo
2430: 64 65 5d 20 69 73 20 73 65 74 20 74 6f 20 45 58  de] is set to EX
2440: 43 4c 55 53 49 56 45 2e 0a 20 20 49 66 20 6f 6d  CLUSIVE..  If om
2450: 69 74 74 65 64 20 6f 72 20 73 65 74 20 74 6f 20  itted or set to 
2460: 30 20 74 68 65 6e 20 74 68 65 20 64 65 66 61 75  0 then the defau
2470: 6c 74 20 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65  lt [locking_mode
2480: 5d 20 69 73 20 4e 4f 52 4d 41 4c 2e 0a 7d 0a 0a  ] is NORMAL..}..
2490: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
24a0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d  SQLITE_DEFAULT_M
24b0: 45 4d 53 54 41 54 55 53 3d 3c 69 3e 26 6c 74 3b  EMSTATUS=<i>&lt;
24c0: 31 20 6f 72 20 30 26 67 74 3b 3c 2f 69 3e 7d 20  1 or 0&gt;</i>} 
24d0: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69  {.  This macro i
24e0: 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d  s used to determ
24f0: 69 6e 65 20 77 68 65 74 68 65 72 20 6f 72 20 6e  ine whether or n
2500: 6f 74 20 74 68 65 20 66 65 61 74 75 72 65 73 20  ot the features 
2510: 65 6e 61 62 6c 65 64 20 61 6e 64 0a 20 20 64 69  enabled and.  di
2520: 73 61 62 6c 65 64 20 75 73 69 6e 67 20 74 68 65  sabled using the
2530: 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d   SQLITE_CONFIG_M
2540: 45 4d 53 54 41 54 55 53 20 61 72 67 75 6d 65 6e  EMSTATUS argumen
2550: 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f  t to [sqlite3_co
2560: 6e 66 69 67 28 29 5d 0a 20 20 61 72 65 20 61 76  nfig()].  are av
2570: 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61 75  ailable by defau
2580: 6c 74 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20  lt. The default 
2590: 76 61 6c 75 65 20 69 73 20 31 20 28 5b 53 51 4c  value is 1 ([SQL
25a0: 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54  ITE_CONFIG_MEMST
25b0: 41 54 55 53 5d 0a 20 20 72 65 6c 61 74 65 64 20  ATUS].  related 
25c0: 66 65 61 74 75 72 65 73 20 65 6e 61 62 6c 65 64  features enabled
25d0: 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  )..}..COMPILE_OP
25e0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
25f0: 41 55 4c 54 5f 50 41 47 45 5f 53 49 5a 45 3d 3c  AULT_PAGE_SIZE=<
2600: 69 3e 26 6c 74 3b 62 79 74 65 73 26 67 74 3b 3c  i>&lt;bytes&gt;<
2610: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
2620: 63 72 6f 20 69 73 20 75 73 65 64 20 74 6f 20 73  cro is used to s
2630: 65 74 20 74 68 65 20 64 65 66 61 75 6c 74 20 70  et the default p
2640: 61 67 65 2d 73 69 7a 65 20 75 73 65 64 20 77 68  age-size used wh
2650: 65 6e 20 61 0a 20 20 64 61 74 61 62 61 73 65 20  en a.  database 
2660: 69 73 20 63 72 65 61 74 65 64 2e 20 54 68 65 20  is created. The 
2670: 76 61 6c 75 65 20 61 73 73 69 67 6e 65 64 20 6d  value assigned m
2680: 75 73 74 20 62 65 20 61 20 70 6f 77 65 72 20 6f  ust be a power o
2690: 66 20 32 2e 20 54 68 65 0a 20 20 64 65 66 61 75  f 2. The.  defau
26a0: 6c 74 20 76 61 6c 75 65 20 69 73 20 31 30 32 34  lt value is 1024
26b0: 2e 20 54 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69  . The compile-ti
26c0: 6d 65 20 64 65 66 61 75 6c 74 20 6d 61 79 20 62  me default may b
26d0: 65 20 6f 76 65 72 72 69 64 64 65 6e 20 61 74 20  e overridden at 
26e0: 0a 20 20 72 75 6e 74 69 6d 65 20 62 79 20 74 68  .  runtime by th
26f0: 65 20 5b 50 52 41 47 4d 41 20 70 61 67 65 5f 73  e [PRAGMA page_s
2700: 69 7a 65 5d 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a  ize] command..}.
2710: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
2720: 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  {SQLITE_DEFAULT_
2730: 57 41 4c 5f 41 55 54 4f 43 48 45 43 4b 50 4f 49  WAL_AUTOCHECKPOI
2740: 4e 54 3d 3c 69 3e 26 6c 74 3b 70 61 67 65 73 26  NT=<i>&lt;pages&
2750: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
2760: 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65  s macro sets the
2770: 20 64 65 66 61 75 6c 74 20 70 61 67 65 20 63 6f   default page co
2780: 75 6e 74 20 66 6f 72 20 74 68 65 20 5b 57 41 4c  unt for the [WAL
2790: 5d 0a 20 20 5b 63 68 65 63 6b 70 6f 69 6e 74 69  ].  [checkpointi
27a0: 6e 67 20 7c 20 61 75 74 6f 6d 61 74 69 63 20 63  ng | automatic c
27b0: 68 65 63 6b 70 6f 69 6e 74 69 6e 67 5d 20 66 65  heckpointing] fe
27c0: 61 74 75 72 65 2e 20 20 49 66 20 75 6e 73 70 65  ature.  If unspe
27d0: 63 69 66 69 65 64 2c 0a 20 20 74 68 65 20 64 65  cified,.  the de
27e0: 66 61 75 6c 74 20 70 61 67 65 20 63 6f 75 6e 74  fault page count
27f0: 20 69 73 20 31 30 30 30 2e 0a 7d 0a 0a 43 4f 4d   is 1000..}..COM
2800: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
2810: 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 4f 52 4b  ITE_DEFAULT_WORK
2820: 45 52 5f 54 48 52 45 41 44 53 3d 3c 69 3e 4e 3c  ER_THREADS=<i>N<
2830: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
2840: 63 72 6f 20 73 65 74 73 20 74 68 65 20 64 65 66  cro sets the def
2850: 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 0a 20  ault value for. 
2860: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c 49 4d   the [SQLITE_LIM
2870: 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  IT_WORKER_THREAD
2880: 53 5d 20 70 61 72 61 6d 65 74 65 72 2e 20 20 54  S] parameter.  T
2890: 68 65 20 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54  he [SQLITE_LIMIT
28a0: 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 5d  _WORKER_THREADS]
28b0: 0a 20 20 70 61 72 61 6d 65 74 65 72 20 73 65 74  .  parameter set
28c0: 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75  s the maximum nu
28d0: 6d 62 65 72 20 6f 66 20 61 75 78 69 6c 69 61 72  mber of auxiliar
28e0: 79 20 74 68 72 65 61 64 73 20 74 68 61 74 20 61  y threads that a
28f0: 20 73 69 6e 67 6c 65 0a 20 20 5b 70 72 65 70 61   single.  [prepa
2900: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 77  red statement] w
2910: 69 6c 6c 20 6c 61 75 6e 63 68 20 74 6f 20 61 73  ill launch to as
2920: 73 69 73 74 20 69 74 20 77 69 74 68 20 61 20 71  sist it with a q
2930: 75 65 72 79 2e 20 20 49 66 20 6e 6f 74 20 73 70  uery.  If not sp
2940: 65 63 69 66 69 65 64 2c 0a 20 20 74 68 65 20 64  ecified,.  the d
2950: 65 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d 20 69  efault maximum i
2960: 73 20 30 2e 0a 20 20 54 68 65 20 76 61 6c 75 65  s 0..  The value
2970: 20 73 65 74 20 68 65 72 65 20 63 61 6e 6e 6f 74   set here cannot
2980: 20 62 65 20 6d 6f 72 65 20 74 68 61 6e 20 5b 53   be more than [S
2990: 51 4c 49 54 45 5f 4d 41 58 5f 57 4f 52 4b 45 52  QLITE_MAX_WORKER
29a0: 5f 54 48 52 45 41 44 53 5d 2e 0a 7d 0a 0a 43 4f  _THREADS]..}..CO
29b0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
29c0: 4c 49 54 45 5f 46 54 53 33 5f 4d 41 58 5f 45 58  LITE_FTS3_MAX_EX
29d0: 50 52 5f 44 45 50 54 48 3d 3c 69 3e 4e 3c 2f 69  PR_DEPTH=<i>N</i
29e0: 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  >} {.  This macr
29f0: 6f 20 73 65 74 73 20 74 68 65 20 6d 61 78 69 6d  o sets the maxim
2a00: 75 6d 20 64 65 70 74 68 20 6f 66 20 74 68 65 20  um depth of the 
2a10: 73 65 61 72 63 68 20 74 72 65 65 20 74 68 61 74  search tree that
2a20: 20 63 6f 72 72 65 73 70 6f 6e 64 73 20 74 6f 0a   corresponds to.
2a30: 20 20 74 68 65 20 72 69 67 68 74 2d 68 61 6e 64    the right-hand
2a40: 20 73 69 64 65 20 6f 66 20 74 68 65 20 4d 41 54   side of the MAT
2a50: 43 48 20 6f 70 65 72 61 74 6f 72 20 69 6e 20 61  CH operator in a
2a60: 6e 20 5b 46 54 53 33 5d 20 6f 72 20 5b 46 54 53  n [FTS3] or [FTS
2a70: 34 5d 20 66 75 6c 6c 2d 74 65 78 74 0a 20 20 69  4] full-text.  i
2a80: 6e 64 65 78 2e 20 20 54 68 65 20 66 75 6c 6c 2d  ndex.  The full-
2a90: 74 65 78 74 20 73 65 61 72 63 68 20 75 73 65 73  text search uses
2aa0: 20 61 20 72 65 63 75 72 73 69 76 65 20 61 6c 67   a recursive alg
2ab0: 6f 72 69 74 68 6d 2c 20 73 6f 20 74 68 65 20 64  orithm, so the d
2ac0: 65 70 74 68 20 6f 66 0a 20 20 74 68 65 20 74 72  epth of.  the tr
2ad0: 65 65 20 69 73 20 6c 69 6d 69 74 65 64 20 74 6f  ee is limited to
2ae0: 20 70 72 65 76 65 6e 74 20 75 73 69 6e 67 20 74   prevent using t
2af0: 6f 6f 20 6d 75 63 68 20 73 74 61 63 6b 20 73 70  oo much stack sp
2b00: 61 63 65 2e 20 20 54 68 65 20 64 65 66 61 75 6c  ace.  The defaul
2b10: 74 0a 20 20 6c 69 6d 69 74 20 69 73 20 31 32 2e  t.  limit is 12.
2b20: 20 20 54 68 69 73 20 6c 69 6d 69 74 20 69 73 20    This limit is 
2b30: 73 75 66 66 69 63 69 65 6e 74 20 66 6f 72 20 75  sufficient for u
2b40: 70 20 74 6f 20 34 30 39 35 20 73 65 61 72 63 68  p to 4095 search
2b50: 20 74 65 72 6d 73 20 6f 6e 20 74 68 65 0a 20 20   terms on the.  
2b60: 72 69 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20  right-hand side 
2b70: 6f 66 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65  of the MATCH ope
2b80: 72 61 74 6f 72 20 61 6e 64 20 69 74 20 68 6f 6c  rator and it hol
2b90: 64 73 20 73 74 61 63 6b 20 73 70 61 63 65 20 75  ds stack space u
2ba0: 73 61 67 65 20 74 6f 20 0a 20 20 6c 65 73 73 20  sage to .  less 
2bb0: 74 68 61 6e 20 32 30 30 30 20 62 79 74 65 73 2e  than 2000 bytes.
2bc0: 0a 20 20 3c 70 3e 0a 20 20 46 6f 72 20 6f 72 64  .  <p>.  For ord
2bd0: 69 6e 61 72 79 20 46 54 53 33 2f 46 54 53 34 20  inary FTS3/FTS4 
2be0: 71 75 65 72 69 65 73 2c 20 74 68 65 20 73 65 61  queries, the sea
2bf0: 72 63 68 20 74 72 65 65 20 64 65 70 74 68 20 69  rch tree depth i
2c00: 73 20 61 70 70 72 6f 78 69 6d 61 74 65 6c 79 0a  s approximately.
2c10: 20 20 74 68 65 20 62 61 73 65 2d 32 20 6c 6f 67    the base-2 log
2c20: 61 72 69 74 68 6d 20 6f 66 20 74 68 65 20 6e 75  arithm of the nu
2c30: 6d 62 65 72 20 6f 66 20 74 65 72 6d 73 20 69 6e  mber of terms in
2c40: 20 74 68 65 20 72 69 67 68 74 2d 68 61 6e 64 20   the right-hand 
2c50: 73 69 64 65 20 6f 66 20 74 68 65 0a 20 20 4d 41  side of the.  MA
2c60: 54 43 48 20 6f 70 65 72 61 74 6f 72 2e 20 20 48  TCH operator.  H
2c70: 6f 77 65 76 65 72 2c 20 66 6f 72 20 5b 70 68 72  owever, for [phr
2c80: 61 73 65 20 71 75 65 72 69 65 73 5d 20 61 6e 64  ase queries] and
2c90: 20 5b 4e 45 41 52 20 71 75 65 72 69 65 73 5d 20   [NEAR queries] 
2ca0: 74 68 65 0a 20 20 73 65 61 72 63 68 20 74 72 65  the.  search tre
2cb0: 65 20 64 65 70 74 68 20 69 73 20 6c 69 6e 65 61  e depth is linea
2cc0: 72 20 69 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  r in the number 
2cd0: 6f 66 20 72 69 67 68 74 2d 68 61 6e 64 20 73 69  of right-hand si
2ce0: 64 65 20 74 65 72 6d 73 2e 0a 20 20 53 6f 20 74  de terms..  So t
2cf0: 68 65 20 64 65 66 61 75 6c 74 20 64 65 70 74 68  he default depth
2d00: 20 6c 69 6d 69 74 20 6f 66 20 31 32 20 69 73 20   limit of 12 is 
2d10: 73 75 66 66 69 63 69 65 6e 74 20 66 6f 72 20 75  sufficient for u
2d20: 70 20 74 6f 20 34 30 39 35 20 6f 72 64 69 6e 61  p to 4095 ordina
2d30: 72 79 0a 20 20 74 65 72 6d 73 20 6f 6e 20 61 20  ry.  terms on a 
2d40: 4d 41 54 43 48 2c 20 69 74 20 69 73 20 6f 6e 6c  MATCH, it is onl
2d50: 79 20 73 75 66 66 69 63 69 65 6e 74 20 66 6f 72  y sufficient for
2d60: 20 31 31 20 6f 72 20 31 32 20 70 68 72 61 73 65   11 or 12 phrase
2d70: 20 6f 72 20 4e 45 41 52 0a 20 20 74 65 72 6d 73   or NEAR.  terms
2d80: 2e 20 20 45 76 65 6e 20 73 6f 2c 20 74 68 65 20  .  Even so, the 
2d90: 64 65 66 61 75 6c 74 20 69 73 20 6d 6f 72 65 20  default is more 
2da0: 74 68 61 6e 20 65 6e 6f 75 67 68 20 66 6f 72 20  than enough for 
2db0: 6d 6f 73 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  most application
2dc0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
2dd0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 41 58 5f  ION {SQLITE_MAX_
2de0: 4d 4d 41 50 5f 53 49 5a 45 3d 3c 69 3e 4e 3c 2f  MMAP_SIZE=<i>N</
2df0: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63  i>} {.  This mac
2e00: 72 6f 20 73 65 74 73 20 61 20 68 61 72 64 20 75  ro sets a hard u
2e10: 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68  pper bound on th
2e20: 65 20 61 6d 6f 75 6e 74 20 6f 66 20 61 64 64 72  e amount of addr
2e30: 65 73 73 20 73 70 61 63 65 20 74 68 61 74 0a 20  ess space that. 
2e40: 20 63 61 6e 20 62 65 20 75 73 65 64 20 62 79 20   can be used by 
2e50: 61 6e 79 20 73 69 6e 67 6c 65 20 64 61 74 61 62  any single datab
2e60: 61 73 65 20 66 6f 72 20 6d 65 6d 6f 72 79 2d 6d  ase for memory-m
2e70: 61 70 70 65 64 20 49 2f 4f 2e 0a 20 20 53 65 74  apped I/O..  Set
2e80: 74 69 6e 67 20 74 68 69 73 20 76 61 6c 75 65 20  ting this value 
2e90: 74 6f 20 30 20 63 6f 6d 70 6c 65 74 65 6c 79 20  to 0 completely 
2ea0: 64 69 73 61 62 6c 65 73 20 6d 65 6d 6f 72 79 2d  disables memory-
2eb0: 6d 61 70 70 65 64 20 49 2f 4f 20 61 6e 64 0a 20  mapped I/O and. 
2ec0: 20 63 61 75 73 65 73 20 6c 6f 67 69 63 20 61 73   causes logic as
2ed0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 6d 65  sociated with me
2ee0: 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20  mory-mapped I/O 
2ef0: 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72  to be omitted fr
2f00: 6f 6d 20 74 68 65 0a 20 20 62 75 69 6c 64 2e 20  om the.  build. 
2f10: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 6f 65   This option doe
2f20: 73 20 63 68 61 6e 67 65 20 74 68 65 20 64 65 66  s change the def
2f30: 61 75 6c 74 20 6d 65 6d 6f 72 79 2d 6d 61 70 70  ault memory-mapp
2f40: 65 64 20 49 2f 4f 20 61 64 64 72 65 73 73 0a 20  ed I/O address. 
2f50: 20 73 70 61 63 65 20 73 69 7a 65 20 28 73 65 74   space size (set
2f60: 20 62 79 20 5b 53 51 4c 49 54 45 5f 44 45 46 41   by [SQLITE_DEFA
2f70: 55 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 6f  ULT_MMAP_SIZE] o
2f80: 72 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  r.  sqlite3_conf
2f90: 69 67 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ig([SQLITE_CONFI
2fa0: 47 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 6f 72  G_MMAP_SIZE]) or
2fb0: 20 74 68 65 0a 20 20 72 75 6e 2d 74 69 6d 65 20   the.  run-time 
2fc0: 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f  memory-mapped I/
2fd0: 4f 20 61 64 64 72 65 73 73 20 73 70 61 63 65 20  O address space 
2fe0: 73 69 7a 65 20 28 73 65 74 20 62 79 0a 20 20 73  size (set by.  s
2ff0: 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
3000: 72 6f 6c 28 5b 53 51 4c 49 54 45 5f 46 43 4e 54  rol([SQLITE_FCNT
3010: 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 6f 72  L_MMAP_SIZE]) or
3020: 0a 20 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70 5f  .  [PRAGMA mmap_
3030: 73 69 7a 65 5d 29 20 61 73 20 6c 6f 6e 67 20 61  size]) as long a
3040: 73 20 74 68 6f 73 65 20 6f 74 68 65 72 20 73 65  s those other se
3050: 74 74 69 6e 67 73 20 61 72 65 20 6c 65 73 73 20  ttings are less 
3060: 74 68 61 6e 20 74 68 65 0a 20 20 6d 61 78 69 6d  than the.  maxim
3070: 75 6d 20 76 61 6c 75 65 20 64 65 66 69 6e 65 64  um value defined
3080: 20 68 65 72 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c   here..}..COMPIL
3090: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
30a0: 5f 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45 54 52  _MAX_SCHEMA_RETR
30b0: 59 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20  Y=<i>N</i>} {.  
30c0: 57 68 65 6e 65 76 65 72 20 74 68 65 20 64 61 74  Whenever the dat
30d0: 61 62 61 73 65 20 73 63 68 65 6d 61 20 63 68 61  abase schema cha
30e0: 6e 67 65 73 2c 20 70 72 65 70 61 72 65 64 20 73  nges, prepared s
30f0: 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 61 75  tatements are au
3100: 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 20 20 72 65  tomatically.  re
3110: 70 72 65 70 61 72 65 64 20 74 6f 20 61 63 63 6f  prepared to acco
3120: 6d 6d 6f 64 61 74 65 20 74 68 65 20 6e 65 77 20  mmodate the new 
3130: 73 63 68 65 6d 61 2e 20 20 54 68 65 72 65 20 69  schema.  There i
3140: 73 20 61 20 72 61 63 65 20 63 6f 6e 64 69 74 69  s a race conditi
3150: 6f 6e 20 68 65 72 65 0a 20 20 69 6e 20 74 68 61  on here.  in tha
3160: 74 20 69 66 20 6f 6e 65 20 74 68 72 65 61 64 20  t if one thread 
3170: 69 73 20 63 6f 6e 73 74 61 6e 74 6c 79 20 63 68  is constantly ch
3180: 61 6e 67 69 6e 67 20 74 68 65 20 73 63 68 65 6d  anging the schem
3190: 61 2c 20 61 6e 6f 74 68 65 72 20 74 68 72 65 61  a, another threa
31a0: 64 0a 20 20 6d 69 67 68 74 20 73 70 69 6e 20 6f  d.  might spin o
31b0: 6e 20 72 65 70 61 72 73 65 73 20 61 6e 64 20 72  n reparses and r
31c0: 65 70 72 65 70 61 72 61 74 69 6f 6e 73 20 6f 66  epreparations of
31d0: 20 61 20 70 72 65 70 61 72 65 64 20 73 74 61 74   a prepared stat
31e0: 65 6d 65 6e 74 20 61 6e 64 0a 20 20 6e 65 76 65  ement and.  neve
31f0: 72 20 67 65 74 20 61 6e 79 20 72 65 61 6c 20 77  r get any real w
3200: 6f 72 6b 20 64 6f 6e 65 2e 20 20 54 68 69 73 20  ork done.  This 
3210: 70 61 72 61 6d 65 74 65 72 20 70 72 65 76 65 6e  parameter preven
3220: 74 73 20 61 6e 20 69 6e 66 69 6e 69 74 65 20 6c  ts an infinite l
3230: 6f 6f 70 0a 20 20 62 79 20 66 6f 72 63 69 6e 67  oop.  by forcing
3240: 20 74 68 65 20 73 70 69 6e 6e 69 6e 67 20 74 68   the spinning th
3250: 72 65 61 64 20 74 6f 20 67 69 76 65 20 75 70 20  read to give up 
3260: 61 66 74 65 72 20 61 20 66 69 78 65 64 20 6e 75  after a fixed nu
3270: 6d 62 65 72 20 6f 66 20 61 74 74 65 6d 70 74 73  mber of attempts
3280: 0a 20 20 61 74 20 72 65 63 6f 6d 70 69 6c 69 6e  .  at recompilin
3290: 67 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73  g the prepared s
32a0: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 64  tatement.  The d
32b0: 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 69  efault setting i
32c0: 73 20 35 30 20 77 68 69 63 68 20 69 73 0a 20 20  s 50 which is.  
32d0: 6d 6f 72 65 20 74 68 61 6e 20 61 64 65 71 75 61  more than adequa
32e0: 74 65 20 66 6f 72 20 6d 6f 73 74 20 61 70 70 6c  te for most appl
32f0: 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d  ications..}..COM
3300: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
3310: 49 54 45 5f 4d 41 58 5f 57 4f 52 4b 45 52 5f 54  ITE_MAX_WORKER_T
3320: 48 52 45 41 44 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d  HREADS=<i>N</i>}
3330: 20 7b 0a 20 20 53 65 74 20 61 6e 20 75 70 70 65   {.  Set an uppe
3340: 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65 20 5b  r bound on the [
3350: 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 5d 28 64  sqlite3_limit](d
3360: 62 2c 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  b,[SQLITE_LIMIT_
3370: 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 5d 2c  WORKER_THREADS],
3380: 4e 29 0a 20 20 73 65 74 74 69 6e 67 20 74 68 61  N).  setting tha
3390: 74 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65  t determines the
33a0: 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20   maximum number 
33b0: 6f 66 20 61 75 78 69 6c 69 61 72 79 20 74 68 72  of auxiliary thr
33c0: 65 61 64 73 20 74 68 61 74 20 61 20 73 69 6e 67  eads that a sing
33d0: 6c 65 0a 20 20 5b 70 72 65 70 61 72 65 64 20 73  le.  [prepared s
33e0: 74 61 74 65 6d 65 6e 74 5d 20 77 69 6c 6c 20 75  tatement] will u
33f0: 73 65 20 74 6f 20 61 69 64 20 77 69 74 68 20 43  se to aid with C
3400: 50 55 2d 69 6e 74 65 6e 73 69 76 65 20 63 6f 6d  PU-intensive com
3410: 70 75 74 61 74 69 6f 6e 73 0a 20 20 28 6d 6f 73  putations.  (mos
3420: 74 6c 79 20 73 6f 72 74 69 6e 67 29 2e 20 20 53  tly sorting).  S
3430: 65 65 20 61 6c 73 6f 20 74 68 65 20 5b 53 51 4c  ee also the [SQL
3440: 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 4f 52 4b  ITE_DEFAULT_WORK
3450: 45 52 5f 54 48 52 45 41 44 53 5d 20 6f 70 74 69  ER_THREADS] opti
3460: 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ons..}..COMPILE_
3470: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d  OPTION {SQLITE_M
3480: 49 4e 49 4d 55 4d 5f 46 49 4c 45 5f 44 45 53 43  INIMUM_FILE_DESC
3490: 52 49 50 54 4f 52 3d 3c 69 3e 4e 3c 2f 69 3e 7d  RIPTOR=<i>N</i>}
34a0: 20 7b 0a 20 20 54 68 65 20 75 6e 69 78 20 5b 56   {.  The unix [V
34b0: 46 53 5d 20 77 69 6c 6c 20 6e 65 76 65 72 20 75  FS] will never u
34c0: 73 65 20 61 20 66 69 6c 65 20 64 65 73 63 72 69  se a file descri
34d0: 70 74 6f 72 20 6c 65 73 73 20 74 68 61 6e 20 3c  ptor less than <
34e0: 69 3e 4e 3c 2f 69 3e 2e 20 20 54 68 65 0a 20 20  i>N</i>.  The.  
34f0: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 66  default value of
3500: 20 3c 69 3e 4e 3c 2f 69 3e 20 69 73 20 33 2e 0a   <i>N</i> is 3..
3510: 20 20 3c 70 3e 0a 20 20 41 76 6f 69 64 69 6e 67    <p>.  Avoiding
3520: 20 74 68 65 20 75 73 65 20 6f 66 20 6c 6f 77 2d   the use of low-
3530: 6e 75 6d 62 65 72 65 64 20 66 69 6c 65 20 64 65  numbered file de
3540: 73 63 72 69 70 74 6f 72 73 20 69 73 20 61 20 64  scriptors is a d
3550: 65 66 65 6e 73 65 20 61 67 61 69 6e 73 74 0a 20  efense against. 
3560: 20 61 63 63 69 64 65 6e 74 61 6c 20 64 61 74 61   accidental data
3570: 62 61 73 65 20 63 6f 72 72 75 70 74 69 6f 6e 2e  base corruption.
3580: 20 20 49 66 20 61 20 64 61 74 61 62 61 73 65 20    If a database 
3590: 66 69 6c 65 20 77 61 73 20 6f 70 65 6e 65 64 20  file was opened 
35a0: 75 73 69 6e 67 0a 20 20 66 69 6c 65 20 64 65 73  using.  file des
35b0: 63 72 69 70 74 6f 72 20 32 2c 20 66 6f 72 20 65  criptor 2, for e
35c0: 78 61 6d 70 6c 65 2c 20 61 6e 64 20 74 68 65 6e  xample, and then
35d0: 20 61 6e 20 61 73 73 65 72 74 28 29 20 66 61 69   an assert() fai
35e0: 6c 65 64 20 61 6e 64 20 69 6e 76 6f 6b 65 64 0a  led and invoked.
35f0: 20 20 77 72 69 74 65 28 32 2c 2e 2e 2e 29 2c 20    write(2,...), 
3600: 74 68 61 74 20 77 6f 75 6c 64 20 6c 69 6b 65 6c  that would likel
3610: 79 20 63 61 75 73 65 20 64 61 74 61 62 61 73 65  y cause database
3620: 20 63 6f 72 72 75 70 74 69 6f 6e 20 62 79 20 6f   corruption by o
3630: 76 65 72 77 72 69 74 69 6e 67 0a 20 20 70 61 72  verwriting.  par
3640: 74 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  t of the databas
3650: 65 20 66 69 6c 65 20 77 69 74 68 20 74 68 65 20  e file with the 
3660: 61 73 73 65 72 74 69 6f 6e 20 65 72 72 6f 72 20  assertion error 
3670: 6d 65 73 73 61 67 65 2e 20 20 55 73 69 6e 67 20  message.  Using 
3680: 6f 6e 6c 79 0a 20 20 68 69 67 68 65 72 2d 76 61  only.  higher-va
3690: 6c 75 65 64 20 66 69 6c 65 20 64 65 73 63 72 69  lued file descri
36a0: 70 74 6f 72 73 20 61 76 6f 69 64 73 20 74 68 69  ptors avoids thi
36b0: 73 20 70 6f 74 65 6e 74 69 61 6c 20 70 72 6f 62  s potential prob
36c0: 6c 65 6d 2e 20 20 54 68 65 20 0a 20 20 70 72 6f  lem.  The .  pro
36d0: 74 65 63 74 69 6f 6e 20 61 67 61 69 6e 73 74 0a  tection against.
36e0: 20 20 75 73 69 6e 67 20 6c 6f 77 2d 6e 75 6d 62    using low-numb
36f0: 65 72 65 64 20 66 69 6c 65 20 64 65 73 63 72 69  ered file descri
3700: 70 74 6f 72 73 20 63 61 6e 20 62 65 20 64 69 73  ptors can be dis
3710: 61 62 6c 65 64 20 62 79 20 73 65 74 74 69 6e 67  abled by setting
3720: 20 74 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d   this.  compile-
3730: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 6f 20 30  time option to 0
3740: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
3750: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 50 4f 57 45  ION {SQLITE_POWE
3760: 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 3d  RSAFE_OVERWRITE=
3770: 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74  <i>&lt;0 or 1&gt
3780: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
3790: 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74  option changes t
37a0: 68 65 20 64 65 66 61 75 6c 74 20 61 73 73 75 6d  he default assum
37b0: 70 74 69 6f 6e 20 61 62 6f 75 74 20 5b 70 6f 77  ption about [pow
37c0: 65 72 73 61 66 65 20 6f 76 65 72 77 72 69 74 65  ersafe overwrite
37d0: 5d 0a 20 20 66 6f 72 20 74 68 65 20 75 6e 64 65  ].  for the unde
37e0: 72 6c 79 69 6e 67 20 66 69 6c 65 73 79 73 74 65  rlying filesyste
37f0: 6d 73 20 66 6f 72 20 74 68 65 20 75 6e 69 78 20  ms for the unix 
3800: 61 6e 64 20 77 69 6e 64 6f 77 73 20 5b 56 46 53  and windows [VFS
3810: 65 73 5d 2e 0a 20 20 53 65 74 74 69 6e 67 20 53  es]..  Setting S
3820: 51 4c 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f  QLITE_POWERSAFE_
3830: 4f 56 45 52 57 52 49 54 45 20 74 6f 20 31 20 63  OVERWRITE to 1 c
3840: 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20  auses SQLite to 
3850: 61 73 73 75 6d 65 20 74 68 61 74 0a 20 20 61 70  assume that.  ap
3860: 70 6c 69 63 61 74 69 6f 6e 2d 6c 65 76 65 6c 20  plication-level 
3870: 77 72 69 74 65 73 20 63 61 6e 6e 6f 74 20 63 68  writes cannot ch
3880: 61 6e 67 65 73 20 62 79 74 65 73 20 6f 75 74 73  anges bytes outs
3890: 69 64 65 20 74 68 65 20 72 61 6e 67 65 20 6f 66  ide the range of
38a0: 0a 20 20 62 79 74 65 73 20 77 72 69 74 74 65 6e  .  bytes written
38b0: 20 65 76 65 6e 20 69 66 20 74 68 65 20 77 72 69   even if the wri
38c0: 74 65 20 6f 63 63 75 72 73 20 6a 75 73 74 20 62  te occurs just b
38d0: 65 66 6f 72 65 20 61 20 70 6f 77 65 72 20 6c 6f  efore a power lo
38e0: 73 73 2e 0a 20 20 57 69 74 68 20 53 51 4c 49 54  ss..  With SQLIT
38f0: 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52  E_POWERSAFE_OVER
3900: 57 52 49 54 45 20 73 65 74 20 74 6f 20 30 2c 20  WRITE set to 0, 
3910: 53 51 4c 69 74 65 20 61 73 73 75 6d 65 73 20 74  SQLite assumes t
3920: 68 61 74 20 6f 74 68 65 72 0a 20 20 62 79 74 65  hat other.  byte
3930: 73 20 69 6e 20 74 68 65 20 73 61 6d 65 20 73 65  s in the same se
3940: 63 74 6f 72 20 77 69 74 68 20 61 20 77 72 69 74  ctor with a writ
3950: 74 65 6e 20 62 79 74 65 20 6d 69 67 68 74 20 62  ten byte might b
3960: 65 20 63 68 61 6e 67 65 64 20 6f 72 20 0a 20 20  e changed or .  
3970: 64 61 6d 61 67 65 64 20 62 79 20 61 20 70 6f 77  damaged by a pow
3980: 65 72 20 6c 6f 73 73 2e 0a 7d 0a 0a 43 4f 4d 50  er loss..}..COMP
3990: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
39a0: 54 45 5f 52 45 56 45 52 53 45 5f 55 4e 4f 52 44  TE_REVERSE_UNORD
39b0: 45 52 45 44 5f 53 45 4c 45 43 54 53 7d 20 7b 0a  ERED_SELECTS} {.
39c0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
39d0: 75 73 65 73 20 74 68 65 20 5b 50 52 41 47 4d 41  uses the [PRAGMA
39e0: 20 72 65 76 65 72 73 65 5f 75 6e 6f 72 64 65 72   reverse_unorder
39f0: 65 64 5f 73 65 6c 65 63 74 73 5d 20 73 65 74 74  ed_selects] sett
3a00: 69 6e 67 20 74 6f 20 62 65 0a 20 20 65 6e 61 62  ing to be.  enab
3a10: 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 20  led by default. 
3a20: 20 57 68 65 6e 20 65 6e 61 62 6c 65 64 2c 20 5b   When enabled, [
3a30: 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e  SELECT] statemen
3a40: 74 73 20 74 68 61 74 20 6c 61 63 6b 20 61 6e 0a  ts that lack an.
3a50: 20 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73    ORDER BY claus
3a60: 65 20 77 69 6c 6c 20 72 75 6e 20 69 6e 20 72 65  e will run in re
3a70: 76 65 72 73 65 20 6f 72 64 65 72 2e 3c 70 3e 0a  verse order.<p>.
3a80: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
3a90: 20 75 73 65 66 75 6c 20 66 6f 72 20 64 65 74 65   useful for dete
3aa0: 63 74 69 6e 67 20 77 68 65 6e 20 61 70 70 6c 69  cting when appli
3ab0: 63 61 74 69 6f 6e 73 20 28 69 6e 63 6f 72 72 65  cations (incorre
3ac0: 63 74 6c 79 29 0a 20 20 61 73 73 75 6d 65 20 74  ctly).  assume t
3ad0: 68 61 74 20 74 68 65 20 6f 72 64 65 72 20 6f 66  hat the order of
3ae0: 20 72 6f 77 73 20 69 6e 20 61 20 53 45 4c 45 43   rows in a SELEC
3af0: 54 20 77 69 74 68 6f 75 74 20 61 6e 20 4f 52 44  T without an ORD
3b00: 45 52 20 42 59 20 63 6c 61 75 73 65 0a 20 20 77  ER BY clause.  w
3b10: 69 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 74 68  ill always be th
3b20: 65 20 73 61 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  e same..}..COMPI
3b30: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
3b40: 45 5f 53 4f 52 54 45 52 5f 50 4d 41 53 5a 3d 3c  E_SORTER_PMASZ=<
3b50: 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20  i>N</i>} {.  If 
3b60: 6d 75 6c 74 69 2d 74 68 72 65 61 64 65 64 20 70  multi-threaded p
3b70: 72 6f 63 65 73 73 69 6e 67 20 69 73 20 65 6e 61  rocessing is ena
3b80: 62 6c 65 64 20 76 69 61 20 74 68 65 0a 20 20 5b  bled via the.  [
3b90: 50 52 41 47 4d 41 20 74 68 72 65 61 64 73 5d 20  PRAGMA threads] 
3ba0: 73 65 74 74 69 6e 67 2c 20 74 68 65 6e 20 73 6f  setting, then so
3bb0: 72 74 20 6f 70 65 72 61 74 69 6f 6e 73 20 77 69  rt operations wi
3bc0: 6c 6c 0a 20 20 61 74 74 65 6d 70 74 20 74 6f 20  ll.  attempt to 
3bd0: 73 74 61 72 74 20 68 65 6c 70 65 72 20 74 68 72  start helper thr
3be0: 65 61 64 73 20 77 68 65 6e 20 74 68 65 20 61 6d  eads when the am
3bf0: 6f 75 6e 74 20 6f 66 20 63 6f 6e 74 65 6e 74 0a  ount of content.
3c00: 20 20 74 6f 20 62 65 20 73 6f 72 74 65 64 20 65    to be sorted e
3c10: 78 63 65 65 64 73 20 74 68 65 20 6d 69 6e 69 6d  xceeds the minim
3c20: 75 6d 20 6f 66 20 74 68 65 20 5b 63 61 63 68 65  um of the [cache
3c30: 5f 73 69 7a 65 5d 20 61 6e 64 20 50 4d 41 20 53  _size] and PMA S
3c40: 69 7a 65 0a 20 20 64 65 74 65 72 6d 69 6e 65 64  ize.  determined
3c50: 20 62 79 20 74 68 65 20 5b 53 51 4c 49 54 45 5f   by the [SQLITE_
3c60: 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 5d 20 73 74  CONFIG_PMASZ] st
3c70: 61 72 74 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e  art-time option.
3c80: 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d  .  This compile-
3c90: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 73 65 74 73  time option sets
3ca0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   the default val
3cb0: 75 65 20 66 6f 72 20 74 68 65 0a 20 20 5b 53 51  ue for the.  [SQ
3cc0: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53  LITE_CONFIG_PMAS
3cd0: 5a 5d 20 73 74 61 72 74 2d 74 69 6d 65 20 6f 70  Z] start-time op
3ce0: 74 69 6f 6e 2e 0a 20 20 54 68 65 20 64 65 66 61  tion..  The defa
3cf0: 75 6c 74 20 76 61 6c 75 65 20 69 73 20 32 35 30  ult value is 250
3d00: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
3d10: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e 33  ION {SQLITE_WIN3
3d20: 32 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54 68  2_MALLOC} {.  Th
3d30: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
3d40: 73 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65  s the use of the
3d50: 20 57 69 6e 64 6f 77 73 20 48 65 61 70 20 41 50   Windows Heap AP
3d60: 49 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20  I functions for 
3d70: 6d 65 6d 6f 72 79 0a 20 20 61 6c 6c 6f 63 61 74  memory.  allocat
3d80: 69 6f 6e 20 69 6e 73 74 65 61 64 20 6f 66 20 74  ion instead of t
3d90: 68 65 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72  he standard libr
3da0: 61 72 79 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64  ary malloc() and
3db0: 20 66 72 65 65 28 29 20 72 6f 75 74 69 6e 65 73   free() routines
3dc0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
3dd0: 49 4f 4e 20 7b 59 59 53 54 41 43 4b 44 45 50 54  ION {YYSTACKDEPT
3de0: 48 3d 3c 69 3e 26 6c 74 3b 6d 61 78 5f 64 65 70  H=<i>&lt;max_dep
3df0: 74 68 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20  th&gt;</i>} {.  
3e00: 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20  This macro sets 
3e10: 74 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74  the maximum dept
3e20: 68 20 6f 66 20 74 68 65 20 4c 41 4c 52 28 31 29  h of the LALR(1)
3e30: 20 73 74 61 63 6b 20 75 73 65 64 20 62 79 0a 20   stack used by. 
3e40: 20 74 68 65 20 53 51 4c 20 70 61 72 73 65 72 20   the SQL parser 
3e50: 77 69 74 68 69 6e 20 53 51 4c 69 74 65 2e 20 20  within SQLite.  
3e60: 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  The default valu
3e70: 65 20 69 73 20 31 30 30 2e 20 20 41 20 74 79 70  e is 100.  A typ
3e80: 69 63 61 6c 0a 20 20 61 70 70 6c 69 63 61 74 69  ical.  applicati
3e90: 6f 6e 20 77 69 6c 6c 20 75 73 65 20 6c 65 73 73  on will use less
3ea0: 20 74 68 61 6e 20 61 62 6f 75 74 20 32 30 20 6c   than about 20 l
3eb0: 65 76 65 6c 73 20 6f 66 20 74 68 65 20 73 74 61  evels of the sta
3ec0: 63 6b 2e 0a 20 20 44 65 76 65 6c 6f 70 65 72 73  ck..  Developers
3ed0: 20 77 68 6f 73 65 20 61 70 70 6c 69 63 61 74 69   whose applicati
3ee0: 6f 6e 73 20 63 6f 6e 74 61 69 6e 20 53 51 4c 20  ons contain SQL 
3ef0: 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20  statements that 
3f00: 0a 20 20 6e 65 65 64 20 6d 6f 72 65 20 74 68 61  .  need more tha
3f10: 6e 20 31 30 30 20 4c 41 4c 52 28 31 29 20 73 74  n 100 LALR(1) st
3f20: 61 63 6b 20 65 6e 74 72 69 65 73 20 73 68 6f 75  ack entries shou
3f30: 6c 64 20 73 65 72 69 6f 75 73 6c 79 0a 20 20 63  ld seriously.  c
3f40: 6f 6e 73 69 64 65 72 20 72 65 66 61 63 74 6f 72  onsider refactor
3f50: 69 6e 67 20 74 68 65 69 72 20 53 51 4c 20 61 73  ing their SQL as
3f60: 20 69 74 20 69 73 20 6c 69 6b 65 6c 79 20 74 6f   it is likely to
3f70: 20 62 65 20 77 65 6c 6c 20 62 65 79 6f 6e 64 0a   be well beyond.
3f80: 20 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66    the ability of
3f90: 20 61 6e 79 20 68 75 6d 61 6e 20 74 6f 20 63 6f   any human to co
3fa0: 6d 70 72 65 68 65 6e 64 2e 0a 7d 0a 3c 2f 74 63  mprehend..}.</tc
3fb0: 6c 3e 0a 0a 3c 68 32 3e 31 2e 33 20 4f 70 74 69  l>..<h2>1.3 Opti
3fc0: 6f 6e 73 20 54 6f 20 53 65 74 20 53 69 7a 65 20  ons To Set Size 
3fd0: 4c 69 6d 69 74 73 3c 2f 68 32 3e 0a 0a 3c 70 3e  Limits</h2>..<p>
3fe0: 54 68 65 72 65 20 61 72 65 20 63 6f 6d 70 69 6c  There are compil
3ff0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 74  e-time options t
4000: 68 61 74 20 77 69 6c 6c 20 73 65 74 20 75 70 70  hat will set upp
4010: 65 72 20 62 6f 75 6e 64 73 0a 6f 6e 20 74 68 65  er bounds.on the
4020: 20 73 69 7a 65 73 20 6f 66 20 76 61 72 69 6f 75   sizes of variou
4030: 73 20 73 74 72 75 63 74 75 72 65 73 20 69 6e 20  s structures in 
4040: 53 51 4c 69 74 65 2e 20 20 54 68 65 20 63 6f 6d  SQLite.  The com
4050: 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e  pile-time.option
4060: 73 20 6e 6f 72 6d 61 6c 6c 79 20 73 65 74 20 61  s normally set a
4070: 20 68 61 72 64 20 75 70 70 65 72 20 62 6f 75 6e   hard upper boun
4080: 64 20 74 68 61 74 20 63 61 6e 20 62 65 20 63 68  d that can be ch
4090: 61 6e 67 65 64 0a 61 74 20 72 75 6e 2d 74 69 6d  anged.at run-tim
40a0: 65 20 6f 6e 20 69 6e 64 69 76 69 64 75 61 6c 20  e on individual 
40b0: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
40c0: 74 69 6f 6e 73 5d 20 75 73 69 6e 67 20 74 68 65  tions] using the
40d0: 0a 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28  .[sqlite3_limit(
40e0: 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 3c 2f 70  )] interface.</p
40f0: 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f 6d 70 69 6c  >..<p>The compil
4100: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 66  e-time options f
4110: 6f 72 20 73 65 74 74 69 6e 67 20 75 70 70 65 72  or setting upper
4120: 20 62 6f 75 6e 64 73 20 61 72 65 0a 5b 6c 69 6d   bounds are.[lim
4130: 69 74 73 20 7c 20 64 6f 63 75 6d 65 6e 74 65 64  its | documented
4140: 20 73 65 70 61 72 61 74 65 6c 79 5d 2e 20 20 54   separately].  T
4150: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 73 20  he following is 
4160: 61 20 6c 69 73 74 20 6f 66 0a 74 68 65 20 61 76  a list of.the av
4170: 61 69 6c 61 62 6c 65 20 73 65 74 74 69 6e 67 73  ailable settings
4180: 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e  :</p>..<ul>.<li>
4190: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 41 54 54   [SQLITE_MAX_ATT
41a0: 41 43 48 45 44 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  ACHED]  </li>.<l
41b0: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43  i> [SQLITE_MAX_C
41c0: 4f 4c 55 4d 4e 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  OLUMN]  </li>.<l
41d0: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43  i> [SQLITE_MAX_C
41e0: 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 5d 20  OMPOUND_SELECT] 
41f0: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
4200: 49 54 45 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50  ITE_MAX_EXPR_DEP
4210: 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  TH]  </li>.<li> 
4220: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 46 55 4e 43  [SQLITE_MAX_FUNC
4230: 54 49 4f 4e 5f 41 52 47 5d 20 20 3c 2f 6c 69 3e  TION_ARG]  </li>
4240: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
4250: 58 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e  X_LENGTH]  </li>
4260: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
4270: 58 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c  X_LIKE_PATTERN_L
4280: 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  ENGTH]  </li>.<l
4290: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 50  i> [SQLITE_MAX_P
42a0: 41 47 45 5f 43 4f 55 4e 54 5d 20 20 3c 2f 6c 69  AGE_COUNT]  </li
42b0: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
42c0: 41 58 5f 53 51 4c 5f 4c 45 4e 47 54 48 5d 20 20  AX_SQL_LENGTH]  
42d0: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
42e0: 54 45 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f  TE_MAX_VARIABLE_
42f0: 4e 55 4d 42 45 52 5d 20 20 3c 2f 6c 69 3e 0a 3c  NUMBER]  </li>.<
4300: 2f 75 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 63  /ul>..<a name="c
4310: 6f 6e 74 72 6f 6c 66 65 61 74 75 72 65 73 22 3e  ontrolfeatures">
4320: 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 34 20 4f 70 74  </a>.<h2>1.4 Opt
4330: 69 6f 6e 73 20 54 6f 20 43 6f 6e 74 72 6f 6c 20  ions To Control 
4340: 4f 70 65 72 61 74 69 6e 67 20 43 68 61 72 61 63  Operating Charac
4350: 74 65 72 69 73 74 69 63 73 3c 2f 68 32 3e 0a 0a  teristics</h2>..
4360: 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50  <tcl>.COMPILE_OP
4370: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 34 5f 42  TION {SQLITE_4_B
4380: 59 54 45 5f 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c  YTE_ALIGNED_MALL
4390: 4f 43 7d 20 7b 0a 20 20 4f 6e 20 6d 6f 73 74 20  OC} {.  On most 
43a0: 73 79 73 74 65 6d 73 2c 20 74 68 65 20 6d 61 6c  systems, the mal
43b0: 6c 6f 63 28 29 20 73 79 73 74 65 6d 20 63 61 6c  loc() system cal
43c0: 6c 20 72 65 74 75 72 6e 73 20 61 20 62 75 66 66  l returns a buff
43d0: 65 72 20 74 68 61 74 20 69 73 0a 20 20 61 6c 69  er that is.  ali
43e0: 67 6e 65 64 20 74 6f 20 61 6e 20 38 2d 62 79 74  gned to an 8-byt
43f0: 65 20 62 6f 75 6e 64 61 72 79 2e 20 20 42 75 74  e boundary.  But
4400: 20 6f 6e 20 73 6f 6d 65 20 73 79 73 74 65 6d 73   on some systems
4410: 20 28 65 78 3a 20 77 69 6e 64 6f 77 73 29 20 6d   (ex: windows) m
4420: 61 6c 6c 6f 63 28 29 0a 20 20 72 65 74 75 72 6e  alloc().  return
4430: 73 20 34 2d 62 79 74 65 20 61 6c 69 67 6e 65 64  s 4-byte aligned
4440: 20 70 6f 69 6e 74 65 72 2e 20 20 54 68 69 73 20   pointer.  This 
4450: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
4460: 69 6f 6e 20 6d 75 73 74 20 62 65 20 75 73 65 64  ion must be used
4470: 0a 20 20 6f 6e 20 73 79 73 74 65 6d 73 20 74 68  .  on systems th
4480: 61 74 20 72 65 74 75 72 6e 20 34 2d 62 79 74 65  at return 4-byte
4490: 20 61 6c 69 67 6e 65 64 20 70 6f 69 6e 74 65 72   aligned pointer
44a0: 73 20 66 72 6f 6d 20 6d 61 6c 6c 6f 63 28 29 2e  s from malloc().
44b0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
44c0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 43 41 53 45 5f  ON {SQLITE_CASE_
44d0: 53 45 4e 53 49 54 49 56 45 5f 4c 49 4b 45 7d 20  SENSITIVE_LIKE} 
44e0: 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  {.  If this opti
44f0: 6f 6e 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74  on is present, t
4500: 68 65 6e 20 74 68 65 20 62 75 69 6c 74 2d 69 6e  hen the built-in
4510: 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72   [LIKE] operator
4520: 20 77 69 6c 6c 20 62 65 0a 20 20 63 61 73 65 20   will be.  case 
4530: 73 65 6e 73 69 74 69 76 65 2e 20 20 54 68 69 73  sensitive.  This
4540: 20 73 61 6d 65 20 65 66 66 65 63 74 20 63 61 6e   same effect can
4550: 20 62 65 20 61 63 68 69 65 76 65 64 20 61 74 20   be achieved at 
4560: 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20  run-time using. 
4570: 20 74 68 65 20 5b 63 61 73 65 5f 73 65 6e 73 69   the [case_sensi
4580: 74 69 76 65 5f 6c 69 6b 65 20 70 72 61 67 6d 61  tive_like pragma
4590: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
45a0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 52  TION {SQLITE_DIR
45b0: 45 43 54 5f 4f 56 45 52 46 4c 4f 57 5f 52 45 41  ECT_OVERFLOW_REA
45c0: 44 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  D} {.  When this
45d0: 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65   option is prese
45e0: 6e 74 2c 20 63 6f 6e 74 65 6e 74 20 63 6f 6e 74  nt, content cont
45f0: 61 69 6e 65 64 20 69 6e 0a 20 20 5b 6f 76 65 72  ained in.  [over
4600: 66 6c 6f 77 20 70 61 67 65 73 5d 20 6f 66 20 74  flow pages] of t
4610: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
4620: 20 69 73 20 72 65 61 64 20 64 69 72 65 63 74 6c   is read directl
4630: 79 20 66 72 6f 6d 20 64 69 73 6b 2c 0a 20 20 62  y from disk,.  b
4640: 79 70 61 73 73 69 6e 67 20 74 68 65 20 5b 70 61  ypassing the [pa
4650: 67 65 20 63 61 63 68 65 5d 2c 20 64 75 72 69 6e  ge cache], durin
4660: 67 20 72 65 61 64 20 74 72 61 6e 73 61 63 74 69  g read transacti
4670: 6f 6e 73 2e 20 20 49 6e 20 61 70 70 6c 69 63 61  ons.  In applica
4680: 74 69 6f 6e 73 0a 20 20 74 68 61 74 20 64 6f 20  tions.  that do 
4690: 61 20 6c 6f 74 20 6f 66 20 72 65 61 64 73 20 6f  a lot of reads o
46a0: 66 20 6c 61 72 67 65 20 42 4c 4f 42 73 2c 20 74  f large BLOBs, t
46b0: 68 69 73 20 6f 70 74 69 6f 6e 20 6d 69 67 68 74  his option might
46c0: 20 69 6d 70 72 6f 76 65 20 72 65 61 64 0a 20 20   improve read.  
46d0: 70 65 72 66 6f 72 6d 61 6e 63 65 2e 0a 7d 0a 0a  performance..}..
46e0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
46f0: 53 51 4c 49 54 45 5f 48 41 56 45 5f 49 53 4e 41  SQLITE_HAVE_ISNA
4700: 4e 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f  N} {.  If this o
4710: 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e 74  ption is present
4720: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 77 69  , then SQLite wi
4730: 6c 6c 20 75 73 65 20 74 68 65 20 69 73 6e 61 6e  ll use the isnan
4740: 28 29 20 66 75 6e 63 74 69 6f 6e 20 66 72 6f 6d  () function from
4750: 0a 20 20 74 68 65 20 73 79 73 74 65 6d 20 6d 61  .  the system ma
4760: 74 68 20 6c 69 62 72 61 72 79 2e 20 20 54 68 69  th library.  Thi
4770: 73 20 69 73 20 61 6e 20 61 6c 69 61 73 20 66 6f  s is an alias fo
4780: 72 20 74 68 65 20 5b 48 41 56 45 5f 49 53 4e 41  r the [HAVE_ISNA
4790: 4e 5d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  N] configuration
47a0: 0a 20 20 6f 70 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f  .  option..}..CO
47b0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
47c0: 4c 49 54 45 5f 4f 53 5f 4f 54 48 45 52 3d 3c 69  LITE_OS_OTHER=<i
47d0: 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c  >&lt;0 or 1&gt;<
47e0: 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20 6f 70 74  /i>} {.  The opt
47f0: 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74  ion causes SQLit
4800: 65 20 74 6f 20 6f 6d 69 74 20 69 74 73 20 62 75  e to omit its bu
4810: 69 6c 74 2d 69 6e 20 6f 70 65 72 61 74 69 6e 67  ilt-in operating
4820: 20 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61 63   system interfac
4830: 65 73 0a 20 20 66 6f 72 20 55 6e 69 78 2c 20 57  es.  for Unix, W
4840: 69 6e 64 6f 77 73 2c 20 61 6e 64 20 4f 53 2f 32  indows, and OS/2
4850: 2e 20 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67  .  The resulting
4860: 20 6c 69 62 72 61 72 79 20 77 69 6c 6c 20 68 61   library will ha
4870: 76 65 20 6e 6f 20 64 65 66 61 75 6c 74 0a 20 20  ve no default.  
4880: 5b 73 71 6c 69 74 65 33 5f 76 66 73 20 7c 20 6f  [sqlite3_vfs | o
4890: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
48a0: 69 6e 74 65 72 66 61 63 65 5d 2e 20 20 41 70 70  interface].  App
48b0: 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73 74 20 75  lications must u
48c0: 73 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 76 66  se.  [sqlite3_vf
48d0: 73 5f 72 65 67 69 73 74 65 72 28 29 5d 20 74 6f  s_register()] to
48e0: 20 72 65 67 69 73 74 65 72 20 61 6e 20 61 70 70   register an app
48f0: 72 6f 70 72 69 61 74 65 20 69 6e 74 65 72 66 61  ropriate interfa
4900: 63 65 20 62 65 66 6f 72 65 0a 20 20 75 73 69 6e  ce before.  usin
4910: 67 20 53 51 4c 69 74 65 2e 20 20 41 70 70 6c 69  g SQLite.  Appli
4920: 63 61 74 69 6f 6e 73 20 6d 75 73 74 20 61 6c 73  cations must als
4930: 6f 20 73 75 70 70 6c 79 20 69 6d 70 6c 65 6d 65  o supply impleme
4940: 6e 74 61 74 69 6f 6e 73 20 66 6f 72 20 74 68 65  ntations for the
4950: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69  .  [sqlite3_os_i
4960: 6e 69 74 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69  nit()] and [sqli
4970: 74 65 33 5f 6f 73 5f 65 6e 64 28 29 5d 20 69 6e  te3_os_end()] in
4980: 74 65 72 66 61 63 65 73 2e 20 20 54 68 65 20 75  terfaces.  The u
4990: 73 75 61 6c 20 70 72 61 63 74 69 63 65 0a 20 20  sual practice.  
49a0: 69 73 20 66 6f 72 20 74 68 65 20 73 75 70 70 6c  is for the suppl
49b0: 69 65 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f  ied [sqlite3_os_
49c0: 69 6e 69 74 28 29 5d 20 74 6f 20 69 6e 76 6f 6b  init()] to invok
49d0: 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 72  e [sqlite3_vfs_r
49e0: 65 67 69 73 74 65 72 28 29 5d 2e 0a 20 20 53 51  egister()]..  SQ
49f0: 4c 69 74 65 20 77 69 6c 6c 20 61 75 74 6f 6d 61  Lite will automa
4a00: 74 69 63 61 6c 6c 79 20 69 6e 76 6f 6b 65 20 5b  tically invoke [
4a10: 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28  sqlite3_os_init(
4a20: 29 5d 20 77 68 65 6e 20 69 74 20 69 6e 69 74 69  )] when it initi
4a30: 61 6c 69 7a 65 73 2e 0a 0a 20 20 54 68 69 73 20  alizes...  This 
4a40: 6f 70 74 69 6f 6e 20 69 73 20 74 79 70 69 63 61  option is typica
4a50: 6c 6c 79 20 75 73 65 64 20 77 68 65 6e 20 62 75  lly used when bu
4a60: 69 6c 64 69 6e 67 20 53 51 4c 69 74 65 20 66 6f  ilding SQLite fo
4a70: 72 20 61 6e 20 65 6d 62 65 64 64 65 64 0a 20 20  r an embedded.  
4a80: 70 6c 61 74 66 6f 72 6d 20 77 69 74 68 20 61 20  platform with a 
4a90: 63 75 73 74 6f 6d 20 6f 70 65 72 61 74 69 6e 67  custom operating
4aa0: 20 73 79 73 74 65 6d 2e 0a 7d 0a 0a 43 4f 4d 50   system..}..COMP
4ab0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
4ac0: 54 45 5f 53 45 43 55 52 45 5f 44 45 4c 45 54 45  TE_SECURE_DELETE
4ad0: 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70 69  } {.  This compi
4ae0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63  le-time option c
4af0: 68 61 6e 67 65 73 20 74 68 65 20 64 65 66 61 75  hanges the defau
4b00: 6c 74 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68  lt setting of th
4b10: 65 0a 20 20 5b 73 65 63 75 72 65 5f 64 65 6c 65  e.  [secure_dele
4b20: 74 65 20 70 72 61 67 6d 61 5d 2e 20 20 57 68 65  te pragma].  Whe
4b30: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
4b40: 20 6e 6f 74 20 75 73 65 64 2c 20 73 65 63 75 72   not used, secur
4b50: 65 5f 64 65 6c 65 74 65 20 64 65 66 61 75 6c 74  e_delete default
4b60: 73 0a 20 20 74 6f 20 6f 66 66 2e 20 20 57 68 65  s.  to off.  Whe
4b70: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
4b80: 20 70 72 65 73 65 6e 74 2c 20 73 65 63 75 72 65   present, secure
4b90: 5f 64 65 6c 65 74 65 20 64 65 66 61 75 6c 74 73  _delete defaults
4ba0: 20 74 6f 20 6f 6e 2e 0a 0a 20 20 54 68 65 20 73   to on...  The s
4bb0: 65 63 75 72 65 5f 64 65 6c 65 74 65 20 73 65 74  ecure_delete set
4bc0: 74 69 6e 67 20 63 61 75 73 65 73 20 64 65 6c 65  ting causes dele
4bd0: 74 65 64 20 63 6f 6e 74 65 6e 74 20 74 6f 20 62  ted content to b
4be0: 65 20 6f 76 65 72 77 72 69 74 74 65 6e 20 77 69  e overwritten wi
4bf0: 74 68 0a 20 20 7a 65 72 6f 73 2e 20 20 54 68 65  th.  zeros.  The
4c00: 72 65 20 69 73 20 61 20 73 6d 61 6c 6c 20 70 65  re is a small pe
4c10: 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e 61 6c 74  rformance penalt
4c20: 79 20 66 6f 72 20 74 68 69 73 20 73 69 6e 63 65  y for this since
4c30: 20 61 64 64 69 74 69 6f 6e 61 6c 20 49 2f 4f 0a   additional I/O.
4c40: 20 20 6d 75 73 74 20 6f 63 63 75 72 2e 20 20 4f    must occur.  O
4c50: 6e 20 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64  n the other hand
4c60: 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20  , secure_delete 
4c70: 63 61 6e 20 70 72 65 76 65 6e 74 20 73 65 6e 73  can prevent sens
4c80: 69 74 69 76 65 20 0a 20 20 69 6e 66 6f 72 6d 61  itive .  informa
4c90: 74 69 6f 6e 20 66 72 6f 6d 20 6c 69 6e 67 65 72  tion from linger
4ca0: 69 6e 67 20 69 6e 20 75 6e 75 73 65 64 20 70 61  ing in unused pa
4cb0: 72 74 73 20 6f 66 20 74 68 65 20 64 61 74 61 62  rts of the datab
4cc0: 61 73 65 20 66 69 6c 65 20 61 66 74 65 72 20 69  ase file after i
4cd0: 74 0a 20 20 68 61 73 20 61 6c 6c 65 67 65 64 6c  t.  has allegedl
4ce0: 79 20 62 65 65 6e 20 64 65 6c 65 74 65 64 2e 20  y been deleted. 
4cf0: 20 53 65 65 20 74 68 65 20 64 6f 63 75 6d 65 6e   See the documen
4d00: 74 61 74 69 6f 6e 20 6f 6e 20 74 68 65 0a 20 20  tation on the.  
4d10: 5b 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 70  [secure_delete p
4d20: 72 61 67 6d 61 5d 20 66 6f 72 20 61 64 64 69 74  ragma] for addit
4d30: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
4d40: 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  n..}..COMPILE_OP
4d50: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 48 52  TION {SQLITE_THR
4d60: 45 41 44 53 41 46 45 3d 3c 69 3e 26 6c 74 3b 30  EADSAFE=<i>&lt;0
4d70: 20 6f 72 20 31 20 6f 72 20 32 26 67 74 3b 3c 2f   or 1 or 2&gt;</
4d80: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  i>} {.  This opt
4d90: 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65  ion controls whe
4da0: 74 68 65 72 20 6f 72 20 6e 6f 74 20 63 6f 64 65  ther or not code
4db0: 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20   is included in 
4dc0: 53 51 4c 69 74 65 20 74 6f 0a 20 20 65 6e 61 62  SQLite to.  enab
4dd0: 6c 65 20 69 74 20 74 6f 20 6f 70 65 72 61 74 65  le it to operate
4de0: 20 73 61 66 65 6c 79 20 69 6e 20 61 20 6d 75 6c   safely in a mul
4df0: 74 69 74 68 72 65 61 64 65 64 20 65 6e 76 69 72  tithreaded envir
4e00: 6f 6e 6d 65 6e 74 2e 20 20 54 68 65 0a 20 20 64  onment.  The.  d
4e10: 65 66 61 75 6c 74 20 69 73 20 53 51 4c 49 54 45  efault is SQLITE
4e20: 5f 54 48 52 45 41 44 53 41 46 45 3d 31 20 77 68  _THREADSAFE=1 wh
4e30: 69 63 68 20 69 73 20 73 61 66 65 20 66 6f 72 20  ich is safe for 
4e40: 75 73 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68  use in a multith
4e50: 72 65 61 64 65 64 0a 20 20 65 6e 76 69 72 6f 6e  readed.  environ
4e60: 6d 65 6e 74 2e 20 20 57 68 65 6e 20 63 6f 6d 70  ment.  When comp
4e70: 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54 45  iled with SQLITE
4e80: 5f 54 48 52 45 41 44 53 41 46 45 3d 30 20 61 6c  _THREADSAFE=0 al
4e90: 6c 20 6d 75 74 65 78 69 6e 67 20 63 6f 64 65 0a  l mutexing code.
4ea0: 20 20 69 73 20 6f 6d 69 74 74 65 64 20 61 6e 64    is omitted and
4eb0: 20 69 74 20 69 73 20 75 6e 73 61 66 65 20 74 6f   it is unsafe to
4ec0: 20 75 73 65 20 53 51 4c 69 74 65 20 69 6e 20 61   use SQLite in a
4ed0: 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 70   multithreaded p
4ee0: 72 6f 67 72 61 6d 2e 0a 20 20 57 68 65 6e 20 63  rogram..  When c
4ef0: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c  ompiled with SQL
4f00: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32  ITE_THREADSAFE=2
4f10: 2c 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65 20  , SQLite can be 
4f20: 75 73 65 64 20 69 6e 20 61 20 6d 75 6c 74 69 74  used in a multit
4f30: 68 72 65 61 64 65 64 0a 20 20 70 72 6f 67 72 61  hreaded.  progra
4f40: 6d 20 73 6f 20 6c 6f 6e 67 20 61 73 20 6e 6f 20  m so long as no 
4f50: 74 77 6f 20 74 68 72 65 61 64 73 20 61 74 74 65  two threads atte
4f60: 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65 20 73  mpt to use the s
4f70: 61 6d 65 0a 20 20 5b 64 61 74 61 62 61 73 65 20  ame.  [database 
4f80: 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 28 6f 72 20  connection] (or 
4f90: 61 6e 79 20 5b 70 72 65 70 61 72 65 64 20 73 74  any [prepared st
4fa0: 61 74 65 6d 65 6e 74 73 5d 20 64 65 72 69 76 65  atements] derive
4fb0: 64 20 66 72 6f 6d 0a 20 20 74 68 61 74 20 64 61  d from.  that da
4fc0: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
4fd0: 6e 29 20 61 74 20 74 68 65 20 73 61 6d 65 20 74  n) at the same t
4fe0: 69 6d 65 2e 0a 0a 20 20 54 6f 20 70 75 74 20 69  ime...  To put i
4ff0: 74 20 61 6e 6f 74 68 65 72 20 77 61 79 2c 20 53  t another way, S
5000: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
5010: 3d 31 20 73 65 74 73 20 74 68 65 20 64 65 66 61  =1 sets the defa
5020: 75 6c 74 0a 20 20 5b 74 68 72 65 61 64 69 6e 67  ult.  [threading
5030: 20 6d 6f 64 65 5d 20 74 6f 20 53 65 72 69 61 6c   mode] to Serial
5040: 69 7a 65 64 2e 20 20 53 51 4c 49 54 45 5f 54 48  ized.  SQLITE_TH
5050: 52 45 41 44 53 41 46 45 3d 32 20 73 65 74 73 20  READSAFE=2 sets 
5060: 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20 5b 74  the default.  [t
5070: 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74  hreading mode] t
5080: 6f 20 4d 75 6c 74 69 2d 74 68 72 65 61 64 65 64  o Multi-threaded
5090: 2e 20 20 41 6e 64 20 53 51 4c 49 54 45 5f 54 48  .  And SQLITE_TH
50a0: 52 45 41 44 53 41 46 45 3d 30 20 73 65 74 73 20  READSAFE=0 sets 
50b0: 74 68 65 0a 20 20 5b 74 68 72 65 61 64 69 6e 67  the.  [threading
50c0: 20 6d 6f 64 65 5d 20 74 6f 20 53 69 6e 67 6c 65   mode] to Single
50d0: 2d 74 68 72 65 61 64 65 64 2e 0a 0a 20 20 54 68  -threaded...  Th
50e0: 65 20 76 61 6c 75 65 20 6f 66 20 53 51 4c 49 54  e value of SQLIT
50f0: 45 5f 54 48 52 45 41 44 53 41 46 45 20 63 61 6e  E_THREADSAFE can
5100: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20 61   be determined a
5110: 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20 75 73 69  t run-time.  usi
5120: 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  ng the [sqlite3_
5130: 74 68 72 65 61 64 73 61 66 65 28 29 5d 20 69 6e  threadsafe()] in
5140: 74 65 72 66 61 63 65 2e 0a 0a 20 20 57 68 65 6e  terface...  When
5150: 20 53 51 4c 69 74 65 20 68 61 73 20 62 65 65 6e   SQLite has been
5160: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53   compiled with S
5170: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
5180: 3d 31 20 6f 72 0a 20 20 53 51 4c 49 54 45 5f 54  =1 or.  SQLITE_T
5190: 48 52 45 41 44 53 41 46 45 3d 32 20 74 68 65 6e  HREADSAFE=2 then
51a0: 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20   the [threading 
51b0: 6d 6f 64 65 5d 0a 20 20 63 61 6e 20 62 65 20 61  mode].  can be a
51c0: 6c 74 65 72 65 64 20 61 74 20 72 75 6e 2d 74 69  ltered at run-ti
51d0: 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71  me using the [sq
51e0: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20  lite3_config()] 
51f0: 69 6e 74 65 72 66 61 63 65 20 74 6f 67 65 74 68  interface togeth
5200: 65 72 0a 20 20 77 69 74 68 20 6f 6e 65 20 6f 66  er.  with one of
5210: 20 74 68 65 73 65 20 76 65 72 62 73 3a 0a 0a 20   these verbs:.. 
5220: 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 5b 53 51 4c   <ul>.  <li>[SQL
5230: 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c  ITE_CONFIG_SINGL
5240: 45 54 48 52 45 41 44 5d 0a 20 20 3c 6c 69 3e 5b  ETHREAD].  <li>[
5250: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55  SQLITE_CONFIG_MU
5260: 4c 54 49 54 48 52 45 41 44 5d 0a 20 20 3c 6c 69  LTITHREAD].  <li
5270: 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  >[SQLITE_CONFIG_
5280: 53 45 52 49 41 4c 49 5a 45 44 5d 0a 20 20 3c 2f  SERIALIZED].  </
5290: 75 6c 3e 0a 0a 20 20 54 68 65 20 5b 53 51 4c 49  ul>..  The [SQLI
52a0: 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58 5d  TE_OPEN_NOMUTEX]
52b0: 20 61 6e 64 0a 20 20 5b 53 51 4c 49 54 45 5f 4f   and.  [SQLITE_O
52c0: 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 5d 20 66  PEN_FULLMUTEX] f
52d0: 6c 61 67 73 20 74 6f 20 5b 73 71 6c 69 74 65 33  lags to [sqlite3
52e0: 5f 6f 70 65 6e 5f 76 32 28 29 5d 20 63 61 6e 20  _open_v2()] can 
52f0: 61 6c 73 6f 20 62 65 20 75 73 65 64 0a 20 20 74  also be used.  t
5300: 6f 20 61 64 6a 75 73 74 20 74 68 65 20 5b 74 68  o adjust the [th
5310: 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 6f 66  reading mode] of
5320: 20 69 6e 64 69 76 69 64 75 61 6c 20 5b 64 61 74   individual [dat
5330: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
5340: 73 5d 0a 20 20 61 74 20 72 75 6e 2d 74 69 6d 65  s].  at run-time
5350: 2e 0a 0a 20 20 4e 6f 74 65 20 74 68 61 74 20 77  ...  Note that w
5360: 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20 63 6f  hen SQLite is co
5370: 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49  mpiled with SQLI
5380: 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 2c  TE_THREADSAFE=0,
5390: 20 74 68 65 20 63 6f 64 65 0a 20 20 74 6f 20 6d   the code.  to m
53a0: 61 6b 65 20 53 51 4c 69 74 65 20 74 68 72 65 61  ake SQLite threa
53b0: 64 73 61 66 65 20 69 73 20 6f 6d 69 74 74 65 64  dsafe is omitted
53c0: 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e   from the build.
53d0: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 63 63 75    When this occu
53e0: 72 73 2c 0a 20 20 69 74 20 69 73 20 69 6d 70 6f  rs,.  it is impo
53f0: 73 73 69 62 6c 65 20 74 6f 20 63 68 61 6e 67 65  ssible to change
5400: 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20   the [threading 
5410: 6d 6f 64 65 5d 20 61 74 20 73 74 61 72 74 2d 74  mode] at start-t
5420: 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69 6d 65 2e  ime or run-time.
5430: 0a 0a 20 20 53 65 65 20 74 68 65 20 5b 74 68 72  ..  See the [thr
5440: 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 64 6f 63  eading mode] doc
5450: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61  umentation for a
5460: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
5470: 61 74 69 6f 6e 0a 20 20 6f 6e 20 61 73 70 65 63  ation.  on aspec
5480: 74 73 20 6f 66 20 75 73 69 6e 67 20 53 51 4c 69  ts of using SQLi
5490: 74 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72  te in a multithr
54a0: 65 61 64 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e  eaded environmen
54b0: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
54c0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 45 4d  TION {SQLITE_TEM
54d0: 50 5f 53 54 4f 52 45 3d 3c 69 3e 26 6c 74 3b 30  P_STORE=<i>&lt;0
54e0: 20 74 68 72 6f 75 67 68 20 33 26 67 74 3b 3c 2f   through 3&gt;</
54f0: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  i>} {.  This opt
5500: 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65  ion controls whe
5510: 74 68 65 72 20 74 65 6d 70 6f 72 61 72 79 20 66  ther temporary f
5520: 69 6c 65 73 20 61 72 65 20 73 74 6f 72 65 64 20  iles are stored 
5530: 6f 6e 20 64 69 73 6b 20 6f 72 0a 20 20 69 6e 20  on disk or.  in 
5540: 6d 65 6d 6f 72 79 2e 20 20 54 68 65 20 6d 65 61  memory.  The mea
5550: 6e 69 6e 67 73 20 66 6f 72 20 76 61 72 69 6f 75  nings for variou
5560: 73 20 73 65 74 74 69 6e 67 73 20 6f 66 20 74 68  s settings of th
5570: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a  is compile-time.
5580: 20 20 6f 70 74 69 6f 6e 20 61 72 65 20 61 73 20    option are as 
5590: 66 6f 6c 6c 6f 77 73 3a 0a 0a 20 20 3c 74 61 62  follows:..  <tab
55a0: 6c 65 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22  le cellpadding="
55b0: 32 22 20 62 6f 72 64 65 72 3d 22 31 22 3e 0a 20  2" border="1">. 
55c0: 20 3c 74 72 3e 3c 74 68 3e 53 51 4c 49 54 45 5f   <tr><th>SQLITE_
55d0: 54 45 4d 50 5f 53 54 4f 52 45 3c 2f 74 68 3e 3c  TEMP_STORE</th><
55e0: 74 68 3e 4d 65 61 6e 69 6e 67 3c 2f 74 68 3e 3c  th>Meaning</th><
55f0: 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61  /tr>.  <tr><td a
5600: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c  lign="center">0<
5610: 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75  /td><td>Always u
5620: 73 65 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c  se temporary fil
5630: 65 73 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c  es</td></tr>.  <
5640: 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  tr><td align="ce
5650: 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e  nter">1</td><td>
5660: 55 73 65 20 66 69 6c 65 73 20 62 79 20 64 65 66  Use files by def
5670: 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f 77 20 74  ault but allow t
5680: 68 65 0a 20 20 5b 50 52 41 47 4d 41 20 74 65 6d  he.  [PRAGMA tem
5690: 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64  p_store] command
56a0: 20 74 6f 20 6f 76 65 72 72 69 64 65 3c 2f 74 64   to override</td
56b0: 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64  ></tr>.  <tr><td
56c0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
56d0: 32 3c 2f 74 64 3e 3c 74 64 3e 55 73 65 20 6d 65  2</td><td>Use me
56e0: 6d 6f 72 79 20 62 79 20 64 65 66 61 75 6c 74 20  mory by default 
56f0: 62 75 74 20 61 6c 6c 6f 77 20 74 68 65 0a 20 20  but allow the.  
5700: 5b 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f  [PRAGMA temp_sto
5710: 72 65 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 6f  re] command to o
5720: 76 65 72 72 69 64 65 3c 2f 74 64 3e 3c 2f 74 72  verride</td></tr
5730: 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67  >.  <tr><td alig
5740: 6e 3d 22 63 65 6e 74 65 72 22 3e 33 3c 2f 74 64  n="center">3</td
5750: 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75 73 65 20  ><td>Always use 
5760: 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f 74 72 3e  memory</td></tr>
5770: 0a 20 20 3c 2f 74 61 62 6c 65 3e 0a 0a 20 20 54  .  </table>..  T
5780: 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69  he default setti
5790: 6e 67 20 69 73 20 31 2e 20 20 0a 20 20 41 64 64  ng is 1.  .  Add
57a0: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
57b0: 69 6f 6e 20 63 61 6e 20 62 65 20 66 6f 75 6e 64  ion can be found
57c0: 20 69 6e 20 5b 74 65 6d 70 73 74 6f 72 65 20 7c   in [tempstore |
57d0: 20 74 65 6d 70 66 69 6c 65 73 2e 68 74 6d 6c 5d   tempfiles.html]
57e0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
57f0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 52 41 43  ION {SQLITE_TRAC
5800: 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d 3c 69 3e  E_SIZE_LIMIT=<i>
5810: 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20 74 68  N</i>} {.  If th
5820: 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  is macro is defi
5830: 6e 65 64 20 74 6f 20 61 20 70 6f 73 69 74 69 76  ned to a positiv
5840: 65 20 69 6e 74 65 67 65 72 20 3c 69 3e 4e 3c 2f  e integer <i>N</
5850: 69 3e 2c 20 74 68 65 6e 20 74 68 65 20 6c 65 6e  i>, then the len
5860: 67 74 68 20 6f 66 0a 20 20 73 74 72 69 6e 67 73  gth of.  strings
5870: 20 61 6e 64 20 42 4c 4f 42 20 74 68 61 74 20 61   and BLOB that a
5880: 72 65 20 65 78 70 61 6e 64 65 64 20 69 6e 74 6f  re expanded into
5890: 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e 20 74   parameters in t
58a0: 68 65 20 6f 75 74 70 75 74 20 6f 66 0a 20 20 5b  he output of.  [
58b0: 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 5d  sqlite3_trace()]
58c0: 20 69 73 20 6c 69 6d 69 74 65 64 20 74 6f 20 3c   is limited to <
58d0: 69 3e 4e 3c 2f 69 3e 20 62 79 74 65 73 2e 20 20  i>N</i> bytes.  
58e0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
58f0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 53 45 5f 55  ON {SQLITE_USE_U
5900: 52 49 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  RI} {.  This opt
5910: 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b  ion causes the [
5920: 55 52 49 20 66 69 6c 65 6e 61 6d 65 5d 20 70 72  URI filename] pr
5930: 6f 63 65 73 73 20 6c 6f 67 69 63 20 74 6f 20 62  ocess logic to b
5940: 65 20 65 6e 61 62 6c 65 64 20 62 79 20 0a 20 20  e enabled by .  
5950: 64 65 66 61 75 6c 74 2e 20 20 0a 7d 0a 0a 3c 2f  default.  .}..</
5960: 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 65  tcl>..<a name="e
5970: 6e 61 62 6c 65 66 65 61 74 75 72 65 73 22 3e 3c  nablefeatures"><
5980: 2f 61 3e 0a 3c 68 32 3e 31 2e 35 20 4f 70 74 69  /a>.<h2>1.5 Opti
5990: 6f 6e 73 20 54 6f 20 45 6e 61 62 6c 65 20 46 65  ons To Enable Fe
59a0: 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20  atures Normally 
59b0: 54 75 72 6e 65 64 20 4f 66 66 3c 2f 68 32 3e 0a  Turned Off</h2>.
59c0: 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f  .<tcl>.COMPILE_O
59d0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 41 4c  PTION {SQLITE_AL
59e0: 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f 52 49 54  LOW_URI_AUTHORIT
59f0: 59 7d 20 7b 0a 20 20 5b 55 52 49 20 66 69 6c 65  Y} {.  [URI file
5a00: 6e 61 6d 65 73 5d 20 6e 6f 72 6d 61 6c 6c 79 20  names] normally 
5a10: 74 68 72 6f 77 73 20 61 6e 20 65 72 72 6f 72 20  throws an error 
5a20: 69 66 20 74 68 65 20 61 75 74 68 6f 72 69 74 79  if the authority
5a30: 20 73 65 63 74 69 6f 6e 20 69 73 0a 20 20 6e 6f   section is.  no
5a40: 74 20 65 69 74 68 65 72 20 65 6d 70 74 79 20 6f  t either empty o
5a50: 72 20 22 6c 6f 63 61 6c 68 6f 73 74 22 2e 20 20  r "localhost".  
5a60: 48 6f 77 65 76 65 72 2c 20 69 66 20 53 51 4c 69  However, if SQLi
5a70: 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77  te is compiled w
5a80: 69 74 68 0a 20 20 74 68 65 20 53 51 4c 49 54 45  ith.  the SQLITE
5a90: 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f  _ALLOW_URI_AUTHO
5aa0: 52 49 54 59 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  RITY compile-tim
5ab0: 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74  e option, then t
5ac0: 68 65 20 55 52 49 20 69 73 0a 20 20 63 6f 6e 76  he URI is.  conv
5ad0: 65 72 74 65 64 20 69 6e 74 6f 20 61 20 55 6e 69  erted into a Uni
5ae0: 66 6f 72 6d 20 4e 61 6d 69 6e 67 20 43 6f 6e 76  form Naming Conv
5af0: 65 6e 74 69 6f 6e 20 28 55 4e 43 29 20 66 69 6c  ention (UNC) fil
5b00: 65 6e 61 6d 65 20 61 6e 64 20 70 61 73 73 65 64  ename and passed
5b10: 0a 20 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 75  .  down to the u
5b20: 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61 74  nderlying operat
5b30: 69 6e 67 20 73 79 73 74 65 6d 20 74 68 61 74 20  ing system that 
5b40: 77 61 79 2e 20 20 0a 20 20 3c 70 3e 0a 20 20 53  way.  .  <p>.  S
5b50: 6f 6d 65 20 66 75 74 75 72 65 20 76 65 72 73 69  ome future versi
5b60: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 61  ons of SQLite ma
5b70: 79 20 63 68 61 6e 67 65 20 74 6f 20 65 6e 61 62  y change to enab
5b80: 6c 65 20 74 68 69 73 20 66 65 61 74 75 72 65 0a  le this feature.
5b90: 20 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a    by default..}.
5ba0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
5bb0: 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43 4f 56  SQLITE_ALLOW_COV
5bc0: 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e  ERING_INDEX_SCAN
5bd0: 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67  =<i>&lt;0 or 1&g
5be0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  t;</i>} {.  This
5bf0: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 20 6d 61   C-preprocess ma
5c00: 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 74  cro determines t
5c10: 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69  he default setti
5c20: 6e 67 20 6f 66 20 74 68 65 0a 20 20 5b 53 51 4c  ng of the.  [SQL
5c30: 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52  ITE_CONFIG_COVER
5c40: 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 5d 20  ING_INDEX_SCAN] 
5c50: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65  configuration se
5c60: 74 74 69 6e 67 2e 20 20 49 74 20 64 65 66 61 75  tting.  It defau
5c70: 6c 74 73 0a 20 20 74 6f 20 31 20 28 6f 6e 29 20  lts.  to 1 (on) 
5c80: 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68 61 74  which means that
5c90: 20 63 6f 76 65 72 69 6e 67 20 69 6e 64 69 63 65   covering indice
5ca0: 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 66  s are used for f
5cb0: 75 6c 6c 20 74 61 62 6c 65 0a 20 20 73 63 61 6e  ull table.  scan
5cc0: 73 20 77 68 65 72 65 20 70 6f 73 73 69 62 6c 65  s where possible
5cd0: 2c 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 72 65  , in order to re
5ce0: 64 75 63 65 20 49 2f 4f 20 61 6e 64 20 69 6d 70  duce I/O and imp
5cf0: 72 6f 76 65 20 70 65 72 66 6f 72 6d 61 6e 63 65  rove performance
5d00: 2e 0a 20 20 48 6f 77 65 76 65 72 2c 20 74 68 65  ..  However, the
5d10: 20 75 73 65 20 6f 66 20 61 20 63 6f 76 65 72 69   use of a coveri
5d20: 6e 67 20 69 6e 64 65 78 20 66 6f 72 20 61 20 66  ng index for a f
5d30: 75 6c 6c 20 73 63 61 6e 20 77 69 6c 6c 20 63 61  ull scan will ca
5d40: 75 73 65 20 72 65 73 75 6c 74 73 0a 20 20 74 6f  use results.  to
5d50: 20 61 70 70 65 61 72 20 69 6e 20 61 20 64 69 66   appear in a dif
5d60: 66 65 72 65 6e 74 20 6f 72 64 65 72 20 66 72 6f  ferent order fro
5d70: 6d 20 6c 65 67 61 63 79 2c 20 77 68 69 63 68 20  m legacy, which 
5d80: 63 6f 75 6c 64 20 63 61 75 73 65 20 73 6f 6d 65  could cause some
5d90: 0a 20 20 28 69 6e 63 6f 72 72 65 63 74 6c 79 2d  .  (incorrectly-
5da0: 63 6f 64 65 64 29 20 6c 65 67 61 63 79 20 61 70  coded) legacy ap
5db0: 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20 62 72  plications to br
5dc0: 65 61 6b 2e 20 20 48 65 6e 63 65 2c 20 74 68 65  eak.  Hence, the
5dd0: 20 63 6f 76 65 72 69 6e 67 0a 20 20 69 6e 64 65   covering.  inde
5de0: 78 20 73 63 61 6e 20 6f 70 74 69 6f 6e 20 63 61  x scan option ca
5df0: 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 61 74  n be disabled at
5e00: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 6e   compile-time on
5e10: 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 77 68   systems that wh
5e20: 61 74 0a 20 20 74 6f 20 6d 69 6e 69 6d 69 7a 65  at.  to minimize
5e30: 20 74 68 65 69 72 20 72 69 73 6b 20 6f 66 20 65   their risk of e
5e40: 78 70 6f 73 69 6e 67 20 65 72 72 6f 72 73 20 69  xposing errors i
5e50: 6e 20 6c 65 67 61 63 79 20 61 70 70 6c 69 63 61  n legacy applica
5e60: 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  tions..}..COMPIL
5e70: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
5e80: 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d 45  _ENABLE_8_3_NAME
5e90: 53 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 32 26  S=<i>&lt;1 or 2&
5ea0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20  gt;</i>} {.  If 
5eb0: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
5ec0: 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66  sor macro is def
5ed0: 69 6e 65 64 2c 20 74 68 65 6e 20 65 78 74 72 61  ined, then extra
5ee0: 20 63 6f 64 65 20 69 73 0a 20 20 69 6e 63 6c 75   code is.  inclu
5ef0: 64 65 64 20 74 68 61 74 20 61 6c 6c 6f 77 73 20  ded that allows 
5f00: 53 51 4c 69 74 65 20 74 6f 20 66 75 6e 63 74 69  SQLite to functi
5f10: 6f 6e 20 6f 6e 20 61 20 66 69 6c 65 73 79 73 74  on on a filesyst
5f20: 65 6d 20 74 68 61 74 0a 20 20 6f 6e 6c 79 20 73  em that.  only s
5f30: 75 70 70 6f 72 74 20 38 2b 33 20 66 69 6c 65 6e  upport 8+3 filen
5f40: 61 6d 65 73 2e 20 20 49 66 20 74 68 65 20 76 61  ames.  If the va
5f50: 6c 75 65 20 6f 66 20 74 68 69 73 20 6d 61 63 72  lue of this macr
5f60: 6f 20 69 73 20 31 2c 0a 20 20 74 68 65 6e 20 74  o is 1,.  then t
5f70: 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76  he default behav
5f80: 69 6f 72 20 69 73 20 74 6f 20 63 6f 6e 74 69 6e  ior is to contin
5f90: 75 65 20 74 6f 20 75 73 65 20 6c 6f 6e 67 20 66  ue to use long f
5fa0: 69 6c 65 6e 61 6d 65 73 20 61 6e 64 0a 20 20 74  ilenames and.  t
5fb0: 6f 20 6f 6e 6c 79 20 75 73 65 20 38 2b 33 20 66  o only use 8+3 f
5fc0: 69 6c 65 6e 61 6d 65 73 20 69 66 20 74 68 65 20  ilenames if the 
5fd0: 0a 20 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  .  database conn
5fe0: 65 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 65 64  ection is opened
5ff0: 20 75 73 69 6e 67 20 5b 55 52 49 20 66 69 6c 65   using [URI file
6000: 6e 61 6d 65 73 5d 20 77 69 74 68 0a 20 20 74 68  names] with.  th
6010: 65 20 22 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73  e "<tt>8_3_names
6020: 3d 31 3c 2f 74 74 3e 22 20 71 75 65 72 79 20 70  =1</tt>" query p
6030: 61 72 61 6d 65 74 65 72 2e 20 20 49 66 20 74 68  arameter.  If th
6040: 65 20 76 61 6c 75 65 20 6f 66 0a 20 20 74 68 69  e value of.  thi
6050: 73 20 6d 61 63 72 6f 20 69 73 20 32 2c 20 74 68  s macro is 2, th
6060: 65 6e 20 74 68 65 20 75 73 65 20 6f 66 20 38 2b  en the use of 8+
6070: 33 20 66 69 6c 65 6e 61 6d 65 73 20 62 65 63 6f  3 filenames beco
6080: 6d 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a  mes the default.
6090: 20 20 62 75 74 20 6d 61 79 20 62 65 20 64 69 73    but may be dis
60a0: 61 62 6c 65 64 20 6f 6e 20 75 73 69 6e 67 20 74  abled on using t
60b0: 68 65 20 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73  he <tt>8_3_names
60c0: 3d 30 3c 2f 74 74 3e 20 71 75 65 72 79 20 70 61  =0</tt> query pa
60d0: 72 61 6d 65 74 65 72 2e 0a 20 20 53 65 65 20 0a  rameter..  See .
60e0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
60f0: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
6100: 5f 41 50 49 5f 41 52 4d 4f 52 7d 20 7b 0a 20 20  _API_ARMOR} {.  
6110: 57 68 65 6e 20 64 65 66 69 6e 65 64 2c 20 74 68  When defined, th
6120: 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f  is C-preprocesso
6130: 72 20 6d 61 63 72 6f 20 61 63 74 69 76 61 74 65  r macro activate
6140: 73 20 65 78 74 72 61 20 63 6f 64 65 20 74 68 61  s extra code tha
6150: 74 0a 20 20 61 74 74 65 6d 70 74 73 20 74 6f 20  t.  attempts to 
6160: 64 65 74 65 63 74 20 6d 69 73 75 73 65 20 6f 66  detect misuse of
6170: 20 74 68 65 20 53 51 4c 69 74 65 20 41 50 49 2c   the SQLite API,
6180: 20 73 75 63 68 20 61 73 20 70 61 73 73 69 6e 67   such as passing
6190: 20 69 6e 20 4e 55 4c 4c 0a 20 20 70 6f 69 6e 74   in NULL.  point
61a0: 65 72 73 20 74 6f 20 72 65 71 75 69 72 65 64 20  ers to required 
61b0: 70 61 72 61 6d 65 74 65 72 73 20 6f 72 20 75 73  parameters or us
61c0: 69 6e 67 20 6f 62 6a 65 63 74 73 20 61 66 74 65  ing objects afte
61d0: 72 20 74 68 65 79 20 68 61 76 65 20 62 65 65 6e  r they have been
61e0: 0a 20 20 64 65 73 74 72 6f 79 65 64 2e 0a 7d 0a  .  destroyed..}.
61f0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
6200: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 41  {SQLITE_ENABLE_A
6210: 54 4f 4d 49 43 5f 57 52 49 54 45 7d 20 7b 0a 20  TOMIC_WRITE} {. 
6220: 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72   If this C-prepr
6230: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73  ocessor macro is
6240: 20 64 65 66 69 6e 65 64 20 61 6e 64 20 69 66 20   defined and if 
6250: 74 68 65 0a 20 20 78 44 65 76 69 63 65 43 68 61  the.  xDeviceCha
6260: 72 61 63 74 65 72 69 73 74 69 63 73 20 6d 65 74  racteristics met
6270: 68 6f 64 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f  hod of [sqlite3_
6280: 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65  io_methods] obje
6290: 63 74 20 66 6f 72 0a 20 20 61 20 64 61 74 61 62  ct for.  a datab
62a0: 61 73 65 20 66 69 6c 65 20 72 65 70 6f 72 74 73  ase file reports
62b0: 20 28 76 69 61 20 6f 6e 65 20 6f 66 20 74 68 65   (via one of the
62c0: 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41   [SQLITE_IOCAP_A
62d0: 54 4f 4d 49 43 5d 20 62 69 74 73 29 0a 20 20 74  TOMIC] bits).  t
62e0: 68 61 74 20 74 68 65 20 66 69 6c 65 73 79 73 74  hat the filesyst
62f0: 65 6d 20 73 75 70 70 6f 72 74 73 20 61 74 6f 6d  em supports atom
6300: 69 63 20 77 72 69 74 65 73 20 61 6e 64 20 69 66  ic writes and if
6310: 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 20   a transaction. 
6320: 20 69 6e 76 6f 6c 76 65 73 20 61 20 63 68 61 6e   involves a chan
6330: 67 65 20 74 6f 20 6f 6e 6c 79 20 61 20 73 69 6e  ge to only a sin
6340: 67 6c 65 20 70 61 67 65 20 6f 66 20 74 68 65 20  gle page of the 
6350: 64 61 74 61 62 61 73 65 20 66 69 6c 65 2c 0a 20  database file,. 
6360: 20 74 68 65 6e 20 74 68 65 20 74 72 61 6e 73 61   then the transa
6370: 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 73 20 77 69  ction commits wi
6380: 74 68 20 6a 75 73 74 20 61 20 73 69 6e 67 6c 65  th just a single
6390: 20 77 72 69 74 65 20 72 65 71 75 65 73 74 20 6f   write request o
63a0: 66 0a 20 20 61 20 73 69 6e 67 6c 65 20 70 61 67  f.  a single pag
63b0: 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  e of the databas
63c0: 65 20 61 6e 64 20 6e 6f 20 72 6f 6c 6c 62 61 63  e and no rollbac
63d0: 6b 20 6a 6f 75 72 6e 61 6c 20 69 73 20 63 72 65  k journal is cre
63e0: 61 74 65 64 0a 20 20 6f 72 20 77 72 69 74 74 65  ated.  or writte
63f0: 6e 2e 20 20 4f 6e 20 66 69 6c 65 73 79 73 74 65  n.  On filesyste
6400: 6d 73 20 74 68 61 74 20 73 75 70 70 6f 72 74 20  ms that support 
6410: 61 74 6f 6d 69 63 20 77 72 69 74 65 73 2c 20 74  atomic writes, t
6420: 68 69 73 0a 20 20 6f 70 74 69 6d 69 7a 61 74 69  his.  optimizati
6430: 6f 6e 20 63 61 6e 20 72 65 73 75 6c 74 20 69 6e  on can result in
6440: 20 73 69 67 6e 69 66 69 63 61 6e 74 20 73 70 65   significant spe
6450: 65 64 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 20  ed improvements 
6460: 66 6f 72 0a 20 20 73 6d 61 6c 6c 20 75 70 64 61  for.  small upda
6470: 74 65 73 2e 20 20 48 6f 77 65 76 65 72 2c 20 66  tes.  However, f
6480: 65 77 20 66 69 6c 65 73 79 73 74 65 6d 73 20 73  ew filesystems s
6490: 75 70 70 6f 72 74 20 74 68 69 73 20 63 61 70 61  upport this capa
64a0: 62 69 6c 69 74 79 0a 20 20 61 6e 64 20 74 68 65  bility.  and the
64b0: 20 63 6f 64 65 20 70 61 74 68 73 20 74 68 61 74   code paths that
64c0: 20 63 68 65 63 6b 20 66 6f 72 20 74 68 69 73 20   check for this 
64d0: 63 61 70 61 62 69 6c 69 74 79 20 73 6c 6f 77 20  capability slow 
64e0: 64 6f 77 6e 20 77 72 69 74 65 0a 20 20 70 65 72  down write.  per
64f0: 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 79 73 74  formance on syst
6500: 65 6d 73 20 74 68 61 74 20 6c 61 63 6b 20 61 74  ems that lack at
6510: 6f 6d 69 63 20 77 72 69 74 65 20 63 61 70 61 62  omic write capab
6520: 69 6c 69 74 79 2c 20 73 6f 20 74 68 69 73 0a 20  ility, so this. 
6530: 20 66 65 61 74 75 72 65 20 69 73 20 64 69 73 61   feature is disa
6540: 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e  bled by default.
6550: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6560: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
6570: 45 5f 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44 41 54  E_COLUMN_METADAT
6580: 41 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  A} {.  When this
6590: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C-preprocessor 
65a0: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
65b0: 2c 20 53 51 4c 69 74 65 20 69 6e 63 6c 75 64 65  , SQLite include
65c0: 73 20 73 6f 6d 65 0a 20 20 61 64 64 69 74 69 6f  s some.  additio
65d0: 6e 61 6c 20 41 50 49 73 20 74 68 61 74 20 70 72  nal APIs that pr
65e0: 6f 76 69 64 65 20 63 6f 6e 76 65 6e 69 65 6e 74  ovide convenient
65f0: 20 61 63 63 65 73 73 20 74 6f 20 6d 65 74 61 2d   access to meta-
6600: 64 61 74 61 20 61 62 6f 75 74 0a 20 20 74 61 62  data about.  tab
6610: 6c 65 73 20 61 6e 64 20 71 75 65 72 69 65 73 2e  les and queries.
6620: 20 20 54 68 65 20 41 50 49 73 20 74 68 61 74 20    The APIs that 
6630: 61 72 65 20 65 6e 61 62 6c 65 64 20 62 79 20 74  are enabled by t
6640: 68 69 73 20 6f 70 74 69 6f 6e 20 61 72 65 3a 0a  his option are:.
6650: 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 20 5b  .  <ul>.  <li> [
6660: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
6670: 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 29 5d 20  atabase_name()] 
6680: 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71  </li>.  <li> [sq
6690: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
66a0: 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 29 5d 20  abase_name16()] 
66b0: 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71  </li>.  <li> [sq
66c0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
66d0: 6c 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e  le_name()] </li>
66e0: 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33  .  <li> [sqlite3
66f0: 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61  _column_table_na
6700: 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20  me16()] </li>.  
6710: 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f  <li> [sqlite3_co
6720: 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
6730: 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e  ()] </li>.  <li>
6740: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
6750: 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 29  _origin_name16()
6760: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 2f 75 6c 3e 0a  ] </li>.  </ul>.
6770: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6780: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
6790: 5f 45 58 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54  _EXPLAIN_COMMENT
67a0: 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  S} {.  This opti
67b0: 6f 6e 20 61 64 64 73 20 65 78 74 72 61 20 6c 6f  on adds extra lo
67c0: 67 69 63 20 74 6f 20 53 51 4c 69 74 65 20 74 68  gic to SQLite th
67d0: 61 74 20 69 6e 73 65 72 74 73 20 63 6f 6d 6d 65  at inserts comme
67e0: 6e 74 20 74 65 78 74 20 69 6e 74 6f 20 74 68 65  nt text into the
67f0: 0a 20 20 6f 75 74 70 75 74 20 6f 66 20 5b 45 58  .  output of [EX
6800: 50 4c 41 49 4e 5d 2e 20 20 54 68 65 73 65 20 65  PLAIN].  These e
6810: 78 74 72 61 20 63 6f 6d 6d 65 6e 74 73 20 75 73  xtra comments us
6820: 65 20 65 78 74 72 61 20 6d 65 6d 6f 72 79 2c 20  e extra memory, 
6830: 74 68 75 73 0a 20 20 6d 61 6b 69 6e 67 20 5b 70  thus.  making [p
6840: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
6850: 74 73 5d 20 6c 61 72 67 65 72 20 61 6e 64 20 76  ts] larger and v
6860: 65 72 79 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f  ery slightly slo
6870: 77 65 72 2c 20 61 6e 64 20 73 6f 20 74 68 65 79  wer, and so they
6880: 20 61 72 65 0a 20 20 74 75 72 6e 65 64 20 6f 66   are.  turned of
6890: 66 20 62 79 20 64 65 66 61 75 6c 74 20 61 6e 64  f by default and
68a0: 20 69 6e 20 6d 6f 73 74 20 61 70 70 6c 69 63 61   in most applica
68b0: 74 69 6f 6e 2e 20 20 42 75 74 20 73 6f 6d 65 20  tion.  But some 
68c0: 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20 73 75  applications, su
68d0: 63 68 0a 20 20 61 73 20 74 68 65 20 5b 63 6f 6d  ch.  as the [com
68e0: 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c 5d  mand-line shell]
68f0: 20 66 6f 72 20 53 51 4c 69 74 65 2c 20 76 61 6c   for SQLite, val
6900: 75 65 20 63 6c 61 72 69 74 79 20 6f 66 20 45 58  ue clarity of EX
6910: 50 4c 41 49 4e 20 6f 75 74 70 75 74 0a 20 20 6f  PLAIN output.  o
6920: 76 65 72 20 72 61 77 20 70 65 72 66 6f 72 6d 61  ver raw performa
6930: 6e 63 65 20 61 6e 64 20 73 6f 20 74 68 69 73 20  nce and so this 
6940: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
6950: 69 6f 6e 20 69 73 20 61 76 61 69 6c 61 62 6c 65  ion is available
6960: 20 74 6f 20 74 68 65 6d 2e 0a 20 20 54 68 65 20   to them..  The 
6970: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45 58  SQLITE_ENABLE_EX
6980: 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53 20 63  PLAIN_COMMENTS c
6990: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
69a0: 6f 6e 20 69 73 20 61 6c 73 6f 20 65 6e 61 62 6c  on is also enabl
69b0: 65 64 0a 20 20 61 75 74 6f 6d 61 74 69 63 61 6c  ed.  automatical
69c0: 6c 79 20 69 66 20 5b 53 51 4c 49 54 45 5f 44 45  ly if [SQLITE_DE
69d0: 42 55 47 5d 20 69 73 20 65 6e 61 62 6c 65 64 2e  BUG] is enabled.
69e0: 0a 7d 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  .}...COMPILE_OPT
69f0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
6a00: 4c 45 5f 46 54 53 33 7d 20 7b 0a 20 20 57 68 65  LE_FTS3} {.  Whe
6a10: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
6a20: 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20   defined in the 
6a30: 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20  [amalgamation], 
6a40: 76 65 72 73 69 6f 6e 20 33 0a 20 20 6f 66 20 74  version 3.  of t
6a50: 68 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61  he full-text sea
6a60: 72 63 68 20 65 6e 67 69 6e 65 20 69 73 20 61 64  rch engine is ad
6a70: 64 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64  ded to the build
6a80: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a   automatically..
6a90: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6aa0: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
6ab0: 5f 46 54 53 33 5f 50 41 52 45 4e 54 48 45 53 49  _FTS3_PARENTHESI
6ac0: 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  S} {.  This opti
6ad0: 6f 6e 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20  on modifies the 
6ae0: 71 75 65 72 79 20 70 61 74 74 65 72 6e 20 70 61  query pattern pa
6af0: 72 73 65 72 20 69 6e 20 46 54 53 33 20 73 75 63  rser in FTS3 suc
6b00: 68 20 74 68 61 74 20 69 74 0a 20 20 73 75 70 70  h that it.  supp
6b10: 6f 72 74 73 20 6f 70 65 72 61 74 6f 72 73 20 41  orts operators A
6b20: 4e 44 20 61 6e 64 20 4e 4f 54 20 28 69 6e 20 61  ND and NOT (in a
6b30: 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 75  ddition to the u
6b40: 73 75 61 6c 20 4f 52 20 61 6e 64 20 4e 45 41 52  sual OR and NEAR
6b50: 29 0a 20 20 61 6e 64 20 61 6c 73 6f 20 61 6c 6c  ).  and also all
6b60: 6f 77 73 20 71 75 65 72 79 20 65 78 70 72 65 73  ows query expres
6b70: 73 69 6f 6e 73 20 74 6f 20 63 6f 6e 74 61 69 6e  sions to contain
6b80: 20 6e 65 73 74 65 64 20 70 61 72 65 6e 74 68 65   nested parenthe
6b90: 73 69 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  sis..}..COMPILE_
6ba0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
6bb0: 4e 41 42 4c 45 5f 46 54 53 34 7d 20 7b 0a 20 20  NABLE_FTS4} {.  
6bc0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
6bd0: 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74   is defined in t
6be0: 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  he [amalgamation
6bf0: 5d 2c 20 76 65 72 73 69 6f 6e 73 20 33 20 61 6e  ], versions 3 an
6c00: 64 20 34 0a 20 20 6f 66 20 74 68 65 20 66 75 6c  d 4.  of the ful
6c10: 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20 65 6e  l-text search en
6c20: 67 69 6e 65 20 69 73 20 61 64 64 65 64 20 74 6f  gine is added to
6c30: 20 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f 6d   the build autom
6c40: 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d  atically..}..COM
6c50: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
6c60: 49 54 45 5f 45 4e 41 42 4c 45 5f 49 43 55 7d 20  ITE_ENABLE_ICU} 
6c70: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
6c80: 63 61 75 73 65 73 20 74 68 65 20 0a 20 20 5b 68  causes the .  [h
6c90: 74 74 70 3a 2f 2f 77 77 77 2e 69 63 75 2d 70 72  ttp://www.icu-pr
6ca0: 6f 6a 65 63 74 2e 6f 72 67 2f 20 7c 20 49 6e 74  oject.org/ | Int
6cb0: 65 72 6e 61 74 69 6f 6e 61 6c 20 43 6f 6d 70 6f  ernational Compo
6cc0: 6e 65 6e 74 73 20 66 6f 72 20 55 6e 69 63 6f 64  nents for Unicod
6cd0: 65 5d 0a 20 20 6f 72 20 22 49 43 55 22 20 65 78  e].  or "ICU" ex
6ce0: 74 65 6e 73 69 6f 6e 20 74 6f 20 53 51 4c 69 74  tension to SQLit
6cf0: 65 20 74 6f 20 62 65 20 61 64 64 65 64 20 74 6f  e to be added to
6d00: 20 74 68 65 20 62 75 69 6c 64 2e 20 20 0a 7d 0a   the build.  .}.
6d10: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
6d20: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 49  {SQLITE_ENABLE_I
6d30: 4f 54 52 41 43 45 7d 20 7b 0a 20 20 57 68 65 6e  OTRACE} {.  When
6d40: 20 62 6f 74 68 20 74 68 65 20 53 51 4c 69 74 65   both the SQLite
6d50: 20 63 6f 72 65 20 61 6e 64 20 74 68 65 20 5b 43   core and the [C
6d60: 6f 6d 6d 61 6e 64 20 4c 69 6e 65 20 49 6e 74 65  ommand Line Inte
6d70: 72 66 61 63 65 5d 20 28 43 4c 49 29 20 61 72 65  rface] (CLI) are
6d80: 20 62 6f 74 68 20 0a 20 20 63 6f 6d 70 69 6c 65   both .  compile
6d90: 64 20 77 69 74 68 20 74 68 69 73 20 6f 70 74 69  d with this opti
6da0: 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 43 4c 49  on, then the CLI
6db0: 20 70 72 6f 76 69 64 65 73 20 61 6e 20 65 78 74   provides an ext
6dc0: 72 61 20 63 6f 6d 6d 61 6e 64 0a 20 20 6e 61 6d  ra command.  nam
6dd0: 65 64 20 22 2e 69 6f 74 72 61 63 65 22 20 74 68  ed ".iotrace" th
6de0: 61 74 20 70 72 6f 76 69 64 65 73 20 61 20 6c 6f  at provides a lo
6df0: 77 2d 6c 65 76 65 6c 20 6c 6f 67 20 6f 66 20 49  w-level log of I
6e00: 2f 4f 20 61 63 74 69 76 69 74 79 2e 0a 20 20 54  /O activity..  T
6e10: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 65 78  his option is ex
6e20: 70 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64 20 6d  perimental and m
6e30: 61 79 20 62 65 20 64 69 73 63 6f 6e 74 69 6e 75  ay be discontinu
6e40: 65 64 20 69 6e 20 61 20 66 75 74 75 72 65 20 72  ed in a future r
6e50: 65 6c 65 61 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  elease..}..COMPI
6e60: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
6e70: 45 5f 45 4e 41 42 4c 45 5f 4c 4f 43 4b 49 4e 47  E_ENABLE_LOCKING
6e80: 5f 53 54 59 4c 45 7d 20 7b 0a 20 20 54 68 69 73  _STYLE} {.  This
6e90: 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20   option enables 
6ea0: 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63  additional logic
6eb0: 20 69 6e 20 74 68 65 20 4f 53 20 69 6e 74 65 72   in the OS inter
6ec0: 66 61 63 65 20 6c 61 79 65 72 20 66 6f 72 0a 20  face layer for. 
6ed0: 20 4d 61 63 20 4f 53 20 58 2e 20 54 68 65 20 61   Mac OS X. The a
6ee0: 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20  dditional logic 
6ef0: 61 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65  attempts to dete
6f00: 72 6d 69 6e 65 20 74 68 65 20 74 79 70 65 20 6f  rmine the type o
6f10: 66 20 74 68 65 0a 20 20 75 6e 64 65 72 6c 79 69  f the.  underlyi
6f20: 6e 67 20 66 69 6c 65 73 79 73 74 65 6d 20 61 6e  ng filesystem an
6f30: 64 20 63 68 6f 6f 73 65 20 61 6e 64 20 61 6c 74  d choose and alt
6f40: 65 72 6e 61 74 69 76 65 20 6c 6f 63 6b 69 6e 67  ernative locking
6f50: 20 73 74 72 61 74 65 67 79 0a 20 20 74 68 61 74   strategy.  that
6f60: 20 77 6f 72 6b 73 20 63 6f 72 72 65 63 74 6c 79   works correctly
6f70: 20 66 6f 72 20 74 68 61 74 20 66 69 6c 65 73 79   for that filesy
6f80: 73 74 65 6d 20 74 79 70 65 2e 20 46 69 76 65 20  stem type. Five 
6f90: 6c 6f 63 6b 69 6e 67 20 73 74 72 61 74 65 67 69  locking strategi
6fa0: 65 73 20 0a 20 20 61 72 65 20 61 76 61 69 6c 61  es .  are availa
6fb0: 62 6c 65 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20 20  ble:..  <ul>.   
6fc0: 20 3c 6c 69 3e 20 50 4f 53 49 58 20 6c 6f 63 6b   <li> POSIX lock
6fd0: 69 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20  ing style. This 
6fe0: 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 6c  is the default l
6ff0: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 61 6e 64  ocking style and
7000: 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 73 74   the.         st
7010: 79 6c 65 20 75 73 65 64 20 62 79 20 6f 74 68 65  yle used by othe
7020: 72 20 28 6e 6f 6e 20 4d 61 63 20 4f 53 20 58 29  r (non Mac OS X)
7030: 20 55 6e 69 78 65 73 2e 20 4c 6f 63 6b 73 20 61   Unixes. Locks a
7040: 72 65 20 6f 62 74 61 69 6e 65 64 20 61 6e 64 20  re obtained and 
7050: 0a 20 20 20 20 20 20 20 20 20 72 65 6c 65 61 73  .         releas
7060: 65 64 20 75 73 69 6e 67 20 74 68 65 20 66 63 6e  ed using the fcn
7070: 74 6c 28 29 20 73 79 73 74 65 6d 20 63 61 6c 6c  tl() system call
7080: 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 41 46 50 20  ...    <li> AFP 
7090: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54  locking style. T
70a0: 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  his locking styl
70b0: 65 20 69 73 20 75 73 65 64 20 66 6f 72 20 6e 65  e is used for ne
70c0: 74 77 6f 72 6b 20 66 69 6c 65 20 0a 20 20 20 20  twork file .    
70d0: 20 20 20 20 20 73 79 73 74 65 6d 73 20 74 68 61       systems tha
70e0: 74 20 75 73 65 20 74 68 65 20 41 46 50 20 28 41  t use the AFP (A
70f0: 70 70 6c 65 20 46 69 6c 69 6e 67 20 50 72 6f 74  pple Filing Prot
7100: 6f 63 6f 6c 29 20 70 72 6f 74 6f 63 6f 6c 2e 20  ocol) protocol. 
7110: 4c 6f 63 6b 73 0a 20 20 20 20 20 20 20 20 20 61  Locks.         a
7120: 72 65 20 6f 62 74 61 69 6e 65 64 20 62 79 20 63  re obtained by c
7130: 61 6c 6c 69 6e 67 20 74 68 65 20 6c 69 62 72 61  alling the libra
7140: 72 79 20 66 75 6e 63 74 69 6f 6e 20 5f 41 46 50  ry function _AFP
7150: 46 53 53 65 74 4c 6f 63 6b 28 29 2e 0a 0a 20 20  FSSetLock()...  
7160: 20 20 3c 6c 69 3e 20 46 6c 6f 63 6b 20 6c 6f 63    <li> Flock loc
7170: 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73  king style. This
7180: 20 69 73 20 75 73 65 64 20 66 6f 72 20 66 69 6c   is used for fil
7190: 65 2d 73 79 73 74 65 6d 73 20 74 68 61 74 20 64  e-systems that d
71a0: 6f 20 6e 6f 74 0a 20 20 20 20 20 20 20 20 20 73  o not.         s
71b0: 75 70 70 6f 72 74 20 50 4f 53 49 58 20 6c 6f 63  upport POSIX loc
71c0: 6b 69 6e 67 20 73 74 79 6c 65 2e 20 4c 6f 63 6b  king style. Lock
71d0: 73 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20 61  s are obtained a
71e0: 6e 64 20 72 65 6c 65 61 73 65 64 20 75 73 69 6e  nd released usin
71f0: 67 0a 20 20 20 20 20 20 20 20 20 74 68 65 20 66  g.         the f
7200: 6c 6f 63 6b 28 29 20 73 79 73 74 65 6d 20 63 61  lock() system ca
7210: 6c 6c 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 44 6f  ll...    <li> Do
7220: 74 2d 66 69 6c 65 20 6c 6f 63 6b 69 6e 67 20 73  t-file locking s
7230: 74 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63 6b 69  tyle. This locki
7240: 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73 65 64  ng style is used
7250: 20 77 68 65 6e 20 6e 65 69 74 68 65 72 0a 20 20   when neither.  
7260: 20 20 20 20 20 20 20 66 6c 6f 63 6b 20 6e 6f 72         flock nor
7270: 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73   POSIX locking s
7280: 74 79 6c 65 73 20 61 72 65 20 73 75 70 70 6f 72  tyles are suppor
7290: 74 65 64 20 62 79 20 74 68 65 20 66 69 6c 65 20  ted by the file 
72a0: 73 79 73 74 65 6d 2e 0a 20 20 20 20 20 20 20 20  system..        
72b0: 20 44 61 74 61 62 61 73 65 20 6c 6f 63 6b 73 20   Database locks 
72c0: 61 72 65 20 6f 62 74 61 69 6e 65 64 20 62 79 20  are obtained by 
72d0: 63 72 65 61 74 69 6e 67 20 61 6e 64 20 65 6e 74  creating and ent
72e0: 72 79 20 69 6e 20 74 68 65 20 66 69 6c 65 2d 73  ry in the file-s
72f0: 79 73 74 65 6d 0a 20 20 20 20 20 20 20 20 20 61  ystem.         a
7300: 74 20 61 20 77 65 6c 6c 2d 6b 6e 6f 77 6e 20 6c  t a well-known l
7310: 6f 63 61 74 69 6f 6e 20 72 65 6c 61 74 69 76 65  ocation relative
7320: 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
7330: 20 66 69 6c 65 20 28 61 20 22 64 6f 74 2d 66 69   file (a "dot-fi
7340: 6c 65 22 29 0a 20 20 20 20 20 20 20 20 20 61 6e  le").         an
7350: 64 20 72 65 6c 69 6e 71 75 69 73 68 65 64 20 62  d relinquished b
7360: 79 20 64 65 6c 65 74 69 6e 67 20 74 68 65 20 73  y deleting the s
7370: 61 6d 65 20 66 69 6c 65 2e 0a 0a 20 20 20 20 3c  ame file...    <
7380: 6c 69 3e 20 4e 6f 20 6c 6f 63 6b 69 6e 67 20 73  li> No locking s
7390: 74 79 6c 65 2e 20 49 66 20 6e 6f 6e 65 20 6f 66  tyle. If none of
73a0: 20 74 68 65 20 61 62 6f 76 65 20 63 61 6e 20 62   the above can b
73b0: 65 20 73 75 70 70 6f 72 74 65 64 2c 20 74 68 69  e supported, thi
73c0: 73 20 0a 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  s .         lock
73d0: 69 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73 65  ing style is use
73e0: 64 2e 20 4e 6f 20 64 61 74 61 62 61 73 65 20 6c  d. No database l
73f0: 6f 63 6b 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d  ocking mechanism
7400: 20 69 73 20 75 73 65 64 2e 20 57 68 65 6e 0a 20   is used. When. 
7410: 20 20 20 20 20 20 20 20 74 68 69 73 20 73 79 73          this sys
7420: 74 65 6d 20 69 73 20 75 73 65 64 20 69 74 20 69  tem is used it i
7430: 73 20 6e 6f 74 20 73 61 66 65 20 66 6f 72 20 61  s not safe for a
7440: 20 73 69 6e 67 6c 65 20 64 61 74 61 62 61 73 65   single database
7450: 20 74 6f 20 62 65 0a 20 20 20 20 20 20 20 20 20   to be.         
7460: 61 63 63 65 73 73 65 64 20 62 79 20 6d 75 6c 74  accessed by mult
7470: 69 70 6c 65 20 63 6c 69 65 6e 74 73 2e 0a 20 20  iple clients..  
7480: 3c 2f 75 6c 3e 0a 0a 20 20 41 64 64 69 74 69 6f  </ul>..  Additio
7490: 6e 61 6c 6c 79 2c 20 66 69 76 65 20 65 78 74 72  nally, five extr
74a0: 61 20 5b 56 46 53 5d 20 69 6d 70 6c 65 6d 65 6e  a [VFS] implemen
74b0: 74 61 74 69 6f 6e 73 20 61 72 65 20 70 72 6f 76  tations are prov
74c0: 69 64 65 64 20 61 73 20 77 65 6c 6c 20 61 73 20  ided as well as 
74d0: 74 68 65 0a 20 20 64 65 66 61 75 6c 74 2e 20 42  the.  default. B
74e0: 79 20 73 70 65 63 69 66 79 69 6e 67 20 6f 6e 65  y specifying one
74f0: 20 6f 66 20 74 68 65 20 65 78 74 72 61 20 56 46   of the extra VF
7500: 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  S implementation
7510: 73 20 0a 20 20 77 68 65 6e 20 63 61 6c 6c 69 6e  s .  when callin
7520: 67 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f  g [sqlite3_open_
7530: 76 32 28 29 5d 2c 20 61 6e 20 61 70 70 6c 69 63  v2()], an applic
7540: 61 74 69 6f 6e 20 6d 61 79 20 62 79 70 61 73 73  ation may bypass
7550: 20 74 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d   the file-system
7560: 0a 20 20 64 65 74 65 63 74 69 6f 6e 20 6c 6f 67  .  detection log
7570: 69 63 20 61 6e 64 20 65 78 70 6c 69 63 69 74 6c  ic and explicitl
7580: 79 20 73 65 6c 65 63 74 20 6f 6e 65 20 6f 66 20  y select one of 
7590: 74 68 65 20 61 62 6f 76 65 20 6c 6f 63 6b 69 6e  the above lockin
75a0: 67 20 73 74 79 6c 65 73 2e 20 54 68 65 0a 20 20  g styles. The.  
75b0: 66 69 76 65 20 65 78 74 72 61 20 5b 56 46 53 5d  five extra [VFS]
75c0: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
75d0: 20 61 72 65 20 63 61 6c 6c 65 64 20 22 75 6e 69   are called "uni
75e0: 78 2d 70 6f 73 69 78 22 2c 20 22 75 6e 69 78 2d  x-posix", "unix-
75f0: 61 66 70 22 2c 0a 20 20 22 75 6e 69 78 2d 66 6c  afp",.  "unix-fl
7600: 6f 63 6b 22 2c 20 22 75 6e 69 78 2d 64 6f 74 66  ock", "unix-dotf
7610: 69 6c 65 22 20 61 6e 64 20 22 75 6e 69 78 2d 6e  ile" and "unix-n
7620: 6f 6e 65 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  one"..}..COMPILE
7630: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7640: 45 4e 41 42 4c 45 5f 4d 45 4d 4f 52 59 5f 4d 41  ENABLE_MEMORY_MA
7650: 4e 41 47 45 4d 45 4e 54 7d 20 7b 0a 20 20 54 68  NAGEMENT} {.  Th
7660: 69 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 65  is option adds e
7670: 78 74 72 61 20 6c 6f 67 69 63 20 74 6f 20 53 51  xtra logic to SQ
7680: 4c 69 74 65 20 74 68 61 74 20 61 6c 6c 6f 77 73  Lite that allows
7690: 20 69 74 20 74 6f 20 72 65 6c 65 61 73 65 20 75   it to release u
76a0: 6e 75 73 65 64 0a 20 20 6d 65 6d 6f 72 79 20 75  nused.  memory u
76b0: 70 6f 6e 20 72 65 71 75 65 73 74 2e 20 20 54 68  pon request.  Th
76c0: 69 73 20 6f 70 74 69 6f 6e 20 6d 75 73 74 20 62  is option must b
76d0: 65 20 65 6e 61 62 6c 65 64 20 69 6e 20 6f 72 64  e enabled in ord
76e0: 65 72 20 66 6f 72 20 74 68 65 0a 20 20 5b 73 71  er for the.  [sq
76f0: 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65  lite3_release_me
7700: 6d 6f 72 79 28 29 5d 20 69 6e 74 65 72 66 61 63  mory()] interfac
7710: 65 20 74 6f 20 77 6f 72 6b 2e 20 20 49 66 20 74  e to work.  If t
7720: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
7730: 0a 20 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 74  .  option is not
7740: 20 75 73 65 64 2c 20 74 68 65 20 5b 73 71 6c 69   used, the [sqli
7750: 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f  te3_release_memo
7760: 72 79 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  ry()] interface 
7770: 69 73 20 61 20 0a 20 20 6e 6f 2d 6f 70 2e 0a 7d  is a .  no-op..}
7780: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
7790: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
77a0: 4d 45 4d 53 59 53 33 7d 20 7b 0a 20 20 54 68 69  MEMSYS3} {.  Thi
77b0: 73 20 6f 70 74 69 6f 6e 20 69 6e 63 6c 75 64 65  s option include
77c0: 73 20 63 6f 64 65 20 69 6e 20 53 51 4c 69 74 65  s code in SQLite
77d0: 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73   that implements
77e0: 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a   an alternative.
77f0: 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74    memory allocat
7800: 6f 72 2e 20 20 54 68 69 73 20 61 6c 74 65 72 6e  or.  This altern
7810: 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c  ative memory all
7820: 6f 63 61 74 6f 72 20 69 73 20 6f 6e 6c 79 20 65  ocator is only e
7830: 6e 67 61 67 65 64 0a 20 20 77 68 65 6e 20 74 68  ngaged.  when th
7840: 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  e [SQLITE_CONFIG
7850: 5f 48 45 41 50 5d 20 6f 70 74 69 6f 6e 20 74 6f  _HEAP] option to
7860: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
7870: 28 29 5d 20 69 73 20 75 73 65 64 20 74 6f 0a 20  ()] is used to. 
7880: 20 73 75 70 70 6c 79 20 61 20 6c 61 72 67 65 20   supply a large 
7890: 63 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f 72 79 20  chunk of memory 
78a0: 66 72 6f 6d 20 77 68 69 63 68 20 61 6c 6c 20 6d  from which all m
78b0: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
78c0: 73 20 61 72 65 0a 20 20 74 61 6b 65 6e 2e 0a 20  s are.  taken.. 
78d0: 20 54 68 65 20 4d 45 4d 53 59 53 33 20 6d 65 6d   The MEMSYS3 mem
78e0: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 75 73  ory allocator us
78f0: 65 73 20 61 20 68 79 62 72 69 64 20 61 6c 6c 6f  es a hybrid allo
7900: 63 61 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  cation algorithm
7910: 20 0a 20 20 70 61 74 74 65 72 6e 65 64 20 61 66   .  patterned af
7920: 74 65 72 20 64 6c 6d 61 6c 6c 6f 63 28 29 2e 20  ter dlmalloc(). 
7930: 20 20 4f 6e 6c 79 20 6f 6e 65 20 6f 66 20 53 51    Only one of SQ
7940: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53  LITE_ENABLE_MEMS
7950: 59 53 33 20 61 6e 64 20 0a 20 20 53 51 4c 49 54  YS3 and .  SQLIT
7960: 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 35  E_ENABLE_MEMSYS5
7970: 20 6d 61 79 20 62 65 20 65 6e 61 62 6c 65 64 20   may be enabled 
7980: 61 74 20 6f 6e 63 65 2e 0a 7d 0a 0a 43 4f 4d 50  at once..}..COMP
7990: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
79a0: 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53  TE_ENABLE_MEMSYS
79b0: 35 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  5} {.  This opti
79c0: 6f 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64 65  on includes code
79d0: 20 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74 20   in SQLite that 
79e0: 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61 6c  implements an al
79f0: 74 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d 6f  ternative.  memo
7a00: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 54  ry allocator.  T
7a10: 68 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65 20  his alternative 
7a20: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
7a30: 20 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65 64   is only engaged
7a40: 0a 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51 4c  .  when the [SQL
7a50: 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d  ITE_CONFIG_HEAP]
7a60: 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69   option to [sqli
7a70: 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73  te3_config()] is
7a80: 20 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70 6c   used to.  suppl
7a90: 79 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b 20  y a large chunk 
7aa0: 6f 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 77  of memory from w
7ab0: 68 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79 20  hich all memory 
7ac0: 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65 0a  allocations are.
7ad0: 20 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20 4d    taken..  The M
7ae0: 45 4d 53 59 53 35 20 6d 6f 64 75 6c 65 20 72 6f  EMSYS5 module ro
7af0: 75 6e 64 73 20 61 6c 6c 20 61 6c 6c 6f 63 61 74  unds all allocat
7b00: 69 6f 6e 73 20 75 70 20 74 6f 20 74 68 65 20 6e  ions up to the n
7b10: 65 78 74 20 70 6f 77 65 72 0a 20 20 6f 66 20 74  ext power.  of t
7b20: 77 6f 20 61 6e 64 20 75 73 65 73 20 61 20 66 69  wo and uses a fi
7b30: 72 73 74 2d 66 69 74 2c 20 62 75 64 64 79 2d 61  rst-fit, buddy-a
7b40: 6c 6c 6f 63 61 74 6f 72 20 61 6c 67 6f 72 69 74  llocator algorit
7b50: 68 6d 0a 20 20 74 68 61 74 20 70 72 6f 76 69 64  hm.  that provid
7b60: 65 73 20 73 74 72 6f 6e 67 20 67 75 61 72 61 6e  es strong guaran
7b70: 74 65 65 73 20 61 67 61 69 6e 73 74 20 66 72 61  tees against fra
7b80: 67 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 64 20 62  gmentation and b
7b90: 72 65 61 6b 64 6f 77 6e 0a 20 20 73 75 62 6a 65  reakdown.  subje
7ba0: 63 74 20 74 6f 20 63 65 72 74 61 69 6e 20 6f 70  ct to certain op
7bb0: 65 72 61 74 69 6e 67 20 63 6f 6e 73 74 72 61 69  erating constrai
7bc0: 6e 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  nts..}..COMPILE_
7bd0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
7be0: 4e 41 42 4c 45 5f 52 54 52 45 45 7d 20 7b 0a 20  NABLE_RTREE} {. 
7bf0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
7c00: 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 69 6e  ses SQLite to in
7c10: 63 6c 75 64 65 20 73 75 70 70 6f 72 74 20 66 6f  clude support fo
7c20: 72 20 74 68 65 0a 20 20 5b 72 74 72 65 65 20 7c  r the.  [rtree |
7c30: 20 52 2a 54 72 65 65 20 69 6e 64 65 78 20 65 78   R*Tree index ex
7c40: 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d  tension]..}..COM
7c50: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
7c60: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 4d 54 5f  ITE_ENABLE_STMT_
7c70: 53 43 41 4e 53 54 41 54 55 53 7d 20 7b 0a 20 20  SCANSTATUS} {.  
7c80: 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62  This option enab
7c90: 6c 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33  les the [sqlite3
7ca0: 5f 73 74 6d 74 5f 73 63 61 6e 73 74 61 74 75 73  _stmt_scanstatus
7cb0: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 20 20  ()] interface.  
7cc0: 54 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 73  The.  [sqlite3_s
7cd0: 74 6d 74 5f 73 63 61 6e 73 74 61 74 75 73 28 29  tmt_scanstatus()
7ce0: 5d 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 6e  ] interface is n
7cf0: 6f 72 6d 61 6c 6c 79 20 6f 6d 69 74 74 65 64 20  ormally omitted 
7d00: 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 0a 20  from the build. 
7d10: 20 62 65 63 61 75 73 65 20 69 74 20 69 6d 70 6f   because it impo
7d20: 73 65 73 20 61 20 73 6d 61 6c 6c 20 70 65 72 66  ses a small perf
7d30: 6f 72 6d 61 6e 63 65 20 70 65 6e 61 6c 74 79 2c  ormance penalty,
7d40: 20 65 76 65 6e 20 6f 6e 20 73 74 61 74 65 6d 65   even on stateme
7d50: 6e 74 73 20 74 68 61 74 0a 20 20 64 6f 20 6e 6f  nts that.  do no
7d60: 74 20 75 73 65 20 74 68 65 20 66 65 61 74 75 72  t use the featur
7d70: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
7d80: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 52 54 52  TION {SQLITE_RTR
7d90: 45 45 5f 49 4e 54 5f 4f 4e 4c 59 7d 20 7b 0a 20  EE_INT_ONLY} {. 
7da0: 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20   If this option 
7db0: 69 73 20 75 73 65 64 20 74 6f 67 65 74 68 65 72  is used together
7dc0: 20 77 69 74 68 20 5b 53 51 4c 49 54 45 5f 45 4e   with [SQLITE_EN
7dd0: 41 42 4c 45 5f 52 54 52 45 45 5d 20 74 68 65 6e  ABLE_RTREE] then
7de0: 20 74 68 65 0a 20 20 5b 72 74 72 65 65 20 7c 20   the.  [rtree | 
7df0: 52 2a 54 72 65 65 20 65 78 74 65 6e 73 69 6f 6e  R*Tree extension
7e00: 5d 20 77 69 6c 6c 20 6f 6e 6c 79 20 73 74 6f 72  ] will only stor
7e10: 65 20 33 32 2d 62 69 74 20 73 69 67 6e 65 64 20  e 32-bit signed 
7e20: 69 6e 74 65 67 65 72 0a 20 20 63 6f 6f 72 64 69  integer.  coordi
7e30: 6e 61 74 65 73 20 61 6e 64 20 61 6c 6c 20 69 6e  nates and all in
7e40: 74 65 72 6e 61 6c 20 63 6f 6d 70 75 74 61 74 69  ternal computati
7e50: 6f 6e 73 20 77 69 6c 6c 20 62 65 20 64 6f 6e 65  ons will be done
7e60: 20 75 73 69 6e 67 20 69 6e 74 65 67 65 72 73 0a   using integers.
7e70: 20 20 69 6e 73 74 65 61 64 20 6f 66 20 66 6c 6f    instead of flo
7e80: 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62  ating point numb
7e90: 65 72 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ers..}..COMPILE_
7ea0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
7eb0: 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 7d 20 7b 0a  NABLE_SQLLOG} {.
7ec0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
7ed0: 61 62 6c 65 73 20 65 78 74 72 61 20 63 6f 64 65  ables extra code
7ee0: 20 28 65 73 70 65 63 69 61 6c 6c 79 20 74 68 65   (especially the
7ef0: 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
7f00: 53 51 4c 4c 4f 47 5d 0a 20 20 6f 70 74 69 6f 6e  SQLLOG].  option
7f10: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e   to [sqlite3_con
7f20: 66 69 67 28 29 5d 29 20 74 68 61 74 20 63 61 6e  fig()]) that can
7f30: 20 62 65 20 75 73 65 64 20 74 6f 20 63 72 65 61   be used to crea
7f40: 74 65 20 6c 6f 67 73 20 6f 66 20 61 6c 6c 0a 20  te logs of all. 
7f50: 20 53 51 4c 69 74 65 20 70 72 6f 63 65 73 73 69   SQLite processi
7f60: 6e 67 20 70 65 72 66 6f 72 6d 65 64 20 62 79 20  ng performed by 
7f70: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20  an application. 
7f80: 20 54 68 65 73 65 20 6c 6f 67 73 20 63 61 6e 20   These logs can 
7f90: 62 65 20 75 73 65 66 75 6c 0a 20 20 69 6e 20 64  be useful.  in d
7fa0: 6f 69 6e 67 20 6f 66 66 2d 6c 69 6e 65 20 61 6e  oing off-line an
7fb0: 61 6c 79 73 69 73 20 6f 66 20 74 68 65 20 62 65  alysis of the be
7fc0: 68 61 76 69 6f 72 20 6f 66 20 61 6e 20 61 70 70  havior of an app
7fd0: 6c 69 63 61 74 69 6f 6e 2c 20 61 6e 64 20 65 73  lication, and es
7fe0: 70 65 63 69 61 6c 6c 79 0a 20 20 66 6f 72 20 70  pecially.  for p
7ff0: 65 72 66 6f 72 6d 61 6e 63 65 20 61 6e 61 6c 79  erformance analy
8000: 73 69 73 2e 20 20 49 6e 20 6f 72 64 65 72 20 66  sis.  In order f
8010: 6f 72 20 74 68 65 20 53 51 4c 49 54 45 5f 45 4e  or the SQLITE_EN
8020: 41 42 4c 45 5f 53 51 4c 4c 4f 47 20 6f 70 74 69  ABLE_SQLLOG opti
8030: 6f 6e 20 74 6f 20 0a 20 20 62 65 20 75 73 65 66  on to .  be usef
8040: 75 6c 2c 20 73 6f 6d 65 20 65 78 74 72 61 20 63  ul, some extra c
8050: 6f 64 65 20 69 73 20 72 65 71 75 69 72 65 64 2e  ode is required.
8060: 20 20 54 68 65 20 0a 20 20 3c 61 20 68 72 65 66    The .  <a href
8070: 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 73 71 6c  ="http://www.sql
8080: 69 74 65 2e 6f 72 67 2f 73 72 63 2f 64 6f 63 2f  ite.org/src/doc/
8090: 74 72 75 6e 6b 2f 73 72 63 2f 74 65 73 74 5f 73  trunk/src/test_s
80a0: 71 6c 6c 6f 67 2e 63 22 3e 22 74 65 73 74 5f 73  qllog.c">"test_s
80b0: 71 6c 6c 6f 67 2e 63 22 3c 2f 61 3e 0a 20 20 73  qllog.c"</a>.  s
80c0: 6f 75 72 63 65 20 63 6f 64 65 0a 20 20 66 69 6c  ource code.  fil
80d0: 65 20 69 6e 20 74 68 65 20 53 51 4c 69 74 65 20  e in the SQLite 
80e0: 73 6f 75 72 63 65 20 74 72 65 65 20 69 73 20 61  source tree is a
80f0: 20 77 6f 72 6b 69 6e 67 20 65 78 61 6d 70 6c 65   working example
8100: 20 6f 66 20 74 68 65 20 72 65 71 75 69 72 65 64   of the required
8110: 20 65 78 74 72 61 0a 20 20 63 6f 64 65 2e 20 20   extra.  code.  
8120: 4f 6e 20 75 6e 69 78 20 61 6e 64 20 77 69 6e 64  On unix and wind
8130: 6f 77 73 20 73 79 73 74 65 6d 73 2c 20 61 20 64  ows systems, a d
8140: 65 76 65 6c 6f 70 65 72 20 63 61 6e 20 61 70 70  eveloper can app
8150: 65 6e 64 20 74 68 65 20 74 65 78 74 20 6f 66 20  end the text of 
8160: 74 68 65 0a 20 20 22 74 65 73 74 5f 73 71 6c 6c  the.  "test_sqll
8170: 6f 67 2e 63 22 20 73 6f 75 72 63 65 20 63 6f 64  og.c" source cod
8180: 65 20 66 69 6c 65 20 74 6f 20 74 68 65 20 65 6e  e file to the en
8190: 64 20 6f 66 20 61 6e 20 22 73 71 6c 69 74 65 33  d of an "sqlite3
81a0: 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  .c" amalgamation
81b0: 2c 0a 20 20 72 65 63 6f 6d 70 69 6c 65 20 74 68  ,.  recompile th
81c0: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 75 73  e application us
81d0: 69 6e 67 20 74 68 65 20 2d 44 53 51 4c 49 54 45  ing the -DSQLITE
81e0: 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 20 6f  _ENABLE_SQLLOG o
81f0: 70 74 69 6f 6e 2c 20 74 68 65 6e 20 0a 20 20 63  ption, then .  c
8200: 6f 6e 74 72 6f 6c 20 6c 6f 67 67 69 6e 67 20 75  ontrol logging u
8210: 73 69 6e 67 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  sing environment
8220: 20 76 61 72 69 61 62 6c 65 73 2e 20 20 53 65 65   variables.  See
8230: 20 74 68 65 20 68 65 61 64 65 72 20 63 6f 6d 6d   the header comm
8240: 65 6e 74 20 6f 6e 20 0a 20 20 74 68 65 20 22 74  ent on .  the "t
8250: 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f  est_sqllog.c" so
8260: 75 72 63 65 20 66 69 6c 65 20 66 6f 72 20 61 64  urce file for ad
8270: 64 69 74 69 6f 6e 61 6c 20 64 65 74 61 69 6c 2e  ditional detail.
8280: 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50    .}..COMPILE_OP
8290: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
82a0: 42 4c 45 5f 53 54 41 54 32 7d 20 7b 0a 20 20 54  BLE_STAT2} {.  T
82b0: 68 69 73 20 6f 70 74 69 6f 6e 20 75 73 65 64 20  his option used 
82c0: 74 6f 20 63 61 75 73 65 20 74 68 65 20 5b 41 4e  to cause the [AN
82d0: 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 74  ALYZE] command t
82e0: 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 69 6e 64 65  o collect.  inde
82f0: 78 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61  x histogram data
8300: 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74   in the <b>sqlit
8310: 65 5f 73 74 61 74 32 3c 2f 62 3e 20 74 61 62 6c  e_stat2</b> tabl
8320: 65 2e 20 20 42 75 74 20 74 68 61 74 0a 20 20 66  e.  But that.  f
8330: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 77 61 73  unctionality was
8340: 20 73 75 70 65 72 63 65 64 65 64 20 62 79 20 5b   superceded by [
8350: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
8360: 41 54 33 5d 20 61 73 20 6f 66 0a 20 20 53 51 4c  AT3] as of.  SQL
8370: 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e  ite version 3.7.
8380: 39 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 45  9.  The SQLITE_E
8390: 4e 41 42 4c 45 5f 53 54 41 54 32 20 63 6f 6d 70  NABLE_STAT2 comp
83a0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 0a  ile-time option.
83b0: 20 20 69 73 20 6e 6f 77 20 61 20 6e 6f 2d 6f 70    is now a no-op
83c0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
83d0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
83e0: 4c 45 5f 53 54 41 54 33 7d 20 7b 0a 20 20 54 68  LE_STAT3} {.  Th
83f0: 69 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 61  is option adds a
8400: 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20  dditional logic 
8410: 74 6f 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d  to the [ANALYZE]
8420: 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 6f 0a   command and to.
8430: 20 20 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61    the [query pla
8440: 6e 6e 65 72 5d 20 74 68 61 74 20 63 61 6e 20 68  nner] that can h
8450: 65 6c 70 20 53 51 4c 69 74 65 20 74 6f 20 63 68  elp SQLite to ch
8460: 6f 73 65 20 61 20 62 65 74 74 65 72 20 71 75 65  ose a better que
8470: 72 79 20 70 6c 61 6e 0a 20 20 75 6e 64 65 72 20  ry plan.  under 
8480: 63 65 72 74 61 69 6e 20 73 69 74 75 61 74 69 6f  certain situatio
8490: 6e 73 2e 20 20 54 68 65 20 5b 41 4e 41 4c 59 5a  ns.  The [ANALYZ
84a0: 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 6e  E] command is en
84b0: 68 61 6e 63 65 64 20 74 6f 20 63 6f 6c 6c 65 63  hanced to collec
84c0: 74 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61  t.  histogram da
84d0: 74 61 20 66 72 6f 6d 20 74 68 65 20 6c 65 66 74  ta from the left
84e0: 2d 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20  -most column of 
84f0: 65 61 63 68 20 69 6e 64 65 78 20 61 6e 64 20 73  each index and s
8500: 74 6f 72 65 20 74 68 61 74 20 64 61 74 61 0a 20  tore that data. 
8510: 20 69 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 5f   in the [sqlite_
8520: 73 74 61 74 33 5d 20 74 61 62 6c 65 2e 20 20 54  stat3] table.  T
8530: 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72  he query planner
8540: 20 77 69 6c 6c 20 74 68 65 6e 20 75 73 65 20 74   will then use t
8550: 68 65 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64  he.  histogram d
8560: 61 74 61 20 74 6f 20 68 65 6c 70 20 69 74 20 6d  ata to help it m
8570: 61 6b 65 20 62 65 74 74 65 72 20 69 6e 64 65 78  ake better index
8580: 20 63 68 6f 69 63 65 73 2e 20 20 4e 6f 74 65 2c   choices.  Note,
8590: 20 68 6f 77 65 76 65 72 2c 0a 20 20 74 68 61 74   however,.  that
85a0: 20 74 68 65 20 75 73 65 20 6f 66 20 68 69 73 74   the use of hist
85b0: 6f 67 72 61 6d 20 64 61 74 61 20 69 6e 20 71 75  ogram data in qu
85c0: 65 72 79 20 70 6c 61 6e 6e 65 72 20 76 69 6f 6c  ery planner viol
85d0: 61 74 65 73 20 74 68 65 0a 20 20 5b 71 75 65 72  ates the.  [quer
85e0: 79 20 70 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c  y planner stabil
85f0: 69 74 79 20 67 75 61 72 61 6e 74 65 65 5d 20 77  ity guarantee] w
8600: 68 69 63 68 20 69 73 20 69 6d 70 6f 72 74 61 6e  hich is importan
8610: 74 20 74 6f 20 73 6f 6d 65 20 61 70 70 6c 69 63  t to some applic
8620: 61 74 69 6f 6e 73 2e 0a 20 20 3c 70 3e 0a 7d 0a  ations..  <p>.}.
8630: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
8640: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  {SQLITE_ENABLE_S
8650: 54 41 54 34 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TAT4} {.  This o
8660: 70 74 69 6f 6e 20 61 64 64 73 20 61 64 64 69 74  ption adds addit
8670: 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 74 6f 20 74  ional logic to t
8680: 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d  he [ANALYZE] com
8690: 6d 61 6e 64 20 61 6e 64 20 74 6f 0a 20 20 74 68  mand and to.  th
86a0: 65 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72  e [query planner
86b0: 5d 20 74 68 61 74 20 63 61 6e 20 68 65 6c 70 20  ] that can help 
86c0: 53 51 4c 69 74 65 20 74 6f 20 63 68 6f 73 65 20  SQLite to chose 
86d0: 61 20 62 65 74 74 65 72 20 71 75 65 72 79 20 70  a better query p
86e0: 6c 61 6e 0a 20 20 75 6e 64 65 72 20 63 65 72 74  lan.  under cert
86f0: 61 69 6e 20 73 69 74 75 61 74 69 6f 6e 73 2e 20  ain situations. 
8700: 20 54 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63   The [ANALYZE] c
8710: 6f 6d 6d 61 6e 64 20 69 73 20 65 6e 68 61 6e 63  ommand is enhanc
8720: 65 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a 20 20  ed to collect.  
8730: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66  histogram data f
8740: 72 6f 6d 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 20  rom all columns 
8750: 6f 66 20 65 76 65 72 79 20 69 6e 64 65 78 20 61  of every index a
8760: 6e 64 20 73 74 6f 72 65 20 74 68 61 74 20 64 61  nd store that da
8770: 74 61 0a 20 20 69 6e 20 74 68 65 20 5b 73 71 6c  ta.  in the [sql
8780: 69 74 65 5f 73 74 61 74 34 5d 20 74 61 62 6c 65  ite_stat4] table
8790: 2e 20 20 54 68 65 20 71 75 65 72 79 20 70 6c 61  .  The query pla
87a0: 6e 6e 65 72 20 77 69 6c 6c 20 74 68 65 6e 20 75  nner will then u
87b0: 73 65 20 74 68 65 0a 20 20 68 69 73 74 6f 67 72  se the.  histogr
87c0: 61 6d 20 64 61 74 61 20 74 6f 20 68 65 6c 70 20  am data to help 
87d0: 69 74 20 6d 61 6b 65 20 62 65 74 74 65 72 20 69  it make better i
87e0: 6e 64 65 78 20 63 68 6f 69 63 65 73 2e 20 20 54  ndex choices.  T
87f0: 68 65 20 64 6f 77 6e 73 69 64 65 20 6f 66 0a 20  he downside of. 
8800: 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   this compile-ti
8810: 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 74 68 61  me option is tha
8820: 74 20 69 74 20 76 69 6f 6c 61 74 65 73 20 74 68  t it violates th
8830: 65 0a 20 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e  e.  [query plann
8840: 65 72 20 73 74 61 62 69 6c 69 74 79 20 67 75 61  er stability gua
8850: 72 61 6e 74 65 65 5d 20 6d 61 6b 69 6e 67 20 69  rantee] making i
8860: 74 20 6d 6f 72 65 20 64 69 66 66 69 63 75 6c 74  t more difficult
8870: 20 74 6f 20 65 6e 73 75 72 65 0a 20 20 63 6f 6e   to ensure.  con
8880: 73 69 73 74 65 6e 74 20 70 65 72 66 6f 72 6d 61  sistent performa
8890: 6e 63 65 20 69 6e 20 6d 61 73 73 2d 70 72 6f 64  nce in mass-prod
88a0: 75 63 65 64 20 61 70 70 6c 69 63 61 74 69 6f 6e  uced application
88b0: 73 2e 0a 20 20 3c 70 3e 0a 20 20 53 51 4c 49 54  s..  <p>.  SQLIT
88c0: 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34 20 69  E_ENABLE_STAT4 i
88d0: 73 20 61 6e 20 65 6e 68 61 6e 63 65 6d 65 6e 74  s an enhancement
88e0: 20 6f 66 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42   of [SQLITE_ENAB
88f0: 4c 45 5f 53 54 41 54 33 5d 2e 20 20 53 54 41 54  LE_STAT3].  STAT
8900: 33 0a 20 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65  3.  only recorde
8910: 64 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61  d histogram data
8920: 20 66 6f 72 20 74 68 65 20 6c 65 66 74 2d 6d 6f   for the left-mo
8930: 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20 65 61 63  st column of eac
8940: 68 20 69 6e 64 65 78 0a 20 20 77 68 65 72 65 61  h index.  wherea
8950: 73 20 74 68 65 20 53 54 41 54 34 20 65 6e 68 61  s the STAT4 enha
8960: 6e 63 65 6d 65 6e 74 20 72 65 63 6f 72 64 73 20  ncement records 
8970: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66  histogram data f
8980: 72 6f 6d 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 0a  rom all columns.
8990: 20 20 6f 66 20 65 61 63 68 20 69 6e 64 65 78 2e    of each index.
89a0: 0a 20 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 45  .  The [SQLITE_E
89b0: 4e 41 42 4c 45 5f 53 54 41 54 33 5d 20 63 6f 6d  NABLE_STAT3] com
89c0: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
89d0: 20 69 73 20 61 20 6e 6f 2d 6f 70 20 61 6e 64 20   is a no-op and 
89e0: 69 73 20 69 67 6e 6f 72 65 64 0a 20 20 69 66 20  is ignored.  if 
89f0: 74 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  the SQLITE_ENABL
8a00: 45 5f 53 54 41 54 34 20 63 6f 6d 70 69 6c 65 2d  E_STAT4 compile-
8a10: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 75  time option is u
8a20: 73 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  sed..}..COMPILE_
8a30: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
8a40: 4e 41 42 4c 45 5f 54 52 45 45 5f 45 58 50 4c 41  NABLE_TREE_EXPLA
8a50: 49 4e 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d  IN} {.  This com
8a60: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
8a70: 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 75 73   is no longer us
8a80: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
8a90: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
8aa0: 41 42 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45  ABLE_UPDATE_DELE
8ab0: 54 45 5f 4c 49 4d 49 54 7d 20 7b 0a 20 20 54 68  TE_LIMIT} {.  Th
8ac0: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
8ad0: 73 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 4f 52  s an optional OR
8ae0: 44 45 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54  DER BY and LIMIT
8af0: 20 63 6c 61 75 73 65 20 6f 6e 20 0a 20 20 5b 55   clause on .  [U
8b00: 50 44 41 54 45 5d 20 61 6e 64 20 5b 44 45 4c 45  PDATE] and [DELE
8b10: 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a  TE] statements..
8b20: 0a 20 20 3c 70 3e 49 66 20 74 68 69 73 20 6f 70  .  <p>If this op
8b30: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
8b40: 20 74 68 65 6e 20 69 74 20 6d 75 73 74 20 61 6c   then it must al
8b50: 73 6f 20 62 65 20 0a 20 20 64 65 66 69 6e 65 64  so be .  defined
8b60: 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20   when using the 
8b70: 27 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20  'lemon' tool to 
8b80: 67 65 6e 65 72 61 74 65 20 61 20 70 61 72 73 65  generate a parse
8b90: 2e 63 0a 20 20 66 69 6c 65 2e 20 42 65 63 61 75  .c.  file. Becau
8ba0: 73 65 20 6f 66 20 74 68 69 73 2c 20 74 68 69 73  se of this, this
8bb0: 20 6f 70 74 69 6f 6e 20 6d 61 79 20 6f 6e 6c 79   option may only
8bc0: 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 74 68   be used when th
8bd0: 65 20 6c 69 62 72 61 72 79 20 69 73 20 62 75 69  e library is bui
8be0: 6c 74 0a 20 20 66 72 6f 6d 20 73 6f 75 72 63 65  lt.  from source
8bf0: 2c 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b  , not from the [
8c00: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72  amalgamation] or
8c10: 20 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63   from the collec
8c20: 74 69 6f 6e 20 6f 66 0a 20 20 70 72 65 2d 70 61  tion of.  pre-pa
8c30: 63 6b 61 67 65 64 20 43 20 66 69 6c 65 73 20 70  ckaged C files p
8c40: 72 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d  rovided for non-
8c50: 55 6e 69 78 20 6c 69 6b 65 20 70 6c 61 74 66 6f  Unix like platfo
8c60: 72 6d 73 20 6f 6e 20 74 68 65 20 77 65 62 73 69  rms on the websi
8c70: 74 65 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f  te..  </p>.}..CO
8c80: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
8c90: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4c 4f  LITE_ENABLE_UNLO
8ca0: 43 4b 5f 4e 4f 54 49 46 59 7d 20 7b 0a 20 20 54  CK_NOTIFY} {.  T
8cb0: 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c  his option enabl
8cc0: 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  es the [sqlite3_
8cd0: 75 6e 6c 6f 63 6b 5f 6e 6f 74 69 66 79 28 29 5d  unlock_notify()]
8ce0: 20 69 6e 74 65 72 66 61 63 65 20 61 6e 64 0a 20   interface and. 
8cf0: 20 69 74 73 20 61 73 73 6f 63 69 61 74 65 64 20   its associated 
8d00: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20 20  functionality.  
8d10: 53 65 65 20 74 68 65 20 64 6f 63 75 6d 65 6e 74  See the document
8d20: 61 74 69 6f 6e 20 74 69 74 6c 65 64 0a 20 20 5b  ation titled.  [
8d30: 55 73 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65  Using the SQLite
8d40: 20 55 6e 6c 6f 63 6b 20 4e 6f 74 69 66 69 63 61   Unlock Notifica
8d50: 74 69 6f 6e 20 46 65 61 74 75 72 65 5d 20 66 6f  tion Feature] fo
8d60: 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a 20 20 69  r additional.  i
8d70: 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d 0a 0a 43  nformation..}..C
8d80: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8d90: 51 4c 49 54 45 5f 53 4f 55 4e 44 45 58 7d 20 7b  QLITE_SOUNDEX} {
8da0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65  .  This option e
8db0: 6e 61 62 6c 65 73 20 74 68 65 20 5b 73 6f 75 6e  nables the [soun
8dc0: 64 65 78 28 29 20 53 51 4c 20 66 75 6e 63 74 69  dex() SQL functi
8dd0: 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  on]..}..COMPILE_
8de0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 55  OPTION {SQLITE_U
8df0: 53 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 7d 20  SE_FCNTL_TRACE} 
8e00: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
8e10: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
8e20: 20 69 73 73 75 65 20 65 78 74 72 61 20 5b 53 51   issue extra [SQ
8e30: 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45  LITE_FCNTL_TRACE
8e40: 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 73 0a  ] file controls.
8e50: 20 20 74 6f 20 70 72 6f 76 69 64 65 20 73 75 70    to provide sup
8e60: 70 6c 65 6d 65 6e 74 61 72 79 20 69 6e 66 6f 72  plementary infor
8e70: 6d 61 74 69 6f 6e 20 74 6f 20 74 68 65 20 56 46  mation to the VF
8e80: 53 2e 20 20 54 68 65 20 22 76 66 73 6c 6f 67 2e  S.  The "vfslog.
8e90: 63 22 20 65 78 74 65 6e 73 69 6f 6e 0a 20 20 6d  c" extension.  m
8ea0: 61 6b 65 73 20 75 73 65 20 6f 66 20 74 68 69 73  akes use of this
8eb0: 20 74 6f 20 70 72 6f 76 69 64 65 20 65 6e 68 61   to provide enha
8ec0: 6e 63 65 64 20 6c 6f 67 73 20 6f 66 20 56 46 53  nced logs of VFS
8ed0: 20 61 63 74 69 76 69 74 79 2e 0a 7d 0a 0a 43 4f   activity..}..CO
8ee0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 59 59  MPILE_OPTION {YY
8ef0: 54 52 41 43 4b 4d 41 58 53 54 41 43 4b 44 45 50  TRACKMAXSTACKDEP
8f00: 54 48 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  TH} {.  This opt
8f10: 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 4c  ion causes the L
8f20: 41 4c 52 28 31 29 20 70 61 72 73 65 72 20 73 74  ALR(1) parser st
8f30: 61 63 6b 20 64 65 70 74 68 20 74 6f 20 62 65 20  ack depth to be 
8f40: 74 72 61 63 6b 65 64 0a 20 20 61 6e 64 20 72 65  tracked.  and re
8f50: 70 6f 72 74 65 64 20 75 73 69 6e 67 20 74 68 65  ported using the
8f60: 20 5b 73 71 6c 69 74 65 33 5f 73 74 61 74 75 73   [sqlite3_status
8f70: 5d 28 5b 53 51 4c 49 54 45 5f 53 54 41 54 55 53  ]([SQLITE_STATUS
8f80: 5f 50 41 52 53 45 52 5f 53 54 41 43 4b 5d 2c 2e  _PARSER_STACK],.
8f90: 2e 2e 29 0a 20 20 69 6e 74 65 72 66 61 63 65 2e  ..).  interface.
8fa0: 20 20 53 51 4c 69 74 65 27 73 20 4c 41 4c 52 28    SQLite's LALR(
8fb0: 31 29 20 70 61 72 73 65 72 20 68 61 73 20 61 20  1) parser has a 
8fc0: 66 69 78 65 64 20 73 74 61 63 6b 20 64 65 70 74  fixed stack dept
8fd0: 68 0a 20 20 28 64 65 74 65 72 6d 69 6e 65 64 20  h.  (determined 
8fe0: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  at compile-time 
8ff0: 75 73 69 6e 67 20 74 68 65 20 5b 59 59 53 54 41  using the [YYSTA
9000: 43 4b 44 45 50 54 48 5d 20 6f 70 74 69 6f 6e 73  CKDEPTH] options
9010: 29 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  )..  This option
9020: 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
9030: 68 65 6c 70 20 64 65 74 65 72 6d 69 6e 65 20 69  help determine i
9040: 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  f an application
9050: 20 69 73 0a 20 20 67 65 74 74 69 6e 67 20 63 6c   is.  getting cl
9060: 6f 73 65 20 74 6f 20 65 78 63 65 65 64 69 6e 67  ose to exceeding
9070: 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 4c 41 4c   the maximum LAL
9080: 52 28 31 29 20 73 74 61 63 6b 20 64 65 70 74 68  R(1) stack depth
9090: 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e  ..}.</tcl>..<a n
90a0: 61 6d 65 3d 22 64 69 73 61 62 6c 65 66 65 61 74  ame="disablefeat
90b0: 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31  ures"></a>.<h2>1
90c0: 2e 36 20 4f 70 74 69 6f 6e 73 20 54 6f 20 44 69  .6 Options To Di
90d0: 73 61 62 6c 65 20 46 65 61 74 75 72 65 73 20 4e  sable Features N
90e0: 6f 72 6d 61 6c 6c 79 20 54 75 72 6e 65 64 20 4f  ormally Turned O
90f0: 6e 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f  n</h2>..<tcl>.CO
9100: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
9110: 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 4c 46 53  LITE_DISABLE_LFS
9120: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d  } {.  If this C-
9130: 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63  preprocessor mac
9140: 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 6c  ro is defined, l
9150: 61 72 67 65 20 66 69 6c 65 20 73 75 70 70 6f 72  arge file suppor
9160: 74 0a 20 20 69 73 20 64 69 73 61 62 6c 65 64 2e  t.  is disabled.
9170: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9180: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42  ON {SQLITE_DISAB
9190: 4c 45 5f 44 49 52 53 59 4e 43 7d 20 7b 0a 20 20  LE_DIRSYNC} {.  
91a0: 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f  If this C-prepro
91b0: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20  cessor macro is 
91c0: 64 65 66 69 6e 65 64 2c 20 64 69 72 65 63 74 6f  defined, directo
91d0: 72 79 20 73 79 6e 63 73 0a 20 20 61 72 65 20 64  ry syncs.  are d
91e0: 69 73 61 62 6c 65 64 2e 20 20 53 51 4c 69 74 65  isabled.  SQLite
91f0: 20 74 79 70 69 63 61 6c 6c 79 20 61 74 74 65 6d   typically attem
9200: 70 74 73 20 74 6f 20 73 79 6e 63 20 74 68 65 20  pts to sync the 
9210: 70 61 72 65 6e 74 0a 20 20 64 69 72 65 63 74 6f  parent.  directo
9220: 72 79 20 77 68 65 6e 20 61 20 66 69 6c 65 20 69  ry when a file i
9230: 73 20 64 65 6c 65 74 65 64 20 74 6f 20 65 6e 73  s deleted to ens
9240: 75 72 65 20 74 68 65 20 64 69 72 65 63 74 6f 72  ure the director
9250: 79 0a 20 20 65 6e 74 72 69 65 73 20 61 72 65 20  y.  entries are 
9260: 75 70 64 61 74 65 64 20 69 6d 6d 65 64 69 61 74  updated immediat
9270: 65 6c 79 20 6f 6e 20 64 69 73 6b 2e 0a 7d 0a 0a  ely on disk..}..
9280: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
9290: 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 46  SQLITE_DISABLE_F
92a0: 54 53 33 5f 55 4e 49 43 4f 44 45 7d 20 7b 0a 20  TS3_UNICODE} {. 
92b0: 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72   If this C-prepr
92c0: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73  ocessor macro is
92d0: 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 75   defined, the [u
92e0: 6e 69 63 6f 64 65 36 31 5d 20 74 6f 6b 65 6e 69  nicode61] tokeni
92f0: 7a 65 72 0a 20 20 69 6e 20 5b 46 54 53 33 5d 20  zer.  in [FTS3] 
9300: 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20  is omitted from 
9310: 74 68 65 20 62 75 69 6c 64 20 61 6e 64 20 69 73  the build and is
9320: 20 75 6e 61 76 61 69 6c 61 62 6c 65 20 74 6f 20   unavailable to 
9330: 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e  .  applications.
9340: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9350: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42  ON {SQLITE_DISAB
9360: 4c 45 5f 46 54 53 34 5f 44 45 46 45 52 52 45 44  LE_FTS4_DEFERRED
9370: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d  } {.  If this C-
9380: 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63  preprocessor mac
9390: 72 6f 20 64 69 73 61 62 6c 65 73 20 74 68 65 20  ro disables the 
93a0: 22 64 65 66 65 72 72 65 64 20 74 6f 6b 65 6e 22  "deferred token"
93b0: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 0a 20 20   optimization.  
93c0: 69 6e 20 5b 46 54 53 34 5d 2e 20 20 54 68 65 20  in [FTS4].  The 
93d0: 22 64 65 66 65 72 72 65 64 20 74 6f 6b 65 6e 22  "deferred token"
93e0: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 61 76   optimization av
93f0: 6f 69 64 73 20 6c 6f 61 64 69 6e 67 20 6d 61 73  oids loading mas
9400: 73 69 76 65 0a 20 20 70 6f 73 74 69 6e 67 20 6c  sive.  posting l
9410: 69 73 74 73 20 66 6f 72 20 74 65 72 6d 73 20 74  ists for terms t
9420: 68 61 74 20 61 72 65 20 69 6e 20 6d 6f 73 74 20  hat are in most 
9430: 64 6f 63 75 6d 65 6e 74 73 20 6f 66 20 74 68 65  documents of the
9440: 20 63 6f 6c 6c 65 63 74 69 6f 6e 0a 20 20 61 6e   collection.  an
9450: 64 20 69 6e 73 74 65 61 64 20 73 69 6d 70 6c 79  d instead simply
9460: 20 73 63 61 6e 73 20 66 6f 72 20 74 68 6f 73 65   scans for those
9470: 20 74 6f 6b 65 6e 73 20 69 6e 20 74 68 65 20 64   tokens in the d
9480: 6f 63 75 6d 65 6e 74 20 73 6f 75 72 63 65 2e 20  ocument source. 
9490: 20 5b 46 54 53 34 5d 0a 20 20 73 68 6f 75 6c 64   [FTS4].  should
94a0: 20 67 65 74 20 65 78 61 63 74 6c 79 20 74 68 65   get exactly the
94b0: 20 73 61 6d 65 20 61 6e 73 77 65 72 20 62 6f 74   same answer bot
94c0: 68 20 77 69 74 68 20 61 6e 64 20 77 69 74 68 6f  h with and witho
94d0: 75 74 20 74 68 69 73 20 6f 70 74 69 6d 69 7a 61  ut this optimiza
94e0: 74 69 6f 6e 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a  tion..}.</tcl>..
94f0: 3c 74 63 6c 3e 0a 20 20 68 64 5f 66 72 61 67 6d  <tcl>.  hd_fragm
9500: 65 6e 74 20 22 6f 6d 69 74 66 65 61 74 75 72 65  ent "omitfeature
9510: 73 22 0a 20 20 68 64 5f 6b 65 79 77 6f 72 64 73  s".  hd_keywords
9520: 20 22 6f 6d 69 74 66 65 61 74 75 72 65 73 22 0a   "omitfeatures".
9530: 3c 2f 74 63 6c 3e 0a 3c 68 32 3e 31 2e 37 20 4f  </tcl>.<h2>1.7 O
9540: 70 74 69 6f 6e 73 20 54 6f 20 4f 6d 69 74 20 46  ptions To Omit F
9550: 65 61 74 75 72 65 73 3c 2f 68 32 3e 0a 0a 3c 70  eatures</h2>..<p
9560: 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f  >The following o
9570: 70 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 75 73  ptions can be us
9580: 65 64 20 74 6f 20 0a 5b 72 65 6c 66 6f 6f 74 70  ed to .[relfootp
9590: 72 69 6e 74 20 7c 20 72 65 64 75 63 65 20 74 68  rint | reduce th
95a0: 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 63 6f  e size of the co
95b0: 6d 70 69 6c 65 64 20 6c 69 62 72 61 72 79 5d 0a  mpiled library].
95c0: 62 79 20 6f 6d 69 74 74 69 6e 67 20 75 6e 75 73  by omitting unus
95d0: 65 64 20 66 65 61 74 75 72 65 73 2e 20 54 68 69  ed features. Thi
95e0: 73 20 69 73 20 70 72 6f 62 61 62 6c 79 20 6f 6e  s is probably on
95f0: 6c 79 20 75 73 65 66 75 6c 0a 69 6e 20 65 6d 62  ly useful.in emb
9600: 65 64 64 65 64 20 73 79 73 74 65 6d 73 20 77 68  edded systems wh
9610: 65 72 65 20 73 70 61 63 65 20 69 73 20 65 73 70  ere space is esp
9620: 65 63 69 61 6c 6c 79 20 74 69 67 68 74 2c 20 61  ecially tight, a
9630: 73 20 65 76 65 6e 20 77 69 74 68 20 61 6c 6c 0a  s even with all.
9640: 66 65 61 74 75 72 65 73 20 69 6e 63 6c 75 64 65  features include
9650: 64 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62  d the SQLite lib
9660: 72 61 72 79 20 69 73 20 72 65 6c 61 74 69 76 65  rary is relative
9670: 6c 79 20 73 6d 61 6c 6c 2e 20 44 6f 6e 27 74 20  ly small. Don't 
9680: 66 6f 72 67 65 74 0a 74 6f 20 74 65 6c 6c 20 79  forget.to tell y
9690: 6f 75 72 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20  our compiler to 
96a0: 6f 70 74 69 6d 69 7a 65 20 66 6f 72 20 62 69 6e  optimize for bin
96b0: 61 72 79 20 73 69 7a 65 21 20 28 74 68 65 20 2d  ary size! (the -
96c0: 4f 73 20 6f 70 74 69 6f 6e 20 69 66 0a 75 73 69  Os option if.usi
96d0: 6e 67 20 47 43 43 29 2e 20 20 54 65 6c 6c 69 6e  ng GCC).  Tellin
96e0: 67 20 79 6f 75 72 20 63 6f 6d 70 69 6c 65 72 20  g your compiler 
96f0: 74 6f 20 6f 70 74 69 6d 69 7a 65 20 66 6f 72 20  to optimize for 
9700: 73 69 7a 65 20 75 73 75 61 6c 6c 79 20 68 61 73  size usually has
9710: 0a 61 20 6d 75 63 68 20 6c 61 72 67 65 72 20 69  .a much larger i
9720: 6d 70 61 63 74 20 6f 6e 20 6c 69 62 72 61 72 79  mpact on library
9730: 20 66 6f 6f 74 70 72 69 6e 74 20 74 68 61 6e 20   footprint than 
9740: 65 6d 70 6c 6f 79 69 6e 67 20 61 6e 79 20 6f 66  employing any of
9750: 20 74 68 65 73 65 0a 63 6f 6d 70 69 6c 65 2d 74   these.compile-t
9760: 69 6d 65 20 6f 70 74 69 6f 6e 73 2e 20 20 59 6f  ime options.  Yo
9770: 75 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 76 65  u should also ve
9780: 72 69 66 79 20 74 68 61 74 20 0a 3c 61 20 68 72  rify that .<a hr
9790: 65 66 3d 22 23 64 65 62 75 67 6f 70 74 69 6f 6e  ef="#debugoption
97a0: 73 22 3e 64 65 62 75 67 67 69 6e 67 20 6f 70 74  s">debugging opt
97b0: 69 6f 6e 73 3c 2f 61 3e 20 61 72 65 20 64 69 73  ions</a> are dis
97c0: 61 62 6c 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  abled.</p>..<p>T
97d0: 68 65 20 6d 61 63 72 6f 73 20 69 6e 20 74 68 69  he macros in thi
97e0: 73 20 73 65 63 74 69 6f 6e 20 64 6f 20 6e 6f 74  s section do not
97f0: 20 72 65 71 75 69 72 65 20 76 61 6c 75 65 73 2e   require values.
9800: 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 0a   The following .
9810: 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 73 77 69 74  compilation swit
9820: 63 68 65 73 20 61 6c 6c 20 68 61 76 65 20 74 68  ches all have th
9830: 65 20 73 61 6d 65 20 65 66 66 65 63 74 3a 3c 62  e same effect:<b
9840: 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54  r>.-DSQLITE_OMIT
9850: 5f 41 4c 54 45 52 54 41 42 4c 45 3c 62 72 3e 0a  _ALTERTABLE<br>.
9860: 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c  -DSQLITE_OMIT_AL
9870: 54 45 52 54 41 42 4c 45 3d 31 3c 62 72 3e 0a 2d  TERTABLE=1<br>.-
9880: 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54  DSQLITE_OMIT_ALT
9890: 45 52 54 41 42 4c 45 3d 30 0a 3c 2f 70 3e 0a 0a  ERTABLE=0.</p>..
98a0: 3c 70 3e 49 66 20 61 6e 79 20 6f 66 20 74 68 65  <p>If any of the
98b0: 73 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 64  se options are d
98c0: 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 74 68 65  efined, then the
98d0: 20 73 61 6d 65 20 73 65 74 20 6f 66 20 53 51 4c   same set of SQL
98e0: 49 54 45 5f 4f 4d 49 54 5f 2a 0a 6f 70 74 69 6f  ITE_OMIT_*.optio
98f0: 6e 73 20 6d 75 73 74 20 61 6c 73 6f 20 62 65 20  ns must also be 
9900: 64 65 66 69 6e 65 64 20 77 68 65 6e 20 75 73 69  defined when usi
9910: 6e 67 20 74 68 65 20 27 6c 65 6d 6f 6e 27 20 74  ng the 'lemon' t
9920: 6f 6f 6c 20 74 6f 20 67 65 6e 65 72 61 74 65 20  ool to generate 
9930: 74 68 65 0a 70 61 72 73 65 2e 63 20 66 69 6c 65  the.parse.c file
9940: 20 61 6e 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c   and when compil
9950: 69 6e 67 20 74 68 65 20 27 6d 6b 6b 65 79 77 6f  ing the 'mkkeywo
9960: 72 64 68 61 73 68 27 20 74 6f 6f 6c 20 77 68 69  rdhash' tool whi
9970: 63 68 20 67 65 6e 65 72 61 74 65 73 20 0a 74 68  ch generates .th
9980: 65 20 6b 65 79 77 6f 72 64 68 61 73 68 2e 68 20  e keywordhash.h 
9990: 66 69 6c 65 2e 0a 42 65 63 61 75 73 65 20 6f 66  file..Because of
99a0: 20 74 68 69 73 2c 20 74 68 65 73 65 20 6f 70 74   this, these opt
99b0: 69 6f 6e 73 20 6d 61 79 20 6f 6e 6c 79 20 62 65  ions may only be
99c0: 20 75 73 65 64 20 77 68 65 6e 20 74 68 65 20 6c   used when the l
99d0: 69 62 72 61 72 79 20 69 73 20 62 75 69 6c 74 0a  ibrary is built.
99e0: 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 73  from canonical s
99f0: 6f 75 72 63 65 2c 20 6e 6f 74 20 66 72 6f 6d 20  ource, not from 
9a00: 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f  the [amalgamatio
9a10: 6e 5d 20 6f 72 20 66 72 6f 6d 20 74 68 65 20 63  n] or from the c
9a20: 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a 70 72 65  ollection of.pre
9a30: 2d 70 61 63 6b 61 67 65 64 20 43 20 66 69 6c 65  -packaged C file
9a40: 73 20 70 72 6f 76 69 64 65 64 20 66 6f 72 20 6e  s provided for n
9a50: 6f 6e 2d 55 6e 69 78 20 6c 69 6b 65 20 70 6c 61  on-Unix like pla
9a60: 74 66 6f 72 6d 73 20 6f 6e 20 74 68 65 20 77 65  tforms on the we
9a70: 62 73 69 74 65 2e 0a 41 6e 79 20 53 51 4c 49 54  bsite..Any SQLIT
9a80: 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73  E_OMIT_* options
9a90: 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 75 73   which can be us
9aa0: 65 64 20 64 69 72 65 63 74 6c 79 20 77 69 74 68  ed directly with
9ab0: 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69   the [amalgamati
9ac0: 6f 6e 5d 20 0a 61 72 65 20 6c 69 73 74 65 64 20  on] .are listed 
9ad0: 62 65 6c 6f 77 2c 20 68 6f 77 65 76 65 72 2c 20  below, however, 
9ae0: 74 68 65 20 77 61 72 6e 69 6e 67 73 20 69 6e 20  the warnings in 
9af0: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61  the following pa
9b00: 72 61 67 72 61 70 68 20 73 68 6f 75 6c 64 20 62  ragraph should b
9b10: 65 20 6e 6f 74 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c  e noted..</p>..<
9b20: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c  blockquote>.<i><
9b30: 62 3e 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65  b>Important Note
9b40: 3a 3c 2f 62 3e 20 54 68 65 20 53 51 4c 49 54 45  :</b> The SQLITE
9b50: 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20  _OMIT_* options 
9b60: 64 6f 20 6e 6f 74 20 77 6f 72 6b 20 77 69 74 68  do not work with
9b70: 20 74 68 65 0a 5b 61 6d 61 6c 67 61 6d 61 74 69   the.[amalgamati
9b80: 6f 6e 5d 20 6f 72 20 77 69 74 68 20 70 72 65 2d  on] or with pre-
9b90: 70 61 63 6b 61 67 65 64 20 43 20 63 6f 64 65 20  packaged C code 
9ba0: 66 69 6c 65 73 2e 20 20 53 51 4c 49 54 45 5f 4f  files.  SQLITE_O
9bb0: 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69  MIT_* compile-ti
9bc0: 6d 65 0a 6f 70 74 69 6f 6e 73 20 6f 6e 6c 79 20  me.options only 
9bd0: 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 77  work correctly w
9be0: 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20 62 75  hen SQLite is bu
9bf0: 69 6c 74 20 66 72 6f 6d 20 63 61 6e 6f 6e 69 63  ilt from canonic
9c00: 61 6c 20 73 6f 75 72 63 65 20 66 69 6c 65 73 2e  al source files.
9c10: 0a 3c 2f 69 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f  .</i>.</blockquo
9c20: 74 65 3e 0a 0a 0a 3c 70 3e 53 70 65 63 69 61 6c  te>...<p>Special
9c30: 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65   versions of the
9c40: 20 53 51 4c 69 74 65 20 61 6d 61 6c 67 61 6d 61   SQLite amalgama
9c50: 74 69 6f 6e 20 74 68 61 74 20 64 6f 20 77 6f 72  tion that do wor
9c60: 6b 20 77 69 74 68 20 61 0a 70 72 65 64 65 74 65  k with a.predete
9c70: 72 6d 69 6e 65 64 20 73 65 74 20 6f 66 20 53 51  rmined set of SQ
9c80: 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69  LITE_OMIT_* opti
9c90: 6f 6e 73 20 63 61 6e 20 62 65 20 67 65 6e 65 72  ons can be gener
9ca0: 61 74 65 64 2e 20 20 54 6f 20 64 6f 20 73 6f 2c  ated.  To do so,
9cb0: 0a 6d 61 6b 65 20 61 20 63 6f 70 79 20 6f 66 20  .make a copy of 
9cc0: 74 68 65 20 4d 61 6b 65 66 69 6c 65 2e 6c 69 6e  the Makefile.lin
9cd0: 75 78 2d 67 63 63 20 6d 61 6b 65 66 69 6c 65 20  ux-gcc makefile 
9ce0: 74 65 6d 70 6c 61 74 65 20 69 6e 20 74 68 65 20  template in the 
9cf0: 63 61 6e 6f 6e 69 63 61 6c 0a 73 6f 75 72 63 65  canonical.source
9d00: 20 63 6f 64 65 20 64 69 73 74 72 69 62 75 74 69   code distributi
9d10: 6f 6e 2e 20 20 43 68 61 6e 67 65 20 74 68 65 20  on.  Change the 
9d20: 6e 61 6d 65 20 6f 66 20 79 6f 75 72 20 63 6f 70  name of your cop
9d30: 79 20 74 6f 20 73 69 6d 70 6c 79 20 22 4d 61 6b  y to simply "Mak
9d40: 65 66 69 6c 65 22 2e 0a 54 68 65 6e 20 65 64 69  efile"..Then edi
9d50: 74 20 22 4d 61 6b 65 66 69 6c 65 22 20 74 6f 20  t "Makefile" to 
9d60: 73 65 74 20 75 70 20 61 70 70 72 6f 70 72 69 61  set up appropria
9d70: 74 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  te compile-time 
9d80: 6f 70 74 69 6f 6e 73 2e 20 20 54 68 65 6e 0a 74  options.  Then.t
9d90: 79 70 65 3a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  ype:.<blockquote
9da0: 3e 3c 74 74 3e 6d 61 6b 65 20 63 6c 65 61 6e 3b  ><tt>make clean;
9db0: 20 6d 61 6b 65 20 73 71 6c 69 74 65 33 2e 63 3c   make sqlite3.c<
9dc0: 2f 74 74 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  /tt></blockquote
9dd0: 3e 0a 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20  >.The resulting 
9de0: 22 73 71 6c 69 74 65 33 2e 63 22 20 61 6d 61 6c  "sqlite3.c" amal
9df0: 67 61 6d 61 74 69 6f 6e 20 63 6f 64 65 20 66 69  gamation code fi
9e00: 6c 65 20 28 61 6e 64 20 69 74 73 20 61 73 73 6f  le (and its asso
9e10: 63 69 61 74 65 64 0a 68 65 61 64 65 72 20 66 69  ciated.header fi
9e20: 6c 65 20 22 73 71 6c 69 74 65 33 2e 68 22 29 20  le "sqlite3.h") 
9e30: 63 61 6e 20 74 68 65 6e 20 62 65 20 6d 6f 76 65  can then be move
9e40: 64 20 74 6f 20 61 20 6e 6f 6e 2d 75 6e 69 78 20  d to a non-unix 
9e50: 70 6c 61 74 66 6f 72 6d 0a 66 6f 72 20 66 69 6e  platform.for fin
9e60: 61 6c 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 75  al compilation u
9e70: 73 69 6e 67 20 61 20 6e 61 74 69 76 65 20 63 6f  sing a native co
9e80: 6d 70 69 6c 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e  mpiler.</p>..<p>
9e90: 41 6c 6c 20 6f 66 20 74 68 65 20 53 51 4c 49 54  All of the SQLIT
9ea0: 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73  E_OMIT_* options
9eb0: 20 61 72 65 20 75 6e 73 75 70 70 6f 72 74 65 64   are unsupported
9ec0: 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  .</p>..<blockquo
9ed0: 74 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74  te>.<i><b>Import
9ee0: 61 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e 0a 54 68  ant Note:</b>.Th
9ef0: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  e SQLITE_OMIT_* 
9f00: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
9f10: 69 6f 6e 73 20 61 72 65 20 75 6e 73 75 70 70 6f  ions are unsuppo
9f20: 72 74 65 64 2e 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63  rted..</i></bloc
9f30: 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 54 68 65  kquote>..<p>.The
9f40: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63   SQLITE_OMIT_* c
9f50: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
9f60: 6f 6e 73 20 61 72 65 20 75 73 75 61 6c 6c 79 20  ons are usually 
9f70: 75 6e 74 65 73 74 65 64 20 61 6e 64 0a 61 72 65  untested and.are
9f80: 20 61 6c 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c   almost certainl
9f90: 79 20 75 6e 74 65 73 74 65 64 20 69 6e 20 63 6f  y untested in co
9fa0: 6d 62 69 6e 61 74 69 6f 6e 2e 0a 41 6e 79 20 6f  mbination..Any o
9fb0: 72 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 6f  r all of these o
9fc0: 70 74 69 6f 6e 73 20 6d 61 79 20 62 65 20 72 65  ptions may be re
9fd0: 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 63  moved from the c
9fe0: 6f 64 65 20 69 6e 20 66 75 74 75 72 65 20 72 65  ode in future re
9ff0: 6c 65 61 73 65 73 0a 61 6e 64 20 77 69 74 68 6f  leases.and witho
a000: 75 74 20 77 61 72 6e 69 6e 67 2e 20 20 46 6f 72  ut warning.  For
a010: 20 61 6e 79 20 70 61 72 74 69 63 75 6c 61 72 20   any particular 
a020: 72 65 6c 65 61 73 65 2c 20 73 6f 6d 65 20 6f 66  release, some of
a030: 20 74 68 65 73 65 0a 6f 70 74 69 6f 6e 73 20 6d   these.options m
a040: 61 79 20 63 61 75 73 65 20 63 6f 6d 70 69 6c 65  ay cause compile
a050: 2d 74 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69 6d  -time or run-tim
a060: 65 20 66 61 69 6c 75 72 65 73 2c 20 70 61 72 74  e failures, part
a070: 69 63 75 6c 61 72 6c 79 0a 77 68 65 6e 20 75 73  icularly.when us
a080: 65 64 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69 6f  ed in combinatio
a090: 6e 20 77 69 74 68 20 6f 74 68 65 72 20 6f 70 74  n with other opt
a0a0: 69 6f 6e 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  ions.</p>..<tcl>
a0b0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
a0c0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54  {SQLITE_OMIT_ALT
a0d0: 45 52 54 41 42 4c 45 7d 20 7b 0a 20 20 57 68 65  ERTABLE} {.  Whe
a0e0: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
a0f0: 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 0a 20   defined, the . 
a100: 20 5b 41 4c 54 45 52 20 54 41 42 4c 45 5d 20 63   [ALTER TABLE] c
a110: 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e  ommand is not in
a120: 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 0a 20  cluded in the . 
a130: 20 6c 69 62 72 61 72 79 2e 20 45 78 65 63 75 74   library. Execut
a140: 69 6e 67 20 61 6e 20 5b 41 4c 54 45 52 20 54 41  ing an [ALTER TA
a150: 42 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 20 63  BLE] statement c
a160: 61 75 73 65 73 20 61 20 70 61 72 73 65 20 65 72  auses a parse er
a170: 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ror..}..COMPILE_
a180: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
a190: 4d 49 54 5f 41 4e 41 4c 59 5a 45 7d 20 7b 0a 20  MIT_ANALYZE} {. 
a1a0: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
a1b0: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  n is defined, th
a1c0: 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d  e [ANALYZE] comm
a1d0: 61 6e 64 20 69 73 20 6f 6d 69 74 74 65 64 20 66  and is omitted f
a1e0: 72 6f 6d 0a 20 20 74 68 65 20 62 75 69 6c 64 2e  rom.  the build.
a1f0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
a200: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
a210: 41 54 54 41 43 48 7d 20 7b 0a 20 20 57 68 65 6e  ATTACH} {.  When
a220: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
a230: 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 41 54  defined, the [AT
a240: 54 41 43 48 5d 20 61 6e 64 20 5b 44 45 54 41 43  TACH] and [DETAC
a250: 48 5d 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 0a  H] commands are.
a260: 20 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74    omitted from t
a270: 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d  he build..}..COM
a280: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
a290: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 48 4f 52 49  ITE_OMIT_AUTHORI
a2a0: 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 44 65 66 69  ZATION} {.  Defi
a2b0: 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e  ning this option
a2c0: 20 6f 6d 69 74 73 20 74 68 65 20 61 75 74 68 6f   omits the autho
a2d0: 72 69 7a 61 74 69 6f 6e 20 63 61 6c 6c 62 61 63  rization callbac
a2e0: 6b 20 66 65 61 74 75 72 65 20 66 72 6f 6d 20 74  k feature from t
a2f0: 68 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 54 68  he.  library. Th
a300: 65 20 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 61  e [sqlite3_set_a
a310: 75 74 68 6f 72 69 7a 65 72 28 29 5d 20 41 50 49  uthorizer()] API
a320: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74   function is not
a330: 20 70 72 65 73 65 6e 74 0a 20 20 69 6e 20 74 68   present.  in th
a340: 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f  e library..}..CO
a350: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
a360: 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e  LITE_OMIT_AUTOIN
a370: 43 52 45 4d 45 4e 54 7d 20 7b 0a 20 20 54 68 69  CREMENT} {.  Thi
a380: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
a390: 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 0a 20 20   to omit the .  
a3a0: 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d 20  [AUTOINCREMENT] 
a3b0: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20 57  functionality. W
a3c0: 68 65 6e 20 74 68 69 73 20 0a 20 20 69 73 20 6d  hen this .  is m
a3d0: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c  acro is defined,
a3e0: 20 63 6f 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65   columns declare
a3f0: 64 20 61 73 20 0a 20 20 22 5b 49 4e 54 45 47 45  d as .  "[INTEGE
a400: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 20 41  R PRIMARY KEY] A
a410: 55 54 4f 49 4e 43 52 45 4d 45 4e 54 22 0a 20 20  UTOINCREMENT".  
a420: 62 65 68 61 76 65 20 69 6e 20 74 68 65 20 73 61  behave in the sa
a430: 6d 65 20 77 61 79 20 61 73 20 63 6f 6c 75 6d 6e  me way as column
a440: 73 20 64 65 63 6c 61 72 65 64 20 61 73 20 22 5b  s declared as "[
a450: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
a460: 4b 45 59 5d 22 20 77 68 65 6e 20 61 20 0a 20 20  KEY]" when a .  
a470: 4e 55 4c 4c 20 69 73 20 69 6e 73 65 72 74 65 64  NULL is inserted
a480: 2e 20 54 68 65 20 73 71 6c 69 74 65 5f 73 65 71  . The sqlite_seq
a490: 75 65 6e 63 65 20 73 79 73 74 65 6d 20 74 61 62  uence system tab
a4a0: 6c 65 20 69 73 20 6e 65 69 74 68 65 72 20 63 72  le is neither cr
a4b0: 65 61 74 65 64 2c 20 6e 6f 72 0a 20 20 72 65 73  eated, nor.  res
a4c0: 70 65 63 74 65 64 20 69 66 20 69 74 20 61 6c 72  pected if it alr
a4d0: 65 61 64 79 20 65 78 69 73 74 73 2e 0a 7d 0a 0a  eady exists..}..
a4e0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a4f0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
a500: 49 4e 49 54 7d 20 7b 0a 20 20 46 6f 72 20 62 61  INIT} {.  For ba
a510: 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62  ckwards compatib
a520: 69 6c 69 74 79 20 77 69 74 68 20 6f 6c 64 65 72  ility with older
a530: 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c   versions of SQL
a540: 69 74 65 20 74 68 61 74 20 6c 61 63 6b 0a 20 20  ite that lack.  
a550: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69  the [sqlite3_ini
a560: 74 69 61 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72  tialize()] inter
a570: 66 61 63 65 2c 20 74 68 65 20 5b 73 71 6c 69 74  face, the [sqlit
a580: 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d  e3_initialize()]
a590: 20 69 6e 74 65 72 66 61 63 65 0a 20 20 69 73 20   interface.  is 
a5a0: 63 61 6c 6c 65 64 20 61 75 74 6f 6d 61 74 69 63  called automatic
a5b0: 61 6c 6c 79 20 75 70 6f 6e 20 65 6e 74 72 79 20  ally upon entry 
a5c0: 74 6f 20 63 65 72 74 61 69 6e 20 6b 65 79 20 69  to certain key i
a5d0: 6e 74 65 72 66 61 63 65 73 20 73 75 63 68 20 61  nterfaces such a
a5e0: 73 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65  s.  [sqlite3_ope
a5f0: 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 76  n()], [sqlite3_v
a600: 66 73 5f 72 65 67 69 73 74 65 72 28 29 5d 2c 20  fs_register()], 
a610: 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 6d 70 72  and [sqlite3_mpr
a620: 69 6e 74 66 28 29 5d 2e 0a 20 20 54 68 65 20 6f  intf()]..  The o
a630: 76 65 72 68 65 61 64 20 6f 66 20 69 6e 76 6f 6b  verhead of invok
a640: 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69  ing [sqlite3_ini
a650: 74 69 61 6c 69 7a 65 28 29 5d 20 61 75 74 6f 6d  tialize()] autom
a660: 61 74 69 63 61 6c 6c 79 20 69 6e 20 74 68 69 73  atically in this
a670: 0a 20 20 77 61 79 20 6d 61 79 20 62 65 20 6f 6d  .  way may be om
a680: 69 74 74 65 64 20 62 79 20 62 75 69 6c 64 69 6e  itted by buildin
a690: 67 20 53 51 4c 69 74 65 20 77 69 74 68 20 74 68  g SQLite with th
a6a0: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55  e SQLITE_OMIT_AU
a6b0: 54 4f 49 4e 49 54 0a 20 20 43 2d 70 72 65 70 72  TOINIT.  C-prepr
a6c0: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 2e 20 20  ocessor macro.  
a6d0: 57 68 65 6e 20 62 75 69 6c 74 20 75 73 69 6e 67  When built using
a6e0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54   SQLITE_OMIT_AUT
a6f0: 4f 49 4e 49 54 2c 20 53 51 4c 69 74 65 0a 20 20  OINIT, SQLite.  
a700: 77 69 6c 6c 20 6e 6f 74 20 61 75 74 6f 6d 61 74  will not automat
a710: 69 63 61 6c 6c 79 20 69 6e 69 74 69 61 6c 69 7a  ically initializ
a720: 65 20 69 74 73 65 6c 66 20 61 6e 64 20 74 68 65  e itself and the
a730: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 20   application is 
a740: 72 65 71 75 69 72 65 64 0a 20 20 74 6f 20 69 6e  required.  to in
a750: 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e  voke [sqlite3_in
a760: 69 74 69 61 6c 69 7a 65 28 29 5d 20 64 69 72 65  itialize()] dire
a770: 63 74 6c 79 20 70 72 69 6f 72 20 74 6f 20 62 65  ctly prior to be
a780: 67 69 6e 6e 69 6e 67 20 75 73 65 20 6f 66 20 74  ginning use of t
a790: 68 65 0a 20 20 53 51 4c 69 74 65 20 6c 69 62 72  he.  SQLite libr
a7a0: 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ary..}..COMPILE_
a7b0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
a7c0: 4d 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e  MIT_AUTOMATIC_IN
a7d0: 44 45 58 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  DEX} {.  This op
a7e0: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
a7f0: 6f 6d 69 74 20 74 68 65 20 0a 20 20 5b 61 75 74  omit the .  [aut
a800: 6f 6d 61 74 69 63 20 69 6e 64 65 78 69 6e 67 5d  omatic indexing]
a810: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 0a   functionality..
a820: 20 20 53 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c    See also: [SQL
a830: 49 54 45 5f 44 45 46 41 55 4c 54 5f 41 55 54 4f  ITE_DEFAULT_AUTO
a840: 4d 41 54 49 43 5f 49 4e 44 45 58 5d 2e 0a 7d 0a  MATIC_INDEX]..}.
a850: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
a860: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54  {SQLITE_OMIT_AUT
a870: 4f 52 45 53 45 54 7d 20 7b 0a 20 20 42 79 20 64  ORESET} {.  By d
a880: 65 66 61 75 6c 74 2c 20 74 68 65 20 5b 73 71 6c  efault, the [sql
a890: 69 74 65 33 5f 73 74 65 70 28 29 5d 20 69 6e 74  ite3_step()] int
a8a0: 65 72 66 61 63 65 20 77 69 6c 6c 20 61 75 74 6f  erface will auto
a8b0: 6d 61 74 69 63 61 6c 6c 79 20 69 6e 76 6f 6b 65  matically invoke
a8c0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65  .  [sqlite3_rese
a8d0: 74 28 29 5d 20 74 6f 20 72 65 73 65 74 20 74 68  t()] to reset th
a8e0: 65 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  e [prepared stat
a8f0: 65 6d 65 6e 74 5d 20 69 66 20 6e 65 63 65 73 73  ement] if necess
a900: 61 72 79 2e 20 20 54 68 69 73 0a 20 20 63 6f 6d  ary.  This.  com
a910: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
a920: 20 63 68 61 6e 67 65 73 20 74 68 61 74 20 62 65   changes that be
a930: 68 61 76 69 6f 72 20 73 6f 20 74 68 61 74 20 5b  havior so that [
a940: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20  sqlite3_step()] 
a950: 77 69 6c 6c 0a 20 20 72 65 74 75 72 6e 20 5b 53  will.  return [S
a960: 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 69 66  QLITE_MISUSE] if
a970: 20 69 74 20 63 61 6c 6c 65 64 20 61 67 61 69 6e   it called again
a980: 20 61 66 74 65 72 20 72 65 74 75 72 6e 69 6e 67   after returning
a990: 20 61 6e 79 74 68 69 6e 67 20 6f 74 68 65 72 0a   anything other.
a9a0: 20 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 52    than [SQLITE_R
a9b0: 4f 57 5d 2c 20 5b 53 51 4c 49 54 45 5f 42 55 53  OW], [SQLITE_BUS
a9c0: 59 5d 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f 4c  Y], or [SQLITE_L
a9d0: 4f 43 4b 45 44 5d 20 75 6e 6c 65 73 73 20 74 68  OCKED] unless th
a9e0: 65 72 65 20 77 61 73 20 61 6e 0a 20 20 69 6e 74  ere was an.  int
a9f0: 65 72 76 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f  ervening call to
aa00: 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28   [sqlite3_reset(
aa10: 29 5d 2e 0a 0a 20 20 49 6e 20 53 51 4c 69 74 65  )]...  In SQLite
aa20: 20 76 65 72 73 69 6f 6e 20 33 2e 36 2e 32 33 2e   version 3.6.23.
aa30: 31 20 61 6e 64 20 65 61 72 6c 69 65 72 2c 20 5b  1 and earlier, [
aa40: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20  sqlite3_step()] 
aa50: 75 73 65 64 20 74 6f 20 61 6c 77 61 79 73 0a 20  used to always. 
aa60: 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f   return [SQLITE_
aa70: 4d 49 53 55 53 45 5d 20 69 66 20 69 74 20 77 61  MISUSE] if it wa
aa80: 73 20 69 6e 76 6f 6b 65 64 20 61 67 61 69 6e 20  s invoked again 
aa90: 61 66 74 65 72 20 72 65 74 75 72 6e 69 6e 67 20  after returning 
aaa0: 61 6e 79 74 68 69 6e 67 0a 20 20 6f 74 68 65 72  anything.  other
aab0: 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 52 4f   than [SQLITE_RO
aac0: 57 5d 20 77 69 74 68 6f 75 74 20 61 6e 20 69 6e  W] without an in
aad0: 74 65 72 76 65 6e 69 6e 67 20 63 61 6c 6c 20 74  tervening call t
aae0: 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74  o [sqlite3_reset
aaf0: 28 29 5d 2e 0a 20 20 54 68 69 73 20 63 61 75 73  ()]..  This caus
ab00: 65 64 20 70 72 6f 62 6c 65 6d 73 20 6f 6e 20 73  ed problems on s
ab10: 6f 6d 65 20 70 6f 6f 72 6c 79 20 77 72 69 74 74  ome poorly writt
ab20: 65 6e 20 73 6d 61 72 74 70 68 6f 6e 65 20 61 70  en smartphone ap
ab30: 70 6c 69 63 61 74 69 6f 6e 73 20 77 68 69 63 68  plications which
ab40: 0a 20 20 64 69 64 20 6e 6f 74 20 63 6f 72 72 65  .  did not corre
ab50: 63 74 6c 79 20 68 61 6e 64 6c 65 20 74 68 65 20  ctly handle the 
ab60: 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20  [SQLITE_LOCKED] 
ab70: 61 6e 64 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  and [SQLITE_BUSY
ab80: 5d 20 65 72 72 6f 72 20 0a 20 20 72 65 74 75 72  ] error .  retur
ab90: 6e 73 2e 20 20 52 61 74 68 65 72 20 74 68 61 6e  ns.  Rather than
aba0: 20 66 69 78 20 74 68 65 20 6d 61 6e 79 20 64 65   fix the many de
abb0: 66 65 63 74 69 76 65 20 73 6d 61 72 74 70 68 6f  fective smartpho
abc0: 6e 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c  ne applications,
abd0: 20 0a 20 20 74 68 65 20 62 65 68 61 76 69 6f 72   .  the behavior
abe0: 20 6f 66 20 53 51 4c 69 74 65 20 77 61 73 20 63   of SQLite was c
abf0: 68 61 6e 67 65 64 20 69 6e 20 33 2e 36 2e 32 33  hanged in 3.6.23
ac00: 2e 32 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61  .2 to automatica
ac10: 6c 6c 79 20 72 65 73 65 74 0a 20 20 74 68 65 20  lly reset.  the 
ac20: 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
ac30: 6e 74 2e 20 20 42 75 74 20 74 68 61 74 20 63 68  nt.  But that ch
ac40: 61 6e 67 65 64 20 63 61 75 73 65 64 20 69 73 73  anged caused iss
ac50: 75 65 73 20 69 6e 20 6f 74 68 65 72 20 0a 20 20  ues in other .  
ac60: 69 6d 70 72 6f 70 65 72 6c 79 20 69 6d 70 6c 65  improperly imple
ac70: 6d 65 6e 74 65 64 20 61 70 70 6c 69 63 61 74 69  mented applicati
ac80: 6f 6e 73 20 74 68 61 74 20 77 65 72 65 20 61 63  ons that were ac
ac90: 74 75 61 6c 6c 79 20 6c 6f 6f 6b 69 6e 67 0a 20  tually looking. 
aca0: 20 66 6f 72 20 61 6e 20 5b 53 51 4c 49 54 45 5f   for an [SQLITE_
acb0: 4d 49 53 55 53 45 5d 20 72 65 74 75 72 6e 20 74  MISUSE] return t
acc0: 6f 20 74 65 72 6d 69 6e 61 74 65 20 74 68 65 69  o terminate thei
acd0: 72 20 71 75 65 72 79 20 6c 6f 6f 70 73 2e 20 20  r query loops.  
ace0: 28 41 6e 79 74 69 6d 65 0a 20 20 61 6e 20 61 70  (Anytime.  an ap
acf0: 70 6c 69 63 61 74 69 6f 6e 20 67 65 74 73 20 61  plication gets a
ad00: 6e 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 20  n SQLITE_MISUSE 
ad10: 65 72 72 6f 72 20 63 6f 64 65 20 66 72 6f 6d 20  error code from 
ad20: 53 51 4c 69 74 65 2c 20 74 68 61 74 20 6d 65 61  SQLite, that mea
ad30: 6e 73 20 74 68 65 0a 20 20 61 70 70 6c 69 63 61  ns the.  applica
ad40: 74 69 6f 6e 20 69 73 20 6d 69 73 75 73 69 6e 67  tion is misusing
ad50: 20 74 68 65 20 53 51 4c 69 74 65 20 69 6e 74 65   the SQLite inte
ad60: 72 66 61 63 65 20 61 6e 64 20 69 73 20 74 68 75  rface and is thu
ad70: 73 20 69 6e 63 6f 72 72 65 63 74 6c 79 0a 20 20  s incorrectly.  
ad80: 69 6d 70 6c 65 6d 65 6e 74 65 64 2e 29 20 20 54  implemented.)  T
ad90: 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  he SQLITE_OMIT_A
ada0: 55 54 4f 52 45 53 45 54 20 69 6e 74 65 72 66 61  UTORESET interfa
adb0: 63 65 20 77 61 73 20 61 64 64 65 64 20 74 6f 20  ce was added to 
adc0: 53 51 4c 69 74 65 0a 20 20 76 65 72 73 69 6f 6e  SQLite.  version
add0: 20 33 2e 37 2e 35 20 69 6e 20 61 6e 20 65 66 66   3.7.5 in an eff
ade0: 6f 72 74 20 74 6f 20 67 65 74 20 61 6c 6c 20 6f  ort to get all o
adf0: 66 20 74 68 65 20 28 62 72 6f 6b 65 6e 29 0a 20  f the (broken). 
ae00: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f   applications to
ae10: 20 77 6f 72 6b 20 61 67 61 69 6e 20 77 69 74 68   work again with
ae20: 6f 75 74 20 68 61 76 69 6e 67 20 74 6f 20 61 63  out having to ac
ae30: 74 75 61 6c 6c 79 20 66 69 78 20 74 68 65 20 61  tually fix the a
ae40: 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a  pplications..}..
ae50: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
ae60: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
ae70: 56 41 43 55 55 4d 7d 20 7b 0a 20 20 49 66 20 74  VACUUM} {.  If t
ae80: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
ae90: 66 69 6e 65 64 2c 20 74 68 65 20 6c 69 62 72 61  fined, the libra
aea0: 72 79 20 63 61 6e 6e 6f 74 20 63 72 65 61 74 65  ry cannot create
aeb0: 20 6f 72 20 77 72 69 74 65 20 74 6f 20 0a 20 20   or write to .  
aec0: 64 61 74 61 62 61 73 65 73 20 74 68 61 74 20 73  databases that s
aed0: 75 70 70 6f 72 74 20 5b 61 75 74 6f 5f 76 61 63  upport [auto_vac
aee0: 75 75 6d 5d 2e 0a 20 20 45 78 65 63 75 74 69 6e  uum]..  Executin
aef0: 67 20 61 20 5b 50 52 41 47 4d 41 20 61 75 74 6f  g a [PRAGMA auto
af00: 5f 76 61 63 75 75 6d 5d 20 73 74 61 74 65 6d 65  _vacuum] stateme
af10: 6e 74 20 69 73 20 6e 6f 74 20 61 6e 20 65 72 72  nt is not an err
af20: 6f 72 0a 20 20 28 73 69 6e 63 65 20 75 6e 6b 6e  or.  (since unkn
af30: 6f 77 6e 20 50 52 41 47 4d 41 73 20 61 72 65 20  own PRAGMAs are 
af40: 73 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65 64  silently ignored
af50: 29 2c 20 62 75 74 20 64 6f 65 73 20 6e 6f 74 20  ), but does not 
af60: 72 65 74 75 72 6e 20 61 20 76 61 6c 75 65 0a 20  return a value. 
af70: 20 6f 72 20 6d 6f 64 69 66 79 20 74 68 65 20 61   or modify the a
af80: 75 74 6f 2d 76 61 63 75 75 6d 20 66 6c 61 67 20  uto-vacuum flag 
af90: 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  in the database 
afa0: 66 69 6c 65 2e 20 49 66 20 61 20 64 61 74 61 62  file. If a datab
afb0: 61 73 65 20 74 68 61 74 0a 20 20 73 75 70 70 6f  ase that.  suppo
afc0: 72 74 73 20 61 75 74 6f 2d 76 61 63 75 75 6d 20  rts auto-vacuum 
afd0: 69 73 20 6f 70 65 6e 65 64 20 62 79 20 61 20 6c  is opened by a l
afe0: 69 62 72 61 72 79 20 63 6f 6d 70 69 6c 65 64 20  ibrary compiled 
aff0: 77 69 74 68 20 74 68 69 73 20 6f 70 74 69 6f 6e  with this option
b000: 2c 20 69 74 0a 20 20 69 73 20 61 75 74 6f 6d 61  , it.  is automa
b010: 74 69 63 61 6c 6c 79 20 6f 70 65 6e 65 64 20 69  tically opened i
b020: 6e 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64 65  n read-only mode
b030: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
b040: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
b050: 5f 42 45 54 57 45 45 4e 5f 4f 50 54 49 4d 49 5a  _BETWEEN_OPTIMIZ
b060: 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20  ATION} {.  This 
b070: 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20  option disables 
b080: 74 68 65 20 75 73 65 20 6f 66 20 69 6e 64 69 63  the use of indic
b090: 65 73 20 77 69 74 68 20 57 48 45 52 45 20 63 6c  es with WHERE cl
b0a0: 61 75 73 65 20 74 65 72 6d 73 0a 20 20 74 68 61  ause terms.  tha
b0b0: 74 20 65 6d 70 6c 6f 79 20 74 68 65 20 42 45 54  t employ the BET
b0c0: 57 45 45 4e 20 6f 70 65 72 61 74 6f 72 2e 0a 7d  WEEN operator..}
b0d0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
b0e0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 4c   {SQLITE_OMIT_BL
b0f0: 4f 42 5f 4c 49 54 45 52 41 4c 7d 20 7b 0a 20 20  OB_LITERAL} {.  
b100: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
b110: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 69 74 20   is defined, it 
b120: 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20  is not possible 
b130: 74 6f 20 73 70 65 63 69 66 79 20 61 20 62 6c 6f  to specify a blo
b140: 62 20 69 6e 0a 20 20 61 6e 20 53 51 4c 20 73 74  b in.  an SQL st
b150: 61 74 65 6d 65 6e 74 20 75 73 69 6e 67 20 74 68  atement using th
b160: 65 20 58 27 41 42 43 44 27 20 73 79 6e 74 61 78  e X'ABCD' syntax
b170: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
b180: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
b190: 5f 42 54 52 45 45 43 4f 55 4e 54 7d 20 7b 0a 20  _BTREECOUNT} {. 
b1a0: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
b1b0: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 61 6e  n is defined, an
b1c0: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74 68   optimization th
b1d0: 61 74 20 61 63 63 65 6c 65 72 61 74 65 73 20 63  at accelerates c
b1e0: 6f 75 6e 74 69 6e 67 0a 20 20 61 6c 6c 20 65 6e  ounting.  all en
b1f0: 74 72 69 65 73 20 69 6e 20 61 20 74 61 62 6c 65  tries in a table
b200: 20 28 69 6e 20 6f 74 68 65 72 20 77 6f 72 64 73   (in other words
b210: 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f  , an optimizatio
b220: 6e 20 74 68 61 74 20 68 65 6c 70 73 0a 20 20 22  n that helps.  "
b230: 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20  SELECT count(*) 
b240: 46 52 4f 4d 20 74 61 62 6c 65 22 20 72 75 6e 20  FROM table" run 
b250: 66 61 73 74 65 72 29 20 69 73 20 6f 6d 69 74 74  faster) is omitt
b260: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
b270: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
b280: 49 54 5f 42 55 49 4c 54 49 4e 5f 54 45 53 54 7d  IT_BUILTIN_TEST}
b290: 20 7b 0a 20 20 41 20 73 74 61 6e 64 61 72 64 20   {.  A standard 
b2a0: 53 51 4c 69 74 65 20 62 75 69 6c 64 20 69 6e 63  SQLite build inc
b2b0: 6c 75 64 65 73 20 61 20 73 6d 61 6c 6c 20 61 6d  ludes a small am
b2c0: 6f 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 63 6f  ount of logic co
b2d0: 6e 74 72 6f 6c 6c 65 64 0a 20 20 62 79 20 74 68  ntrolled.  by th
b2e0: 65 20 5b 73 71 6c 69 74 65 33 5f 74 65 73 74 5f  e [sqlite3_test_
b2f0: 63 6f 6e 74 72 6f 6c 28 29 5d 20 69 6e 74 65 72  control()] inter
b300: 66 61 63 65 20 74 68 61 74 20 69 73 20 75 73 65  face that is use
b310: 64 20 74 6f 20 65 78 65 72 63 69 73 65 0a 20 20  d to exercise.  
b320: 70 61 72 74 73 20 6f 66 20 74 68 65 20 53 51 4c  parts of the SQL
b330: 69 74 65 20 63 6f 72 65 20 74 68 61 74 20 61 72  ite core that ar
b340: 65 20 64 69 66 66 69 63 75 6c 74 20 74 6f 20 63  e difficult to c
b350: 6f 6e 74 72 6f 6c 20 61 6e 64 20 6d 65 61 73 75  ontrol and measu
b360: 72 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20 73  re using.  the s
b370: 74 61 6e 64 61 72 64 20 41 50 49 2e 20 20 54 68  tandard API.  Th
b380: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
b390: 74 68 61 74 20 62 75 69 6c 74 2d 69 6e 20 74 65  that built-in te
b3a0: 73 74 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d  st logic..}..COM
b3b0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
b3c0: 49 54 45 5f 4f 4d 49 54 5f 43 41 53 54 7d 20 7b  ITE_OMIT_CAST} {
b3d0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
b3e0: 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20  auses SQLite to 
b3f0: 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72  omit support for
b400: 20 74 68 65 20 43 41 53 54 20 6f 70 65 72 61 74   the CAST operat
b410: 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  or..}..COMPILE_O
b420: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
b430: 49 54 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68  IT_CHECK} {.  Th
b440: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
b450: 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20   SQLite to omit 
b460: 73 75 70 70 6f 72 74 20 66 6f 72 20 43 48 45 43  support for CHEC
b470: 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 20  K constraints.. 
b480: 20 54 68 65 20 70 61 72 73 65 72 20 77 69 6c 6c   The parser will
b490: 20 73 74 69 6c 6c 20 61 63 63 65 70 74 20 43 48   still accept CH
b4a0: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  ECK constraints 
b4b0: 69 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  in SQL statement
b4c0: 73 2c 0a 20 20 74 68 65 79 20 77 69 6c 6c 20 6a  s,.  they will j
b4d0: 75 73 74 20 6e 6f 74 20 62 65 20 65 6e 66 6f 72  ust not be enfor
b4e0: 63 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ced..}..COMPILE_
b4f0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
b500: 4d 49 54 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f  MIT_COMPILEOPTIO
b510: 4e 5f 44 49 41 47 53 7d 20 7b 0a 20 20 54 68 69  N_DIAGS} {.  Thi
b520: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
b530: 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d   to omit the com
b540: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
b550: 20 64 69 61 67 6e 6f 73 74 69 63 73 20 61 76 61   diagnostics ava
b560: 69 6c 61 62 6c 65 0a 20 20 69 6e 20 53 51 4c 69  ilable.  in SQLi
b570: 74 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68  te, including th
b580: 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69  e [sqlite3_compi
b590: 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d  leoption_used()]
b5a0: 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
b5b0: 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65  compileoption_ge
b5c0: 74 28 29 5d 20 43 2f 43 2b 2b 20 66 75 6e 63 74  t()] C/C++ funct
b5d0: 69 6f 6e 73 2c 20 74 68 65 0a 20 20 5b 73 71 6c  ions, the.  [sql
b5e0: 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  ite_compileoptio
b5f0: 6e 5f 75 73 65 64 28 29 5d 20 61 6e 64 20 5b 73  n_used()] and [s
b600: 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74  qlite_compileopt
b610: 69 6f 6e 5f 67 65 74 28 29 5d 20 53 51 4c 20 66  ion_get()] SQL f
b620: 75 6e 63 74 69 6f 6e 73 2c 0a 20 20 61 6e 64 20  unctions,.  and 
b630: 74 68 65 20 5b 63 6f 6d 70 69 6c 65 5f 6f 70 74  the [compile_opt
b640: 69 6f 6e 73 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a  ions pragma]..}.
b650: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
b660: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d  {SQLITE_OMIT_COM
b670: 50 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69 73 20  PLETE} {.  This 
b680: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
b690: 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c  e [sqlite3_compl
b6a0: 65 74 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69  ete()] and [sqli
b6b0: 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29  te3_complete16()
b6c0: 5d 0a 20 20 69 6e 74 65 72 66 61 63 65 73 20 74  ].  interfaces t
b6d0: 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a  o be omitted..}.
b6e0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
b6f0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d  {SQLITE_OMIT_COM
b700: 50 4f 55 4e 44 5f 53 45 4c 45 43 54 7d 20 7b 0a  POUND_SELECT} {.
b710: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
b720: 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68   used to omit th
b730: 65 20 63 6f 6d 70 6f 75 6e 64 20 5b 53 45 4c 45  e compound [SELE
b740: 43 54 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  CT] functionalit
b750: 79 2e 20 0a 20 20 5b 53 45 4c 45 43 54 5d 20 73  y. .  [SELECT] s
b760: 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 75  tatements that u
b770: 73 65 20 74 68 65 20 0a 20 20 55 4e 49 4f 4e 2c  se the .  UNION,
b780: 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45   UNION ALL, INTE
b790: 52 53 45 43 54 20 6f 72 20 45 58 43 45 50 54 20  RSECT or EXCEPT 
b7a0: 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20  compound SELECT 
b7b0: 6f 70 65 72 61 74 6f 72 73 20 77 69 6c 6c 20 0a  operators will .
b7c0: 20 20 63 61 75 73 65 20 61 20 70 61 72 73 65 20    cause a parse 
b7d0: 65 72 72 6f 72 2e 0a 0a 20 20 41 6e 20 5b 49 4e  error...  An [IN
b7e0: 53 45 52 54 5d 20 73 74 61 74 65 6d 65 6e 74 20  SERT] statement 
b7f0: 77 69 74 68 20 6d 75 6c 74 69 70 6c 65 20 76 61  with multiple va
b800: 6c 75 65 73 20 69 6e 20 74 68 65 20 56 41 4c 55  lues in the VALU
b810: 45 53 20 63 6c 61 75 73 65 20 69 73 0a 20 20 69  ES clause is.  i
b820: 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 74 65 72  mplemented inter
b830: 6e 61 6c 6c 79 20 61 73 20 61 20 63 6f 6d 70 6f  nally as a compo
b840: 75 6e 64 20 53 45 4c 45 43 54 2e 20 20 48 65 6e  und SELECT.  Hen
b850: 63 65 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ce, this option 
b860: 61 6c 73 6f 0a 20 20 64 69 73 61 62 6c 65 73 20  also.  disables 
b870: 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f 20 69  the ability to i
b880: 6e 73 65 72 74 20 6d 6f 72 65 20 74 68 61 6e 20  nsert more than 
b890: 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 75 73 69  a single row usi
b8a0: 6e 67 20 61 6e 0a 20 20 49 4e 53 45 52 54 20 49  ng an.  INSERT I
b8b0: 4e 54 4f 20 2e 2e 2e 20 56 41 4c 55 45 53 20 2e  NTO ... VALUES .
b8c0: 2e 2e 20 73 74 61 74 65 6d 65 6e 74 2e 0a 7d 0a  .. statement..}.
b8d0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
b8e0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 54 45  {SQLITE_OMIT_CTE
b8f0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
b900: 6e 20 63 61 75 73 65 73 20 73 75 70 70 6f 72 74  n causes support
b910: 20 66 6f 72 20 5b 63 6f 6d 6d 6f 6e 20 74 61 62   for [common tab
b920: 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 73 5d 20  le expressions] 
b930: 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d  to be omitted..}
b940: 0a 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  ....COMPILE_OPTI
b950: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
b960: 44 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 7d 20  DATETIME_FUNCS} 
b970: 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  {.  If this opti
b980: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 53  on is defined, S
b990: 51 4c 69 74 65 27 73 20 62 75 69 6c 74 2d 69 6e  QLite's built-in
b9a0: 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 6d   date and time m
b9b0: 61 6e 69 70 75 6c 61 74 69 6f 6e 0a 20 20 66 75  anipulation.  fu
b9c0: 6e 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d 69 74  nctions are omit
b9d0: 74 65 64 2e 20 53 70 65 63 69 66 69 63 61 6c 6c  ted. Specificall
b9e0: 79 2c 20 74 68 65 20 53 51 4c 20 66 75 6e 63 74  y, the SQL funct
b9f0: 69 6f 6e 73 20 6a 75 6c 69 61 6e 64 61 79 28 29  ions julianday()
ba00: 2c 20 64 61 74 65 28 29 2c 0a 20 20 74 69 6d 65  , date(),.  time
ba10: 28 29 2c 20 64 61 74 65 74 69 6d 65 28 29 20 61  (), datetime() a
ba20: 6e 64 20 73 74 72 66 74 69 6d 65 28 29 20 61 72  nd strftime() ar
ba30: 65 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e  e not available.
ba40: 20 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6c   The default col
ba50: 75 6d 6e 0a 20 20 76 61 6c 75 65 73 20 43 55 52  umn.  values CUR
ba60: 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45  RENT_TIME, CURRE
ba70: 4e 54 5f 44 41 54 45 20 61 6e 64 20 43 55 52 52  NT_DATE and CURR
ba80: 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 61 72  ENT_TIMESTAMP ar
ba90: 65 20 73 74 69 6c 6c 20 61 76 61 69 6c 61 62 6c  e still availabl
baa0: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
bab0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
bac0: 54 5f 44 45 43 4c 54 59 50 45 7d 20 7b 0a 20 20  T_DECLTYPE} {.  
bad0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
bae0: 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69  es SQLite to omi
baf0: 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68  t support for th
bb00: 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  e.  [sqlite3_col
bb10: 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 29 5d 20  umn_decltype()] 
bb20: 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  and [sqlite3_col
bb30: 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 29  umn_decltype16()
bb40: 5d 0a 20 20 69 6e 74 65 72 66 61 63 65 73 2e 0a  ].  interfaces..
bb50: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
bb60: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44  N {SQLITE_OMIT_D
bb70: 45 50 52 45 43 41 54 45 44 7d 20 7b 0a 20 20 54  EPRECATED} {.  T
bb80: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
bb90: 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74  s SQLite to omit
bba0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 69 6e 74   support for int
bbb0: 65 72 66 61 63 65 73 0a 20 20 6d 61 72 6b 65 64  erfaces.  marked
bbc0: 20 61 73 20 64 65 70 72 65 63 61 74 65 64 2e 20   as deprecated. 
bbd0: 20 54 68 69 73 20 69 6e 63 6c 75 64 65 73 20 0a   This includes .
bbe0: 20 20 5b 73 71 6c 69 74 65 33 5f 61 67 67 72 65    [sqlite3_aggre
bbf0: 67 61 74 65 5f 63 6f 75 6e 74 28 29 5d 2c 0a 20  gate_count()],. 
bc00: 20 5b 73 71 6c 69 74 65 33 5f 65 78 70 69 72 65   [sqlite3_expire
bc10: 64 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33  d()],.  [sqlite3
bc20: 5f 74 72 61 6e 73 66 65 72 5f 62 69 6e 64 69 6e  _transfer_bindin
bc30: 67 73 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65  gs()],.  [sqlite
bc40: 33 5f 67 6c 6f 62 61 6c 5f 72 65 63 6f 76 65 72  3_global_recover
bc50: 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f  ()],.  [sqlite3_
bc60: 74 68 72 65 61 64 5f 63 6c 65 61 6e 75 70 28 29  thread_cleanup()
bc70: 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33  ] and.  [sqlite3
bc80: 5f 6d 65 6d 6f 72 79 5f 61 6c 61 72 6d 28 29 5d  _memory_alarm()]
bc90: 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a   interfaces..}..
bca0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
bcb0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 49 53 4b  SQLITE_OMIT_DISK
bcc0: 49 4f 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  IO} {.  This opt
bcd0: 69 6f 6e 20 6f 6d 69 74 73 20 61 6c 6c 20 73 75  ion omits all su
bce0: 70 70 6f 72 74 20 66 6f 72 20 77 72 69 74 69 6e  pport for writin
bcf0: 67 20 74 6f 20 74 68 65 20 64 69 73 6b 20 61 6e  g to the disk an
bd00: 64 20 66 6f 72 63 65 73 0a 20 20 64 61 74 61 62  d forces.  datab
bd10: 61 73 65 73 20 74 6f 20 65 78 69 73 74 20 69 6e  ases to exist in
bd20: 20 6d 65 6d 6f 72 79 20 6f 6e 6c 79 2e 20 20 54   memory only.  T
bd30: 68 69 73 20 6f 70 74 69 6f 6e 20 68 61 73 20 6e  his option has n
bd40: 6f 74 20 62 65 65 6e 20 0a 20 20 6d 61 69 6e 74  ot been .  maint
bd50: 61 69 6e 65 64 20 61 6e 64 20 70 72 6f 62 61 62  ained and probab
bd60: 6c 79 20 64 6f 65 73 20 6e 6f 74 20 77 6f 72 6b  ly does not work
bd70: 20 77 69 74 68 20 6e 65 77 65 72 20 76 65 72 73   with newer vers
bd80: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a  ions of SQLite..
bd90: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
bda0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 45  N {SQLITE_OMIT_E
bdb0: 58 50 4c 41 49 4e 7d 20 7b 0a 20 20 44 65 66 69  XPLAIN} {.  Defi
bdc0: 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e  ning this option
bdd0: 20 63 61 75 73 65 73 20 74 68 65 20 5b 45 58 50   causes the [EXP
bde0: 4c 41 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f  LAIN] command to
bdf0: 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d   be omitted from
be00: 20 74 68 65 0a 20 20 6c 69 62 72 61 72 79 2e 20   the.  library. 
be10: 41 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78  Attempting to ex
be20: 65 63 75 74 65 20 61 6e 20 5b 45 58 50 4c 41 49  ecute an [EXPLAI
be30: 4e 5d 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c  N] statement wil
be40: 6c 20 63 61 75 73 65 20 61 20 70 61 72 73 65 0a  l cause a parse.
be50: 20 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50    error..}..COMP
be60: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
be70: 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41  TE_OMIT_FLAG_PRA
be80: 47 4d 41 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f  GMAS} {.  This o
be90: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70  ption omits supp
bea0: 6f 72 74 20 66 6f 72 20 61 20 73 75 62 73 65 74  ort for a subset
beb0: 20 6f 66 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d   of [PRAGMA] com
bec0: 6d 61 6e 64 73 20 74 68 61 74 0a 20 20 71 75 65  mands that.  que
bed0: 72 79 20 61 6e 64 20 73 65 74 20 62 6f 6f 6c 65  ry and set boole
bee0: 61 6e 20 70 72 6f 70 65 72 74 69 65 73 2e 0a 7d  an properties..}
bef0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
bf00: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c   {SQLITE_OMIT_FL
bf10: 4f 41 54 49 4e 47 5f 50 4f 49 4e 54 7d 20 7b 0a  OATING_POINT} {.
bf20: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
bf30: 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 66 6c   used to omit fl
bf40: 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 6e 75 6d  oating-point num
bf50: 62 65 72 20 73 75 70 70 6f 72 74 20 66 72 6f 6d  ber support from
bf60: 20 74 68 65 20 53 51 4c 69 74 65 0a 20 20 6c 69   the SQLite.  li
bf70: 62 72 61 72 79 2e 20 57 68 65 6e 20 73 70 65 63  brary. When spec
bf80: 69 66 69 65 64 2c 20 73 70 65 63 69 66 79 69 6e  ified, specifyin
bf90: 67 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  g a floating poi
bfa0: 6e 74 20 6e 75 6d 62 65 72 20 61 73 20 61 20 6c  nt number as a l
bfb0: 69 74 65 72 61 6c 20 0a 20 20 28 69 2e 65 2e 20  iteral .  (i.e. 
bfc0: 22 31 2e 30 31 22 29 20 72 65 73 75 6c 74 73 20  "1.01") results 
bfd0: 69 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f 72  in a parse error
bfe0: 2e 0a 0a 20 20 3c 70 3e 49 6e 20 74 68 65 20 66  ...  <p>In the f
bff0: 75 74 75 72 65 2c 20 74 68 69 73 20 6f 70 74 69  uture, this opti
c000: 6f 6e 20 6d 61 79 20 61 6c 73 6f 20 64 69 73 61  on may also disa
c010: 62 6c 65 20 6f 74 68 65 72 20 66 6c 6f 61 74 69  ble other floati
c020: 6e 67 20 70 6f 69 6e 74 20 0a 20 20 66 75 6e 63  ng point .  func
c030: 74 69 6f 6e 61 6c 69 74 79 2c 20 66 6f 72 20 65  tionality, for e
c040: 78 61 6d 70 6c 65 20 74 68 65 20 5b 73 71 6c 69  xample the [sqli
c050: 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c  te3_result_doubl
c060: 65 28 29 5d 2c 20 0a 20 20 5b 73 71 6c 69 74 65  e()], .  [sqlite
c070: 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 29 5d  3_bind_double()]
c080: 2c 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  , [sqlite3_value
c090: 5f 64 6f 75 62 6c 65 28 29 5d 20 61 6e 64 0a 20  _double()] and. 
c0a0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
c0b0: 5f 64 6f 75 62 6c 65 28 29 5d 20 41 50 49 20 66  _double()] API f
c0c0: 75 6e 63 74 69 6f 6e 73 2e 0a 20 20 3c 2f 70 3e  unctions..  </p>
c0d0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
c0e0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
c0f0: 46 4f 52 45 49 47 4e 5f 4b 45 59 7d 20 7b 0a 20  FOREIGN_KEY} {. 
c100: 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20   If this option 
c110: 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e  is defined, then
c120: 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f   [foreign key co
c130: 6e 73 74 72 61 69 6e 74 5d 20 73 79 6e 74 61 78  nstraint] syntax
c140: 20 69 73 0a 20 20 6e 6f 74 20 72 65 63 6f 67 6e   is.  not recogn
c150: 69 7a 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ized..}..COMPILE
c160: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
c170: 4f 4d 49 54 5f 47 45 54 5f 54 41 42 4c 45 7d 20  OMIT_GET_TABLE} 
c180: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
c190: 63 61 75 73 65 73 20 73 75 70 70 6f 72 74 20 66  causes support f
c1a0: 6f 72 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f  or [sqlite3_get_
c1b0: 74 61 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b  table()] and.  [
c1c0: 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62  sqlite3_free_tab
c1d0: 6c 65 28 29 5d 20 74 6f 20 62 65 20 6f 6d 69 74  le()] to be omit
c1e0: 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ted..}..COMPILE_
c1f0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
c200: 4d 49 54 5f 49 4e 43 52 42 4c 4f 42 7d 20 7b 0a  MIT_INCRBLOB} {.
c210: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
c220: 75 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f 72  uses support for
c230: 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 20 7c   [sqlite3_blob |
c240: 20 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f   incremental BLO
c250: 42 20 49 2f 4f 5d 0a 20 20 74 6f 20 62 65 20 6f  B I/O].  to be o
c260: 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  mitted..}..COMPI
c270: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
c280: 45 5f 4f 4d 49 54 5f 49 4e 54 45 47 52 49 54 59  E_OMIT_INTEGRITY
c290: 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69 73  _CHECK} {.  This
c2a0: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
c2b0: 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 69  pport for the [i
c2c0: 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b 20 70  ntegrity_check p
c2d0: 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  ragma]..}..COMPI
c2e0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
c2f0: 45 5f 4f 4d 49 54 5f 4c 49 4b 45 5f 4f 50 54 49  E_OMIT_LIKE_OPTI
c300: 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68  MIZATION} {.  Th
c310: 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c  is option disabl
c320: 65 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f  es the ability o
c330: 66 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20  f SQLite to use 
c340: 69 6e 64 69 63 65 73 20 74 6f 20 68 65 6c 70 0a  indices to help.
c350: 20 20 72 65 73 6f 6c 76 65 20 5b 4c 49 4b 45 5d    resolve [LIKE]
c360: 20 61 6e 64 20 5b 47 4c 4f 42 5d 20 6f 70 65 72   and [GLOB] oper
c370: 61 74 6f 72 73 20 69 6e 20 61 20 57 48 45 52 45  ators in a WHERE
c380: 20 63 6c 61 75 73 65 2e 0a 7d 0a 0a 43 4f 4d 50   clause..}..COMP
c390: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
c3a0: 54 45 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54  TE_OMIT_LOAD_EXT
c3b0: 45 4e 53 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73  ENSION} {.  This
c3c0: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68   option omits th
c3d0: 65 20 65 6e 74 69 72 65 20 65 78 74 65 6e 73 69  e entire extensi
c3e0: 6f 6e 20 6c 6f 61 64 69 6e 67 20 6d 65 63 68 61  on loading mecha
c3f0: 6e 69 73 6d 20 66 72 6f 6d 0a 20 20 53 51 4c 69  nism from.  SQLi
c400: 74 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 5b 73  te, including [s
c410: 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f  qlite3_enable_lo
c420: 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20  ad_extension()] 
c430: 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c  and.  [sqlite3_l
c440: 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d  oad_extension()]
c450: 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a   interfaces..}..
c460: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
c470: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 43 41  SQLITE_OMIT_LOCA
c480: 4c 54 49 4d 45 7d 20 7b 0a 20 20 54 68 69 73 20  LTIME} {.  This 
c490: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65  option omits the
c4a0: 20 22 6c 6f 63 61 6c 74 69 6d 65 22 20 6d 6f 64   "localtime" mod
c4b0: 69 66 69 65 72 20 66 72 6f 6d 20 74 68 65 20 64  ifier from the d
c4c0: 61 74 65 20 61 6e 64 20 74 69 6d 65 0a 20 20 66  ate and time.  f
c4d0: 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 69 73 20  unctions.  This 
c4e0: 6f 70 74 69 6f 6e 20 69 73 20 73 6f 6d 65 74 69  option is someti
c4f0: 6d 65 73 20 75 73 65 66 75 6c 20 77 68 65 6e 20  mes useful when 
c500: 74 72 79 69 6e 67 20 74 6f 20 63 6f 6d 70 69 6c  trying to compil
c510: 65 0a 20 20 74 68 65 20 64 61 74 65 20 61 6e 64  e.  the date and
c520: 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20   time functions 
c530: 6f 6e 20 61 20 70 6c 61 74 66 6f 72 6d 20 74 68  on a platform th
c540: 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70  at does not supp
c550: 6f 72 74 20 74 68 65 0a 20 20 63 6f 6e 63 65 70  ort the.  concep
c560: 74 20 6f 66 20 6c 6f 63 61 6c 20 74 69 6d 65 2e  t of local time.
c570: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
c580: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
c590: 4c 4f 4f 4b 41 53 49 44 45 7d 20 7b 0a 20 20 54  LOOKASIDE} {.  T
c5a0: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
c5b0: 20 74 68 65 20 5b 6c 6f 6f 6b 61 73 69 64 65 20   the [lookaside 
c5c0: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
c5d0: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
c5e0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
c5f0: 54 5f 4d 45 4d 4f 52 59 44 42 7d 20 7b 0a 20 20  T_MEMORYDB} {.  
c600: 57 68 65 6e 20 74 68 69 73 20 69 73 20 64 65 66  When this is def
c610: 69 6e 65 64 2c 20 74 68 65 20 6c 69 62 72 61 72  ined, the librar
c620: 79 20 64 6f 65 73 20 6e 6f 74 20 72 65 73 70 65  y does not respe
c630: 63 74 20 74 68 65 20 73 70 65 63 69 61 6c 20 64  ct the special d
c640: 61 74 61 62 61 73 65 0a 20 20 6e 61 6d 65 20 22  atabase.  name "
c650: 3a 6d 65 6d 6f 72 79 3a 22 20 28 6e 6f 72 6d 61  :memory:" (norma
c660: 6c 6c 79 20 75 73 65 64 20 74 6f 20 63 72 65 61  lly used to crea
c670: 74 65 20 61 6e 20 5b 69 6e 2d 6d 65 6d 6f 72 79  te an [in-memory
c680: 20 64 61 74 61 62 61 73 65 5d 29 2e 20 49 66 20   database]). If 
c690: 0a 20 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 69 73  .  ":memory:" is
c6a0: 20 70 61 73 73 65 64 20 74 6f 20 5b 73 71 6c 69   passed to [sqli
c6b0: 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71  te3_open()], [sq
c6c0: 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d 2c  lite3_open16()],
c6d0: 20 6f 72 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f   or.  [sqlite3_o
c6e0: 70 65 6e 5f 76 32 28 29 5d 2c 20 61 20 66 69 6c  pen_v2()], a fil
c6f0: 65 20 77 69 74 68 20 74 68 69 73 20 6e 61 6d 65  e with this name
c700: 20 77 69 6c 6c 20 62 65 20 0a 20 20 6f 70 65 6e   will be .  open
c710: 65 64 20 6f 72 20 63 72 65 61 74 65 64 2e 0a 7d  ed or created..}
c720: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
c730: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4f 52   {SQLITE_OMIT_OR
c740: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b  _OPTIMIZATION} {
c750: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  .  This option d
c760: 69 73 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c  isables the abil
c770: 69 74 79 20 6f 66 20 53 51 4c 69 74 65 20 74 6f  ity of SQLite to
c780: 20 75 73 65 20 61 6e 20 69 6e 64 65 78 20 74 6f   use an index to
c790: 67 65 74 68 65 72 0a 20 20 77 69 74 68 20 74 65  gether.  with te
c7a0: 72 6d 73 20 6f 66 20 61 20 57 48 45 52 45 20 63  rms of a WHERE c
c7b0: 6c 61 75 73 65 20 63 6f 6e 6e 65 63 74 65 64 20  lause connected 
c7c0: 62 79 20 74 68 65 20 4f 52 20 6f 70 65 72 61 74  by the OR operat
c7d0: 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  or..}..COMPILE_O
c7e0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
c7f0: 49 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53  IT_PAGER_PRAGMAS
c800: 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74  } {.  Defining t
c810: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
c820: 20 70 72 61 67 6d 61 73 20 72 65 6c 61 74 65 64   pragmas related
c830: 20 74 6f 20 74 68 65 20 70 61 67 65 72 20 73 75   to the pager su
c840: 62 73 79 73 74 65 6d 20 66 72 6f 6d 20 0a 20 20  bsystem from .  
c850: 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f  the build..}..CO
c860: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
c870: 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 41 47 4d 41  LITE_OMIT_PRAGMA
c880: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
c890: 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69  n is used to omi
c8a0: 74 20 74 68 65 20 5b 50 52 41 47 4d 41 5d 20 63  t the [PRAGMA] c
c8b0: 6f 6d 6d 61 6e 64 0a 20 20 66 72 6f 6d 20 74 68  ommand.  from th
c8c0: 65 20 6c 69 62 72 61 72 79 2e 20 4e 6f 74 65 20  e library. Note 
c8d0: 74 68 61 74 20 69 74 20 69 73 20 75 73 65 66 75  that it is usefu
c8e0: 6c 20 74 6f 20 64 65 66 69 6e 65 20 74 68 65 20  l to define the 
c8f0: 6d 61 63 72 6f 73 20 74 68 61 74 20 6f 6d 69 74  macros that omit
c900: 0a 20 20 73 70 65 63 69 66 69 63 20 70 72 61 67  .  specific prag
c910: 6d 61 73 20 69 6e 20 61 64 64 69 74 69 6f 6e 20  mas in addition 
c920: 74 6f 20 74 68 69 73 2c 20 61 73 20 74 68 65 79  to this, as they
c930: 20 6d 61 79 20 61 6c 73 6f 20 72 65 6d 6f 76 65   may also remove
c940: 20 73 75 70 70 6f 72 74 69 6e 67 20 63 6f 64 65   supporting code
c950: 0a 20 20 69 6e 20 6f 74 68 65 72 20 73 75 62 2d  .  in other sub-
c960: 73 79 73 74 65 6d 73 2e 20 54 68 69 73 20 6d 61  systems. This ma
c970: 63 72 6f 20 72 65 6d 6f 76 65 73 20 74 68 65 20  cro removes the 
c980: 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64  [PRAGMA] command
c990: 20 6f 6e 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c   only..}..COMPIL
c9a0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
c9b0: 5f 4f 4d 49 54 5f 50 52 4f 47 52 45 53 53 5f 43  _OMIT_PROGRESS_C
c9c0: 41 4c 4c 42 41 43 4b 7d 20 7b 0a 20 20 54 68 69  ALLBACK} {.  Thi
c9d0: 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20 62 65 20  s option may be 
c9e0: 64 65 66 69 6e 65 64 20 74 6f 20 6f 6d 69 74 20  defined to omit 
c9f0: 74 68 65 20 63 61 70 61 62 69 6c 69 74 79 20 74  the capability t
ca00: 6f 20 69 73 73 75 65 20 22 70 72 6f 67 72 65 73  o issue "progres
ca10: 73 22 20 0a 20 20 63 61 6c 6c 62 61 63 6b 73 20  s" .  callbacks 
ca20: 64 75 72 69 6e 67 20 6c 6f 6e 67 2d 72 75 6e 6e  during long-runn
ca30: 69 6e 67 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ing SQL statemen
ca40: 74 73 2e 20 54 68 65 20 0a 20 20 5b 73 71 6c 69  ts. The .  [sqli
ca50: 74 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e  te3_progress_han
ca60: 64 6c 65 72 28 29 5d 0a 20 20 41 50 49 20 66 75  dler()].  API fu
ca70: 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72  nction is not pr
ca80: 65 73 65 6e 74 20 69 6e 20 74 68 65 20 6c 69 62  esent in the lib
ca90: 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rary..}..COMPILE
caa0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
cab0: 4f 4d 49 54 5f 51 55 49 43 4b 42 41 4c 41 4e 43  OMIT_QUICKBALANC
cac0: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
cad0: 6f 6e 20 6f 6d 69 74 73 20 61 6e 20 61 6c 74 65  on omits an alte
cae0: 72 6e 61 74 69 76 65 2c 20 66 61 73 74 65 72 20  rnative, faster 
caf0: 42 2d 54 72 65 65 20 62 61 6c 61 6e 63 69 6e 67  B-Tree balancing
cb00: 20 72 6f 75 74 69 6e 65 2e 0a 20 20 55 73 69 6e   routine..  Usin
cb10: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61  g this option ma
cb20: 6b 65 73 20 53 51 4c 69 74 65 20 73 6c 69 67 68  kes SQLite sligh
cb30: 74 6c 79 20 73 6d 61 6c 6c 65 72 20 61 74 20 74  tly smaller at t
cb40: 68 65 20 65 78 70 65 6e 73 65 20 6f 66 0a 20 20  he expense of.  
cb50: 6d 61 6b 69 6e 67 20 69 74 20 72 75 6e 20 73 6c  making it run sl
cb60: 69 67 68 74 6c 79 20 73 6c 6f 77 65 72 2e 0a 7d  ightly slower..}
cb70: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
cb80: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 52 45   {SQLITE_OMIT_RE
cb90: 49 4e 44 45 58 7d 20 7b 0a 20 20 57 68 65 6e 20  INDEX} {.  When 
cba0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
cbb0: 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 52 45 49  efined, the [REI
cbc0: 4e 44 45 58 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20  NDEX].  command 
cbd0: 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20  is not included 
cbe0: 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a  in the library..
cbf0: 20 20 45 78 65 63 75 74 69 6e 67 20 61 20 5b 52    Executing a [R
cc00: 45 49 4e 44 45 58 5d 20 73 74 61 74 65 6d 65 6e  EINDEX] statemen
cc10: 74 20 63 61 75 73 65 73 20 0a 20 20 61 20 70 61  t causes .  a pa
cc20: 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f  rse error..}..CO
cc30: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
cc40: 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41  LITE_OMIT_SCHEMA
cc50: 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65  _PRAGMAS} {.  De
cc60: 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69  fining this opti
cc70: 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d 61 73  on omits pragmas
cc80: 20 66 6f 72 20 71 75 65 72 79 69 6e 67 20 74 68   for querying th
cc90: 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d  e database schem
cca0: 61 20 66 72 6f 6d 20 0a 20 20 74 68 65 20 62 75  a from .  the bu
ccb0: 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ild..}..COMPILE_
ccc0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
ccd0: 4d 49 54 5f 53 43 48 45 4d 41 5f 56 45 52 53 49  MIT_SCHEMA_VERSI
cce0: 4f 4e 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20  ON_PRAGMAS} {.  
ccf0: 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70  Defining this op
cd00: 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d  tion omits pragm
cd10: 61 73 20 66 6f 72 20 71 75 65 72 79 69 6e 67 20  as for querying 
cd20: 61 6e 64 20 6d 6f 64 69 66 79 69 6e 67 20 74 68  and modifying th
cd30: 65 20 0a 20 20 64 61 74 61 62 61 73 65 20 73 63  e .  database sc
cd40: 68 65 6d 61 20 76 65 72 73 69 6f 6e 20 61 6e 64  hema version and
cd50: 20 75 73 65 72 20 76 65 72 73 69 6f 6e 20 66 72   user version fr
cd60: 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e 20 53 70  om the build. Sp
cd70: 65 63 69 66 69 63 61 6c 6c 79 2c 20 74 68 65 20  ecifically, the 
cd80: 0a 20 20 5b 73 63 68 65 6d 61 5f 76 65 72 73 69  .  [schema_versi
cd90: 6f 6e 5d 20 61 6e 64 20 5b 75 73 65 72 5f 76 65  on] and [user_ve
cda0: 72 73 69 6f 6e 5d 20 50 52 41 47 4d 41 73 20 61  rsion] PRAGMAs a
cdb0: 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43  re omitted..}..C
cdc0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
cdd0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 48 41 52 45  QLITE_OMIT_SHARE
cde0: 44 5f 43 41 43 48 45 7d 20 7b 0a 20 20 54 68 69  D_CACHE} {.  Thi
cdf0: 73 20 6f 70 74 69 6f 6e 20 62 75 69 6c 64 73 20  s option builds 
ce00: 53 51 4c 69 74 65 20 77 69 74 68 6f 75 74 20 73  SQLite without s
ce10: 75 70 70 6f 72 74 20 66 6f 72 20 73 68 61 72 65  upport for share
ce20: 64 2d 63 61 63 68 65 20 6d 6f 64 65 2e 0a 20 20  d-cache mode..  
ce30: 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61  The [sqlite3_ena
ce40: 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65  ble_shared_cache
ce50: 28 29 5d 20 69 73 20 6f 6d 69 74 74 65 64 20 61  ()] is omitted a
ce60: 6c 6f 6e 67 20 77 69 74 68 20 61 20 66 61 69 72  long with a fair
ce70: 0a 20 20 61 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67  .  amount of log
ce80: 69 63 20 77 69 74 68 69 6e 20 74 68 65 20 42 2d  ic within the B-
ce90: 54 72 65 65 20 73 75 62 73 79 73 74 65 6d 20 61  Tree subsystem a
cea0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 73  ssociated with s
ceb0: 68 61 72 65 64 0a 20 20 63 61 63 68 65 20 6d 61  hared.  cache ma
cec0: 6e 61 67 65 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d  nagement..}..COM
ced0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
cee0: 49 54 45 5f 4f 4d 49 54 5f 53 55 42 51 55 45 52  ITE_OMIT_SUBQUER
cef0: 59 7d 20 7b 0a 20 20 49 66 20 64 65 66 69 6e 65  Y} {.  If define
cf00: 64 2c 20 73 75 70 70 6f 72 74 20 66 6f 72 20 73  d, support for s
cf10: 75 62 2d 73 65 6c 65 63 74 73 20 61 6e 64 20 74  ub-selects and t
cf20: 68 65 20 49 4e 28 29 20 6f 70 65 72 61 74 6f 72  he IN() operator
cf30: 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a   are omitted..}.
cf40: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
cf50: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 43 4c  {SQLITE_OMIT_TCL
cf60: 5f 56 41 52 49 41 42 4c 45 7d 20 7b 0a 20 20 49  _VARIABLE} {.  I
cf70: 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20  f this macro is 
cf80: 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 74 68  defined, then th
cf90: 65 20 73 70 65 63 69 61 6c 20 22 24 3c 76 61 72  e special "$<var
cfa0: 69 61 62 6c 65 2d 6e 61 6d 65 3e 22 20 73 79 6e  iable-name>" syn
cfb0: 74 61 78 0a 20 20 75 73 65 64 20 74 6f 20 61 75  tax.  used to au
cfc0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 69 6e 64  tomatically bind
cfd0: 20 53 51 4c 20 76 61 72 69 61 62 6c 65 73 20 74   SQL variables t
cfe0: 6f 20 54 43 4c 20 76 61 72 69 61 62 6c 65 73 20  o TCL variables 
cff0: 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43  is omitted..}..C
d000: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
d010: 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 45 4d 50 44  QLITE_OMIT_TEMPD
d020: 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  B} {.  This opti
d030: 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74  on omits support
d040: 20 66 6f 72 20 54 45 4d 50 20 6f 72 20 54 45 4d   for TEMP or TEM
d050: 50 4f 52 41 52 59 20 74 61 62 6c 65 73 2e 0a 7d  PORARY tables..}
d060: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
d070: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52   {SQLITE_OMIT_TR
d080: 41 43 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ACE} {.  This op
d090: 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
d0a0: 72 74 20 66 6f 72 20 74 68 65 20 5b 73 71 6c 69  rt for the [sqli
d0b0: 74 65 33 5f 70 72 6f 66 69 6c 65 28 29 5d 20 61  te3_profile()] a
d0c0: 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74 72  nd.  [sqlite3_tr
d0d0: 61 63 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ace()] interface
d0e0: 73 20 61 6e 64 20 74 68 65 69 72 20 61 73 73 6f  s and their asso
d0f0: 63 69 61 74 65 64 20 6c 6f 67 69 63 2e 0a 7d 0a  ciated logic..}.
d100: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
d110: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 49  {SQLITE_OMIT_TRI
d120: 47 47 45 52 7d 20 7b 0a 20 20 44 65 66 69 6e 69  GGER} {.  Defini
d130: 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f  ng this option o
d140: 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72  mits support for
d150: 20 54 52 49 47 47 45 52 20 6f 62 6a 65 63 74 73   TRIGGER objects
d160: 2e 20 4e 65 69 74 68 65 72 20 74 68 65 20 0a 20  . Neither the . 
d170: 20 5b 43 52 45 41 54 45 20 54 52 49 47 47 45 52   [CREATE TRIGGER
d180: 5d 20 6f 72 20 5b 44 52 4f 50 20 54 52 49 47 47  ] or [DROP TRIGG
d190: 45 52 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73 20 61  ER].  commands a
d1a0: 72 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20  re available in 
d1b0: 74 68 69 73 20 63 61 73 65 2c 20 61 6e 64 20 61  this case, and a
d1c0: 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65  ttempting to exe
d1d0: 63 75 74 65 0a 20 20 65 69 74 68 65 72 20 77 69  cute.  either wi
d1e0: 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 20 70  ll result in a p
d1f0: 61 72 73 65 20 65 72 72 6f 72 2e 0a 20 20 54 68  arse error..  Th
d200: 69 73 20 6f 70 74 69 6f 6e 20 61 6c 73 6f 20 64  is option also d
d210: 69 73 61 62 6c 65 73 20 65 6e 66 6f 72 63 65 6d  isables enforcem
d220: 65 6e 74 20 6f 66 20 5b 66 6f 72 65 69 67 6e 20  ent of [foreign 
d230: 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d  key constraints]
d240: 2c 0a 20 20 73 69 6e 63 65 20 74 68 65 20 63 6f  ,.  since the co
d250: 64 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e  de that implemen
d260: 74 73 20 74 72 69 67 67 65 72 73 20 61 6e 64 20  ts triggers and 
d270: 77 68 69 63 68 20 69 73 20 6f 6d 69 74 74 65 64  which is omitted
d280: 20 62 79 20 74 68 69 73 0a 20 20 6f 70 74 69 6f   by this.  optio
d290: 6e 20 69 73 20 61 6c 73 6f 20 75 73 65 64 20 74  n is also used t
d2a0: 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 5b 66 6f 72  o implement [for
d2b0: 65 69 67 6e 20 6b 65 79 20 61 63 74 69 6f 6e 73  eign key actions
d2c0: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
d2d0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
d2e0: 54 5f 54 52 55 4e 43 41 54 45 5f 4f 50 54 49 4d  T_TRUNCATE_OPTIM
d2f0: 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 41 20 64  IZATION} {.  A d
d300: 65 66 61 75 6c 74 20 62 75 69 6c 64 20 6f 66 20  efault build of 
d310: 53 51 4c 69 74 65 2c 20 69 66 20 61 20 5b 44 45  SQLite, if a [DE
d320: 4c 45 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 20  LETE] statement 
d330: 68 61 73 20 6e 6f 20 57 48 45 52 45 20 63 6c 61  has no WHERE cla
d340: 75 73 65 0a 20 20 61 6e 64 20 6f 70 65 72 61 74  use.  and operat
d350: 65 73 20 6f 6e 20 61 20 74 61 62 6c 65 20 77 69  es on a table wi
d360: 74 68 20 6e 6f 20 74 72 69 67 67 65 72 73 2c 20  th no triggers, 
d370: 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20  an optimization 
d380: 6f 63 63 75 72 73 20 74 68 61 74 0a 20 20 63 61  occurs that.  ca
d390: 75 73 65 73 20 74 68 65 20 44 45 4c 45 54 45 20  uses the DELETE 
d3a0: 74 6f 20 6f 63 63 75 72 20 62 79 20 64 72 6f 70  to occur by drop
d3b0: 70 69 6e 67 20 61 6e 64 20 72 65 63 72 65 61 74  ping and recreat
d3c0: 69 6e 67 20 74 68 65 20 74 61 62 6c 65 2e 20 20  ing the table.  
d3d0: 0a 20 20 44 72 6f 70 70 69 6e 67 20 61 6e 64 20  .  Dropping and 
d3e0: 72 65 63 72 65 61 74 69 6e 67 20 61 20 74 61 62  recreating a tab
d3f0: 6c 65 20 69 73 20 75 73 75 61 6c 6c 79 20 6d 75  le is usually mu
d400: 63 68 20 66 61 73 74 65 72 20 74 68 61 6e 20 64  ch faster than d
d410: 65 6c 65 74 69 6e 67 0a 20 20 74 68 65 20 74 61  eleting.  the ta
d420: 62 6c 65 20 63 6f 6e 74 65 6e 74 20 72 6f 77 20  ble content row 
d430: 62 79 20 72 6f 77 2e 20 20 54 68 69 73 20 69 73  by row.  This is
d440: 20 74 68 65 20 22 74 72 75 6e 63 61 74 65 20 6f   the "truncate o
d450: 70 74 69 6d 69 7a 61 74 69 6f 6e 22 2e 0a 7d 0a  ptimization"..}.
d460: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
d470: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 55 54 46  {SQLITE_OMIT_UTF
d480: 31 36 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63  16} {.  This mac
d490: 72 6f 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d  ro is used to om
d4a0: 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 55  it support for U
d4b0: 54 46 31 36 20 74 65 78 74 20 65 6e 63 6f 64 69  TF16 text encodi
d4c0: 6e 67 2e 20 57 68 65 6e 20 74 68 69 73 20 69 73  ng. When this is
d4d0: 0a 20 20 64 65 66 69 6e 65 64 20 61 6c 6c 20 41  .  defined all A
d4e0: 50 49 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61  PI functions tha
d4f0: 74 20 72 65 74 75 72 6e 20 6f 72 20 61 63 63 65  t return or acce
d500: 70 74 20 55 54 46 31 36 20 65 6e 63 6f 64 65 64  pt UTF16 encoded
d510: 20 74 65 78 74 20 61 72 65 0a 20 20 75 6e 61 76   text are.  unav
d520: 61 69 6c 61 62 6c 65 2e 20 54 68 65 73 65 20 66  ailable. These f
d530: 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20  unctions can be 
d540: 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 74 68  identified by th
d550: 65 20 66 61 63 74 20 74 68 61 74 20 74 68 65 79  e fact that they
d560: 20 65 6e 64 0a 20 20 77 69 74 68 20 27 31 36 27   end.  with '16'
d570: 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 5b 73  , for example [s
d580: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36  qlite3_prepare16
d590: 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 63 6f  ()], [sqlite3_co
d5a0: 6c 75 6d 6e 5f 74 65 78 74 31 36 28 29 5d 20 61  lumn_text16()] a
d5b0: 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62 69  nd.  [sqlite3_bi
d5c0: 6e 64 5f 74 65 78 74 31 36 28 29 5d 2e 0a 7d 0a  nd_text16()]..}.
d5d0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
d5e0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 41 43  {SQLITE_OMIT_VAC
d5f0: 55 55 4d 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  UUM} {.  When th
d600: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
d610: 69 6e 65 64 2c 20 74 68 65 20 5b 56 41 43 55 55  ined, the [VACUU
d620: 4d 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20 69 73 20  M].  command is 
d630: 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20  not included in 
d640: 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 20 20 45  the library..  E
d650: 78 65 63 75 74 69 6e 67 20 61 20 5b 56 41 43 55  xecuting a [VACU
d660: 55 4d 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61  UM] statement ca
d670: 75 73 65 73 20 0a 20 20 61 20 70 61 72 73 65 20  uses .  a parse 
d680: 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  error..}..COMPIL
d690: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
d6a0: 5f 4f 4d 49 54 5f 56 49 45 57 7d 20 7b 0a 20 20  _OMIT_VIEW} {.  
d6b0: 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70  Defining this op
d6c0: 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
d6d0: 72 74 20 66 6f 72 20 56 49 45 57 20 6f 62 6a 65  rt for VIEW obje
d6e0: 63 74 73 2e 20 4e 65 69 74 68 65 72 20 74 68 65  cts. Neither the
d6f0: 20 0a 20 20 5b 43 52 45 41 54 45 20 56 49 45 57   .  [CREATE VIEW
d700: 5d 20 6e 6f 72 20 74 68 65 20 5b 44 52 4f 50 20  ] nor the [DROP 
d710: 56 49 45 57 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73  VIEW].  commands
d720: 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 69   are available i
d730: 6e 20 74 68 69 73 20 63 61 73 65 2c 20 61 6e 64  n this case, and
d740: 0a 20 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f  .  attempting to
d750: 20 65 78 65 63 75 74 65 20 65 69 74 68 65 72 20   execute either 
d760: 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61  will result in a
d770: 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20   parse error... 
d780: 20 57 41 52 4e 49 4e 47 3a 20 49 66 20 74 68 69   WARNING: If thi
d790: 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e  s macro is defin
d7a0: 65 64 2c 20 69 74 20 77 69 6c 6c 20 6e 6f 74 20  ed, it will not 
d7b0: 62 65 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 6f  be possible to o
d7c0: 70 65 6e 20 61 20 64 61 74 61 62 61 73 65 0a 20  pen a database. 
d7d0: 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 20 73   for which the s
d7e0: 63 68 65 6d 61 20 63 6f 6e 74 61 69 6e 73 20 56  chema contains V
d7f0: 49 45 57 20 6f 62 6a 65 63 74 73 2e 20 0a 7d 0a  IEW objects. .}.
d800: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
d810: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 52  {SQLITE_OMIT_VIR
d820: 54 55 41 4c 54 41 42 4c 45 7d 20 7b 0a 20 20 54  TUALTABLE} {.  T
d830: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
d840: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
d850: 20 5b 73 71 6c 69 74 65 33 5f 76 74 61 62 20 7c   [sqlite3_vtab |
d860: 20 56 69 72 74 75 61 6c 20 54 61 62 6c 65 5d 0a   Virtual Table].
d870: 20 20 6d 65 63 68 61 6e 69 73 6d 20 69 6e 20 53    mechanism in S
d880: 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  QLite..}..COMPIL
d890: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
d8a0: 5f 4f 4d 49 54 5f 57 41 4c 7d 20 7b 0a 20 20 54  _OMIT_WAL} {.  T
d8b0: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
d8c0: 20 74 68 65 20 22 5b 77 72 69 74 65 2d 61 68 65   the "[write-ahe
d8d0: 61 64 20 6c 6f 67 5d 22 20 28 61 2e 6b 2e 61 2e  ad log]" (a.k.a.
d8e0: 20 22 5b 57 41 4c 5d 22 29 20 63 61 70 61 62 69   "[WAL]") capabi
d8f0: 6c 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  lity..}..COMPILE
d900: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
d910: 4f 4d 49 54 5f 57 53 44 7d 20 7b 0a 20 20 54 68  OMIT_WSD} {.  Th
d920: 69 73 20 6f 70 74 69 6f 6e 20 62 75 69 6c 64 73  is option builds
d930: 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68   a version of th
d940: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
d950: 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 6e   that contains n
d960: 6f 0a 20 20 57 72 69 74 61 62 6c 65 20 53 74 61  o.  Writable Sta
d970: 74 69 63 20 44 61 74 61 20 28 57 53 44 29 2e 20  tic Data (WSD). 
d980: 20 57 53 44 20 69 73 20 67 6c 6f 62 61 6c 20 76   WSD is global v
d990: 61 72 69 61 62 6c 65 73 20 61 6e 64 2f 6f 72 20  ariables and/or 
d9a0: 73 74 61 74 69 63 0a 20 20 76 61 72 69 61 62 6c  static.  variabl
d9b0: 65 73 2e 20 20 53 6f 6d 65 20 70 6c 61 74 66 6f  es.  Some platfo
d9c0: 72 6d 73 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f  rms do not suppo
d9d0: 72 74 20 57 53 44 2c 20 61 6e 64 20 74 68 69 73  rt WSD, and this
d9e0: 20 6f 70 74 69 6f 6e 20 69 73 20 6e 65 63 65 73   option is neces
d9f0: 73 61 72 79 0a 20 20 69 6e 20 6f 72 64 65 72 20  sary.  in order 
da00: 66 6f 72 20 53 51 4c 69 74 65 20 74 6f 20 77 6f  for SQLite to wo
da10: 72 6b 20 74 68 6f 73 65 20 70 6c 61 74 66 6f 72  rk those platfor
da20: 6d 73 2e 20 20 0a 0a 20 20 55 6e 6c 69 6b 65 20  ms.  ..  Unlike 
da30: 6f 74 68 65 72 20 4f 4d 49 54 20 6f 70 74 69 6f  other OMIT optio
da40: 6e 73 20 77 68 69 63 68 20 6d 61 6b 65 20 74 68  ns which make th
da50: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
da60: 20 73 6d 61 6c 6c 65 72 2c 0a 20 20 74 68 69 73   smaller,.  this
da70: 20 6f 70 74 69 6f 6e 20 61 63 74 75 61 6c 6c 79   option actually
da80: 20 69 6e 63 72 65 61 73 65 73 20 74 68 65 20 73   increases the s
da90: 69 7a 65 20 6f 66 20 53 51 4c 69 74 65 20 61 6e  ize of SQLite an
daa0: 64 20 6d 61 6b 65 73 20 69 74 20 72 75 6e 0a 20  d makes it run. 
dab0: 20 61 20 6c 69 74 74 6c 65 20 73 6c 6f 77 65 72   a little slower
dac0: 2e 20 20 4f 6e 6c 79 20 75 73 65 20 74 68 69 73  .  Only use this
dad0: 20 6f 70 74 69 6f 6e 20 69 66 20 53 51 4c 69 74   option if SQLit
dae0: 65 20 69 73 20 62 65 69 6e 67 20 62 75 69 6c 74  e is being built
daf0: 20 66 6f 72 20 61 6e 0a 20 20 65 6d 62 65 64 64   for an.  embedd
db00: 65 64 20 74 61 72 67 65 74 20 74 68 61 74 20 64  ed target that d
db10: 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20  oes not support 
db20: 57 53 44 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  WSD..}..COMPILE_
db30: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
db40: 4d 49 54 5f 58 46 45 52 5f 4f 50 54 7d 20 7b 0a  MIT_XFER_OPT} {.
db50: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
db60: 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
db70: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 74 68  optimizations th
db80: 61 74 20 68 65 6c 70 20 73 74 61 74 65 6d 65 6e  at help statemen
db90: 74 73 0a 20 20 6f 66 20 74 68 65 20 66 6f 72 6d  ts.  of the form
dba0: 20 22 49 4e 53 45 52 54 20 49 4e 54 4f 20 2e 2e   "INSERT INTO ..
dbb0: 2e 20 53 45 4c 45 43 54 20 2e 2e 2e 22 20 72 75  . SELECT ..." ru
dbc0: 6e 20 66 61 73 74 65 72 2e 0a 7d 0a 0a 43 4f 4d  n faster..}..COM
dbd0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
dbe0: 49 54 45 5f 5a 45 52 4f 5f 4d 41 4c 4c 4f 43 7d  ITE_ZERO_MALLOC}
dbf0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
dc00: 20 6f 6d 69 74 73 20 62 6f 74 68 20 74 68 65 20   omits both the 
dc10: 5b 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20  [default memory 
dc20: 61 6c 6c 6f 63 61 74 6f 72 5d 20 61 6e 64 20 74  allocator] and t
dc30: 68 65 0a 20 20 5b 64 65 62 75 67 67 69 6e 67 20  he.  [debugging 
dc40: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
dc50: 5d 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64  ] from the build
dc60: 20 61 6e 64 20 73 75 62 73 74 69 74 75 74 65 73   and substitutes
dc70: 20 61 20 73 74 75 62 0a 20 20 6d 65 6d 6f 72 79   a stub.  memory
dc80: 20 61 6c 6c 6f 63 61 74 6f 72 20 74 68 61 74 20   allocator that 
dc90: 61 6c 77 61 79 73 20 66 61 69 6c 73 2e 20 20 53  always fails.  S
dca0: 51 4c 69 74 65 20 77 69 6c 6c 20 6e 6f 74 20 72  QLite will not r
dcb0: 75 6e 20 77 69 74 68 20 74 68 69 73 0a 20 20 73  un with this.  s
dcc0: 74 75 62 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  tub memory alloc
dcd0: 61 74 6f 72 20 73 69 6e 63 65 20 69 74 20 77 69  ator since it wi
dce0: 6c 6c 20 62 65 20 75 6e 61 62 6c 65 20 74 6f 20  ll be unable to 
dcf0: 61 6c 6c 6f 63 61 74 65 20 6d 65 6d 6f 72 79 2e  allocate memory.
dd00: 20 20 42 75 74 0a 20 20 74 68 69 73 20 73 74 75    But.  this stu
dd10: 62 20 63 61 6e 20 62 65 20 72 65 70 6c 61 63 65  b can be replace
dd20: 64 20 61 74 20 73 74 61 72 74 2d 74 69 6d 65 20  d at start-time 
dd30: 75 73 69 6e 67 0a 20 20 5b 73 71 6c 69 74 65 33  using.  [sqlite3
dd40: 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45  _config]([SQLITE
dd50: 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 2c  _CONFIG_MALLOC],
dd60: 2e 2e 2e 29 20 6f 72 0a 20 20 5b 73 71 6c 69 74  ...) or.  [sqlit
dd70: 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49  e3_config]([SQLI
dd80: 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 2c  TE_CONFIG_HEAP],
dd90: 2e 2e 2e 29 2e 0a 20 20 53 6f 20 74 68 65 20 6e  ...)..  So the n
dda0: 65 74 20 65 66 66 65 63 74 20 6f 66 20 74 68 69  et effect of thi
ddb0: 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
ddc0: 70 74 69 6f 6e 20 69 73 20 74 68 61 74 20 69 74  ption is that it
ddd0: 20 61 6c 6c 6f 77 73 20 53 51 4c 69 74 65 0a 20   allows SQLite. 
dde0: 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c 65 64 20   to be compiled 
ddf0: 61 6e 64 20 6c 69 6e 6b 65 64 20 61 67 61 69 6e  and linked again
de00: 73 74 20 61 20 73 79 73 74 65 6d 20 6c 69 62 72  st a system libr
de10: 61 72 79 20 74 68 61 74 20 64 6f 65 73 20 6e 6f  ary that does no
de20: 74 20 73 75 70 70 6f 72 74 0a 20 20 6d 61 6c 6c  t support.  mall
de30: 6f 63 28 29 2c 20 66 72 65 65 28 29 2c 20 61 6e  oc(), free(), an
de40: 64 2f 6f 72 20 72 65 61 6c 6c 6f 63 28 29 2e 0a  d/or realloc()..
de50: 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20 6e 61 6d  }..</tcl>.<a nam
de60: 65 3d 22 64 65 62 75 67 6f 70 74 69 6f 6e 73 22  e="debugoptions"
de70: 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 38 20 41 6e  ></a>.<h2>1.8 An
de80: 61 6c 79 73 69 73 20 61 6e 64 20 44 65 62 75 67  alysis and Debug
de90: 67 69 6e 67 20 4f 70 74 69 6f 6e 73 3c 2f 68 32  ging Options</h2
dea0: 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45  >.<tcl>..COMPILE
deb0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
dec0: 44 45 42 55 47 7d 20 7b 0a 20 20 54 68 65 20 53  DEBUG} {.  The S
ded0: 51 4c 69 74 65 20 73 6f 75 72 63 65 20 63 6f 64  QLite source cod
dee0: 65 20 63 6f 6e 74 61 69 6e 73 20 6c 69 74 65 72  e contains liter
def0: 61 6c 6c 79 20 74 68 6f 75 73 61 6e 64 73 20 6f  ally thousands o
df00: 66 20 61 73 73 65 72 74 28 29 20 73 74 61 74 65  f assert() state
df10: 6d 65 6e 74 73 0a 20 20 75 73 65 64 20 74 6f 20  ments.  used to 
df20: 76 65 72 69 66 79 20 69 6e 74 65 72 6e 61 6c 20  verify internal 
df30: 61 73 73 75 6d 70 74 69 6f 6e 73 20 61 6e 64 20  assumptions and 
df40: 73 75 62 72 6f 75 74 69 6e 65 20 70 72 65 63 6f  subroutine preco
df50: 6e 64 69 74 69 6f 6e 73 20 61 6e 64 0a 20 20 70  nditions and.  p
df60: 6f 73 74 63 6f 6e 64 69 74 69 6f 6e 73 2e 20 20  ostconditions.  
df70: 54 68 65 73 65 20 61 73 73 65 72 74 28 29 20 73  These assert() s
df80: 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 6e 6f  tatements are no
df90: 72 6d 61 6c 6c 79 20 74 75 72 6e 65 64 20 6f 66  rmally turned of
dfa0: 66 0a 20 20 28 74 68 65 79 20 67 65 6e 65 72 61  f.  (they genera
dfb0: 74 65 20 6e 6f 20 63 6f 64 65 29 20 73 69 6e 63  te no code) sinc
dfc0: 65 20 74 75 72 6e 69 6e 67 20 74 68 65 6d 20 6f  e turning them o
dfd0: 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20 72  n makes SQLite r
dfe0: 75 6e 20 61 70 70 72 6f 78 69 6d 61 74 65 6c 79  un approximately
dff0: 0a 20 20 74 68 72 65 65 20 74 69 6d 65 73 20 73  .  three times s
e000: 6c 6f 77 65 72 2e 20 20 42 75 74 20 66 6f 72 20  lower.  But for 
e010: 74 65 73 74 69 6e 67 20 61 6e 64 20 61 6e 61 6c  testing and anal
e020: 79 73 69 73 2c 20 69 74 20 69 73 20 75 73 65 66  ysis, it is usef
e030: 75 6c 20 74 6f 20 74 75 72 6e 0a 20 20 74 68 65  ul to turn.  the
e040: 20 61 73 73 65 72 74 28 29 20 73 74 61 74 65 6d   assert() statem
e050: 65 6e 74 73 20 6f 6e 2e 20 20 54 68 65 20 53 51  ents on.  The SQ
e060: 4c 49 54 45 5f 44 45 42 55 47 20 63 6f 6d 70 69  LITE_DEBUG compi
e070: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 64  le-time option d
e080: 6f 65 73 20 74 68 69 73 2e 0a 20 20 3c 70 3e 53  oes this..  <p>S
e090: 51 4c 49 54 45 5f 44 45 42 55 47 20 61 6c 73 6f  QLITE_DEBUG also
e0a0: 20 65 6e 61 62 6c 65 73 20 73 6f 6d 65 20 6f 74   enables some ot
e0b0: 68 65 72 20 64 65 62 75 67 67 69 6e 67 20 66 65  her debugging fe
e0c0: 61 74 75 72 65 73 2c 20 73 75 63 68 20 61 73 0a  atures, such as.
e0d0: 20 20 73 70 65 63 69 61 6c 20 5b 50 52 41 47 4d    special [PRAGM
e0e0: 41 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68  A] statements th
e0f0: 61 74 20 74 75 72 6e 20 6f 6e 20 74 72 61 63 69  at turn on traci
e100: 6e 67 20 61 6e 64 20 6c 69 73 74 69 6e 67 20 66  ng and listing f
e110: 65 61 74 75 72 65 73 0a 20 20 75 73 65 64 20 66  eatures.  used f
e120: 6f 72 20 74 72 6f 75 62 6c 65 73 68 6f 6f 74 69  or troubleshooti
e130: 6e 67 20 61 6e 64 20 61 6e 61 6c 79 73 69 73 20  ng and analysis 
e140: 6f 66 20 74 68 65 20 5b 56 44 42 45 5d 20 61 6e  of the [VDBE] an
e150: 64 20 63 6f 64 65 20 67 65 6e 65 72 61 74 6f 72  d code generator
e160: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
e170: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 45 4d 44  ION {SQLITE_MEMD
e180: 45 42 55 47 7d 20 7b 0a 20 20 54 68 65 20 53 51  EBUG} {.  The SQ
e190: 4c 49 54 45 5f 4d 45 4d 44 45 42 55 47 20 6f 70  LITE_MEMDEBUG op
e1a0: 74 69 6f 6e 20 63 61 75 73 65 73 20 61 6e 20 69  tion causes an i
e1b0: 6e 73 74 72 75 6d 65 6e 74 65 64 20 0a 20 20 5b  nstrumented .  [
e1c0: 64 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79  debugging memory
e1d0: 20 61 6c 6c 6f 63 61 74 6f 72 5d 0a 20 20 74 6f   allocator].  to
e1e0: 20 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20   be used as the 
e1f0: 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61  default memory a
e200: 6c 6c 6f 63 61 74 6f 72 20 77 69 74 68 69 6e 20  llocator within 
e210: 53 51 4c 69 74 65 2e 20 20 54 68 65 0a 20 20 69  SQLite.  The.  i
e220: 6e 73 74 72 75 6d 65 6e 74 65 64 20 6d 65 6d 6f  nstrumented memo
e230: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 63 68 65  ry allocator che
e240: 63 6b 73 20 66 6f 72 20 6d 69 73 75 73 65 20 6f  cks for misuse o
e250: 66 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c  f dynamically al
e260: 6c 6f 63 61 74 65 64 0a 20 20 6d 65 6d 6f 72 79  located.  memory
e270: 2e 20 20 45 78 61 6d 70 6c 65 73 20 6f 66 20 6d  .  Examples of m
e280: 69 73 75 73 65 20 69 6e 63 6c 75 64 65 20 75 73  isuse include us
e290: 69 6e 67 20 6d 65 6d 6f 72 79 20 61 66 74 65 72  ing memory after
e2a0: 20 69 74 20 69 73 20 66 72 65 65 64 2c 0a 20 20   it is freed,.  
e2b0: 77 72 69 74 69 6e 67 20 6f 66 66 20 74 68 65 20  writing off the 
e2c0: 65 6e 64 73 20 6f 66 20 61 20 6d 65 6d 6f 72 79  ends of a memory
e2d0: 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 66 72 65   allocation, fre
e2e0: 65 69 6e 67 20 6d 65 6d 6f 72 79 20 6e 6f 74 20  eing memory not 
e2f0: 70 72 65 76 69 6f 75 73 6c 79 0a 20 20 6f 62 74  previously.  obt
e300: 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 6d  ained from the m
e310: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c  emory allocator,
e320: 20 6f 72 20 66 61 69 6c 69 6e 67 20 74 6f 20 69   or failing to i
e330: 6e 69 74 69 61 6c 69 7a 65 20 6e 65 77 6c 79 0a  nitialize newly.
e340: 20 20 61 6c 6c 6f 63 61 74 65 64 20 6d 65 6d 6f    allocated memo
e350: 72 79 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61  ry..}..</tcl>.<a
e360: 20 6e 61 6d 65 3d 22 77 69 6e 33 32 6f 70 74 69   name="win32opti
e370: 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e  ons"></a>.<h2>1.
e380: 39 20 57 69 6e 64 6f 77 73 2d 53 70 65 63 69 66  9 Windows-Specif
e390: 69 63 20 4f 70 74 69 6f 6e 73 3c 2f 68 32 3e 0a  ic Options</h2>.
e3a0: 3c 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  <tcl>..COMPILE_O
e3b0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49  PTION {SQLITE_WI
e3c0: 4e 33 32 5f 48 45 41 50 5f 43 52 45 41 54 45 7d  N32_HEAP_CREATE}
e3d0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
e3e0: 20 66 6f 72 63 65 73 20 74 68 65 20 57 69 6e 33   forces the Win3
e3f0: 32 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20  2 native memory 
e400: 61 6c 6c 6f 63 61 74 6f 72 2c 20 77 68 65 6e 20  allocator, when 
e410: 65 6e 61 62 6c 65 64 2c 20 74 6f 0a 20 20 63 72  enabled, to.  cr
e420: 65 61 74 65 20 61 20 70 72 69 76 61 74 65 20 68  eate a private h
e430: 65 61 70 20 74 6f 20 68 6f 6c 64 20 61 6c 6c 20  eap to hold all 
e440: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
e450: 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ns..}..COMPILE_O
e460: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49  PTION {SQLITE_WI
e470: 4e 33 32 5f 4d 41 4c 4c 4f 43 5f 56 41 4c 49 44  N32_MALLOC_VALID
e480: 41 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ATE} {.  This op
e490: 74 69 6f 6e 20 66 6f 72 63 65 73 20 74 68 65 20  tion forces the 
e4a0: 57 69 6e 33 32 20 6e 61 74 69 76 65 20 6d 65 6d  Win32 native mem
e4b0: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 77  ory allocator, w
e4c0: 68 65 6e 20 65 6e 61 62 6c 65 64 2c 20 74 6f 0a  hen enabled, to.
e4d0: 20 20 6d 61 6b 65 20 73 74 72 61 74 65 67 69 63    make strategic
e4e0: 20 63 61 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20   calls into the 
e4f0: 48 65 61 70 56 61 6c 69 64 61 74 65 28 29 20 66  HeapValidate() f
e500: 75 6e 63 74 69 6f 6e 20 69 66 20 61 73 73 65 72  unction if asser
e510: 74 28 29 20 69 73 20 61 6c 73 6f 0a 20 20 65 6e  t() is also.  en
e520: 61 62 6c 65 64 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e  abled..}..</tcl>
e530: 0a                                               .