Documentation Source Text

Hex Artifact Content
Login

Artifact c10703726bf0bb763a3da453c335e687d588cd5f:


0000: 3c 74 69 74 6c 65 3e 43 6f 6d 70 69 6c 61 74 69  <title>Compilati
0010: 6f 6e 20 4f 70 74 69 6f 6e 73 20 46 6f 72 20 53  on Options For S
0020: 51 4c 69 74 65 3c 2f 74 69 74 6c 65 3e 0a 3c 74  QLite</title>.<t
0030: 63 6c 3e 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b  cl>hd_keywords {
0040: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
0050: 69 6f 6e 73 7d 3c 2f 74 63 6c 3e 0a 0a 3c 68 31  ions}</tcl>..<h1
0060: 3e 31 2e 30 20 43 6f 6d 70 69 6c 61 74 69 6f 6e  >1.0 Compilation
0070: 20 4f 70 74 69 6f 6e 73 20 46 6f 72 20 53 51 4c   Options For SQL
0080: 69 74 65 3c 2f 68 31 3e 0a 0a 3c 70 3e 0a 46 6f  ite</h1>..<p>.Fo
0090: 72 20 6d 6f 73 74 20 70 75 72 70 6f 73 65 73 2c  r most purposes,
00a0: 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65 20 62   SQLite can be b
00b0: 75 69 6c 74 20 6a 75 73 74 20 66 69 6e 65 20 75  uilt just fine u
00c0: 73 69 6e 67 20 74 68 65 20 64 65 66 61 75 6c 74  sing the default
00d0: 0a 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 70 74  .compilation opt
00e0: 69 6f 6e 73 2e 20 48 6f 77 65 76 65 72 2c 20 69  ions. However, i
00f0: 66 20 72 65 71 75 69 72 65 64 2c 20 74 68 65 20  f required, the 
0100: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
0110: 69 6f 6e 73 0a 64 6f 63 75 6d 65 6e 74 65 64 20  ions.documented 
0120: 62 65 6c 6f 77 20 63 61 6e 20 62 65 20 75 73 65  below can be use
0130: 64 20 74 6f 20 0a 3c 61 20 68 72 65 66 3d 22 23  d to .<a href="#
0140: 6f 6d 69 74 66 65 61 74 75 72 65 73 22 3e 6f 6d  omitfeatures">om
0150: 69 74 20 53 51 4c 69 74 65 20 66 65 61 74 75 72  it SQLite featur
0160: 65 73 3c 2f 61 3e 20 28 72 65 73 75 6c 74 69 6e  es</a> (resultin
0170: 67 20 69 6e 0a 61 20 5b 72 65 6c 66 6f 6f 74 70  g in.a [relfootp
0180: 72 69 6e 74 20 7c 20 73 6d 61 6c 6c 65 72 20 63  rint | smaller c
0190: 6f 6d 70 69 6c 65 64 20 6c 69 62 72 61 72 79 20  ompiled library 
01a0: 73 69 7a 65 5d 29 20 6f 72 20 74 6f 20 63 68 61  size]) or to cha
01b0: 6e 67 65 20 74 68 65 0a 3c 61 20 68 72 65 66 3d  nge the.<a href=
01c0: 22 23 64 65 66 61 75 6c 74 73 22 3e 64 65 66 61  "#defaults">defa
01d0: 75 6c 74 20 76 61 6c 75 65 73 3c 2f 61 3e 20 6f  ult values</a> o
01e0: 66 20 73 6f 6d 65 20 70 61 72 61 6d 65 74 65 72  f some parameter
01f0: 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 45 76 65  s..</p>..<p>.Eve
0200: 72 79 20 65 66 66 6f 72 74 20 68 61 73 20 62 65  ry effort has be
0210: 65 6e 20 6d 61 64 65 20 74 6f 20 65 6e 73 75 72  en made to ensur
0220: 65 20 74 68 61 74 20 74 68 65 20 76 61 72 69 6f  e that the vario
0230: 75 73 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 0a  us combinations.
0240: 6f 66 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f  of compilation o
0250: 70 74 69 6f 6e 73 20 77 6f 72 6b 20 68 61 72 6d  ptions work harm
0260: 6f 6e 69 6f 75 73 6c 79 20 61 6e 64 20 70 72 6f  oniously and pro
0270: 64 75 63 65 20 61 20 77 6f 72 6b 69 6e 67 20 6c  duce a working l
0280: 69 62 72 61 72 79 2e 0a 4e 65 76 65 72 74 68 65  ibrary..Neverthe
0290: 6c 65 73 73 2c 20 69 74 20 69 73 20 73 74 72 6f  less, it is stro
02a0: 6e 67 6c 79 20 72 65 63 6f 6d 6d 65 6e 64 65 64  ngly recommended
02b0: 20 74 68 61 74 20 74 68 65 20 53 51 4c 69 74 65   that the SQLite
02c0: 20 74 65 73 74 2d 73 75 69 74 65 0a 62 65 20 65   test-suite.be e
02d0: 78 65 63 75 74 65 64 20 74 6f 20 63 68 65 63 6b  xecuted to check
02e0: 20 66 6f 72 20 65 72 72 6f 72 73 20 62 65 66 6f   for errors befo
02f0: 72 65 20 75 73 69 6e 67 20 61 6e 20 53 51 4c 69  re using an SQLi
0300: 74 65 20 6c 69 62 72 61 72 79 20 62 75 69 6c 74  te library built
0310: 0a 77 69 74 68 20 6e 6f 6e 2d 73 74 61 6e 64 61  .with non-standa
0320: 72 64 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f  rd compilation o
0330: 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 0a 3c 74  ptions..</p>..<t
0340: 63 6c 3e 0a 70 72 6f 63 20 43 4f 4d 50 49 4c 45  cl>.proc COMPILE
0350: 5f 4f 50 54 49 4f 4e 20 7b 6e 61 6d 65 20 74 65  _OPTION {name te
0360: 78 74 7d 20 7b 0a 20 20 69 66 20 7b 5b 72 65 67  xt} {.  if {[reg
0370: 65 78 70 20 7b 28 53 51 4c 49 54 45 7c 48 41 56  exp {(SQLITE|HAV
0380: 45 29 5f 28 5b 41 2d 5a 30 2d 39 5f 5d 2b 29 7d  E)_([A-Z0-9_]+)}
0390: 20 24 6e 61 6d 65 20 61 6c 6c 20 70 72 65 66 69   $name all prefi
03a0: 78 20 6c 61 62 65 6c 5d 7d 20 7b 0a 20 20 20 20  x label]} {.    
03b0: 68 64 5f 66 72 61 67 6d 65 6e 74 20 5b 73 74 72  hd_fragment [str
03c0: 69 6e 67 20 74 6f 6c 6f 77 65 72 20 24 6c 61 62  ing tolower $lab
03d0: 65 6c 5d 0a 20 20 20 20 68 64 5f 6b 65 79 77 6f  el].    hd_keywo
03e0: 72 64 73 20 24 61 6c 6c 20 2d 44 24 61 6c 6c 0a  rds $all -D$all.
03f0: 20 20 7d 0a 20 20 69 66 20 7b 5b 72 65 67 65 78    }.  if {[regex
0400: 70 20 7b 5e 59 59 28 5b 41 2d 5a 30 2d 39 5f 5d  p {^YY([A-Z0-9_]
0410: 2b 29 7d 20 24 6e 61 6d 65 20 61 6c 6c 20 6c 61  +)} $name all la
0420: 62 65 6c 5d 7d 20 7b 0a 20 20 20 20 68 64 5f 66  bel]} {.    hd_f
0430: 72 61 67 6d 65 6e 74 20 5b 73 74 72 69 6e 67 20  ragment [string 
0440: 74 6f 6c 6f 77 65 72 20 24 61 6c 6c 5d 0a 20 20  tolower $all].  
0450: 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 24 61    hd_keywords $a
0460: 6c 6c 0a 20 20 7d 0a 20 20 68 64 5f 70 75 74 73  ll.  }.  hd_puts
0470: 20 3c 70 3e 3c 62 3e 24 6e 61 6d 65 3c 2f 62 3e   <p><b>$name</b>
0480: 3c 2f 70 3e 0a 20 20 72 65 67 73 75 62 20 2d 61  </p>.  regsub -a
0490: 6c 6c 20 22 5c 6e 5c 5c 73 2a 5c 6e 22 20 24 74  ll "\n\\s*\n" $t
04a0: 65 78 74 20 22 3c 2f 70 3e 5c 6e 5c 6e 3c 70 3e  ext "</p>\n\n<p>
04b0: 22 20 74 65 78 74 0a 20 20 68 64 5f 72 65 73 6f  " text.  hd_reso
04c0: 6c 76 65 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  lve <blockquote>
04d0: 3c 70 3e 24 74 65 78 74 3c 2f 70 3e 3c 2f 62 6c  <p>$text</p></bl
04e0: 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 3c 2f 74 63  ockquote>.}.</tc
04f0: 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 6f 73 63  l>..<a name="osc
0500: 6f 6e 66 69 67 22 3e 3c 2f 61 3e 0a 3c 68 32 3e  onfig"></a>.<h2>
0510: 31 2e 31 20 50 6c 61 74 66 6f 72 6d 20 43 6f 6e  1.1 Platform Con
0520: 66 69 67 75 72 61 74 69 6f 6e 3c 2f 68 32 3e 0a  figuration</h2>.
0530: 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f  .<tcl>.COMPILE_O
0540: 50 54 49 4f 4e 20 7b 5f 48 41 56 45 5f 53 51 4c  PTION {_HAVE_SQL
0550: 49 54 45 5f 43 4f 4e 46 49 47 5f 48 7d 20 7b 0a  ITE_CONFIG_H} {.
0560: 20 20 49 66 20 74 68 65 20 5f 48 41 56 45 5f 53    If the _HAVE_S
0570: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 20 6d  QLITE_CONFIG_H m
0580: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 0a  acro is defined.
0590: 20 20 74 68 65 6e 20 74 68 65 20 53 51 4c 69 74    then the SQLit
05a0: 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 77 69  e source code wi
05b0: 6c 6c 20 61 74 74 65 6d 70 74 20 74 6f 20 23 69  ll attempt to #i
05c0: 6e 63 6c 75 64 65 20 61 20 66 69 6c 65 20 6e 61  nclude a file na
05d0: 6d 65 64 20 22 63 6f 6e 66 69 67 2e 68 22 2e 0a  med "config.h"..
05e0: 20 20 54 68 65 20 22 63 6f 6e 66 69 67 2e 68 22    The "config.h"
05f0: 20 66 69 6c 65 20 75 73 75 61 6c 6c 79 20 63 6f   file usually co
0600: 6e 74 61 69 6e 73 20 6f 74 68 65 72 20 63 6f 6e  ntains other con
0610: 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
0620: 6e 73 2c 20 65 73 70 65 63 69 61 6c 6c 79 0a 20  ns, especially. 
0630: 20 22 48 41 56 45 5f 3c 69 3e 49 4e 54 45 52 46   "HAVE_<i>INTERF
0640: 41 43 45 3c 2f 69 3e 22 20 74 79 70 65 20 6f 70  ACE</i>" type op
0650: 74 69 6f 6e 73 20 67 65 6e 65 72 61 74 65 64 20  tions generated 
0660: 62 79 20 61 75 74 6f 63 6f 6e 66 20 73 63 72 69  by autoconf scri
0670: 70 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  pts..}..COMPILE_
0680: 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f 46 44 41  OPTION {HAVE_FDA
0690: 54 41 53 59 4e 43 7d 20 7b 0a 20 20 49 66 20 74  TASYNC} {.  If t
06a0: 68 65 20 48 41 56 45 5f 46 44 41 54 41 53 59 4e  he HAVE_FDATASYN
06b0: 43 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  C compile-time o
06c0: 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20 74  ption is true, t
06d0: 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20  hen the default 
06e0: 5b 56 46 53 5d 0a 20 20 66 6f 72 20 75 6e 69 78  [VFS].  for unix
06f0: 20 73 79 73 74 65 6d 73 20 77 69 6c 6c 20 61 74   systems will at
0700: 74 65 6d 70 74 20 74 6f 20 75 73 65 20 66 64 61  tempt to use fda
0710: 74 61 73 79 6e 63 28 29 20 69 6e 73 74 65 61 64  tasync() instead
0720: 20 6f 66 20 66 73 79 6e 63 28 29 20 77 68 65 72   of fsync() wher
0730: 65 0a 20 20 61 70 70 72 6f 70 72 69 61 74 65 2e  e.  appropriate.
0740: 20 20 49 66 20 74 68 69 73 20 66 6c 61 67 20 69    If this flag i
0750: 73 20 6d 69 73 73 69 6e 67 20 6f 72 20 66 61 6c  s missing or fal
0760: 73 65 2c 20 74 68 65 6e 20 66 73 79 6e 63 28 29  se, then fsync()
0770: 20 69 73 20 61 6c 77 61 79 73 20 75 73 65 64 2e   is always used.
0780: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
0790: 4f 4e 20 7b 48 41 56 45 5f 47 4d 54 49 4d 45 5f  ON {HAVE_GMTIME_
07a0: 52 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48 41  R} {.  If the HA
07b0: 56 45 5f 47 4d 54 49 4d 45 5f 52 20 6f 70 74 69  VE_GMTIME_R opti
07c0: 6f 6e 20 69 73 20 74 72 75 65 20 61 6e 64 20 69  on is true and i
07d0: 66 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44  f [SQLITE_OMIT_D
07e0: 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 5d 20 69  ATETIME_FUNCS] i
07f0: 73 20 74 72 75 65 2c 0a 20 20 74 68 65 6e 20 74  s true,.  then t
0800: 68 65 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c  he CURRENT_TIME,
0810: 20 43 55 52 52 45 4e 54 5f 44 41 54 45 2c 20 61   CURRENT_DATE, a
0820: 6e 64 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53  nd CURRENT_TIMES
0830: 54 41 4d 50 20 6b 65 79 77 6f 72 64 73 20 77 69  TAMP keywords wi
0840: 6c 6c 20 75 73 65 0a 20 20 74 68 65 20 74 68 72  ll use.  the thr
0850: 65 61 64 73 61 66 65 20 22 67 6d 74 69 6d 65 5f  eadsafe "gmtime_
0860: 72 28 29 22 20 69 6e 74 65 72 66 61 63 65 20 72  r()" interface r
0870: 61 74 68 65 72 20 74 68 61 6e 20 22 67 6d 74 69  ather than "gmti
0880: 6d 65 28 29 22 2e 20 20 49 6e 20 74 68 65 20 75  me()".  In the u
0890: 73 75 61 6c 20 63 61 73 65 0a 20 20 77 68 65 72  sual case.  wher
08a0: 65 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44  e [SQLITE_OMIT_D
08b0: 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 5d 20 69  ATETIME_FUNCS] i
08c0: 73 20 6e 6f 74 20 64 65 66 69 6e 65 64 20 6f 72  s not defined or
08d0: 20 69 73 20 66 61 6c 73 65 2c 20 74 68 65 6e 20   is false, then 
08e0: 74 68 65 0a 20 20 62 75 69 6c 74 2d 69 6e 20 5b  the.  built-in [
08f0: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75  date and time fu
0900: 6e 63 74 69 6f 6e 73 5d 20 61 72 65 20 75 73 65  nctions] are use
0910: 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74  d to implement t
0920: 68 65 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c  he CURRENT_TIME,
0930: 0a 20 20 43 55 52 52 45 4e 54 5f 44 41 54 45 2c  .  CURRENT_DATE,
0940: 20 61 6e 64 20 43 55 52 52 45 4e 54 5f 54 49 4d   and CURRENT_TIM
0950: 45 53 54 41 4d 50 20 6b 65 79 77 6f 72 64 73 20  ESTAMP keywords 
0960: 61 6e 64 20 6e 65 69 74 68 65 72 20 67 6d 74 69  and neither gmti
0970: 6d 65 5f 72 28 29 20 6e 6f 72 0a 20 20 67 6d 74  me_r() nor.  gmt
0980: 69 6d 65 28 29 20 69 73 20 65 76 65 72 20 63 61  ime() is ever ca
0990: 6c 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  lled..}..COMPILE
09a0: 5f 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f 49 53  _OPTION {HAVE_IS
09b0: 4e 41 4e 7d 20 7b 0a 20 20 49 66 20 74 68 65 20  NAN} {.  If the 
09c0: 48 41 56 45 5f 49 53 4e 41 4e 20 6f 70 74 69 6f  HAVE_ISNAN optio
09d0: 6e 20 69 73 20 74 72 75 65 2c 20 74 68 65 6e 20  n is true, then 
09e0: 53 51 4c 69 74 65 20 69 6e 76 6f 6b 65 73 20 74  SQLite invokes t
09f0: 68 65 20 73 79 73 74 65 6d 20 6c 69 62 72 61 72  he system librar
0a00: 79 20 69 73 6e 61 6e 28 29 0a 20 20 66 75 6e 63  y isnan().  func
0a10: 74 69 6f 6e 20 74 6f 20 64 65 74 65 72 6d 69 6e  tion to determin
0a20: 65 20 69 66 20 61 20 64 6f 75 62 6c 65 2d 70 72  e if a double-pr
0a30: 65 63 69 73 69 6f 6e 20 66 6c 6f 61 74 69 6e 67  ecision floating
0a40: 20 70 6f 69 6e 74 20 76 61 6c 75 65 20 69 73 20   point value is 
0a50: 61 20 4e 61 4e 2e 0a 20 20 49 66 20 48 41 56 45  a NaN..  If HAVE
0a60: 5f 49 53 4e 41 4e 20 69 73 20 75 6e 64 65 66 69  _ISNAN is undefi
0a70: 6e 65 64 20 6f 72 20 66 61 6c 73 65 2c 20 74 68  ned or false, th
0a80: 65 6e 20 53 51 4c 69 74 65 20 73 75 62 73 74 69  en SQLite substi
0a90: 74 75 74 65 73 20 69 74 73 20 6f 77 6e 20 68 6f  tutes its own ho
0aa0: 6d 65 2d 67 72 6f 77 6e 0a 20 20 69 6d 70 6c 65  me-grown.  imple
0ab0: 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 69 73 6e  mentation of isn
0ac0: 61 6e 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  an()..}..COMPILE
0ad0: 5f 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f 4c 4f  _OPTION {HAVE_LO
0ae0: 43 41 4c 54 49 4d 45 5f 52 7d 20 7b 0a 20 20 49  CALTIME_R} {.  I
0af0: 66 20 74 68 65 20 48 41 56 45 5f 4c 4f 43 41 4c  f the HAVE_LOCAL
0b00: 54 49 4d 45 5f 52 20 6f 70 74 69 6f 6e 20 69 73  TIME_R option is
0b10: 20 74 72 75 65 2c 20 74 68 65 6e 20 53 51 4c 69   true, then SQLi
0b20: 74 65 20 75 73 65 73 20 74 68 65 20 74 68 72 65  te uses the thre
0b30: 61 64 73 61 66 65 0a 20 20 6c 6f 63 61 6c 74 69  adsafe.  localti
0b40: 6d 65 5f 72 28 29 20 6c 69 62 72 61 72 79 20 72  me_r() library r
0b50: 6f 75 74 69 6e 65 20 69 6e 73 74 65 61 64 20 6f  outine instead o
0b60: 66 20 6c 6f 63 61 6c 74 69 6d 65 28 29 0a 20 20  f localtime().  
0b70: 74 6f 20 68 65 6c 70 20 69 6d 70 6c 65 6d 65 6e  to help implemen
0b80: 74 20 74 68 65 20 5b 6c 6f 63 61 6c 74 69 6d 65  t the [localtime
0b90: 20 6d 6f 64 69 66 69 65 72 5d 0a 20 20 74 6f 20   modifier].  to 
0ba0: 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 5b 64 61  the built-in [da
0bb0: 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63  te and time func
0bc0: 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  tions]..}..COMPI
0bd0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f  LE_OPTION {HAVE_
0be0: 4c 4f 43 41 4c 54 49 4d 45 5f 53 7d 20 7b 0a 20  LOCALTIME_S} {. 
0bf0: 20 49 66 20 74 68 65 20 48 41 56 45 5f 4c 4f 43   If the HAVE_LOC
0c00: 41 4c 54 49 4d 45 5f 53 20 6f 70 74 69 6f 6e 20  ALTIME_S option 
0c10: 69 73 20 74 72 75 65 2c 20 74 68 65 6e 20 53 51  is true, then SQ
0c20: 4c 69 74 65 20 75 73 65 73 20 74 68 65 20 74 68  Lite uses the th
0c30: 72 65 61 64 73 61 66 65 0a 20 20 6c 6f 63 61 6c  readsafe.  local
0c40: 74 69 6d 65 5f 73 28 29 20 6c 69 62 72 61 72 79  time_s() library
0c50: 20 72 6f 75 74 69 6e 65 20 69 6e 73 74 65 61 64   routine instead
0c60: 20 6f 66 20 6c 6f 63 61 6c 74 69 6d 65 28 29 0a   of localtime().
0c70: 20 20 74 6f 20 68 65 6c 70 20 69 6d 70 6c 65 6d    to help implem
0c80: 65 6e 74 20 74 68 65 20 5b 6c 6f 63 61 6c 74 69  ent the [localti
0c90: 6d 65 20 6d 6f 64 69 66 69 65 72 5d 0a 20 20 74  me modifier].  t
0ca0: 6f 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 5b  o the built-in [
0cb0: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75  date and time fu
0cc0: 6e 63 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d  nctions]..}..COM
0cd0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56  PILE_OPTION {HAV
0ce0: 45 5f 4d 41 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f  E_MALLOC_USABLE_
0cf0: 53 49 5a 45 7d 20 7b 0a 20 20 49 66 20 74 68 65  SIZE} {.  If the
0d00: 20 48 41 56 45 5f 4d 41 4c 4c 4f 43 5f 55 53 41   HAVE_MALLOC_USA
0d10: 42 4c 45 5f 53 49 5a 45 20 6f 70 74 69 6f 6e 20  BLE_SIZE option 
0d20: 69 73 20 74 72 75 65 2c 20 74 68 65 6e 20 53 51  is true, then SQ
0d30: 4c 69 74 65 20 74 72 69 65 73 20 75 73 65 73 20  Lite tries uses 
0d40: 74 68 65 0a 20 20 6d 61 6c 6c 6f 63 5f 75 73 61  the.  malloc_usa
0d50: 62 6c 65 5f 73 69 7a 65 28 29 20 69 6e 74 65 72  ble_size() inter
0d60: 66 61 63 65 20 74 6f 20 66 69 6e 64 20 74 68 65  face to find the
0d70: 20 73 69 7a 65 20 6f 66 20 61 20 6d 65 6d 6f 72   size of a memor
0d80: 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6f 62 74  y allocation obt
0d90: 61 69 6e 65 64 0a 20 20 66 72 6f 6d 20 74 68 65  ained.  from the
0da0: 20 73 74 61 6e 64 61 72 64 2d 6c 69 62 72 61 72   standard-librar
0db0: 79 20 6d 61 6c 6c 6f 63 28 29 20 6f 72 20 72 65  y malloc() or re
0dc0: 61 6c 6c 6f 63 28 29 20 72 6f 75 74 69 6e 65 73  alloc() routines
0dd0: 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
0de0: 73 20 6f 6e 6c 79 0a 20 20 61 70 70 6c 69 63 61  s only.  applica
0df0: 62 6c 65 20 69 66 20 74 68 65 20 73 74 61 6e 64  ble if the stand
0e00: 61 72 64 2d 6c 69 62 72 61 72 79 20 6d 61 6c 6c  ard-library mall
0e10: 6f 63 28 29 20 69 73 20 75 73 65 64 2e 20 20 4f  oc() is used.  O
0e20: 6e 20 41 70 70 6c 65 20 73 79 73 74 65 6d 73 2c  n Apple systems,
0e30: 0a 20 20 22 7a 6f 6e 65 20 6d 61 6c 6c 6f 63 22  .  "zone malloc"
0e40: 20 69 73 20 75 73 65 64 20 69 6e 73 74 65 61 64   is used instead
0e50: 2c 20 61 6e 64 20 73 6f 20 74 68 69 73 20 6f 70  , and so this op
0e60: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61 70 70 6c  tion is not appl
0e70: 69 63 61 62 6c 65 2e 20 20 41 6e 64 2c 20 6f 66  icable.  And, of
0e80: 0a 20 20 63 6f 75 72 73 65 2c 20 69 66 20 74 68  .  course, if th
0e90: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 75  e application su
0ea0: 70 70 6c 69 65 73 20 69 74 73 20 6f 77 6e 20 6d  pplies its own m
0eb0: 61 6c 6c 6f 63 20 69 6d 70 6c 65 6d 65 6e 74 61  alloc implementa
0ec0: 74 69 6f 6e 20 75 73 69 6e 67 0a 20 20 5b 53 51  tion using.  [SQ
0ed0: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c  LITE_CONFIG_MALL
0ee0: 4f 43 5d 20 74 68 65 6e 20 74 68 69 73 20 6f 70  OC] then this op
0ef0: 74 69 6f 6e 20 68 61 73 20 6e 6f 20 65 66 66 65  tion has no effe
0f00: 63 74 2e 0a 20 20 3c 70 3e 0a 20 20 49 66 20 74  ct..  <p>.  If t
0f10: 68 65 20 48 41 56 45 5f 4d 41 4c 4c 4f 43 5f 55  he HAVE_MALLOC_U
0f20: 53 41 42 4c 45 5f 53 49 5a 45 20 6f 70 74 69 6f  SABLE_SIZE optio
0f30: 6e 20 69 73 20 6f 6d 69 74 74 65 64 20 6f 72 20  n is omitted or 
0f40: 69 73 20 66 61 6c 73 65 2c 20 74 68 65 6e 20 53  is false, then S
0f50: 51 4c 69 74 65 20 0a 20 20 75 73 65 73 20 61 20  QLite .  uses a 
0f60: 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 73  wrapper around s
0f70: 79 73 74 65 6d 20 6d 61 6c 6c 6f 63 28 29 20 61  ystem malloc() a
0f80: 6e 64 20 72 65 61 6c 6c 6f 63 28 29 20 74 68 61  nd realloc() tha
0f90: 74 20 65 6e 6c 61 72 67 65 73 20 65 61 63 68 20  t enlarges each 
0fa0: 61 6c 6c 6f 63 61 74 69 6f 6e 0a 20 20 62 79 20  allocation.  by 
0fb0: 38 20 62 79 74 65 73 20 61 6e 64 20 77 72 69 74  8 bytes and writ
0fc0: 65 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  es the size of t
0fd0: 68 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 6e  he allocation in
0fe0: 20 74 68 65 20 69 6e 69 74 69 61 6c 20 38 20 62   the initial 8 b
0ff0: 79 74 65 73 2c 20 61 6e 64 0a 20 20 74 68 65 6e  ytes, and.  then
1000: 20 53 51 4c 69 74 65 20 61 6c 73 6f 20 69 6d 70   SQLite also imp
1010: 6c 65 6d 65 6e 74 73 20 69 74 73 20 6f 77 6e 20  lements its own 
1020: 68 6f 6d 65 2d 67 72 6f 77 6e 20 76 65 72 73 69  home-grown versi
1030: 6f 6e 20 6f 66 20 6d 61 6c 6c 6f 63 5f 75 73 61  on of malloc_usa
1040: 62 6c 65 5f 73 69 7a 65 28 29 0a 20 20 74 68 61  ble_size().  tha
1050: 74 20 63 6f 6e 73 75 6c 74 73 20 74 68 61 74 20  t consults that 
1060: 38 2d 62 79 74 65 20 70 72 65 66 69 78 20 74 6f  8-byte prefix to
1070: 20 66 69 6e 64 20 74 68 65 20 61 6c 6c 6f 63 61   find the alloca
1080: 74 69 6f 6e 20 73 69 7a 65 2e 20 20 54 68 69 73  tion size.  This
1090: 20 61 70 70 72 6f 61 63 68 0a 20 20 77 6f 72 6b   approach.  work
10a0: 73 20 62 75 74 20 69 74 20 69 73 20 73 75 62 6f  s but it is subo
10b0: 70 74 69 6d 61 6c 2e 20 20 41 70 70 6c 69 63 61  ptimal.  Applica
10c0: 74 69 6f 6e 73 20 61 72 65 20 65 6e 63 6f 75 72  tions are encour
10d0: 61 67 65 64 20 74 6f 20 75 73 65 0a 20 20 48 41  aged to use.  HA
10e0: 56 45 5f 4d 41 4c 4c 4f 43 5f 55 53 41 42 4c 45  VE_MALLOC_USABLE
10f0: 5f 53 49 5a 45 20 77 68 65 6e 65 76 65 72 20 70  _SIZE whenever p
1100: 6f 73 73 69 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50  ossible..}..COMP
1110: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56 45  ILE_OPTION {HAVE
1120: 5f 53 54 52 43 48 52 4e 55 4c 7d 20 7b 0a 20 20  _STRCHRNUL} {.  
1130: 49 66 20 74 68 65 20 48 41 56 45 5f 53 54 52 43  If the HAVE_STRC
1140: 48 52 4e 55 4c 20 6f 70 74 69 6f 6e 20 69 73 20  HRNUL option is 
1150: 74 72 75 65 2c 20 74 68 65 6e 20 53 51 4c 69 74  true, then SQLit
1160: 65 20 75 73 65 73 20 74 68 65 20 73 74 72 63 68  e uses the strch
1170: 72 6e 75 6c 28 29 20 6c 69 62 72 61 72 79 0a 20  rnul() library. 
1180: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 49 66 20 74   function.  If t
1190: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6d 69  his option is mi
11a0: 73 73 69 6e 67 20 6f 72 20 66 61 6c 73 65 2c 20  ssing or false, 
11b0: 74 68 65 6e 20 53 51 4c 69 74 65 20 73 75 62 73  then SQLite subs
11c0: 74 69 74 75 74 65 73 20 69 74 73 20 6f 77 6e 0a  titutes its own.
11d0: 20 20 68 6f 6d 65 2d 67 72 6f 77 6e 20 69 6d 70    home-grown imp
11e0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 73  lementation of s
11f0: 74 72 63 68 72 6e 75 6c 28 29 2e 0a 7d 0a 0a 43  trchrnul()..}..C
1200: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48  OMPILE_OPTION {H
1210: 41 56 45 5f 55 53 4c 45 45 50 7d 20 7b 0a 20 20  AVE_USLEEP} {.  
1220: 49 66 20 74 68 65 20 48 41 56 45 5f 55 53 4c 45  If the HAVE_USLE
1230: 45 50 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75  EP option is tru
1240: 65 2c 20 74 68 65 6e 20 74 68 65 20 64 65 66 61  e, then the defa
1250: 75 6c 74 20 75 6e 69 78 20 56 46 53 20 75 73 65  ult unix VFS use
1260: 73 20 74 68 65 0a 20 20 75 73 6c 65 65 70 28 29  s the.  usleep()
1270: 20 73 79 73 74 65 6d 20 63 61 6c 6c 20 74 6f 20   system call to 
1280: 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 78 53  implement the xS
1290: 6c 65 65 70 20 6d 65 74 68 6f 64 2e 20 20 49 66  leep method.  If
12a0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 0a   this option is.
12b0: 20 20 75 6e 64 65 66 69 6e 65 64 20 6f 72 20 66    undefined or f
12c0: 61 6c 73 65 2c 20 74 68 65 6e 20 78 53 6c 65 65  alse, then xSlee
12d0: 70 20 6f 6e 20 75 6e 69 78 20 69 73 20 69 6d 70  p on unix is imp
12e0: 6c 65 6d 65 6e 74 65 64 20 75 73 69 6e 67 20 73  lemented using s
12f0: 6c 65 65 70 28 29 20 77 68 69 63 68 0a 20 20 6d  leep() which.  m
1300: 65 61 6e 73 20 74 68 61 74 20 5b 73 71 6c 69 74  eans that [sqlit
1310: 65 33 5f 73 6c 65 65 70 28 29 5d 20 77 69 6c 6c  e3_sleep()] will
1320: 20 68 61 76 65 20 61 20 6d 69 6e 69 6d 75 6d 20   have a minimum 
1330: 77 61 69 74 20 69 6e 74 65 72 76 61 6c 20 6f 66  wait interval of
1340: 20 31 30 30 30 0a 20 20 6d 69 6c 6c 69 73 65 63   1000.  millisec
1350: 6f 6e 64 73 20 72 65 67 61 72 64 6c 65 73 73 20  onds regardless 
1360: 6f 66 20 69 74 73 20 61 72 67 75 6d 65 6e 74 2e  of its argument.
1370: 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50    .}..COMPILE_OP
1380: 54 49 4f 4e 20 7b 48 41 56 45 5f 55 54 49 4d 45  TION {HAVE_UTIME
1390: 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48 41 56  } {.  If the HAV
13a0: 45 5f 55 54 49 4d 45 20 6f 70 74 69 6f 6e 20 69  E_UTIME option i
13b0: 73 20 74 72 75 65 2c 20 74 68 65 6e 20 74 68 65  s true, then the
13c0: 20 62 75 69 6c 74 2d 69 6e 20 62 75 74 20 6e 6f   built-in but no
13d0: 6e 2d 73 74 61 6e 64 61 72 64 0a 20 20 22 75 6e  n-standard.  "un
13e0: 69 78 2d 64 6f 74 66 69 6c 65 22 20 56 46 53 20  ix-dotfile" VFS 
13f0: 77 69 6c 6c 20 75 73 65 20 74 68 65 20 75 74 69  will use the uti
1400: 6d 65 28 29 20 73 79 73 74 65 6d 20 63 61 6c 6c  me() system call
1410: 2c 20 69 6e 73 74 65 61 64 20 6f 66 20 75 74 69  , instead of uti
1420: 6d 65 73 28 29 2c 0a 20 20 74 6f 20 73 65 74 20  mes(),.  to set 
1430: 74 68 65 20 6c 61 73 74 20 61 63 63 65 73 73 20  the last access 
1440: 74 69 6d 65 20 6f 6e 20 74 68 65 20 6c 6f 63 6b  time on the lock
1450: 20 66 69 6c 65 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a   file..}.</tcl>.
1460: 0a 3c 61 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c  .<a name="defaul
1470: 74 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 32  ts"></a>.<h2>1.2
1480: 20 4f 70 74 69 6f 6e 73 20 54 6f 20 53 65 74 20   Options To Set 
1490: 44 65 66 61 75 6c 74 20 50 61 72 61 6d 65 74 65  Default Paramete
14a0: 72 20 56 61 6c 75 65 73 3c 2f 68 32 3e 0a 0a 3c  r Values</h2>..<
14b0: 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  tcl>..COMPILE_OP
14c0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
14d0: 41 55 4c 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49  AULT_AUTOMATIC_I
14e0: 4e 44 45 58 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72  NDEX=<i>&lt;0 or
14f0: 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   1&gt;</i>} {.  
1500: 54 68 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72  This macro deter
1510: 6d 69 6e 65 73 20 74 68 65 20 69 6e 69 74 69 61  mines the initia
1520: 6c 20 73 65 74 74 69 6e 67 20 66 6f 72 20 5b 50  l setting for [P
1530: 52 41 47 4d 41 20 61 75 74 6f 6d 61 74 69 63 5f  RAGMA automatic_
1540: 69 6e 64 65 78 5d 0a 20 20 66 6f 72 20 6e 65 77  index].  for new
1550: 6c 79 20 6f 70 65 6e 65 64 20 5b 64 61 74 61 62  ly opened [datab
1560: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d  ase connections]
1570: 2e 0a 20 20 46 6f 72 20 61 6c 6c 20 76 65 72 73  ..  For all vers
1580: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 74  ions of SQLite t
1590: 68 72 6f 75 67 68 20 33 2e 37 2e 31 37 2c 0a 20  hrough 3.7.17,. 
15a0: 20 61 75 74 6f 6d 61 74 69 63 20 69 6e 64 69 63   automatic indic
15b0: 65 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20  es are normally 
15c0: 65 6e 61 62 6c 65 64 20 66 6f 72 20 6e 65 77 20  enabled for new 
15d0: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
15e0: 69 6f 6e 73 20 69 66 0a 20 20 74 68 69 73 20 63  ions if.  this c
15f0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
1600: 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 20  on is omitted.. 
1610: 20 48 6f 77 65 76 65 72 2c 20 74 68 61 74 20 6d   However, that m
1620: 69 67 68 74 20 63 68 61 6e 67 65 20 69 6e 20 66  ight change in f
1630: 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f  uture releases o
1640: 66 20 53 51 4c 69 74 65 2e 0a 20 20 3c 70 3e 53  f SQLite..  <p>S
1650: 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45  ee also: [SQLITE
1660: 5f 4f 4d 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f  _OMIT_AUTOMATIC_
1670: 49 4e 44 45 58 5d 0a 7d 0a 0a 43 4f 4d 50 49 4c  INDEX].}..COMPIL
1680: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
1690: 5f 44 45 46 41 55 4c 54 5f 41 55 54 4f 56 41 43  _DEFAULT_AUTOVAC
16a0: 55 55 4d 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20  UUM=<i>&lt;0 or 
16b0: 31 20 6f 72 20 32 26 67 74 3b 3c 2f 69 3e 7d 20  1 or 2&gt;</i>} 
16c0: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 64  {.  This macro d
16d0: 65 74 65 72 6d 69 6e 65 73 20 69 66 20 53 51 4c  etermines if SQL
16e0: 69 74 65 20 63 72 65 61 74 65 73 20 64 61 74 61  ite creates data
16f0: 62 61 73 65 73 20 77 69 74 68 20 74 68 65 20 0a  bases with the .
1700: 20 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20    [auto_vacuum] 
1710: 66 6c 61 67 20 73 65 74 20 62 79 20 64 65 66 61  flag set by defa
1720: 75 6c 74 20 74 6f 20 4f 46 46 20 28 30 29 2c 20  ult to OFF (0), 
1730: 46 55 4c 4c 20 28 31 29 2c 20 6f 72 0a 20 20 49  FULL (1), or.  I
1740: 4e 43 52 45 4d 45 4e 54 41 4c 20 28 32 29 2e 20  NCREMENTAL (2). 
1750: 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  The default valu
1760: 65 20 69 73 20 30 20 6d 65 61 6e 69 6e 67 20 74  e is 0 meaning t
1770: 68 61 74 20 64 61 74 61 62 61 73 65 73 0a 20 20  hat databases.  
1780: 61 72 65 20 63 72 65 61 74 65 64 20 77 69 74 68  are created with
1790: 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 74 75 72   auto-vacuum tur
17a0: 6e 65 64 20 6f 66 66 2e 0a 20 20 49 6e 20 61 6e  ned off..  In an
17b0: 79 20 63 61 73 65 20 74 68 65 20 63 6f 6d 70 69  y case the compi
17c0: 6c 65 2d 74 69 6d 65 20 64 65 66 61 75 6c 74 20  le-time default 
17d0: 6d 61 79 20 62 65 20 6f 76 65 72 72 69 64 64 65  may be overridde
17e0: 6e 20 62 79 20 74 68 65 20 0a 20 20 5b 50 52 41  n by the .  [PRA
17f0: 47 4d 41 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d  GMA auto_vacuum]
1800: 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d   command..}..COM
1810: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
1820: 49 54 45 5f 44 45 46 41 55 4c 54 5f 43 41 43 48  ITE_DEFAULT_CACH
1830: 45 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 70 61  E_SIZE=<i>&lt;pa
1840: 67 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20  ges&gt;</i>} {. 
1850: 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73   This macro sets
1860: 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 69 7a   the default siz
1870: 65 20 6f 66 20 74 68 65 20 70 61 67 65 2d 63 61  e of the page-ca
1880: 63 68 65 20 66 6f 72 20 65 61 63 68 20 61 74 74  che for each att
1890: 61 63 68 65 64 0a 20 20 64 61 74 61 62 61 73 65  ached.  database
18a0: 2c 20 69 6e 20 70 61 67 65 73 2e 20 54 68 69 73  , in pages. This
18b0: 20 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64 64   can be overridd
18c0: 65 6e 20 62 79 20 74 68 65 20 0a 20 20 5b 50 52  en by the .  [PR
18d0: 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 5d  AGMA cache_size]
18e0: 20 63 6f 6d 6d 61 6e 64 2e 20 54 68 65 20 64 65   command. The de
18f0: 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 32  fault value is 2
1900: 30 30 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  000..}..COMPILE_
1910: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
1920: 45 46 41 55 4c 54 5f 46 49 4c 45 5f 46 4f 52 4d  EFAULT_FILE_FORM
1930: 41 54 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 34  AT=<i>&lt;1 or 4
1940: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
1950: 65 20 64 65 66 61 75 6c 74 20 5b 73 63 68 65 6d  e default [schem
1960: 61 20 66 6f 72 6d 61 74 20 6e 75 6d 62 65 72 5d  a format number]
1970: 20 75 73 65 64 20 62 79 20 53 51 4c 69 74 65 20   used by SQLite 
1980: 77 68 65 6e 20 63 72 65 61 74 69 6e 67 0a 20 20  when creating.  
1990: 6e 65 77 20 64 61 74 61 62 61 73 65 20 66 69 6c  new database fil
19a0: 65 73 20 69 73 20 73 65 74 20 62 79 20 74 68 69  es is set by thi
19b0: 73 20 6d 61 63 72 6f 2e 20 20 54 68 65 20 73 63  s macro.  The sc
19c0: 68 65 6d 61 20 66 6f 72 6d 61 74 73 20 61 72 65  hema formats are
19d0: 20 61 6c 6c 0a 20 20 76 65 72 79 20 73 69 6d 69   all.  very simi
19e0: 6c 61 72 2e 20 20 54 68 65 20 64 69 66 66 65 72  lar.  The differ
19f0: 65 6e 63 65 20 62 65 74 77 65 65 6e 20 66 6f 72  ence between for
1a00: 6d 61 74 73 20 31 20 61 6e 64 20 34 20 69 73 20  mats 1 and 4 is 
1a10: 74 68 61 74 20 66 6f 72 6d 61 74 0a 20 20 34 20  that format.  4 
1a20: 75 6e 64 65 72 73 74 61 6e 64 73 20 5b 64 65 73  understands [des
1a30: 63 65 6e 64 69 6e 67 20 69 6e 64 69 63 65 73 5d  cending indices]
1a40: 20 61 6e 64 20 68 61 73 20 61 20 74 69 67 68 74   and has a tight
1a50: 65 72 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72 0a  er encoding for.
1a60: 20 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 73    boolean values
1a70: 2e 0a 0a 20 20 41 6c 6c 20 76 65 72 73 69 6f 6e  ...  All version
1a80: 73 20 6f 66 20 53 51 4c 69 74 65 20 73 69 6e 63  s of SQLite sinc
1a90: 65 20 33 2e 33 2e 30 20 28 32 30 30 36 2d 30 31  e 3.3.0 (2006-01
1aa0: 2d 31 30 29 0a 20 20 63 61 6e 20 72 65 61 64 20  -10).  can read 
1ab0: 61 6e 64 20 77 72 69 74 65 20 61 6e 79 20 73 63  and write any sc
1ac0: 68 65 6d 61 20 66 6f 72 6d 61 74 0a 20 20 62 65  hema format.  be
1ad0: 74 77 65 65 6e 20 31 20 61 6e 64 20 34 2e 20 20  tween 1 and 4.  
1ae0: 42 75 74 20 6f 6c 64 65 72 20 76 65 72 73 69 6f  But older versio
1af0: 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67  ns of SQLite mig
1b00: 68 74 20 6e 6f 74 20 62 65 20 61 62 6c 65 20 74  ht not be able t
1b10: 6f 0a 20 20 72 65 61 64 20 66 6f 72 6d 61 74 73  o.  read formats
1b20: 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 31 2e   greater than 1.
1b30: 20 20 53 6f 20 74 68 61 74 20 6f 6c 64 65 72 20    So that older 
1b40: 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69  versions of SQLi
1b50: 74 65 20 77 69 6c 6c 0a 20 20 62 65 20 61 62 6c  te will.  be abl
1b60: 65 20 74 6f 20 72 65 61 64 20 61 6e 64 20 77 72  e to read and wr
1b70: 69 74 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  ite database fil
1b80: 65 73 20 63 72 65 61 74 65 64 20 62 79 20 6e 65  es created by ne
1b90: 77 65 72 20 76 65 72 73 69 6f 6e 73 0a 20 20 6f  wer versions.  o
1ba0: 66 20 53 51 4c 69 74 65 2c 20 74 68 65 20 64 65  f SQLite, the de
1bb0: 66 61 75 6c 74 20 73 63 68 65 6d 61 20 66 6f 72  fault schema for
1bc0: 6d 61 74 20 77 61 73 20 73 65 74 20 74 6f 20 31  mat was set to 1
1bd0: 20 66 6f 72 20 53 51 4c 69 74 65 20 76 65 72 73   for SQLite vers
1be0: 69 6f 6e 73 0a 20 20 74 68 72 6f 75 67 68 20 33  ions.  through 3
1bf0: 2e 37 2e 39 20 28 32 30 31 31 2d 31 31 2d 30 31  .7.9 (2011-11-01
1c00: 29 2e 20 20 42 65 67 69 6e 6e 69 6e 67 20 77 69  ).  Beginning wi
1c10: 74 68 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 31  th version 3.7.1
1c20: 30 2c 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20  0, the default. 
1c30: 20 73 63 68 65 6d 61 20 66 6f 72 6d 61 74 20 69   schema format i
1c40: 73 20 34 2e 0a 0a 20 20 54 68 65 20 73 63 68 65  s 4...  The sche
1c50: 6d 61 20 66 6f 72 6d 61 74 20 6e 75 6d 62 65 72  ma format number
1c60: 20 66 6f 72 20 61 20 6e 65 77 20 64 61 74 61 62   for a new datab
1c70: 61 73 65 20 63 61 6e 20 62 65 20 73 65 74 20 61  ase can be set a
1c80: 74 20 72 75 6e 74 69 6d 65 20 75 73 69 6e 67 0a  t runtime using.
1c90: 20 20 74 68 65 20 5b 50 52 41 47 4d 41 20 6c 65    the [PRAGMA le
1ca0: 67 61 63 79 5f 66 69 6c 65 5f 66 6f 72 6d 61 74  gacy_file_format
1cb0: 5d 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f  ] command..}..CO
1cc0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
1cd0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 46 49 4c  LITE_DEFAULT_FIL
1ce0: 45 5f 50 45 52 4d 49 53 53 49 4f 4e 53 3d 3c 69  E_PERMISSIONS=<i
1cf0: 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20  >N</i>} {.  The 
1d00: 64 65 66 61 75 6c 74 20 6e 75 6d 65 72 69 63 20  default numeric 
1d10: 66 69 6c 65 20 70 65 72 6d 69 73 73 69 6f 6e 73  file permissions
1d20: 20 66 6f 72 20 6e 65 77 6c 79 20 63 72 65 61 74   for newly creat
1d30: 65 64 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ed database file
1d40: 73 0a 20 20 75 6e 64 65 72 20 75 6e 69 78 2e 20  s.  under unix. 
1d50: 20 49 66 20 6e 6f 74 20 73 70 65 63 69 66 69 65   If not specifie
1d60: 64 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 69  d, the default i
1d70: 73 20 30 36 34 34 20 77 68 69 63 68 20 6d 65 61  s 0644 which mea
1d80: 6e 73 20 74 68 61 74 0a 20 20 74 68 65 20 66 69  ns that.  the fi
1d90: 6c 65 73 20 69 73 20 67 6c 6f 62 61 6c 6c 79 20  les is globally 
1da0: 72 65 61 64 61 62 6c 65 20 62 75 74 20 6f 6e 6c  readable but onl
1db0: 79 20 77 72 69 74 61 62 6c 65 20 62 79 20 74 68  y writable by th
1dc0: 65 20 63 72 65 61 74 6f 72 2e 0a 7d 0a 0a 43 4f  e creator..}..CO
1dd0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
1de0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 46 4f 52  LITE_DEFAULT_FOR
1df0: 45 49 47 4e 5f 4b 45 59 53 3d 3c 69 3e 26 6c 74  EIGN_KEYS=<i>&lt
1e00: 3b 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d  ;0 or 1&gt;</i>}
1e10: 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20   {.  This macro 
1e20: 64 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68  determines wheth
1e30: 65 72 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f  er enforcement o
1e40: 66 20 0a 20 20 5b 66 6f 72 65 69 67 6e 20 6b 65  f .  [foreign ke
1e50: 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 20 69  y constraints] i
1e60: 73 20 65 6e 61 62 6c 65 64 20 6f 72 20 64 69 73  s enabled or dis
1e70: 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74  abled by default
1e80: 20 66 6f 72 0a 20 20 6e 65 77 20 64 61 74 61 62   for.  new datab
1e90: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e  ase connections.
1ea0: 20 20 45 61 63 68 20 64 61 74 61 62 61 73 65 20    Each database 
1eb0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 61 6e 20 61  connection can a
1ec0: 6c 77 61 79 73 20 74 75 72 6e 0a 20 20 65 6e 66  lways turn.  enf
1ed0: 6f 72 63 65 6d 65 6e 74 20 6f 66 20 66 6f 72 65  orcement of fore
1ee0: 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69  ign key constrai
1ef0: 6e 74 73 20 6f 6e 20 61 6e 64 20 6f 66 66 20 61  nts on and off a
1f00: 6e 64 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e  nd run-time usin
1f10: 67 0a 20 20 74 68 65 20 5b 66 6f 72 65 69 67 6e  g.  the [foreign
1f20: 5f 6b 65 79 73 20 70 72 61 67 6d 61 5d 2e 20 20  _keys pragma].  
1f30: 45 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20 66  Enforcement of f
1f40: 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74  oreign key const
1f50: 72 61 69 6e 74 73 0a 20 20 69 73 20 6e 6f 72 6d  raints.  is norm
1f60: 61 6c 6c 79 20 6f 66 66 20 62 79 20 64 65 66 61  ally off by defa
1f70: 75 6c 74 2c 20 62 75 74 20 69 66 20 74 68 69 73  ult, but if this
1f80: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 70 61   compile-time pa
1f90: 72 61 6d 65 74 65 72 20 69 73 0a 20 20 73 65 74  rameter is.  set
1fa0: 20 74 6f 20 31 2c 20 65 6e 66 6f 72 63 65 6d 65   to 1, enforceme
1fb0: 6e 74 20 6f 66 20 66 6f 72 65 69 67 6e 20 6b 65  nt of foreign ke
1fc0: 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69  y constraints wi
1fd0: 6c 6c 20 62 65 20 6f 6e 20 62 79 20 64 65 66 61  ll be on by defa
1fe0: 75 6c 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ult..}..COMPILE_
1ff0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
2000: 45 46 41 55 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45  EFAULT_MMAP_SIZE
2010: 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54  =<i>N</i>} {.  T
2020: 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74  his macro sets t
2030: 68 65 20 64 65 66 61 75 6c 74 20 6c 69 6d 69 74  he default limit
2040: 20 6f 6e 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f   on the amount o
2050: 66 20 6d 65 6d 6f 72 79 20 74 68 61 74 0a 20 20  f memory that.  
2060: 77 69 6c 6c 20 62 65 20 75 73 65 64 20 66 6f 72  will be used for
2070: 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49   memory-mapped I
2080: 2f 4f 0a 20 20 66 6f 72 20 65 61 63 68 20 6f 70  /O.  for each op
2090: 65 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  en database file
20a0: 2e 20 20 49 66 20 74 68 65 20 3c 69 3e 4e 3c 2f  .  If the <i>N</
20b0: 69 3e 0a 20 20 69 73 20 7a 65 72 6f 2c 20 74 68  i>.  is zero, th
20c0: 65 6e 20 6d 65 6d 6f 72 79 20 6d 61 70 70 65 64  en memory mapped
20d0: 20 49 2f 4f 20 69 73 20 64 69 73 61 62 6c 65 64   I/O is disabled
20e0: 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 54 68   by default.  Th
20f0: 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  is.  compile-tim
2100: 65 20 6c 69 6d 69 74 20 61 6e 64 20 74 68 65 20  e limit and the 
2110: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50  [SQLITE_MAX_MMAP
2120: 5f 53 49 5a 45 5d 20 63 61 6e 20 62 65 20 6d 6f  _SIZE] can be mo
2130: 64 69 66 69 65 64 20 0a 20 20 61 74 20 73 74 61  dified .  at sta
2140: 72 74 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68  rt-time using th
2150: 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  e.  [sqlite3_con
2160: 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e  fig]([SQLITE_CON
2170: 46 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20  FIG_MMAP_SIZE]) 
2180: 63 61 6c 6c 2c 20 6f 72 20 61 74 20 72 75 6e 2d  call, or at run-
2190: 74 69 6d 65 0a 20 20 75 73 69 6e 67 20 74 68 65  time.  using the
21a0: 20 5b 6d 6d 61 70 5f 73 69 7a 65 20 70 72 61 67   [mmap_size prag
21b0: 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ma]..}..COMPILE_
21c0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
21d0: 45 46 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c 5f 53  EFAULT_JOURNAL_S
21e0: 49 5a 45 5f 4c 49 4d 49 54 3d 3c 69 3e 26 6c 74  IZE_LIMIT=<i>&lt
21f0: 3b 62 79 74 65 73 26 67 74 3b 3c 2f 69 3e 7d 20  ;bytes&gt;</i>} 
2200: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
2210: 73 65 74 73 20 74 68 65 20 73 69 7a 65 20 6c 69  sets the size li
2220: 6d 69 74 20 6f 6e 20 5b 72 6f 6c 6c 62 61 63 6b  mit on [rollback
2230: 20 6a 6f 75 72 6e 61 6c 5d 20 66 69 6c 65 73 20   journal] files 
2240: 69 6e 0a 20 20 5b 6a 6f 75 72 6e 61 6c 5f 6d 6f  in.  [journal_mo
2250: 64 65 20 70 72 61 67 6d 61 20 7c 20 70 65 72 73  de pragma | pers
2260: 69 73 74 65 6e 74 20 6a 6f 75 72 6e 61 6c 20 6d  istent journal m
2270: 6f 64 65 5d 20 61 6e 64 0a 20 20 5b 6c 6f 63 6b  ode] and.  [lock
2280: 69 6e 67 5f 6d 6f 64 65 20 7c 20 65 78 63 6c 75  ing_mode | exclu
2290: 73 69 76 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64  sive locking mod
22a0: 65 5d 20 61 6e 64 20 6f 6e 20 74 68 65 20 73 69  e] and on the si
22b0: 7a 65 20 6f 66 20 74 68 65 0a 20 20 77 72 69 74  ze of the.  writ
22c0: 65 2d 61 68 65 61 64 20 6c 6f 67 20 66 69 6c 65  e-ahead log file
22d0: 20 69 6e 20 5b 57 41 4c 20 6d 6f 64 65 5d 2e 20   in [WAL mode]. 
22e0: 57 68 65 6e 20 74 68 69 73 20 0a 20 20 63 6f 6d  When this .  com
22f0: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
2300: 20 69 73 20 6f 6d 69 74 74 65 64 20 74 68 65 72   is omitted ther
2310: 65 20 69 73 20 6e 6f 20 75 70 70 65 72 20 62 6f  e is no upper bo
2320: 75 6e 64 20 6f 6e 20 74 68 65 0a 20 20 73 69 7a  und on the.  siz
2330: 65 20 6f 66 20 74 68 65 20 72 6f 6c 6c 62 61 63  e of the rollbac
2340: 6b 20 6a 6f 75 72 6e 61 6c 73 20 6f 72 20 77 72  k journals or wr
2350: 69 74 65 2d 61 68 65 61 64 20 6c 6f 67 73 2e 20  ite-ahead logs. 
2360: 20 0a 20 20 54 68 65 20 6a 6f 75 72 6e 61 6c 20   .  The journal 
2370: 66 69 6c 65 20 73 69 7a 65 20 6c 69 6d 69 74 0a  file size limit.
2380: 20 20 63 61 6e 20 62 65 20 63 68 61 6e 67 65 64    can be changed
2390: 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75 73 69   at run-time usi
23a0: 6e 67 20 74 68 65 20 5b 6a 6f 75 72 6e 61 6c 5f  ng the [journal_
23b0: 73 69 7a 65 5f 6c 69 6d 69 74 20 70 72 61 67 6d  size_limit pragm
23c0: 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  a]..}..COMPILE_O
23d0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
23e0: 46 41 55 4c 54 5f 4c 4f 43 4b 49 4e 47 5f 4d 4f  FAULT_LOCKING_MO
23f0: 44 45 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 30  DE=<i>&lt;1 or 0
2400: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66  &gt;</i>} {.  If
2410: 20 73 65 74 20 74 6f 20 31 2c 20 74 68 65 6e 20   set to 1, then 
2420: 74 68 65 20 64 65 66 61 75 6c 74 20 5b 6c 6f 63  the default [loc
2430: 6b 69 6e 67 5f 6d 6f 64 65 5d 20 69 73 20 73 65  king_mode] is se
2440: 74 20 74 6f 20 45 58 43 4c 55 53 49 56 45 2e 0a  t to EXCLUSIVE..
2450: 20 20 49 66 20 6f 6d 69 74 74 65 64 20 6f 72 20    If omitted or 
2460: 73 65 74 20 74 6f 20 30 20 74 68 65 6e 20 74 68  set to 0 then th
2470: 65 20 64 65 66 61 75 6c 74 20 5b 6c 6f 63 6b 69  e default [locki
2480: 6e 67 5f 6d 6f 64 65 5d 20 69 73 20 4e 4f 52 4d  ng_mode] is NORM
2490: 41 4c 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  AL..}..COMPILE_O
24a0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
24b0: 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54 55 53 3d  FAULT_MEMSTATUS=
24c0: 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 30 26 67 74  <i>&lt;1 or 0&gt
24d0: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
24e0: 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20 74 6f  macro is used to
24f0: 20 64 65 74 65 72 6d 69 6e 65 20 77 68 65 74 68   determine wheth
2500: 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 66 65  er or not the fe
2510: 61 74 75 72 65 73 20 65 6e 61 62 6c 65 64 20 61  atures enabled a
2520: 6e 64 0a 20 20 64 69 73 61 62 6c 65 64 20 75 73  nd.  disabled us
2530: 69 6e 67 20 74 68 65 20 53 51 4c 49 54 45 5f 43  ing the SQLITE_C
2540: 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 20  ONFIG_MEMSTATUS 
2550: 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73 71 6c  argument to [sql
2560: 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 0a 20  ite3_config()]. 
2570: 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 62   are available b
2580: 79 20 64 65 66 61 75 6c 74 2e 20 54 68 65 20 64  y default. The d
2590: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20  efault value is 
25a0: 31 20 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  1 ([SQLITE_CONFI
25b0: 47 5f 4d 45 4d 53 54 41 54 55 53 5d 0a 20 20 72  G_MEMSTATUS].  r
25c0: 65 6c 61 74 65 64 20 66 65 61 74 75 72 65 73 20  elated features 
25d0: 65 6e 61 62 6c 65 64 29 2e 0a 7d 0a 0a 43 4f 4d  enabled)..}..COM
25e0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
25f0: 49 54 45 5f 44 45 46 41 55 4c 54 5f 50 41 47 45  ITE_DEFAULT_PAGE
2600: 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 62 79 74  _SIZE=<i>&lt;byt
2610: 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20  es&gt;</i>} {.  
2620: 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20 75 73  This macro is us
2630: 65 64 20 74 6f 20 73 65 74 20 74 68 65 20 64 65  ed to set the de
2640: 66 61 75 6c 74 20 70 61 67 65 2d 73 69 7a 65 20  fault page-size 
2650: 75 73 65 64 20 77 68 65 6e 20 61 0a 20 20 64 61  used when a.  da
2660: 74 61 62 61 73 65 20 69 73 20 63 72 65 61 74 65  tabase is create
2670: 64 2e 20 54 68 65 20 76 61 6c 75 65 20 61 73 73  d. The value ass
2680: 69 67 6e 65 64 20 6d 75 73 74 20 62 65 20 61 20  igned must be a 
2690: 70 6f 77 65 72 20 6f 66 20 32 2e 20 54 68 65 0a  power of 2. The.
26a0: 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20    default value 
26b0: 69 73 20 31 30 32 34 2e 20 54 68 65 20 63 6f 6d  is 1024. The com
26c0: 70 69 6c 65 2d 74 69 6d 65 20 64 65 66 61 75 6c  pile-time defaul
26d0: 74 20 6d 61 79 20 62 65 20 6f 76 65 72 72 69 64  t may be overrid
26e0: 64 65 6e 20 61 74 20 0a 20 20 72 75 6e 74 69 6d  den at .  runtim
26f0: 65 20 62 79 20 74 68 65 20 5b 50 52 41 47 4d 41  e by the [PRAGMA
2700: 20 70 61 67 65 5f 73 69 7a 65 5d 20 63 6f 6d 6d   page_size] comm
2710: 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  and..}..COMPILE_
2720: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
2730: 45 46 41 55 4c 54 5f 57 41 4c 5f 41 55 54 4f 43  EFAULT_WAL_AUTOC
2740: 48 45 43 4b 50 4f 49 4e 54 3d 3c 69 3e 26 6c 74  HECKPOINT=<i>&lt
2750: 3b 70 61 67 65 73 26 67 74 3b 3c 2f 69 3e 7d 20  ;pages&gt;</i>} 
2760: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73  {.  This macro s
2770: 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  ets the default 
2780: 70 61 67 65 20 63 6f 75 6e 74 20 66 6f 72 20 74  page count for t
2790: 68 65 20 5b 57 41 4c 5d 0a 20 20 5b 63 68 65 63  he [WAL].  [chec
27a0: 6b 70 6f 69 6e 74 69 6e 67 20 7c 20 61 75 74 6f  kpointing | auto
27b0: 6d 61 74 69 63 20 63 68 65 63 6b 70 6f 69 6e 74  matic checkpoint
27c0: 69 6e 67 5d 20 66 65 61 74 75 72 65 2e 20 20 49  ing] feature.  I
27d0: 66 20 75 6e 73 70 65 63 69 66 69 65 64 2c 0a 20  f unspecified,. 
27e0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 70 61 67   the default pag
27f0: 65 20 63 6f 75 6e 74 20 69 73 20 31 30 30 30 2e  e count is 1000.
2800: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
2810: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55  ON {SQLITE_DEFAU
2820: 4c 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  LT_WORKER_THREAD
2830: 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20  S=<i>N</i>} {.  
2840: 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20  This macro sets 
2850: 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  the default valu
2860: 65 20 66 6f 72 0a 20 20 74 68 65 20 5b 53 51 4c  e for.  the [SQL
2870: 49 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52  ITE_LIMIT_WORKER
2880: 5f 54 48 52 45 41 44 53 5d 20 70 61 72 61 6d 65  _THREADS] parame
2890: 74 65 72 2e 20 20 54 68 65 20 5b 53 51 4c 49 54  ter.  The [SQLIT
28a0: 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54  E_LIMIT_WORKER_T
28b0: 48 52 45 41 44 53 5d 0a 20 20 70 61 72 61 6d 65  HREADS].  parame
28c0: 74 65 72 20 73 65 74 73 20 74 68 65 20 6d 61 78  ter sets the max
28d0: 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 61  imum number of a
28e0: 75 78 69 6c 69 61 72 79 20 74 68 72 65 61 64 73  uxiliary threads
28f0: 20 74 68 61 74 20 61 20 73 69 6e 67 6c 65 0a 20   that a single. 
2900: 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
2910: 6d 65 6e 74 5d 20 77 69 6c 6c 20 6c 61 75 6e 63  ment] will launc
2920: 68 20 74 6f 20 61 73 73 69 73 74 20 69 74 20 77  h to assist it w
2930: 69 74 68 20 61 20 71 75 65 72 79 2e 20 20 49 66  ith a query.  If
2940: 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64 2c 0a   not specified,.
2950: 20 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 61    the default ma
2960: 78 69 6d 75 6d 20 69 73 20 30 2e 0a 20 20 54 68  ximum is 0..  Th
2970: 65 20 76 61 6c 75 65 20 73 65 74 20 68 65 72 65  e value set here
2980: 20 63 61 6e 6e 6f 74 20 62 65 20 6d 6f 72 65 20   cannot be more 
2990: 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4d 41 58  than [SQLITE_MAX
29a0: 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 5d  _WORKER_THREADS]
29b0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
29c0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 58 54 52  ION {SQLITE_EXTR
29d0: 41 5f 44 55 52 41 42 4c 45 3d 3c 69 3e 26 6c 74  A_DURABLE=<i>&lt
29e0: 3b 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d  ;0 or 1&gt;</i>}
29f0: 20 7b 0a 20 20 49 66 20 74 68 65 20 53 51 4c 49   {.  If the SQLI
2a00: 54 45 5f 45 58 54 52 41 5f 44 55 52 41 42 4c 45  TE_EXTRA_DURABLE
2a10: 3d 31 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  =1 compile-time 
2a20: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
2a30: 68 65 6e 20 53 51 4c 69 74 65 20 77 6f 72 6b 73  hen SQLite works
2a40: 0a 20 20 68 61 72 64 65 72 20 74 6f 20 6d 61 6b  .  harder to mak
2a50: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 64  e transactions d
2a60: 75 72 61 62 6c 65 20 61 63 72 6f 73 73 20 70 6f  urable across po
2a70: 77 65 72 20 66 61 69 6c 75 72 65 73 2e 0a 20 20  wer failures..  
2a80: 54 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61  The default beha
2a90: 76 69 6f 72 20 28 53 51 4c 49 54 45 5f 45 58 54  vior (SQLITE_EXT
2aa0: 52 41 5f 44 55 52 41 42 4c 45 3d 30 29 20 69 73  RA_DURABLE=0) is
2ab0: 20 74 68 61 74 20 74 68 65 20 61 20 63 6f 6d 6d   that the a comm
2ac0: 69 74 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f  itted transactio
2ad0: 6e 0a 20 20 6d 69 67 68 74 20 72 6f 6c 6c 62 61  n.  might rollba
2ae0: 63 6b 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 65 63  ck following rec
2af0: 6f 76 65 72 79 20 66 72 6f 6d 20 61 20 70 6f 77  overy from a pow
2b00: 65 72 20 6c 6f 73 73 2e 0a 20 20 54 68 65 20 64  er loss..  The d
2b10: 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20  efault behavior 
2b20: 69 73 20 66 61 73 74 65 72 20 61 6e 64 20 73 69  is faster and si
2b30: 6e 63 65 0a 20 20 6d 6f 73 74 20 61 70 70 6c 69  nce.  most appli
2b40: 63 61 74 69 6f 6e 73 20 70 72 65 66 65 72 20 65  cations prefer e
2b50: 78 74 72 61 20 70 65 72 66 6f 72 6d 61 6e 63 65  xtra performance
2b60: 20 61 6e 64 20 61 72 65 20 68 61 70 70 79 20 74   and are happy t
2b70: 6f 0a 20 20 65 6e 64 75 72 65 20 61 6e 20 6f 63  o.  endure an oc
2b80: 63 61 73 69 6f 6e 61 6c 20 72 6f 6c 6c 62 61 63  casional rollbac
2b90: 6b 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 20 70 6f  k following a po
2ba0: 77 65 72 2d 6c 6f 73 73 20 72 65 63 6f 76 65 72  wer-loss recover
2bb0: 79 2e 0a 20 20 41 70 70 6c 69 63 61 74 69 6f 6e  y..  Application
2bc0: 73 20 66 6f 72 20 77 68 69 63 68 20 74 72 61 6e  s for which tran
2bd0: 73 61 63 74 69 6f 6e 20 64 75 72 61 62 69 6c 69  saction durabili
2be0: 74 79 20 69 73 20 6d 6f 72 65 20 69 6d 70 6f 72  ty is more impor
2bf0: 74 61 6e 74 20 63 61 6e 20 73 65 74 0a 20 20 74  tant can set.  t
2c00: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
2c10: 20 6f 70 74 69 6f 6e 20 66 6f 72 20 65 78 74 72   option for extr
2c20: 61 20 70 72 6f 74 65 63 74 69 6f 6e 2e 0a 20 20  a protection..  
2c30: 3c 70 3e 0a 20 20 49 6e 20 74 68 65 20 63 75 72  <p>.  In the cur
2c40: 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74  rent implementat
2c50: 69 6f 6e 20 28 5b 76 65 72 73 69 6f 6e 20 33 2e  ion ([version 3.
2c60: 31 31 2e 30 5d 29 2c 20 74 68 69 73 20 6f 70 74  11.0]), this opt
2c70: 69 6f 6e 20 6f 6e 6c 79 20 6d 61 6b 65 73 20 61  ion only makes a
2c80: 0a 20 20 64 69 66 66 65 72 65 6e 63 65 20 77 68  .  difference wh
2c90: 65 6e 20 63 6f 6d 6d 69 74 74 69 6e 67 20 61 20  en committing a 
2ca0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 6e 20 5b  transaction in [
2cb0: 50 52 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d  PRAGMA journal_m
2cc0: 6f 64 65 3d 44 45 4c 45 54 45 5d 0a 20 20 61 6e  ode=DELETE].  an
2cd0: 64 20 5b 50 52 41 47 4d 41 20 73 79 6e 63 68 72  d [PRAGMA synchr
2ce0: 6f 6e 6f 75 73 3d 46 55 4c 4c 5d 2e 20 20 49 6e  onous=FULL].  In
2cf0: 20 74 68 61 74 20 73 63 65 6e 61 72 69 6f 2c 20   that scenario, 
2d00: 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f  the directory co
2d10: 6e 74 61 69 6e 69 6e 67 20 74 68 65 0a 20 20 72  ntaining the.  r
2d20: 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20  ollback journal 
2d30: 69 73 20 73 79 6e 63 65 64 20 61 66 74 65 72 20  is synced after 
2d40: 74 68 65 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75  the rollback jou
2d50: 72 6e 61 6c 20 69 73 20 64 65 6c 65 74 65 64 2c  rnal is deleted,
2d60: 20 74 6f 20 65 6e 73 75 72 65 0a 20 20 74 68 61   to ensure.  tha
2d70: 74 20 74 68 65 20 72 6f 6c 6c 62 61 63 6b 20 6a  t the rollback j
2d80: 6f 75 72 6e 61 6c 20 73 74 61 79 73 20 64 65 6c  ournal stays del
2d90: 65 74 65 64 20 61 66 74 65 72 20 72 65 63 6f 76  eted after recov
2da0: 65 72 79 20 66 72 6f 6d 20 70 6f 77 65 72 20 6c  ery from power l
2db0: 6f 73 73 2e 0a 20 20 3c 70 3e 0a 20 20 41 64 64  oss..  <p>.  Add
2dc0: 69 74 69 6f 6e 61 6c 20 6e 6f 74 65 73 3a 0a 20  itional notes:. 
2dd0: 20 3c 6f 6c 3e 0a 20 20 3c 6c 69 3e 3c 70 3e 0a   <ol>.  <li><p>.
2de0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6e    This option on
2df0: 6c 79 20 61 66 66 65 63 74 73 20 74 72 61 6e 73  ly affects trans
2e00: 61 63 74 69 6f 6e 20 64 75 72 61 62 69 6c 69 74  action durabilit
2e10: 79 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 6f 77 65  y following powe
2e20: 72 20 6c 6f 73 73 2e 0a 20 20 54 68 65 20 64 65  r loss..  The de
2e30: 66 61 75 6c 74 20 63 6f 6e 66 69 67 75 72 61 74  fault configurat
2e40: 69 6f 6e 20 61 6c 77 61 79 73 20 65 6e 73 75 72  ion always ensur
2e50: 65 73 20 63 6f 6e 73 69 73 74 65 6e 63 79 2c 20  es consistency, 
2e60: 69 6e 63 6c 75 64 69 6e 67 20 61 66 74 65 72 20  including after 
2e70: 0a 20 20 61 20 70 6f 77 65 72 20 6c 6f 73 73 2c  .  a power loss,
2e80: 20 61 6e 64 20 65 6e 73 75 72 65 73 20 64 75 72   and ensures dur
2e90: 61 62 6c 65 20 69 6e 20 74 68 65 20 61 62 73 65  able in the abse
2ea0: 6e 63 65 20 6f 66 20 61 20 70 6f 77 65 72 20 6c  nce of a power l
2eb0: 6f 73 73 2c 20 0a 20 20 72 65 67 61 72 64 6c 65  oss, .  regardle
2ec0: 73 73 20 6f 66 20 74 68 69 73 20 73 65 74 74 69  ss of this setti
2ed0: 6e 67 2e 0a 20 20 3c 6c 69 3e 3c 70 3e 0a 20 20  ng..  <li><p>.  
2ee0: 5b 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e  [PRAGMA synchron
2ef0: 6f 75 73 3d 46 55 4c 4c 5d 20 6d 75 73 74 20 62  ous=FULL] must b
2f00: 65 20 73 65 74 20 61 74 20 72 75 6e 20 74 69 6d  e set at run tim
2f10: 65 2c 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74  e, in addition t
2f20: 6f 20 74 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65  o this.  compile
2f30: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 66 6f  -time option, fo
2f40: 72 20 70 6f 77 65 72 2d 6c 6f 73 73 20 64 75 72  r power-loss dur
2f50: 61 62 69 6c 69 74 79 2e 20 20 0a 20 20 46 55 4c  ability.  .  FUL
2f60: 4c 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73  L synchronous is
2f70: 20 74 68 65 20 64 65 66 61 75 6c 74 20 77 68 65   the default whe
2f80: 6e 20 75 73 69 6e 67 20 61 20 5b 72 6f 6c 6c 62  n using a [rollb
2f90: 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 0a 20 20 62  ack journal].  b
2fa0: 75 74 20 4e 4f 52 4d 41 4c 20 73 79 6e 63 68 72  ut NORMAL synchr
2fb0: 6f 6e 6f 75 73 20 69 73 20 74 68 65 20 64 65 66  onous is the def
2fc0: 61 75 6c 74 20 66 6f 72 20 5b 57 41 4c 20 6d 6f  ault for [WAL mo
2fd0: 64 65 5d 2e 0a 20 20 3c 6c 69 3e 3c 70 3e 0a 20  de]..  <li><p>. 
2fe0: 20 54 72 61 6e 73 61 63 74 69 6f 6e 73 20 61 72   Transactions ar
2ff0: 65 20 63 6f 6e 73 69 73 74 65 6e 74 20 61 6e 64  e consistent and
3000: 20 64 75 72 61 62 6c 65 20 61 63 72 6f 73 73 20   durable across 
3010: 70 6f 77 65 72 2d 6c 6f 73 73 20 77 69 74 68 0a  power-loss with.
3020: 20 20 5b 50 52 41 47 4d 41 20 6a 6f 75 72 6e 61    [PRAGMA journa
3030: 6c 5f 6d 6f 64 65 3d 54 52 55 4e 43 41 54 45 5d  l_mode=TRUNCATE]
3040: 20 61 6e 64 20 5b 50 52 41 47 4d 41 20 6a 6f 75   and [PRAGMA jou
3050: 72 6e 61 6c 5f 6d 6f 64 65 3d 50 45 52 53 49 53  rnal_mode=PERSIS
3060: 54 5d 20 61 6e 64 0a 20 20 5b 50 52 41 47 4d 41  T] and.  [PRAGMA
3070: 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 3d 57 41   journal_mode=WA
3080: 4c 5d 20 65 76 65 6e 0a 20 20 77 69 74 68 6f 75  L] even.  withou
3090: 74 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  t this compile-t
30a0: 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 61 73 20 6c  ime option, as l
30b0: 6f 6e 67 20 61 73 20 5b 50 52 41 47 4d 41 20 73  ong as [PRAGMA s
30c0: 79 6e 63 68 72 6f 6e 6f 75 73 3d 46 55 4c 4c 5d  ynchronous=FULL]
30d0: 20 69 73 20 73 65 74 2e 0a 20 20 3c 2f 6f 6c 3e   is set..  </ol>
30e0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
30f0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 46 54 53 33 5f  ON {SQLITE_FTS3_
3100: 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48 3d 3c  MAX_EXPR_DEPTH=<
3110: 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  i>N</i>} {.  Thi
3120: 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65  s macro sets the
3130: 20 6d 61 78 69 6d 75 6d 20 64 65 70 74 68 20 6f   maximum depth o
3140: 66 20 74 68 65 20 73 65 61 72 63 68 20 74 72 65  f the search tre
3150: 65 20 74 68 61 74 20 63 6f 72 72 65 73 70 6f 6e  e that correspon
3160: 64 73 20 74 6f 0a 20 20 74 68 65 20 72 69 67 68  ds to.  the righ
3170: 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20 74  t-hand side of t
3180: 68 65 20 4d 41 54 43 48 20 6f 70 65 72 61 74 6f  he MATCH operato
3190: 72 20 69 6e 20 61 6e 20 5b 46 54 53 33 5d 20 6f  r in an [FTS3] o
31a0: 72 20 5b 46 54 53 34 5d 20 66 75 6c 6c 2d 74 65  r [FTS4] full-te
31b0: 78 74 0a 20 20 69 6e 64 65 78 2e 20 20 54 68 65  xt.  index.  The
31c0: 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72 63   full-text searc
31d0: 68 20 75 73 65 73 20 61 20 72 65 63 75 72 73 69  h uses a recursi
31e0: 76 65 20 61 6c 67 6f 72 69 74 68 6d 2c 20 73 6f  ve algorithm, so
31f0: 20 74 68 65 20 64 65 70 74 68 20 6f 66 0a 20 20   the depth of.  
3200: 74 68 65 20 74 72 65 65 20 69 73 20 6c 69 6d 69  the tree is limi
3210: 74 65 64 20 74 6f 20 70 72 65 76 65 6e 74 20 75  ted to prevent u
3220: 73 69 6e 67 20 74 6f 6f 20 6d 75 63 68 20 73 74  sing too much st
3230: 61 63 6b 20 73 70 61 63 65 2e 20 20 54 68 65 20  ack space.  The 
3240: 64 65 66 61 75 6c 74 0a 20 20 6c 69 6d 69 74 20  default.  limit 
3250: 69 73 20 31 32 2e 20 20 54 68 69 73 20 6c 69 6d  is 12.  This lim
3260: 69 74 20 69 73 20 73 75 66 66 69 63 69 65 6e 74  it is sufficient
3270: 20 66 6f 72 20 75 70 20 74 6f 20 34 30 39 35 20   for up to 4095 
3280: 73 65 61 72 63 68 20 74 65 72 6d 73 20 6f 6e 20  search terms on 
3290: 74 68 65 0a 20 20 72 69 67 68 74 2d 68 61 6e 64  the.  right-hand
32a0: 20 73 69 64 65 20 6f 66 20 74 68 65 20 4d 41 54   side of the MAT
32b0: 43 48 20 6f 70 65 72 61 74 6f 72 20 61 6e 64 20  CH operator and 
32c0: 69 74 20 68 6f 6c 64 73 20 73 74 61 63 6b 20 73  it holds stack s
32d0: 70 61 63 65 20 75 73 61 67 65 20 74 6f 20 0a 20  pace usage to . 
32e0: 20 6c 65 73 73 20 74 68 61 6e 20 32 30 30 30 20   less than 2000 
32f0: 62 79 74 65 73 2e 0a 20 20 3c 70 3e 0a 20 20 46  bytes..  <p>.  F
3300: 6f 72 20 6f 72 64 69 6e 61 72 79 20 46 54 53 33  or ordinary FTS3
3310: 2f 46 54 53 34 20 71 75 65 72 69 65 73 2c 20 74  /FTS4 queries, t
3320: 68 65 20 73 65 61 72 63 68 20 74 72 65 65 20 64  he search tree d
3330: 65 70 74 68 20 69 73 20 61 70 70 72 6f 78 69 6d  epth is approxim
3340: 61 74 65 6c 79 0a 20 20 74 68 65 20 62 61 73 65  ately.  the base
3350: 2d 32 20 6c 6f 67 61 72 69 74 68 6d 20 6f 66 20  -2 logarithm of 
3360: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 65  the number of te
3370: 72 6d 73 20 69 6e 20 74 68 65 20 72 69 67 68 74  rms in the right
3380: 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68  -hand side of th
3390: 65 0a 20 20 4d 41 54 43 48 20 6f 70 65 72 61 74  e.  MATCH operat
33a0: 6f 72 2e 20 20 48 6f 77 65 76 65 72 2c 20 66 6f  or.  However, fo
33b0: 72 20 5b 70 68 72 61 73 65 20 71 75 65 72 69 65  r [phrase querie
33c0: 73 5d 20 61 6e 64 20 5b 4e 45 41 52 20 71 75 65  s] and [NEAR que
33d0: 72 69 65 73 5d 20 74 68 65 0a 20 20 73 65 61 72  ries] the.  sear
33e0: 63 68 20 74 72 65 65 20 64 65 70 74 68 20 69 73  ch tree depth is
33f0: 20 6c 69 6e 65 61 72 20 69 6e 20 74 68 65 20 6e   linear in the n
3400: 75 6d 62 65 72 20 6f 66 20 72 69 67 68 74 2d 68  umber of right-h
3410: 61 6e 64 20 73 69 64 65 20 74 65 72 6d 73 2e 0a  and side terms..
3420: 20 20 53 6f 20 74 68 65 20 64 65 66 61 75 6c 74    So the default
3430: 20 64 65 70 74 68 20 6c 69 6d 69 74 20 6f 66 20   depth limit of 
3440: 31 32 20 69 73 20 73 75 66 66 69 63 69 65 6e 74  12 is sufficient
3450: 20 66 6f 72 20 75 70 20 74 6f 20 34 30 39 35 20   for up to 4095 
3460: 6f 72 64 69 6e 61 72 79 0a 20 20 74 65 72 6d 73  ordinary.  terms
3470: 20 6f 6e 20 61 20 4d 41 54 43 48 2c 20 69 74 20   on a MATCH, it 
3480: 69 73 20 6f 6e 6c 79 20 73 75 66 66 69 63 69 65  is only sufficie
3490: 6e 74 20 66 6f 72 20 31 31 20 6f 72 20 31 32 20  nt for 11 or 12 
34a0: 70 68 72 61 73 65 20 6f 72 20 4e 45 41 52 0a 20  phrase or NEAR. 
34b0: 20 74 65 72 6d 73 2e 20 20 45 76 65 6e 20 73 6f   terms.  Even so
34c0: 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 69 73  , the default is
34d0: 20 6d 6f 72 65 20 74 68 61 6e 20 65 6e 6f 75 67   more than enoug
34e0: 68 20 66 6f 72 20 6d 6f 73 74 20 61 70 70 6c 69  h for most appli
34f0: 63 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49  cation..}..COMPI
3500: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
3510: 45 5f 4c 49 4b 45 5f 44 4f 45 53 4e 54 5f 4d 41  E_LIKE_DOESNT_MA
3520: 54 43 48 5f 42 4c 4f 42 53 7d 20 7b 0a 20 20 54  TCH_BLOBS} {.  T
3530: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
3540: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74   option causes t
3550: 68 65 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74  he [LIKE] operat
3560: 6f 72 20 74 6f 20 61 6c 77 61 79 73 20 72 65 74  or to always ret
3570: 75 72 6e 20 0a 20 20 46 61 6c 73 65 20 69 66 20  urn .  False if 
3580: 65 69 74 68 65 72 20 6f 70 65 72 61 6e 64 20 69  either operand i
3590: 73 20 61 20 42 4c 4f 42 2e 20 20 54 68 65 20 64  s a BLOB.  The d
35a0: 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20  efault behavior 
35b0: 6f 66 20 5b 4c 49 4b 45 5d 20 0a 20 20 69 73 20  of [LIKE] .  is 
35c0: 74 68 61 74 20 42 4c 4f 42 20 6f 70 65 72 61 6e  that BLOB operan
35d0: 64 73 20 61 72 65 20 63 61 73 74 20 74 6f 20 54  ds are cast to T
35e0: 45 58 54 20 62 65 66 6f 72 65 20 74 68 65 20 63  EXT before the c
35f0: 6f 6d 70 61 72 69 73 6f 6e 20 69 73 20 64 6f 6e  omparison is don
3600: 65 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 69 73 20  e..  <p>.  This 
3610: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
3620: 69 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65  ion makes SQLite
3630: 20 72 75 6e 20 6d 6f 72 65 20 65 66 66 69 63 69   run more effici
3640: 65 6e 74 6c 79 20 77 68 65 6e 20 70 72 6f 63 65  ently when proce
3650: 73 73 69 6e 67 0a 20 20 71 75 65 72 69 65 73 20  ssing.  queries 
3660: 74 68 61 74 20 75 73 65 20 74 68 65 20 5b 4c 49  that use the [LI
3670: 4b 45 5d 20 6f 70 65 72 61 74 6f 72 2c 20 61 74  KE] operator, at
3680: 20 74 68 65 20 65 78 70 65 6e 73 65 20 6f 66 20   the expense of 
3690: 62 72 65 61 6b 69 6e 67 20 62 61 63 6b 77 61 72  breaking backwar
36a0: 64 73 0a 20 20 63 6f 6d 70 61 74 69 62 69 6c 69  ds.  compatibili
36b0: 74 79 2e 20 20 48 6f 77 65 76 65 72 2c 20 74 68  ty.  However, th
36c0: 65 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70  e backwards comp
36d0: 61 74 69 62 69 6c 69 74 79 20 62 72 65 61 6b 20  atibility break 
36e0: 6d 61 79 20 62 65 20 6f 6e 6c 79 0a 20 20 61 20  may be only.  a 
36f0: 74 65 63 68 6e 69 63 61 6c 69 74 79 2e 20 20 54  technicality.  T
3700: 68 65 72 65 20 77 61 73 20 61 20 6c 6f 6e 67 2d  here was a long-
3710: 73 74 61 6e 64 69 6e 67 20 62 75 67 20 69 6e 20  standing bug in 
3720: 74 68 65 20 5b 4c 49 4b 45 5d 20 70 72 6f 63 65  the [LIKE] proce
3730: 73 73 69 6e 67 20 6c 6f 67 69 63 0a 20 20 28 73  ssing logic.  (s
3740: 65 65 20 5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e  ee [https://www.
3750: 73 71 6c 69 74 65 2e 6f 72 67 2f 73 72 63 2f 69  sqlite.org/src/i
3760: 6e 66 6f 2f 30 35 66 34 33 62 65 38 66 64 64 61  nfo/05f43be8fdda
3770: 39 66 5d 29 20 74 68 61 74 20 63 61 75 73 65 64  9f]) that caused
3780: 20 69 74 20 74 6f 0a 20 20 6d 69 73 62 65 68 61   it to.  misbeha
3790: 76 69 6f 72 20 66 6f 72 20 42 4c 4f 42 20 6f 70  vior for BLOB op
37a0: 65 72 61 6e 64 73 20 61 6e 64 20 6e 6f 62 6f 64  erands and nobod
37b0: 79 20 6f 62 73 65 72 76 65 64 20 74 68 61 74 20  y observed that 
37c0: 62 75 67 20 69 6e 20 6e 65 61 72 6c 79 0a 20 20  bug in nearly.  
37d0: 31 30 20 79 65 61 72 73 20 6f 66 20 61 63 74 69  10 years of acti
37e0: 76 65 20 75 73 65 2e 20 20 53 6f 20 66 6f 72 20  ve use.  So for 
37f0: 6d 6f 72 65 20 75 73 65 72 73 2c 20 69 74 20 69  more users, it i
3800: 73 20 70 72 6f 62 61 62 6c 79 20 73 61 66 65 20  s probably safe 
3810: 74 6f 0a 20 20 65 6e 61 62 6c 65 20 74 68 69 73  to.  enable this
3820: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
3830: 74 69 6f 6e 20 61 6e 64 20 74 68 65 72 65 62 79  tion and thereby
3840: 20 73 61 76 65 20 61 20 6c 69 74 74 6c 65 20 43   save a little C
3850: 50 55 20 74 69 6d 65 0a 20 20 6f 6e 20 4c 49 4b  PU time.  on LIK
3860: 45 20 71 75 65 72 69 65 73 2e 0a 20 20 3c 70 3e  E queries..  <p>
3870: 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d  .  This compile-
3880: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 61 66 66 65  time option affe
3890: 63 74 73 20 74 68 65 20 53 51 4c 20 5b 4c 49 4b  cts the SQL [LIK
38a0: 45 5d 20 6f 70 65 72 61 74 6f 72 20 6f 6e 6c 79  E] operator only
38b0: 20 61 6e 64 20 68 61 73 0a 20 20 6e 6f 20 69 6d   and has.  no im
38c0: 70 61 63 74 20 6f 6e 20 74 68 65 20 5b 73 71 6c  pact on the [sql
38d0: 69 74 65 33 5f 73 74 72 6c 69 6b 65 28 29 5d 20  ite3_strlike()] 
38e0: 43 2d 6c 61 6e 67 75 61 67 65 20 69 6e 74 65 72  C-language inter
38f0: 66 61 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  face..}..COMPILE
3900: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
3910: 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 3d 3c 69  MAX_MMAP_SIZE=<i
3920: 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  >N</i>} {.  This
3930: 20 6d 61 63 72 6f 20 73 65 74 73 20 61 20 68 61   macro sets a ha
3940: 72 64 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f  rd upper bound o
3950: 6e 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20  n the amount of 
3960: 61 64 64 72 65 73 73 20 73 70 61 63 65 20 74 68  address space th
3970: 61 74 0a 20 20 63 61 6e 20 62 65 20 75 73 65 64  at.  can be used
3980: 20 62 79 20 61 6e 79 20 73 69 6e 67 6c 65 20 64   by any single d
3990: 61 74 61 62 61 73 65 20 66 6f 72 20 6d 65 6d 6f  atabase for memo
39a0: 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 2e 0a 20  ry-mapped I/O.. 
39b0: 20 53 65 74 74 69 6e 67 20 74 68 69 73 20 76 61   Setting this va
39c0: 6c 75 65 20 74 6f 20 30 20 63 6f 6d 70 6c 65 74  lue to 0 complet
39d0: 65 6c 79 20 64 69 73 61 62 6c 65 73 20 6d 65 6d  ely disables mem
39e0: 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20 61  ory-mapped I/O a
39f0: 6e 64 0a 20 20 63 61 75 73 65 73 20 6c 6f 67 69  nd.  causes logi
3a00: 63 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  c associated wit
3a10: 68 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20  h memory-mapped 
3a20: 49 2f 4f 20 74 6f 20 62 65 20 6f 6d 69 74 74 65  I/O to be omitte
3a30: 64 20 66 72 6f 6d 20 74 68 65 0a 20 20 62 75 69  d from the.  bui
3a40: 6c 64 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  ld.  This option
3a50: 20 64 6f 65 73 20 63 68 61 6e 67 65 20 74 68 65   does change the
3a60: 20 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 2d   default memory-
3a70: 6d 61 70 70 65 64 20 49 2f 4f 20 61 64 64 72 65  mapped I/O addre
3a80: 73 73 0a 20 20 73 70 61 63 65 20 73 69 7a 65 20  ss.  space size 
3a90: 28 73 65 74 20 62 79 20 5b 53 51 4c 49 54 45 5f  (set by [SQLITE_
3aa0: 44 45 46 41 55 4c 54 5f 4d 4d 41 50 5f 53 49 5a  DEFAULT_MMAP_SIZ
3ab0: 45 5d 20 6f 72 0a 20 20 73 71 6c 69 74 65 33 5f  E] or.  sqlite3_
3ac0: 63 6f 6e 66 69 67 28 5b 53 51 4c 49 54 45 5f 43  config([SQLITE_C
3ad0: 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 5d  ONFIG_MMAP_SIZE]
3ae0: 29 20 6f 72 20 74 68 65 0a 20 20 72 75 6e 2d 74  ) or the.  run-t
3af0: 69 6d 65 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65  ime memory-mappe
3b00: 64 20 49 2f 4f 20 61 64 64 72 65 73 73 20 73 70  d I/O address sp
3b10: 61 63 65 20 73 69 7a 65 20 28 73 65 74 20 62 79  ace size (set by
3b20: 0a 20 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  .  sqlite3_file_
3b30: 63 6f 6e 74 72 6f 6c 28 5b 53 51 4c 49 54 45 5f  control([SQLITE_
3b40: 46 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d  FCNTL_MMAP_SIZE]
3b50: 29 20 6f 72 0a 20 20 5b 50 52 41 47 4d 41 20 6d  ) or.  [PRAGMA m
3b60: 6d 61 70 5f 73 69 7a 65 5d 29 20 61 73 20 6c 6f  map_size]) as lo
3b70: 6e 67 20 61 73 20 74 68 6f 73 65 20 6f 74 68 65  ng as those othe
3b80: 72 20 73 65 74 74 69 6e 67 73 20 61 72 65 20 6c  r settings are l
3b90: 65 73 73 20 74 68 61 6e 20 74 68 65 0a 20 20 6d  ess than the.  m
3ba0: 61 78 69 6d 75 6d 20 76 61 6c 75 65 20 64 65 66  aximum value def
3bb0: 69 6e 65 64 20 68 65 72 65 2e 0a 7d 0a 0a 43 4f  ined here..}..CO
3bc0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
3bd0: 4c 49 54 45 5f 4d 41 58 5f 53 43 48 45 4d 41 5f  LITE_MAX_SCHEMA_
3be0: 52 45 54 52 59 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20  RETRY=<i>N</i>} 
3bf0: 7b 0a 20 20 57 68 65 6e 65 76 65 72 20 74 68 65  {.  Whenever the
3c00: 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61   database schema
3c10: 20 63 68 61 6e 67 65 73 2c 20 70 72 65 70 61 72   changes, prepar
3c20: 65 64 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72  ed statements ar
3c30: 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a  e automatically.
3c40: 20 20 72 65 70 72 65 70 61 72 65 64 20 74 6f 20    reprepared to 
3c50: 61 63 63 6f 6d 6d 6f 64 61 74 65 20 74 68 65 20  accommodate the 
3c60: 6e 65 77 20 73 63 68 65 6d 61 2e 20 20 54 68 65  new schema.  The
3c70: 72 65 20 69 73 20 61 20 72 61 63 65 20 63 6f 6e  re is a race con
3c80: 64 69 74 69 6f 6e 20 68 65 72 65 0a 20 20 69 6e  dition here.  in
3c90: 20 74 68 61 74 20 69 66 20 6f 6e 65 20 74 68 72   that if one thr
3ca0: 65 61 64 20 69 73 20 63 6f 6e 73 74 61 6e 74 6c  ead is constantl
3cb0: 79 20 63 68 61 6e 67 69 6e 67 20 74 68 65 20 73  y changing the s
3cc0: 63 68 65 6d 61 2c 20 61 6e 6f 74 68 65 72 20 74  chema, another t
3cd0: 68 72 65 61 64 0a 20 20 6d 69 67 68 74 20 73 70  hread.  might sp
3ce0: 69 6e 20 6f 6e 20 72 65 70 61 72 73 65 73 20 61  in on reparses a
3cf0: 6e 64 20 72 65 70 72 65 70 61 72 61 74 69 6f 6e  nd repreparation
3d00: 73 20 6f 66 20 61 20 70 72 65 70 61 72 65 64 20  s of a prepared 
3d10: 73 74 61 74 65 6d 65 6e 74 20 61 6e 64 0a 20 20  statement and.  
3d20: 6e 65 76 65 72 20 67 65 74 20 61 6e 79 20 72 65  never get any re
3d30: 61 6c 20 77 6f 72 6b 20 64 6f 6e 65 2e 20 20 54  al work done.  T
3d40: 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 70 72  his parameter pr
3d50: 65 76 65 6e 74 73 20 61 6e 20 69 6e 66 69 6e 69  events an infini
3d60: 74 65 20 6c 6f 6f 70 0a 20 20 62 79 20 66 6f 72  te loop.  by for
3d70: 63 69 6e 67 20 74 68 65 20 73 70 69 6e 6e 69 6e  cing the spinnin
3d80: 67 20 74 68 72 65 61 64 20 74 6f 20 67 69 76 65  g thread to give
3d90: 20 75 70 20 61 66 74 65 72 20 61 20 66 69 78 65   up after a fixe
3da0: 64 20 6e 75 6d 62 65 72 20 6f 66 20 61 74 74 65  d number of atte
3db0: 6d 70 74 73 0a 20 20 61 74 20 72 65 63 6f 6d 70  mpts.  at recomp
3dc0: 69 6c 69 6e 67 20 74 68 65 20 70 72 65 70 61 72  iling the prepar
3dd0: 65 64 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  ed statement.  T
3de0: 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69  he default setti
3df0: 6e 67 20 69 73 20 35 30 20 77 68 69 63 68 20 69  ng is 50 which i
3e00: 73 0a 20 20 6d 6f 72 65 20 74 68 61 6e 20 61 64  s.  more than ad
3e10: 65 71 75 61 74 65 20 66 6f 72 20 6d 6f 73 74 20  equate for most 
3e20: 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a  applications..}.
3e30: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
3e40: 7b 53 51 4c 49 54 45 5f 4d 41 58 5f 57 4f 52 4b  {SQLITE_MAX_WORK
3e50: 45 52 5f 54 48 52 45 41 44 53 3d 3c 69 3e 4e 3c  ER_THREADS=<i>N<
3e60: 2f 69 3e 7d 20 7b 0a 20 20 53 65 74 20 61 6e 20  /i>} {.  Set an 
3e70: 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74  upper bound on t
3e80: 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69  he [sqlite3_limi
3e90: 74 5d 28 64 62 2c 5b 53 51 4c 49 54 45 5f 4c 49  t](db,[SQLITE_LI
3ea0: 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41  MIT_WORKER_THREA
3eb0: 44 53 5d 2c 4e 29 0a 20 20 73 65 74 74 69 6e 67  DS],N).  setting
3ec0: 20 74 68 61 74 20 64 65 74 65 72 6d 69 6e 65 73   that determines
3ed0: 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d   the maximum num
3ee0: 62 65 72 20 6f 66 20 61 75 78 69 6c 69 61 72 79  ber of auxiliary
3ef0: 20 74 68 72 65 61 64 73 20 74 68 61 74 20 61 20   threads that a 
3f00: 73 69 6e 67 6c 65 0a 20 20 5b 70 72 65 70 61 72  single.  [prepar
3f10: 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 77 69  ed statement] wi
3f20: 6c 6c 20 75 73 65 20 74 6f 20 61 69 64 20 77 69  ll use to aid wi
3f30: 74 68 20 43 50 55 2d 69 6e 74 65 6e 73 69 76 65  th CPU-intensive
3f40: 20 63 6f 6d 70 75 74 61 74 69 6f 6e 73 0a 20 20   computations.  
3f50: 28 6d 6f 73 74 6c 79 20 73 6f 72 74 69 6e 67 29  (mostly sorting)
3f60: 2e 20 20 53 65 65 20 61 6c 73 6f 20 74 68 65 20  .  See also the 
3f70: 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  [SQLITE_DEFAULT_
3f80: 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 5d 20  WORKER_THREADS] 
3f90: 6f 70 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50  options..}..COMP
3fa0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
3fb0: 54 45 5f 4d 49 4e 49 4d 55 4d 5f 46 49 4c 45 5f  TE_MINIMUM_FILE_
3fc0: 44 45 53 43 52 49 50 54 4f 52 3d 3c 69 3e 4e 3c  DESCRIPTOR=<i>N<
3fd0: 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20 75 6e 69  /i>} {.  The uni
3fe0: 78 20 5b 56 46 53 5d 20 77 69 6c 6c 20 6e 65 76  x [VFS] will nev
3ff0: 65 72 20 75 73 65 20 61 20 66 69 6c 65 20 64 65  er use a file de
4000: 73 63 72 69 70 74 6f 72 20 6c 65 73 73 20 74 68  scriptor less th
4010: 61 6e 20 3c 69 3e 4e 3c 2f 69 3e 2e 20 20 54 68  an <i>N</i>.  Th
4020: 65 0a 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75  e.  default valu
4030: 65 20 6f 66 20 3c 69 3e 4e 3c 2f 69 3e 20 69 73  e of <i>N</i> is
4040: 20 33 2e 0a 20 20 3c 70 3e 0a 20 20 41 76 6f 69   3..  <p>.  Avoi
4050: 64 69 6e 67 20 74 68 65 20 75 73 65 20 6f 66 20  ding the use of 
4060: 6c 6f 77 2d 6e 75 6d 62 65 72 65 64 20 66 69 6c  low-numbered fil
4070: 65 20 64 65 73 63 72 69 70 74 6f 72 73 20 69 73  e descriptors is
4080: 20 61 20 64 65 66 65 6e 73 65 20 61 67 61 69 6e   a defense again
4090: 73 74 0a 20 20 61 63 63 69 64 65 6e 74 61 6c 20  st.  accidental 
40a0: 64 61 74 61 62 61 73 65 20 63 6f 72 72 75 70 74  database corrupt
40b0: 69 6f 6e 2e 20 20 49 66 20 61 20 64 61 74 61 62  ion.  If a datab
40c0: 61 73 65 20 66 69 6c 65 20 77 61 73 20 6f 70 65  ase file was ope
40d0: 6e 65 64 20 75 73 69 6e 67 0a 20 20 66 69 6c 65  ned using.  file
40e0: 20 64 65 73 63 72 69 70 74 6f 72 20 32 2c 20 66   descriptor 2, f
40f0: 6f 72 20 65 78 61 6d 70 6c 65 2c 20 61 6e 64 20  or example, and 
4100: 74 68 65 6e 20 61 6e 20 61 73 73 65 72 74 28 29  then an assert()
4110: 20 66 61 69 6c 65 64 20 61 6e 64 20 69 6e 76 6f   failed and invo
4120: 6b 65 64 0a 20 20 77 72 69 74 65 28 32 2c 2e 2e  ked.  write(2,..
4130: 2e 29 2c 20 74 68 61 74 20 77 6f 75 6c 64 20 6c  .), that would l
4140: 69 6b 65 6c 79 20 63 61 75 73 65 20 64 61 74 61  ikely cause data
4150: 62 61 73 65 20 63 6f 72 72 75 70 74 69 6f 6e 20  base corruption 
4160: 62 79 20 6f 76 65 72 77 72 69 74 69 6e 67 0a 20  by overwriting. 
4170: 20 70 61 72 74 20 6f 66 20 74 68 65 20 64 61 74   part of the dat
4180: 61 62 61 73 65 20 66 69 6c 65 20 77 69 74 68 20  abase file with 
4190: 74 68 65 20 61 73 73 65 72 74 69 6f 6e 20 65 72  the assertion er
41a0: 72 6f 72 20 6d 65 73 73 61 67 65 2e 20 20 55 73  ror message.  Us
41b0: 69 6e 67 20 6f 6e 6c 79 0a 20 20 68 69 67 68 65  ing only.  highe
41c0: 72 2d 76 61 6c 75 65 64 20 66 69 6c 65 20 64 65  r-valued file de
41d0: 73 63 72 69 70 74 6f 72 73 20 61 76 6f 69 64 73  scriptors avoids
41e0: 20 74 68 69 73 20 70 6f 74 65 6e 74 69 61 6c 20   this potential 
41f0: 70 72 6f 62 6c 65 6d 2e 20 20 54 68 65 20 0a 20  problem.  The . 
4200: 20 70 72 6f 74 65 63 74 69 6f 6e 20 61 67 61 69   protection agai
4210: 6e 73 74 0a 20 20 75 73 69 6e 67 20 6c 6f 77 2d  nst.  using low-
4220: 6e 75 6d 62 65 72 65 64 20 66 69 6c 65 20 64 65  numbered file de
4230: 73 63 72 69 70 74 6f 72 73 20 63 61 6e 20 62 65  scriptors can be
4240: 20 64 69 73 61 62 6c 65 64 20 62 79 20 73 65 74   disabled by set
4250: 74 69 6e 67 20 74 68 69 73 0a 20 20 63 6f 6d 70  ting this.  comp
4260: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
4270: 74 6f 20 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  to 0..}..COMPILE
4280: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
4290: 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52  POWERSAFE_OVERWR
42a0: 49 54 45 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20  ITE=<i>&lt;0 or 
42b0: 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  1&gt;</i>} {.  T
42c0: 68 69 73 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67  his option chang
42d0: 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 61  es the default a
42e0: 73 73 75 6d 70 74 69 6f 6e 20 61 62 6f 75 74 20  ssumption about 
42f0: 5b 70 6f 77 65 72 73 61 66 65 20 6f 76 65 72 77  [powersafe overw
4300: 72 69 74 65 5d 0a 20 20 66 6f 72 20 74 68 65 20  rite].  for the 
4310: 75 6e 64 65 72 6c 79 69 6e 67 20 66 69 6c 65 73  underlying files
4320: 79 73 74 65 6d 73 20 66 6f 72 20 74 68 65 20 75  ystems for the u
4330: 6e 69 78 20 61 6e 64 20 77 69 6e 64 6f 77 73 20  nix and windows 
4340: 5b 56 46 53 65 73 5d 2e 0a 20 20 53 65 74 74 69  [VFSes]..  Setti
4350: 6e 67 20 53 51 4c 49 54 45 5f 50 4f 57 45 52 53  ng SQLITE_POWERS
4360: 41 46 45 5f 4f 56 45 52 57 52 49 54 45 20 74 6f  AFE_OVERWRITE to
4370: 20 31 20 63 61 75 73 65 73 20 53 51 4c 69 74 65   1 causes SQLite
4380: 20 74 6f 20 61 73 73 75 6d 65 20 74 68 61 74 0a   to assume that.
4390: 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 6c 65    application-le
43a0: 76 65 6c 20 77 72 69 74 65 73 20 63 61 6e 6e 6f  vel writes canno
43b0: 74 20 63 68 61 6e 67 65 73 20 62 79 74 65 73 20  t changes bytes 
43c0: 6f 75 74 73 69 64 65 20 74 68 65 20 72 61 6e 67  outside the rang
43d0: 65 20 6f 66 0a 20 20 62 79 74 65 73 20 77 72 69  e of.  bytes wri
43e0: 74 74 65 6e 20 65 76 65 6e 20 69 66 20 74 68 65  tten even if the
43f0: 20 77 72 69 74 65 20 6f 63 63 75 72 73 20 6a 75   write occurs ju
4400: 73 74 20 62 65 66 6f 72 65 20 61 20 70 6f 77 65  st before a powe
4410: 72 20 6c 6f 73 73 2e 0a 20 20 57 69 74 68 20 53  r loss..  With S
4420: 51 4c 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f  QLITE_POWERSAFE_
4430: 4f 56 45 52 57 52 49 54 45 20 73 65 74 20 74 6f  OVERWRITE set to
4440: 20 30 2c 20 53 51 4c 69 74 65 20 61 73 73 75 6d   0, SQLite assum
4450: 65 73 20 74 68 61 74 20 6f 74 68 65 72 0a 20 20  es that other.  
4460: 62 79 74 65 73 20 69 6e 20 74 68 65 20 73 61 6d  bytes in the sam
4470: 65 20 73 65 63 74 6f 72 20 77 69 74 68 20 61 20  e sector with a 
4480: 77 72 69 74 74 65 6e 20 62 79 74 65 20 6d 69 67  written byte mig
4490: 68 74 20 62 65 20 63 68 61 6e 67 65 64 20 6f 72  ht be changed or
44a0: 20 0a 20 20 64 61 6d 61 67 65 64 20 62 79 20 61   .  damaged by a
44b0: 20 70 6f 77 65 72 20 6c 6f 73 73 2e 0a 7d 0a 0a   power loss..}..
44c0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
44d0: 53 51 4c 49 54 45 5f 52 45 56 45 52 53 45 5f 55  SQLITE_REVERSE_U
44e0: 4e 4f 52 44 45 52 45 44 5f 53 45 4c 45 43 54 53  NORDERED_SELECTS
44f0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
4500: 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b 50 52  n causes the [PR
4510: 41 47 4d 41 20 72 65 76 65 72 73 65 5f 75 6e 6f  AGMA reverse_uno
4520: 72 64 65 72 65 64 5f 73 65 6c 65 63 74 73 5d 20  rdered_selects] 
4530: 73 65 74 74 69 6e 67 20 74 6f 20 62 65 0a 20 20  setting to be.  
4540: 65 6e 61 62 6c 65 64 20 62 79 20 64 65 66 61 75  enabled by defau
4550: 6c 74 2e 20 20 57 68 65 6e 20 65 6e 61 62 6c 65  lt.  When enable
4560: 64 2c 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74  d, [SELECT] stat
4570: 65 6d 65 6e 74 73 20 74 68 61 74 20 6c 61 63 6b  ements that lack
4580: 20 61 6e 0a 20 20 4f 52 44 45 52 20 42 59 20 63   an.  ORDER BY c
4590: 6c 61 75 73 65 20 77 69 6c 6c 20 72 75 6e 20 69  lause will run i
45a0: 6e 20 72 65 76 65 72 73 65 20 6f 72 64 65 72 2e  n reverse order.
45b0: 3c 70 3e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  <p>.  This optio
45c0: 6e 20 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20  n is useful for 
45d0: 64 65 74 65 63 74 69 6e 67 20 77 68 65 6e 20 61  detecting when a
45e0: 70 70 6c 69 63 61 74 69 6f 6e 73 20 28 69 6e 63  pplications (inc
45f0: 6f 72 72 65 63 74 6c 79 29 0a 20 20 61 73 73 75  orrectly).  assu
4600: 6d 65 20 74 68 61 74 20 74 68 65 20 6f 72 64 65  me that the orde
4610: 72 20 6f 66 20 72 6f 77 73 20 69 6e 20 61 20 53  r of rows in a S
4620: 45 4c 45 43 54 20 77 69 74 68 6f 75 74 20 61 6e  ELECT without an
4630: 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
4640: 0a 20 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62  .  will always b
4650: 65 20 74 68 65 20 73 61 6d 65 2e 0a 7d 0a 0a 43  e the same..}..C
4660: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
4670: 51 4c 49 54 45 5f 53 4f 52 54 45 52 5f 50 4d 41  QLITE_SORTER_PMA
4680: 53 5a 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20  SZ=<i>N</i>} {. 
4690: 20 49 66 20 6d 75 6c 74 69 2d 74 68 72 65 61 64   If multi-thread
46a0: 65 64 20 70 72 6f 63 65 73 73 69 6e 67 20 69 73  ed processing is
46b0: 20 65 6e 61 62 6c 65 64 20 76 69 61 20 74 68 65   enabled via the
46c0: 0a 20 20 5b 50 52 41 47 4d 41 20 74 68 72 65 61  .  [PRAGMA threa
46d0: 64 73 5d 20 73 65 74 74 69 6e 67 2c 20 74 68 65  ds] setting, the
46e0: 6e 20 73 6f 72 74 20 6f 70 65 72 61 74 69 6f 6e  n sort operation
46f0: 73 20 77 69 6c 6c 0a 20 20 61 74 74 65 6d 70 74  s will.  attempt
4700: 20 74 6f 20 73 74 61 72 74 20 68 65 6c 70 65 72   to start helper
4710: 20 74 68 72 65 61 64 73 20 77 68 65 6e 20 74 68   threads when th
4720: 65 20 61 6d 6f 75 6e 74 20 6f 66 20 63 6f 6e 74  e amount of cont
4730: 65 6e 74 0a 20 20 74 6f 20 62 65 20 73 6f 72 74  ent.  to be sort
4740: 65 64 20 65 78 63 65 65 64 73 20 74 68 65 20 6d  ed exceeds the m
4750: 69 6e 69 6d 75 6d 20 6f 66 20 74 68 65 20 5b 63  inimum of the [c
4760: 61 63 68 65 5f 73 69 7a 65 5d 20 61 6e 64 20 50  ache_size] and P
4770: 4d 41 20 53 69 7a 65 0a 20 20 64 65 74 65 72 6d  MA Size.  determ
4780: 69 6e 65 64 20 62 79 20 74 68 65 20 5b 53 51 4c  ined by the [SQL
4790: 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a  ITE_CONFIG_PMASZ
47a0: 5d 20 73 74 61 72 74 2d 74 69 6d 65 20 6f 70 74  ] start-time opt
47b0: 69 6f 6e 2e 0a 20 20 54 68 69 73 20 63 6f 6d 70  ion..  This comp
47c0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
47d0: 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74  sets the default
47e0: 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 0a 20   value for the. 
47f0: 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
4800: 50 4d 41 53 5a 5d 20 73 74 61 72 74 2d 74 69 6d  PMASZ] start-tim
4810: 65 20 6f 70 74 69 6f 6e 2e 0a 20 20 54 68 65 20  e option..  The 
4820: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73  default value is
4830: 20 32 35 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45   250..}..COMPILE
4840: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
4850: 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a  WIN32_MALLOC} {.
4860: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
4870: 61 62 6c 65 73 20 74 68 65 20 75 73 65 20 6f 66  ables the use of
4880: 20 74 68 65 20 57 69 6e 64 6f 77 73 20 48 65 61   the Windows Hea
4890: 70 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 20  p API functions 
48a0: 66 6f 72 20 6d 65 6d 6f 72 79 0a 20 20 61 6c 6c  for memory.  all
48b0: 6f 63 61 74 69 6f 6e 20 69 6e 73 74 65 61 64 20  ocation instead 
48c0: 6f 66 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  of the standard 
48d0: 6c 69 62 72 61 72 79 20 6d 61 6c 6c 6f 63 28 29  library malloc()
48e0: 20 61 6e 64 20 66 72 65 65 28 29 20 72 6f 75 74   and free() rout
48f0: 69 6e 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ines..}..COMPILE
4900: 5f 4f 50 54 49 4f 4e 20 7b 59 59 53 54 41 43 4b  _OPTION {YYSTACK
4910: 44 45 50 54 48 3d 3c 69 3e 26 6c 74 3b 6d 61 78  DEPTH=<i>&lt;max
4920: 5f 64 65 70 74 68 26 67 74 3b 3c 2f 69 3e 7d 20  _depth&gt;</i>} 
4930: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73  {.  This macro s
4940: 65 74 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ets the maximum 
4950: 64 65 70 74 68 20 6f 66 20 74 68 65 20 4c 41 4c  depth of the LAL
4960: 52 28 31 29 20 73 74 61 63 6b 20 75 73 65 64 20  R(1) stack used 
4970: 62 79 0a 20 20 74 68 65 20 53 51 4c 20 70 61 72  by.  the SQL par
4980: 73 65 72 20 77 69 74 68 69 6e 20 53 51 4c 69 74  ser within SQLit
4990: 65 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20  e.  The default 
49a0: 76 61 6c 75 65 20 69 73 20 31 30 30 2e 20 20 41  value is 100.  A
49b0: 20 74 79 70 69 63 61 6c 0a 20 20 61 70 70 6c 69   typical.  appli
49c0: 63 61 74 69 6f 6e 20 77 69 6c 6c 20 75 73 65 20  cation will use 
49d0: 6c 65 73 73 20 74 68 61 6e 20 61 62 6f 75 74 20  less than about 
49e0: 32 30 20 6c 65 76 65 6c 73 20 6f 66 20 74 68 65  20 levels of the
49f0: 20 73 74 61 63 6b 2e 0a 20 20 44 65 76 65 6c 6f   stack..  Develo
4a00: 70 65 72 73 20 77 68 6f 73 65 20 61 70 70 6c 69  pers whose appli
4a10: 63 61 74 69 6f 6e 73 20 63 6f 6e 74 61 69 6e 20  cations contain 
4a20: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 74  SQL statements t
4a30: 68 61 74 20 0a 20 20 6e 65 65 64 20 6d 6f 72 65  hat .  need more
4a40: 20 74 68 61 6e 20 31 30 30 20 4c 41 4c 52 28 31   than 100 LALR(1
4a50: 29 20 73 74 61 63 6b 20 65 6e 74 72 69 65 73 20  ) stack entries 
4a60: 73 68 6f 75 6c 64 20 73 65 72 69 6f 75 73 6c 79  should seriously
4a70: 0a 20 20 63 6f 6e 73 69 64 65 72 20 72 65 66 61  .  consider refa
4a80: 63 74 6f 72 69 6e 67 20 74 68 65 69 72 20 53 51  ctoring their SQ
4a90: 4c 20 61 73 20 69 74 20 69 73 20 6c 69 6b 65 6c  L as it is likel
4aa0: 79 20 74 6f 20 62 65 20 77 65 6c 6c 20 62 65 79  y to be well bey
4ab0: 6f 6e 64 0a 20 20 74 68 65 20 61 62 69 6c 69 74  ond.  the abilit
4ac0: 79 20 6f 66 20 61 6e 79 20 68 75 6d 61 6e 20 74  y of any human t
4ad0: 6f 20 63 6f 6d 70 72 65 68 65 6e 64 2e 0a 7d 0a  o comprehend..}.
4ae0: 3c 2f 74 63 6c 3e 0a 0a 3c 68 32 3e 31 2e 33 20  </tcl>..<h2>1.3 
4af0: 4f 70 74 69 6f 6e 73 20 54 6f 20 53 65 74 20 53  Options To Set S
4b00: 69 7a 65 20 4c 69 6d 69 74 73 3c 2f 68 32 3e 0a  ize Limits</h2>.
4b10: 0a 3c 70 3e 54 68 65 72 65 20 61 72 65 20 63 6f  .<p>There are co
4b20: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
4b30: 6e 73 20 74 68 61 74 20 77 69 6c 6c 20 73 65 74  ns that will set
4b40: 20 75 70 70 65 72 20 62 6f 75 6e 64 73 0a 6f 6e   upper bounds.on
4b50: 20 74 68 65 20 73 69 7a 65 73 20 6f 66 20 76 61   the sizes of va
4b60: 72 69 6f 75 73 20 73 74 72 75 63 74 75 72 65 73  rious structures
4b70: 20 69 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 65   in SQLite.  The
4b80: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f 70   compile-time.op
4b90: 74 69 6f 6e 73 20 6e 6f 72 6d 61 6c 6c 79 20 73  tions normally s
4ba0: 65 74 20 61 20 68 61 72 64 20 75 70 70 65 72 20  et a hard upper 
4bb0: 62 6f 75 6e 64 20 74 68 61 74 20 63 61 6e 20 62  bound that can b
4bc0: 65 20 63 68 61 6e 67 65 64 0a 61 74 20 72 75 6e  e changed.at run
4bd0: 2d 74 69 6d 65 20 6f 6e 20 69 6e 64 69 76 69 64  -time on individ
4be0: 75 61 6c 20 5b 64 61 74 61 62 61 73 65 20 63 6f  ual [database co
4bf0: 6e 6e 65 63 74 69 6f 6e 73 5d 20 75 73 69 6e 67  nnections] using
4c00: 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f 6c 69   the.[sqlite3_li
4c10: 6d 69 74 28 29 5d 20 69 6e 74 65 72 66 61 63 65  mit()] interface
4c20: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f  .</p>..<p>The co
4c30: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
4c40: 6e 73 20 66 6f 72 20 73 65 74 74 69 6e 67 20 75  ns for setting u
4c50: 70 70 65 72 20 62 6f 75 6e 64 73 20 61 72 65 0a  pper bounds are.
4c60: 5b 6c 69 6d 69 74 73 20 7c 20 64 6f 63 75 6d 65  [limits | docume
4c70: 6e 74 65 64 20 73 65 70 61 72 61 74 65 6c 79 5d  nted separately]
4c80: 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  .  The following
4c90: 20 69 73 20 61 20 6c 69 73 74 20 6f 66 0a 74 68   is a list of.th
4ca0: 65 20 61 76 61 69 6c 61 62 6c 65 20 73 65 74 74  e available sett
4cb0: 69 6e 67 73 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a  ings:</p>..<ul>.
4cc0: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58  <li> [SQLITE_MAX
4cd0: 5f 41 54 54 41 43 48 45 44 5d 20 20 3c 2f 6c 69  _ATTACHED]  </li
4ce0: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
4cf0: 41 58 5f 43 4f 4c 55 4d 4e 5d 20 20 3c 2f 6c 69  AX_COLUMN]  </li
4d00: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
4d10: 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45  AX_COMPOUND_SELE
4d20: 43 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  CT]  </li>.<li> 
4d30: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 45 58 50 52  [SQLITE_MAX_EXPR
4d40: 5f 44 45 50 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c  _DEPTH]  </li>.<
4d50: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  li> [SQLITE_MAX_
4d60: 46 55 4e 43 54 49 4f 4e 5f 41 52 47 5d 20 20 3c  FUNCTION_ARG]  <
4d70: 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  /li>.<li> [SQLIT
4d80: 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d 20 20 3c  E_MAX_LENGTH]  <
4d90: 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  /li>.<li> [SQLIT
4da0: 45 5f 4d 41 58 5f 4c 49 4b 45 5f 50 41 54 54 45  E_MAX_LIKE_PATTE
4db0: 52 4e 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69  RN_LENGTH]  </li
4dc0: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
4dd0: 41 58 5f 50 41 47 45 5f 43 4f 55 4e 54 5d 20 20  AX_PAGE_COUNT]  
4de0: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
4df0: 54 45 5f 4d 41 58 5f 53 51 4c 5f 4c 45 4e 47 54  TE_MAX_SQL_LENGT
4e00: 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b  H]  </li>.<li> [
4e10: 53 51 4c 49 54 45 5f 4d 41 58 5f 56 41 52 49 41  SQLITE_MAX_VARIA
4e20: 42 4c 45 5f 4e 55 4d 42 45 52 5d 20 20 3c 2f 6c  BLE_NUMBER]  </l
4e30: 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 61 20 6e 61 6d  i>.</ul>..<a nam
4e40: 65 3d 22 63 6f 6e 74 72 6f 6c 66 65 61 74 75 72  e="controlfeatur
4e50: 65 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 34  es"></a>.<h2>1.4
4e60: 20 4f 70 74 69 6f 6e 73 20 54 6f 20 43 6f 6e 74   Options To Cont
4e70: 72 6f 6c 20 4f 70 65 72 61 74 69 6e 67 20 43 68  rol Operating Ch
4e80: 61 72 61 63 74 65 72 69 73 74 69 63 73 3c 2f 68  aracteristics</h
4e90: 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c  2>..<tcl>.COMPIL
4ea0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
4eb0: 5f 34 5f 42 59 54 45 5f 41 4c 49 47 4e 45 44 5f  _4_BYTE_ALIGNED_
4ec0: 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 4f 6e 20 6d  MALLOC} {.  On m
4ed0: 6f 73 74 20 73 79 73 74 65 6d 73 2c 20 74 68 65  ost systems, the
4ee0: 20 6d 61 6c 6c 6f 63 28 29 20 73 79 73 74 65 6d   malloc() system
4ef0: 20 63 61 6c 6c 20 72 65 74 75 72 6e 73 20 61 20   call returns a 
4f00: 62 75 66 66 65 72 20 74 68 61 74 20 69 73 0a 20  buffer that is. 
4f10: 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20 38   aligned to an 8
4f20: 2d 62 79 74 65 20 62 6f 75 6e 64 61 72 79 2e 20  -byte boundary. 
4f30: 20 42 75 74 20 6f 6e 20 73 6f 6d 65 20 73 79 73   But on some sys
4f40: 74 65 6d 73 20 28 65 78 3a 20 77 69 6e 64 6f 77  tems (ex: window
4f50: 73 29 20 6d 61 6c 6c 6f 63 28 29 0a 20 20 72 65  s) malloc().  re
4f60: 74 75 72 6e 73 20 34 2d 62 79 74 65 20 61 6c 69  turns 4-byte ali
4f70: 67 6e 65 64 20 70 6f 69 6e 74 65 72 2e 20 20 54  gned pointer.  T
4f80: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
4f90: 20 6f 70 74 69 6f 6e 20 6d 75 73 74 20 62 65 20   option must be 
4fa0: 75 73 65 64 0a 20 20 6f 6e 20 73 79 73 74 65 6d  used.  on system
4fb0: 73 20 74 68 61 74 20 72 65 74 75 72 6e 20 34 2d  s that return 4-
4fc0: 62 79 74 65 20 61 6c 69 67 6e 65 64 20 70 6f 69  byte aligned poi
4fd0: 6e 74 65 72 73 20 66 72 6f 6d 20 6d 61 6c 6c 6f  nters from mallo
4fe0: 63 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  c()..}..COMPILE_
4ff0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 43  OPTION {SQLITE_C
5000: 41 53 45 5f 53 45 4e 53 49 54 49 56 45 5f 4c 49  ASE_SENSITIVE_LI
5010: 4b 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  KE} {.  If this 
5020: 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e  option is presen
5030: 74 2c 20 74 68 65 6e 20 74 68 65 20 62 75 69 6c  t, then the buil
5040: 74 2d 69 6e 20 5b 4c 49 4b 45 5d 20 6f 70 65 72  t-in [LIKE] oper
5050: 61 74 6f 72 20 77 69 6c 6c 20 62 65 0a 20 20 63  ator will be.  c
5060: 61 73 65 20 73 65 6e 73 69 74 69 76 65 2e 20 20  ase sensitive.  
5070: 54 68 69 73 20 73 61 6d 65 20 65 66 66 65 63 74  This same effect
5080: 20 63 61 6e 20 62 65 20 61 63 68 69 65 76 65 64   can be achieved
5090: 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75 73 69   at run-time usi
50a0: 6e 67 0a 20 20 74 68 65 20 5b 63 61 73 65 5f 73  ng.  the [case_s
50b0: 65 6e 73 69 74 69 76 65 5f 6c 69 6b 65 20 70 72  ensitive_like pr
50c0: 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  agma]..}..COMPIL
50d0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
50e0: 5f 44 49 52 45 43 54 5f 4f 56 45 52 46 4c 4f 57  _DIRECT_OVERFLOW
50f0: 5f 52 45 41 44 7d 20 7b 0a 20 20 57 68 65 6e 20  _READ} {.  When 
5100: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70  this option is p
5110: 72 65 73 65 6e 74 2c 20 63 6f 6e 74 65 6e 74 20  resent, content 
5120: 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0a 20 20 5b  contained in.  [
5130: 6f 76 65 72 66 6c 6f 77 20 70 61 67 65 73 5d 20  overflow pages] 
5140: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
5150: 66 69 6c 65 20 69 73 20 72 65 61 64 20 64 69 72  file is read dir
5160: 65 63 74 6c 79 20 66 72 6f 6d 20 64 69 73 6b 2c  ectly from disk,
5170: 0a 20 20 62 79 70 61 73 73 69 6e 67 20 74 68 65  .  bypassing the
5180: 20 5b 70 61 67 65 20 63 61 63 68 65 5d 2c 20 64   [page cache], d
5190: 75 72 69 6e 67 20 72 65 61 64 20 74 72 61 6e 73  uring read trans
51a0: 61 63 74 69 6f 6e 73 2e 20 20 49 6e 20 61 70 70  actions.  In app
51b0: 6c 69 63 61 74 69 6f 6e 73 0a 20 20 74 68 61 74  lications.  that
51c0: 20 64 6f 20 61 20 6c 6f 74 20 6f 66 20 72 65 61   do a lot of rea
51d0: 64 73 20 6f 66 20 6c 61 72 67 65 20 42 4c 4f 42  ds of large BLOB
51e0: 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d  s, this option m
51f0: 69 67 68 74 20 69 6d 70 72 6f 76 65 20 72 65 61  ight improve rea
5200: 64 0a 20 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e  d.  performance.
5210: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
5220: 4f 4e 20 7b 53 51 4c 49 54 45 5f 48 41 56 45 5f  ON {SQLITE_HAVE_
5230: 49 53 4e 41 4e 7d 20 7b 0a 20 20 49 66 20 74 68  ISNAN} {.  If th
5240: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65  is option is pre
5250: 73 65 6e 74 2c 20 74 68 65 6e 20 53 51 4c 69 74  sent, then SQLit
5260: 65 20 77 69 6c 6c 20 75 73 65 20 74 68 65 20 69  e will use the i
5270: 73 6e 61 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20  snan() function 
5280: 66 72 6f 6d 0a 20 20 74 68 65 20 73 79 73 74 65  from.  the syste
5290: 6d 20 6d 61 74 68 20 6c 69 62 72 61 72 79 2e 20  m math library. 
52a0: 20 54 68 69 73 20 69 73 20 61 6e 20 61 6c 69 61   This is an alia
52b0: 73 20 66 6f 72 20 74 68 65 20 5b 48 41 56 45 5f  s for the [HAVE_
52c0: 49 53 4e 41 4e 5d 20 63 6f 6e 66 69 67 75 72 61  ISNAN] configura
52d0: 74 69 6f 6e 0a 20 20 6f 70 74 69 6f 6e 2e 0a 7d  tion.  option..}
52e0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
52f0: 20 7b 53 51 4c 49 54 45 5f 4f 53 5f 4f 54 48 45   {SQLITE_OS_OTHE
5300: 52 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26  R=<i>&lt;0 or 1&
5310: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65  gt;</i>} {.  The
5320: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53   option causes S
5330: 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 69 74  QLite to omit it
5340: 73 20 62 75 69 6c 74 2d 69 6e 20 6f 70 65 72 61  s built-in opera
5350: 74 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74 65  ting system inte
5360: 72 66 61 63 65 73 0a 20 20 66 6f 72 20 55 6e 69  rfaces.  for Uni
5370: 78 2c 20 57 69 6e 64 6f 77 73 2c 20 61 6e 64 20  x, Windows, and 
5380: 4f 53 2f 32 2e 20 20 54 68 65 20 72 65 73 75 6c  OS/2.  The resul
5390: 74 69 6e 67 20 6c 69 62 72 61 72 79 20 77 69 6c  ting library wil
53a0: 6c 20 68 61 76 65 20 6e 6f 20 64 65 66 61 75 6c  l have no defaul
53b0: 74 0a 20 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  t.  [sqlite3_vfs
53c0: 20 7c 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73   | operating sys
53d0: 74 65 6d 20 69 6e 74 65 72 66 61 63 65 5d 2e 20  tem interface]. 
53e0: 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75   Applications mu
53f0: 73 74 20 75 73 65 0a 20 20 5b 73 71 6c 69 74 65  st use.  [sqlite
5400: 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28 29  3_vfs_register()
5410: 5d 20 74 6f 20 72 65 67 69 73 74 65 72 20 61 6e  ] to register an
5420: 20 61 70 70 72 6f 70 72 69 61 74 65 20 69 6e 74   appropriate int
5430: 65 72 66 61 63 65 20 62 65 66 6f 72 65 0a 20 20  erface before.  
5440: 75 73 69 6e 67 20 53 51 4c 69 74 65 2e 20 20 41  using SQLite.  A
5450: 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73 74  pplications must
5460: 20 61 6c 73 6f 20 73 75 70 70 6c 79 20 69 6d 70   also supply imp
5470: 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66 6f 72  lementations for
5480: 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f   the.  [sqlite3_
5490: 6f 73 5f 69 6e 69 74 28 29 5d 20 61 6e 64 20 5b  os_init()] and [
54a0: 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29  sqlite3_os_end()
54b0: 5d 20 69 6e 74 65 72 66 61 63 65 73 2e 20 20 54  ] interfaces.  T
54c0: 68 65 20 75 73 75 61 6c 20 70 72 61 63 74 69 63  he usual practic
54d0: 65 0a 20 20 69 73 20 66 6f 72 20 74 68 65 20 73  e.  is for the s
54e0: 75 70 70 6c 69 65 64 20 5b 73 71 6c 69 74 65 33  upplied [sqlite3
54f0: 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 74 6f 20 69  _os_init()] to i
5500: 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 76  nvoke [sqlite3_v
5510: 66 73 5f 72 65 67 69 73 74 65 72 28 29 5d 2e 0a  fs_register()]..
5520: 20 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 75    SQLite will au
5530: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 76 6f  tomatically invo
5540: 6b 65 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69  ke [sqlite3_os_i
5550: 6e 69 74 28 29 5d 20 77 68 65 6e 20 69 74 20 69  nit()] when it i
5560: 6e 69 74 69 61 6c 69 7a 65 73 2e 0a 0a 20 20 54  nitializes...  T
5570: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 74 79  his option is ty
5580: 70 69 63 61 6c 6c 79 20 75 73 65 64 20 77 68 65  pically used whe
5590: 6e 20 62 75 69 6c 64 69 6e 67 20 53 51 4c 69 74  n building SQLit
55a0: 65 20 66 6f 72 20 61 6e 20 65 6d 62 65 64 64 65  e for an embedde
55b0: 64 0a 20 20 70 6c 61 74 66 6f 72 6d 20 77 69 74  d.  platform wit
55c0: 68 20 61 20 63 75 73 74 6f 6d 20 6f 70 65 72 61  h a custom opera
55d0: 74 69 6e 67 20 73 79 73 74 65 6d 2e 0a 7d 0a 0a  ting system..}..
55e0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
55f0: 53 51 4c 49 54 45 5f 53 45 43 55 52 45 5f 44 45  SQLITE_SECURE_DE
5600: 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 63  LETE} {.  This c
5610: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
5620: 6f 6e 20 63 68 61 6e 67 65 73 20 74 68 65 20 64  on changes the d
5630: 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 6f  efault setting o
5640: 66 20 74 68 65 0a 20 20 5b 73 65 63 75 72 65 5f  f the.  [secure_
5650: 64 65 6c 65 74 65 20 70 72 61 67 6d 61 5d 2e 20  delete pragma]. 
5660: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
5670: 6e 20 69 73 20 6e 6f 74 20 75 73 65 64 2c 20 73  n is not used, s
5680: 65 63 75 72 65 5f 64 65 6c 65 74 65 20 64 65 66  ecure_delete def
5690: 61 75 6c 74 73 0a 20 20 74 6f 20 6f 66 66 2e 20  aults.  to off. 
56a0: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
56b0: 6e 20 69 73 20 70 72 65 73 65 6e 74 2c 20 73 65  n is present, se
56c0: 63 75 72 65 5f 64 65 6c 65 74 65 20 64 65 66 61  cure_delete defa
56d0: 75 6c 74 73 20 74 6f 20 6f 6e 2e 0a 0a 20 20 54  ults to on...  T
56e0: 68 65 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65  he secure_delete
56f0: 20 73 65 74 74 69 6e 67 20 63 61 75 73 65 73 20   setting causes 
5700: 64 65 6c 65 74 65 64 20 63 6f 6e 74 65 6e 74 20  deleted content 
5710: 74 6f 20 62 65 20 6f 76 65 72 77 72 69 74 74 65  to be overwritte
5720: 6e 20 77 69 74 68 0a 20 20 7a 65 72 6f 73 2e 20  n with.  zeros. 
5730: 20 54 68 65 72 65 20 69 73 20 61 20 73 6d 61 6c   There is a smal
5740: 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65  l performance pe
5750: 6e 61 6c 74 79 20 73 69 6e 63 65 20 61 64 64 69  nalty since addi
5760: 74 69 6f 6e 61 6c 20 49 2f 4f 0a 20 20 6d 75 73  tional I/O.  mus
5770: 74 20 6f 63 63 75 72 2e 20 20 4f 6e 20 74 68 65  t occur.  On the
5780: 20 6f 74 68 65 72 20 68 61 6e 64 2c 20 73 65 63   other hand, sec
5790: 75 72 65 5f 64 65 6c 65 74 65 20 63 61 6e 20 70  ure_delete can p
57a0: 72 65 76 65 6e 74 20 66 72 61 67 6d 65 6e 74 73  revent fragments
57b0: 20 6f 66 20 0a 20 20 73 65 6e 73 69 74 69 76 65   of .  sensitive
57c0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 72 6f   information fro
57d0: 6d 20 6c 69 6e 67 65 72 69 6e 67 20 69 6e 20 75  m lingering in u
57e0: 6e 75 73 65 64 20 70 61 72 74 73 20 6f 66 20 74  nused parts of t
57f0: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
5800: 20 0a 20 20 61 66 74 65 72 20 69 74 20 68 61 73   .  after it has
5810: 20 62 65 65 6e 20 64 65 6c 65 74 65 64 2e 20 20   been deleted.  
5820: 53 65 65 20 74 68 65 20 64 6f 63 75 6d 65 6e 74  See the document
5830: 61 74 69 6f 6e 20 6f 6e 20 74 68 65 0a 20 20 5b  ation on the.  [
5840: 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 70 72  secure_delete pr
5850: 61 67 6d 61 5d 20 66 6f 72 20 61 64 64 69 74 69  agma] for additi
5860: 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
5870: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
5880: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 48 52 45  ION {SQLITE_THRE
5890: 41 44 53 41 46 45 3d 3c 69 3e 26 6c 74 3b 30 20  ADSAFE=<i>&lt;0 
58a0: 6f 72 20 31 20 6f 72 20 32 26 67 74 3b 3c 2f 69  or 1 or 2&gt;</i
58b0: 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  >} {.  This opti
58c0: 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74  on controls whet
58d0: 68 65 72 20 6f 72 20 6e 6f 74 20 63 6f 64 65 20  her or not code 
58e0: 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 53  is included in S
58f0: 51 4c 69 74 65 20 74 6f 0a 20 20 65 6e 61 62 6c  QLite to.  enabl
5900: 65 20 69 74 20 74 6f 20 6f 70 65 72 61 74 65 20  e it to operate 
5910: 73 61 66 65 6c 79 20 69 6e 20 61 20 6d 75 6c 74  safely in a mult
5920: 69 74 68 72 65 61 64 65 64 20 65 6e 76 69 72 6f  ithreaded enviro
5930: 6e 6d 65 6e 74 2e 20 20 54 68 65 0a 20 20 64 65  nment.  The.  de
5940: 66 61 75 6c 74 20 69 73 20 53 51 4c 49 54 45 5f  fault is SQLITE_
5950: 54 48 52 45 41 44 53 41 46 45 3d 31 20 77 68 69  THREADSAFE=1 whi
5960: 63 68 20 69 73 20 73 61 66 65 20 66 6f 72 20 75  ch is safe for u
5970: 73 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72  se in a multithr
5980: 65 61 64 65 64 0a 20 20 65 6e 76 69 72 6f 6e 6d  eaded.  environm
5990: 65 6e 74 2e 20 20 57 68 65 6e 20 63 6f 6d 70 69  ent.  When compi
59a0: 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54 45 5f  led with SQLITE_
59b0: 54 48 52 45 41 44 53 41 46 45 3d 30 20 61 6c 6c  THREADSAFE=0 all
59c0: 20 6d 75 74 65 78 69 6e 67 20 63 6f 64 65 0a 20   mutexing code. 
59d0: 20 69 73 20 6f 6d 69 74 74 65 64 20 61 6e 64 20   is omitted and 
59e0: 69 74 20 69 73 20 75 6e 73 61 66 65 20 74 6f 20  it is unsafe to 
59f0: 75 73 65 20 53 51 4c 69 74 65 20 69 6e 20 61 20  use SQLite in a 
5a00: 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 70 72  multithreaded pr
5a10: 6f 67 72 61 6d 2e 0a 20 20 57 68 65 6e 20 63 6f  ogram..  When co
5a20: 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49  mpiled with SQLI
5a30: 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32 2c  TE_THREADSAFE=2,
5a40: 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65 20 75   SQLite can be u
5a50: 73 65 64 20 69 6e 20 61 20 6d 75 6c 74 69 74 68  sed in a multith
5a60: 72 65 61 64 65 64 0a 20 20 70 72 6f 67 72 61 6d  readed.  program
5a70: 20 73 6f 20 6c 6f 6e 67 20 61 73 20 6e 6f 20 74   so long as no t
5a80: 77 6f 20 74 68 72 65 61 64 73 20 61 74 74 65 6d  wo threads attem
5a90: 70 74 20 74 6f 20 75 73 65 20 74 68 65 20 73 61  pt to use the sa
5aa0: 6d 65 0a 20 20 5b 64 61 74 61 62 61 73 65 20 63  me.  [database c
5ab0: 6f 6e 6e 65 63 74 69 6f 6e 5d 20 28 6f 72 20 61  onnection] (or a
5ac0: 6e 79 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  ny [prepared sta
5ad0: 74 65 6d 65 6e 74 73 5d 20 64 65 72 69 76 65 64  tements] derived
5ae0: 20 66 72 6f 6d 0a 20 20 74 68 61 74 20 64 61 74   from.  that dat
5af0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
5b00: 29 20 61 74 20 74 68 65 20 73 61 6d 65 20 74 69  ) at the same ti
5b10: 6d 65 2e 0a 0a 20 20 54 6f 20 70 75 74 20 69 74  me...  To put it
5b20: 20 61 6e 6f 74 68 65 72 20 77 61 79 2c 20 53 51   another way, SQ
5b30: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
5b40: 31 20 73 65 74 73 20 74 68 65 20 64 65 66 61 75  1 sets the defau
5b50: 6c 74 0a 20 20 5b 74 68 72 65 61 64 69 6e 67 20  lt.  [threading 
5b60: 6d 6f 64 65 5d 20 74 6f 20 53 65 72 69 61 6c 69  mode] to Seriali
5b70: 7a 65 64 2e 20 20 53 51 4c 49 54 45 5f 54 48 52  zed.  SQLITE_THR
5b80: 45 41 44 53 41 46 45 3d 32 20 73 65 74 73 20 74  EADSAFE=2 sets t
5b90: 68 65 20 64 65 66 61 75 6c 74 0a 20 20 5b 74 68  he default.  [th
5ba0: 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f  reading mode] to
5bb0: 20 4d 75 6c 74 69 2d 74 68 72 65 61 64 65 64 2e   Multi-threaded.
5bc0: 20 20 41 6e 64 20 53 51 4c 49 54 45 5f 54 48 52    And SQLITE_THR
5bd0: 45 41 44 53 41 46 45 3d 30 20 73 65 74 73 20 74  EADSAFE=0 sets t
5be0: 68 65 0a 20 20 5b 74 68 72 65 61 64 69 6e 67 20  he.  [threading 
5bf0: 6d 6f 64 65 5d 20 74 6f 20 53 69 6e 67 6c 65 2d  mode] to Single-
5c00: 74 68 72 65 61 64 65 64 2e 0a 0a 20 20 54 68 65  threaded...  The
5c10: 20 76 61 6c 75 65 20 6f 66 20 53 51 4c 49 54 45   value of SQLITE
5c20: 5f 54 48 52 45 41 44 53 41 46 45 20 63 61 6e 20  _THREADSAFE can 
5c30: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20 61 74  be determined at
5c40: 20 72 75 6e 2d 74 69 6d 65 0a 20 20 75 73 69 6e   run-time.  usin
5c50: 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 74  g the [sqlite3_t
5c60: 68 72 65 61 64 73 61 66 65 28 29 5d 20 69 6e 74  hreadsafe()] int
5c70: 65 72 66 61 63 65 2e 0a 0a 20 20 57 68 65 6e 20  erface...  When 
5c80: 53 51 4c 69 74 65 20 68 61 73 20 62 65 65 6e 20  SQLite has been 
5c90: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51  compiled with SQ
5ca0: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
5cb0: 31 20 6f 72 0a 20 20 53 51 4c 49 54 45 5f 54 48  1 or.  SQLITE_TH
5cc0: 52 45 41 44 53 41 46 45 3d 32 20 74 68 65 6e 20  READSAFE=2 then 
5cd0: 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d  the [threading m
5ce0: 6f 64 65 5d 0a 20 20 63 61 6e 20 62 65 20 61 6c  ode].  can be al
5cf0: 74 65 72 65 64 20 61 74 20 72 75 6e 2d 74 69 6d  tered at run-tim
5d00: 65 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c  e using the [sql
5d10: 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69  ite3_config()] i
5d20: 6e 74 65 72 66 61 63 65 20 74 6f 67 65 74 68 65  nterface togethe
5d30: 72 0a 20 20 77 69 74 68 20 6f 6e 65 20 6f 66 20  r.  with one of 
5d40: 74 68 65 73 65 20 76 65 72 62 73 3a 0a 0a 20 20  these verbs:..  
5d50: 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49  <ul>.  <li>[SQLI
5d60: 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45  TE_CONFIG_SINGLE
5d70: 54 48 52 45 41 44 5d 0a 20 20 3c 6c 69 3e 5b 53  THREAD].  <li>[S
5d80: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c  QLITE_CONFIG_MUL
5d90: 54 49 54 48 52 45 41 44 5d 0a 20 20 3c 6c 69 3e  TITHREAD].  <li>
5da0: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53  [SQLITE_CONFIG_S
5db0: 45 52 49 41 4c 49 5a 45 44 5d 0a 20 20 3c 2f 75  ERIALIZED].  </u
5dc0: 6c 3e 0a 0a 20 20 54 68 65 20 5b 53 51 4c 49 54  l>..  The [SQLIT
5dd0: 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58 5d 20  E_OPEN_NOMUTEX] 
5de0: 61 6e 64 0a 20 20 5b 53 51 4c 49 54 45 5f 4f 50  and.  [SQLITE_OP
5df0: 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 5d 20 66 6c  EN_FULLMUTEX] fl
5e00: 61 67 73 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  ags to [sqlite3_
5e10: 6f 70 65 6e 5f 76 32 28 29 5d 20 63 61 6e 20 61  open_v2()] can a
5e20: 6c 73 6f 20 62 65 20 75 73 65 64 0a 20 20 74 6f  lso be used.  to
5e30: 20 61 64 6a 75 73 74 20 74 68 65 20 5b 74 68 72   adjust the [thr
5e40: 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 6f 66 20  eading mode] of 
5e50: 69 6e 64 69 76 69 64 75 61 6c 20 5b 64 61 74 61  individual [data
5e60: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  base connections
5e70: 5d 0a 20 20 61 74 20 72 75 6e 2d 74 69 6d 65 2e  ].  at run-time.
5e80: 0a 0a 20 20 4e 6f 74 65 20 74 68 61 74 20 77 68  ..  Note that wh
5e90: 65 6e 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d  en SQLite is com
5ea0: 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54  piled with SQLIT
5eb0: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 2c 20  E_THREADSAFE=0, 
5ec0: 74 68 65 20 63 6f 64 65 0a 20 20 74 6f 20 6d 61  the code.  to ma
5ed0: 6b 65 20 53 51 4c 69 74 65 20 74 68 72 65 61 64  ke SQLite thread
5ee0: 73 61 66 65 20 69 73 20 6f 6d 69 74 74 65 64 20  safe is omitted 
5ef0: 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e 20  from the build. 
5f00: 20 57 68 65 6e 20 74 68 69 73 20 6f 63 63 75 72   When this occur
5f10: 73 2c 0a 20 20 69 74 20 69 73 20 69 6d 70 6f 73  s,.  it is impos
5f20: 73 69 62 6c 65 20 74 6f 20 63 68 61 6e 67 65 20  sible to change 
5f30: 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d  the [threading m
5f40: 6f 64 65 5d 20 61 74 20 73 74 61 72 74 2d 74 69  ode] at start-ti
5f50: 6d 65 20 6f 72 20 72 75 6e 2d 74 69 6d 65 2e 0a  me or run-time..
5f60: 0a 20 20 53 65 65 20 74 68 65 20 5b 74 68 72 65  .  See the [thre
5f70: 61 64 69 6e 67 20 6d 6f 64 65 5d 20 64 6f 63 75  ading mode] docu
5f80: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64  mentation for ad
5f90: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
5fa0: 74 69 6f 6e 0a 20 20 6f 6e 20 61 73 70 65 63 74  tion.  on aspect
5fb0: 73 20 6f 66 20 75 73 69 6e 67 20 53 51 4c 69 74  s of using SQLit
5fc0: 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65  e in a multithre
5fd0: 61 64 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  aded environment
5fe0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
5ff0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 45 4d 50  ION {SQLITE_TEMP
6000: 5f 53 54 4f 52 45 3d 3c 69 3e 26 6c 74 3b 30 20  _STORE=<i>&lt;0 
6010: 74 68 72 6f 75 67 68 20 33 26 67 74 3b 3c 2f 69  through 3&gt;</i
6020: 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  >} {.  This opti
6030: 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74  on controls whet
6040: 68 65 72 20 74 65 6d 70 6f 72 61 72 79 20 66 69  her temporary fi
6050: 6c 65 73 20 61 72 65 20 73 74 6f 72 65 64 20 6f  les are stored o
6060: 6e 20 64 69 73 6b 20 6f 72 0a 20 20 69 6e 20 6d  n disk or.  in m
6070: 65 6d 6f 72 79 2e 20 20 54 68 65 20 6d 65 61 6e  emory.  The mean
6080: 69 6e 67 73 20 66 6f 72 20 76 61 72 69 6f 75 73  ings for various
6090: 20 73 65 74 74 69 6e 67 73 20 6f 66 20 74 68 69   settings of thi
60a0: 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 20  s compile-time. 
60b0: 20 6f 70 74 69 6f 6e 20 61 72 65 20 61 73 20 66   option are as f
60c0: 6f 6c 6c 6f 77 73 3a 0a 0a 20 20 3c 74 61 62 6c  ollows:..  <tabl
60d0: 65 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 32  e cellpadding="2
60e0: 22 20 62 6f 72 64 65 72 3d 22 31 22 3e 0a 20 20  " border="1">.  
60f0: 3c 74 72 3e 3c 74 68 3e 53 51 4c 49 54 45 5f 54  <tr><th>SQLITE_T
6100: 45 4d 50 5f 53 54 4f 52 45 3c 2f 74 68 3e 3c 74  EMP_STORE</th><t
6110: 68 3e 4d 65 61 6e 69 6e 67 3c 2f 74 68 3e 3c 2f  h>Meaning</th></
6120: 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c  tr>.  <tr><td al
6130: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f  ign="center">0</
6140: 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75 73  td><td>Always us
6150: 65 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65  e temporary file
6160: 73 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74  s</td></tr>.  <t
6170: 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  r><td align="cen
6180: 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e 55  ter">1</td><td>U
6190: 73 65 20 66 69 6c 65 73 20 62 79 20 64 65 66 61  se files by defa
61a0: 75 6c 74 20 62 75 74 20 61 6c 6c 6f 77 20 74 68  ult but allow th
61b0: 65 0a 20 20 5b 50 52 41 47 4d 41 20 74 65 6d 70  e.  [PRAGMA temp
61c0: 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64 20  _store] command 
61d0: 74 6f 20 6f 76 65 72 72 69 64 65 3c 2f 74 64 3e  to override</td>
61e0: 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20  </tr>.  <tr><td 
61f0: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 32  align="center">2
6200: 3c 2f 74 64 3e 3c 74 64 3e 55 73 65 20 6d 65 6d  </td><td>Use mem
6210: 6f 72 79 20 62 79 20 64 65 66 61 75 6c 74 20 62  ory by default b
6220: 75 74 20 61 6c 6c 6f 77 20 74 68 65 0a 20 20 5b  ut allow the.  [
6230: 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72  PRAGMA temp_stor
6240: 65 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 6f 76  e] command to ov
6250: 65 72 72 69 64 65 3c 2f 74 64 3e 3c 2f 74 72 3e  erride</td></tr>
6260: 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e  .  <tr><td align
6270: 3d 22 63 65 6e 74 65 72 22 3e 33 3c 2f 74 64 3e  ="center">3</td>
6280: 3c 74 64 3e 41 6c 77 61 79 73 20 75 73 65 20 6d  <td>Always use m
6290: 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f 74 72 3e 0a  emory</td></tr>.
62a0: 20 20 3c 2f 74 61 62 6c 65 3e 0a 0a 20 20 54 68    </table>..  Th
62b0: 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e  e default settin
62c0: 67 20 69 73 20 31 2e 20 20 0a 20 20 41 64 64 69  g is 1.  .  Addi
62d0: 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
62e0: 6f 6e 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20  on can be found 
62f0: 69 6e 20 5b 74 65 6d 70 73 74 6f 72 65 20 7c 20  in [tempstore | 
6300: 74 65 6d 70 66 69 6c 65 73 2e 68 74 6d 6c 5d 2e  tempfiles.html].
6310: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6320: 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 52 41 43 45  ON {SQLITE_TRACE
6330: 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d 3c 69 3e 4e  _SIZE_LIMIT=<i>N
6340: 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20 74 68 69  </i>} {.  If thi
6350: 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e  s macro is defin
6360: 65 64 20 74 6f 20 61 20 70 6f 73 69 74 69 76 65  ed to a positive
6370: 20 69 6e 74 65 67 65 72 20 3c 69 3e 4e 3c 2f 69   integer <i>N</i
6380: 3e 2c 20 74 68 65 6e 20 74 68 65 20 6c 65 6e 67  >, then the leng
6390: 74 68 20 6f 66 0a 20 20 73 74 72 69 6e 67 73 20  th of.  strings 
63a0: 61 6e 64 20 42 4c 4f 42 20 74 68 61 74 20 61 72  and BLOB that ar
63b0: 65 20 65 78 70 61 6e 64 65 64 20 69 6e 74 6f 20  e expanded into 
63c0: 70 61 72 61 6d 65 74 65 72 73 20 69 6e 20 74 68  parameters in th
63d0: 65 20 6f 75 74 70 75 74 20 6f 66 0a 20 20 5b 73  e output of.  [s
63e0: 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 5d 20  qlite3_trace()] 
63f0: 69 73 20 6c 69 6d 69 74 65 64 20 74 6f 20 3c 69  is limited to <i
6400: 3e 4e 3c 2f 69 3e 20 62 79 74 65 73 2e 20 20 0a  >N</i> bytes.  .
6410: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6420: 4e 20 7b 53 51 4c 49 54 45 5f 55 53 45 5f 55 52  N {SQLITE_USE_UR
6430: 49 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  I} {.  This opti
6440: 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b 55  on causes the [U
6450: 52 49 20 66 69 6c 65 6e 61 6d 65 5d 20 70 72 6f  RI filename] pro
6460: 63 65 73 73 20 6c 6f 67 69 63 20 74 6f 20 62 65  cess logic to be
6470: 20 65 6e 61 62 6c 65 64 20 62 79 20 0a 20 20 64   enabled by .  d
6480: 65 66 61 75 6c 74 2e 20 20 0a 7d 0a 0a 3c 2f 74  efault.  .}..</t
6490: 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 65 6e  cl>..<a name="en
64a0: 61 62 6c 65 66 65 61 74 75 72 65 73 22 3e 3c 2f  ablefeatures"></
64b0: 61 3e 0a 3c 68 32 3e 31 2e 35 20 4f 70 74 69 6f  a>.<h2>1.5 Optio
64c0: 6e 73 20 54 6f 20 45 6e 61 62 6c 65 20 46 65 61  ns To Enable Fea
64d0: 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20 54  tures Normally T
64e0: 75 72 6e 65 64 20 4f 66 66 3c 2f 68 32 3e 0a 0a  urned Off</h2>..
64f0: 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50  <tcl>.COMPILE_OP
6500: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 41 4c 4c  TION {SQLITE_ALL
6510: 4f 57 5f 55 52 49 5f 41 55 54 48 4f 52 49 54 59  OW_URI_AUTHORITY
6520: 7d 20 7b 0a 20 20 5b 55 52 49 20 66 69 6c 65 6e  } {.  [URI filen
6530: 61 6d 65 73 5d 20 6e 6f 72 6d 61 6c 6c 79 20 74  ames] normally t
6540: 68 72 6f 77 73 20 61 6e 20 65 72 72 6f 72 20 69  hrows an error i
6550: 66 20 74 68 65 20 61 75 74 68 6f 72 69 74 79 20  f the authority 
6560: 73 65 63 74 69 6f 6e 20 69 73 0a 20 20 6e 6f 74  section is.  not
6570: 20 65 69 74 68 65 72 20 65 6d 70 74 79 20 6f 72   either empty or
6580: 20 22 6c 6f 63 61 6c 68 6f 73 74 22 2e 20 20 48   "localhost".  H
6590: 6f 77 65 76 65 72 2c 20 69 66 20 53 51 4c 69 74  owever, if SQLit
65a0: 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69  e is compiled wi
65b0: 74 68 0a 20 20 74 68 65 20 53 51 4c 49 54 45 5f  th.  the SQLITE_
65c0: 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f 52  ALLOW_URI_AUTHOR
65d0: 49 54 59 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  ITY compile-time
65e0: 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68   option, then th
65f0: 65 20 55 52 49 20 69 73 0a 20 20 63 6f 6e 76 65  e URI is.  conve
6600: 72 74 65 64 20 69 6e 74 6f 20 61 20 55 6e 69 66  rted into a Unif
6610: 6f 72 6d 20 4e 61 6d 69 6e 67 20 43 6f 6e 76 65  orm Naming Conve
6620: 6e 74 69 6f 6e 20 28 55 4e 43 29 20 66 69 6c 65  ntion (UNC) file
6630: 6e 61 6d 65 20 61 6e 64 20 70 61 73 73 65 64 0a  name and passed.
6640: 20 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 75 6e    down to the un
6650: 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61 74 69  derlying operati
6660: 6e 67 20 73 79 73 74 65 6d 20 74 68 61 74 20 77  ng system that w
6670: 61 79 2e 20 20 0a 20 20 3c 70 3e 0a 20 20 53 6f  ay.  .  <p>.  So
6680: 6d 65 20 66 75 74 75 72 65 20 76 65 72 73 69 6f  me future versio
6690: 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 61 79  ns of SQLite may
66a0: 20 63 68 61 6e 67 65 20 74 6f 20 65 6e 61 62 6c   change to enabl
66b0: 65 20 74 68 69 73 20 66 65 61 74 75 72 65 0a 20  e this feature. 
66c0: 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 43   by default..}.C
66d0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
66e0: 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43 4f 56 45  QLITE_ALLOW_COVE
66f0: 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 3d  RING_INDEX_SCAN=
6700: 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74  <i>&lt;0 or 1&gt
6710: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
6720: 43 2d 70 72 65 70 72 6f 63 65 73 73 20 6d 61 63  C-preprocess mac
6730: 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68  ro determines th
6740: 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e  e default settin
6750: 67 20 6f 66 20 74 68 65 0a 20 20 5b 53 51 4c 49  g of the.  [SQLI
6760: 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49  TE_CONFIG_COVERI
6770: 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 5d 20 63  NG_INDEX_SCAN] c
6780: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74  onfiguration set
6790: 74 69 6e 67 2e 20 20 49 74 20 64 65 66 61 75 6c  ting.  It defaul
67a0: 74 73 0a 20 20 74 6f 20 31 20 28 6f 6e 29 20 77  ts.  to 1 (on) w
67b0: 68 69 63 68 20 6d 65 61 6e 73 20 74 68 61 74 20  hich means that 
67c0: 63 6f 76 65 72 69 6e 67 20 69 6e 64 69 63 65 73  covering indices
67d0: 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 66 75   are used for fu
67e0: 6c 6c 20 74 61 62 6c 65 0a 20 20 73 63 61 6e 73  ll table.  scans
67f0: 20 77 68 65 72 65 20 70 6f 73 73 69 62 6c 65 2c   where possible,
6800: 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 72 65 64   in order to red
6810: 75 63 65 20 49 2f 4f 20 61 6e 64 20 69 6d 70 72  uce I/O and impr
6820: 6f 76 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e  ove performance.
6830: 0a 20 20 48 6f 77 65 76 65 72 2c 20 74 68 65 20  .  However, the 
6840: 75 73 65 20 6f 66 20 61 20 63 6f 76 65 72 69 6e  use of a coverin
6850: 67 20 69 6e 64 65 78 20 66 6f 72 20 61 20 66 75  g index for a fu
6860: 6c 6c 20 73 63 61 6e 20 77 69 6c 6c 20 63 61 75  ll scan will cau
6870: 73 65 20 72 65 73 75 6c 74 73 0a 20 20 74 6f 20  se results.  to 
6880: 61 70 70 65 61 72 20 69 6e 20 61 20 64 69 66 66  appear in a diff
6890: 65 72 65 6e 74 20 6f 72 64 65 72 20 66 72 6f 6d  erent order from
68a0: 20 6c 65 67 61 63 79 2c 20 77 68 69 63 68 20 63   legacy, which c
68b0: 6f 75 6c 64 20 63 61 75 73 65 20 73 6f 6d 65 0a  ould cause some.
68c0: 20 20 28 69 6e 63 6f 72 72 65 63 74 6c 79 2d 63    (incorrectly-c
68d0: 6f 64 65 64 29 20 6c 65 67 61 63 79 20 61 70 70  oded) legacy app
68e0: 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20 62 72 65  lications to bre
68f0: 61 6b 2e 20 20 48 65 6e 63 65 2c 20 74 68 65 20  ak.  Hence, the 
6900: 63 6f 76 65 72 69 6e 67 0a 20 20 69 6e 64 65 78  covering.  index
6910: 20 73 63 61 6e 20 6f 70 74 69 6f 6e 20 63 61 6e   scan option can
6920: 20 62 65 20 64 69 73 61 62 6c 65 64 20 61 74 20   be disabled at 
6930: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 6e 20  compile-time on 
6940: 73 79 73 74 65 6d 73 20 74 68 61 74 20 77 68 61  systems that wha
6950: 74 0a 20 20 74 6f 20 6d 69 6e 69 6d 69 7a 65 20  t.  to minimize 
6960: 74 68 65 69 72 20 72 69 73 6b 20 6f 66 20 65 78  their risk of ex
6970: 70 6f 73 69 6e 67 20 65 72 72 6f 72 73 20 69 6e  posing errors in
6980: 20 6c 65 67 61 63 79 20 61 70 70 6c 69 63 61 74   legacy applicat
6990: 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ions..}..COMPILE
69a0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
69b0: 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d 45 53  ENABLE_8_3_NAMES
69c0: 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 32 26 67  =<i>&lt;1 or 2&g
69d0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20 74  t;</i>} {.  If t
69e0: 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73  his C-preprocess
69f0: 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  or macro is defi
6a00: 6e 65 64 2c 20 74 68 65 6e 20 65 78 74 72 61 20  ned, then extra 
6a10: 63 6f 64 65 20 69 73 0a 20 20 69 6e 63 6c 75 64  code is.  includ
6a20: 65 64 20 74 68 61 74 20 61 6c 6c 6f 77 73 20 53  ed that allows S
6a30: 51 4c 69 74 65 20 74 6f 20 66 75 6e 63 74 69 6f  QLite to functio
6a40: 6e 20 6f 6e 20 61 20 66 69 6c 65 73 79 73 74 65  n on a filesyste
6a50: 6d 20 74 68 61 74 0a 20 20 6f 6e 6c 79 20 73 75  m that.  only su
6a60: 70 70 6f 72 74 20 38 2b 33 20 66 69 6c 65 6e 61  pport 8+3 filena
6a70: 6d 65 73 2e 20 20 49 66 20 74 68 65 20 76 61 6c  mes.  If the val
6a80: 75 65 20 6f 66 20 74 68 69 73 20 6d 61 63 72 6f  ue of this macro
6a90: 20 69 73 20 31 2c 0a 20 20 74 68 65 6e 20 74 68   is 1,.  then th
6aa0: 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69  e default behavi
6ab0: 6f 72 20 69 73 20 74 6f 20 63 6f 6e 74 69 6e 75  or is to continu
6ac0: 65 20 74 6f 20 75 73 65 20 6c 6f 6e 67 20 66 69  e to use long fi
6ad0: 6c 65 6e 61 6d 65 73 20 61 6e 64 0a 20 20 74 6f  lenames and.  to
6ae0: 20 6f 6e 6c 79 20 75 73 65 20 38 2b 33 20 66 69   only use 8+3 fi
6af0: 6c 65 6e 61 6d 65 73 20 69 66 20 74 68 65 20 0a  lenames if the .
6b00: 20 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65    database conne
6b10: 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 65 64 20  ction is opened 
6b20: 75 73 69 6e 67 20 5b 55 52 49 20 66 69 6c 65 6e  using [URI filen
6b30: 61 6d 65 73 5d 20 77 69 74 68 0a 20 20 74 68 65  ames] with.  the
6b40: 20 22 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73 3d   "<tt>8_3_names=
6b50: 31 3c 2f 74 74 3e 22 20 71 75 65 72 79 20 70 61  1</tt>" query pa
6b60: 72 61 6d 65 74 65 72 2e 20 20 49 66 20 74 68 65  rameter.  If the
6b70: 20 76 61 6c 75 65 20 6f 66 0a 20 20 74 68 69 73   value of.  this
6b80: 20 6d 61 63 72 6f 20 69 73 20 32 2c 20 74 68 65   macro is 2, the
6b90: 6e 20 74 68 65 20 75 73 65 20 6f 66 20 38 2b 33  n the use of 8+3
6ba0: 20 66 69 6c 65 6e 61 6d 65 73 20 62 65 63 6f 6d   filenames becom
6bb0: 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20  es the default. 
6bc0: 20 62 75 74 20 6d 61 79 20 62 65 20 64 69 73 61   but may be disa
6bd0: 62 6c 65 64 20 6f 6e 20 75 73 69 6e 67 20 74 68  bled on using th
6be0: 65 20 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73 3d  e <tt>8_3_names=
6bf0: 30 3c 2f 74 74 3e 20 71 75 65 72 79 20 70 61 72  0</tt> query par
6c00: 61 6d 65 74 65 72 2e 0a 20 20 53 65 65 20 0a 7d  ameter..  See .}
6c10: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
6c20: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
6c30: 41 50 49 5f 41 52 4d 4f 52 7d 20 7b 0a 20 20 57  API_ARMOR} {.  W
6c40: 68 65 6e 20 64 65 66 69 6e 65 64 2c 20 74 68 69  hen defined, thi
6c50: 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72  s C-preprocessor
6c60: 20 6d 61 63 72 6f 20 61 63 74 69 76 61 74 65 73   macro activates
6c70: 20 65 78 74 72 61 20 63 6f 64 65 20 74 68 61 74   extra code that
6c80: 0a 20 20 61 74 74 65 6d 70 74 73 20 74 6f 20 64  .  attempts to d
6c90: 65 74 65 63 74 20 6d 69 73 75 73 65 20 6f 66 20  etect misuse of 
6ca0: 74 68 65 20 53 51 4c 69 74 65 20 41 50 49 2c 20  the SQLite API, 
6cb0: 73 75 63 68 20 61 73 20 70 61 73 73 69 6e 67 20  such as passing 
6cc0: 69 6e 20 4e 55 4c 4c 0a 20 20 70 6f 69 6e 74 65  in NULL.  pointe
6cd0: 72 73 20 74 6f 20 72 65 71 75 69 72 65 64 20 70  rs to required p
6ce0: 61 72 61 6d 65 74 65 72 73 20 6f 72 20 75 73 69  arameters or usi
6cf0: 6e 67 20 6f 62 6a 65 63 74 73 20 61 66 74 65 72  ng objects after
6d00: 20 74 68 65 79 20 68 61 76 65 20 62 65 65 6e 0a   they have been.
6d10: 20 20 64 65 73 74 72 6f 79 65 64 2e 0a 7d 0a 0a    destroyed..}..
6d20: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
6d30: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 41 54  SQLITE_ENABLE_AT
6d40: 4f 4d 49 43 5f 57 52 49 54 45 7d 20 7b 0a 20 20  OMIC_WRITE} {.  
6d50: 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f  If this C-prepro
6d60: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20  cessor macro is 
6d70: 64 65 66 69 6e 65 64 20 61 6e 64 20 69 66 20 74  defined and if t
6d80: 68 65 0a 20 20 78 44 65 76 69 63 65 43 68 61 72  he.  xDeviceChar
6d90: 61 63 74 65 72 69 73 74 69 63 73 20 6d 65 74 68  acteristics meth
6da0: 6f 64 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 69  od of [sqlite3_i
6db0: 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63  o_methods] objec
6dc0: 74 20 66 6f 72 0a 20 20 61 20 64 61 74 61 62 61  t for.  a databa
6dd0: 73 65 20 66 69 6c 65 20 72 65 70 6f 72 74 73 20  se file reports 
6de0: 28 76 69 61 20 6f 6e 65 20 6f 66 20 74 68 65 20  (via one of the 
6df0: 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54  [SQLITE_IOCAP_AT
6e00: 4f 4d 49 43 5d 20 62 69 74 73 29 0a 20 20 74 68  OMIC] bits).  th
6e10: 61 74 20 74 68 65 20 66 69 6c 65 73 79 73 74 65  at the filesyste
6e20: 6d 20 73 75 70 70 6f 72 74 73 20 61 74 6f 6d 69  m supports atomi
6e30: 63 20 77 72 69 74 65 73 20 61 6e 64 20 69 66 20  c writes and if 
6e40: 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 20 20  a transaction.  
6e50: 69 6e 76 6f 6c 76 65 73 20 61 20 63 68 61 6e 67  involves a chang
6e60: 65 20 74 6f 20 6f 6e 6c 79 20 61 20 73 69 6e 67  e to only a sing
6e70: 6c 65 20 70 61 67 65 20 6f 66 20 74 68 65 20 64  le page of the d
6e80: 61 74 61 62 61 73 65 20 66 69 6c 65 2c 0a 20 20  atabase file,.  
6e90: 74 68 65 6e 20 74 68 65 20 74 72 61 6e 73 61 63  then the transac
6ea0: 74 69 6f 6e 20 63 6f 6d 6d 69 74 73 20 77 69 74  tion commits wit
6eb0: 68 20 6a 75 73 74 20 61 20 73 69 6e 67 6c 65 20  h just a single 
6ec0: 77 72 69 74 65 20 72 65 71 75 65 73 74 20 6f 66  write request of
6ed0: 0a 20 20 61 20 73 69 6e 67 6c 65 20 70 61 67 65  .  a single page
6ee0: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
6ef0: 20 61 6e 64 20 6e 6f 20 72 6f 6c 6c 62 61 63 6b   and no rollback
6f00: 20 6a 6f 75 72 6e 61 6c 20 69 73 20 63 72 65 61   journal is crea
6f10: 74 65 64 0a 20 20 6f 72 20 77 72 69 74 74 65 6e  ted.  or written
6f20: 2e 20 20 4f 6e 20 66 69 6c 65 73 79 73 74 65 6d  .  On filesystem
6f30: 73 20 74 68 61 74 20 73 75 70 70 6f 72 74 20 61  s that support a
6f40: 74 6f 6d 69 63 20 77 72 69 74 65 73 2c 20 74 68  tomic writes, th
6f50: 69 73 0a 20 20 6f 70 74 69 6d 69 7a 61 74 69 6f  is.  optimizatio
6f60: 6e 20 63 61 6e 20 72 65 73 75 6c 74 20 69 6e 20  n can result in 
6f70: 73 69 67 6e 69 66 69 63 61 6e 74 20 73 70 65 65  significant spee
6f80: 64 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 20 66  d improvements f
6f90: 6f 72 0a 20 20 73 6d 61 6c 6c 20 75 70 64 61 74  or.  small updat
6fa0: 65 73 2e 20 20 48 6f 77 65 76 65 72 2c 20 66 65  es.  However, fe
6fb0: 77 20 66 69 6c 65 73 79 73 74 65 6d 73 20 73 75  w filesystems su
6fc0: 70 70 6f 72 74 20 74 68 69 73 20 63 61 70 61 62  pport this capab
6fd0: 69 6c 69 74 79 0a 20 20 61 6e 64 20 74 68 65 20  ility.  and the 
6fe0: 63 6f 64 65 20 70 61 74 68 73 20 74 68 61 74 20  code paths that 
6ff0: 63 68 65 63 6b 20 66 6f 72 20 74 68 69 73 20 63  check for this c
7000: 61 70 61 62 69 6c 69 74 79 20 73 6c 6f 77 20 64  apability slow d
7010: 6f 77 6e 20 77 72 69 74 65 0a 20 20 70 65 72 66  own write.  perf
7020: 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 79 73 74 65  ormance on syste
7030: 6d 73 20 74 68 61 74 20 6c 61 63 6b 20 61 74 6f  ms that lack ato
7040: 6d 69 63 20 77 72 69 74 65 20 63 61 70 61 62 69  mic write capabi
7050: 6c 69 74 79 2c 20 73 6f 20 74 68 69 73 0a 20 20  lity, so this.  
7060: 66 65 61 74 75 72 65 20 69 73 20 64 69 73 61 62  feature is disab
7070: 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a  led by default..
7080: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
7090: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
70a0: 5f 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44 41 54 41  _COLUMN_METADATA
70b0: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
70c0: 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C-preprocessor m
70d0: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c  acro is defined,
70e0: 20 53 51 4c 69 74 65 20 69 6e 63 6c 75 64 65 73   SQLite includes
70f0: 20 73 6f 6d 65 0a 20 20 61 64 64 69 74 69 6f 6e   some.  addition
7100: 61 6c 20 41 50 49 73 20 74 68 61 74 20 70 72 6f  al APIs that pro
7110: 76 69 64 65 20 63 6f 6e 76 65 6e 69 65 6e 74 20  vide convenient 
7120: 61 63 63 65 73 73 20 74 6f 20 6d 65 74 61 2d 64  access to meta-d
7130: 61 74 61 20 61 62 6f 75 74 0a 20 20 74 61 62 6c  ata about.  tabl
7140: 65 73 20 61 6e 64 20 71 75 65 72 69 65 73 2e 20  es and queries. 
7150: 20 54 68 65 20 41 50 49 73 20 74 68 61 74 20 61   The APIs that a
7160: 72 65 20 65 6e 61 62 6c 65 64 20 62 79 20 74 68  re enabled by th
7170: 69 73 20 6f 70 74 69 6f 6e 20 61 72 65 3a 0a 0a  is option are:..
7180: 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 20 5b 73    <ul>.  <li> [s
7190: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61  qlite3_column_da
71a0: 74 61 62 61 73 65 5f 6e 61 6d 65 28 29 5d 20 3c  tabase_name()] <
71b0: 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c  /li>.  <li> [sql
71c0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
71d0: 62 61 73 65 5f 6e 61 6d 65 31 36 28 29 5d 20 3c  base_name16()] <
71e0: 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c  /li>.  <li> [sql
71f0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
7200: 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a  e_name()] </li>.
7210: 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
7220: 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d  column_table_nam
7230: 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c  e16()] </li>.  <
7240: 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  li> [sqlite3_col
7250: 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28  umn_origin_name(
7260: 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20  )] </li>.  <li> 
7270: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
7280: 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 29 5d  origin_name16()]
7290: 20 3c 2f 6c 69 3e 0a 20 20 3c 2f 75 6c 3e 0a 7d   </li>.  </ul>.}
72a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
72b0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
72c0: 44 42 53 54 41 54 5f 56 54 41 42 7d 20 7b 0a 20  DBSTAT_VTAB} {. 
72d0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61   This option ena
72e0: 62 6c 65 73 20 74 68 65 20 5b 64 62 73 74 61 74  bles the [dbstat
72f0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 5d 2e   virtual table].
7300: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
7310: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
7320: 45 5f 45 58 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e  E_EXPLAIN_COMMEN
7330: 54 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  TS} {.  This opt
7340: 69 6f 6e 20 61 64 64 73 20 65 78 74 72 61 20 6c  ion adds extra l
7350: 6f 67 69 63 20 74 6f 20 53 51 4c 69 74 65 20 74  ogic to SQLite t
7360: 68 61 74 20 69 6e 73 65 72 74 73 20 63 6f 6d 6d  hat inserts comm
7370: 65 6e 74 20 74 65 78 74 20 69 6e 74 6f 20 74 68  ent text into th
7380: 65 0a 20 20 6f 75 74 70 75 74 20 6f 66 20 5b 45  e.  output of [E
7390: 58 50 4c 41 49 4e 5d 2e 20 20 54 68 65 73 65 20  XPLAIN].  These 
73a0: 65 78 74 72 61 20 63 6f 6d 6d 65 6e 74 73 20 75  extra comments u
73b0: 73 65 20 65 78 74 72 61 20 6d 65 6d 6f 72 79 2c  se extra memory,
73c0: 20 74 68 75 73 0a 20 20 6d 61 6b 69 6e 67 20 5b   thus.  making [
73d0: 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
73e0: 6e 74 73 5d 20 6c 61 72 67 65 72 20 61 6e 64 20  nts] larger and 
73f0: 76 65 72 79 20 73 6c 69 67 68 74 6c 79 20 73 6c  very slightly sl
7400: 6f 77 65 72 2c 20 61 6e 64 20 73 6f 20 74 68 65  ower, and so the
7410: 79 20 61 72 65 0a 20 20 74 75 72 6e 65 64 20 6f  y are.  turned o
7420: 66 66 20 62 79 20 64 65 66 61 75 6c 74 20 61 6e  ff by default an
7430: 64 20 69 6e 20 6d 6f 73 74 20 61 70 70 6c 69 63  d in most applic
7440: 61 74 69 6f 6e 2e 20 20 42 75 74 20 73 6f 6d 65  ation.  But some
7450: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20 73   applications, s
7460: 75 63 68 0a 20 20 61 73 20 74 68 65 20 5b 63 6f  uch.  as the [co
7470: 6d 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c  mmand-line shell
7480: 5d 20 66 6f 72 20 53 51 4c 69 74 65 2c 20 76 61  ] for SQLite, va
7490: 6c 75 65 20 63 6c 61 72 69 74 79 20 6f 66 20 45  lue clarity of E
74a0: 58 50 4c 41 49 4e 20 6f 75 74 70 75 74 0a 20 20  XPLAIN output.  
74b0: 6f 76 65 72 20 72 61 77 20 70 65 72 66 6f 72 6d  over raw perform
74c0: 61 6e 63 65 20 61 6e 64 20 73 6f 20 74 68 69 73  ance and so this
74d0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
74e0: 74 69 6f 6e 20 69 73 20 61 76 61 69 6c 61 62 6c  tion is availabl
74f0: 65 20 74 6f 20 74 68 65 6d 2e 0a 20 20 54 68 65  e to them..  The
7500: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45   SQLITE_ENABLE_E
7510: 58 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53 20  XPLAIN_COMMENTS 
7520: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
7530: 69 6f 6e 20 69 73 20 61 6c 73 6f 20 65 6e 61 62  ion is also enab
7540: 6c 65 64 0a 20 20 61 75 74 6f 6d 61 74 69 63 61  led.  automatica
7550: 6c 6c 79 20 69 66 20 5b 53 51 4c 49 54 45 5f 44  lly if [SQLITE_D
7560: 45 42 55 47 5d 20 69 73 20 65 6e 61 62 6c 65 64  EBUG] is enabled
7570: 2e 0a 7d 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ..}...COMPILE_OP
7580: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
7590: 42 4c 45 5f 46 54 53 33 7d 20 7b 0a 20 20 57 68  BLE_FTS3} {.  Wh
75a0: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
75b0: 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65  s defined in the
75c0: 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c   [amalgamation],
75d0: 20 76 65 72 73 69 6f 6e 20 33 0a 20 20 6f 66 20   version 3.  of 
75e0: 74 68 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65  the full-text se
75f0: 61 72 63 68 20 65 6e 67 69 6e 65 20 69 73 20 61  arch engine is a
7600: 64 64 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c  dded to the buil
7610: 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e  d automatically.
7620: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
7630: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
7640: 45 5f 46 54 53 33 5f 50 41 52 45 4e 54 48 45 53  E_FTS3_PARENTHES
7650: 49 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  IS} {.  This opt
7660: 69 6f 6e 20 6d 6f 64 69 66 69 65 73 20 74 68 65  ion modifies the
7670: 20 71 75 65 72 79 20 70 61 74 74 65 72 6e 20 70   query pattern p
7680: 61 72 73 65 72 20 69 6e 20 46 54 53 33 20 73 75  arser in FTS3 su
7690: 63 68 20 74 68 61 74 20 69 74 0a 20 20 73 75 70  ch that it.  sup
76a0: 70 6f 72 74 73 20 6f 70 65 72 61 74 6f 72 73 20  ports operators 
76b0: 41 4e 44 20 61 6e 64 20 4e 4f 54 20 28 69 6e 20  AND and NOT (in 
76c0: 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 20  addition to the 
76d0: 75 73 75 61 6c 20 4f 52 20 61 6e 64 20 4e 45 41  usual OR and NEA
76e0: 52 29 0a 20 20 61 6e 64 20 61 6c 73 6f 20 61 6c  R).  and also al
76f0: 6c 6f 77 73 20 71 75 65 72 79 20 65 78 70 72 65  lows query expre
7700: 73 73 69 6f 6e 73 20 74 6f 20 63 6f 6e 74 61 69  ssions to contai
7710: 6e 20 6e 65 73 74 65 64 20 70 61 72 65 6e 74 68  n nested parenth
7720: 65 73 69 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  esis..}..COMPILE
7730: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7740: 45 4e 41 42 4c 45 5f 46 54 53 34 7d 20 7b 0a 20  ENABLE_FTS4} {. 
7750: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
7760: 6e 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20  n is defined in 
7770: 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f  the [amalgamatio
7780: 6e 5d 2c 20 76 65 72 73 69 6f 6e 73 20 33 20 61  n], versions 3 a
7790: 6e 64 20 34 0a 20 20 6f 66 20 74 68 65 20 66 75  nd 4.  of the fu
77a0: 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20 65  ll-text search e
77b0: 6e 67 69 6e 65 20 69 73 20 61 64 64 65 64 20 74  ngine is added t
77c0: 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f  o the build auto
77d0: 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f  matically..}..CO
77e0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
77f0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 35  LITE_ENABLE_FTS5
7800: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
7810: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
7820: 64 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61  d in the [amalga
7830: 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e  mation], version
7840: 73 20 35 0a 20 20 6f 66 20 74 68 65 20 66 75 6c  s 5.  of the ful
7850: 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20 65 6e  l-text search en
7860: 67 69 6e 65 20 28 5b 66 74 73 35 5d 29 20 69 73  gine ([fts5]) is
7870: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75   added to the bu
7880: 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ild automaticall
7890: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
78a0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
78b0: 42 4c 45 5f 49 43 55 7d 20 7b 0a 20 20 54 68 69  BLE_ICU} {.  Thi
78c0: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
78d0: 74 68 65 20 0a 20 20 5b 68 74 74 70 3a 2f 2f 77  the .  [http://w
78e0: 77 77 2e 69 63 75 2d 70 72 6f 6a 65 63 74 2e 6f  ww.icu-project.o
78f0: 72 67 2f 20 7c 20 49 6e 74 65 72 6e 61 74 69 6f  rg/ | Internatio
7900: 6e 61 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73 20 66  nal Components f
7910: 6f 72 20 55 6e 69 63 6f 64 65 5d 0a 20 20 6f 72  or Unicode].  or
7920: 20 22 49 43 55 22 20 65 78 74 65 6e 73 69 6f 6e   "ICU" extension
7930: 20 74 6f 20 53 51 4c 69 74 65 20 74 6f 20 62 65   to SQLite to be
7940: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75   added to the bu
7950: 69 6c 64 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c  ild.  .}..COMPIL
7960: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7970: 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43 45 7d  _ENABLE_IOTRACE}
7980: 20 7b 0a 20 20 57 68 65 6e 20 62 6f 74 68 20 74   {.  When both t
7990: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 61  he SQLite core a
79a0: 6e 64 20 74 68 65 20 5b 43 6f 6d 6d 61 6e 64 20  nd the [Command 
79b0: 4c 69 6e 65 20 49 6e 74 65 72 66 61 63 65 5d 20  Line Interface] 
79c0: 28 43 4c 49 29 20 61 72 65 20 62 6f 74 68 20 0a  (CLI) are both .
79d0: 20 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20    compiled with 
79e0: 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 74 68 65  this option, the
79f0: 6e 20 74 68 65 20 43 4c 49 20 70 72 6f 76 69 64  n the CLI provid
7a00: 65 73 20 61 6e 20 65 78 74 72 61 20 63 6f 6d 6d  es an extra comm
7a10: 61 6e 64 0a 20 20 6e 61 6d 65 64 20 22 2e 69 6f  and.  named ".io
7a20: 74 72 61 63 65 22 20 74 68 61 74 20 70 72 6f 76  trace" that prov
7a30: 69 64 65 73 20 61 20 6c 6f 77 2d 6c 65 76 65 6c  ides a low-level
7a40: 20 6c 6f 67 20 6f 66 20 49 2f 4f 20 61 63 74 69   log of I/O acti
7a50: 76 69 74 79 2e 0a 20 20 54 68 69 73 20 6f 70 74  vity..  This opt
7a60: 69 6f 6e 20 69 73 20 65 78 70 65 72 69 6d 65 6e  ion is experimen
7a70: 74 61 6c 20 61 6e 64 20 6d 61 79 20 62 65 20 64  tal and may be d
7a80: 69 73 63 6f 6e 74 69 6e 75 65 64 20 69 6e 20 61  iscontinued in a
7a90: 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 2e   future release.
7aa0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
7ab0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
7ac0: 45 5f 4a 53 4f 4e 31 7d 20 7b 0a 20 20 57 68 65  E_JSON1} {.  Whe
7ad0: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
7ae0: 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20   defined in the 
7af0: 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20  [amalgamation], 
7b00: 74 68 65 0a 20 20 5b 4a 53 4f 4e 20 53 51 4c 20  the.  [JSON SQL 
7b10: 66 75 6e 63 74 69 6f 6e 73 5d 20 61 72 65 20 61  functions] are a
7b20: 64 64 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c  dded to the buil
7b30: 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e  d automatically.
7b40: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
7b50: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
7b60: 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 7d  E_LOCKING_STYLE}
7b70: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
7b80: 20 65 6e 61 62 6c 65 73 20 61 64 64 69 74 69 6f   enables additio
7b90: 6e 61 6c 20 6c 6f 67 69 63 20 69 6e 20 74 68 65  nal logic in the
7ba0: 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20 6c 61   OS interface la
7bb0: 79 65 72 20 66 6f 72 0a 20 20 4d 61 63 20 4f 53  yer for.  Mac OS
7bc0: 20 58 2e 20 54 68 65 20 61 64 64 69 74 69 6f 6e   X. The addition
7bd0: 61 6c 20 6c 6f 67 69 63 20 61 74 74 65 6d 70 74  al logic attempt
7be0: 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74  s to determine t
7bf0: 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 0a 20  he type of the. 
7c00: 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 69 6c 65   underlying file
7c10: 73 79 73 74 65 6d 20 61 6e 64 20 63 68 6f 6f 73  system and choos
7c20: 65 20 61 6e 64 20 61 6c 74 65 72 6e 61 74 69 76  e and alternativ
7c30: 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61 74 65  e locking strate
7c40: 67 79 0a 20 20 74 68 61 74 20 77 6f 72 6b 73 20  gy.  that works 
7c50: 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 20 74 68  correctly for th
7c60: 61 74 20 66 69 6c 65 73 79 73 74 65 6d 20 74 79  at filesystem ty
7c70: 70 65 2e 20 46 69 76 65 20 6c 6f 63 6b 69 6e 67  pe. Five locking
7c80: 20 73 74 72 61 74 65 67 69 65 73 20 0a 20 20 61   strategies .  a
7c90: 72 65 20 61 76 61 69 6c 61 62 6c 65 3a 0a 0a 20  re available:.. 
7ca0: 20 3c 75 6c 3e 0a 20 20 20 20 3c 6c 69 3e 20 50   <ul>.    <li> P
7cb0: 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79  OSIX locking sty
7cc0: 6c 65 2e 20 54 68 69 73 20 69 73 20 74 68 65 20  le. This is the 
7cd0: 64 65 66 61 75 6c 74 20 6c 6f 63 6b 69 6e 67 20  default locking 
7ce0: 73 74 79 6c 65 20 61 6e 64 20 74 68 65 0a 20 20  style and the.  
7cf0: 20 20 20 20 20 20 20 73 74 79 6c 65 20 75 73 65         style use
7d00: 64 20 62 79 20 6f 74 68 65 72 20 28 6e 6f 6e 20  d by other (non 
7d10: 4d 61 63 20 4f 53 20 58 29 20 55 6e 69 78 65 73  Mac OS X) Unixes
7d20: 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61  . Locks are obta
7d30: 69 6e 65 64 20 61 6e 64 20 0a 20 20 20 20 20 20  ined and .      
7d40: 20 20 20 72 65 6c 65 61 73 65 64 20 75 73 69 6e     released usin
7d50: 67 20 74 68 65 20 66 63 6e 74 6c 28 29 20 73 79  g the fcntl() sy
7d60: 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20  stem call...    
7d70: 3c 6c 69 3e 20 41 46 50 20 6c 6f 63 6b 69 6e 67  <li> AFP locking
7d80: 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63   style. This loc
7d90: 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73  king style is us
7da0: 65 64 20 66 6f 72 20 6e 65 74 77 6f 72 6b 20 66  ed for network f
7db0: 69 6c 65 20 0a 20 20 20 20 20 20 20 20 20 73 79  ile .         sy
7dc0: 73 74 65 6d 73 20 74 68 61 74 20 75 73 65 20 74  stems that use t
7dd0: 68 65 20 41 46 50 20 28 41 70 70 6c 65 20 46 69  he AFP (Apple Fi
7de0: 6c 69 6e 67 20 50 72 6f 74 6f 63 6f 6c 29 20 70  ling Protocol) p
7df0: 72 6f 74 6f 63 6f 6c 2e 20 4c 6f 63 6b 73 0a 20  rotocol. Locks. 
7e00: 20 20 20 20 20 20 20 20 61 72 65 20 6f 62 74 61          are obta
7e10: 69 6e 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 20  ined by calling 
7e20: 74 68 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63  the library func
7e30: 74 69 6f 6e 20 5f 41 46 50 46 53 53 65 74 4c 6f  tion _AFPFSSetLo
7e40: 63 6b 28 29 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20  ck()...    <li> 
7e50: 46 6c 6f 63 6b 20 6c 6f 63 6b 69 6e 67 20 73 74  Flock locking st
7e60: 79 6c 65 2e 20 54 68 69 73 20 69 73 20 75 73 65  yle. This is use
7e70: 64 20 66 6f 72 20 66 69 6c 65 2d 73 79 73 74 65  d for file-syste
7e80: 6d 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 0a 20  ms that do not. 
7e90: 20 20 20 20 20 20 20 20 73 75 70 70 6f 72 74 20          support 
7ea0: 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74  POSIX locking st
7eb0: 79 6c 65 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f  yle. Locks are o
7ec0: 62 74 61 69 6e 65 64 20 61 6e 64 20 72 65 6c 65  btained and rele
7ed0: 61 73 65 64 20 75 73 69 6e 67 0a 20 20 20 20 20  ased using.     
7ee0: 20 20 20 20 74 68 65 20 66 6c 6f 63 6b 28 29 20      the flock() 
7ef0: 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20  system call...  
7f00: 20 20 3c 6c 69 3e 20 44 6f 74 2d 66 69 6c 65 20    <li> Dot-file 
7f10: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54  locking style. T
7f20: 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  his locking styl
7f30: 65 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 6e  e is used when n
7f40: 65 69 74 68 65 72 0a 20 20 20 20 20 20 20 20 20  either.         
7f50: 66 6c 6f 63 6b 20 6e 6f 72 20 50 4f 53 49 58 20  flock nor POSIX 
7f60: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73 20 61  locking styles a
7f70: 72 65 20 73 75 70 70 6f 72 74 65 64 20 62 79 20  re supported by 
7f80: 74 68 65 20 66 69 6c 65 20 73 79 73 74 65 6d 2e  the file system.
7f90: 0a 20 20 20 20 20 20 20 20 20 44 61 74 61 62 61  .         Databa
7fa0: 73 65 20 6c 6f 63 6b 73 20 61 72 65 20 6f 62 74  se locks are obt
7fb0: 61 69 6e 65 64 20 62 79 20 63 72 65 61 74 69 6e  ained by creatin
7fc0: 67 20 61 6e 64 20 65 6e 74 72 79 20 69 6e 20 74  g and entry in t
7fd0: 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d 0a 20  he file-system. 
7fe0: 20 20 20 20 20 20 20 20 61 74 20 61 20 77 65 6c          at a wel
7ff0: 6c 2d 6b 6e 6f 77 6e 20 6c 6f 63 61 74 69 6f 6e  l-known location
8000: 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65   relative to the
8010: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 28   database file (
8020: 61 20 22 64 6f 74 2d 66 69 6c 65 22 29 0a 20 20  a "dot-file").  
8030: 20 20 20 20 20 20 20 61 6e 64 20 72 65 6c 69 6e         and relin
8040: 71 75 69 73 68 65 64 20 62 79 20 64 65 6c 65 74  quished by delet
8050: 69 6e 67 20 74 68 65 20 73 61 6d 65 20 66 69 6c  ing the same fil
8060: 65 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 4e 6f 20  e...    <li> No 
8070: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 49  locking style. I
8080: 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 61 62  f none of the ab
8090: 6f 76 65 20 63 61 6e 20 62 65 20 73 75 70 70 6f  ove can be suppo
80a0: 72 74 65 64 2c 20 74 68 69 73 20 0a 20 20 20 20  rted, this .    
80b0: 20 20 20 20 20 6c 6f 63 6b 69 6e 67 20 73 74 79       locking sty
80c0: 6c 65 20 69 73 20 75 73 65 64 2e 20 4e 6f 20 64  le is used. No d
80d0: 61 74 61 62 61 73 65 20 6c 6f 63 6b 69 6e 67 20  atabase locking 
80e0: 6d 65 63 68 61 6e 69 73 6d 20 69 73 20 75 73 65  mechanism is use
80f0: 64 2e 20 57 68 65 6e 0a 20 20 20 20 20 20 20 20  d. When.        
8100: 20 74 68 69 73 20 73 79 73 74 65 6d 20 69 73 20   this system is 
8110: 75 73 65 64 20 69 74 20 69 73 20 6e 6f 74 20 73  used it is not s
8120: 61 66 65 20 66 6f 72 20 61 20 73 69 6e 67 6c 65  afe for a single
8130: 20 64 61 74 61 62 61 73 65 20 74 6f 20 62 65 0a   database to be.
8140: 20 20 20 20 20 20 20 20 20 61 63 63 65 73 73 65           accesse
8150: 64 20 62 79 20 6d 75 6c 74 69 70 6c 65 20 63 6c  d by multiple cl
8160: 69 65 6e 74 73 2e 0a 20 20 3c 2f 75 6c 3e 0a 0a  ients..  </ul>..
8170: 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20    Additionally, 
8180: 66 69 76 65 20 65 78 74 72 61 20 5b 56 46 53 5d  five extra [VFS]
8190: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
81a0: 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 61 73   are provided as
81b0: 20 77 65 6c 6c 20 61 73 20 74 68 65 0a 20 20 64   well as the.  d
81c0: 65 66 61 75 6c 74 2e 20 42 79 20 73 70 65 63 69  efault. By speci
81d0: 66 79 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65  fying one of the
81e0: 20 65 78 74 72 61 20 56 46 53 20 69 6d 70 6c 65   extra VFS imple
81f0: 6d 65 6e 74 61 74 69 6f 6e 73 20 0a 20 20 77 68  mentations .  wh
8200: 65 6e 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69  en calling [sqli
8210: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20  te3_open_v2()], 
8220: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  an application m
8230: 61 79 20 62 79 70 61 73 73 20 74 68 65 20 66 69  ay bypass the fi
8240: 6c 65 2d 73 79 73 74 65 6d 0a 20 20 64 65 74 65  le-system.  dete
8250: 63 74 69 6f 6e 20 6c 6f 67 69 63 20 61 6e 64 20  ction logic and 
8260: 65 78 70 6c 69 63 69 74 6c 79 20 73 65 6c 65 63  explicitly selec
8270: 74 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f  t one of the abo
8280: 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  ve locking style
8290: 73 2e 20 54 68 65 0a 20 20 66 69 76 65 20 65 78  s. The.  five ex
82a0: 74 72 61 20 5b 56 46 53 5d 20 69 6d 70 6c 65 6d  tra [VFS] implem
82b0: 65 6e 74 61 74 69 6f 6e 73 20 61 72 65 20 63 61  entations are ca
82c0: 6c 6c 65 64 20 22 75 6e 69 78 2d 70 6f 73 69 78  lled "unix-posix
82d0: 22 2c 20 22 75 6e 69 78 2d 61 66 70 22 2c 0a 20  ", "unix-afp",. 
82e0: 20 22 75 6e 69 78 2d 66 6c 6f 63 6b 22 2c 20 22   "unix-flock", "
82f0: 75 6e 69 78 2d 64 6f 74 66 69 6c 65 22 20 61 6e  unix-dotfile" an
8300: 64 20 22 75 6e 69 78 2d 6e 6f 6e 65 22 2e 0a 7d  d "unix-none"..}
8310: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8320: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
8330: 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e  MEMORY_MANAGEMEN
8340: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
8350: 6f 6e 20 61 64 64 73 20 65 78 74 72 61 20 6c 6f  on adds extra lo
8360: 67 69 63 20 74 6f 20 53 51 4c 69 74 65 20 74 68  gic to SQLite th
8370: 61 74 20 61 6c 6c 6f 77 73 20 69 74 20 74 6f 20  at allows it to 
8380: 72 65 6c 65 61 73 65 20 75 6e 75 73 65 64 0a 20  release unused. 
8390: 20 6d 65 6d 6f 72 79 20 75 70 6f 6e 20 72 65 71   memory upon req
83a0: 75 65 73 74 2e 20 20 54 68 69 73 20 6f 70 74 69  uest.  This opti
83b0: 6f 6e 20 6d 75 73 74 20 62 65 20 65 6e 61 62 6c  on must be enabl
83c0: 65 64 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20  ed in order for 
83d0: 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72  the.  [sqlite3_r
83e0: 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d  elease_memory()]
83f0: 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 77 6f   interface to wo
8400: 72 6b 2e 20 20 49 66 20 74 68 69 73 20 63 6f 6d  rk.  If this com
8410: 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f 70 74 69  pile-time.  opti
8420: 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65 64 2c 20  on is not used, 
8430: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c  the [sqlite3_rel
8440: 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69  ease_memory()] i
8450: 6e 74 65 72 66 61 63 65 20 69 73 20 61 20 0a 20  nterface is a . 
8460: 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50 49   no-op..}..COMPI
8470: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
8480: 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33  E_ENABLE_MEMSYS3
8490: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
84a0: 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64 65 20  n includes code 
84b0: 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74 20 69  in SQLite that i
84c0: 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61 6c 74  mplements an alt
84d0: 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d 6f 72  ernative.  memor
84e0: 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 54 68  y allocator.  Th
84f0: 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6d  is alternative m
8500: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
8510: 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65 64 0a  is only engaged.
8520: 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51 4c 49    when the [SQLI
8530: 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 20  TE_CONFIG_HEAP] 
8540: 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74  option to [sqlit
8550: 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73 20  e3_config()] is 
8560: 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70 6c 79  used to.  supply
8570: 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b 20 6f   a large chunk o
8580: 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 77 68  f memory from wh
8590: 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61  ich all memory a
85a0: 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65 0a 20  llocations are. 
85b0: 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20 4d 45   taken..  The ME
85c0: 4d 53 59 53 33 20 6d 65 6d 6f 72 79 20 61 6c 6c  MSYS3 memory all
85d0: 6f 63 61 74 6f 72 20 75 73 65 73 20 61 20 68 79  ocator uses a hy
85e0: 62 72 69 64 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  brid allocation 
85f0: 61 6c 67 6f 72 69 74 68 6d 20 0a 20 20 70 61 74  algorithm .  pat
8600: 74 65 72 6e 65 64 20 61 66 74 65 72 20 64 6c 6d  terned after dlm
8610: 61 6c 6c 6f 63 28 29 2e 20 20 20 4f 6e 6c 79 20  alloc().   Only 
8620: 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f 45 4e  one of SQLITE_EN
8630: 41 42 4c 45 5f 4d 45 4d 53 59 53 33 20 61 6e 64  ABLE_MEMSYS3 and
8640: 20 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c   .  SQLITE_ENABL
8650: 45 5f 4d 45 4d 53 59 53 35 20 6d 61 79 20 62 65  E_MEMSYS5 may be
8660: 20 65 6e 61 62 6c 65 64 20 61 74 20 6f 6e 63 65   enabled at once
8670: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
8680: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
8690: 4c 45 5f 4d 45 4d 53 59 53 35 7d 20 7b 0a 20 20  LE_MEMSYS5} {.  
86a0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e 63 6c  This option incl
86b0: 75 64 65 73 20 63 6f 64 65 20 69 6e 20 53 51 4c  udes code in SQL
86c0: 69 74 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65  ite that impleme
86d0: 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69  nts an alternati
86e0: 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ve.  memory allo
86f0: 63 61 74 6f 72 2e 20 20 54 68 69 73 20 61 6c 74  cator.  This alt
8700: 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20  ernative memory 
8710: 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f 6e 6c  allocator is onl
8720: 79 20 65 6e 67 61 67 65 64 0a 20 20 77 68 65 6e  y engaged.  when
8730: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e   the [SQLITE_CON
8740: 46 49 47 5f 48 45 41 50 5d 20 6f 70 74 69 6f 6e  FIG_HEAP] option
8750: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e   to [sqlite3_con
8760: 66 69 67 28 29 5d 20 69 73 20 75 73 65 64 20 74  fig()] is used t
8770: 6f 0a 20 20 73 75 70 70 6c 79 20 61 20 6c 61 72  o.  supply a lar
8780: 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f  ge chunk of memo
8790: 72 79 20 66 72 6f 6d 20 77 68 69 63 68 20 61 6c  ry from which al
87a0: 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  l memory allocat
87b0: 69 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b 65 6e  ions are.  taken
87c0: 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59 53 35 20  ..  The MEMSYS5 
87d0: 6d 6f 64 75 6c 65 20 72 6f 75 6e 64 73 20 61 6c  module rounds al
87e0: 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 75 70  l allocations up
87f0: 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70 6f 77   to the next pow
8800: 65 72 0a 20 20 6f 66 20 74 77 6f 20 61 6e 64 20  er.  of two and 
8810: 75 73 65 73 20 61 20 66 69 72 73 74 2d 66 69 74  uses a first-fit
8820: 2c 20 62 75 64 64 79 2d 61 6c 6c 6f 63 61 74 6f  , buddy-allocato
8830: 72 20 61 6c 67 6f 72 69 74 68 6d 0a 20 20 74 68  r algorithm.  th
8840: 61 74 20 70 72 6f 76 69 64 65 73 20 73 74 72 6f  at provides stro
8850: 6e 67 20 67 75 61 72 61 6e 74 65 65 73 20 61 67  ng guarantees ag
8860: 61 69 6e 73 74 20 66 72 61 67 6d 65 6e 74 61 74  ainst fragmentat
8870: 69 6f 6e 20 61 6e 64 20 62 72 65 61 6b 64 6f 77  ion and breakdow
8880: 6e 0a 20 20 73 75 62 6a 65 63 74 20 74 6f 20 63  n.  subject to c
8890: 65 72 74 61 69 6e 20 6f 70 65 72 61 74 69 6e 67  ertain operating
88a0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 7d 0a   constraints..}.
88b0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
88c0: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52  {SQLITE_ENABLE_R
88d0: 42 55 7d 20 7b 0a 20 20 45 6e 61 62 6c 65 20 74  BU} {.  Enable t
88e0: 68 65 20 63 6f 64 65 20 74 68 65 20 69 6d 70 6c  he code the impl
88f0: 65 6d 65 6e 74 73 20 74 68 65 20 5b 52 42 55 20  ements the [RBU 
8900: 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43  extension]..}..C
8910: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8920: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52  QLITE_ENABLE_RTR
8930: 45 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  EE} {.  This opt
8940: 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74  ion causes SQLit
8950: 65 20 74 6f 20 69 6e 63 6c 75 64 65 20 73 75 70  e to include sup
8960: 70 6f 72 74 20 66 6f 72 20 74 68 65 0a 20 20 5b  port for the.  [
8970: 72 74 72 65 65 20 7c 20 52 2a 54 72 65 65 20 69  rtree | R*Tree i
8980: 6e 64 65 78 20 65 78 74 65 6e 73 69 6f 6e 5d 2e  ndex extension].
8990: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
89a0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
89b0: 45 5f 53 54 4d 54 5f 53 43 41 4e 53 54 41 54 55  E_STMT_SCANSTATU
89c0: 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  S} {.  This opti
89d0: 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20 5b  on enables the [
89e0: 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 73 63 61  sqlite3_stmt_sca
89f0: 6e 73 74 61 74 75 73 28 29 5d 20 69 6e 74 65 72  nstatus()] inter
8a00: 66 61 63 65 2e 20 20 54 68 65 0a 20 20 5b 73 71  face.  The.  [sq
8a10: 6c 69 74 65 33 5f 73 74 6d 74 5f 73 63 61 6e 73  lite3_stmt_scans
8a20: 74 61 74 75 73 28 29 5d 20 69 6e 74 65 72 66 61  tatus()] interfa
8a30: 63 65 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 6f  ce is normally o
8a40: 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20  mitted from the 
8a50: 62 75 69 6c 64 0a 20 20 62 65 63 61 75 73 65 20  build.  because 
8a60: 69 74 20 69 6d 70 6f 73 65 73 20 61 20 73 6d 61  it imposes a sma
8a70: 6c 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70  ll performance p
8a80: 65 6e 61 6c 74 79 2c 20 65 76 65 6e 20 6f 6e 20  enalty, even on 
8a90: 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 0a  statements that.
8aa0: 20 20 64 6f 20 6e 6f 74 20 75 73 65 20 74 68 65    do not use the
8ab0: 20 66 65 61 74 75 72 65 2e 0a 7d 0a 0a 43 4f 4d   feature..}..COM
8ac0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
8ad0: 49 54 45 5f 52 54 52 45 45 5f 49 4e 54 5f 4f 4e  ITE_RTREE_INT_ON
8ae0: 4c 59 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  LY} {.  If this 
8af0: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
8b00: 6f 67 65 74 68 65 72 20 77 69 74 68 20 5b 53 51  ogether with [SQ
8b10: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45  LITE_ENABLE_RTRE
8b20: 45 5d 20 74 68 65 6e 20 74 68 65 0a 20 20 5b 72  E] then the.  [r
8b30: 74 72 65 65 20 7c 20 52 2a 54 72 65 65 20 65 78  tree | R*Tree ex
8b40: 74 65 6e 73 69 6f 6e 5d 20 77 69 6c 6c 20 6f 6e  tension] will on
8b50: 6c 79 20 73 74 6f 72 65 20 33 32 2d 62 69 74 20  ly store 32-bit 
8b60: 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 0a 20  signed integer. 
8b70: 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 61 6e 64   coordinates and
8b80: 20 61 6c 6c 20 69 6e 74 65 72 6e 61 6c 20 63 6f   all internal co
8b90: 6d 70 75 74 61 74 69 6f 6e 73 20 77 69 6c 6c 20  mputations will 
8ba0: 62 65 20 64 6f 6e 65 20 75 73 69 6e 67 20 69 6e  be done using in
8bb0: 74 65 67 65 72 73 0a 20 20 69 6e 73 74 65 61 64  tegers.  instead
8bc0: 20 6f 66 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69   of floating poi
8bd0: 6e 74 20 6e 75 6d 62 65 72 73 2e 0a 7d 0a 0a 43  nt numbers..}..C
8be0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8bf0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c  QLITE_ENABLE_SQL
8c00: 4c 4f 47 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  LOG} {.  This op
8c10: 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 65 78 74  tion enables ext
8c20: 72 61 20 63 6f 64 65 20 28 65 73 70 65 63 69 61  ra code (especia
8c30: 6c 6c 79 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  lly the [SQLITE_
8c40: 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 5d 0a 20  CONFIG_SQLLOG]. 
8c50: 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69   option to [sqli
8c60: 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 29 20 74  te3_config()]) t
8c70: 68 61 74 20 63 61 6e 20 62 65 20 75 73 65 64 20  hat can be used 
8c80: 74 6f 20 63 72 65 61 74 65 20 6c 6f 67 73 20 6f  to create logs o
8c90: 66 20 61 6c 6c 0a 20 20 53 51 4c 69 74 65 20 70  f all.  SQLite p
8ca0: 72 6f 63 65 73 73 69 6e 67 20 70 65 72 66 6f 72  rocessing perfor
8cb0: 6d 65 64 20 62 79 20 61 6e 20 61 70 70 6c 69 63  med by an applic
8cc0: 61 74 69 6f 6e 2e 20 20 54 68 65 73 65 20 6c 6f  ation.  These lo
8cd0: 67 73 20 63 61 6e 20 62 65 20 75 73 65 66 75 6c  gs can be useful
8ce0: 0a 20 20 69 6e 20 64 6f 69 6e 67 20 6f 66 66 2d  .  in doing off-
8cf0: 6c 69 6e 65 20 61 6e 61 6c 79 73 69 73 20 6f 66  line analysis of
8d00: 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f 66   the behavior of
8d10: 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c   an application,
8d20: 20 61 6e 64 20 65 73 70 65 63 69 61 6c 6c 79 0a   and especially.
8d30: 20 20 66 6f 72 20 70 65 72 66 6f 72 6d 61 6e 63    for performanc
8d40: 65 20 61 6e 61 6c 79 73 69 73 2e 20 20 49 6e 20  e analysis.  In 
8d50: 6f 72 64 65 72 20 66 6f 72 20 74 68 65 20 53 51  order for the SQ
8d60: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c  LITE_ENABLE_SQLL
8d70: 4f 47 20 6f 70 74 69 6f 6e 20 74 6f 20 0a 20 20  OG option to .  
8d80: 62 65 20 75 73 65 66 75 6c 2c 20 73 6f 6d 65 20  be useful, some 
8d90: 65 78 74 72 61 20 63 6f 64 65 20 69 73 20 72 65  extra code is re
8da0: 71 75 69 72 65 64 2e 20 20 54 68 65 20 0a 20 20  quired.  The .  
8db0: 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f  <a href="http://
8dc0: 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 73  www.sqlite.org/s
8dd0: 72 63 2f 64 6f 63 2f 74 72 75 6e 6b 2f 73 72 63  rc/doc/trunk/src
8de0: 2f 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 3e  /test_sqllog.c">
8df0: 22 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 3c  "test_sqllog.c"<
8e00: 2f 61 3e 0a 20 20 73 6f 75 72 63 65 20 63 6f 64  /a>.  source cod
8e10: 65 0a 20 20 66 69 6c 65 20 69 6e 20 74 68 65 20  e.  file in the 
8e20: 53 51 4c 69 74 65 20 73 6f 75 72 63 65 20 74 72  SQLite source tr
8e30: 65 65 20 69 73 20 61 20 77 6f 72 6b 69 6e 67 20  ee is a working 
8e40: 65 78 61 6d 70 6c 65 20 6f 66 20 74 68 65 20 72  example of the r
8e50: 65 71 75 69 72 65 64 20 65 78 74 72 61 0a 20 20  equired extra.  
8e60: 63 6f 64 65 2e 20 20 4f 6e 20 75 6e 69 78 20 61  code.  On unix a
8e70: 6e 64 20 77 69 6e 64 6f 77 73 20 73 79 73 74 65  nd windows syste
8e80: 6d 73 2c 20 61 20 64 65 76 65 6c 6f 70 65 72 20  ms, a developer 
8e90: 63 61 6e 20 61 70 70 65 6e 64 20 74 68 65 20 74  can append the t
8ea0: 65 78 74 20 6f 66 20 74 68 65 0a 20 20 22 74 65  ext of the.  "te
8eb0: 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f 75  st_sqllog.c" sou
8ec0: 72 63 65 20 63 6f 64 65 20 66 69 6c 65 20 74 6f  rce code file to
8ed0: 20 74 68 65 20 65 6e 64 20 6f 66 20 61 6e 20 22   the end of an "
8ee0: 73 71 6c 69 74 65 33 2e 63 22 20 61 6d 61 6c 67  sqlite3.c" amalg
8ef0: 61 6d 61 74 69 6f 6e 2c 0a 20 20 72 65 63 6f 6d  amation,.  recom
8f00: 70 69 6c 65 20 74 68 65 20 61 70 70 6c 69 63 61  pile the applica
8f10: 74 69 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 2d  tion using the -
8f20: 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  DSQLITE_ENABLE_S
8f30: 51 4c 4c 4f 47 20 6f 70 74 69 6f 6e 2c 20 74 68  QLLOG option, th
8f40: 65 6e 20 0a 20 20 63 6f 6e 74 72 6f 6c 20 6c 6f  en .  control lo
8f50: 67 67 69 6e 67 20 75 73 69 6e 67 20 65 6e 76 69  gging using envi
8f60: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
8f70: 73 2e 20 20 53 65 65 20 74 68 65 20 68 65 61 64  s.  See the head
8f80: 65 72 20 63 6f 6d 6d 65 6e 74 20 6f 6e 20 0a 20  er comment on . 
8f90: 20 74 68 65 20 22 74 65 73 74 5f 73 71 6c 6c 6f   the "test_sqllo
8fa0: 67 2e 63 22 20 73 6f 75 72 63 65 20 66 69 6c 65  g.c" source file
8fb0: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
8fc0: 64 65 74 61 69 6c 2e 20 20 0a 7d 0a 0a 43 4f 4d  detail.  .}..COM
8fd0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
8fe0: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 32  ITE_ENABLE_STAT2
8ff0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
9000: 6e 20 75 73 65 64 20 74 6f 20 63 61 75 73 65 20  n used to cause 
9010: 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f  the [ANALYZE] co
9020: 6d 6d 61 6e 64 20 74 6f 20 63 6f 6c 6c 65 63 74  mmand to collect
9030: 0a 20 20 69 6e 64 65 78 20 68 69 73 74 6f 67 72  .  index histogr
9040: 61 6d 20 64 61 74 61 20 69 6e 20 74 68 65 20 3c  am data in the <
9050: 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 32 3c 2f  b>sqlite_stat2</
9060: 62 3e 20 74 61 62 6c 65 2e 20 20 42 75 74 20 74  b> table.  But t
9070: 68 61 74 0a 20 20 66 75 6e 63 74 69 6f 6e 61 6c  hat.  functional
9080: 69 74 79 20 77 61 73 20 73 75 70 65 72 63 65 64  ity was superced
9090: 65 64 20 62 79 20 5b 53 51 4c 49 54 45 5f 45 4e  ed by [SQLITE_EN
90a0: 41 42 4c 45 5f 53 54 41 54 33 5d 20 61 73 20 6f  ABLE_STAT3] as o
90b0: 66 0a 20 20 53 51 4c 69 74 65 20 76 65 72 73 69  f.  SQLite versi
90c0: 6f 6e 20 33 2e 37 2e 39 2e 20 20 54 68 65 20 53  on 3.7.9.  The S
90d0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41  QLITE_ENABLE_STA
90e0: 54 32 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  T2 compile-time 
90f0: 6f 70 74 69 6f 6e 0a 20 20 69 73 20 6e 6f 77 20  option.  is now 
9100: 61 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50  a no-op..}..COMP
9110: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
9120: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33 7d  TE_ENABLE_STAT3}
9130: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
9140: 20 61 64 64 73 20 61 64 64 69 74 69 6f 6e 61 6c   adds additional
9150: 20 6c 6f 67 69 63 20 74 6f 20 74 68 65 20 5b 41   logic to the [A
9160: 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20  NALYZE] command 
9170: 61 6e 64 20 74 6f 0a 20 20 74 68 65 20 5b 71 75  and to.  the [qu
9180: 65 72 79 20 70 6c 61 6e 6e 65 72 5d 20 74 68 61  ery planner] tha
9190: 74 20 63 61 6e 20 68 65 6c 70 20 53 51 4c 69 74  t can help SQLit
91a0: 65 20 74 6f 20 63 68 6f 73 65 20 61 20 62 65 74  e to chose a bet
91b0: 74 65 72 20 71 75 65 72 79 20 70 6c 61 6e 0a 20  ter query plan. 
91c0: 20 75 6e 64 65 72 20 63 65 72 74 61 69 6e 20 73   under certain s
91d0: 69 74 75 61 74 69 6f 6e 73 2e 20 20 54 68 65 20  ituations.  The 
91e0: 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e  [ANALYZE] comman
91f0: 64 20 69 73 20 65 6e 68 61 6e 63 65 64 20 74 6f  d is enhanced to
9200: 20 63 6f 6c 6c 65 63 74 0a 20 20 68 69 73 74 6f   collect.  histo
9210: 67 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20 74  gram data from t
9220: 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63 6f 6c  he left-most col
9230: 75 6d 6e 20 6f 66 20 65 61 63 68 20 69 6e 64 65  umn of each inde
9240: 78 20 61 6e 64 20 73 74 6f 72 65 20 74 68 61 74  x and store that
9250: 20 64 61 74 61 0a 20 20 69 6e 20 74 68 65 20 5b   data.  in the [
9260: 73 71 6c 69 74 65 5f 73 74 61 74 33 5d 20 74 61  sqlite_stat3] ta
9270: 62 6c 65 2e 20 20 54 68 65 20 71 75 65 72 79 20  ble.  The query 
9280: 70 6c 61 6e 6e 65 72 20 77 69 6c 6c 20 74 68 65  planner will the
9290: 6e 20 75 73 65 20 74 68 65 0a 20 20 68 69 73 74  n use the.  hist
92a0: 6f 67 72 61 6d 20 64 61 74 61 20 74 6f 20 68 65  ogram data to he
92b0: 6c 70 20 69 74 20 6d 61 6b 65 20 62 65 74 74 65  lp it make bette
92c0: 72 20 69 6e 64 65 78 20 63 68 6f 69 63 65 73 2e  r index choices.
92d0: 20 20 4e 6f 74 65 2c 20 68 6f 77 65 76 65 72 2c    Note, however,
92e0: 0a 20 20 74 68 61 74 20 74 68 65 20 75 73 65 20  .  that the use 
92f0: 6f 66 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74  of histogram dat
9300: 61 20 69 6e 20 71 75 65 72 79 20 70 6c 61 6e 6e  a in query plann
9310: 65 72 20 76 69 6f 6c 61 74 65 73 20 74 68 65 0a  er violates the.
9320: 20 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72    [query planner
9330: 20 73 74 61 62 69 6c 69 74 79 20 67 75 61 72 61   stability guara
9340: 6e 74 65 65 5d 20 77 68 69 63 68 20 69 73 20 69  ntee] which is i
9350: 6d 70 6f 72 74 61 6e 74 20 74 6f 20 73 6f 6d 65  mportant to some
9360: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 20   applications.. 
9370: 20 3c 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f   <p>.}..COMPILE_
9380: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
9390: 4e 41 42 4c 45 5f 53 54 41 54 34 7d 20 7b 0a 20  NABLE_STAT4} {. 
93a0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64 64   This option add
93b0: 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67  s additional log
93c0: 69 63 20 74 6f 20 74 68 65 20 5b 41 4e 41 4c 59  ic to the [ANALY
93d0: 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20  ZE] command and 
93e0: 74 6f 0a 20 20 74 68 65 20 5b 71 75 65 72 79 20  to.  the [query 
93f0: 70 6c 61 6e 6e 65 72 5d 20 74 68 61 74 20 63 61  planner] that ca
9400: 6e 20 68 65 6c 70 20 53 51 4c 69 74 65 20 74 6f  n help SQLite to
9410: 20 63 68 6f 73 65 20 61 20 62 65 74 74 65 72 20   chose a better 
9420: 71 75 65 72 79 20 70 6c 61 6e 0a 20 20 75 6e 64  query plan.  und
9430: 65 72 20 63 65 72 74 61 69 6e 20 73 69 74 75 61  er certain situa
9440: 74 69 6f 6e 73 2e 20 20 54 68 65 20 5b 41 4e 41  tions.  The [ANA
9450: 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73  LYZE] command is
9460: 20 65 6e 68 61 6e 63 65 64 20 74 6f 20 63 6f 6c   enhanced to col
9470: 6c 65 63 74 0a 20 20 68 69 73 74 6f 67 72 61 6d  lect.  histogram
9480: 20 64 61 74 61 20 66 72 6f 6d 20 61 6c 6c 20 63   data from all c
9490: 6f 6c 75 6d 6e 73 20 6f 66 20 65 76 65 72 79 20  olumns of every 
94a0: 69 6e 64 65 78 20 61 6e 64 20 73 74 6f 72 65 20  index and store 
94b0: 74 68 61 74 20 64 61 74 61 0a 20 20 69 6e 20 74  that data.  in t
94c0: 68 65 20 5b 73 71 6c 69 74 65 5f 73 74 61 74 34  he [sqlite_stat4
94d0: 5d 20 74 61 62 6c 65 2e 20 20 54 68 65 20 71 75  ] table.  The qu
94e0: 65 72 79 20 70 6c 61 6e 6e 65 72 20 77 69 6c 6c  ery planner will
94f0: 20 74 68 65 6e 20 75 73 65 20 74 68 65 0a 20 20   then use the.  
9500: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 74  histogram data t
9510: 6f 20 68 65 6c 70 20 69 74 20 6d 61 6b 65 20 62  o help it make b
9520: 65 74 74 65 72 20 69 6e 64 65 78 20 63 68 6f 69  etter index choi
9530: 63 65 73 2e 20 20 54 68 65 20 64 6f 77 6e 73 69  ces.  The downsi
9540: 64 65 20 6f 66 0a 20 20 74 68 69 73 20 63 6f 6d  de of.  this com
9550: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
9560: 20 69 73 20 74 68 61 74 20 69 74 20 76 69 6f 6c   is that it viol
9570: 61 74 65 73 20 74 68 65 0a 20 20 5b 71 75 65 72  ates the.  [quer
9580: 79 20 70 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c  y planner stabil
9590: 69 74 79 20 67 75 61 72 61 6e 74 65 65 5d 20 6d  ity guarantee] m
95a0: 61 6b 69 6e 67 20 69 74 20 6d 6f 72 65 20 64 69  aking it more di
95b0: 66 66 69 63 75 6c 74 20 74 6f 20 65 6e 73 75 72  fficult to ensur
95c0: 65 0a 20 20 63 6f 6e 73 69 73 74 65 6e 74 20 70  e.  consistent p
95d0: 65 72 66 6f 72 6d 61 6e 63 65 20 69 6e 20 6d 61  erformance in ma
95e0: 73 73 2d 70 72 6f 64 75 63 65 64 20 61 70 70 6c  ss-produced appl
95f0: 69 63 61 74 69 6f 6e 73 2e 0a 20 20 3c 70 3e 0a  ications..  <p>.
9600: 20 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f    SQLITE_ENABLE_
9610: 53 54 41 54 34 20 69 73 20 61 6e 20 65 6e 68 61  STAT4 is an enha
9620: 6e 63 65 6d 65 6e 74 20 6f 66 20 5b 53 51 4c 49  ncement of [SQLI
9630: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33 5d  TE_ENABLE_STAT3]
9640: 2e 20 20 53 54 41 54 33 0a 20 20 6f 6e 6c 79 20  .  STAT3.  only 
9650: 72 65 63 6f 72 64 65 64 20 68 69 73 74 6f 67 72  recorded histogr
9660: 61 6d 20 64 61 74 61 20 66 6f 72 20 74 68 65 20  am data for the 
9670: 6c 65 66 74 2d 6d 6f 73 74 20 63 6f 6c 75 6d 6e  left-most column
9680: 20 6f 66 20 65 61 63 68 20 69 6e 64 65 78 0a 20   of each index. 
9690: 20 77 68 65 72 65 61 73 20 74 68 65 20 53 54 41   whereas the STA
96a0: 54 34 20 65 6e 68 61 6e 63 65 6d 65 6e 74 20 72  T4 enhancement r
96b0: 65 63 6f 72 64 73 20 68 69 73 74 6f 67 72 61 6d  ecords histogram
96c0: 20 64 61 74 61 20 66 72 6f 6d 20 61 6c 6c 20 63   data from all c
96d0: 6f 6c 75 6d 6e 73 0a 20 20 6f 66 20 65 61 63 68  olumns.  of each
96e0: 20 69 6e 64 65 78 2e 0a 20 20 54 68 65 20 5b 53   index..  The [S
96f0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41  QLITE_ENABLE_STA
9700: 54 33 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  T3] compile-time
9710: 20 6f 70 74 69 6f 6e 20 69 73 20 61 20 6e 6f 2d   option is a no-
9720: 6f 70 20 61 6e 64 20 69 73 20 69 67 6e 6f 72 65  op and is ignore
9730: 64 0a 20 20 69 66 20 74 68 65 20 53 51 4c 49 54  d.  if the SQLIT
9740: 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34 20 63  E_ENABLE_STAT4 c
9750: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
9760: 6f 6e 20 69 73 20 75 73 65 64 2e 0a 7d 0a 0a 43  on is used..}..C
9770: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9780: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 54 52 45  QLITE_ENABLE_TRE
9790: 45 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a 20 20 54  E_EXPLAIN} {.  T
97a0: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
97b0: 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 20 6c 6f   option is no lo
97c0: 6e 67 65 72 20 75 73 65 64 2e 0a 7d 0a 0a 43 4f  nger used..}..CO
97d0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
97e0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41  LITE_ENABLE_UPDA
97f0: 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 7d  TE_DELETE_LIMIT}
9800: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
9810: 20 65 6e 61 62 6c 65 73 20 61 6e 20 6f 70 74 69   enables an opti
9820: 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61 6e  onal ORDER BY an
9830: 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 6f  d LIMIT clause o
9840: 6e 20 0a 20 20 5b 55 50 44 41 54 45 5d 20 61 6e  n .  [UPDATE] an
9850: 64 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65  d [DELETE] state
9860: 6d 65 6e 74 73 2e 0a 0a 20 20 3c 70 3e 49 66 20  ments...  <p>If 
9870: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
9880: 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 69 74 20  efined, then it 
9890: 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 0a 20 20  must also be .  
98a0: 64 65 66 69 6e 65 64 20 77 68 65 6e 20 75 73 69  defined when usi
98b0: 6e 67 20 74 68 65 20 27 6c 65 6d 6f 6e 27 20 74  ng the 'lemon' t
98c0: 6f 6f 6c 20 74 6f 20 67 65 6e 65 72 61 74 65 20  ool to generate 
98d0: 61 20 70 61 72 73 65 2e 63 0a 20 20 66 69 6c 65  a parse.c.  file
98e0: 2e 20 42 65 63 61 75 73 65 20 6f 66 20 74 68 69  . Because of thi
98f0: 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d  s, this option m
9900: 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20  ay only be used 
9910: 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61 72 79  when the library
9920: 20 69 73 20 62 75 69 6c 74 0a 20 20 66 72 6f 6d   is built.  from
9930: 20 73 6f 75 72 63 65 2c 20 6e 6f 74 20 66 72 6f   source, not fro
9940: 6d 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74  m the [amalgamat
9950: 69 6f 6e 5d 20 6f 72 20 66 72 6f 6d 20 74 68 65  ion] or from the
9960: 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a 20   collection of. 
9970: 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20 43 20   pre-packaged C 
9980: 66 69 6c 65 73 20 70 72 6f 76 69 64 65 64 20 66  files provided f
9990: 6f 72 20 6e 6f 6e 2d 55 6e 69 78 20 6c 69 6b 65  or non-Unix like
99a0: 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e 20 74 68   platforms on th
99b0: 65 20 77 65 62 73 69 74 65 2e 0a 20 20 3c 2f 70  e website..  </p
99c0: 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  >.}..COMPILE_OPT
99d0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
99e0: 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46 59  LE_UNLOCK_NOTIFY
99f0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
9a00: 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20 5b 73  n enables the [s
9a10: 71 6c 69 74 65 33 5f 75 6e 6c 6f 63 6b 5f 6e 6f  qlite3_unlock_no
9a20: 74 69 66 79 28 29 5d 20 69 6e 74 65 72 66 61 63  tify()] interfac
9a30: 65 20 61 6e 64 0a 20 20 69 74 73 20 61 73 73 6f  e and.  its asso
9a40: 63 69 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 61  ciated functiona
9a50: 6c 69 74 79 2e 20 20 53 65 65 20 74 68 65 20 64  lity.  See the d
9a60: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 74 69 74  ocumentation tit
9a70: 6c 65 64 0a 20 20 5b 55 73 69 6e 67 20 74 68 65  led.  [Using the
9a80: 20 53 51 4c 69 74 65 20 55 6e 6c 6f 63 6b 20 4e   SQLite Unlock N
9a90: 6f 74 69 66 69 63 61 74 69 6f 6e 20 46 65 61 74  otification Feat
9aa0: 75 72 65 5d 20 66 6f 72 20 61 64 64 69 74 69 6f  ure] for additio
9ab0: 6e 61 6c 0a 20 20 69 6e 66 6f 72 6d 61 74 69 6f  nal.  informatio
9ac0: 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  n..}..COMPILE_OP
9ad0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 4f 55  TION {SQLITE_SOU
9ae0: 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69 73 20 6f  NDEX} {.  This o
9af0: 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68  ption enables th
9b00: 65 20 5b 73 6f 75 6e 64 65 78 28 29 20 53 51 4c  e [soundex() SQL
9b10: 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 7d 0a 0a 43   function]..}..C
9b20: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9b30: 51 4c 49 54 45 5f 55 53 45 5f 46 43 4e 54 4c 5f  QLITE_USE_FCNTL_
9b40: 54 52 41 43 45 7d 20 7b 0a 20 20 54 68 69 73 20  TRACE} {.  This 
9b50: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51  option causes SQ
9b60: 4c 69 74 65 20 74 6f 20 69 73 73 75 65 20 65 78  Lite to issue ex
9b70: 74 72 61 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  tra [SQLITE_FCNT
9b80: 4c 5f 54 52 41 43 45 5d 20 66 69 6c 65 20 63 6f  L_TRACE] file co
9b90: 6e 74 72 6f 6c 73 0a 20 20 74 6f 20 70 72 6f 76  ntrols.  to prov
9ba0: 69 64 65 20 73 75 70 70 6c 65 6d 65 6e 74 61 72  ide supplementar
9bb0: 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f  y information to
9bc0: 20 74 68 65 20 56 46 53 2e 20 20 54 68 65 20 22   the VFS.  The "
9bd0: 76 66 73 6c 6f 67 2e 63 22 20 65 78 74 65 6e 73  vfslog.c" extens
9be0: 69 6f 6e 0a 20 20 6d 61 6b 65 73 20 75 73 65 20  ion.  makes use 
9bf0: 6f 66 20 74 68 69 73 20 74 6f 20 70 72 6f 76 69  of this to provi
9c00: 64 65 20 65 6e 68 61 6e 63 65 64 20 6c 6f 67 73  de enhanced logs
9c10: 20 6f 66 20 56 46 53 20 61 63 74 69 76 69 74 79   of VFS activity
9c20: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
9c30: 49 4f 4e 20 7b 59 59 54 52 41 43 4b 4d 41 58 53  ION {YYTRACKMAXS
9c40: 54 41 43 4b 44 45 50 54 48 7d 20 7b 0a 20 20 54  TACKDEPTH} {.  T
9c50: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
9c60: 73 20 74 68 65 20 4c 41 4c 52 28 31 29 20 70 61  s the LALR(1) pa
9c70: 72 73 65 72 20 73 74 61 63 6b 20 64 65 70 74 68  rser stack depth
9c80: 20 74 6f 20 62 65 20 74 72 61 63 6b 65 64 0a 20   to be tracked. 
9c90: 20 61 6e 64 20 72 65 70 6f 72 74 65 64 20 75 73   and reported us
9ca0: 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ing the [sqlite3
9cb0: 5f 73 74 61 74 75 73 5d 28 5b 53 51 4c 49 54 45  _status]([SQLITE
9cc0: 5f 53 54 41 54 55 53 5f 50 41 52 53 45 52 5f 53  _STATUS_PARSER_S
9cd0: 54 41 43 4b 5d 2c 2e 2e 2e 29 0a 20 20 69 6e 74  TACK],...).  int
9ce0: 65 72 66 61 63 65 2e 20 20 53 51 4c 69 74 65 27  erface.  SQLite'
9cf0: 73 20 4c 41 4c 52 28 31 29 20 70 61 72 73 65 72  s LALR(1) parser
9d00: 20 68 61 73 20 61 20 66 69 78 65 64 20 73 74 61   has a fixed sta
9d10: 63 6b 20 64 65 70 74 68 0a 20 20 28 64 65 74 65  ck depth.  (dete
9d20: 72 6d 69 6e 65 64 20 61 74 20 63 6f 6d 70 69 6c  rmined at compil
9d30: 65 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65  e-time using the
9d40: 20 5b 59 59 53 54 41 43 4b 44 45 50 54 48 5d 20   [YYSTACKDEPTH] 
9d50: 6f 70 74 69 6f 6e 73 29 2e 0a 20 20 54 68 69 73  options)..  This
9d60: 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20 75   option can be u
9d70: 73 65 64 20 74 6f 20 68 65 6c 70 20 64 65 74 65  sed to help dete
9d80: 72 6d 69 6e 65 20 69 66 20 61 6e 20 61 70 70 6c  rmine if an appl
9d90: 69 63 61 74 69 6f 6e 20 69 73 0a 20 20 67 65 74  ication is.  get
9da0: 74 69 6e 67 20 63 6c 6f 73 65 20 74 6f 20 65 78  ting close to ex
9db0: 63 65 65 64 69 6e 67 20 74 68 65 20 6d 61 78 69  ceeding the maxi
9dc0: 6d 75 6d 20 4c 41 4c 52 28 31 29 20 73 74 61 63  mum LALR(1) stac
9dd0: 6b 20 64 65 70 74 68 2e 0a 7d 0a 3c 2f 74 63 6c  k depth..}.</tcl
9de0: 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 64 69 73 61  >..<a name="disa
9df0: 62 6c 65 66 65 61 74 75 72 65 73 22 3e 3c 2f 61  blefeatures"></a
9e00: 3e 0a 3c 68 32 3e 31 2e 36 20 4f 70 74 69 6f 6e  >.<h2>1.6 Option
9e10: 73 20 54 6f 20 44 69 73 61 62 6c 65 20 46 65 61  s To Disable Fea
9e20: 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20 54  tures Normally T
9e30: 75 72 6e 65 64 20 4f 6e 3c 2f 68 32 3e 0a 0a 3c  urned On</h2>..<
9e40: 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  tcl>.COMPILE_OPT
9e50: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41  ION {SQLITE_DISA
9e60: 42 4c 45 5f 4c 46 53 7d 20 7b 0a 20 20 49 66 20  BLE_LFS} {.  If 
9e70: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
9e80: 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66  sor macro is def
9e90: 69 6e 65 64 2c 20 6c 61 72 67 65 20 66 69 6c 65  ined, large file
9ea0: 20 73 75 70 70 6f 72 74 0a 20 20 69 73 20 64 69   support.  is di
9eb0: 73 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  sabled..}..COMPI
9ec0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
9ed0: 45 5f 44 49 53 41 42 4c 45 5f 44 49 52 53 59 4e  E_DISABLE_DIRSYN
9ee0: 43 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43  C} {.  If this C
9ef0: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
9f00: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20  cro is defined, 
9f10: 64 69 72 65 63 74 6f 72 79 20 73 79 6e 63 73 0a  directory syncs.
9f20: 20 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e 20    are disabled. 
9f30: 20 53 51 4c 69 74 65 20 74 79 70 69 63 61 6c 6c   SQLite typicall
9f40: 79 20 61 74 74 65 6d 70 74 73 20 74 6f 20 73 79  y attempts to sy
9f50: 6e 63 20 74 68 65 20 70 61 72 65 6e 74 0a 20 20  nc the parent.  
9f60: 64 69 72 65 63 74 6f 72 79 20 77 68 65 6e 20 61  directory when a
9f70: 20 66 69 6c 65 20 69 73 20 64 65 6c 65 74 65 64   file is deleted
9f80: 20 74 6f 20 65 6e 73 75 72 65 20 74 68 65 20 64   to ensure the d
9f90: 69 72 65 63 74 6f 72 79 0a 20 20 65 6e 74 72 69  irectory.  entri
9fa0: 65 73 20 61 72 65 20 75 70 64 61 74 65 64 20 69  es are updated i
9fb0: 6d 6d 65 64 69 61 74 65 6c 79 20 6f 6e 20 64 69  mmediately on di
9fc0: 73 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  sk..}..COMPILE_O
9fd0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49  PTION {SQLITE_DI
9fe0: 53 41 42 4c 45 5f 46 54 53 33 5f 55 4e 49 43 4f  SABLE_FTS3_UNICO
9ff0: 44 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  DE} {.  If this 
a000: 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C-preprocessor m
a010: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c  acro is defined,
a020: 20 74 68 65 20 5b 75 6e 69 63 6f 64 65 36 31 5d   the [unicode61]
a030: 20 74 6f 6b 65 6e 69 7a 65 72 0a 20 20 69 6e 20   tokenizer.  in 
a040: 5b 46 54 53 33 5d 20 69 73 20 6f 6d 69 74 74 65  [FTS3] is omitte
a050: 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64  d from the build
a060: 20 61 6e 64 20 69 73 20 75 6e 61 76 61 69 6c 61   and is unavaila
a070: 62 6c 65 20 74 6f 20 0a 20 20 61 70 70 6c 69 63  ble to .  applic
a080: 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  ations..}..COMPI
a090: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
a0a0: 45 5f 44 49 53 41 42 4c 45 5f 46 54 53 34 5f 44  E_DISABLE_FTS4_D
a0b0: 45 46 45 52 52 45 44 7d 20 7b 0a 20 20 49 66 20  EFERRED} {.  If 
a0c0: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
a0d0: 73 6f 72 20 6d 61 63 72 6f 20 64 69 73 61 62 6c  sor macro disabl
a0e0: 65 73 20 74 68 65 20 22 64 65 66 65 72 72 65 64  es the "deferred
a0f0: 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69 7a 61   token" optimiza
a100: 74 69 6f 6e 0a 20 20 69 6e 20 5b 46 54 53 34 5d  tion.  in [FTS4]
a110: 2e 20 20 54 68 65 20 22 64 65 66 65 72 72 65 64  .  The "deferred
a120: 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69 7a 61   token" optimiza
a130: 74 69 6f 6e 20 61 76 6f 69 64 73 20 6c 6f 61 64  tion avoids load
a140: 69 6e 67 20 6d 61 73 73 69 76 65 0a 20 20 70 6f  ing massive.  po
a150: 73 74 69 6e 67 20 6c 69 73 74 73 20 66 6f 72 20  sting lists for 
a160: 74 65 72 6d 73 20 74 68 61 74 20 61 72 65 20 69  terms that are i
a170: 6e 20 6d 6f 73 74 20 64 6f 63 75 6d 65 6e 74 73  n most documents
a180: 20 6f 66 20 74 68 65 20 63 6f 6c 6c 65 63 74 69   of the collecti
a190: 6f 6e 0a 20 20 61 6e 64 20 69 6e 73 74 65 61 64  on.  and instead
a1a0: 20 73 69 6d 70 6c 79 20 73 63 61 6e 73 20 66 6f   simply scans fo
a1b0: 72 20 74 68 6f 73 65 20 74 6f 6b 65 6e 73 20 69  r those tokens i
a1c0: 6e 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 20 73  n the document s
a1d0: 6f 75 72 63 65 2e 20 20 5b 46 54 53 34 5d 0a 20  ource.  [FTS4]. 
a1e0: 20 73 68 6f 75 6c 64 20 67 65 74 20 65 78 61 63   should get exac
a1f0: 74 6c 79 20 74 68 65 20 73 61 6d 65 20 61 6e 73  tly the same ans
a200: 77 65 72 20 62 6f 74 68 20 77 69 74 68 20 61 6e  wer both with an
a210: 64 20 77 69 74 68 6f 75 74 20 74 68 69 73 20 6f  d without this o
a220: 70 74 69 6d 69 7a 61 74 69 6f 6e 2e 0a 7d 0a 3c  ptimization..}.<
a230: 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a 20 20 68  /tcl>..<tcl>.  h
a240: 64 5f 66 72 61 67 6d 65 6e 74 20 22 6f 6d 69 74  d_fragment "omit
a250: 66 65 61 74 75 72 65 73 22 0a 20 20 68 64 5f 6b  features".  hd_k
a260: 65 79 77 6f 72 64 73 20 22 6f 6d 69 74 66 65 61  eywords "omitfea
a270: 74 75 72 65 73 22 0a 3c 2f 74 63 6c 3e 0a 3c 68  tures".</tcl>.<h
a280: 32 3e 31 2e 37 20 4f 70 74 69 6f 6e 73 20 54 6f  2>1.7 Options To
a290: 20 4f 6d 69 74 20 46 65 61 74 75 72 65 73 3c 2f   Omit Features</
a2a0: 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c  h2>..<p>The foll
a2b0: 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73 20 63 61  owing options ca
a2c0: 6e 20 62 65 20 75 73 65 64 20 74 6f 20 0a 5b 72  n be used to .[r
a2d0: 65 6c 66 6f 6f 74 70 72 69 6e 74 20 7c 20 72 65  elfootprint | re
a2e0: 64 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66  duce the size of
a2f0: 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 20 6c 69   the compiled li
a300: 62 72 61 72 79 5d 0a 62 79 20 6f 6d 69 74 74 69  brary].by omitti
a310: 6e 67 20 75 6e 75 73 65 64 20 66 65 61 74 75 72  ng unused featur
a320: 65 73 2e 20 54 68 69 73 20 69 73 20 70 72 6f 62  es. This is prob
a330: 61 62 6c 79 20 6f 6e 6c 79 20 75 73 65 66 75 6c  ably only useful
a340: 0a 69 6e 20 65 6d 62 65 64 64 65 64 20 73 79 73  .in embedded sys
a350: 74 65 6d 73 20 77 68 65 72 65 20 73 70 61 63 65  tems where space
a360: 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 74   is especially t
a370: 69 67 68 74 2c 20 61 73 20 65 76 65 6e 20 77 69  ight, as even wi
a380: 74 68 20 61 6c 6c 0a 66 65 61 74 75 72 65 73 20  th all.features 
a390: 69 6e 63 6c 75 64 65 64 20 74 68 65 20 53 51 4c  included the SQL
a3a0: 69 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 72  ite library is r
a3b0: 65 6c 61 74 69 76 65 6c 79 20 73 6d 61 6c 6c 2e  elatively small.
a3c0: 20 44 6f 6e 27 74 20 66 6f 72 67 65 74 0a 74 6f   Don't forget.to
a3d0: 20 74 65 6c 6c 20 79 6f 75 72 20 63 6f 6d 70 69   tell your compi
a3e0: 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20  ler to optimize 
a3f0: 66 6f 72 20 62 69 6e 61 72 79 20 73 69 7a 65 21  for binary size!
a400: 20 28 74 68 65 20 2d 4f 73 20 6f 70 74 69 6f 6e   (the -Os option
a410: 20 69 66 0a 75 73 69 6e 67 20 47 43 43 29 2e 20   if.using GCC). 
a420: 20 54 65 6c 6c 69 6e 67 20 79 6f 75 72 20 63 6f   Telling your co
a430: 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69  mpiler to optimi
a440: 7a 65 20 66 6f 72 20 73 69 7a 65 20 75 73 75 61  ze for size usua
a450: 6c 6c 79 20 68 61 73 0a 61 20 6d 75 63 68 20 6c  lly has.a much l
a460: 61 72 67 65 72 20 69 6d 70 61 63 74 20 6f 6e 20  arger impact on 
a470: 6c 69 62 72 61 72 79 20 66 6f 6f 74 70 72 69 6e  library footprin
a480: 74 20 74 68 61 6e 20 65 6d 70 6c 6f 79 69 6e 67  t than employing
a490: 20 61 6e 79 20 6f 66 20 74 68 65 73 65 0a 63 6f   any of these.co
a4a0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
a4b0: 6e 73 2e 20 20 59 6f 75 20 73 68 6f 75 6c 64 20  ns.  You should 
a4c0: 61 6c 73 6f 20 76 65 72 69 66 79 20 74 68 61 74  also verify that
a4d0: 20 0a 3c 61 20 68 72 65 66 3d 22 23 64 65 62 75   .<a href="#debu
a4e0: 67 6f 70 74 69 6f 6e 73 22 3e 64 65 62 75 67 67  goptions">debugg
a4f0: 69 6e 67 20 6f 70 74 69 6f 6e 73 3c 2f 61 3e 20  ing options</a> 
a500: 61 72 65 20 64 69 73 61 62 6c 65 64 2e 3c 2f 70  are disabled.</p
a510: 3e 0a 0a 3c 70 3e 54 68 65 20 6d 61 63 72 6f 73  >..<p>The macros
a520: 20 69 6e 20 74 68 69 73 20 73 65 63 74 69 6f 6e   in this section
a530: 20 64 6f 20 6e 6f 74 20 72 65 71 75 69 72 65 20   do not require 
a540: 76 61 6c 75 65 73 2e 20 54 68 65 20 66 6f 6c 6c  values. The foll
a550: 6f 77 69 6e 67 20 0a 63 6f 6d 70 69 6c 61 74 69  owing .compilati
a560: 6f 6e 20 73 77 69 74 63 68 65 73 20 61 6c 6c 20  on switches all 
a570: 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 65 66  have the same ef
a580: 66 65 63 74 3a 3c 62 72 3e 0a 2d 44 53 51 4c 49  fect:<br>.-DSQLI
a590: 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42  TE_OMIT_ALTERTAB
a5a0: 4c 45 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f  LE<br>.-DSQLITE_
a5b0: 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d  OMIT_ALTERTABLE=
a5c0: 31 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f  1<br>.-DSQLITE_O
a5d0: 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d 30  MIT_ALTERTABLE=0
a5e0: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 6e 79  .</p>..<p>If any
a5f0: 20 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f 6e   of these option
a600: 73 20 61 72 65 20 64 65 66 69 6e 65 64 2c 20 74  s are defined, t
a610: 68 65 6e 20 74 68 65 20 73 61 6d 65 20 73 65 74  hen the same set
a620: 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f   of SQLITE_OMIT_
a630: 2a 0a 6f 70 74 69 6f 6e 73 20 6d 75 73 74 20 61  *.options must a
a640: 6c 73 6f 20 62 65 20 64 65 66 69 6e 65 64 20 77  lso be defined w
a650: 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 27 6c  hen using the 'l
a660: 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67 65  emon' tool to ge
a670: 6e 65 72 61 74 65 20 74 68 65 0a 70 61 72 73 65  nerate the.parse
a680: 2e 63 20 66 69 6c 65 20 61 6e 64 20 77 68 65 6e  .c file and when
a690: 20 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20 27   compiling the '
a6a0: 6d 6b 6b 65 79 77 6f 72 64 68 61 73 68 27 20 74  mkkeywordhash' t
a6b0: 6f 6f 6c 20 77 68 69 63 68 20 67 65 6e 65 72 61  ool which genera
a6c0: 74 65 73 20 0a 74 68 65 20 6b 65 79 77 6f 72 64  tes .the keyword
a6d0: 68 61 73 68 2e 68 20 66 69 6c 65 2e 0a 42 65 63  hash.h file..Bec
a6e0: 61 75 73 65 20 6f 66 20 74 68 69 73 2c 20 74 68  ause of this, th
a6f0: 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20  ese options may 
a700: 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68 65  only be used whe
a710: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73  n the library is
a720: 20 62 75 69 6c 74 0a 66 72 6f 6d 20 63 61 6e 6f   built.from cano
a730: 6e 69 63 61 6c 20 73 6f 75 72 63 65 2c 20 6e 6f  nical source, no
a740: 74 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d 61 6c  t from the [amal
a750: 67 61 6d 61 74 69 6f 6e 5d 2e 0a 53 6f 6d 65 20  gamation]..Some 
a760: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70  SQLITE_OMIT_* op
a770: 74 69 6f 6e 73 20 6d 69 67 68 74 20 77 6f 72 6b  tions might work
a780: 2c 20 6f 72 20 61 70 70 65 61 72 20 74 6f 20 77  , or appear to w
a790: 6f 72 6b 2c 20 77 68 65 6e 20 75 73 65 64 20 77  ork, when used w
a7a0: 69 74 68 0a 74 68 65 20 5b 61 6d 61 6c 67 61 6d  ith.the [amalgam
a7b0: 61 74 69 6f 6e 5d 2e 20 20 42 75 74 20 74 68 69  ation].  But thi
a7c0: 73 20 69 73 20 6e 6f 74 20 67 75 61 72 61 6e 74  s is not guarant
a7d0: 65 65 64 2e 20 20 49 6e 20 67 65 6e 65 72 61 6c  eed.  In general
a7e0: 2c 20 61 6c 77 61 79 73 20 63 6f 6d 70 69 6c 65  , always compile
a7f0: 0a 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20  .from canonical 
a800: 73 6f 75 72 63 65 73 20 69 6e 20 6f 72 64 65 72  sources in order
a810: 20 74 6f 20 74 61 6b 65 20 61 64 76 61 6e 74 61   to take advanta
a820: 67 65 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49  ge of SQLITE_OMI
a830: 54 5f 2a 20 6f 70 74 69 6f 6e 73 2e 0a 3c 2f 70  T_* options..</p
a840: 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >..<blockquote>.
a850: 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61 6e 74 20  <i><b>Important 
a860: 4e 6f 74 65 3a 3c 2f 62 3e 20 54 68 65 20 53 51  Note:</b> The SQ
a870: 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69  LITE_OMIT_* opti
a880: 6f 6e 73 20 6d 61 79 20 6e 6f 74 20 77 6f 72 6b  ons may not work
a890: 20 77 69 74 68 20 74 68 65 0a 5b 61 6d 61 6c 67   with the.[amalg
a8a0: 61 6d 61 74 69 6f 6e 5d 2e 20 20 53 51 4c 49 54  amation].  SQLIT
a8b0: 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65  E_OMIT_* compile
a8c0: 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e 73 20 75 73  -time.options us
a8d0: 75 61 6c 6c 79 20 77 6f 72 6b 20 63 6f 72 72 65  ually work corre
a8e0: 63 74 6c 79 20 6f 6e 6c 79 20 77 68 65 6e 20 53  ctly only when S
a8f0: 51 4c 69 74 65 20 69 73 20 62 75 69 6c 74 20 66  QLite is built f
a900: 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 0a 73  rom canonical .s
a910: 6f 75 72 63 65 20 66 69 6c 65 73 2e 0a 3c 2f 69  ource files..</i
a920: 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >.</blockquote>.
a930: 0a 0a 3c 70 3e 53 70 65 63 69 61 6c 20 76 65 72  ..<p>Special ver
a940: 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 53 51 4c  sions of the SQL
a950: 69 74 65 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  ite amalgamation
a960: 20 74 68 61 74 20 64 6f 20 77 6f 72 6b 20 77 69   that do work wi
a970: 74 68 20 61 0a 70 72 65 64 65 74 65 72 6d 69 6e  th a.predetermin
a980: 65 64 20 73 65 74 20 6f 66 20 53 51 4c 49 54 45  ed set of SQLITE
a990: 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20  _OMIT_* options 
a9a0: 63 61 6e 20 62 65 20 67 65 6e 65 72 61 74 65 64  can be generated
a9b0: 2e 20 20 54 6f 20 64 6f 20 73 6f 2c 0a 6d 61 6b  .  To do so,.mak
a9c0: 65 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20  e a copy of the 
a9d0: 4d 61 6b 65 66 69 6c 65 2e 6c 69 6e 75 78 2d 67  Makefile.linux-g
a9e0: 63 63 20 6d 61 6b 65 66 69 6c 65 20 74 65 6d 70  cc makefile temp
a9f0: 6c 61 74 65 20 69 6e 20 74 68 65 20 63 61 6e 6f  late in the cano
aa00: 6e 69 63 61 6c 0a 73 6f 75 72 63 65 20 63 6f 64  nical.source cod
aa10: 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 2e 20  e distribution. 
aa20: 20 43 68 61 6e 67 65 20 74 68 65 20 6e 61 6d 65   Change the name
aa30: 20 6f 66 20 79 6f 75 72 20 63 6f 70 79 20 74 6f   of your copy to
aa40: 20 73 69 6d 70 6c 79 20 22 4d 61 6b 65 66 69 6c   simply "Makefil
aa50: 65 22 2e 0a 54 68 65 6e 20 65 64 69 74 20 22 4d  e"..Then edit "M
aa60: 61 6b 65 66 69 6c 65 22 20 74 6f 20 73 65 74 20  akefile" to set 
aa70: 75 70 20 61 70 70 72 6f 70 72 69 61 74 65 20 63  up appropriate c
aa80: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
aa90: 6f 6e 73 2e 20 20 54 68 65 6e 0a 74 79 70 65 3a  ons.  Then.type:
aaa0: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 74 74  .<blockquote><tt
aab0: 3e 6d 61 6b 65 20 63 6c 65 61 6e 3b 20 6d 61 6b  >make clean; mak
aac0: 65 20 73 71 6c 69 74 65 33 2e 63 3c 2f 74 74 3e  e sqlite3.c</tt>
aad0: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 54 68  </blockquote>.Th
aae0: 65 20 72 65 73 75 6c 74 69 6e 67 20 22 73 71 6c  e resulting "sql
aaf0: 69 74 65 33 2e 63 22 20 61 6d 61 6c 67 61 6d 61  ite3.c" amalgama
ab00: 74 69 6f 6e 20 63 6f 64 65 20 66 69 6c 65 20 28  tion code file (
ab10: 61 6e 64 20 69 74 73 20 61 73 73 6f 63 69 61 74  and its associat
ab20: 65 64 0a 68 65 61 64 65 72 20 66 69 6c 65 20 22  ed.header file "
ab30: 73 71 6c 69 74 65 33 2e 68 22 29 20 63 61 6e 20  sqlite3.h") can 
ab40: 74 68 65 6e 20 62 65 20 6d 6f 76 65 64 20 74 6f  then be moved to
ab50: 20 61 20 6e 6f 6e 2d 75 6e 69 78 20 70 6c 61 74   a non-unix plat
ab60: 66 6f 72 6d 0a 66 6f 72 20 66 69 6e 61 6c 20 63  form.for final c
ab70: 6f 6d 70 69 6c 61 74 69 6f 6e 20 75 73 69 6e 67  ompilation using
ab80: 20 61 20 6e 61 74 69 76 65 20 63 6f 6d 70 69 6c   a native compil
ab90: 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  er.</p>..<p>The 
aba0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70  SQLITE_OMIT_* op
abb0: 74 69 6f 6e 73 20 61 72 65 20 75 6e 73 75 70 70  tions are unsupp
abc0: 6f 72 74 65 64 2e 20 20 42 79 20 74 68 69 73 20  orted.  By this 
abd0: 77 65 20 6d 65 61 6e 20 74 68 61 74 0a 61 6e 20  we mean that.an 
abe0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70  SQLITE_OMIT_* op
abf0: 74 69 6f 6e 20 74 68 61 74 20 6f 6d 69 74 73 20  tion that omits 
ac00: 63 6f 64 65 20 66 72 6f 6d 20 74 68 65 20 62 75  code from the bu
ac10: 69 6c 64 20 69 6e 20 74 68 65 20 63 75 72 72 65  ild in the curre
ac20: 6e 74 0a 72 65 6c 65 61 73 65 20 6d 69 67 68 74  nt.release might
ac30: 20 62 65 63 6f 6d 65 20 61 20 6e 6f 2d 6f 70 20   become a no-op 
ac40: 69 6e 20 74 68 65 20 6e 65 78 74 20 72 65 6c 65  in the next rele
ac50: 61 73 65 2e 20 20 4f 72 20 74 68 65 20 6f 74 68  ase.  Or the oth
ac60: 65 72 20 77 61 79 20 61 72 6f 75 6e 64 3a 0a 61  er way around:.a
ac70: 6e 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  n SQLITE_OMIT_* 
ac80: 74 68 61 74 20 69 73 20 61 20 6e 6f 2d 6f 70 20  that is a no-op 
ac90: 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  in the current r
aca0: 65 6c 65 61 73 65 20 6d 69 67 68 74 20 63 61 75  elease might cau
acb0: 73 65 20 63 6f 64 65 0a 74 6f 20 62 65 20 65 78  se code.to be ex
acc0: 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6e 65  cluded in the ne
acd0: 78 74 20 72 65 6c 65 61 73 65 2e 20 20 41 6c 73  xt release.  Als
ace0: 6f 2c 20 6e 6f 74 20 61 6c 6c 20 53 51 4c 49 54  o, not all SQLIT
acf0: 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73  E_OMIT_* options
ad00: 0a 61 72 65 20 74 65 73 74 65 64 2e 20 20 53 6f  .are tested.  So
ad10: 6d 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  me SQLITE_OMIT_*
ad20: 20 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74 20 63   options might c
ad30: 61 75 73 65 20 53 51 4c 69 74 65 20 74 6f 20 6d  ause SQLite to m
ad40: 61 6c 66 75 6e 63 74 69 6f 6e 0a 61 6e 64 2f 6f  alfunction.and/o
ad50: 72 20 70 72 6f 76 69 64 65 20 69 6e 63 6f 72 72  r provide incorr
ad60: 65 63 74 20 61 6e 73 77 65 72 73 2e 0a 0a 3c 62  ect answers...<b
ad70: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62  lockquote>.<i><b
ad80: 3e 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65 3a  >Important Note:
ad90: 3c 2f 62 3e 0a 54 68 65 20 53 51 4c 49 54 45 5f  </b>.The SQLITE_
ada0: 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74  OMIT_* compile-t
adb0: 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20  ime options are 
adc0: 75 6e 73 75 70 70 6f 72 74 65 64 2e 0a 3c 2f 69  unsupported..</i
add0: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  ></blockquote>..
ade0: 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50  <tcl>.COMPILE_OP
adf0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
ae00: 54 5f 41 4c 54 45 52 54 41 42 4c 45 7d 20 7b 0a  T_ALTERTABLE} {.
ae10: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
ae20: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
ae30: 68 65 20 0a 20 20 5b 41 4c 54 45 52 20 54 41 42  he .  [ALTER TAB
ae40: 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e  LE] command is n
ae50: 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74  ot included in t
ae60: 68 65 20 0a 20 20 6c 69 62 72 61 72 79 2e 20 45  he .  library. E
ae70: 78 65 63 75 74 69 6e 67 20 61 6e 20 5b 41 4c 54  xecuting an [ALT
ae80: 45 52 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d  ER TABLE] statem
ae90: 65 6e 74 20 63 61 75 73 65 73 20 61 20 70 61 72  ent causes a par
aea0: 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d  se error..}..COM
aeb0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
aec0: 49 54 45 5f 4f 4d 49 54 5f 41 4e 41 4c 59 5a 45  ITE_OMIT_ANALYZE
aed0: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
aee0: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
aef0: 64 2c 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d  d, the [ANALYZE]
af00: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6f 6d 69 74   command is omit
af10: 74 65 64 20 66 72 6f 6d 0a 20 20 74 68 65 20 62  ted from.  the b
af20: 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  uild..}..COMPILE
af30: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
af40: 4f 4d 49 54 5f 41 54 54 41 43 48 7d 20 7b 0a 20  OMIT_ATTACH} {. 
af50: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
af60: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  n is defined, th
af70: 65 20 5b 41 54 54 41 43 48 5d 20 61 6e 64 20 5b  e [ATTACH] and [
af80: 44 45 54 41 43 48 5d 20 63 6f 6d 6d 61 6e 64 73  DETACH] commands
af90: 20 61 72 65 0a 20 20 6f 6d 69 74 74 65 64 20 66   are.  omitted f
afa0: 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d  rom the build..}
afb0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
afc0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55   {SQLITE_OMIT_AU
afd0: 54 48 4f 52 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20  THORIZATION} {. 
afe0: 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
aff0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20  ption omits the 
b000: 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 63 61  authorization ca
b010: 6c 6c 62 61 63 6b 20 66 65 61 74 75 72 65 20 66  llback feature f
b020: 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72 61 72  rom the.  librar
b030: 79 2e 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f  y. The [sqlite3_
b040: 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 29  set_authorizer()
b050: 5d 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 69  ] API function i
b060: 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 0a 20 20  s not present.  
b070: 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a  in the library..
b080: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b090: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  N {SQLITE_OMIT_A
b0a0: 55 54 4f 49 4e 43 52 45 4d 45 4e 54 7d 20 7b 0a  UTOINCREMENT} {.
b0b0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
b0c0: 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68   used to omit th
b0d0: 65 20 0a 20 20 5b 41 55 54 4f 49 4e 43 52 45 4d  e .  [AUTOINCREM
b0e0: 45 4e 54 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69  ENT] functionali
b0f0: 74 79 2e 20 57 68 65 6e 20 74 68 69 73 20 0a 20  ty. When this . 
b100: 20 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66   is macro is def
b110: 69 6e 65 64 2c 20 63 6f 6c 75 6d 6e 73 20 64 65  ined, columns de
b120: 63 6c 61 72 65 64 20 61 73 20 0a 20 20 22 5b 49  clared as .  "[I
b130: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
b140: 45 59 5d 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e  EY] AUTOINCREMEN
b150: 54 22 0a 20 20 62 65 68 61 76 65 20 69 6e 20 74  T".  behave in t
b160: 68 65 20 73 61 6d 65 20 77 61 79 20 61 73 20 63  he same way as c
b170: 6f 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65 64 20  olumns declared 
b180: 61 73 20 22 5b 49 4e 54 45 47 45 52 20 50 52 49  as "[INTEGER PRI
b190: 4d 41 52 59 20 4b 45 59 5d 22 20 77 68 65 6e 20  MARY KEY]" when 
b1a0: 61 20 0a 20 20 4e 55 4c 4c 20 69 73 20 69 6e 73  a .  NULL is ins
b1b0: 65 72 74 65 64 2e 20 54 68 65 20 73 71 6c 69 74  erted. The sqlit
b1c0: 65 5f 73 65 71 75 65 6e 63 65 20 73 79 73 74 65  e_sequence syste
b1d0: 6d 20 74 61 62 6c 65 20 69 73 20 6e 65 69 74 68  m table is neith
b1e0: 65 72 20 63 72 65 61 74 65 64 2c 20 6e 6f 72 0a  er created, nor.
b1f0: 20 20 72 65 73 70 65 63 74 65 64 20 69 66 20 69    respected if i
b200: 74 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73  t already exists
b210: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
b220: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
b230: 5f 41 55 54 4f 49 4e 49 54 7d 20 7b 0a 20 20 46  _AUTOINIT} {.  F
b240: 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d  or backwards com
b250: 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20  patibility with 
b260: 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f  older versions o
b270: 66 20 53 51 4c 69 74 65 20 74 68 61 74 20 6c 61  f SQLite that la
b280: 63 6b 0a 20 20 74 68 65 20 5b 73 71 6c 69 74 65  ck.  the [sqlite
b290: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20  3_initialize()] 
b2a0: 69 6e 74 65 72 66 61 63 65 2c 20 74 68 65 20 5b  interface, the [
b2b0: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
b2c0: 7a 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a  ze()] interface.
b2d0: 20 20 69 73 20 63 61 6c 6c 65 64 20 61 75 74 6f    is called auto
b2e0: 6d 61 74 69 63 61 6c 6c 79 20 75 70 6f 6e 20 65  matically upon e
b2f0: 6e 74 72 79 20 74 6f 20 63 65 72 74 61 69 6e 20  ntry to certain 
b300: 6b 65 79 20 69 6e 74 65 72 66 61 63 65 73 20 73  key interfaces s
b310: 75 63 68 20 61 73 0a 20 20 5b 73 71 6c 69 74 65  uch as.  [sqlite
b320: 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69  3_open()], [sqli
b330: 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72  te3_vfs_register
b340: 28 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65  ()], and [sqlite
b350: 33 5f 6d 70 72 69 6e 74 66 28 29 5d 2e 0a 20 20  3_mprintf()]..  
b360: 54 68 65 20 6f 76 65 72 68 65 61 64 20 6f 66 20  The overhead of 
b370: 69 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c 69 74 65  invoking [sqlite
b380: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20  3_initialize()] 
b390: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e  automatically in
b3a0: 20 74 68 69 73 0a 20 20 77 61 79 20 6d 61 79 20   this.  way may 
b3b0: 62 65 20 6f 6d 69 74 74 65 64 20 62 79 20 62 75  be omitted by bu
b3c0: 69 6c 64 69 6e 67 20 53 51 4c 69 74 65 20 77 69  ilding SQLite wi
b3d0: 74 68 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 4d  th the SQLITE_OM
b3e0: 49 54 5f 41 55 54 4f 49 4e 49 54 0a 20 20 43 2d  IT_AUTOINIT.  C-
b3f0: 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63  preprocessor mac
b400: 72 6f 2e 20 20 57 68 65 6e 20 62 75 69 6c 74 20  ro.  When built 
b410: 75 73 69 6e 67 20 53 51 4c 49 54 45 5f 4f 4d 49  using SQLITE_OMI
b420: 54 5f 41 55 54 4f 49 4e 49 54 2c 20 53 51 4c 69  T_AUTOINIT, SQLi
b430: 74 65 0a 20 20 77 69 6c 6c 20 6e 6f 74 20 61 75  te.  will not au
b440: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 69 74  tomatically init
b450: 69 61 6c 69 7a 65 20 69 74 73 65 6c 66 20 61 6e  ialize itself an
b460: 64 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  d the applicatio
b470: 6e 20 69 73 20 72 65 71 75 69 72 65 64 0a 20 20  n is required.  
b480: 74 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74  to invoke [sqlit
b490: 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d  e3_initialize()]
b4a0: 20 64 69 72 65 63 74 6c 79 20 70 72 69 6f 72 20   directly prior 
b4b0: 74 6f 20 62 65 67 69 6e 6e 69 6e 67 20 75 73 65  to beginning use
b4c0: 20 6f 66 20 74 68 65 0a 20 20 53 51 4c 69 74 65   of the.  SQLite
b4d0: 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d   library..}..COM
b4e0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
b4f0: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 4d 41 54  ITE_OMIT_AUTOMAT
b500: 49 43 5f 49 4e 44 45 58 7d 20 7b 0a 20 20 54 68  IC_INDEX} {.  Th
b510: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
b520: 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 0a 20  d to omit the . 
b530: 20 5b 61 75 74 6f 6d 61 74 69 63 20 69 6e 64 65   [automatic inde
b540: 78 69 6e 67 5d 20 66 75 6e 63 74 69 6f 6e 61 6c  xing] functional
b550: 69 74 79 2e 0a 20 20 53 65 65 20 61 6c 73 6f 3a  ity..  See also:
b560: 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   [SQLITE_DEFAULT
b570: 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58  _AUTOMATIC_INDEX
b580: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
b590: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
b5a0: 54 5f 41 55 54 4f 52 45 53 45 54 7d 20 7b 0a 20  T_AUTORESET} {. 
b5b0: 20 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65   By default, the
b5c0: 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
b5d0: 5d 20 69 6e 74 65 72 66 61 63 65 20 77 69 6c 6c  ] interface will
b5e0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69   automatically i
b5f0: 6e 76 6f 6b 65 0a 20 20 5b 73 71 6c 69 74 65 33  nvoke.  [sqlite3
b600: 5f 72 65 73 65 74 28 29 5d 20 74 6f 20 72 65 73  _reset()] to res
b610: 65 74 20 74 68 65 20 5b 70 72 65 70 61 72 65 64  et the [prepared
b620: 20 73 74 61 74 65 6d 65 6e 74 5d 20 69 66 20 6e   statement] if n
b630: 65 63 65 73 73 61 72 79 2e 20 20 54 68 69 73 0a  ecessary.  This.
b640: 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f    compile-time o
b650: 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68  ption changes th
b660: 61 74 20 62 65 68 61 76 69 6f 72 20 73 6f 20 74  at behavior so t
b670: 68 61 74 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  hat [sqlite3_ste
b680: 70 28 29 5d 20 77 69 6c 6c 0a 20 20 72 65 74 75  p()] will.  retu
b690: 72 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53  rn [SQLITE_MISUS
b6a0: 45 5d 20 69 66 20 69 74 20 63 61 6c 6c 65 64 20  E] if it called 
b6b0: 61 67 61 69 6e 20 61 66 74 65 72 20 72 65 74 75  again after retu
b6c0: 72 6e 69 6e 67 20 61 6e 79 74 68 69 6e 67 20 6f  rning anything o
b6d0: 74 68 65 72 0a 20 20 74 68 61 6e 20 5b 53 51 4c  ther.  than [SQL
b6e0: 49 54 45 5f 52 4f 57 5d 2c 20 5b 53 51 4c 49 54  ITE_ROW], [SQLIT
b6f0: 45 5f 42 55 53 59 5d 2c 20 6f 72 20 5b 53 51 4c  E_BUSY], or [SQL
b700: 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 75 6e 6c 65  ITE_LOCKED] unle
b710: 73 73 20 74 68 65 72 65 20 77 61 73 20 61 6e 0a  ss there was an.
b720: 20 20 69 6e 74 65 72 76 65 6e 69 6e 67 20 63 61    intervening ca
b730: 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72  ll to [sqlite3_r
b740: 65 73 65 74 28 29 5d 2e 0a 0a 20 20 49 6e 20 53  eset()]...  In S
b750: 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e  QLite version 3.
b760: 36 2e 32 33 2e 31 20 61 6e 64 20 65 61 72 6c 69  6.23.1 and earli
b770: 65 72 2c 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  er, [sqlite3_ste
b780: 70 28 29 5d 20 75 73 65 64 20 74 6f 20 61 6c 77  p()] used to alw
b790: 61 79 73 0a 20 20 72 65 74 75 72 6e 20 5b 53 51  ays.  return [SQ
b7a0: 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 69 66 20  LITE_MISUSE] if 
b7b0: 69 74 20 77 61 73 20 69 6e 76 6f 6b 65 64 20 61  it was invoked a
b7c0: 67 61 69 6e 20 61 66 74 65 72 20 72 65 74 75 72  gain after retur
b7d0: 6e 69 6e 67 20 61 6e 79 74 68 69 6e 67 0a 20 20  ning anything.  
b7e0: 6f 74 68 65 72 20 74 68 61 6e 20 5b 53 51 4c 49  other than [SQLI
b7f0: 54 45 5f 52 4f 57 5d 20 77 69 74 68 6f 75 74 20  TE_ROW] without 
b800: 61 6e 20 69 6e 74 65 72 76 65 6e 69 6e 67 20 63  an intervening c
b810: 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  all to [sqlite3_
b820: 72 65 73 65 74 28 29 5d 2e 0a 20 20 54 68 69 73  reset()]..  This
b830: 20 63 61 75 73 65 64 20 70 72 6f 62 6c 65 6d 73   caused problems
b840: 20 6f 6e 20 73 6f 6d 65 20 70 6f 6f 72 6c 79 20   on some poorly 
b850: 77 72 69 74 74 65 6e 20 73 6d 61 72 74 70 68 6f  written smartpho
b860: 6e 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20  ne applications 
b870: 77 68 69 63 68 0a 20 20 64 69 64 20 6e 6f 74 20  which.  did not 
b880: 63 6f 72 72 65 63 74 6c 79 20 68 61 6e 64 6c 65  correctly handle
b890: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c 4f 43   the [SQLITE_LOC
b8a0: 4b 45 44 5d 20 61 6e 64 20 5b 53 51 4c 49 54 45  KED] and [SQLITE
b8b0: 5f 42 55 53 59 5d 20 65 72 72 6f 72 20 0a 20 20  _BUSY] error .  
b8c0: 72 65 74 75 72 6e 73 2e 20 20 52 61 74 68 65 72  returns.  Rather
b8d0: 20 74 68 61 6e 20 66 69 78 20 74 68 65 20 6d 61   than fix the ma
b8e0: 6e 79 20 64 65 66 65 63 74 69 76 65 20 73 6d 61  ny defective sma
b8f0: 72 74 70 68 6f 6e 65 20 61 70 70 6c 69 63 61 74  rtphone applicat
b900: 69 6f 6e 73 2c 20 0a 20 20 74 68 65 20 62 65 68  ions, .  the beh
b910: 61 76 69 6f 72 20 6f 66 20 53 51 4c 69 74 65 20  avior of SQLite 
b920: 77 61 73 20 63 68 61 6e 67 65 64 20 69 6e 20 33  was changed in 3
b930: 2e 36 2e 32 33 2e 32 20 74 6f 20 61 75 74 6f 6d  .6.23.2 to autom
b940: 61 74 69 63 61 6c 6c 79 20 72 65 73 65 74 0a 20  atically reset. 
b950: 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74   the prepared st
b960: 61 74 65 6d 65 6e 74 2e 20 20 42 75 74 20 74 68  atement.  But th
b970: 61 74 20 63 68 61 6e 67 65 64 20 63 61 75 73 65  at changed cause
b980: 64 20 69 73 73 75 65 73 20 69 6e 20 6f 74 68 65  d issues in othe
b990: 72 20 0a 20 20 69 6d 70 72 6f 70 65 72 6c 79 20  r .  improperly 
b9a0: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 61 70 70 6c  implemented appl
b9b0: 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20 77 65  ications that we
b9c0: 72 65 20 61 63 74 75 61 6c 6c 79 20 6c 6f 6f 6b  re actually look
b9d0: 69 6e 67 0a 20 20 66 6f 72 20 61 6e 20 5b 53 51  ing.  for an [SQ
b9e0: 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 72 65 74  LITE_MISUSE] ret
b9f0: 75 72 6e 20 74 6f 20 74 65 72 6d 69 6e 61 74 65  urn to terminate
ba00: 20 74 68 65 69 72 20 71 75 65 72 79 20 6c 6f 6f   their query loo
ba10: 70 73 2e 20 20 28 41 6e 79 74 69 6d 65 0a 20 20  ps.  (Anytime.  
ba20: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 67  an application g
ba30: 65 74 73 20 61 6e 20 53 51 4c 49 54 45 5f 4d 49  ets an SQLITE_MI
ba40: 53 55 53 45 20 65 72 72 6f 72 20 63 6f 64 65 20  SUSE error code 
ba50: 66 72 6f 6d 20 53 51 4c 69 74 65 2c 20 74 68 61  from SQLite, tha
ba60: 74 20 6d 65 61 6e 73 20 74 68 65 0a 20 20 61 70  t means the.  ap
ba70: 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 6d 69 73  plication is mis
ba80: 75 73 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65  using the SQLite
ba90: 20 69 6e 74 65 72 66 61 63 65 20 61 6e 64 20 69   interface and i
baa0: 73 20 74 68 75 73 20 69 6e 63 6f 72 72 65 63 74  s thus incorrect
bab0: 6c 79 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 65 64  ly.  implemented
bac0: 2e 29 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4f  .)  The SQLITE_O
bad0: 4d 49 54 5f 41 55 54 4f 52 45 53 45 54 20 69 6e  MIT_AUTORESET in
bae0: 74 65 72 66 61 63 65 20 77 61 73 20 61 64 64 65  terface was adde
baf0: 64 20 74 6f 20 53 51 4c 69 74 65 0a 20 20 76 65  d to SQLite.  ve
bb00: 72 73 69 6f 6e 20 33 2e 37 2e 35 20 69 6e 20 61  rsion 3.7.5 in a
bb10: 6e 20 65 66 66 6f 72 74 20 74 6f 20 67 65 74 20  n effort to get 
bb20: 61 6c 6c 20 6f 66 20 74 68 65 20 28 62 72 6f 6b  all of the (brok
bb30: 65 6e 29 0a 20 20 61 70 70 6c 69 63 61 74 69 6f  en).  applicatio
bb40: 6e 73 20 74 6f 20 77 6f 72 6b 20 61 67 61 69 6e  ns to work again
bb50: 20 77 69 74 68 6f 75 74 20 68 61 76 69 6e 67 20   without having 
bb60: 74 6f 20 61 63 74 75 61 6c 6c 79 20 66 69 78 20  to actually fix 
bb70: 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  the applications
bb80: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
bb90: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
bba0: 5f 41 55 54 4f 56 41 43 55 55 4d 7d 20 7b 0a 20  _AUTOVACUUM} {. 
bbb0: 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20   If this option 
bbc0: 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20  is defined, the 
bbd0: 6c 69 62 72 61 72 79 20 63 61 6e 6e 6f 74 20 63  library cannot c
bbe0: 72 65 61 74 65 20 6f 72 20 77 72 69 74 65 20 74  reate or write t
bbf0: 6f 20 0a 20 20 64 61 74 61 62 61 73 65 73 20 74  o .  databases t
bc00: 68 61 74 20 73 75 70 70 6f 72 74 20 5b 61 75 74  hat support [aut
bc10: 6f 5f 76 61 63 75 75 6d 5d 2e 0a 20 20 45 78 65  o_vacuum]..  Exe
bc20: 63 75 74 69 6e 67 20 61 20 5b 50 52 41 47 4d 41  cuting a [PRAGMA
bc30: 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 73 74   auto_vacuum] st
bc40: 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f 74 20 61  atement is not a
bc50: 6e 20 65 72 72 6f 72 0a 20 20 28 73 69 6e 63 65  n error.  (since
bc60: 20 75 6e 6b 6e 6f 77 6e 20 50 52 41 47 4d 41 73   unknown PRAGMAs
bc70: 20 61 72 65 20 73 69 6c 65 6e 74 6c 79 20 69 67   are silently ig
bc80: 6e 6f 72 65 64 29 2c 20 62 75 74 20 64 6f 65 73  nored), but does
bc90: 20 6e 6f 74 20 72 65 74 75 72 6e 20 61 20 76 61   not return a va
bca0: 6c 75 65 0a 20 20 6f 72 20 6d 6f 64 69 66 79 20  lue.  or modify 
bcb0: 74 68 65 20 61 75 74 6f 2d 76 61 63 75 75 6d 20  the auto-vacuum 
bcc0: 66 6c 61 67 20 69 6e 20 74 68 65 20 64 61 74 61  flag in the data
bcd0: 62 61 73 65 20 66 69 6c 65 2e 20 49 66 20 61 20  base file. If a 
bce0: 64 61 74 61 62 61 73 65 20 74 68 61 74 0a 20 20  database that.  
bcf0: 73 75 70 70 6f 72 74 73 20 61 75 74 6f 2d 76 61  supports auto-va
bd00: 63 75 75 6d 20 69 73 20 6f 70 65 6e 65 64 20 62  cuum is opened b
bd10: 79 20 61 20 6c 69 62 72 61 72 79 20 63 6f 6d 70  y a library comp
bd20: 69 6c 65 64 20 77 69 74 68 20 74 68 69 73 20 6f  iled with this o
bd30: 70 74 69 6f 6e 2c 20 69 74 0a 20 20 69 73 20 61  ption, it.  is a
bd40: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6f 70 65  utomatically ope
bd50: 6e 65 64 20 69 6e 20 72 65 61 64 2d 6f 6e 6c 79  ned in read-only
bd60: 20 6d 6f 64 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c   mode..}..COMPIL
bd70: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
bd80: 5f 4f 4d 49 54 5f 42 45 54 57 45 45 4e 5f 4f 50  _OMIT_BETWEEN_OP
bd90: 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20  TIMIZATION} {.  
bda0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61  This option disa
bdb0: 62 6c 65 73 20 74 68 65 20 75 73 65 20 6f 66 20  bles the use of 
bdc0: 69 6e 64 69 63 65 73 20 77 69 74 68 20 57 48 45  indices with WHE
bdd0: 52 45 20 63 6c 61 75 73 65 20 74 65 72 6d 73 0a  RE clause terms.
bde0: 20 20 74 68 61 74 20 65 6d 70 6c 6f 79 20 74 68    that employ th
bdf0: 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61 74  e BETWEEN operat
be00: 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  or..}..COMPILE_O
be10: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
be20: 49 54 5f 42 4c 4f 42 5f 4c 49 54 45 52 41 4c 7d  IT_BLOB_LITERAL}
be30: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f   {.  When this o
be40: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
be50: 2c 20 69 74 20 69 73 20 6e 6f 74 20 70 6f 73 73  , it is not poss
be60: 69 62 6c 65 20 74 6f 20 73 70 65 63 69 66 79 20  ible to specify 
be70: 61 20 62 6c 6f 62 20 69 6e 0a 20 20 61 6e 20 53  a blob in.  an S
be80: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 75 73 69  QL statement usi
be90: 6e 67 20 74 68 65 20 58 27 41 42 43 44 27 20 73  ng the X'ABCD' s
bea0: 79 6e 74 61 78 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  yntax..}..COMPIL
beb0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
bec0: 5f 4f 4d 49 54 5f 42 54 52 45 45 43 4f 55 4e 54  _OMIT_BTREECOUNT
bed0: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
bee0: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
bef0: 64 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69  d, an optimizati
bf00: 6f 6e 20 74 68 61 74 20 61 63 63 65 6c 65 72 61  on that accelera
bf10: 74 65 73 20 63 6f 75 6e 74 69 6e 67 0a 20 20 61  tes counting.  a
bf20: 6c 6c 20 65 6e 74 72 69 65 73 20 69 6e 20 61 20  ll entries in a 
bf30: 74 61 62 6c 65 20 28 69 6e 20 6f 74 68 65 72 20  table (in other 
bf40: 77 6f 72 64 73 2c 20 61 6e 20 6f 70 74 69 6d 69  words, an optimi
bf50: 7a 61 74 69 6f 6e 20 74 68 61 74 20 68 65 6c 70  zation that help
bf60: 73 0a 20 20 22 53 45 4c 45 43 54 20 63 6f 75 6e  s.  "SELECT coun
bf70: 74 28 2a 29 20 46 52 4f 4d 20 74 61 62 6c 65 22  t(*) FROM table"
bf80: 20 72 75 6e 20 66 61 73 74 65 72 29 20 69 73 20   run faster) is 
bf90: 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  omitted..}..COMP
bfa0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
bfb0: 54 45 5f 4f 4d 49 54 5f 42 55 49 4c 54 49 4e 5f  TE_OMIT_BUILTIN_
bfc0: 54 45 53 54 7d 20 7b 0a 20 20 41 20 73 74 61 6e  TEST} {.  A stan
bfd0: 64 61 72 64 20 53 51 4c 69 74 65 20 62 75 69 6c  dard SQLite buil
bfe0: 64 20 69 6e 63 6c 75 64 65 73 20 61 20 73 6d 61  d includes a sma
bff0: 6c 6c 20 61 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67  ll amount of log
c000: 69 63 20 63 6f 6e 74 72 6f 6c 6c 65 64 0a 20 20  ic controlled.  
c010: 62 79 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  by the [sqlite3_
c020: 74 65 73 74 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20  test_control()] 
c030: 69 6e 74 65 72 66 61 63 65 20 74 68 61 74 20 69  interface that i
c040: 73 20 75 73 65 64 20 74 6f 20 65 78 65 72 63 69  s used to exerci
c050: 73 65 0a 20 20 70 61 72 74 73 20 6f 66 20 74 68  se.  parts of th
c060: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 74 68  e SQLite core th
c070: 61 74 20 61 72 65 20 64 69 66 66 69 63 75 6c 74  at are difficult
c080: 20 74 6f 20 63 6f 6e 74 72 6f 6c 20 61 6e 64 20   to control and 
c090: 6d 65 61 73 75 72 65 20 75 73 69 6e 67 0a 20 20  measure using.  
c0a0: 74 68 65 20 73 74 61 6e 64 61 72 64 20 41 50 49  the standard API
c0b0: 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
c0c0: 6d 69 74 73 20 74 68 61 74 20 62 75 69 6c 74 2d  mits that built-
c0d0: 69 6e 20 74 65 73 74 20 6c 6f 67 69 63 2e 0a 7d  in test logic..}
c0e0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
c0f0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 41   {SQLITE_OMIT_CA
c100: 53 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  ST} {.  This opt
c110: 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74  ion causes SQLit
c120: 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72  e to omit suppor
c130: 74 20 66 6f 72 20 74 68 65 20 43 41 53 54 20 6f  t for the CAST o
c140: 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  perator..}..COMP
c150: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
c160: 54 45 5f 4f 4d 49 54 5f 43 48 45 43 4b 7d 20 7b  TE_OMIT_CHECK} {
c170: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
c180: 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20  auses SQLite to 
c190: 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72  omit support for
c1a0: 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e   CHECK constrain
c1b0: 74 73 2e 0a 20 20 54 68 65 20 70 61 72 73 65 72  ts..  The parser
c1c0: 20 77 69 6c 6c 20 73 74 69 6c 6c 20 61 63 63 65   will still acce
c1d0: 70 74 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61  pt CHECK constra
c1e0: 69 6e 74 73 20 69 6e 20 53 51 4c 20 73 74 61 74  ints in SQL stat
c1f0: 65 6d 65 6e 74 73 2c 0a 20 20 74 68 65 79 20 77  ements,.  they w
c200: 69 6c 6c 20 6a 75 73 74 20 6e 6f 74 20 62 65 20  ill just not be 
c210: 65 6e 66 6f 72 63 65 64 2e 0a 7d 0a 0a 43 4f 4d  enforced..}..COM
c220: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
c230: 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49 4c 45  ITE_OMIT_COMPILE
c240: 4f 50 54 49 4f 4e 5f 44 49 41 47 53 7d 20 7b 0a  OPTION_DIAGS} {.
c250: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
c260: 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68   used to omit th
c270: 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  e compile-time o
c280: 70 74 69 6f 6e 20 64 69 61 67 6e 6f 73 74 69 63  ption diagnostic
c290: 73 20 61 76 61 69 6c 61 62 6c 65 0a 20 20 69 6e  s available.  in
c2a0: 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69   SQLite, includi
c2b0: 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  ng the [sqlite3_
c2c0: 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73  compileoption_us
c2d0: 65 64 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c  ed()] and.  [sql
c2e0: 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
c2f0: 6f 6e 5f 67 65 74 28 29 5d 20 43 2f 43 2b 2b 20  on_get()] C/C++ 
c300: 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68 65 0a 20  functions, the. 
c310: 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65   [sqlite_compile
c320: 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20 61  option_used()] a
c330: 6e 64 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69  nd [sqlite_compi
c340: 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20  leoption_get()] 
c350: 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 2c 0a 20  SQL functions,. 
c360: 20 61 6e 64 20 74 68 65 20 5b 63 6f 6d 70 69 6c   and the [compil
c370: 65 5f 6f 70 74 69 6f 6e 73 20 70 72 61 67 6d 61  e_options pragma
c380: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
c390: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
c3a0: 54 5f 43 4f 4d 50 4c 45 54 45 7d 20 7b 0a 20 20  T_COMPLETE} {.  
c3b0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
c3c0: 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  es the [sqlite3_
c3d0: 63 6f 6d 70 6c 65 74 65 28 29 5d 20 61 6e 64 20  complete()] and 
c3e0: 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74  [sqlite3_complet
c3f0: 65 31 36 28 29 5d 0a 20 20 69 6e 74 65 72 66 61  e16()].  interfa
c400: 63 65 73 20 74 6f 20 62 65 20 6f 6d 69 74 74 65  ces to be omitte
c410: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
c420: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
c430: 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43  T_COMPOUND_SELEC
c440: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
c450: 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d  on is used to om
c460: 69 74 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20  it the compound 
c470: 5b 53 45 4c 45 43 54 5d 20 66 75 6e 63 74 69 6f  [SELECT] functio
c480: 6e 61 6c 69 74 79 2e 20 0a 20 20 5b 53 45 4c 45  nality. .  [SELE
c490: 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 74  CT] statements t
c4a0: 68 61 74 20 75 73 65 20 74 68 65 20 0a 20 20 55  hat use the .  U
c4b0: 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c  NION, UNION ALL,
c4c0: 20 49 4e 54 45 52 53 45 43 54 20 6f 72 20 45 58   INTERSECT or EX
c4d0: 43 45 50 54 20 63 6f 6d 70 6f 75 6e 64 20 53 45  CEPT compound SE
c4e0: 4c 45 43 54 20 6f 70 65 72 61 74 6f 72 73 20 77  LECT operators w
c4f0: 69 6c 6c 20 0a 20 20 63 61 75 73 65 20 61 20 70  ill .  cause a p
c500: 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20 41  arse error...  A
c510: 6e 20 5b 49 4e 53 45 52 54 5d 20 73 74 61 74 65  n [INSERT] state
c520: 6d 65 6e 74 20 77 69 74 68 20 6d 75 6c 74 69 70  ment with multip
c530: 6c 65 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65  le values in the
c540: 20 56 41 4c 55 45 53 20 63 6c 61 75 73 65 20 69   VALUES clause i
c550: 73 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20  s.  implemented 
c560: 69 6e 74 65 72 6e 61 6c 6c 79 20 61 73 20 61 20  internally as a 
c570: 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 2e  compound SELECT.
c580: 20 20 48 65 6e 63 65 2c 20 74 68 69 73 20 6f 70    Hence, this op
c590: 74 69 6f 6e 20 61 6c 73 6f 0a 20 20 64 69 73 61  tion also.  disa
c5a0: 62 6c 65 73 20 74 68 65 20 61 62 69 6c 69 74 79  bles the ability
c5b0: 20 74 6f 20 69 6e 73 65 72 74 20 6d 6f 72 65 20   to insert more 
c5c0: 74 68 61 6e 20 61 20 73 69 6e 67 6c 65 20 72 6f  than a single ro
c5d0: 77 20 75 73 69 6e 67 20 61 6e 0a 20 20 49 4e 53  w using an.  INS
c5e0: 45 52 54 20 49 4e 54 4f 20 2e 2e 2e 20 56 41 4c  ERT INTO ... VAL
c5f0: 55 45 53 20 2e 2e 2e 20 73 74 61 74 65 6d 65 6e  UES ... statemen
c600: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
c610: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
c620: 54 5f 43 54 45 7d 20 7b 0a 20 20 54 68 69 73 20  T_CTE} {.  This 
c630: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75  option causes su
c640: 70 70 6f 72 74 20 66 6f 72 20 5b 63 6f 6d 6d 6f  pport for [commo
c650: 6e 20 74 61 62 6c 65 20 65 78 70 72 65 73 73 69  n table expressi
c660: 6f 6e 73 5d 20 74 6f 20 62 65 20 6f 6d 69 74 74  ons] to be omitt
c670: 65 64 2e 0a 7d 0a 0a 0a 0a 43 4f 4d 50 49 4c 45  ed..}....COMPILE
c680: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
c690: 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f 46 55  OMIT_DATETIME_FU
c6a0: 4e 43 53 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  NCS} {.  If this
c6b0: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
c6c0: 65 64 2c 20 53 51 4c 69 74 65 27 73 20 62 75 69  ed, SQLite's bui
c6d0: 6c 74 2d 69 6e 20 64 61 74 65 20 61 6e 64 20 74  lt-in date and t
c6e0: 69 6d 65 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e  ime manipulation
c6f0: 0a 20 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  .  functions are
c700: 20 6f 6d 69 74 74 65 64 2e 20 53 70 65 63 69 66   omitted. Specif
c710: 69 63 61 6c 6c 79 2c 20 74 68 65 20 53 51 4c 20  ically, the SQL 
c720: 66 75 6e 63 74 69 6f 6e 73 20 6a 75 6c 69 61 6e  functions julian
c730: 64 61 79 28 29 2c 20 64 61 74 65 28 29 2c 0a 20  day(), date(),. 
c740: 20 74 69 6d 65 28 29 2c 20 64 61 74 65 74 69 6d   time(), datetim
c750: 65 28 29 20 61 6e 64 20 73 74 72 66 74 69 6d 65  e() and strftime
c760: 28 29 20 61 72 65 20 6e 6f 74 20 61 76 61 69 6c  () are not avail
c770: 61 62 6c 65 2e 20 54 68 65 20 64 65 66 61 75 6c  able. The defaul
c780: 74 20 63 6f 6c 75 6d 6e 0a 20 20 76 61 6c 75 65  t column.  value
c790: 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20  s CURRENT_TIME, 
c7a0: 43 55 52 52 45 4e 54 5f 44 41 54 45 20 61 6e 64  CURRENT_DATE and
c7b0: 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41   CURRENT_TIMESTA
c7c0: 4d 50 20 61 72 65 20 73 74 69 6c 6c 20 61 76 61  MP are still ava
c7d0: 69 6c 61 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  ilable..}..COMPI
c7e0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
c7f0: 45 5f 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45 7d  E_OMIT_DECLTYPE}
c800: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
c810: 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
c820: 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66  o omit support f
c830: 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65  or the.  [sqlite
c840: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
c850: 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  e()] and [sqlite
c860: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
c870: 65 31 36 28 29 5d 0a 20 20 69 6e 74 65 72 66 61  e16()].  interfa
c880: 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ces..}..COMPILE_
c890: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
c8a0: 4d 49 54 5f 44 45 50 52 45 43 41 54 45 44 7d 20  MIT_DEPRECATED} 
c8b0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
c8c0: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
c8d0: 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f   omit support fo
c8e0: 72 20 69 6e 74 65 72 66 61 63 65 73 0a 20 20 6d  r interfaces.  m
c8f0: 61 72 6b 65 64 20 61 73 20 64 65 70 72 65 63 61  arked as depreca
c900: 74 65 64 2e 20 20 54 68 69 73 20 69 6e 63 6c 75  ted.  This inclu
c910: 64 65 73 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f  des .  [sqlite3_
c920: 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28  aggregate_count(
c930: 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 65  )],.  [sqlite3_e
c940: 78 70 69 72 65 64 28 29 5d 2c 0a 20 20 5b 73 71  xpired()],.  [sq
c950: 6c 69 74 65 33 5f 74 72 61 6e 73 66 65 72 5f 62  lite3_transfer_b
c960: 69 6e 64 69 6e 67 73 28 29 5d 2c 0a 20 20 5b 73  indings()],.  [s
c970: 71 6c 69 74 65 33 5f 67 6c 6f 62 61 6c 5f 72 65  qlite3_global_re
c980: 63 6f 76 65 72 28 29 5d 2c 0a 20 20 5b 73 71 6c  cover()],.  [sql
c990: 69 74 65 33 5f 74 68 72 65 61 64 5f 63 6c 65 61  ite3_thread_clea
c9a0: 6e 75 70 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71  nup()] and.  [sq
c9b0: 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 61 6c 61  lite3_memory_ala
c9c0: 72 6d 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  rm()] interfaces
c9d0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
c9e0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
c9f0: 5f 44 49 53 4b 49 4f 7d 20 7b 0a 20 20 54 68 69  _DISKIO} {.  Thi
ca00: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61  s option omits a
ca10: 6c 6c 20 73 75 70 70 6f 72 74 20 66 6f 72 20 77  ll support for w
ca20: 72 69 74 69 6e 67 20 74 6f 20 74 68 65 20 64 69  riting to the di
ca30: 73 6b 20 61 6e 64 20 66 6f 72 63 65 73 0a 20 20  sk and forces.  
ca40: 64 61 74 61 62 61 73 65 73 20 74 6f 20 65 78 69  databases to exi
ca50: 73 74 20 69 6e 20 6d 65 6d 6f 72 79 20 6f 6e 6c  st in memory onl
ca60: 79 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  y.  This option 
ca70: 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 0a 20 20  has not been .  
ca80: 6d 61 69 6e 74 61 69 6e 65 64 20 61 6e 64 20 70  maintained and p
ca90: 72 6f 62 61 62 6c 79 20 64 6f 65 73 20 6e 6f 74  robably does not
caa0: 20 77 6f 72 6b 20 77 69 74 68 20 6e 65 77 65 72   work with newer
cab0: 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c   versions of SQL
cac0: 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ite..}..COMPILE_
cad0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
cae0: 4d 49 54 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a 20  MIT_EXPLAIN} {. 
caf0: 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
cb00: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
cb10: 20 5b 45 58 50 4c 41 49 4e 5d 20 63 6f 6d 6d 61   [EXPLAIN] comma
cb20: 6e 64 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64  nd to be omitted
cb30: 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72   from the.  libr
cb40: 61 72 79 2e 20 41 74 74 65 6d 70 74 69 6e 67 20  ary. Attempting 
cb50: 74 6f 20 65 78 65 63 75 74 65 20 61 6e 20 5b 45  to execute an [E
cb60: 58 50 4c 41 49 4e 5d 20 73 74 61 74 65 6d 65 6e  XPLAIN] statemen
cb70: 74 20 77 69 6c 6c 20 63 61 75 73 65 20 61 20 70  t will cause a p
cb80: 61 72 73 65 0a 20 20 65 72 72 6f 72 2e 0a 7d 0a  arse.  error..}.
cb90: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
cba0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41  {SQLITE_OMIT_FLA
cbb0: 47 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 54  G_PRAGMAS} {.  T
cbc0: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
cbd0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 61 20 73   support for a s
cbe0: 75 62 73 65 74 20 6f 66 20 5b 50 52 41 47 4d 41  ubset of [PRAGMA
cbf0: 5d 20 63 6f 6d 6d 61 6e 64 73 20 74 68 61 74 0a  ] commands that.
cc00: 20 20 71 75 65 72 79 20 61 6e 64 20 73 65 74 20    query and set 
cc10: 62 6f 6f 6c 65 61 6e 20 70 72 6f 70 65 72 74 69  boolean properti
cc20: 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  es..}..COMPILE_O
cc30: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
cc40: 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e  IT_FLOATING_POIN
cc50: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
cc60: 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d  on is used to om
cc70: 69 74 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  it floating-poin
cc80: 74 20 6e 75 6d 62 65 72 20 73 75 70 70 6f 72 74  t number support
cc90: 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65   from the SQLite
cca0: 0a 20 20 6c 69 62 72 61 72 79 2e 20 57 68 65 6e  .  library. When
ccb0: 20 73 70 65 63 69 66 69 65 64 2c 20 73 70 65 63   specified, spec
ccc0: 69 66 79 69 6e 67 20 61 20 66 6c 6f 61 74 69 6e  ifying a floatin
ccd0: 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 20 61  g point number a
cce0: 73 20 61 20 6c 69 74 65 72 61 6c 20 0a 20 20 28  s a literal .  (
ccf0: 69 2e 65 2e 20 22 31 2e 30 31 22 29 20 72 65 73  i.e. "1.01") res
cd00: 75 6c 74 73 20 69 6e 20 61 20 70 61 72 73 65 20  ults in a parse 
cd10: 65 72 72 6f 72 2e 0a 0a 20 20 3c 70 3e 49 6e 20  error...  <p>In 
cd20: 74 68 65 20 66 75 74 75 72 65 2c 20 74 68 69 73  the future, this
cd30: 20 6f 70 74 69 6f 6e 20 6d 61 79 20 61 6c 73 6f   option may also
cd40: 20 64 69 73 61 62 6c 65 20 6f 74 68 65 72 20 66   disable other f
cd50: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 0a 20  loating point . 
cd60: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2c 20   functionality, 
cd70: 66 6f 72 20 65 78 61 6d 70 6c 65 20 74 68 65 20  for example the 
cd80: 5b 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  [sqlite3_result_
cd90: 64 6f 75 62 6c 65 28 29 5d 2c 20 0a 20 20 5b 73  double()], .  [s
cda0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62  qlite3_bind_doub
cdb0: 6c 65 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  le()], [sqlite3_
cdc0: 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 29 5d 20  value_double()] 
cdd0: 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  and.  [sqlite3_c
cde0: 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 29 5d 20  olumn_double()] 
cdf0: 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 20  API functions.. 
ce00: 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45   </p>.}..COMPILE
ce10: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
ce20: 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59  OMIT_FOREIGN_KEY
ce30: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70  } {.  If this op
ce40: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
ce50: 20 74 68 65 6e 20 5b 66 6f 72 65 69 67 6e 20 6b   then [foreign k
ce60: 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 5d 20 73  ey constraint] s
ce70: 79 6e 74 61 78 20 69 73 0a 20 20 6e 6f 74 20 72  yntax is.  not r
ce80: 65 63 6f 67 6e 69 7a 65 64 2e 0a 7d 0a 0a 43 4f  ecognized..}..CO
ce90: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
cea0: 4c 49 54 45 5f 4f 4d 49 54 5f 47 45 54 5f 54 41  LITE_OMIT_GET_TA
ceb0: 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  BLE} {.  This op
cec0: 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70  tion causes supp
ced0: 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69 74 65 33  ort for [sqlite3
cee0: 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 61 6e  _get_table()] an
cef0: 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 66 72 65  d.  [sqlite3_fre
cf00: 65 5f 74 61 62 6c 65 28 29 5d 20 74 6f 20 62 65  e_table()] to be
cf10: 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   omitted..}..COM
cf20: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
cf30: 49 54 45 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c 4f  ITE_OMIT_INCRBLO
cf40: 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  B} {.  This opti
cf50: 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70 6f 72  on causes suppor
cf60: 74 20 66 6f 72 20 5b 73 71 6c 69 74 65 33 5f 62  t for [sqlite3_b
cf70: 6c 6f 62 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61  lob | incrementa
cf80: 6c 20 42 4c 4f 42 20 49 2f 4f 5d 0a 20 20 74 6f  l BLOB I/O].  to
cf90: 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a   be omitted..}..
cfa0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
cfb0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 54 45  SQLITE_OMIT_INTE
cfc0: 47 52 49 54 59 5f 43 48 45 43 4b 7d 20 7b 0a 20  GRITY_CHECK} {. 
cfd0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
cfe0: 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74  ts support for t
cff0: 68 65 20 5b 69 6e 74 65 67 72 69 74 79 5f 63 68  he [integrity_ch
d000: 65 63 6b 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a  eck pragma]..}..
d010: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
d020: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 49 4b 45  SQLITE_OMIT_LIKE
d030: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b  _OPTIMIZATION} {
d040: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  .  This option d
d050: 69 73 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c  isables the abil
d060: 69 74 79 20 6f 66 20 53 51 4c 69 74 65 20 74 6f  ity of SQLite to
d070: 20 75 73 65 20 69 6e 64 69 63 65 73 20 74 6f 20   use indices to 
d080: 68 65 6c 70 0a 20 20 72 65 73 6f 6c 76 65 20 5b  help.  resolve [
d090: 4c 49 4b 45 5d 20 61 6e 64 20 5b 47 4c 4f 42 5d  LIKE] and [GLOB]
d0a0: 20 6f 70 65 72 61 74 6f 72 73 20 69 6e 20 61 20   operators in a 
d0b0: 57 48 45 52 45 20 63 6c 61 75 73 65 2e 0a 7d 0a  WHERE clause..}.
d0c0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
d0d0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 41  {SQLITE_OMIT_LOA
d0e0: 44 5f 45 58 54 45 4e 53 49 4f 4e 7d 20 7b 0a 20  D_EXTENSION} {. 
d0f0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
d100: 74 73 20 74 68 65 20 65 6e 74 69 72 65 20 65 78  ts the entire ex
d110: 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67 20  tension loading 
d120: 6d 65 63 68 61 6e 69 73 6d 20 66 72 6f 6d 0a 20  mechanism from. 
d130: 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69   SQLite, includi
d140: 6e 67 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62  ng [sqlite3_enab
d150: 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  le_load_extensio
d160: 6e 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69  n()] and.  [sqli
d170: 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  te3_load_extensi
d180: 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  on()] interfaces
d190: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
d1a0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
d1b0: 5f 4c 4f 43 41 4c 54 49 4d 45 7d 20 7b 0a 20 20  _LOCALTIME} {.  
d1c0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
d1d0: 73 20 74 68 65 20 22 6c 6f 63 61 6c 74 69 6d 65  s the "localtime
d1e0: 22 20 6d 6f 64 69 66 69 65 72 20 66 72 6f 6d 20  " modifier from 
d1f0: 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d  the date and tim
d200: 65 0a 20 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20  e.  functions.  
d210: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 73  This option is s
d220: 6f 6d 65 74 69 6d 65 73 20 75 73 65 66 75 6c 20  ometimes useful 
d230: 77 68 65 6e 20 74 72 79 69 6e 67 20 74 6f 20 63  when trying to c
d240: 6f 6d 70 69 6c 65 0a 20 20 74 68 65 20 64 61 74  ompile.  the dat
d250: 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74  e and time funct
d260: 69 6f 6e 73 20 6f 6e 20 61 20 70 6c 61 74 66 6f  ions on a platfo
d270: 72 6d 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74  rm that does not
d280: 20 73 75 70 70 6f 72 74 20 74 68 65 0a 20 20 63   support the.  c
d290: 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 63 61 6c 20  oncept of local 
d2a0: 74 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  time..}..COMPILE
d2b0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
d2c0: 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44 45 7d 20  OMIT_LOOKASIDE} 
d2d0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
d2e0: 6f 6d 69 74 73 20 74 68 65 20 5b 6c 6f 6f 6b 61  omits the [looka
d2f0: 73 69 64 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  side memory allo
d300: 63 61 74 6f 72 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  cator]..}..COMPI
d310: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
d320: 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44 42 7d  E_OMIT_MEMORYDB}
d330: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 69   {.  When this i
d340: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 6c  s defined, the l
d350: 69 62 72 61 72 79 20 64 6f 65 73 20 6e 6f 74 20  ibrary does not 
d360: 72 65 73 70 65 63 74 20 74 68 65 20 73 70 65 63  respect the spec
d370: 69 61 6c 20 64 61 74 61 62 61 73 65 0a 20 20 6e  ial database.  n
d380: 61 6d 65 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 28  ame ":memory:" (
d390: 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64 20 74 6f  normally used to
d3a0: 20 63 72 65 61 74 65 20 61 6e 20 5b 69 6e 2d 6d   create an [in-m
d3b0: 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 5d 29  emory database])
d3c0: 2e 20 49 66 20 0a 20 20 22 3a 6d 65 6d 6f 72 79  . If .  ":memory
d3d0: 3a 22 20 69 73 20 70 61 73 73 65 64 20 74 6f 20  :" is passed to 
d3e0: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d  [sqlite3_open()]
d3f0: 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31  , [sqlite3_open1
d400: 36 28 29 5d 2c 20 6f 72 0a 20 20 5b 73 71 6c 69  6()], or.  [sqli
d410: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20  te3_open_v2()], 
d420: 61 20 66 69 6c 65 20 77 69 74 68 20 74 68 69 73  a file with this
d430: 20 6e 61 6d 65 20 77 69 6c 6c 20 62 65 20 0a 20   name will be . 
d440: 20 6f 70 65 6e 65 64 20 6f 72 20 63 72 65 61 74   opened or creat
d450: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
d460: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
d470: 49 54 5f 4f 52 5f 4f 50 54 49 4d 49 5a 41 54 49  IT_OR_OPTIMIZATI
d480: 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  ON} {.  This opt
d490: 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65  ion disables the
d4a0: 20 61 62 69 6c 69 74 79 20 6f 66 20 53 51 4c 69   ability of SQLi
d4b0: 74 65 20 74 6f 20 75 73 65 20 61 6e 20 69 6e 64  te to use an ind
d4c0: 65 78 20 74 6f 67 65 74 68 65 72 0a 20 20 77 69  ex together.  wi
d4d0: 74 68 20 74 65 72 6d 73 20 6f 66 20 61 20 57 48  th terms of a WH
d4e0: 45 52 45 20 63 6c 61 75 73 65 20 63 6f 6e 6e 65  ERE clause conne
d4f0: 63 74 65 64 20 62 79 20 74 68 65 20 4f 52 20 6f  cted by the OR o
d500: 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  perator..}..COMP
d510: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
d520: 54 45 5f 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52  TE_OMIT_PAGER_PR
d530: 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e  AGMAS} {.  Defin
d540: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
d550: 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20 72 65  omits pragmas re
d560: 6c 61 74 65 64 20 74 6f 20 74 68 65 20 70 61 67  lated to the pag
d570: 65 72 20 73 75 62 73 79 73 74 65 6d 20 66 72 6f  er subsystem fro
d580: 6d 20 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a  m .  the build..
d590: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
d5a0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50  N {SQLITE_OMIT_P
d5b0: 52 41 47 4d 41 7d 20 7b 0a 20 20 54 68 69 73 20  RAGMA} {.  This 
d5c0: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
d5d0: 6f 20 6f 6d 69 74 20 74 68 65 20 5b 50 52 41 47  o omit the [PRAG
d5e0: 4d 41 5d 20 63 6f 6d 6d 61 6e 64 0a 20 20 66 72  MA] command.  fr
d5f0: 6f 6d 20 74 68 65 20 6c 69 62 72 61 72 79 2e 20  om the library. 
d600: 4e 6f 74 65 20 74 68 61 74 20 69 74 20 69 73 20  Note that it is 
d610: 75 73 65 66 75 6c 20 74 6f 20 64 65 66 69 6e 65  useful to define
d620: 20 74 68 65 20 6d 61 63 72 6f 73 20 74 68 61 74   the macros that
d630: 20 6f 6d 69 74 0a 20 20 73 70 65 63 69 66 69 63   omit.  specific
d640: 20 70 72 61 67 6d 61 73 20 69 6e 20 61 64 64 69   pragmas in addi
d650: 74 69 6f 6e 20 74 6f 20 74 68 69 73 2c 20 61 73  tion to this, as
d660: 20 74 68 65 79 20 6d 61 79 20 61 6c 73 6f 20 72   they may also r
d670: 65 6d 6f 76 65 20 73 75 70 70 6f 72 74 69 6e 67  emove supporting
d680: 20 63 6f 64 65 0a 20 20 69 6e 20 6f 74 68 65 72   code.  in other
d690: 20 73 75 62 2d 73 79 73 74 65 6d 73 2e 20 54 68   sub-systems. Th
d6a0: 69 73 20 6d 61 63 72 6f 20 72 65 6d 6f 76 65 73  is macro removes
d6b0: 20 74 68 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f   the [PRAGMA] co
d6c0: 6d 6d 61 6e 64 20 6f 6e 6c 79 2e 0a 7d 0a 0a 43  mmand only..}..C
d6d0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
d6e0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 4f 47 52  QLITE_OMIT_PROGR
d6f0: 45 53 53 5f 43 41 4c 4c 42 41 43 4b 7d 20 7b 0a  ESS_CALLBACK} {.
d700: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61    This option ma
d710: 79 20 62 65 20 64 65 66 69 6e 65 64 20 74 6f 20  y be defined to 
d720: 6f 6d 69 74 20 74 68 65 20 63 61 70 61 62 69 6c  omit the capabil
d730: 69 74 79 20 74 6f 20 69 73 73 75 65 20 22 70 72  ity to issue "pr
d740: 6f 67 72 65 73 73 22 20 0a 20 20 63 61 6c 6c 62  ogress" .  callb
d750: 61 63 6b 73 20 64 75 72 69 6e 67 20 6c 6f 6e 67  acks during long
d760: 2d 72 75 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61  -running SQL sta
d770: 74 65 6d 65 6e 74 73 2e 20 54 68 65 20 0a 20 20  tements. The .  
d780: 5b 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73  [sqlite3_progres
d790: 73 5f 68 61 6e 64 6c 65 72 28 29 5d 0a 20 20 41  s_handler()].  A
d7a0: 50 49 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e  PI function is n
d7b0: 6f 74 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68  ot present in th
d7c0: 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f  e library..}..CO
d7d0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
d7e0: 4c 49 54 45 5f 4f 4d 49 54 5f 51 55 49 43 4b 42  LITE_OMIT_QUICKB
d7f0: 41 4c 41 4e 43 45 7d 20 7b 0a 20 20 54 68 69 73  ALANCE} {.  This
d800: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6e   option omits an
d810: 20 61 6c 74 65 72 6e 61 74 69 76 65 2c 20 66 61   alternative, fa
d820: 73 74 65 72 20 42 2d 54 72 65 65 20 62 61 6c 61  ster B-Tree bala
d830: 6e 63 69 6e 67 20 72 6f 75 74 69 6e 65 2e 0a 20  ncing routine.. 
d840: 20 55 73 69 6e 67 20 74 68 69 73 20 6f 70 74 69   Using this opti
d850: 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20  on makes SQLite 
d860: 73 6c 69 67 68 74 6c 79 20 73 6d 61 6c 6c 65 72  slightly smaller
d870: 20 61 74 20 74 68 65 20 65 78 70 65 6e 73 65 20   at the expense 
d880: 6f 66 0a 20 20 6d 61 6b 69 6e 67 20 69 74 20 72  of.  making it r
d890: 75 6e 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f 77  un slightly slow
d8a0: 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  er..}..COMPILE_O
d8b0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
d8c0: 49 54 5f 52 45 49 4e 44 45 58 7d 20 7b 0a 20 20  IT_REINDEX} {.  
d8d0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
d8e0: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
d8f0: 20 5b 52 45 49 4e 44 45 58 5d 0a 20 20 63 6f 6d   [REINDEX].  com
d900: 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c  mand is not incl
d910: 75 64 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72  uded in the libr
d920: 61 72 79 2e 0a 20 20 45 78 65 63 75 74 69 6e 67  ary..  Executing
d930: 20 61 20 5b 52 45 49 4e 44 45 58 5d 20 73 74 61   a [REINDEX] sta
d940: 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20 0a 20  tement causes . 
d950: 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a   a parse error..
d960: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
d970: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  N {SQLITE_OMIT_S
d980: 43 48 45 4d 41 5f 50 52 41 47 4d 41 53 7d 20 7b  CHEMA_PRAGMAS} {
d990: 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73  .  Defining this
d9a0: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72   option omits pr
d9b0: 61 67 6d 61 73 20 66 6f 72 20 71 75 65 72 79 69  agmas for queryi
d9c0: 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ng the database 
d9d0: 73 63 68 65 6d 61 20 66 72 6f 6d 20 0a 20 20 74  schema from .  t
d9e0: 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d  he build..}..COM
d9f0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
da00: 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f  ITE_OMIT_SCHEMA_
da10: 56 45 52 53 49 4f 4e 5f 50 52 41 47 4d 41 53 7d  VERSION_PRAGMAS}
da20: 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
da30: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
da40: 70 72 61 67 6d 61 73 20 66 6f 72 20 71 75 65 72  pragmas for quer
da50: 79 69 6e 67 20 61 6e 64 20 6d 6f 64 69 66 79 69  ying and modifyi
da60: 6e 67 20 74 68 65 20 0a 20 20 64 61 74 61 62 61  ng the .  databa
da70: 73 65 20 73 63 68 65 6d 61 20 76 65 72 73 69 6f  se schema versio
da80: 6e 20 61 6e 64 20 75 73 65 72 20 76 65 72 73 69  n and user versi
da90: 6f 6e 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c  on from the buil
daa0: 64 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79 2c  d. Specifically,
dab0: 20 74 68 65 20 0a 20 20 5b 73 63 68 65 6d 61 5f   the .  [schema_
dac0: 76 65 72 73 69 6f 6e 5d 20 61 6e 64 20 5b 75 73  version] and [us
dad0: 65 72 5f 76 65 72 73 69 6f 6e 5d 20 50 52 41 47  er_version] PRAG
dae0: 4d 41 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e  MAs are omitted.
daf0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
db00: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
db10: 53 48 41 52 45 44 5f 43 41 43 48 45 7d 20 7b 0a  SHARED_CACHE} {.
db20: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 62 75    This option bu
db30: 69 6c 64 73 20 53 51 4c 69 74 65 20 77 69 74 68  ilds SQLite with
db40: 6f 75 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  out support for 
db50: 73 68 61 72 65 64 2d 63 61 63 68 65 20 6d 6f 64  shared-cache mod
db60: 65 2e 0a 20 20 54 68 65 20 5b 73 71 6c 69 74 65  e..  The [sqlite
db70: 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f  3_enable_shared_
db80: 63 61 63 68 65 28 29 5d 20 69 73 20 6f 6d 69 74  cache()] is omit
db90: 74 65 64 20 61 6c 6f 6e 67 20 77 69 74 68 20 61  ted along with a
dba0: 20 66 61 69 72 0a 20 20 61 6d 6f 75 6e 74 20 6f   fair.  amount o
dbb0: 66 20 6c 6f 67 69 63 20 77 69 74 68 69 6e 20 74  f logic within t
dbc0: 68 65 20 42 2d 54 72 65 65 20 73 75 62 73 79 73  he B-Tree subsys
dbd0: 74 65 6d 20 61 73 73 6f 63 69 61 74 65 64 20 77  tem associated w
dbe0: 69 74 68 20 73 68 61 72 65 64 0a 20 20 63 61 63  ith shared.  cac
dbf0: 68 65 20 6d 61 6e 61 67 65 6d 65 6e 74 2e 0a 7d  he management..}
dc00: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
dc10: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 55   {SQLITE_OMIT_SU
dc20: 42 51 55 45 52 59 7d 20 7b 0a 20 20 49 66 20 64  BQUERY} {.  If d
dc30: 65 66 69 6e 65 64 2c 20 73 75 70 70 6f 72 74 20  efined, support 
dc40: 66 6f 72 20 73 75 62 2d 73 65 6c 65 63 74 73 20  for sub-selects 
dc50: 61 6e 64 20 74 68 65 20 49 4e 28 29 20 6f 70 65  and the IN() ope
dc60: 72 61 74 6f 72 20 61 72 65 20 6f 6d 69 74 74 65  rator are omitte
dc70: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
dc80: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
dc90: 54 5f 54 43 4c 5f 56 41 52 49 41 42 4c 45 7d 20  T_TCL_VARIABLE} 
dca0: 7b 0a 20 20 49 66 20 74 68 69 73 20 6d 61 63 72  {.  If this macr
dcb0: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  o is defined, th
dcc0: 65 6e 20 74 68 65 20 73 70 65 63 69 61 6c 20 22  en the special "
dcd0: 24 3c 76 61 72 69 61 62 6c 65 2d 6e 61 6d 65 3e  $<variable-name>
dce0: 22 20 73 79 6e 74 61 78 0a 20 20 75 73 65 64 20  " syntax.  used 
dcf0: 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  to automatically
dd00: 20 62 69 6e 64 20 53 51 4c 20 76 61 72 69 61 62   bind SQL variab
dd10: 6c 65 73 20 74 6f 20 54 43 4c 20 76 61 72 69 61  les to TCL varia
dd20: 62 6c 65 73 20 69 73 20 6f 6d 69 74 74 65 64 2e  bles is omitted.
dd30: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
dd40: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
dd50: 54 45 4d 50 44 42 7d 20 7b 0a 20 20 54 68 69 73  TEMPDB} {.  This
dd60: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
dd70: 70 70 6f 72 74 20 66 6f 72 20 54 45 4d 50 20 6f  pport for TEMP o
dd80: 72 20 54 45 4d 50 4f 52 41 52 59 20 74 61 62 6c  r TEMPORARY tabl
dd90: 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  es..}..COMPILE_O
dda0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
ddb0: 49 54 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54 68  IT_TRACE} {.  Th
ddc0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
ddd0: 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20  support for the 
dde0: 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65  [sqlite3_profile
ddf0: 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
de00: 65 33 5f 74 72 61 63 65 28 29 5d 20 69 6e 74 65  e3_trace()] inte
de10: 72 66 61 63 65 73 20 61 6e 64 20 74 68 65 69 72  rfaces and their
de20: 20 61 73 73 6f 63 69 61 74 65 64 20 6c 6f 67 69   associated logi
de30: 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  c..}..COMPILE_OP
de40: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
de50: 54 5f 54 52 49 47 47 45 52 7d 20 7b 0a 20 20 44  T_TRIGGER} {.  D
de60: 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74  efining this opt
de70: 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72  ion omits suppor
de80: 74 20 66 6f 72 20 54 52 49 47 47 45 52 20 6f 62  t for TRIGGER ob
de90: 6a 65 63 74 73 2e 20 4e 65 69 74 68 65 72 20 74  jects. Neither t
dea0: 68 65 20 0a 20 20 5b 43 52 45 41 54 45 20 54 52  he .  [CREATE TR
deb0: 49 47 47 45 52 5d 20 6f 72 20 5b 44 52 4f 50 20  IGGER] or [DROP 
dec0: 54 52 49 47 47 45 52 5d 0a 20 20 63 6f 6d 6d 61  TRIGGER].  comma
ded0: 6e 64 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c  nds are availabl
dee0: 65 20 69 6e 20 74 68 69 73 20 63 61 73 65 2c 20  e in this case, 
def0: 61 6e 64 20 61 74 74 65 6d 70 74 69 6e 67 20 74  and attempting t
df00: 6f 20 65 78 65 63 75 74 65 0a 20 20 65 69 74 68  o execute.  eith
df10: 65 72 20 77 69 6c 6c 20 72 65 73 75 6c 74 20 69  er will result i
df20: 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e  n a parse error.
df30: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61  .  This option a
df40: 6c 73 6f 20 64 69 73 61 62 6c 65 73 20 65 6e 66  lso disables enf
df50: 6f 72 63 65 6d 65 6e 74 20 6f 66 20 5b 66 6f 72  orcement of [for
df60: 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61  eign key constra
df70: 69 6e 74 73 5d 2c 0a 20 20 73 69 6e 63 65 20 74  ints],.  since t
df80: 68 65 20 63 6f 64 65 20 74 68 61 74 20 69 6d 70  he code that imp
df90: 6c 65 6d 65 6e 74 73 20 74 72 69 67 67 65 72 73  lements triggers
dfa0: 20 61 6e 64 20 77 68 69 63 68 20 69 73 20 6f 6d   and which is om
dfb0: 69 74 74 65 64 20 62 79 20 74 68 69 73 0a 20 20  itted by this.  
dfc0: 6f 70 74 69 6f 6e 20 69 73 20 61 6c 73 6f 20 75  option is also u
dfd0: 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  sed to implement
dfe0: 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63   [foreign key ac
dff0: 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  tions]..}..COMPI
e000: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
e010: 45 5f 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f  E_OMIT_TRUNCATE_
e020: 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a  OPTIMIZATION} {.
e030: 20 20 41 20 64 65 66 61 75 6c 74 20 62 75 69 6c    A default buil
e040: 64 20 6f 66 20 53 51 4c 69 74 65 2c 20 69 66 20  d of SQLite, if 
e050: 61 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65  a [DELETE] state
e060: 6d 65 6e 74 20 68 61 73 20 6e 6f 20 57 48 45 52  ment has no WHER
e070: 45 20 63 6c 61 75 73 65 0a 20 20 61 6e 64 20 6f  E clause.  and o
e080: 70 65 72 61 74 65 73 20 6f 6e 20 61 20 74 61 62  perates on a tab
e090: 6c 65 20 77 69 74 68 20 6e 6f 20 74 72 69 67 67  le with no trigg
e0a0: 65 72 73 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61  ers, an optimiza
e0b0: 74 69 6f 6e 20 6f 63 63 75 72 73 20 74 68 61 74  tion occurs that
e0c0: 0a 20 20 63 61 75 73 65 73 20 74 68 65 20 44 45  .  causes the DE
e0d0: 4c 45 54 45 20 74 6f 20 6f 63 63 75 72 20 62 79  LETE to occur by
e0e0: 20 64 72 6f 70 70 69 6e 67 20 61 6e 64 20 72 65   dropping and re
e0f0: 63 72 65 61 74 69 6e 67 20 74 68 65 20 74 61 62  creating the tab
e100: 6c 65 2e 20 20 0a 20 20 44 72 6f 70 70 69 6e 67  le.  .  Dropping
e110: 20 61 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20   and recreating 
e120: 61 20 74 61 62 6c 65 20 69 73 20 75 73 75 61 6c  a table is usual
e130: 6c 79 20 6d 75 63 68 20 66 61 73 74 65 72 20 74  ly much faster t
e140: 68 61 6e 20 64 65 6c 65 74 69 6e 67 0a 20 20 74  han deleting.  t
e150: 68 65 20 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74  he table content
e160: 20 72 6f 77 20 62 79 20 72 6f 77 2e 20 20 54 68   row by row.  Th
e170: 69 73 20 69 73 20 74 68 65 20 22 74 72 75 6e 63  is is the "trunc
e180: 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  ate optimization
e190: 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  "..}..COMPILE_OP
e1a0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
e1b0: 54 5f 55 54 46 31 36 7d 20 7b 0a 20 20 54 68 69  T_UTF16} {.  Thi
e1c0: 73 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20  s macro is used 
e1d0: 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20  to omit support 
e1e0: 66 6f 72 20 55 54 46 31 36 20 74 65 78 74 20 65  for UTF16 text e
e1f0: 6e 63 6f 64 69 6e 67 2e 20 57 68 65 6e 20 74 68  ncoding. When th
e200: 69 73 20 69 73 0a 20 20 64 65 66 69 6e 65 64 20  is is.  defined 
e210: 61 6c 6c 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  all API function
e220: 73 20 74 68 61 74 20 72 65 74 75 72 6e 20 6f 72  s that return or
e230: 20 61 63 63 65 70 74 20 55 54 46 31 36 20 65 6e   accept UTF16 en
e240: 63 6f 64 65 64 20 74 65 78 74 20 61 72 65 0a 20  coded text are. 
e250: 20 75 6e 61 76 61 69 6c 61 62 6c 65 2e 20 54 68   unavailable. Th
e260: 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 63 61  ese functions ca
e270: 6e 20 62 65 20 69 64 65 6e 74 69 66 69 65 64 20  n be identified 
e280: 62 79 20 74 68 65 20 66 61 63 74 20 74 68 61 74  by the fact that
e290: 20 74 68 65 79 20 65 6e 64 0a 20 20 77 69 74 68   they end.  with
e2a0: 20 27 31 36 27 2c 20 66 6f 72 20 65 78 61 6d 70   '16', for examp
e2b0: 6c 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  le [sqlite3_prep
e2c0: 61 72 65 31 36 28 29 5d 2c 20 5b 73 71 6c 69 74  are16()], [sqlit
e2d0: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36  e3_column_text16
e2e0: 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
e2f0: 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 29  e3_bind_text16()
e300: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
e310: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
e320: 54 5f 56 41 43 55 55 4d 7d 20 7b 0a 20 20 57 68  T_VACUUM} {.  Wh
e330: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
e340: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b  s defined, the [
e350: 56 41 43 55 55 4d 5d 0a 20 20 63 6f 6d 6d 61 6e  VACUUM].  comman
e360: 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65  d is not include
e370: 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79  d in the library
e380: 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61 20  ..  Executing a 
e390: 5b 56 41 43 55 55 4d 5d 20 73 74 61 74 65 6d 65  [VACUUM] stateme
e3a0: 6e 74 20 63 61 75 73 65 73 20 0a 20 20 61 20 70  nt causes .  a p
e3b0: 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43  arse error..}..C
e3c0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
e3d0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 45 57 7d  QLITE_OMIT_VIEW}
e3e0: 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
e3f0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
e400: 73 75 70 70 6f 72 74 20 66 6f 72 20 56 49 45 57  support for VIEW
e410: 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74 68 65   objects. Neithe
e420: 72 20 74 68 65 20 0a 20 20 5b 43 52 45 41 54 45  r the .  [CREATE
e430: 20 56 49 45 57 5d 20 6e 6f 72 20 74 68 65 20 5b   VIEW] nor the [
e440: 44 52 4f 50 20 56 49 45 57 5d 0a 20 20 63 6f 6d  DROP VIEW].  com
e450: 6d 61 6e 64 73 20 61 72 65 20 61 76 61 69 6c 61  mands are availa
e460: 62 6c 65 20 69 6e 20 74 68 69 73 20 63 61 73 65  ble in this case
e470: 2c 20 61 6e 64 0a 20 20 61 74 74 65 6d 70 74 69  , and.  attempti
e480: 6e 67 20 74 6f 20 65 78 65 63 75 74 65 20 65 69  ng to execute ei
e490: 74 68 65 72 20 77 69 6c 6c 20 72 65 73 75 6c 74  ther will result
e4a0: 20 69 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f   in a parse erro
e4b0: 72 2e 0a 0a 20 20 57 41 52 4e 49 4e 47 3a 20 49  r...  WARNING: I
e4c0: 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20  f this macro is 
e4d0: 64 65 66 69 6e 65 64 2c 20 69 74 20 77 69 6c 6c  defined, it will
e4e0: 20 6e 6f 74 20 62 65 20 70 6f 73 73 69 62 6c 65   not be possible
e4f0: 20 74 6f 20 6f 70 65 6e 20 61 20 64 61 74 61 62   to open a datab
e500: 61 73 65 0a 20 20 66 6f 72 20 77 68 69 63 68 20  ase.  for which 
e510: 74 68 65 20 73 63 68 65 6d 61 20 63 6f 6e 74 61  the schema conta
e520: 69 6e 73 20 56 49 45 57 20 6f 62 6a 65 63 74 73  ins VIEW objects
e530: 2e 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  . .}..COMPILE_OP
e540: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
e550: 54 5f 56 49 52 54 55 41 4c 54 41 42 4c 45 7d 20  T_VIRTUALTABLE} 
e560: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
e570: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
e580: 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76  r the [sqlite3_v
e590: 74 61 62 20 7c 20 56 69 72 74 75 61 6c 20 54 61  tab | Virtual Ta
e5a0: 62 6c 65 5d 0a 20 20 6d 65 63 68 61 6e 69 73 6d  ble].  mechanism
e5b0: 20 69 6e 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43   in SQLite..}..C
e5c0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
e5d0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 41 4c 7d 20  QLITE_OMIT_WAL} 
e5e0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
e5f0: 6f 6d 69 74 73 20 74 68 65 20 22 5b 77 72 69 74  omits the "[writ
e600: 65 2d 61 68 65 61 64 20 6c 6f 67 5d 22 20 28 61  e-ahead log]" (a
e610: 2e 6b 2e 61 2e 20 22 5b 57 41 4c 5d 22 29 20 63  .k.a. "[WAL]") c
e620: 61 70 61 62 69 6c 69 74 79 2e 0a 7d 0a 0a 43 4f  apability..}..CO
e630: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
e640: 4c 49 54 45 5f 4f 4d 49 54 5f 57 53 44 7d 20 7b  LITE_OMIT_WSD} {
e650: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 62  .  This option b
e660: 75 69 6c 64 73 20 61 20 76 65 72 73 69 6f 6e 20  uilds a version 
e670: 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  of the SQLite li
e680: 62 72 61 72 79 20 74 68 61 74 20 63 6f 6e 74 61  brary that conta
e690: 69 6e 73 20 6e 6f 0a 20 20 57 72 69 74 61 62 6c  ins no.  Writabl
e6a0: 65 20 53 74 61 74 69 63 20 44 61 74 61 20 28 57  e Static Data (W
e6b0: 53 44 29 2e 20 20 57 53 44 20 69 73 20 67 6c 6f  SD).  WSD is glo
e6c0: 62 61 6c 20 76 61 72 69 61 62 6c 65 73 20 61 6e  bal variables an
e6d0: 64 2f 6f 72 20 73 74 61 74 69 63 0a 20 20 76 61  d/or static.  va
e6e0: 72 69 61 62 6c 65 73 2e 20 20 53 6f 6d 65 20 70  riables.  Some p
e6f0: 6c 61 74 66 6f 72 6d 73 20 64 6f 20 6e 6f 74 20  latforms do not 
e700: 73 75 70 70 6f 72 74 20 57 53 44 2c 20 61 6e 64  support WSD, and
e710: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
e720: 6e 65 63 65 73 73 61 72 79 0a 20 20 69 6e 20 6f  necessary.  in o
e730: 72 64 65 72 20 66 6f 72 20 53 51 4c 69 74 65 20  rder for SQLite 
e740: 74 6f 20 77 6f 72 6b 20 74 68 6f 73 65 20 70 6c  to work those pl
e750: 61 74 66 6f 72 6d 73 2e 20 20 0a 0a 20 20 55 6e  atforms.  ..  Un
e760: 6c 69 6b 65 20 6f 74 68 65 72 20 4f 4d 49 54 20  like other OMIT 
e770: 6f 70 74 69 6f 6e 73 20 77 68 69 63 68 20 6d 61  options which ma
e780: 6b 65 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  ke the SQLite li
e790: 62 72 61 72 79 20 73 6d 61 6c 6c 65 72 2c 0a 20  brary smaller,. 
e7a0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 63 74   this option act
e7b0: 75 61 6c 6c 79 20 69 6e 63 72 65 61 73 65 73 20  ually increases 
e7c0: 74 68 65 20 73 69 7a 65 20 6f 66 20 53 51 4c 69  the size of SQLi
e7d0: 74 65 20 61 6e 64 20 6d 61 6b 65 73 20 69 74 20  te and makes it 
e7e0: 72 75 6e 0a 20 20 61 20 6c 69 74 74 6c 65 20 73  run.  a little s
e7f0: 6c 6f 77 65 72 2e 20 20 4f 6e 6c 79 20 75 73 65  lower.  Only use
e800: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 66 20   this option if 
e810: 53 51 4c 69 74 65 20 69 73 20 62 65 69 6e 67 20  SQLite is being 
e820: 62 75 69 6c 74 20 66 6f 72 20 61 6e 0a 20 20 65  built for an.  e
e830: 6d 62 65 64 64 65 64 20 74 61 72 67 65 74 20 74  mbedded target t
e840: 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70  hat does not sup
e850: 70 6f 72 74 20 57 53 44 2e 0a 7d 0a 0a 43 4f 4d  port WSD..}..COM
e860: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
e870: 49 54 45 5f 4f 4d 49 54 5f 58 46 45 52 5f 4f 50  ITE_OMIT_XFER_OP
e880: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
e890: 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74  on omits support
e8a0: 20 66 6f 72 20 6f 70 74 69 6d 69 7a 61 74 69 6f   for optimizatio
e8b0: 6e 73 20 74 68 61 74 20 68 65 6c 70 20 73 74 61  ns that help sta
e8c0: 74 65 6d 65 6e 74 73 0a 20 20 6f 66 20 74 68 65  tements.  of the
e8d0: 20 66 6f 72 6d 20 22 49 4e 53 45 52 54 20 49 4e   form "INSERT IN
e8e0: 54 4f 20 2e 2e 2e 20 53 45 4c 45 43 54 20 2e 2e  TO ... SELECT ..
e8f0: 2e 22 20 72 75 6e 20 66 61 73 74 65 72 2e 0a 7d  ." run faster..}
e900: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
e910: 20 7b 53 51 4c 49 54 45 5f 5a 45 52 4f 5f 4d 41   {SQLITE_ZERO_MA
e920: 4c 4c 4f 43 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LLOC} {.  This o
e930: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 62 6f 74 68  ption omits both
e940: 20 74 68 65 20 5b 64 65 66 61 75 6c 74 20 6d 65   the [default me
e950: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20  mory allocator] 
e960: 61 6e 64 20 74 68 65 0a 20 20 5b 64 65 62 75 67  and the.  [debug
e970: 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ging memory allo
e980: 63 61 74 6f 72 5d 20 66 72 6f 6d 20 74 68 65 20  cator] from the 
e990: 62 75 69 6c 64 20 61 6e 64 20 73 75 62 73 74 69  build and substi
e9a0: 74 75 74 65 73 20 61 20 73 74 75 62 0a 20 20 6d  tutes a stub.  m
e9b0: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
e9c0: 74 68 61 74 20 61 6c 77 61 79 73 20 66 61 69 6c  that always fail
e9d0: 73 2e 20 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  s.  SQLite will 
e9e0: 6e 6f 74 20 72 75 6e 20 77 69 74 68 20 74 68 69  not run with thi
e9f0: 73 0a 20 20 73 74 75 62 20 6d 65 6d 6f 72 79 20  s.  stub memory 
ea00: 61 6c 6c 6f 63 61 74 6f 72 20 73 69 6e 63 65 20  allocator since 
ea10: 69 74 20 77 69 6c 6c 20 62 65 20 75 6e 61 62 6c  it will be unabl
ea20: 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 6d 65  e to allocate me
ea30: 6d 6f 72 79 2e 20 20 42 75 74 0a 20 20 74 68 69  mory.  But.  thi
ea40: 73 20 73 74 75 62 20 63 61 6e 20 62 65 20 72 65  s stub can be re
ea50: 70 6c 61 63 65 64 20 61 74 20 73 74 61 72 74 2d  placed at start-
ea60: 74 69 6d 65 20 75 73 69 6e 67 0a 20 20 5b 73 71  time using.  [sq
ea70: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53  lite3_config]([S
ea80: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c  QLITE_CONFIG_MAL
ea90: 4c 4f 43 5d 2c 2e 2e 2e 29 20 6f 72 0a 20 20 5b  LOC],...) or.  [
eaa0: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28  sqlite3_config](
eab0: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48  [SQLITE_CONFIG_H
eac0: 45 41 50 5d 2c 2e 2e 2e 29 2e 0a 20 20 53 6f 20  EAP],...)..  So 
ead0: 74 68 65 20 6e 65 74 20 65 66 66 65 63 74 20 6f  the net effect o
eae0: 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  f this compile-t
eaf0: 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 74 68  ime option is th
eb00: 61 74 20 69 74 20 61 6c 6c 6f 77 73 20 53 51 4c  at it allows SQL
eb10: 69 74 65 0a 20 20 74 6f 20 62 65 20 63 6f 6d 70  ite.  to be comp
eb20: 69 6c 65 64 20 61 6e 64 20 6c 69 6e 6b 65 64 20  iled and linked 
eb30: 61 67 61 69 6e 73 74 20 61 20 73 79 73 74 65 6d  against a system
eb40: 20 6c 69 62 72 61 72 79 20 74 68 61 74 20 64 6f   library that do
eb50: 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 0a 20  es not support. 
eb60: 20 6d 61 6c 6c 6f 63 28 29 2c 20 66 72 65 65 28   malloc(), free(
eb70: 29 2c 20 61 6e 64 2f 6f 72 20 72 65 61 6c 6c 6f  ), and/or reallo
eb80: 63 28 29 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c  c()..}..</tcl>.<
eb90: 61 20 6e 61 6d 65 3d 22 64 65 62 75 67 6f 70 74  a name="debugopt
eba0: 69 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31  ions"></a>.<h2>1
ebb0: 2e 38 20 41 6e 61 6c 79 73 69 73 20 61 6e 64 20  .8 Analysis and 
ebc0: 44 65 62 75 67 67 69 6e 67 20 4f 70 74 69 6f 6e  Debugging Option
ebd0: 73 3c 2f 68 32 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f  s</h2>.<tcl>..CO
ebe0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
ebf0: 4c 49 54 45 5f 44 45 42 55 47 7d 20 7b 0a 20 20  LITE_DEBUG} {.  
ec00: 54 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63  The SQLite sourc
ec10: 65 20 63 6f 64 65 20 63 6f 6e 74 61 69 6e 73 20  e code contains 
ec20: 6c 69 74 65 72 61 6c 6c 79 20 74 68 6f 75 73 61  literally thousa
ec30: 6e 64 73 20 6f 66 20 61 73 73 65 72 74 28 29 20  nds of assert() 
ec40: 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 75 73 65  statements.  use
ec50: 64 20 74 6f 20 76 65 72 69 66 79 20 69 6e 74 65  d to verify inte
ec60: 72 6e 61 6c 20 61 73 73 75 6d 70 74 69 6f 6e 73  rnal assumptions
ec70: 20 61 6e 64 20 73 75 62 72 6f 75 74 69 6e 65 20   and subroutine 
ec80: 70 72 65 63 6f 6e 64 69 74 69 6f 6e 73 20 61 6e  preconditions an
ec90: 64 0a 20 20 70 6f 73 74 63 6f 6e 64 69 74 69 6f  d.  postconditio
eca0: 6e 73 2e 20 20 54 68 65 73 65 20 61 73 73 65 72  ns.  These asser
ecb0: 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73 20 61  t() statements a
ecc0: 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 74 75 72 6e  re normally turn
ecd0: 65 64 20 6f 66 66 0a 20 20 28 74 68 65 79 20 67  ed off.  (they g
ece0: 65 6e 65 72 61 74 65 20 6e 6f 20 63 6f 64 65 29  enerate no code)
ecf0: 20 73 69 6e 63 65 20 74 75 72 6e 69 6e 67 20 74   since turning t
ed00: 68 65 6d 20 6f 6e 20 6d 61 6b 65 73 20 53 51 4c  hem on makes SQL
ed10: 69 74 65 20 72 75 6e 20 61 70 70 72 6f 78 69 6d  ite run approxim
ed20: 61 74 65 6c 79 0a 20 20 74 68 72 65 65 20 74 69  ately.  three ti
ed30: 6d 65 73 20 73 6c 6f 77 65 72 2e 20 20 42 75 74  mes slower.  But
ed40: 20 66 6f 72 20 74 65 73 74 69 6e 67 20 61 6e 64   for testing and
ed50: 20 61 6e 61 6c 79 73 69 73 2c 20 69 74 20 69 73   analysis, it is
ed60: 20 75 73 65 66 75 6c 20 74 6f 20 74 75 72 6e 0a   useful to turn.
ed70: 20 20 74 68 65 20 61 73 73 65 72 74 28 29 20 73    the assert() s
ed80: 74 61 74 65 6d 65 6e 74 73 20 6f 6e 2e 20 20 54  tatements on.  T
ed90: 68 65 20 53 51 4c 49 54 45 5f 44 45 42 55 47 20  he SQLITE_DEBUG 
eda0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
edb0: 69 6f 6e 20 64 6f 65 73 20 74 68 69 73 2e 0a 20  ion does this.. 
edc0: 20 3c 70 3e 53 51 4c 49 54 45 5f 44 45 42 55 47   <p>SQLITE_DEBUG
edd0: 20 61 6c 73 6f 20 65 6e 61 62 6c 65 73 20 73 6f   also enables so
ede0: 6d 65 20 6f 74 68 65 72 20 64 65 62 75 67 67 69  me other debuggi
edf0: 6e 67 20 66 65 61 74 75 72 65 73 2c 20 73 75 63  ng features, suc
ee00: 68 20 61 73 0a 20 20 73 70 65 63 69 61 6c 20 5b  h as.  special [
ee10: 50 52 41 47 4d 41 5d 20 73 74 61 74 65 6d 65 6e  PRAGMA] statemen
ee20: 74 73 20 74 68 61 74 20 74 75 72 6e 20 6f 6e 20  ts that turn on 
ee30: 74 72 61 63 69 6e 67 20 61 6e 64 20 6c 69 73 74  tracing and list
ee40: 69 6e 67 20 66 65 61 74 75 72 65 73 0a 20 20 75  ing features.  u
ee50: 73 65 64 20 66 6f 72 20 74 72 6f 75 62 6c 65 73  sed for troubles
ee60: 68 6f 6f 74 69 6e 67 20 61 6e 64 20 61 6e 61 6c  hooting and anal
ee70: 79 73 69 73 20 6f 66 20 74 68 65 20 5b 56 44 42  ysis of the [VDB
ee80: 45 5d 20 61 6e 64 20 63 6f 64 65 20 67 65 6e 65  E] and code gene
ee90: 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  rator..}..COMPIL
eea0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
eeb0: 5f 4d 45 4d 44 45 42 55 47 7d 20 7b 0a 20 20 54  _MEMDEBUG} {.  T
eec0: 68 65 20 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42  he SQLITE_MEMDEB
eed0: 55 47 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  UG option causes
eee0: 20 61 6e 20 69 6e 73 74 72 75 6d 65 6e 74 65 64   an instrumented
eef0: 20 0a 20 20 5b 64 65 62 75 67 67 69 6e 67 20 6d   .  [debugging m
ef00: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d  emory allocator]
ef10: 0a 20 20 74 6f 20 62 65 20 75 73 65 64 20 61 73  .  to be used as
ef20: 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 65 6d   the default mem
ef30: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 77 69  ory allocator wi
ef40: 74 68 69 6e 20 53 51 4c 69 74 65 2e 20 20 54 68  thin SQLite.  Th
ef50: 65 0a 20 20 69 6e 73 74 72 75 6d 65 6e 74 65 64  e.  instrumented
ef60: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
ef70: 72 20 63 68 65 63 6b 73 20 66 6f 72 20 6d 69 73  r checks for mis
ef80: 75 73 65 20 6f 66 20 64 79 6e 61 6d 69 63 61 6c  use of dynamical
ef90: 6c 79 20 61 6c 6c 6f 63 61 74 65 64 0a 20 20 6d  ly allocated.  m
efa0: 65 6d 6f 72 79 2e 20 20 45 78 61 6d 70 6c 65 73  emory.  Examples
efb0: 20 6f 66 20 6d 69 73 75 73 65 20 69 6e 63 6c 75   of misuse inclu
efc0: 64 65 20 75 73 69 6e 67 20 6d 65 6d 6f 72 79 20  de using memory 
efd0: 61 66 74 65 72 20 69 74 20 69 73 20 66 72 65 65  after it is free
efe0: 64 2c 0a 20 20 77 72 69 74 69 6e 67 20 6f 66 66  d,.  writing off
eff0: 20 74 68 65 20 65 6e 64 73 20 6f 66 20 61 20 6d   the ends of a m
f000: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
f010: 2c 20 66 72 65 65 69 6e 67 20 6d 65 6d 6f 72 79  , freeing memory
f020: 20 6e 6f 74 20 70 72 65 76 69 6f 75 73 6c 79 0a   not previously.
f030: 20 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20    obtained from 
f040: 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  the memory alloc
f050: 61 74 6f 72 2c 20 6f 72 20 66 61 69 6c 69 6e 67  ator, or failing
f060: 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 6e   to initialize n
f070: 65 77 6c 79 0a 20 20 61 6c 6c 6f 63 61 74 65 64  ewly.  allocated
f080: 20 6d 65 6d 6f 72 79 2e 0a 7d 0a 0a 3c 2f 74 63   memory..}..</tc
f090: 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 77 69 6e 33  l>.<a name="win3
f0a0: 32 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c  2options"></a>.<
f0b0: 68 32 3e 31 2e 39 20 57 69 6e 64 6f 77 73 2d 53  h2>1.9 Windows-S
f0c0: 70 65 63 69 66 69 63 20 4f 70 74 69 6f 6e 73 3c  pecific Options<
f0d0: 2f 68 32 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d 50  /h2>.<tcl>..COMP
f0e0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
f0f0: 54 45 5f 57 49 4e 33 32 5f 48 45 41 50 5f 43 52  TE_WIN32_HEAP_CR
f100: 45 41 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  EATE} {.  This o
f110: 70 74 69 6f 6e 20 66 6f 72 63 65 73 20 74 68 65  ption forces the
f120: 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 6d 65   Win32 native me
f130: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20  mory allocator, 
f140: 77 68 65 6e 20 65 6e 61 62 6c 65 64 2c 20 74 6f  when enabled, to
f150: 0a 20 20 63 72 65 61 74 65 20 61 20 70 72 69 76  .  create a priv
f160: 61 74 65 20 68 65 61 70 20 74 6f 20 68 6f 6c 64  ate heap to hold
f170: 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f   all memory allo
f180: 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50  cations..}..COMP
f190: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
f1a0: 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 5f  TE_WIN32_MALLOC_
f1b0: 56 41 4c 49 44 41 54 45 7d 20 7b 0a 20 20 54 68  VALIDATE} {.  Th
f1c0: 69 73 20 6f 70 74 69 6f 6e 20 66 6f 72 63 65 73  is option forces
f1d0: 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76   the Win32 nativ
f1e0: 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  e memory allocat
f1f0: 6f 72 2c 20 77 68 65 6e 20 65 6e 61 62 6c 65 64  or, when enabled
f200: 2c 20 74 6f 0a 20 20 6d 61 6b 65 20 73 74 72 61  , to.  make stra
f210: 74 65 67 69 63 20 63 61 6c 6c 73 20 69 6e 74 6f  tegic calls into
f220: 20 74 68 65 20 48 65 61 70 56 61 6c 69 64 61 74   the HeapValidat
f230: 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 66 20  e() function if 
f240: 61 73 73 65 72 74 28 29 20 69 73 20 61 6c 73 6f  assert() is also
f250: 0a 20 20 65 6e 61 62 6c 65 64 2e 0a 7d 0a 0a 3c  .  enabled..}..<
f260: 2f 74 63 6c 3e 0a                                /tcl>.