Documentation Source Text

Hex Artifact Content
Login

Artifact 9fe05252646116c0743ab8364463e2c223a44ce8:


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 46 54 53 33  ION {SQLITE_FTS3
29d0: 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48 3d  _MAX_EXPR_DEPTH=
29e0: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  <i>N</i>} {.  Th
29f0: 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68  is macro sets th
2a00: 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74 68 20  e maximum depth 
2a10: 6f 66 20 74 68 65 20 73 65 61 72 63 68 20 74 72  of the search tr
2a20: 65 65 20 74 68 61 74 20 63 6f 72 72 65 73 70 6f  ee that correspo
2a30: 6e 64 73 20 74 6f 0a 20 20 74 68 65 20 72 69 67  nds to.  the rig
2a40: 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20  ht-hand side of 
2a50: 74 68 65 20 4d 41 54 43 48 20 6f 70 65 72 61 74  the MATCH operat
2a60: 6f 72 20 69 6e 20 61 6e 20 5b 46 54 53 33 5d 20  or in an [FTS3] 
2a70: 6f 72 20 5b 46 54 53 34 5d 20 66 75 6c 6c 2d 74  or [FTS4] full-t
2a80: 65 78 74 0a 20 20 69 6e 64 65 78 2e 20 20 54 68  ext.  index.  Th
2a90: 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72  e full-text sear
2aa0: 63 68 20 75 73 65 73 20 61 20 72 65 63 75 72 73  ch uses a recurs
2ab0: 69 76 65 20 61 6c 67 6f 72 69 74 68 6d 2c 20 73  ive algorithm, s
2ac0: 6f 20 74 68 65 20 64 65 70 74 68 20 6f 66 0a 20  o the depth of. 
2ad0: 20 74 68 65 20 74 72 65 65 20 69 73 20 6c 69 6d   the tree is lim
2ae0: 69 74 65 64 20 74 6f 20 70 72 65 76 65 6e 74 20  ited to prevent 
2af0: 75 73 69 6e 67 20 74 6f 6f 20 6d 75 63 68 20 73  using too much s
2b00: 74 61 63 6b 20 73 70 61 63 65 2e 20 20 54 68 65  tack space.  The
2b10: 20 64 65 66 61 75 6c 74 0a 20 20 6c 69 6d 69 74   default.  limit
2b20: 20 69 73 20 31 32 2e 20 20 54 68 69 73 20 6c 69   is 12.  This li
2b30: 6d 69 74 20 69 73 20 73 75 66 66 69 63 69 65 6e  mit is sufficien
2b40: 74 20 66 6f 72 20 75 70 20 74 6f 20 34 30 39 35  t for up to 4095
2b50: 20 73 65 61 72 63 68 20 74 65 72 6d 73 20 6f 6e   search terms on
2b60: 20 74 68 65 0a 20 20 72 69 67 68 74 2d 68 61 6e   the.  right-han
2b70: 64 20 73 69 64 65 20 6f 66 20 74 68 65 20 4d 41  d side of the MA
2b80: 54 43 48 20 6f 70 65 72 61 74 6f 72 20 61 6e 64  TCH operator and
2b90: 20 69 74 20 68 6f 6c 64 73 20 73 74 61 63 6b 20   it holds stack 
2ba0: 73 70 61 63 65 20 75 73 61 67 65 20 74 6f 20 0a  space usage to .
2bb0: 20 20 6c 65 73 73 20 74 68 61 6e 20 32 30 30 30    less than 2000
2bc0: 20 62 79 74 65 73 2e 0a 20 20 3c 70 3e 0a 20 20   bytes..  <p>.  
2bd0: 46 6f 72 20 6f 72 64 69 6e 61 72 79 20 46 54 53  For ordinary FTS
2be0: 33 2f 46 54 53 34 20 71 75 65 72 69 65 73 2c 20  3/FTS4 queries, 
2bf0: 74 68 65 20 73 65 61 72 63 68 20 74 72 65 65 20  the search tree 
2c00: 64 65 70 74 68 20 69 73 20 61 70 70 72 6f 78 69  depth is approxi
2c10: 6d 61 74 65 6c 79 0a 20 20 74 68 65 20 62 61 73  mately.  the bas
2c20: 65 2d 32 20 6c 6f 67 61 72 69 74 68 6d 20 6f 66  e-2 logarithm of
2c30: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 74   the number of t
2c40: 65 72 6d 73 20 69 6e 20 74 68 65 20 72 69 67 68  erms in the righ
2c50: 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20 74  t-hand side of t
2c60: 68 65 0a 20 20 4d 41 54 43 48 20 6f 70 65 72 61  he.  MATCH opera
2c70: 74 6f 72 2e 20 20 48 6f 77 65 76 65 72 2c 20 66  tor.  However, f
2c80: 6f 72 20 5b 70 68 72 61 73 65 20 71 75 65 72 69  or [phrase queri
2c90: 65 73 5d 20 61 6e 64 20 5b 4e 45 41 52 20 71 75  es] and [NEAR qu
2ca0: 65 72 69 65 73 5d 20 74 68 65 0a 20 20 73 65 61  eries] the.  sea
2cb0: 72 63 68 20 74 72 65 65 20 64 65 70 74 68 20 69  rch tree depth i
2cc0: 73 20 6c 69 6e 65 61 72 20 69 6e 20 74 68 65 20  s linear in the 
2cd0: 6e 75 6d 62 65 72 20 6f 66 20 72 69 67 68 74 2d  number of right-
2ce0: 68 61 6e 64 20 73 69 64 65 20 74 65 72 6d 73 2e  hand side terms.
2cf0: 0a 20 20 53 6f 20 74 68 65 20 64 65 66 61 75 6c  .  So the defaul
2d00: 74 20 64 65 70 74 68 20 6c 69 6d 69 74 20 6f 66  t depth limit of
2d10: 20 31 32 20 69 73 20 73 75 66 66 69 63 69 65 6e   12 is sufficien
2d20: 74 20 66 6f 72 20 75 70 20 74 6f 20 34 30 39 35  t for up to 4095
2d30: 20 6f 72 64 69 6e 61 72 79 0a 20 20 74 65 72 6d   ordinary.  term
2d40: 73 20 6f 6e 20 61 20 4d 41 54 43 48 2c 20 69 74  s on a MATCH, it
2d50: 20 69 73 20 6f 6e 6c 79 20 73 75 66 66 69 63 69   is only suffici
2d60: 65 6e 74 20 66 6f 72 20 31 31 20 6f 72 20 31 32  ent for 11 or 12
2d70: 20 70 68 72 61 73 65 20 6f 72 20 4e 45 41 52 0a   phrase or NEAR.
2d80: 20 20 74 65 72 6d 73 2e 20 20 45 76 65 6e 20 73    terms.  Even s
2d90: 6f 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 69  o, the default i
2da0: 73 20 6d 6f 72 65 20 74 68 61 6e 20 65 6e 6f 75  s more than enou
2db0: 67 68 20 66 6f 72 20 6d 6f 73 74 20 61 70 70 6c  gh for most appl
2dc0: 69 63 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50  ication..}..COMP
2dd0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
2de0: 54 45 5f 4c 49 4b 45 5f 44 4f 45 53 4e 54 5f 4d  TE_LIKE_DOESNT_M
2df0: 41 54 43 48 5f 42 4c 4f 42 53 7d 20 7b 0a 20 20  ATCH_BLOBS} {.  
2e00: 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  This compile-tim
2e10: 65 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  e option causes 
2e20: 74 68 65 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61  the [LIKE] opera
2e30: 74 6f 72 20 74 6f 20 61 6c 77 61 79 73 20 72 65  tor to always re
2e40: 74 75 72 6e 20 0a 20 20 46 61 6c 73 65 20 69 66  turn .  False if
2e50: 20 65 69 74 68 65 72 20 6f 70 65 72 61 6e 64 20   either operand 
2e60: 69 73 20 61 20 42 4c 4f 42 2e 20 20 54 68 65 20  is a BLOB.  The 
2e70: 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72  default behavior
2e80: 20 6f 66 20 5b 4c 49 4b 45 5d 20 0a 20 20 69 73   of [LIKE] .  is
2e90: 20 74 68 61 74 20 42 4c 4f 42 20 6f 70 65 72 61   that BLOB opera
2ea0: 6e 64 73 20 61 72 65 20 63 61 73 74 20 74 6f 20  nds are cast to 
2eb0: 54 45 58 54 20 62 65 66 6f 72 65 20 74 68 65 20  TEXT before the 
2ec0: 63 6f 6d 70 61 72 69 73 6f 6e 20 69 73 20 64 6f  comparison is do
2ed0: 6e 65 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 69 73  ne..  <p>.  This
2ee0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
2ef0: 74 69 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74  tion makes SQLit
2f00: 65 20 72 75 6e 20 6d 6f 72 65 20 65 66 66 69 63  e run more effic
2f10: 69 65 6e 74 6c 79 20 77 68 65 6e 20 70 72 6f 63  iently when proc
2f20: 65 73 73 69 6e 67 0a 20 20 71 75 65 72 69 65 73  essing.  queries
2f30: 20 74 68 61 74 20 75 73 65 20 74 68 65 20 5b 4c   that use the [L
2f40: 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 2c 20 61  IKE] operator, a
2f50: 74 20 74 68 65 20 65 78 70 65 6e 73 65 20 6f 66  t the expense of
2f60: 20 62 72 65 61 6b 69 6e 67 20 62 61 63 6b 77 61   breaking backwa
2f70: 72 64 73 0a 20 20 63 6f 6d 70 61 74 69 62 69 6c  rds.  compatibil
2f80: 69 74 79 2e 20 20 48 6f 77 65 76 65 72 2c 20 74  ity.  However, t
2f90: 68 65 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d  he backwards com
2fa0: 70 61 74 69 62 69 6c 69 74 79 20 62 72 65 61 6b  patibility break
2fb0: 20 6d 61 79 20 62 65 20 6f 6e 6c 79 0a 20 20 61   may be only.  a
2fc0: 20 74 65 63 68 6e 69 63 61 6c 69 74 79 2e 20 20   technicality.  
2fd0: 54 68 65 72 65 20 77 61 73 20 61 20 6c 6f 6e 67  There was a long
2fe0: 2d 73 74 61 6e 64 69 6e 67 20 62 75 67 20 69 6e  -standing bug in
2ff0: 20 74 68 65 20 5b 4c 49 4b 45 5d 20 70 72 6f 63   the [LIKE] proc
3000: 65 73 73 69 6e 67 20 6c 6f 67 69 63 0a 20 20 28  essing logic.  (
3010: 73 65 65 20 5b 68 74 74 70 73 3a 2f 2f 77 77 77  see [https://www
3020: 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 73 72 63 2f  .sqlite.org/src/
3030: 69 6e 66 6f 2f 30 35 66 34 33 62 65 38 66 64 64  info/05f43be8fdd
3040: 61 39 66 5d 29 20 74 68 61 74 20 63 61 75 73 65  a9f]) that cause
3050: 64 20 69 74 20 74 6f 0a 20 20 6d 69 73 62 65 68  d it to.  misbeh
3060: 61 76 69 6f 72 20 66 6f 72 20 42 4c 4f 42 20 6f  avior for BLOB o
3070: 70 65 72 61 6e 64 73 20 61 6e 64 20 6e 6f 62 6f  perands and nobo
3080: 64 79 20 6f 62 73 65 72 76 65 64 20 74 68 61 74  dy observed that
3090: 20 62 75 67 20 69 6e 20 6e 65 61 72 6c 79 0a 20   bug in nearly. 
30a0: 20 31 30 20 79 65 61 72 73 20 6f 66 20 61 63 74   10 years of act
30b0: 69 76 65 20 75 73 65 2e 20 20 53 6f 20 66 6f 72  ive use.  So for
30c0: 20 6d 6f 72 65 20 75 73 65 72 73 2c 20 69 74 20   more users, it 
30d0: 69 73 20 70 72 6f 62 61 62 6c 79 20 73 61 66 65  is probably safe
30e0: 20 74 6f 0a 20 20 65 6e 61 62 6c 65 20 74 68 69   to.  enable thi
30f0: 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
3100: 70 74 69 6f 6e 20 61 6e 64 20 74 68 65 72 65 62  ption and thereb
3110: 79 20 73 61 76 65 20 61 20 6c 69 74 74 6c 65 20  y save a little 
3120: 43 50 55 20 74 69 6d 65 0a 20 20 6f 6e 20 4c 49  CPU time.  on LI
3130: 4b 45 20 71 75 65 72 69 65 73 2e 0a 20 20 3c 70  KE queries..  <p
3140: 3e 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65  >.  This compile
3150: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 61 66 66  -time option aff
3160: 65 63 74 73 20 74 68 65 20 53 51 4c 20 5b 4c 49  ects the SQL [LI
3170: 4b 45 5d 20 6f 70 65 72 61 74 6f 72 20 6f 6e 6c  KE] operator onl
3180: 79 20 61 6e 64 20 68 61 73 0a 20 20 6e 6f 20 69  y and has.  no i
3190: 6d 70 61 63 74 20 6f 6e 20 74 68 65 20 5b 73 71  mpact on the [sq
31a0: 6c 69 74 65 33 5f 73 74 72 6c 69 6b 65 28 29 5d  lite3_strlike()]
31b0: 20 43 2d 6c 61 6e 67 75 61 67 65 20 69 6e 74 65   C-language inte
31c0: 72 66 61 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  rface..}..COMPIL
31d0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
31e0: 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 3d 3c  _MAX_MMAP_SIZE=<
31f0: 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  i>N</i>} {.  Thi
3200: 73 20 6d 61 63 72 6f 20 73 65 74 73 20 61 20 68  s macro sets a h
3210: 61 72 64 20 75 70 70 65 72 20 62 6f 75 6e 64 20  ard upper bound 
3220: 6f 6e 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66  on the amount of
3230: 20 61 64 64 72 65 73 73 20 73 70 61 63 65 20 74   address space t
3240: 68 61 74 0a 20 20 63 61 6e 20 62 65 20 75 73 65  hat.  can be use
3250: 64 20 62 79 20 61 6e 79 20 73 69 6e 67 6c 65 20  d by any single 
3260: 64 61 74 61 62 61 73 65 20 66 6f 72 20 6d 65 6d  database for mem
3270: 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 2e 0a  ory-mapped I/O..
3280: 20 20 53 65 74 74 69 6e 67 20 74 68 69 73 20 76    Setting this v
3290: 61 6c 75 65 20 74 6f 20 30 20 63 6f 6d 70 6c 65  alue to 0 comple
32a0: 74 65 6c 79 20 64 69 73 61 62 6c 65 73 20 6d 65  tely disables me
32b0: 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20  mory-mapped I/O 
32c0: 61 6e 64 0a 20 20 63 61 75 73 65 73 20 6c 6f 67  and.  causes log
32d0: 69 63 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ic associated wi
32e0: 74 68 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64  th memory-mapped
32f0: 20 49 2f 4f 20 74 6f 20 62 65 20 6f 6d 69 74 74   I/O to be omitt
3300: 65 64 20 66 72 6f 6d 20 74 68 65 0a 20 20 62 75  ed from the.  bu
3310: 69 6c 64 2e 20 20 54 68 69 73 20 6f 70 74 69 6f  ild.  This optio
3320: 6e 20 64 6f 65 73 20 63 68 61 6e 67 65 20 74 68  n does change th
3330: 65 20 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79  e default memory
3340: 2d 6d 61 70 70 65 64 20 49 2f 4f 20 61 64 64 72  -mapped I/O addr
3350: 65 73 73 0a 20 20 73 70 61 63 65 20 73 69 7a 65  ess.  space size
3360: 20 28 73 65 74 20 62 79 20 5b 53 51 4c 49 54 45   (set by [SQLITE
3370: 5f 44 45 46 41 55 4c 54 5f 4d 4d 41 50 5f 53 49  _DEFAULT_MMAP_SI
3380: 5a 45 5d 20 6f 72 0a 20 20 73 71 6c 69 74 65 33  ZE] or.  sqlite3
3390: 5f 63 6f 6e 66 69 67 28 5b 53 51 4c 49 54 45 5f  _config([SQLITE_
33a0: 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a 45  CONFIG_MMAP_SIZE
33b0: 5d 29 20 6f 72 20 74 68 65 0a 20 20 72 75 6e 2d  ]) or the.  run-
33c0: 74 69 6d 65 20 6d 65 6d 6f 72 79 2d 6d 61 70 70  time memory-mapp
33d0: 65 64 20 49 2f 4f 20 61 64 64 72 65 73 73 20 73  ed I/O address s
33e0: 70 61 63 65 20 73 69 7a 65 20 28 73 65 74 20 62  pace size (set b
33f0: 79 0a 20 20 73 71 6c 69 74 65 33 5f 66 69 6c 65  y.  sqlite3_file
3400: 5f 63 6f 6e 74 72 6f 6c 28 5b 53 51 4c 49 54 45  _control([SQLITE
3410: 5f 46 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45  _FCNTL_MMAP_SIZE
3420: 5d 29 20 6f 72 0a 20 20 5b 50 52 41 47 4d 41 20  ]) or.  [PRAGMA 
3430: 6d 6d 61 70 5f 73 69 7a 65 5d 29 20 61 73 20 6c  mmap_size]) as l
3440: 6f 6e 67 20 61 73 20 74 68 6f 73 65 20 6f 74 68  ong as those oth
3450: 65 72 20 73 65 74 74 69 6e 67 73 20 61 72 65 20  er settings are 
3460: 6c 65 73 73 20 74 68 61 6e 20 74 68 65 0a 20 20  less than the.  
3470: 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 20 64 65  maximum value de
3480: 66 69 6e 65 64 20 68 65 72 65 2e 0a 7d 0a 0a 43  fined here..}..C
3490: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
34a0: 51 4c 49 54 45 5f 4d 41 58 5f 53 43 48 45 4d 41  QLITE_MAX_SCHEMA
34b0: 5f 52 45 54 52 59 3d 3c 69 3e 4e 3c 2f 69 3e 7d  _RETRY=<i>N</i>}
34c0: 20 7b 0a 20 20 57 68 65 6e 65 76 65 72 20 74 68   {.  Whenever th
34d0: 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d  e database schem
34e0: 61 20 63 68 61 6e 67 65 73 2c 20 70 72 65 70 61  a changes, prepa
34f0: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73 20 61  red statements a
3500: 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  re automatically
3510: 0a 20 20 72 65 70 72 65 70 61 72 65 64 20 74 6f  .  reprepared to
3520: 20 61 63 63 6f 6d 6d 6f 64 61 74 65 20 74 68 65   accommodate the
3530: 20 6e 65 77 20 73 63 68 65 6d 61 2e 20 20 54 68   new schema.  Th
3540: 65 72 65 20 69 73 20 61 20 72 61 63 65 20 63 6f  ere is a race co
3550: 6e 64 69 74 69 6f 6e 20 68 65 72 65 0a 20 20 69  ndition here.  i
3560: 6e 20 74 68 61 74 20 69 66 20 6f 6e 65 20 74 68  n that if one th
3570: 72 65 61 64 20 69 73 20 63 6f 6e 73 74 61 6e 74  read is constant
3580: 6c 79 20 63 68 61 6e 67 69 6e 67 20 74 68 65 20  ly changing the 
3590: 73 63 68 65 6d 61 2c 20 61 6e 6f 74 68 65 72 20  schema, another 
35a0: 74 68 72 65 61 64 0a 20 20 6d 69 67 68 74 20 73  thread.  might s
35b0: 70 69 6e 20 6f 6e 20 72 65 70 61 72 73 65 73 20  pin on reparses 
35c0: 61 6e 64 20 72 65 70 72 65 70 61 72 61 74 69 6f  and repreparatio
35d0: 6e 73 20 6f 66 20 61 20 70 72 65 70 61 72 65 64  ns of a prepared
35e0: 20 73 74 61 74 65 6d 65 6e 74 20 61 6e 64 0a 20   statement and. 
35f0: 20 6e 65 76 65 72 20 67 65 74 20 61 6e 79 20 72   never get any r
3600: 65 61 6c 20 77 6f 72 6b 20 64 6f 6e 65 2e 20 20  eal work done.  
3610: 54 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 70  This parameter p
3620: 72 65 76 65 6e 74 73 20 61 6e 20 69 6e 66 69 6e  revents an infin
3630: 69 74 65 20 6c 6f 6f 70 0a 20 20 62 79 20 66 6f  ite loop.  by fo
3640: 72 63 69 6e 67 20 74 68 65 20 73 70 69 6e 6e 69  rcing the spinni
3650: 6e 67 20 74 68 72 65 61 64 20 74 6f 20 67 69 76  ng thread to giv
3660: 65 20 75 70 20 61 66 74 65 72 20 61 20 66 69 78  e up after a fix
3670: 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 61 74 74  ed number of att
3680: 65 6d 70 74 73 0a 20 20 61 74 20 72 65 63 6f 6d  empts.  at recom
3690: 70 69 6c 69 6e 67 20 74 68 65 20 70 72 65 70 61  piling the prepa
36a0: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  red statement.  
36b0: 54 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74  The default sett
36c0: 69 6e 67 20 69 73 20 35 30 20 77 68 69 63 68 20  ing is 50 which 
36d0: 69 73 0a 20 20 6d 6f 72 65 20 74 68 61 6e 20 61  is.  more than a
36e0: 64 65 71 75 61 74 65 20 66 6f 72 20 6d 6f 73 74  dequate for most
36f0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d   applications..}
3700: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
3710: 20 7b 53 51 4c 49 54 45 5f 4d 41 58 5f 57 4f 52   {SQLITE_MAX_WOR
3720: 4b 45 52 5f 54 48 52 45 41 44 53 3d 3c 69 3e 4e  KER_THREADS=<i>N
3730: 3c 2f 69 3e 7d 20 7b 0a 20 20 53 65 74 20 61 6e  </i>} {.  Set an
3740: 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20   upper bound on 
3750: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d  the [sqlite3_lim
3760: 69 74 5d 28 64 62 2c 5b 53 51 4c 49 54 45 5f 4c  it](db,[SQLITE_L
3770: 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45  IMIT_WORKER_THRE
3780: 41 44 53 5d 2c 4e 29 0a 20 20 73 65 74 74 69 6e  ADS],N).  settin
3790: 67 20 74 68 61 74 20 64 65 74 65 72 6d 69 6e 65  g that determine
37a0: 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75  s the maximum nu
37b0: 6d 62 65 72 20 6f 66 20 61 75 78 69 6c 69 61 72  mber of auxiliar
37c0: 79 20 74 68 72 65 61 64 73 20 74 68 61 74 20 61  y threads that a
37d0: 20 73 69 6e 67 6c 65 0a 20 20 5b 70 72 65 70 61   single.  [prepa
37e0: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 77  red statement] w
37f0: 69 6c 6c 20 75 73 65 20 74 6f 20 61 69 64 20 77  ill use to aid w
3800: 69 74 68 20 43 50 55 2d 69 6e 74 65 6e 73 69 76  ith CPU-intensiv
3810: 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 73 0a 20  e computations. 
3820: 20 28 6d 6f 73 74 6c 79 20 73 6f 72 74 69 6e 67   (mostly sorting
3830: 29 2e 20 20 53 65 65 20 61 6c 73 6f 20 74 68 65  ).  See also the
3840: 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   [SQLITE_DEFAULT
3850: 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 5d  _WORKER_THREADS]
3860: 20 6f 70 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d   options..}..COM
3870: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
3880: 49 54 45 5f 4d 49 4e 49 4d 55 4d 5f 46 49 4c 45  ITE_MINIMUM_FILE
3890: 5f 44 45 53 43 52 49 50 54 4f 52 3d 3c 69 3e 4e  _DESCRIPTOR=<i>N
38a0: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20 75 6e  </i>} {.  The un
38b0: 69 78 20 5b 56 46 53 5d 20 77 69 6c 6c 20 6e 65  ix [VFS] will ne
38c0: 76 65 72 20 75 73 65 20 61 20 66 69 6c 65 20 64  ver use a file d
38d0: 65 73 63 72 69 70 74 6f 72 20 6c 65 73 73 20 74  escriptor less t
38e0: 68 61 6e 20 3c 69 3e 4e 3c 2f 69 3e 2e 20 20 54  han <i>N</i>.  T
38f0: 68 65 0a 20 20 64 65 66 61 75 6c 74 20 76 61 6c  he.  default val
3900: 75 65 20 6f 66 20 3c 69 3e 4e 3c 2f 69 3e 20 69  ue of <i>N</i> i
3910: 73 20 33 2e 0a 20 20 3c 70 3e 0a 20 20 41 76 6f  s 3..  <p>.  Avo
3920: 69 64 69 6e 67 20 74 68 65 20 75 73 65 20 6f 66  iding the use of
3930: 20 6c 6f 77 2d 6e 75 6d 62 65 72 65 64 20 66 69   low-numbered fi
3940: 6c 65 20 64 65 73 63 72 69 70 74 6f 72 73 20 69  le descriptors i
3950: 73 20 61 20 64 65 66 65 6e 73 65 20 61 67 61 69  s a defense agai
3960: 6e 73 74 0a 20 20 61 63 63 69 64 65 6e 74 61 6c  nst.  accidental
3970: 20 64 61 74 61 62 61 73 65 20 63 6f 72 72 75 70   database corrup
3980: 74 69 6f 6e 2e 20 20 49 66 20 61 20 64 61 74 61  tion.  If a data
3990: 62 61 73 65 20 66 69 6c 65 20 77 61 73 20 6f 70  base file was op
39a0: 65 6e 65 64 20 75 73 69 6e 67 0a 20 20 66 69 6c  ened using.  fil
39b0: 65 20 64 65 73 63 72 69 70 74 6f 72 20 32 2c 20  e descriptor 2, 
39c0: 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 61 6e 64  for example, and
39d0: 20 74 68 65 6e 20 61 6e 20 61 73 73 65 72 74 28   then an assert(
39e0: 29 20 66 61 69 6c 65 64 20 61 6e 64 20 69 6e 76  ) failed and inv
39f0: 6f 6b 65 64 0a 20 20 77 72 69 74 65 28 32 2c 2e  oked.  write(2,.
3a00: 2e 2e 29 2c 20 74 68 61 74 20 77 6f 75 6c 64 20  ..), that would 
3a10: 6c 69 6b 65 6c 79 20 63 61 75 73 65 20 64 61 74  likely cause dat
3a20: 61 62 61 73 65 20 63 6f 72 72 75 70 74 69 6f 6e  abase corruption
3a30: 20 62 79 20 6f 76 65 72 77 72 69 74 69 6e 67 0a   by overwriting.
3a40: 20 20 70 61 72 74 20 6f 66 20 74 68 65 20 64 61    part of the da
3a50: 74 61 62 61 73 65 20 66 69 6c 65 20 77 69 74 68  tabase file with
3a60: 20 74 68 65 20 61 73 73 65 72 74 69 6f 6e 20 65   the assertion e
3a70: 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 20 20 55  rror message.  U
3a80: 73 69 6e 67 20 6f 6e 6c 79 0a 20 20 68 69 67 68  sing only.  high
3a90: 65 72 2d 76 61 6c 75 65 64 20 66 69 6c 65 20 64  er-valued file d
3aa0: 65 73 63 72 69 70 74 6f 72 73 20 61 76 6f 69 64  escriptors avoid
3ab0: 73 20 74 68 69 73 20 70 6f 74 65 6e 74 69 61 6c  s this potential
3ac0: 20 70 72 6f 62 6c 65 6d 2e 20 20 54 68 65 20 0a   problem.  The .
3ad0: 20 20 70 72 6f 74 65 63 74 69 6f 6e 20 61 67 61    protection aga
3ae0: 69 6e 73 74 0a 20 20 75 73 69 6e 67 20 6c 6f 77  inst.  using low
3af0: 2d 6e 75 6d 62 65 72 65 64 20 66 69 6c 65 20 64  -numbered file d
3b00: 65 73 63 72 69 70 74 6f 72 73 20 63 61 6e 20 62  escriptors can b
3b10: 65 20 64 69 73 61 62 6c 65 64 20 62 79 20 73 65  e disabled by se
3b20: 74 74 69 6e 67 20 74 68 69 73 0a 20 20 63 6f 6d  tting this.  com
3b30: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
3b40: 20 74 6f 20 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c   to 0..}..COMPIL
3b50: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
3b60: 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57  _POWERSAFE_OVERW
3b70: 52 49 54 45 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72  RITE=<i>&lt;0 or
3b80: 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   1&gt;</i>} {.  
3b90: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 68 61 6e  This option chan
3ba0: 67 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  ges the default 
3bb0: 61 73 73 75 6d 70 74 69 6f 6e 20 61 62 6f 75 74  assumption about
3bc0: 20 5b 70 6f 77 65 72 73 61 66 65 20 6f 76 65 72   [powersafe over
3bd0: 77 72 69 74 65 5d 0a 20 20 66 6f 72 20 74 68 65  write].  for the
3be0: 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 69 6c 65   underlying file
3bf0: 73 79 73 74 65 6d 73 20 66 6f 72 20 74 68 65 20  systems for the 
3c00: 75 6e 69 78 20 61 6e 64 20 77 69 6e 64 6f 77 73  unix and windows
3c10: 20 5b 56 46 53 65 73 5d 2e 0a 20 20 53 65 74 74   [VFSes]..  Sett
3c20: 69 6e 67 20 53 51 4c 49 54 45 5f 50 4f 57 45 52  ing SQLITE_POWER
3c30: 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 20 74  SAFE_OVERWRITE t
3c40: 6f 20 31 20 63 61 75 73 65 73 20 53 51 4c 69 74  o 1 causes SQLit
3c50: 65 20 74 6f 20 61 73 73 75 6d 65 20 74 68 61 74  e to assume that
3c60: 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 6c  .  application-l
3c70: 65 76 65 6c 20 77 72 69 74 65 73 20 63 61 6e 6e  evel writes cann
3c80: 6f 74 20 63 68 61 6e 67 65 73 20 62 79 74 65 73  ot changes bytes
3c90: 20 6f 75 74 73 69 64 65 20 74 68 65 20 72 61 6e   outside the ran
3ca0: 67 65 20 6f 66 0a 20 20 62 79 74 65 73 20 77 72  ge of.  bytes wr
3cb0: 69 74 74 65 6e 20 65 76 65 6e 20 69 66 20 74 68  itten even if th
3cc0: 65 20 77 72 69 74 65 20 6f 63 63 75 72 73 20 6a  e write occurs j
3cd0: 75 73 74 20 62 65 66 6f 72 65 20 61 20 70 6f 77  ust before a pow
3ce0: 65 72 20 6c 6f 73 73 2e 0a 20 20 57 69 74 68 20  er loss..  With 
3cf0: 53 51 4c 49 54 45 5f 50 4f 57 45 52 53 41 46 45  SQLITE_POWERSAFE
3d00: 5f 4f 56 45 52 57 52 49 54 45 20 73 65 74 20 74  _OVERWRITE set t
3d10: 6f 20 30 2c 20 53 51 4c 69 74 65 20 61 73 73 75  o 0, SQLite assu
3d20: 6d 65 73 20 74 68 61 74 20 6f 74 68 65 72 0a 20  mes that other. 
3d30: 20 62 79 74 65 73 20 69 6e 20 74 68 65 20 73 61   bytes in the sa
3d40: 6d 65 20 73 65 63 74 6f 72 20 77 69 74 68 20 61  me sector with a
3d50: 20 77 72 69 74 74 65 6e 20 62 79 74 65 20 6d 69   written byte mi
3d60: 67 68 74 20 62 65 20 63 68 61 6e 67 65 64 20 6f  ght be changed o
3d70: 72 20 0a 20 20 64 61 6d 61 67 65 64 20 62 79 20  r .  damaged by 
3d80: 61 20 70 6f 77 65 72 20 6c 6f 73 73 2e 0a 7d 0a  a power loss..}.
3d90: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
3da0: 7b 53 51 4c 49 54 45 5f 52 45 56 45 52 53 45 5f  {SQLITE_REVERSE_
3db0: 55 4e 4f 52 44 45 52 45 44 5f 53 45 4c 45 43 54  UNORDERED_SELECT
3dc0: 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  S} {.  This opti
3dd0: 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b 50  on causes the [P
3de0: 52 41 47 4d 41 20 72 65 76 65 72 73 65 5f 75 6e  RAGMA reverse_un
3df0: 6f 72 64 65 72 65 64 5f 73 65 6c 65 63 74 73 5d  ordered_selects]
3e00: 20 73 65 74 74 69 6e 67 20 74 6f 20 62 65 0a 20   setting to be. 
3e10: 20 65 6e 61 62 6c 65 64 20 62 79 20 64 65 66 61   enabled by defa
3e20: 75 6c 74 2e 20 20 57 68 65 6e 20 65 6e 61 62 6c  ult.  When enabl
3e30: 65 64 2c 20 5b 53 45 4c 45 43 54 5d 20 73 74 61  ed, [SELECT] sta
3e40: 74 65 6d 65 6e 74 73 20 74 68 61 74 20 6c 61 63  tements that lac
3e50: 6b 20 61 6e 0a 20 20 4f 52 44 45 52 20 42 59 20  k an.  ORDER BY 
3e60: 63 6c 61 75 73 65 20 77 69 6c 6c 20 72 75 6e 20  clause will run 
3e70: 69 6e 20 72 65 76 65 72 73 65 20 6f 72 64 65 72  in reverse order
3e80: 2e 3c 70 3e 0a 20 20 54 68 69 73 20 6f 70 74 69  .<p>.  This opti
3e90: 6f 6e 20 69 73 20 75 73 65 66 75 6c 20 66 6f 72  on is useful for
3ea0: 20 64 65 74 65 63 74 69 6e 67 20 77 68 65 6e 20   detecting when 
3eb0: 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 28 69 6e  applications (in
3ec0: 63 6f 72 72 65 63 74 6c 79 29 0a 20 20 61 73 73  correctly).  ass
3ed0: 75 6d 65 20 74 68 61 74 20 74 68 65 20 6f 72 64  ume that the ord
3ee0: 65 72 20 6f 66 20 72 6f 77 73 20 69 6e 20 61 20  er of rows in a 
3ef0: 53 45 4c 45 43 54 20 77 69 74 68 6f 75 74 20 61  SELECT without a
3f00: 6e 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73  n ORDER BY claus
3f10: 65 0a 20 20 77 69 6c 6c 20 61 6c 77 61 79 73 20  e.  will always 
3f20: 62 65 20 74 68 65 20 73 61 6d 65 2e 0a 7d 0a 0a  be the same..}..
3f30: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
3f40: 53 51 4c 49 54 45 5f 53 4f 52 54 45 52 5f 50 4d  SQLITE_SORTER_PM
3f50: 41 53 5a 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a  ASZ=<i>N</i>} {.
3f60: 20 20 49 66 20 6d 75 6c 74 69 2d 74 68 72 65 61    If multi-threa
3f70: 64 65 64 20 70 72 6f 63 65 73 73 69 6e 67 20 69  ded processing i
3f80: 73 20 65 6e 61 62 6c 65 64 20 76 69 61 20 74 68  s enabled via th
3f90: 65 0a 20 20 5b 50 52 41 47 4d 41 20 74 68 72 65  e.  [PRAGMA thre
3fa0: 61 64 73 5d 20 73 65 74 74 69 6e 67 2c 20 74 68  ads] setting, th
3fb0: 65 6e 20 73 6f 72 74 20 6f 70 65 72 61 74 69 6f  en sort operatio
3fc0: 6e 73 20 77 69 6c 6c 0a 20 20 61 74 74 65 6d 70  ns will.  attemp
3fd0: 74 20 74 6f 20 73 74 61 72 74 20 68 65 6c 70 65  t to start helpe
3fe0: 72 20 74 68 72 65 61 64 73 20 77 68 65 6e 20 74  r threads when t
3ff0: 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 63 6f 6e  he amount of con
4000: 74 65 6e 74 0a 20 20 74 6f 20 62 65 20 73 6f 72  tent.  to be sor
4010: 74 65 64 20 65 78 63 65 65 64 73 20 74 68 65 20  ted exceeds the 
4020: 6d 69 6e 69 6d 75 6d 20 6f 66 20 74 68 65 20 5b  minimum of the [
4030: 63 61 63 68 65 5f 73 69 7a 65 5d 20 61 6e 64 20  cache_size] and 
4040: 50 4d 41 20 53 69 7a 65 0a 20 20 64 65 74 65 72  PMA Size.  deter
4050: 6d 69 6e 65 64 20 62 79 20 74 68 65 20 5b 53 51  mined by the [SQ
4060: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53  LITE_CONFIG_PMAS
4070: 5a 5d 20 73 74 61 72 74 2d 74 69 6d 65 20 6f 70  Z] start-time op
4080: 74 69 6f 6e 2e 0a 20 20 54 68 69 73 20 63 6f 6d  tion..  This com
4090: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
40a0: 20 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c   sets the defaul
40b0: 74 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 0a  t value for the.
40c0: 20 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47    [SQLITE_CONFIG
40d0: 5f 50 4d 41 53 5a 5d 20 73 74 61 72 74 2d 74 69  _PMASZ] start-ti
40e0: 6d 65 20 6f 70 74 69 6f 6e 2e 0a 20 20 54 68 65  me option..  The
40f0: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69   default value i
4100: 73 20 32 35 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  s 250..}..COMPIL
4110: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
4120: 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 7d 20 7b  _WIN32_MALLOC} {
4130: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65  .  This option e
4140: 6e 61 62 6c 65 73 20 74 68 65 20 75 73 65 20 6f  nables the use o
4150: 66 20 74 68 65 20 57 69 6e 64 6f 77 73 20 48 65  f the Windows He
4160: 61 70 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 73  ap API functions
4170: 20 66 6f 72 20 6d 65 6d 6f 72 79 0a 20 20 61 6c   for memory.  al
4180: 6c 6f 63 61 74 69 6f 6e 20 69 6e 73 74 65 61 64  location instead
4190: 20 6f 66 20 74 68 65 20 73 74 61 6e 64 61 72 64   of the standard
41a0: 20 6c 69 62 72 61 72 79 20 6d 61 6c 6c 6f 63 28   library malloc(
41b0: 29 20 61 6e 64 20 66 72 65 65 28 29 20 72 6f 75  ) and free() rou
41c0: 74 69 6e 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  tines..}..COMPIL
41d0: 45 5f 4f 50 54 49 4f 4e 20 7b 59 59 53 54 41 43  E_OPTION {YYSTAC
41e0: 4b 44 45 50 54 48 3d 3c 69 3e 26 6c 74 3b 6d 61  KDEPTH=<i>&lt;ma
41f0: 78 5f 64 65 70 74 68 26 67 74 3b 3c 2f 69 3e 7d  x_depth&gt;</i>}
4200: 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20   {.  This macro 
4210: 73 65 74 73 20 74 68 65 20 6d 61 78 69 6d 75 6d  sets the maximum
4220: 20 64 65 70 74 68 20 6f 66 20 74 68 65 20 4c 41   depth of the LA
4230: 4c 52 28 31 29 20 73 74 61 63 6b 20 75 73 65 64  LR(1) stack used
4240: 20 62 79 0a 20 20 74 68 65 20 53 51 4c 20 70 61   by.  the SQL pa
4250: 72 73 65 72 20 77 69 74 68 69 6e 20 53 51 4c 69  rser within SQLi
4260: 74 65 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74  te.  The default
4270: 20 76 61 6c 75 65 20 69 73 20 31 30 30 2e 20 20   value is 100.  
4280: 41 20 74 79 70 69 63 61 6c 0a 20 20 61 70 70 6c  A typical.  appl
4290: 69 63 61 74 69 6f 6e 20 77 69 6c 6c 20 75 73 65  ication will use
42a0: 20 6c 65 73 73 20 74 68 61 6e 20 61 62 6f 75 74   less than about
42b0: 20 32 30 20 6c 65 76 65 6c 73 20 6f 66 20 74 68   20 levels of th
42c0: 65 20 73 74 61 63 6b 2e 0a 20 20 44 65 76 65 6c  e stack..  Devel
42d0: 6f 70 65 72 73 20 77 68 6f 73 65 20 61 70 70 6c  opers whose appl
42e0: 69 63 61 74 69 6f 6e 73 20 63 6f 6e 74 61 69 6e  ications contain
42f0: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20   SQL statements 
4300: 74 68 61 74 20 0a 20 20 6e 65 65 64 20 6d 6f 72  that .  need mor
4310: 65 20 74 68 61 6e 20 31 30 30 20 4c 41 4c 52 28  e than 100 LALR(
4320: 31 29 20 73 74 61 63 6b 20 65 6e 74 72 69 65 73  1) stack entries
4330: 20 73 68 6f 75 6c 64 20 73 65 72 69 6f 75 73 6c   should seriousl
4340: 79 0a 20 20 63 6f 6e 73 69 64 65 72 20 72 65 66  y.  consider ref
4350: 61 63 74 6f 72 69 6e 67 20 74 68 65 69 72 20 53  actoring their S
4360: 51 4c 20 61 73 20 69 74 20 69 73 20 6c 69 6b 65  QL as it is like
4370: 6c 79 20 74 6f 20 62 65 20 77 65 6c 6c 20 62 65  ly to be well be
4380: 79 6f 6e 64 0a 20 20 74 68 65 20 61 62 69 6c 69  yond.  the abili
4390: 74 79 20 6f 66 20 61 6e 79 20 68 75 6d 61 6e 20  ty of any human 
43a0: 74 6f 20 63 6f 6d 70 72 65 68 65 6e 64 2e 0a 7d  to comprehend..}
43b0: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 68 32 3e 31 2e 33  .</tcl>..<h2>1.3
43c0: 20 4f 70 74 69 6f 6e 73 20 54 6f 20 53 65 74 20   Options To Set 
43d0: 53 69 7a 65 20 4c 69 6d 69 74 73 3c 2f 68 32 3e  Size Limits</h2>
43e0: 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72 65 20 63  ..<p>There are c
43f0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
4400: 6f 6e 73 20 74 68 61 74 20 77 69 6c 6c 20 73 65  ons that will se
4410: 74 20 75 70 70 65 72 20 62 6f 75 6e 64 73 0a 6f  t upper bounds.o
4420: 6e 20 74 68 65 20 73 69 7a 65 73 20 6f 66 20 76  n the sizes of v
4430: 61 72 69 6f 75 73 20 73 74 72 75 63 74 75 72 65  arious structure
4440: 73 20 69 6e 20 53 51 4c 69 74 65 2e 20 20 54 68  s in SQLite.  Th
4450: 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f  e compile-time.o
4460: 70 74 69 6f 6e 73 20 6e 6f 72 6d 61 6c 6c 79 20  ptions normally 
4470: 73 65 74 20 61 20 68 61 72 64 20 75 70 70 65 72  set a hard upper
4480: 20 62 6f 75 6e 64 20 74 68 61 74 20 63 61 6e 20   bound that can 
4490: 62 65 20 63 68 61 6e 67 65 64 0a 61 74 20 72 75  be changed.at ru
44a0: 6e 2d 74 69 6d 65 20 6f 6e 20 69 6e 64 69 76 69  n-time on indivi
44b0: 64 75 61 6c 20 5b 64 61 74 61 62 61 73 65 20 63  dual [database c
44c0: 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 75 73 69 6e  onnections] usin
44d0: 67 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f 6c  g the.[sqlite3_l
44e0: 69 6d 69 74 28 29 5d 20 69 6e 74 65 72 66 61 63  imit()] interfac
44f0: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 63  e.</p>..<p>The c
4500: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
4510: 6f 6e 73 20 66 6f 72 20 73 65 74 74 69 6e 67 20  ons for setting 
4520: 75 70 70 65 72 20 62 6f 75 6e 64 73 20 61 72 65  upper bounds are
4530: 0a 5b 6c 69 6d 69 74 73 20 7c 20 64 6f 63 75 6d  .[limits | docum
4540: 65 6e 74 65 64 20 73 65 70 61 72 61 74 65 6c 79  ented separately
4550: 5d 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e  ].  The followin
4560: 67 20 69 73 20 61 20 6c 69 73 74 20 6f 66 0a 74  g is a list of.t
4570: 68 65 20 61 76 61 69 6c 61 62 6c 65 20 73 65 74  he available set
4580: 74 69 6e 67 73 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e  tings:</p>..<ul>
4590: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
45a0: 58 5f 41 54 54 41 43 48 45 44 5d 20 20 3c 2f 6c  X_ATTACHED]  </l
45b0: 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  i>.<li> [SQLITE_
45c0: 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 20 20 3c 2f 6c  MAX_COLUMN]  </l
45d0: 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  i>.<li> [SQLITE_
45e0: 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c  MAX_COMPOUND_SEL
45f0: 45 43 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  ECT]  </li>.<li>
4600: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 45 58 50   [SQLITE_MAX_EXP
4610: 52 5f 44 45 50 54 48 5d 20 20 3c 2f 6c 69 3e 0a  R_DEPTH]  </li>.
4620: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58  <li> [SQLITE_MAX
4630: 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 5d 20 20  _FUNCTION_ARG]  
4640: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
4650: 54 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d 20 20  TE_MAX_LENGTH]  
4660: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
4670: 54 45 5f 4d 41 58 5f 4c 49 4b 45 5f 50 41 54 54  TE_MAX_LIKE_PATT
4680: 45 52 4e 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c  ERN_LENGTH]  </l
4690: 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  i>.<li> [SQLITE_
46a0: 4d 41 58 5f 50 41 47 45 5f 43 4f 55 4e 54 5d 20  MAX_PAGE_COUNT] 
46b0: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
46c0: 49 54 45 5f 4d 41 58 5f 53 51 4c 5f 4c 45 4e 47  ITE_MAX_SQL_LENG
46d0: 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  TH]  </li>.<li> 
46e0: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 56 41 52 49  [SQLITE_MAX_VARI
46f0: 41 42 4c 45 5f 4e 55 4d 42 45 52 5d 20 20 3c 2f  ABLE_NUMBER]  </
4700: 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 61 20 6e 61  li>.</ul>..<a na
4710: 6d 65 3d 22 63 6f 6e 74 72 6f 6c 66 65 61 74 75  me="controlfeatu
4720: 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e  res"></a>.<h2>1.
4730: 34 20 4f 70 74 69 6f 6e 73 20 54 6f 20 43 6f 6e  4 Options To Con
4740: 74 72 6f 6c 20 4f 70 65 72 61 74 69 6e 67 20 43  trol Operating C
4750: 68 61 72 61 63 74 65 72 69 73 74 69 63 73 3c 2f  haracteristics</
4760: 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49  h2>..<tcl>.COMPI
4770: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
4780: 45 5f 34 5f 42 59 54 45 5f 41 4c 49 47 4e 45 44  E_4_BYTE_ALIGNED
4790: 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 4f 6e 20  _MALLOC} {.  On 
47a0: 6d 6f 73 74 20 73 79 73 74 65 6d 73 2c 20 74 68  most systems, th
47b0: 65 20 6d 61 6c 6c 6f 63 28 29 20 73 79 73 74 65  e malloc() syste
47c0: 6d 20 63 61 6c 6c 20 72 65 74 75 72 6e 73 20 61  m call returns a
47d0: 20 62 75 66 66 65 72 20 74 68 61 74 20 69 73 0a   buffer that is.
47e0: 20 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20    aligned to an 
47f0: 38 2d 62 79 74 65 20 62 6f 75 6e 64 61 72 79 2e  8-byte boundary.
4800: 20 20 42 75 74 20 6f 6e 20 73 6f 6d 65 20 73 79    But on some sy
4810: 73 74 65 6d 73 20 28 65 78 3a 20 77 69 6e 64 6f  stems (ex: windo
4820: 77 73 29 20 6d 61 6c 6c 6f 63 28 29 0a 20 20 72  ws) malloc().  r
4830: 65 74 75 72 6e 73 20 34 2d 62 79 74 65 20 61 6c  eturns 4-byte al
4840: 69 67 6e 65 64 20 70 6f 69 6e 74 65 72 2e 20 20  igned pointer.  
4850: 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  This compile-tim
4860: 65 20 6f 70 74 69 6f 6e 20 6d 75 73 74 20 62 65  e option must be
4870: 20 75 73 65 64 0a 20 20 6f 6e 20 73 79 73 74 65   used.  on syste
4880: 6d 73 20 74 68 61 74 20 72 65 74 75 72 6e 20 34  ms that return 4
4890: 2d 62 79 74 65 20 61 6c 69 67 6e 65 64 20 70 6f  -byte aligned po
48a0: 69 6e 74 65 72 73 20 66 72 6f 6d 20 6d 61 6c 6c  inters from mall
48b0: 6f 63 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  oc()..}..COMPILE
48c0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
48d0: 43 41 53 45 5f 53 45 4e 53 49 54 49 56 45 5f 4c  CASE_SENSITIVE_L
48e0: 49 4b 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  IKE} {.  If this
48f0: 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65   option is prese
4900: 6e 74 2c 20 74 68 65 6e 20 74 68 65 20 62 75 69  nt, then the bui
4910: 6c 74 2d 69 6e 20 5b 4c 49 4b 45 5d 20 6f 70 65  lt-in [LIKE] ope
4920: 72 61 74 6f 72 20 77 69 6c 6c 20 62 65 0a 20 20  rator will be.  
4930: 63 61 73 65 20 73 65 6e 73 69 74 69 76 65 2e 20  case sensitive. 
4940: 20 54 68 69 73 20 73 61 6d 65 20 65 66 66 65 63   This same effec
4950: 74 20 63 61 6e 20 62 65 20 61 63 68 69 65 76 65  t can be achieve
4960: 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75 73  d at run-time us
4970: 69 6e 67 0a 20 20 74 68 65 20 5b 63 61 73 65 5f  ing.  the [case_
4980: 73 65 6e 73 69 74 69 76 65 5f 6c 69 6b 65 20 70  sensitive_like p
4990: 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  ragma]..}..COMPI
49a0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
49b0: 45 5f 44 49 52 45 43 54 5f 4f 56 45 52 46 4c 4f  E_DIRECT_OVERFLO
49c0: 57 5f 52 45 41 44 7d 20 7b 0a 20 20 57 68 65 6e  W_READ} {.  When
49d0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
49e0: 70 72 65 73 65 6e 74 2c 20 63 6f 6e 74 65 6e 74  present, content
49f0: 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0a 20 20   contained in.  
4a00: 5b 6f 76 65 72 66 6c 6f 77 20 70 61 67 65 73 5d  [overflow pages]
4a10: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
4a20: 20 66 69 6c 65 20 69 73 20 72 65 61 64 20 64 69   file is read di
4a30: 72 65 63 74 6c 79 20 66 72 6f 6d 20 64 69 73 6b  rectly from disk
4a40: 2c 0a 20 20 62 79 70 61 73 73 69 6e 67 20 74 68  ,.  bypassing th
4a50: 65 20 5b 70 61 67 65 20 63 61 63 68 65 5d 2c 20  e [page cache], 
4a60: 64 75 72 69 6e 67 20 72 65 61 64 20 74 72 61 6e  during read tran
4a70: 73 61 63 74 69 6f 6e 73 2e 20 20 49 6e 20 61 70  sactions.  In ap
4a80: 70 6c 69 63 61 74 69 6f 6e 73 0a 20 20 74 68 61  plications.  tha
4a90: 74 20 64 6f 20 61 20 6c 6f 74 20 6f 66 20 72 65  t do a lot of re
4aa0: 61 64 73 20 6f 66 20 6c 61 72 67 65 20 42 4c 4f  ads of large BLO
4ab0: 42 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  Bs, this option 
4ac0: 6d 69 67 68 74 20 69 6d 70 72 6f 76 65 20 72 65  might improve re
4ad0: 61 64 0a 20 20 70 65 72 66 6f 72 6d 61 6e 63 65  ad.  performance
4ae0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
4af0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 48 41 56 45  ION {SQLITE_HAVE
4b00: 5f 49 53 4e 41 4e 7d 20 7b 0a 20 20 49 66 20 74  _ISNAN} {.  If t
4b10: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70 72  his option is pr
4b20: 65 73 65 6e 74 2c 20 74 68 65 6e 20 53 51 4c 69  esent, then SQLi
4b30: 74 65 20 77 69 6c 6c 20 75 73 65 20 74 68 65 20  te will use the 
4b40: 69 73 6e 61 6e 28 29 20 66 75 6e 63 74 69 6f 6e  isnan() function
4b50: 20 66 72 6f 6d 0a 20 20 74 68 65 20 73 79 73 74   from.  the syst
4b60: 65 6d 20 6d 61 74 68 20 6c 69 62 72 61 72 79 2e  em math library.
4b70: 20 20 54 68 69 73 20 69 73 20 61 6e 20 61 6c 69    This is an ali
4b80: 61 73 20 66 6f 72 20 74 68 65 20 5b 48 41 56 45  as for the [HAVE
4b90: 5f 49 53 4e 41 4e 5d 20 63 6f 6e 66 69 67 75 72  _ISNAN] configur
4ba0: 61 74 69 6f 6e 0a 20 20 6f 70 74 69 6f 6e 2e 0a  ation.  option..
4bb0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
4bc0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 53 5f 4f 54 48  N {SQLITE_OS_OTH
4bd0: 45 52 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31  ER=<i>&lt;0 or 1
4be0: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
4bf0: 65 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  e option causes 
4c00: 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 69  SQLite to omit i
4c10: 74 73 20 62 75 69 6c 74 2d 69 6e 20 6f 70 65 72  ts built-in oper
4c20: 61 74 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74  ating system int
4c30: 65 72 66 61 63 65 73 0a 20 20 66 6f 72 20 55 6e  erfaces.  for Un
4c40: 69 78 2c 20 57 69 6e 64 6f 77 73 2c 20 61 6e 64  ix, Windows, and
4c50: 20 4f 53 2f 32 2e 20 20 54 68 65 20 72 65 73 75   OS/2.  The resu
4c60: 6c 74 69 6e 67 20 6c 69 62 72 61 72 79 20 77 69  lting library wi
4c70: 6c 6c 20 68 61 76 65 20 6e 6f 20 64 65 66 61 75  ll have no defau
4c80: 6c 74 0a 20 20 5b 73 71 6c 69 74 65 33 5f 76 66  lt.  [sqlite3_vf
4c90: 73 20 7c 20 6f 70 65 72 61 74 69 6e 67 20 73 79  s | operating sy
4ca0: 73 74 65 6d 20 69 6e 74 65 72 66 61 63 65 5d 2e  stem interface].
4cb0: 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d    Applications m
4cc0: 75 73 74 20 75 73 65 0a 20 20 5b 73 71 6c 69 74  ust use.  [sqlit
4cd0: 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28  e3_vfs_register(
4ce0: 29 5d 20 74 6f 20 72 65 67 69 73 74 65 72 20 61  )] to register a
4cf0: 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 69 6e  n appropriate in
4d00: 74 65 72 66 61 63 65 20 62 65 66 6f 72 65 0a 20  terface before. 
4d10: 20 75 73 69 6e 67 20 53 51 4c 69 74 65 2e 20 20   using SQLite.  
4d20: 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73  Applications mus
4d30: 74 20 61 6c 73 6f 20 73 75 70 70 6c 79 20 69 6d  t also supply im
4d40: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66 6f  plementations fo
4d50: 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33  r the.  [sqlite3
4d60: 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 61 6e 64 20  _os_init()] and 
4d70: 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28  [sqlite3_os_end(
4d80: 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e 20 20  )] interfaces.  
4d90: 54 68 65 20 75 73 75 61 6c 20 70 72 61 63 74 69  The usual practi
4da0: 63 65 0a 20 20 69 73 20 66 6f 72 20 74 68 65 20  ce.  is for the 
4db0: 73 75 70 70 6c 69 65 64 20 5b 73 71 6c 69 74 65  supplied [sqlite
4dc0: 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 74 6f 20  3_os_init()] to 
4dd0: 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f  invoke [sqlite3_
4de0: 76 66 73 5f 72 65 67 69 73 74 65 72 28 29 5d 2e  vfs_register()].
4df0: 0a 20 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 61  .  SQLite will a
4e00: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 76  utomatically inv
4e10: 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f  oke [sqlite3_os_
4e20: 69 6e 69 74 28 29 5d 20 77 68 65 6e 20 69 74 20  init()] when it 
4e30: 69 6e 69 74 69 61 6c 69 7a 65 73 2e 0a 0a 20 20  initializes...  
4e40: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 74  This option is t
4e50: 79 70 69 63 61 6c 6c 79 20 75 73 65 64 20 77 68  ypically used wh
4e60: 65 6e 20 62 75 69 6c 64 69 6e 67 20 53 51 4c 69  en building SQLi
4e70: 74 65 20 66 6f 72 20 61 6e 20 65 6d 62 65 64 64  te for an embedd
4e80: 65 64 0a 20 20 70 6c 61 74 66 6f 72 6d 20 77 69  ed.  platform wi
4e90: 74 68 20 61 20 63 75 73 74 6f 6d 20 6f 70 65 72  th a custom oper
4ea0: 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0a 7d 0a  ating system..}.
4eb0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
4ec0: 7b 53 51 4c 49 54 45 5f 53 45 43 55 52 45 5f 44  {SQLITE_SECURE_D
4ed0: 45 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69 73 20  ELETE} {.  This 
4ee0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
4ef0: 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68 65 20  ion changes the 
4f00: 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20  default setting 
4f10: 6f 66 20 74 68 65 0a 20 20 5b 73 65 63 75 72 65  of the.  [secure
4f20: 5f 64 65 6c 65 74 65 20 70 72 61 67 6d 61 5d 2e  _delete pragma].
4f30: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
4f40: 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65 64 2c 20  on is not used, 
4f50: 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 64 65  secure_delete de
4f60: 66 61 75 6c 74 73 0a 20 20 74 6f 20 6f 66 66 2e  faults.  to off.
4f70: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
4f80: 6f 6e 20 69 73 20 70 72 65 73 65 6e 74 2c 20 73  on is present, s
4f90: 65 63 75 72 65 5f 64 65 6c 65 74 65 20 64 65 66  ecure_delete def
4fa0: 61 75 6c 74 73 20 74 6f 20 6f 6e 2e 0a 0a 20 20  aults to on...  
4fb0: 54 68 65 20 73 65 63 75 72 65 5f 64 65 6c 65 74  The secure_delet
4fc0: 65 20 73 65 74 74 69 6e 67 20 63 61 75 73 65 73  e setting causes
4fd0: 20 64 65 6c 65 74 65 64 20 63 6f 6e 74 65 6e 74   deleted content
4fe0: 20 74 6f 20 62 65 20 6f 76 65 72 77 72 69 74 74   to be overwritt
4ff0: 65 6e 20 77 69 74 68 0a 20 20 7a 65 72 6f 73 2e  en with.  zeros.
5000: 20 20 54 68 65 72 65 20 69 73 20 61 20 73 6d 61    There is a sma
5010: 6c 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70  ll performance p
5020: 65 6e 61 6c 74 79 20 73 69 6e 63 65 20 61 64 64  enalty since add
5030: 69 74 69 6f 6e 61 6c 20 49 2f 4f 0a 20 20 6d 75  itional I/O.  mu
5040: 73 74 20 6f 63 63 75 72 2e 20 20 4f 6e 20 74 68  st occur.  On th
5050: 65 20 6f 74 68 65 72 20 68 61 6e 64 2c 20 73 65  e other hand, se
5060: 63 75 72 65 5f 64 65 6c 65 74 65 20 63 61 6e 20  cure_delete can 
5070: 70 72 65 76 65 6e 74 20 66 72 61 67 6d 65 6e 74  prevent fragment
5080: 73 20 6f 66 20 0a 20 20 73 65 6e 73 69 74 69 76  s of .  sensitiv
5090: 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 72  e information fr
50a0: 6f 6d 20 6c 69 6e 67 65 72 69 6e 67 20 69 6e 20  om lingering in 
50b0: 75 6e 75 73 65 64 20 70 61 72 74 73 20 6f 66 20  unused parts of 
50c0: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
50d0: 65 20 0a 20 20 61 66 74 65 72 20 69 74 20 68 61  e .  after it ha
50e0: 73 20 62 65 65 6e 20 64 65 6c 65 74 65 64 2e 20  s been deleted. 
50f0: 20 53 65 65 20 74 68 65 20 64 6f 63 75 6d 65 6e   See the documen
5100: 74 61 74 69 6f 6e 20 6f 6e 20 74 68 65 0a 20 20  tation on the.  
5110: 5b 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 70  [secure_delete p
5120: 72 61 67 6d 61 5d 20 66 6f 72 20 61 64 64 69 74  ragma] for addit
5130: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
5140: 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  n..}..COMPILE_OP
5150: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 48 52  TION {SQLITE_THR
5160: 45 41 44 53 41 46 45 3d 3c 69 3e 26 6c 74 3b 30  EADSAFE=<i>&lt;0
5170: 20 6f 72 20 31 20 6f 72 20 32 26 67 74 3b 3c 2f   or 1 or 2&gt;</
5180: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  i>} {.  This opt
5190: 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65  ion controls whe
51a0: 74 68 65 72 20 6f 72 20 6e 6f 74 20 63 6f 64 65  ther or not code
51b0: 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20   is included in 
51c0: 53 51 4c 69 74 65 20 74 6f 0a 20 20 65 6e 61 62  SQLite to.  enab
51d0: 6c 65 20 69 74 20 74 6f 20 6f 70 65 72 61 74 65  le it to operate
51e0: 20 73 61 66 65 6c 79 20 69 6e 20 61 20 6d 75 6c   safely in a mul
51f0: 74 69 74 68 72 65 61 64 65 64 20 65 6e 76 69 72  tithreaded envir
5200: 6f 6e 6d 65 6e 74 2e 20 20 54 68 65 0a 20 20 64  onment.  The.  d
5210: 65 66 61 75 6c 74 20 69 73 20 53 51 4c 49 54 45  efault is SQLITE
5220: 5f 54 48 52 45 41 44 53 41 46 45 3d 31 20 77 68  _THREADSAFE=1 wh
5230: 69 63 68 20 69 73 20 73 61 66 65 20 66 6f 72 20  ich is safe for 
5240: 75 73 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68  use in a multith
5250: 72 65 61 64 65 64 0a 20 20 65 6e 76 69 72 6f 6e  readed.  environ
5260: 6d 65 6e 74 2e 20 20 57 68 65 6e 20 63 6f 6d 70  ment.  When comp
5270: 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54 45  iled with SQLITE
5280: 5f 54 48 52 45 41 44 53 41 46 45 3d 30 20 61 6c  _THREADSAFE=0 al
5290: 6c 20 6d 75 74 65 78 69 6e 67 20 63 6f 64 65 0a  l mutexing code.
52a0: 20 20 69 73 20 6f 6d 69 74 74 65 64 20 61 6e 64    is omitted and
52b0: 20 69 74 20 69 73 20 75 6e 73 61 66 65 20 74 6f   it is unsafe to
52c0: 20 75 73 65 20 53 51 4c 69 74 65 20 69 6e 20 61   use SQLite in a
52d0: 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 70   multithreaded p
52e0: 72 6f 67 72 61 6d 2e 0a 20 20 57 68 65 6e 20 63  rogram..  When c
52f0: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c  ompiled with SQL
5300: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32  ITE_THREADSAFE=2
5310: 2c 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65 20  , SQLite can be 
5320: 75 73 65 64 20 69 6e 20 61 20 6d 75 6c 74 69 74  used in a multit
5330: 68 72 65 61 64 65 64 0a 20 20 70 72 6f 67 72 61  hreaded.  progra
5340: 6d 20 73 6f 20 6c 6f 6e 67 20 61 73 20 6e 6f 20  m so long as no 
5350: 74 77 6f 20 74 68 72 65 61 64 73 20 61 74 74 65  two threads atte
5360: 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65 20 73  mpt to use the s
5370: 61 6d 65 0a 20 20 5b 64 61 74 61 62 61 73 65 20  ame.  [database 
5380: 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 28 6f 72 20  connection] (or 
5390: 61 6e 79 20 5b 70 72 65 70 61 72 65 64 20 73 74  any [prepared st
53a0: 61 74 65 6d 65 6e 74 73 5d 20 64 65 72 69 76 65  atements] derive
53b0: 64 20 66 72 6f 6d 0a 20 20 74 68 61 74 20 64 61  d from.  that da
53c0: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
53d0: 6e 29 20 61 74 20 74 68 65 20 73 61 6d 65 20 74  n) at the same t
53e0: 69 6d 65 2e 0a 0a 20 20 54 6f 20 70 75 74 20 69  ime...  To put i
53f0: 74 20 61 6e 6f 74 68 65 72 20 77 61 79 2c 20 53  t another way, S
5400: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
5410: 3d 31 20 73 65 74 73 20 74 68 65 20 64 65 66 61  =1 sets the defa
5420: 75 6c 74 0a 20 20 5b 74 68 72 65 61 64 69 6e 67  ult.  [threading
5430: 20 6d 6f 64 65 5d 20 74 6f 20 53 65 72 69 61 6c   mode] to Serial
5440: 69 7a 65 64 2e 20 20 53 51 4c 49 54 45 5f 54 48  ized.  SQLITE_TH
5450: 52 45 41 44 53 41 46 45 3d 32 20 73 65 74 73 20  READSAFE=2 sets 
5460: 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20 5b 74  the default.  [t
5470: 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74  hreading mode] t
5480: 6f 20 4d 75 6c 74 69 2d 74 68 72 65 61 64 65 64  o Multi-threaded
5490: 2e 20 20 41 6e 64 20 53 51 4c 49 54 45 5f 54 48  .  And SQLITE_TH
54a0: 52 45 41 44 53 41 46 45 3d 30 20 73 65 74 73 20  READSAFE=0 sets 
54b0: 74 68 65 0a 20 20 5b 74 68 72 65 61 64 69 6e 67  the.  [threading
54c0: 20 6d 6f 64 65 5d 20 74 6f 20 53 69 6e 67 6c 65   mode] to Single
54d0: 2d 74 68 72 65 61 64 65 64 2e 0a 0a 20 20 54 68  -threaded...  Th
54e0: 65 20 76 61 6c 75 65 20 6f 66 20 53 51 4c 49 54  e value of SQLIT
54f0: 45 5f 54 48 52 45 41 44 53 41 46 45 20 63 61 6e  E_THREADSAFE can
5500: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20 61   be determined a
5510: 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20 75 73 69  t run-time.  usi
5520: 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  ng the [sqlite3_
5530: 74 68 72 65 61 64 73 61 66 65 28 29 5d 20 69 6e  threadsafe()] in
5540: 74 65 72 66 61 63 65 2e 0a 0a 20 20 57 68 65 6e  terface...  When
5550: 20 53 51 4c 69 74 65 20 68 61 73 20 62 65 65 6e   SQLite has been
5560: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53   compiled with S
5570: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
5580: 3d 31 20 6f 72 0a 20 20 53 51 4c 49 54 45 5f 54  =1 or.  SQLITE_T
5590: 48 52 45 41 44 53 41 46 45 3d 32 20 74 68 65 6e  HREADSAFE=2 then
55a0: 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20   the [threading 
55b0: 6d 6f 64 65 5d 0a 20 20 63 61 6e 20 62 65 20 61  mode].  can be a
55c0: 6c 74 65 72 65 64 20 61 74 20 72 75 6e 2d 74 69  ltered at run-ti
55d0: 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71  me using the [sq
55e0: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20  lite3_config()] 
55f0: 69 6e 74 65 72 66 61 63 65 20 74 6f 67 65 74 68  interface togeth
5600: 65 72 0a 20 20 77 69 74 68 20 6f 6e 65 20 6f 66  er.  with one of
5610: 20 74 68 65 73 65 20 76 65 72 62 73 3a 0a 0a 20   these verbs:.. 
5620: 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 5b 53 51 4c   <ul>.  <li>[SQL
5630: 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c  ITE_CONFIG_SINGL
5640: 45 54 48 52 45 41 44 5d 0a 20 20 3c 6c 69 3e 5b  ETHREAD].  <li>[
5650: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55  SQLITE_CONFIG_MU
5660: 4c 54 49 54 48 52 45 41 44 5d 0a 20 20 3c 6c 69  LTITHREAD].  <li
5670: 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  >[SQLITE_CONFIG_
5680: 53 45 52 49 41 4c 49 5a 45 44 5d 0a 20 20 3c 2f  SERIALIZED].  </
5690: 75 6c 3e 0a 0a 20 20 54 68 65 20 5b 53 51 4c 49  ul>..  The [SQLI
56a0: 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58 5d  TE_OPEN_NOMUTEX]
56b0: 20 61 6e 64 0a 20 20 5b 53 51 4c 49 54 45 5f 4f   and.  [SQLITE_O
56c0: 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 5d 20 66  PEN_FULLMUTEX] f
56d0: 6c 61 67 73 20 74 6f 20 5b 73 71 6c 69 74 65 33  lags to [sqlite3
56e0: 5f 6f 70 65 6e 5f 76 32 28 29 5d 20 63 61 6e 20  _open_v2()] can 
56f0: 61 6c 73 6f 20 62 65 20 75 73 65 64 0a 20 20 74  also be used.  t
5700: 6f 20 61 64 6a 75 73 74 20 74 68 65 20 5b 74 68  o adjust the [th
5710: 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 6f 66  reading mode] of
5720: 20 69 6e 64 69 76 69 64 75 61 6c 20 5b 64 61 74   individual [dat
5730: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
5740: 73 5d 0a 20 20 61 74 20 72 75 6e 2d 74 69 6d 65  s].  at run-time
5750: 2e 0a 0a 20 20 4e 6f 74 65 20 74 68 61 74 20 77  ...  Note that w
5760: 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20 63 6f  hen SQLite is co
5770: 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49  mpiled with SQLI
5780: 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 2c  TE_THREADSAFE=0,
5790: 20 74 68 65 20 63 6f 64 65 0a 20 20 74 6f 20 6d   the code.  to m
57a0: 61 6b 65 20 53 51 4c 69 74 65 20 74 68 72 65 61  ake SQLite threa
57b0: 64 73 61 66 65 20 69 73 20 6f 6d 69 74 74 65 64  dsafe is omitted
57c0: 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e   from the build.
57d0: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 63 63 75    When this occu
57e0: 72 73 2c 0a 20 20 69 74 20 69 73 20 69 6d 70 6f  rs,.  it is impo
57f0: 73 73 69 62 6c 65 20 74 6f 20 63 68 61 6e 67 65  ssible to change
5800: 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20   the [threading 
5810: 6d 6f 64 65 5d 20 61 74 20 73 74 61 72 74 2d 74  mode] at start-t
5820: 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69 6d 65 2e  ime or run-time.
5830: 0a 0a 20 20 53 65 65 20 74 68 65 20 5b 74 68 72  ..  See the [thr
5840: 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 64 6f 63  eading mode] doc
5850: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61  umentation for a
5860: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
5870: 61 74 69 6f 6e 0a 20 20 6f 6e 20 61 73 70 65 63  ation.  on aspec
5880: 74 73 20 6f 66 20 75 73 69 6e 67 20 53 51 4c 69  ts of using SQLi
5890: 74 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72  te in a multithr
58a0: 65 61 64 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e  eaded environmen
58b0: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
58c0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 45 4d  TION {SQLITE_TEM
58d0: 50 5f 53 54 4f 52 45 3d 3c 69 3e 26 6c 74 3b 30  P_STORE=<i>&lt;0
58e0: 20 74 68 72 6f 75 67 68 20 33 26 67 74 3b 3c 2f   through 3&gt;</
58f0: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  i>} {.  This opt
5900: 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65  ion controls whe
5910: 74 68 65 72 20 74 65 6d 70 6f 72 61 72 79 20 66  ther temporary f
5920: 69 6c 65 73 20 61 72 65 20 73 74 6f 72 65 64 20  iles are stored 
5930: 6f 6e 20 64 69 73 6b 20 6f 72 0a 20 20 69 6e 20  on disk or.  in 
5940: 6d 65 6d 6f 72 79 2e 20 20 54 68 65 20 6d 65 61  memory.  The mea
5950: 6e 69 6e 67 73 20 66 6f 72 20 76 61 72 69 6f 75  nings for variou
5960: 73 20 73 65 74 74 69 6e 67 73 20 6f 66 20 74 68  s settings of th
5970: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a  is compile-time.
5980: 20 20 6f 70 74 69 6f 6e 20 61 72 65 20 61 73 20    option are as 
5990: 66 6f 6c 6c 6f 77 73 3a 0a 0a 20 20 3c 74 61 62  follows:..  <tab
59a0: 6c 65 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22  le cellpadding="
59b0: 32 22 20 62 6f 72 64 65 72 3d 22 31 22 3e 0a 20  2" border="1">. 
59c0: 20 3c 74 72 3e 3c 74 68 3e 53 51 4c 49 54 45 5f   <tr><th>SQLITE_
59d0: 54 45 4d 50 5f 53 54 4f 52 45 3c 2f 74 68 3e 3c  TEMP_STORE</th><
59e0: 74 68 3e 4d 65 61 6e 69 6e 67 3c 2f 74 68 3e 3c  th>Meaning</th><
59f0: 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61  /tr>.  <tr><td a
5a00: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c  lign="center">0<
5a10: 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75  /td><td>Always u
5a20: 73 65 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c  se temporary fil
5a30: 65 73 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c  es</td></tr>.  <
5a40: 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  tr><td align="ce
5a50: 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e  nter">1</td><td>
5a60: 55 73 65 20 66 69 6c 65 73 20 62 79 20 64 65 66  Use files by def
5a70: 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f 77 20 74  ault but allow t
5a80: 68 65 0a 20 20 5b 50 52 41 47 4d 41 20 74 65 6d  he.  [PRAGMA tem
5a90: 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64  p_store] command
5aa0: 20 74 6f 20 6f 76 65 72 72 69 64 65 3c 2f 74 64   to override</td
5ab0: 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64  ></tr>.  <tr><td
5ac0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
5ad0: 32 3c 2f 74 64 3e 3c 74 64 3e 55 73 65 20 6d 65  2</td><td>Use me
5ae0: 6d 6f 72 79 20 62 79 20 64 65 66 61 75 6c 74 20  mory by default 
5af0: 62 75 74 20 61 6c 6c 6f 77 20 74 68 65 0a 20 20  but allow the.  
5b00: 5b 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f  [PRAGMA temp_sto
5b10: 72 65 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 6f  re] command to o
5b20: 76 65 72 72 69 64 65 3c 2f 74 64 3e 3c 2f 74 72  verride</td></tr
5b30: 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67  >.  <tr><td alig
5b40: 6e 3d 22 63 65 6e 74 65 72 22 3e 33 3c 2f 74 64  n="center">3</td
5b50: 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75 73 65 20  ><td>Always use 
5b60: 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f 74 72 3e  memory</td></tr>
5b70: 0a 20 20 3c 2f 74 61 62 6c 65 3e 0a 0a 20 20 54  .  </table>..  T
5b80: 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69  he default setti
5b90: 6e 67 20 69 73 20 31 2e 20 20 0a 20 20 41 64 64  ng is 1.  .  Add
5ba0: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
5bb0: 69 6f 6e 20 63 61 6e 20 62 65 20 66 6f 75 6e 64  ion can be found
5bc0: 20 69 6e 20 5b 74 65 6d 70 73 74 6f 72 65 20 7c   in [tempstore |
5bd0: 20 74 65 6d 70 66 69 6c 65 73 2e 68 74 6d 6c 5d   tempfiles.html]
5be0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
5bf0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 52 41 43  ION {SQLITE_TRAC
5c00: 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d 3c 69 3e  E_SIZE_LIMIT=<i>
5c10: 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20 74 68  N</i>} {.  If th
5c20: 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  is macro is defi
5c30: 6e 65 64 20 74 6f 20 61 20 70 6f 73 69 74 69 76  ned to a positiv
5c40: 65 20 69 6e 74 65 67 65 72 20 3c 69 3e 4e 3c 2f  e integer <i>N</
5c50: 69 3e 2c 20 74 68 65 6e 20 74 68 65 20 6c 65 6e  i>, then the len
5c60: 67 74 68 20 6f 66 0a 20 20 73 74 72 69 6e 67 73  gth of.  strings
5c70: 20 61 6e 64 20 42 4c 4f 42 20 74 68 61 74 20 61   and BLOB that a
5c80: 72 65 20 65 78 70 61 6e 64 65 64 20 69 6e 74 6f  re expanded into
5c90: 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e 20 74   parameters in t
5ca0: 68 65 20 6f 75 74 70 75 74 20 6f 66 0a 20 20 5b  he output of.  [
5cb0: 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 5d  sqlite3_trace()]
5cc0: 20 69 73 20 6c 69 6d 69 74 65 64 20 74 6f 20 3c   is limited to <
5cd0: 69 3e 4e 3c 2f 69 3e 20 62 79 74 65 73 2e 20 20  i>N</i> bytes.  
5ce0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
5cf0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 53 45 5f 55  ON {SQLITE_USE_U
5d00: 52 49 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  RI} {.  This opt
5d10: 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b  ion causes the [
5d20: 55 52 49 20 66 69 6c 65 6e 61 6d 65 5d 20 70 72  URI filename] pr
5d30: 6f 63 65 73 73 20 6c 6f 67 69 63 20 74 6f 20 62  ocess logic to b
5d40: 65 20 65 6e 61 62 6c 65 64 20 62 79 20 0a 20 20  e enabled by .  
5d50: 64 65 66 61 75 6c 74 2e 20 20 0a 7d 0a 0a 3c 2f  default.  .}..</
5d60: 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 65  tcl>..<a name="e
5d70: 6e 61 62 6c 65 66 65 61 74 75 72 65 73 22 3e 3c  nablefeatures"><
5d80: 2f 61 3e 0a 3c 68 32 3e 31 2e 35 20 4f 70 74 69  /a>.<h2>1.5 Opti
5d90: 6f 6e 73 20 54 6f 20 45 6e 61 62 6c 65 20 46 65  ons To Enable Fe
5da0: 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20  atures Normally 
5db0: 54 75 72 6e 65 64 20 4f 66 66 3c 2f 68 32 3e 0a  Turned Off</h2>.
5dc0: 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f  .<tcl>.COMPILE_O
5dd0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 41 4c  PTION {SQLITE_AL
5de0: 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f 52 49 54  LOW_URI_AUTHORIT
5df0: 59 7d 20 7b 0a 20 20 5b 55 52 49 20 66 69 6c 65  Y} {.  [URI file
5e00: 6e 61 6d 65 73 5d 20 6e 6f 72 6d 61 6c 6c 79 20  names] normally 
5e10: 74 68 72 6f 77 73 20 61 6e 20 65 72 72 6f 72 20  throws an error 
5e20: 69 66 20 74 68 65 20 61 75 74 68 6f 72 69 74 79  if the authority
5e30: 20 73 65 63 74 69 6f 6e 20 69 73 0a 20 20 6e 6f   section is.  no
5e40: 74 20 65 69 74 68 65 72 20 65 6d 70 74 79 20 6f  t either empty o
5e50: 72 20 22 6c 6f 63 61 6c 68 6f 73 74 22 2e 20 20  r "localhost".  
5e60: 48 6f 77 65 76 65 72 2c 20 69 66 20 53 51 4c 69  However, if SQLi
5e70: 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77  te is compiled w
5e80: 69 74 68 0a 20 20 74 68 65 20 53 51 4c 49 54 45  ith.  the SQLITE
5e90: 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f  _ALLOW_URI_AUTHO
5ea0: 52 49 54 59 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  RITY compile-tim
5eb0: 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74  e option, then t
5ec0: 68 65 20 55 52 49 20 69 73 0a 20 20 63 6f 6e 76  he URI is.  conv
5ed0: 65 72 74 65 64 20 69 6e 74 6f 20 61 20 55 6e 69  erted into a Uni
5ee0: 66 6f 72 6d 20 4e 61 6d 69 6e 67 20 43 6f 6e 76  form Naming Conv
5ef0: 65 6e 74 69 6f 6e 20 28 55 4e 43 29 20 66 69 6c  ention (UNC) fil
5f00: 65 6e 61 6d 65 20 61 6e 64 20 70 61 73 73 65 64  ename and passed
5f10: 0a 20 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 75  .  down to the u
5f20: 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61 74  nderlying operat
5f30: 69 6e 67 20 73 79 73 74 65 6d 20 74 68 61 74 20  ing system that 
5f40: 77 61 79 2e 20 20 0a 20 20 3c 70 3e 0a 20 20 53  way.  .  <p>.  S
5f50: 6f 6d 65 20 66 75 74 75 72 65 20 76 65 72 73 69  ome future versi
5f60: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 61  ons of SQLite ma
5f70: 79 20 63 68 61 6e 67 65 20 74 6f 20 65 6e 61 62  y change to enab
5f80: 6c 65 20 74 68 69 73 20 66 65 61 74 75 72 65 0a  le this feature.
5f90: 20 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a    by default..}.
5fa0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
5fb0: 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43 4f 56  SQLITE_ALLOW_COV
5fc0: 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e  ERING_INDEX_SCAN
5fd0: 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67  =<i>&lt;0 or 1&g
5fe0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  t;</i>} {.  This
5ff0: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 20 6d 61   C-preprocess ma
6000: 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 74  cro determines t
6010: 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69  he default setti
6020: 6e 67 20 6f 66 20 74 68 65 0a 20 20 5b 53 51 4c  ng of the.  [SQL
6030: 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52  ITE_CONFIG_COVER
6040: 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 5d 20  ING_INDEX_SCAN] 
6050: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65  configuration se
6060: 74 74 69 6e 67 2e 20 20 49 74 20 64 65 66 61 75  tting.  It defau
6070: 6c 74 73 0a 20 20 74 6f 20 31 20 28 6f 6e 29 20  lts.  to 1 (on) 
6080: 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68 61 74  which means that
6090: 20 63 6f 76 65 72 69 6e 67 20 69 6e 64 69 63 65   covering indice
60a0: 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 66  s are used for f
60b0: 75 6c 6c 20 74 61 62 6c 65 0a 20 20 73 63 61 6e  ull table.  scan
60c0: 73 20 77 68 65 72 65 20 70 6f 73 73 69 62 6c 65  s where possible
60d0: 2c 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 72 65  , in order to re
60e0: 64 75 63 65 20 49 2f 4f 20 61 6e 64 20 69 6d 70  duce I/O and imp
60f0: 72 6f 76 65 20 70 65 72 66 6f 72 6d 61 6e 63 65  rove performance
6100: 2e 0a 20 20 48 6f 77 65 76 65 72 2c 20 74 68 65  ..  However, the
6110: 20 75 73 65 20 6f 66 20 61 20 63 6f 76 65 72 69   use of a coveri
6120: 6e 67 20 69 6e 64 65 78 20 66 6f 72 20 61 20 66  ng index for a f
6130: 75 6c 6c 20 73 63 61 6e 20 77 69 6c 6c 20 63 61  ull scan will ca
6140: 75 73 65 20 72 65 73 75 6c 74 73 0a 20 20 74 6f  use results.  to
6150: 20 61 70 70 65 61 72 20 69 6e 20 61 20 64 69 66   appear in a dif
6160: 66 65 72 65 6e 74 20 6f 72 64 65 72 20 66 72 6f  ferent order fro
6170: 6d 20 6c 65 67 61 63 79 2c 20 77 68 69 63 68 20  m legacy, which 
6180: 63 6f 75 6c 64 20 63 61 75 73 65 20 73 6f 6d 65  could cause some
6190: 0a 20 20 28 69 6e 63 6f 72 72 65 63 74 6c 79 2d  .  (incorrectly-
61a0: 63 6f 64 65 64 29 20 6c 65 67 61 63 79 20 61 70  coded) legacy ap
61b0: 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20 62 72  plications to br
61c0: 65 61 6b 2e 20 20 48 65 6e 63 65 2c 20 74 68 65  eak.  Hence, the
61d0: 20 63 6f 76 65 72 69 6e 67 0a 20 20 69 6e 64 65   covering.  inde
61e0: 78 20 73 63 61 6e 20 6f 70 74 69 6f 6e 20 63 61  x scan option ca
61f0: 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 61 74  n be disabled at
6200: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 6e   compile-time on
6210: 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 77 68   systems that wh
6220: 61 74 0a 20 20 74 6f 20 6d 69 6e 69 6d 69 7a 65  at.  to minimize
6230: 20 74 68 65 69 72 20 72 69 73 6b 20 6f 66 20 65   their risk of e
6240: 78 70 6f 73 69 6e 67 20 65 72 72 6f 72 73 20 69  xposing errors i
6250: 6e 20 6c 65 67 61 63 79 20 61 70 70 6c 69 63 61  n legacy applica
6260: 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  tions..}..COMPIL
6270: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
6280: 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d 45  _ENABLE_8_3_NAME
6290: 53 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 32 26  S=<i>&lt;1 or 2&
62a0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20  gt;</i>} {.  If 
62b0: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
62c0: 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66  sor macro is def
62d0: 69 6e 65 64 2c 20 74 68 65 6e 20 65 78 74 72 61  ined, then extra
62e0: 20 63 6f 64 65 20 69 73 0a 20 20 69 6e 63 6c 75   code is.  inclu
62f0: 64 65 64 20 74 68 61 74 20 61 6c 6c 6f 77 73 20  ded that allows 
6300: 53 51 4c 69 74 65 20 74 6f 20 66 75 6e 63 74 69  SQLite to functi
6310: 6f 6e 20 6f 6e 20 61 20 66 69 6c 65 73 79 73 74  on on a filesyst
6320: 65 6d 20 74 68 61 74 0a 20 20 6f 6e 6c 79 20 73  em that.  only s
6330: 75 70 70 6f 72 74 20 38 2b 33 20 66 69 6c 65 6e  upport 8+3 filen
6340: 61 6d 65 73 2e 20 20 49 66 20 74 68 65 20 76 61  ames.  If the va
6350: 6c 75 65 20 6f 66 20 74 68 69 73 20 6d 61 63 72  lue of this macr
6360: 6f 20 69 73 20 31 2c 0a 20 20 74 68 65 6e 20 74  o is 1,.  then t
6370: 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76  he default behav
6380: 69 6f 72 20 69 73 20 74 6f 20 63 6f 6e 74 69 6e  ior is to contin
6390: 75 65 20 74 6f 20 75 73 65 20 6c 6f 6e 67 20 66  ue to use long f
63a0: 69 6c 65 6e 61 6d 65 73 20 61 6e 64 0a 20 20 74  ilenames and.  t
63b0: 6f 20 6f 6e 6c 79 20 75 73 65 20 38 2b 33 20 66  o only use 8+3 f
63c0: 69 6c 65 6e 61 6d 65 73 20 69 66 20 74 68 65 20  ilenames if the 
63d0: 0a 20 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  .  database conn
63e0: 65 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 65 64  ection is opened
63f0: 20 75 73 69 6e 67 20 5b 55 52 49 20 66 69 6c 65   using [URI file
6400: 6e 61 6d 65 73 5d 20 77 69 74 68 0a 20 20 74 68  names] with.  th
6410: 65 20 22 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73  e "<tt>8_3_names
6420: 3d 31 3c 2f 74 74 3e 22 20 71 75 65 72 79 20 70  =1</tt>" query p
6430: 61 72 61 6d 65 74 65 72 2e 20 20 49 66 20 74 68  arameter.  If th
6440: 65 20 76 61 6c 75 65 20 6f 66 0a 20 20 74 68 69  e value of.  thi
6450: 73 20 6d 61 63 72 6f 20 69 73 20 32 2c 20 74 68  s macro is 2, th
6460: 65 6e 20 74 68 65 20 75 73 65 20 6f 66 20 38 2b  en the use of 8+
6470: 33 20 66 69 6c 65 6e 61 6d 65 73 20 62 65 63 6f  3 filenames beco
6480: 6d 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a  mes the default.
6490: 20 20 62 75 74 20 6d 61 79 20 62 65 20 64 69 73    but may be dis
64a0: 61 62 6c 65 64 20 6f 6e 20 75 73 69 6e 67 20 74  abled on using t
64b0: 68 65 20 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73  he <tt>8_3_names
64c0: 3d 30 3c 2f 74 74 3e 20 71 75 65 72 79 20 70 61  =0</tt> query pa
64d0: 72 61 6d 65 74 65 72 2e 0a 20 20 53 65 65 20 0a  rameter..  See .
64e0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
64f0: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
6500: 5f 41 50 49 5f 41 52 4d 4f 52 7d 20 7b 0a 20 20  _API_ARMOR} {.  
6510: 57 68 65 6e 20 64 65 66 69 6e 65 64 2c 20 74 68  When defined, th
6520: 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f  is C-preprocesso
6530: 72 20 6d 61 63 72 6f 20 61 63 74 69 76 61 74 65  r macro activate
6540: 73 20 65 78 74 72 61 20 63 6f 64 65 20 74 68 61  s extra code tha
6550: 74 0a 20 20 61 74 74 65 6d 70 74 73 20 74 6f 20  t.  attempts to 
6560: 64 65 74 65 63 74 20 6d 69 73 75 73 65 20 6f 66  detect misuse of
6570: 20 74 68 65 20 53 51 4c 69 74 65 20 41 50 49 2c   the SQLite API,
6580: 20 73 75 63 68 20 61 73 20 70 61 73 73 69 6e 67   such as passing
6590: 20 69 6e 20 4e 55 4c 4c 0a 20 20 70 6f 69 6e 74   in NULL.  point
65a0: 65 72 73 20 74 6f 20 72 65 71 75 69 72 65 64 20  ers to required 
65b0: 70 61 72 61 6d 65 74 65 72 73 20 6f 72 20 75 73  parameters or us
65c0: 69 6e 67 20 6f 62 6a 65 63 74 73 20 61 66 74 65  ing objects afte
65d0: 72 20 74 68 65 79 20 68 61 76 65 20 62 65 65 6e  r they have been
65e0: 0a 20 20 64 65 73 74 72 6f 79 65 64 2e 0a 7d 0a  .  destroyed..}.
65f0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
6600: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 41  {SQLITE_ENABLE_A
6610: 54 4f 4d 49 43 5f 57 52 49 54 45 7d 20 7b 0a 20  TOMIC_WRITE} {. 
6620: 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72   If this C-prepr
6630: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73  ocessor macro is
6640: 20 64 65 66 69 6e 65 64 20 61 6e 64 20 69 66 20   defined and if 
6650: 74 68 65 0a 20 20 78 44 65 76 69 63 65 43 68 61  the.  xDeviceCha
6660: 72 61 63 74 65 72 69 73 74 69 63 73 20 6d 65 74  racteristics met
6670: 68 6f 64 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f  hod of [sqlite3_
6680: 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65  io_methods] obje
6690: 63 74 20 66 6f 72 0a 20 20 61 20 64 61 74 61 62  ct for.  a datab
66a0: 61 73 65 20 66 69 6c 65 20 72 65 70 6f 72 74 73  ase file reports
66b0: 20 28 76 69 61 20 6f 6e 65 20 6f 66 20 74 68 65   (via one of the
66c0: 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41   [SQLITE_IOCAP_A
66d0: 54 4f 4d 49 43 5d 20 62 69 74 73 29 0a 20 20 74  TOMIC] bits).  t
66e0: 68 61 74 20 74 68 65 20 66 69 6c 65 73 79 73 74  hat the filesyst
66f0: 65 6d 20 73 75 70 70 6f 72 74 73 20 61 74 6f 6d  em supports atom
6700: 69 63 20 77 72 69 74 65 73 20 61 6e 64 20 69 66  ic writes and if
6710: 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 20   a transaction. 
6720: 20 69 6e 76 6f 6c 76 65 73 20 61 20 63 68 61 6e   involves a chan
6730: 67 65 20 74 6f 20 6f 6e 6c 79 20 61 20 73 69 6e  ge to only a sin
6740: 67 6c 65 20 70 61 67 65 20 6f 66 20 74 68 65 20  gle page of the 
6750: 64 61 74 61 62 61 73 65 20 66 69 6c 65 2c 0a 20  database file,. 
6760: 20 74 68 65 6e 20 74 68 65 20 74 72 61 6e 73 61   then the transa
6770: 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 73 20 77 69  ction commits wi
6780: 74 68 20 6a 75 73 74 20 61 20 73 69 6e 67 6c 65  th just a single
6790: 20 77 72 69 74 65 20 72 65 71 75 65 73 74 20 6f   write request o
67a0: 66 0a 20 20 61 20 73 69 6e 67 6c 65 20 70 61 67  f.  a single pag
67b0: 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  e of the databas
67c0: 65 20 61 6e 64 20 6e 6f 20 72 6f 6c 6c 62 61 63  e and no rollbac
67d0: 6b 20 6a 6f 75 72 6e 61 6c 20 69 73 20 63 72 65  k journal is cre
67e0: 61 74 65 64 0a 20 20 6f 72 20 77 72 69 74 74 65  ated.  or writte
67f0: 6e 2e 20 20 4f 6e 20 66 69 6c 65 73 79 73 74 65  n.  On filesyste
6800: 6d 73 20 74 68 61 74 20 73 75 70 70 6f 72 74 20  ms that support 
6810: 61 74 6f 6d 69 63 20 77 72 69 74 65 73 2c 20 74  atomic writes, t
6820: 68 69 73 0a 20 20 6f 70 74 69 6d 69 7a 61 74 69  his.  optimizati
6830: 6f 6e 20 63 61 6e 20 72 65 73 75 6c 74 20 69 6e  on can result in
6840: 20 73 69 67 6e 69 66 69 63 61 6e 74 20 73 70 65   significant spe
6850: 65 64 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 20  ed improvements 
6860: 66 6f 72 0a 20 20 73 6d 61 6c 6c 20 75 70 64 61  for.  small upda
6870: 74 65 73 2e 20 20 48 6f 77 65 76 65 72 2c 20 66  tes.  However, f
6880: 65 77 20 66 69 6c 65 73 79 73 74 65 6d 73 20 73  ew filesystems s
6890: 75 70 70 6f 72 74 20 74 68 69 73 20 63 61 70 61  upport this capa
68a0: 62 69 6c 69 74 79 0a 20 20 61 6e 64 20 74 68 65  bility.  and the
68b0: 20 63 6f 64 65 20 70 61 74 68 73 20 74 68 61 74   code paths that
68c0: 20 63 68 65 63 6b 20 66 6f 72 20 74 68 69 73 20   check for this 
68d0: 63 61 70 61 62 69 6c 69 74 79 20 73 6c 6f 77 20  capability slow 
68e0: 64 6f 77 6e 20 77 72 69 74 65 0a 20 20 70 65 72  down write.  per
68f0: 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 79 73 74  formance on syst
6900: 65 6d 73 20 74 68 61 74 20 6c 61 63 6b 20 61 74  ems that lack at
6910: 6f 6d 69 63 20 77 72 69 74 65 20 63 61 70 61 62  omic write capab
6920: 69 6c 69 74 79 2c 20 73 6f 20 74 68 69 73 0a 20  ility, so this. 
6930: 20 66 65 61 74 75 72 65 20 69 73 20 64 69 73 61   feature is disa
6940: 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e  bled by default.
6950: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6960: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
6970: 45 5f 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44 41 54  E_COLUMN_METADAT
6980: 41 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  A} {.  When this
6990: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C-preprocessor 
69a0: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
69b0: 2c 20 53 51 4c 69 74 65 20 69 6e 63 6c 75 64 65  , SQLite include
69c0: 73 20 73 6f 6d 65 0a 20 20 61 64 64 69 74 69 6f  s some.  additio
69d0: 6e 61 6c 20 41 50 49 73 20 74 68 61 74 20 70 72  nal APIs that pr
69e0: 6f 76 69 64 65 20 63 6f 6e 76 65 6e 69 65 6e 74  ovide convenient
69f0: 20 61 63 63 65 73 73 20 74 6f 20 6d 65 74 61 2d   access to meta-
6a00: 64 61 74 61 20 61 62 6f 75 74 0a 20 20 74 61 62  data about.  tab
6a10: 6c 65 73 20 61 6e 64 20 71 75 65 72 69 65 73 2e  les and queries.
6a20: 20 20 54 68 65 20 41 50 49 73 20 74 68 61 74 20    The APIs that 
6a30: 61 72 65 20 65 6e 61 62 6c 65 64 20 62 79 20 74  are enabled by t
6a40: 68 69 73 20 6f 70 74 69 6f 6e 20 61 72 65 3a 0a  his option are:.
6a50: 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 20 5b  .  <ul>.  <li> [
6a60: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
6a70: 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 29 5d 20  atabase_name()] 
6a80: 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71  </li>.  <li> [sq
6a90: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
6aa0: 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 29 5d 20  abase_name16()] 
6ab0: 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71  </li>.  <li> [sq
6ac0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
6ad0: 6c 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e  le_name()] </li>
6ae0: 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33  .  <li> [sqlite3
6af0: 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61  _column_table_na
6b00: 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20  me16()] </li>.  
6b10: 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f  <li> [sqlite3_co
6b20: 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
6b30: 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e  ()] </li>.  <li>
6b40: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
6b50: 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 29  _origin_name16()
6b60: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 2f 75 6c 3e 0a  ] </li>.  </ul>.
6b70: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6b80: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
6b90: 5f 44 42 53 54 41 54 5f 56 54 41 42 7d 20 7b 0a  _DBSTAT_VTAB} {.
6ba0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
6bb0: 61 62 6c 65 73 20 74 68 65 20 5b 64 62 73 74 61  ables the [dbsta
6bc0: 74 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 5d  t virtual table]
6bd0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
6be0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
6bf0: 4c 45 5f 45 58 50 4c 41 49 4e 5f 43 4f 4d 4d 45  LE_EXPLAIN_COMME
6c00: 4e 54 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  NTS} {.  This op
6c10: 74 69 6f 6e 20 61 64 64 73 20 65 78 74 72 61 20  tion adds extra 
6c20: 6c 6f 67 69 63 20 74 6f 20 53 51 4c 69 74 65 20  logic to SQLite 
6c30: 74 68 61 74 20 69 6e 73 65 72 74 73 20 63 6f 6d  that inserts com
6c40: 6d 65 6e 74 20 74 65 78 74 20 69 6e 74 6f 20 74  ment text into t
6c50: 68 65 0a 20 20 6f 75 74 70 75 74 20 6f 66 20 5b  he.  output of [
6c60: 45 58 50 4c 41 49 4e 5d 2e 20 20 54 68 65 73 65  EXPLAIN].  These
6c70: 20 65 78 74 72 61 20 63 6f 6d 6d 65 6e 74 73 20   extra comments 
6c80: 75 73 65 20 65 78 74 72 61 20 6d 65 6d 6f 72 79  use extra memory
6c90: 2c 20 74 68 75 73 0a 20 20 6d 61 6b 69 6e 67 20  , thus.  making 
6ca0: 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
6cb0: 65 6e 74 73 5d 20 6c 61 72 67 65 72 20 61 6e 64  ents] larger and
6cc0: 20 76 65 72 79 20 73 6c 69 67 68 74 6c 79 20 73   very slightly s
6cd0: 6c 6f 77 65 72 2c 20 61 6e 64 20 73 6f 20 74 68  lower, and so th
6ce0: 65 79 20 61 72 65 0a 20 20 74 75 72 6e 65 64 20  ey are.  turned 
6cf0: 6f 66 66 20 62 79 20 64 65 66 61 75 6c 74 20 61  off by default a
6d00: 6e 64 20 69 6e 20 6d 6f 73 74 20 61 70 70 6c 69  nd in most appli
6d10: 63 61 74 69 6f 6e 2e 20 20 42 75 74 20 73 6f 6d  cation.  But som
6d20: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20  e applications, 
6d30: 73 75 63 68 0a 20 20 61 73 20 74 68 65 20 5b 63  such.  as the [c
6d40: 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c  ommand-line shel
6d50: 6c 5d 20 66 6f 72 20 53 51 4c 69 74 65 2c 20 76  l] for SQLite, v
6d60: 61 6c 75 65 20 63 6c 61 72 69 74 79 20 6f 66 20  alue clarity of 
6d70: 45 58 50 4c 41 49 4e 20 6f 75 74 70 75 74 0a 20  EXPLAIN output. 
6d80: 20 6f 76 65 72 20 72 61 77 20 70 65 72 66 6f 72   over raw perfor
6d90: 6d 61 6e 63 65 20 61 6e 64 20 73 6f 20 74 68 69  mance and so thi
6da0: 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
6db0: 70 74 69 6f 6e 20 69 73 20 61 76 61 69 6c 61 62  ption is availab
6dc0: 6c 65 20 74 6f 20 74 68 65 6d 2e 0a 20 20 54 68  le to them..  Th
6dd0: 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  e SQLITE_ENABLE_
6de0: 45 58 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53  EXPLAIN_COMMENTS
6df0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
6e00: 74 69 6f 6e 20 69 73 20 61 6c 73 6f 20 65 6e 61  tion is also ena
6e10: 62 6c 65 64 0a 20 20 61 75 74 6f 6d 61 74 69 63  bled.  automatic
6e20: 61 6c 6c 79 20 69 66 20 5b 53 51 4c 49 54 45 5f  ally if [SQLITE_
6e30: 44 45 42 55 47 5d 20 69 73 20 65 6e 61 62 6c 65  DEBUG] is enable
6e40: 64 2e 0a 7d 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  d..}...COMPILE_O
6e50: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
6e60: 41 42 4c 45 5f 46 54 53 33 7d 20 7b 0a 20 20 57  ABLE_FTS3} {.  W
6e70: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
6e80: 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68  is defined in th
6e90: 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d  e [amalgamation]
6ea0: 2c 20 76 65 72 73 69 6f 6e 20 33 0a 20 20 6f 66  , version 3.  of
6eb0: 20 74 68 65 20 66 75 6c 6c 2d 74 65 78 74 20 73   the full-text s
6ec0: 65 61 72 63 68 20 65 6e 67 69 6e 65 20 69 73 20  earch engine is 
6ed0: 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75 69  added to the bui
6ee0: 6c 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ld automatically
6ef0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
6f00: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
6f10: 4c 45 5f 46 54 53 33 5f 50 41 52 45 4e 54 48 45  LE_FTS3_PARENTHE
6f20: 53 49 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  SIS} {.  This op
6f30: 74 69 6f 6e 20 6d 6f 64 69 66 69 65 73 20 74 68  tion modifies th
6f40: 65 20 71 75 65 72 79 20 70 61 74 74 65 72 6e 20  e query pattern 
6f50: 70 61 72 73 65 72 20 69 6e 20 46 54 53 33 20 73  parser in FTS3 s
6f60: 75 63 68 20 74 68 61 74 20 69 74 0a 20 20 73 75  uch that it.  su
6f70: 70 70 6f 72 74 73 20 6f 70 65 72 61 74 6f 72 73  pports operators
6f80: 20 41 4e 44 20 61 6e 64 20 4e 4f 54 20 28 69 6e   AND and NOT (in
6f90: 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 65   addition to the
6fa0: 20 75 73 75 61 6c 20 4f 52 20 61 6e 64 20 4e 45   usual OR and NE
6fb0: 41 52 29 0a 20 20 61 6e 64 20 61 6c 73 6f 20 61  AR).  and also a
6fc0: 6c 6c 6f 77 73 20 71 75 65 72 79 20 65 78 70 72  llows query expr
6fd0: 65 73 73 69 6f 6e 73 20 74 6f 20 63 6f 6e 74 61  essions to conta
6fe0: 69 6e 20 6e 65 73 74 65 64 20 70 61 72 65 6e 74  in nested parent
6ff0: 68 65 73 69 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  hesis..}..COMPIL
7000: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7010: 5f 45 4e 41 42 4c 45 5f 46 54 53 34 7d 20 7b 0a  _ENABLE_FTS4} {.
7020: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
7030: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e  on is defined in
7040: 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69   the [amalgamati
7050: 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e 73 20 33 20  on], versions 3 
7060: 61 6e 64 20 34 0a 20 20 6f 66 20 74 68 65 20 66  and 4.  of the f
7070: 75 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20  ull-text search 
7080: 65 6e 67 69 6e 65 20 69 73 20 61 64 64 65 64 20  engine is added 
7090: 74 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75 74  to the build aut
70a0: 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43  omatically..}..C
70b0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
70c0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53  QLITE_ENABLE_FTS
70d0: 35 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  5} {.  When this
70e0: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
70f0: 65 64 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c 67  ed in the [amalg
7100: 61 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73 69 6f  amation], versio
7110: 6e 73 20 35 0a 20 20 6f 66 20 74 68 65 20 66 75  ns 5.  of the fu
7120: 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20 65  ll-text search e
7130: 6e 67 69 6e 65 20 28 5b 66 74 73 35 5d 29 20 69  ngine ([fts5]) i
7140: 73 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62  s added to the b
7150: 75 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61 6c  uild automatical
7160: 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ly..}..COMPILE_O
7170: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
7180: 41 42 4c 45 5f 49 43 55 7d 20 7b 0a 20 20 54 68  ABLE_ICU} {.  Th
7190: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
71a0: 20 74 68 65 20 0a 20 20 5b 68 74 74 70 3a 2f 2f   the .  [http://
71b0: 77 77 77 2e 69 63 75 2d 70 72 6f 6a 65 63 74 2e  www.icu-project.
71c0: 6f 72 67 2f 20 7c 20 49 6e 74 65 72 6e 61 74 69  org/ | Internati
71d0: 6f 6e 61 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73 20  onal Components 
71e0: 66 6f 72 20 55 6e 69 63 6f 64 65 5d 0a 20 20 6f  for Unicode].  o
71f0: 72 20 22 49 43 55 22 20 65 78 74 65 6e 73 69 6f  r "ICU" extensio
7200: 6e 20 74 6f 20 53 51 4c 69 74 65 20 74 6f 20 62  n to SQLite to b
7210: 65 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62  e added to the b
7220: 75 69 6c 64 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49  uild.  .}..COMPI
7230: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
7240: 45 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43 45  E_ENABLE_IOTRACE
7250: 7d 20 7b 0a 20 20 57 68 65 6e 20 62 6f 74 68 20  } {.  When both 
7260: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
7270: 61 6e 64 20 74 68 65 20 5b 43 6f 6d 6d 61 6e 64  and the [Command
7280: 20 4c 69 6e 65 20 49 6e 74 65 72 66 61 63 65 5d   Line Interface]
7290: 20 28 43 4c 49 29 20 61 72 65 20 62 6f 74 68 20   (CLI) are both 
72a0: 0a 20 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  .  compiled with
72b0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 74 68   this option, th
72c0: 65 6e 20 74 68 65 20 43 4c 49 20 70 72 6f 76 69  en the CLI provi
72d0: 64 65 73 20 61 6e 20 65 78 74 72 61 20 63 6f 6d  des an extra com
72e0: 6d 61 6e 64 0a 20 20 6e 61 6d 65 64 20 22 2e 69  mand.  named ".i
72f0: 6f 74 72 61 63 65 22 20 74 68 61 74 20 70 72 6f  otrace" that pro
7300: 76 69 64 65 73 20 61 20 6c 6f 77 2d 6c 65 76 65  vides a low-leve
7310: 6c 20 6c 6f 67 20 6f 66 20 49 2f 4f 20 61 63 74  l log of I/O act
7320: 69 76 69 74 79 2e 0a 20 20 54 68 69 73 20 6f 70  ivity..  This op
7330: 74 69 6f 6e 20 69 73 20 65 78 70 65 72 69 6d 65  tion is experime
7340: 6e 74 61 6c 20 61 6e 64 20 6d 61 79 20 62 65 20  ntal and may be 
7350: 64 69 73 63 6f 6e 74 69 6e 75 65 64 20 69 6e 20  discontinued in 
7360: 61 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65  a future release
7370: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
7380: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
7390: 4c 45 5f 4a 53 4f 4e 31 7d 20 7b 0a 20 20 57 68  LE_JSON1} {.  Wh
73a0: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
73b0: 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65  s defined in the
73c0: 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c   [amalgamation],
73d0: 20 74 68 65 0a 20 20 5b 4a 53 4f 4e 20 53 51 4c   the.  [JSON SQL
73e0: 20 66 75 6e 63 74 69 6f 6e 73 5d 20 61 72 65 20   functions] are 
73f0: 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75 69  added to the bui
7400: 6c 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ld automatically
7410: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
7420: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
7430: 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45  LE_LOCKING_STYLE
7440: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
7450: 6e 20 65 6e 61 62 6c 65 73 20 61 64 64 69 74 69  n enables additi
7460: 6f 6e 61 6c 20 6c 6f 67 69 63 20 69 6e 20 74 68  onal logic in th
7470: 65 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20 6c  e OS interface l
7480: 61 79 65 72 20 66 6f 72 0a 20 20 4d 61 63 20 4f  ayer for.  Mac O
7490: 53 20 58 2e 20 54 68 65 20 61 64 64 69 74 69 6f  S X. The additio
74a0: 6e 61 6c 20 6c 6f 67 69 63 20 61 74 74 65 6d 70  nal logic attemp
74b0: 74 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ts to determine 
74c0: 74 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 0a  the type of the.
74d0: 20 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 69 6c    underlying fil
74e0: 65 73 79 73 74 65 6d 20 61 6e 64 20 63 68 6f 6f  esystem and choo
74f0: 73 65 20 61 6e 64 20 61 6c 74 65 72 6e 61 74 69  se and alternati
7500: 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61 74  ve locking strat
7510: 65 67 79 0a 20 20 74 68 61 74 20 77 6f 72 6b 73  egy.  that works
7520: 20 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 20 74   correctly for t
7530: 68 61 74 20 66 69 6c 65 73 79 73 74 65 6d 20 74  hat filesystem t
7540: 79 70 65 2e 20 46 69 76 65 20 6c 6f 63 6b 69 6e  ype. Five lockin
7550: 67 20 73 74 72 61 74 65 67 69 65 73 20 0a 20 20  g strategies .  
7560: 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3a 0a 0a  are available:..
7570: 20 20 3c 75 6c 3e 0a 20 20 20 20 3c 6c 69 3e 20    <ul>.    <li> 
7580: 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74  POSIX locking st
7590: 79 6c 65 2e 20 54 68 69 73 20 69 73 20 74 68 65  yle. This is the
75a0: 20 64 65 66 61 75 6c 74 20 6c 6f 63 6b 69 6e 67   default locking
75b0: 20 73 74 79 6c 65 20 61 6e 64 20 74 68 65 0a 20   style and the. 
75c0: 20 20 20 20 20 20 20 20 73 74 79 6c 65 20 75 73          style us
75d0: 65 64 20 62 79 20 6f 74 68 65 72 20 28 6e 6f 6e  ed by other (non
75e0: 20 4d 61 63 20 4f 53 20 58 29 20 55 6e 69 78 65   Mac OS X) Unixe
75f0: 73 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74  s. Locks are obt
7600: 61 69 6e 65 64 20 61 6e 64 20 0a 20 20 20 20 20  ained and .     
7610: 20 20 20 20 72 65 6c 65 61 73 65 64 20 75 73 69      released usi
7620: 6e 67 20 74 68 65 20 66 63 6e 74 6c 28 29 20 73  ng the fcntl() s
7630: 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20  ystem call...   
7640: 20 3c 6c 69 3e 20 41 46 50 20 6c 6f 63 6b 69 6e   <li> AFP lockin
7650: 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c 6f  g style. This lo
7660: 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20 75  cking style is u
7670: 73 65 64 20 66 6f 72 20 6e 65 74 77 6f 72 6b 20  sed for network 
7680: 66 69 6c 65 20 0a 20 20 20 20 20 20 20 20 20 73  file .         s
7690: 79 73 74 65 6d 73 20 74 68 61 74 20 75 73 65 20  ystems that use 
76a0: 74 68 65 20 41 46 50 20 28 41 70 70 6c 65 20 46  the AFP (Apple F
76b0: 69 6c 69 6e 67 20 50 72 6f 74 6f 63 6f 6c 29 20  iling Protocol) 
76c0: 70 72 6f 74 6f 63 6f 6c 2e 20 4c 6f 63 6b 73 0a  protocol. Locks.
76d0: 20 20 20 20 20 20 20 20 20 61 72 65 20 6f 62 74           are obt
76e0: 61 69 6e 65 64 20 62 79 20 63 61 6c 6c 69 6e 67  ained by calling
76f0: 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 75 6e   the library fun
7700: 63 74 69 6f 6e 20 5f 41 46 50 46 53 53 65 74 4c  ction _AFPFSSetL
7710: 6f 63 6b 28 29 2e 0a 0a 20 20 20 20 3c 6c 69 3e  ock()...    <li>
7720: 20 46 6c 6f 63 6b 20 6c 6f 63 6b 69 6e 67 20 73   Flock locking s
7730: 74 79 6c 65 2e 20 54 68 69 73 20 69 73 20 75 73  tyle. This is us
7740: 65 64 20 66 6f 72 20 66 69 6c 65 2d 73 79 73 74  ed for file-syst
7750: 65 6d 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 0a  ems that do not.
7760: 20 20 20 20 20 20 20 20 20 73 75 70 70 6f 72 74           support
7770: 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73   POSIX locking s
7780: 74 79 6c 65 2e 20 4c 6f 63 6b 73 20 61 72 65 20  tyle. Locks are 
7790: 6f 62 74 61 69 6e 65 64 20 61 6e 64 20 72 65 6c  obtained and rel
77a0: 65 61 73 65 64 20 75 73 69 6e 67 0a 20 20 20 20  eased using.    
77b0: 20 20 20 20 20 74 68 65 20 66 6c 6f 63 6b 28 29       the flock()
77c0: 20 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20   system call... 
77d0: 20 20 20 3c 6c 69 3e 20 44 6f 74 2d 66 69 6c 65     <li> Dot-file
77e0: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20   locking style. 
77f0: 54 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79  This locking sty
7800: 6c 65 20 69 73 20 75 73 65 64 20 77 68 65 6e 20  le is used when 
7810: 6e 65 69 74 68 65 72 0a 20 20 20 20 20 20 20 20  neither.        
7820: 20 66 6c 6f 63 6b 20 6e 6f 72 20 50 4f 53 49 58   flock nor POSIX
7830: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73 20   locking styles 
7840: 61 72 65 20 73 75 70 70 6f 72 74 65 64 20 62 79  are supported by
7850: 20 74 68 65 20 66 69 6c 65 20 73 79 73 74 65 6d   the file system
7860: 2e 0a 20 20 20 20 20 20 20 20 20 44 61 74 61 62  ..         Datab
7870: 61 73 65 20 6c 6f 63 6b 73 20 61 72 65 20 6f 62  ase locks are ob
7880: 74 61 69 6e 65 64 20 62 79 20 63 72 65 61 74 69  tained by creati
7890: 6e 67 20 61 6e 64 20 65 6e 74 72 79 20 69 6e 20  ng and entry in 
78a0: 74 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d 0a  the file-system.
78b0: 20 20 20 20 20 20 20 20 20 61 74 20 61 20 77 65           at a we
78c0: 6c 6c 2d 6b 6e 6f 77 6e 20 6c 6f 63 61 74 69 6f  ll-known locatio
78d0: 6e 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68  n relative to th
78e0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
78f0: 28 61 20 22 64 6f 74 2d 66 69 6c 65 22 29 0a 20  (a "dot-file"). 
7900: 20 20 20 20 20 20 20 20 61 6e 64 20 72 65 6c 69          and reli
7910: 6e 71 75 69 73 68 65 64 20 62 79 20 64 65 6c 65  nquished by dele
7920: 74 69 6e 67 20 74 68 65 20 73 61 6d 65 20 66 69  ting the same fi
7930: 6c 65 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 4e 6f  le...    <li> No
7940: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20   locking style. 
7950: 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 61  If none of the a
7960: 62 6f 76 65 20 63 61 6e 20 62 65 20 73 75 70 70  bove can be supp
7970: 6f 72 74 65 64 2c 20 74 68 69 73 20 0a 20 20 20  orted, this .   
7980: 20 20 20 20 20 20 6c 6f 63 6b 69 6e 67 20 73 74        locking st
7990: 79 6c 65 20 69 73 20 75 73 65 64 2e 20 4e 6f 20  yle is used. No 
79a0: 64 61 74 61 62 61 73 65 20 6c 6f 63 6b 69 6e 67  database locking
79b0: 20 6d 65 63 68 61 6e 69 73 6d 20 69 73 20 75 73   mechanism is us
79c0: 65 64 2e 20 57 68 65 6e 0a 20 20 20 20 20 20 20  ed. When.       
79d0: 20 20 74 68 69 73 20 73 79 73 74 65 6d 20 69 73    this system is
79e0: 20 75 73 65 64 20 69 74 20 69 73 20 6e 6f 74 20   used it is not 
79f0: 73 61 66 65 20 66 6f 72 20 61 20 73 69 6e 67 6c  safe for a singl
7a00: 65 20 64 61 74 61 62 61 73 65 20 74 6f 20 62 65  e database to be
7a10: 0a 20 20 20 20 20 20 20 20 20 61 63 63 65 73 73  .         access
7a20: 65 64 20 62 79 20 6d 75 6c 74 69 70 6c 65 20 63  ed by multiple c
7a30: 6c 69 65 6e 74 73 2e 0a 20 20 3c 2f 75 6c 3e 0a  lients..  </ul>.
7a40: 0a 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c  .  Additionally,
7a50: 20 66 69 76 65 20 65 78 74 72 61 20 5b 56 46 53   five extra [VFS
7a60: 5d 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  ] implementation
7a70: 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 61  s are provided a
7a80: 73 20 77 65 6c 6c 20 61 73 20 74 68 65 0a 20 20  s well as the.  
7a90: 64 65 66 61 75 6c 74 2e 20 42 79 20 73 70 65 63  default. By spec
7aa0: 69 66 79 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68  ifying one of th
7ab0: 65 20 65 78 74 72 61 20 56 46 53 20 69 6d 70 6c  e extra VFS impl
7ac0: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 0a 20 20 77  ementations .  w
7ad0: 68 65 6e 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c  hen calling [sql
7ae0: 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c  ite3_open_v2()],
7af0: 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20   an application 
7b00: 6d 61 79 20 62 79 70 61 73 73 20 74 68 65 20 66  may bypass the f
7b10: 69 6c 65 2d 73 79 73 74 65 6d 0a 20 20 64 65 74  ile-system.  det
7b20: 65 63 74 69 6f 6e 20 6c 6f 67 69 63 20 61 6e 64  ection logic and
7b30: 20 65 78 70 6c 69 63 69 74 6c 79 20 73 65 6c 65   explicitly sele
7b40: 63 74 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 62  ct one of the ab
7b50: 6f 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  ove locking styl
7b60: 65 73 2e 20 54 68 65 0a 20 20 66 69 76 65 20 65  es. The.  five e
7b70: 78 74 72 61 20 5b 56 46 53 5d 20 69 6d 70 6c 65  xtra [VFS] imple
7b80: 6d 65 6e 74 61 74 69 6f 6e 73 20 61 72 65 20 63  mentations are c
7b90: 61 6c 6c 65 64 20 22 75 6e 69 78 2d 70 6f 73 69  alled "unix-posi
7ba0: 78 22 2c 20 22 75 6e 69 78 2d 61 66 70 22 2c 0a  x", "unix-afp",.
7bb0: 20 20 22 75 6e 69 78 2d 66 6c 6f 63 6b 22 2c 20    "unix-flock", 
7bc0: 22 75 6e 69 78 2d 64 6f 74 66 69 6c 65 22 20 61  "unix-dotfile" a
7bd0: 6e 64 20 22 75 6e 69 78 2d 6e 6f 6e 65 22 2e 0a  nd "unix-none"..
7be0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
7bf0: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
7c00: 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45  _MEMORY_MANAGEME
7c10: 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  NT} {.  This opt
7c20: 69 6f 6e 20 61 64 64 73 20 65 78 74 72 61 20 6c  ion adds extra l
7c30: 6f 67 69 63 20 74 6f 20 53 51 4c 69 74 65 20 74  ogic to SQLite t
7c40: 68 61 74 20 61 6c 6c 6f 77 73 20 69 74 20 74 6f  hat allows it to
7c50: 20 72 65 6c 65 61 73 65 20 75 6e 75 73 65 64 0a   release unused.
7c60: 20 20 6d 65 6d 6f 72 79 20 75 70 6f 6e 20 72 65    memory upon re
7c70: 71 75 65 73 74 2e 20 20 54 68 69 73 20 6f 70 74  quest.  This opt
7c80: 69 6f 6e 20 6d 75 73 74 20 62 65 20 65 6e 61 62  ion must be enab
7c90: 6c 65 64 20 69 6e 20 6f 72 64 65 72 20 66 6f 72  led in order for
7ca0: 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f   the.  [sqlite3_
7cb0: 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29  release_memory()
7cc0: 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 77  ] interface to w
7cd0: 6f 72 6b 2e 20 20 49 66 20 74 68 69 73 20 63 6f  ork.  If this co
7ce0: 6d 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f 70 74  mpile-time.  opt
7cf0: 69 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65 64 2c  ion is not used,
7d00: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65   the [sqlite3_re
7d10: 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20  lease_memory()] 
7d20: 69 6e 74 65 72 66 61 63 65 20 69 73 20 61 20 0a  interface is a .
7d30: 20 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50    no-op..}..COMP
7d40: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7d50: 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53  TE_ENABLE_MEMSYS
7d60: 33 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  3} {.  This opti
7d70: 6f 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64 65  on includes code
7d80: 20 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74 20   in SQLite that 
7d90: 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61 6c  implements an al
7da0: 74 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d 6f  ternative.  memo
7db0: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 54  ry allocator.  T
7dc0: 68 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65 20  his alternative 
7dd0: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
7de0: 20 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65 64   is only engaged
7df0: 0a 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51 4c  .  when the [SQL
7e00: 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d  ITE_CONFIG_HEAP]
7e10: 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69   option to [sqli
7e20: 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73  te3_config()] is
7e30: 20 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70 6c   used to.  suppl
7e40: 79 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b 20  y a large chunk 
7e50: 6f 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 77  of memory from w
7e60: 68 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79 20  hich all memory 
7e70: 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65 0a  allocations are.
7e80: 20 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20 4d    taken..  The M
7e90: 45 4d 53 59 53 33 20 6d 65 6d 6f 72 79 20 61 6c  EMSYS3 memory al
7ea0: 6c 6f 63 61 74 6f 72 20 75 73 65 73 20 61 20 68  locator uses a h
7eb0: 79 62 72 69 64 20 61 6c 6c 6f 63 61 74 69 6f 6e  ybrid allocation
7ec0: 20 61 6c 67 6f 72 69 74 68 6d 20 0a 20 20 70 61   algorithm .  pa
7ed0: 74 74 65 72 6e 65 64 20 61 66 74 65 72 20 64 6c  tterned after dl
7ee0: 6d 61 6c 6c 6f 63 28 29 2e 20 20 20 4f 6e 6c 79  malloc().   Only
7ef0: 20 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f 45   one of SQLITE_E
7f00: 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 20 61 6e  NABLE_MEMSYS3 an
7f10: 64 20 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41 42  d .  SQLITE_ENAB
7f20: 4c 45 5f 4d 45 4d 53 59 53 35 20 6d 61 79 20 62  LE_MEMSYS5 may b
7f30: 65 20 65 6e 61 62 6c 65 64 20 61 74 20 6f 6e 63  e enabled at onc
7f40: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
7f50: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
7f60: 42 4c 45 5f 4d 45 4d 53 59 53 35 7d 20 7b 0a 20  BLE_MEMSYS5} {. 
7f70: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e 63   This option inc
7f80: 6c 75 64 65 73 20 63 6f 64 65 20 69 6e 20 53 51  ludes code in SQ
7f90: 4c 69 74 65 20 74 68 61 74 20 69 6d 70 6c 65 6d  Lite that implem
7fa0: 65 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74  ents an alternat
7fb0: 69 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c  ive.  memory all
7fc0: 6f 63 61 74 6f 72 2e 20 20 54 68 69 73 20 61 6c  ocator.  This al
7fd0: 74 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79  ternative memory
7fe0: 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f 6e   allocator is on
7ff0: 6c 79 20 65 6e 67 61 67 65 64 0a 20 20 77 68 65  ly engaged.  whe
8000: 6e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f  n the [SQLITE_CO
8010: 4e 46 49 47 5f 48 45 41 50 5d 20 6f 70 74 69 6f  NFIG_HEAP] optio
8020: 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f  n to [sqlite3_co
8030: 6e 66 69 67 28 29 5d 20 69 73 20 75 73 65 64 20  nfig()] is used 
8040: 74 6f 0a 20 20 73 75 70 70 6c 79 20 61 20 6c 61  to.  supply a la
8050: 72 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65 6d  rge chunk of mem
8060: 6f 72 79 20 66 72 6f 6d 20 77 68 69 63 68 20 61  ory from which a
8070: 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ll memory alloca
8080: 74 69 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b 65  tions are.  take
8090: 6e 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59 53 35  n..  The MEMSYS5
80a0: 20 6d 6f 64 75 6c 65 20 72 6f 75 6e 64 73 20 61   module rounds a
80b0: 6c 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 75  ll allocations u
80c0: 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70 6f  p to the next po
80d0: 77 65 72 0a 20 20 6f 66 20 74 77 6f 20 61 6e 64  wer.  of two and
80e0: 20 75 73 65 73 20 61 20 66 69 72 73 74 2d 66 69   uses a first-fi
80f0: 74 2c 20 62 75 64 64 79 2d 61 6c 6c 6f 63 61 74  t, buddy-allocat
8100: 6f 72 20 61 6c 67 6f 72 69 74 68 6d 0a 20 20 74  or algorithm.  t
8110: 68 61 74 20 70 72 6f 76 69 64 65 73 20 73 74 72  hat provides str
8120: 6f 6e 67 20 67 75 61 72 61 6e 74 65 65 73 20 61  ong guarantees a
8130: 67 61 69 6e 73 74 20 66 72 61 67 6d 65 6e 74 61  gainst fragmenta
8140: 74 69 6f 6e 20 61 6e 64 20 62 72 65 61 6b 64 6f  tion and breakdo
8150: 77 6e 0a 20 20 73 75 62 6a 65 63 74 20 74 6f 20  wn.  subject to 
8160: 63 65 72 74 61 69 6e 20 6f 70 65 72 61 74 69 6e  certain operatin
8170: 67 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 7d  g constraints..}
8180: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8190: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
81a0: 52 42 55 7d 20 7b 0a 20 20 45 6e 61 62 6c 65 20  RBU} {.  Enable 
81b0: 74 68 65 20 63 6f 64 65 20 74 68 65 20 69 6d 70  the code the imp
81c0: 6c 65 6d 65 6e 74 73 20 74 68 65 20 5b 52 42 55  lements the [RBU
81d0: 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a   extension]..}..
81e0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
81f0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54  SQLITE_ENABLE_RT
8200: 52 45 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  REE} {.  This op
8210: 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69  tion causes SQLi
8220: 74 65 20 74 6f 20 69 6e 63 6c 75 64 65 20 73 75  te to include su
8230: 70 70 6f 72 74 20 66 6f 72 20 74 68 65 0a 20 20  pport for the.  
8240: 5b 72 74 72 65 65 20 7c 20 52 2a 54 72 65 65 20  [rtree | R*Tree 
8250: 69 6e 64 65 78 20 65 78 74 65 6e 73 69 6f 6e 5d  index extension]
8260: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
8270: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
8280: 4c 45 5f 53 54 4d 54 5f 53 43 41 4e 53 54 41 54  LE_STMT_SCANSTAT
8290: 55 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  US} {.  This opt
82a0: 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20  ion enables the 
82b0: 5b 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 73 63  [sqlite3_stmt_sc
82c0: 61 6e 73 74 61 74 75 73 28 29 5d 20 69 6e 74 65  anstatus()] inte
82d0: 72 66 61 63 65 2e 20 20 54 68 65 0a 20 20 5b 73  rface.  The.  [s
82e0: 71 6c 69 74 65 33 5f 73 74 6d 74 5f 73 63 61 6e  qlite3_stmt_scan
82f0: 73 74 61 74 75 73 28 29 5d 20 69 6e 74 65 72 66  status()] interf
8300: 61 63 65 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20  ace is normally 
8310: 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65  omitted from the
8320: 20 62 75 69 6c 64 0a 20 20 62 65 63 61 75 73 65   build.  because
8330: 20 69 74 20 69 6d 70 6f 73 65 73 20 61 20 73 6d   it imposes a sm
8340: 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65 20  all performance 
8350: 70 65 6e 61 6c 74 79 2c 20 65 76 65 6e 20 6f 6e  penalty, even on
8360: 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74   statements that
8370: 0a 20 20 64 6f 20 6e 6f 74 20 75 73 65 20 74 68  .  do not use th
8380: 65 20 66 65 61 74 75 72 65 2e 0a 7d 0a 0a 43 4f  e feature..}..CO
8390: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
83a0: 4c 49 54 45 5f 52 54 52 45 45 5f 49 4e 54 5f 4f  LITE_RTREE_INT_O
83b0: 4e 4c 59 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  NLY} {.  If this
83c0: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
83d0: 74 6f 67 65 74 68 65 72 20 77 69 74 68 20 5b 53  together with [S
83e0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52  QLITE_ENABLE_RTR
83f0: 45 45 5d 20 74 68 65 6e 20 74 68 65 0a 20 20 5b  EE] then the.  [
8400: 72 74 72 65 65 20 7c 20 52 2a 54 72 65 65 20 65  rtree | R*Tree e
8410: 78 74 65 6e 73 69 6f 6e 5d 20 77 69 6c 6c 20 6f  xtension] will o
8420: 6e 6c 79 20 73 74 6f 72 65 20 33 32 2d 62 69 74  nly store 32-bit
8430: 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 0a   signed integer.
8440: 20 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 61 6e    coordinates an
8450: 64 20 61 6c 6c 20 69 6e 74 65 72 6e 61 6c 20 63  d all internal c
8460: 6f 6d 70 75 74 61 74 69 6f 6e 73 20 77 69 6c 6c  omputations will
8470: 20 62 65 20 64 6f 6e 65 20 75 73 69 6e 67 20 69   be done using i
8480: 6e 74 65 67 65 72 73 0a 20 20 69 6e 73 74 65 61  ntegers.  instea
8490: 64 20 6f 66 20 66 6c 6f 61 74 69 6e 67 20 70 6f  d of floating po
84a0: 69 6e 74 20 6e 75 6d 62 65 72 73 2e 0a 7d 0a 0a  int numbers..}..
84b0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
84c0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51  SQLITE_ENABLE_SQ
84d0: 4c 4c 4f 47 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LLOG} {.  This o
84e0: 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 65 78  ption enables ex
84f0: 74 72 61 20 63 6f 64 65 20 28 65 73 70 65 63 69  tra code (especi
8500: 61 6c 6c 79 20 74 68 65 20 5b 53 51 4c 49 54 45  ally the [SQLITE
8510: 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 5d 0a  _CONFIG_SQLLOG].
8520: 20 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c    option to [sql
8530: 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 29 20  ite3_config()]) 
8540: 74 68 61 74 20 63 61 6e 20 62 65 20 75 73 65 64  that can be used
8550: 20 74 6f 20 63 72 65 61 74 65 20 6c 6f 67 73 20   to create logs 
8560: 6f 66 20 61 6c 6c 0a 20 20 53 51 4c 69 74 65 20  of all.  SQLite 
8570: 70 72 6f 63 65 73 73 69 6e 67 20 70 65 72 66 6f  processing perfo
8580: 72 6d 65 64 20 62 79 20 61 6e 20 61 70 70 6c 69  rmed by an appli
8590: 63 61 74 69 6f 6e 2e 20 20 54 68 65 73 65 20 6c  cation.  These l
85a0: 6f 67 73 20 63 61 6e 20 62 65 20 75 73 65 66 75  ogs can be usefu
85b0: 6c 0a 20 20 69 6e 20 64 6f 69 6e 67 20 6f 66 66  l.  in doing off
85c0: 2d 6c 69 6e 65 20 61 6e 61 6c 79 73 69 73 20 6f  -line analysis o
85d0: 66 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f  f the behavior o
85e0: 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  f an application
85f0: 2c 20 61 6e 64 20 65 73 70 65 63 69 61 6c 6c 79  , and especially
8600: 0a 20 20 66 6f 72 20 70 65 72 66 6f 72 6d 61 6e  .  for performan
8610: 63 65 20 61 6e 61 6c 79 73 69 73 2e 20 20 49 6e  ce analysis.  In
8620: 20 6f 72 64 65 72 20 66 6f 72 20 74 68 65 20 53   order for the S
8630: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c  QLITE_ENABLE_SQL
8640: 4c 4f 47 20 6f 70 74 69 6f 6e 20 74 6f 20 0a 20  LOG option to . 
8650: 20 62 65 20 75 73 65 66 75 6c 2c 20 73 6f 6d 65   be useful, some
8660: 20 65 78 74 72 61 20 63 6f 64 65 20 69 73 20 72   extra code is r
8670: 65 71 75 69 72 65 64 2e 20 20 54 68 65 20 0a 20  equired.  The . 
8680: 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f   <a href="http:/
8690: 2f 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f  /www.sqlite.org/
86a0: 73 72 63 2f 64 6f 63 2f 74 72 75 6e 6b 2f 73 72  src/doc/trunk/sr
86b0: 63 2f 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22  c/test_sqllog.c"
86c0: 3e 22 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22  >"test_sqllog.c"
86d0: 3c 2f 61 3e 0a 20 20 73 6f 75 72 63 65 20 63 6f  </a>.  source co
86e0: 64 65 0a 20 20 66 69 6c 65 20 69 6e 20 74 68 65  de.  file in the
86f0: 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65 20 74   SQLite source t
8700: 72 65 65 20 69 73 20 61 20 77 6f 72 6b 69 6e 67  ree is a working
8710: 20 65 78 61 6d 70 6c 65 20 6f 66 20 74 68 65 20   example of the 
8720: 72 65 71 75 69 72 65 64 20 65 78 74 72 61 0a 20  required extra. 
8730: 20 63 6f 64 65 2e 20 20 4f 6e 20 75 6e 69 78 20   code.  On unix 
8740: 61 6e 64 20 77 69 6e 64 6f 77 73 20 73 79 73 74  and windows syst
8750: 65 6d 73 2c 20 61 20 64 65 76 65 6c 6f 70 65 72  ems, a developer
8760: 20 63 61 6e 20 61 70 70 65 6e 64 20 74 68 65 20   can append the 
8770: 74 65 78 74 20 6f 66 20 74 68 65 0a 20 20 22 74  text of the.  "t
8780: 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f  est_sqllog.c" so
8790: 75 72 63 65 20 63 6f 64 65 20 66 69 6c 65 20 74  urce code file t
87a0: 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 61 6e 20  o the end of an 
87b0: 22 73 71 6c 69 74 65 33 2e 63 22 20 61 6d 61 6c  "sqlite3.c" amal
87c0: 67 61 6d 61 74 69 6f 6e 2c 0a 20 20 72 65 63 6f  gamation,.  reco
87d0: 6d 70 69 6c 65 20 74 68 65 20 61 70 70 6c 69 63  mpile the applic
87e0: 61 74 69 6f 6e 20 75 73 69 6e 67 20 74 68 65 20  ation using the 
87f0: 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  -DSQLITE_ENABLE_
8800: 53 51 4c 4c 4f 47 20 6f 70 74 69 6f 6e 2c 20 74  SQLLOG option, t
8810: 68 65 6e 20 0a 20 20 63 6f 6e 74 72 6f 6c 20 6c  hen .  control l
8820: 6f 67 67 69 6e 67 20 75 73 69 6e 67 20 65 6e 76  ogging using env
8830: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
8840: 65 73 2e 20 20 53 65 65 20 74 68 65 20 68 65 61  es.  See the hea
8850: 64 65 72 20 63 6f 6d 6d 65 6e 74 20 6f 6e 20 0a  der comment on .
8860: 20 20 74 68 65 20 22 74 65 73 74 5f 73 71 6c 6c    the "test_sqll
8870: 6f 67 2e 63 22 20 73 6f 75 72 63 65 20 66 69 6c  og.c" source fil
8880: 65 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  e for additional
8890: 20 64 65 74 61 69 6c 2e 20 20 0a 7d 0a 0a 43 4f   detail.  .}..CO
88a0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
88b0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54  LITE_ENABLE_STAT
88c0: 32 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  2} {.  This opti
88d0: 6f 6e 20 75 73 65 64 20 74 6f 20 63 61 75 73 65  on used to cause
88e0: 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63   the [ANALYZE] c
88f0: 6f 6d 6d 61 6e 64 20 74 6f 20 63 6f 6c 6c 65 63  ommand to collec
8900: 74 0a 20 20 69 6e 64 65 78 20 68 69 73 74 6f 67  t.  index histog
8910: 72 61 6d 20 64 61 74 61 20 69 6e 20 74 68 65 20  ram data in the 
8920: 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 32 3c  <b>sqlite_stat2<
8930: 2f 62 3e 20 74 61 62 6c 65 2e 20 20 42 75 74 20  /b> table.  But 
8940: 74 68 61 74 0a 20 20 66 75 6e 63 74 69 6f 6e 61  that.  functiona
8950: 6c 69 74 79 20 77 61 73 20 73 75 70 65 72 63 65  lity was superce
8960: 64 65 64 20 62 79 20 5b 53 51 4c 49 54 45 5f 45  ded by [SQLITE_E
8970: 4e 41 42 4c 45 5f 53 54 41 54 33 5d 20 61 73 20  NABLE_STAT3] as 
8980: 6f 66 0a 20 20 53 51 4c 69 74 65 20 76 65 72 73  of.  SQLite vers
8990: 69 6f 6e 20 33 2e 37 2e 39 2e 20 20 54 68 65 20  ion 3.7.9.  The 
89a0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
89b0: 41 54 32 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  AT2 compile-time
89c0: 20 6f 70 74 69 6f 6e 0a 20 20 69 73 20 6e 6f 77   option.  is now
89d0: 20 61 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d   a no-op..}..COM
89e0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
89f0: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33  ITE_ENABLE_STAT3
8a00: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
8a10: 6e 20 61 64 64 73 20 61 64 64 69 74 69 6f 6e 61  n adds additiona
8a20: 6c 20 6c 6f 67 69 63 20 74 6f 20 74 68 65 20 5b  l logic to the [
8a30: 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64  ANALYZE] command
8a40: 20 61 6e 64 20 74 6f 0a 20 20 74 68 65 20 5b 71   and to.  the [q
8a50: 75 65 72 79 20 70 6c 61 6e 6e 65 72 5d 20 74 68  uery planner] th
8a60: 61 74 20 63 61 6e 20 68 65 6c 70 20 53 51 4c 69  at can help SQLi
8a70: 74 65 20 74 6f 20 63 68 6f 73 65 20 61 20 62 65  te to chose a be
8a80: 74 74 65 72 20 71 75 65 72 79 20 70 6c 61 6e 0a  tter query plan.
8a90: 20 20 75 6e 64 65 72 20 63 65 72 74 61 69 6e 20    under certain 
8aa0: 73 69 74 75 61 74 69 6f 6e 73 2e 20 20 54 68 65  situations.  The
8ab0: 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61   [ANALYZE] comma
8ac0: 6e 64 20 69 73 20 65 6e 68 61 6e 63 65 64 20 74  nd is enhanced t
8ad0: 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 68 69 73 74  o collect.  hist
8ae0: 6f 67 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20  ogram data from 
8af0: 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63 6f  the left-most co
8b00: 6c 75 6d 6e 20 6f 66 20 65 61 63 68 20 69 6e 64  lumn of each ind
8b10: 65 78 20 61 6e 64 20 73 74 6f 72 65 20 74 68 61  ex and store tha
8b20: 74 20 64 61 74 61 0a 20 20 69 6e 20 74 68 65 20  t data.  in the 
8b30: 5b 73 71 6c 69 74 65 5f 73 74 61 74 33 5d 20 74  [sqlite_stat3] t
8b40: 61 62 6c 65 2e 20 20 54 68 65 20 71 75 65 72 79  able.  The query
8b50: 20 70 6c 61 6e 6e 65 72 20 77 69 6c 6c 20 74 68   planner will th
8b60: 65 6e 20 75 73 65 20 74 68 65 0a 20 20 68 69 73  en use the.  his
8b70: 74 6f 67 72 61 6d 20 64 61 74 61 20 74 6f 20 68  togram data to h
8b80: 65 6c 70 20 69 74 20 6d 61 6b 65 20 62 65 74 74  elp it make bett
8b90: 65 72 20 69 6e 64 65 78 20 63 68 6f 69 63 65 73  er index choices
8ba0: 2e 20 20 4e 6f 74 65 2c 20 68 6f 77 65 76 65 72  .  Note, however
8bb0: 2c 0a 20 20 74 68 61 74 20 74 68 65 20 75 73 65  ,.  that the use
8bc0: 20 6f 66 20 68 69 73 74 6f 67 72 61 6d 20 64 61   of histogram da
8bd0: 74 61 20 69 6e 20 71 75 65 72 79 20 70 6c 61 6e  ta in query plan
8be0: 6e 65 72 20 76 69 6f 6c 61 74 65 73 20 74 68 65  ner violates the
8bf0: 0a 20 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65  .  [query planne
8c00: 72 20 73 74 61 62 69 6c 69 74 79 20 67 75 61 72  r stability guar
8c10: 61 6e 74 65 65 5d 20 77 68 69 63 68 20 69 73 20  antee] which is 
8c20: 69 6d 70 6f 72 74 61 6e 74 20 74 6f 20 73 6f 6d  important to som
8c30: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a  e applications..
8c40: 20 20 3c 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45    <p>.}..COMPILE
8c50: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
8c60: 45 4e 41 42 4c 45 5f 53 54 41 54 34 7d 20 7b 0a  ENABLE_STAT4} {.
8c70: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64    This option ad
8c80: 64 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f  ds additional lo
8c90: 67 69 63 20 74 6f 20 74 68 65 20 5b 41 4e 41 4c  gic to the [ANAL
8ca0: 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 61 6e 64  YZE] command and
8cb0: 20 74 6f 0a 20 20 74 68 65 20 5b 71 75 65 72 79   to.  the [query
8cc0: 20 70 6c 61 6e 6e 65 72 5d 20 74 68 61 74 20 63   planner] that c
8cd0: 61 6e 20 68 65 6c 70 20 53 51 4c 69 74 65 20 74  an help SQLite t
8ce0: 6f 20 63 68 6f 73 65 20 61 20 62 65 74 74 65 72  o chose a better
8cf0: 20 71 75 65 72 79 20 70 6c 61 6e 0a 20 20 75 6e   query plan.  un
8d00: 64 65 72 20 63 65 72 74 61 69 6e 20 73 69 74 75  der certain situ
8d10: 61 74 69 6f 6e 73 2e 20 20 54 68 65 20 5b 41 4e  ations.  The [AN
8d20: 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69  ALYZE] command i
8d30: 73 20 65 6e 68 61 6e 63 65 64 20 74 6f 20 63 6f  s enhanced to co
8d40: 6c 6c 65 63 74 0a 20 20 68 69 73 74 6f 67 72 61  llect.  histogra
8d50: 6d 20 64 61 74 61 20 66 72 6f 6d 20 61 6c 6c 20  m data from all 
8d60: 63 6f 6c 75 6d 6e 73 20 6f 66 20 65 76 65 72 79  columns of every
8d70: 20 69 6e 64 65 78 20 61 6e 64 20 73 74 6f 72 65   index and store
8d80: 20 74 68 61 74 20 64 61 74 61 0a 20 20 69 6e 20   that data.  in 
8d90: 74 68 65 20 5b 73 71 6c 69 74 65 5f 73 74 61 74  the [sqlite_stat
8da0: 34 5d 20 74 61 62 6c 65 2e 20 20 54 68 65 20 71  4] table.  The q
8db0: 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 77 69 6c  uery planner wil
8dc0: 6c 20 74 68 65 6e 20 75 73 65 20 74 68 65 0a 20  l then use the. 
8dd0: 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20   histogram data 
8de0: 74 6f 20 68 65 6c 70 20 69 74 20 6d 61 6b 65 20  to help it make 
8df0: 62 65 74 74 65 72 20 69 6e 64 65 78 20 63 68 6f  better index cho
8e00: 69 63 65 73 2e 20 20 54 68 65 20 64 6f 77 6e 73  ices.  The downs
8e10: 69 64 65 20 6f 66 0a 20 20 74 68 69 73 20 63 6f  ide of.  this co
8e20: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
8e30: 6e 20 69 73 20 74 68 61 74 20 69 74 20 76 69 6f  n is that it vio
8e40: 6c 61 74 65 73 20 74 68 65 0a 20 20 5b 71 75 65  lates the.  [que
8e50: 72 79 20 70 6c 61 6e 6e 65 72 20 73 74 61 62 69  ry planner stabi
8e60: 6c 69 74 79 20 67 75 61 72 61 6e 74 65 65 5d 20  lity guarantee] 
8e70: 6d 61 6b 69 6e 67 20 69 74 20 6d 6f 72 65 20 64  making it more d
8e80: 69 66 66 69 63 75 6c 74 20 74 6f 20 65 6e 73 75  ifficult to ensu
8e90: 72 65 0a 20 20 63 6f 6e 73 69 73 74 65 6e 74 20  re.  consistent 
8ea0: 70 65 72 66 6f 72 6d 61 6e 63 65 20 69 6e 20 6d  performance in m
8eb0: 61 73 73 2d 70 72 6f 64 75 63 65 64 20 61 70 70  ass-produced app
8ec0: 6c 69 63 61 74 69 6f 6e 73 2e 0a 20 20 3c 70 3e  lications..  <p>
8ed0: 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  .  SQLITE_ENABLE
8ee0: 5f 53 54 41 54 34 20 69 73 20 61 6e 20 65 6e 68  _STAT4 is an enh
8ef0: 61 6e 63 65 6d 65 6e 74 20 6f 66 20 5b 53 51 4c  ancement of [SQL
8f00: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33  ITE_ENABLE_STAT3
8f10: 5d 2e 20 20 53 54 41 54 33 0a 20 20 6f 6e 6c 79  ].  STAT3.  only
8f20: 20 72 65 63 6f 72 64 65 64 20 68 69 73 74 6f 67   recorded histog
8f30: 72 61 6d 20 64 61 74 61 20 66 6f 72 20 74 68 65  ram data for the
8f40: 20 6c 65 66 74 2d 6d 6f 73 74 20 63 6f 6c 75 6d   left-most colum
8f50: 6e 20 6f 66 20 65 61 63 68 20 69 6e 64 65 78 0a  n of each index.
8f60: 20 20 77 68 65 72 65 61 73 20 74 68 65 20 53 54    whereas the ST
8f70: 41 54 34 20 65 6e 68 61 6e 63 65 6d 65 6e 74 20  AT4 enhancement 
8f80: 72 65 63 6f 72 64 73 20 68 69 73 74 6f 67 72 61  records histogra
8f90: 6d 20 64 61 74 61 20 66 72 6f 6d 20 61 6c 6c 20  m data from all 
8fa0: 63 6f 6c 75 6d 6e 73 0a 20 20 6f 66 20 65 61 63  columns.  of eac
8fb0: 68 20 69 6e 64 65 78 2e 0a 20 20 54 68 65 20 5b  h index..  The [
8fc0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
8fd0: 41 54 33 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  AT3] compile-tim
8fe0: 65 20 6f 70 74 69 6f 6e 20 69 73 20 61 20 6e 6f  e option is a no
8ff0: 2d 6f 70 20 61 6e 64 20 69 73 20 69 67 6e 6f 72  -op and is ignor
9000: 65 64 0a 20 20 69 66 20 74 68 65 20 53 51 4c 49  ed.  if the SQLI
9010: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34 20  TE_ENABLE_STAT4 
9020: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
9030: 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a 7d 0a 0a  ion is used..}..
9040: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
9050: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 54 52  SQLITE_ENABLE_TR
9060: 45 45 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a 20 20  EE_EXPLAIN} {.  
9070: 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  This compile-tim
9080: 65 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 20 6c  e option is no l
9090: 6f 6e 67 65 72 20 75 73 65 64 2e 0a 7d 0a 0a 43  onger used..}..C
90a0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
90b0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44  QLITE_ENABLE_UPD
90c0: 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54  ATE_DELETE_LIMIT
90d0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
90e0: 6e 20 65 6e 61 62 6c 65 73 20 61 6e 20 6f 70 74  n enables an opt
90f0: 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61  ional ORDER BY a
9100: 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20  nd LIMIT clause 
9110: 6f 6e 20 0a 20 20 5b 55 50 44 41 54 45 5d 20 61  on .  [UPDATE] a
9120: 6e 64 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74  nd [DELETE] stat
9130: 65 6d 65 6e 74 73 2e 0a 0a 20 20 3c 70 3e 49 66  ements...  <p>If
9140: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
9150: 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 69 74  defined, then it
9160: 20 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 0a 20   must also be . 
9170: 20 64 65 66 69 6e 65 64 20 77 68 65 6e 20 75 73   defined when us
9180: 69 6e 67 20 74 68 65 20 27 6c 65 6d 6f 6e 27 20  ing the 'lemon' 
9190: 74 6f 6f 6c 20 74 6f 20 67 65 6e 65 72 61 74 65  tool to generate
91a0: 20 61 20 70 61 72 73 65 2e 63 0a 20 20 66 69 6c   a parse.c.  fil
91b0: 65 2e 20 42 65 63 61 75 73 65 20 6f 66 20 74 68  e. Because of th
91c0: 69 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  is, this option 
91d0: 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65 64  may only be used
91e0: 20 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61 72   when the librar
91f0: 79 20 69 73 20 62 75 69 6c 74 0a 20 20 66 72 6f  y is built.  fro
9200: 6d 20 73 6f 75 72 63 65 2c 20 6e 6f 74 20 66 72  m source, not fr
9210: 6f 6d 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61  om the [amalgama
9220: 74 69 6f 6e 5d 20 6f 72 20 66 72 6f 6d 20 74 68  tion] or from th
9230: 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a  e collection of.
9240: 20 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20 43    pre-packaged C
9250: 20 66 69 6c 65 73 20 70 72 6f 76 69 64 65 64 20   files provided 
9260: 66 6f 72 20 6e 6f 6e 2d 55 6e 69 78 20 6c 69 6b  for non-Unix lik
9270: 65 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e 20 74  e platforms on t
9280: 68 65 20 77 65 62 73 69 74 65 2e 0a 20 20 3c 2f  he website..  </
9290: 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  p>.}..COMPILE_OP
92a0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
92b0: 42 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46  BLE_UNLOCK_NOTIF
92c0: 59 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  Y} {.  This opti
92d0: 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20 5b  on enables the [
92e0: 73 71 6c 69 74 65 33 5f 75 6e 6c 6f 63 6b 5f 6e  sqlite3_unlock_n
92f0: 6f 74 69 66 79 28 29 5d 20 69 6e 74 65 72 66 61  otify()] interfa
9300: 63 65 20 61 6e 64 0a 20 20 69 74 73 20 61 73 73  ce and.  its ass
9310: 6f 63 69 61 74 65 64 20 66 75 6e 63 74 69 6f 6e  ociated function
9320: 61 6c 69 74 79 2e 20 20 53 65 65 20 74 68 65 20  ality.  See the 
9330: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 74 69  documentation ti
9340: 74 6c 65 64 0a 20 20 5b 55 73 69 6e 67 20 74 68  tled.  [Using th
9350: 65 20 53 51 4c 69 74 65 20 55 6e 6c 6f 63 6b 20  e SQLite Unlock 
9360: 4e 6f 74 69 66 69 63 61 74 69 6f 6e 20 46 65 61  Notification Fea
9370: 74 75 72 65 5d 20 66 6f 72 20 61 64 64 69 74 69  ture] for additi
9380: 6f 6e 61 6c 0a 20 20 69 6e 66 6f 72 6d 61 74 69  onal.  informati
9390: 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  on..}..COMPILE_O
93a0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 4f  PTION {SQLITE_SO
93b0: 55 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69 73 20  UNDEX} {.  This 
93c0: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74  option enables t
93d0: 68 65 20 5b 73 6f 75 6e 64 65 78 28 29 20 53 51  he [soundex() SQ
93e0: 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 7d 0a 0a  L function]..}..
93f0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
9400: 53 51 4c 49 54 45 5f 55 53 45 5f 46 43 4e 54 4c  SQLITE_USE_FCNTL
9410: 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54 68 69 73  _TRACE} {.  This
9420: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53   option causes S
9430: 51 4c 69 74 65 20 74 6f 20 69 73 73 75 65 20 65  QLite to issue e
9440: 78 74 72 61 20 5b 53 51 4c 49 54 45 5f 46 43 4e  xtra [SQLITE_FCN
9450: 54 4c 5f 54 52 41 43 45 5d 20 66 69 6c 65 20 63  TL_TRACE] file c
9460: 6f 6e 74 72 6f 6c 73 0a 20 20 74 6f 20 70 72 6f  ontrols.  to pro
9470: 76 69 64 65 20 73 75 70 70 6c 65 6d 65 6e 74 61  vide supplementa
9480: 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74  ry information t
9490: 6f 20 74 68 65 20 56 46 53 2e 20 20 54 68 65 20  o the VFS.  The 
94a0: 22 76 66 73 6c 6f 67 2e 63 22 20 65 78 74 65 6e  "vfslog.c" exten
94b0: 73 69 6f 6e 0a 20 20 6d 61 6b 65 73 20 75 73 65  sion.  makes use
94c0: 20 6f 66 20 74 68 69 73 20 74 6f 20 70 72 6f 76   of this to prov
94d0: 69 64 65 20 65 6e 68 61 6e 63 65 64 20 6c 6f 67  ide enhanced log
94e0: 73 20 6f 66 20 56 46 53 20 61 63 74 69 76 69 74  s of VFS activit
94f0: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
9500: 54 49 4f 4e 20 7b 59 59 54 52 41 43 4b 4d 41 58  TION {YYTRACKMAX
9510: 53 54 41 43 4b 44 45 50 54 48 7d 20 7b 0a 20 20  STACKDEPTH} {.  
9520: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
9530: 65 73 20 74 68 65 20 4c 41 4c 52 28 31 29 20 70  es the LALR(1) p
9540: 61 72 73 65 72 20 73 74 61 63 6b 20 64 65 70 74  arser stack dept
9550: 68 20 74 6f 20 62 65 20 74 72 61 63 6b 65 64 0a  h to be tracked.
9560: 20 20 61 6e 64 20 72 65 70 6f 72 74 65 64 20 75    and reported u
9570: 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65  sing the [sqlite
9580: 33 5f 73 74 61 74 75 73 5d 28 5b 53 51 4c 49 54  3_status]([SQLIT
9590: 45 5f 53 54 41 54 55 53 5f 50 41 52 53 45 52 5f  E_STATUS_PARSER_
95a0: 53 54 41 43 4b 5d 2c 2e 2e 2e 29 0a 20 20 69 6e  STACK],...).  in
95b0: 74 65 72 66 61 63 65 2e 20 20 53 51 4c 69 74 65  terface.  SQLite
95c0: 27 73 20 4c 41 4c 52 28 31 29 20 70 61 72 73 65  's LALR(1) parse
95d0: 72 20 68 61 73 20 61 20 66 69 78 65 64 20 73 74  r has a fixed st
95e0: 61 63 6b 20 64 65 70 74 68 0a 20 20 28 64 65 74  ack depth.  (det
95f0: 65 72 6d 69 6e 65 64 20 61 74 20 63 6f 6d 70 69  ermined at compi
9600: 6c 65 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68  le-time using th
9610: 65 20 5b 59 59 53 54 41 43 4b 44 45 50 54 48 5d  e [YYSTACKDEPTH]
9620: 20 6f 70 74 69 6f 6e 73 29 2e 0a 20 20 54 68 69   options)..  Thi
9630: 73 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20  s option can be 
9640: 75 73 65 64 20 74 6f 20 68 65 6c 70 20 64 65 74  used to help det
9650: 65 72 6d 69 6e 65 20 69 66 20 61 6e 20 61 70 70  ermine if an app
9660: 6c 69 63 61 74 69 6f 6e 20 69 73 0a 20 20 67 65  lication is.  ge
9670: 74 74 69 6e 67 20 63 6c 6f 73 65 20 74 6f 20 65  tting close to e
9680: 78 63 65 65 64 69 6e 67 20 74 68 65 20 6d 61 78  xceeding the max
9690: 69 6d 75 6d 20 4c 41 4c 52 28 31 29 20 73 74 61  imum LALR(1) sta
96a0: 63 6b 20 64 65 70 74 68 2e 0a 7d 0a 3c 2f 74 63  ck depth..}.</tc
96b0: 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 64 69 73  l>..<a name="dis
96c0: 61 62 6c 65 66 65 61 74 75 72 65 73 22 3e 3c 2f  ablefeatures"></
96d0: 61 3e 0a 3c 68 32 3e 31 2e 36 20 4f 70 74 69 6f  a>.<h2>1.6 Optio
96e0: 6e 73 20 54 6f 20 44 69 73 61 62 6c 65 20 46 65  ns To Disable Fe
96f0: 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20  atures Normally 
9700: 54 75 72 6e 65 64 20 4f 6e 3c 2f 68 32 3e 0a 0a  Turned On</h2>..
9710: 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50  <tcl>.COMPILE_OP
9720: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53  TION {SQLITE_DIS
9730: 41 42 4c 45 5f 4c 46 53 7d 20 7b 0a 20 20 49 66  ABLE_LFS} {.  If
9740: 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65   this C-preproce
9750: 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65  ssor macro is de
9760: 66 69 6e 65 64 2c 20 6c 61 72 67 65 20 66 69 6c  fined, large fil
9770: 65 20 73 75 70 70 6f 72 74 0a 20 20 69 73 20 64  e support.  is d
9780: 69 73 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  isabled..}..COMP
9790: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
97a0: 54 45 5f 44 49 53 41 42 4c 45 5f 44 49 52 53 59  TE_DISABLE_DIRSY
97b0: 4e 43 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  NC} {.  If this 
97c0: 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C-preprocessor m
97d0: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c  acro is defined,
97e0: 20 64 69 72 65 63 74 6f 72 79 20 73 79 6e 63 73   directory syncs
97f0: 0a 20 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e  .  are disabled.
9800: 20 20 53 51 4c 69 74 65 20 74 79 70 69 63 61 6c    SQLite typical
9810: 6c 79 20 61 74 74 65 6d 70 74 73 20 74 6f 20 73  ly attempts to s
9820: 79 6e 63 20 74 68 65 20 70 61 72 65 6e 74 0a 20  ync the parent. 
9830: 20 64 69 72 65 63 74 6f 72 79 20 77 68 65 6e 20   directory when 
9840: 61 20 66 69 6c 65 20 69 73 20 64 65 6c 65 74 65  a file is delete
9850: 64 20 74 6f 20 65 6e 73 75 72 65 20 74 68 65 20  d to ensure the 
9860: 64 69 72 65 63 74 6f 72 79 0a 20 20 65 6e 74 72  directory.  entr
9870: 69 65 73 20 61 72 65 20 75 70 64 61 74 65 64 20  ies are updated 
9880: 69 6d 6d 65 64 69 61 74 65 6c 79 20 6f 6e 20 64  immediately on d
9890: 69 73 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  isk..}..COMPILE_
98a0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
98b0: 49 53 41 42 4c 45 5f 46 54 53 33 5f 55 4e 49 43  ISABLE_FTS3_UNIC
98c0: 4f 44 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  ODE} {.  If this
98d0: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C-preprocessor 
98e0: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
98f0: 2c 20 74 68 65 20 5b 75 6e 69 63 6f 64 65 36 31  , the [unicode61
9900: 5d 20 74 6f 6b 65 6e 69 7a 65 72 0a 20 20 69 6e  ] tokenizer.  in
9910: 20 5b 46 54 53 33 5d 20 69 73 20 6f 6d 69 74 74   [FTS3] is omitt
9920: 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c  ed from the buil
9930: 64 20 61 6e 64 20 69 73 20 75 6e 61 76 61 69 6c  d and is unavail
9940: 61 62 6c 65 20 74 6f 20 0a 20 20 61 70 70 6c 69  able to .  appli
9950: 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50  cations..}..COMP
9960: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
9970: 54 45 5f 44 49 53 41 42 4c 45 5f 46 54 53 34 5f  TE_DISABLE_FTS4_
9980: 44 45 46 45 52 52 45 44 7d 20 7b 0a 20 20 49 66  DEFERRED} {.  If
9990: 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65   this C-preproce
99a0: 73 73 6f 72 20 6d 61 63 72 6f 20 64 69 73 61 62  ssor macro disab
99b0: 6c 65 73 20 74 68 65 20 22 64 65 66 65 72 72 65  les the "deferre
99c0: 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69 7a  d token" optimiz
99d0: 61 74 69 6f 6e 0a 20 20 69 6e 20 5b 46 54 53 34  ation.  in [FTS4
99e0: 5d 2e 20 20 54 68 65 20 22 64 65 66 65 72 72 65  ].  The "deferre
99f0: 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69 7a  d token" optimiz
9a00: 61 74 69 6f 6e 20 61 76 6f 69 64 73 20 6c 6f 61  ation avoids loa
9a10: 64 69 6e 67 20 6d 61 73 73 69 76 65 0a 20 20 70  ding massive.  p
9a20: 6f 73 74 69 6e 67 20 6c 69 73 74 73 20 66 6f 72  osting lists for
9a30: 20 74 65 72 6d 73 20 74 68 61 74 20 61 72 65 20   terms that are 
9a40: 69 6e 20 6d 6f 73 74 20 64 6f 63 75 6d 65 6e 74  in most document
9a50: 73 20 6f 66 20 74 68 65 20 63 6f 6c 6c 65 63 74  s of the collect
9a60: 69 6f 6e 0a 20 20 61 6e 64 20 69 6e 73 74 65 61  ion.  and instea
9a70: 64 20 73 69 6d 70 6c 79 20 73 63 61 6e 73 20 66  d simply scans f
9a80: 6f 72 20 74 68 6f 73 65 20 74 6f 6b 65 6e 73 20  or those tokens 
9a90: 69 6e 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 20  in the document 
9aa0: 73 6f 75 72 63 65 2e 20 20 5b 46 54 53 34 5d 0a  source.  [FTS4].
9ab0: 20 20 73 68 6f 75 6c 64 20 67 65 74 20 65 78 61    should get exa
9ac0: 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20 61 6e  ctly the same an
9ad0: 73 77 65 72 20 62 6f 74 68 20 77 69 74 68 20 61  swer both with a
9ae0: 6e 64 20 77 69 74 68 6f 75 74 20 74 68 69 73 20  nd without this 
9af0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2e 0a 7d 0a  optimization..}.
9b00: 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a 20 20  </tcl>..<tcl>.  
9b10: 68 64 5f 66 72 61 67 6d 65 6e 74 20 22 6f 6d 69  hd_fragment "omi
9b20: 74 66 65 61 74 75 72 65 73 22 0a 20 20 68 64 5f  tfeatures".  hd_
9b30: 6b 65 79 77 6f 72 64 73 20 22 6f 6d 69 74 66 65  keywords "omitfe
9b40: 61 74 75 72 65 73 22 0a 3c 2f 74 63 6c 3e 0a 3c  atures".</tcl>.<
9b50: 68 32 3e 31 2e 37 20 4f 70 74 69 6f 6e 73 20 54  h2>1.7 Options T
9b60: 6f 20 4f 6d 69 74 20 46 65 61 74 75 72 65 73 3c  o Omit Features<
9b70: 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c  /h2>..<p>The fol
9b80: 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73 20 63  lowing options c
9b90: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 0a 5b  an be used to .[
9ba0: 72 65 6c 66 6f 6f 74 70 72 69 6e 74 20 7c 20 72  relfootprint | r
9bb0: 65 64 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f  educe the size o
9bc0: 66 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 20 6c  f the compiled l
9bd0: 69 62 72 61 72 79 5d 0a 62 79 20 6f 6d 69 74 74  ibrary].by omitt
9be0: 69 6e 67 20 75 6e 75 73 65 64 20 66 65 61 74 75  ing unused featu
9bf0: 72 65 73 2e 20 54 68 69 73 20 69 73 20 70 72 6f  res. This is pro
9c00: 62 61 62 6c 79 20 6f 6e 6c 79 20 75 73 65 66 75  bably only usefu
9c10: 6c 0a 69 6e 20 65 6d 62 65 64 64 65 64 20 73 79  l.in embedded sy
9c20: 73 74 65 6d 73 20 77 68 65 72 65 20 73 70 61 63  stems where spac
9c30: 65 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20  e is especially 
9c40: 74 69 67 68 74 2c 20 61 73 20 65 76 65 6e 20 77  tight, as even w
9c50: 69 74 68 20 61 6c 6c 0a 66 65 61 74 75 72 65 73  ith all.features
9c60: 20 69 6e 63 6c 75 64 65 64 20 74 68 65 20 53 51   included the SQ
9c70: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69 73 20  Lite library is 
9c80: 72 65 6c 61 74 69 76 65 6c 79 20 73 6d 61 6c 6c  relatively small
9c90: 2e 20 44 6f 6e 27 74 20 66 6f 72 67 65 74 0a 74  . Don't forget.t
9ca0: 6f 20 74 65 6c 6c 20 79 6f 75 72 20 63 6f 6d 70  o tell your comp
9cb0: 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a 65  iler to optimize
9cc0: 20 66 6f 72 20 62 69 6e 61 72 79 20 73 69 7a 65   for binary size
9cd0: 21 20 28 74 68 65 20 2d 4f 73 20 6f 70 74 69 6f  ! (the -Os optio
9ce0: 6e 20 69 66 0a 75 73 69 6e 67 20 47 43 43 29 2e  n if.using GCC).
9cf0: 20 20 54 65 6c 6c 69 6e 67 20 79 6f 75 72 20 63    Telling your c
9d00: 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d  ompiler to optim
9d10: 69 7a 65 20 66 6f 72 20 73 69 7a 65 20 75 73 75  ize for size usu
9d20: 61 6c 6c 79 20 68 61 73 0a 61 20 6d 75 63 68 20  ally has.a much 
9d30: 6c 61 72 67 65 72 20 69 6d 70 61 63 74 20 6f 6e  larger impact on
9d40: 20 6c 69 62 72 61 72 79 20 66 6f 6f 74 70 72 69   library footpri
9d50: 6e 74 20 74 68 61 6e 20 65 6d 70 6c 6f 79 69 6e  nt than employin
9d60: 67 20 61 6e 79 20 6f 66 20 74 68 65 73 65 0a 63  g any of these.c
9d70: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
9d80: 6f 6e 73 2e 20 20 59 6f 75 20 73 68 6f 75 6c 64  ons.  You should
9d90: 20 61 6c 73 6f 20 76 65 72 69 66 79 20 74 68 61   also verify tha
9da0: 74 20 0a 3c 61 20 68 72 65 66 3d 22 23 64 65 62  t .<a href="#deb
9db0: 75 67 6f 70 74 69 6f 6e 73 22 3e 64 65 62 75 67  ugoptions">debug
9dc0: 67 69 6e 67 20 6f 70 74 69 6f 6e 73 3c 2f 61 3e  ging options</a>
9dd0: 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e 3c 2f   are disabled.</
9de0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 6d 61 63 72 6f  p>..<p>The macro
9df0: 73 20 69 6e 20 74 68 69 73 20 73 65 63 74 69 6f  s in this sectio
9e00: 6e 20 64 6f 20 6e 6f 74 20 72 65 71 75 69 72 65  n do not require
9e10: 20 76 61 6c 75 65 73 2e 20 54 68 65 20 66 6f 6c   values. The fol
9e20: 6c 6f 77 69 6e 67 20 0a 63 6f 6d 70 69 6c 61 74  lowing .compilat
9e30: 69 6f 6e 20 73 77 69 74 63 68 65 73 20 61 6c 6c  ion switches all
9e40: 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 65   have the same e
9e50: 66 66 65 63 74 3a 3c 62 72 3e 0a 2d 44 53 51 4c  ffect:<br>.-DSQL
9e60: 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41  ITE_OMIT_ALTERTA
9e70: 42 4c 45 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45  BLE<br>.-DSQLITE
9e80: 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45  _OMIT_ALTERTABLE
9e90: 3d 31 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f  =1<br>.-DSQLITE_
9ea0: 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d  OMIT_ALTERTABLE=
9eb0: 30 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 6e  0.</p>..<p>If an
9ec0: 79 20 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f  y of these optio
9ed0: 6e 73 20 61 72 65 20 64 65 66 69 6e 65 64 2c 20  ns are defined, 
9ee0: 74 68 65 6e 20 74 68 65 20 73 61 6d 65 20 73 65  then the same se
9ef0: 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  t of SQLITE_OMIT
9f00: 5f 2a 0a 6f 70 74 69 6f 6e 73 20 6d 75 73 74 20  _*.options must 
9f10: 61 6c 73 6f 20 62 65 20 64 65 66 69 6e 65 64 20  also be defined 
9f20: 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 27  when using the '
9f30: 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67  lemon' tool to g
9f40: 65 6e 65 72 61 74 65 20 74 68 65 0a 70 61 72 73  enerate the.pars
9f50: 65 2e 63 20 66 69 6c 65 20 61 6e 64 20 77 68 65  e.c file and whe
9f60: 6e 20 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20  n compiling the 
9f70: 27 6d 6b 6b 65 79 77 6f 72 64 68 61 73 68 27 20  'mkkeywordhash' 
9f80: 74 6f 6f 6c 20 77 68 69 63 68 20 67 65 6e 65 72  tool which gener
9f90: 61 74 65 73 20 0a 74 68 65 20 6b 65 79 77 6f 72  ates .the keywor
9fa0: 64 68 61 73 68 2e 68 20 66 69 6c 65 2e 0a 42 65  dhash.h file..Be
9fb0: 63 61 75 73 65 20 6f 66 20 74 68 69 73 2c 20 74  cause of this, t
9fc0: 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d 61 79  hese options may
9fd0: 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68   only be used wh
9fe0: 65 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 69  en the library i
9ff0: 73 20 62 75 69 6c 74 0a 66 72 6f 6d 20 63 61 6e  s built.from can
a000: 6f 6e 69 63 61 6c 20 73 6f 75 72 63 65 2c 20 6e  onical source, n
a010: 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d 61  ot from the [ama
a020: 6c 67 61 6d 61 74 69 6f 6e 5d 2e 0a 53 6f 6d 65  lgamation]..Some
a030: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f   SQLITE_OMIT_* o
a040: 70 74 69 6f 6e 73 20 6d 69 67 68 74 20 77 6f 72  ptions might wor
a050: 6b 2c 20 6f 72 20 61 70 70 65 61 72 20 74 6f 20  k, or appear to 
a060: 77 6f 72 6b 2c 20 77 68 65 6e 20 75 73 65 64 20  work, when used 
a070: 77 69 74 68 0a 74 68 65 20 5b 61 6d 61 6c 67 61  with.the [amalga
a080: 6d 61 74 69 6f 6e 5d 2e 20 20 42 75 74 20 74 68  mation].  But th
a090: 69 73 20 69 73 20 6e 6f 74 20 67 75 61 72 61 6e  is is not guaran
a0a0: 74 65 65 64 2e 20 20 49 6e 20 67 65 6e 65 72 61  teed.  In genera
a0b0: 6c 2c 20 61 6c 77 61 79 73 20 63 6f 6d 70 69 6c  l, always compil
a0c0: 65 0a 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c  e.from canonical
a0d0: 20 73 6f 75 72 63 65 73 20 69 6e 20 6f 72 64 65   sources in orde
a0e0: 72 20 74 6f 20 74 61 6b 65 20 61 64 76 61 6e 74  r to take advant
a0f0: 61 67 65 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d  age of SQLITE_OM
a100: 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 2e 0a 3c 2f  IT_* options..</
a110: 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
a120: 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61 6e 74  .<i><b>Important
a130: 20 4e 6f 74 65 3a 3c 2f 62 3e 20 54 68 65 20 53   Note:</b> The S
a140: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74  QLITE_OMIT_* opt
a150: 69 6f 6e 73 20 6d 61 79 20 6e 6f 74 20 77 6f 72  ions may not wor
a160: 6b 20 77 69 74 68 20 74 68 65 0a 5b 61 6d 61 6c  k with the.[amal
a170: 67 61 6d 61 74 69 6f 6e 5d 2e 20 20 53 51 4c 49  gamation].  SQLI
a180: 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c  TE_OMIT_* compil
a190: 65 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e 73 20 75  e-time.options u
a1a0: 73 75 61 6c 6c 79 20 77 6f 72 6b 20 63 6f 72 72  sually work corr
a1b0: 65 63 74 6c 79 20 6f 6e 6c 79 20 77 68 65 6e 20  ectly only when 
a1c0: 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c 74 20  SQLite is built 
a1d0: 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 0a  from canonical .
a1e0: 73 6f 75 72 63 65 20 66 69 6c 65 73 2e 0a 3c 2f  source files..</
a1f0: 69 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  i>.</blockquote>
a200: 0a 0a 0a 3c 70 3e 53 70 65 63 69 61 6c 20 76 65  ...<p>Special ve
a210: 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 53 51  rsions of the SQ
a220: 4c 69 74 65 20 61 6d 61 6c 67 61 6d 61 74 69 6f  Lite amalgamatio
a230: 6e 20 74 68 61 74 20 64 6f 20 77 6f 72 6b 20 77  n that do work w
a240: 69 74 68 20 61 0a 70 72 65 64 65 74 65 72 6d 69  ith a.predetermi
a250: 6e 65 64 20 73 65 74 20 6f 66 20 53 51 4c 49 54  ned set of SQLIT
a260: 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73  E_OMIT_* options
a270: 20 63 61 6e 20 62 65 20 67 65 6e 65 72 61 74 65   can be generate
a280: 64 2e 20 20 54 6f 20 64 6f 20 73 6f 2c 0a 6d 61  d.  To do so,.ma
a290: 6b 65 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  ke a copy of the
a2a0: 20 4d 61 6b 65 66 69 6c 65 2e 6c 69 6e 75 78 2d   Makefile.linux-
a2b0: 67 63 63 20 6d 61 6b 65 66 69 6c 65 20 74 65 6d  gcc makefile tem
a2c0: 70 6c 61 74 65 20 69 6e 20 74 68 65 20 63 61 6e  plate in the can
a2d0: 6f 6e 69 63 61 6c 0a 73 6f 75 72 63 65 20 63 6f  onical.source co
a2e0: 64 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 2e  de distribution.
a2f0: 20 20 43 68 61 6e 67 65 20 74 68 65 20 6e 61 6d    Change the nam
a300: 65 20 6f 66 20 79 6f 75 72 20 63 6f 70 79 20 74  e of your copy t
a310: 6f 20 73 69 6d 70 6c 79 20 22 4d 61 6b 65 66 69  o simply "Makefi
a320: 6c 65 22 2e 0a 54 68 65 6e 20 65 64 69 74 20 22  le"..Then edit "
a330: 4d 61 6b 65 66 69 6c 65 22 20 74 6f 20 73 65 74  Makefile" to set
a340: 20 75 70 20 61 70 70 72 6f 70 72 69 61 74 65 20   up appropriate 
a350: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
a360: 69 6f 6e 73 2e 20 20 54 68 65 6e 0a 74 79 70 65  ions.  Then.type
a370: 3a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 74  :.<blockquote><t
a380: 74 3e 6d 61 6b 65 20 63 6c 65 61 6e 3b 20 6d 61  t>make clean; ma
a390: 6b 65 20 73 71 6c 69 74 65 33 2e 63 3c 2f 74 74  ke sqlite3.c</tt
a3a0: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 54  ></blockquote>.T
a3b0: 68 65 20 72 65 73 75 6c 74 69 6e 67 20 22 73 71  he resulting "sq
a3c0: 6c 69 74 65 33 2e 63 22 20 61 6d 61 6c 67 61 6d  lite3.c" amalgam
a3d0: 61 74 69 6f 6e 20 63 6f 64 65 20 66 69 6c 65 20  ation code file 
a3e0: 28 61 6e 64 20 69 74 73 20 61 73 73 6f 63 69 61  (and its associa
a3f0: 74 65 64 0a 68 65 61 64 65 72 20 66 69 6c 65 20  ted.header file 
a400: 22 73 71 6c 69 74 65 33 2e 68 22 29 20 63 61 6e  "sqlite3.h") can
a410: 20 74 68 65 6e 20 62 65 20 6d 6f 76 65 64 20 74   then be moved t
a420: 6f 20 61 20 6e 6f 6e 2d 75 6e 69 78 20 70 6c 61  o a non-unix pla
a430: 74 66 6f 72 6d 0a 66 6f 72 20 66 69 6e 61 6c 20  tform.for final 
a440: 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 75 73 69 6e  compilation usin
a450: 67 20 61 20 6e 61 74 69 76 65 20 63 6f 6d 70 69  g a native compi
a460: 6c 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ler.</p>..<p>The
a470: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f   SQLITE_OMIT_* o
a480: 70 74 69 6f 6e 73 20 61 72 65 20 75 6e 73 75 70  ptions are unsup
a490: 70 6f 72 74 65 64 2e 20 20 42 79 20 74 68 69 73  ported.  By this
a4a0: 20 77 65 20 6d 65 61 6e 20 74 68 61 74 0a 61 6e   we mean that.an
a4b0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f   SQLITE_OMIT_* o
a4c0: 70 74 69 6f 6e 20 74 68 61 74 20 6f 6d 69 74 73  ption that omits
a4d0: 20 63 6f 64 65 20 66 72 6f 6d 20 74 68 65 20 62   code from the b
a4e0: 75 69 6c 64 20 69 6e 20 74 68 65 20 63 75 72 72  uild in the curr
a4f0: 65 6e 74 0a 72 65 6c 65 61 73 65 20 6d 69 67 68  ent.release migh
a500: 74 20 62 65 63 6f 6d 65 20 61 20 6e 6f 2d 6f 70  t become a no-op
a510: 20 69 6e 20 74 68 65 20 6e 65 78 74 20 72 65 6c   in the next rel
a520: 65 61 73 65 2e 20 20 4f 72 20 74 68 65 20 6f 74  ease.  Or the ot
a530: 68 65 72 20 77 61 79 20 61 72 6f 75 6e 64 3a 0a  her way around:.
a540: 61 6e 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  an SQLITE_OMIT_*
a550: 20 74 68 61 74 20 69 73 20 61 20 6e 6f 2d 6f 70   that is a no-op
a560: 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20   in the current 
a570: 72 65 6c 65 61 73 65 20 6d 69 67 68 74 20 63 61  release might ca
a580: 75 73 65 20 63 6f 64 65 0a 74 6f 20 62 65 20 65  use code.to be e
a590: 78 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6e  xcluded in the n
a5a0: 65 78 74 20 72 65 6c 65 61 73 65 2e 20 20 41 6c  ext release.  Al
a5b0: 73 6f 2c 20 6e 6f 74 20 61 6c 6c 20 53 51 4c 49  so, not all SQLI
a5c0: 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e  TE_OMIT_* option
a5d0: 73 0a 61 72 65 20 74 65 73 74 65 64 2e 20 20 53  s.are tested.  S
a5e0: 6f 6d 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ome SQLITE_OMIT_
a5f0: 2a 20 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74 20  * options might 
a600: 63 61 75 73 65 20 53 51 4c 69 74 65 20 74 6f 20  cause SQLite to 
a610: 6d 61 6c 66 75 6e 63 74 69 6f 6e 0a 61 6e 64 2f  malfunction.and/
a620: 6f 72 20 70 72 6f 76 69 64 65 20 69 6e 63 6f 72  or provide incor
a630: 72 65 63 74 20 61 6e 73 77 65 72 73 2e 0a 0a 3c  rect answers...<
a640: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c  blockquote>.<i><
a650: 62 3e 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65  b>Important Note
a660: 3a 3c 2f 62 3e 0a 54 68 65 20 53 51 4c 49 54 45  :</b>.The SQLITE
a670: 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d  _OMIT_* compile-
a680: 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65  time options are
a690: 20 75 6e 73 75 70 70 6f 72 74 65 64 2e 0a 3c 2f   unsupported..</
a6a0: 69 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  i></blockquote>.
a6b0: 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f  .<tcl>.COMPILE_O
a6c0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
a6d0: 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 7d 20 7b  IT_ALTERTABLE} {
a6e0: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
a6f0: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
a700: 74 68 65 20 0a 20 20 5b 41 4c 54 45 52 20 54 41  the .  [ALTER TA
a710: 42 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20  BLE] command is 
a720: 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20  not included in 
a730: 74 68 65 20 0a 20 20 6c 69 62 72 61 72 79 2e 20  the .  library. 
a740: 45 78 65 63 75 74 69 6e 67 20 61 6e 20 5b 41 4c  Executing an [AL
a750: 54 45 52 20 54 41 42 4c 45 5d 20 73 74 61 74 65  TER TABLE] state
a760: 6d 65 6e 74 20 63 61 75 73 65 73 20 61 20 70 61  ment causes a pa
a770: 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f  rse error..}..CO
a780: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
a790: 4c 49 54 45 5f 4f 4d 49 54 5f 41 4e 41 4c 59 5a  LITE_OMIT_ANALYZ
a7a0: 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  E} {.  When this
a7b0: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
a7c0: 65 64 2c 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45  ed, the [ANALYZE
a7d0: 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6f 6d 69  ] command is omi
a7e0: 74 74 65 64 20 66 72 6f 6d 0a 20 20 74 68 65 20  tted from.  the 
a7f0: 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  build..}..COMPIL
a800: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
a810: 5f 4f 4d 49 54 5f 41 54 54 41 43 48 7d 20 7b 0a  _OMIT_ATTACH} {.
a820: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
a830: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
a840: 68 65 20 5b 41 54 54 41 43 48 5d 20 61 6e 64 20  he [ATTACH] and 
a850: 5b 44 45 54 41 43 48 5d 20 63 6f 6d 6d 61 6e 64  [DETACH] command
a860: 73 20 61 72 65 0a 20 20 6f 6d 69 74 74 65 64 20  s are.  omitted 
a870: 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e 0a  from the build..
a880: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
a890: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  N {SQLITE_OMIT_A
a8a0: 55 54 48 4f 52 49 5a 41 54 49 4f 4e 7d 20 7b 0a  UTHORIZATION} {.
a8b0: 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20    Defining this 
a8c0: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65  option omits the
a8d0: 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 63   authorization c
a8e0: 61 6c 6c 62 61 63 6b 20 66 65 61 74 75 72 65 20  allback feature 
a8f0: 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72 61  from the.  libra
a900: 72 79 2e 20 54 68 65 20 5b 73 71 6c 69 74 65 33  ry. The [sqlite3
a910: 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28  _set_authorizer(
a920: 29 5d 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20  )] API function 
a930: 69 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 0a 20  is not present. 
a940: 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e   in the library.
a950: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
a960: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
a970: 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 7d 20 7b  AUTOINCREMENT} {
a980: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
a990: 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74  s used to omit t
a9a0: 68 65 20 0a 20 20 5b 41 55 54 4f 49 4e 43 52 45  he .  [AUTOINCRE
a9b0: 4d 45 4e 54 5d 20 66 75 6e 63 74 69 6f 6e 61 6c  MENT] functional
a9c0: 69 74 79 2e 20 57 68 65 6e 20 74 68 69 73 20 0a  ity. When this .
a9d0: 20 20 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65    is macro is de
a9e0: 66 69 6e 65 64 2c 20 63 6f 6c 75 6d 6e 73 20 64  fined, columns d
a9f0: 65 63 6c 61 72 65 64 20 61 73 20 0a 20 20 22 5b  eclared as .  "[
aa00: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
aa10: 4b 45 59 5d 20 41 55 54 4f 49 4e 43 52 45 4d 45  KEY] AUTOINCREME
aa20: 4e 54 22 0a 20 20 62 65 68 61 76 65 20 69 6e 20  NT".  behave in 
aa30: 74 68 65 20 73 61 6d 65 20 77 61 79 20 61 73 20  the same way as 
aa40: 63 6f 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65 64  columns declared
aa50: 20 61 73 20 22 5b 49 4e 54 45 47 45 52 20 50 52   as "[INTEGER PR
aa60: 49 4d 41 52 59 20 4b 45 59 5d 22 20 77 68 65 6e  IMARY KEY]" when
aa70: 20 61 20 0a 20 20 4e 55 4c 4c 20 69 73 20 69 6e   a .  NULL is in
aa80: 73 65 72 74 65 64 2e 20 54 68 65 20 73 71 6c 69  serted. The sqli
aa90: 74 65 5f 73 65 71 75 65 6e 63 65 20 73 79 73 74  te_sequence syst
aaa0: 65 6d 20 74 61 62 6c 65 20 69 73 20 6e 65 69 74  em table is neit
aab0: 68 65 72 20 63 72 65 61 74 65 64 2c 20 6e 6f 72  her created, nor
aac0: 0a 20 20 72 65 73 70 65 63 74 65 64 20 69 66 20  .  respected if 
aad0: 69 74 20 61 6c 72 65 61 64 79 20 65 78 69 73 74  it already exist
aae0: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
aaf0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
ab00: 54 5f 41 55 54 4f 49 4e 49 54 7d 20 7b 0a 20 20  T_AUTOINIT} {.  
ab10: 46 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f  For backwards co
ab20: 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68  mpatibility with
ab30: 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20   older versions 
ab40: 6f 66 20 53 51 4c 69 74 65 20 74 68 61 74 20 6c  of SQLite that l
ab50: 61 63 6b 0a 20 20 74 68 65 20 5b 73 71 6c 69 74  ack.  the [sqlit
ab60: 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d  e3_initialize()]
ab70: 20 69 6e 74 65 72 66 61 63 65 2c 20 74 68 65 20   interface, the 
ab80: 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c  [sqlite3_initial
ab90: 69 7a 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ize()] interface
aba0: 0a 20 20 69 73 20 63 61 6c 6c 65 64 20 61 75 74  .  is called aut
abb0: 6f 6d 61 74 69 63 61 6c 6c 79 20 75 70 6f 6e 20  omatically upon 
abc0: 65 6e 74 72 79 20 74 6f 20 63 65 72 74 61 69 6e  entry to certain
abd0: 20 6b 65 79 20 69 6e 74 65 72 66 61 63 65 73 20   key interfaces 
abe0: 73 75 63 68 20 61 73 0a 20 20 5b 73 71 6c 69 74  such as.  [sqlit
abf0: 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c  e3_open()], [sql
ac00: 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65  ite3_vfs_registe
ac10: 72 28 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74  r()], and [sqlit
ac20: 65 33 5f 6d 70 72 69 6e 74 66 28 29 5d 2e 0a 20  e3_mprintf()].. 
ac30: 20 54 68 65 20 6f 76 65 72 68 65 61 64 20 6f 66   The overhead of
ac40: 20 69 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c 69 74   invoking [sqlit
ac50: 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d  e3_initialize()]
ac60: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69   automatically i
ac70: 6e 20 74 68 69 73 0a 20 20 77 61 79 20 6d 61 79  n this.  way may
ac80: 20 62 65 20 6f 6d 69 74 74 65 64 20 62 79 20 62   be omitted by b
ac90: 75 69 6c 64 69 6e 67 20 53 51 4c 69 74 65 20 77  uilding SQLite w
aca0: 69 74 68 20 74 68 65 20 53 51 4c 49 54 45 5f 4f  ith the SQLITE_O
acb0: 4d 49 54 5f 41 55 54 4f 49 4e 49 54 0a 20 20 43  MIT_AUTOINIT.  C
acc0: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
acd0: 63 72 6f 2e 20 20 57 68 65 6e 20 62 75 69 6c 74  cro.  When built
ace0: 20 75 73 69 6e 67 20 53 51 4c 49 54 45 5f 4f 4d   using SQLITE_OM
acf0: 49 54 5f 41 55 54 4f 49 4e 49 54 2c 20 53 51 4c  IT_AUTOINIT, SQL
ad00: 69 74 65 0a 20 20 77 69 6c 6c 20 6e 6f 74 20 61  ite.  will not a
ad10: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 69  utomatically ini
ad20: 74 69 61 6c 69 7a 65 20 69 74 73 65 6c 66 20 61  tialize itself a
ad30: 6e 64 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  nd the applicati
ad40: 6f 6e 20 69 73 20 72 65 71 75 69 72 65 64 0a 20  on is required. 
ad50: 20 74 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69   to invoke [sqli
ad60: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
ad70: 5d 20 64 69 72 65 63 74 6c 79 20 70 72 69 6f 72  ] directly prior
ad80: 20 74 6f 20 62 65 67 69 6e 6e 69 6e 67 20 75 73   to beginning us
ad90: 65 20 6f 66 20 74 68 65 0a 20 20 53 51 4c 69 74  e of the.  SQLit
ada0: 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f  e library..}..CO
adb0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
adc0: 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 4d 41  LITE_OMIT_AUTOMA
add0: 54 49 43 5f 49 4e 44 45 58 7d 20 7b 0a 20 20 54  TIC_INDEX} {.  T
ade0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
adf0: 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 0a  ed to omit the .
ae00: 20 20 5b 61 75 74 6f 6d 61 74 69 63 20 69 6e 64    [automatic ind
ae10: 65 78 69 6e 67 5d 20 66 75 6e 63 74 69 6f 6e 61  exing] functiona
ae20: 6c 69 74 79 2e 0a 20 20 53 65 65 20 61 6c 73 6f  lity..  See also
ae30: 3a 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  : [SQLITE_DEFAUL
ae40: 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45  T_AUTOMATIC_INDE
ae50: 58 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  X]..}..COMPILE_O
ae60: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
ae70: 49 54 5f 41 55 54 4f 52 45 53 45 54 7d 20 7b 0a  IT_AUTORESET} {.
ae80: 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68    By default, th
ae90: 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28  e [sqlite3_step(
aea0: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 77 69 6c  )] interface wil
aeb0: 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  l automatically 
aec0: 69 6e 76 6f 6b 65 0a 20 20 5b 73 71 6c 69 74 65  invoke.  [sqlite
aed0: 33 5f 72 65 73 65 74 28 29 5d 20 74 6f 20 72 65  3_reset()] to re
aee0: 73 65 74 20 74 68 65 20 5b 70 72 65 70 61 72 65  set the [prepare
aef0: 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 69 66 20  d statement] if 
af00: 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68 69 73  necessary.  This
af10: 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  .  compile-time 
af20: 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74  option changes t
af30: 68 61 74 20 62 65 68 61 76 69 6f 72 20 73 6f 20  hat behavior so 
af40: 74 68 61 74 20 5b 73 71 6c 69 74 65 33 5f 73 74  that [sqlite3_st
af50: 65 70 28 29 5d 20 77 69 6c 6c 0a 20 20 72 65 74  ep()] will.  ret
af60: 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53 55  urn [SQLITE_MISU
af70: 53 45 5d 20 69 66 20 69 74 20 63 61 6c 6c 65 64  SE] if it called
af80: 20 61 67 61 69 6e 20 61 66 74 65 72 20 72 65 74   again after ret
af90: 75 72 6e 69 6e 67 20 61 6e 79 74 68 69 6e 67 20  urning anything 
afa0: 6f 74 68 65 72 0a 20 20 74 68 61 6e 20 5b 53 51  other.  than [SQ
afb0: 4c 49 54 45 5f 52 4f 57 5d 2c 20 5b 53 51 4c 49  LITE_ROW], [SQLI
afc0: 54 45 5f 42 55 53 59 5d 2c 20 6f 72 20 5b 53 51  TE_BUSY], or [SQ
afd0: 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 75 6e 6c  LITE_LOCKED] unl
afe0: 65 73 73 20 74 68 65 72 65 20 77 61 73 20 61 6e  ess there was an
aff0: 0a 20 20 69 6e 74 65 72 76 65 6e 69 6e 67 20 63  .  intervening c
b000: 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  all to [sqlite3_
b010: 72 65 73 65 74 28 29 5d 2e 0a 0a 20 20 49 6e 20  reset()]...  In 
b020: 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33  SQLite version 3
b030: 2e 36 2e 32 33 2e 31 20 61 6e 64 20 65 61 72 6c  .6.23.1 and earl
b040: 69 65 72 2c 20 5b 73 71 6c 69 74 65 33 5f 73 74  ier, [sqlite3_st
b050: 65 70 28 29 5d 20 75 73 65 64 20 74 6f 20 61 6c  ep()] used to al
b060: 77 61 79 73 0a 20 20 72 65 74 75 72 6e 20 5b 53  ways.  return [S
b070: 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 69 66  QLITE_MISUSE] if
b080: 20 69 74 20 77 61 73 20 69 6e 76 6f 6b 65 64 20   it was invoked 
b090: 61 67 61 69 6e 20 61 66 74 65 72 20 72 65 74 75  again after retu
b0a0: 72 6e 69 6e 67 20 61 6e 79 74 68 69 6e 67 0a 20  rning anything. 
b0b0: 20 6f 74 68 65 72 20 74 68 61 6e 20 5b 53 51 4c   other than [SQL
b0c0: 49 54 45 5f 52 4f 57 5d 20 77 69 74 68 6f 75 74  ITE_ROW] without
b0d0: 20 61 6e 20 69 6e 74 65 72 76 65 6e 69 6e 67 20   an intervening 
b0e0: 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33  call to [sqlite3
b0f0: 5f 72 65 73 65 74 28 29 5d 2e 0a 20 20 54 68 69  _reset()]..  Thi
b100: 73 20 63 61 75 73 65 64 20 70 72 6f 62 6c 65 6d  s caused problem
b110: 73 20 6f 6e 20 73 6f 6d 65 20 70 6f 6f 72 6c 79  s on some poorly
b120: 20 77 72 69 74 74 65 6e 20 73 6d 61 72 74 70 68   written smartph
b130: 6f 6e 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  one applications
b140: 20 77 68 69 63 68 0a 20 20 64 69 64 20 6e 6f 74   which.  did not
b150: 20 63 6f 72 72 65 63 74 6c 79 20 68 61 6e 64 6c   correctly handl
b160: 65 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c 4f  e the [SQLITE_LO
b170: 43 4b 45 44 5d 20 61 6e 64 20 5b 53 51 4c 49 54  CKED] and [SQLIT
b180: 45 5f 42 55 53 59 5d 20 65 72 72 6f 72 20 0a 20  E_BUSY] error . 
b190: 20 72 65 74 75 72 6e 73 2e 20 20 52 61 74 68 65   returns.  Rathe
b1a0: 72 20 74 68 61 6e 20 66 69 78 20 74 68 65 20 6d  r than fix the m
b1b0: 61 6e 79 20 64 65 66 65 63 74 69 76 65 20 73 6d  any defective sm
b1c0: 61 72 74 70 68 6f 6e 65 20 61 70 70 6c 69 63 61  artphone applica
b1d0: 74 69 6f 6e 73 2c 20 0a 20 20 74 68 65 20 62 65  tions, .  the be
b1e0: 68 61 76 69 6f 72 20 6f 66 20 53 51 4c 69 74 65  havior of SQLite
b1f0: 20 77 61 73 20 63 68 61 6e 67 65 64 20 69 6e 20   was changed in 
b200: 33 2e 36 2e 32 33 2e 32 20 74 6f 20 61 75 74 6f  3.6.23.2 to auto
b210: 6d 61 74 69 63 61 6c 6c 79 20 72 65 73 65 74 0a  matically reset.
b220: 20 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73    the prepared s
b230: 74 61 74 65 6d 65 6e 74 2e 20 20 42 75 74 20 74  tatement.  But t
b240: 68 61 74 20 63 68 61 6e 67 65 64 20 63 61 75 73  hat changed caus
b250: 65 64 20 69 73 73 75 65 73 20 69 6e 20 6f 74 68  ed issues in oth
b260: 65 72 20 0a 20 20 69 6d 70 72 6f 70 65 72 6c 79  er .  improperly
b270: 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 61 70 70   implemented app
b280: 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20 77  lications that w
b290: 65 72 65 20 61 63 74 75 61 6c 6c 79 20 6c 6f 6f  ere actually loo
b2a0: 6b 69 6e 67 0a 20 20 66 6f 72 20 61 6e 20 5b 53  king.  for an [S
b2b0: 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 72 65  QLITE_MISUSE] re
b2c0: 74 75 72 6e 20 74 6f 20 74 65 72 6d 69 6e 61 74  turn to terminat
b2d0: 65 20 74 68 65 69 72 20 71 75 65 72 79 20 6c 6f  e their query lo
b2e0: 6f 70 73 2e 20 20 28 41 6e 79 74 69 6d 65 0a 20  ops.  (Anytime. 
b2f0: 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20   an application 
b300: 67 65 74 73 20 61 6e 20 53 51 4c 49 54 45 5f 4d  gets an SQLITE_M
b310: 49 53 55 53 45 20 65 72 72 6f 72 20 63 6f 64 65  ISUSE error code
b320: 20 66 72 6f 6d 20 53 51 4c 69 74 65 2c 20 74 68   from SQLite, th
b330: 61 74 20 6d 65 61 6e 73 20 74 68 65 0a 20 20 61  at means the.  a
b340: 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 6d 69  pplication is mi
b350: 73 75 73 69 6e 67 20 74 68 65 20 53 51 4c 69 74  susing the SQLit
b360: 65 20 69 6e 74 65 72 66 61 63 65 20 61 6e 64 20  e interface and 
b370: 69 73 20 74 68 75 73 20 69 6e 63 6f 72 72 65 63  is thus incorrec
b380: 74 6c 79 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 65  tly.  implemente
b390: 64 2e 29 20 20 54 68 65 20 53 51 4c 49 54 45 5f  d.)  The SQLITE_
b3a0: 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45 54 20 69  OMIT_AUTORESET i
b3b0: 6e 74 65 72 66 61 63 65 20 77 61 73 20 61 64 64  nterface was add
b3c0: 65 64 20 74 6f 20 53 51 4c 69 74 65 0a 20 20 76  ed to SQLite.  v
b3d0: 65 72 73 69 6f 6e 20 33 2e 37 2e 35 20 69 6e 20  ersion 3.7.5 in 
b3e0: 61 6e 20 65 66 66 6f 72 74 20 74 6f 20 67 65 74  an effort to get
b3f0: 20 61 6c 6c 20 6f 66 20 74 68 65 20 28 62 72 6f   all of the (bro
b400: 6b 65 6e 29 0a 20 20 61 70 70 6c 69 63 61 74 69  ken).  applicati
b410: 6f 6e 73 20 74 6f 20 77 6f 72 6b 20 61 67 61 69  ons to work agai
b420: 6e 20 77 69 74 68 6f 75 74 20 68 61 76 69 6e 67  n without having
b430: 20 74 6f 20 61 63 74 75 61 6c 6c 79 20 66 69 78   to actually fix
b440: 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
b450: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
b460: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
b470: 54 5f 41 55 54 4f 56 41 43 55 55 4d 7d 20 7b 0a  T_AUTOVACUUM} {.
b480: 20 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e    If this option
b490: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
b4a0: 20 6c 69 62 72 61 72 79 20 63 61 6e 6e 6f 74 20   library cannot 
b4b0: 63 72 65 61 74 65 20 6f 72 20 77 72 69 74 65 20  create or write 
b4c0: 74 6f 20 0a 20 20 64 61 74 61 62 61 73 65 73 20  to .  databases 
b4d0: 74 68 61 74 20 73 75 70 70 6f 72 74 20 5b 61 75  that support [au
b4e0: 74 6f 5f 76 61 63 75 75 6d 5d 2e 0a 20 20 45 78  to_vacuum]..  Ex
b4f0: 65 63 75 74 69 6e 67 20 61 20 5b 50 52 41 47 4d  ecuting a [PRAGM
b500: 41 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 73  A auto_vacuum] s
b510: 74 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f 74 20  tatement is not 
b520: 61 6e 20 65 72 72 6f 72 0a 20 20 28 73 69 6e 63  an error.  (sinc
b530: 65 20 75 6e 6b 6e 6f 77 6e 20 50 52 41 47 4d 41  e unknown PRAGMA
b540: 73 20 61 72 65 20 73 69 6c 65 6e 74 6c 79 20 69  s are silently i
b550: 67 6e 6f 72 65 64 29 2c 20 62 75 74 20 64 6f 65  gnored), but doe
b560: 73 20 6e 6f 74 20 72 65 74 75 72 6e 20 61 20 76  s not return a v
b570: 61 6c 75 65 0a 20 20 6f 72 20 6d 6f 64 69 66 79  alue.  or modify
b580: 20 74 68 65 20 61 75 74 6f 2d 76 61 63 75 75 6d   the auto-vacuum
b590: 20 66 6c 61 67 20 69 6e 20 74 68 65 20 64 61 74   flag in the dat
b5a0: 61 62 61 73 65 20 66 69 6c 65 2e 20 49 66 20 61  abase file. If a
b5b0: 20 64 61 74 61 62 61 73 65 20 74 68 61 74 0a 20   database that. 
b5c0: 20 73 75 70 70 6f 72 74 73 20 61 75 74 6f 2d 76   supports auto-v
b5d0: 61 63 75 75 6d 20 69 73 20 6f 70 65 6e 65 64 20  acuum is opened 
b5e0: 62 79 20 61 20 6c 69 62 72 61 72 79 20 63 6f 6d  by a library com
b5f0: 70 69 6c 65 64 20 77 69 74 68 20 74 68 69 73 20  piled with this 
b600: 6f 70 74 69 6f 6e 2c 20 69 74 0a 20 20 69 73 20  option, it.  is 
b610: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6f 70  automatically op
b620: 65 6e 65 64 20 69 6e 20 72 65 61 64 2d 6f 6e 6c  ened in read-onl
b630: 79 20 6d 6f 64 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  y mode..}..COMPI
b640: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
b650: 45 5f 4f 4d 49 54 5f 42 45 54 57 45 45 4e 5f 4f  E_OMIT_BETWEEN_O
b660: 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20  PTIMIZATION} {. 
b670: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73   This option dis
b680: 61 62 6c 65 73 20 74 68 65 20 75 73 65 20 6f 66  ables the use of
b690: 20 69 6e 64 69 63 65 73 20 77 69 74 68 20 57 48   indices with WH
b6a0: 45 52 45 20 63 6c 61 75 73 65 20 74 65 72 6d 73  ERE clause terms
b6b0: 0a 20 20 74 68 61 74 20 65 6d 70 6c 6f 79 20 74  .  that employ t
b6c0: 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61  he BETWEEN opera
b6d0: 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  tor..}..COMPILE_
b6e0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
b6f0: 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54 45 52 41 4c  MIT_BLOB_LITERAL
b700: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
b710: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
b720: 64 2c 20 69 74 20 69 73 20 6e 6f 74 20 70 6f 73  d, it is not pos
b730: 73 69 62 6c 65 20 74 6f 20 73 70 65 63 69 66 79  sible to specify
b740: 20 61 20 62 6c 6f 62 20 69 6e 0a 20 20 61 6e 20   a blob in.  an 
b750: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 75 73  SQL statement us
b760: 69 6e 67 20 74 68 65 20 58 27 41 42 43 44 27 20  ing the X'ABCD' 
b770: 73 79 6e 74 61 78 2e 0a 7d 0a 0a 43 4f 4d 50 49  syntax..}..COMPI
b780: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
b790: 45 5f 4f 4d 49 54 5f 42 54 52 45 45 43 4f 55 4e  E_OMIT_BTREECOUN
b7a0: 54 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  T} {.  When this
b7b0: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
b7c0: 65 64 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74  ed, an optimizat
b7d0: 69 6f 6e 20 74 68 61 74 20 61 63 63 65 6c 65 72  ion that acceler
b7e0: 61 74 65 73 20 63 6f 75 6e 74 69 6e 67 0a 20 20  ates counting.  
b7f0: 61 6c 6c 20 65 6e 74 72 69 65 73 20 69 6e 20 61  all entries in a
b800: 20 74 61 62 6c 65 20 28 69 6e 20 6f 74 68 65 72   table (in other
b810: 20 77 6f 72 64 73 2c 20 61 6e 20 6f 70 74 69 6d   words, an optim
b820: 69 7a 61 74 69 6f 6e 20 74 68 61 74 20 68 65 6c  ization that hel
b830: 70 73 0a 20 20 22 53 45 4c 45 43 54 20 63 6f 75  ps.  "SELECT cou
b840: 6e 74 28 2a 29 20 46 52 4f 4d 20 74 61 62 6c 65  nt(*) FROM table
b850: 22 20 72 75 6e 20 66 61 73 74 65 72 29 20 69 73  " run faster) is
b860: 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   omitted..}..COM
b870: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
b880: 49 54 45 5f 4f 4d 49 54 5f 42 55 49 4c 54 49 4e  ITE_OMIT_BUILTIN
b890: 5f 54 45 53 54 7d 20 7b 0a 20 20 41 20 73 74 61  _TEST} {.  A sta
b8a0: 6e 64 61 72 64 20 53 51 4c 69 74 65 20 62 75 69  ndard SQLite bui
b8b0: 6c 64 20 69 6e 63 6c 75 64 65 73 20 61 20 73 6d  ld includes a sm
b8c0: 61 6c 6c 20 61 6d 6f 75 6e 74 20 6f 66 20 6c 6f  all amount of lo
b8d0: 67 69 63 20 63 6f 6e 74 72 6f 6c 6c 65 64 0a 20  gic controlled. 
b8e0: 20 62 79 20 74 68 65 20 5b 73 71 6c 69 74 65 33   by the [sqlite3
b8f0: 5f 74 65 73 74 5f 63 6f 6e 74 72 6f 6c 28 29 5d  _test_control()]
b900: 20 69 6e 74 65 72 66 61 63 65 20 74 68 61 74 20   interface that 
b910: 69 73 20 75 73 65 64 20 74 6f 20 65 78 65 72 63  is used to exerc
b920: 69 73 65 0a 20 20 70 61 72 74 73 20 6f 66 20 74  ise.  parts of t
b930: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 74  he SQLite core t
b940: 68 61 74 20 61 72 65 20 64 69 66 66 69 63 75 6c  hat are difficul
b950: 74 20 74 6f 20 63 6f 6e 74 72 6f 6c 20 61 6e 64  t to control and
b960: 20 6d 65 61 73 75 72 65 20 75 73 69 6e 67 0a 20   measure using. 
b970: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 41 50   the standard AP
b980: 49 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  I.  This option 
b990: 6f 6d 69 74 73 20 74 68 61 74 20 62 75 69 6c 74  omits that built
b9a0: 2d 69 6e 20 74 65 73 74 20 6c 6f 67 69 63 2e 0a  -in test logic..
b9b0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b9c0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43  N {SQLITE_OMIT_C
b9d0: 41 53 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  AST} {.  This op
b9e0: 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69  tion causes SQLi
b9f0: 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f  te to omit suppo
ba00: 72 74 20 66 6f 72 20 74 68 65 20 43 41 53 54 20  rt for the CAST 
ba10: 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d  operator..}..COM
ba20: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
ba30: 49 54 45 5f 4f 4d 49 54 5f 43 48 45 43 4b 7d 20  ITE_OMIT_CHECK} 
ba40: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
ba50: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
ba60: 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f   omit support fo
ba70: 72 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69  r CHECK constrai
ba80: 6e 74 73 2e 0a 20 20 54 68 65 20 70 61 72 73 65  nts..  The parse
ba90: 72 20 77 69 6c 6c 20 73 74 69 6c 6c 20 61 63 63  r will still acc
baa0: 65 70 74 20 43 48 45 43 4b 20 63 6f 6e 73 74 72  ept CHECK constr
bab0: 61 69 6e 74 73 20 69 6e 20 53 51 4c 20 73 74 61  aints in SQL sta
bac0: 74 65 6d 65 6e 74 73 2c 0a 20 20 74 68 65 79 20  tements,.  they 
bad0: 77 69 6c 6c 20 6a 75 73 74 20 6e 6f 74 20 62 65  will just not be
bae0: 20 65 6e 66 6f 72 63 65 64 2e 0a 7d 0a 0a 43 4f   enforced..}..CO
baf0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
bb00: 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49 4c  LITE_OMIT_COMPIL
bb10: 45 4f 50 54 49 4f 4e 5f 44 49 41 47 53 7d 20 7b  EOPTION_DIAGS} {
bb20: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
bb30: 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74  s used to omit t
bb40: 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  he compile-time 
bb50: 6f 70 74 69 6f 6e 20 64 69 61 67 6e 6f 73 74 69  option diagnosti
bb60: 63 73 20 61 76 61 69 6c 61 62 6c 65 0a 20 20 69  cs available.  i
bb70: 6e 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75 64  n SQLite, includ
bb80: 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ing the [sqlite3
bb90: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75  _compileoption_u
bba0: 73 65 64 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71  sed()] and.  [sq
bbb0: 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74  lite3_compileopt
bbc0: 69 6f 6e 5f 67 65 74 28 29 5d 20 43 2f 43 2b 2b  ion_get()] C/C++
bbd0: 20 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68 65 0a   functions, the.
bbe0: 20 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c    [sqlite_compil
bbf0: 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20  eoption_used()] 
bc00: 61 6e 64 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70  and [sqlite_comp
bc10: 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 5d  ileoption_get()]
bc20: 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 2c 0a   SQL functions,.
bc30: 20 20 61 6e 64 20 74 68 65 20 5b 63 6f 6d 70 69    and the [compi
bc40: 6c 65 5f 6f 70 74 69 6f 6e 73 20 70 72 61 67 6d  le_options pragm
bc50: 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  a]..}..COMPILE_O
bc60: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
bc70: 49 54 5f 43 4f 4d 50 4c 45 54 45 7d 20 7b 0a 20  IT_COMPLETE} {. 
bc80: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
bc90: 73 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ses the [sqlite3
bca0: 5f 63 6f 6d 70 6c 65 74 65 28 29 5d 20 61 6e 64  _complete()] and
bcb0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65   [sqlite3_comple
bcc0: 74 65 31 36 28 29 5d 0a 20 20 69 6e 74 65 72 66  te16()].  interf
bcd0: 61 63 65 73 20 74 6f 20 62 65 20 6f 6d 69 74 74  aces to be omitt
bce0: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
bcf0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
bd00: 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45  IT_COMPOUND_SELE
bd10: 43 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CT} {.  This opt
bd20: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f  ion is used to o
bd30: 6d 69 74 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64  mit the compound
bd40: 20 5b 53 45 4c 45 43 54 5d 20 66 75 6e 63 74 69   [SELECT] functi
bd50: 6f 6e 61 6c 69 74 79 2e 20 0a 20 20 5b 53 45 4c  onality. .  [SEL
bd60: 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 20  ECT] statements 
bd70: 74 68 61 74 20 75 73 65 20 74 68 65 20 0a 20 20  that use the .  
bd80: 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c  UNION, UNION ALL
bd90: 2c 20 49 4e 54 45 52 53 45 43 54 20 6f 72 20 45  , INTERSECT or E
bda0: 58 43 45 50 54 20 63 6f 6d 70 6f 75 6e 64 20 53  XCEPT compound S
bdb0: 45 4c 45 43 54 20 6f 70 65 72 61 74 6f 72 73 20  ELECT operators 
bdc0: 77 69 6c 6c 20 0a 20 20 63 61 75 73 65 20 61 20  will .  cause a 
bdd0: 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20  parse error...  
bde0: 41 6e 20 5b 49 4e 53 45 52 54 5d 20 73 74 61 74  An [INSERT] stat
bdf0: 65 6d 65 6e 74 20 77 69 74 68 20 6d 75 6c 74 69  ement with multi
be00: 70 6c 65 20 76 61 6c 75 65 73 20 69 6e 20 74 68  ple values in th
be10: 65 20 56 41 4c 55 45 53 20 63 6c 61 75 73 65 20  e VALUES clause 
be20: 69 73 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 65 64  is.  implemented
be30: 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61 73 20 61   internally as a
be40: 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54   compound SELECT
be50: 2e 20 20 48 65 6e 63 65 2c 20 74 68 69 73 20 6f  .  Hence, this o
be60: 70 74 69 6f 6e 20 61 6c 73 6f 0a 20 20 64 69 73  ption also.  dis
be70: 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c 69 74  ables the abilit
be80: 79 20 74 6f 20 69 6e 73 65 72 74 20 6d 6f 72 65  y to insert more
be90: 20 74 68 61 6e 20 61 20 73 69 6e 67 6c 65 20 72   than a single r
bea0: 6f 77 20 75 73 69 6e 67 20 61 6e 0a 20 20 49 4e  ow using an.  IN
beb0: 53 45 52 54 20 49 4e 54 4f 20 2e 2e 2e 20 56 41  SERT INTO ... VA
bec0: 4c 55 45 53 20 2e 2e 2e 20 73 74 61 74 65 6d 65  LUES ... stateme
bed0: 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  nt..}..COMPILE_O
bee0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
bef0: 49 54 5f 43 54 45 7d 20 7b 0a 20 20 54 68 69 73  IT_CTE} {.  This
bf00: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73   option causes s
bf10: 75 70 70 6f 72 74 20 66 6f 72 20 5b 63 6f 6d 6d  upport for [comm
bf20: 6f 6e 20 74 61 62 6c 65 20 65 78 70 72 65 73 73  on table express
bf30: 69 6f 6e 73 5d 20 74 6f 20 62 65 20 6f 6d 69 74  ions] to be omit
bf40: 74 65 64 2e 0a 7d 0a 0a 0a 0a 43 4f 4d 50 49 4c  ted..}....COMPIL
bf50: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
bf60: 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f 46  _OMIT_DATETIME_F
bf70: 55 4e 43 53 7d 20 7b 0a 20 20 49 66 20 74 68 69  UNCS} {.  If thi
bf80: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
bf90: 6e 65 64 2c 20 53 51 4c 69 74 65 27 73 20 62 75  ned, SQLite's bu
bfa0: 69 6c 74 2d 69 6e 20 64 61 74 65 20 61 6e 64 20  ilt-in date and 
bfb0: 74 69 6d 65 20 6d 61 6e 69 70 75 6c 61 74 69 6f  time manipulatio
bfc0: 6e 0a 20 20 66 75 6e 63 74 69 6f 6e 73 20 61 72  n.  functions ar
bfd0: 65 20 6f 6d 69 74 74 65 64 2e 20 53 70 65 63 69  e omitted. Speci
bfe0: 66 69 63 61 6c 6c 79 2c 20 74 68 65 20 53 51 4c  fically, the SQL
bff0: 20 66 75 6e 63 74 69 6f 6e 73 20 6a 75 6c 69 61   functions julia
c000: 6e 64 61 79 28 29 2c 20 64 61 74 65 28 29 2c 0a  nday(), date(),.
c010: 20 20 74 69 6d 65 28 29 2c 20 64 61 74 65 74 69    time(), dateti
c020: 6d 65 28 29 20 61 6e 64 20 73 74 72 66 74 69 6d  me() and strftim
c030: 65 28 29 20 61 72 65 20 6e 6f 74 20 61 76 61 69  e() are not avai
c040: 6c 61 62 6c 65 2e 20 54 68 65 20 64 65 66 61 75  lable. The defau
c050: 6c 74 20 63 6f 6c 75 6d 6e 0a 20 20 76 61 6c 75  lt column.  valu
c060: 65 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c  es CURRENT_TIME,
c070: 20 43 55 52 52 45 4e 54 5f 44 41 54 45 20 61 6e   CURRENT_DATE an
c080: 64 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54  d CURRENT_TIMEST
c090: 41 4d 50 20 61 72 65 20 73 74 69 6c 6c 20 61 76  AMP are still av
c0a0: 61 69 6c 61 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50  ailable..}..COMP
c0b0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
c0c0: 54 45 5f 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45  TE_OMIT_DECLTYPE
c0d0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
c0e0: 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  n causes SQLite 
c0f0: 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20  to omit support 
c100: 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74  for the.  [sqlit
c110: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79  e3_column_declty
c120: 70 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74  pe()] and [sqlit
c130: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79  e3_column_declty
c140: 70 65 31 36 28 29 5d 0a 20 20 69 6e 74 65 72 66  pe16()].  interf
c150: 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  aces..}..COMPILE
c160: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
c170: 4f 4d 49 54 5f 44 45 50 52 45 43 41 54 45 44 7d  OMIT_DEPRECATED}
c180: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
c190: 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
c1a0: 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66  o omit support f
c1b0: 6f 72 20 69 6e 74 65 72 66 61 63 65 73 0a 20 20  or interfaces.  
c1c0: 6d 61 72 6b 65 64 20 61 73 20 64 65 70 72 65 63  marked as deprec
c1d0: 61 74 65 64 2e 20 20 54 68 69 73 20 69 6e 63 6c  ated.  This incl
c1e0: 75 64 65 73 20 0a 20 20 5b 73 71 6c 69 74 65 33  udes .  [sqlite3
c1f0: 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74  _aggregate_count
c200: 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f  ()],.  [sqlite3_
c210: 65 78 70 69 72 65 64 28 29 5d 2c 0a 20 20 5b 73  expired()],.  [s
c220: 71 6c 69 74 65 33 5f 74 72 61 6e 73 66 65 72 5f  qlite3_transfer_
c230: 62 69 6e 64 69 6e 67 73 28 29 5d 2c 0a 20 20 5b  bindings()],.  [
c240: 73 71 6c 69 74 65 33 5f 67 6c 6f 62 61 6c 5f 72  sqlite3_global_r
c250: 65 63 6f 76 65 72 28 29 5d 2c 0a 20 20 5b 73 71  ecover()],.  [sq
c260: 6c 69 74 65 33 5f 74 68 72 65 61 64 5f 63 6c 65  lite3_thread_cle
c270: 61 6e 75 70 28 29 5d 20 61 6e 64 0a 20 20 5b 73  anup()] and.  [s
c280: 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 61 6c  qlite3_memory_al
c290: 61 72 6d 28 29 5d 20 69 6e 74 65 72 66 61 63 65  arm()] interface
c2a0: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
c2b0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
c2c0: 54 5f 44 49 53 4b 49 4f 7d 20 7b 0a 20 20 54 68  T_DISKIO} {.  Th
c2d0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
c2e0: 61 6c 6c 20 73 75 70 70 6f 72 74 20 66 6f 72 20  all support for 
c2f0: 77 72 69 74 69 6e 67 20 74 6f 20 74 68 65 20 64  writing to the d
c300: 69 73 6b 20 61 6e 64 20 66 6f 72 63 65 73 0a 20  isk and forces. 
c310: 20 64 61 74 61 62 61 73 65 73 20 74 6f 20 65 78   databases to ex
c320: 69 73 74 20 69 6e 20 6d 65 6d 6f 72 79 20 6f 6e  ist in memory on
c330: 6c 79 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  ly.  This option
c340: 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 0a 20   has not been . 
c350: 20 6d 61 69 6e 74 61 69 6e 65 64 20 61 6e 64 20   maintained and 
c360: 70 72 6f 62 61 62 6c 79 20 64 6f 65 73 20 6e 6f  probably does no
c370: 74 20 77 6f 72 6b 20 77 69 74 68 20 6e 65 77 65  t work with newe
c380: 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  r versions of SQ
c390: 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  Lite..}..COMPILE
c3a0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
c3b0: 4f 4d 49 54 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a  OMIT_EXPLAIN} {.
c3c0: 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20    Defining this 
c3d0: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
c3e0: 65 20 5b 45 58 50 4c 41 49 4e 5d 20 63 6f 6d 6d  e [EXPLAIN] comm
c3f0: 61 6e 64 20 74 6f 20 62 65 20 6f 6d 69 74 74 65  and to be omitte
c400: 64 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62  d from the.  lib
c410: 72 61 72 79 2e 20 41 74 74 65 6d 70 74 69 6e 67  rary. Attempting
c420: 20 74 6f 20 65 78 65 63 75 74 65 20 61 6e 20 5b   to execute an [
c430: 45 58 50 4c 41 49 4e 5d 20 73 74 61 74 65 6d 65  EXPLAIN] stateme
c440: 6e 74 20 77 69 6c 6c 20 63 61 75 73 65 20 61 20  nt will cause a 
c450: 70 61 72 73 65 0a 20 20 65 72 72 6f 72 2e 0a 7d  parse.  error..}
c460: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
c470: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c   {SQLITE_OMIT_FL
c480: 41 47 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20  AG_PRAGMAS} {.  
c490: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
c4a0: 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 61 20  s support for a 
c4b0: 73 75 62 73 65 74 20 6f 66 20 5b 50 52 41 47 4d  subset of [PRAGM
c4c0: 41 5d 20 63 6f 6d 6d 61 6e 64 73 20 74 68 61 74  A] commands that
c4d0: 0a 20 20 71 75 65 72 79 20 61 6e 64 20 73 65 74  .  query and set
c4e0: 20 62 6f 6f 6c 65 61 6e 20 70 72 6f 70 65 72 74   boolean propert
c4f0: 69 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ies..}..COMPILE_
c500: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
c510: 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f 49  MIT_FLOATING_POI
c520: 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  NT} {.  This opt
c530: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f  ion is used to o
c540: 6d 69 74 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69  mit floating-poi
c550: 6e 74 20 6e 75 6d 62 65 72 20 73 75 70 70 6f 72  nt number suppor
c560: 74 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74  t from the SQLit
c570: 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 57 68 65  e.  library. Whe
c580: 6e 20 73 70 65 63 69 66 69 65 64 2c 20 73 70 65  n specified, spe
c590: 63 69 66 79 69 6e 67 20 61 20 66 6c 6f 61 74 69  cifying a floati
c5a0: 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 20  ng point number 
c5b0: 61 73 20 61 20 6c 69 74 65 72 61 6c 20 0a 20 20  as a literal .  
c5c0: 28 69 2e 65 2e 20 22 31 2e 30 31 22 29 20 72 65  (i.e. "1.01") re
c5d0: 73 75 6c 74 73 20 69 6e 20 61 20 70 61 72 73 65  sults in a parse
c5e0: 20 65 72 72 6f 72 2e 0a 0a 20 20 3c 70 3e 49 6e   error...  <p>In
c5f0: 20 74 68 65 20 66 75 74 75 72 65 2c 20 74 68 69   the future, thi
c600: 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20 61 6c 73  s option may als
c610: 6f 20 64 69 73 61 62 6c 65 20 6f 74 68 65 72 20  o disable other 
c620: 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 0a  floating point .
c630: 20 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2c    functionality,
c640: 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 74 68 65   for example the
c650: 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74   [sqlite3_result
c660: 5f 64 6f 75 62 6c 65 28 29 5d 2c 20 0a 20 20 5b  _double()], .  [
c670: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75  sqlite3_bind_dou
c680: 62 6c 65 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  ble()], [sqlite3
c690: 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 29 5d  _value_double()]
c6a0: 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
c6b0: 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 29 5d  column_double()]
c6c0: 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 2e 0a   API functions..
c6d0: 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c    </p>.}..COMPIL
c6e0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
c6f0: 5f 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f 4b 45  _OMIT_FOREIGN_KE
c700: 59 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f  Y} {.  If this o
c710: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
c720: 2c 20 74 68 65 6e 20 5b 66 6f 72 65 69 67 6e 20  , then [foreign 
c730: 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 5d 20  key constraint] 
c740: 73 79 6e 74 61 78 20 69 73 0a 20 20 6e 6f 74 20  syntax is.  not 
c750: 72 65 63 6f 67 6e 69 7a 65 64 2e 0a 7d 0a 0a 43  recognized..}..C
c760: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
c770: 51 4c 49 54 45 5f 4f 4d 49 54 5f 47 45 54 5f 54  QLITE_OMIT_GET_T
c780: 41 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  ABLE} {.  This o
c790: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70  ption causes sup
c7a0: 70 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69 74 65  port for [sqlite
c7b0: 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 61  3_get_table()] a
c7c0: 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 66 72  nd.  [sqlite3_fr
c7d0: 65 65 5f 74 61 62 6c 65 28 29 5d 20 74 6f 20 62  ee_table()] to b
c7e0: 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f  e omitted..}..CO
c7f0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
c800: 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c  LITE_OMIT_INCRBL
c810: 4f 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  OB} {.  This opt
c820: 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70 6f  ion causes suppo
c830: 72 74 20 66 6f 72 20 5b 73 71 6c 69 74 65 33 5f  rt for [sqlite3_
c840: 62 6c 6f 62 20 7c 20 69 6e 63 72 65 6d 65 6e 74  blob | increment
c850: 61 6c 20 42 4c 4f 42 20 49 2f 4f 5d 0a 20 20 74  al BLOB I/O].  t
c860: 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a  o be omitted..}.
c870: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
c880: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 54  {SQLITE_OMIT_INT
c890: 45 47 52 49 54 59 5f 43 48 45 43 4b 7d 20 7b 0a  EGRITY_CHECK} {.
c8a0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
c8b0: 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
c8c0: 74 68 65 20 5b 69 6e 74 65 67 72 69 74 79 5f 63  the [integrity_c
c8d0: 68 65 63 6b 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a  heck pragma]..}.
c8e0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
c8f0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 49 4b  {SQLITE_OMIT_LIK
c900: 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20  E_OPTIMIZATION} 
c910: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
c920: 64 69 73 61 62 6c 65 73 20 74 68 65 20 61 62 69  disables the abi
c930: 6c 69 74 79 20 6f 66 20 53 51 4c 69 74 65 20 74  lity of SQLite t
c940: 6f 20 75 73 65 20 69 6e 64 69 63 65 73 20 74 6f  o use indices to
c950: 20 68 65 6c 70 0a 20 20 72 65 73 6f 6c 76 65 20   help.  resolve 
c960: 5b 4c 49 4b 45 5d 20 61 6e 64 20 5b 47 4c 4f 42  [LIKE] and [GLOB
c970: 5d 20 6f 70 65 72 61 74 6f 72 73 20 69 6e 20 61  ] operators in a
c980: 20 57 48 45 52 45 20 63 6c 61 75 73 65 2e 0a 7d   WHERE clause..}
c990: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
c9a0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f   {SQLITE_OMIT_LO
c9b0: 41 44 5f 45 58 54 45 4e 53 49 4f 4e 7d 20 7b 0a  AD_EXTENSION} {.
c9c0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
c9d0: 69 74 73 20 74 68 65 20 65 6e 74 69 72 65 20 65  its the entire e
c9e0: 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67  xtension loading
c9f0: 20 6d 65 63 68 61 6e 69 73 6d 20 66 72 6f 6d 0a   mechanism from.
ca00: 20 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75 64    SQLite, includ
ca10: 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61  ing [sqlite3_ena
ca20: 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  ble_load_extensi
ca30: 6f 6e 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c  on()] and.  [sql
ca40: 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73  ite3_load_extens
ca50: 69 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ion()] interface
ca60: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
ca70: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
ca80: 54 5f 4c 4f 43 41 4c 54 49 4d 45 7d 20 7b 0a 20  T_LOCALTIME} {. 
ca90: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
caa0: 74 73 20 74 68 65 20 22 6c 6f 63 61 6c 74 69 6d  ts the "localtim
cab0: 65 22 20 6d 6f 64 69 66 69 65 72 20 66 72 6f 6d  e" modifier from
cac0: 20 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69   the date and ti
cad0: 6d 65 0a 20 20 66 75 6e 63 74 69 6f 6e 73 2e 20  me.  functions. 
cae0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
caf0: 73 6f 6d 65 74 69 6d 65 73 20 75 73 65 66 75 6c  sometimes useful
cb00: 20 77 68 65 6e 20 74 72 79 69 6e 67 20 74 6f 20   when trying to 
cb10: 63 6f 6d 70 69 6c 65 0a 20 20 74 68 65 20 64 61  compile.  the da
cb20: 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63  te and time func
cb30: 74 69 6f 6e 73 20 6f 6e 20 61 20 70 6c 61 74 66  tions on a platf
cb40: 6f 72 6d 20 74 68 61 74 20 64 6f 65 73 20 6e 6f  orm that does no
cb50: 74 20 73 75 70 70 6f 72 74 20 74 68 65 0a 20 20  t support the.  
cb60: 63 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 63 61 6c  concept of local
cb70: 20 74 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c   time..}..COMPIL
cb80: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
cb90: 5f 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44 45 7d  _OMIT_LOOKASIDE}
cba0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
cbb0: 20 6f 6d 69 74 73 20 74 68 65 20 5b 6c 6f 6f 6b   omits the [look
cbc0: 61 73 69 64 65 20 6d 65 6d 6f 72 79 20 61 6c 6c  aside memory all
cbd0: 6f 63 61 74 6f 72 5d 2e 0a 7d 0a 0a 43 4f 4d 50  ocator]..}..COMP
cbe0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
cbf0: 54 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44 42  TE_OMIT_MEMORYDB
cc00: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
cc10: 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20  is defined, the 
cc20: 6c 69 62 72 61 72 79 20 64 6f 65 73 20 6e 6f 74  library does not
cc30: 20 72 65 73 70 65 63 74 20 74 68 65 20 73 70 65   respect the spe
cc40: 63 69 61 6c 20 64 61 74 61 62 61 73 65 0a 20 20  cial database.  
cc50: 6e 61 6d 65 20 22 3a 6d 65 6d 6f 72 79 3a 22 20  name ":memory:" 
cc60: 28 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64 20 74  (normally used t
cc70: 6f 20 63 72 65 61 74 65 20 61 6e 20 5b 69 6e 2d  o create an [in-
cc80: 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 5d  memory database]
cc90: 29 2e 20 49 66 20 0a 20 20 22 3a 6d 65 6d 6f 72  ). If .  ":memor
cca0: 79 3a 22 20 69 73 20 70 61 73 73 65 64 20 74 6f  y:" is passed to
ccb0: 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29   [sqlite3_open()
ccc0: 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ], [sqlite3_open
ccd0: 31 36 28 29 5d 2c 20 6f 72 0a 20 20 5b 73 71 6c  16()], or.  [sql
cce0: 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c  ite3_open_v2()],
ccf0: 20 61 20 66 69 6c 65 20 77 69 74 68 20 74 68 69   a file with thi
cd00: 73 20 6e 61 6d 65 20 77 69 6c 6c 20 62 65 20 0a  s name will be .
cd10: 20 20 6f 70 65 6e 65 64 20 6f 72 20 63 72 65 61    opened or crea
cd20: 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ted..}..COMPILE_
cd30: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
cd40: 4d 49 54 5f 4f 52 5f 4f 50 54 49 4d 49 5a 41 54  MIT_OR_OPTIMIZAT
cd50: 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ION} {.  This op
cd60: 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68  tion disables th
cd70: 65 20 61 62 69 6c 69 74 79 20 6f 66 20 53 51 4c  e ability of SQL
cd80: 69 74 65 20 74 6f 20 75 73 65 20 61 6e 20 69 6e  ite to use an in
cd90: 64 65 78 20 74 6f 67 65 74 68 65 72 0a 20 20 77  dex together.  w
cda0: 69 74 68 20 74 65 72 6d 73 20 6f 66 20 61 20 57  ith terms of a W
cdb0: 48 45 52 45 20 63 6c 61 75 73 65 20 63 6f 6e 6e  HERE clause conn
cdc0: 65 63 74 65 64 20 62 79 20 74 68 65 20 4f 52 20  ected by the OR 
cdd0: 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d  operator..}..COM
cde0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
cdf0: 49 54 45 5f 4f 4d 49 54 5f 50 41 47 45 52 5f 50  ITE_OMIT_PAGER_P
ce00: 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69  RAGMAS} {.  Defi
ce10: 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e  ning this option
ce20: 20 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20 72   omits pragmas r
ce30: 65 6c 61 74 65 64 20 74 6f 20 74 68 65 20 70 61  elated to the pa
ce40: 67 65 72 20 73 75 62 73 79 73 74 65 6d 20 66 72  ger subsystem fr
ce50: 6f 6d 20 0a 20 20 74 68 65 20 62 75 69 6c 64 2e  om .  the build.
ce60: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
ce70: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
ce80: 50 52 41 47 4d 41 7d 20 7b 0a 20 20 54 68 69 73  PRAGMA} {.  This
ce90: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
cea0: 74 6f 20 6f 6d 69 74 20 74 68 65 20 5b 50 52 41  to omit the [PRA
ceb0: 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 0a 20 20 66  GMA] command.  f
cec0: 72 6f 6d 20 74 68 65 20 6c 69 62 72 61 72 79 2e  rom the library.
ced0: 20 4e 6f 74 65 20 74 68 61 74 20 69 74 20 69 73   Note that it is
cee0: 20 75 73 65 66 75 6c 20 74 6f 20 64 65 66 69 6e   useful to defin
cef0: 65 20 74 68 65 20 6d 61 63 72 6f 73 20 74 68 61  e the macros tha
cf00: 74 20 6f 6d 69 74 0a 20 20 73 70 65 63 69 66 69  t omit.  specifi
cf10: 63 20 70 72 61 67 6d 61 73 20 69 6e 20 61 64 64  c pragmas in add
cf20: 69 74 69 6f 6e 20 74 6f 20 74 68 69 73 2c 20 61  ition to this, a
cf30: 73 20 74 68 65 79 20 6d 61 79 20 61 6c 73 6f 20  s they may also 
cf40: 72 65 6d 6f 76 65 20 73 75 70 70 6f 72 74 69 6e  remove supportin
cf50: 67 20 63 6f 64 65 0a 20 20 69 6e 20 6f 74 68 65  g code.  in othe
cf60: 72 20 73 75 62 2d 73 79 73 74 65 6d 73 2e 20 54  r sub-systems. T
cf70: 68 69 73 20 6d 61 63 72 6f 20 72 65 6d 6f 76 65  his macro remove
cf80: 73 20 74 68 65 20 5b 50 52 41 47 4d 41 5d 20 63  s the [PRAGMA] c
cf90: 6f 6d 6d 61 6e 64 20 6f 6e 6c 79 2e 0a 7d 0a 0a  ommand only..}..
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 50 52 4f 47  SQLITE_OMIT_PROG
cfc0: 52 45 53 53 5f 43 41 4c 4c 42 41 43 4b 7d 20 7b  RESS_CALLBACK} {
cfd0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d  .  This option m
cfe0: 61 79 20 62 65 20 64 65 66 69 6e 65 64 20 74 6f  ay be defined to
cff0: 20 6f 6d 69 74 20 74 68 65 20 63 61 70 61 62 69   omit the capabi
d000: 6c 69 74 79 20 74 6f 20 69 73 73 75 65 20 22 70  lity to issue "p
d010: 72 6f 67 72 65 73 73 22 20 0a 20 20 63 61 6c 6c  rogress" .  call
d020: 62 61 63 6b 73 20 64 75 72 69 6e 67 20 6c 6f 6e  backs during lon
d030: 67 2d 72 75 6e 6e 69 6e 67 20 53 51 4c 20 73 74  g-running SQL st
d040: 61 74 65 6d 65 6e 74 73 2e 20 54 68 65 20 0a 20  atements. The . 
d050: 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65   [sqlite3_progre
d060: 73 73 5f 68 61 6e 64 6c 65 72 28 29 5d 0a 20 20  ss_handler()].  
d070: 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  API function is 
d080: 6e 6f 74 20 70 72 65 73 65 6e 74 20 69 6e 20 74  not present in t
d090: 68 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43  he library..}..C
d0a0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
d0b0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 51 55 49 43 4b  QLITE_OMIT_QUICK
d0c0: 42 41 4c 41 4e 43 45 7d 20 7b 0a 20 20 54 68 69  BALANCE} {.  Thi
d0d0: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61  s option omits a
d0e0: 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 2c 20 66  n alternative, f
d0f0: 61 73 74 65 72 20 42 2d 54 72 65 65 20 62 61 6c  aster B-Tree bal
d100: 61 6e 63 69 6e 67 20 72 6f 75 74 69 6e 65 2e 0a  ancing routine..
d110: 20 20 55 73 69 6e 67 20 74 68 69 73 20 6f 70 74    Using this opt
d120: 69 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65  ion makes SQLite
d130: 20 73 6c 69 67 68 74 6c 79 20 73 6d 61 6c 6c 65   slightly smalle
d140: 72 20 61 74 20 74 68 65 20 65 78 70 65 6e 73 65  r at the expense
d150: 20 6f 66 0a 20 20 6d 61 6b 69 6e 67 20 69 74 20   of.  making it 
d160: 72 75 6e 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f  run slightly slo
d170: 77 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  wer..}..COMPILE_
d180: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
d190: 4d 49 54 5f 52 45 49 4e 44 45 58 7d 20 7b 0a 20  MIT_REINDEX} {. 
d1a0: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
d1b0: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  n is defined, th
d1c0: 65 20 5b 52 45 49 4e 44 45 58 5d 0a 20 20 63 6f  e [REINDEX].  co
d1d0: 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63  mmand is not inc
d1e0: 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6c 69 62  luded in the lib
d1f0: 72 61 72 79 2e 0a 20 20 45 78 65 63 75 74 69 6e  rary..  Executin
d200: 67 20 61 20 5b 52 45 49 4e 44 45 58 5d 20 73 74  g a [REINDEX] st
d210: 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20 0a  atement causes .
d220: 20 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e    a parse error.
d230: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
d240: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
d250: 53 43 48 45 4d 41 5f 50 52 41 47 4d 41 53 7d 20  SCHEMA_PRAGMAS} 
d260: 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69  {.  Defining thi
d270: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70  s option omits p
d280: 72 61 67 6d 61 73 20 66 6f 72 20 71 75 65 72 79  ragmas for query
d290: 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65  ing the database
d2a0: 20 73 63 68 65 6d 61 20 66 72 6f 6d 20 0a 20 20   schema from .  
d2b0: 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f  the build..}..CO
d2c0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
d2d0: 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41  LITE_OMIT_SCHEMA
d2e0: 5f 56 45 52 53 49 4f 4e 5f 50 52 41 47 4d 41 53  _VERSION_PRAGMAS
d2f0: 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74  } {.  Defining t
d300: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
d310: 20 70 72 61 67 6d 61 73 20 66 6f 72 20 71 75 65   pragmas for que
d320: 72 79 69 6e 67 20 61 6e 64 20 6d 6f 64 69 66 79  rying and modify
d330: 69 6e 67 20 74 68 65 20 0a 20 20 64 61 74 61 62  ing the .  datab
d340: 61 73 65 20 73 63 68 65 6d 61 20 76 65 72 73 69  ase schema versi
d350: 6f 6e 20 61 6e 64 20 75 73 65 72 20 76 65 72 73  on and user vers
d360: 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 62 75 69  ion from the bui
d370: 6c 64 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79  ld. Specifically
d380: 2c 20 74 68 65 20 0a 20 20 5b 73 63 68 65 6d 61  , the .  [schema
d390: 5f 76 65 72 73 69 6f 6e 5d 20 61 6e 64 20 5b 75  _version] and [u
d3a0: 73 65 72 5f 76 65 72 73 69 6f 6e 5d 20 50 52 41  ser_version] PRA
d3b0: 47 4d 41 73 20 61 72 65 20 6f 6d 69 74 74 65 64  GMAs are omitted
d3c0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
d3d0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
d3e0: 5f 53 48 41 52 45 44 5f 43 41 43 48 45 7d 20 7b  _SHARED_CACHE} {
d3f0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 62  .  This option b
d400: 75 69 6c 64 73 20 53 51 4c 69 74 65 20 77 69 74  uilds SQLite wit
d410: 68 6f 75 74 20 73 75 70 70 6f 72 74 20 66 6f 72  hout support for
d420: 20 73 68 61 72 65 64 2d 63 61 63 68 65 20 6d 6f   shared-cache mo
d430: 64 65 2e 0a 20 20 54 68 65 20 5b 73 71 6c 69 74  de..  The [sqlit
d440: 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64  e3_enable_shared
d450: 5f 63 61 63 68 65 28 29 5d 20 69 73 20 6f 6d 69  _cache()] is omi
d460: 74 74 65 64 20 61 6c 6f 6e 67 20 77 69 74 68 20  tted along with 
d470: 61 20 66 61 69 72 0a 20 20 61 6d 6f 75 6e 74 20  a fair.  amount 
d480: 6f 66 20 6c 6f 67 69 63 20 77 69 74 68 69 6e 20  of logic within 
d490: 74 68 65 20 42 2d 54 72 65 65 20 73 75 62 73 79  the B-Tree subsy
d4a0: 73 74 65 6d 20 61 73 73 6f 63 69 61 74 65 64 20  stem associated 
d4b0: 77 69 74 68 20 73 68 61 72 65 64 0a 20 20 63 61  with shared.  ca
d4c0: 63 68 65 20 6d 61 6e 61 67 65 6d 65 6e 74 2e 0a  che management..
d4d0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
d4e0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  N {SQLITE_OMIT_S
d4f0: 55 42 51 55 45 52 59 7d 20 7b 0a 20 20 49 66 20  UBQUERY} {.  If 
d500: 64 65 66 69 6e 65 64 2c 20 73 75 70 70 6f 72 74  defined, support
d510: 20 66 6f 72 20 73 75 62 2d 73 65 6c 65 63 74 73   for sub-selects
d520: 20 61 6e 64 20 74 68 65 20 49 4e 28 29 20 6f 70   and the IN() op
d530: 65 72 61 74 6f 72 20 61 72 65 20 6f 6d 69 74 74  erator are omitt
d540: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
d550: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
d560: 49 54 5f 54 43 4c 5f 56 41 52 49 41 42 4c 45 7d  IT_TCL_VARIABLE}
d570: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6d 61 63   {.  If this mac
d580: 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  ro is defined, t
d590: 68 65 6e 20 74 68 65 20 73 70 65 63 69 61 6c 20  hen the special 
d5a0: 22 24 3c 76 61 72 69 61 62 6c 65 2d 6e 61 6d 65  "$<variable-name
d5b0: 3e 22 20 73 79 6e 74 61 78 0a 20 20 75 73 65 64  >" syntax.  used
d5c0: 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   to automaticall
d5d0: 79 20 62 69 6e 64 20 53 51 4c 20 76 61 72 69 61  y bind SQL varia
d5e0: 62 6c 65 73 20 74 6f 20 54 43 4c 20 76 61 72 69  bles to TCL vari
d5f0: 61 62 6c 65 73 20 69 73 20 6f 6d 69 74 74 65 64  ables is omitted
d600: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
d610: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
d620: 5f 54 45 4d 50 44 42 7d 20 7b 0a 20 20 54 68 69  _TEMPDB} {.  Thi
d630: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73  s option omits s
d640: 75 70 70 6f 72 74 20 66 6f 72 20 54 45 4d 50 20  upport for TEMP 
d650: 6f 72 20 54 45 4d 50 4f 52 41 52 59 20 74 61 62  or TEMPORARY tab
d660: 6c 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  les..}..COMPILE_
d670: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
d680: 4d 49 54 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54  MIT_TRACE} {.  T
d690: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
d6a0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
d6b0: 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c   [sqlite3_profil
d6c0: 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69  e()] and.  [sqli
d6d0: 74 65 33 5f 74 72 61 63 65 28 29 5d 20 69 6e 74  te3_trace()] int
d6e0: 65 72 66 61 63 65 73 20 61 6e 64 20 74 68 65 69  erfaces and thei
d6f0: 72 20 61 73 73 6f 63 69 61 74 65 64 20 6c 6f 67  r associated log
d700: 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ic..}..COMPILE_O
d710: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
d720: 49 54 5f 54 52 49 47 47 45 52 7d 20 7b 0a 20 20  IT_TRIGGER} {.  
d730: 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70  Defining this op
d740: 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
d750: 72 74 20 66 6f 72 20 54 52 49 47 47 45 52 20 6f  rt for TRIGGER o
d760: 62 6a 65 63 74 73 2e 20 4e 65 69 74 68 65 72 20  bjects. Neither 
d770: 74 68 65 20 0a 20 20 5b 43 52 45 41 54 45 20 54  the .  [CREATE T
d780: 52 49 47 47 45 52 5d 20 6f 72 20 5b 44 52 4f 50  RIGGER] or [DROP
d790: 20 54 52 49 47 47 45 52 5d 0a 20 20 63 6f 6d 6d   TRIGGER].  comm
d7a0: 61 6e 64 73 20 61 72 65 20 61 76 61 69 6c 61 62  ands are availab
d7b0: 6c 65 20 69 6e 20 74 68 69 73 20 63 61 73 65 2c  le in this case,
d7c0: 20 61 6e 64 20 61 74 74 65 6d 70 74 69 6e 67 20   and attempting 
d7d0: 74 6f 20 65 78 65 63 75 74 65 0a 20 20 65 69 74  to execute.  eit
d7e0: 68 65 72 20 77 69 6c 6c 20 72 65 73 75 6c 74 20  her will result 
d7f0: 69 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f 72  in a parse error
d800: 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  ..  This option 
d810: 61 6c 73 6f 20 64 69 73 61 62 6c 65 73 20 65 6e  also disables en
d820: 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20 5b 66 6f  forcement of [fo
d830: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
d840: 61 69 6e 74 73 5d 2c 0a 20 20 73 69 6e 63 65 20  aints],.  since 
d850: 74 68 65 20 63 6f 64 65 20 74 68 61 74 20 69 6d  the code that im
d860: 70 6c 65 6d 65 6e 74 73 20 74 72 69 67 67 65 72  plements trigger
d870: 73 20 61 6e 64 20 77 68 69 63 68 20 69 73 20 6f  s and which is o
d880: 6d 69 74 74 65 64 20 62 79 20 74 68 69 73 0a 20  mitted by this. 
d890: 20 6f 70 74 69 6f 6e 20 69 73 20 61 6c 73 6f 20   option is also 
d8a0: 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e  used to implemen
d8b0: 74 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 61  t [foreign key a
d8c0: 63 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d 50  ctions]..}..COMP
d8d0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
d8e0: 54 45 5f 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45  TE_OMIT_TRUNCATE
d8f0: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b  _OPTIMIZATION} {
d900: 0a 20 20 41 20 64 65 66 61 75 6c 74 20 62 75 69  .  A default bui
d910: 6c 64 20 6f 66 20 53 51 4c 69 74 65 2c 20 69 66  ld of SQLite, if
d920: 20 61 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74   a [DELETE] stat
d930: 65 6d 65 6e 74 20 68 61 73 20 6e 6f 20 57 48 45  ement has no WHE
d940: 52 45 20 63 6c 61 75 73 65 0a 20 20 61 6e 64 20  RE clause.  and 
d950: 6f 70 65 72 61 74 65 73 20 6f 6e 20 61 20 74 61  operates on a ta
d960: 62 6c 65 20 77 69 74 68 20 6e 6f 20 74 72 69 67  ble with no trig
d970: 67 65 72 73 2c 20 61 6e 20 6f 70 74 69 6d 69 7a  gers, an optimiz
d980: 61 74 69 6f 6e 20 6f 63 63 75 72 73 20 74 68 61  ation occurs tha
d990: 74 0a 20 20 63 61 75 73 65 73 20 74 68 65 20 44  t.  causes the D
d9a0: 45 4c 45 54 45 20 74 6f 20 6f 63 63 75 72 20 62  ELETE to occur b
d9b0: 79 20 64 72 6f 70 70 69 6e 67 20 61 6e 64 20 72  y dropping and r
d9c0: 65 63 72 65 61 74 69 6e 67 20 74 68 65 20 74 61  ecreating the ta
d9d0: 62 6c 65 2e 20 20 0a 20 20 44 72 6f 70 70 69 6e  ble.  .  Droppin
d9e0: 67 20 61 6e 64 20 72 65 63 72 65 61 74 69 6e 67  g and recreating
d9f0: 20 61 20 74 61 62 6c 65 20 69 73 20 75 73 75 61   a table is usua
da00: 6c 6c 79 20 6d 75 63 68 20 66 61 73 74 65 72 20  lly much faster 
da10: 74 68 61 6e 20 64 65 6c 65 74 69 6e 67 0a 20 20  than deleting.  
da20: 74 68 65 20 74 61 62 6c 65 20 63 6f 6e 74 65 6e  the table conten
da30: 74 20 72 6f 77 20 62 79 20 72 6f 77 2e 20 20 54  t row by row.  T
da40: 68 69 73 20 69 73 20 74 68 65 20 22 74 72 75 6e  his is the "trun
da50: 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f  cate optimizatio
da60: 6e 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  n"..}..COMPILE_O
da70: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
da80: 49 54 5f 55 54 46 31 36 7d 20 7b 0a 20 20 54 68  IT_UTF16} {.  Th
da90: 69 73 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64  is macro is used
daa0: 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74   to omit support
dab0: 20 66 6f 72 20 55 54 46 31 36 20 74 65 78 74 20   for UTF16 text 
dac0: 65 6e 63 6f 64 69 6e 67 2e 20 57 68 65 6e 20 74  encoding. When t
dad0: 68 69 73 20 69 73 0a 20 20 64 65 66 69 6e 65 64  his is.  defined
dae0: 20 61 6c 6c 20 41 50 49 20 66 75 6e 63 74 69 6f   all API functio
daf0: 6e 73 20 74 68 61 74 20 72 65 74 75 72 6e 20 6f  ns that return o
db00: 72 20 61 63 63 65 70 74 20 55 54 46 31 36 20 65  r accept UTF16 e
db10: 6e 63 6f 64 65 64 20 74 65 78 74 20 61 72 65 0a  ncoded text are.
db20: 20 20 75 6e 61 76 61 69 6c 61 62 6c 65 2e 20 54    unavailable. T
db30: 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 63  hese functions c
db40: 61 6e 20 62 65 20 69 64 65 6e 74 69 66 69 65 64  an be identified
db50: 20 62 79 20 74 68 65 20 66 61 63 74 20 74 68 61   by the fact tha
db60: 74 20 74 68 65 79 20 65 6e 64 0a 20 20 77 69 74  t they end.  wit
db70: 68 20 27 31 36 27 2c 20 66 6f 72 20 65 78 61 6d  h '16', for exam
db80: 70 6c 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  ple [sqlite3_pre
db90: 70 61 72 65 31 36 28 29 5d 2c 20 5b 73 71 6c 69  pare16()], [sqli
dba0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31  te3_column_text1
dbb0: 36 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69  6()] and.  [sqli
dbc0: 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28  te3_bind_text16(
dbd0: 29 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  )]..}..COMPILE_O
dbe0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
dbf0: 49 54 5f 56 41 43 55 55 4d 7d 20 7b 0a 20 20 57  IT_VACUUM} {.  W
dc00: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
dc10: 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20  is defined, the 
dc20: 5b 56 41 43 55 55 4d 5d 0a 20 20 63 6f 6d 6d 61  [VACUUM].  comma
dc30: 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64  nd is not includ
dc40: 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72  ed in the librar
dc50: 79 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61  y..  Executing a
dc60: 20 5b 56 41 43 55 55 4d 5d 20 73 74 61 74 65 6d   [VACUUM] statem
dc70: 65 6e 74 20 63 61 75 73 65 73 20 0a 20 20 61 20  ent causes .  a 
dc80: 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a  parse error..}..
dc90: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
dca0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 45 57  SQLITE_OMIT_VIEW
dcb0: 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74  } {.  Defining t
dcc0: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
dcd0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 56 49 45   support for VIE
dce0: 57 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74 68  W objects. Neith
dcf0: 65 72 20 74 68 65 20 0a 20 20 5b 43 52 45 41 54  er the .  [CREAT
dd00: 45 20 56 49 45 57 5d 20 6e 6f 72 20 74 68 65 20  E VIEW] nor the 
dd10: 5b 44 52 4f 50 20 56 49 45 57 5d 0a 20 20 63 6f  [DROP VIEW].  co
dd20: 6d 6d 61 6e 64 73 20 61 72 65 20 61 76 61 69 6c  mmands are avail
dd30: 61 62 6c 65 20 69 6e 20 74 68 69 73 20 63 61 73  able in this cas
dd40: 65 2c 20 61 6e 64 0a 20 20 61 74 74 65 6d 70 74  e, and.  attempt
dd50: 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65 20 65  ing to execute e
dd60: 69 74 68 65 72 20 77 69 6c 6c 20 72 65 73 75 6c  ither will resul
dd70: 74 20 69 6e 20 61 20 70 61 72 73 65 20 65 72 72  t in a parse err
dd80: 6f 72 2e 0a 0a 20 20 57 41 52 4e 49 4e 47 3a 20  or...  WARNING: 
dd90: 49 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73  If this macro is
dda0: 20 64 65 66 69 6e 65 64 2c 20 69 74 20 77 69 6c   defined, it wil
ddb0: 6c 20 6e 6f 74 20 62 65 20 70 6f 73 73 69 62 6c  l not be possibl
ddc0: 65 20 74 6f 20 6f 70 65 6e 20 61 20 64 61 74 61  e to open a data
ddd0: 62 61 73 65 0a 20 20 66 6f 72 20 77 68 69 63 68  base.  for which
dde0: 20 74 68 65 20 73 63 68 65 6d 61 20 63 6f 6e 74   the schema cont
ddf0: 61 69 6e 73 20 56 49 45 57 20 6f 62 6a 65 63 74  ains VIEW object
de00: 73 2e 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  s. .}..COMPILE_O
de10: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
de20: 49 54 5f 56 49 52 54 55 41 4c 54 41 42 4c 45 7d  IT_VIRTUALTABLE}
de30: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
de40: 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66   omits support f
de50: 6f 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  or the [sqlite3_
de60: 76 74 61 62 20 7c 20 56 69 72 74 75 61 6c 20 54  vtab | Virtual T
de70: 61 62 6c 65 5d 0a 20 20 6d 65 63 68 61 6e 69 73  able].  mechanis
de80: 6d 20 69 6e 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a  m in SQLite..}..
de90: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
dea0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 41 4c 7d  SQLITE_OMIT_WAL}
deb0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
dec0: 20 6f 6d 69 74 73 20 74 68 65 20 22 5b 77 72 69   omits the "[wri
ded0: 74 65 2d 61 68 65 61 64 20 6c 6f 67 5d 22 20 28  te-ahead log]" (
dee0: 61 2e 6b 2e 61 2e 20 22 5b 57 41 4c 5d 22 29 20  a.k.a. "[WAL]") 
def0: 63 61 70 61 62 69 6c 69 74 79 2e 0a 7d 0a 0a 43  capability..}..C
df00: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
df10: 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 53 44 7d 20  QLITE_OMIT_WSD} 
df20: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
df30: 62 75 69 6c 64 73 20 61 20 76 65 72 73 69 6f 6e  builds a version
df40: 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 6c   of the SQLite l
df50: 69 62 72 61 72 79 20 74 68 61 74 20 63 6f 6e 74  ibrary that cont
df60: 61 69 6e 73 20 6e 6f 0a 20 20 57 72 69 74 61 62  ains no.  Writab
df70: 6c 65 20 53 74 61 74 69 63 20 44 61 74 61 20 28  le Static Data (
df80: 57 53 44 29 2e 20 20 57 53 44 20 69 73 20 67 6c  WSD).  WSD is gl
df90: 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 73 20 61  obal variables a
dfa0: 6e 64 2f 6f 72 20 73 74 61 74 69 63 0a 20 20 76  nd/or static.  v
dfb0: 61 72 69 61 62 6c 65 73 2e 20 20 53 6f 6d 65 20  ariables.  Some 
dfc0: 70 6c 61 74 66 6f 72 6d 73 20 64 6f 20 6e 6f 74  platforms do not
dfd0: 20 73 75 70 70 6f 72 74 20 57 53 44 2c 20 61 6e   support WSD, an
dfe0: 64 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  d this option is
dff0: 20 6e 65 63 65 73 73 61 72 79 0a 20 20 69 6e 20   necessary.  in 
e000: 6f 72 64 65 72 20 66 6f 72 20 53 51 4c 69 74 65  order for SQLite
e010: 20 74 6f 20 77 6f 72 6b 20 74 68 6f 73 65 20 70   to work those p
e020: 6c 61 74 66 6f 72 6d 73 2e 20 20 0a 0a 20 20 55  latforms.  ..  U
e030: 6e 6c 69 6b 65 20 6f 74 68 65 72 20 4f 4d 49 54  nlike other OMIT
e040: 20 6f 70 74 69 6f 6e 73 20 77 68 69 63 68 20 6d   options which m
e050: 61 6b 65 20 74 68 65 20 53 51 4c 69 74 65 20 6c  ake the SQLite l
e060: 69 62 72 61 72 79 20 73 6d 61 6c 6c 65 72 2c 0a  ibrary smaller,.
e070: 20 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 63    this option ac
e080: 74 75 61 6c 6c 79 20 69 6e 63 72 65 61 73 65 73  tually increases
e090: 20 74 68 65 20 73 69 7a 65 20 6f 66 20 53 51 4c   the size of SQL
e0a0: 69 74 65 20 61 6e 64 20 6d 61 6b 65 73 20 69 74  ite and makes it
e0b0: 20 72 75 6e 0a 20 20 61 20 6c 69 74 74 6c 65 20   run.  a little 
e0c0: 73 6c 6f 77 65 72 2e 20 20 4f 6e 6c 79 20 75 73  slower.  Only us
e0d0: 65 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 66  e this option if
e0e0: 20 53 51 4c 69 74 65 20 69 73 20 62 65 69 6e 67   SQLite is being
e0f0: 20 62 75 69 6c 74 20 66 6f 72 20 61 6e 0a 20 20   built for an.  
e100: 65 6d 62 65 64 64 65 64 20 74 61 72 67 65 74 20  embedded target 
e110: 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75  that does not su
e120: 70 70 6f 72 74 20 57 53 44 2e 0a 7d 0a 0a 43 4f  pport WSD..}..CO
e130: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
e140: 4c 49 54 45 5f 4f 4d 49 54 5f 58 46 45 52 5f 4f  LITE_OMIT_XFER_O
e150: 50 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  PT} {.  This opt
e160: 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72  ion omits suppor
e170: 74 20 66 6f 72 20 6f 70 74 69 6d 69 7a 61 74 69  t for optimizati
e180: 6f 6e 73 20 74 68 61 74 20 68 65 6c 70 20 73 74  ons that help st
e190: 61 74 65 6d 65 6e 74 73 0a 20 20 6f 66 20 74 68  atements.  of th
e1a0: 65 20 66 6f 72 6d 20 22 49 4e 53 45 52 54 20 49  e form "INSERT I
e1b0: 4e 54 4f 20 2e 2e 2e 20 53 45 4c 45 43 54 20 2e  NTO ... SELECT .
e1c0: 2e 2e 22 20 72 75 6e 20 66 61 73 74 65 72 2e 0a  .." run faster..
e1d0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
e1e0: 4e 20 7b 53 51 4c 49 54 45 5f 5a 45 52 4f 5f 4d  N {SQLITE_ZERO_M
e1f0: 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54 68 69 73 20  ALLOC} {.  This 
e200: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 62 6f 74  option omits bot
e210: 68 20 74 68 65 20 5b 64 65 66 61 75 6c 74 20 6d  h the [default m
e220: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d  emory allocator]
e230: 20 61 6e 64 20 74 68 65 0a 20 20 5b 64 65 62 75   and the.  [debu
e240: 67 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c  gging memory all
e250: 6f 63 61 74 6f 72 5d 20 66 72 6f 6d 20 74 68 65  ocator] from the
e260: 20 62 75 69 6c 64 20 61 6e 64 20 73 75 62 73 74   build and subst
e270: 69 74 75 74 65 73 20 61 20 73 74 75 62 0a 20 20  itutes a stub.  
e280: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
e290: 20 74 68 61 74 20 61 6c 77 61 79 73 20 66 61 69   that always fai
e2a0: 6c 73 2e 20 20 53 51 4c 69 74 65 20 77 69 6c 6c  ls.  SQLite will
e2b0: 20 6e 6f 74 20 72 75 6e 20 77 69 74 68 20 74 68   not run with th
e2c0: 69 73 0a 20 20 73 74 75 62 20 6d 65 6d 6f 72 79  is.  stub memory
e2d0: 20 61 6c 6c 6f 63 61 74 6f 72 20 73 69 6e 63 65   allocator since
e2e0: 20 69 74 20 77 69 6c 6c 20 62 65 20 75 6e 61 62   it will be unab
e2f0: 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 6d  le to allocate m
e300: 65 6d 6f 72 79 2e 20 20 42 75 74 0a 20 20 74 68  emory.  But.  th
e310: 69 73 20 73 74 75 62 20 63 61 6e 20 62 65 20 72  is stub can be r
e320: 65 70 6c 61 63 65 64 20 61 74 20 73 74 61 72 74  eplaced at start
e330: 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20 20 5b 73  -time using.  [s
e340: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b  qlite3_config]([
e350: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41  SQLITE_CONFIG_MA
e360: 4c 4c 4f 43 5d 2c 2e 2e 2e 29 20 6f 72 0a 20 20  LLOC],...) or.  
e370: 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d  [sqlite3_config]
e380: 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  ([SQLITE_CONFIG_
e390: 48 45 41 50 5d 2c 2e 2e 2e 29 2e 0a 20 20 53 6f  HEAP],...)..  So
e3a0: 20 74 68 65 20 6e 65 74 20 65 66 66 65 63 74 20   the net effect 
e3b0: 6f 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d  of this compile-
e3c0: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 74  time option is t
e3d0: 68 61 74 20 69 74 20 61 6c 6c 6f 77 73 20 53 51  hat it allows SQ
e3e0: 4c 69 74 65 0a 20 20 74 6f 20 62 65 20 63 6f 6d  Lite.  to be com
e3f0: 70 69 6c 65 64 20 61 6e 64 20 6c 69 6e 6b 65 64  piled and linked
e400: 20 61 67 61 69 6e 73 74 20 61 20 73 79 73 74 65   against a syste
e410: 6d 20 6c 69 62 72 61 72 79 20 74 68 61 74 20 64  m library that d
e420: 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 0a  oes not support.
e430: 20 20 6d 61 6c 6c 6f 63 28 29 2c 20 66 72 65 65    malloc(), free
e440: 28 29 2c 20 61 6e 64 2f 6f 72 20 72 65 61 6c 6c  (), and/or reall
e450: 6f 63 28 29 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a  oc()..}..</tcl>.
e460: 3c 61 20 6e 61 6d 65 3d 22 64 65 62 75 67 6f 70  <a name="debugop
e470: 74 69 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e  tions"></a>.<h2>
e480: 31 2e 38 20 41 6e 61 6c 79 73 69 73 20 61 6e 64  1.8 Analysis and
e490: 20 44 65 62 75 67 67 69 6e 67 20 4f 70 74 69 6f   Debugging Optio
e4a0: 6e 73 3c 2f 68 32 3e 0a 3c 74 63 6c 3e 0a 0a 43  ns</h2>.<tcl>..C
e4b0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
e4c0: 51 4c 49 54 45 5f 44 45 42 55 47 7d 20 7b 0a 20  QLITE_DEBUG} {. 
e4d0: 20 54 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72   The SQLite sour
e4e0: 63 65 20 63 6f 64 65 20 63 6f 6e 74 61 69 6e 73  ce code contains
e4f0: 20 6c 69 74 65 72 61 6c 6c 79 20 74 68 6f 75 73   literally thous
e500: 61 6e 64 73 20 6f 66 20 61 73 73 65 72 74 28 29  ands of assert()
e510: 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 75 73   statements.  us
e520: 65 64 20 74 6f 20 76 65 72 69 66 79 20 69 6e 74  ed to verify int
e530: 65 72 6e 61 6c 20 61 73 73 75 6d 70 74 69 6f 6e  ernal assumption
e540: 73 20 61 6e 64 20 73 75 62 72 6f 75 74 69 6e 65  s and subroutine
e550: 20 70 72 65 63 6f 6e 64 69 74 69 6f 6e 73 20 61   preconditions a
e560: 6e 64 0a 20 20 70 6f 73 74 63 6f 6e 64 69 74 69  nd.  postconditi
e570: 6f 6e 73 2e 20 20 54 68 65 73 65 20 61 73 73 65  ons.  These asse
e580: 72 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73 20  rt() statements 
e590: 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 74 75 72  are normally tur
e5a0: 6e 65 64 20 6f 66 66 0a 20 20 28 74 68 65 79 20  ned off.  (they 
e5b0: 67 65 6e 65 72 61 74 65 20 6e 6f 20 63 6f 64 65  generate no code
e5c0: 29 20 73 69 6e 63 65 20 74 75 72 6e 69 6e 67 20  ) since turning 
e5d0: 74 68 65 6d 20 6f 6e 20 6d 61 6b 65 73 20 53 51  them on makes SQ
e5e0: 4c 69 74 65 20 72 75 6e 20 61 70 70 72 6f 78 69  Lite run approxi
e5f0: 6d 61 74 65 6c 79 0a 20 20 74 68 72 65 65 20 74  mately.  three t
e600: 69 6d 65 73 20 73 6c 6f 77 65 72 2e 20 20 42 75  imes slower.  Bu
e610: 74 20 66 6f 72 20 74 65 73 74 69 6e 67 20 61 6e  t for testing an
e620: 64 20 61 6e 61 6c 79 73 69 73 2c 20 69 74 20 69  d analysis, it i
e630: 73 20 75 73 65 66 75 6c 20 74 6f 20 74 75 72 6e  s useful to turn
e640: 0a 20 20 74 68 65 20 61 73 73 65 72 74 28 29 20  .  the assert() 
e650: 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e 2e 20 20  statements on.  
e660: 54 68 65 20 53 51 4c 49 54 45 5f 44 45 42 55 47  The SQLITE_DEBUG
e670: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
e680: 74 69 6f 6e 20 64 6f 65 73 20 74 68 69 73 2e 0a  tion does this..
e690: 20 20 3c 70 3e 53 51 4c 49 54 45 5f 44 45 42 55    <p>SQLITE_DEBU
e6a0: 47 20 61 6c 73 6f 20 65 6e 61 62 6c 65 73 20 73  G also enables s
e6b0: 6f 6d 65 20 6f 74 68 65 72 20 64 65 62 75 67 67  ome other debugg
e6c0: 69 6e 67 20 66 65 61 74 75 72 65 73 2c 20 73 75  ing features, su
e6d0: 63 68 20 61 73 0a 20 20 73 70 65 63 69 61 6c 20  ch as.  special 
e6e0: 5b 50 52 41 47 4d 41 5d 20 73 74 61 74 65 6d 65  [PRAGMA] stateme
e6f0: 6e 74 73 20 74 68 61 74 20 74 75 72 6e 20 6f 6e  nts that turn on
e700: 20 74 72 61 63 69 6e 67 20 61 6e 64 20 6c 69 73   tracing and lis
e710: 74 69 6e 67 20 66 65 61 74 75 72 65 73 0a 20 20  ting features.  
e720: 75 73 65 64 20 66 6f 72 20 74 72 6f 75 62 6c 65  used for trouble
e730: 73 68 6f 6f 74 69 6e 67 20 61 6e 64 20 61 6e 61  shooting and ana
e740: 6c 79 73 69 73 20 6f 66 20 74 68 65 20 5b 56 44  lysis of the [VD
e750: 42 45 5d 20 61 6e 64 20 63 6f 64 65 20 67 65 6e  BE] and code gen
e760: 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49  erator..}..COMPI
e770: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
e780: 45 5f 4d 45 4d 44 45 42 55 47 7d 20 7b 0a 20 20  E_MEMDEBUG} {.  
e790: 54 68 65 20 53 51 4c 49 54 45 5f 4d 45 4d 44 45  The SQLITE_MEMDE
e7a0: 42 55 47 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  BUG option cause
e7b0: 73 20 61 6e 20 69 6e 73 74 72 75 6d 65 6e 74 65  s an instrumente
e7c0: 64 20 0a 20 20 5b 64 65 62 75 67 67 69 6e 67 20  d .  [debugging 
e7d0: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
e7e0: 5d 0a 20 20 74 6f 20 62 65 20 75 73 65 64 20 61  ].  to be used a
e7f0: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 65  s the default me
e800: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 77  mory allocator w
e810: 69 74 68 69 6e 20 53 51 4c 69 74 65 2e 20 20 54  ithin SQLite.  T
e820: 68 65 0a 20 20 69 6e 73 74 72 75 6d 65 6e 74 65  he.  instrumente
e830: 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  d memory allocat
e840: 6f 72 20 63 68 65 63 6b 73 20 66 6f 72 20 6d 69  or checks for mi
e850: 73 75 73 65 20 6f 66 20 64 79 6e 61 6d 69 63 61  suse of dynamica
e860: 6c 6c 79 20 61 6c 6c 6f 63 61 74 65 64 0a 20 20  lly allocated.  
e870: 6d 65 6d 6f 72 79 2e 20 20 45 78 61 6d 70 6c 65  memory.  Example
e880: 73 20 6f 66 20 6d 69 73 75 73 65 20 69 6e 63 6c  s of misuse incl
e890: 75 64 65 20 75 73 69 6e 67 20 6d 65 6d 6f 72 79  ude using memory
e8a0: 20 61 66 74 65 72 20 69 74 20 69 73 20 66 72 65   after it is fre
e8b0: 65 64 2c 0a 20 20 77 72 69 74 69 6e 67 20 6f 66  ed,.  writing of
e8c0: 66 20 74 68 65 20 65 6e 64 73 20 6f 66 20 61 20  f the ends of a 
e8d0: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
e8e0: 6e 2c 20 66 72 65 65 69 6e 67 20 6d 65 6d 6f 72  n, freeing memor
e8f0: 79 20 6e 6f 74 20 70 72 65 76 69 6f 75 73 6c 79  y not previously
e900: 0a 20 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  .  obtained from
e910: 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f   the memory allo
e920: 63 61 74 6f 72 2c 20 6f 72 20 66 61 69 6c 69 6e  cator, or failin
e930: 67 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20  g to initialize 
e940: 6e 65 77 6c 79 0a 20 20 61 6c 6c 6f 63 61 74 65  newly.  allocate
e950: 64 20 6d 65 6d 6f 72 79 2e 0a 7d 0a 0a 3c 2f 74  d memory..}..</t
e960: 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 77 69 6e  cl>.<a name="win
e970: 33 32 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61 3e 0a  32options"></a>.
e980: 3c 68 32 3e 31 2e 39 20 57 69 6e 64 6f 77 73 2d  <h2>1.9 Windows-
e990: 53 70 65 63 69 66 69 63 20 4f 70 74 69 6f 6e 73  Specific Options
e9a0: 3c 2f 68 32 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d  </h2>.<tcl>..COM
e9b0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
e9c0: 49 54 45 5f 57 49 4e 33 32 5f 48 45 41 50 5f 43  ITE_WIN32_HEAP_C
e9d0: 52 45 41 54 45 7d 20 7b 0a 20 20 54 68 69 73 20  REATE} {.  This 
e9e0: 6f 70 74 69 6f 6e 20 66 6f 72 63 65 73 20 74 68  option forces th
e9f0: 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 6d  e Win32 native m
ea00: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c  emory allocator,
ea10: 20 77 68 65 6e 20 65 6e 61 62 6c 65 64 2c 20 74   when enabled, t
ea20: 6f 0a 20 20 63 72 65 61 74 65 20 61 20 70 72 69  o.  create a pri
ea30: 76 61 74 65 20 68 65 61 70 20 74 6f 20 68 6f 6c  vate heap to hol
ea40: 64 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c  d all memory all
ea50: 6f 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d  ocations..}..COM
ea60: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
ea70: 49 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43  ITE_WIN32_MALLOC
ea80: 5f 56 41 4c 49 44 41 54 45 7d 20 7b 0a 20 20 54  _VALIDATE} {.  T
ea90: 68 69 73 20 6f 70 74 69 6f 6e 20 66 6f 72 63 65  his option force
eaa0: 73 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69  s the Win32 nati
eab0: 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ve memory alloca
eac0: 74 6f 72 2c 20 77 68 65 6e 20 65 6e 61 62 6c 65  tor, when enable
ead0: 64 2c 20 74 6f 0a 20 20 6d 61 6b 65 20 73 74 72  d, to.  make str
eae0: 61 74 65 67 69 63 20 63 61 6c 6c 73 20 69 6e 74  ategic calls int
eaf0: 6f 20 74 68 65 20 48 65 61 70 56 61 6c 69 64 61  o the HeapValida
eb00: 74 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 66  te() function if
eb10: 20 61 73 73 65 72 74 28 29 20 69 73 20 61 6c 73   assert() is als
eb20: 6f 0a 20 20 65 6e 61 62 6c 65 64 2e 0a 7d 0a 0a  o.  enabled..}..
eb30: 3c 2f 74 63 6c 3e 0a                             </tcl>.