Documentation Source Text

Hex Artifact Content
Login

Artifact 6ecb9aa65555235f3a341a632ea8d8c0918d4a58:


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 20 61 6e 20 65 72 72 6f 72 20 69  throw an error i
5a20: 66 20 74 68 65 20 61 75 74 68 6f 72 69 74 79 20  f the authority 
5a30: 73 65 63 74 69 6f 6e 20 69 73 0a 20 20 6e 6f 74  section is.  not
5a40: 20 65 69 74 68 65 72 20 65 6d 70 74 79 20 6f 72   either empty or
5a50: 20 22 6c 6f 63 61 6c 68 6f 73 74 22 2e 20 20 48   "localhost".  H
5a60: 6f 77 65 76 65 72 2c 20 69 66 20 53 51 4c 69 74  owever, if SQLit
5a70: 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69  e is compiled wi
5a80: 74 68 0a 20 20 74 68 65 20 53 51 4c 49 54 45 5f  th.  the SQLITE_
5a90: 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f 52  ALLOW_URI_AUTHOR
5aa0: 49 54 59 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  ITY compile-time
5ab0: 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68   option, then th
5ac0: 65 20 55 52 49 20 69 73 0a 20 20 63 6f 6e 76 65  e URI is.  conve
5ad0: 72 74 65 64 20 69 6e 74 6f 20 61 20 55 6e 69 66  rted into a Unif
5ae0: 6f 72 6d 20 4e 61 6d 69 6e 67 20 43 6f 6e 76 65  orm Naming Conve
5af0: 6e 74 69 6f 6e 20 28 55 4e 43 29 20 66 69 6c 65  ntion (UNC) file
5b00: 6e 61 6d 65 20 61 6e 64 20 70 61 73 73 65 64 0a  name and passed.
5b10: 20 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 75 6e    down to the un
5b20: 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61 74 69  derlying operati
5b30: 6e 67 20 73 79 73 74 65 6d 20 74 68 61 74 20 77  ng system that w
5b40: 61 79 2e 20 20 0a 20 20 3c 70 3e 0a 20 20 53 6f  ay.  .  <p>.  So
5b50: 6d 65 20 66 75 74 75 72 65 20 76 65 72 73 69 6f  me future versio
5b60: 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 61 79  ns of SQLite may
5b70: 20 63 68 61 6e 67 65 20 74 6f 20 65 6e 61 62 6c   change to enabl
5b80: 65 20 74 68 69 73 20 66 65 61 74 75 72 65 0a 20  e this feature. 
5b90: 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 43   by default..}.C
5ba0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
5bb0: 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43 4f 56 45  QLITE_ALLOW_COVE
5bc0: 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 3d  RING_INDEX_SCAN=
5bd0: 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74  <i>&lt;0 or 1&gt
5be0: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
5bf0: 43 2d 70 72 65 70 72 6f 63 65 73 73 20 6d 61 63  C-preprocess mac
5c00: 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68  ro determines th
5c10: 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e  e default settin
5c20: 67 20 6f 66 20 74 68 65 0a 20 20 5b 53 51 4c 49  g of the.  [SQLI
5c30: 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49  TE_CONFIG_COVERI
5c40: 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 5d 20 63  NG_INDEX_SCAN] c
5c50: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74  onfiguration set
5c60: 74 69 6e 67 2e 20 20 49 74 20 64 65 66 61 75 6c  ting.  It defaul
5c70: 74 73 0a 20 20 74 6f 20 31 20 28 6f 6e 29 20 77  ts.  to 1 (on) w
5c80: 68 69 63 68 20 6d 65 61 6e 73 20 74 68 61 74 20  hich means that 
5c90: 63 6f 76 65 72 69 6e 67 20 69 6e 64 69 63 65 73  covering indices
5ca0: 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 66 75   are used for fu
5cb0: 6c 6c 20 74 61 62 6c 65 0a 20 20 73 63 61 6e 73  ll table.  scans
5cc0: 20 77 68 65 72 65 20 70 6f 73 73 69 62 6c 65 2c   where possible,
5cd0: 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 72 65 64   in order to red
5ce0: 75 63 65 20 49 2f 4f 20 61 6e 64 20 69 6d 70 72  uce I/O and impr
5cf0: 6f 76 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e  ove performance.
5d00: 0a 20 20 48 6f 77 65 76 65 72 2c 20 74 68 65 20  .  However, the 
5d10: 75 73 65 20 6f 66 20 61 20 63 6f 76 65 72 69 6e  use of a coverin
5d20: 67 20 69 6e 64 65 78 20 66 6f 72 20 61 20 66 75  g index for a fu
5d30: 6c 6c 20 73 63 61 6e 20 77 69 6c 6c 20 63 61 75  ll scan will cau
5d40: 73 65 20 72 65 73 75 6c 74 73 0a 20 20 74 6f 20  se results.  to 
5d50: 61 70 70 65 61 72 20 69 6e 20 61 20 64 69 66 66  appear in a diff
5d60: 65 72 65 6e 74 20 6f 72 64 65 72 20 66 72 6f 6d  erent order from
5d70: 20 6c 65 67 61 63 79 2c 20 77 68 69 63 68 20 63   legacy, which c
5d80: 6f 75 6c 64 20 63 61 75 73 65 20 73 6f 6d 65 0a  ould cause some.
5d90: 20 20 28 69 6e 63 6f 72 72 65 63 74 6c 79 2d 63    (incorrectly-c
5da0: 6f 64 65 64 29 20 6c 65 67 61 63 79 20 61 70 70  oded) legacy app
5db0: 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20 62 72 65  lications to bre
5dc0: 61 6b 2e 20 20 48 65 6e 63 65 2c 20 74 68 65 20  ak.  Hence, the 
5dd0: 63 6f 76 65 72 69 6e 67 0a 20 20 69 6e 64 65 78  covering.  index
5de0: 20 73 63 61 6e 20 6f 70 74 69 6f 6e 20 63 61 6e   scan option can
5df0: 20 62 65 20 64 69 73 61 62 6c 65 64 20 61 74 20   be disabled at 
5e00: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 6e 20  compile-time on 
5e10: 73 79 73 74 65 6d 73 20 74 68 61 74 20 77 68 61  systems that wha
5e20: 74 0a 20 20 74 6f 20 6d 69 6e 69 6d 69 7a 65 20  t.  to minimize 
5e30: 74 68 65 69 72 20 72 69 73 6b 20 6f 66 20 65 78  their risk of ex
5e40: 70 6f 73 69 6e 67 20 65 72 72 6f 72 73 20 69 6e  posing errors in
5e50: 20 6c 65 67 61 63 79 20 61 70 70 6c 69 63 61 74   legacy applicat
5e60: 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ions..}..COMPILE
5e70: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
5e80: 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d 45 53  ENABLE_8_3_NAMES
5e90: 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 32 26 67  =<i>&lt;1 or 2&g
5ea0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20 74  t;</i>} {.  If t
5eb0: 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73  his C-preprocess
5ec0: 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  or macro is defi
5ed0: 6e 65 64 2c 20 74 68 65 6e 20 65 78 74 72 61 20  ned, then extra 
5ee0: 63 6f 64 65 20 69 73 0a 20 20 69 6e 63 6c 75 64  code is.  includ
5ef0: 65 64 20 74 68 61 74 20 61 6c 6c 6f 77 73 20 53  ed that allows S
5f00: 51 4c 69 74 65 20 74 6f 20 66 75 6e 63 74 69 6f  QLite to functio
5f10: 6e 20 6f 6e 20 61 20 66 69 6c 65 73 79 73 74 65  n on a filesyste
5f20: 6d 20 74 68 61 74 0a 20 20 6f 6e 6c 79 20 73 75  m that.  only su
5f30: 70 70 6f 72 74 20 38 2b 33 20 66 69 6c 65 6e 61  pport 8+3 filena
5f40: 6d 65 73 2e 20 20 49 66 20 74 68 65 20 76 61 6c  mes.  If the val
5f50: 75 65 20 6f 66 20 74 68 69 73 20 6d 61 63 72 6f  ue of this macro
5f60: 20 69 73 20 31 2c 0a 20 20 74 68 65 6e 20 74 68   is 1,.  then th
5f70: 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69  e default behavi
5f80: 6f 72 20 69 73 20 74 6f 20 63 6f 6e 74 69 6e 75  or is to continu
5f90: 65 20 74 6f 20 75 73 65 20 6c 6f 6e 67 20 66 69  e to use long fi
5fa0: 6c 65 6e 61 6d 65 73 20 61 6e 64 0a 20 20 74 6f  lenames and.  to
5fb0: 20 6f 6e 6c 79 20 75 73 65 20 38 2b 33 20 66 69   only use 8+3 fi
5fc0: 6c 65 6e 61 6d 65 73 20 69 66 20 74 68 65 20 0a  lenames if the .
5fd0: 20 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65    database conne
5fe0: 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 65 64 20  ction is opened 
5ff0: 75 73 69 6e 67 20 5b 55 52 49 20 66 69 6c 65 6e  using [URI filen
6000: 61 6d 65 73 5d 20 77 69 74 68 0a 20 20 74 68 65  ames] with.  the
6010: 20 22 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73 3d   "<tt>8_3_names=
6020: 31 3c 2f 74 74 3e 22 20 71 75 65 72 79 20 70 61  1</tt>" query pa
6030: 72 61 6d 65 74 65 72 2e 20 20 49 66 20 74 68 65  rameter.  If the
6040: 20 76 61 6c 75 65 20 6f 66 0a 20 20 74 68 69 73   value of.  this
6050: 20 6d 61 63 72 6f 20 69 73 20 32 2c 20 74 68 65   macro is 2, the
6060: 6e 20 74 68 65 20 75 73 65 20 6f 66 20 38 2b 33  n the use of 8+3
6070: 20 66 69 6c 65 6e 61 6d 65 73 20 62 65 63 6f 6d   filenames becom
6080: 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20  es the default. 
6090: 20 62 75 74 20 6d 61 79 20 62 65 20 64 69 73 61   but may be disa
60a0: 62 6c 65 64 20 6f 6e 20 75 73 69 6e 67 20 74 68  bled on using th
60b0: 65 20 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73 3d  e <tt>8_3_names=
60c0: 30 3c 2f 74 74 3e 20 71 75 65 72 79 20 70 61 72  0</tt> query par
60d0: 61 6d 65 74 65 72 2e 0a 20 20 53 65 65 20 0a 7d  ameter..  See .}
60e0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
60f0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
6100: 41 50 49 5f 41 52 4d 4f 52 7d 20 7b 0a 20 20 57  API_ARMOR} {.  W
6110: 68 65 6e 20 64 65 66 69 6e 65 64 2c 20 74 68 69  hen defined, thi
6120: 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72  s C-preprocessor
6130: 20 6d 61 63 72 6f 20 61 63 74 69 76 61 74 65 73   macro activates
6140: 20 65 78 74 72 61 20 63 6f 64 65 20 74 68 61 74   extra code that
6150: 0a 20 20 61 74 74 65 6d 70 74 73 20 74 6f 20 64  .  attempts to d
6160: 65 74 65 63 74 20 6d 69 73 75 73 65 20 6f 66 20  etect misuse of 
6170: 74 68 65 20 53 51 4c 69 74 65 20 41 50 49 2c 20  the SQLite API, 
6180: 73 75 63 68 20 61 73 20 70 61 73 73 69 6e 67 20  such as passing 
6190: 69 6e 20 4e 55 4c 4c 0a 20 20 70 6f 69 6e 74 65  in NULL.  pointe
61a0: 72 73 20 74 6f 20 72 65 71 75 69 72 65 64 20 70  rs to required p
61b0: 61 72 61 6d 65 74 65 72 73 20 6f 72 20 75 73 69  arameters or usi
61c0: 6e 67 20 6f 62 6a 65 63 74 73 20 61 66 74 65 72  ng objects after
61d0: 20 74 68 65 79 20 68 61 76 65 20 62 65 65 6e 0a   they have been.
61e0: 20 20 64 65 73 74 72 6f 79 65 64 2e 0a 7d 0a 0a    destroyed..}..
61f0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
6200: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 41 54  SQLITE_ENABLE_AT
6210: 4f 4d 49 43 5f 57 52 49 54 45 7d 20 7b 0a 20 20  OMIC_WRITE} {.  
6220: 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f  If this C-prepro
6230: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20  cessor macro is 
6240: 64 65 66 69 6e 65 64 20 61 6e 64 20 69 66 20 74  defined and if t
6250: 68 65 0a 20 20 78 44 65 76 69 63 65 43 68 61 72  he.  xDeviceChar
6260: 61 63 74 65 72 69 73 74 69 63 73 20 6d 65 74 68  acteristics meth
6270: 6f 64 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 69  od of [sqlite3_i
6280: 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63  o_methods] objec
6290: 74 20 66 6f 72 0a 20 20 61 20 64 61 74 61 62 61  t for.  a databa
62a0: 73 65 20 66 69 6c 65 20 72 65 70 6f 72 74 73 20  se file reports 
62b0: 28 76 69 61 20 6f 6e 65 20 6f 66 20 74 68 65 20  (via one of the 
62c0: 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54  [SQLITE_IOCAP_AT
62d0: 4f 4d 49 43 5d 20 62 69 74 73 29 0a 20 20 74 68  OMIC] bits).  th
62e0: 61 74 20 74 68 65 20 66 69 6c 65 73 79 73 74 65  at the filesyste
62f0: 6d 20 73 75 70 70 6f 72 74 73 20 61 74 6f 6d 69  m supports atomi
6300: 63 20 77 72 69 74 65 73 20 61 6e 64 20 69 66 20  c writes and if 
6310: 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 20 20  a transaction.  
6320: 69 6e 76 6f 6c 76 65 73 20 61 20 63 68 61 6e 67  involves a chang
6330: 65 20 74 6f 20 6f 6e 6c 79 20 61 20 73 69 6e 67  e to only a sing
6340: 6c 65 20 70 61 67 65 20 6f 66 20 74 68 65 20 64  le page of the d
6350: 61 74 61 62 61 73 65 20 66 69 6c 65 2c 0a 20 20  atabase file,.  
6360: 74 68 65 6e 20 74 68 65 20 74 72 61 6e 73 61 63  then the transac
6370: 74 69 6f 6e 20 63 6f 6d 6d 69 74 73 20 77 69 74  tion commits wit
6380: 68 20 6a 75 73 74 20 61 20 73 69 6e 67 6c 65 20  h just a single 
6390: 77 72 69 74 65 20 72 65 71 75 65 73 74 20 6f 66  write request of
63a0: 0a 20 20 61 20 73 69 6e 67 6c 65 20 70 61 67 65  .  a single page
63b0: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
63c0: 20 61 6e 64 20 6e 6f 20 72 6f 6c 6c 62 61 63 6b   and no rollback
63d0: 20 6a 6f 75 72 6e 61 6c 20 69 73 20 63 72 65 61   journal is crea
63e0: 74 65 64 0a 20 20 6f 72 20 77 72 69 74 74 65 6e  ted.  or written
63f0: 2e 20 20 4f 6e 20 66 69 6c 65 73 79 73 74 65 6d  .  On filesystem
6400: 73 20 74 68 61 74 20 73 75 70 70 6f 72 74 20 61  s that support a
6410: 74 6f 6d 69 63 20 77 72 69 74 65 73 2c 20 74 68  tomic writes, th
6420: 69 73 0a 20 20 6f 70 74 69 6d 69 7a 61 74 69 6f  is.  optimizatio
6430: 6e 20 63 61 6e 20 72 65 73 75 6c 74 20 69 6e 20  n can result in 
6440: 73 69 67 6e 69 66 69 63 61 6e 74 20 73 70 65 65  significant spee
6450: 64 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 20 66  d improvements f
6460: 6f 72 0a 20 20 73 6d 61 6c 6c 20 75 70 64 61 74  or.  small updat
6470: 65 73 2e 20 20 48 6f 77 65 76 65 72 2c 20 66 65  es.  However, fe
6480: 77 20 66 69 6c 65 73 79 73 74 65 6d 73 20 73 75  w filesystems su
6490: 70 70 6f 72 74 20 74 68 69 73 20 63 61 70 61 62  pport this capab
64a0: 69 6c 69 74 79 0a 20 20 61 6e 64 20 74 68 65 20  ility.  and the 
64b0: 63 6f 64 65 20 70 61 74 68 73 20 74 68 61 74 20  code paths that 
64c0: 63 68 65 63 6b 20 66 6f 72 20 74 68 69 73 20 63  check for this c
64d0: 61 70 61 62 69 6c 69 74 79 20 73 6c 6f 77 20 64  apability slow d
64e0: 6f 77 6e 20 77 72 69 74 65 0a 20 20 70 65 72 66  own write.  perf
64f0: 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 79 73 74 65  ormance on syste
6500: 6d 73 20 74 68 61 74 20 6c 61 63 6b 20 61 74 6f  ms that lack ato
6510: 6d 69 63 20 77 72 69 74 65 20 63 61 70 61 62 69  mic write capabi
6520: 6c 69 74 79 2c 20 73 6f 20 74 68 69 73 0a 20 20  lity, so this.  
6530: 66 65 61 74 75 72 65 20 69 73 20 64 69 73 61 62  feature is disab
6540: 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a  led by default..
6550: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6560: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
6570: 5f 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44 41 54 41  _COLUMN_METADATA
6580: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
6590: 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C-preprocessor m
65a0: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c  acro is defined,
65b0: 20 53 51 4c 69 74 65 20 69 6e 63 6c 75 64 65 73   SQLite includes
65c0: 20 73 6f 6d 65 0a 20 20 61 64 64 69 74 69 6f 6e   some.  addition
65d0: 61 6c 20 41 50 49 73 20 74 68 61 74 20 70 72 6f  al APIs that pro
65e0: 76 69 64 65 20 63 6f 6e 76 65 6e 69 65 6e 74 20  vide convenient 
65f0: 61 63 63 65 73 73 20 74 6f 20 6d 65 74 61 2d 64  access to meta-d
6600: 61 74 61 20 61 62 6f 75 74 0a 20 20 74 61 62 6c  ata about.  tabl
6610: 65 73 20 61 6e 64 20 71 75 65 72 69 65 73 2e 20  es and queries. 
6620: 20 54 68 65 20 41 50 49 73 20 74 68 61 74 20 61   The APIs that a
6630: 72 65 20 65 6e 61 62 6c 65 64 20 62 79 20 74 68  re enabled by th
6640: 69 73 20 6f 70 74 69 6f 6e 20 61 72 65 3a 0a 0a  is option are:..
6650: 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 20 5b 73    <ul>.  <li> [s
6660: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61  qlite3_column_da
6670: 74 61 62 61 73 65 5f 6e 61 6d 65 28 29 5d 20 3c  tabase_name()] <
6680: 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c  /li>.  <li> [sql
6690: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
66a0: 62 61 73 65 5f 6e 61 6d 65 31 36 28 29 5d 20 3c  base_name16()] <
66b0: 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c  /li>.  <li> [sql
66c0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
66d0: 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a  e_name()] </li>.
66e0: 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
66f0: 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d  column_table_nam
6700: 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c  e16()] </li>.  <
6710: 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  li> [sqlite3_col
6720: 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28  umn_origin_name(
6730: 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20  )] </li>.  <li> 
6740: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
6750: 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 29 5d  origin_name16()]
6760: 20 3c 2f 6c 69 3e 0a 20 20 3c 2f 75 6c 3e 0a 7d   </li>.  </ul>.}
6770: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
6780: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
6790: 45 58 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53  EXPLAIN_COMMENTS
67a0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
67b0: 6e 20 61 64 64 73 20 65 78 74 72 61 20 6c 6f 67  n adds extra log
67c0: 69 63 20 74 6f 20 53 51 4c 69 74 65 20 74 68 61  ic to SQLite tha
67d0: 74 20 69 6e 73 65 72 74 73 20 63 6f 6d 6d 65 6e  t inserts commen
67e0: 74 20 74 65 78 74 20 69 6e 74 6f 20 74 68 65 0a  t text into the.
67f0: 20 20 6f 75 74 70 75 74 20 6f 66 20 5b 45 58 50    output of [EXP
6800: 4c 41 49 4e 5d 2e 20 20 54 68 65 73 65 20 65 78  LAIN].  These ex
6810: 74 72 61 20 63 6f 6d 6d 65 6e 74 73 20 75 73 65  tra comments use
6820: 20 65 78 74 72 61 20 6d 65 6d 6f 72 79 2c 20 74   extra memory, t
6830: 68 75 73 0a 20 20 6d 61 6b 69 6e 67 20 5b 70 72  hus.  making [pr
6840: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
6850: 73 5d 20 6c 61 72 67 65 72 20 61 6e 64 20 76 65  s] larger and ve
6860: 72 79 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f 77  ry slightly slow
6870: 65 72 2c 20 61 6e 64 20 73 6f 20 74 68 65 79 20  er, and so they 
6880: 61 72 65 0a 20 20 74 75 72 6e 65 64 20 6f 66 66  are.  turned off
6890: 20 62 79 20 64 65 66 61 75 6c 74 20 61 6e 64 20   by default and 
68a0: 69 6e 20 6d 6f 73 74 20 61 70 70 6c 69 63 61 74  in most applicat
68b0: 69 6f 6e 2e 20 20 42 75 74 20 73 6f 6d 65 20 61  ion.  But some a
68c0: 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20 73 75 63  pplications, suc
68d0: 68 0a 20 20 61 73 20 74 68 65 20 5b 63 6f 6d 6d  h.  as the [comm
68e0: 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c 5d 20  and-line shell] 
68f0: 66 6f 72 20 53 51 4c 69 74 65 2c 20 76 61 6c 75  for SQLite, valu
6900: 65 20 63 6c 61 72 69 74 79 20 6f 66 20 45 58 50  e clarity of EXP
6910: 4c 41 49 4e 20 6f 75 74 70 75 74 0a 20 20 6f 76  LAIN output.  ov
6920: 65 72 20 72 61 77 20 70 65 72 66 6f 72 6d 61 6e  er raw performan
6930: 63 65 20 61 6e 64 20 73 6f 20 74 68 69 73 20 63  ce and so this c
6940: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
6950: 6f 6e 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20  on is available 
6960: 74 6f 20 74 68 65 6d 2e 0a 20 20 54 68 65 20 53  to them..  The S
6970: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45 58 50  QLITE_ENABLE_EXP
6980: 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53 20 63 6f  LAIN_COMMENTS co
6990: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
69a0: 6e 20 69 73 20 61 6c 73 6f 20 65 6e 61 62 6c 65  n is also enable
69b0: 64 0a 20 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  d.  automaticall
69c0: 79 20 69 66 20 5b 53 51 4c 49 54 45 5f 44 45 42  y if [SQLITE_DEB
69d0: 55 47 5d 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a  UG] is enabled..
69e0: 7d 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  }...COMPILE_OPTI
69f0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
6a00: 45 5f 46 54 53 33 7d 20 7b 0a 20 20 57 68 65 6e  E_FTS3} {.  When
6a10: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
6a20: 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b  defined in the [
6a30: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76  amalgamation], v
6a40: 65 72 73 69 6f 6e 20 33 0a 20 20 6f 66 20 74 68  ersion 3.  of th
6a50: 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72  e full-text sear
6a60: 63 68 20 65 6e 67 69 6e 65 20 69 73 20 61 64 64  ch engine is add
6a70: 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20  ed to the build 
6a80: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d  automatically..}
6a90: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
6aa0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
6ab0: 46 54 53 33 5f 50 41 52 45 4e 54 48 45 53 49 53  FTS3_PARENTHESIS
6ac0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
6ad0: 6e 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20 71  n modifies the q
6ae0: 75 65 72 79 20 70 61 74 74 65 72 6e 20 70 61 72  uery pattern par
6af0: 73 65 72 20 69 6e 20 46 54 53 33 20 73 75 63 68  ser in FTS3 such
6b00: 20 74 68 61 74 20 69 74 0a 20 20 73 75 70 70 6f   that it.  suppo
6b10: 72 74 73 20 6f 70 65 72 61 74 6f 72 73 20 41 4e  rts operators AN
6b20: 44 20 61 6e 64 20 4e 4f 54 20 28 69 6e 20 61 64  D and NOT (in ad
6b30: 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 75 73  dition to the us
6b40: 75 61 6c 20 4f 52 20 61 6e 64 20 4e 45 41 52 29  ual OR and NEAR)
6b50: 0a 20 20 61 6e 64 20 61 6c 73 6f 20 61 6c 6c 6f  .  and also allo
6b60: 77 73 20 71 75 65 72 79 20 65 78 70 72 65 73 73  ws query express
6b70: 69 6f 6e 73 20 74 6f 20 63 6f 6e 74 61 69 6e 20  ions to contain 
6b80: 6e 65 73 74 65 64 20 70 61 72 65 6e 74 68 65 73  nested parenthes
6b90: 69 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  is..}..COMPILE_O
6ba0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
6bb0: 41 42 4c 45 5f 46 54 53 34 7d 20 7b 0a 20 20 57  ABLE_FTS4} {.  W
6bc0: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
6bd0: 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68  is defined in th
6be0: 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d  e [amalgamation]
6bf0: 2c 20 76 65 72 73 69 6f 6e 73 20 33 20 61 6e 64  , versions 3 and
6c00: 20 34 0a 20 20 6f 66 20 74 68 65 20 66 75 6c 6c   4.  of the full
6c10: 2d 74 65 78 74 20 73 65 61 72 63 68 20 65 6e 67  -text search eng
6c20: 69 6e 65 20 69 73 20 61 64 64 65 64 20 74 6f 20  ine is added to 
6c30: 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f 6d 61  the build automa
6c40: 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50  tically..}..COMP
6c50: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
6c60: 54 45 5f 45 4e 41 42 4c 45 5f 49 43 55 7d 20 7b  TE_ENABLE_ICU} {
6c70: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
6c80: 61 75 73 65 73 20 74 68 65 20 0a 20 20 5b 68 74  auses the .  [ht
6c90: 74 70 3a 2f 2f 77 77 77 2e 69 63 75 2d 70 72 6f  tp://www.icu-pro
6ca0: 6a 65 63 74 2e 6f 72 67 2f 20 7c 20 49 6e 74 65  ject.org/ | Inte
6cb0: 72 6e 61 74 69 6f 6e 61 6c 20 43 6f 6d 70 6f 6e  rnational Compon
6cc0: 65 6e 74 73 20 66 6f 72 20 55 6e 69 63 6f 64 65  ents for Unicode
6cd0: 5d 0a 20 20 6f 72 20 22 49 43 55 22 20 65 78 74  ].  or "ICU" ext
6ce0: 65 6e 73 69 6f 6e 20 74 6f 20 53 51 4c 69 74 65  ension to SQLite
6cf0: 20 74 6f 20 62 65 20 61 64 64 65 64 20 74 6f 20   to be added to 
6d00: 74 68 65 20 62 75 69 6c 64 2e 20 20 0a 7d 0a 0a  the build.  .}..
6d10: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
6d20: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 49 4f  SQLITE_ENABLE_IO
6d30: 54 52 41 43 45 7d 20 7b 0a 20 20 57 68 65 6e 20  TRACE} {.  When 
6d40: 62 6f 74 68 20 74 68 65 20 53 51 4c 69 74 65 20  both the SQLite 
6d50: 63 6f 72 65 20 61 6e 64 20 74 68 65 20 5b 43 6f  core and the [Co
6d60: 6d 6d 61 6e 64 20 4c 69 6e 65 20 49 6e 74 65 72  mmand Line Inter
6d70: 66 61 63 65 5d 20 28 43 4c 49 29 20 61 72 65 20  face] (CLI) are 
6d80: 62 6f 74 68 20 0a 20 20 63 6f 6d 70 69 6c 65 64  both .  compiled
6d90: 20 77 69 74 68 20 74 68 69 73 20 6f 70 74 69 6f   with this optio
6da0: 6e 2c 20 74 68 65 6e 20 74 68 65 20 43 4c 49 20  n, then the CLI 
6db0: 70 72 6f 76 69 64 65 73 20 61 6e 20 65 78 74 72  provides an extr
6dc0: 61 20 63 6f 6d 6d 61 6e 64 0a 20 20 6e 61 6d 65  a command.  name
6dd0: 64 20 22 2e 69 6f 74 72 61 63 65 22 20 74 68 61  d ".iotrace" tha
6de0: 74 20 70 72 6f 76 69 64 65 73 20 61 20 6c 6f 77  t provides a low
6df0: 2d 6c 65 76 65 6c 20 6c 6f 67 20 6f 66 20 49 2f  -level log of I/
6e00: 4f 20 61 63 74 69 76 69 74 79 2e 0a 20 20 54 68  O activity..  Th
6e10: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 65 78 70  is option is exp
6e20: 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64 20 6d 61  erimental and ma
6e30: 79 20 62 65 20 64 69 73 63 6f 6e 74 69 6e 75 65  y be discontinue
6e40: 64 20 69 6e 20 61 20 66 75 74 75 72 65 20 72 65  d in a future re
6e50: 6c 65 61 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  lease..}..COMPIL
6e60: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
6e70: 5f 45 4e 41 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f  _ENABLE_LOCKING_
6e80: 53 54 59 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20  STYLE} {.  This 
6e90: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 61  option enables a
6ea0: 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20  dditional logic 
6eb0: 69 6e 20 74 68 65 20 4f 53 20 69 6e 74 65 72 66  in the OS interf
6ec0: 61 63 65 20 6c 61 79 65 72 20 66 6f 72 0a 20 20  ace layer for.  
6ed0: 4d 61 63 20 4f 53 20 58 2e 20 54 68 65 20 61 64  Mac OS X. The ad
6ee0: 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 61  ditional logic a
6ef0: 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65 72  ttempts to deter
6f00: 6d 69 6e 65 20 74 68 65 20 74 79 70 65 20 6f 66  mine the type of
6f10: 20 74 68 65 0a 20 20 75 6e 64 65 72 6c 79 69 6e   the.  underlyin
6f20: 67 20 66 69 6c 65 73 79 73 74 65 6d 20 61 6e 64  g filesystem and
6f30: 20 63 68 6f 6f 73 65 20 61 6e 64 20 61 6c 74 65   choose and alte
6f40: 72 6e 61 74 69 76 65 20 6c 6f 63 6b 69 6e 67 20  rnative locking 
6f50: 73 74 72 61 74 65 67 79 0a 20 20 74 68 61 74 20  strategy.  that 
6f60: 77 6f 72 6b 73 20 63 6f 72 72 65 63 74 6c 79 20  works correctly 
6f70: 66 6f 72 20 74 68 61 74 20 66 69 6c 65 73 79 73  for that filesys
6f80: 74 65 6d 20 74 79 70 65 2e 20 46 69 76 65 20 6c  tem type. Five l
6f90: 6f 63 6b 69 6e 67 20 73 74 72 61 74 65 67 69 65  ocking strategie
6fa0: 73 20 0a 20 20 61 72 65 20 61 76 61 69 6c 61 62  s .  are availab
6fb0: 6c 65 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20 20 20  le:..  <ul>.    
6fc0: 3c 6c 69 3e 20 50 4f 53 49 58 20 6c 6f 63 6b 69  <li> POSIX locki
6fd0: 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20 69  ng style. This i
6fe0: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 6c 6f  s the default lo
6ff0: 63 6b 69 6e 67 20 73 74 79 6c 65 20 61 6e 64 20  cking style and 
7000: 74 68 65 0a 20 20 20 20 20 20 20 20 20 73 74 79  the.         sty
7010: 6c 65 20 75 73 65 64 20 62 79 20 6f 74 68 65 72  le used by other
7020: 20 28 6e 6f 6e 20 4d 61 63 20 4f 53 20 58 29 20   (non Mac OS X) 
7030: 55 6e 69 78 65 73 2e 20 4c 6f 63 6b 73 20 61 72  Unixes. Locks ar
7040: 65 20 6f 62 74 61 69 6e 65 64 20 61 6e 64 20 0a  e obtained and .
7050: 20 20 20 20 20 20 20 20 20 72 65 6c 65 61 73 65           release
7060: 64 20 75 73 69 6e 67 20 74 68 65 20 66 63 6e 74  d using the fcnt
7070: 6c 28 29 20 73 79 73 74 65 6d 20 63 61 6c 6c 2e  l() system call.
7080: 0a 0a 20 20 20 20 3c 6c 69 3e 20 41 46 50 20 6c  ..    <li> AFP l
7090: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54 68  ocking style. Th
70a0: 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  is locking style
70b0: 20 69 73 20 75 73 65 64 20 66 6f 72 20 6e 65 74   is used for net
70c0: 77 6f 72 6b 20 66 69 6c 65 20 0a 20 20 20 20 20  work file .     
70d0: 20 20 20 20 73 79 73 74 65 6d 73 20 74 68 61 74      systems that
70e0: 20 75 73 65 20 74 68 65 20 41 46 50 20 28 41 70   use the AFP (Ap
70f0: 70 6c 65 20 46 69 6c 69 6e 67 20 50 72 6f 74 6f  ple Filing Proto
7100: 63 6f 6c 29 20 70 72 6f 74 6f 63 6f 6c 2e 20 4c  col) protocol. L
7110: 6f 63 6b 73 0a 20 20 20 20 20 20 20 20 20 61 72  ocks.         ar
7120: 65 20 6f 62 74 61 69 6e 65 64 20 62 79 20 63 61  e obtained by ca
7130: 6c 6c 69 6e 67 20 74 68 65 20 6c 69 62 72 61 72  lling the librar
7140: 79 20 66 75 6e 63 74 69 6f 6e 20 5f 41 46 50 46  y function _AFPF
7150: 53 53 65 74 4c 6f 63 6b 28 29 2e 0a 0a 20 20 20  SSetLock()...   
7160: 20 3c 6c 69 3e 20 46 6c 6f 63 6b 20 6c 6f 63 6b   <li> Flock lock
7170: 69 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20  ing style. This 
7180: 69 73 20 75 73 65 64 20 66 6f 72 20 66 69 6c 65  is used for file
7190: 2d 73 79 73 74 65 6d 73 20 74 68 61 74 20 64 6f  -systems that do
71a0: 20 6e 6f 74 0a 20 20 20 20 20 20 20 20 20 73 75   not.         su
71b0: 70 70 6f 72 74 20 50 4f 53 49 58 20 6c 6f 63 6b  pport POSIX lock
71c0: 69 6e 67 20 73 74 79 6c 65 2e 20 4c 6f 63 6b 73  ing style. Locks
71d0: 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20 61 6e   are obtained an
71e0: 64 20 72 65 6c 65 61 73 65 64 20 75 73 69 6e 67  d released using
71f0: 0a 20 20 20 20 20 20 20 20 20 74 68 65 20 66 6c  .         the fl
7200: 6f 63 6b 28 29 20 73 79 73 74 65 6d 20 63 61 6c  ock() system cal
7210: 6c 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 44 6f 74  l...    <li> Dot
7220: 2d 66 69 6c 65 20 6c 6f 63 6b 69 6e 67 20 73 74  -file locking st
7230: 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63 6b 69 6e  yle. This lockin
7240: 67 20 73 74 79 6c 65 20 69 73 20 75 73 65 64 20  g style is used 
7250: 77 68 65 6e 20 6e 65 69 74 68 65 72 0a 20 20 20  when neither.   
7260: 20 20 20 20 20 20 66 6c 6f 63 6b 20 6e 6f 72 20        flock nor 
7270: 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74  POSIX locking st
7280: 79 6c 65 73 20 61 72 65 20 73 75 70 70 6f 72 74  yles are support
7290: 65 64 20 62 79 20 74 68 65 20 66 69 6c 65 20 73  ed by the file s
72a0: 79 73 74 65 6d 2e 0a 20 20 20 20 20 20 20 20 20  ystem..         
72b0: 44 61 74 61 62 61 73 65 20 6c 6f 63 6b 73 20 61  Database locks a
72c0: 72 65 20 6f 62 74 61 69 6e 65 64 20 62 79 20 63  re obtained by c
72d0: 72 65 61 74 69 6e 67 20 61 6e 64 20 65 6e 74 72  reating and entr
72e0: 79 20 69 6e 20 74 68 65 20 66 69 6c 65 2d 73 79  y in the file-sy
72f0: 73 74 65 6d 0a 20 20 20 20 20 20 20 20 20 61 74  stem.         at
7300: 20 61 20 77 65 6c 6c 2d 6b 6e 6f 77 6e 20 6c 6f   a well-known lo
7310: 63 61 74 69 6f 6e 20 72 65 6c 61 74 69 76 65 20  cation relative 
7320: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
7330: 66 69 6c 65 20 28 61 20 22 64 6f 74 2d 66 69 6c  file (a "dot-fil
7340: 65 22 29 0a 20 20 20 20 20 20 20 20 20 61 6e 64  e").         and
7350: 20 72 65 6c 69 6e 71 75 69 73 68 65 64 20 62 79   relinquished by
7360: 20 64 65 6c 65 74 69 6e 67 20 74 68 65 20 73 61   deleting the sa
7370: 6d 65 20 66 69 6c 65 2e 0a 0a 20 20 20 20 3c 6c  me file...    <l
7380: 69 3e 20 4e 6f 20 6c 6f 63 6b 69 6e 67 20 73 74  i> No locking st
7390: 79 6c 65 2e 20 49 66 20 6e 6f 6e 65 20 6f 66 20  yle. If none of 
73a0: 74 68 65 20 61 62 6f 76 65 20 63 61 6e 20 62 65  the above can be
73b0: 20 73 75 70 70 6f 72 74 65 64 2c 20 74 68 69 73   supported, this
73c0: 20 0a 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 69   .         locki
73d0: 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73 65 64  ng style is used
73e0: 2e 20 4e 6f 20 64 61 74 61 62 61 73 65 20 6c 6f  . No database lo
73f0: 63 6b 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d 20  cking mechanism 
7400: 69 73 20 75 73 65 64 2e 20 57 68 65 6e 0a 20 20  is used. When.  
7410: 20 20 20 20 20 20 20 74 68 69 73 20 73 79 73 74         this syst
7420: 65 6d 20 69 73 20 75 73 65 64 20 69 74 20 69 73  em is used it is
7430: 20 6e 6f 74 20 73 61 66 65 20 66 6f 72 20 61 20   not safe for a 
7440: 73 69 6e 67 6c 65 20 64 61 74 61 62 61 73 65 20  single database 
7450: 74 6f 20 62 65 0a 20 20 20 20 20 20 20 20 20 61  to be.         a
7460: 63 63 65 73 73 65 64 20 62 79 20 6d 75 6c 74 69  ccessed by multi
7470: 70 6c 65 20 63 6c 69 65 6e 74 73 2e 0a 20 20 3c  ple clients..  <
7480: 2f 75 6c 3e 0a 0a 20 20 41 64 64 69 74 69 6f 6e  /ul>..  Addition
7490: 61 6c 6c 79 2c 20 66 69 76 65 20 65 78 74 72 61  ally, five extra
74a0: 20 5b 56 46 53 5d 20 69 6d 70 6c 65 6d 65 6e 74   [VFS] implement
74b0: 61 74 69 6f 6e 73 20 61 72 65 20 70 72 6f 76 69  ations are provi
74c0: 64 65 64 20 61 73 20 77 65 6c 6c 20 61 73 20 74  ded as well as t
74d0: 68 65 0a 20 20 64 65 66 61 75 6c 74 2e 20 42 79  he.  default. By
74e0: 20 73 70 65 63 69 66 79 69 6e 67 20 6f 6e 65 20   specifying one 
74f0: 6f 66 20 74 68 65 20 65 78 74 72 61 20 56 46 53  of the extra VFS
7500: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
7510: 20 0a 20 20 77 68 65 6e 20 63 61 6c 6c 69 6e 67   .  when calling
7520: 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76   [sqlite3_open_v
7530: 32 28 29 5d 2c 20 61 6e 20 61 70 70 6c 69 63 61  2()], an applica
7540: 74 69 6f 6e 20 6d 61 79 20 62 79 70 61 73 73 20  tion may bypass 
7550: 74 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d 0a  the file-system.
7560: 20 20 64 65 74 65 63 74 69 6f 6e 20 6c 6f 67 69    detection logi
7570: 63 20 61 6e 64 20 65 78 70 6c 69 63 69 74 6c 79  c and explicitly
7580: 20 73 65 6c 65 63 74 20 6f 6e 65 20 6f 66 20 74   select one of t
7590: 68 65 20 61 62 6f 76 65 20 6c 6f 63 6b 69 6e 67  he above locking
75a0: 20 73 74 79 6c 65 73 2e 20 54 68 65 0a 20 20 66   styles. The.  f
75b0: 69 76 65 20 65 78 74 72 61 20 5b 56 46 53 5d 20  ive extra [VFS] 
75c0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
75d0: 61 72 65 20 63 61 6c 6c 65 64 20 22 75 6e 69 78  are called "unix
75e0: 2d 70 6f 73 69 78 22 2c 20 22 75 6e 69 78 2d 61  -posix", "unix-a
75f0: 66 70 22 2c 0a 20 20 22 75 6e 69 78 2d 66 6c 6f  fp",.  "unix-flo
7600: 63 6b 22 2c 20 22 75 6e 69 78 2d 64 6f 74 66 69  ck", "unix-dotfi
7610: 6c 65 22 20 61 6e 64 20 22 75 6e 69 78 2d 6e 6f  le" and "unix-no
7620: 6e 65 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ne"..}..COMPILE_
7630: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
7640: 4e 41 42 4c 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e  NABLE_MEMORY_MAN
7650: 41 47 45 4d 45 4e 54 7d 20 7b 0a 20 20 54 68 69  AGEMENT} {.  Thi
7660: 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 65 78  s option adds ex
7670: 74 72 61 20 6c 6f 67 69 63 20 74 6f 20 53 51 4c  tra logic to SQL
7680: 69 74 65 20 74 68 61 74 20 61 6c 6c 6f 77 73 20  ite that allows 
7690: 69 74 20 74 6f 20 72 65 6c 65 61 73 65 20 75 6e  it to release un
76a0: 75 73 65 64 0a 20 20 6d 65 6d 6f 72 79 20 75 70  used.  memory up
76b0: 6f 6e 20 72 65 71 75 65 73 74 2e 20 20 54 68 69  on request.  Thi
76c0: 73 20 6f 70 74 69 6f 6e 20 6d 75 73 74 20 62 65  s option must be
76d0: 20 65 6e 61 62 6c 65 64 20 69 6e 20 6f 72 64 65   enabled in orde
76e0: 72 20 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c  r for the.  [sql
76f0: 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d  ite3_release_mem
7700: 6f 72 79 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ory()] interface
7710: 20 74 6f 20 77 6f 72 6b 2e 20 20 49 66 20 74 68   to work.  If th
7720: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a  is compile-time.
7730: 20 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 74 20    option is not 
7740: 75 73 65 64 2c 20 74 68 65 20 5b 73 71 6c 69 74  used, the [sqlit
7750: 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72  e3_release_memor
7760: 79 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 69  y()] interface i
7770: 73 20 61 20 0a 20 20 6e 6f 2d 6f 70 2e 0a 7d 0a  s a .  no-op..}.
7780: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
7790: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d  {SQLITE_ENABLE_M
77a0: 45 4d 53 59 53 33 7d 20 7b 0a 20 20 54 68 69 73  EMSYS3} {.  This
77b0: 20 6f 70 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73   option includes
77c0: 20 63 6f 64 65 20 69 6e 20 53 51 4c 69 74 65 20   code in SQLite 
77d0: 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20  that implements 
77e0: 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 20  an alternative. 
77f0: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
7800: 72 2e 20 20 54 68 69 73 20 61 6c 74 65 72 6e 61  r.  This alterna
7810: 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  tive memory allo
7820: 63 61 74 6f 72 20 69 73 20 6f 6e 6c 79 20 65 6e  cator is only en
7830: 67 61 67 65 64 0a 20 20 77 68 65 6e 20 74 68 65  gaged.  when the
7840: 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
7850: 48 45 41 50 5d 20 6f 70 74 69 6f 6e 20 74 6f 20  HEAP] option to 
7860: 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
7870: 29 5d 20 69 73 20 75 73 65 64 20 74 6f 0a 20 20  )] is used to.  
7880: 73 75 70 70 6c 79 20 61 20 6c 61 72 67 65 20 63  supply a large c
7890: 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 66  hunk of memory f
78a0: 72 6f 6d 20 77 68 69 63 68 20 61 6c 6c 20 6d 65  rom which all me
78b0: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73  mory allocations
78c0: 20 61 72 65 0a 20 20 74 61 6b 65 6e 2e 0a 20 20   are.  taken..  
78d0: 54 68 65 20 4d 45 4d 53 59 53 33 20 6d 65 6d 6f  The MEMSYS3 memo
78e0: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 75 73 65  ry allocator use
78f0: 73 20 61 20 68 79 62 72 69 64 20 61 6c 6c 6f 63  s a hybrid alloc
7900: 61 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ation algorithm 
7910: 0a 20 20 70 61 74 74 65 72 6e 65 64 20 61 66 74  .  patterned aft
7920: 65 72 20 64 6c 6d 61 6c 6c 6f 63 28 29 2e 20 20  er dlmalloc().  
7930: 20 4f 6e 6c 79 20 6f 6e 65 20 6f 66 20 53 51 4c   Only one of SQL
7940: 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59  ITE_ENABLE_MEMSY
7950: 53 33 20 61 6e 64 20 0a 20 20 53 51 4c 49 54 45  S3 and .  SQLITE
7960: 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 35 20  _ENABLE_MEMSYS5 
7970: 6d 61 79 20 62 65 20 65 6e 61 62 6c 65 64 20 61  may be enabled a
7980: 74 20 6f 6e 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  t once..}..COMPI
7990: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
79a0: 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 35  E_ENABLE_MEMSYS5
79b0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
79c0: 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64 65 20  n includes code 
79d0: 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74 20 69  in SQLite that i
79e0: 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61 6c 74  mplements an alt
79f0: 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d 6f 72  ernative.  memor
7a00: 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 54 68  y allocator.  Th
7a10: 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6d  is alternative m
7a20: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
7a30: 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65 64 0a  is only engaged.
7a40: 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51 4c 49    when the [SQLI
7a50: 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 20  TE_CONFIG_HEAP] 
7a60: 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74  option to [sqlit
7a70: 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73 20  e3_config()] is 
7a80: 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70 6c 79  used to.  supply
7a90: 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b 20 6f   a large chunk o
7aa0: 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 77 68  f memory from wh
7ab0: 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61  ich all memory a
7ac0: 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65 0a 20  llocations are. 
7ad0: 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20 4d 45   taken..  The ME
7ae0: 4d 53 59 53 35 20 6d 6f 64 75 6c 65 20 72 6f 75  MSYS5 module rou
7af0: 6e 64 73 20 61 6c 6c 20 61 6c 6c 6f 63 61 74 69  nds all allocati
7b00: 6f 6e 73 20 75 70 20 74 6f 20 74 68 65 20 6e 65  ons up to the ne
7b10: 78 74 20 70 6f 77 65 72 0a 20 20 6f 66 20 74 77  xt power.  of tw
7b20: 6f 20 61 6e 64 20 75 73 65 73 20 61 20 66 69 72  o and uses a fir
7b30: 73 74 2d 66 69 74 2c 20 62 75 64 64 79 2d 61 6c  st-fit, buddy-al
7b40: 6c 6f 63 61 74 6f 72 20 61 6c 67 6f 72 69 74 68  locator algorith
7b50: 6d 0a 20 20 74 68 61 74 20 70 72 6f 76 69 64 65  m.  that provide
7b60: 73 20 73 74 72 6f 6e 67 20 67 75 61 72 61 6e 74  s strong guarant
7b70: 65 65 73 20 61 67 61 69 6e 73 74 20 66 72 61 67  ees against frag
7b80: 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 64 20 62 72  mentation and br
7b90: 65 61 6b 64 6f 77 6e 0a 20 20 73 75 62 6a 65 63  eakdown.  subjec
7ba0: 74 20 74 6f 20 63 65 72 74 61 69 6e 20 6f 70 65  t to certain ope
7bb0: 72 61 74 69 6e 67 20 63 6f 6e 73 74 72 61 69 6e  rating constrain
7bc0: 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ts..}..COMPILE_O
7bd0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
7be0: 41 42 4c 45 5f 52 54 52 45 45 7d 20 7b 0a 20 20  ABLE_RTREE} {.  
7bf0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
7c00: 65 73 20 53 51 4c 69 74 65 20 74 6f 20 69 6e 63  es SQLite to inc
7c10: 6c 75 64 65 20 73 75 70 70 6f 72 74 20 66 6f 72  lude support for
7c20: 20 74 68 65 0a 20 20 5b 72 74 72 65 65 20 7c 20   the.  [rtree | 
7c30: 52 2a 54 72 65 65 20 69 6e 64 65 78 20 65 78 74  R*Tree index ext
7c40: 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50  ension]..}..COMP
7c50: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7c60: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 4d 54 5f 53  TE_ENABLE_STMT_S
7c70: 43 41 4e 53 54 41 54 55 53 7d 20 7b 0a 20 20 54  CANSTATUS} {.  T
7c80: 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c  his option enabl
7c90: 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  es the [sqlite3_
7ca0: 73 74 6d 74 5f 73 63 61 6e 73 74 61 74 75 73 28  stmt_scanstatus(
7cb0: 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 20 20 54  )] interface.  T
7cc0: 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 73 74  he.  [sqlite3_st
7cd0: 6d 74 5f 73 63 61 6e 73 74 61 74 75 73 28 29 5d  mt_scanstatus()]
7ce0: 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 6e 6f   interface is no
7cf0: 72 6d 61 6c 6c 79 20 6f 6d 69 74 74 65 64 20 66  rmally omitted f
7d00: 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 0a 20 20  rom the build.  
7d10: 62 65 63 61 75 73 65 20 69 74 20 69 6d 70 6f 73  because it impos
7d20: 65 73 20 61 20 73 6d 61 6c 6c 20 70 65 72 66 6f  es a small perfo
7d30: 72 6d 61 6e 63 65 20 70 65 6e 61 6c 74 79 2c 20  rmance penalty, 
7d40: 65 76 65 6e 20 6f 6e 20 73 74 61 74 65 6d 65 6e  even on statemen
7d50: 74 73 20 74 68 61 74 0a 20 20 64 6f 20 6e 6f 74  ts that.  do not
7d60: 20 75 73 65 20 74 68 65 20 66 65 61 74 75 72 65   use the feature
7d70: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
7d80: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 52 54 52 45  ION {SQLITE_RTRE
7d90: 45 5f 49 4e 54 5f 4f 4e 4c 59 7d 20 7b 0a 20 20  E_INT_ONLY} {.  
7da0: 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  If this option i
7db0: 73 20 75 73 65 64 20 74 6f 67 65 74 68 65 72 20  s used together 
7dc0: 77 69 74 68 20 5b 53 51 4c 49 54 45 5f 45 4e 41  with [SQLITE_ENA
7dd0: 42 4c 45 5f 52 54 52 45 45 5d 20 74 68 65 6e 20  BLE_RTREE] then 
7de0: 74 68 65 0a 20 20 5b 72 74 72 65 65 20 7c 20 52  the.  [rtree | R
7df0: 2a 54 72 65 65 20 65 78 74 65 6e 73 69 6f 6e 5d  *Tree extension]
7e00: 20 77 69 6c 6c 20 6f 6e 6c 79 20 73 74 6f 72 65   will only store
7e10: 20 33 32 2d 62 69 74 20 73 69 67 6e 65 64 20 69   32-bit signed i
7e20: 6e 74 65 67 65 72 0a 20 20 63 6f 6f 72 64 69 6e  nteger.  coordin
7e30: 61 74 65 73 20 61 6e 64 20 61 6c 6c 20 69 6e 74  ates and all int
7e40: 65 72 6e 61 6c 20 63 6f 6d 70 75 74 61 74 69 6f  ernal computatio
7e50: 6e 73 20 77 69 6c 6c 20 62 65 20 64 6f 6e 65 20  ns will be done 
7e60: 75 73 69 6e 67 20 69 6e 74 65 67 65 72 73 0a 20  using integers. 
7e70: 20 69 6e 73 74 65 61 64 20 6f 66 20 66 6c 6f 61   instead of floa
7e80: 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65  ting point numbe
7e90: 72 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  rs..}..COMPILE_O
7ea0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
7eb0: 41 42 4c 45 5f 53 51 4c 4c 4f 47 7d 20 7b 0a 20  ABLE_SQLLOG} {. 
7ec0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61   This option ena
7ed0: 62 6c 65 73 20 65 78 74 72 61 20 63 6f 64 65 20  bles extra code 
7ee0: 28 65 73 70 65 63 69 61 6c 6c 79 20 74 68 65 20  (especially the 
7ef0: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53  [SQLITE_CONFIG_S
7f00: 51 4c 4c 4f 47 5d 0a 20 20 6f 70 74 69 6f 6e 20  QLLOG].  option 
7f10: 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  to [sqlite3_conf
7f20: 69 67 28 29 5d 29 20 74 68 61 74 20 63 61 6e 20  ig()]) that can 
7f30: 62 65 20 75 73 65 64 20 74 6f 20 63 72 65 61 74  be used to creat
7f40: 65 20 6c 6f 67 73 20 6f 66 20 61 6c 6c 0a 20 20  e logs of all.  
7f50: 53 51 4c 69 74 65 20 70 72 6f 63 65 73 73 69 6e  SQLite processin
7f60: 67 20 70 65 72 66 6f 72 6d 65 64 20 62 79 20 61  g performed by a
7f70: 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20 20  n application.  
7f80: 54 68 65 73 65 20 6c 6f 67 73 20 63 61 6e 20 62  These logs can b
7f90: 65 20 75 73 65 66 75 6c 0a 20 20 69 6e 20 64 6f  e useful.  in do
7fa0: 69 6e 67 20 6f 66 66 2d 6c 69 6e 65 20 61 6e 61  ing off-line ana
7fb0: 6c 79 73 69 73 20 6f 66 20 74 68 65 20 62 65 68  lysis of the beh
7fc0: 61 76 69 6f 72 20 6f 66 20 61 6e 20 61 70 70 6c  avior of an appl
7fd0: 69 63 61 74 69 6f 6e 2c 20 61 6e 64 20 65 73 70  ication, and esp
7fe0: 65 63 69 61 6c 6c 79 0a 20 20 66 6f 72 20 70 65  ecially.  for pe
7ff0: 72 66 6f 72 6d 61 6e 63 65 20 61 6e 61 6c 79 73  rformance analys
8000: 69 73 2e 20 20 49 6e 20 6f 72 64 65 72 20 66 6f  is.  In order fo
8010: 72 20 74 68 65 20 53 51 4c 49 54 45 5f 45 4e 41  r the SQLITE_ENA
8020: 42 4c 45 5f 53 51 4c 4c 4f 47 20 6f 70 74 69 6f  BLE_SQLLOG optio
8030: 6e 20 74 6f 20 0a 20 20 62 65 20 75 73 65 66 75  n to .  be usefu
8040: 6c 2c 20 73 6f 6d 65 20 65 78 74 72 61 20 63 6f  l, some extra co
8050: 64 65 20 69 73 20 72 65 71 75 69 72 65 64 2e 20  de is required. 
8060: 20 54 68 65 20 0a 20 20 3c 61 20 68 72 65 66 3d   The .  <a href=
8070: 22 68 74 74 70 3a 2f 2f 77 77 77 2e 73 71 6c 69  "http://www.sqli
8080: 74 65 2e 6f 72 67 2f 73 72 63 2f 64 6f 63 2f 74  te.org/src/doc/t
8090: 72 75 6e 6b 2f 73 72 63 2f 74 65 73 74 5f 73 71  runk/src/test_sq
80a0: 6c 6c 6f 67 2e 63 22 3e 22 74 65 73 74 5f 73 71  llog.c">"test_sq
80b0: 6c 6c 6f 67 2e 63 22 3c 2f 61 3e 0a 20 20 73 6f  llog.c"</a>.  so
80c0: 75 72 63 65 20 63 6f 64 65 0a 20 20 66 69 6c 65  urce code.  file
80d0: 20 69 6e 20 74 68 65 20 53 51 4c 69 74 65 20 73   in the SQLite s
80e0: 6f 75 72 63 65 20 74 72 65 65 20 69 73 20 61 20  ource tree is a 
80f0: 77 6f 72 6b 69 6e 67 20 65 78 61 6d 70 6c 65 20  working example 
8100: 6f 66 20 74 68 65 20 72 65 71 75 69 72 65 64 20  of the required 
8110: 65 78 74 72 61 0a 20 20 63 6f 64 65 2e 20 20 4f  extra.  code.  O
8120: 6e 20 75 6e 69 78 20 61 6e 64 20 77 69 6e 64 6f  n unix and windo
8130: 77 73 20 73 79 73 74 65 6d 73 2c 20 61 20 64 65  ws systems, a de
8140: 76 65 6c 6f 70 65 72 20 63 61 6e 20 61 70 70 65  veloper can appe
8150: 6e 64 20 74 68 65 20 74 65 78 74 20 6f 66 20 74  nd the text of t
8160: 68 65 0a 20 20 22 74 65 73 74 5f 73 71 6c 6c 6f  he.  "test_sqllo
8170: 67 2e 63 22 20 73 6f 75 72 63 65 20 63 6f 64 65  g.c" source code
8180: 20 66 69 6c 65 20 74 6f 20 74 68 65 20 65 6e 64   file to the end
8190: 20 6f 66 20 61 6e 20 22 73 71 6c 69 74 65 33 2e   of an "sqlite3.
81a0: 63 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 2c  c" amalgamation,
81b0: 0a 20 20 72 65 63 6f 6d 70 69 6c 65 20 74 68 65  .  recompile the
81c0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 75 73 69   application usi
81d0: 6e 67 20 74 68 65 20 2d 44 53 51 4c 49 54 45 5f  ng the -DSQLITE_
81e0: 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 20 6f 70  ENABLE_SQLLOG op
81f0: 74 69 6f 6e 2c 20 74 68 65 6e 20 0a 20 20 63 6f  tion, then .  co
8200: 6e 74 72 6f 6c 20 6c 6f 67 67 69 6e 67 20 75 73  ntrol logging us
8210: 69 6e 67 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  ing environment 
8220: 76 61 72 69 61 62 6c 65 73 2e 20 20 53 65 65 20  variables.  See 
8230: 74 68 65 20 68 65 61 64 65 72 20 63 6f 6d 6d 65  the header comme
8240: 6e 74 20 6f 6e 20 0a 20 20 74 68 65 20 22 74 65  nt on .  the "te
8250: 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f 75  st_sqllog.c" sou
8260: 72 63 65 20 66 69 6c 65 20 66 6f 72 20 61 64 64  rce file for add
8270: 69 74 69 6f 6e 61 6c 20 64 65 74 61 69 6c 2e 20  itional detail. 
8280: 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54   .}..COMPILE_OPT
8290: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
82a0: 4c 45 5f 53 54 41 54 32 7d 20 7b 0a 20 20 54 68  LE_STAT2} {.  Th
82b0: 69 73 20 6f 70 74 69 6f 6e 20 75 73 65 64 20 74  is option used t
82c0: 6f 20 63 61 75 73 65 20 74 68 65 20 5b 41 4e 41  o cause the [ANA
82d0: 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f  LYZE] command to
82e0: 20 63 6f 6c 6c 65 63 74 0a 20 20 69 6e 64 65 78   collect.  index
82f0: 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20   histogram data 
8300: 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65  in the <b>sqlite
8310: 5f 73 74 61 74 32 3c 2f 62 3e 20 74 61 62 6c 65  _stat2</b> table
8320: 2e 20 20 42 75 74 20 74 68 61 74 0a 20 20 66 75  .  But that.  fu
8330: 6e 63 74 69 6f 6e 61 6c 69 74 79 20 77 61 73 20  nctionality was 
8340: 73 75 70 65 72 63 65 64 65 64 20 62 79 20 5b 53  superceded by [S
8350: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41  QLITE_ENABLE_STA
8360: 54 33 5d 20 61 73 20 6f 66 0a 20 20 53 51 4c 69  T3] as of.  SQLi
8370: 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 39  te version 3.7.9
8380: 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 45 4e  .  The SQLITE_EN
8390: 41 42 4c 45 5f 53 54 41 54 32 20 63 6f 6d 70 69  ABLE_STAT2 compi
83a0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 0a 20  le-time option. 
83b0: 20 69 73 20 6e 6f 77 20 61 20 6e 6f 2d 6f 70 2e   is now a no-op.
83c0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
83d0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
83e0: 45 5f 53 54 41 54 33 7d 20 7b 0a 20 20 54 68 69  E_STAT3} {.  Thi
83f0: 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 61 64  s option adds ad
8400: 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 74  ditional logic t
8410: 6f 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20  o the [ANALYZE] 
8420: 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 6f 0a 20  command and to. 
8430: 20 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61 6e   the [query plan
8440: 6e 65 72 5d 20 74 68 61 74 20 63 61 6e 20 68 65  ner] that can he
8450: 6c 70 20 53 51 4c 69 74 65 20 74 6f 20 63 68 6f  lp SQLite to cho
8460: 73 65 20 61 20 62 65 74 74 65 72 20 71 75 65 72  se a better quer
8470: 79 20 70 6c 61 6e 0a 20 20 75 6e 64 65 72 20 63  y plan.  under c
8480: 65 72 74 61 69 6e 20 73 69 74 75 61 74 69 6f 6e  ertain situation
8490: 73 2e 20 20 54 68 65 20 5b 41 4e 41 4c 59 5a 45  s.  The [ANALYZE
84a0: 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 6e 68  ] command is enh
84b0: 61 6e 63 65 64 20 74 6f 20 63 6f 6c 6c 65 63 74  anced to collect
84c0: 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74  .  histogram dat
84d0: 61 20 66 72 6f 6d 20 74 68 65 20 6c 65 66 74 2d  a from the left-
84e0: 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20 65  most column of e
84f0: 61 63 68 20 69 6e 64 65 78 20 61 6e 64 20 73 74  ach index and st
8500: 6f 72 65 20 74 68 61 74 20 64 61 74 61 0a 20 20  ore that data.  
8510: 69 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 5f 73  in the [sqlite_s
8520: 74 61 74 33 5d 20 74 61 62 6c 65 2e 20 20 54 68  tat3] table.  Th
8530: 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20  e query planner 
8540: 77 69 6c 6c 20 74 68 65 6e 20 75 73 65 20 74 68  will then use th
8550: 65 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61  e.  histogram da
8560: 74 61 20 74 6f 20 68 65 6c 70 20 69 74 20 6d 61  ta to help it ma
8570: 6b 65 20 62 65 74 74 65 72 20 69 6e 64 65 78 20  ke better index 
8580: 63 68 6f 69 63 65 73 2e 20 20 4e 6f 74 65 2c 20  choices.  Note, 
8590: 68 6f 77 65 76 65 72 2c 0a 20 20 74 68 61 74 20  however,.  that 
85a0: 74 68 65 20 75 73 65 20 6f 66 20 68 69 73 74 6f  the use of histo
85b0: 67 72 61 6d 20 64 61 74 61 20 69 6e 20 71 75 65  gram data in que
85c0: 72 79 20 70 6c 61 6e 6e 65 72 20 76 69 6f 6c 61  ry planner viola
85d0: 74 65 73 20 74 68 65 0a 20 20 5b 71 75 65 72 79  tes the.  [query
85e0: 20 70 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c 69   planner stabili
85f0: 74 79 20 67 75 61 72 61 6e 74 65 65 5d 20 77 68  ty guarantee] wh
8600: 69 63 68 20 69 73 20 69 6d 70 6f 72 74 61 6e 74  ich is important
8610: 20 74 6f 20 73 6f 6d 65 20 61 70 70 6c 69 63 61   to some applica
8620: 74 69 6f 6e 73 2e 0a 20 20 3c 70 3e 0a 7d 0a 0a  tions..  <p>.}..
8630: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
8640: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
8650: 41 54 34 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  AT4} {.  This op
8660: 74 69 6f 6e 20 61 64 64 73 20 61 64 64 69 74 69  tion adds additi
8670: 6f 6e 61 6c 20 6c 6f 67 69 63 20 74 6f 20 74 68  onal logic to th
8680: 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d  e [ANALYZE] comm
8690: 61 6e 64 20 61 6e 64 20 74 6f 0a 20 20 74 68 65  and and to.  the
86a0: 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 5d   [query planner]
86b0: 20 74 68 61 74 20 63 61 6e 20 68 65 6c 70 20 53   that can help S
86c0: 51 4c 69 74 65 20 74 6f 20 63 68 6f 73 65 20 61  QLite to chose a
86d0: 20 62 65 74 74 65 72 20 71 75 65 72 79 20 70 6c   better query pl
86e0: 61 6e 0a 20 20 75 6e 64 65 72 20 63 65 72 74 61  an.  under certa
86f0: 69 6e 20 73 69 74 75 61 74 69 6f 6e 73 2e 20 20  in situations.  
8700: 54 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f  The [ANALYZE] co
8710: 6d 6d 61 6e 64 20 69 73 20 65 6e 68 61 6e 63 65  mmand is enhance
8720: 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 68  d to collect.  h
8730: 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66 72  istogram data fr
8740: 6f 6d 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f  om all columns o
8750: 66 20 65 76 65 72 79 20 69 6e 64 65 78 20 61 6e  f every index an
8760: 64 20 73 74 6f 72 65 20 74 68 61 74 20 64 61 74  d store that dat
8770: 61 0a 20 20 69 6e 20 74 68 65 20 5b 73 71 6c 69  a.  in the [sqli
8780: 74 65 5f 73 74 61 74 34 5d 20 74 61 62 6c 65 2e  te_stat4] table.
8790: 20 20 54 68 65 20 71 75 65 72 79 20 70 6c 61 6e    The query plan
87a0: 6e 65 72 20 77 69 6c 6c 20 74 68 65 6e 20 75 73  ner will then us
87b0: 65 20 74 68 65 0a 20 20 68 69 73 74 6f 67 72 61  e the.  histogra
87c0: 6d 20 64 61 74 61 20 74 6f 20 68 65 6c 70 20 69  m data to help i
87d0: 74 20 6d 61 6b 65 20 62 65 74 74 65 72 20 69 6e  t make better in
87e0: 64 65 78 20 63 68 6f 69 63 65 73 2e 20 20 54 68  dex choices.  Th
87f0: 65 20 64 6f 77 6e 73 69 64 65 20 6f 66 0a 20 20  e downside of.  
8800: 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  this compile-tim
8810: 65 20 6f 70 74 69 6f 6e 20 69 73 20 74 68 61 74  e option is that
8820: 20 69 74 20 76 69 6f 6c 61 74 65 73 20 74 68 65   it violates the
8830: 0a 20 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65  .  [query planne
8840: 72 20 73 74 61 62 69 6c 69 74 79 20 67 75 61 72  r stability guar
8850: 61 6e 74 65 65 5d 20 6d 61 6b 69 6e 67 20 69 74  antee] making it
8860: 20 6d 6f 72 65 20 64 69 66 66 69 63 75 6c 74 20   more difficult 
8870: 74 6f 20 65 6e 73 75 72 65 0a 20 20 63 6f 6e 73  to ensure.  cons
8880: 69 73 74 65 6e 74 20 70 65 72 66 6f 72 6d 61 6e  istent performan
8890: 63 65 20 69 6e 20 6d 61 73 73 2d 70 72 6f 64 75  ce in mass-produ
88a0: 63 65 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  ced applications
88b0: 2e 0a 20 20 3c 70 3e 0a 20 20 53 51 4c 49 54 45  ..  <p>.  SQLITE
88c0: 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34 20 69 73  _ENABLE_STAT4 is
88d0: 20 61 6e 20 65 6e 68 61 6e 63 65 6d 65 6e 74 20   an enhancement 
88e0: 6f 66 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  of [SQLITE_ENABL
88f0: 45 5f 53 54 41 54 33 5d 2e 20 20 53 54 41 54 33  E_STAT3].  STAT3
8900: 0a 20 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65 64  .  only recorded
8910: 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20   histogram data 
8920: 66 6f 72 20 74 68 65 20 6c 65 66 74 2d 6d 6f 73  for the left-mos
8930: 74 20 63 6f 6c 75 6d 6e 20 6f 66 20 65 61 63 68  t column of each
8940: 20 69 6e 64 65 78 0a 20 20 77 68 65 72 65 61 73   index.  whereas
8950: 20 74 68 65 20 53 54 41 54 34 20 65 6e 68 61 6e   the STAT4 enhan
8960: 63 65 6d 65 6e 74 20 72 65 63 6f 72 64 73 20 68  cement records h
8970: 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66 72  istogram data fr
8980: 6f 6d 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 0a 20  om all columns. 
8990: 20 6f 66 20 65 61 63 68 20 69 6e 64 65 78 2e 0a   of each index..
89a0: 20 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e    The [SQLITE_EN
89b0: 41 42 4c 45 5f 53 54 41 54 33 5d 20 63 6f 6d 70  ABLE_STAT3] comp
89c0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
89d0: 69 73 20 61 20 6e 6f 2d 6f 70 20 61 6e 64 20 69  is a no-op and i
89e0: 73 20 69 67 6e 6f 72 65 64 0a 20 20 69 66 20 74  s ignored.  if t
89f0: 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  he SQLITE_ENABLE
8a00: 5f 53 54 41 54 34 20 63 6f 6d 70 69 6c 65 2d 74  _STAT4 compile-t
8a10: 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  ime option is us
8a20: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
8a30: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
8a40: 41 42 4c 45 5f 54 52 45 45 5f 45 58 50 4c 41 49  ABLE_TREE_EXPLAI
8a50: 4e 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70  N} {.  This comp
8a60: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
8a70: 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 75 73 65  is no longer use
8a80: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
8a90: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
8aa0: 42 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54  BLE_UPDATE_DELET
8ab0: 45 5f 4c 49 4d 49 54 7d 20 7b 0a 20 20 54 68 69  E_LIMIT} {.  Thi
8ac0: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
8ad0: 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44   an optional ORD
8ae0: 45 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20  ER BY and LIMIT 
8af0: 63 6c 61 75 73 65 20 6f 6e 20 0a 20 20 5b 55 50  clause on .  [UP
8b00: 44 41 54 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54  DATE] and [DELET
8b10: 45 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 0a  E] statements...
8b20: 20 20 3c 70 3e 49 66 20 74 68 69 73 20 6f 70 74    <p>If this opt
8b30: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
8b40: 74 68 65 6e 20 69 74 20 6d 75 73 74 20 61 6c 73  then it must als
8b50: 6f 20 62 65 20 0a 20 20 64 65 66 69 6e 65 64 20  o be .  defined 
8b60: 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 27  when using the '
8b70: 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67  lemon' tool to g
8b80: 65 6e 65 72 61 74 65 20 61 20 70 61 72 73 65 2e  enerate a parse.
8b90: 63 0a 20 20 66 69 6c 65 2e 20 42 65 63 61 75 73  c.  file. Becaus
8ba0: 65 20 6f 66 20 74 68 69 73 2c 20 74 68 69 73 20  e of this, this 
8bb0: 6f 70 74 69 6f 6e 20 6d 61 79 20 6f 6e 6c 79 20  option may only 
8bc0: 62 65 20 75 73 65 64 20 77 68 65 6e 20 74 68 65  be used when the
8bd0: 20 6c 69 62 72 61 72 79 20 69 73 20 62 75 69 6c   library is buil
8be0: 74 0a 20 20 66 72 6f 6d 20 73 6f 75 72 63 65 2c  t.  from source,
8bf0: 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b 61   not from the [a
8c00: 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20  malgamation] or 
8c10: 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74  from the collect
8c20: 69 6f 6e 20 6f 66 0a 20 20 70 72 65 2d 70 61 63  ion of.  pre-pac
8c30: 6b 61 67 65 64 20 43 20 66 69 6c 65 73 20 70 72  kaged C files pr
8c40: 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d 55  ovided for non-U
8c50: 6e 69 78 20 6c 69 6b 65 20 70 6c 61 74 66 6f 72  nix like platfor
8c60: 6d 73 20 6f 6e 20 74 68 65 20 77 65 62 73 69 74  ms on the websit
8c70: 65 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d  e..  </p>.}..COM
8c80: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
8c90: 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4c 4f 43  ITE_ENABLE_UNLOC
8ca0: 4b 5f 4e 4f 54 49 46 59 7d 20 7b 0a 20 20 54 68  K_NOTIFY} {.  Th
8cb0: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
8cc0: 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 75  s the [sqlite3_u
8cd0: 6e 6c 6f 63 6b 5f 6e 6f 74 69 66 79 28 29 5d 20  nlock_notify()] 
8ce0: 69 6e 74 65 72 66 61 63 65 20 61 6e 64 0a 20 20  interface and.  
8cf0: 69 74 73 20 61 73 73 6f 63 69 61 74 65 64 20 66  its associated f
8d00: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20 20 53  unctionality.  S
8d10: 65 65 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61  ee the documenta
8d20: 74 69 6f 6e 20 74 69 74 6c 65 64 0a 20 20 5b 55  tion titled.  [U
8d30: 73 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20  sing the SQLite 
8d40: 55 6e 6c 6f 63 6b 20 4e 6f 74 69 66 69 63 61 74  Unlock Notificat
8d50: 69 6f 6e 20 46 65 61 74 75 72 65 5d 20 66 6f 72  ion Feature] for
8d60: 20 61 64 64 69 74 69 6f 6e 61 6c 0a 20 20 69 6e   additional.  in
8d70: 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f  formation..}..CO
8d80: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
8d90: 4c 49 54 45 5f 53 4f 55 4e 44 45 58 7d 20 7b 0a  LITE_SOUNDEX} {.
8da0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
8db0: 61 62 6c 65 73 20 74 68 65 20 5b 73 6f 75 6e 64  ables the [sound
8dc0: 65 78 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f  ex() SQL functio
8dd0: 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  n]..}..COMPILE_O
8de0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 53  PTION {SQLITE_US
8df0: 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 7d 20 7b  E_FCNTL_TRACE} {
8e00: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
8e10: 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20  auses SQLite to 
8e20: 69 73 73 75 65 20 65 78 74 72 61 20 5b 53 51 4c  issue extra [SQL
8e30: 49 54 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 5d  ITE_FCNTL_TRACE]
8e40: 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 73 0a 20   file controls. 
8e50: 20 74 6f 20 70 72 6f 76 69 64 65 20 73 75 70 70   to provide supp
8e60: 6c 65 6d 65 6e 74 61 72 79 20 69 6e 66 6f 72 6d  lementary inform
8e70: 61 74 69 6f 6e 20 74 6f 20 74 68 65 20 56 46 53  ation to the VFS
8e80: 2e 20 20 54 68 65 20 22 76 66 73 6c 6f 67 2e 63  .  The "vfslog.c
8e90: 22 20 65 78 74 65 6e 73 69 6f 6e 0a 20 20 6d 61  " extension.  ma
8ea0: 6b 65 73 20 75 73 65 20 6f 66 20 74 68 69 73 20  kes use of this 
8eb0: 74 6f 20 70 72 6f 76 69 64 65 20 65 6e 68 61 6e  to provide enhan
8ec0: 63 65 64 20 6c 6f 67 73 20 6f 66 20 56 46 53 20  ced logs of VFS 
8ed0: 61 63 74 69 76 69 74 79 2e 0a 7d 0a 0a 43 4f 4d  activity..}..COM
8ee0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 59 59 54  PILE_OPTION {YYT
8ef0: 52 41 43 4b 4d 41 58 53 54 41 43 4b 44 45 50 54  RACKMAXSTACKDEPT
8f00: 48 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  H} {.  This opti
8f10: 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 4c 41  on causes the LA
8f20: 4c 52 28 31 29 20 70 61 72 73 65 72 20 73 74 61  LR(1) parser sta
8f30: 63 6b 20 64 65 70 74 68 20 74 6f 20 62 65 20 74  ck depth to be t
8f40: 72 61 63 6b 65 64 0a 20 20 61 6e 64 20 72 65 70  racked.  and rep
8f50: 6f 72 74 65 64 20 75 73 69 6e 67 20 74 68 65 20  orted using the 
8f60: 5b 73 71 6c 69 74 65 33 5f 73 74 61 74 75 73 5d  [sqlite3_status]
8f70: 28 5b 53 51 4c 49 54 45 5f 53 54 41 54 55 53 5f  ([SQLITE_STATUS_
8f80: 50 41 52 53 45 52 5f 53 54 41 43 4b 5d 2c 2e 2e  PARSER_STACK],..
8f90: 2e 29 0a 20 20 69 6e 74 65 72 66 61 63 65 2e 20  .).  interface. 
8fa0: 20 53 51 4c 69 74 65 27 73 20 4c 41 4c 52 28 31   SQLite's LALR(1
8fb0: 29 20 70 61 72 73 65 72 20 68 61 73 20 61 20 66  ) parser has a f
8fc0: 69 78 65 64 20 73 74 61 63 6b 20 64 65 70 74 68  ixed stack depth
8fd0: 0a 20 20 28 64 65 74 65 72 6d 69 6e 65 64 20 61  .  (determined a
8fe0: 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 75  t compile-time u
8ff0: 73 69 6e 67 20 74 68 65 20 5b 59 59 53 54 41 43  sing the [YYSTAC
9000: 4b 44 45 50 54 48 5d 20 6f 70 74 69 6f 6e 73 29  KDEPTH] options)
9010: 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  ..  This option 
9020: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 68  can be used to h
9030: 65 6c 70 20 64 65 74 65 72 6d 69 6e 65 20 69 66  elp determine if
9040: 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20   an application 
9050: 69 73 0a 20 20 67 65 74 74 69 6e 67 20 63 6c 6f  is.  getting clo
9060: 73 65 20 74 6f 20 65 78 63 65 65 64 69 6e 67 20  se to exceeding 
9070: 74 68 65 20 6d 61 78 69 6d 75 6d 20 4c 41 4c 52  the maximum LALR
9080: 28 31 29 20 73 74 61 63 6b 20 64 65 70 74 68 2e  (1) stack depth.
9090: 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61  .}.</tcl>..<a na
90a0: 6d 65 3d 22 64 69 73 61 62 6c 65 66 65 61 74 75  me="disablefeatu
90b0: 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e  res"></a>.<h2>1.
90c0: 36 20 4f 70 74 69 6f 6e 73 20 54 6f 20 44 69 73  6 Options To Dis
90d0: 61 62 6c 65 20 46 65 61 74 75 72 65 73 20 4e 6f  able Features No
90e0: 72 6d 61 6c 6c 79 20 54 75 72 6e 65 64 20 4f 6e  rmally Turned On
90f0: 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d  </h2>..<tcl>.COM
9100: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
9110: 49 54 45 5f 44 49 53 41 42 4c 45 5f 4c 46 53 7d  ITE_DISABLE_LFS}
9120: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70   {.  If this C-p
9130: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
9140: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 6c 61  o is defined, la
9150: 72 67 65 20 66 69 6c 65 20 73 75 70 70 6f 72 74  rge file support
9160: 0a 20 20 69 73 20 64 69 73 61 62 6c 65 64 2e 0a  .  is disabled..
9170: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
9180: 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c  N {SQLITE_DISABL
9190: 45 5f 44 49 52 53 59 4e 43 7d 20 7b 0a 20 20 49  E_DIRSYNC} {.  I
91a0: 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63  f this C-preproc
91b0: 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64  essor macro is d
91c0: 65 66 69 6e 65 64 2c 20 64 69 72 65 63 74 6f 72  efined, director
91d0: 79 20 73 79 6e 63 73 0a 20 20 61 72 65 20 64 69  y syncs.  are di
91e0: 73 61 62 6c 65 64 2e 20 20 53 51 4c 69 74 65 20  sabled.  SQLite 
91f0: 74 79 70 69 63 61 6c 6c 79 20 61 74 74 65 6d 70  typically attemp
9200: 74 73 20 74 6f 20 73 79 6e 63 20 74 68 65 20 70  ts to sync the p
9210: 61 72 65 6e 74 0a 20 20 64 69 72 65 63 74 6f 72  arent.  director
9220: 79 20 77 68 65 6e 20 61 20 66 69 6c 65 20 69 73  y when a file is
9230: 20 64 65 6c 65 74 65 64 20 74 6f 20 65 6e 73 75   deleted to ensu
9240: 72 65 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  re the directory
9250: 0a 20 20 65 6e 74 72 69 65 73 20 61 72 65 20 75  .  entries are u
9260: 70 64 61 74 65 64 20 69 6d 6d 65 64 69 61 74 65  pdated immediate
9270: 6c 79 20 6f 6e 20 64 69 73 6b 2e 0a 7d 0a 0a 43  ly on disk..}..C
9280: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9290: 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 46 54  QLITE_DISABLE_FT
92a0: 53 33 5f 55 4e 49 43 4f 44 45 7d 20 7b 0a 20 20  S3_UNICODE} {.  
92b0: 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f  If this C-prepro
92c0: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20  cessor macro is 
92d0: 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 75 6e  defined, the [un
92e0: 69 63 6f 64 65 36 31 5d 20 74 6f 6b 65 6e 69 7a  icode61] tokeniz
92f0: 65 72 0a 20 20 69 6e 20 5b 46 54 53 33 5d 20 69  er.  in [FTS3] i
9300: 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74  s omitted from t
9310: 68 65 20 62 75 69 6c 64 20 61 6e 64 20 69 73 20  he build and is 
9320: 75 6e 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 0a  unavailable to .
9330: 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a    applications..
9340: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
9350: 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c  N {SQLITE_DISABL
9360: 45 5f 46 54 53 34 5f 44 45 46 45 52 52 45 44 7d  E_FTS4_DEFERRED}
9370: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70   {.  If this C-p
9380: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
9390: 6f 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 22  o disables the "
93a0: 64 65 66 65 72 72 65 64 20 74 6f 6b 65 6e 22 20  deferred token" 
93b0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 0a 20 20 69  optimization.  i
93c0: 6e 20 5b 46 54 53 34 5d 2e 20 20 54 68 65 20 22  n [FTS4].  The "
93d0: 64 65 66 65 72 72 65 64 20 74 6f 6b 65 6e 22 20  deferred token" 
93e0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 61 76 6f  optimization avo
93f0: 69 64 73 20 6c 6f 61 64 69 6e 67 20 6d 61 73 73  ids loading mass
9400: 69 76 65 0a 20 20 70 6f 73 74 69 6e 67 20 6c 69  ive.  posting li
9410: 73 74 73 20 66 6f 72 20 74 65 72 6d 73 20 74 68  sts for terms th
9420: 61 74 20 61 72 65 20 69 6e 20 6d 6f 73 74 20 64  at are in most d
9430: 6f 63 75 6d 65 6e 74 73 20 6f 66 20 74 68 65 20  ocuments of the 
9440: 63 6f 6c 6c 65 63 74 69 6f 6e 0a 20 20 61 6e 64  collection.  and
9450: 20 69 6e 73 74 65 61 64 20 73 69 6d 70 6c 79 20   instead simply 
9460: 73 63 61 6e 73 20 66 6f 72 20 74 68 6f 73 65 20  scans for those 
9470: 74 6f 6b 65 6e 73 20 69 6e 20 74 68 65 20 64 6f  tokens in the do
9480: 63 75 6d 65 6e 74 20 73 6f 75 72 63 65 2e 20 20  cument source.  
9490: 5b 46 54 53 34 5d 0a 20 20 73 68 6f 75 6c 64 20  [FTS4].  should 
94a0: 67 65 74 20 65 78 61 63 74 6c 79 20 74 68 65 20  get exactly the 
94b0: 73 61 6d 65 20 61 6e 73 77 65 72 20 62 6f 74 68  same answer both
94c0: 20 77 69 74 68 20 61 6e 64 20 77 69 74 68 6f 75   with and withou
94d0: 74 20 74 68 69 73 20 6f 70 74 69 6d 69 7a 61 74  t this optimizat
94e0: 69 6f 6e 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  ion..}.</tcl>..<
94f0: 74 63 6c 3e 0a 20 20 68 64 5f 66 72 61 67 6d 65  tcl>.  hd_fragme
9500: 6e 74 20 22 6f 6d 69 74 66 65 61 74 75 72 65 73  nt "omitfeatures
9510: 22 0a 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20  ".  hd_keywords 
9520: 22 6f 6d 69 74 66 65 61 74 75 72 65 73 22 0a 3c  "omitfeatures".<
9530: 2f 74 63 6c 3e 0a 3c 68 32 3e 31 2e 37 20 4f 70  /tcl>.<h2>1.7 Op
9540: 74 69 6f 6e 73 20 54 6f 20 4f 6d 69 74 20 46 65  tions To Omit Fe
9550: 61 74 75 72 65 73 3c 2f 68 32 3e 0a 0a 3c 70 3e  atures</h2>..<p>
9560: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70  The following op
9570: 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 75 73 65  tions can be use
9580: 64 20 74 6f 20 0a 5b 72 65 6c 66 6f 6f 74 70 72  d to .[relfootpr
9590: 69 6e 74 20 7c 20 72 65 64 75 63 65 20 74 68 65  int | reduce the
95a0: 20 73 69 7a 65 20 6f 66 20 74 68 65 20 63 6f 6d   size of the com
95b0: 70 69 6c 65 64 20 6c 69 62 72 61 72 79 5d 0a 62  piled library].b
95c0: 79 20 6f 6d 69 74 74 69 6e 67 20 75 6e 75 73 65  y omitting unuse
95d0: 64 20 66 65 61 74 75 72 65 73 2e 20 54 68 69 73  d features. This
95e0: 20 69 73 20 70 72 6f 62 61 62 6c 79 20 6f 6e 6c   is probably onl
95f0: 79 20 75 73 65 66 75 6c 0a 69 6e 20 65 6d 62 65  y useful.in embe
9600: 64 64 65 64 20 73 79 73 74 65 6d 73 20 77 68 65  dded systems whe
9610: 72 65 20 73 70 61 63 65 20 69 73 20 65 73 70 65  re space is espe
9620: 63 69 61 6c 6c 79 20 74 69 67 68 74 2c 20 61 73  cially tight, as
9630: 20 65 76 65 6e 20 77 69 74 68 20 61 6c 6c 0a 66   even with all.f
9640: 65 61 74 75 72 65 73 20 69 6e 63 6c 75 64 65 64  eatures included
9650: 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72   the SQLite libr
9660: 61 72 79 20 69 73 20 72 65 6c 61 74 69 76 65 6c  ary is relativel
9670: 79 20 73 6d 61 6c 6c 2e 20 44 6f 6e 27 74 20 66  y small. Don't f
9680: 6f 72 67 65 74 0a 74 6f 20 74 65 6c 6c 20 79 6f  orget.to tell yo
9690: 75 72 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f  ur compiler to o
96a0: 70 74 69 6d 69 7a 65 20 66 6f 72 20 62 69 6e 61  ptimize for bina
96b0: 72 79 20 73 69 7a 65 21 20 28 74 68 65 20 2d 4f  ry size! (the -O
96c0: 73 20 6f 70 74 69 6f 6e 20 69 66 0a 75 73 69 6e  s option if.usin
96d0: 67 20 47 43 43 29 2e 20 20 54 65 6c 6c 69 6e 67  g GCC).  Telling
96e0: 20 79 6f 75 72 20 63 6f 6d 70 69 6c 65 72 20 74   your compiler t
96f0: 6f 20 6f 70 74 69 6d 69 7a 65 20 66 6f 72 20 73  o optimize for s
9700: 69 7a 65 20 75 73 75 61 6c 6c 79 20 68 61 73 0a  ize usually has.
9710: 61 20 6d 75 63 68 20 6c 61 72 67 65 72 20 69 6d  a much larger im
9720: 70 61 63 74 20 6f 6e 20 6c 69 62 72 61 72 79 20  pact on library 
9730: 66 6f 6f 74 70 72 69 6e 74 20 74 68 61 6e 20 65  footprint than e
9740: 6d 70 6c 6f 79 69 6e 67 20 61 6e 79 20 6f 66 20  mploying any of 
9750: 74 68 65 73 65 0a 63 6f 6d 70 69 6c 65 2d 74 69  these.compile-ti
9760: 6d 65 20 6f 70 74 69 6f 6e 73 2e 20 20 59 6f 75  me options.  You
9770: 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 76 65 72   should also ver
9780: 69 66 79 20 74 68 61 74 20 0a 3c 61 20 68 72 65  ify that .<a hre
9790: 66 3d 22 23 64 65 62 75 67 6f 70 74 69 6f 6e 73  f="#debugoptions
97a0: 22 3e 64 65 62 75 67 67 69 6e 67 20 6f 70 74 69  ">debugging opti
97b0: 6f 6e 73 3c 2f 61 3e 20 61 72 65 20 64 69 73 61  ons</a> are disa
97c0: 62 6c 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  bled.</p>..<p>Th
97d0: 65 20 6d 61 63 72 6f 73 20 69 6e 20 74 68 69 73  e macros in this
97e0: 20 73 65 63 74 69 6f 6e 20 64 6f 20 6e 6f 74 20   section do not 
97f0: 72 65 71 75 69 72 65 20 76 61 6c 75 65 73 2e 20  require values. 
9800: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 0a 63  The following .c
9810: 6f 6d 70 69 6c 61 74 69 6f 6e 20 73 77 69 74 63  ompilation switc
9820: 68 65 73 20 61 6c 6c 20 68 61 76 65 20 74 68 65  hes all have the
9830: 20 73 61 6d 65 20 65 66 66 65 63 74 3a 3c 62 72   same effect:<br
9840: 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  >.-DSQLITE_OMIT_
9850: 41 4c 54 45 52 54 41 42 4c 45 3c 62 72 3e 0a 2d  ALTERTABLE<br>.-
9860: 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54  DSQLITE_OMIT_ALT
9870: 45 52 54 41 42 4c 45 3d 31 3c 62 72 3e 0a 2d 44  ERTABLE=1<br>.-D
9880: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45  SQLITE_OMIT_ALTE
9890: 52 54 41 42 4c 45 3d 30 0a 3c 2f 70 3e 0a 0a 3c  RTABLE=0.</p>..<
98a0: 70 3e 49 66 20 61 6e 79 20 6f 66 20 74 68 65 73  p>If any of thes
98b0: 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 64 65  e options are de
98c0: 66 69 6e 65 64 2c 20 74 68 65 6e 20 74 68 65 20  fined, then the 
98d0: 73 61 6d 65 20 73 65 74 20 6f 66 20 53 51 4c 49  same set of SQLI
98e0: 54 45 5f 4f 4d 49 54 5f 2a 0a 6f 70 74 69 6f 6e  TE_OMIT_*.option
98f0: 73 20 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 64  s must also be d
9900: 65 66 69 6e 65 64 20 77 68 65 6e 20 75 73 69 6e  efined when usin
9910: 67 20 74 68 65 20 27 6c 65 6d 6f 6e 27 20 74 6f  g the 'lemon' to
9920: 6f 6c 20 74 6f 20 67 65 6e 65 72 61 74 65 20 74  ol to generate t
9930: 68 65 0a 70 61 72 73 65 2e 63 20 66 69 6c 65 20  he.parse.c file 
9940: 61 6e 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 69  and when compili
9950: 6e 67 20 74 68 65 20 27 6d 6b 6b 65 79 77 6f 72  ng the 'mkkeywor
9960: 64 68 61 73 68 27 20 74 6f 6f 6c 20 77 68 69 63  dhash' tool whic
9970: 68 20 67 65 6e 65 72 61 74 65 73 20 0a 74 68 65  h generates .the
9980: 20 6b 65 79 77 6f 72 64 68 61 73 68 2e 68 20 66   keywordhash.h f
9990: 69 6c 65 2e 0a 42 65 63 61 75 73 65 20 6f 66 20  ile..Because of 
99a0: 74 68 69 73 2c 20 74 68 65 73 65 20 6f 70 74 69  this, these opti
99b0: 6f 6e 73 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20  ons may only be 
99c0: 75 73 65 64 20 77 68 65 6e 20 74 68 65 20 6c 69  used when the li
99d0: 62 72 61 72 79 20 69 73 20 62 75 69 6c 74 0a 66  brary is built.f
99e0: 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f  rom canonical so
99f0: 75 72 63 65 2c 20 6e 6f 74 20 66 72 6f 6d 20 74  urce, not from t
9a00: 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  he [amalgamation
9a10: 5d 20 6f 72 20 66 72 6f 6d 20 74 68 65 20 63 6f  ] or from the co
9a20: 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a 70 72 65 2d  llection of.pre-
9a30: 70 61 63 6b 61 67 65 64 20 43 20 66 69 6c 65 73  packaged C files
9a40: 20 70 72 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f   provided for no
9a50: 6e 2d 55 6e 69 78 20 6c 69 6b 65 20 70 6c 61 74  n-Unix like plat
9a60: 66 6f 72 6d 73 20 6f 6e 20 74 68 65 20 77 65 62  forms on the web
9a70: 73 69 74 65 2e 0a 41 6e 79 20 53 51 4c 49 54 45  site..Any SQLITE
9a80: 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20  _OMIT_* options 
9a90: 77 68 69 63 68 20 63 61 6e 20 62 65 20 75 73 65  which can be use
9aa0: 64 20 64 69 72 65 63 74 6c 79 20 77 69 74 68 20  d directly with 
9ab0: 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f  the [amalgamatio
9ac0: 6e 5d 20 0a 61 72 65 20 6c 69 73 74 65 64 20 62  n] .are listed b
9ad0: 65 6c 6f 77 2c 20 68 6f 77 65 76 65 72 2c 20 74  elow, however, t
9ae0: 68 65 20 77 61 72 6e 69 6e 67 73 20 69 6e 20 74  he warnings in t
9af0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 72  he following par
9b00: 61 67 72 61 70 68 20 73 68 6f 75 6c 64 20 62 65  agraph should be
9b10: 20 6e 6f 74 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 62   noted..</p>..<b
9b20: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62  lockquote>.<i><b
9b30: 3e 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65 3a  >Important Note:
9b40: 3c 2f 62 3e 20 54 68 65 20 53 51 4c 49 54 45 5f  </b> The SQLITE_
9b50: 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 64  OMIT_* options d
9b60: 6f 20 6e 6f 74 20 77 6f 72 6b 20 77 69 74 68 20  o not work with 
9b70: 74 68 65 0a 5b 61 6d 61 6c 67 61 6d 61 74 69 6f  the.[amalgamatio
9b80: 6e 5d 20 6f 72 20 77 69 74 68 20 70 72 65 2d 70  n] or with pre-p
9b90: 61 63 6b 61 67 65 64 20 43 20 63 6f 64 65 20 66  ackaged C code f
9ba0: 69 6c 65 73 2e 20 20 53 51 4c 49 54 45 5f 4f 4d  iles.  SQLITE_OM
9bb0: 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  IT_* compile-tim
9bc0: 65 0a 6f 70 74 69 6f 6e 73 20 6f 6e 6c 79 20 77  e.options only w
9bd0: 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 77 68  ork correctly wh
9be0: 65 6e 20 53 51 4c 69 74 65 20 69 73 20 62 75 69  en SQLite is bui
9bf0: 6c 74 20 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61  lt from canonica
9c00: 6c 20 73 6f 75 72 63 65 20 66 69 6c 65 73 2e 0a  l source files..
9c10: 3c 2f 69 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  </i>.</blockquot
9c20: 65 3e 0a 0a 0a 3c 70 3e 53 70 65 63 69 61 6c 20  e>...<p>Special 
9c30: 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20  versions of the 
9c40: 53 51 4c 69 74 65 20 61 6d 61 6c 67 61 6d 61 74  SQLite amalgamat
9c50: 69 6f 6e 20 74 68 61 74 20 64 6f 20 77 6f 72 6b  ion that do work
9c60: 20 77 69 74 68 20 61 0a 70 72 65 64 65 74 65 72   with a.predeter
9c70: 6d 69 6e 65 64 20 73 65 74 20 6f 66 20 53 51 4c  mined set of SQL
9c80: 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f  ITE_OMIT_* optio
9c90: 6e 73 20 63 61 6e 20 62 65 20 67 65 6e 65 72 61  ns can be genera
9ca0: 74 65 64 2e 20 20 54 6f 20 64 6f 20 73 6f 2c 0a  ted.  To do so,.
9cb0: 6d 61 6b 65 20 61 20 63 6f 70 79 20 6f 66 20 74  make a copy of t
9cc0: 68 65 20 4d 61 6b 65 66 69 6c 65 2e 6c 69 6e 75  he Makefile.linu
9cd0: 78 2d 67 63 63 20 6d 61 6b 65 66 69 6c 65 20 74  x-gcc makefile t
9ce0: 65 6d 70 6c 61 74 65 20 69 6e 20 74 68 65 20 63  emplate in the c
9cf0: 61 6e 6f 6e 69 63 61 6c 0a 73 6f 75 72 63 65 20  anonical.source 
9d00: 63 6f 64 65 20 64 69 73 74 72 69 62 75 74 69 6f  code distributio
9d10: 6e 2e 20 20 43 68 61 6e 67 65 20 74 68 65 20 6e  n.  Change the n
9d20: 61 6d 65 20 6f 66 20 79 6f 75 72 20 63 6f 70 79  ame of your copy
9d30: 20 74 6f 20 73 69 6d 70 6c 79 20 22 4d 61 6b 65   to simply "Make
9d40: 66 69 6c 65 22 2e 0a 54 68 65 6e 20 65 64 69 74  file"..Then edit
9d50: 20 22 4d 61 6b 65 66 69 6c 65 22 20 74 6f 20 73   "Makefile" to s
9d60: 65 74 20 75 70 20 61 70 70 72 6f 70 72 69 61 74  et up appropriat
9d70: 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  e compile-time o
9d80: 70 74 69 6f 6e 73 2e 20 20 54 68 65 6e 0a 74 79  ptions.  Then.ty
9d90: 70 65 3a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  pe:.<blockquote>
9da0: 3c 74 74 3e 6d 61 6b 65 20 63 6c 65 61 6e 3b 20  <tt>make clean; 
9db0: 6d 61 6b 65 20 73 71 6c 69 74 65 33 2e 63 3c 2f  make sqlite3.c</
9dc0: 74 74 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  tt></blockquote>
9dd0: 0a 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20 22  .The resulting "
9de0: 73 71 6c 69 74 65 33 2e 63 22 20 61 6d 61 6c 67  sqlite3.c" amalg
9df0: 61 6d 61 74 69 6f 6e 20 63 6f 64 65 20 66 69 6c  amation code fil
9e00: 65 20 28 61 6e 64 20 69 74 73 20 61 73 73 6f 63  e (and its assoc
9e10: 69 61 74 65 64 0a 68 65 61 64 65 72 20 66 69 6c  iated.header fil
9e20: 65 20 22 73 71 6c 69 74 65 33 2e 68 22 29 20 63  e "sqlite3.h") c
9e30: 61 6e 20 74 68 65 6e 20 62 65 20 6d 6f 76 65 64  an then be moved
9e40: 20 74 6f 20 61 20 6e 6f 6e 2d 75 6e 69 78 20 70   to a non-unix p
9e50: 6c 61 74 66 6f 72 6d 0a 66 6f 72 20 66 69 6e 61  latform.for fina
9e60: 6c 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 75 73  l compilation us
9e70: 69 6e 67 20 61 20 6e 61 74 69 76 65 20 63 6f 6d  ing a native com
9e80: 70 69 6c 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41  piler.</p>..<p>A
9e90: 6c 6c 20 6f 66 20 74 68 65 20 53 51 4c 49 54 45  ll of the SQLITE
9ea0: 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20  _OMIT_* options 
9eb0: 61 72 65 20 75 6e 73 75 70 70 6f 72 74 65 64 2e  are unsupported.
9ec0: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
9ed0: 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61  e>.<i><b>Importa
9ee0: 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e 0a 54 68 65  nt Note:</b>.The
9ef0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63   SQLITE_OMIT_* c
9f00: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
9f10: 6f 6e 73 20 61 72 65 20 75 6e 73 75 70 70 6f 72  ons are unsuppor
9f20: 74 65 64 2e 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b  ted..</i></block
9f30: 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20  quote>..<p>.The 
9f40: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f  SQLITE_OMIT_* co
9f50: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
9f60: 6e 73 20 61 72 65 20 75 73 75 61 6c 6c 79 20 75  ns are usually u
9f70: 6e 74 65 73 74 65 64 20 61 6e 64 0a 61 72 65 20  ntested and.are 
9f80: 61 6c 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c 79  almost certainly
9f90: 20 75 6e 74 65 73 74 65 64 20 69 6e 20 63 6f 6d   untested in com
9fa0: 62 69 6e 61 74 69 6f 6e 2e 0a 41 6e 79 20 6f 72  bination..Any or
9fb0: 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 6f 70   all of these op
9fc0: 74 69 6f 6e 73 20 6d 61 79 20 62 65 20 72 65 6d  tions may be rem
9fd0: 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 63 6f  oved from the co
9fe0: 64 65 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c  de in future rel
9ff0: 65 61 73 65 73 0a 61 6e 64 20 77 69 74 68 6f 75  eases.and withou
a000: 74 20 77 61 72 6e 69 6e 67 2e 20 20 46 6f 72 20  t warning.  For 
a010: 61 6e 79 20 70 61 72 74 69 63 75 6c 61 72 20 72  any particular r
a020: 65 6c 65 61 73 65 2c 20 73 6f 6d 65 20 6f 66 20  elease, some of 
a030: 74 68 65 73 65 0a 6f 70 74 69 6f 6e 73 20 6d 61  these.options ma
a040: 79 20 63 61 75 73 65 20 63 6f 6d 70 69 6c 65 2d  y cause compile-
a050: 74 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69 6d 65  time or run-time
a060: 20 66 61 69 6c 75 72 65 73 2c 20 70 61 72 74 69   failures, parti
a070: 63 75 6c 61 72 6c 79 0a 77 68 65 6e 20 75 73 65  cularly.when use
a080: 64 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e  d in combination
a090: 20 77 69 74 68 20 6f 74 68 65 72 20 6f 70 74 69   with other opti
a0a0: 6f 6e 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  ons.</p>..<tcl>.
a0b0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a0c0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45  SQLITE_OMIT_ALTE
a0d0: 52 54 41 42 4c 45 7d 20 7b 0a 20 20 57 68 65 6e  RTABLE} {.  When
a0e0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
a0f0: 64 65 66 69 6e 65 64 2c 20 74 68 65 20 0a 20 20  defined, the .  
a100: 5b 41 4c 54 45 52 20 54 41 42 4c 45 5d 20 63 6f  [ALTER TABLE] co
a110: 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63  mmand is not inc
a120: 6c 75 64 65 64 20 69 6e 20 74 68 65 20 0a 20 20  luded in the .  
a130: 6c 69 62 72 61 72 79 2e 20 45 78 65 63 75 74 69  library. Executi
a140: 6e 67 20 61 6e 20 5b 41 4c 54 45 52 20 54 41 42  ng an [ALTER TAB
a150: 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61  LE] statement ca
a160: 75 73 65 73 20 61 20 70 61 72 73 65 20 65 72 72  uses a parse err
a170: 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  or..}..COMPILE_O
a180: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
a190: 49 54 5f 41 4e 41 4c 59 5a 45 7d 20 7b 0a 20 20  IT_ANALYZE} {.  
a1a0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
a1b0: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
a1c0: 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61   [ANALYZE] comma
a1d0: 6e 64 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72  nd is omitted fr
a1e0: 6f 6d 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a  om.  the build..
a1f0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
a200: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  N {SQLITE_OMIT_A
a210: 54 54 41 43 48 7d 20 7b 0a 20 20 57 68 65 6e 20  TTACH} {.  When 
a220: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
a230: 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 41 54 54  efined, the [ATT
a240: 41 43 48 5d 20 61 6e 64 20 5b 44 45 54 41 43 48  ACH] and [DETACH
a250: 5d 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 0a 20  ] commands are. 
a260: 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68   omitted from th
a270: 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50  e build..}..COMP
a280: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
a290: 54 45 5f 4f 4d 49 54 5f 41 55 54 48 4f 52 49 5a  TE_OMIT_AUTHORIZ
a2a0: 41 54 49 4f 4e 7d 20 7b 0a 20 20 44 65 66 69 6e  ATION} {.  Defin
a2b0: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
a2c0: 6f 6d 69 74 73 20 74 68 65 20 61 75 74 68 6f 72  omits the author
a2d0: 69 7a 61 74 69 6f 6e 20 63 61 6c 6c 62 61 63 6b  ization callback
a2e0: 20 66 65 61 74 75 72 65 20 66 72 6f 6d 20 74 68   feature from th
a2f0: 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 54 68 65  e.  library. The
a300: 20 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75   [sqlite3_set_au
a310: 74 68 6f 72 69 7a 65 72 28 29 5d 20 41 50 49 20  thorizer()] API 
a320: 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20  function is not 
a330: 70 72 65 73 65 6e 74 0a 20 20 69 6e 20 74 68 65  present.  in the
a340: 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d   library..}..COM
a350: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
a360: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 43  ITE_OMIT_AUTOINC
a370: 52 45 4d 45 4e 54 7d 20 7b 0a 20 20 54 68 69 73  REMENT} {.  This
a380: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
a390: 74 6f 20 6f 6d 69 74 20 74 68 65 20 0a 20 20 5b  to omit the .  [
a3a0: 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d 20 66  AUTOINCREMENT] f
a3b0: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20 57 68  unctionality. Wh
a3c0: 65 6e 20 74 68 69 73 20 0a 20 20 69 73 20 6d 61  en this .  is ma
a3d0: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20  cro is defined, 
a3e0: 63 6f 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65 64  columns declared
a3f0: 20 61 73 20 0a 20 20 22 5b 49 4e 54 45 47 45 52   as .  "[INTEGER
a400: 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 20 41 55   PRIMARY KEY] AU
a410: 54 4f 49 4e 43 52 45 4d 45 4e 54 22 0a 20 20 62  TOINCREMENT".  b
a420: 65 68 61 76 65 20 69 6e 20 74 68 65 20 73 61 6d  ehave in the sam
a430: 65 20 77 61 79 20 61 73 20 63 6f 6c 75 6d 6e 73  e way as columns
a440: 20 64 65 63 6c 61 72 65 64 20 61 73 20 22 5b 49   declared as "[I
a450: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
a460: 45 59 5d 22 20 77 68 65 6e 20 61 20 0a 20 20 4e  EY]" when a .  N
a470: 55 4c 4c 20 69 73 20 69 6e 73 65 72 74 65 64 2e  ULL is inserted.
a480: 20 54 68 65 20 73 71 6c 69 74 65 5f 73 65 71 75   The sqlite_sequ
a490: 65 6e 63 65 20 73 79 73 74 65 6d 20 74 61 62 6c  ence system tabl
a4a0: 65 20 69 73 20 6e 65 69 74 68 65 72 20 63 72 65  e is neither cre
a4b0: 61 74 65 64 2c 20 6e 6f 72 0a 20 20 72 65 73 70  ated, nor.  resp
a4c0: 65 63 74 65 64 20 69 66 20 69 74 20 61 6c 72 65  ected if it alre
a4d0: 61 64 79 20 65 78 69 73 74 73 2e 0a 7d 0a 0a 43  ady exists..}..C
a4e0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
a4f0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49  QLITE_OMIT_AUTOI
a500: 4e 49 54 7d 20 7b 0a 20 20 46 6f 72 20 62 61 63  NIT} {.  For bac
a510: 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62 69  kwards compatibi
a520: 6c 69 74 79 20 77 69 74 68 20 6f 6c 64 65 72 20  lity with older 
a530: 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69  versions of SQLi
a540: 74 65 20 74 68 61 74 20 6c 61 63 6b 0a 20 20 74  te that lack.  t
a550: 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74  he [sqlite3_init
a560: 69 61 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72 66  ialize()] interf
a570: 61 63 65 2c 20 74 68 65 20 5b 73 71 6c 69 74 65  ace, the [sqlite
a580: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20  3_initialize()] 
a590: 69 6e 74 65 72 66 61 63 65 0a 20 20 69 73 20 63  interface.  is c
a5a0: 61 6c 6c 65 64 20 61 75 74 6f 6d 61 74 69 63 61  alled automatica
a5b0: 6c 6c 79 20 75 70 6f 6e 20 65 6e 74 72 79 20 74  lly upon entry t
a5c0: 6f 20 63 65 72 74 61 69 6e 20 6b 65 79 20 69 6e  o certain key in
a5d0: 74 65 72 66 61 63 65 73 20 73 75 63 68 20 61 73  terfaces such as
a5e0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  .  [sqlite3_open
a5f0: 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 76 66  ()], [sqlite3_vf
a600: 73 5f 72 65 67 69 73 74 65 72 28 29 5d 2c 20 61  s_register()], a
a610: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 6d 70 72 69  nd [sqlite3_mpri
a620: 6e 74 66 28 29 5d 2e 0a 20 20 54 68 65 20 6f 76  ntf()]..  The ov
a630: 65 72 68 65 61 64 20 6f 66 20 69 6e 76 6f 6b 69  erhead of invoki
a640: 6e 67 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74  ng [sqlite3_init
a650: 69 61 6c 69 7a 65 28 29 5d 20 61 75 74 6f 6d 61  ialize()] automa
a660: 74 69 63 61 6c 6c 79 20 69 6e 20 74 68 69 73 0a  tically in this.
a670: 20 20 77 61 79 20 6d 61 79 20 62 65 20 6f 6d 69    way may be omi
a680: 74 74 65 64 20 62 79 20 62 75 69 6c 64 69 6e 67  tted by building
a690: 20 53 51 4c 69 74 65 20 77 69 74 68 20 74 68 65   SQLite with the
a6a0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54   SQLITE_OMIT_AUT
a6b0: 4f 49 4e 49 54 0a 20 20 43 2d 70 72 65 70 72 6f  OINIT.  C-prepro
a6c0: 63 65 73 73 6f 72 20 6d 61 63 72 6f 2e 20 20 57  cessor macro.  W
a6d0: 68 65 6e 20 62 75 69 6c 74 20 75 73 69 6e 67 20  hen built using 
a6e0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
a6f0: 49 4e 49 54 2c 20 53 51 4c 69 74 65 0a 20 20 77  INIT, SQLite.  w
a700: 69 6c 6c 20 6e 6f 74 20 61 75 74 6f 6d 61 74 69  ill not automati
a710: 63 61 6c 6c 79 20 69 6e 69 74 69 61 6c 69 7a 65  cally initialize
a720: 20 69 74 73 65 6c 66 20 61 6e 64 20 74 68 65 20   itself and the 
a730: 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 72  application is r
a740: 65 71 75 69 72 65 64 0a 20 20 74 6f 20 69 6e 76  equired.  to inv
a750: 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69  oke [sqlite3_ini
a760: 74 69 61 6c 69 7a 65 28 29 5d 20 64 69 72 65 63  tialize()] direc
a770: 74 6c 79 20 70 72 69 6f 72 20 74 6f 20 62 65 67  tly prior to beg
a780: 69 6e 6e 69 6e 67 20 75 73 65 20 6f 66 20 74 68  inning use of th
a790: 65 0a 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61  e.  SQLite libra
a7a0: 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ry..}..COMPILE_O
a7b0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
a7c0: 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44  IT_AUTOMATIC_IND
a7d0: 45 58 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  EX} {.  This opt
a7e0: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f  ion is used to o
a7f0: 6d 69 74 20 74 68 65 20 0a 20 20 5b 61 75 74 6f  mit the .  [auto
a800: 6d 61 74 69 63 20 69 6e 64 65 78 69 6e 67 5d 20  matic indexing] 
a810: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 0a 20  functionality.. 
a820: 20 53 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49   See also: [SQLI
a830: 54 45 5f 44 45 46 41 55 4c 54 5f 41 55 54 4f 4d  TE_DEFAULT_AUTOM
a840: 41 54 49 43 5f 49 4e 44 45 58 5d 2e 0a 7d 0a 0a  ATIC_INDEX]..}..
a850: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a860: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
a870: 52 45 53 45 54 7d 20 7b 0a 20 20 42 79 20 64 65  RESET} {.  By de
a880: 66 61 75 6c 74 2c 20 74 68 65 20 5b 73 71 6c 69  fault, the [sqli
a890: 74 65 33 5f 73 74 65 70 28 29 5d 20 69 6e 74 65  te3_step()] inte
a8a0: 72 66 61 63 65 20 77 69 6c 6c 20 61 75 74 6f 6d  rface will autom
a8b0: 61 74 69 63 61 6c 6c 79 20 69 6e 76 6f 6b 65 0a  atically invoke.
a8c0: 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74    [sqlite3_reset
a8d0: 28 29 5d 20 74 6f 20 72 65 73 65 74 20 74 68 65  ()] to reset the
a8e0: 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
a8f0: 6d 65 6e 74 5d 20 69 66 20 6e 65 63 65 73 73 61  ment] if necessa
a900: 72 79 2e 20 20 54 68 69 73 0a 20 20 63 6f 6d 70  ry.  This.  comp
a910: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
a920: 63 68 61 6e 67 65 73 20 74 68 61 74 20 62 65 68  changes that beh
a930: 61 76 69 6f 72 20 73 6f 20 74 68 61 74 20 5b 73  avior so that [s
a940: 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 77  qlite3_step()] w
a950: 69 6c 6c 0a 20 20 72 65 74 75 72 6e 20 5b 53 51  ill.  return [SQ
a960: 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 69 66 20  LITE_MISUSE] if 
a970: 69 74 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 20  it called again 
a980: 61 66 74 65 72 20 72 65 74 75 72 6e 69 6e 67 20  after returning 
a990: 61 6e 79 74 68 69 6e 67 20 6f 74 68 65 72 0a 20  anything other. 
a9a0: 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 52 4f   than [SQLITE_RO
a9b0: 57 5d 2c 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  W], [SQLITE_BUSY
a9c0: 5d 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f 4c 4f  ], or [SQLITE_LO
a9d0: 43 4b 45 44 5d 20 75 6e 6c 65 73 73 20 74 68 65  CKED] unless the
a9e0: 72 65 20 77 61 73 20 61 6e 0a 20 20 69 6e 74 65  re was an.  inte
a9f0: 72 76 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f 20  rvening call to 
aa00: 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29  [sqlite3_reset()
aa10: 5d 2e 0a 0a 20 20 49 6e 20 53 51 4c 69 74 65 20  ]...  In SQLite 
aa20: 76 65 72 73 69 6f 6e 20 33 2e 36 2e 32 33 2e 31  version 3.6.23.1
aa30: 20 61 6e 64 20 65 61 72 6c 69 65 72 2c 20 5b 73   and earlier, [s
aa40: 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 75  qlite3_step()] u
aa50: 73 65 64 20 74 6f 20 61 6c 77 61 79 73 0a 20 20  sed to always.  
aa60: 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4d  return [SQLITE_M
aa70: 49 53 55 53 45 5d 20 69 66 20 69 74 20 77 61 73  ISUSE] if it was
aa80: 20 69 6e 76 6f 6b 65 64 20 61 67 61 69 6e 20 61   invoked again a
aa90: 66 74 65 72 20 72 65 74 75 72 6e 69 6e 67 20 61  fter returning a
aaa0: 6e 79 74 68 69 6e 67 0a 20 20 6f 74 68 65 72 20  nything.  other 
aab0: 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 52 4f 57  than [SQLITE_ROW
aac0: 5d 20 77 69 74 68 6f 75 74 20 61 6e 20 69 6e 74  ] without an int
aad0: 65 72 76 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f  ervening call to
aae0: 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28   [sqlite3_reset(
aaf0: 29 5d 2e 0a 20 20 54 68 69 73 20 63 61 75 73 65  )]..  This cause
ab00: 64 20 70 72 6f 62 6c 65 6d 73 20 6f 6e 20 73 6f  d problems on so
ab10: 6d 65 20 70 6f 6f 72 6c 79 20 77 72 69 74 74 65  me poorly writte
ab20: 6e 20 73 6d 61 72 74 70 68 6f 6e 65 20 61 70 70  n smartphone app
ab30: 6c 69 63 61 74 69 6f 6e 73 20 77 68 69 63 68 0a  lications which.
ab40: 20 20 64 69 64 20 6e 6f 74 20 63 6f 72 72 65 63    did not correc
ab50: 74 6c 79 20 68 61 6e 64 6c 65 20 74 68 65 20 5b  tly handle the [
ab60: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 61  SQLITE_LOCKED] a
ab70: 6e 64 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d  nd [SQLITE_BUSY]
ab80: 20 65 72 72 6f 72 20 0a 20 20 72 65 74 75 72 6e   error .  return
ab90: 73 2e 20 20 52 61 74 68 65 72 20 74 68 61 6e 20  s.  Rather than 
aba0: 66 69 78 20 74 68 65 20 6d 61 6e 79 20 64 65 66  fix the many def
abb0: 65 63 74 69 76 65 20 73 6d 61 72 74 70 68 6f 6e  ective smartphon
abc0: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20  e applications, 
abd0: 0a 20 20 74 68 65 20 62 65 68 61 76 69 6f 72 20  .  the behavior 
abe0: 6f 66 20 53 51 4c 69 74 65 20 77 61 73 20 63 68  of SQLite was ch
abf0: 61 6e 67 65 64 20 69 6e 20 33 2e 36 2e 32 33 2e  anged in 3.6.23.
ac00: 32 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c  2 to automatical
ac10: 6c 79 20 72 65 73 65 74 0a 20 20 74 68 65 20 70  ly reset.  the p
ac20: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
ac30: 74 2e 20 20 42 75 74 20 74 68 61 74 20 63 68 61  t.  But that cha
ac40: 6e 67 65 64 20 63 61 75 73 65 64 20 69 73 73 75  nged caused issu
ac50: 65 73 20 69 6e 20 6f 74 68 65 72 20 0a 20 20 69  es in other .  i
ac60: 6d 70 72 6f 70 65 72 6c 79 20 69 6d 70 6c 65 6d  mproperly implem
ac70: 65 6e 74 65 64 20 61 70 70 6c 69 63 61 74 69 6f  ented applicatio
ac80: 6e 73 20 74 68 61 74 20 77 65 72 65 20 61 63 74  ns that were act
ac90: 75 61 6c 6c 79 20 6c 6f 6f 6b 69 6e 67 0a 20 20  ually looking.  
aca0: 66 6f 72 20 61 6e 20 5b 53 51 4c 49 54 45 5f 4d  for an [SQLITE_M
acb0: 49 53 55 53 45 5d 20 72 65 74 75 72 6e 20 74 6f  ISUSE] return to
acc0: 20 74 65 72 6d 69 6e 61 74 65 20 74 68 65 69 72   terminate their
acd0: 20 71 75 65 72 79 20 6c 6f 6f 70 73 2e 20 20 28   query loops.  (
ace0: 41 6e 79 74 69 6d 65 0a 20 20 61 6e 20 61 70 70  Anytime.  an app
acf0: 6c 69 63 61 74 69 6f 6e 20 67 65 74 73 20 61 6e  lication gets an
ad00: 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 20 65   SQLITE_MISUSE e
ad10: 72 72 6f 72 20 63 6f 64 65 20 66 72 6f 6d 20 53  rror code from S
ad20: 51 4c 69 74 65 2c 20 74 68 61 74 20 6d 65 61 6e  QLite, that mean
ad30: 73 20 74 68 65 0a 20 20 61 70 70 6c 69 63 61 74  s the.  applicat
ad40: 69 6f 6e 20 69 73 20 6d 69 73 75 73 69 6e 67 20  ion is misusing 
ad50: 74 68 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72  the SQLite inter
ad60: 66 61 63 65 20 61 6e 64 20 69 73 20 74 68 75 73  face and is thus
ad70: 20 69 6e 63 6f 72 72 65 63 74 6c 79 0a 20 20 69   incorrectly.  i
ad80: 6d 70 6c 65 6d 65 6e 74 65 64 2e 29 20 20 54 68  mplemented.)  Th
ad90: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55  e SQLITE_OMIT_AU
ada0: 54 4f 52 45 53 45 54 20 69 6e 74 65 72 66 61 63  TORESET interfac
adb0: 65 20 77 61 73 20 61 64 64 65 64 20 74 6f 20 53  e was added to S
adc0: 51 4c 69 74 65 0a 20 20 76 65 72 73 69 6f 6e 20  QLite.  version 
add0: 33 2e 37 2e 35 20 69 6e 20 61 6e 20 65 66 66 6f  3.7.5 in an effo
ade0: 72 74 20 74 6f 20 67 65 74 20 61 6c 6c 20 6f 66  rt to get all of
adf0: 20 74 68 65 20 28 62 72 6f 6b 65 6e 29 0a 20 20   the (broken).  
ae00: 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20  applications to 
ae10: 77 6f 72 6b 20 61 67 61 69 6e 20 77 69 74 68 6f  work again witho
ae20: 75 74 20 68 61 76 69 6e 67 20 74 6f 20 61 63 74  ut having to act
ae30: 75 61 6c 6c 79 20 66 69 78 20 74 68 65 20 61 70  ually fix the ap
ae40: 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43  plications..}..C
ae50: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
ae60: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 56  QLITE_OMIT_AUTOV
ae70: 41 43 55 55 4d 7d 20 7b 0a 20 20 49 66 20 74 68  ACUUM} {.  If th
ae80: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
ae90: 69 6e 65 64 2c 20 74 68 65 20 6c 69 62 72 61 72  ined, the librar
aea0: 79 20 63 61 6e 6e 6f 74 20 63 72 65 61 74 65 20  y cannot create 
aeb0: 6f 72 20 77 72 69 74 65 20 74 6f 20 0a 20 20 64  or write to .  d
aec0: 61 74 61 62 61 73 65 73 20 74 68 61 74 20 73 75  atabases that su
aed0: 70 70 6f 72 74 20 5b 61 75 74 6f 5f 76 61 63 75  pport [auto_vacu
aee0: 75 6d 5d 2e 0a 20 20 45 78 65 63 75 74 69 6e 67  um]..  Executing
aef0: 20 61 20 5b 50 52 41 47 4d 41 20 61 75 74 6f 5f   a [PRAGMA auto_
af00: 76 61 63 75 75 6d 5d 20 73 74 61 74 65 6d 65 6e  vacuum] statemen
af10: 74 20 69 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f  t is not an erro
af20: 72 0a 20 20 28 73 69 6e 63 65 20 75 6e 6b 6e 6f  r.  (since unkno
af30: 77 6e 20 50 52 41 47 4d 41 73 20 61 72 65 20 73  wn PRAGMAs are s
af40: 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65 64 29  ilently ignored)
af50: 2c 20 62 75 74 20 64 6f 65 73 20 6e 6f 74 20 72  , but does not r
af60: 65 74 75 72 6e 20 61 20 76 61 6c 75 65 0a 20 20  eturn a value.  
af70: 6f 72 20 6d 6f 64 69 66 79 20 74 68 65 20 61 75  or modify the au
af80: 74 6f 2d 76 61 63 75 75 6d 20 66 6c 61 67 20 69  to-vacuum flag i
af90: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  n the database f
afa0: 69 6c 65 2e 20 49 66 20 61 20 64 61 74 61 62 61  ile. If a databa
afb0: 73 65 20 74 68 61 74 0a 20 20 73 75 70 70 6f 72  se that.  suppor
afc0: 74 73 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 69  ts auto-vacuum i
afd0: 73 20 6f 70 65 6e 65 64 20 62 79 20 61 20 6c 69  s opened by a li
afe0: 62 72 61 72 79 20 63 6f 6d 70 69 6c 65 64 20 77  brary compiled w
aff0: 69 74 68 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c  ith this option,
b000: 20 69 74 0a 20 20 69 73 20 61 75 74 6f 6d 61 74   it.  is automat
b010: 69 63 61 6c 6c 79 20 6f 70 65 6e 65 64 20 69 6e  ically opened in
b020: 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64 65 2e   read-only mode.
b030: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
b040: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
b050: 42 45 54 57 45 45 4e 5f 4f 50 54 49 4d 49 5a 41  BETWEEN_OPTIMIZA
b060: 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TION} {.  This o
b070: 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74  ption disables t
b080: 68 65 20 75 73 65 20 6f 66 20 69 6e 64 69 63 65  he use of indice
b090: 73 20 77 69 74 68 20 57 48 45 52 45 20 63 6c 61  s with WHERE cla
b0a0: 75 73 65 20 74 65 72 6d 73 0a 20 20 74 68 61 74  use terms.  that
b0b0: 20 65 6d 70 6c 6f 79 20 74 68 65 20 42 45 54 57   employ the BETW
b0c0: 45 45 4e 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a  EEN operator..}.
b0d0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
b0e0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 4c 4f  {SQLITE_OMIT_BLO
b0f0: 42 5f 4c 49 54 45 52 41 4c 7d 20 7b 0a 20 20 57  B_LITERAL} {.  W
b100: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
b110: 69 73 20 64 65 66 69 6e 65 64 2c 20 69 74 20 69  is defined, it i
b120: 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74  s not possible t
b130: 6f 20 73 70 65 63 69 66 79 20 61 20 62 6c 6f 62  o specify a blob
b140: 20 69 6e 0a 20 20 61 6e 20 53 51 4c 20 73 74 61   in.  an SQL sta
b150: 74 65 6d 65 6e 74 20 75 73 69 6e 67 20 74 68 65  tement using the
b160: 20 58 27 41 42 43 44 27 20 73 79 6e 74 61 78 2e   X'ABCD' syntax.
b170: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
b180: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
b190: 42 54 52 45 45 43 4f 55 4e 54 7d 20 7b 0a 20 20  BTREECOUNT} {.  
b1a0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
b1b0: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 61 6e 20   is defined, an 
b1c0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61  optimization tha
b1d0: 74 20 61 63 63 65 6c 65 72 61 74 65 73 20 63 6f  t accelerates co
b1e0: 75 6e 74 69 6e 67 0a 20 20 61 6c 6c 20 65 6e 74  unting.  all ent
b1f0: 72 69 65 73 20 69 6e 20 61 20 74 61 62 6c 65 20  ries in a table 
b200: 28 69 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c  (in other words,
b210: 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e   an optimization
b220: 20 74 68 61 74 20 68 65 6c 70 73 0a 20 20 22 53   that helps.  "S
b230: 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46  ELECT count(*) F
b240: 52 4f 4d 20 74 61 62 6c 65 22 20 72 75 6e 20 66  ROM table" run f
b250: 61 73 74 65 72 29 20 69 73 20 6f 6d 69 74 74 65  aster) is omitte
b260: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
b270: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
b280: 54 5f 42 55 49 4c 54 49 4e 5f 54 45 53 54 7d 20  T_BUILTIN_TEST} 
b290: 7b 0a 20 20 41 20 73 74 61 6e 64 61 72 64 20 53  {.  A standard S
b2a0: 51 4c 69 74 65 20 62 75 69 6c 64 20 69 6e 63 6c  QLite build incl
b2b0: 75 64 65 73 20 61 20 73 6d 61 6c 6c 20 61 6d 6f  udes a small amo
b2c0: 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 63 6f 6e  unt of logic con
b2d0: 74 72 6f 6c 6c 65 64 0a 20 20 62 79 20 74 68 65  trolled.  by the
b2e0: 20 5b 73 71 6c 69 74 65 33 5f 74 65 73 74 5f 63   [sqlite3_test_c
b2f0: 6f 6e 74 72 6f 6c 28 29 5d 20 69 6e 74 65 72 66  ontrol()] interf
b300: 61 63 65 20 74 68 61 74 20 69 73 20 75 73 65 64  ace that is used
b310: 20 74 6f 20 65 78 65 72 63 69 73 65 0a 20 20 70   to exercise.  p
b320: 61 72 74 73 20 6f 66 20 74 68 65 20 53 51 4c 69  arts of the SQLi
b330: 74 65 20 63 6f 72 65 20 74 68 61 74 20 61 72 65  te core that are
b340: 20 64 69 66 66 69 63 75 6c 74 20 74 6f 20 63 6f   difficult to co
b350: 6e 74 72 6f 6c 20 61 6e 64 20 6d 65 61 73 75 72  ntrol and measur
b360: 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20 73 74  e using.  the st
b370: 61 6e 64 61 72 64 20 41 50 49 2e 20 20 54 68 69  andard API.  Thi
b380: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74  s option omits t
b390: 68 61 74 20 62 75 69 6c 74 2d 69 6e 20 74 65 73  hat built-in tes
b3a0: 74 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50  t logic..}..COMP
b3b0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
b3c0: 54 45 5f 4f 4d 49 54 5f 43 41 53 54 7d 20 7b 0a  TE_OMIT_CAST} {.
b3d0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
b3e0: 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f  uses SQLite to o
b3f0: 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  mit support for 
b400: 74 68 65 20 43 41 53 54 20 6f 70 65 72 61 74 6f  the CAST operato
b410: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
b420: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
b430: 54 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69  T_CHECK} {.  Thi
b440: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
b450: 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73  SQLite to omit s
b460: 75 70 70 6f 72 74 20 66 6f 72 20 43 48 45 43 4b  upport for CHECK
b470: 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 20 20   constraints..  
b480: 54 68 65 20 70 61 72 73 65 72 20 77 69 6c 6c 20  The parser will 
b490: 73 74 69 6c 6c 20 61 63 63 65 70 74 20 43 48 45  still accept CHE
b4a0: 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 69  CK constraints i
b4b0: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  n SQL statements
b4c0: 2c 0a 20 20 74 68 65 79 20 77 69 6c 6c 20 6a 75  ,.  they will ju
b4d0: 73 74 20 6e 6f 74 20 62 65 20 65 6e 66 6f 72 63  st not be enforc
b4e0: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
b4f0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
b500: 49 54 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e  IT_COMPILEOPTION
b510: 5f 44 49 41 47 53 7d 20 7b 0a 20 20 54 68 69 73  _DIAGS} {.  This
b520: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
b530: 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70  to omit the comp
b540: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
b550: 64 69 61 67 6e 6f 73 74 69 63 73 20 61 76 61 69  diagnostics avai
b560: 6c 61 62 6c 65 0a 20 20 69 6e 20 53 51 4c 69 74  lable.  in SQLit
b570: 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65  e, including the
b580: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c   [sqlite3_compil
b590: 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20  eoption_used()] 
b5a0: 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  and.  [sqlite3_c
b5b0: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74  ompileoption_get
b5c0: 28 29 5d 20 43 2f 43 2b 2b 20 66 75 6e 63 74 69  ()] C/C++ functi
b5d0: 6f 6e 73 2c 20 74 68 65 0a 20 20 5b 73 71 6c 69  ons, the.  [sqli
b5e0: 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  te_compileoption
b5f0: 5f 75 73 65 64 28 29 5d 20 61 6e 64 20 5b 73 71  _used()] and [sq
b600: 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  lite_compileopti
b610: 6f 6e 5f 67 65 74 28 29 5d 20 53 51 4c 20 66 75  on_get()] SQL fu
b620: 6e 63 74 69 6f 6e 73 2c 0a 20 20 61 6e 64 20 74  nctions,.  and t
b630: 68 65 20 5b 63 6f 6d 70 69 6c 65 5f 6f 70 74 69  he [compile_opti
b640: 6f 6e 73 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a  ons pragma]..}..
b650: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
b660: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50  SQLITE_OMIT_COMP
b670: 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LETE} {.  This o
b680: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
b690: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65   [sqlite3_comple
b6a0: 74 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74  te()] and [sqlit
b6b0: 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 5d  e3_complete16()]
b6c0: 0a 20 20 69 6e 74 65 72 66 61 63 65 73 20 74 6f  .  interfaces to
b6d0: 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a   be omitted..}..
b6e0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
b6f0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50  SQLITE_OMIT_COMP
b700: 4f 55 4e 44 5f 53 45 4c 45 43 54 7d 20 7b 0a 20  OUND_SELECT} {. 
b710: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
b720: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65  used to omit the
b730: 20 63 6f 6d 70 6f 75 6e 64 20 5b 53 45 4c 45 43   compound [SELEC
b740: 54 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  T] functionality
b750: 2e 20 0a 20 20 5b 53 45 4c 45 43 54 5d 20 73 74  . .  [SELECT] st
b760: 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 75 73  atements that us
b770: 65 20 74 68 65 20 0a 20 20 55 4e 49 4f 4e 2c 20  e the .  UNION, 
b780: 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52  UNION ALL, INTER
b790: 53 45 43 54 20 6f 72 20 45 58 43 45 50 54 20 63  SECT or EXCEPT c
b7a0: 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 6f  ompound SELECT o
b7b0: 70 65 72 61 74 6f 72 73 20 77 69 6c 6c 20 0a 20  perators will . 
b7c0: 20 63 61 75 73 65 20 61 20 70 61 72 73 65 20 65   cause a parse e
b7d0: 72 72 6f 72 2e 0a 0a 20 20 41 6e 20 5b 49 4e 53  rror...  An [INS
b7e0: 45 52 54 5d 20 73 74 61 74 65 6d 65 6e 74 20 77  ERT] statement w
b7f0: 69 74 68 20 6d 75 6c 74 69 70 6c 65 20 76 61 6c  ith multiple val
b800: 75 65 73 20 69 6e 20 74 68 65 20 56 41 4c 55 45  ues in the VALUE
b810: 53 20 63 6c 61 75 73 65 20 69 73 0a 20 20 69 6d  S clause is.  im
b820: 70 6c 65 6d 65 6e 74 65 64 20 69 6e 74 65 72 6e  plemented intern
b830: 61 6c 6c 79 20 61 73 20 61 20 63 6f 6d 70 6f 75  ally as a compou
b840: 6e 64 20 53 45 4c 45 43 54 2e 20 20 48 65 6e 63  nd SELECT.  Henc
b850: 65 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61  e, this option a
b860: 6c 73 6f 0a 20 20 64 69 73 61 62 6c 65 73 20 74  lso.  disables t
b870: 68 65 20 61 62 69 6c 69 74 79 20 74 6f 20 69 6e  he ability to in
b880: 73 65 72 74 20 6d 6f 72 65 20 74 68 61 6e 20 61  sert more than a
b890: 20 73 69 6e 67 6c 65 20 72 6f 77 20 75 73 69 6e   single row usin
b8a0: 67 20 61 6e 0a 20 20 49 4e 53 45 52 54 20 49 4e  g an.  INSERT IN
b8b0: 54 4f 20 2e 2e 2e 20 56 41 4c 55 45 53 20 2e 2e  TO ... VALUES ..
b8c0: 2e 20 73 74 61 74 65 6d 65 6e 74 2e 0a 7d 0a 0a  . statement..}..
b8d0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
b8e0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 54 45 7d  SQLITE_OMIT_CTE}
b8f0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
b900: 20 63 61 75 73 65 73 20 73 75 70 70 6f 72 74 20   causes support 
b910: 66 6f 72 20 5b 63 6f 6d 6d 6f 6e 20 74 61 62 6c  for [common tabl
b920: 65 20 65 78 70 72 65 73 73 69 6f 6e 73 5d 20 74  e expressions] t
b930: 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a  o be omitted..}.
b940: 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  ...COMPILE_OPTIO
b950: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44  N {SQLITE_OMIT_D
b960: 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 7d 20 7b  ATETIME_FUNCS} {
b970: 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f  .  If this optio
b980: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 53 51  n is defined, SQ
b990: 4c 69 74 65 27 73 20 62 75 69 6c 74 2d 69 6e 20  Lite's built-in 
b9a0: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 6d 61  date and time ma
b9b0: 6e 69 70 75 6c 61 74 69 6f 6e 0a 20 20 66 75 6e  nipulation.  fun
b9c0: 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d 69 74 74  ctions are omitt
b9d0: 65 64 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79  ed. Specifically
b9e0: 2c 20 74 68 65 20 53 51 4c 20 66 75 6e 63 74 69  , the SQL functi
b9f0: 6f 6e 73 20 6a 75 6c 69 61 6e 64 61 79 28 29 2c  ons julianday(),
ba00: 20 64 61 74 65 28 29 2c 0a 20 20 74 69 6d 65 28   date(),.  time(
ba10: 29 2c 20 64 61 74 65 74 69 6d 65 28 29 20 61 6e  ), datetime() an
ba20: 64 20 73 74 72 66 74 69 6d 65 28 29 20 61 72 65  d strftime() are
ba30: 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 20   not available. 
ba40: 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6c 75  The default colu
ba50: 6d 6e 0a 20 20 76 61 6c 75 65 73 20 43 55 52 52  mn.  values CURR
ba60: 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e  ENT_TIME, CURREN
ba70: 54 5f 44 41 54 45 20 61 6e 64 20 43 55 52 52 45  T_DATE and CURRE
ba80: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 61 72 65  NT_TIMESTAMP are
ba90: 20 73 74 69 6c 6c 20 61 76 61 69 6c 61 62 6c 65   still available
baa0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
bab0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
bac0: 5f 44 45 43 4c 54 59 50 45 7d 20 7b 0a 20 20 54  _DECLTYPE} {.  T
bad0: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
bae0: 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74  s SQLite to omit
baf0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
bb00: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  .  [sqlite3_colu
bb10: 6d 6e 5f 64 65 63 6c 74 79 70 65 28 29 5d 20 61  mn_decltype()] a
bb20: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  nd [sqlite3_colu
bb30: 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 29 5d  mn_decltype16()]
bb40: 0a 20 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d  .  interfaces..}
bb50: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
bb60: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45   {SQLITE_OMIT_DE
bb70: 50 52 45 43 41 54 45 44 7d 20 7b 0a 20 20 54 68  PRECATED} {.  Th
bb80: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
bb90: 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20   SQLite to omit 
bba0: 73 75 70 70 6f 72 74 20 66 6f 72 20 69 6e 74 65  support for inte
bbb0: 72 66 61 63 65 73 0a 20 20 6d 61 72 6b 65 64 20  rfaces.  marked 
bbc0: 61 73 20 64 65 70 72 65 63 61 74 65 64 2e 20 20  as deprecated.  
bbd0: 54 68 69 73 20 69 6e 63 6c 75 64 65 73 20 0a 20  This includes . 
bbe0: 20 5b 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67   [sqlite3_aggreg
bbf0: 61 74 65 5f 63 6f 75 6e 74 28 29 5d 2c 0a 20 20  ate_count()],.  
bc00: 5b 73 71 6c 69 74 65 33 5f 65 78 70 69 72 65 64  [sqlite3_expired
bc10: 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f  ()],.  [sqlite3_
bc20: 74 72 61 6e 73 66 65 72 5f 62 69 6e 64 69 6e 67  transfer_binding
bc30: 73 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33  s()],.  [sqlite3
bc40: 5f 67 6c 6f 62 61 6c 5f 72 65 63 6f 76 65 72 28  _global_recover(
bc50: 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74  )],.  [sqlite3_t
bc60: 68 72 65 61 64 5f 63 6c 65 61 6e 75 70 28 29 5d  hread_cleanup()]
bc70: 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
bc80: 6d 65 6d 6f 72 79 5f 61 6c 61 72 6d 28 29 5d 20  memory_alarm()] 
bc90: 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43  interfaces..}..C
bca0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
bcb0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 49 53 4b 49  QLITE_OMIT_DISKI
bcc0: 4f 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  O} {.  This opti
bcd0: 6f 6e 20 6f 6d 69 74 73 20 61 6c 6c 20 73 75 70  on omits all sup
bce0: 70 6f 72 74 20 66 6f 72 20 77 72 69 74 69 6e 67  port for writing
bcf0: 20 74 6f 20 74 68 65 20 64 69 73 6b 20 61 6e 64   to the disk and
bd00: 20 66 6f 72 63 65 73 0a 20 20 64 61 74 61 62 61   forces.  databa
bd10: 73 65 73 20 74 6f 20 65 78 69 73 74 20 69 6e 20  ses to exist in 
bd20: 6d 65 6d 6f 72 79 20 6f 6e 6c 79 2e 20 20 54 68  memory only.  Th
bd30: 69 73 20 6f 70 74 69 6f 6e 20 68 61 73 20 6e 6f  is option has no
bd40: 74 20 62 65 65 6e 20 0a 20 20 6d 61 69 6e 74 61  t been .  mainta
bd50: 69 6e 65 64 20 61 6e 64 20 70 72 6f 62 61 62 6c  ined and probabl
bd60: 79 20 64 6f 65 73 20 6e 6f 74 20 77 6f 72 6b 20  y does not work 
bd70: 77 69 74 68 20 6e 65 77 65 72 20 76 65 72 73 69  with newer versi
bd80: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 7d  ons of SQLite..}
bd90: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
bda0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 45 58   {SQLITE_OMIT_EX
bdb0: 50 4c 41 49 4e 7d 20 7b 0a 20 20 44 65 66 69 6e  PLAIN} {.  Defin
bdc0: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
bdd0: 63 61 75 73 65 73 20 74 68 65 20 5b 45 58 50 4c  causes the [EXPL
bde0: 41 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20  AIN] command to 
bdf0: 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20  be omitted from 
be00: 74 68 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 41  the.  library. A
be10: 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65  ttempting to exe
be20: 63 75 74 65 20 61 6e 20 5b 45 58 50 4c 41 49 4e  cute an [EXPLAIN
be30: 5d 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c  ] statement will
be40: 20 63 61 75 73 65 20 61 20 70 61 72 73 65 0a 20   cause a parse. 
be50: 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49   error..}..COMPI
be60: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
be70: 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47  E_OMIT_FLAG_PRAG
be80: 4d 41 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  MAS} {.  This op
be90: 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
bea0: 72 74 20 66 6f 72 20 61 20 73 75 62 73 65 74 20  rt for a subset 
beb0: 6f 66 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d  of [PRAGMA] comm
bec0: 61 6e 64 73 20 74 68 61 74 0a 20 20 71 75 65 72  ands that.  quer
bed0: 79 20 61 6e 64 20 73 65 74 20 62 6f 6f 6c 65 61  y and set boolea
bee0: 6e 20 70 72 6f 70 65 72 74 69 65 73 2e 0a 7d 0a  n properties..}.
bef0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
bf00: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f  {SQLITE_OMIT_FLO
bf10: 41 54 49 4e 47 5f 50 4f 49 4e 54 7d 20 7b 0a 20  ATING_POINT} {. 
bf20: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
bf30: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 66 6c 6f  used to omit flo
bf40: 61 74 69 6e 67 2d 70 6f 69 6e 74 20 6e 75 6d 62  ating-point numb
bf50: 65 72 20 73 75 70 70 6f 72 74 20 66 72 6f 6d 20  er support from 
bf60: 74 68 65 20 53 51 4c 69 74 65 0a 20 20 6c 69 62  the SQLite.  lib
bf70: 72 61 72 79 2e 20 57 68 65 6e 20 73 70 65 63 69  rary. When speci
bf80: 66 69 65 64 2c 20 73 70 65 63 69 66 79 69 6e 67  fied, specifying
bf90: 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e   a floating poin
bfa0: 74 20 6e 75 6d 62 65 72 20 61 73 20 61 20 6c 69  t number as a li
bfb0: 74 65 72 61 6c 20 0a 20 20 28 69 2e 65 2e 20 22  teral .  (i.e. "
bfc0: 31 2e 30 31 22 29 20 72 65 73 75 6c 74 73 20 69  1.01") results i
bfd0: 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e  n a parse error.
bfe0: 0a 0a 20 20 3c 70 3e 49 6e 20 74 68 65 20 66 75  ..  <p>In the fu
bff0: 74 75 72 65 2c 20 74 68 69 73 20 6f 70 74 69 6f  ture, this optio
c000: 6e 20 6d 61 79 20 61 6c 73 6f 20 64 69 73 61 62  n may also disab
c010: 6c 65 20 6f 74 68 65 72 20 66 6c 6f 61 74 69 6e  le other floatin
c020: 67 20 70 6f 69 6e 74 20 0a 20 20 66 75 6e 63 74  g point .  funct
c030: 69 6f 6e 61 6c 69 74 79 2c 20 66 6f 72 20 65 78  ionality, for ex
c040: 61 6d 70 6c 65 20 74 68 65 20 5b 73 71 6c 69 74  ample the [sqlit
c050: 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65  e3_result_double
c060: 28 29 5d 2c 20 0a 20 20 5b 73 71 6c 69 74 65 33  ()], .  [sqlite3
c070: 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 29 5d 2c  _bind_double()],
c080: 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f   [sqlite3_value_
c090: 64 6f 75 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20  double()] and.  
c0a0: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
c0b0: 64 6f 75 62 6c 65 28 29 5d 20 41 50 49 20 66 75  double()] API fu
c0c0: 6e 63 74 69 6f 6e 73 2e 0a 20 20 3c 2f 70 3e 0a  nctions..  </p>.
c0d0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
c0e0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46  N {SQLITE_OMIT_F
c0f0: 4f 52 45 49 47 4e 5f 4b 45 59 7d 20 7b 0a 20 20  OREIGN_KEY} {.  
c100: 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  If this option i
c110: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20  s defined, then 
c120: 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e  [foreign key con
c130: 73 74 72 61 69 6e 74 5d 20 73 79 6e 74 61 78 20  straint] syntax 
c140: 69 73 0a 20 20 6e 6f 74 20 72 65 63 6f 67 6e 69  is.  not recogni
c150: 7a 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  zed..}..COMPILE_
c160: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
c170: 4d 49 54 5f 47 45 54 5f 54 41 42 4c 45 7d 20 7b  MIT_GET_TABLE} {
c180: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
c190: 61 75 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f  auses support fo
c1a0: 72 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 74  r [sqlite3_get_t
c1b0: 61 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73  able()] and.  [s
c1c0: 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62 6c  qlite3_free_tabl
c1d0: 65 28 29 5d 20 74 6f 20 62 65 20 6f 6d 69 74 74  e()] to be omitt
c1e0: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
c1f0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
c200: 49 54 5f 49 4e 43 52 42 4c 4f 42 7d 20 7b 0a 20  IT_INCRBLOB} {. 
c210: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
c220: 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ses support for 
c230: 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 20 7c 20  [sqlite3_blob | 
c240: 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42  incremental BLOB
c250: 20 49 2f 4f 5d 0a 20 20 74 6f 20 62 65 20 6f 6d   I/O].  to be om
c260: 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  itted..}..COMPIL
c270: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
c280: 5f 4f 4d 49 54 5f 49 4e 54 45 47 52 49 54 59 5f  _OMIT_INTEGRITY_
c290: 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20  CHECK} {.  This 
c2a0: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70  option omits sup
c2b0: 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 69 6e  port for the [in
c2c0: 74 65 67 72 69 74 79 5f 63 68 65 63 6b 20 70 72  tegrity_check pr
c2d0: 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  agma]..}..COMPIL
c2e0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
c2f0: 5f 4f 4d 49 54 5f 4c 49 4b 45 5f 4f 50 54 49 4d  _OMIT_LIKE_OPTIM
c300: 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69  IZATION} {.  Thi
c310: 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65  s option disable
c320: 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66  s the ability of
c330: 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20 69   SQLite to use i
c340: 6e 64 69 63 65 73 20 74 6f 20 68 65 6c 70 0a 20  ndices to help. 
c350: 20 72 65 73 6f 6c 76 65 20 5b 4c 49 4b 45 5d 20   resolve [LIKE] 
c360: 61 6e 64 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61  and [GLOB] opera
c370: 74 6f 72 73 20 69 6e 20 61 20 57 48 45 52 45 20  tors in a WHERE 
c380: 63 6c 61 75 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  clause..}..COMPI
c390: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
c3a0: 45 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45  E_OMIT_LOAD_EXTE
c3b0: 4e 53 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20  NSION} {.  This 
c3c0: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65  option omits the
c3d0: 20 65 6e 74 69 72 65 20 65 78 74 65 6e 73 69 6f   entire extensio
c3e0: 6e 20 6c 6f 61 64 69 6e 67 20 6d 65 63 68 61 6e  n loading mechan
c3f0: 69 73 6d 20 66 72 6f 6d 0a 20 20 53 51 4c 69 74  ism from.  SQLit
c400: 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 5b 73 71  e, including [sq
c410: 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61  lite3_enable_loa
c420: 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 61  d_extension()] a
c430: 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 6f  nd.  [sqlite3_lo
c440: 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20  ad_extension()] 
c450: 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43  interfaces..}..C
c460: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
c470: 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 43 41 4c  QLITE_OMIT_LOCAL
c480: 54 49 4d 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TIME} {.  This o
c490: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20  ption omits the 
c4a0: 22 6c 6f 63 61 6c 74 69 6d 65 22 20 6d 6f 64 69  "localtime" modi
c4b0: 66 69 65 72 20 66 72 6f 6d 20 74 68 65 20 64 61  fier from the da
c4c0: 74 65 20 61 6e 64 20 74 69 6d 65 0a 20 20 66 75  te and time.  fu
c4d0: 6e 63 74 69 6f 6e 73 2e 20 20 54 68 69 73 20 6f  nctions.  This o
c4e0: 70 74 69 6f 6e 20 69 73 20 73 6f 6d 65 74 69 6d  ption is sometim
c4f0: 65 73 20 75 73 65 66 75 6c 20 77 68 65 6e 20 74  es useful when t
c500: 72 79 69 6e 67 20 74 6f 20 63 6f 6d 70 69 6c 65  rying to compile
c510: 0a 20 20 74 68 65 20 64 61 74 65 20 61 6e 64 20  .  the date and 
c520: 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20 6f  time functions o
c530: 6e 20 61 20 70 6c 61 74 66 6f 72 6d 20 74 68 61  n a platform tha
c540: 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f  t does not suppo
c550: 72 74 20 74 68 65 0a 20 20 63 6f 6e 63 65 70 74  rt the.  concept
c560: 20 6f 66 20 6c 6f 63 61 6c 20 74 69 6d 65 2e 0a   of local time..
c570: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
c580: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  N {SQLITE_OMIT_L
c590: 4f 4f 4b 41 53 49 44 45 7d 20 7b 0a 20 20 54 68  OOKASIDE} {.  Th
c5a0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
c5b0: 74 68 65 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d  the [lookaside m
c5c0: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d  emory allocator]
c5d0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
c5e0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
c5f0: 5f 4d 45 4d 4f 52 59 44 42 7d 20 7b 0a 20 20 57  _MEMORYDB} {.  W
c600: 68 65 6e 20 74 68 69 73 20 69 73 20 64 65 66 69  hen this is defi
c610: 6e 65 64 2c 20 74 68 65 20 6c 69 62 72 61 72 79  ned, the library
c620: 20 64 6f 65 73 20 6e 6f 74 20 72 65 73 70 65 63   does not respec
c630: 74 20 74 68 65 20 73 70 65 63 69 61 6c 20 64 61  t the special da
c640: 74 61 62 61 73 65 0a 20 20 6e 61 6d 65 20 22 3a  tabase.  name ":
c650: 6d 65 6d 6f 72 79 3a 22 20 28 6e 6f 72 6d 61 6c  memory:" (normal
c660: 6c 79 20 75 73 65 64 20 74 6f 20 63 72 65 61 74  ly used to creat
c670: 65 20 61 6e 20 5b 69 6e 2d 6d 65 6d 6f 72 79 20  e an [in-memory 
c680: 64 61 74 61 62 61 73 65 5d 29 2e 20 49 66 20 0a  database]). If .
c690: 20 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 69 73 20    ":memory:" is 
c6a0: 70 61 73 73 65 64 20 74 6f 20 5b 73 71 6c 69 74  passed to [sqlit
c6b0: 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c  e3_open()], [sql
c6c0: 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d 2c 20  ite3_open16()], 
c6d0: 6f 72 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f 70  or.  [sqlite3_op
c6e0: 65 6e 5f 76 32 28 29 5d 2c 20 61 20 66 69 6c 65  en_v2()], a file
c6f0: 20 77 69 74 68 20 74 68 69 73 20 6e 61 6d 65 20   with this name 
c700: 77 69 6c 6c 20 62 65 20 0a 20 20 6f 70 65 6e 65  will be .  opene
c710: 64 20 6f 72 20 63 72 65 61 74 65 64 2e 0a 7d 0a  d or created..}.
c720: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
c730: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4f 52 5f  {SQLITE_OMIT_OR_
c740: 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a  OPTIMIZATION} {.
c750: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69    This option di
c760: 73 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c 69  sables the abili
c770: 74 79 20 6f 66 20 53 51 4c 69 74 65 20 74 6f 20  ty of SQLite to 
c780: 75 73 65 20 61 6e 20 69 6e 64 65 78 20 74 6f 67  use an index tog
c790: 65 74 68 65 72 0a 20 20 77 69 74 68 20 74 65 72  ether.  with ter
c7a0: 6d 73 20 6f 66 20 61 20 57 48 45 52 45 20 63 6c  ms of a WHERE cl
c7b0: 61 75 73 65 20 63 6f 6e 6e 65 63 74 65 64 20 62  ause connected b
c7c0: 79 20 74 68 65 20 4f 52 20 6f 70 65 72 61 74 6f  y the OR operato
c7d0: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
c7e0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
c7f0: 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53 7d  T_PAGER_PRAGMAS}
c800: 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
c810: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
c820: 70 72 61 67 6d 61 73 20 72 65 6c 61 74 65 64 20  pragmas related 
c830: 74 6f 20 74 68 65 20 70 61 67 65 72 20 73 75 62  to the pager sub
c840: 73 79 73 74 65 6d 20 66 72 6f 6d 20 0a 20 20 74  system from .  t
c850: 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d  he build..}..COM
c860: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
c870: 49 54 45 5f 4f 4d 49 54 5f 50 52 41 47 4d 41 7d  ITE_OMIT_PRAGMA}
c880: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
c890: 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74   is used to omit
c8a0: 20 74 68 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f   the [PRAGMA] co
c8b0: 6d 6d 61 6e 64 0a 20 20 66 72 6f 6d 20 74 68 65  mmand.  from the
c8c0: 20 6c 69 62 72 61 72 79 2e 20 4e 6f 74 65 20 74   library. Note t
c8d0: 68 61 74 20 69 74 20 69 73 20 75 73 65 66 75 6c  hat it is useful
c8e0: 20 74 6f 20 64 65 66 69 6e 65 20 74 68 65 20 6d   to define the m
c8f0: 61 63 72 6f 73 20 74 68 61 74 20 6f 6d 69 74 0a  acros that omit.
c900: 20 20 73 70 65 63 69 66 69 63 20 70 72 61 67 6d    specific pragm
c910: 61 73 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74  as in addition t
c920: 6f 20 74 68 69 73 2c 20 61 73 20 74 68 65 79 20  o this, as they 
c930: 6d 61 79 20 61 6c 73 6f 20 72 65 6d 6f 76 65 20  may also remove 
c940: 73 75 70 70 6f 72 74 69 6e 67 20 63 6f 64 65 0a  supporting code.
c950: 20 20 69 6e 20 6f 74 68 65 72 20 73 75 62 2d 73    in other sub-s
c960: 79 73 74 65 6d 73 2e 20 54 68 69 73 20 6d 61 63  ystems. This mac
c970: 72 6f 20 72 65 6d 6f 76 65 73 20 74 68 65 20 5b  ro removes the [
c980: 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 20  PRAGMA] command 
c990: 6f 6e 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  only..}..COMPILE
c9a0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
c9b0: 4f 4d 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41  OMIT_PROGRESS_CA
c9c0: 4c 4c 42 41 43 4b 7d 20 7b 0a 20 20 54 68 69 73  LLBACK} {.  This
c9d0: 20 6f 70 74 69 6f 6e 20 6d 61 79 20 62 65 20 64   option may be d
c9e0: 65 66 69 6e 65 64 20 74 6f 20 6f 6d 69 74 20 74  efined to omit t
c9f0: 68 65 20 63 61 70 61 62 69 6c 69 74 79 20 74 6f  he capability to
ca00: 20 69 73 73 75 65 20 22 70 72 6f 67 72 65 73 73   issue "progress
ca10: 22 20 0a 20 20 63 61 6c 6c 62 61 63 6b 73 20 64  " .  callbacks d
ca20: 75 72 69 6e 67 20 6c 6f 6e 67 2d 72 75 6e 6e 69  uring long-runni
ca30: 6e 67 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ng SQL statement
ca40: 73 2e 20 54 68 65 20 0a 20 20 5b 73 71 6c 69 74  s. The .  [sqlit
ca50: 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e 64  e3_progress_hand
ca60: 6c 65 72 28 29 5d 0a 20 20 41 50 49 20 66 75 6e  ler()].  API fun
ca70: 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72 65  ction is not pre
ca80: 73 65 6e 74 20 69 6e 20 74 68 65 20 6c 69 62 72  sent in the libr
ca90: 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ary..}..COMPILE_
caa0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
cab0: 4d 49 54 5f 51 55 49 43 4b 42 41 4c 41 4e 43 45  MIT_QUICKBALANCE
cac0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
cad0: 6e 20 6f 6d 69 74 73 20 61 6e 20 61 6c 74 65 72  n omits an alter
cae0: 6e 61 74 69 76 65 2c 20 66 61 73 74 65 72 20 42  native, faster B
caf0: 2d 54 72 65 65 20 62 61 6c 61 6e 63 69 6e 67 20  -Tree balancing 
cb00: 72 6f 75 74 69 6e 65 2e 0a 20 20 55 73 69 6e 67  routine..  Using
cb10: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 6b   this option mak
cb20: 65 73 20 53 51 4c 69 74 65 20 73 6c 69 67 68 74  es SQLite slight
cb30: 6c 79 20 73 6d 61 6c 6c 65 72 20 61 74 20 74 68  ly smaller at th
cb40: 65 20 65 78 70 65 6e 73 65 20 6f 66 0a 20 20 6d  e expense of.  m
cb50: 61 6b 69 6e 67 20 69 74 20 72 75 6e 20 73 6c 69  aking it run sli
cb60: 67 68 74 6c 79 20 73 6c 6f 77 65 72 2e 0a 7d 0a  ghtly slower..}.
cb70: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
cb80: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 52 45 49  {SQLITE_OMIT_REI
cb90: 4e 44 45 58 7d 20 7b 0a 20 20 57 68 65 6e 20 74  NDEX} {.  When t
cba0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
cbb0: 66 69 6e 65 64 2c 20 74 68 65 20 5b 52 45 49 4e  fined, the [REIN
cbc0: 44 45 58 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20 69  DEX].  command i
cbd0: 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69  s not included i
cbe0: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 20  n the library.. 
cbf0: 20 45 78 65 63 75 74 69 6e 67 20 61 20 5b 52 45   Executing a [RE
cc00: 49 4e 44 45 58 5d 20 73 74 61 74 65 6d 65 6e 74  INDEX] statement
cc10: 20 63 61 75 73 65 73 20 0a 20 20 61 20 70 61 72   causes .  a par
cc20: 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d  se error..}..COM
cc30: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
cc40: 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f  ITE_OMIT_SCHEMA_
cc50: 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66  PRAGMAS} {.  Def
cc60: 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f  ining this optio
cc70: 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20  n omits pragmas 
cc80: 66 6f 72 20 71 75 65 72 79 69 6e 67 20 74 68 65  for querying the
cc90: 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61   database schema
cca0: 20 66 72 6f 6d 20 0a 20 20 74 68 65 20 62 75 69   from .  the bui
ccb0: 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ld..}..COMPILE_O
ccc0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
ccd0: 49 54 5f 53 43 48 45 4d 41 5f 56 45 52 53 49 4f  IT_SCHEMA_VERSIO
cce0: 4e 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44  N_PRAGMAS} {.  D
ccf0: 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74  efining this opt
cd00: 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d 61  ion omits pragma
cd10: 73 20 66 6f 72 20 71 75 65 72 79 69 6e 67 20 61  s for querying a
cd20: 6e 64 20 6d 6f 64 69 66 79 69 6e 67 20 74 68 65  nd modifying the
cd30: 20 0a 20 20 64 61 74 61 62 61 73 65 20 73 63 68   .  database sch
cd40: 65 6d 61 20 76 65 72 73 69 6f 6e 20 61 6e 64 20  ema version and 
cd50: 75 73 65 72 20 76 65 72 73 69 6f 6e 20 66 72 6f  user version fro
cd60: 6d 20 74 68 65 20 62 75 69 6c 64 2e 20 53 70 65  m the build. Spe
cd70: 63 69 66 69 63 61 6c 6c 79 2c 20 74 68 65 20 0a  cifically, the .
cd80: 20 20 5b 73 63 68 65 6d 61 5f 76 65 72 73 69 6f    [schema_versio
cd90: 6e 5d 20 61 6e 64 20 5b 75 73 65 72 5f 76 65 72  n] and [user_ver
cda0: 73 69 6f 6e 5d 20 50 52 41 47 4d 41 73 20 61 72  sion] PRAGMAs ar
cdb0: 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f  e omitted..}..CO
cdc0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
cdd0: 4c 49 54 45 5f 4f 4d 49 54 5f 53 48 41 52 45 44  LITE_OMIT_SHARED
cde0: 5f 43 41 43 48 45 7d 20 7b 0a 20 20 54 68 69 73  _CACHE} {.  This
cdf0: 20 6f 70 74 69 6f 6e 20 62 75 69 6c 64 73 20 53   option builds S
ce00: 51 4c 69 74 65 20 77 69 74 68 6f 75 74 20 73 75  QLite without su
ce10: 70 70 6f 72 74 20 66 6f 72 20 73 68 61 72 65 64  pport for shared
ce20: 2d 63 61 63 68 65 20 6d 6f 64 65 2e 0a 20 20 54  -cache mode..  T
ce30: 68 65 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62  he [sqlite3_enab
ce40: 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65 28  le_shared_cache(
ce50: 29 5d 20 69 73 20 6f 6d 69 74 74 65 64 20 61 6c  )] is omitted al
ce60: 6f 6e 67 20 77 69 74 68 20 61 20 66 61 69 72 0a  ong with a fair.
ce70: 20 20 61 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69    amount of logi
ce80: 63 20 77 69 74 68 69 6e 20 74 68 65 20 42 2d 54  c within the B-T
ce90: 72 65 65 20 73 75 62 73 79 73 74 65 6d 20 61 73  ree subsystem as
cea0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 73 68  sociated with sh
ceb0: 61 72 65 64 0a 20 20 63 61 63 68 65 20 6d 61 6e  ared.  cache man
cec0: 61 67 65 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50  agement..}..COMP
ced0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
cee0: 54 45 5f 4f 4d 49 54 5f 53 55 42 51 55 45 52 59  TE_OMIT_SUBQUERY
cef0: 7d 20 7b 0a 20 20 49 66 20 64 65 66 69 6e 65 64  } {.  If defined
cf00: 2c 20 73 75 70 70 6f 72 74 20 66 6f 72 20 73 75  , support for su
cf10: 62 2d 73 65 6c 65 63 74 73 20 61 6e 64 20 74 68  b-selects and th
cf20: 65 20 49 4e 28 29 20 6f 70 65 72 61 74 6f 72 20  e IN() operator 
cf30: 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a  are omitted..}..
cf40: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
cf50: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 43 4c 5f  SQLITE_OMIT_TCL_
cf60: 56 41 52 49 41 42 4c 45 7d 20 7b 0a 20 20 49 66  VARIABLE} {.  If
cf70: 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20 64   this macro is d
cf80: 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 74 68 65  efined, then the
cf90: 20 73 70 65 63 69 61 6c 20 22 24 3c 76 61 72 69   special "$<vari
cfa0: 61 62 6c 65 2d 6e 61 6d 65 3e 22 20 73 79 6e 74  able-name>" synt
cfb0: 61 78 0a 20 20 75 73 65 64 20 74 6f 20 61 75 74  ax.  used to aut
cfc0: 6f 6d 61 74 69 63 61 6c 6c 79 20 62 69 6e 64 20  omatically bind 
cfd0: 53 51 4c 20 76 61 72 69 61 62 6c 65 73 20 74 6f  SQL variables to
cfe0: 20 54 43 4c 20 76 61 72 69 61 62 6c 65 73 20 69   TCL variables i
cff0: 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f  s omitted..}..CO
d000: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
d010: 4c 49 54 45 5f 4f 4d 49 54 5f 54 45 4d 50 44 42  LITE_OMIT_TEMPDB
d020: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
d030: 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20  n omits support 
d040: 66 6f 72 20 54 45 4d 50 20 6f 72 20 54 45 4d 50  for TEMP or TEMP
d050: 4f 52 41 52 59 20 74 61 62 6c 65 73 2e 0a 7d 0a  ORARY tables..}.
d060: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
d070: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 41  {SQLITE_OMIT_TRA
d080: 43 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CE} {.  This opt
d090: 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72  ion omits suppor
d0a0: 74 20 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74  t for the [sqlit
d0b0: 65 33 5f 70 72 6f 66 69 6c 65 28 29 5d 20 61 6e  e3_profile()] an
d0c0: 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61  d.  [sqlite3_tra
d0d0: 63 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  ce()] interfaces
d0e0: 20 61 6e 64 20 74 68 65 69 72 20 61 73 73 6f 63   and their assoc
d0f0: 69 61 74 65 64 20 6c 6f 67 69 63 2e 0a 7d 0a 0a  iated logic..}..
d100: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
d110: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 49 47  SQLITE_OMIT_TRIG
d120: 47 45 52 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  GER} {.  Definin
d130: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d  g this option om
d140: 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
d150: 54 52 49 47 47 45 52 20 6f 62 6a 65 63 74 73 2e  TRIGGER objects.
d160: 20 4e 65 69 74 68 65 72 20 74 68 65 20 0a 20 20   Neither the .  
d170: 5b 43 52 45 41 54 45 20 54 52 49 47 47 45 52 5d  [CREATE TRIGGER]
d180: 20 6f 72 20 5b 44 52 4f 50 20 54 52 49 47 47 45   or [DROP TRIGGE
d190: 52 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73 20 61 72  R].  commands ar
d1a0: 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74  e available in t
d1b0: 68 69 73 20 63 61 73 65 2c 20 61 6e 64 20 61 74  his case, and at
d1c0: 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65 63  tempting to exec
d1d0: 75 74 65 0a 20 20 65 69 74 68 65 72 20 77 69 6c  ute.  either wil
d1e0: 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 20 70 61  l result in a pa
d1f0: 72 73 65 20 65 72 72 6f 72 2e 0a 20 20 54 68 69  rse error..  Thi
d200: 73 20 6f 70 74 69 6f 6e 20 61 6c 73 6f 20 64 69  s option also di
d210: 73 61 62 6c 65 73 20 65 6e 66 6f 72 63 65 6d 65  sables enforceme
d220: 6e 74 20 6f 66 20 5b 66 6f 72 65 69 67 6e 20 6b  nt of [foreign k
d230: 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 2c  ey constraints],
d240: 0a 20 20 73 69 6e 63 65 20 74 68 65 20 63 6f 64  .  since the cod
d250: 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74  e that implement
d260: 73 20 74 72 69 67 67 65 72 73 20 61 6e 64 20 77  s triggers and w
d270: 68 69 63 68 20 69 73 20 6f 6d 69 74 74 65 64 20  hich is omitted 
d280: 62 79 20 74 68 69 73 0a 20 20 6f 70 74 69 6f 6e  by this.  option
d290: 20 69 73 20 61 6c 73 6f 20 75 73 65 64 20 74 6f   is also used to
d2a0: 20 69 6d 70 6c 65 6d 65 6e 74 20 5b 66 6f 72 65   implement [fore
d2b0: 69 67 6e 20 6b 65 79 20 61 63 74 69 6f 6e 73 5d  ign key actions]
d2c0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
d2d0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
d2e0: 5f 54 52 55 4e 43 41 54 45 5f 4f 50 54 49 4d 49  _TRUNCATE_OPTIMI
d2f0: 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 41 20 64 65  ZATION} {.  A de
d300: 66 61 75 6c 74 20 62 75 69 6c 64 20 6f 66 20 53  fault build of S
d310: 51 4c 69 74 65 2c 20 69 66 20 61 20 5b 44 45 4c  QLite, if a [DEL
d320: 45 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 20 68  ETE] statement h
d330: 61 73 20 6e 6f 20 57 48 45 52 45 20 63 6c 61 75  as no WHERE clau
d340: 73 65 0a 20 20 61 6e 64 20 6f 70 65 72 61 74 65  se.  and operate
d350: 73 20 6f 6e 20 61 20 74 61 62 6c 65 20 77 69 74  s on a table wit
d360: 68 20 6e 6f 20 74 72 69 67 67 65 72 73 2c 20 61  h no triggers, a
d370: 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 6f  n optimization o
d380: 63 63 75 72 73 20 74 68 61 74 0a 20 20 63 61 75  ccurs that.  cau
d390: 73 65 73 20 74 68 65 20 44 45 4c 45 54 45 20 74  ses the DELETE t
d3a0: 6f 20 6f 63 63 75 72 20 62 79 20 64 72 6f 70 70  o occur by dropp
d3b0: 69 6e 67 20 61 6e 64 20 72 65 63 72 65 61 74 69  ing and recreati
d3c0: 6e 67 20 74 68 65 20 74 61 62 6c 65 2e 20 20 0a  ng the table.  .
d3d0: 20 20 44 72 6f 70 70 69 6e 67 20 61 6e 64 20 72    Dropping and r
d3e0: 65 63 72 65 61 74 69 6e 67 20 61 20 74 61 62 6c  ecreating a tabl
d3f0: 65 20 69 73 20 75 73 75 61 6c 6c 79 20 6d 75 63  e is usually muc
d400: 68 20 66 61 73 74 65 72 20 74 68 61 6e 20 64 65  h faster than de
d410: 6c 65 74 69 6e 67 0a 20 20 74 68 65 20 74 61 62  leting.  the tab
d420: 6c 65 20 63 6f 6e 74 65 6e 74 20 72 6f 77 20 62  le content row b
d430: 79 20 72 6f 77 2e 20 20 54 68 69 73 20 69 73 20  y row.  This is 
d440: 74 68 65 20 22 74 72 75 6e 63 61 74 65 20 6f 70  the "truncate op
d450: 74 69 6d 69 7a 61 74 69 6f 6e 22 2e 0a 7d 0a 0a  timization"..}..
d460: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
d470: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 55 54 46 31  SQLITE_OMIT_UTF1
d480: 36 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  6} {.  This macr
d490: 6f 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69  o is used to omi
d4a0: 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 55 54  t support for UT
d4b0: 46 31 36 20 74 65 78 74 20 65 6e 63 6f 64 69 6e  F16 text encodin
d4c0: 67 2e 20 57 68 65 6e 20 74 68 69 73 20 69 73 0a  g. When this is.
d4d0: 20 20 64 65 66 69 6e 65 64 20 61 6c 6c 20 41 50    defined all AP
d4e0: 49 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74  I functions that
d4f0: 20 72 65 74 75 72 6e 20 6f 72 20 61 63 63 65 70   return or accep
d500: 74 20 55 54 46 31 36 20 65 6e 63 6f 64 65 64 20  t UTF16 encoded 
d510: 74 65 78 74 20 61 72 65 0a 20 20 75 6e 61 76 61  text are.  unava
d520: 69 6c 61 62 6c 65 2e 20 54 68 65 73 65 20 66 75  ilable. These fu
d530: 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 69  nctions can be i
d540: 64 65 6e 74 69 66 69 65 64 20 62 79 20 74 68 65  dentified by the
d550: 20 66 61 63 74 20 74 68 61 74 20 74 68 65 79 20   fact that they 
d560: 65 6e 64 0a 20 20 77 69 74 68 20 27 31 36 27 2c  end.  with '16',
d570: 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 5b 73 71   for example [sq
d580: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28  lite3_prepare16(
d590: 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  )], [sqlite3_col
d5a0: 75 6d 6e 5f 74 65 78 74 31 36 28 29 5d 20 61 6e  umn_text16()] an
d5b0: 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e  d.  [sqlite3_bin
d5c0: 64 5f 74 65 78 74 31 36 28 29 5d 2e 0a 7d 0a 0a  d_text16()]..}..
d5d0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
d5e0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 41 43 55  SQLITE_OMIT_VACU
d5f0: 55 4d 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  UM} {.  When thi
d600: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
d610: 6e 65 64 2c 20 74 68 65 20 5b 56 41 43 55 55 4d  ned, the [VACUUM
d620: 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e  ].  command is n
d630: 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74  ot included in t
d640: 68 65 20 6c 69 62 72 61 72 79 2e 0a 20 20 45 78  he library..  Ex
d650: 65 63 75 74 69 6e 67 20 61 20 5b 56 41 43 55 55  ecuting a [VACUU
d660: 4d 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75  M] statement cau
d670: 73 65 73 20 0a 20 20 61 20 70 61 72 73 65 20 65  ses .  a parse e
d680: 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rror..}..COMPILE
d690: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
d6a0: 4f 4d 49 54 5f 56 49 45 57 7d 20 7b 0a 20 20 44  OMIT_VIEW} {.  D
d6b0: 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74  efining this opt
d6c0: 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72  ion omits suppor
d6d0: 74 20 66 6f 72 20 56 49 45 57 20 6f 62 6a 65 63  t for VIEW objec
d6e0: 74 73 2e 20 4e 65 69 74 68 65 72 20 74 68 65 20  ts. Neither the 
d6f0: 0a 20 20 5b 43 52 45 41 54 45 20 56 49 45 57 5d  .  [CREATE VIEW]
d700: 20 6e 6f 72 20 74 68 65 20 5b 44 52 4f 50 20 56   nor the [DROP V
d710: 49 45 57 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73 20  IEW].  commands 
d720: 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e  are available in
d730: 20 74 68 69 73 20 63 61 73 65 2c 20 61 6e 64 0a   this case, and.
d740: 20 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20    attempting to 
d750: 65 78 65 63 75 74 65 20 65 69 74 68 65 72 20 77  execute either w
d760: 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 20  ill result in a 
d770: 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20  parse error...  
d780: 57 41 52 4e 49 4e 47 3a 20 49 66 20 74 68 69 73  WARNING: If this
d790: 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65   macro is define
d7a0: 64 2c 20 69 74 20 77 69 6c 6c 20 6e 6f 74 20 62  d, it will not b
d7b0: 65 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 6f 70  e possible to op
d7c0: 65 6e 20 61 20 64 61 74 61 62 61 73 65 0a 20 20  en a database.  
d7d0: 66 6f 72 20 77 68 69 63 68 20 74 68 65 20 73 63  for which the sc
d7e0: 68 65 6d 61 20 63 6f 6e 74 61 69 6e 73 20 56 49  hema contains VI
d7f0: 45 57 20 6f 62 6a 65 63 74 73 2e 20 0a 7d 0a 0a  EW objects. .}..
d800: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
d810: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 52 54  SQLITE_OMIT_VIRT
d820: 55 41 4c 54 41 42 4c 45 7d 20 7b 0a 20 20 54 68  UALTABLE} {.  Th
d830: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
d840: 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20  support for the 
d850: 5b 73 71 6c 69 74 65 33 5f 76 74 61 62 20 7c 20  [sqlite3_vtab | 
d860: 56 69 72 74 75 61 6c 20 54 61 62 6c 65 5d 0a 20  Virtual Table]. 
d870: 20 6d 65 63 68 61 6e 69 73 6d 20 69 6e 20 53 51   mechanism in SQ
d880: 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  Lite..}..COMPILE
d890: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
d8a0: 4f 4d 49 54 5f 57 41 4c 7d 20 7b 0a 20 20 54 68  OMIT_WAL} {.  Th
d8b0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
d8c0: 74 68 65 20 22 5b 77 72 69 74 65 2d 61 68 65 61  the "[write-ahea
d8d0: 64 20 6c 6f 67 5d 22 20 28 61 2e 6b 2e 61 2e 20  d log]" (a.k.a. 
d8e0: 22 5b 57 41 4c 5d 22 29 20 63 61 70 61 62 69 6c  "[WAL]") capabil
d8f0: 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ity..}..COMPILE_
d900: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
d910: 4d 49 54 5f 57 53 44 7d 20 7b 0a 20 20 54 68 69  MIT_WSD} {.  Thi
d920: 73 20 6f 70 74 69 6f 6e 20 62 75 69 6c 64 73 20  s option builds 
d930: 61 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  a version of the
d940: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
d950: 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 6e 6f  that contains no
d960: 0a 20 20 57 72 69 74 61 62 6c 65 20 53 74 61 74  .  Writable Stat
d970: 69 63 20 44 61 74 61 20 28 57 53 44 29 2e 20 20  ic Data (WSD).  
d980: 57 53 44 20 69 73 20 67 6c 6f 62 61 6c 20 76 61  WSD is global va
d990: 72 69 61 62 6c 65 73 20 61 6e 64 2f 6f 72 20 73  riables and/or s
d9a0: 74 61 74 69 63 0a 20 20 76 61 72 69 61 62 6c 65  tatic.  variable
d9b0: 73 2e 20 20 53 6f 6d 65 20 70 6c 61 74 66 6f 72  s.  Some platfor
d9c0: 6d 73 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72  ms do not suppor
d9d0: 74 20 57 53 44 2c 20 61 6e 64 20 74 68 69 73 20  t WSD, and this 
d9e0: 6f 70 74 69 6f 6e 20 69 73 20 6e 65 63 65 73 73  option is necess
d9f0: 61 72 79 0a 20 20 69 6e 20 6f 72 64 65 72 20 66  ary.  in order f
da00: 6f 72 20 53 51 4c 69 74 65 20 74 6f 20 77 6f 72  or SQLite to wor
da10: 6b 20 74 68 6f 73 65 20 70 6c 61 74 66 6f 72 6d  k those platform
da20: 73 2e 20 20 0a 0a 20 20 55 6e 6c 69 6b 65 20 6f  s.  ..  Unlike o
da30: 74 68 65 72 20 4f 4d 49 54 20 6f 70 74 69 6f 6e  ther OMIT option
da40: 73 20 77 68 69 63 68 20 6d 61 6b 65 20 74 68 65  s which make the
da50: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
da60: 73 6d 61 6c 6c 65 72 2c 0a 20 20 74 68 69 73 20  smaller,.  this 
da70: 6f 70 74 69 6f 6e 20 61 63 74 75 61 6c 6c 79 20  option actually 
da80: 69 6e 63 72 65 61 73 65 73 20 74 68 65 20 73 69  increases the si
da90: 7a 65 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64  ze of SQLite and
daa0: 20 6d 61 6b 65 73 20 69 74 20 72 75 6e 0a 20 20   makes it run.  
dab0: 61 20 6c 69 74 74 6c 65 20 73 6c 6f 77 65 72 2e  a little slower.
dac0: 20 20 4f 6e 6c 79 20 75 73 65 20 74 68 69 73 20    Only use this 
dad0: 6f 70 74 69 6f 6e 20 69 66 20 53 51 4c 69 74 65  option if SQLite
dae0: 20 69 73 20 62 65 69 6e 67 20 62 75 69 6c 74 20   is being built 
daf0: 66 6f 72 20 61 6e 0a 20 20 65 6d 62 65 64 64 65  for an.  embedde
db00: 64 20 74 61 72 67 65 74 20 74 68 61 74 20 64 6f  d target that do
db10: 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 57  es not support W
db20: 53 44 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  SD..}..COMPILE_O
db30: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
db40: 49 54 5f 58 46 45 52 5f 4f 50 54 7d 20 7b 0a 20  IT_XFER_OPT} {. 
db50: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
db60: 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 6f  ts support for o
db70: 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 74 68 61  ptimizations tha
db80: 74 20 68 65 6c 70 20 73 74 61 74 65 6d 65 6e 74  t help statement
db90: 73 0a 20 20 6f 66 20 74 68 65 20 66 6f 72 6d 20  s.  of the form 
dba0: 22 49 4e 53 45 52 54 20 49 4e 54 4f 20 2e 2e 2e  "INSERT INTO ...
dbb0: 20 53 45 4c 45 43 54 20 2e 2e 2e 22 20 72 75 6e   SELECT ..." run
dbc0: 20 66 61 73 74 65 72 2e 0a 7d 0a 0a 43 4f 4d 50   faster..}..COMP
dbd0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
dbe0: 54 45 5f 5a 45 52 4f 5f 4d 41 4c 4c 4f 43 7d 20  TE_ZERO_MALLOC} 
dbf0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
dc00: 6f 6d 69 74 73 20 62 6f 74 68 20 74 68 65 20 5b  omits both the [
dc10: 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61  default memory a
dc20: 6c 6c 6f 63 61 74 6f 72 5d 20 61 6e 64 20 74 68  llocator] and th
dc30: 65 0a 20 20 5b 64 65 62 75 67 67 69 6e 67 20 6d  e.  [debugging m
dc40: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d  emory allocator]
dc50: 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 20   from the build 
dc60: 61 6e 64 20 73 75 62 73 74 69 74 75 74 65 73 20  and substitutes 
dc70: 61 20 73 74 75 62 0a 20 20 6d 65 6d 6f 72 79 20  a stub.  memory 
dc80: 61 6c 6c 6f 63 61 74 6f 72 20 74 68 61 74 20 61  allocator that a
dc90: 6c 77 61 79 73 20 66 61 69 6c 73 2e 20 20 53 51  lways fails.  SQ
dca0: 4c 69 74 65 20 77 69 6c 6c 20 6e 6f 74 20 72 75  Lite will not ru
dcb0: 6e 20 77 69 74 68 20 74 68 69 73 0a 20 20 73 74  n with this.  st
dcc0: 75 62 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ub memory alloca
dcd0: 74 6f 72 20 73 69 6e 63 65 20 69 74 20 77 69 6c  tor since it wil
dce0: 6c 20 62 65 20 75 6e 61 62 6c 65 20 74 6f 20 61  l be unable to a
dcf0: 6c 6c 6f 63 61 74 65 20 6d 65 6d 6f 72 79 2e 20  llocate memory. 
dd00: 20 42 75 74 0a 20 20 74 68 69 73 20 73 74 75 62   But.  this stub
dd10: 20 63 61 6e 20 62 65 20 72 65 70 6c 61 63 65 64   can be replaced
dd20: 20 61 74 20 73 74 61 72 74 2d 74 69 6d 65 20 75   at start-time u
dd30: 73 69 6e 67 0a 20 20 5b 73 71 6c 69 74 65 33 5f  sing.  [sqlite3_
dd40: 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f  config]([SQLITE_
dd50: 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 2c 2e  CONFIG_MALLOC],.
dd60: 2e 2e 29 20 6f 72 0a 20 20 5b 73 71 6c 69 74 65  ..) or.  [sqlite
dd70: 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54  3_config]([SQLIT
dd80: 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 2c 2e  E_CONFIG_HEAP],.
dd90: 2e 2e 29 2e 0a 20 20 53 6f 20 74 68 65 20 6e 65  ..)..  So the ne
dda0: 74 20 65 66 66 65 63 74 20 6f 66 20 74 68 69 73  t effect of this
ddb0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
ddc0: 74 69 6f 6e 20 69 73 20 74 68 61 74 20 69 74 20  tion is that it 
ddd0: 61 6c 6c 6f 77 73 20 53 51 4c 69 74 65 0a 20 20  allows SQLite.  
dde0: 74 6f 20 62 65 20 63 6f 6d 70 69 6c 65 64 20 61  to be compiled a
ddf0: 6e 64 20 6c 69 6e 6b 65 64 20 61 67 61 69 6e 73  nd linked agains
de00: 74 20 61 20 73 79 73 74 65 6d 20 6c 69 62 72 61  t a system libra
de10: 72 79 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74  ry that does not
de20: 20 73 75 70 70 6f 72 74 0a 20 20 6d 61 6c 6c 6f   support.  mallo
de30: 63 28 29 2c 20 66 72 65 65 28 29 2c 20 61 6e 64  c(), free(), and
de40: 2f 6f 72 20 72 65 61 6c 6c 6f 63 28 29 2e 0a 7d  /or realloc()..}
de50: 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65  ..</tcl>.<a name
de60: 3d 22 64 65 62 75 67 6f 70 74 69 6f 6e 73 22 3e  ="debugoptions">
de70: 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 38 20 41 6e 61  </a>.<h2>1.8 Ana
de80: 6c 79 73 69 73 20 61 6e 64 20 44 65 62 75 67 67  lysis and Debugg
de90: 69 6e 67 20 4f 70 74 69 6f 6e 73 3c 2f 68 32 3e  ing Options</h2>
dea0: 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f  .<tcl>..COMPILE_
deb0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
dec0: 45 42 55 47 7d 20 7b 0a 20 20 54 68 65 20 53 51  EBUG} {.  The SQ
ded0: 4c 69 74 65 20 73 6f 75 72 63 65 20 63 6f 64 65  Lite source code
dee0: 20 63 6f 6e 74 61 69 6e 73 20 6c 69 74 65 72 61   contains litera
def0: 6c 6c 79 20 74 68 6f 75 73 61 6e 64 73 20 6f 66  lly thousands of
df00: 20 61 73 73 65 72 74 28 29 20 73 74 61 74 65 6d   assert() statem
df10: 65 6e 74 73 0a 20 20 75 73 65 64 20 74 6f 20 76  ents.  used to v
df20: 65 72 69 66 79 20 69 6e 74 65 72 6e 61 6c 20 61  erify internal a
df30: 73 73 75 6d 70 74 69 6f 6e 73 20 61 6e 64 20 73  ssumptions and s
df40: 75 62 72 6f 75 74 69 6e 65 20 70 72 65 63 6f 6e  ubroutine precon
df50: 64 69 74 69 6f 6e 73 20 61 6e 64 0a 20 20 70 6f  ditions and.  po
df60: 73 74 63 6f 6e 64 69 74 69 6f 6e 73 2e 20 20 54  stconditions.  T
df70: 68 65 73 65 20 61 73 73 65 72 74 28 29 20 73 74  hese assert() st
df80: 61 74 65 6d 65 6e 74 73 20 61 72 65 20 6e 6f 72  atements are nor
df90: 6d 61 6c 6c 79 20 74 75 72 6e 65 64 20 6f 66 66  mally turned off
dfa0: 0a 20 20 28 74 68 65 79 20 67 65 6e 65 72 61 74  .  (they generat
dfb0: 65 20 6e 6f 20 63 6f 64 65 29 20 73 69 6e 63 65  e no code) since
dfc0: 20 74 75 72 6e 69 6e 67 20 74 68 65 6d 20 6f 6e   turning them on
dfd0: 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20 72 75   makes SQLite ru
dfe0: 6e 20 61 70 70 72 6f 78 69 6d 61 74 65 6c 79 0a  n approximately.
dff0: 20 20 74 68 72 65 65 20 74 69 6d 65 73 20 73 6c    three times sl
e000: 6f 77 65 72 2e 20 20 42 75 74 20 66 6f 72 20 74  ower.  But for t
e010: 65 73 74 69 6e 67 20 61 6e 64 20 61 6e 61 6c 79  esting and analy
e020: 73 69 73 2c 20 69 74 20 69 73 20 75 73 65 66 75  sis, it is usefu
e030: 6c 20 74 6f 20 74 75 72 6e 0a 20 20 74 68 65 20  l to turn.  the 
e040: 61 73 73 65 72 74 28 29 20 73 74 61 74 65 6d 65  assert() stateme
e050: 6e 74 73 20 6f 6e 2e 20 20 54 68 65 20 53 51 4c  nts on.  The SQL
e060: 49 54 45 5f 44 45 42 55 47 20 63 6f 6d 70 69 6c  ITE_DEBUG compil
e070: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 64 6f  e-time option do
e080: 65 73 20 74 68 69 73 2e 0a 20 20 3c 70 3e 53 51  es this..  <p>SQ
e090: 4c 49 54 45 5f 44 45 42 55 47 20 61 6c 73 6f 20  LITE_DEBUG also 
e0a0: 65 6e 61 62 6c 65 73 20 73 6f 6d 65 20 6f 74 68  enables some oth
e0b0: 65 72 20 64 65 62 75 67 67 69 6e 67 20 66 65 61  er debugging fea
e0c0: 74 75 72 65 73 2c 20 73 75 63 68 20 61 73 0a 20  tures, such as. 
e0d0: 20 73 70 65 63 69 61 6c 20 5b 50 52 41 47 4d 41   special [PRAGMA
e0e0: 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61  ] statements tha
e0f0: 74 20 74 75 72 6e 20 6f 6e 20 74 72 61 63 69 6e  t turn on tracin
e100: 67 20 61 6e 64 20 6c 69 73 74 69 6e 67 20 66 65  g and listing fe
e110: 61 74 75 72 65 73 0a 20 20 75 73 65 64 20 66 6f  atures.  used fo
e120: 72 20 74 72 6f 75 62 6c 65 73 68 6f 6f 74 69 6e  r troubleshootin
e130: 67 20 61 6e 64 20 61 6e 61 6c 79 73 69 73 20 6f  g and analysis o
e140: 66 20 74 68 65 20 5b 56 44 42 45 5d 20 61 6e 64  f the [VDBE] and
e150: 20 63 6f 64 65 20 67 65 6e 65 72 61 74 6f 72 2e   code generator.
e160: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
e170: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 45 4d 44 45  ON {SQLITE_MEMDE
e180: 42 55 47 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  BUG} {.  The SQL
e190: 49 54 45 5f 4d 45 4d 44 45 42 55 47 20 6f 70 74  ITE_MEMDEBUG opt
e1a0: 69 6f 6e 20 63 61 75 73 65 73 20 61 6e 20 69 6e  ion causes an in
e1b0: 73 74 72 75 6d 65 6e 74 65 64 20 0a 20 20 5b 64  strumented .  [d
e1c0: 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79 20  ebugging memory 
e1d0: 61 6c 6c 6f 63 61 74 6f 72 5d 0a 20 20 74 6f 20  allocator].  to 
e1e0: 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20 64  be used as the d
e1f0: 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c  efault memory al
e200: 6c 6f 63 61 74 6f 72 20 77 69 74 68 69 6e 20 53  locator within S
e210: 51 4c 69 74 65 2e 20 20 54 68 65 0a 20 20 69 6e  QLite.  The.  in
e220: 73 74 72 75 6d 65 6e 74 65 64 20 6d 65 6d 6f 72  strumented memor
e230: 79 20 61 6c 6c 6f 63 61 74 6f 72 20 63 68 65 63  y allocator chec
e240: 6b 73 20 66 6f 72 20 6d 69 73 75 73 65 20 6f 66  ks for misuse of
e250: 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c 6c   dynamically all
e260: 6f 63 61 74 65 64 0a 20 20 6d 65 6d 6f 72 79 2e  ocated.  memory.
e270: 20 20 45 78 61 6d 70 6c 65 73 20 6f 66 20 6d 69    Examples of mi
e280: 73 75 73 65 20 69 6e 63 6c 75 64 65 20 75 73 69  suse include usi
e290: 6e 67 20 6d 65 6d 6f 72 79 20 61 66 74 65 72 20  ng memory after 
e2a0: 69 74 20 69 73 20 66 72 65 65 64 2c 0a 20 20 77  it is freed,.  w
e2b0: 72 69 74 69 6e 67 20 6f 66 66 20 74 68 65 20 65  riting off the e
e2c0: 6e 64 73 20 6f 66 20 61 20 6d 65 6d 6f 72 79 20  nds of a memory 
e2d0: 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 66 72 65 65  allocation, free
e2e0: 69 6e 67 20 6d 65 6d 6f 72 79 20 6e 6f 74 20 70  ing memory not p
e2f0: 72 65 76 69 6f 75 73 6c 79 0a 20 20 6f 62 74 61  reviously.  obta
e300: 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 6d 65  ined from the me
e310: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20  mory allocator, 
e320: 6f 72 20 66 61 69 6c 69 6e 67 20 74 6f 20 69 6e  or failing to in
e330: 69 74 69 61 6c 69 7a 65 20 6e 65 77 6c 79 0a 20  itialize newly. 
e340: 20 61 6c 6c 6f 63 61 74 65 64 20 6d 65 6d 6f 72   allocated memor
e350: 79 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20  y..}..</tcl>.<a 
e360: 6e 61 6d 65 3d 22 77 69 6e 33 32 6f 70 74 69 6f  name="win32optio
e370: 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 39  ns"></a>.<h2>1.9
e380: 20 57 69 6e 64 6f 77 73 2d 53 70 65 63 69 66 69   Windows-Specifi
e390: 63 20 4f 70 74 69 6f 6e 73 3c 2f 68 32 3e 0a 3c  c Options</h2>.<
e3a0: 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  tcl>..COMPILE_OP
e3b0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e  TION {SQLITE_WIN
e3c0: 33 32 5f 48 45 41 50 5f 43 52 45 41 54 45 7d 20  32_HEAP_CREATE} 
e3d0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
e3e0: 66 6f 72 63 65 73 20 74 68 65 20 57 69 6e 33 32  forces the Win32
e3f0: 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61   native memory a
e400: 6c 6c 6f 63 61 74 6f 72 2c 20 77 68 65 6e 20 65  llocator, when e
e410: 6e 61 62 6c 65 64 2c 20 74 6f 0a 20 20 63 72 65  nabled, to.  cre
e420: 61 74 65 20 61 20 70 72 69 76 61 74 65 20 68 65  ate a private he
e430: 61 70 20 74 6f 20 68 6f 6c 64 20 61 6c 6c 20 6d  ap to hold all m
e440: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
e450: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
e460: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e  TION {SQLITE_WIN
e470: 33 32 5f 4d 41 4c 4c 4f 43 5f 56 41 4c 49 44 41  32_MALLOC_VALIDA
e480: 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  TE} {.  This opt
e490: 69 6f 6e 20 66 6f 72 63 65 73 20 74 68 65 20 57  ion forces the W
e4a0: 69 6e 33 32 20 6e 61 74 69 76 65 20 6d 65 6d 6f  in32 native memo
e4b0: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 77 68  ry allocator, wh
e4c0: 65 6e 20 65 6e 61 62 6c 65 64 2c 20 74 6f 0a 20  en enabled, to. 
e4d0: 20 6d 61 6b 65 20 73 74 72 61 74 65 67 69 63 20   make strategic 
e4e0: 63 61 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 48  calls into the H
e4f0: 65 61 70 56 61 6c 69 64 61 74 65 28 29 20 66 75  eapValidate() fu
e500: 6e 63 74 69 6f 6e 20 69 66 20 61 73 73 65 72 74  nction if assert
e510: 28 29 20 69 73 20 61 6c 73 6f 0a 20 20 65 6e 61  () is also.  ena
e520: 62 6c 65 64 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a  bled..}..</tcl>.