Documentation Source Text

Hex Artifact Content
Login

Artifact 7880573d31c753cc91afa95f66328af1ebdfda9d:


0000: 3c 74 69 74 6c 65 3e 43 6f 6d 70 69 6c 61 74 69  <title>Compilati
0010: 6f 6e 20 4f 70 74 69 6f 6e 73 20 46 6f 72 20 53  on Options For S
0020: 51 4c 69 74 65 3c 2f 74 69 74 6c 65 3e 0a 3c 74  QLite</title>.<t
0030: 63 6c 3e 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b  cl>hd_keywords {
0040: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
0050: 69 6f 6e 73 7d 3c 2f 74 63 6c 3e 0a 0a 3c 68 31  ions}</tcl>..<h1
0060: 3e 31 2e 30 20 43 6f 6d 70 69 6c 61 74 69 6f 6e  >1.0 Compilation
0070: 20 4f 70 74 69 6f 6e 73 20 46 6f 72 20 53 51 4c   Options For SQL
0080: 69 74 65 3c 2f 68 31 3e 0a 0a 3c 70 3e 0a 46 6f  ite</h1>..<p>.Fo
0090: 72 20 6d 6f 73 74 20 70 75 72 70 6f 73 65 73 2c  r most purposes,
00a0: 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65 20 62   SQLite can be b
00b0: 75 69 6c 74 20 6a 75 73 74 20 66 69 6e 65 20 75  uilt just fine u
00c0: 73 69 6e 67 20 74 68 65 20 64 65 66 61 75 6c 74  sing the default
00d0: 0a 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 70 74  .compilation opt
00e0: 69 6f 6e 73 2e 20 48 6f 77 65 76 65 72 2c 20 69  ions. However, i
00f0: 66 20 72 65 71 75 69 72 65 64 2c 20 74 68 65 20  f required, the 
0100: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
0110: 69 6f 6e 73 0a 64 6f 63 75 6d 65 6e 74 65 64 20  ions.documented 
0120: 62 65 6c 6f 77 20 63 61 6e 20 62 65 20 75 73 65  below can be use
0130: 64 20 74 6f 20 0a 3c 61 20 68 72 65 66 3d 22 23  d to .<a href="#
0140: 6f 6d 69 74 66 65 61 74 75 72 65 73 22 3e 6f 6d  omitfeatures">om
0150: 69 74 20 53 51 4c 69 74 65 20 66 65 61 74 75 72  it SQLite featur
0160: 65 73 3c 2f 61 3e 20 28 72 65 73 75 6c 74 69 6e  es</a> (resultin
0170: 67 20 69 6e 0a 61 20 5b 72 65 6c 66 6f 6f 74 70  g in.a [relfootp
0180: 72 69 6e 74 20 7c 20 73 6d 61 6c 6c 65 72 20 63  rint | smaller c
0190: 6f 6d 70 69 6c 65 64 20 6c 69 62 72 61 72 79 20  ompiled library 
01a0: 73 69 7a 65 5d 29 20 6f 72 20 74 6f 20 63 68 61  size]) or to cha
01b0: 6e 67 65 20 74 68 65 0a 3c 61 20 68 72 65 66 3d  nge the.<a href=
01c0: 22 23 64 65 66 61 75 6c 74 73 22 3e 64 65 66 61  "#defaults">defa
01d0: 75 6c 74 20 76 61 6c 75 65 73 3c 2f 61 3e 20 6f  ult values</a> o
01e0: 66 20 73 6f 6d 65 20 70 61 72 61 6d 65 74 65 72  f some parameter
01f0: 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 45 76 65  s..</p>..<p>.Eve
0200: 72 79 20 65 66 66 6f 72 74 20 68 61 73 20 62 65  ry effort has be
0210: 65 6e 20 6d 61 64 65 20 74 6f 20 65 6e 73 75 72  en made to ensur
0220: 65 20 74 68 61 74 20 74 68 65 20 76 61 72 69 6f  e that the vario
0230: 75 73 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 0a  us combinations.
0240: 6f 66 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f  of compilation o
0250: 70 74 69 6f 6e 73 20 77 6f 72 6b 20 68 61 72 6d  ptions work harm
0260: 6f 6e 69 6f 75 73 6c 79 20 61 6e 64 20 70 72 6f  oniously and pro
0270: 64 75 63 65 20 61 20 77 6f 72 6b 69 6e 67 20 6c  duce a working l
0280: 69 62 72 61 72 79 2e 0a 4e 65 76 65 72 74 68 65  ibrary..Neverthe
0290: 6c 65 73 73 2c 20 69 74 20 69 73 20 73 74 72 6f  less, it is stro
02a0: 6e 67 6c 79 20 72 65 63 6f 6d 6d 65 6e 64 65 64  ngly recommended
02b0: 20 74 68 61 74 20 74 68 65 20 53 51 4c 69 74 65   that the SQLite
02c0: 20 74 65 73 74 2d 73 75 69 74 65 0a 62 65 20 65   test-suite.be e
02d0: 78 65 63 75 74 65 64 20 74 6f 20 63 68 65 63 6b  xecuted to check
02e0: 20 66 6f 72 20 65 72 72 6f 72 73 20 62 65 66 6f   for errors befo
02f0: 72 65 20 75 73 69 6e 67 20 61 6e 20 53 51 4c 69  re using an SQLi
0300: 74 65 20 6c 69 62 72 61 72 79 20 62 75 69 6c 74  te library built
0310: 0a 77 69 74 68 20 6e 6f 6e 2d 73 74 61 6e 64 61  .with non-standa
0320: 72 64 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f  rd compilation o
0330: 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 0a 3c 74  ptions..</p>..<t
0340: 63 6c 3e 0a 70 72 6f 63 20 43 4f 4d 50 49 4c 45  cl>.proc COMPILE
0350: 5f 4f 50 54 49 4f 4e 20 7b 6e 61 6d 65 20 74 65  _OPTION {name te
0360: 78 74 7d 20 7b 0a 20 20 69 66 20 7b 5b 72 65 67  xt} {.  if {[reg
0370: 65 78 70 20 7b 28 53 51 4c 49 54 45 7c 48 41 56  exp {(SQLITE|HAV
0380: 45 29 5f 28 5b 41 2d 5a 30 2d 39 5f 5d 2b 29 7d  E)_([A-Z0-9_]+)}
0390: 20 24 6e 61 6d 65 20 61 6c 6c 20 70 72 65 66 69   $name all prefi
03a0: 78 20 6c 61 62 65 6c 5d 7d 20 7b 0a 20 20 20 20  x label]} {.    
03b0: 68 64 5f 66 72 61 67 6d 65 6e 74 20 5b 73 74 72  hd_fragment [str
03c0: 69 6e 67 20 74 6f 6c 6f 77 65 72 20 24 6c 61 62  ing tolower $lab
03d0: 65 6c 5d 0a 20 20 20 20 68 64 5f 6b 65 79 77 6f  el].    hd_keywo
03e0: 72 64 73 20 24 61 6c 6c 20 2d 44 24 61 6c 6c 0a  rds $all -D$all.
03f0: 20 20 7d 0a 20 20 69 66 20 7b 5b 72 65 67 65 78    }.  if {[regex
0400: 70 20 7b 5e 59 59 28 5b 41 2d 5a 30 2d 39 5f 5d  p {^YY([A-Z0-9_]
0410: 2b 29 7d 20 24 6e 61 6d 65 20 61 6c 6c 20 6c 61  +)} $name all la
0420: 62 65 6c 5d 7d 20 7b 0a 20 20 20 20 68 64 5f 66  bel]} {.    hd_f
0430: 72 61 67 6d 65 6e 74 20 5b 73 74 72 69 6e 67 20  ragment [string 
0440: 74 6f 6c 6f 77 65 72 20 24 61 6c 6c 5d 0a 20 20  tolower $all].  
0450: 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 24 61    hd_keywords $a
0460: 6c 6c 0a 20 20 7d 0a 20 20 68 64 5f 70 75 74 73  ll.  }.  hd_puts
0470: 20 3c 70 3e 3c 62 3e 24 6e 61 6d 65 3c 2f 62 3e   <p><b>$name</b>
0480: 3c 2f 70 3e 0a 20 20 72 65 67 73 75 62 20 2d 61  </p>.  regsub -a
0490: 6c 6c 20 22 5c 6e 5c 5c 73 2a 5c 6e 22 20 24 74  ll "\n\\s*\n" $t
04a0: 65 78 74 20 22 3c 2f 70 3e 5c 6e 5c 6e 3c 70 3e  ext "</p>\n\n<p>
04b0: 22 20 74 65 78 74 0a 20 20 68 64 5f 72 65 73 6f  " text.  hd_reso
04c0: 6c 76 65 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  lve <blockquote>
04d0: 3c 70 3e 24 74 65 78 74 3c 2f 70 3e 3c 2f 62 6c  <p>$text</p></bl
04e0: 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 3c 2f 74 63  ockquote>.}.</tc
04f0: 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 6f 73 63  l>..<a name="osc
0500: 6f 6e 66 69 67 22 3e 3c 2f 61 3e 0a 3c 68 32 3e  onfig"></a>.<h2>
0510: 31 2e 31 20 50 6c 61 74 66 6f 72 6d 20 43 6f 6e  1.1 Platform Con
0520: 66 69 67 75 72 61 74 69 6f 6e 3c 2f 68 32 3e 0a  figuration</h2>.
0530: 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f  .<tcl>.COMPILE_O
0540: 50 54 49 4f 4e 20 7b 5f 48 41 56 45 5f 53 51 4c  PTION {_HAVE_SQL
0550: 49 54 45 5f 43 4f 4e 46 49 47 5f 48 7d 20 7b 0a  ITE_CONFIG_H} {.
0560: 20 20 49 66 20 74 68 65 20 5f 48 41 56 45 5f 53    If the _HAVE_S
0570: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 20 6d  QLITE_CONFIG_H m
0580: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 0a  acro is defined.
0590: 20 20 74 68 65 6e 20 74 68 65 20 53 51 4c 69 74    then the SQLit
05a0: 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 77 69  e source code wi
05b0: 6c 6c 20 61 74 74 65 6d 70 74 20 74 6f 20 23 69  ll attempt to #i
05c0: 6e 63 6c 75 64 65 20 61 20 66 69 6c 65 20 6e 61  nclude a file na
05d0: 6d 65 64 20 22 63 6f 6e 66 69 67 2e 68 22 2e 0a  med "config.h"..
05e0: 20 20 54 68 65 20 22 63 6f 6e 66 69 67 2e 68 22    The "config.h"
05f0: 20 66 69 6c 65 20 75 73 75 61 6c 6c 79 20 63 6f   file usually co
0600: 6e 74 61 69 6e 73 20 6f 74 68 65 72 20 63 6f 6e  ntains other con
0610: 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
0620: 6e 73 2c 20 65 73 70 65 63 69 61 6c 6c 79 0a 20  ns, especially. 
0630: 20 22 48 41 56 45 5f 3c 69 3e 49 4e 54 45 52 46   "HAVE_<i>INTERF
0640: 41 43 45 3c 2f 69 3e 22 20 74 79 70 65 20 6f 70  ACE</i>" type op
0650: 74 69 6f 6e 73 20 67 65 6e 65 72 61 74 65 64 20  tions generated 
0660: 62 79 20 61 75 74 6f 63 6f 6e 66 20 73 63 72 69  by autoconf scri
0670: 70 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  pts..}..COMPILE_
0680: 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f 46 44 41  OPTION {HAVE_FDA
0690: 54 41 53 59 4e 43 7d 20 7b 0a 20 20 49 66 20 74  TASYNC} {.  If t
06a0: 68 65 20 48 41 56 45 5f 46 44 41 54 41 53 59 4e  he HAVE_FDATASYN
06b0: 43 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  C compile-time o
06c0: 70 74 69 6f 6e 20 69 73 20 74 72 75 65 2c 20 74  ption is true, t
06d0: 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20  hen the default 
06e0: 5b 56 46 53 5d 0a 20 20 66 6f 72 20 75 6e 69 78  [VFS].  for unix
06f0: 20 73 79 73 74 65 6d 73 20 77 69 6c 6c 20 61 74   systems will at
0700: 74 65 6d 70 74 20 74 6f 20 75 73 65 20 66 64 61  tempt to use fda
0710: 74 61 73 79 6e 63 28 29 20 69 6e 73 74 65 61 64  tasync() instead
0720: 20 6f 66 20 66 73 79 6e 63 28 29 20 77 68 65 72   of fsync() wher
0730: 65 0a 20 20 61 70 70 72 6f 70 72 69 61 74 65 2e  e.  appropriate.
0740: 20 20 49 66 20 74 68 69 73 20 66 6c 61 67 20 69    If this flag i
0750: 73 20 6d 69 73 73 69 6e 67 20 6f 72 20 66 61 6c  s missing or fal
0760: 73 65 2c 20 74 68 65 6e 20 66 73 79 6e 63 28 29  se, then fsync()
0770: 20 69 73 20 61 6c 77 61 79 73 20 75 73 65 64 2e   is always used.
0780: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
0790: 4f 4e 20 7b 48 41 56 45 5f 47 4d 54 49 4d 45 5f  ON {HAVE_GMTIME_
07a0: 52 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48 41  R} {.  If the HA
07b0: 56 45 5f 47 4d 54 49 4d 45 5f 52 20 6f 70 74 69  VE_GMTIME_R opti
07c0: 6f 6e 20 69 73 20 74 72 75 65 20 61 6e 64 20 69  on is true and i
07d0: 66 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44  f [SQLITE_OMIT_D
07e0: 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 5d 20 69  ATETIME_FUNCS] i
07f0: 73 20 74 72 75 65 2c 0a 20 20 74 68 65 6e 20 74  s true,.  then t
0800: 68 65 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c  he CURRENT_TIME,
0810: 20 43 55 52 52 45 4e 54 5f 44 41 54 45 2c 20 61   CURRENT_DATE, a
0820: 6e 64 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53  nd CURRENT_TIMES
0830: 54 41 4d 50 20 6b 65 79 77 6f 72 64 73 20 77 69  TAMP keywords wi
0840: 6c 6c 20 75 73 65 0a 20 20 74 68 65 20 74 68 72  ll use.  the thr
0850: 65 61 64 73 61 66 65 20 22 67 6d 74 69 6d 65 5f  eadsafe "gmtime_
0860: 72 28 29 22 20 69 6e 74 65 72 66 61 63 65 20 72  r()" interface r
0870: 61 74 68 65 72 20 74 68 61 6e 20 22 67 6d 74 69  ather than "gmti
0880: 6d 65 28 29 22 2e 20 20 49 6e 20 74 68 65 20 75  me()".  In the u
0890: 73 75 61 6c 20 63 61 73 65 0a 20 20 77 68 65 72  sual case.  wher
08a0: 65 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44  e [SQLITE_OMIT_D
08b0: 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 5d 20 69  ATETIME_FUNCS] i
08c0: 73 20 6e 6f 74 20 64 65 66 69 6e 65 64 20 6f 72  s not defined or
08d0: 20 69 73 20 66 61 6c 73 65 2c 20 74 68 65 6e 20   is false, then 
08e0: 74 68 65 0a 20 20 62 75 69 6c 74 2d 69 6e 20 5b  the.  built-in [
08f0: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75  date and time fu
0900: 6e 63 74 69 6f 6e 73 5d 20 61 72 65 20 75 73 65  nctions] are use
0910: 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74  d to implement t
0920: 68 65 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c  he CURRENT_TIME,
0930: 0a 20 20 43 55 52 52 45 4e 54 5f 44 41 54 45 2c  .  CURRENT_DATE,
0940: 20 61 6e 64 20 43 55 52 52 45 4e 54 5f 54 49 4d   and CURRENT_TIM
0950: 45 53 54 41 4d 50 20 6b 65 79 77 6f 72 64 73 20  ESTAMP keywords 
0960: 61 6e 64 20 6e 65 69 74 68 65 72 20 67 6d 74 69  and neither gmti
0970: 6d 65 5f 72 28 29 20 6e 6f 72 0a 20 20 67 6d 74  me_r() nor.  gmt
0980: 69 6d 65 28 29 20 69 73 20 65 76 65 72 20 63 61  ime() is ever ca
0990: 6c 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  lled..}..COMPILE
09a0: 5f 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f 49 53  _OPTION {HAVE_IS
09b0: 4e 41 4e 7d 20 7b 0a 20 20 49 66 20 74 68 65 20  NAN} {.  If the 
09c0: 48 41 56 45 5f 49 53 4e 41 4e 20 6f 70 74 69 6f  HAVE_ISNAN optio
09d0: 6e 20 69 73 20 74 72 75 65 2c 20 74 68 65 6e 20  n is true, then 
09e0: 53 51 4c 69 74 65 20 69 6e 76 6f 6b 65 73 20 74  SQLite invokes t
09f0: 68 65 20 73 79 73 74 65 6d 20 6c 69 62 72 61 72  he system librar
0a00: 79 20 69 73 6e 61 6e 28 29 0a 20 20 66 75 6e 63  y isnan().  func
0a10: 74 69 6f 6e 20 74 6f 20 64 65 74 65 72 6d 69 6e  tion to determin
0a20: 65 20 69 66 20 61 20 64 6f 75 62 6c 65 2d 70 72  e if a double-pr
0a30: 65 63 69 73 69 6f 6e 20 66 6c 6f 61 74 69 6e 67  ecision floating
0a40: 20 70 6f 69 6e 74 20 76 61 6c 75 65 20 69 73 20   point value is 
0a50: 61 20 4e 61 4e 2e 0a 20 20 49 66 20 48 41 56 45  a NaN..  If HAVE
0a60: 5f 49 53 4e 41 4e 20 69 73 20 75 6e 64 65 66 69  _ISNAN is undefi
0a70: 6e 65 64 20 6f 72 20 66 61 6c 73 65 2c 20 74 68  ned or false, th
0a80: 65 6e 20 53 51 4c 69 74 65 20 73 75 62 73 74 69  en SQLite substi
0a90: 74 75 74 65 73 20 69 74 73 20 6f 77 6e 20 68 6f  tutes its own ho
0aa0: 6d 65 2d 67 72 6f 77 6e 0a 20 20 69 6d 70 6c 65  me-grown.  imple
0ab0: 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 69 73 6e  mentation of isn
0ac0: 61 6e 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  an()..}..COMPILE
0ad0: 5f 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f 4c 4f  _OPTION {HAVE_LO
0ae0: 43 41 4c 54 49 4d 45 5f 52 7d 20 7b 0a 20 20 49  CALTIME_R} {.  I
0af0: 66 20 74 68 65 20 48 41 56 45 5f 4c 4f 43 41 4c  f the HAVE_LOCAL
0b00: 54 49 4d 45 5f 52 20 6f 70 74 69 6f 6e 20 69 73  TIME_R option is
0b10: 20 74 72 75 65 2c 20 74 68 65 6e 20 53 51 4c 69   true, then SQLi
0b20: 74 65 20 75 73 65 73 20 74 68 65 20 74 68 72 65  te uses the thre
0b30: 61 64 73 61 66 65 0a 20 20 6c 6f 63 61 6c 74 69  adsafe.  localti
0b40: 6d 65 5f 72 28 29 20 6c 69 62 72 61 72 79 20 72  me_r() library r
0b50: 6f 75 74 69 6e 65 20 69 6e 73 74 65 61 64 20 6f  outine instead o
0b60: 66 20 6c 6f 63 61 6c 74 69 6d 65 28 29 0a 20 20  f localtime().  
0b70: 74 6f 20 68 65 6c 70 20 69 6d 70 6c 65 6d 65 6e  to help implemen
0b80: 74 20 74 68 65 20 5b 6c 6f 63 61 6c 74 69 6d 65  t the [localtime
0b90: 20 6d 6f 64 69 66 69 65 72 5d 0a 20 20 74 6f 20   modifier].  to 
0ba0: 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 5b 64 61  the built-in [da
0bb0: 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63  te and time func
0bc0: 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  tions]..}..COMPI
0bd0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56 45 5f  LE_OPTION {HAVE_
0be0: 4c 4f 43 41 4c 54 49 4d 45 5f 53 7d 20 7b 0a 20  LOCALTIME_S} {. 
0bf0: 20 49 66 20 74 68 65 20 48 41 56 45 5f 4c 4f 43   If the HAVE_LOC
0c00: 41 4c 54 49 4d 45 5f 53 20 6f 70 74 69 6f 6e 20  ALTIME_S option 
0c10: 69 73 20 74 72 75 65 2c 20 74 68 65 6e 20 53 51  is true, then SQ
0c20: 4c 69 74 65 20 75 73 65 73 20 74 68 65 20 74 68  Lite uses the th
0c30: 72 65 61 64 73 61 66 65 0a 20 20 6c 6f 63 61 6c  readsafe.  local
0c40: 74 69 6d 65 5f 73 28 29 20 6c 69 62 72 61 72 79  time_s() library
0c50: 20 72 6f 75 74 69 6e 65 20 69 6e 73 74 65 61 64   routine instead
0c60: 20 6f 66 20 6c 6f 63 61 6c 74 69 6d 65 28 29 0a   of localtime().
0c70: 20 20 74 6f 20 68 65 6c 70 20 69 6d 70 6c 65 6d    to help implem
0c80: 65 6e 74 20 74 68 65 20 5b 6c 6f 63 61 6c 74 69  ent the [localti
0c90: 6d 65 20 6d 6f 64 69 66 69 65 72 5d 0a 20 20 74  me modifier].  t
0ca0: 6f 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 5b  o the built-in [
0cb0: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75  date and time fu
0cc0: 6e 63 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d  nctions]..}..COM
0cd0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56  PILE_OPTION {HAV
0ce0: 45 5f 4d 41 4c 4c 4f 43 5f 55 53 41 42 4c 45 5f  E_MALLOC_USABLE_
0cf0: 53 49 5a 45 7d 20 7b 0a 20 20 49 66 20 74 68 65  SIZE} {.  If the
0d00: 20 48 41 56 45 5f 4d 41 4c 4c 4f 43 5f 55 53 41   HAVE_MALLOC_USA
0d10: 42 4c 45 5f 53 49 5a 45 20 6f 70 74 69 6f 6e 20  BLE_SIZE option 
0d20: 69 73 20 74 72 75 65 2c 20 74 68 65 6e 20 53 51  is true, then SQ
0d30: 4c 69 74 65 20 74 72 69 65 73 20 75 73 65 73 20  Lite tries uses 
0d40: 74 68 65 0a 20 20 6d 61 6c 6c 6f 63 5f 75 73 61  the.  malloc_usa
0d50: 62 6c 65 5f 73 69 7a 65 28 29 20 69 6e 74 65 72  ble_size() inter
0d60: 66 61 63 65 20 74 6f 20 66 69 6e 64 20 74 68 65  face to find the
0d70: 20 73 69 7a 65 20 6f 66 20 61 20 6d 65 6d 6f 72   size of a memor
0d80: 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6f 62 74  y allocation obt
0d90: 61 69 6e 65 64 0a 20 20 66 72 6f 6d 20 74 68 65  ained.  from the
0da0: 20 73 74 61 6e 64 61 72 64 2d 6c 69 62 72 61 72   standard-librar
0db0: 79 20 6d 61 6c 6c 6f 63 28 29 20 6f 72 20 72 65  y malloc() or re
0dc0: 61 6c 6c 6f 63 28 29 20 72 6f 75 74 69 6e 65 73  alloc() routines
0dd0: 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
0de0: 73 20 6f 6e 6c 79 0a 20 20 61 70 70 6c 69 63 61  s only.  applica
0df0: 62 6c 65 20 69 66 20 74 68 65 20 73 74 61 6e 64  ble if the stand
0e00: 61 72 64 2d 6c 69 62 72 61 72 79 20 6d 61 6c 6c  ard-library mall
0e10: 6f 63 28 29 20 69 73 20 75 73 65 64 2e 20 20 4f  oc() is used.  O
0e20: 6e 20 41 70 70 6c 65 20 73 79 73 74 65 6d 73 2c  n Apple systems,
0e30: 0a 20 20 22 7a 6f 6e 65 20 6d 61 6c 6c 6f 63 22  .  "zone malloc"
0e40: 20 69 73 20 75 73 65 64 20 69 6e 73 74 65 61 64   is used instead
0e50: 2c 20 61 6e 64 20 73 6f 20 74 68 69 73 20 6f 70  , and so this op
0e60: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61 70 70 6c  tion is not appl
0e70: 69 63 61 62 6c 65 2e 20 20 41 6e 64 2c 20 6f 66  icable.  And, of
0e80: 0a 20 20 63 6f 75 72 73 65 2c 20 69 66 20 74 68  .  course, if th
0e90: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 75  e application su
0ea0: 70 70 6c 69 65 73 20 69 74 73 20 6f 77 6e 20 6d  pplies its own m
0eb0: 61 6c 6c 6f 63 20 69 6d 70 6c 65 6d 65 6e 74 61  alloc implementa
0ec0: 74 69 6f 6e 20 75 73 69 6e 67 0a 20 20 5b 53 51  tion using.  [SQ
0ed0: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c  LITE_CONFIG_MALL
0ee0: 4f 43 5d 20 74 68 65 6e 20 74 68 69 73 20 6f 70  OC] then this op
0ef0: 74 69 6f 6e 20 68 61 73 20 6e 6f 20 65 66 66 65  tion has no effe
0f00: 63 74 2e 0a 20 20 3c 70 3e 0a 20 20 49 66 20 74  ct..  <p>.  If t
0f10: 68 65 20 48 41 56 45 5f 4d 41 4c 4c 4f 43 5f 55  he HAVE_MALLOC_U
0f20: 53 41 42 4c 45 5f 53 49 5a 45 20 6f 70 74 69 6f  SABLE_SIZE optio
0f30: 6e 20 69 73 20 6f 6d 69 74 74 65 64 20 6f 72 20  n is omitted or 
0f40: 69 73 20 66 61 6c 73 65 2c 20 74 68 65 6e 20 53  is false, then S
0f50: 51 4c 69 74 65 20 0a 20 20 75 73 65 73 20 61 20  QLite .  uses a 
0f60: 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 73  wrapper around s
0f70: 79 73 74 65 6d 20 6d 61 6c 6c 6f 63 28 29 20 61  ystem malloc() a
0f80: 6e 64 20 72 65 61 6c 6c 6f 63 28 29 20 74 68 61  nd realloc() tha
0f90: 74 20 65 6e 6c 61 72 67 65 73 20 65 61 63 68 20  t enlarges each 
0fa0: 61 6c 6c 6f 63 61 74 69 6f 6e 0a 20 20 62 79 20  allocation.  by 
0fb0: 38 20 62 79 74 65 73 20 61 6e 64 20 77 72 69 74  8 bytes and writ
0fc0: 65 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  es the size of t
0fd0: 68 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 6e  he allocation in
0fe0: 20 74 68 65 20 69 6e 69 74 69 61 6c 20 38 20 62   the initial 8 b
0ff0: 79 74 65 73 2c 20 61 6e 64 0a 20 20 74 68 65 6e  ytes, and.  then
1000: 20 53 51 4c 69 74 65 20 61 6c 73 6f 20 69 6d 70   SQLite also imp
1010: 6c 65 6d 65 6e 74 73 20 69 74 73 20 6f 77 6e 20  lements its own 
1020: 68 6f 6d 65 2d 67 72 6f 77 6e 20 76 65 72 73 69  home-grown versi
1030: 6f 6e 20 6f 66 20 6d 61 6c 6c 6f 63 5f 75 73 61  on of malloc_usa
1040: 62 6c 65 5f 73 69 7a 65 28 29 0a 20 20 74 68 61  ble_size().  tha
1050: 74 20 63 6f 6e 73 75 6c 74 73 20 74 68 61 74 20  t consults that 
1060: 38 2d 62 79 74 65 20 70 72 65 66 69 78 20 74 6f  8-byte prefix to
1070: 20 66 69 6e 64 20 74 68 65 20 61 6c 6c 6f 63 61   find the alloca
1080: 74 69 6f 6e 20 73 69 7a 65 2e 20 20 54 68 69 73  tion size.  This
1090: 20 61 70 70 72 6f 61 63 68 0a 20 20 77 6f 72 6b   approach.  work
10a0: 73 20 62 75 74 20 69 74 20 69 73 20 73 75 62 6f  s but it is subo
10b0: 70 74 69 6d 61 6c 2e 20 20 41 70 70 6c 69 63 61  ptimal.  Applica
10c0: 74 69 6f 6e 73 20 61 72 65 20 65 6e 63 6f 75 72  tions are encour
10d0: 61 67 65 64 20 74 6f 20 75 73 65 0a 20 20 48 41  aged to use.  HA
10e0: 56 45 5f 4d 41 4c 4c 4f 43 5f 55 53 41 42 4c 45  VE_MALLOC_USABLE
10f0: 5f 53 49 5a 45 20 77 68 65 6e 65 76 65 72 20 70  _SIZE whenever p
1100: 6f 73 73 69 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50  ossible..}..COMP
1110: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48 41 56 45  ILE_OPTION {HAVE
1120: 5f 53 54 52 43 48 52 4e 55 4c 7d 20 7b 0a 20 20  _STRCHRNUL} {.  
1130: 49 66 20 74 68 65 20 48 41 56 45 5f 53 54 52 43  If the HAVE_STRC
1140: 48 52 4e 55 4c 20 6f 70 74 69 6f 6e 20 69 73 20  HRNUL option is 
1150: 74 72 75 65 2c 20 74 68 65 6e 20 53 51 4c 69 74  true, then SQLit
1160: 65 20 75 73 65 73 20 74 68 65 20 73 74 72 63 68  e uses the strch
1170: 72 6e 75 6c 28 29 20 6c 69 62 72 61 72 79 0a 20  rnul() library. 
1180: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 49 66 20 74   function.  If t
1190: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6d 69  his option is mi
11a0: 73 73 69 6e 67 20 6f 72 20 66 61 6c 73 65 2c 20  ssing or false, 
11b0: 74 68 65 6e 20 53 51 4c 69 74 65 20 73 75 62 73  then SQLite subs
11c0: 74 69 74 75 74 65 73 20 69 74 73 20 6f 77 6e 0a  titutes its own.
11d0: 20 20 68 6f 6d 65 2d 67 72 6f 77 6e 20 69 6d 70    home-grown imp
11e0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 73  lementation of s
11f0: 74 72 63 68 72 6e 75 6c 28 29 2e 0a 7d 0a 0a 43  trchrnul()..}..C
1200: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 48  OMPILE_OPTION {H
1210: 41 56 45 5f 55 53 4c 45 45 50 7d 20 7b 0a 20 20  AVE_USLEEP} {.  
1220: 49 66 20 74 68 65 20 48 41 56 45 5f 55 53 4c 45  If the HAVE_USLE
1230: 45 50 20 6f 70 74 69 6f 6e 20 69 73 20 74 72 75  EP option is tru
1240: 65 2c 20 74 68 65 6e 20 74 68 65 20 64 65 66 61  e, then the defa
1250: 75 6c 74 20 75 6e 69 78 20 56 46 53 20 75 73 65  ult unix VFS use
1260: 73 20 74 68 65 0a 20 20 75 73 6c 65 65 70 28 29  s the.  usleep()
1270: 20 73 79 73 74 65 6d 20 63 61 6c 6c 20 74 6f 20   system call to 
1280: 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 78 53  implement the xS
1290: 6c 65 65 70 20 6d 65 74 68 6f 64 2e 20 20 49 66  leep method.  If
12a0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 0a   this option is.
12b0: 20 20 75 6e 64 65 66 69 6e 65 64 20 6f 72 20 66    undefined or f
12c0: 61 6c 73 65 2c 20 74 68 65 6e 20 78 53 6c 65 65  alse, then xSlee
12d0: 70 20 6f 6e 20 75 6e 69 78 20 69 73 20 69 6d 70  p on unix is imp
12e0: 6c 65 6d 65 6e 74 65 64 20 75 73 69 6e 67 20 73  lemented using s
12f0: 6c 65 65 70 28 29 20 77 68 69 63 68 0a 20 20 6d  leep() which.  m
1300: 65 61 6e 73 20 74 68 61 74 20 5b 73 71 6c 69 74  eans that [sqlit
1310: 65 33 5f 73 6c 65 65 70 28 29 5d 20 77 69 6c 6c  e3_sleep()] will
1320: 20 68 61 76 65 20 61 20 6d 69 6e 69 6d 75 6d 20   have a minimum 
1330: 77 61 69 74 20 69 6e 74 65 72 76 61 6c 20 6f 66  wait interval of
1340: 20 31 30 30 30 0a 20 20 6d 69 6c 6c 69 73 65 63   1000.  millisec
1350: 6f 6e 64 73 20 72 65 67 61 72 64 6c 65 73 73 20  onds regardless 
1360: 6f 66 20 69 74 73 20 61 72 67 75 6d 65 6e 74 2e  of its argument.
1370: 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50    .}..COMPILE_OP
1380: 54 49 4f 4e 20 7b 48 41 56 45 5f 55 54 49 4d 45  TION {HAVE_UTIME
1390: 7d 20 7b 0a 20 20 49 66 20 74 68 65 20 48 41 56  } {.  If the HAV
13a0: 45 5f 55 54 49 4d 45 20 6f 70 74 69 6f 6e 20 69  E_UTIME option i
13b0: 73 20 74 72 75 65 2c 20 74 68 65 6e 20 74 68 65  s true, then the
13c0: 20 62 75 69 6c 74 2d 69 6e 20 62 75 74 20 6e 6f   built-in but no
13d0: 6e 2d 73 74 61 6e 64 61 72 64 0a 20 20 22 75 6e  n-standard.  "un
13e0: 69 78 2d 64 6f 74 66 69 6c 65 22 20 56 46 53 20  ix-dotfile" VFS 
13f0: 77 69 6c 6c 20 75 73 65 20 74 68 65 20 75 74 69  will use the uti
1400: 6d 65 28 29 20 73 79 73 74 65 6d 20 63 61 6c 6c  me() system call
1410: 2c 20 69 6e 73 74 65 61 64 20 6f 66 20 75 74 69  , instead of uti
1420: 6d 65 73 28 29 2c 0a 20 20 74 6f 20 73 65 74 20  mes(),.  to set 
1430: 74 68 65 20 6c 61 73 74 20 61 63 63 65 73 73 20  the last access 
1440: 74 69 6d 65 20 6f 6e 20 74 68 65 20 6c 6f 63 6b  time on the lock
1450: 20 66 69 6c 65 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a   file..}.</tcl>.
1460: 0a 3c 61 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c  .<a name="defaul
1470: 74 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 32  ts"></a>.<h2>1.2
1480: 20 4f 70 74 69 6f 6e 73 20 54 6f 20 53 65 74 20   Options To Set 
1490: 44 65 66 61 75 6c 74 20 50 61 72 61 6d 65 74 65  Default Paramete
14a0: 72 20 56 61 6c 75 65 73 3c 2f 68 32 3e 0a 0a 3c  r Values</h2>..<
14b0: 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  tcl>..COMPILE_OP
14c0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
14d0: 41 55 4c 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49  AULT_AUTOMATIC_I
14e0: 4e 44 45 58 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72  NDEX=<i>&lt;0 or
14f0: 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   1&gt;</i>} {.  
1500: 54 68 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72  This macro deter
1510: 6d 69 6e 65 73 20 74 68 65 20 69 6e 69 74 69 61  mines the initia
1520: 6c 20 73 65 74 74 69 6e 67 20 66 6f 72 20 5b 50  l setting for [P
1530: 52 41 47 4d 41 20 61 75 74 6f 6d 61 74 69 63 5f  RAGMA automatic_
1540: 69 6e 64 65 78 5d 0a 20 20 66 6f 72 20 6e 65 77  index].  for new
1550: 6c 79 20 6f 70 65 6e 65 64 20 5b 64 61 74 61 62  ly opened [datab
1560: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d  ase connections]
1570: 2e 0a 20 20 46 6f 72 20 61 6c 6c 20 76 65 72 73  ..  For all vers
1580: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 74  ions of SQLite t
1590: 68 72 6f 75 67 68 20 33 2e 37 2e 31 37 2c 0a 20  hrough 3.7.17,. 
15a0: 20 61 75 74 6f 6d 61 74 69 63 20 69 6e 64 69 63   automatic indic
15b0: 65 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20  es are normally 
15c0: 65 6e 61 62 6c 65 64 20 66 6f 72 20 6e 65 77 20  enabled for new 
15d0: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
15e0: 69 6f 6e 73 20 69 66 0a 20 20 74 68 69 73 20 63  ions if.  this c
15f0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
1600: 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 20  on is omitted.. 
1610: 20 48 6f 77 65 76 65 72 2c 20 74 68 61 74 20 6d   However, that m
1620: 69 67 68 74 20 63 68 61 6e 67 65 20 69 6e 20 66  ight change in f
1630: 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f  uture releases o
1640: 66 20 53 51 4c 69 74 65 2e 0a 20 20 3c 70 3e 53  f SQLite..  <p>S
1650: 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45  ee also: [SQLITE
1660: 5f 4f 4d 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f  _OMIT_AUTOMATIC_
1670: 49 4e 44 45 58 5d 0a 7d 0a 0a 43 4f 4d 50 49 4c  INDEX].}..COMPIL
1680: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
1690: 5f 44 45 46 41 55 4c 54 5f 41 55 54 4f 56 41 43  _DEFAULT_AUTOVAC
16a0: 55 55 4d 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20  UUM=<i>&lt;0 or 
16b0: 31 20 6f 72 20 32 26 67 74 3b 3c 2f 69 3e 7d 20  1 or 2&gt;</i>} 
16c0: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 64  {.  This macro d
16d0: 65 74 65 72 6d 69 6e 65 73 20 69 66 20 53 51 4c  etermines if SQL
16e0: 69 74 65 20 63 72 65 61 74 65 73 20 64 61 74 61  ite creates data
16f0: 62 61 73 65 73 20 77 69 74 68 20 74 68 65 20 0a  bases with the .
1700: 20 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20    [auto_vacuum] 
1710: 66 6c 61 67 20 73 65 74 20 62 79 20 64 65 66 61  flag set by defa
1720: 75 6c 74 20 74 6f 20 4f 46 46 20 28 30 29 2c 20  ult to OFF (0), 
1730: 46 55 4c 4c 20 28 31 29 2c 20 6f 72 0a 20 20 49  FULL (1), or.  I
1740: 4e 43 52 45 4d 45 4e 54 41 4c 20 28 32 29 2e 20  NCREMENTAL (2). 
1750: 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  The default valu
1760: 65 20 69 73 20 30 20 6d 65 61 6e 69 6e 67 20 74  e is 0 meaning t
1770: 68 61 74 20 64 61 74 61 62 61 73 65 73 0a 20 20  hat databases.  
1780: 61 72 65 20 63 72 65 61 74 65 64 20 77 69 74 68  are created with
1790: 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 74 75 72   auto-vacuum tur
17a0: 6e 65 64 20 6f 66 66 2e 0a 20 20 49 6e 20 61 6e  ned off..  In an
17b0: 79 20 63 61 73 65 20 74 68 65 20 63 6f 6d 70 69  y case the compi
17c0: 6c 65 2d 74 69 6d 65 20 64 65 66 61 75 6c 74 20  le-time default 
17d0: 6d 61 79 20 62 65 20 6f 76 65 72 72 69 64 64 65  may be overridde
17e0: 6e 20 62 79 20 74 68 65 20 0a 20 20 5b 50 52 41  n by the .  [PRA
17f0: 47 4d 41 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d  GMA auto_vacuum]
1800: 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d   command..}..COM
1810: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
1820: 49 54 45 5f 44 45 46 41 55 4c 54 5f 43 41 43 48  ITE_DEFAULT_CACH
1830: 45 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 4e 26  E_SIZE=<i>&lt;N&
1840: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
1850: 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65  s macro sets the
1860: 20 64 65 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d   default maximum
1870: 20 73 69 7a 65 20 6f 66 20 74 68 65 20 70 61 67   size of the pag
1880: 65 2d 63 61 63 68 65 20 66 6f 72 20 65 61 63 68  e-cache for each
1890: 20 61 74 74 61 63 68 65 64 0a 20 20 64 61 74 61   attached.  data
18a0: 62 61 73 65 2e 20 20 41 20 70 6f 73 69 74 69 76  base.  A positiv
18b0: 65 20 76 61 6c 75 65 20 6d 65 61 6e 73 20 74 68  e value means th
18c0: 61 74 20 74 68 65 20 6c 69 6d 69 74 20 69 73 20  at the limit is 
18d0: 4e 20 70 61 67 65 2e 20 20 49 66 20 4e 20 69 73  N page.  If N is
18e0: 20 6e 65 67 61 74 69 76 65 0a 20 20 74 68 61 74   negative.  that
18f0: 20 6d 65 61 6e 73 20 74 6f 20 6c 69 6d 69 74 20   means to limit 
1900: 74 68 65 20 63 61 63 68 65 20 73 69 7a 65 20 74  the cache size t
1910: 6f 20 2d 4e 2a 31 30 32 34 20 62 79 74 65 73 2e  o -N*1024 bytes.
1920: 0a 20 20 54 68 65 20 73 75 67 67 65 73 74 65 64  .  The suggested
1930: 20 6d 61 78 69 6d 75 6d 20 63 61 63 68 65 20 73   maximum cache s
1940: 69 7a 65 20 63 61 6e 20 62 65 20 6f 76 65 72 72  ize can be overr
1950: 69 64 64 65 6e 20 62 79 20 74 68 65 20 0a 20 20  idden by the .  
1960: 5b 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69  [PRAGMA cache_si
1970: 7a 65 5d 20 63 6f 6d 6d 61 6e 64 2e 20 54 68 65  ze] command. The
1980: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69   default value i
1990: 73 20 2d 32 30 30 30 2c 20 77 68 69 63 68 20 74  s -2000, which t
19a0: 72 61 6e 73 6c 61 74 65 73 0a 20 20 69 6e 74 6f  ranslates.  into
19b0: 20 61 20 6d 61 78 69 6d 75 6d 20 6f 66 20 32 30   a maximum of 20
19c0: 34 38 30 30 30 20 62 79 74 65 73 20 70 65 72 20  48000 bytes per 
19d0: 63 61 63 68 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  cache..}..COMPIL
19e0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
19f0: 5f 44 45 46 41 55 4c 54 5f 46 49 4c 45 5f 46 4f  _DEFAULT_FILE_FO
1a00: 52 4d 41 54 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72  RMAT=<i>&lt;1 or
1a10: 20 34 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   4&gt;</i>} {.  
1a20: 54 68 65 20 64 65 66 61 75 6c 74 20 5b 73 63 68  The default [sch
1a30: 65 6d 61 20 66 6f 72 6d 61 74 20 6e 75 6d 62 65  ema format numbe
1a40: 72 5d 20 75 73 65 64 20 62 79 20 53 51 4c 69 74  r] used by SQLit
1a50: 65 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67 0a  e when creating.
1a60: 20 20 6e 65 77 20 64 61 74 61 62 61 73 65 20 66    new database f
1a70: 69 6c 65 73 20 69 73 20 73 65 74 20 62 79 20 74  iles is set by t
1a80: 68 69 73 20 6d 61 63 72 6f 2e 20 20 54 68 65 20  his macro.  The 
1a90: 73 63 68 65 6d 61 20 66 6f 72 6d 61 74 73 20 61  schema formats a
1aa0: 72 65 20 61 6c 6c 0a 20 20 76 65 72 79 20 73 69  re all.  very si
1ab0: 6d 69 6c 61 72 2e 20 20 54 68 65 20 64 69 66 66  milar.  The diff
1ac0: 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e 20 66  erence between f
1ad0: 6f 72 6d 61 74 73 20 31 20 61 6e 64 20 34 20 69  ormats 1 and 4 i
1ae0: 73 20 74 68 61 74 20 66 6f 72 6d 61 74 0a 20 20  s that format.  
1af0: 34 20 75 6e 64 65 72 73 74 61 6e 64 73 20 5b 64  4 understands [d
1b00: 65 73 63 65 6e 64 69 6e 67 20 69 6e 64 69 63 65  escending indice
1b10: 73 5d 20 61 6e 64 20 68 61 73 20 61 20 74 69 67  s] and has a tig
1b20: 68 74 65 72 20 65 6e 63 6f 64 69 6e 67 20 66 6f  hter encoding fo
1b30: 72 0a 20 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  r.  boolean valu
1b40: 65 73 2e 0a 0a 20 20 41 6c 6c 20 76 65 72 73 69  es...  All versi
1b50: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 73 69  ons of SQLite si
1b60: 6e 63 65 20 33 2e 33 2e 30 20 28 32 30 30 36 2d  nce 3.3.0 (2006-
1b70: 30 31 2d 31 30 29 0a 20 20 63 61 6e 20 72 65 61  01-10).  can rea
1b80: 64 20 61 6e 64 20 77 72 69 74 65 20 61 6e 79 20  d and write any 
1b90: 73 63 68 65 6d 61 20 66 6f 72 6d 61 74 0a 20 20  schema format.  
1ba0: 62 65 74 77 65 65 6e 20 31 20 61 6e 64 20 34 2e  between 1 and 4.
1bb0: 20 20 42 75 74 20 6f 6c 64 65 72 20 76 65 72 73    But older vers
1bc0: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d  ions of SQLite m
1bd0: 69 67 68 74 20 6e 6f 74 20 62 65 20 61 62 6c 65  ight not be able
1be0: 20 74 6f 0a 20 20 72 65 61 64 20 66 6f 72 6d 61   to.  read forma
1bf0: 74 73 20 67 72 65 61 74 65 72 20 74 68 61 6e 20  ts greater than 
1c00: 31 2e 20 20 53 6f 20 74 68 61 74 20 6f 6c 64 65  1.  So that olde
1c10: 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  r versions of SQ
1c20: 4c 69 74 65 20 77 69 6c 6c 0a 20 20 62 65 20 61  Lite will.  be a
1c30: 62 6c 65 20 74 6f 20 72 65 61 64 20 61 6e 64 20  ble to read and 
1c40: 77 72 69 74 65 20 64 61 74 61 62 61 73 65 20 66  write database f
1c50: 69 6c 65 73 20 63 72 65 61 74 65 64 20 62 79 20  iles created by 
1c60: 6e 65 77 65 72 20 76 65 72 73 69 6f 6e 73 0a 20  newer versions. 
1c70: 20 6f 66 20 53 51 4c 69 74 65 2c 20 74 68 65 20   of SQLite, the 
1c80: 64 65 66 61 75 6c 74 20 73 63 68 65 6d 61 20 66  default schema f
1c90: 6f 72 6d 61 74 20 77 61 73 20 73 65 74 20 74 6f  ormat was set to
1ca0: 20 31 20 66 6f 72 20 53 51 4c 69 74 65 20 76 65   1 for SQLite ve
1cb0: 72 73 69 6f 6e 73 0a 20 20 74 68 72 6f 75 67 68  rsions.  through
1cc0: 20 33 2e 37 2e 39 20 28 32 30 31 31 2d 31 31 2d   3.7.9 (2011-11-
1cd0: 30 31 29 2e 20 20 42 65 67 69 6e 6e 69 6e 67 20  01).  Beginning 
1ce0: 77 69 74 68 20 76 65 72 73 69 6f 6e 20 33 2e 37  with version 3.7
1cf0: 2e 31 30 2c 20 74 68 65 20 64 65 66 61 75 6c 74  .10, the default
1d00: 0a 20 20 73 63 68 65 6d 61 20 66 6f 72 6d 61 74  .  schema format
1d10: 20 69 73 20 34 2e 0a 0a 20 20 54 68 65 20 73 63   is 4...  The sc
1d20: 68 65 6d 61 20 66 6f 72 6d 61 74 20 6e 75 6d 62  hema format numb
1d30: 65 72 20 66 6f 72 20 61 20 6e 65 77 20 64 61 74  er for a new dat
1d40: 61 62 61 73 65 20 63 61 6e 20 62 65 20 73 65 74  abase can be set
1d50: 20 61 74 20 72 75 6e 74 69 6d 65 20 75 73 69 6e   at runtime usin
1d60: 67 0a 20 20 74 68 65 20 5b 50 52 41 47 4d 41 20  g.  the [PRAGMA 
1d70: 6c 65 67 61 63 79 5f 66 69 6c 65 5f 66 6f 72 6d  legacy_file_form
1d80: 61 74 5d 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a  at] command..}..
1d90: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
1da0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 46  SQLITE_DEFAULT_F
1db0: 49 4c 45 5f 50 45 52 4d 49 53 53 49 4f 4e 53 3d  ILE_PERMISSIONS=
1dc0: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  <i>N</i>} {.  Th
1dd0: 65 20 64 65 66 61 75 6c 74 20 6e 75 6d 65 72 69  e default numeri
1de0: 63 20 66 69 6c 65 20 70 65 72 6d 69 73 73 69 6f  c file permissio
1df0: 6e 73 20 66 6f 72 20 6e 65 77 6c 79 20 63 72 65  ns for newly cre
1e00: 61 74 65 64 20 64 61 74 61 62 61 73 65 20 66 69  ated database fi
1e10: 6c 65 73 0a 20 20 75 6e 64 65 72 20 75 6e 69 78  les.  under unix
1e20: 2e 20 20 49 66 20 6e 6f 74 20 73 70 65 63 69 66  .  If not specif
1e30: 69 65 64 2c 20 74 68 65 20 64 65 66 61 75 6c 74  ied, the default
1e40: 20 69 73 20 30 36 34 34 20 77 68 69 63 68 20 6d   is 0644 which m
1e50: 65 61 6e 73 20 74 68 61 74 0a 20 20 74 68 65 20  eans that.  the 
1e60: 66 69 6c 65 73 20 69 73 20 67 6c 6f 62 61 6c 6c  files is globall
1e70: 79 20 72 65 61 64 61 62 6c 65 20 62 75 74 20 6f  y readable but o
1e80: 6e 6c 79 20 77 72 69 74 61 62 6c 65 20 62 79 20  nly writable by 
1e90: 74 68 65 20 63 72 65 61 74 6f 72 2e 0a 7d 0a 0a  the creator..}..
1ea0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
1eb0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 46  SQLITE_DEFAULT_F
1ec0: 4f 52 45 49 47 4e 5f 4b 45 59 53 3d 3c 69 3e 26  OREIGN_KEYS=<i>&
1ed0: 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69  lt;0 or 1&gt;</i
1ee0: 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  >} {.  This macr
1ef0: 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 77 68 65  o determines whe
1f00: 74 68 65 72 20 65 6e 66 6f 72 63 65 6d 65 6e 74  ther enforcement
1f10: 20 6f 66 20 0a 20 20 5b 66 6f 72 65 69 67 6e 20   of .  [foreign 
1f20: 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d  key constraints]
1f30: 20 69 73 20 65 6e 61 62 6c 65 64 20 6f 72 20 64   is enabled or d
1f40: 69 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75  isabled by defau
1f50: 6c 74 20 66 6f 72 0a 20 20 6e 65 77 20 64 61 74  lt for.  new dat
1f60: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1f70: 73 2e 20 20 45 61 63 68 20 64 61 74 61 62 61 73  s.  Each databas
1f80: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 61 6e  e connection can
1f90: 20 61 6c 77 61 79 73 20 74 75 72 6e 0a 20 20 65   always turn.  e
1fa0: 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20 66 6f  nforcement of fo
1fb0: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
1fc0: 61 69 6e 74 73 20 6f 6e 20 61 6e 64 20 6f 66 66  aints on and off
1fd0: 20 61 6e 64 20 72 75 6e 2d 74 69 6d 65 20 75 73   and run-time us
1fe0: 69 6e 67 0a 20 20 74 68 65 20 5b 66 6f 72 65 69  ing.  the [forei
1ff0: 67 6e 5f 6b 65 79 73 20 70 72 61 67 6d 61 5d 2e  gn_keys pragma].
2000: 20 20 45 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66    Enforcement of
2010: 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e   foreign key con
2020: 73 74 72 61 69 6e 74 73 0a 20 20 69 73 20 6e 6f  straints.  is no
2030: 72 6d 61 6c 6c 79 20 6f 66 66 20 62 79 20 64 65  rmally off by de
2040: 66 61 75 6c 74 2c 20 62 75 74 20 69 66 20 74 68  fault, but if th
2050: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  is compile-time 
2060: 70 61 72 61 6d 65 74 65 72 20 69 73 0a 20 20 73  parameter is.  s
2070: 65 74 20 74 6f 20 31 2c 20 65 6e 66 6f 72 63 65  et to 1, enforce
2080: 6d 65 6e 74 20 6f 66 20 66 6f 72 65 69 67 6e 20  ment of foreign 
2090: 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  key constraints 
20a0: 77 69 6c 6c 20 62 65 20 6f 6e 20 62 79 20 64 65  will be on by de
20b0: 66 61 75 6c 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  fault..}..COMPIL
20c0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
20d0: 5f 44 45 46 41 55 4c 54 5f 4d 4d 41 50 5f 53 49  _DEFAULT_MMAP_SI
20e0: 5a 45 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20  ZE=<i>N</i>} {. 
20f0: 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73   This macro sets
2100: 20 74 68 65 20 64 65 66 61 75 6c 74 20 6c 69 6d   the default lim
2110: 69 74 20 6f 6e 20 74 68 65 20 61 6d 6f 75 6e 74  it on the amount
2120: 20 6f 66 20 6d 65 6d 6f 72 79 20 74 68 61 74 0a   of memory that.
2130: 20 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 66    will be used f
2140: 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64  or memory-mapped
2150: 20 49 2f 4f 0a 20 20 66 6f 72 20 65 61 63 68 20   I/O.  for each 
2160: 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20 66 69  open database fi
2170: 6c 65 2e 20 20 49 66 20 74 68 65 20 3c 69 3e 4e  le.  If the <i>N
2180: 3c 2f 69 3e 0a 20 20 69 73 20 7a 65 72 6f 2c 20  </i>.  is zero, 
2190: 74 68 65 6e 20 6d 65 6d 6f 72 79 20 6d 61 70 70  then memory mapp
21a0: 65 64 20 49 2f 4f 20 69 73 20 64 69 73 61 62 6c  ed I/O is disabl
21b0: 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20  ed by default.  
21c0: 54 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74  This.  compile-t
21d0: 69 6d 65 20 6c 69 6d 69 74 20 61 6e 64 20 74 68  ime limit and th
21e0: 65 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d  e [SQLITE_MAX_MM
21f0: 41 50 5f 53 49 5a 45 5d 20 63 61 6e 20 62 65 20  AP_SIZE] can be 
2200: 6d 6f 64 69 66 69 65 64 20 0a 20 20 61 74 20 73  modified .  at s
2210: 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e 67 20  tart-time using 
2220: 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  the.  [sqlite3_c
2230: 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43  onfig]([SQLITE_C
2240: 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 5d  ONFIG_MMAP_SIZE]
2250: 29 20 63 61 6c 6c 2c 20 6f 72 20 61 74 20 72 75  ) call, or at ru
2260: 6e 2d 74 69 6d 65 0a 20 20 75 73 69 6e 67 20 74  n-time.  using t
2270: 68 65 20 5b 6d 6d 61 70 5f 73 69 7a 65 20 70 72  he [mmap_size pr
2280: 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  agma]..}..COMPIL
2290: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
22a0: 5f 44 45 46 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c  _DEFAULT_JOURNAL
22b0: 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d 3c 69 3e 26  _SIZE_LIMIT=<i>&
22c0: 6c 74 3b 62 79 74 65 73 26 67 74 3b 3c 2f 69 3e  lt;bytes&gt;</i>
22d0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
22e0: 6e 20 73 65 74 73 20 74 68 65 20 73 69 7a 65 20  n sets the size 
22f0: 6c 69 6d 69 74 20 6f 6e 20 5b 72 6f 6c 6c 62 61  limit on [rollba
2300: 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20 66 69 6c 65  ck journal] file
2310: 73 20 69 6e 0a 20 20 5b 6a 6f 75 72 6e 61 6c 5f  s in.  [journal_
2320: 6d 6f 64 65 20 70 72 61 67 6d 61 20 7c 20 70 65  mode pragma | pe
2330: 72 73 69 73 74 65 6e 74 20 6a 6f 75 72 6e 61 6c  rsistent journal
2340: 20 6d 6f 64 65 5d 20 61 6e 64 0a 20 20 5b 6c 6f   mode] and.  [lo
2350: 63 6b 69 6e 67 5f 6d 6f 64 65 20 7c 20 65 78 63  cking_mode | exc
2360: 6c 75 73 69 76 65 20 6c 6f 63 6b 69 6e 67 20 6d  lusive locking m
2370: 6f 64 65 5d 20 61 6e 64 20 6f 6e 20 74 68 65 20  ode] and on the 
2380: 73 69 7a 65 20 6f 66 20 74 68 65 0a 20 20 77 72  size of the.  wr
2390: 69 74 65 2d 61 68 65 61 64 20 6c 6f 67 20 66 69  ite-ahead log fi
23a0: 6c 65 20 69 6e 20 5b 57 41 4c 20 6d 6f 64 65 5d  le in [WAL mode]
23b0: 2e 20 57 68 65 6e 20 74 68 69 73 20 0a 20 20 63  . When this .  c
23c0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
23d0: 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 20 74 68  on is omitted th
23e0: 65 72 65 20 69 73 20 6e 6f 20 75 70 70 65 72 20  ere is no upper 
23f0: 62 6f 75 6e 64 20 6f 6e 20 74 68 65 0a 20 20 73  bound on the.  s
2400: 69 7a 65 20 6f 66 20 74 68 65 20 72 6f 6c 6c 62  ize of the rollb
2410: 61 63 6b 20 6a 6f 75 72 6e 61 6c 73 20 6f 72 20  ack journals or 
2420: 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f 67 73  write-ahead logs
2430: 2e 20 20 0a 20 20 54 68 65 20 6a 6f 75 72 6e 61  .  .  The journa
2440: 6c 20 66 69 6c 65 20 73 69 7a 65 20 6c 69 6d 69  l file size limi
2450: 74 0a 20 20 63 61 6e 20 62 65 20 63 68 61 6e 67  t.  can be chang
2460: 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75  ed at run-time u
2470: 73 69 6e 67 20 74 68 65 20 5b 6a 6f 75 72 6e 61  sing the [journa
2480: 6c 5f 73 69 7a 65 5f 6c 69 6d 69 74 20 70 72 61  l_size_limit pra
2490: 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  gma]..}..COMPILE
24a0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
24b0: 44 45 46 41 55 4c 54 5f 4c 4f 43 4b 49 4e 47 5f  DEFAULT_LOCKING_
24c0: 4d 4f 44 45 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72  MODE=<i>&lt;1 or
24d0: 20 30 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   0&gt;</i>} {.  
24e0: 49 66 20 73 65 74 20 74 6f 20 31 2c 20 74 68 65  If set to 1, the
24f0: 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 5b 6c  n the default [l
2500: 6f 63 6b 69 6e 67 5f 6d 6f 64 65 5d 20 69 73 20  ocking_mode] is 
2510: 73 65 74 20 74 6f 20 45 58 43 4c 55 53 49 56 45  set to EXCLUSIVE
2520: 2e 0a 20 20 49 66 20 6f 6d 69 74 74 65 64 20 6f  ..  If omitted o
2530: 72 20 73 65 74 20 74 6f 20 30 20 74 68 65 6e 20  r set to 0 then 
2540: 74 68 65 20 64 65 66 61 75 6c 74 20 5b 6c 6f 63  the default [loc
2550: 6b 69 6e 67 5f 6d 6f 64 65 5d 20 69 73 20 4e 4f  king_mode] is NO
2560: 52 4d 41 4c 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  RMAL..}..COMPILE
2570: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
2580: 44 45 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54 55  DEFAULT_MEMSTATU
2590: 53 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 30 26  S=<i>&lt;1 or 0&
25a0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
25b0: 73 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20  s macro is used 
25c0: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 77 68 65  to determine whe
25d0: 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20  ther or not the 
25e0: 66 65 61 74 75 72 65 73 20 65 6e 61 62 6c 65 64  features enabled
25f0: 20 61 6e 64 0a 20 20 64 69 73 61 62 6c 65 64 20   and.  disabled 
2600: 75 73 69 6e 67 20 74 68 65 20 53 51 4c 49 54 45  using the SQLITE
2610: 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55  _CONFIG_MEMSTATU
2620: 53 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73  S argument to [s
2630: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
2640: 0a 20 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65  .  are available
2650: 20 62 79 20 64 65 66 61 75 6c 74 2e 20 54 68 65   by default. The
2660: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69   default value i
2670: 73 20 31 20 28 5b 53 51 4c 49 54 45 5f 43 4f 4e  s 1 ([SQLITE_CON
2680: 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 0a 20  FIG_MEMSTATUS]. 
2690: 20 72 65 6c 61 74 65 64 20 66 65 61 74 75 72 65   related feature
26a0: 73 20 65 6e 61 62 6c 65 64 29 2e 0a 7d 0a 0a 43  s enabled)..}..C
26b0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
26c0: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 50 41  QLITE_DEFAULT_PA
26d0: 47 45 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 62  GE_SIZE=<i>&lt;b
26e0: 79 74 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  ytes&gt;</i>} {.
26f0: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20    This macro is 
2700: 75 73 65 64 20 74 6f 20 73 65 74 20 74 68 65 20  used to set the 
2710: 64 65 66 61 75 6c 74 20 70 61 67 65 2d 73 69 7a  default page-siz
2720: 65 20 75 73 65 64 20 77 68 65 6e 20 61 0a 20 20  e used when a.  
2730: 64 61 74 61 62 61 73 65 20 69 73 20 63 72 65 61  database is crea
2740: 74 65 64 2e 20 54 68 65 20 76 61 6c 75 65 20 61  ted. The value a
2750: 73 73 69 67 6e 65 64 20 6d 75 73 74 20 62 65 20  ssigned must be 
2760: 61 20 70 6f 77 65 72 20 6f 66 20 32 2e 20 54 68  a power of 2. Th
2770: 65 0a 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75  e.  default valu
2780: 65 20 69 73 20 34 30 39 36 2e 20 54 68 65 20 63  e is 4096. The c
2790: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 64 65 66 61  ompile-time defa
27a0: 75 6c 74 20 6d 61 79 20 62 65 20 6f 76 65 72 72  ult may be overr
27b0: 69 64 64 65 6e 20 61 74 20 0a 20 20 72 75 6e 74  idden at .  runt
27c0: 69 6d 65 20 62 79 20 74 68 65 20 5b 50 52 41 47  ime by the [PRAG
27d0: 4d 41 20 70 61 67 65 5f 73 69 7a 65 5d 20 63 6f  MA page_size] co
27e0: 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  mmand..}..COMPIL
27f0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
2800: 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43 48 52 4f  _DEFAULT_SYNCHRO
2810: 4e 4f 55 53 3d 3c 69 3e 26 6c 74 3b 30 2d 33 26  NOUS=<i>&lt;0-3&
2820: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
2830: 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e  s macro determin
2840: 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 76  es the default v
2850: 61 6c 75 65 20 6f 66 20 74 68 65 0a 20 20 5b 50  alue of the.  [P
2860: 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
2870: 73 5d 20 73 65 74 74 69 6e 67 2e 20 20 49 66 20  s] setting.  If 
2880: 6e 6f 74 20 6f 76 65 72 72 69 64 64 65 6e 20 61  not overridden a
2890: 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 0a  t compile-time,.
28a0: 20 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 65    the default se
28b0: 74 74 69 6e 67 20 69 73 20 32 20 28 46 55 4c 4c  tting is 2 (FULL
28c0: 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  )..}..COMPILE_OP
28d0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
28e0: 41 55 4c 54 5f 57 41 4c 5f 53 59 4e 43 48 52 4f  AULT_WAL_SYNCHRO
28f0: 4e 4f 55 53 3d 3c 69 3e 26 6c 74 3b 30 2d 33 26  NOUS=<i>&lt;0-3&
2900: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
2910: 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e  s macro determin
2920: 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 76  es the default v
2930: 61 6c 75 65 20 6f 66 20 74 68 65 0a 20 20 5b 50  alue of the.  [P
2940: 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
2950: 73 5d 20 73 65 74 74 69 6e 67 20 66 6f 72 20 64  s] setting for d
2960: 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 74 68  atabase files th
2970: 61 74 20 6f 70 65 6e 20 69 6e 0a 20 20 5b 57 41  at open in.  [WA
2980: 4c 20 6d 6f 64 65 5d 2e 20 20 49 66 20 6e 6f 74  L mode].  If not
2990: 20 6f 76 65 72 72 69 64 64 65 6e 20 61 74 20 63   overridden at c
29a0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 74 68 69  ompile-time, thi
29b0: 73 20 76 61 6c 75 65 20 69 73 20 74 68 65 0a 20  s value is the. 
29c0: 20 73 61 6d 65 20 61 73 20 5b 53 51 4c 49 54 45   same as [SQLITE
29d0: 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43 48 52 4f  _DEFAULT_SYNCHRO
29e0: 4e 4f 55 53 5d 2e 0a 20 20 3c 70 3e 0a 20 20 49  NOUS]..  <p>.  I
29f0: 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  f SQLITE_DEFAULT
2a00: 5f 57 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53  _WAL_SYNCHRONOUS
2a10: 20 64 69 66 66 65 72 73 20 66 72 6f 6d 20 53 51   differs from SQ
2a20: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e  LITE_DEFAULT_SYN
2a30: 43 48 52 4f 4e 4f 55 53 2c 0a 20 20 61 6e 64 20  CHRONOUS,.  and 
2a40: 69 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  if the applicati
2a50: 6f 6e 20 68 61 73 20 6e 6f 74 20 6d 6f 64 69 66  on has not modif
2a60: 69 65 64 20 74 68 65 20 73 79 6e 63 68 72 6f 6e  ied the synchron
2a70: 6f 75 73 20 73 65 74 74 69 6e 67 20 66 6f 72 0a  ous setting for.
2a80: 20 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66    the database f
2a90: 69 6c 65 20 75 73 69 6e 67 20 74 68 65 20 5b 50  ile using the [P
2aa0: 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
2ab0: 73 5d 20 73 74 61 74 65 6d 65 6e 74 2c 20 74 68  s] statement, th
2ac0: 65 6e 0a 20 20 74 68 65 20 73 79 6e 63 68 72 6f  en.  the synchro
2ad0: 6e 6f 75 73 20 73 65 74 74 69 6e 67 20 69 73 20  nous setting is 
2ae0: 63 68 61 6e 67 65 64 20 74 6f 20 76 61 6c 75 65  changed to value
2af0: 20 64 65 66 69 6e 65 64 20 62 79 0a 20 20 53 51   defined by.  SQ
2b00: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 41 4c  LITE_DEFAULT_WAL
2b10: 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 20 77 68 65  _SYNCHRONOUS whe
2b20: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  n the database c
2b30: 6f 6e 6e 65 63 74 69 6f 6e 20 73 77 69 74 63 68  onnection switch
2b40: 65 73 0a 20 20 69 6e 74 6f 20 57 41 4c 20 6d 6f  es.  into WAL mo
2b50: 64 65 20 66 6f 72 20 74 68 65 20 66 69 72 73 74  de for the first
2b60: 20 74 69 6d 65 2e 0a 20 20 49 66 20 74 68 65 20   time..  If the 
2b70: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57  SQLITE_DEFAULT_W
2b80: 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 20 76  AL_SYNCHRONOUS v
2b90: 61 6c 75 65 20 69 73 20 6e 6f 74 20 6f 76 65 72  alue is not over
2ba0: 72 69 64 64 65 6e 20 61 74 0a 20 20 63 6f 6d 70  ridden at.  comp
2bb0: 69 6c 65 2d 74 69 6d 65 2c 20 74 68 65 6e 20 69  ile-time, then i
2bc0: 74 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65  t will always be
2bd0: 20 74 68 65 20 73 61 6d 65 20 61 73 0a 20 20 5b   the same as.  [
2be0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 53  SQLITE_DEFAULT_S
2bf0: 59 4e 43 48 52 4f 4e 4f 55 53 5d 20 61 6e 64 20  YNCHRONOUS] and 
2c00: 73 6f 20 6e 6f 20 61 75 74 6f 6d 61 74 69 63 20  so no automatic 
2c10: 73 79 6e 63 68 72 6f 6e 6f 75 73 20 73 65 74 74  synchronous sett
2c20: 69 6e 67 0a 20 20 63 68 61 6e 67 65 73 20 77 69  ing.  changes wi
2c30: 6c 6c 20 65 76 65 72 20 6f 63 63 75 72 2e 0a 7d  ll ever occur..}
2c40: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
2c50: 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   {SQLITE_DEFAULT
2c60: 5f 57 41 4c 5f 41 55 54 4f 43 48 45 43 4b 50 4f  _WAL_AUTOCHECKPO
2c70: 49 4e 54 3d 3c 69 3e 26 6c 74 3b 70 61 67 65 73  INT=<i>&lt;pages
2c80: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
2c90: 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68  is macro sets th
2ca0: 65 20 64 65 66 61 75 6c 74 20 70 61 67 65 20 63  e default page c
2cb0: 6f 75 6e 74 20 66 6f 72 20 74 68 65 20 5b 57 41  ount for the [WA
2cc0: 4c 5d 0a 20 20 5b 63 68 65 63 6b 70 6f 69 6e 74  L].  [checkpoint
2cd0: 69 6e 67 20 7c 20 61 75 74 6f 6d 61 74 69 63 20  ing | automatic 
2ce0: 63 68 65 63 6b 70 6f 69 6e 74 69 6e 67 5d 20 66  checkpointing] f
2cf0: 65 61 74 75 72 65 2e 20 20 49 66 20 75 6e 73 70  eature.  If unsp
2d00: 65 63 69 66 69 65 64 2c 0a 20 20 74 68 65 20 64  ecified,.  the d
2d10: 65 66 61 75 6c 74 20 70 61 67 65 20 63 6f 75 6e  efault page coun
2d20: 74 20 69 73 20 31 30 30 30 2e 0a 7d 0a 0a 43 4f  t is 1000..}..CO
2d30: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
2d40: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 4f 52  LITE_DEFAULT_WOR
2d50: 4b 45 52 5f 54 48 52 45 41 44 53 3d 3c 69 3e 4e  KER_THREADS=<i>N
2d60: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d  </i>} {.  This m
2d70: 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 64 65  acro sets the de
2d80: 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 0a  fault value for.
2d90: 20 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c 49    the [SQLITE_LI
2da0: 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41  MIT_WORKER_THREA
2db0: 44 53 5d 20 70 61 72 61 6d 65 74 65 72 2e 20 20  DS] parameter.  
2dc0: 54 68 65 20 5b 53 51 4c 49 54 45 5f 4c 49 4d 49  The [SQLITE_LIMI
2dd0: 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53  T_WORKER_THREADS
2de0: 5d 0a 20 20 70 61 72 61 6d 65 74 65 72 20 73 65  ].  parameter se
2df0: 74 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e  ts the maximum n
2e00: 75 6d 62 65 72 20 6f 66 20 61 75 78 69 6c 69 61  umber of auxilia
2e10: 72 79 20 74 68 72 65 61 64 73 20 74 68 61 74 20  ry threads that 
2e20: 61 20 73 69 6e 67 6c 65 0a 20 20 5b 70 72 65 70  a single.  [prep
2e30: 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
2e40: 77 69 6c 6c 20 6c 61 75 6e 63 68 20 74 6f 20 61  will launch to a
2e50: 73 73 69 73 74 20 69 74 20 77 69 74 68 20 61 20  ssist it with a 
2e60: 71 75 65 72 79 2e 20 20 49 66 20 6e 6f 74 20 73  query.  If not s
2e70: 70 65 63 69 66 69 65 64 2c 0a 20 20 74 68 65 20  pecified,.  the 
2e80: 64 65 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d 20  default maximum 
2e90: 69 73 20 30 2e 0a 20 20 54 68 65 20 76 61 6c 75  is 0..  The valu
2ea0: 65 20 73 65 74 20 68 65 72 65 20 63 61 6e 6e 6f  e set here canno
2eb0: 74 20 62 65 20 6d 6f 72 65 20 74 68 61 6e 20 5b  t be more than [
2ec0: 53 51 4c 49 54 45 5f 4d 41 58 5f 57 4f 52 4b 45  SQLITE_MAX_WORKE
2ed0: 52 5f 54 48 52 45 41 44 53 5d 2e 0a 7d 0a 0a 43  R_THREADS]..}..C
2ee0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
2ef0: 51 4c 49 54 45 5f 45 58 54 52 41 5f 44 55 52 41  QLITE_EXTRA_DURA
2f00: 42 4c 45 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  BLE} {.  The SQL
2f10: 49 54 45 5f 45 58 54 52 41 5f 44 55 52 41 42 4c  ITE_EXTRA_DURABL
2f20: 45 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  E compile-time o
2f30: 70 74 69 6f 6e 20 74 68 61 74 20 75 73 65 64 20  ption that used 
2f40: 74 6f 20 63 61 75 73 65 20 74 68 65 20 64 65 66  to cause the def
2f50: 61 75 6c 74 0a 20 20 5b 50 52 41 47 4d 41 20 73  ault.  [PRAGMA s
2f60: 79 6e 63 68 72 6f 6e 6f 75 73 5d 20 73 65 74 74  ynchronous] sett
2f70: 69 6e 67 20 74 6f 20 62 65 20 45 58 54 52 41 2c  ing to be EXTRA,
2f80: 20 72 61 74 68 65 72 20 74 68 61 6e 20 46 55 4c   rather than FUL
2f90: 4c 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 0a  L.  This option.
2fa0: 20 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 73    is no longer s
2fb0: 75 70 70 6f 72 74 65 64 2e 20 20 55 73 65 0a 20  upported.  Use. 
2fc0: 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   [SQLITE_DEFAULT
2fd0: 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 7c 53 51 4c  _SYNCHRONOUS|SQL
2fe0: 49 54 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43  ITE_DEFAULT_SYNC
2ff0: 48 52 4f 4e 4f 55 53 3d 33 5d 20 69 6e 73 74 65  HRONOUS=3] inste
3000: 61 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ad..}..COMPILE_O
3010: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 46 54  PTION {SQLITE_FT
3020: 53 33 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54  S3_MAX_EXPR_DEPT
3030: 48 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20  H=<i>N</i>} {.  
3040: 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20  This macro sets 
3050: 74 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74  the maximum dept
3060: 68 20 6f 66 20 74 68 65 20 73 65 61 72 63 68 20  h of the search 
3070: 74 72 65 65 20 74 68 61 74 20 63 6f 72 72 65 73  tree that corres
3080: 70 6f 6e 64 73 20 74 6f 0a 20 20 74 68 65 20 72  ponds to.  the r
3090: 69 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f  ight-hand side o
30a0: 66 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65 72  f the MATCH oper
30b0: 61 74 6f 72 20 69 6e 20 61 6e 20 5b 46 54 53 33  ator in an [FTS3
30c0: 5d 20 6f 72 20 5b 46 54 53 34 5d 20 66 75 6c 6c  ] or [FTS4] full
30d0: 2d 74 65 78 74 0a 20 20 69 6e 64 65 78 2e 20 20  -text.  index.  
30e0: 54 68 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65  The full-text se
30f0: 61 72 63 68 20 75 73 65 73 20 61 20 72 65 63 75  arch uses a recu
3100: 72 73 69 76 65 20 61 6c 67 6f 72 69 74 68 6d 2c  rsive algorithm,
3110: 20 73 6f 20 74 68 65 20 64 65 70 74 68 20 6f 66   so the depth of
3120: 0a 20 20 74 68 65 20 74 72 65 65 20 69 73 20 6c  .  the tree is l
3130: 69 6d 69 74 65 64 20 74 6f 20 70 72 65 76 65 6e  imited to preven
3140: 74 20 75 73 69 6e 67 20 74 6f 6f 20 6d 75 63 68  t using too much
3150: 20 73 74 61 63 6b 20 73 70 61 63 65 2e 20 20 54   stack space.  T
3160: 68 65 20 64 65 66 61 75 6c 74 0a 20 20 6c 69 6d  he default.  lim
3170: 69 74 20 69 73 20 31 32 2e 20 20 54 68 69 73 20  it is 12.  This 
3180: 6c 69 6d 69 74 20 69 73 20 73 75 66 66 69 63 69  limit is suffici
3190: 65 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34 30  ent for up to 40
31a0: 39 35 20 73 65 61 72 63 68 20 74 65 72 6d 73 20  95 search terms 
31b0: 6f 6e 20 74 68 65 0a 20 20 72 69 67 68 74 2d 68  on the.  right-h
31c0: 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65 20  and side of the 
31d0: 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72 20 61  MATCH operator a
31e0: 6e 64 20 69 74 20 68 6f 6c 64 73 20 73 74 61 63  nd it holds stac
31f0: 6b 20 73 70 61 63 65 20 75 73 61 67 65 20 74 6f  k space usage to
3200: 20 0a 20 20 6c 65 73 73 20 74 68 61 6e 20 32 30   .  less than 20
3210: 30 30 20 62 79 74 65 73 2e 0a 20 20 3c 70 3e 0a  00 bytes..  <p>.
3220: 20 20 46 6f 72 20 6f 72 64 69 6e 61 72 79 20 46    For ordinary F
3230: 54 53 33 2f 46 54 53 34 20 71 75 65 72 69 65 73  TS3/FTS4 queries
3240: 2c 20 74 68 65 20 73 65 61 72 63 68 20 74 72 65  , the search tre
3250: 65 20 64 65 70 74 68 20 69 73 20 61 70 70 72 6f  e depth is appro
3260: 78 69 6d 61 74 65 6c 79 0a 20 20 74 68 65 20 62  ximately.  the b
3270: 61 73 65 2d 32 20 6c 6f 67 61 72 69 74 68 6d 20  ase-2 logarithm 
3280: 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  of the number of
3290: 20 74 65 72 6d 73 20 69 6e 20 74 68 65 20 72 69   terms in the ri
32a0: 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66  ght-hand side of
32b0: 20 74 68 65 0a 20 20 4d 41 54 43 48 20 6f 70 65   the.  MATCH ope
32c0: 72 61 74 6f 72 2e 20 20 48 6f 77 65 76 65 72 2c  rator.  However,
32d0: 20 66 6f 72 20 5b 70 68 72 61 73 65 20 71 75 65   for [phrase que
32e0: 72 69 65 73 5d 20 61 6e 64 20 5b 4e 45 41 52 20  ries] and [NEAR 
32f0: 71 75 65 72 69 65 73 5d 20 74 68 65 0a 20 20 73  queries] the.  s
3300: 65 61 72 63 68 20 74 72 65 65 20 64 65 70 74 68  earch tree depth
3310: 20 69 73 20 6c 69 6e 65 61 72 20 69 6e 20 74 68   is linear in th
3320: 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 69 67 68  e number of righ
3330: 74 2d 68 61 6e 64 20 73 69 64 65 20 74 65 72 6d  t-hand side term
3340: 73 2e 0a 20 20 53 6f 20 74 68 65 20 64 65 66 61  s..  So the defa
3350: 75 6c 74 20 64 65 70 74 68 20 6c 69 6d 69 74 20  ult depth limit 
3360: 6f 66 20 31 32 20 69 73 20 73 75 66 66 69 63 69  of 12 is suffici
3370: 65 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34 30  ent for up to 40
3380: 39 35 20 6f 72 64 69 6e 61 72 79 0a 20 20 74 65  95 ordinary.  te
3390: 72 6d 73 20 6f 6e 20 61 20 4d 41 54 43 48 2c 20  rms on a MATCH, 
33a0: 69 74 20 69 73 20 6f 6e 6c 79 20 73 75 66 66 69  it is only suffi
33b0: 63 69 65 6e 74 20 66 6f 72 20 31 31 20 6f 72 20  cient for 11 or 
33c0: 31 32 20 70 68 72 61 73 65 20 6f 72 20 4e 45 41  12 phrase or NEA
33d0: 52 0a 20 20 74 65 72 6d 73 2e 20 20 45 76 65 6e  R.  terms.  Even
33e0: 20 73 6f 2c 20 74 68 65 20 64 65 66 61 75 6c 74   so, the default
33f0: 20 69 73 20 6d 6f 72 65 20 74 68 61 6e 20 65 6e   is more than en
3400: 6f 75 67 68 20 66 6f 72 20 6d 6f 73 74 20 61 70  ough for most ap
3410: 70 6c 69 63 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f  plication..}..CO
3420: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
3430: 4c 49 54 45 5f 4c 49 4b 45 5f 44 4f 45 53 4e 54  LITE_LIKE_DOESNT
3440: 5f 4d 41 54 43 48 5f 42 4c 4f 42 53 7d 20 7b 0a  _MATCH_BLOBS} {.
3450: 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74    This compile-t
3460: 69 6d 65 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  ime option cause
3470: 73 20 74 68 65 20 5b 4c 49 4b 45 5d 20 6f 70 65  s the [LIKE] ope
3480: 72 61 74 6f 72 20 74 6f 20 61 6c 77 61 79 73 20  rator to always 
3490: 72 65 74 75 72 6e 20 0a 20 20 46 61 6c 73 65 20  return .  False 
34a0: 69 66 20 65 69 74 68 65 72 20 6f 70 65 72 61 6e  if either operan
34b0: 64 20 69 73 20 61 20 42 4c 4f 42 2e 20 20 54 68  d is a BLOB.  Th
34c0: 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69  e default behavi
34d0: 6f 72 20 6f 66 20 5b 4c 49 4b 45 5d 20 0a 20 20  or of [LIKE] .  
34e0: 69 73 20 74 68 61 74 20 42 4c 4f 42 20 6f 70 65  is that BLOB ope
34f0: 72 61 6e 64 73 20 61 72 65 20 63 61 73 74 20 74  rands are cast t
3500: 6f 20 54 45 58 54 20 62 65 66 6f 72 65 20 74 68  o TEXT before th
3510: 65 20 63 6f 6d 70 61 72 69 73 6f 6e 20 69 73 20  e comparison is 
3520: 64 6f 6e 65 2e 0a 20 20 3c 70 3e 0a 20 20 54 68  done..  <p>.  Th
3530: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  is compile-time 
3540: 6f 70 74 69 6f 6e 20 6d 61 6b 65 73 20 53 51 4c  option makes SQL
3550: 69 74 65 20 72 75 6e 20 6d 6f 72 65 20 65 66 66  ite run more eff
3560: 69 63 69 65 6e 74 6c 79 20 77 68 65 6e 20 70 72  iciently when pr
3570: 6f 63 65 73 73 69 6e 67 0a 20 20 71 75 65 72 69  ocessing.  queri
3580: 65 73 20 74 68 61 74 20 75 73 65 20 74 68 65 20  es that use the 
3590: 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 2c  [LIKE] operator,
35a0: 20 61 74 20 74 68 65 20 65 78 70 65 6e 73 65 20   at the expense 
35b0: 6f 66 20 62 72 65 61 6b 69 6e 67 20 62 61 63 6b  of breaking back
35c0: 77 61 72 64 73 0a 20 20 63 6f 6d 70 61 74 69 62  wards.  compatib
35d0: 69 6c 69 74 79 2e 20 20 48 6f 77 65 76 65 72 2c  ility.  However,
35e0: 20 74 68 65 20 62 61 63 6b 77 61 72 64 73 20 63   the backwards c
35f0: 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 62 72 65  ompatibility bre
3600: 61 6b 20 6d 61 79 20 62 65 20 6f 6e 6c 79 0a 20  ak may be only. 
3610: 20 61 20 74 65 63 68 6e 69 63 61 6c 69 74 79 2e   a technicality.
3620: 20 20 54 68 65 72 65 20 77 61 73 20 61 20 6c 6f    There was a lo
3630: 6e 67 2d 73 74 61 6e 64 69 6e 67 20 62 75 67 20  ng-standing bug 
3640: 69 6e 20 74 68 65 20 5b 4c 49 4b 45 5d 20 70 72  in the [LIKE] pr
3650: 6f 63 65 73 73 69 6e 67 20 6c 6f 67 69 63 0a 20  ocessing logic. 
3660: 20 28 73 65 65 20 5b 68 74 74 70 73 3a 2f 2f 77   (see [https://w
3670: 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 73 72  ww.sqlite.org/sr
3680: 63 2f 69 6e 66 6f 2f 30 35 66 34 33 62 65 38 66  c/info/05f43be8f
3690: 64 64 61 39 66 5d 29 20 74 68 61 74 20 63 61 75  dda9f]) that cau
36a0: 73 65 64 20 69 74 20 74 6f 0a 20 20 6d 69 73 62  sed it to.  misb
36b0: 65 68 61 76 69 6f 72 20 66 6f 72 20 42 4c 4f 42  ehavior for BLOB
36c0: 20 6f 70 65 72 61 6e 64 73 20 61 6e 64 20 6e 6f   operands and no
36d0: 62 6f 64 79 20 6f 62 73 65 72 76 65 64 20 74 68  body observed th
36e0: 61 74 20 62 75 67 20 69 6e 20 6e 65 61 72 6c 79  at bug in nearly
36f0: 0a 20 20 31 30 20 79 65 61 72 73 20 6f 66 20 61  .  10 years of a
3700: 63 74 69 76 65 20 75 73 65 2e 20 20 53 6f 20 66  ctive use.  So f
3710: 6f 72 20 6d 6f 72 65 20 75 73 65 72 73 2c 20 69  or more users, i
3720: 74 20 69 73 20 70 72 6f 62 61 62 6c 79 20 73 61  t is probably sa
3730: 66 65 20 74 6f 0a 20 20 65 6e 61 62 6c 65 20 74  fe to.  enable t
3740: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
3750: 20 6f 70 74 69 6f 6e 20 61 6e 64 20 74 68 65 72   option and ther
3760: 65 62 79 20 73 61 76 65 20 61 20 6c 69 74 74 6c  eby save a littl
3770: 65 20 43 50 55 20 74 69 6d 65 0a 20 20 6f 6e 20  e CPU time.  on 
3780: 4c 49 4b 45 20 71 75 65 72 69 65 73 2e 0a 20 20  LIKE queries..  
3790: 3c 70 3e 0a 20 20 54 68 69 73 20 63 6f 6d 70 69  <p>.  This compi
37a0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 61  le-time option a
37b0: 66 66 65 63 74 73 20 74 68 65 20 53 51 4c 20 5b  ffects the SQL [
37c0: 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 20 6f  LIKE] operator o
37d0: 6e 6c 79 20 61 6e 64 20 68 61 73 0a 20 20 6e 6f  nly and has.  no
37e0: 20 69 6d 70 61 63 74 20 6f 6e 20 74 68 65 20 5b   impact on the [
37f0: 73 71 6c 69 74 65 33 5f 73 74 72 6c 69 6b 65 28  sqlite3_strlike(
3800: 29 5d 20 43 2d 6c 61 6e 67 75 61 67 65 20 69 6e  )] C-language in
3810: 74 65 72 66 61 63 65 2e 0a 7d 0a 0a 43 4f 4d 50  terface..}..COMP
3820: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
3830: 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45  TE_MAX_MMAP_SIZE
3840: 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54  =<i>N</i>} {.  T
3850: 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 61  his macro sets a
3860: 20 68 61 72 64 20 75 70 70 65 72 20 62 6f 75 6e   hard upper boun
3870: 64 20 6f 6e 20 74 68 65 20 61 6d 6f 75 6e 74 20  d on the amount 
3880: 6f 66 20 61 64 64 72 65 73 73 20 73 70 61 63 65  of address space
3890: 20 74 68 61 74 0a 20 20 63 61 6e 20 62 65 20 75   that.  can be u
38a0: 73 65 64 20 62 79 20 61 6e 79 20 73 69 6e 67 6c  sed by any singl
38b0: 65 20 64 61 74 61 62 61 73 65 20 66 6f 72 20 6d  e database for m
38c0: 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f  emory-mapped I/O
38d0: 2e 0a 20 20 53 65 74 74 69 6e 67 20 74 68 69 73  ..  Setting this
38e0: 20 76 61 6c 75 65 20 74 6f 20 30 20 63 6f 6d 70   value to 0 comp
38f0: 6c 65 74 65 6c 79 20 64 69 73 61 62 6c 65 73 20  letely disables 
3900: 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f  memory-mapped I/
3910: 4f 20 61 6e 64 0a 20 20 63 61 75 73 65 73 20 6c  O and.  causes l
3920: 6f 67 69 63 20 61 73 73 6f 63 69 61 74 65 64 20  ogic associated 
3930: 77 69 74 68 20 6d 65 6d 6f 72 79 2d 6d 61 70 70  with memory-mapp
3940: 65 64 20 49 2f 4f 20 74 6f 20 62 65 20 6f 6d 69  ed I/O to be omi
3950: 74 74 65 64 20 66 72 6f 6d 20 74 68 65 0a 20 20  tted from the.  
3960: 62 75 69 6c 64 2e 20 20 54 68 69 73 20 6f 70 74  build.  This opt
3970: 69 6f 6e 20 64 6f 65 73 20 63 68 61 6e 67 65 20  ion does change 
3980: 74 68 65 20 64 65 66 61 75 6c 74 20 6d 65 6d 6f  the default memo
3990: 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20 61 64  ry-mapped I/O ad
39a0: 64 72 65 73 73 0a 20 20 73 70 61 63 65 20 73 69  dress.  space si
39b0: 7a 65 20 28 73 65 74 20 62 79 20 5b 53 51 4c 49  ze (set by [SQLI
39c0: 54 45 5f 44 45 46 41 55 4c 54 5f 4d 4d 41 50 5f  TE_DEFAULT_MMAP_
39d0: 53 49 5a 45 5d 20 6f 72 0a 20 20 73 71 6c 69 74  SIZE] or.  sqlit
39e0: 65 33 5f 63 6f 6e 66 69 67 28 5b 53 51 4c 49 54  e3_config([SQLIT
39f0: 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49  E_CONFIG_MMAP_SI
3a00: 5a 45 5d 29 20 6f 72 20 74 68 65 0a 20 20 72 75  ZE]) or the.  ru
3a10: 6e 2d 74 69 6d 65 20 6d 65 6d 6f 72 79 2d 6d 61  n-time memory-ma
3a20: 70 70 65 64 20 49 2f 4f 20 61 64 64 72 65 73 73  pped I/O address
3a30: 20 73 70 61 63 65 20 73 69 7a 65 20 28 73 65 74   space size (set
3a40: 20 62 79 0a 20 20 73 71 6c 69 74 65 33 5f 66 69   by.  sqlite3_fi
3a50: 6c 65 5f 63 6f 6e 74 72 6f 6c 28 5b 53 51 4c 49  le_control([SQLI
3a60: 54 45 5f 46 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49  TE_FCNTL_MMAP_SI
3a70: 5a 45 5d 29 20 6f 72 0a 20 20 5b 50 52 41 47 4d  ZE]) or.  [PRAGM
3a80: 41 20 6d 6d 61 70 5f 73 69 7a 65 5d 29 20 61 73  A mmap_size]) as
3a90: 20 6c 6f 6e 67 20 61 73 20 74 68 6f 73 65 20 6f   long as those o
3aa0: 74 68 65 72 20 73 65 74 74 69 6e 67 73 20 61 72  ther settings ar
3ab0: 65 20 6c 65 73 73 20 74 68 61 6e 20 74 68 65 0a  e less than the.
3ac0: 20 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 20    maximum value 
3ad0: 64 65 66 69 6e 65 64 20 68 65 72 65 2e 0a 7d 0a  defined here..}.
3ae0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
3af0: 7b 53 51 4c 49 54 45 5f 4d 41 58 5f 53 43 48 45  {SQLITE_MAX_SCHE
3b00: 4d 41 5f 52 45 54 52 59 3d 3c 69 3e 4e 3c 2f 69  MA_RETRY=<i>N</i
3b10: 3e 7d 20 7b 0a 20 20 57 68 65 6e 65 76 65 72 20  >} {.  Whenever 
3b20: 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
3b30: 65 6d 61 20 63 68 61 6e 67 65 73 2c 20 70 72 65  ema changes, pre
3b40: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73  pared statements
3b50: 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c   are automatical
3b60: 6c 79 0a 20 20 72 65 70 72 65 70 61 72 65 64 20  ly.  reprepared 
3b70: 74 6f 20 61 63 63 6f 6d 6d 6f 64 61 74 65 20 74  to accommodate t
3b80: 68 65 20 6e 65 77 20 73 63 68 65 6d 61 2e 20 20  he new schema.  
3b90: 54 68 65 72 65 20 69 73 20 61 20 72 61 63 65 20  There is a race 
3ba0: 63 6f 6e 64 69 74 69 6f 6e 20 68 65 72 65 0a 20  condition here. 
3bb0: 20 69 6e 20 74 68 61 74 20 69 66 20 6f 6e 65 20   in that if one 
3bc0: 74 68 72 65 61 64 20 69 73 20 63 6f 6e 73 74 61  thread is consta
3bd0: 6e 74 6c 79 20 63 68 61 6e 67 69 6e 67 20 74 68  ntly changing th
3be0: 65 20 73 63 68 65 6d 61 2c 20 61 6e 6f 74 68 65  e schema, anothe
3bf0: 72 20 74 68 72 65 61 64 0a 20 20 6d 69 67 68 74  r thread.  might
3c00: 20 73 70 69 6e 20 6f 6e 20 72 65 70 61 72 73 65   spin on reparse
3c10: 73 20 61 6e 64 20 72 65 70 72 65 70 61 72 61 74  s and repreparat
3c20: 69 6f 6e 73 20 6f 66 20 61 20 70 72 65 70 61 72  ions of a prepar
3c30: 65 64 20 73 74 61 74 65 6d 65 6e 74 20 61 6e 64  ed statement and
3c40: 0a 20 20 6e 65 76 65 72 20 67 65 74 20 61 6e 79  .  never get any
3c50: 20 72 65 61 6c 20 77 6f 72 6b 20 64 6f 6e 65 2e   real work done.
3c60: 20 20 54 68 69 73 20 70 61 72 61 6d 65 74 65 72    This parameter
3c70: 20 70 72 65 76 65 6e 74 73 20 61 6e 20 69 6e 66   prevents an inf
3c80: 69 6e 69 74 65 20 6c 6f 6f 70 0a 20 20 62 79 20  inite loop.  by 
3c90: 66 6f 72 63 69 6e 67 20 74 68 65 20 73 70 69 6e  forcing the spin
3ca0: 6e 69 6e 67 20 74 68 72 65 61 64 20 74 6f 20 67  ning thread to g
3cb0: 69 76 65 20 75 70 20 61 66 74 65 72 20 61 20 66  ive up after a f
3cc0: 69 78 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 61  ixed number of a
3cd0: 74 74 65 6d 70 74 73 0a 20 20 61 74 20 72 65 63  ttempts.  at rec
3ce0: 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20 70 72 65  ompiling the pre
3cf0: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2e  pared statement.
3d00: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 73 65    The default se
3d10: 74 74 69 6e 67 20 69 73 20 35 30 20 77 68 69 63  tting is 50 whic
3d20: 68 20 69 73 0a 20 20 6d 6f 72 65 20 74 68 61 6e  h is.  more than
3d30: 20 61 64 65 71 75 61 74 65 20 66 6f 72 20 6d 6f   adequate for mo
3d40: 73 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e  st applications.
3d50: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3d60: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 41 58 5f 57  ON {SQLITE_MAX_W
3d70: 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 3d 3c 69  ORKER_THREADS=<i
3d80: 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 53 65 74 20  >N</i>} {.  Set 
3d90: 61 6e 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f  an upper bound o
3da0: 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c  n the [sqlite3_l
3db0: 69 6d 69 74 5d 28 64 62 2c 5b 53 51 4c 49 54 45  imit](db,[SQLITE
3dc0: 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48  _LIMIT_WORKER_TH
3dd0: 52 45 41 44 53 5d 2c 4e 29 0a 20 20 73 65 74 74  READS],N).  sett
3de0: 69 6e 67 20 74 68 61 74 20 64 65 74 65 72 6d 69  ing that determi
3df0: 6e 65 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  nes the maximum 
3e00: 6e 75 6d 62 65 72 20 6f 66 20 61 75 78 69 6c 69  number of auxili
3e10: 61 72 79 20 74 68 72 65 61 64 73 20 74 68 61 74  ary threads that
3e20: 20 61 20 73 69 6e 67 6c 65 0a 20 20 5b 70 72 65   a single.  [pre
3e30: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
3e40: 20 77 69 6c 6c 20 75 73 65 20 74 6f 20 61 69 64   will use to aid
3e50: 20 77 69 74 68 20 43 50 55 2d 69 6e 74 65 6e 73   with CPU-intens
3e60: 69 76 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 73  ive computations
3e70: 0a 20 20 28 6d 6f 73 74 6c 79 20 73 6f 72 74 69  .  (mostly sorti
3e80: 6e 67 29 2e 20 20 53 65 65 20 61 6c 73 6f 20 74  ng).  See also t
3e90: 68 65 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55  he [SQLITE_DEFAU
3ea0: 4c 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  LT_WORKER_THREAD
3eb0: 53 5d 20 6f 70 74 69 6f 6e 73 2e 0a 7d 0a 0a 43  S] options..}..C
3ec0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
3ed0: 51 4c 49 54 45 5f 4d 49 4e 49 4d 55 4d 5f 46 49  QLITE_MINIMUM_FI
3ee0: 4c 45 5f 44 45 53 43 52 49 50 54 4f 52 3d 3c 69  LE_DESCRIPTOR=<i
3ef0: 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20  >N</i>} {.  The 
3f00: 75 6e 69 78 20 5b 56 46 53 5d 20 77 69 6c 6c 20  unix [VFS] will 
3f10: 6e 65 76 65 72 20 75 73 65 20 61 20 66 69 6c 65  never use a file
3f20: 20 64 65 73 63 72 69 70 74 6f 72 20 6c 65 73 73   descriptor less
3f30: 20 74 68 61 6e 20 3c 69 3e 4e 3c 2f 69 3e 2e 20   than <i>N</i>. 
3f40: 20 54 68 65 0a 20 20 64 65 66 61 75 6c 74 20 76   The.  default v
3f50: 61 6c 75 65 20 6f 66 20 3c 69 3e 4e 3c 2f 69 3e  alue of <i>N</i>
3f60: 20 69 73 20 33 2e 0a 20 20 3c 70 3e 0a 20 20 41   is 3..  <p>.  A
3f70: 76 6f 69 64 69 6e 67 20 74 68 65 20 75 73 65 20  voiding the use 
3f80: 6f 66 20 6c 6f 77 2d 6e 75 6d 62 65 72 65 64 20  of low-numbered 
3f90: 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 73  file descriptors
3fa0: 20 69 73 20 61 20 64 65 66 65 6e 73 65 20 61 67   is a defense ag
3fb0: 61 69 6e 73 74 0a 20 20 61 63 63 69 64 65 6e 74  ainst.  accident
3fc0: 61 6c 20 64 61 74 61 62 61 73 65 20 63 6f 72 72  al database corr
3fd0: 75 70 74 69 6f 6e 2e 20 20 49 66 20 61 20 64 61  uption.  If a da
3fe0: 74 61 62 61 73 65 20 66 69 6c 65 20 77 61 73 20  tabase file was 
3ff0: 6f 70 65 6e 65 64 20 75 73 69 6e 67 0a 20 20 66  opened using.  f
4000: 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20 32  ile descriptor 2
4010: 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 61  , for example, a
4020: 6e 64 20 74 68 65 6e 20 61 6e 20 61 73 73 65 72  nd then an asser
4030: 74 28 29 20 66 61 69 6c 65 64 20 61 6e 64 20 69  t() failed and i
4040: 6e 76 6f 6b 65 64 0a 20 20 77 72 69 74 65 28 32  nvoked.  write(2
4050: 2c 2e 2e 2e 29 2c 20 74 68 61 74 20 77 6f 75 6c  ,...), that woul
4060: 64 20 6c 69 6b 65 6c 79 20 63 61 75 73 65 20 64  d likely cause d
4070: 61 74 61 62 61 73 65 20 63 6f 72 72 75 70 74 69  atabase corrupti
4080: 6f 6e 20 62 79 20 6f 76 65 72 77 72 69 74 69 6e  on by overwritin
4090: 67 0a 20 20 70 61 72 74 20 6f 66 20 74 68 65 20  g.  part of the 
40a0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 77 69  database file wi
40b0: 74 68 20 74 68 65 20 61 73 73 65 72 74 69 6f 6e  th the assertion
40c0: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 20   error message. 
40d0: 20 55 73 69 6e 67 20 6f 6e 6c 79 0a 20 20 68 69   Using only.  hi
40e0: 67 68 65 72 2d 76 61 6c 75 65 64 20 66 69 6c 65  gher-valued file
40f0: 20 64 65 73 63 72 69 70 74 6f 72 73 20 61 76 6f   descriptors avo
4100: 69 64 73 20 74 68 69 73 20 70 6f 74 65 6e 74 69  ids this potenti
4110: 61 6c 20 70 72 6f 62 6c 65 6d 2e 20 20 54 68 65  al problem.  The
4120: 20 0a 20 20 70 72 6f 74 65 63 74 69 6f 6e 20 61   .  protection a
4130: 67 61 69 6e 73 74 0a 20 20 75 73 69 6e 67 20 6c  gainst.  using l
4140: 6f 77 2d 6e 75 6d 62 65 72 65 64 20 66 69 6c 65  ow-numbered file
4150: 20 64 65 73 63 72 69 70 74 6f 72 73 20 63 61 6e   descriptors can
4160: 20 62 65 20 64 69 73 61 62 6c 65 64 20 62 79 20   be disabled by 
4170: 73 65 74 74 69 6e 67 20 74 68 69 73 0a 20 20 63  setting this.  c
4180: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
4190: 6f 6e 20 74 6f 20 30 2e 0a 7d 0a 0a 43 4f 4d 50  on to 0..}..COMP
41a0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
41b0: 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45  TE_POWERSAFE_OVE
41c0: 52 57 52 49 54 45 3d 3c 69 3e 26 6c 74 3b 30 20  RWRITE=<i>&lt;0 
41d0: 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  or 1&gt;</i>} {.
41e0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 68    This option ch
41f0: 61 6e 67 65 73 20 74 68 65 20 64 65 66 61 75 6c  anges the defaul
4200: 74 20 61 73 73 75 6d 70 74 69 6f 6e 20 61 62 6f  t assumption abo
4210: 75 74 20 5b 70 6f 77 65 72 73 61 66 65 20 6f 76  ut [powersafe ov
4220: 65 72 77 72 69 74 65 5d 0a 20 20 66 6f 72 20 74  erwrite].  for t
4230: 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 69  he underlying fi
4240: 6c 65 73 79 73 74 65 6d 73 20 66 6f 72 20 74 68  lesystems for th
4250: 65 20 75 6e 69 78 20 61 6e 64 20 77 69 6e 64 6f  e unix and windo
4260: 77 73 20 5b 56 46 53 65 73 5d 2e 0a 20 20 53 65  ws [VFSes]..  Se
4270: 74 74 69 6e 67 20 53 51 4c 49 54 45 5f 50 4f 57  tting SQLITE_POW
4280: 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45  ERSAFE_OVERWRITE
4290: 20 74 6f 20 31 20 63 61 75 73 65 73 20 53 51 4c   to 1 causes SQL
42a0: 69 74 65 20 74 6f 20 61 73 73 75 6d 65 20 74 68  ite to assume th
42b0: 61 74 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e  at.  application
42c0: 2d 6c 65 76 65 6c 20 77 72 69 74 65 73 20 63 61  -level writes ca
42d0: 6e 6e 6f 74 20 63 68 61 6e 67 65 73 20 62 79 74  nnot changes byt
42e0: 65 73 20 6f 75 74 73 69 64 65 20 74 68 65 20 72  es outside the r
42f0: 61 6e 67 65 20 6f 66 0a 20 20 62 79 74 65 73 20  ange of.  bytes 
4300: 77 72 69 74 74 65 6e 20 65 76 65 6e 20 69 66 20  written even if 
4310: 74 68 65 20 77 72 69 74 65 20 6f 63 63 75 72 73  the write occurs
4320: 20 6a 75 73 74 20 62 65 66 6f 72 65 20 61 20 70   just before a p
4330: 6f 77 65 72 20 6c 6f 73 73 2e 0a 20 20 57 69 74  ower loss..  Wit
4340: 68 20 53 51 4c 49 54 45 5f 50 4f 57 45 52 53 41  h SQLITE_POWERSA
4350: 46 45 5f 4f 56 45 52 57 52 49 54 45 20 73 65 74  FE_OVERWRITE set
4360: 20 74 6f 20 30 2c 20 53 51 4c 69 74 65 20 61 73   to 0, SQLite as
4370: 73 75 6d 65 73 20 74 68 61 74 20 6f 74 68 65 72  sumes that other
4380: 0a 20 20 62 79 74 65 73 20 69 6e 20 74 68 65 20  .  bytes in the 
4390: 73 61 6d 65 20 73 65 63 74 6f 72 20 77 69 74 68  same sector with
43a0: 20 61 20 77 72 69 74 74 65 6e 20 62 79 74 65 20   a written byte 
43b0: 6d 69 67 68 74 20 62 65 20 63 68 61 6e 67 65 64  might be changed
43c0: 20 6f 72 20 0a 20 20 64 61 6d 61 67 65 64 20 62   or .  damaged b
43d0: 79 20 61 20 70 6f 77 65 72 20 6c 6f 73 73 2e 0a  y a power loss..
43e0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
43f0: 4e 20 7b 53 51 4c 49 54 45 5f 52 45 56 45 52 53  N {SQLITE_REVERS
4400: 45 5f 55 4e 4f 52 44 45 52 45 44 5f 53 45 4c 45  E_UNORDERED_SELE
4410: 43 54 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  CTS} {.  This op
4420: 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20  tion causes the 
4430: 5b 50 52 41 47 4d 41 20 72 65 76 65 72 73 65 5f  [PRAGMA reverse_
4440: 75 6e 6f 72 64 65 72 65 64 5f 73 65 6c 65 63 74  unordered_select
4450: 73 5d 20 73 65 74 74 69 6e 67 20 74 6f 20 62 65  s] setting to be
4460: 0a 20 20 65 6e 61 62 6c 65 64 20 62 79 20 64 65  .  enabled by de
4470: 66 61 75 6c 74 2e 20 20 57 68 65 6e 20 65 6e 61  fault.  When ena
4480: 62 6c 65 64 2c 20 5b 53 45 4c 45 43 54 5d 20 73  bled, [SELECT] s
4490: 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 6c  tatements that l
44a0: 61 63 6b 20 61 6e 0a 20 20 4f 52 44 45 52 20 42  ack an.  ORDER B
44b0: 59 20 63 6c 61 75 73 65 20 77 69 6c 6c 20 72 75  Y clause will ru
44c0: 6e 20 69 6e 20 72 65 76 65 72 73 65 20 6f 72 64  n in reverse ord
44d0: 65 72 2e 3c 70 3e 0a 20 20 54 68 69 73 20 6f 70  er.<p>.  This op
44e0: 74 69 6f 6e 20 69 73 20 75 73 65 66 75 6c 20 66  tion is useful f
44f0: 6f 72 20 64 65 74 65 63 74 69 6e 67 20 77 68 65  or detecting whe
4500: 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 28  n applications (
4510: 69 6e 63 6f 72 72 65 63 74 6c 79 29 0a 20 20 61  incorrectly).  a
4520: 73 73 75 6d 65 20 74 68 61 74 20 74 68 65 20 6f  ssume that the o
4530: 72 64 65 72 20 6f 66 20 72 6f 77 73 20 69 6e 20  rder of rows in 
4540: 61 20 53 45 4c 45 43 54 20 77 69 74 68 6f 75 74  a SELECT without
4550: 20 61 6e 20 4f 52 44 45 52 20 42 59 20 63 6c 61   an ORDER BY cla
4560: 75 73 65 0a 20 20 77 69 6c 6c 20 61 6c 77 61 79  use.  will alway
4570: 73 20 62 65 20 74 68 65 20 73 61 6d 65 2e 0a 7d  s be the same..}
4580: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
4590: 20 7b 53 51 4c 49 54 45 5f 53 4f 52 54 45 52 5f   {SQLITE_SORTER_
45a0: 50 4d 41 53 5a 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20  PMASZ=<i>N</i>} 
45b0: 7b 0a 20 20 49 66 20 6d 75 6c 74 69 2d 74 68 72  {.  If multi-thr
45c0: 65 61 64 65 64 20 70 72 6f 63 65 73 73 69 6e 67  eaded processing
45d0: 20 69 73 20 65 6e 61 62 6c 65 64 20 76 69 61 20   is enabled via 
45e0: 74 68 65 0a 20 20 5b 50 52 41 47 4d 41 20 74 68  the.  [PRAGMA th
45f0: 72 65 61 64 73 5d 20 73 65 74 74 69 6e 67 2c 20  reads] setting, 
4600: 74 68 65 6e 20 73 6f 72 74 20 6f 70 65 72 61 74  then sort operat
4610: 69 6f 6e 73 20 77 69 6c 6c 0a 20 20 61 74 74 65  ions will.  atte
4620: 6d 70 74 20 74 6f 20 73 74 61 72 74 20 68 65 6c  mpt to start hel
4630: 70 65 72 20 74 68 72 65 61 64 73 20 77 68 65 6e  per threads when
4640: 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 63   the amount of c
4650: 6f 6e 74 65 6e 74 0a 20 20 74 6f 20 62 65 20 73  ontent.  to be s
4660: 6f 72 74 65 64 20 65 78 63 65 65 64 73 20 74 68  orted exceeds th
4670: 65 20 6d 69 6e 69 6d 75 6d 20 6f 66 20 74 68 65  e minimum of the
4680: 20 5b 63 61 63 68 65 5f 73 69 7a 65 5d 20 61 6e   [cache_size] an
4690: 64 20 50 4d 41 20 53 69 7a 65 0a 20 20 64 65 74  d PMA Size.  det
46a0: 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65 20 5b  ermined by the [
46b0: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d  SQLITE_CONFIG_PM
46c0: 41 53 5a 5d 20 73 74 61 72 74 2d 74 69 6d 65 20  ASZ] start-time 
46d0: 6f 70 74 69 6f 6e 2e 0a 20 20 54 68 69 73 20 63  option..  This c
46e0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
46f0: 6f 6e 20 73 65 74 73 20 74 68 65 20 64 65 66 61  on sets the defa
4700: 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 20 74 68  ult value for th
4710: 65 0a 20 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  e.  [SQLITE_CONF
4720: 49 47 5f 50 4d 41 53 5a 5d 20 73 74 61 72 74 2d  IG_PMASZ] start-
4730: 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a 20 20 54  time option..  T
4740: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
4750: 20 69 73 20 32 35 30 2e 0a 7d 0a 0a 43 4f 4d 50   is 250..}..COMP
4760: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
4770: 54 45 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c  TE_STMTJRNL_SPIL
4780: 4c 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20  L=<i>N</i>} {.  
4790: 54 68 65 20 53 51 4c 49 54 45 5f 53 54 4d 54 4a  The SQLITE_STMTJ
47a0: 52 4e 4c 5f 53 50 49 4c 4c 20 63 6f 6d 70 69 6c  RNL_SPILL compil
47b0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 64 65  e-time option de
47c0: 74 65 72 6d 69 6e 65 73 20 74 68 65 0a 20 20 64  termines the.  d
47d0: 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 6f  efault setting o
47e0: 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f  f the [SQLITE_CO
47f0: 4e 46 49 47 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50  NFIG_STMTJRNL_SP
4800: 49 4c 4c 5d 20 73 74 61 72 74 2d 74 69 6d 65 0a  ILL] start-time.
4810: 20 20 73 65 74 74 69 6e 67 2e 20 20 54 68 61 74    setting.  That
4820: 20 73 65 74 74 69 6e 67 20 64 65 74 65 72 6d 69   setting determi
4830: 6e 65 73 20 74 68 65 20 73 69 7a 65 20 74 68 72  nes the size thr
4840: 65 73 68 6f 6c 64 20 61 62 6f 76 65 20 77 68 69  eshold above whi
4850: 63 68 0a 20 20 5b 73 74 61 74 65 6d 65 6e 74 20  ch.  [statement 
4860: 6a 6f 75 72 6e 61 6c 73 5d 20 61 72 65 20 6d 6f  journals] are mo
4870: 76 65 64 20 66 72 6f 6d 20 6d 65 6d 6f 72 79 20  ved from memory 
4880: 74 6f 20 64 69 73 6b 2e 0a 7d 0a 0a 43 4f 4d 50  to disk..}..COMP
4890: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
48a0: 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 7d  TE_WIN32_MALLOC}
48b0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
48c0: 20 65 6e 61 62 6c 65 73 20 74 68 65 20 75 73 65   enables the use
48d0: 20 6f 66 20 74 68 65 20 57 69 6e 64 6f 77 73 20   of the Windows 
48e0: 48 65 61 70 20 41 50 49 20 66 75 6e 63 74 69 6f  Heap API functio
48f0: 6e 73 20 66 6f 72 20 6d 65 6d 6f 72 79 0a 20 20  ns for memory.  
4900: 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 6e 73 74 65  allocation inste
4910: 61 64 20 6f 66 20 74 68 65 20 73 74 61 6e 64 61  ad of the standa
4920: 72 64 20 6c 69 62 72 61 72 79 20 6d 61 6c 6c 6f  rd library mallo
4930: 63 28 29 20 61 6e 64 20 66 72 65 65 28 29 20 72  c() and free() r
4940: 6f 75 74 69 6e 65 73 2e 0a 7d 0a 0a 43 4f 4d 50  outines..}..COMP
4950: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 59 59 53 54  ILE_OPTION {YYST
4960: 41 43 4b 44 45 50 54 48 3d 3c 69 3e 26 6c 74 3b  ACKDEPTH=<i>&lt;
4970: 6d 61 78 5f 64 65 70 74 68 26 67 74 3b 3c 2f 69  max_depth&gt;</i
4980: 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  >} {.  This macr
4990: 6f 20 73 65 74 73 20 74 68 65 20 6d 61 78 69 6d  o sets the maxim
49a0: 75 6d 20 64 65 70 74 68 20 6f 66 20 74 68 65 20  um depth of the 
49b0: 4c 41 4c 52 28 31 29 20 73 74 61 63 6b 20 75 73  LALR(1) stack us
49c0: 65 64 20 62 79 0a 20 20 74 68 65 20 53 51 4c 20  ed by.  the SQL 
49d0: 70 61 72 73 65 72 20 77 69 74 68 69 6e 20 53 51  parser within SQ
49e0: 4c 69 74 65 2e 20 20 54 68 65 20 64 65 66 61 75  Lite.  The defau
49f0: 6c 74 20 76 61 6c 75 65 20 69 73 20 31 30 30 2e  lt value is 100.
4a00: 20 20 41 20 74 79 70 69 63 61 6c 0a 20 20 61 70    A typical.  ap
4a10: 70 6c 69 63 61 74 69 6f 6e 20 77 69 6c 6c 20 75  plication will u
4a20: 73 65 20 6c 65 73 73 20 74 68 61 6e 20 61 62 6f  se less than abo
4a30: 75 74 20 32 30 20 6c 65 76 65 6c 73 20 6f 66 20  ut 20 levels of 
4a40: 74 68 65 20 73 74 61 63 6b 2e 0a 20 20 44 65 76  the stack..  Dev
4a50: 65 6c 6f 70 65 72 73 20 77 68 6f 73 65 20 61 70  elopers whose ap
4a60: 70 6c 69 63 61 74 69 6f 6e 73 20 63 6f 6e 74 61  plications conta
4a70: 69 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  in SQL statement
4a80: 73 20 74 68 61 74 20 0a 20 20 6e 65 65 64 20 6d  s that .  need m
4a90: 6f 72 65 20 74 68 61 6e 20 31 30 30 20 4c 41 4c  ore than 100 LAL
4aa0: 52 28 31 29 20 73 74 61 63 6b 20 65 6e 74 72 69  R(1) stack entri
4ab0: 65 73 20 73 68 6f 75 6c 64 20 73 65 72 69 6f 75  es should seriou
4ac0: 73 6c 79 0a 20 20 63 6f 6e 73 69 64 65 72 20 72  sly.  consider r
4ad0: 65 66 61 63 74 6f 72 69 6e 67 20 74 68 65 69 72  efactoring their
4ae0: 20 53 51 4c 20 61 73 20 69 74 20 69 73 20 6c 69   SQL as it is li
4af0: 6b 65 6c 79 20 74 6f 20 62 65 20 77 65 6c 6c 20  kely to be well 
4b00: 62 65 79 6f 6e 64 0a 20 20 74 68 65 20 61 62 69  beyond.  the abi
4b10: 6c 69 74 79 20 6f 66 20 61 6e 79 20 68 75 6d 61  lity of any huma
4b20: 6e 20 74 6f 20 63 6f 6d 70 72 65 68 65 6e 64 2e  n to comprehend.
4b30: 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 68 32 3e 31  .}.</tcl>..<h2>1
4b40: 2e 33 20 4f 70 74 69 6f 6e 73 20 54 6f 20 53 65  .3 Options To Se
4b50: 74 20 53 69 7a 65 20 4c 69 6d 69 74 73 3c 2f 68  t Size Limits</h
4b60: 32 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72 65  2>..<p>There are
4b70: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
4b80: 74 69 6f 6e 73 20 74 68 61 74 20 77 69 6c 6c 20  tions that will 
4b90: 73 65 74 20 75 70 70 65 72 20 62 6f 75 6e 64 73  set upper bounds
4ba0: 0a 6f 6e 20 74 68 65 20 73 69 7a 65 73 20 6f 66  .on the sizes of
4bb0: 20 76 61 72 69 6f 75 73 20 73 74 72 75 63 74 75   various structu
4bc0: 72 65 73 20 69 6e 20 53 51 4c 69 74 65 2e 20 20  res in SQLite.  
4bd0: 54 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  The compile-time
4be0: 0a 6f 70 74 69 6f 6e 73 20 6e 6f 72 6d 61 6c 6c  .options normall
4bf0: 79 20 73 65 74 20 61 20 68 61 72 64 20 75 70 70  y set a hard upp
4c00: 65 72 20 62 6f 75 6e 64 20 74 68 61 74 20 63 61  er bound that ca
4c10: 6e 20 62 65 20 63 68 61 6e 67 65 64 0a 61 74 20  n be changed.at 
4c20: 72 75 6e 2d 74 69 6d 65 20 6f 6e 20 69 6e 64 69  run-time on indi
4c30: 76 69 64 75 61 6c 20 5b 64 61 74 61 62 61 73 65  vidual [database
4c40: 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 75 73   connections] us
4c50: 69 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74 65 33  ing the.[sqlite3
4c60: 5f 6c 69 6d 69 74 28 29 5d 20 69 6e 74 65 72 66  _limit()] interf
4c70: 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ace.</p>..<p>The
4c80: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
4c90: 74 69 6f 6e 73 20 66 6f 72 20 73 65 74 74 69 6e  tions for settin
4ca0: 67 20 75 70 70 65 72 20 62 6f 75 6e 64 73 20 61  g upper bounds a
4cb0: 72 65 0a 5b 6c 69 6d 69 74 73 20 7c 20 64 6f 63  re.[limits | doc
4cc0: 75 6d 65 6e 74 65 64 20 73 65 70 61 72 61 74 65  umented separate
4cd0: 6c 79 5d 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77  ly].  The follow
4ce0: 69 6e 67 20 69 73 20 61 20 6c 69 73 74 20 6f 66  ing is a list of
4cf0: 0a 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 73  .the available s
4d00: 65 74 74 69 6e 67 73 3a 3c 2f 70 3e 0a 0a 3c 75  ettings:</p>..<u
4d10: 6c 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  l>.<li> [SQLITE_
4d20: 4d 41 58 5f 41 54 54 41 43 48 45 44 5d 20 20 3c  MAX_ATTACHED]  <
4d30: 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  /li>.<li> [SQLIT
4d40: 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 20 20 3c  E_MAX_COLUMN]  <
4d50: 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  /li>.<li> [SQLIT
4d60: 45 5f 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f 53  E_MAX_COMPOUND_S
4d70: 45 4c 45 43 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  ELECT]  </li>.<l
4d80: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 45  i> [SQLITE_MAX_E
4d90: 58 50 52 5f 44 45 50 54 48 5d 20 20 3c 2f 6c 69  XPR_DEPTH]  </li
4da0: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
4db0: 41 58 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 5d  AX_FUNCTION_ARG]
4dc0: 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51    </li>.<li> [SQ
4dd0: 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d  LITE_MAX_LENGTH]
4de0: 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51    </li>.<li> [SQ
4df0: 4c 49 54 45 5f 4d 41 58 5f 4c 49 4b 45 5f 50 41  LITE_MAX_LIKE_PA
4e00: 54 54 45 52 4e 5f 4c 45 4e 47 54 48 5d 20 20 3c  TTERN_LENGTH]  <
4e10: 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  /li>.<li> [SQLIT
4e20: 45 5f 4d 41 58 5f 50 41 47 45 5f 43 4f 55 4e 54  E_MAX_PAGE_COUNT
4e30: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
4e40: 51 4c 49 54 45 5f 4d 41 58 5f 53 51 4c 5f 4c 45  QLITE_MAX_SQL_LE
4e50: 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69  NGTH]  </li>.<li
4e60: 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 56 41  > [SQLITE_MAX_VA
4e70: 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 5d 20 20  RIABLE_NUMBER]  
4e80: 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 61 20  </li>.</ul>..<a 
4e90: 6e 61 6d 65 3d 22 63 6f 6e 74 72 6f 6c 66 65 61  name="controlfea
4ea0: 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e  tures"></a>.<h2>
4eb0: 31 2e 34 20 4f 70 74 69 6f 6e 73 20 54 6f 20 43  1.4 Options To C
4ec0: 6f 6e 74 72 6f 6c 20 4f 70 65 72 61 74 69 6e 67  ontrol Operating
4ed0: 20 43 68 61 72 61 63 74 65 72 69 73 74 69 63 73   Characteristics
4ee0: 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d  </h2>..<tcl>.COM
4ef0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
4f00: 49 54 45 5f 34 5f 42 59 54 45 5f 41 4c 49 47 4e  ITE_4_BYTE_ALIGN
4f10: 45 44 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 4f  ED_MALLOC} {.  O
4f20: 6e 20 6d 6f 73 74 20 73 79 73 74 65 6d 73 2c 20  n most systems, 
4f30: 74 68 65 20 6d 61 6c 6c 6f 63 28 29 20 73 79 73  the malloc() sys
4f40: 74 65 6d 20 63 61 6c 6c 20 72 65 74 75 72 6e 73  tem call returns
4f50: 20 61 20 62 75 66 66 65 72 20 74 68 61 74 20 69   a buffer that i
4f60: 73 0a 20 20 61 6c 69 67 6e 65 64 20 74 6f 20 61  s.  aligned to a
4f70: 6e 20 38 2d 62 79 74 65 20 62 6f 75 6e 64 61 72  n 8-byte boundar
4f80: 79 2e 20 20 42 75 74 20 6f 6e 20 73 6f 6d 65 20  y.  But on some 
4f90: 73 79 73 74 65 6d 73 20 28 65 78 3a 20 77 69 6e  systems (ex: win
4fa0: 64 6f 77 73 29 20 6d 61 6c 6c 6f 63 28 29 0a 20  dows) malloc(). 
4fb0: 20 72 65 74 75 72 6e 73 20 34 2d 62 79 74 65 20   returns 4-byte 
4fc0: 61 6c 69 67 6e 65 64 20 70 6f 69 6e 74 65 72 2e  aligned pointer.
4fd0: 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74    This compile-t
4fe0: 69 6d 65 20 6f 70 74 69 6f 6e 20 6d 75 73 74 20  ime option must 
4ff0: 62 65 20 75 73 65 64 0a 20 20 6f 6e 20 73 79 73  be used.  on sys
5000: 74 65 6d 73 20 74 68 61 74 20 72 65 74 75 72 6e  tems that return
5010: 20 34 2d 62 79 74 65 20 61 6c 69 67 6e 65 64 20   4-byte aligned 
5020: 70 6f 69 6e 74 65 72 73 20 66 72 6f 6d 20 6d 61  pointers from ma
5030: 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49  lloc()..}..COMPI
5040: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
5050: 45 5f 43 41 53 45 5f 53 45 4e 53 49 54 49 56 45  E_CASE_SENSITIVE
5060: 5f 4c 49 4b 45 7d 20 7b 0a 20 20 49 66 20 74 68  _LIKE} {.  If th
5070: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65  is option is pre
5080: 73 65 6e 74 2c 20 74 68 65 6e 20 74 68 65 20 62  sent, then the b
5090: 75 69 6c 74 2d 69 6e 20 5b 4c 49 4b 45 5d 20 6f  uilt-in [LIKE] o
50a0: 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 62 65 0a  perator will be.
50b0: 20 20 63 61 73 65 20 73 65 6e 73 69 74 69 76 65    case sensitive
50c0: 2e 20 20 54 68 69 73 20 73 61 6d 65 20 65 66 66  .  This same eff
50d0: 65 63 74 20 63 61 6e 20 62 65 20 61 63 68 69 65  ect can be achie
50e0: 76 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 20  ved at run-time 
50f0: 75 73 69 6e 67 0a 20 20 74 68 65 20 5b 63 61 73  using.  the [cas
5100: 65 5f 73 65 6e 73 69 74 69 76 65 5f 6c 69 6b 65  e_sensitive_like
5110: 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d   pragma]..}..COM
5120: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
5130: 49 54 45 5f 44 49 52 45 43 54 5f 4f 56 45 52 46  ITE_DIRECT_OVERF
5140: 4c 4f 57 5f 52 45 41 44 7d 20 7b 0a 20 20 57 68  LOW_READ} {.  Wh
5150: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
5160: 73 20 70 72 65 73 65 6e 74 2c 20 63 6f 6e 74 65  s present, conte
5170: 6e 74 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0a  nt contained in.
5180: 20 20 5b 6f 76 65 72 66 6c 6f 77 20 70 61 67 65    [overflow page
5190: 73 5d 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  s] of the databa
51a0: 73 65 20 66 69 6c 65 20 69 73 20 72 65 61 64 20  se file is read 
51b0: 64 69 72 65 63 74 6c 79 20 66 72 6f 6d 20 64 69  directly from di
51c0: 73 6b 2c 0a 20 20 62 79 70 61 73 73 69 6e 67 20  sk,.  bypassing 
51d0: 74 68 65 20 5b 70 61 67 65 20 63 61 63 68 65 5d  the [page cache]
51e0: 2c 20 64 75 72 69 6e 67 20 72 65 61 64 20 74 72  , during read tr
51f0: 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20 49 6e 20  ansactions.  In 
5200: 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a 20 20 74  applications.  t
5210: 68 61 74 20 64 6f 20 61 20 6c 6f 74 20 6f 66 20  hat do a lot of 
5220: 72 65 61 64 73 20 6f 66 20 6c 61 72 67 65 20 42  reads of large B
5230: 4c 4f 42 73 2c 20 74 68 69 73 20 6f 70 74 69 6f  LOBs, this optio
5240: 6e 20 6d 69 67 68 74 20 69 6d 70 72 6f 76 65 20  n might improve 
5250: 72 65 61 64 0a 20 20 70 65 72 66 6f 72 6d 61 6e  read.  performan
5260: 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ce..}..COMPILE_O
5270: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 48 41  PTION {SQLITE_HA
5280: 56 45 5f 49 53 4e 41 4e 7d 20 7b 0a 20 20 49 66  VE_ISNAN} {.  If
5290: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
52a0: 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 53 51  present, then SQ
52b0: 4c 69 74 65 20 77 69 6c 6c 20 75 73 65 20 74 68  Lite will use th
52c0: 65 20 69 73 6e 61 6e 28 29 20 66 75 6e 63 74 69  e isnan() functi
52d0: 6f 6e 20 66 72 6f 6d 0a 20 20 74 68 65 20 73 79  on from.  the sy
52e0: 73 74 65 6d 20 6d 61 74 68 20 6c 69 62 72 61 72  stem math librar
52f0: 79 2e 20 20 54 68 69 73 20 69 73 20 61 6e 20 61  y.  This is an a
5300: 6c 69 61 73 20 66 6f 72 20 74 68 65 20 5b 48 41  lias for the [HA
5310: 56 45 5f 49 53 4e 41 4e 5d 20 63 6f 6e 66 69 67  VE_ISNAN] config
5320: 75 72 61 74 69 6f 6e 0a 20 20 6f 70 74 69 6f 6e  uration.  option
5330: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
5340: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 53 5f 4f  ION {SQLITE_OS_O
5350: 54 48 45 52 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72  THER=<i>&lt;0 or
5360: 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   1&gt;</i>} {.  
5370: 54 68 65 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  The option cause
5380: 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74  s SQLite to omit
5390: 20 69 74 73 20 62 75 69 6c 74 2d 69 6e 20 6f 70   its built-in op
53a0: 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 69  erating system i
53b0: 6e 74 65 72 66 61 63 65 73 0a 20 20 66 6f 72 20  nterfaces.  for 
53c0: 55 6e 69 78 2c 20 57 69 6e 64 6f 77 73 2c 20 61  Unix, Windows, a
53d0: 6e 64 20 4f 53 2f 32 2e 20 20 54 68 65 20 72 65  nd OS/2.  The re
53e0: 73 75 6c 74 69 6e 67 20 6c 69 62 72 61 72 79 20  sulting library 
53f0: 77 69 6c 6c 20 68 61 76 65 20 6e 6f 20 64 65 66  will have no def
5400: 61 75 6c 74 0a 20 20 5b 73 71 6c 69 74 65 33 5f  ault.  [sqlite3_
5410: 76 66 73 20 7c 20 6f 70 65 72 61 74 69 6e 67 20  vfs | operating 
5420: 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61 63 65  system interface
5430: 5d 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73  ].  Applications
5440: 20 6d 75 73 74 20 75 73 65 0a 20 20 5b 73 71 6c   must use.  [sql
5450: 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65  ite3_vfs_registe
5460: 72 28 29 5d 20 74 6f 20 72 65 67 69 73 74 65 72  r()] to register
5470: 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20   an appropriate 
5480: 69 6e 74 65 72 66 61 63 65 20 62 65 66 6f 72 65  interface before
5490: 0a 20 20 75 73 69 6e 67 20 53 51 4c 69 74 65 2e  .  using SQLite.
54a0: 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d    Applications m
54b0: 75 73 74 20 61 6c 73 6f 20 73 75 70 70 6c 79 20  ust also supply 
54c0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
54d0: 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74  for the.  [sqlit
54e0: 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 61 6e  e3_os_init()] an
54f0: 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e  d [sqlite3_os_en
5500: 64 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e  d()] interfaces.
5510: 20 20 54 68 65 20 75 73 75 61 6c 20 70 72 61 63    The usual prac
5520: 74 69 63 65 0a 20 20 69 73 20 66 6f 72 20 74 68  tice.  is for th
5530: 65 20 73 75 70 70 6c 69 65 64 20 5b 73 71 6c 69  e supplied [sqli
5540: 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 74  te3_os_init()] t
5550: 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65  o invoke [sqlite
5560: 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28 29  3_vfs_register()
5570: 5d 2e 0a 20 20 53 51 4c 69 74 65 20 77 69 6c 6c  ]..  SQLite will
5580: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69   automatically i
5590: 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 6f  nvoke [sqlite3_o
55a0: 73 5f 69 6e 69 74 28 29 5d 20 77 68 65 6e 20 69  s_init()] when i
55b0: 74 20 69 6e 69 74 69 61 6c 69 7a 65 73 2e 0a 0a  t initializes...
55c0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
55d0: 20 74 79 70 69 63 61 6c 6c 79 20 75 73 65 64 20   typically used 
55e0: 77 68 65 6e 20 62 75 69 6c 64 69 6e 67 20 53 51  when building SQ
55f0: 4c 69 74 65 20 66 6f 72 20 61 6e 20 65 6d 62 65  Lite for an embe
5600: 64 64 65 64 0a 20 20 70 6c 61 74 66 6f 72 6d 20  dded.  platform 
5610: 77 69 74 68 20 61 20 63 75 73 74 6f 6d 20 6f 70  with a custom op
5620: 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0a  erating system..
5630: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
5640: 4e 20 7b 53 51 4c 49 54 45 5f 53 45 43 55 52 45  N {SQLITE_SECURE
5650: 5f 44 45 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69  _DELETE} {.  Thi
5660: 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
5670: 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68  ption changes th
5680: 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e  e default settin
5690: 67 20 6f 66 20 74 68 65 0a 20 20 5b 73 65 63 75  g of the.  [secu
56a0: 72 65 5f 64 65 6c 65 74 65 20 70 72 61 67 6d 61  re_delete pragma
56b0: 5d 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  ].  When this op
56c0: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65 64  tion is not used
56d0: 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20  , secure_delete 
56e0: 64 65 66 61 75 6c 74 73 0a 20 20 74 6f 20 6f 66  defaults.  to of
56f0: 66 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  f.  When this op
5700: 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e 74 2c  tion is present,
5710: 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 64   secure_delete d
5720: 65 66 61 75 6c 74 73 20 74 6f 20 6f 6e 2e 0a 0a  efaults to on...
5730: 20 20 54 68 65 20 73 65 63 75 72 65 5f 64 65 6c    The secure_del
5740: 65 74 65 20 73 65 74 74 69 6e 67 20 63 61 75 73  ete setting caus
5750: 65 73 20 64 65 6c 65 74 65 64 20 63 6f 6e 74 65  es deleted conte
5760: 6e 74 20 74 6f 20 62 65 20 6f 76 65 72 77 72 69  nt to be overwri
5770: 74 74 65 6e 20 77 69 74 68 0a 20 20 7a 65 72 6f  tten with.  zero
5780: 73 2e 20 20 54 68 65 72 65 20 69 73 20 61 20 73  s.  There is a s
5790: 6d 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65  mall performance
57a0: 20 70 65 6e 61 6c 74 79 20 73 69 6e 63 65 20 61   penalty since a
57b0: 64 64 69 74 69 6f 6e 61 6c 20 49 2f 4f 0a 20 20  dditional I/O.  
57c0: 6d 75 73 74 20 6f 63 63 75 72 2e 20 20 4f 6e 20  must occur.  On 
57d0: 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64 2c 20  the other hand, 
57e0: 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 63 61  secure_delete ca
57f0: 6e 20 70 72 65 76 65 6e 74 20 66 72 61 67 6d 65  n prevent fragme
5800: 6e 74 73 20 6f 66 20 0a 20 20 73 65 6e 73 69 74  nts of .  sensit
5810: 69 76 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  ive information 
5820: 66 72 6f 6d 20 6c 69 6e 67 65 72 69 6e 67 20 69  from lingering i
5830: 6e 20 75 6e 75 73 65 64 20 70 61 72 74 73 20 6f  n unused parts o
5840: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  f the database f
5850: 69 6c 65 20 0a 20 20 61 66 74 65 72 20 69 74 20  ile .  after it 
5860: 68 61 73 20 62 65 65 6e 20 64 65 6c 65 74 65 64  has been deleted
5870: 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63 75 6d  .  See the docum
5880: 65 6e 74 61 74 69 6f 6e 20 6f 6e 20 74 68 65 0a  entation on the.
5890: 20 20 5b 73 65 63 75 72 65 5f 64 65 6c 65 74 65    [secure_delete
58a0: 20 70 72 61 67 6d 61 5d 20 66 6f 72 20 61 64 64   pragma] for add
58b0: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
58c0: 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ion..}..COMPILE_
58d0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54  OPTION {SQLITE_T
58e0: 48 52 45 41 44 53 41 46 45 3d 3c 69 3e 26 6c 74  HREADSAFE=<i>&lt
58f0: 3b 30 20 6f 72 20 31 20 6f 72 20 32 26 67 74 3b  ;0 or 1 or 2&gt;
5900: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  </i>} {.  This o
5910: 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20 77  ption controls w
5920: 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 63 6f  hether or not co
5930: 64 65 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69  de is included i
5940: 6e 20 53 51 4c 69 74 65 20 74 6f 0a 20 20 65 6e  n SQLite to.  en
5950: 61 62 6c 65 20 69 74 20 74 6f 20 6f 70 65 72 61  able it to opera
5960: 74 65 20 73 61 66 65 6c 79 20 69 6e 20 61 20 6d  te safely in a m
5970: 75 6c 74 69 74 68 72 65 61 64 65 64 20 65 6e 76  ultithreaded env
5980: 69 72 6f 6e 6d 65 6e 74 2e 20 20 54 68 65 0a 20  ironment.  The. 
5990: 20 64 65 66 61 75 6c 74 20 69 73 20 53 51 4c 49   default is SQLI
59a0: 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31 20  TE_THREADSAFE=1 
59b0: 77 68 69 63 68 20 69 73 20 73 61 66 65 20 66 6f  which is safe fo
59c0: 72 20 75 73 65 20 69 6e 20 61 20 6d 75 6c 74 69  r use in a multi
59d0: 74 68 72 65 61 64 65 64 0a 20 20 65 6e 76 69 72  threaded.  envir
59e0: 6f 6e 6d 65 6e 74 2e 20 20 57 68 65 6e 20 63 6f  onment.  When co
59f0: 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49  mpiled with SQLI
5a00: 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 20  TE_THREADSAFE=0 
5a10: 61 6c 6c 20 6d 75 74 65 78 69 6e 67 20 63 6f 64  all mutexing cod
5a20: 65 0a 20 20 69 73 20 6f 6d 69 74 74 65 64 20 61  e.  is omitted a
5a30: 6e 64 20 69 74 20 69 73 20 75 6e 73 61 66 65 20  nd it is unsafe 
5a40: 74 6f 20 75 73 65 20 53 51 4c 69 74 65 20 69 6e  to use SQLite in
5a50: 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64   a multithreaded
5a60: 20 70 72 6f 67 72 61 6d 2e 0a 20 20 57 68 65 6e   program..  When
5a70: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53   compiled with S
5a80: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
5a90: 3d 32 2c 20 53 51 4c 69 74 65 20 63 61 6e 20 62  =2, SQLite can b
5aa0: 65 20 75 73 65 64 20 69 6e 20 61 20 6d 75 6c 74  e used in a mult
5ab0: 69 74 68 72 65 61 64 65 64 0a 20 20 70 72 6f 67  ithreaded.  prog
5ac0: 72 61 6d 20 73 6f 20 6c 6f 6e 67 20 61 73 20 6e  ram so long as n
5ad0: 6f 20 74 77 6f 20 74 68 72 65 61 64 73 20 61 74  o two threads at
5ae0: 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65  tempt to use the
5af0: 20 73 61 6d 65 0a 20 20 5b 64 61 74 61 62 61 73   same.  [databas
5b00: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 28 6f  e connection] (o
5b10: 72 20 61 6e 79 20 5b 70 72 65 70 61 72 65 64 20  r any [prepared 
5b20: 73 74 61 74 65 6d 65 6e 74 73 5d 20 64 65 72 69  statements] deri
5b30: 76 65 64 20 66 72 6f 6d 0a 20 20 74 68 61 74 20  ved from.  that 
5b40: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
5b50: 69 6f 6e 29 20 61 74 20 74 68 65 20 73 61 6d 65  ion) at the same
5b60: 20 74 69 6d 65 2e 0a 0a 20 20 54 6f 20 70 75 74   time...  To put
5b70: 20 69 74 20 61 6e 6f 74 68 65 72 20 77 61 79 2c   it another way,
5b80: 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
5b90: 46 45 3d 31 20 73 65 74 73 20 74 68 65 20 64 65  FE=1 sets the de
5ba0: 66 61 75 6c 74 0a 20 20 5b 74 68 72 65 61 64 69  fault.  [threadi
5bb0: 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 65 72 69  ng mode] to Seri
5bc0: 61 6c 69 7a 65 64 2e 20 20 53 51 4c 49 54 45 5f  alized.  SQLITE_
5bd0: 54 48 52 45 41 44 53 41 46 45 3d 32 20 73 65 74  THREADSAFE=2 set
5be0: 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20  s the default.  
5bf0: 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
5c00: 20 74 6f 20 4d 75 6c 74 69 2d 74 68 72 65 61 64   to Multi-thread
5c10: 65 64 2e 20 20 41 6e 64 20 53 51 4c 49 54 45 5f  ed.  And SQLITE_
5c20: 54 48 52 45 41 44 53 41 46 45 3d 30 20 73 65 74  THREADSAFE=0 set
5c30: 73 20 74 68 65 0a 20 20 5b 74 68 72 65 61 64 69  s the.  [threadi
5c40: 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 69 6e 67  ng mode] to Sing
5c50: 6c 65 2d 74 68 72 65 61 64 65 64 2e 0a 0a 20 20  le-threaded...  
5c60: 54 68 65 20 76 61 6c 75 65 20 6f 66 20 53 51 4c  The value of SQL
5c70: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 20 63  ITE_THREADSAFE c
5c80: 61 6e 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  an be determined
5c90: 20 61 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20 75   at run-time.  u
5ca0: 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65  sing the [sqlite
5cb0: 33 5f 74 68 72 65 61 64 73 61 66 65 28 29 5d 20  3_threadsafe()] 
5cc0: 69 6e 74 65 72 66 61 63 65 2e 0a 0a 20 20 57 68  interface...  Wh
5cd0: 65 6e 20 53 51 4c 69 74 65 20 68 61 73 20 62 65  en SQLite has be
5ce0: 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  en compiled with
5cf0: 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
5d00: 46 45 3d 31 20 6f 72 0a 20 20 53 51 4c 49 54 45  FE=1 or.  SQLITE
5d10: 5f 54 48 52 45 41 44 53 41 46 45 3d 32 20 74 68  _THREADSAFE=2 th
5d20: 65 6e 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e  en the [threadin
5d30: 67 20 6d 6f 64 65 5d 0a 20 20 63 61 6e 20 62 65  g mode].  can be
5d40: 20 61 6c 74 65 72 65 64 20 61 74 20 72 75 6e 2d   altered at run-
5d50: 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b  time using the [
5d60: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
5d70: 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f 67 65  ] interface toge
5d80: 74 68 65 72 0a 20 20 77 69 74 68 20 6f 6e 65 20  ther.  with one 
5d90: 6f 66 20 74 68 65 73 65 20 76 65 72 62 73 3a 0a  of these verbs:.
5da0: 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 5b 53  .  <ul>.  <li>[S
5db0: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e  QLITE_CONFIG_SIN
5dc0: 47 4c 45 54 48 52 45 41 44 5d 0a 20 20 3c 6c 69  GLETHREAD].  <li
5dd0: 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  >[SQLITE_CONFIG_
5de0: 4d 55 4c 54 49 54 48 52 45 41 44 5d 0a 20 20 3c  MULTITHREAD].  <
5df0: 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  li>[SQLITE_CONFI
5e00: 47 5f 53 45 52 49 41 4c 49 5a 45 44 5d 0a 20 20  G_SERIALIZED].  
5e10: 3c 2f 75 6c 3e 0a 0a 20 20 54 68 65 20 5b 53 51  </ul>..  The [SQ
5e20: 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45  LITE_OPEN_NOMUTE
5e30: 58 5d 20 61 6e 64 0a 20 20 5b 53 51 4c 49 54 45  X] and.  [SQLITE
5e40: 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 5d  _OPEN_FULLMUTEX]
5e50: 20 66 6c 61 67 73 20 74 6f 20 5b 73 71 6c 69 74   flags to [sqlit
5e60: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 20 63 61  e3_open_v2()] ca
5e70: 6e 20 61 6c 73 6f 20 62 65 20 75 73 65 64 0a 20  n also be used. 
5e80: 20 74 6f 20 61 64 6a 75 73 74 20 74 68 65 20 5b   to adjust the [
5e90: 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20  threading mode] 
5ea0: 6f 66 20 69 6e 64 69 76 69 64 75 61 6c 20 5b 64  of individual [d
5eb0: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
5ec0: 6f 6e 73 5d 0a 20 20 61 74 20 72 75 6e 2d 74 69  ons].  at run-ti
5ed0: 6d 65 2e 0a 0a 20 20 4e 6f 74 65 20 74 68 61 74  me...  Note that
5ee0: 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20   when SQLite is 
5ef0: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51  compiled with SQ
5f00: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
5f10: 30 2c 20 74 68 65 20 63 6f 64 65 0a 20 20 74 6f  0, the code.  to
5f20: 20 6d 61 6b 65 20 53 51 4c 69 74 65 20 74 68 72   make SQLite thr
5f30: 65 61 64 73 61 66 65 20 69 73 20 6f 6d 69 74 74  eadsafe is omitt
5f40: 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c  ed from the buil
5f50: 64 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f 63  d.  When this oc
5f60: 63 75 72 73 2c 0a 20 20 69 74 20 69 73 20 69 6d  curs,.  it is im
5f70: 70 6f 73 73 69 62 6c 65 20 74 6f 20 63 68 61 6e  possible to chan
5f80: 67 65 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e  ge the [threadin
5f90: 67 20 6d 6f 64 65 5d 20 61 74 20 73 74 61 72 74  g mode] at start
5fa0: 2d 74 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69 6d  -time or run-tim
5fb0: 65 2e 0a 0a 20 20 53 65 65 20 74 68 65 20 5b 74  e...  See the [t
5fc0: 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 64  hreading mode] d
5fd0: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72  ocumentation for
5fe0: 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f   additional info
5ff0: 72 6d 61 74 69 6f 6e 0a 20 20 6f 6e 20 61 73 70  rmation.  on asp
6000: 65 63 74 73 20 6f 66 20 75 73 69 6e 67 20 53 51  ects of using SQ
6010: 4c 69 74 65 20 69 6e 20 61 20 6d 75 6c 74 69 74  Lite in a multit
6020: 68 72 65 61 64 65 64 20 65 6e 76 69 72 6f 6e 6d  hreaded environm
6030: 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ent..}..COMPILE_
6040: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54  OPTION {SQLITE_T
6050: 45 4d 50 5f 53 54 4f 52 45 3d 3c 69 3e 26 6c 74  EMP_STORE=<i>&lt
6060: 3b 30 20 74 68 72 6f 75 67 68 20 33 26 67 74 3b  ;0 through 3&gt;
6070: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  </i>} {.  This o
6080: 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20 77  ption controls w
6090: 68 65 74 68 65 72 20 74 65 6d 70 6f 72 61 72 79  hether temporary
60a0: 20 66 69 6c 65 73 20 61 72 65 20 73 74 6f 72 65   files are store
60b0: 64 20 6f 6e 20 64 69 73 6b 20 6f 72 0a 20 20 69  d on disk or.  i
60c0: 6e 20 6d 65 6d 6f 72 79 2e 20 20 54 68 65 20 6d  n memory.  The m
60d0: 65 61 6e 69 6e 67 73 20 66 6f 72 20 76 61 72 69  eanings for vari
60e0: 6f 75 73 20 73 65 74 74 69 6e 67 73 20 6f 66 20  ous settings of 
60f0: 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  this compile-tim
6100: 65 0a 20 20 6f 70 74 69 6f 6e 20 61 72 65 20 61  e.  option are a
6110: 73 20 66 6f 6c 6c 6f 77 73 3a 0a 0a 20 20 3c 74  s follows:..  <t
6120: 61 62 6c 65 20 63 65 6c 6c 70 61 64 64 69 6e 67  able cellpadding
6130: 3d 22 32 22 20 62 6f 72 64 65 72 3d 22 31 22 3e  ="2" border="1">
6140: 0a 20 20 3c 74 72 3e 3c 74 68 3e 53 51 4c 49 54  .  <tr><th>SQLIT
6150: 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3c 2f 74 68  E_TEMP_STORE</th
6160: 3e 3c 74 68 3e 4d 65 61 6e 69 6e 67 3c 2f 74 68  ><th>Meaning</th
6170: 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64  ></tr>.  <tr><td
6180: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
6190: 30 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73  0</td><td>Always
61a0: 20 75 73 65 20 74 65 6d 70 6f 72 61 72 79 20 66   use temporary f
61b0: 69 6c 65 73 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20  iles</td></tr>. 
61c0: 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22   <tr><td align="
61d0: 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74  center">1</td><t
61e0: 64 3e 55 73 65 20 66 69 6c 65 73 20 62 79 20 64  d>Use files by d
61f0: 65 66 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f 77  efault but allow
6200: 20 74 68 65 0a 20 20 5b 50 52 41 47 4d 41 20 74   the.  [PRAGMA t
6210: 65 6d 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d 61  emp_store] comma
6220: 6e 64 20 74 6f 20 6f 76 65 72 72 69 64 65 3c 2f  nd to override</
6230: 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c  td></tr>.  <tr><
6240: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
6250: 22 3e 32 3c 2f 74 64 3e 3c 74 64 3e 55 73 65 20  ">2</td><td>Use 
6260: 6d 65 6d 6f 72 79 20 62 79 20 64 65 66 61 75 6c  memory by defaul
6270: 74 20 62 75 74 20 61 6c 6c 6f 77 20 74 68 65 0a  t but allow the.
6280: 20 20 5b 50 52 41 47 4d 41 20 74 65 6d 70 5f 73    [PRAGMA temp_s
6290: 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f  tore] command to
62a0: 20 6f 76 65 72 72 69 64 65 3c 2f 74 64 3e 3c 2f   override</td></
62b0: 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c  tr>.  <tr><td al
62c0: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 33 3c 2f  ign="center">3</
62d0: 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75 73  td><td>Always us
62e0: 65 20 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f 74  e memory</td></t
62f0: 72 3e 0a 20 20 3c 2f 74 61 62 6c 65 3e 0a 0a 20  r>.  </table>.. 
6300: 20 54 68 65 20 64 65 66 61 75 6c 74 20 73 65 74   The default set
6310: 74 69 6e 67 20 69 73 20 31 2e 20 20 0a 20 20 41  ting is 1.  .  A
6320: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
6330: 61 74 69 6f 6e 20 63 61 6e 20 62 65 20 66 6f 75  ation can be fou
6340: 6e 64 20 69 6e 20 5b 74 65 6d 70 73 74 6f 72 65  nd in [tempstore
6350: 20 7c 20 74 65 6d 70 66 69 6c 65 73 2e 68 74 6d   | tempfiles.htm
6360: 6c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  l]..}..COMPILE_O
6370: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 52  PTION {SQLITE_TR
6380: 41 43 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d 3c  ACE_SIZE_LIMIT=<
6390: 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20  i>N</i>} {.  If 
63a0: 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65  this macro is de
63b0: 66 69 6e 65 64 20 74 6f 20 61 20 70 6f 73 69 74  fined to a posit
63c0: 69 76 65 20 69 6e 74 65 67 65 72 20 3c 69 3e 4e  ive integer <i>N
63d0: 3c 2f 69 3e 2c 20 74 68 65 6e 20 74 68 65 20 6c  </i>, then the l
63e0: 65 6e 67 74 68 20 6f 66 0a 20 20 73 74 72 69 6e  ength of.  strin
63f0: 67 73 20 61 6e 64 20 42 4c 4f 42 20 74 68 61 74  gs and BLOB that
6400: 20 61 72 65 20 65 78 70 61 6e 64 65 64 20 69 6e   are expanded in
6410: 74 6f 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e  to parameters in
6420: 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 0a 20   the output of. 
6430: 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28   [sqlite3_trace(
6440: 29 5d 20 69 73 20 6c 69 6d 69 74 65 64 20 74 6f  )] is limited to
6450: 20 3c 69 3e 4e 3c 2f 69 3e 20 62 79 74 65 73 2e   <i>N</i> bytes.
6460: 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50    .}..COMPILE_OP
6470: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 53 45  TION {SQLITE_USE
6480: 5f 55 52 49 7d 20 7b 0a 20 20 54 68 69 73 20 6f  _URI} {.  This o
6490: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
64a0: 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 5d 20   [URI filename] 
64b0: 70 72 6f 63 65 73 73 20 6c 6f 67 69 63 20 74 6f  process logic to
64c0: 20 62 65 20 65 6e 61 62 6c 65 64 20 62 79 20 0a   be enabled by .
64d0: 20 20 64 65 66 61 75 6c 74 2e 20 20 0a 7d 0a 0a    default.  .}..
64e0: 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d  </tcl>..<a name=
64f0: 22 65 6e 61 62 6c 65 66 65 61 74 75 72 65 73 22  "enablefeatures"
6500: 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 35 20 4f 70  ></a>.<h2>1.5 Op
6510: 74 69 6f 6e 73 20 54 6f 20 45 6e 61 62 6c 65 20  tions To Enable 
6520: 46 65 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c  Features Normall
6530: 79 20 54 75 72 6e 65 64 20 4f 66 66 3c 2f 68 32  y Turned Off</h2
6540: 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45  >..<tcl>.COMPILE
6550: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
6560: 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f 52  ALLOW_URI_AUTHOR
6570: 49 54 59 7d 20 7b 0a 20 20 5b 55 52 49 20 66 69  ITY} {.  [URI fi
6580: 6c 65 6e 61 6d 65 73 5d 20 6e 6f 72 6d 61 6c 6c  lenames] normall
6590: 79 20 74 68 72 6f 77 73 20 61 6e 20 65 72 72 6f  y throws an erro
65a0: 72 20 69 66 20 74 68 65 20 61 75 74 68 6f 72 69  r if the authori
65b0: 74 79 20 73 65 63 74 69 6f 6e 20 69 73 0a 20 20  ty section is.  
65c0: 6e 6f 74 20 65 69 74 68 65 72 20 65 6d 70 74 79  not either empty
65d0: 20 6f 72 20 22 6c 6f 63 61 6c 68 6f 73 74 22 2e   or "localhost".
65e0: 20 20 48 6f 77 65 76 65 72 2c 20 69 66 20 53 51    However, if SQ
65f0: 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64  Lite is compiled
6600: 20 77 69 74 68 0a 20 20 74 68 65 20 53 51 4c 49   with.  the SQLI
6610: 54 45 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54  TE_ALLOW_URI_AUT
6620: 48 4f 52 49 54 59 20 63 6f 6d 70 69 6c 65 2d 74  HORITY compile-t
6630: 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e  ime option, then
6640: 20 74 68 65 20 55 52 49 20 69 73 0a 20 20 63 6f   the URI is.  co
6650: 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 61 20 55  nverted into a U
6660: 6e 69 66 6f 72 6d 20 4e 61 6d 69 6e 67 20 43 6f  niform Naming Co
6670: 6e 76 65 6e 74 69 6f 6e 20 28 55 4e 43 29 20 66  nvention (UNC) f
6680: 69 6c 65 6e 61 6d 65 20 61 6e 64 20 70 61 73 73  ilename and pass
6690: 65 64 0a 20 20 64 6f 77 6e 20 74 6f 20 74 68 65  ed.  down to the
66a0: 20 75 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72   underlying oper
66b0: 61 74 69 6e 67 20 73 79 73 74 65 6d 20 74 68 61  ating system tha
66c0: 74 20 77 61 79 2e 20 20 0a 20 20 3c 70 3e 0a 20  t way.  .  <p>. 
66d0: 20 53 6f 6d 65 20 66 75 74 75 72 65 20 76 65 72   Some future ver
66e0: 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20  sions of SQLite 
66f0: 6d 61 79 20 63 68 61 6e 67 65 20 74 6f 20 65 6e  may change to en
6700: 61 62 6c 65 20 74 68 69 73 20 66 65 61 74 75 72  able this featur
6710: 65 0a 20 20 62 79 20 64 65 66 61 75 6c 74 2e 0a  e.  by default..
6720: 7d 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  }.COMPILE_OPTION
6730: 20 7b 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43   {SQLITE_ALLOW_C
6740: 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43  OVERING_INDEX_SC
6750: 41 4e 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31  AN=<i>&lt;0 or 1
6760: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
6770: 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 20  is C-preprocess 
6780: 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73  macro determines
6790: 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 65 74   the default set
67a0: 74 69 6e 67 20 6f 66 20 74 68 65 0a 20 20 5b 53  ting of the.  [S
67b0: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56  QLITE_CONFIG_COV
67c0: 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e  ERING_INDEX_SCAN
67d0: 5d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  ] configuration 
67e0: 73 65 74 74 69 6e 67 2e 20 20 49 74 20 64 65 66  setting.  It def
67f0: 61 75 6c 74 73 0a 20 20 74 6f 20 31 20 28 6f 6e  aults.  to 1 (on
6800: 29 20 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68  ) which means th
6810: 61 74 20 63 6f 76 65 72 69 6e 67 20 69 6e 64 69  at covering indi
6820: 63 65 73 20 61 72 65 20 75 73 65 64 20 66 6f 72  ces are used for
6830: 20 66 75 6c 6c 20 74 61 62 6c 65 0a 20 20 73 63   full table.  sc
6840: 61 6e 73 20 77 68 65 72 65 20 70 6f 73 73 69 62  ans where possib
6850: 6c 65 2c 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  le, in order to 
6860: 72 65 64 75 63 65 20 49 2f 4f 20 61 6e 64 20 69  reduce I/O and i
6870: 6d 70 72 6f 76 65 20 70 65 72 66 6f 72 6d 61 6e  mprove performan
6880: 63 65 2e 0a 20 20 48 6f 77 65 76 65 72 2c 20 74  ce..  However, t
6890: 68 65 20 75 73 65 20 6f 66 20 61 20 63 6f 76 65  he use of a cove
68a0: 72 69 6e 67 20 69 6e 64 65 78 20 66 6f 72 20 61  ring index for a
68b0: 20 66 75 6c 6c 20 73 63 61 6e 20 77 69 6c 6c 20   full scan will 
68c0: 63 61 75 73 65 20 72 65 73 75 6c 74 73 0a 20 20  cause results.  
68d0: 74 6f 20 61 70 70 65 61 72 20 69 6e 20 61 20 64  to appear in a d
68e0: 69 66 66 65 72 65 6e 74 20 6f 72 64 65 72 20 66  ifferent order f
68f0: 72 6f 6d 20 6c 65 67 61 63 79 2c 20 77 68 69 63  rom legacy, whic
6900: 68 20 63 6f 75 6c 64 20 63 61 75 73 65 20 73 6f  h could cause so
6910: 6d 65 0a 20 20 28 69 6e 63 6f 72 72 65 63 74 6c  me.  (incorrectl
6920: 79 2d 63 6f 64 65 64 29 20 6c 65 67 61 63 79 20  y-coded) legacy 
6930: 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20  applications to 
6940: 62 72 65 61 6b 2e 20 20 48 65 6e 63 65 2c 20 74  break.  Hence, t
6950: 68 65 20 63 6f 76 65 72 69 6e 67 0a 20 20 69 6e  he covering.  in
6960: 64 65 78 20 73 63 61 6e 20 6f 70 74 69 6f 6e 20  dex scan option 
6970: 63 61 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20  can be disabled 
6980: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  at compile-time 
6990: 6f 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74 20  on systems that 
69a0: 77 68 61 74 0a 20 20 74 6f 20 6d 69 6e 69 6d 69  what.  to minimi
69b0: 7a 65 20 74 68 65 69 72 20 72 69 73 6b 20 6f 66  ze their risk of
69c0: 20 65 78 70 6f 73 69 6e 67 20 65 72 72 6f 72 73   exposing errors
69d0: 20 69 6e 20 6c 65 67 61 63 79 20 61 70 70 6c 69   in legacy appli
69e0: 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50  cations..}..COMP
69f0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
6a00: 54 45 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41  TE_ENABLE_8_3_NA
6a10: 4d 45 53 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20  MES=<i>&lt;1 or 
6a20: 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49  2&gt;</i>} {.  I
6a30: 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63  f this C-preproc
6a40: 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64  essor macro is d
6a50: 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 65 78 74  efined, then ext
6a60: 72 61 20 63 6f 64 65 20 69 73 0a 20 20 69 6e 63  ra code is.  inc
6a70: 6c 75 64 65 64 20 74 68 61 74 20 61 6c 6c 6f 77  luded that allow
6a80: 73 20 53 51 4c 69 74 65 20 74 6f 20 66 75 6e 63  s SQLite to func
6a90: 74 69 6f 6e 20 6f 6e 20 61 20 66 69 6c 65 73 79  tion on a filesy
6aa0: 73 74 65 6d 20 74 68 61 74 0a 20 20 6f 6e 6c 79  stem that.  only
6ab0: 20 73 75 70 70 6f 72 74 20 38 2b 33 20 66 69 6c   support 8+3 fil
6ac0: 65 6e 61 6d 65 73 2e 20 20 49 66 20 74 68 65 20  enames.  If the 
6ad0: 76 61 6c 75 65 20 6f 66 20 74 68 69 73 20 6d 61  value of this ma
6ae0: 63 72 6f 20 69 73 20 31 2c 0a 20 20 74 68 65 6e  cro is 1,.  then
6af0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68   the default beh
6b00: 61 76 69 6f 72 20 69 73 20 74 6f 20 63 6f 6e 74  avior is to cont
6b10: 69 6e 75 65 20 74 6f 20 75 73 65 20 6c 6f 6e 67  inue to use long
6b20: 20 66 69 6c 65 6e 61 6d 65 73 20 61 6e 64 0a 20   filenames and. 
6b30: 20 74 6f 20 6f 6e 6c 79 20 75 73 65 20 38 2b 33   to only use 8+3
6b40: 20 66 69 6c 65 6e 61 6d 65 73 20 69 66 20 74 68   filenames if th
6b50: 65 20 0a 20 20 64 61 74 61 62 61 73 65 20 63 6f  e .  database co
6b60: 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e  nnection is open
6b70: 65 64 20 75 73 69 6e 67 20 5b 55 52 49 20 66 69  ed using [URI fi
6b80: 6c 65 6e 61 6d 65 73 5d 20 77 69 74 68 0a 20 20  lenames] with.  
6b90: 74 68 65 20 22 3c 74 74 3e 38 5f 33 5f 6e 61 6d  the "<tt>8_3_nam
6ba0: 65 73 3d 31 3c 2f 74 74 3e 22 20 71 75 65 72 79  es=1</tt>" query
6bb0: 20 70 61 72 61 6d 65 74 65 72 2e 20 20 49 66 20   parameter.  If 
6bc0: 74 68 65 20 76 61 6c 75 65 20 6f 66 0a 20 20 74  the value of.  t
6bd0: 68 69 73 20 6d 61 63 72 6f 20 69 73 20 32 2c 20  his macro is 2, 
6be0: 74 68 65 6e 20 74 68 65 20 75 73 65 20 6f 66 20  then the use of 
6bf0: 38 2b 33 20 66 69 6c 65 6e 61 6d 65 73 20 62 65  8+3 filenames be
6c00: 63 6f 6d 65 73 20 74 68 65 20 64 65 66 61 75 6c  comes the defaul
6c10: 74 0a 20 20 62 75 74 20 6d 61 79 20 62 65 20 64  t.  but may be d
6c20: 69 73 61 62 6c 65 64 20 6f 6e 20 75 73 69 6e 67  isabled on using
6c30: 20 74 68 65 20 3c 74 74 3e 38 5f 33 5f 6e 61 6d   the <tt>8_3_nam
6c40: 65 73 3d 30 3c 2f 74 74 3e 20 71 75 65 72 79 20  es=0</tt> query 
6c50: 70 61 72 61 6d 65 74 65 72 2e 0a 20 20 53 65 65  parameter..  See
6c60: 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54   .}..COMPILE_OPT
6c70: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
6c80: 4c 45 5f 41 50 49 5f 41 52 4d 4f 52 7d 20 7b 0a  LE_API_ARMOR} {.
6c90: 20 20 57 68 65 6e 20 64 65 66 69 6e 65 64 2c 20    When defined, 
6ca0: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
6cb0: 73 6f 72 20 6d 61 63 72 6f 20 61 63 74 69 76 61  sor macro activa
6cc0: 74 65 73 20 65 78 74 72 61 20 63 6f 64 65 20 74  tes extra code t
6cd0: 68 61 74 0a 20 20 61 74 74 65 6d 70 74 73 20 74  hat.  attempts t
6ce0: 6f 20 64 65 74 65 63 74 20 6d 69 73 75 73 65 20  o detect misuse 
6cf0: 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 41 50  of the SQLite AP
6d00: 49 2c 20 73 75 63 68 20 61 73 20 70 61 73 73 69  I, such as passi
6d10: 6e 67 20 69 6e 20 4e 55 4c 4c 0a 20 20 70 6f 69  ng in NULL.  poi
6d20: 6e 74 65 72 73 20 74 6f 20 72 65 71 75 69 72 65  nters to require
6d30: 64 20 70 61 72 61 6d 65 74 65 72 73 20 6f 72 20  d parameters or 
6d40: 75 73 69 6e 67 20 6f 62 6a 65 63 74 73 20 61 66  using objects af
6d50: 74 65 72 20 74 68 65 79 20 68 61 76 65 20 62 65  ter they have be
6d60: 65 6e 0a 20 20 64 65 73 74 72 6f 79 65 64 2e 0a  en.  destroyed..
6d70: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6d80: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
6d90: 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 7d 20 7b  _ATOMIC_WRITE} {
6da0: 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65  .  If this C-pre
6db0: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20  processor macro 
6dc0: 69 73 20 64 65 66 69 6e 65 64 20 61 6e 64 20 69  is defined and i
6dd0: 66 20 74 68 65 0a 20 20 78 44 65 76 69 63 65 43  f the.  xDeviceC
6de0: 68 61 72 61 63 74 65 72 69 73 74 69 63 73 20 6d  haracteristics m
6df0: 65 74 68 6f 64 20 6f 66 20 5b 73 71 6c 69 74 65  ethod of [sqlite
6e00: 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62  3_io_methods] ob
6e10: 6a 65 63 74 20 66 6f 72 0a 20 20 61 20 64 61 74  ject for.  a dat
6e20: 61 62 61 73 65 20 66 69 6c 65 20 72 65 70 6f 72  abase file repor
6e30: 74 73 20 28 76 69 61 20 6f 6e 65 20 6f 66 20 74  ts (via one of t
6e40: 68 65 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50  he [SQLITE_IOCAP
6e50: 5f 41 54 4f 4d 49 43 5d 20 62 69 74 73 29 0a 20  _ATOMIC] bits). 
6e60: 20 74 68 61 74 20 74 68 65 20 66 69 6c 65 73 79   that the filesy
6e70: 73 74 65 6d 20 73 75 70 70 6f 72 74 73 20 61 74  stem supports at
6e80: 6f 6d 69 63 20 77 72 69 74 65 73 20 61 6e 64 20  omic writes and 
6e90: 69 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  if a transaction
6ea0: 0a 20 20 69 6e 76 6f 6c 76 65 73 20 61 20 63 68  .  involves a ch
6eb0: 61 6e 67 65 20 74 6f 20 6f 6e 6c 79 20 61 20 73  ange to only a s
6ec0: 69 6e 67 6c 65 20 70 61 67 65 20 6f 66 20 74 68  ingle page of th
6ed0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2c  e database file,
6ee0: 0a 20 20 74 68 65 6e 20 74 68 65 20 74 72 61 6e  .  then the tran
6ef0: 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 73 20  saction commits 
6f00: 77 69 74 68 20 6a 75 73 74 20 61 20 73 69 6e 67  with just a sing
6f10: 6c 65 20 77 72 69 74 65 20 72 65 71 75 65 73 74  le write request
6f20: 20 6f 66 0a 20 20 61 20 73 69 6e 67 6c 65 20 70   of.  a single p
6f30: 61 67 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  age of the datab
6f40: 61 73 65 20 61 6e 64 20 6e 6f 20 72 6f 6c 6c 62  ase and no rollb
6f50: 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 69 73 20 63  ack journal is c
6f60: 72 65 61 74 65 64 0a 20 20 6f 72 20 77 72 69 74  reated.  or writ
6f70: 74 65 6e 2e 20 20 4f 6e 20 66 69 6c 65 73 79 73  ten.  On filesys
6f80: 74 65 6d 73 20 74 68 61 74 20 73 75 70 70 6f 72  tems that suppor
6f90: 74 20 61 74 6f 6d 69 63 20 77 72 69 74 65 73 2c  t atomic writes,
6fa0: 20 74 68 69 73 0a 20 20 6f 70 74 69 6d 69 7a 61   this.  optimiza
6fb0: 74 69 6f 6e 20 63 61 6e 20 72 65 73 75 6c 74 20  tion can result 
6fc0: 69 6e 20 73 69 67 6e 69 66 69 63 61 6e 74 20 73  in significant s
6fd0: 70 65 65 64 20 69 6d 70 72 6f 76 65 6d 65 6e 74  peed improvement
6fe0: 73 20 66 6f 72 0a 20 20 73 6d 61 6c 6c 20 75 70  s for.  small up
6ff0: 64 61 74 65 73 2e 20 20 48 6f 77 65 76 65 72 2c  dates.  However,
7000: 20 66 65 77 20 66 69 6c 65 73 79 73 74 65 6d 73   few filesystems
7010: 20 73 75 70 70 6f 72 74 20 74 68 69 73 20 63 61   support this ca
7020: 70 61 62 69 6c 69 74 79 0a 20 20 61 6e 64 20 74  pability.  and t
7030: 68 65 20 63 6f 64 65 20 70 61 74 68 73 20 74 68  he code paths th
7040: 61 74 20 63 68 65 63 6b 20 66 6f 72 20 74 68 69  at check for thi
7050: 73 20 63 61 70 61 62 69 6c 69 74 79 20 73 6c 6f  s capability slo
7060: 77 20 64 6f 77 6e 20 77 72 69 74 65 0a 20 20 70  w down write.  p
7070: 65 72 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 79  erformance on sy
7080: 73 74 65 6d 73 20 74 68 61 74 20 6c 61 63 6b 20  stems that lack 
7090: 61 74 6f 6d 69 63 20 77 72 69 74 65 20 63 61 70  atomic write cap
70a0: 61 62 69 6c 69 74 79 2c 20 73 6f 20 74 68 69 73  ability, so this
70b0: 0a 20 20 66 65 61 74 75 72 65 20 69 73 20 64 69  .  feature is di
70c0: 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c  sabled by defaul
70d0: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
70e0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
70f0: 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44  BLE_COLUMN_METAD
7100: 41 54 41 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  ATA} {.  When th
7110: 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f  is C-preprocesso
7120: 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e  r macro is defin
7130: 65 64 2c 20 53 51 4c 69 74 65 20 69 6e 63 6c 75  ed, SQLite inclu
7140: 64 65 73 20 73 6f 6d 65 0a 20 20 61 64 64 69 74  des some.  addit
7150: 69 6f 6e 61 6c 20 41 50 49 73 20 74 68 61 74 20  ional APIs that 
7160: 70 72 6f 76 69 64 65 20 63 6f 6e 76 65 6e 69 65  provide convenie
7170: 6e 74 20 61 63 63 65 73 73 20 74 6f 20 6d 65 74  nt access to met
7180: 61 2d 64 61 74 61 20 61 62 6f 75 74 0a 20 20 74  a-data about.  t
7190: 61 62 6c 65 73 20 61 6e 64 20 71 75 65 72 69 65  ables and querie
71a0: 73 2e 20 20 54 68 65 20 41 50 49 73 20 74 68 61  s.  The APIs tha
71b0: 74 20 61 72 65 20 65 6e 61 62 6c 65 64 20 62 79  t are enabled by
71c0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 72 65   this option are
71d0: 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e  :..  <ul>.  <li>
71e0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
71f0: 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 29  _database_name()
7200: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b  ] </li>.  <li> [
7210: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
7220: 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 29  atabase_name16()
7230: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b  ] </li>.  <li> [
7240: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
7250: 61 62 6c 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c  able_name()] </l
7260: 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74  i>.  <li> [sqlit
7270: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
7280: 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a  name16()] </li>.
7290: 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
72a0: 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
72b0: 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c  me()] </li>.  <l
72c0: 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  i> [sqlite3_colu
72d0: 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36  mn_origin_name16
72e0: 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 2f 75 6c  ()] </li>.  </ul
72f0: 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  >.}..COMPILE_OPT
7300: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
7310: 4c 45 5f 44 42 53 54 41 54 5f 56 54 41 42 7d 20  LE_DBSTAT_VTAB} 
7320: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
7330: 65 6e 61 62 6c 65 73 20 74 68 65 20 5b 64 62 73  enables the [dbs
7340: 74 61 74 20 76 69 72 74 75 61 6c 20 74 61 62 6c  tat virtual tabl
7350: 65 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  e]..}..COMPILE_O
7360: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
7370: 41 42 4c 45 5f 45 58 50 4c 41 49 4e 5f 43 4f 4d  ABLE_EXPLAIN_COM
7380: 4d 45 4e 54 53 7d 20 7b 0a 20 20 54 68 69 73 20  MENTS} {.  This 
7390: 6f 70 74 69 6f 6e 20 61 64 64 73 20 65 78 74 72  option adds extr
73a0: 61 20 6c 6f 67 69 63 20 74 6f 20 53 51 4c 69 74  a logic to SQLit
73b0: 65 20 74 68 61 74 20 69 6e 73 65 72 74 73 20 63  e that inserts c
73c0: 6f 6d 6d 65 6e 74 20 74 65 78 74 20 69 6e 74 6f  omment text into
73d0: 20 74 68 65 0a 20 20 6f 75 74 70 75 74 20 6f 66   the.  output of
73e0: 20 5b 45 58 50 4c 41 49 4e 5d 2e 20 20 54 68 65   [EXPLAIN].  The
73f0: 73 65 20 65 78 74 72 61 20 63 6f 6d 6d 65 6e 74  se extra comment
7400: 73 20 75 73 65 20 65 78 74 72 61 20 6d 65 6d 6f  s use extra memo
7410: 72 79 2c 20 74 68 75 73 0a 20 20 6d 61 6b 69 6e  ry, thus.  makin
7420: 67 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  g [prepared stat
7430: 65 6d 65 6e 74 73 5d 20 6c 61 72 67 65 72 20 61  ements] larger a
7440: 6e 64 20 76 65 72 79 20 73 6c 69 67 68 74 6c 79  nd very slightly
7450: 20 73 6c 6f 77 65 72 2c 20 61 6e 64 20 73 6f 20   slower, and so 
7460: 74 68 65 79 20 61 72 65 0a 20 20 74 75 72 6e 65  they are.  turne
7470: 64 20 6f 66 66 20 62 79 20 64 65 66 61 75 6c 74  d off by default
7480: 20 61 6e 64 20 69 6e 20 6d 6f 73 74 20 61 70 70   and in most app
7490: 6c 69 63 61 74 69 6f 6e 2e 20 20 42 75 74 20 73  lication.  But s
74a0: 6f 6d 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  ome applications
74b0: 2c 20 73 75 63 68 0a 20 20 61 73 20 74 68 65 20  , such.  as the 
74c0: 5b 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 73 68  [command-line sh
74d0: 65 6c 6c 5d 20 66 6f 72 20 53 51 4c 69 74 65 2c  ell] for SQLite,
74e0: 20 76 61 6c 75 65 20 63 6c 61 72 69 74 79 20 6f   value clarity o
74f0: 66 20 45 58 50 4c 41 49 4e 20 6f 75 74 70 75 74  f EXPLAIN output
7500: 0a 20 20 6f 76 65 72 20 72 61 77 20 70 65 72 66  .  over raw perf
7510: 6f 72 6d 61 6e 63 65 20 61 6e 64 20 73 6f 20 74  ormance and so t
7520: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
7530: 20 6f 70 74 69 6f 6e 20 69 73 20 61 76 61 69 6c   option is avail
7540: 61 62 6c 65 20 74 6f 20 74 68 65 6d 2e 0a 20 20  able to them..  
7550: 54 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  The SQLITE_ENABL
7560: 45 5f 45 58 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e  E_EXPLAIN_COMMEN
7570: 54 53 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  TS compile-time 
7580: 6f 70 74 69 6f 6e 20 69 73 20 61 6c 73 6f 20 65  option is also e
7590: 6e 61 62 6c 65 64 0a 20 20 61 75 74 6f 6d 61 74  nabled.  automat
75a0: 69 63 61 6c 6c 79 20 69 66 20 5b 53 51 4c 49 54  ically if [SQLIT
75b0: 45 5f 44 45 42 55 47 5d 20 69 73 20 65 6e 61 62  E_DEBUG] is enab
75c0: 6c 65 64 2e 0a 7d 0a 0a 0a 43 4f 4d 50 49 4c 45  led..}...COMPILE
75d0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
75e0: 45 4e 41 42 4c 45 5f 46 54 53 33 7d 20 7b 0a 20  ENABLE_FTS3} {. 
75f0: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
7600: 6e 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20  n is defined in 
7610: 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f  the [amalgamatio
7620: 6e 5d 2c 20 76 65 72 73 69 6f 6e 20 33 0a 20 20  n], version 3.  
7630: 6f 66 20 74 68 65 20 66 75 6c 6c 2d 74 65 78 74  of the full-text
7640: 20 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20 69   search engine i
7650: 73 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62  s added to the b
7660: 75 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61 6c  uild automatical
7670: 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ly..}..COMPILE_O
7680: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
7690: 41 42 4c 45 5f 46 54 53 33 5f 50 41 52 45 4e 54  ABLE_FTS3_PARENT
76a0: 48 45 53 49 53 7d 20 7b 0a 20 20 54 68 69 73 20  HESIS} {.  This 
76b0: 6f 70 74 69 6f 6e 20 6d 6f 64 69 66 69 65 73 20  option modifies 
76c0: 74 68 65 20 71 75 65 72 79 20 70 61 74 74 65 72  the query patter
76d0: 6e 20 70 61 72 73 65 72 20 69 6e 20 46 54 53 33  n parser in FTS3
76e0: 20 73 75 63 68 20 74 68 61 74 20 69 74 0a 20 20   such that it.  
76f0: 73 75 70 70 6f 72 74 73 20 6f 70 65 72 61 74 6f  supports operato
7700: 72 73 20 41 4e 44 20 61 6e 64 20 4e 4f 54 20 28  rs AND and NOT (
7710: 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74  in addition to t
7720: 68 65 20 75 73 75 61 6c 20 4f 52 20 61 6e 64 20  he usual OR and 
7730: 4e 45 41 52 29 0a 20 20 61 6e 64 20 61 6c 73 6f  NEAR).  and also
7740: 20 61 6c 6c 6f 77 73 20 71 75 65 72 79 20 65 78   allows query ex
7750: 70 72 65 73 73 69 6f 6e 73 20 74 6f 20 63 6f 6e  pressions to con
7760: 74 61 69 6e 20 6e 65 73 74 65 64 20 70 61 72 65  tain nested pare
7770: 6e 74 68 65 73 69 73 2e 0a 7d 0a 0a 43 4f 4d 50  nthesis..}..COMP
7780: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7790: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 5f 54  TE_ENABLE_FTS3_T
77a0: 4f 4b 45 4e 49 5a 45 52 7d 20 7b 0a 20 20 54 68  OKENIZER} {.  Th
77b0: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
77c0: 73 20 74 68 65 20 74 77 6f 2d 61 72 67 75 6d 65  s the two-argume
77d0: 6e 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68  nt version of th
77e0: 65 20 5b 66 74 73 33 5f 74 6f 6b 65 6e 69 7a 65  e [fts3_tokenize
77f0: 72 28 29 5d 0a 20 20 69 6e 74 65 72 66 61 63 65  r()].  interface
7800: 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20 61 72  .  The second ar
7810: 67 75 6d 65 6e 74 20 74 6f 20 66 74 73 33 5f 74  gument to fts3_t
7820: 6f 6b 65 6e 69 7a 65 72 28 29 20 69 73 20 73 75  okenizer() is su
7830: 70 70 6f 73 65 20 74 6f 20 62 65 20 61 0a 20 20  ppose to be a.  
7840: 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 66 75 6e  pointer to a fun
7850: 63 74 69 6f 6e 20 28 65 6e 63 6f 64 65 64 20 61  ction (encoded a
7860: 73 20 61 20 42 4c 4f 42 29 20 74 68 61 74 20 69  s a BLOB) that i
7870: 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 0a 20 20 61  mplements an.  a
7880: 70 70 6c 69 63 61 74 69 6f 6e 20 64 65 66 69 6e  pplication defin
7890: 65 64 20 74 6f 6b 65 6e 69 7a 65 72 2e 20 20 49  ed tokenizer.  I
78a0: 66 20 68 6f 73 74 69 6c 65 20 61 63 74 6f 72 73  f hostile actors
78b0: 20 61 72 65 20 61 62 6c 65 20 74 6f 20 72 75 6e   are able to run
78c0: 0a 20 20 74 68 65 20 74 77 6f 2d 61 72 67 75 6d  .  the two-argum
78d0: 65 6e 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 66  ent version of f
78e0: 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20  ts3_tokenizer() 
78f0: 77 69 74 68 20 61 6e 20 61 72 62 69 74 72 61 72  with an arbitrar
7900: 79 20 73 65 63 6f 6e 64 0a 20 20 61 72 67 75 6d  y second.  argum
7910: 65 6e 74 2c 20 74 68 65 79 20 63 6f 75 6c 64 20  ent, they could 
7920: 75 73 65 20 63 72 61 73 68 20 6f 72 20 74 61 6b  use crash or tak
7930: 65 20 63 6f 6e 74 72 6f 6c 20 6f 66 20 74 68 65  e control of the
7940: 20 70 72 6f 63 65 73 73 2e 20 0a 20 20 3c 70 3e   process. .  <p>
7950: 0a 20 20 42 65 63 61 75 73 65 20 6f 66 20 73 65  .  Because of se
7960: 63 75 72 69 74 79 20 63 6f 6e 63 65 72 6e 73 2c  curity concerns,
7970: 20 74 68 65 20 74 77 6f 2d 61 72 67 75 6d 65 6e   the two-argumen
7980: 74 20 66 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72  t fts3_tokenizer
7990: 28 29 20 66 65 61 74 75 72 65 20 0a 20 20 77 61  () feature .  wa
79a0: 73 20 64 69 73 61 62 6c 65 64 20 62 65 67 69 6e  s disabled begin
79b0: 6e 69 6e 67 20 77 69 74 68 20 5b 56 65 72 73 69  ning with [Versi
79c0: 6f 6e 20 33 2e 31 31 2e 30 5d 20 75 6e 6c 65 73  on 3.11.0] unles
79d0: 73 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  s this compile-t
79e0: 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 69 73 20  ime.  option is 
79f0: 75 73 65 64 2e 0a 20 20 5b 56 65 72 73 69 6f 6e  used..  [Version
7a00: 20 33 2e 31 32 2e 30 5d 20 61 64 64 65 64 20 74   3.12.0] added t
7a10: 68 65 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 64  he .  [sqlite3_d
7a20: 62 5f 63 6f 6e 66 69 67 5d 28 64 62 2c 5b 53 51  b_config](db,[SQ
7a30: 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
7a40: 41 42 4c 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49  ABLE_FTS3_TOKENI
7a50: 5a 45 52 5d 2c 31 2c 30 29 20 69 6e 74 65 72 66  ZER],1,0) interf
7a60: 61 63 65 0a 20 20 74 68 61 74 20 61 63 74 69 76  ace.  that activ
7a70: 61 74 65 73 20 74 68 65 20 74 77 6f 2d 61 72 67  ates the two-arg
7a80: 75 6d 65 6e 74 20 76 65 72 73 69 6f 6e 20 6f 66  ument version of
7a90: 20 5b 66 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72   [fts3_tokenizer
7aa0: 28 29 5d 0a 20 20 66 6f 72 20 61 20 73 70 65 63  ()].  for a spec
7ab0: 69 66 69 63 20 5b 64 61 74 61 62 61 73 65 20 63  ific [database c
7ac0: 6f 6e 6e 65 63 74 69 6f 6e 5d 20 61 74 20 72 75  onnection] at ru
7ad0: 6e 2d 74 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  n-time..}..COMPI
7ae0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
7af0: 45 5f 45 4e 41 42 4c 45 5f 46 54 53 34 7d 20 7b  E_ENABLE_FTS4} {
7b00: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
7b10: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 20 69  ion is defined i
7b20: 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74  n the [amalgamat
7b30: 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e 73 20 33  ion], versions 3
7b40: 20 61 6e 64 20 34 0a 20 20 6f 66 20 74 68 65 20   and 4.  of the 
7b50: 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68  full-text search
7b60: 20 65 6e 67 69 6e 65 20 69 73 20 61 64 64 65 64   engine is added
7b70: 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75   to the build au
7b80: 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a  tomatically..}..
7b90: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
7ba0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54  SQLITE_ENABLE_FT
7bb0: 53 35 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  S5} {.  When thi
7bc0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
7bd0: 6e 65 64 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c  ned in the [amal
7be0: 67 61 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73 69  gamation], versi
7bf0: 6f 6e 73 20 35 0a 20 20 6f 66 20 74 68 65 20 66  ons 5.  of the f
7c00: 75 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20  ull-text search 
7c10: 65 6e 67 69 6e 65 20 28 5b 66 74 73 35 5d 29 20  engine ([fts5]) 
7c20: 69 73 20 61 64 64 65 64 20 74 6f 20 74 68 65 20  is added to the 
7c30: 62 75 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61  build automatica
7c40: 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  lly..}..COMPILE_
7c50: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
7c60: 4e 41 42 4c 45 5f 49 43 55 7d 20 7b 0a 20 20 54  NABLE_ICU} {.  T
7c70: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
7c80: 73 20 74 68 65 20 0a 20 20 5b 68 74 74 70 3a 2f  s the .  [http:/
7c90: 2f 77 77 77 2e 69 63 75 2d 70 72 6f 6a 65 63 74  /www.icu-project
7ca0: 2e 6f 72 67 2f 20 7c 20 49 6e 74 65 72 6e 61 74  .org/ | Internat
7cb0: 69 6f 6e 61 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73  ional Components
7cc0: 20 66 6f 72 20 55 6e 69 63 6f 64 65 5d 0a 20 20   for Unicode].  
7cd0: 6f 72 20 22 49 43 55 22 20 65 78 74 65 6e 73 69  or "ICU" extensi
7ce0: 6f 6e 20 74 6f 20 53 51 4c 69 74 65 20 74 6f 20  on to SQLite to 
7cf0: 62 65 20 61 64 64 65 64 20 74 6f 20 74 68 65 20  be added to the 
7d00: 62 75 69 6c 64 2e 20 20 0a 7d 0a 0a 43 4f 4d 50  build.  .}..COMP
7d10: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7d20: 54 45 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43  TE_ENABLE_IOTRAC
7d30: 45 7d 20 7b 0a 20 20 57 68 65 6e 20 62 6f 74 68  E} {.  When both
7d40: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
7d50: 20 61 6e 64 20 74 68 65 20 5b 43 6f 6d 6d 61 6e   and the [Comman
7d60: 64 20 4c 69 6e 65 20 49 6e 74 65 72 66 61 63 65  d Line Interface
7d70: 5d 20 28 43 4c 49 29 20 61 72 65 20 62 6f 74 68  ] (CLI) are both
7d80: 20 0a 20 20 63 6f 6d 70 69 6c 65 64 20 77 69 74   .  compiled wit
7d90: 68 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 74  h this option, t
7da0: 68 65 6e 20 74 68 65 20 43 4c 49 20 70 72 6f 76  hen the CLI prov
7db0: 69 64 65 73 20 61 6e 20 65 78 74 72 61 20 63 6f  ides an extra co
7dc0: 6d 6d 61 6e 64 0a 20 20 6e 61 6d 65 64 20 22 2e  mmand.  named ".
7dd0: 69 6f 74 72 61 63 65 22 20 74 68 61 74 20 70 72  iotrace" that pr
7de0: 6f 76 69 64 65 73 20 61 20 6c 6f 77 2d 6c 65 76  ovides a low-lev
7df0: 65 6c 20 6c 6f 67 20 6f 66 20 49 2f 4f 20 61 63  el log of I/O ac
7e00: 74 69 76 69 74 79 2e 0a 20 20 54 68 69 73 20 6f  tivity..  This o
7e10: 70 74 69 6f 6e 20 69 73 20 65 78 70 65 72 69 6d  ption is experim
7e20: 65 6e 74 61 6c 20 61 6e 64 20 6d 61 79 20 62 65  ental and may be
7e30: 20 64 69 73 63 6f 6e 74 69 6e 75 65 64 20 69 6e   discontinued in
7e40: 20 61 20 66 75 74 75 72 65 20 72 65 6c 65 61 73   a future releas
7e50: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
7e60: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
7e70: 42 4c 45 5f 4a 53 4f 4e 31 7d 20 7b 0a 20 20 57  BLE_JSON1} {.  W
7e80: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
7e90: 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68  is defined in th
7ea0: 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d  e [amalgamation]
7eb0: 2c 20 74 68 65 0a 20 20 5b 4a 53 4f 4e 20 53 51  , the.  [JSON SQ
7ec0: 4c 20 66 75 6e 63 74 69 6f 6e 73 5d 20 61 72 65  L functions] are
7ed0: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75   added to the bu
7ee0: 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ild automaticall
7ef0: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
7f00: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
7f10: 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c  BLE_LOCKING_STYL
7f20: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
7f30: 6f 6e 20 65 6e 61 62 6c 65 73 20 61 64 64 69 74  on enables addit
7f40: 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 69 6e 20 74  ional logic in t
7f50: 68 65 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20  he OS interface 
7f60: 6c 61 79 65 72 20 66 6f 72 0a 20 20 4d 61 63 20  layer for.  Mac 
7f70: 4f 53 20 58 2e 20 54 68 65 20 61 64 64 69 74 69  OS X. The additi
7f80: 6f 6e 61 6c 20 6c 6f 67 69 63 20 61 74 74 65 6d  onal logic attem
7f90: 70 74 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65  pts to determine
7fa0: 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 68 65   the type of the
7fb0: 0a 20 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 69  .  underlying fi
7fc0: 6c 65 73 79 73 74 65 6d 20 61 6e 64 20 63 68 6f  lesystem and cho
7fd0: 6f 73 65 20 61 6e 64 20 61 6c 74 65 72 6e 61 74  ose and alternat
7fe0: 69 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61  ive locking stra
7ff0: 74 65 67 79 0a 20 20 74 68 61 74 20 77 6f 72 6b  tegy.  that work
8000: 73 20 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 20  s correctly for 
8010: 74 68 61 74 20 66 69 6c 65 73 79 73 74 65 6d 20  that filesystem 
8020: 74 79 70 65 2e 20 46 69 76 65 20 6c 6f 63 6b 69  type. Five locki
8030: 6e 67 20 73 74 72 61 74 65 67 69 65 73 20 0a 20  ng strategies . 
8040: 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3a 0a   are available:.
8050: 0a 20 20 3c 75 6c 3e 0a 20 20 20 20 3c 6c 69 3e  .  <ul>.    <li>
8060: 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73   POSIX locking s
8070: 74 79 6c 65 2e 20 54 68 69 73 20 69 73 20 74 68  tyle. This is th
8080: 65 20 64 65 66 61 75 6c 74 20 6c 6f 63 6b 69 6e  e default lockin
8090: 67 20 73 74 79 6c 65 20 61 6e 64 20 74 68 65 0a  g style and the.
80a0: 20 20 20 20 20 20 20 20 20 73 74 79 6c 65 20 75           style u
80b0: 73 65 64 20 62 79 20 6f 74 68 65 72 20 28 6e 6f  sed by other (no
80c0: 6e 20 4d 61 63 20 4f 53 20 58 29 20 55 6e 69 78  n Mac OS X) Unix
80d0: 65 73 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62  es. Locks are ob
80e0: 74 61 69 6e 65 64 20 61 6e 64 20 0a 20 20 20 20  tained and .    
80f0: 20 20 20 20 20 72 65 6c 65 61 73 65 64 20 75 73       released us
8100: 69 6e 67 20 74 68 65 20 66 63 6e 74 6c 28 29 20  ing the fcntl() 
8110: 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20  system call...  
8120: 20 20 3c 6c 69 3e 20 41 46 50 20 6c 6f 63 6b 69    <li> AFP locki
8130: 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c  ng style. This l
8140: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20  ocking style is 
8150: 75 73 65 64 20 66 6f 72 20 6e 65 74 77 6f 72 6b  used for network
8160: 20 66 69 6c 65 20 0a 20 20 20 20 20 20 20 20 20   file .         
8170: 73 79 73 74 65 6d 73 20 74 68 61 74 20 75 73 65  systems that use
8180: 20 74 68 65 20 41 46 50 20 28 41 70 70 6c 65 20   the AFP (Apple 
8190: 46 69 6c 69 6e 67 20 50 72 6f 74 6f 63 6f 6c 29  Filing Protocol)
81a0: 20 70 72 6f 74 6f 63 6f 6c 2e 20 4c 6f 63 6b 73   protocol. Locks
81b0: 0a 20 20 20 20 20 20 20 20 20 61 72 65 20 6f 62  .         are ob
81c0: 74 61 69 6e 65 64 20 62 79 20 63 61 6c 6c 69 6e  tained by callin
81d0: 67 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 75  g the library fu
81e0: 6e 63 74 69 6f 6e 20 5f 41 46 50 46 53 53 65 74  nction _AFPFSSet
81f0: 4c 6f 63 6b 28 29 2e 0a 0a 20 20 20 20 3c 6c 69  Lock()...    <li
8200: 3e 20 46 6c 6f 63 6b 20 6c 6f 63 6b 69 6e 67 20  > Flock locking 
8210: 73 74 79 6c 65 2e 20 54 68 69 73 20 69 73 20 75  style. This is u
8220: 73 65 64 20 66 6f 72 20 66 69 6c 65 2d 73 79 73  sed for file-sys
8230: 74 65 6d 73 20 74 68 61 74 20 64 6f 20 6e 6f 74  tems that do not
8240: 0a 20 20 20 20 20 20 20 20 20 73 75 70 70 6f 72  .         suppor
8250: 74 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20  t POSIX locking 
8260: 73 74 79 6c 65 2e 20 4c 6f 63 6b 73 20 61 72 65  style. Locks are
8270: 20 6f 62 74 61 69 6e 65 64 20 61 6e 64 20 72 65   obtained and re
8280: 6c 65 61 73 65 64 20 75 73 69 6e 67 0a 20 20 20  leased using.   
8290: 20 20 20 20 20 20 74 68 65 20 66 6c 6f 63 6b 28        the flock(
82a0: 29 20 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a  ) system call...
82b0: 20 20 20 20 3c 6c 69 3e 20 44 6f 74 2d 66 69 6c      <li> Dot-fil
82c0: 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e  e locking style.
82d0: 20 54 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74   This locking st
82e0: 79 6c 65 20 69 73 20 75 73 65 64 20 77 68 65 6e  yle is used when
82f0: 20 6e 65 69 74 68 65 72 0a 20 20 20 20 20 20 20   neither.       
8300: 20 20 66 6c 6f 63 6b 20 6e 6f 72 20 50 4f 53 49    flock nor POSI
8310: 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73  X locking styles
8320: 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 20 62   are supported b
8330: 79 20 74 68 65 20 66 69 6c 65 20 73 79 73 74 65  y the file syste
8340: 6d 2e 0a 20 20 20 20 20 20 20 20 20 44 61 74 61  m..         Data
8350: 62 61 73 65 20 6c 6f 63 6b 73 20 61 72 65 20 6f  base locks are o
8360: 62 74 61 69 6e 65 64 20 62 79 20 63 72 65 61 74  btained by creat
8370: 69 6e 67 20 61 6e 64 20 65 6e 74 72 79 20 69 6e  ing and entry in
8380: 20 74 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d   the file-system
8390: 0a 20 20 20 20 20 20 20 20 20 61 74 20 61 20 77  .         at a w
83a0: 65 6c 6c 2d 6b 6e 6f 77 6e 20 6c 6f 63 61 74 69  ell-known locati
83b0: 6f 6e 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74  on relative to t
83c0: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
83d0: 20 28 61 20 22 64 6f 74 2d 66 69 6c 65 22 29 0a   (a "dot-file").
83e0: 20 20 20 20 20 20 20 20 20 61 6e 64 20 72 65 6c           and rel
83f0: 69 6e 71 75 69 73 68 65 64 20 62 79 20 64 65 6c  inquished by del
8400: 65 74 69 6e 67 20 74 68 65 20 73 61 6d 65 20 66  eting the same f
8410: 69 6c 65 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 4e  ile...    <li> N
8420: 6f 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e  o locking style.
8430: 20 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20   If none of the 
8440: 61 62 6f 76 65 20 63 61 6e 20 62 65 20 73 75 70  above can be sup
8450: 70 6f 72 74 65 64 2c 20 74 68 69 73 20 0a 20 20  ported, this .  
8460: 20 20 20 20 20 20 20 6c 6f 63 6b 69 6e 67 20 73         locking s
8470: 74 79 6c 65 20 69 73 20 75 73 65 64 2e 20 4e 6f  tyle is used. No
8480: 20 64 61 74 61 62 61 73 65 20 6c 6f 63 6b 69 6e   database lockin
8490: 67 20 6d 65 63 68 61 6e 69 73 6d 20 69 73 20 75  g mechanism is u
84a0: 73 65 64 2e 20 57 68 65 6e 0a 20 20 20 20 20 20  sed. When.      
84b0: 20 20 20 74 68 69 73 20 73 79 73 74 65 6d 20 69     this system i
84c0: 73 20 75 73 65 64 20 69 74 20 69 73 20 6e 6f 74  s used it is not
84d0: 20 73 61 66 65 20 66 6f 72 20 61 20 73 69 6e 67   safe for a sing
84e0: 6c 65 20 64 61 74 61 62 61 73 65 20 74 6f 20 62  le database to b
84f0: 65 0a 20 20 20 20 20 20 20 20 20 61 63 63 65 73  e.         acces
8500: 73 65 64 20 62 79 20 6d 75 6c 74 69 70 6c 65 20  sed by multiple 
8510: 63 6c 69 65 6e 74 73 2e 0a 20 20 3c 2f 75 6c 3e  clients..  </ul>
8520: 0a 0a 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79  ..  Additionally
8530: 2c 20 66 69 76 65 20 65 78 74 72 61 20 5b 56 46  , five extra [VF
8540: 53 5d 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  S] implementatio
8550: 6e 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 20  ns are provided 
8560: 61 73 20 77 65 6c 6c 20 61 73 20 74 68 65 0a 20  as well as the. 
8570: 20 64 65 66 61 75 6c 74 2e 20 42 79 20 73 70 65   default. By spe
8580: 63 69 66 79 69 6e 67 20 6f 6e 65 20 6f 66 20 74  cifying one of t
8590: 68 65 20 65 78 74 72 61 20 56 46 53 20 69 6d 70  he extra VFS imp
85a0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 0a 20 20  lementations .  
85b0: 77 68 65 6e 20 63 61 6c 6c 69 6e 67 20 5b 73 71  when calling [sq
85c0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d  lite3_open_v2()]
85d0: 2c 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  , an application
85e0: 20 6d 61 79 20 62 79 70 61 73 73 20 74 68 65 20   may bypass the 
85f0: 66 69 6c 65 2d 73 79 73 74 65 6d 0a 20 20 64 65  file-system.  de
8600: 74 65 63 74 69 6f 6e 20 6c 6f 67 69 63 20 61 6e  tection logic an
8610: 64 20 65 78 70 6c 69 63 69 74 6c 79 20 73 65 6c  d explicitly sel
8620: 65 63 74 20 6f 6e 65 20 6f 66 20 74 68 65 20 61  ect one of the a
8630: 62 6f 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79  bove locking sty
8640: 6c 65 73 2e 20 54 68 65 0a 20 20 66 69 76 65 20  les. The.  five 
8650: 65 78 74 72 61 20 5b 56 46 53 5d 20 69 6d 70 6c  extra [VFS] impl
8660: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 61 72 65 20  ementations are 
8670: 63 61 6c 6c 65 64 20 22 75 6e 69 78 2d 70 6f 73  called "unix-pos
8680: 69 78 22 2c 20 22 75 6e 69 78 2d 61 66 70 22 2c  ix", "unix-afp",
8690: 0a 20 20 22 75 6e 69 78 2d 66 6c 6f 63 6b 22 2c  .  "unix-flock",
86a0: 20 22 75 6e 69 78 2d 64 6f 74 66 69 6c 65 22 20   "unix-dotfile" 
86b0: 61 6e 64 20 22 75 6e 69 78 2d 6e 6f 6e 65 22 2e  and "unix-none".
86c0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
86d0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
86e0: 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d  E_MEMORY_MANAGEM
86f0: 45 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ENT} {.  This op
8700: 74 69 6f 6e 20 61 64 64 73 20 65 78 74 72 61 20  tion adds extra 
8710: 6c 6f 67 69 63 20 74 6f 20 53 51 4c 69 74 65 20  logic to SQLite 
8720: 74 68 61 74 20 61 6c 6c 6f 77 73 20 69 74 20 74  that allows it t
8730: 6f 20 72 65 6c 65 61 73 65 20 75 6e 75 73 65 64  o release unused
8740: 0a 20 20 6d 65 6d 6f 72 79 20 75 70 6f 6e 20 72  .  memory upon r
8750: 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 6f 70  equest.  This op
8760: 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 65 6e 61  tion must be ena
8770: 62 6c 65 64 20 69 6e 20 6f 72 64 65 72 20 66 6f  bled in order fo
8780: 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33  r the.  [sqlite3
8790: 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28  _release_memory(
87a0: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20  )] interface to 
87b0: 77 6f 72 6b 2e 20 20 49 66 20 74 68 69 73 20 63  work.  If this c
87c0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f 70  ompile-time.  op
87d0: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65 64  tion is not used
87e0: 2c 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72  , the [sqlite3_r
87f0: 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d  elease_memory()]
8800: 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 61 20   interface is a 
8810: 0a 20 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d  .  no-op..}..COM
8820: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
8830: 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59  ITE_ENABLE_MEMSY
8840: 53 33 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  S3} {.  This opt
8850: 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64  ion includes cod
8860: 65 20 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74  e in SQLite that
8870: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61   implements an a
8880: 6c 74 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d  lternative.  mem
8890: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20  ory allocator.  
88a0: 54 68 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65  This alternative
88b0: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
88c0: 72 20 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65  r is only engage
88d0: 64 0a 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51  d.  when the [SQ
88e0: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50  LITE_CONFIG_HEAP
88f0: 5d 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c  ] option to [sql
8900: 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69  ite3_config()] i
8910: 73 20 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70  s used to.  supp
8920: 6c 79 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b  ly a large chunk
8930: 20 6f 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20   of memory from 
8940: 77 68 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79  which all memory
8950: 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65   allocations are
8960: 0a 20 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20  .  taken..  The 
8970: 4d 45 4d 53 59 53 33 20 6d 65 6d 6f 72 79 20 61  MEMSYS3 memory a
8980: 6c 6c 6f 63 61 74 6f 72 20 75 73 65 73 20 61 20  llocator uses a 
8990: 68 79 62 72 69 64 20 61 6c 6c 6f 63 61 74 69 6f  hybrid allocatio
89a0: 6e 20 61 6c 67 6f 72 69 74 68 6d 20 0a 20 20 70  n algorithm .  p
89b0: 61 74 74 65 72 6e 65 64 20 61 66 74 65 72 20 64  atterned after d
89c0: 6c 6d 61 6c 6c 6f 63 28 29 2e 20 20 20 4f 6e 6c  lmalloc().   Onl
89d0: 79 20 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f  y one of SQLITE_
89e0: 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 20 61  ENABLE_MEMSYS3 a
89f0: 6e 64 20 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41  nd .  SQLITE_ENA
8a00: 42 4c 45 5f 4d 45 4d 53 59 53 35 20 6d 61 79 20  BLE_MEMSYS5 may 
8a10: 62 65 20 65 6e 61 62 6c 65 64 20 61 74 20 6f 6e  be enabled at on
8a20: 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ce..}..COMPILE_O
8a30: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
8a40: 41 42 4c 45 5f 4d 45 4d 53 59 53 35 7d 20 7b 0a  ABLE_MEMSYS5} {.
8a50: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e    This option in
8a60: 63 6c 75 64 65 73 20 63 6f 64 65 20 69 6e 20 53  cludes code in S
8a70: 51 4c 69 74 65 20 74 68 61 74 20 69 6d 70 6c 65  QLite that imple
8a80: 6d 65 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e 61  ments an alterna
8a90: 74 69 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c  tive.  memory al
8aa0: 6c 6f 63 61 74 6f 72 2e 20 20 54 68 69 73 20 61  locator.  This a
8ab0: 6c 74 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72  lternative memor
8ac0: 79 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f  y allocator is o
8ad0: 6e 6c 79 20 65 6e 67 61 67 65 64 0a 20 20 77 68  nly engaged.  wh
8ae0: 65 6e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43  en the [SQLITE_C
8af0: 4f 4e 46 49 47 5f 48 45 41 50 5d 20 6f 70 74 69  ONFIG_HEAP] opti
8b00: 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  on to [sqlite3_c
8b10: 6f 6e 66 69 67 28 29 5d 20 69 73 20 75 73 65 64  onfig()] is used
8b20: 20 74 6f 0a 20 20 73 75 70 70 6c 79 20 61 20 6c   to.  supply a l
8b30: 61 72 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65  arge chunk of me
8b40: 6d 6f 72 79 20 66 72 6f 6d 20 77 68 69 63 68 20  mory from which 
8b50: 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  all memory alloc
8b60: 61 74 69 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b  ations are.  tak
8b70: 65 6e 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59 53  en..  The MEMSYS
8b80: 35 20 6d 6f 64 75 6c 65 20 72 6f 75 6e 64 73 20  5 module rounds 
8b90: 61 6c 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20  all allocations 
8ba0: 75 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70  up to the next p
8bb0: 6f 77 65 72 0a 20 20 6f 66 20 74 77 6f 20 61 6e  ower.  of two an
8bc0: 64 20 75 73 65 73 20 61 20 66 69 72 73 74 2d 66  d uses a first-f
8bd0: 69 74 2c 20 62 75 64 64 79 2d 61 6c 6c 6f 63 61  it, buddy-alloca
8be0: 74 6f 72 20 61 6c 67 6f 72 69 74 68 6d 0a 20 20  tor algorithm.  
8bf0: 74 68 61 74 20 70 72 6f 76 69 64 65 73 20 73 74  that provides st
8c00: 72 6f 6e 67 20 67 75 61 72 61 6e 74 65 65 73 20  rong guarantees 
8c10: 61 67 61 69 6e 73 74 20 66 72 61 67 6d 65 6e 74  against fragment
8c20: 61 74 69 6f 6e 20 61 6e 64 20 62 72 65 61 6b 64  ation and breakd
8c30: 6f 77 6e 0a 20 20 73 75 62 6a 65 63 74 20 74 6f  own.  subject to
8c40: 20 63 65 72 74 61 69 6e 20 6f 70 65 72 61 74 69   certain operati
8c50: 6e 67 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a  ng constraints..
8c60: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
8c70: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
8c80: 5f 50 52 45 55 50 44 41 54 45 5f 48 4f 4f 4b 7d  _PREUPDATE_HOOK}
8c90: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
8ca0: 20 65 6e 61 62 6c 65 73 20 0a 20 20 5b 73 71 6c   enables .  [sql
8cb0: 69 74 65 33 5f 70 72 65 75 70 64 61 74 65 5f 68  ite3_preupdate_h
8cc0: 6f 6f 6b 7c 73 65 76 65 72 61 6c 20 6e 65 77 20  ook|several new 
8cd0: 41 50 49 73 5d 20 74 68 61 74 20 70 72 6f 76 69  APIs] that provi
8ce0: 64 65 20 63 61 6c 6c 62 61 63 6b 73 0a 20 20 70  de callbacks.  p
8cf0: 72 69 6f 72 20 74 6f 20 61 6e 79 20 63 68 61 6e  rior to any chan
8d00: 67 65 20 74 6f 20 61 20 5b 72 6f 77 69 64 20 74  ge to a [rowid t
8d10: 61 62 6c 65 5d 2e 20 20 54 68 65 20 63 61 6c 6c  able].  The call
8d20: 62 61 63 6b 73 20 63 61 6e 20 62 65 20 75 73 65  backs can be use
8d30: 64 0a 20 20 74 6f 20 72 65 63 6f 72 64 20 74 68  d.  to record th
8d40: 65 20 73 74 61 74 65 20 6f 66 20 74 68 65 20 72  e state of the r
8d50: 6f 77 20 62 65 66 6f 72 65 20 74 68 65 20 63 68  ow before the ch
8d60: 61 6e 67 65 20 6f 63 63 75 72 73 2e 0a 20 20 3c  ange occurs..  <
8d70: 70 3e 54 68 65 20 61 63 74 69 6f 6e 20 6f 66 20  p>The action of 
8d80: 74 68 65 20 70 72 65 75 70 64 61 74 65 20 68 6f  the preupdate ho
8d90: 6f 6b 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f  ok is similar to
8da0: 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f   the.  [sqlite3_
8db0: 75 70 64 61 74 65 5f 68 6f 6f 6b 7c 75 70 64 61  update_hook|upda
8dc0: 74 65 20 68 6f 6f 6b 5d 20 65 78 63 65 70 74 20  te hook] except 
8dd0: 74 68 61 74 20 74 68 65 20 63 61 6c 6c 62 61 63  that the callbac
8de0: 6b 20 69 73 0a 20 20 69 6e 76 6f 6b 65 64 20 62  k is.  invoked b
8df0: 65 66 6f 72 65 20 74 68 65 20 63 68 61 6e 67 65  efore the change
8e00: 2c 20 6e 6f 74 20 61 66 74 65 72 77 61 72 64 73  , not afterwards
8e10: 2c 20 61 6e 64 20 74 68 65 20 70 72 65 75 70 64  , and the preupd
8e20: 61 74 65 0a 20 20 68 6f 6f 6b 20 69 6e 74 65 72  ate.  hook inter
8e30: 66 61 63 65 73 20 61 72 65 20 6f 6d 69 74 74 65  faces are omitte
8e40: 64 20 75 6e 6c 65 73 73 20 74 68 69 73 20 63 6f  d unless this co
8e50: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
8e60: 6e 20 69 73 0a 20 20 75 73 65 64 2e 0a 20 20 3c  n is.  used..  <
8e70: 70 3e 54 68 65 20 70 72 65 75 70 64 61 74 65 20  p>The preupdate 
8e80: 68 6f 6f 6b 20 69 6e 74 65 72 66 61 63 65 73 20  hook interfaces 
8e90: 77 65 72 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20  were originally 
8ea0: 61 64 64 65 64 20 74 6f 0a 20 20 73 75 70 70 6f  added to.  suppo
8eb0: 72 74 20 74 68 65 20 5b 73 65 73 73 69 6f 6e 5d  rt the [session]
8ec0: 20 65 78 74 65 6e 73 69 6f 6e 2e 0a 7d 0a 0a 43   extension..}..C
8ed0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8ee0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52 42 55  QLITE_ENABLE_RBU
8ef0: 7d 20 7b 0a 20 20 45 6e 61 62 6c 65 20 74 68 65  } {.  Enable the
8f00: 20 63 6f 64 65 20 74 68 65 20 69 6d 70 6c 65 6d   code the implem
8f10: 65 6e 74 73 20 74 68 65 20 5b 52 42 55 20 65 78  ents the [RBU ex
8f20: 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d  tension]..}..COM
8f30: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
8f40: 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45  ITE_ENABLE_RTREE
8f50: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
8f60: 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  n causes SQLite 
8f70: 74 6f 20 69 6e 63 6c 75 64 65 20 73 75 70 70 6f  to include suppo
8f80: 72 74 20 66 6f 72 20 74 68 65 0a 20 20 5b 72 74  rt for the.  [rt
8f90: 72 65 65 20 7c 20 52 2a 54 72 65 65 20 69 6e 64  ree | R*Tree ind
8fa0: 65 78 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d  ex extension]..}
8fb0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8fc0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
8fd0: 53 45 53 53 49 4f 4e 7d 20 7b 0a 20 20 54 68 69  SESSION} {.  Thi
8fe0: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
8ff0: 20 74 68 65 20 5b 73 65 73 73 69 6f 6e 20 65 78   the [session ex
9000: 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d  tension]..}..COM
9010: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
9020: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 4d 54 5f  ITE_ENABLE_STMT_
9030: 53 43 41 4e 53 54 41 54 55 53 7d 20 7b 0a 20 20  SCANSTATUS} {.  
9040: 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62  This option enab
9050: 6c 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33  les the [sqlite3
9060: 5f 73 74 6d 74 5f 73 63 61 6e 73 74 61 74 75 73  _stmt_scanstatus
9070: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 20 20  ()] interface.  
9080: 54 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 73  The.  [sqlite3_s
9090: 74 6d 74 5f 73 63 61 6e 73 74 61 74 75 73 28 29  tmt_scanstatus()
90a0: 5d 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 6e  ] interface is n
90b0: 6f 72 6d 61 6c 6c 79 20 6f 6d 69 74 74 65 64 20  ormally omitted 
90c0: 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 0a 20  from the build. 
90d0: 20 62 65 63 61 75 73 65 20 69 74 20 69 6d 70 6f   because it impo
90e0: 73 65 73 20 61 20 73 6d 61 6c 6c 20 70 65 72 66  ses a small perf
90f0: 6f 72 6d 61 6e 63 65 20 70 65 6e 61 6c 74 79 2c  ormance penalty,
9100: 20 65 76 65 6e 20 6f 6e 20 73 74 61 74 65 6d 65   even on stateme
9110: 6e 74 73 20 74 68 61 74 0a 20 20 64 6f 20 6e 6f  nts that.  do no
9120: 74 20 75 73 65 20 74 68 65 20 66 65 61 74 75 72  t use the featur
9130: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
9140: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 52 54 52  TION {SQLITE_RTR
9150: 45 45 5f 49 4e 54 5f 4f 4e 4c 59 7d 20 7b 0a 20  EE_INT_ONLY} {. 
9160: 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20   If this option 
9170: 69 73 20 75 73 65 64 20 74 6f 67 65 74 68 65 72  is used together
9180: 20 77 69 74 68 20 5b 53 51 4c 49 54 45 5f 45 4e   with [SQLITE_EN
9190: 41 42 4c 45 5f 52 54 52 45 45 5d 20 74 68 65 6e  ABLE_RTREE] then
91a0: 20 74 68 65 0a 20 20 5b 72 74 72 65 65 20 7c 20   the.  [rtree | 
91b0: 52 2a 54 72 65 65 20 65 78 74 65 6e 73 69 6f 6e  R*Tree extension
91c0: 5d 20 77 69 6c 6c 20 6f 6e 6c 79 20 73 74 6f 72  ] will only stor
91d0: 65 20 33 32 2d 62 69 74 20 73 69 67 6e 65 64 20  e 32-bit signed 
91e0: 69 6e 74 65 67 65 72 0a 20 20 63 6f 6f 72 64 69  integer.  coordi
91f0: 6e 61 74 65 73 20 61 6e 64 20 61 6c 6c 20 69 6e  nates and all in
9200: 74 65 72 6e 61 6c 20 63 6f 6d 70 75 74 61 74 69  ternal computati
9210: 6f 6e 73 20 77 69 6c 6c 20 62 65 20 64 6f 6e 65  ons will be done
9220: 20 75 73 69 6e 67 20 69 6e 74 65 67 65 72 73 0a   using integers.
9230: 20 20 69 6e 73 74 65 61 64 20 6f 66 20 66 6c 6f    instead of flo
9240: 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62  ating point numb
9250: 65 72 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ers..}..COMPILE_
9260: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
9270: 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 7d 20 7b 0a  NABLE_SQLLOG} {.
9280: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
9290: 61 62 6c 65 73 20 65 78 74 72 61 20 63 6f 64 65  ables extra code
92a0: 20 28 65 73 70 65 63 69 61 6c 6c 79 20 74 68 65   (especially the
92b0: 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
92c0: 53 51 4c 4c 4f 47 5d 0a 20 20 6f 70 74 69 6f 6e  SQLLOG].  option
92d0: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e   to [sqlite3_con
92e0: 66 69 67 28 29 5d 29 20 74 68 61 74 20 63 61 6e  fig()]) that can
92f0: 20 62 65 20 75 73 65 64 20 74 6f 20 63 72 65 61   be used to crea
9300: 74 65 20 6c 6f 67 73 20 6f 66 20 61 6c 6c 0a 20  te logs of all. 
9310: 20 53 51 4c 69 74 65 20 70 72 6f 63 65 73 73 69   SQLite processi
9320: 6e 67 20 70 65 72 66 6f 72 6d 65 64 20 62 79 20  ng performed by 
9330: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20  an application. 
9340: 20 54 68 65 73 65 20 6c 6f 67 73 20 63 61 6e 20   These logs can 
9350: 62 65 20 75 73 65 66 75 6c 0a 20 20 69 6e 20 64  be useful.  in d
9360: 6f 69 6e 67 20 6f 66 66 2d 6c 69 6e 65 20 61 6e  oing off-line an
9370: 61 6c 79 73 69 73 20 6f 66 20 74 68 65 20 62 65  alysis of the be
9380: 68 61 76 69 6f 72 20 6f 66 20 61 6e 20 61 70 70  havior of an app
9390: 6c 69 63 61 74 69 6f 6e 2c 20 61 6e 64 20 65 73  lication, and es
93a0: 70 65 63 69 61 6c 6c 79 0a 20 20 66 6f 72 20 70  pecially.  for p
93b0: 65 72 66 6f 72 6d 61 6e 63 65 20 61 6e 61 6c 79  erformance analy
93c0: 73 69 73 2e 20 20 49 6e 20 6f 72 64 65 72 20 66  sis.  In order f
93d0: 6f 72 20 74 68 65 20 53 51 4c 49 54 45 5f 45 4e  or the SQLITE_EN
93e0: 41 42 4c 45 5f 53 51 4c 4c 4f 47 20 6f 70 74 69  ABLE_SQLLOG opti
93f0: 6f 6e 20 74 6f 20 0a 20 20 62 65 20 75 73 65 66  on to .  be usef
9400: 75 6c 2c 20 73 6f 6d 65 20 65 78 74 72 61 20 63  ul, some extra c
9410: 6f 64 65 20 69 73 20 72 65 71 75 69 72 65 64 2e  ode is required.
9420: 20 20 54 68 65 20 0a 20 20 3c 61 20 68 72 65 66    The .  <a href
9430: 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 73 71 6c  ="http://www.sql
9440: 69 74 65 2e 6f 72 67 2f 73 72 63 2f 64 6f 63 2f  ite.org/src/doc/
9450: 74 72 75 6e 6b 2f 73 72 63 2f 74 65 73 74 5f 73  trunk/src/test_s
9460: 71 6c 6c 6f 67 2e 63 22 3e 22 74 65 73 74 5f 73  qllog.c">"test_s
9470: 71 6c 6c 6f 67 2e 63 22 3c 2f 61 3e 0a 20 20 73  qllog.c"</a>.  s
9480: 6f 75 72 63 65 20 63 6f 64 65 0a 20 20 66 69 6c  ource code.  fil
9490: 65 20 69 6e 20 74 68 65 20 53 51 4c 69 74 65 20  e in the SQLite 
94a0: 73 6f 75 72 63 65 20 74 72 65 65 20 69 73 20 61  source tree is a
94b0: 20 77 6f 72 6b 69 6e 67 20 65 78 61 6d 70 6c 65   working example
94c0: 20 6f 66 20 74 68 65 20 72 65 71 75 69 72 65 64   of the required
94d0: 20 65 78 74 72 61 0a 20 20 63 6f 64 65 2e 20 20   extra.  code.  
94e0: 4f 6e 20 75 6e 69 78 20 61 6e 64 20 77 69 6e 64  On unix and wind
94f0: 6f 77 73 20 73 79 73 74 65 6d 73 2c 20 61 20 64  ows systems, a d
9500: 65 76 65 6c 6f 70 65 72 20 63 61 6e 20 61 70 70  eveloper can app
9510: 65 6e 64 20 74 68 65 20 74 65 78 74 20 6f 66 20  end the text of 
9520: 74 68 65 0a 20 20 22 74 65 73 74 5f 73 71 6c 6c  the.  "test_sqll
9530: 6f 67 2e 63 22 20 73 6f 75 72 63 65 20 63 6f 64  og.c" source cod
9540: 65 20 66 69 6c 65 20 74 6f 20 74 68 65 20 65 6e  e file to the en
9550: 64 20 6f 66 20 61 6e 20 22 73 71 6c 69 74 65 33  d of an "sqlite3
9560: 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  .c" amalgamation
9570: 2c 0a 20 20 72 65 63 6f 6d 70 69 6c 65 20 74 68  ,.  recompile th
9580: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 75 73  e application us
9590: 69 6e 67 20 74 68 65 20 2d 44 53 51 4c 49 54 45  ing the -DSQLITE
95a0: 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 20 6f  _ENABLE_SQLLOG o
95b0: 70 74 69 6f 6e 2c 20 74 68 65 6e 20 0a 20 20 63  ption, then .  c
95c0: 6f 6e 74 72 6f 6c 20 6c 6f 67 67 69 6e 67 20 75  ontrol logging u
95d0: 73 69 6e 67 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  sing environment
95e0: 20 76 61 72 69 61 62 6c 65 73 2e 20 20 53 65 65   variables.  See
95f0: 20 74 68 65 20 68 65 61 64 65 72 20 63 6f 6d 6d   the header comm
9600: 65 6e 74 20 6f 6e 20 0a 20 20 74 68 65 20 22 74  ent on .  the "t
9610: 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f  est_sqllog.c" so
9620: 75 72 63 65 20 66 69 6c 65 20 66 6f 72 20 61 64  urce file for ad
9630: 64 69 74 69 6f 6e 61 6c 20 64 65 74 61 69 6c 2e  ditional detail.
9640: 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50    .}..COMPILE_OP
9650: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
9660: 42 4c 45 5f 53 54 41 54 32 7d 20 7b 0a 20 20 54  BLE_STAT2} {.  T
9670: 68 69 73 20 6f 70 74 69 6f 6e 20 75 73 65 64 20  his option used 
9680: 74 6f 20 63 61 75 73 65 20 74 68 65 20 5b 41 4e  to cause the [AN
9690: 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 74  ALYZE] command t
96a0: 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 69 6e 64 65  o collect.  inde
96b0: 78 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61  x histogram data
96c0: 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74   in the <b>sqlit
96d0: 65 5f 73 74 61 74 32 3c 2f 62 3e 20 74 61 62 6c  e_stat2</b> tabl
96e0: 65 2e 20 20 42 75 74 20 74 68 61 74 0a 20 20 66  e.  But that.  f
96f0: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 77 61 73  unctionality was
9700: 20 73 75 70 65 72 63 65 64 65 64 20 62 79 20 5b   superceded by [
9710: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
9720: 41 54 33 5d 20 61 73 20 6f 66 0a 20 20 53 51 4c  AT3] as of.  SQL
9730: 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e  ite version 3.7.
9740: 39 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 45  9.  The SQLITE_E
9750: 4e 41 42 4c 45 5f 53 54 41 54 32 20 63 6f 6d 70  NABLE_STAT2 comp
9760: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 0a  ile-time option.
9770: 20 20 69 73 20 6e 6f 77 20 61 20 6e 6f 2d 6f 70    is now a no-op
9780: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
9790: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
97a0: 4c 45 5f 53 54 41 54 33 7d 20 7b 0a 20 20 54 68  LE_STAT3} {.  Th
97b0: 69 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 61  is option adds a
97c0: 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20  dditional logic 
97d0: 74 6f 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d  to the [ANALYZE]
97e0: 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 6f 0a   command and to.
97f0: 20 20 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61    the [query pla
9800: 6e 6e 65 72 5d 20 74 68 61 74 20 63 61 6e 20 68  nner] that can h
9810: 65 6c 70 20 53 51 4c 69 74 65 20 74 6f 20 63 68  elp SQLite to ch
9820: 6f 73 65 20 61 20 62 65 74 74 65 72 20 71 75 65  ose a better que
9830: 72 79 20 70 6c 61 6e 0a 20 20 75 6e 64 65 72 20  ry plan.  under 
9840: 63 65 72 74 61 69 6e 20 73 69 74 75 61 74 69 6f  certain situatio
9850: 6e 73 2e 20 20 54 68 65 20 5b 41 4e 41 4c 59 5a  ns.  The [ANALYZ
9860: 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 6e  E] command is en
9870: 68 61 6e 63 65 64 20 74 6f 20 63 6f 6c 6c 65 63  hanced to collec
9880: 74 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61  t.  histogram da
9890: 74 61 20 66 72 6f 6d 20 74 68 65 20 6c 65 66 74  ta from the left
98a0: 2d 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20  -most column of 
98b0: 65 61 63 68 20 69 6e 64 65 78 20 61 6e 64 20 73  each index and s
98c0: 74 6f 72 65 20 74 68 61 74 20 64 61 74 61 0a 20  tore that data. 
98d0: 20 69 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 5f   in the [sqlite_
98e0: 73 74 61 74 33 5d 20 74 61 62 6c 65 2e 20 20 54  stat3] table.  T
98f0: 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72  he query planner
9900: 20 77 69 6c 6c 20 74 68 65 6e 20 75 73 65 20 74   will then use t
9910: 68 65 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64  he.  histogram d
9920: 61 74 61 20 74 6f 20 68 65 6c 70 20 69 74 20 6d  ata to help it m
9930: 61 6b 65 20 62 65 74 74 65 72 20 69 6e 64 65 78  ake better index
9940: 20 63 68 6f 69 63 65 73 2e 20 20 4e 6f 74 65 2c   choices.  Note,
9950: 20 68 6f 77 65 76 65 72 2c 0a 20 20 74 68 61 74   however,.  that
9960: 20 74 68 65 20 75 73 65 20 6f 66 20 68 69 73 74   the use of hist
9970: 6f 67 72 61 6d 20 64 61 74 61 20 69 6e 20 71 75  ogram data in qu
9980: 65 72 79 20 70 6c 61 6e 6e 65 72 20 76 69 6f 6c  ery planner viol
9990: 61 74 65 73 20 74 68 65 0a 20 20 5b 71 75 65 72  ates the.  [quer
99a0: 79 20 70 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c  y planner stabil
99b0: 69 74 79 20 67 75 61 72 61 6e 74 65 65 5d 20 77  ity guarantee] w
99c0: 68 69 63 68 20 69 73 20 69 6d 70 6f 72 74 61 6e  hich is importan
99d0: 74 20 74 6f 20 73 6f 6d 65 20 61 70 70 6c 69 63  t to some applic
99e0: 61 74 69 6f 6e 73 2e 0a 20 20 3c 70 3e 0a 7d 0a  ations..  <p>.}.
99f0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
9a00: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  {SQLITE_ENABLE_S
9a10: 54 41 54 34 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TAT4} {.  This o
9a20: 70 74 69 6f 6e 20 61 64 64 73 20 61 64 64 69 74  ption adds addit
9a30: 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 74 6f 20 74  ional logic to t
9a40: 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d  he [ANALYZE] com
9a50: 6d 61 6e 64 20 61 6e 64 20 74 6f 0a 20 20 74 68  mand and to.  th
9a60: 65 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72  e [query planner
9a70: 5d 20 74 68 61 74 20 63 61 6e 20 68 65 6c 70 20  ] that can help 
9a80: 53 51 4c 69 74 65 20 74 6f 20 63 68 6f 73 65 20  SQLite to chose 
9a90: 61 20 62 65 74 74 65 72 20 71 75 65 72 79 20 70  a better query p
9aa0: 6c 61 6e 0a 20 20 75 6e 64 65 72 20 63 65 72 74  lan.  under cert
9ab0: 61 69 6e 20 73 69 74 75 61 74 69 6f 6e 73 2e 20  ain situations. 
9ac0: 20 54 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63   The [ANALYZE] c
9ad0: 6f 6d 6d 61 6e 64 20 69 73 20 65 6e 68 61 6e 63  ommand is enhanc
9ae0: 65 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a 20 20  ed to collect.  
9af0: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66  histogram data f
9b00: 72 6f 6d 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 20  rom all columns 
9b10: 6f 66 20 65 76 65 72 79 20 69 6e 64 65 78 20 61  of every index a
9b20: 6e 64 20 73 74 6f 72 65 20 74 68 61 74 20 64 61  nd store that da
9b30: 74 61 0a 20 20 69 6e 20 74 68 65 20 5b 73 71 6c  ta.  in the [sql
9b40: 69 74 65 5f 73 74 61 74 34 5d 20 74 61 62 6c 65  ite_stat4] table
9b50: 2e 20 20 54 68 65 20 71 75 65 72 79 20 70 6c 61  .  The query pla
9b60: 6e 6e 65 72 20 77 69 6c 6c 20 74 68 65 6e 20 75  nner will then u
9b70: 73 65 20 74 68 65 0a 20 20 68 69 73 74 6f 67 72  se the.  histogr
9b80: 61 6d 20 64 61 74 61 20 74 6f 20 68 65 6c 70 20  am data to help 
9b90: 69 74 20 6d 61 6b 65 20 62 65 74 74 65 72 20 69  it make better i
9ba0: 6e 64 65 78 20 63 68 6f 69 63 65 73 2e 20 20 54  ndex choices.  T
9bb0: 68 65 20 64 6f 77 6e 73 69 64 65 20 6f 66 0a 20  he downside of. 
9bc0: 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   this compile-ti
9bd0: 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 74 68 61  me option is tha
9be0: 74 20 69 74 20 76 69 6f 6c 61 74 65 73 20 74 68  t it violates th
9bf0: 65 0a 20 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e  e.  [query plann
9c00: 65 72 20 73 74 61 62 69 6c 69 74 79 20 67 75 61  er stability gua
9c10: 72 61 6e 74 65 65 5d 20 6d 61 6b 69 6e 67 20 69  rantee] making i
9c20: 74 20 6d 6f 72 65 20 64 69 66 66 69 63 75 6c 74  t more difficult
9c30: 20 74 6f 20 65 6e 73 75 72 65 0a 20 20 63 6f 6e   to ensure.  con
9c40: 73 69 73 74 65 6e 74 20 70 65 72 66 6f 72 6d 61  sistent performa
9c50: 6e 63 65 20 69 6e 20 6d 61 73 73 2d 70 72 6f 64  nce in mass-prod
9c60: 75 63 65 64 20 61 70 70 6c 69 63 61 74 69 6f 6e  uced application
9c70: 73 2e 0a 20 20 3c 70 3e 0a 20 20 53 51 4c 49 54  s..  <p>.  SQLIT
9c80: 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34 20 69  E_ENABLE_STAT4 i
9c90: 73 20 61 6e 20 65 6e 68 61 6e 63 65 6d 65 6e 74  s an enhancement
9ca0: 20 6f 66 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42   of [SQLITE_ENAB
9cb0: 4c 45 5f 53 54 41 54 33 5d 2e 20 20 53 54 41 54  LE_STAT3].  STAT
9cc0: 33 0a 20 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65  3.  only recorde
9cd0: 64 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61  d histogram data
9ce0: 20 66 6f 72 20 74 68 65 20 6c 65 66 74 2d 6d 6f   for the left-mo
9cf0: 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20 65 61 63  st column of eac
9d00: 68 20 69 6e 64 65 78 0a 20 20 77 68 65 72 65 61  h index.  wherea
9d10: 73 20 74 68 65 20 53 54 41 54 34 20 65 6e 68 61  s the STAT4 enha
9d20: 6e 63 65 6d 65 6e 74 20 72 65 63 6f 72 64 73 20  ncement records 
9d30: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66  histogram data f
9d40: 72 6f 6d 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 0a  rom all columns.
9d50: 20 20 6f 66 20 65 61 63 68 20 69 6e 64 65 78 2e    of each index.
9d60: 0a 20 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 45  .  The [SQLITE_E
9d70: 4e 41 42 4c 45 5f 53 54 41 54 33 5d 20 63 6f 6d  NABLE_STAT3] com
9d80: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
9d90: 20 69 73 20 61 20 6e 6f 2d 6f 70 20 61 6e 64 20   is a no-op and 
9da0: 69 73 20 69 67 6e 6f 72 65 64 0a 20 20 69 66 20  is ignored.  if 
9db0: 74 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  the SQLITE_ENABL
9dc0: 45 5f 53 54 41 54 34 20 63 6f 6d 70 69 6c 65 2d  E_STAT4 compile-
9dd0: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 75  time option is u
9de0: 73 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  sed..}..COMPILE_
9df0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
9e00: 4e 41 42 4c 45 5f 54 52 45 45 5f 45 58 50 4c 41  NABLE_TREE_EXPLA
9e10: 49 4e 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d  IN} {.  This com
9e20: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
9e30: 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 75 73   is no longer us
9e40: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
9e50: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
9e60: 41 42 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45  ABLE_UPDATE_DELE
9e70: 54 45 5f 4c 49 4d 49 54 7d 20 7b 0a 20 20 54 68  TE_LIMIT} {.  Th
9e80: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
9e90: 73 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 4f 52  s an optional OR
9ea0: 44 45 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54  DER BY and LIMIT
9eb0: 20 63 6c 61 75 73 65 20 6f 6e 20 0a 20 20 5b 55   clause on .  [U
9ec0: 50 44 41 54 45 5d 20 61 6e 64 20 5b 44 45 4c 45  PDATE] and [DELE
9ed0: 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a  TE] statements..
9ee0: 0a 20 20 3c 70 3e 49 66 20 74 68 69 73 20 6f 70  .  <p>If this op
9ef0: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
9f00: 20 74 68 65 6e 20 69 74 20 6d 75 73 74 20 61 6c   then it must al
9f10: 73 6f 20 62 65 20 0a 20 20 64 65 66 69 6e 65 64  so be .  defined
9f20: 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20   when using the 
9f30: 27 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20  'lemon' tool to 
9f40: 67 65 6e 65 72 61 74 65 20 61 20 70 61 72 73 65  generate a parse
9f50: 2e 63 0a 20 20 66 69 6c 65 2e 20 42 65 63 61 75  .c.  file. Becau
9f60: 73 65 20 6f 66 20 74 68 69 73 2c 20 74 68 69 73  se of this, this
9f70: 20 6f 70 74 69 6f 6e 20 6d 61 79 20 6f 6e 6c 79   option may only
9f80: 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 74 68   be used when th
9f90: 65 20 6c 69 62 72 61 72 79 20 69 73 20 62 75 69  e library is bui
9fa0: 6c 74 0a 20 20 66 72 6f 6d 20 73 6f 75 72 63 65  lt.  from source
9fb0: 2c 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b  , not from the [
9fc0: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72  amalgamation] or
9fd0: 20 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63   from the collec
9fe0: 74 69 6f 6e 20 6f 66 0a 20 20 70 72 65 2d 70 61  tion of.  pre-pa
9ff0: 63 6b 61 67 65 64 20 43 20 66 69 6c 65 73 20 70  ckaged C files p
a000: 72 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d  rovided for non-
a010: 55 6e 69 78 20 6c 69 6b 65 20 70 6c 61 74 66 6f  Unix like platfo
a020: 72 6d 73 20 6f 6e 20 74 68 65 20 77 65 62 73 69  rms on the websi
a030: 74 65 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f  te..  </p>.}..CO
a040: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
a050: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e  LITE_ENABLE_UNKN
a060: 4f 57 4e 5f 53 51 4c 5f 46 55 4e 43 54 49 4f 4e  OWN_SQL_FUNCTION
a070: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 65 20 53  } {.  When the S
a080: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b  QLITE_ENABLE_UNK
a090: 4e 4f 57 4e 5f 53 51 4c 5f 46 55 4e 43 54 49 4f  NOWN_SQL_FUNCTIO
a0a0: 4e 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  N compile-time o
a0b0: 70 74 69 6f 6e 20 69 73 0a 20 20 61 63 74 69 76  ption is.  activ
a0c0: 61 74 65 64 2c 20 53 51 4c 69 74 65 20 77 69 6c  ated, SQLite wil
a0d0: 6c 20 73 75 70 70 72 65 73 73 20 22 75 6e 6b 6e  l suppress "unkn
a0e0: 6f 77 6e 20 66 75 6e 63 74 69 6f 6e 22 20 65 72  own function" er
a0f0: 72 6f 72 73 20 77 68 65 6e 20 72 75 6e 6e 69 6e  rors when runnin
a100: 67 0a 20 20 61 6e 20 5b 45 58 50 4c 41 49 4e 5d  g.  an [EXPLAIN]
a110: 20 6f 72 20 5b 45 58 50 4c 41 49 4e 20 51 55 45   or [EXPLAIN QUE
a120: 52 59 20 50 4c 41 4e 5d 2e 20 20 49 6e 73 74 65  RY PLAN].  Inste
a130: 61 64 20 6f 66 20 74 68 72 6f 77 69 6e 67 20 61  ad of throwing a
a140: 6e 20 65 72 72 6f 72 2c 0a 20 20 53 51 4c 69 74  n error,.  SQLit
a150: 65 20 77 69 6c 6c 20 69 6e 73 65 72 74 20 61 20  e will insert a 
a160: 73 75 62 73 74 69 74 75 74 65 20 6e 6f 2d 6f 70  substitute no-op
a170: 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 64 20   function named 
a180: 22 75 6e 6b 6e 6f 77 6e 28 29 22 2e 0a 20 20 54  "unknown()"..  T
a190: 68 65 20 73 75 62 73 74 69 74 75 74 69 6f 6e 20  he substitution 
a1a0: 6f 66 20 22 75 6e 6b 6e 6f 77 6e 28 29 22 20 69  of "unknown()" i
a1b0: 6e 20 70 6c 61 63 65 20 6f 66 20 75 6e 72 65 63  n place of unrec
a1c0: 6f 67 6e 69 7a 65 64 20 66 75 6e 63 74 69 6f 6e  ognized function
a1d0: 73 0a 20 20 6f 6e 6c 79 20 6f 63 63 75 72 73 20  s.  only occurs 
a1e0: 6f 6e 20 5b 45 58 50 4c 41 49 4e 5d 20 61 6e 64  on [EXPLAIN] and
a1f0: 20 5b 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20   [EXPLAIN QUERY 
a200: 50 4c 41 4e 5d 2c 20 6e 6f 74 20 6f 6e 20 6f 72  PLAN], not on or
a210: 64 69 6e 61 72 79 0a 20 20 73 74 61 74 65 6d 65  dinary.  stateme
a220: 6e 74 73 2e 0a 20 20 3c 70 3e 0a 20 20 57 68 65  nts..  <p>.  Whe
a230: 6e 20 75 73 65 64 20 69 6e 20 74 68 65 20 5b 63  n used in the [c
a240: 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c  ommand-line shel
a250: 6c 5d 2c 20 74 68 65 0a 20 20 53 51 4c 49 54 45  l], the.  SQLITE
a260: 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e 5f  _ENABLE_UNKNOWN_
a270: 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 20 66 65 61  SQL_FUNCTION fea
a280: 74 75 72 65 20 61 6c 6c 6f 77 73 20 53 51 4c 20  ture allows SQL 
a290: 74 65 78 74 20 74 68 61 74 20 63 6f 6e 74 61 69  text that contai
a2a0: 6e 73 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e  ns.  application
a2b0: 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f  -defined functio
a2c0: 6e 73 20 74 6f 20 62 65 20 70 61 73 74 65 64 20  ns to be pasted 
a2d0: 69 6e 74 6f 20 74 68 65 20 73 68 65 6c 6c 20 66  into the shell f
a2e0: 6f 72 20 0a 20 20 61 6e 61 6c 79 73 69 73 20 61  or .  analysis a
a2f0: 6e 64 20 64 65 62 75 67 67 69 6e 67 20 77 69 74  nd debugging wit
a300: 68 6f 75 74 20 68 61 76 69 6e 67 20 74 6f 20 63  hout having to c
a310: 72 65 61 74 65 20 61 6e 64 20 6c 6f 61 64 20 61  reate and load a
a320: 6e 0a 20 20 65 78 74 65 6e 73 69 6f 6e 20 74 68  n.  extension th
a330: 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68  at implements th
a340: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65  e application-de
a350: 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e  fined functions.
a360: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
a370: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
a380: 45 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46 59 7d  E_UNLOCK_NOTIFY}
a390: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
a3a0: 20 65 6e 61 62 6c 65 73 20 74 68 65 20 5b 73 71   enables the [sq
a3b0: 6c 69 74 65 33 5f 75 6e 6c 6f 63 6b 5f 6e 6f 74  lite3_unlock_not
a3c0: 69 66 79 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ify()] interface
a3d0: 20 61 6e 64 0a 20 20 69 74 73 20 61 73 73 6f 63   and.  its assoc
a3e0: 69 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 61 6c  iated functional
a3f0: 69 74 79 2e 20 20 53 65 65 20 74 68 65 20 64 6f  ity.  See the do
a400: 63 75 6d 65 6e 74 61 74 69 6f 6e 20 74 69 74 6c  cumentation titl
a410: 65 64 0a 20 20 5b 55 73 69 6e 67 20 74 68 65 20  ed.  [Using the 
a420: 53 51 4c 69 74 65 20 55 6e 6c 6f 63 6b 20 4e 6f  SQLite Unlock No
a430: 74 69 66 69 63 61 74 69 6f 6e 20 46 65 61 74 75  tification Featu
a440: 72 65 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e  re] for addition
a450: 61 6c 0a 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  al.  information
a460: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
a470: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 4f 55 4e  ION {SQLITE_SOUN
a480: 44 45 58 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  DEX} {.  This op
a490: 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65  tion enables the
a4a0: 20 5b 73 6f 75 6e 64 65 78 28 29 20 53 51 4c 20   [soundex() SQL 
a4b0: 66 75 6e 63 74 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f  function]..}..CO
a4c0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
a4d0: 4c 49 54 45 5f 55 53 45 5f 46 43 4e 54 4c 5f 54  LITE_USE_FCNTL_T
a4e0: 52 41 43 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  RACE} {.  This o
a4f0: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c  ption causes SQL
a500: 69 74 65 20 74 6f 20 69 73 73 75 65 20 65 78 74  ite to issue ext
a510: 72 61 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ra [SQLITE_FCNTL
a520: 5f 54 52 41 43 45 5d 20 66 69 6c 65 20 63 6f 6e  _TRACE] file con
a530: 74 72 6f 6c 73 0a 20 20 74 6f 20 70 72 6f 76 69  trols.  to provi
a540: 64 65 20 73 75 70 70 6c 65 6d 65 6e 74 61 72 79  de supplementary
a550: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f 20   information to 
a560: 74 68 65 20 56 46 53 2e 20 20 54 68 65 20 22 76  the VFS.  The "v
a570: 66 73 6c 6f 67 2e 63 22 20 65 78 74 65 6e 73 69  fslog.c" extensi
a580: 6f 6e 0a 20 20 6d 61 6b 65 73 20 75 73 65 20 6f  on.  makes use o
a590: 66 20 74 68 69 73 20 74 6f 20 70 72 6f 76 69 64  f this to provid
a5a0: 65 20 65 6e 68 61 6e 63 65 64 20 6c 6f 67 73 20  e enhanced logs 
a5b0: 6f 66 20 56 46 53 20 61 63 74 69 76 69 74 79 2e  of VFS activity.
a5c0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
a5d0: 4f 4e 20 7b 59 59 54 52 41 43 4b 4d 41 58 53 54  ON {YYTRACKMAXST
a5e0: 41 43 4b 44 45 50 54 48 7d 20 7b 0a 20 20 54 68  ACKDEPTH} {.  Th
a5f0: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
a600: 20 74 68 65 20 4c 41 4c 52 28 31 29 20 70 61 72   the LALR(1) par
a610: 73 65 72 20 73 74 61 63 6b 20 64 65 70 74 68 20  ser stack depth 
a620: 74 6f 20 62 65 20 74 72 61 63 6b 65 64 0a 20 20  to be tracked.  
a630: 61 6e 64 20 72 65 70 6f 72 74 65 64 20 75 73 69  and reported usi
a640: 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  ng the [sqlite3_
a650: 73 74 61 74 75 73 5d 28 5b 53 51 4c 49 54 45 5f  status]([SQLITE_
a660: 53 54 41 54 55 53 5f 50 41 52 53 45 52 5f 53 54  STATUS_PARSER_ST
a670: 41 43 4b 5d 2c 2e 2e 2e 29 0a 20 20 69 6e 74 65  ACK],...).  inte
a680: 72 66 61 63 65 2e 20 20 53 51 4c 69 74 65 27 73  rface.  SQLite's
a690: 20 4c 41 4c 52 28 31 29 20 70 61 72 73 65 72 20   LALR(1) parser 
a6a0: 68 61 73 20 61 20 66 69 78 65 64 20 73 74 61 63  has a fixed stac
a6b0: 6b 20 64 65 70 74 68 0a 20 20 28 64 65 74 65 72  k depth.  (deter
a6c0: 6d 69 6e 65 64 20 61 74 20 63 6f 6d 70 69 6c 65  mined at compile
a6d0: 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20  -time using the 
a6e0: 5b 59 59 53 54 41 43 4b 44 45 50 54 48 5d 20 6f  [YYSTACKDEPTH] o
a6f0: 70 74 69 6f 6e 73 29 2e 0a 20 20 54 68 69 73 20  ptions)..  This 
a700: 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73  option can be us
a710: 65 64 20 74 6f 20 68 65 6c 70 20 64 65 74 65 72  ed to help deter
a720: 6d 69 6e 65 20 69 66 20 61 6e 20 61 70 70 6c 69  mine if an appli
a730: 63 61 74 69 6f 6e 20 69 73 0a 20 20 67 65 74 74  cation is.  gett
a740: 69 6e 67 20 63 6c 6f 73 65 20 74 6f 20 65 78 63  ing close to exc
a750: 65 65 64 69 6e 67 20 74 68 65 20 6d 61 78 69 6d  eeding the maxim
a760: 75 6d 20 4c 41 4c 52 28 31 29 20 73 74 61 63 6b  um LALR(1) stack
a770: 20 64 65 70 74 68 2e 0a 7d 0a 3c 2f 74 63 6c 3e   depth..}.</tcl>
a780: 0a 0a 3c 61 20 6e 61 6d 65 3d 22 64 69 73 61 62  ..<a name="disab
a790: 6c 65 66 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e  lefeatures"></a>
a7a0: 0a 3c 68 32 3e 31 2e 36 20 4f 70 74 69 6f 6e 73  .<h2>1.6 Options
a7b0: 20 54 6f 20 44 69 73 61 62 6c 65 20 46 65 61 74   To Disable Feat
a7c0: 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20 54 75  ures Normally Tu
a7d0: 72 6e 65 64 20 4f 6e 3c 2f 68 32 3e 0a 0a 3c 74  rned On</h2>..<t
a7e0: 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  cl>.COMPILE_OPTI
a7f0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42  ON {SQLITE_DISAB
a800: 4c 45 5f 4c 46 53 7d 20 7b 0a 20 20 49 66 20 74  LE_LFS} {.  If t
a810: 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73  his C-preprocess
a820: 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  or macro is defi
a830: 6e 65 64 2c 20 6c 61 72 67 65 20 66 69 6c 65 20  ned, large file 
a840: 73 75 70 70 6f 72 74 0a 20 20 69 73 20 64 69 73  support.  is dis
a850: 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  abled..}..COMPIL
a860: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
a870: 5f 44 49 53 41 42 4c 45 5f 44 49 52 53 59 4e 43  _DISABLE_DIRSYNC
a880: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d  } {.  If this C-
a890: 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63  preprocessor mac
a8a0: 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 64  ro is defined, d
a8b0: 69 72 65 63 74 6f 72 79 20 73 79 6e 63 73 0a 20  irectory syncs. 
a8c0: 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e 20 20   are disabled.  
a8d0: 53 51 4c 69 74 65 20 74 79 70 69 63 61 6c 6c 79  SQLite typically
a8e0: 20 61 74 74 65 6d 70 74 73 20 74 6f 20 73 79 6e   attempts to syn
a8f0: 63 20 74 68 65 20 70 61 72 65 6e 74 0a 20 20 64  c the parent.  d
a900: 69 72 65 63 74 6f 72 79 20 77 68 65 6e 20 61 20  irectory when a 
a910: 66 69 6c 65 20 69 73 20 64 65 6c 65 74 65 64 20  file is deleted 
a920: 74 6f 20 65 6e 73 75 72 65 20 74 68 65 20 64 69  to ensure the di
a930: 72 65 63 74 6f 72 79 0a 20 20 65 6e 74 72 69 65  rectory.  entrie
a940: 73 20 61 72 65 20 75 70 64 61 74 65 64 20 69 6d  s are updated im
a950: 6d 65 64 69 61 74 65 6c 79 20 6f 6e 20 64 69 73  mediately on dis
a960: 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  k..}..COMPILE_OP
a970: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53  TION {SQLITE_DIS
a980: 41 42 4c 45 5f 46 54 53 33 5f 55 4e 49 43 4f 44  ABLE_FTS3_UNICOD
a990: 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43  E} {.  If this C
a9a0: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
a9b0: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20  cro is defined, 
a9c0: 74 68 65 20 5b 75 6e 69 63 6f 64 65 36 31 5d 20  the [unicode61] 
a9d0: 74 6f 6b 65 6e 69 7a 65 72 0a 20 20 69 6e 20 5b  tokenizer.  in [
a9e0: 46 54 53 33 5d 20 69 73 20 6f 6d 69 74 74 65 64  FTS3] is omitted
a9f0: 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 20   from the build 
aa00: 61 6e 64 20 69 73 20 75 6e 61 76 61 69 6c 61 62  and is unavailab
aa10: 6c 65 20 74 6f 20 0a 20 20 61 70 70 6c 69 63 61  le to .  applica
aa20: 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  tions..}..COMPIL
aa30: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
aa40: 5f 44 49 53 41 42 4c 45 5f 46 54 53 34 5f 44 45  _DISABLE_FTS4_DE
aa50: 46 45 52 52 45 44 7d 20 7b 0a 20 20 49 66 20 74  FERRED} {.  If t
aa60: 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73  his C-preprocess
aa70: 6f 72 20 6d 61 63 72 6f 20 64 69 73 61 62 6c 65  or macro disable
aa80: 73 20 74 68 65 20 22 64 65 66 65 72 72 65 64 20  s the "deferred 
aa90: 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69 7a 61 74  token" optimizat
aaa0: 69 6f 6e 0a 20 20 69 6e 20 5b 46 54 53 34 5d 2e  ion.  in [FTS4].
aab0: 20 20 54 68 65 20 22 64 65 66 65 72 72 65 64 20    The "deferred 
aac0: 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69 7a 61 74  token" optimizat
aad0: 69 6f 6e 20 61 76 6f 69 64 73 20 6c 6f 61 64 69  ion avoids loadi
aae0: 6e 67 20 6d 61 73 73 69 76 65 0a 20 20 70 6f 73  ng massive.  pos
aaf0: 74 69 6e 67 20 6c 69 73 74 73 20 66 6f 72 20 74  ting lists for t
ab00: 65 72 6d 73 20 74 68 61 74 20 61 72 65 20 69 6e  erms that are in
ab10: 20 6d 6f 73 74 20 64 6f 63 75 6d 65 6e 74 73 20   most documents 
ab20: 6f 66 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f  of the collectio
ab30: 6e 0a 20 20 61 6e 64 20 69 6e 73 74 65 61 64 20  n.  and instead 
ab40: 73 69 6d 70 6c 79 20 73 63 61 6e 73 20 66 6f 72  simply scans for
ab50: 20 74 68 6f 73 65 20 74 6f 6b 65 6e 73 20 69 6e   those tokens in
ab60: 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 20 73 6f   the document so
ab70: 75 72 63 65 2e 20 20 5b 46 54 53 34 5d 0a 20 20  urce.  [FTS4].  
ab80: 73 68 6f 75 6c 64 20 67 65 74 20 65 78 61 63 74  should get exact
ab90: 6c 79 20 74 68 65 20 73 61 6d 65 20 61 6e 73 77  ly the same answ
aba0: 65 72 20 62 6f 74 68 20 77 69 74 68 20 61 6e 64  er both with and
abb0: 20 77 69 74 68 6f 75 74 20 74 68 69 73 20 6f 70   without this op
abc0: 74 69 6d 69 7a 61 74 69 6f 6e 2e 0a 7d 0a 3c 2f  timization..}.</
abd0: 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a 20 20 68 64  tcl>..<tcl>.  hd
abe0: 5f 66 72 61 67 6d 65 6e 74 20 22 6f 6d 69 74 66  _fragment "omitf
abf0: 65 61 74 75 72 65 73 22 0a 20 20 68 64 5f 6b 65  eatures".  hd_ke
ac00: 79 77 6f 72 64 73 20 22 6f 6d 69 74 66 65 61 74  ywords "omitfeat
ac10: 75 72 65 73 22 0a 3c 2f 74 63 6c 3e 0a 3c 68 32  ures".</tcl>.<h2
ac20: 3e 31 2e 37 20 4f 70 74 69 6f 6e 73 20 54 6f 20  >1.7 Options To 
ac30: 4f 6d 69 74 20 46 65 61 74 75 72 65 73 3c 2f 68  Omit Features</h
ac40: 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f  2>..<p>The follo
ac50: 77 69 6e 67 20 6f 70 74 69 6f 6e 73 20 63 61 6e  wing options can
ac60: 20 62 65 20 75 73 65 64 20 74 6f 20 0a 5b 72 65   be used to .[re
ac70: 6c 66 6f 6f 74 70 72 69 6e 74 20 7c 20 72 65 64  lfootprint | red
ac80: 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20  uce the size of 
ac90: 74 68 65 20 63 6f 6d 70 69 6c 65 64 20 6c 69 62  the compiled lib
aca0: 72 61 72 79 5d 0a 62 79 20 6f 6d 69 74 74 69 6e  rary].by omittin
acb0: 67 20 75 6e 75 73 65 64 20 66 65 61 74 75 72 65  g unused feature
acc0: 73 2e 20 54 68 69 73 20 69 73 20 70 72 6f 62 61  s. This is proba
acd0: 62 6c 79 20 6f 6e 6c 79 20 75 73 65 66 75 6c 0a  bly only useful.
ace0: 69 6e 20 65 6d 62 65 64 64 65 64 20 73 79 73 74  in embedded syst
acf0: 65 6d 73 20 77 68 65 72 65 20 73 70 61 63 65 20  ems where space 
ad00: 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 74 69  is especially ti
ad10: 67 68 74 2c 20 61 73 20 65 76 65 6e 20 77 69 74  ght, as even wit
ad20: 68 20 61 6c 6c 0a 66 65 61 74 75 72 65 73 20 69  h all.features i
ad30: 6e 63 6c 75 64 65 64 20 74 68 65 20 53 51 4c 69  ncluded the SQLi
ad40: 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 72 65  te library is re
ad50: 6c 61 74 69 76 65 6c 79 20 73 6d 61 6c 6c 2e 20  latively small. 
ad60: 44 6f 6e 27 74 20 66 6f 72 67 65 74 0a 74 6f 20  Don't forget.to 
ad70: 74 65 6c 6c 20 79 6f 75 72 20 63 6f 6d 70 69 6c  tell your compil
ad80: 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 66  er to optimize f
ad90: 6f 72 20 62 69 6e 61 72 79 20 73 69 7a 65 21 20  or binary size! 
ada0: 28 74 68 65 20 2d 4f 73 20 6f 70 74 69 6f 6e 20  (the -Os option 
adb0: 69 66 0a 75 73 69 6e 67 20 47 43 43 29 2e 20 20  if.using GCC).  
adc0: 54 65 6c 6c 69 6e 67 20 79 6f 75 72 20 63 6f 6d  Telling your com
add0: 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a  piler to optimiz
ade0: 65 20 66 6f 72 20 73 69 7a 65 20 75 73 75 61 6c  e for size usual
adf0: 6c 79 20 68 61 73 0a 61 20 6d 75 63 68 20 6c 61  ly has.a much la
ae00: 72 67 65 72 20 69 6d 70 61 63 74 20 6f 6e 20 6c  rger impact on l
ae10: 69 62 72 61 72 79 20 66 6f 6f 74 70 72 69 6e 74  ibrary footprint
ae20: 20 74 68 61 6e 20 65 6d 70 6c 6f 79 69 6e 67 20   than employing 
ae30: 61 6e 79 20 6f 66 20 74 68 65 73 65 0a 63 6f 6d  any of these.com
ae40: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
ae50: 73 2e 20 20 59 6f 75 20 73 68 6f 75 6c 64 20 61  s.  You should a
ae60: 6c 73 6f 20 76 65 72 69 66 79 20 74 68 61 74 20  lso verify that 
ae70: 0a 3c 61 20 68 72 65 66 3d 22 23 64 65 62 75 67  .<a href="#debug
ae80: 6f 70 74 69 6f 6e 73 22 3e 64 65 62 75 67 67 69  options">debuggi
ae90: 6e 67 20 6f 70 74 69 6f 6e 73 3c 2f 61 3e 20 61  ng options</a> a
aea0: 72 65 20 64 69 73 61 62 6c 65 64 2e 3c 2f 70 3e  re disabled.</p>
aeb0: 0a 0a 3c 70 3e 54 68 65 20 6d 61 63 72 6f 73 20  ..<p>The macros 
aec0: 69 6e 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20  in this section 
aed0: 64 6f 20 6e 6f 74 20 72 65 71 75 69 72 65 20 76  do not require v
aee0: 61 6c 75 65 73 2e 20 54 68 65 20 66 6f 6c 6c 6f  alues. The follo
aef0: 77 69 6e 67 20 0a 63 6f 6d 70 69 6c 61 74 69 6f  wing .compilatio
af00: 6e 20 73 77 69 74 63 68 65 73 20 61 6c 6c 20 68  n switches all h
af10: 61 76 65 20 74 68 65 20 73 61 6d 65 20 65 66 66  ave the same eff
af20: 65 63 74 3a 3c 62 72 3e 0a 2d 44 53 51 4c 49 54  ect:<br>.-DSQLIT
af30: 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c  E_OMIT_ALTERTABL
af40: 45 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f  E<br>.-DSQLITE_O
af50: 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d 31  MIT_ALTERTABLE=1
af60: 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d  <br>.-DSQLITE_OM
af70: 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d 30 0a  IT_ALTERTABLE=0.
af80: 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 6e 79 20  </p>..<p>If any 
af90: 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73  of these options
afa0: 20 61 72 65 20 64 65 66 69 6e 65 64 2c 20 74 68   are defined, th
afb0: 65 6e 20 74 68 65 20 73 61 6d 65 20 73 65 74 20  en the same set 
afc0: 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  of SQLITE_OMIT_*
afd0: 0a 6f 70 74 69 6f 6e 73 20 6d 75 73 74 20 61 6c  .options must al
afe0: 73 6f 20 62 65 20 64 65 66 69 6e 65 64 20 77 68  so be defined wh
aff0: 65 6e 20 75 73 69 6e 67 20 74 68 65 20 27 6c 65  en using the 'le
b000: 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67 65 6e  mon' tool to gen
b010: 65 72 61 74 65 20 74 68 65 0a 70 61 72 73 65 2e  erate the.parse.
b020: 63 20 66 69 6c 65 20 61 6e 64 20 77 68 65 6e 20  c file and when 
b030: 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20 27 6d  compiling the 'm
b040: 6b 6b 65 79 77 6f 72 64 68 61 73 68 27 20 74 6f  kkeywordhash' to
b050: 6f 6c 20 77 68 69 63 68 20 67 65 6e 65 72 61 74  ol which generat
b060: 65 73 20 0a 74 68 65 20 6b 65 79 77 6f 72 64 68  es .the keywordh
b070: 61 73 68 2e 68 20 66 69 6c 65 2e 0a 42 65 63 61  ash.h file..Beca
b080: 75 73 65 20 6f 66 20 74 68 69 73 2c 20 74 68 65  use of this, the
b090: 73 65 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20 6f  se options may o
b0a0: 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68 65 6e  nly be used when
b0b0: 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73 20   the library is 
b0c0: 62 75 69 6c 74 0a 66 72 6f 6d 20 63 61 6e 6f 6e  built.from canon
b0d0: 69 63 61 6c 20 73 6f 75 72 63 65 2c 20 6e 6f 74  ical source, not
b0e0: 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d 61 6c 67   from the [amalg
b0f0: 61 6d 61 74 69 6f 6e 5d 2e 0a 53 6f 6d 65 20 53  amation]..Some S
b100: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74  QLITE_OMIT_* opt
b110: 69 6f 6e 73 20 6d 69 67 68 74 20 77 6f 72 6b 2c  ions might work,
b120: 20 6f 72 20 61 70 70 65 61 72 20 74 6f 20 77 6f   or appear to wo
b130: 72 6b 2c 20 77 68 65 6e 20 75 73 65 64 20 77 69  rk, when used wi
b140: 74 68 0a 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61  th.the [amalgama
b150: 74 69 6f 6e 5d 2e 20 20 42 75 74 20 74 68 69 73  tion].  But this
b160: 20 69 73 20 6e 6f 74 20 67 75 61 72 61 6e 74 65   is not guarante
b170: 65 64 2e 20 20 49 6e 20 67 65 6e 65 72 61 6c 2c  ed.  In general,
b180: 20 61 6c 77 61 79 73 20 63 6f 6d 70 69 6c 65 0a   always compile.
b190: 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 73  from canonical s
b1a0: 6f 75 72 63 65 73 20 69 6e 20 6f 72 64 65 72 20  ources in order 
b1b0: 74 6f 20 74 61 6b 65 20 61 64 76 61 6e 74 61 67  to take advantag
b1c0: 65 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  e of SQLITE_OMIT
b1d0: 5f 2a 20 6f 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e  _* options..</p>
b1e0: 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c  ..<blockquote>.<
b1f0: 69 3e 3c 62 3e 49 6d 70 6f 72 74 61 6e 74 20 4e  i><b>Important N
b200: 6f 74 65 3a 3c 2f 62 3e 20 54 68 65 20 53 51 4c  ote:</b> The SQL
b210: 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f  ITE_OMIT_* optio
b220: 6e 73 20 6d 61 79 20 6e 6f 74 20 77 6f 72 6b 20  ns may not work 
b230: 77 69 74 68 20 74 68 65 0a 5b 61 6d 61 6c 67 61  with the.[amalga
b240: 6d 61 74 69 6f 6e 5d 2e 20 20 53 51 4c 49 54 45  mation].  SQLITE
b250: 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d  _OMIT_* compile-
b260: 74 69 6d 65 0a 6f 70 74 69 6f 6e 73 20 75 73 75  time.options usu
b270: 61 6c 6c 79 20 77 6f 72 6b 20 63 6f 72 72 65 63  ally work correc
b280: 74 6c 79 20 6f 6e 6c 79 20 77 68 65 6e 20 53 51  tly only when SQ
b290: 4c 69 74 65 20 69 73 20 62 75 69 6c 74 20 66 72  Lite is built fr
b2a0: 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 0a 73 6f  om canonical .so
b2b0: 75 72 63 65 20 66 69 6c 65 73 2e 0a 3c 2f 69 3e  urce files..</i>
b2c0: 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  .</blockquote>..
b2d0: 0a 3c 70 3e 53 70 65 63 69 61 6c 20 76 65 72 73  .<p>Special vers
b2e0: 69 6f 6e 73 20 6f 66 20 74 68 65 20 53 51 4c 69  ions of the SQLi
b2f0: 74 65 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20  te amalgamation 
b300: 74 68 61 74 20 64 6f 20 77 6f 72 6b 20 77 69 74  that do work wit
b310: 68 20 61 0a 70 72 65 64 65 74 65 72 6d 69 6e 65  h a.predetermine
b320: 64 20 73 65 74 20 6f 66 20 53 51 4c 49 54 45 5f  d set of SQLITE_
b330: 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 63  OMIT_* options c
b340: 61 6e 20 62 65 20 67 65 6e 65 72 61 74 65 64 2e  an be generated.
b350: 20 20 54 6f 20 64 6f 20 73 6f 2c 0a 6d 61 6b 65    To do so,.make
b360: 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 4d   a copy of the M
b370: 61 6b 65 66 69 6c 65 2e 6c 69 6e 75 78 2d 67 63  akefile.linux-gc
b380: 63 20 6d 61 6b 65 66 69 6c 65 20 74 65 6d 70 6c  c makefile templ
b390: 61 74 65 20 69 6e 20 74 68 65 20 63 61 6e 6f 6e  ate in the canon
b3a0: 69 63 61 6c 0a 73 6f 75 72 63 65 20 63 6f 64 65  ical.source code
b3b0: 20 64 69 73 74 72 69 62 75 74 69 6f 6e 2e 20 20   distribution.  
b3c0: 43 68 61 6e 67 65 20 74 68 65 20 6e 61 6d 65 20  Change the name 
b3d0: 6f 66 20 79 6f 75 72 20 63 6f 70 79 20 74 6f 20  of your copy to 
b3e0: 73 69 6d 70 6c 79 20 22 4d 61 6b 65 66 69 6c 65  simply "Makefile
b3f0: 22 2e 0a 54 68 65 6e 20 65 64 69 74 20 22 4d 61  "..Then edit "Ma
b400: 6b 65 66 69 6c 65 22 20 74 6f 20 73 65 74 20 75  kefile" to set u
b410: 70 20 61 70 70 72 6f 70 72 69 61 74 65 20 63 6f  p appropriate co
b420: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
b430: 6e 73 2e 20 20 54 68 65 6e 0a 74 79 70 65 3a 0a  ns.  Then.type:.
b440: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 74 74 3e  <blockquote><tt>
b450: 6d 61 6b 65 20 63 6c 65 61 6e 3b 20 6d 61 6b 65  make clean; make
b460: 20 73 71 6c 69 74 65 33 2e 63 3c 2f 74 74 3e 3c   sqlite3.c</tt><
b470: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 54 68 65  /blockquote>.The
b480: 20 72 65 73 75 6c 74 69 6e 67 20 22 73 71 6c 69   resulting "sqli
b490: 74 65 33 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74  te3.c" amalgamat
b4a0: 69 6f 6e 20 63 6f 64 65 20 66 69 6c 65 20 28 61  ion code file (a
b4b0: 6e 64 20 69 74 73 20 61 73 73 6f 63 69 61 74 65  nd its associate
b4c0: 64 0a 68 65 61 64 65 72 20 66 69 6c 65 20 22 73  d.header file "s
b4d0: 71 6c 69 74 65 33 2e 68 22 29 20 63 61 6e 20 74  qlite3.h") can t
b4e0: 68 65 6e 20 62 65 20 6d 6f 76 65 64 20 74 6f 20  hen be moved to 
b4f0: 61 20 6e 6f 6e 2d 75 6e 69 78 20 70 6c 61 74 66  a non-unix platf
b500: 6f 72 6d 0a 66 6f 72 20 66 69 6e 61 6c 20 63 6f  orm.for final co
b510: 6d 70 69 6c 61 74 69 6f 6e 20 75 73 69 6e 67 20  mpilation using 
b520: 61 20 6e 61 74 69 76 65 20 63 6f 6d 70 69 6c 65  a native compile
b530: 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 53  r.</p>..<p>The S
b540: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74  QLITE_OMIT_* opt
b550: 69 6f 6e 73 20 61 72 65 20 75 6e 73 75 70 70 6f  ions are unsuppo
b560: 72 74 65 64 2e 20 20 42 79 20 74 68 69 73 20 77  rted.  By this w
b570: 65 20 6d 65 61 6e 20 74 68 61 74 0a 61 6e 20 53  e mean that.an S
b580: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74  QLITE_OMIT_* opt
b590: 69 6f 6e 20 74 68 61 74 20 6f 6d 69 74 73 20 63  ion that omits c
b5a0: 6f 64 65 20 66 72 6f 6d 20 74 68 65 20 62 75 69  ode from the bui
b5b0: 6c 64 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e  ld in the curren
b5c0: 74 0a 72 65 6c 65 61 73 65 20 6d 69 67 68 74 20  t.release might 
b5d0: 62 65 63 6f 6d 65 20 61 20 6e 6f 2d 6f 70 20 69  become a no-op i
b5e0: 6e 20 74 68 65 20 6e 65 78 74 20 72 65 6c 65 61  n the next relea
b5f0: 73 65 2e 20 20 4f 72 20 74 68 65 20 6f 74 68 65  se.  Or the othe
b600: 72 20 77 61 79 20 61 72 6f 75 6e 64 3a 0a 61 6e  r way around:.an
b610: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 74   SQLITE_OMIT_* t
b620: 68 61 74 20 69 73 20 61 20 6e 6f 2d 6f 70 20 69  hat is a no-op i
b630: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 65  n the current re
b640: 6c 65 61 73 65 20 6d 69 67 68 74 20 63 61 75 73  lease might caus
b650: 65 20 63 6f 64 65 0a 74 6f 20 62 65 20 65 78 63  e code.to be exc
b660: 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6e 65 78  luded in the nex
b670: 74 20 72 65 6c 65 61 73 65 2e 20 20 41 6c 73 6f  t release.  Also
b680: 2c 20 6e 6f 74 20 61 6c 6c 20 53 51 4c 49 54 45  , not all SQLITE
b690: 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 0a  _OMIT_* options.
b6a0: 61 72 65 20 74 65 73 74 65 64 2e 20 20 53 6f 6d  are tested.  Som
b6b0: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  e SQLITE_OMIT_* 
b6c0: 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74 20 63 61  options might ca
b6d0: 75 73 65 20 53 51 4c 69 74 65 20 74 6f 20 6d 61  use SQLite to ma
b6e0: 6c 66 75 6e 63 74 69 6f 6e 0a 61 6e 64 2f 6f 72  lfunction.and/or
b6f0: 20 70 72 6f 76 69 64 65 20 69 6e 63 6f 72 72 65   provide incorre
b700: 63 74 20 61 6e 73 77 65 72 73 2e 0a 0a 3c 62 6c  ct answers...<bl
b710: 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62 3e  ockquote>.<i><b>
b720: 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65 3a 3c  Important Note:<
b730: 2f 62 3e 0a 54 68 65 20 53 51 4c 49 54 45 5f 4f  /b>.The SQLITE_O
b740: 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69  MIT_* compile-ti
b750: 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 75  me options are u
b760: 6e 73 75 70 70 6f 72 74 65 64 2e 0a 3c 2f 69 3e  nsupported..</i>
b770: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c  </blockquote>..<
b780: 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  tcl>.COMPILE_OPT
b790: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
b7a0: 5f 41 4c 54 45 52 54 41 42 4c 45 7d 20 7b 0a 20  _ALTERTABLE} {. 
b7b0: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
b7c0: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  n is defined, th
b7d0: 65 20 0a 20 20 5b 41 4c 54 45 52 20 54 41 42 4c  e .  [ALTER TABL
b7e0: 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f  E] command is no
b7f0: 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68  t included in th
b800: 65 20 0a 20 20 6c 69 62 72 61 72 79 2e 20 45 78  e .  library. Ex
b810: 65 63 75 74 69 6e 67 20 61 6e 20 5b 41 4c 54 45  ecuting an [ALTE
b820: 52 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65  R TABLE] stateme
b830: 6e 74 20 63 61 75 73 65 73 20 61 20 70 61 72 73  nt causes a pars
b840: 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  e error..}..COMP
b850: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
b860: 54 45 5f 4f 4d 49 54 5f 41 4e 41 4c 59 5a 45 7d  TE_OMIT_ANALYZE}
b870: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f   {.  When this o
b880: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
b890: 2c 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20  , the [ANALYZE] 
b8a0: 63 6f 6d 6d 61 6e 64 20 69 73 20 6f 6d 69 74 74  command is omitt
b8b0: 65 64 20 66 72 6f 6d 0a 20 20 74 68 65 20 62 75  ed from.  the bu
b8c0: 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ild..}..COMPILE_
b8d0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
b8e0: 4d 49 54 5f 41 54 54 41 43 48 7d 20 7b 0a 20 20  MIT_ATTACH} {.  
b8f0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
b900: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
b910: 20 5b 41 54 54 41 43 48 5d 20 61 6e 64 20 5b 44   [ATTACH] and [D
b920: 45 54 41 43 48 5d 20 63 6f 6d 6d 61 6e 64 73 20  ETACH] commands 
b930: 61 72 65 0a 20 20 6f 6d 69 74 74 65 64 20 66 72  are.  omitted fr
b940: 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a  om the build..}.
b950: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
b960: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54  {SQLITE_OMIT_AUT
b970: 48 4f 52 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20  HORIZATION} {.  
b980: 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70  Defining this op
b990: 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 61  tion omits the a
b9a0: 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 63 61 6c  uthorization cal
b9b0: 6c 62 61 63 6b 20 66 65 61 74 75 72 65 20 66 72  lback feature fr
b9c0: 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72 61 72 79  om the.  library
b9d0: 2e 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  . The [sqlite3_s
b9e0: 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 29 5d  et_authorizer()]
b9f0: 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 69 73   API function is
ba00: 20 6e 6f 74 20 70 72 65 73 65 6e 74 0a 20 20 69   not present.  i
ba10: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 7d  n the library..}
ba20: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
ba30: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55   {SQLITE_OMIT_AU
ba40: 54 4f 49 4e 43 52 45 4d 45 4e 54 7d 20 7b 0a 20  TOINCREMENT} {. 
ba50: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
ba60: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65  used to omit the
ba70: 20 0a 20 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45   .  [AUTOINCREME
ba80: 4e 54 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  NT] functionalit
ba90: 79 2e 20 57 68 65 6e 20 74 68 69 73 20 0a 20 20  y. When this .  
baa0: 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  is macro is defi
bab0: 6e 65 64 2c 20 63 6f 6c 75 6d 6e 73 20 64 65 63  ned, columns dec
bac0: 6c 61 72 65 64 20 61 73 20 0a 20 20 22 5b 49 4e  lared as .  "[IN
bad0: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
bae0: 59 5d 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54  Y] AUTOINCREMENT
baf0: 22 0a 20 20 62 65 68 61 76 65 20 69 6e 20 74 68  ".  behave in th
bb00: 65 20 73 61 6d 65 20 77 61 79 20 61 73 20 63 6f  e same way as co
bb10: 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65 64 20 61  lumns declared a
bb20: 73 20 22 5b 49 4e 54 45 47 45 52 20 50 52 49 4d  s "[INTEGER PRIM
bb30: 41 52 59 20 4b 45 59 5d 22 20 77 68 65 6e 20 61  ARY KEY]" when a
bb40: 20 0a 20 20 4e 55 4c 4c 20 69 73 20 69 6e 73 65   .  NULL is inse
bb50: 72 74 65 64 2e 20 54 68 65 20 73 71 6c 69 74 65  rted. The sqlite
bb60: 5f 73 65 71 75 65 6e 63 65 20 73 79 73 74 65 6d  _sequence system
bb70: 20 74 61 62 6c 65 20 69 73 20 6e 65 69 74 68 65   table is neithe
bb80: 72 20 63 72 65 61 74 65 64 2c 20 6e 6f 72 0a 20  r created, nor. 
bb90: 20 72 65 73 70 65 63 74 65 64 20 69 66 20 69 74   respected if it
bba0: 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 2e   already exists.
bbb0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
bbc0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
bbd0: 41 55 54 4f 49 4e 49 54 7d 20 7b 0a 20 20 46 6f  AUTOINIT} {.  Fo
bbe0: 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70  r backwards comp
bbf0: 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 6f  atibility with o
bc00: 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66  lder versions of
bc10: 20 53 51 4c 69 74 65 20 74 68 61 74 20 6c 61 63   SQLite that lac
bc20: 6b 0a 20 20 74 68 65 20 5b 73 71 6c 69 74 65 33  k.  the [sqlite3
bc30: 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 69  _initialize()] i
bc40: 6e 74 65 72 66 61 63 65 2c 20 74 68 65 20 5b 73  nterface, the [s
bc50: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
bc60: 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a 20  e()] interface. 
bc70: 20 69 73 20 63 61 6c 6c 65 64 20 61 75 74 6f 6d   is called autom
bc80: 61 74 69 63 61 6c 6c 79 20 75 70 6f 6e 20 65 6e  atically upon en
bc90: 74 72 79 20 74 6f 20 63 65 72 74 61 69 6e 20 6b  try to certain k
bca0: 65 79 20 69 6e 74 65 72 66 61 63 65 73 20 73 75  ey interfaces su
bcb0: 63 68 20 61 73 0a 20 20 5b 73 71 6c 69 74 65 33  ch as.  [sqlite3
bcc0: 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74  _open()], [sqlit
bcd0: 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28  e3_vfs_register(
bce0: 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  )], and [sqlite3
bcf0: 5f 6d 70 72 69 6e 74 66 28 29 5d 2e 0a 20 20 54  _mprintf()]..  T
bd00: 68 65 20 6f 76 65 72 68 65 61 64 20 6f 66 20 69  he overhead of i
bd10: 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c 69 74 65 33  nvoking [sqlite3
bd20: 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 61  _initialize()] a
bd30: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 20  utomatically in 
bd40: 74 68 69 73 0a 20 20 77 61 79 20 6d 61 79 20 62  this.  way may b
bd50: 65 20 6f 6d 69 74 74 65 64 20 62 79 20 62 75 69  e omitted by bui
bd60: 6c 64 69 6e 67 20 53 51 4c 69 74 65 20 77 69 74  lding SQLite wit
bd70: 68 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49  h the SQLITE_OMI
bd80: 54 5f 41 55 54 4f 49 4e 49 54 0a 20 20 43 2d 70  T_AUTOINIT.  C-p
bd90: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
bda0: 6f 2e 20 20 57 68 65 6e 20 62 75 69 6c 74 20 75  o.  When built u
bdb0: 73 69 6e 67 20 53 51 4c 49 54 45 5f 4f 4d 49 54  sing SQLITE_OMIT
bdc0: 5f 41 55 54 4f 49 4e 49 54 2c 20 53 51 4c 69 74  _AUTOINIT, SQLit
bdd0: 65 0a 20 20 77 69 6c 6c 20 6e 6f 74 20 61 75 74  e.  will not aut
bde0: 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 69 74 69  omatically initi
bdf0: 61 6c 69 7a 65 20 69 74 73 65 6c 66 20 61 6e 64  alize itself and
be00: 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
be10: 20 69 73 20 72 65 71 75 69 72 65 64 0a 20 20 74   is required.  t
be20: 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65  o invoke [sqlite
be30: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20  3_initialize()] 
be40: 64 69 72 65 63 74 6c 79 20 70 72 69 6f 72 20 74  directly prior t
be50: 6f 20 62 65 67 69 6e 6e 69 6e 67 20 75 73 65 20  o beginning use 
be60: 6f 66 20 74 68 65 0a 20 20 53 51 4c 69 74 65 20  of the.  SQLite 
be70: 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50  library..}..COMP
be80: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
be90: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 4d 41 54 49  TE_OMIT_AUTOMATI
bea0: 43 5f 49 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69  C_INDEX} {.  Thi
beb0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
bec0: 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 0a 20 20   to omit the .  
bed0: 5b 61 75 74 6f 6d 61 74 69 63 20 69 6e 64 65 78  [automatic index
bee0: 69 6e 67 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69  ing] functionali
bef0: 74 79 2e 0a 20 20 53 65 65 20 61 6c 73 6f 3a 20  ty..  See also: 
bf00: 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  [SQLITE_DEFAULT_
bf10: 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58 5d  AUTOMATIC_INDEX]
bf20: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
bf30: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
bf40: 5f 41 55 54 4f 52 45 53 45 54 7d 20 7b 0a 20 20  _AUTORESET} {.  
bf50: 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20  By default, the 
bf60: 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d  [sqlite3_step()]
bf70: 20 69 6e 74 65 72 66 61 63 65 20 77 69 6c 6c 20   interface will 
bf80: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e  automatically in
bf90: 76 6f 6b 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f  voke.  [sqlite3_
bfa0: 72 65 73 65 74 28 29 5d 20 74 6f 20 72 65 73 65  reset()] to rese
bfb0: 74 20 74 68 65 20 5b 70 72 65 70 61 72 65 64 20  t the [prepared 
bfc0: 73 74 61 74 65 6d 65 6e 74 5d 20 69 66 20 6e 65  statement] if ne
bfd0: 63 65 73 73 61 72 79 2e 20 20 54 68 69 73 0a 20  cessary.  This. 
bfe0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
bff0: 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68 61  tion changes tha
c000: 74 20 62 65 68 61 76 69 6f 72 20 73 6f 20 74 68  t behavior so th
c010: 61 74 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  at [sqlite3_step
c020: 28 29 5d 20 77 69 6c 6c 0a 20 20 72 65 74 75 72  ()] will.  retur
c030: 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53 45  n [SQLITE_MISUSE
c040: 5d 20 69 66 20 69 74 20 63 61 6c 6c 65 64 20 61  ] if it called a
c050: 67 61 69 6e 20 61 66 74 65 72 20 72 65 74 75 72  gain after retur
c060: 6e 69 6e 67 20 61 6e 79 74 68 69 6e 67 20 6f 74  ning anything ot
c070: 68 65 72 0a 20 20 74 68 61 6e 20 5b 53 51 4c 49  her.  than [SQLI
c080: 54 45 5f 52 4f 57 5d 2c 20 5b 53 51 4c 49 54 45  TE_ROW], [SQLITE
c090: 5f 42 55 53 59 5d 2c 20 6f 72 20 5b 53 51 4c 49  _BUSY], or [SQLI
c0a0: 54 45 5f 4c 4f 43 4b 45 44 5d 20 75 6e 6c 65 73  TE_LOCKED] unles
c0b0: 73 20 74 68 65 72 65 20 77 61 73 20 61 6e 0a 20  s there was an. 
c0c0: 20 69 6e 74 65 72 76 65 6e 69 6e 67 20 63 61 6c   intervening cal
c0d0: 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65  l to [sqlite3_re
c0e0: 73 65 74 28 29 5d 2e 0a 0a 20 20 49 6e 20 53 51  set()]...  In SQ
c0f0: 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 36  Lite version 3.6
c100: 2e 32 33 2e 31 20 61 6e 64 20 65 61 72 6c 69 65  .23.1 and earlie
c110: 72 2c 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  r, [sqlite3_step
c120: 28 29 5d 20 75 73 65 64 20 74 6f 20 61 6c 77 61  ()] used to alwa
c130: 79 73 0a 20 20 72 65 74 75 72 6e 20 5b 53 51 4c  ys.  return [SQL
c140: 49 54 45 5f 4d 49 53 55 53 45 5d 20 69 66 20 69  ITE_MISUSE] if i
c150: 74 20 77 61 73 20 69 6e 76 6f 6b 65 64 20 61 67  t was invoked ag
c160: 61 69 6e 20 61 66 74 65 72 20 72 65 74 75 72 6e  ain after return
c170: 69 6e 67 20 61 6e 79 74 68 69 6e 67 0a 20 20 6f  ing anything.  o
c180: 74 68 65 72 20 74 68 61 6e 20 5b 53 51 4c 49 54  ther than [SQLIT
c190: 45 5f 52 4f 57 5d 20 77 69 74 68 6f 75 74 20 61  E_ROW] without a
c1a0: 6e 20 69 6e 74 65 72 76 65 6e 69 6e 67 20 63 61  n intervening ca
c1b0: 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72  ll to [sqlite3_r
c1c0: 65 73 65 74 28 29 5d 2e 0a 20 20 54 68 69 73 20  eset()]..  This 
c1d0: 63 61 75 73 65 64 20 70 72 6f 62 6c 65 6d 73 20  caused problems 
c1e0: 6f 6e 20 73 6f 6d 65 20 70 6f 6f 72 6c 79 20 77  on some poorly w
c1f0: 72 69 74 74 65 6e 20 73 6d 61 72 74 70 68 6f 6e  ritten smartphon
c200: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 77  e applications w
c210: 68 69 63 68 0a 20 20 64 69 64 20 6e 6f 74 20 63  hich.  did not c
c220: 6f 72 72 65 63 74 6c 79 20 68 61 6e 64 6c 65 20  orrectly handle 
c230: 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b  the [SQLITE_LOCK
c240: 45 44 5d 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f  ED] and [SQLITE_
c250: 42 55 53 59 5d 20 65 72 72 6f 72 20 0a 20 20 72  BUSY] error .  r
c260: 65 74 75 72 6e 73 2e 20 20 52 61 74 68 65 72 20  eturns.  Rather 
c270: 74 68 61 6e 20 66 69 78 20 74 68 65 20 6d 61 6e  than fix the man
c280: 79 20 64 65 66 65 63 74 69 76 65 20 73 6d 61 72  y defective smar
c290: 74 70 68 6f 6e 65 20 61 70 70 6c 69 63 61 74 69  tphone applicati
c2a0: 6f 6e 73 2c 20 0a 20 20 74 68 65 20 62 65 68 61  ons, .  the beha
c2b0: 76 69 6f 72 20 6f 66 20 53 51 4c 69 74 65 20 77  vior of SQLite w
c2c0: 61 73 20 63 68 61 6e 67 65 64 20 69 6e 20 33 2e  as changed in 3.
c2d0: 36 2e 32 33 2e 32 20 74 6f 20 61 75 74 6f 6d 61  6.23.2 to automa
c2e0: 74 69 63 61 6c 6c 79 20 72 65 73 65 74 0a 20 20  tically reset.  
c2f0: 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61  the prepared sta
c300: 74 65 6d 65 6e 74 2e 20 20 42 75 74 20 74 68 61  tement.  But tha
c310: 74 20 63 68 61 6e 67 65 64 20 63 61 75 73 65 64  t changed caused
c320: 20 69 73 73 75 65 73 20 69 6e 20 6f 74 68 65 72   issues in other
c330: 20 0a 20 20 69 6d 70 72 6f 70 65 72 6c 79 20 69   .  improperly i
c340: 6d 70 6c 65 6d 65 6e 74 65 64 20 61 70 70 6c 69  mplemented appli
c350: 63 61 74 69 6f 6e 73 20 74 68 61 74 20 77 65 72  cations that wer
c360: 65 20 61 63 74 75 61 6c 6c 79 20 6c 6f 6f 6b 69  e actually looki
c370: 6e 67 0a 20 20 66 6f 72 20 61 6e 20 5b 53 51 4c  ng.  for an [SQL
c380: 49 54 45 5f 4d 49 53 55 53 45 5d 20 72 65 74 75  ITE_MISUSE] retu
c390: 72 6e 20 74 6f 20 74 65 72 6d 69 6e 61 74 65 20  rn to terminate 
c3a0: 74 68 65 69 72 20 71 75 65 72 79 20 6c 6f 6f 70  their query loop
c3b0: 73 2e 20 20 28 41 6e 79 74 69 6d 65 0a 20 20 61  s.  (Anytime.  a
c3c0: 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 67 65  n application ge
c3d0: 74 73 20 61 6e 20 53 51 4c 49 54 45 5f 4d 49 53  ts an SQLITE_MIS
c3e0: 55 53 45 20 65 72 72 6f 72 20 63 6f 64 65 20 66  USE error code f
c3f0: 72 6f 6d 20 53 51 4c 69 74 65 2c 20 74 68 61 74  rom SQLite, that
c400: 20 6d 65 61 6e 73 20 74 68 65 0a 20 20 61 70 70   means the.  app
c410: 6c 69 63 61 74 69 6f 6e 20 69 73 20 6d 69 73 75  lication is misu
c420: 73 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20  sing the SQLite 
c430: 69 6e 74 65 72 66 61 63 65 20 61 6e 64 20 69 73  interface and is
c440: 20 74 68 75 73 20 69 6e 63 6f 72 72 65 63 74 6c   thus incorrectl
c450: 79 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2e  y.  implemented.
c460: 29 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d  )  The SQLITE_OM
c470: 49 54 5f 41 55 54 4f 52 45 53 45 54 20 69 6e 74  IT_AUTORESET int
c480: 65 72 66 61 63 65 20 77 61 73 20 61 64 64 65 64  erface was added
c490: 20 74 6f 20 53 51 4c 69 74 65 0a 20 20 76 65 72   to SQLite.  ver
c4a0: 73 69 6f 6e 20 33 2e 37 2e 35 20 69 6e 20 61 6e  sion 3.7.5 in an
c4b0: 20 65 66 66 6f 72 74 20 74 6f 20 67 65 74 20 61   effort to get a
c4c0: 6c 6c 20 6f 66 20 74 68 65 20 28 62 72 6f 6b 65  ll of the (broke
c4d0: 6e 29 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e  n).  application
c4e0: 73 20 74 6f 20 77 6f 72 6b 20 61 67 61 69 6e 20  s to work again 
c4f0: 77 69 74 68 6f 75 74 20 68 61 76 69 6e 67 20 74  without having t
c500: 6f 20 61 63 74 75 61 6c 6c 79 20 66 69 78 20 74  o actually fix t
c510: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e  he applications.
c520: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
c530: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
c540: 41 55 54 4f 56 41 43 55 55 4d 7d 20 7b 0a 20 20  AUTOVACUUM} {.  
c550: 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  If this option i
c560: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 6c  s defined, the l
c570: 69 62 72 61 72 79 20 63 61 6e 6e 6f 74 20 63 72  ibrary cannot cr
c580: 65 61 74 65 20 6f 72 20 77 72 69 74 65 20 74 6f  eate or write to
c590: 20 0a 20 20 64 61 74 61 62 61 73 65 73 20 74 68   .  databases th
c5a0: 61 74 20 73 75 70 70 6f 72 74 20 5b 61 75 74 6f  at support [auto
c5b0: 5f 76 61 63 75 75 6d 5d 2e 0a 20 20 45 78 65 63  _vacuum]..  Exec
c5c0: 75 74 69 6e 67 20 61 20 5b 50 52 41 47 4d 41 20  uting a [PRAGMA 
c5d0: 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 73 74 61  auto_vacuum] sta
c5e0: 74 65 6d 65 6e 74 20 69 73 20 6e 6f 74 20 61 6e  tement is not an
c5f0: 20 65 72 72 6f 72 0a 20 20 28 73 69 6e 63 65 20   error.  (since 
c600: 75 6e 6b 6e 6f 77 6e 20 50 52 41 47 4d 41 73 20  unknown PRAGMAs 
c610: 61 72 65 20 73 69 6c 65 6e 74 6c 79 20 69 67 6e  are silently ign
c620: 6f 72 65 64 29 2c 20 62 75 74 20 64 6f 65 73 20  ored), but does 
c630: 6e 6f 74 20 72 65 74 75 72 6e 20 61 20 76 61 6c  not return a val
c640: 75 65 0a 20 20 6f 72 20 6d 6f 64 69 66 79 20 74  ue.  or modify t
c650: 68 65 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 66  he auto-vacuum f
c660: 6c 61 67 20 69 6e 20 74 68 65 20 64 61 74 61 62  lag in the datab
c670: 61 73 65 20 66 69 6c 65 2e 20 49 66 20 61 20 64  ase file. If a d
c680: 61 74 61 62 61 73 65 20 74 68 61 74 0a 20 20 73  atabase that.  s
c690: 75 70 70 6f 72 74 73 20 61 75 74 6f 2d 76 61 63  upports auto-vac
c6a0: 75 75 6d 20 69 73 20 6f 70 65 6e 65 64 20 62 79  uum is opened by
c6b0: 20 61 20 6c 69 62 72 61 72 79 20 63 6f 6d 70 69   a library compi
c6c0: 6c 65 64 20 77 69 74 68 20 74 68 69 73 20 6f 70  led with this op
c6d0: 74 69 6f 6e 2c 20 69 74 0a 20 20 69 73 20 61 75  tion, it.  is au
c6e0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6f 70 65 6e  tomatically open
c6f0: 65 64 20 69 6e 20 72 65 61 64 2d 6f 6e 6c 79 20  ed in read-only 
c700: 6d 6f 64 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  mode..}..COMPILE
c710: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
c720: 4f 4d 49 54 5f 42 45 54 57 45 45 4e 5f 4f 50 54  OMIT_BETWEEN_OPT
c730: 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54  IMIZATION} {.  T
c740: 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62  his option disab
c750: 6c 65 73 20 74 68 65 20 75 73 65 20 6f 66 20 69  les the use of i
c760: 6e 64 69 63 65 73 20 77 69 74 68 20 57 48 45 52  ndices with WHER
c770: 45 20 63 6c 61 75 73 65 20 74 65 72 6d 73 0a 20  E clause terms. 
c780: 20 74 68 61 74 20 65 6d 70 6c 6f 79 20 74 68 65   that employ the
c790: 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61 74 6f   BETWEEN operato
c7a0: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
c7b0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
c7c0: 54 5f 42 4c 4f 42 5f 4c 49 54 45 52 41 4c 7d 20  T_BLOB_LITERAL} 
c7d0: 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  {.  When this op
c7e0: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
c7f0: 20 69 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69   it is not possi
c800: 62 6c 65 20 74 6f 20 73 70 65 63 69 66 79 20 61  ble to specify a
c810: 20 62 6c 6f 62 20 69 6e 0a 20 20 61 6e 20 53 51   blob in.  an SQ
c820: 4c 20 73 74 61 74 65 6d 65 6e 74 20 75 73 69 6e  L statement usin
c830: 67 20 74 68 65 20 58 27 41 42 43 44 27 20 73 79  g the X'ABCD' sy
c840: 6e 74 61 78 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ntax..}..COMPILE
c850: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
c860: 4f 4d 49 54 5f 42 54 52 45 45 43 4f 55 4e 54 7d  OMIT_BTREECOUNT}
c870: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f   {.  When this o
c880: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
c890: 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f  , an optimizatio
c8a0: 6e 20 74 68 61 74 20 61 63 63 65 6c 65 72 61 74  n that accelerat
c8b0: 65 73 20 63 6f 75 6e 74 69 6e 67 0a 20 20 61 6c  es counting.  al
c8c0: 6c 20 65 6e 74 72 69 65 73 20 69 6e 20 61 20 74  l entries in a t
c8d0: 61 62 6c 65 20 28 69 6e 20 6f 74 68 65 72 20 77  able (in other w
c8e0: 6f 72 64 73 2c 20 61 6e 20 6f 70 74 69 6d 69 7a  ords, an optimiz
c8f0: 61 74 69 6f 6e 20 74 68 61 74 20 68 65 6c 70 73  ation that helps
c900: 0a 20 20 22 53 45 4c 45 43 54 20 63 6f 75 6e 74  .  "SELECT count
c910: 28 2a 29 20 46 52 4f 4d 20 74 61 62 6c 65 22 20  (*) FROM table" 
c920: 72 75 6e 20 66 61 73 74 65 72 29 20 69 73 20 6f  run faster) is o
c930: 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  mitted..}..COMPI
c940: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
c950: 45 5f 4f 4d 49 54 5f 42 55 49 4c 54 49 4e 5f 54  E_OMIT_BUILTIN_T
c960: 45 53 54 7d 20 7b 0a 20 20 41 20 73 74 61 6e 64  EST} {.  A stand
c970: 61 72 64 20 53 51 4c 69 74 65 20 62 75 69 6c 64  ard SQLite build
c980: 20 69 6e 63 6c 75 64 65 73 20 61 20 73 6d 61 6c   includes a smal
c990: 6c 20 61 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69  l amount of logi
c9a0: 63 20 63 6f 6e 74 72 6f 6c 6c 65 64 0a 20 20 62  c controlled.  b
c9b0: 79 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 74  y the [sqlite3_t
c9c0: 65 73 74 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 69  est_control()] i
c9d0: 6e 74 65 72 66 61 63 65 20 74 68 61 74 20 69 73  nterface that is
c9e0: 20 75 73 65 64 20 74 6f 20 65 78 65 72 63 69 73   used to exercis
c9f0: 65 0a 20 20 70 61 72 74 73 20 6f 66 20 74 68 65  e.  parts of the
ca00: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 74 68 61   SQLite core tha
ca10: 74 20 61 72 65 20 64 69 66 66 69 63 75 6c 74 20  t are difficult 
ca20: 74 6f 20 63 6f 6e 74 72 6f 6c 20 61 6e 64 20 6d  to control and m
ca30: 65 61 73 75 72 65 20 75 73 69 6e 67 0a 20 20 74  easure using.  t
ca40: 68 65 20 73 74 61 6e 64 61 72 64 20 41 50 49 2e  he standard API.
ca50: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
ca60: 69 74 73 20 74 68 61 74 20 62 75 69 6c 74 2d 69  its that built-i
ca70: 6e 20 74 65 73 74 20 6c 6f 67 69 63 2e 0a 7d 0a  n test logic..}.
ca80: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
ca90: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 41 53  {SQLITE_OMIT_CAS
caa0: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
cab0: 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65  on causes SQLite
cac0: 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74   to omit support
cad0: 20 66 6f 72 20 74 68 65 20 43 41 53 54 20 6f 70   for the CAST op
cae0: 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49  erator..}..COMPI
caf0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
cb00: 45 5f 4f 4d 49 54 5f 43 48 45 43 4b 7d 20 7b 0a  E_OMIT_CHECK} {.
cb10: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
cb20: 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f  uses SQLite to o
cb30: 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  mit support for 
cb40: 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74  CHECK constraint
cb50: 73 2e 0a 20 20 54 68 65 20 70 61 72 73 65 72 20  s..  The parser 
cb60: 77 69 6c 6c 20 73 74 69 6c 6c 20 61 63 63 65 70  will still accep
cb70: 74 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69  t CHECK constrai
cb80: 6e 74 73 20 69 6e 20 53 51 4c 20 73 74 61 74 65  nts in SQL state
cb90: 6d 65 6e 74 73 2c 0a 20 20 74 68 65 79 20 77 69  ments,.  they wi
cba0: 6c 6c 20 6a 75 73 74 20 6e 6f 74 20 62 65 20 65  ll just not be e
cbb0: 6e 66 6f 72 63 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  nforced..}..COMP
cbc0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
cbd0: 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49 4c 45 4f  TE_OMIT_COMPILEO
cbe0: 50 54 49 4f 4e 5f 44 49 41 47 53 7d 20 7b 0a 20  PTION_DIAGS} {. 
cbf0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
cc00: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65  used to omit the
cc10: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
cc20: 74 69 6f 6e 20 64 69 61 67 6e 6f 73 74 69 63 73  tion diagnostics
cc30: 20 61 76 61 69 6c 61 62 6c 65 0a 20 20 69 6e 20   available.  in 
cc40: 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69 6e  SQLite, includin
cc50: 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63  g the [sqlite3_c
cc60: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
cc70: 64 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69  d()] and.  [sqli
cc80: 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  te3_compileoptio
cc90: 6e 5f 67 65 74 28 29 5d 20 43 2f 43 2b 2b 20 66  n_get()] C/C++ f
cca0: 75 6e 63 74 69 6f 6e 73 2c 20 74 68 65 0a 20 20  unctions, the.  
ccb0: 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f  [sqlite_compileo
ccc0: 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20 61 6e  ption_used()] an
ccd0: 64 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c  d [sqlite_compil
cce0: 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20 53  eoption_get()] S
ccf0: 51 4c 20 66 75 6e 63 74 69 6f 6e 73 2c 0a 20 20  QL functions,.  
cd00: 61 6e 64 20 74 68 65 20 5b 63 6f 6d 70 69 6c 65  and the [compile
cd10: 5f 6f 70 74 69 6f 6e 73 20 70 72 61 67 6d 61 5d  _options pragma]
cd20: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
cd30: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
cd40: 5f 43 4f 4d 50 4c 45 54 45 7d 20 7b 0a 20 20 54  _COMPLETE} {.  T
cd50: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
cd60: 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63  s the [sqlite3_c
cd70: 6f 6d 70 6c 65 74 65 28 29 5d 20 61 6e 64 20 5b  omplete()] and [
cd80: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65  sqlite3_complete
cd90: 31 36 28 29 5d 0a 20 20 69 6e 74 65 72 66 61 63  16()].  interfac
cda0: 65 73 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64  es to be omitted
cdb0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
cdc0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
cdd0: 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54  _COMPOUND_SELECT
cde0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
cdf0: 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69  n is used to omi
ce00: 74 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20 5b  t the compound [
ce10: 53 45 4c 45 43 54 5d 20 66 75 6e 63 74 69 6f 6e  SELECT] function
ce20: 61 6c 69 74 79 2e 20 0a 20 20 5b 53 45 4c 45 43  ality. .  [SELEC
ce30: 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68  T] statements th
ce40: 61 74 20 75 73 65 20 74 68 65 20 0a 20 20 55 4e  at use the .  UN
ce50: 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20  ION, UNION ALL, 
ce60: 49 4e 54 45 52 53 45 43 54 20 6f 72 20 45 58 43  INTERSECT or EXC
ce70: 45 50 54 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c  EPT compound SEL
ce80: 45 43 54 20 6f 70 65 72 61 74 6f 72 73 20 77 69  ECT operators wi
ce90: 6c 6c 20 0a 20 20 63 61 75 73 65 20 61 20 70 61  ll .  cause a pa
cea0: 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20 41 6e  rse error...  An
ceb0: 20 5b 49 4e 53 45 52 54 5d 20 73 74 61 74 65 6d   [INSERT] statem
cec0: 65 6e 74 20 77 69 74 68 20 6d 75 6c 74 69 70 6c  ent with multipl
ced0: 65 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20  e values in the 
cee0: 56 41 4c 55 45 53 20 63 6c 61 75 73 65 20 69 73  VALUES clause is
cef0: 0a 20 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69  .  implemented i
cf00: 6e 74 65 72 6e 61 6c 6c 79 20 61 73 20 61 20 63  nternally as a c
cf10: 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 2e 20  ompound SELECT. 
cf20: 20 48 65 6e 63 65 2c 20 74 68 69 73 20 6f 70 74   Hence, this opt
cf30: 69 6f 6e 20 61 6c 73 6f 0a 20 20 64 69 73 61 62  ion also.  disab
cf40: 6c 65 73 20 74 68 65 20 61 62 69 6c 69 74 79 20  les the ability 
cf50: 74 6f 20 69 6e 73 65 72 74 20 6d 6f 72 65 20 74  to insert more t
cf60: 68 61 6e 20 61 20 73 69 6e 67 6c 65 20 72 6f 77  han a single row
cf70: 20 75 73 69 6e 67 20 61 6e 0a 20 20 49 4e 53 45   using an.  INSE
cf80: 52 54 20 49 4e 54 4f 20 2e 2e 2e 20 56 41 4c 55  RT INTO ... VALU
cf90: 45 53 20 2e 2e 2e 20 73 74 61 74 65 6d 65 6e 74  ES ... statement
cfa0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
cfb0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
cfc0: 5f 43 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  _CTE} {.  This o
cfd0: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70  ption causes sup
cfe0: 70 6f 72 74 20 66 6f 72 20 5b 63 6f 6d 6d 6f 6e  port for [common
cff0: 20 74 61 62 6c 65 20 65 78 70 72 65 73 73 69 6f   table expressio
d000: 6e 73 5d 20 74 6f 20 62 65 20 6f 6d 69 74 74 65  ns] to be omitte
d010: 64 2e 0a 7d 0a 0a 0a 0a 43 4f 4d 50 49 4c 45 5f  d..}....COMPILE_
d020: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
d030: 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f 46 55 4e  MIT_DATETIME_FUN
d040: 43 53 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  CS} {.  If this 
d050: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
d060: 64 2c 20 53 51 4c 69 74 65 27 73 20 62 75 69 6c  d, SQLite's buil
d070: 74 2d 69 6e 20 64 61 74 65 20 61 6e 64 20 74 69  t-in date and ti
d080: 6d 65 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 0a  me manipulation.
d090: 20 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20    functions are 
d0a0: 6f 6d 69 74 74 65 64 2e 20 53 70 65 63 69 66 69  omitted. Specifi
d0b0: 63 61 6c 6c 79 2c 20 74 68 65 20 53 51 4c 20 66  cally, the SQL f
d0c0: 75 6e 63 74 69 6f 6e 73 20 6a 75 6c 69 61 6e 64  unctions juliand
d0d0: 61 79 28 29 2c 20 64 61 74 65 28 29 2c 0a 20 20  ay(), date(),.  
d0e0: 74 69 6d 65 28 29 2c 20 64 61 74 65 74 69 6d 65  time(), datetime
d0f0: 28 29 20 61 6e 64 20 73 74 72 66 74 69 6d 65 28  () and strftime(
d100: 29 20 61 72 65 20 6e 6f 74 20 61 76 61 69 6c 61  ) are not availa
d110: 62 6c 65 2e 20 54 68 65 20 64 65 66 61 75 6c 74  ble. The default
d120: 20 63 6f 6c 75 6d 6e 0a 20 20 76 61 6c 75 65 73   column.  values
d130: 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43   CURRENT_TIME, C
d140: 55 52 52 45 4e 54 5f 44 41 54 45 20 61 6e 64 20  URRENT_DATE and 
d150: 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d  CURRENT_TIMESTAM
d160: 50 20 61 72 65 20 73 74 69 6c 6c 20 61 76 61 69  P are still avai
d170: 6c 61 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  lable..}..COMPIL
d180: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
d190: 5f 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45 7d 20  _OMIT_DECLTYPE} 
d1a0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
d1b0: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
d1c0: 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f   omit support fo
d1d0: 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33  r the.  [sqlite3
d1e0: 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
d1f0: 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  ()] and [sqlite3
d200: 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
d210: 31 36 28 29 5d 0a 20 20 69 6e 74 65 72 66 61 63  16()].  interfac
d220: 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  es..}..COMPILE_O
d230: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
d240: 49 54 5f 44 45 50 52 45 43 41 54 45 44 7d 20 7b  IT_DEPRECATED} {
d250: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
d260: 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20  auses SQLite to 
d270: 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72  omit support for
d280: 20 69 6e 74 65 72 66 61 63 65 73 0a 20 20 6d 61   interfaces.  ma
d290: 72 6b 65 64 20 61 73 20 64 65 70 72 65 63 61 74  rked as deprecat
d2a0: 65 64 2e 20 20 54 68 69 73 20 69 6e 63 6c 75 64  ed.  This includ
d2b0: 65 73 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 61  es .  [sqlite3_a
d2c0: 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28 29  ggregate_count()
d2d0: 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 65 78  ],.  [sqlite3_ex
d2e0: 70 69 72 65 64 28 29 5d 2c 0a 20 20 5b 73 71 6c  pired()],.  [sql
d2f0: 69 74 65 33 5f 74 72 61 6e 73 66 65 72 5f 62 69  ite3_transfer_bi
d300: 6e 64 69 6e 67 73 28 29 5d 2c 0a 20 20 5b 73 71  ndings()],.  [sq
d310: 6c 69 74 65 33 5f 67 6c 6f 62 61 6c 5f 72 65 63  lite3_global_rec
d320: 6f 76 65 72 28 29 5d 2c 0a 20 20 5b 73 71 6c 69  over()],.  [sqli
d330: 74 65 33 5f 74 68 72 65 61 64 5f 63 6c 65 61 6e  te3_thread_clean
d340: 75 70 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c  up()] and.  [sql
d350: 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 61 6c 61 72  ite3_memory_alar
d360: 6d 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e  m()] interfaces.
d370: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
d380: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
d390: 44 49 53 4b 49 4f 7d 20 7b 0a 20 20 54 68 69 73  DISKIO} {.  This
d3a0: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6c   option omits al
d3b0: 6c 20 73 75 70 70 6f 72 74 20 66 6f 72 20 77 72  l support for wr
d3c0: 69 74 69 6e 67 20 74 6f 20 74 68 65 20 64 69 73  iting to the dis
d3d0: 6b 20 61 6e 64 20 66 6f 72 63 65 73 0a 20 20 64  k and forces.  d
d3e0: 61 74 61 62 61 73 65 73 20 74 6f 20 65 78 69 73  atabases to exis
d3f0: 74 20 69 6e 20 6d 65 6d 6f 72 79 20 6f 6e 6c 79  t in memory only
d400: 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 68  .  This option h
d410: 61 73 20 6e 6f 74 20 62 65 65 6e 20 0a 20 20 6d  as not been .  m
d420: 61 69 6e 74 61 69 6e 65 64 20 61 6e 64 20 70 72  aintained and pr
d430: 6f 62 61 62 6c 79 20 64 6f 65 73 20 6e 6f 74 20  obably does not 
d440: 77 6f 72 6b 20 77 69 74 68 20 6e 65 77 65 72 20  work with newer 
d450: 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69  versions of SQLi
d460: 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  te..}..COMPILE_O
d470: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
d480: 49 54 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a 20 20  IT_EXPLAIN} {.  
d490: 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70  Defining this op
d4a0: 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20  tion causes the 
d4b0: 5b 45 58 50 4c 41 49 4e 5d 20 63 6f 6d 6d 61 6e  [EXPLAIN] comman
d4c0: 64 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 20  d to be omitted 
d4d0: 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72 61  from the.  libra
d4e0: 72 79 2e 20 41 74 74 65 6d 70 74 69 6e 67 20 74  ry. Attempting t
d4f0: 6f 20 65 78 65 63 75 74 65 20 61 6e 20 5b 45 58  o execute an [EX
d500: 50 4c 41 49 4e 5d 20 73 74 61 74 65 6d 65 6e 74  PLAIN] statement
d510: 20 77 69 6c 6c 20 63 61 75 73 65 20 61 20 70 61   will cause a pa
d520: 72 73 65 0a 20 20 65 72 72 6f 72 2e 0a 7d 0a 0a  rse.  error..}..
d530: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
d540: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47  SQLITE_OMIT_FLAG
d550: 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 54 68  _PRAGMAS} {.  Th
d560: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
d570: 73 75 70 70 6f 72 74 20 66 6f 72 20 61 20 73 75  support for a su
d580: 62 73 65 74 20 6f 66 20 5b 50 52 41 47 4d 41 5d  bset of [PRAGMA]
d590: 20 63 6f 6d 6d 61 6e 64 73 20 74 68 61 74 0a 20   commands that. 
d5a0: 20 71 75 65 72 79 20 61 6e 64 20 73 65 74 20 62   query and set b
d5b0: 6f 6f 6c 65 61 6e 20 70 72 6f 70 65 72 74 69 65  oolean propertie
d5c0: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
d5d0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
d5e0: 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e 54  T_FLOATING_POINT
d5f0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
d600: 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69  n is used to omi
d610: 74 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74  t floating-point
d620: 20 6e 75 6d 62 65 72 20 73 75 70 70 6f 72 74 20   number support 
d630: 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 0a  from the SQLite.
d640: 20 20 6c 69 62 72 61 72 79 2e 20 57 68 65 6e 20    library. When 
d650: 73 70 65 63 69 66 69 65 64 2c 20 73 70 65 63 69  specified, speci
d660: 66 79 69 6e 67 20 61 20 66 6c 6f 61 74 69 6e 67  fying a floating
d670: 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 20 61 73   point number as
d680: 20 61 20 6c 69 74 65 72 61 6c 20 0a 20 20 28 69   a literal .  (i
d690: 2e 65 2e 20 22 31 2e 30 31 22 29 20 72 65 73 75  .e. "1.01") resu
d6a0: 6c 74 73 20 69 6e 20 61 20 70 61 72 73 65 20 65  lts in a parse e
d6b0: 72 72 6f 72 2e 0a 0a 20 20 3c 70 3e 49 6e 20 74  rror...  <p>In t
d6c0: 68 65 20 66 75 74 75 72 65 2c 20 74 68 69 73 20  he future, this 
d6d0: 6f 70 74 69 6f 6e 20 6d 61 79 20 61 6c 73 6f 20  option may also 
d6e0: 64 69 73 61 62 6c 65 20 6f 74 68 65 72 20 66 6c  disable other fl
d6f0: 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 0a 20 20  oating point .  
d700: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2c 20 66  functionality, f
d710: 6f 72 20 65 78 61 6d 70 6c 65 20 74 68 65 20 5b  or example the [
d720: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64  sqlite3_result_d
d730: 6f 75 62 6c 65 28 29 5d 2c 20 0a 20 20 5b 73 71  ouble()], .  [sq
d740: 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c  lite3_bind_doubl
d750: 65 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 76  e()], [sqlite3_v
d760: 61 6c 75 65 5f 64 6f 75 62 6c 65 28 29 5d 20 61  alue_double()] a
d770: 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f  nd.  [sqlite3_co
d780: 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 29 5d 20 41  lumn_double()] A
d790: 50 49 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 20 20  PI functions..  
d7a0: 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  </p>.}..COMPILE_
d7b0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
d7c0: 4d 49 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 7d  MIT_FOREIGN_KEY}
d7d0: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74   {.  If this opt
d7e0: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
d7f0: 74 68 65 6e 20 5b 66 6f 72 65 69 67 6e 20 6b 65  then [foreign ke
d800: 79 20 63 6f 6e 73 74 72 61 69 6e 74 5d 20 73 79  y constraint] sy
d810: 6e 74 61 78 20 69 73 0a 20 20 6e 6f 74 20 72 65  ntax is.  not re
d820: 63 6f 67 6e 69 7a 65 64 2e 0a 7d 0a 0a 43 4f 4d  cognized..}..COM
d830: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
d840: 49 54 45 5f 4f 4d 49 54 5f 47 45 54 5f 54 41 42  ITE_OMIT_GET_TAB
d850: 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  LE} {.  This opt
d860: 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70 6f  ion causes suppo
d870: 72 74 20 66 6f 72 20 5b 73 71 6c 69 74 65 33 5f  rt for [sqlite3_
d880: 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 61 6e 64  get_table()] and
d890: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65  .  [sqlite3_free
d8a0: 5f 74 61 62 6c 65 28 29 5d 20 74 6f 20 62 65 20  _table()] to be 
d8b0: 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  omitted..}..COMP
d8c0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
d8d0: 54 45 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c 4f 42  TE_OMIT_INCRBLOB
d8e0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
d8f0: 6e 20 63 61 75 73 65 73 20 73 75 70 70 6f 72 74  n causes support
d900: 20 66 6f 72 20 5b 73 71 6c 69 74 65 33 5f 62 6c   for [sqlite3_bl
d910: 6f 62 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61 6c  ob | incremental
d920: 20 42 4c 4f 42 20 49 2f 4f 5d 0a 20 20 74 6f 20   BLOB I/O].  to 
d930: 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43  be omitted..}..C
d940: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
d950: 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 54 45 47  QLITE_OMIT_INTEG
d960: 52 49 54 59 5f 43 48 45 43 4b 7d 20 7b 0a 20 20  RITY_CHECK} {.  
d970: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
d980: 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68  s support for th
d990: 65 20 5b 69 6e 74 65 67 72 69 74 79 5f 63 68 65  e [integrity_che
d9a0: 63 6b 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43  ck pragma]..}..C
d9b0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
d9c0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 49 4b 45 5f  QLITE_OMIT_LIKE_
d9d0: 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a  OPTIMIZATION} {.
d9e0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69    This option di
d9f0: 73 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c 69  sables the abili
da00: 74 79 20 6f 66 20 53 51 4c 69 74 65 20 74 6f 20  ty of SQLite to 
da10: 75 73 65 20 69 6e 64 69 63 65 73 20 74 6f 20 68  use indices to h
da20: 65 6c 70 0a 20 20 72 65 73 6f 6c 76 65 20 5b 4c  elp.  resolve [L
da30: 49 4b 45 5d 20 61 6e 64 20 5b 47 4c 4f 42 5d 20  IKE] and [GLOB] 
da40: 6f 70 65 72 61 74 6f 72 73 20 69 6e 20 61 20 57  operators in a W
da50: 48 45 52 45 20 63 6c 61 75 73 65 2e 0a 7d 0a 0a  HERE clause..}..
da60: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
da70: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 41 44  SQLITE_OMIT_LOAD
da80: 5f 45 58 54 45 4e 53 49 4f 4e 7d 20 7b 0a 20 20  _EXTENSION} {.  
da90: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
daa0: 73 20 74 68 65 20 65 6e 74 69 72 65 20 65 78 74  s the entire ext
dab0: 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67 20 6d  ension loading m
dac0: 65 63 68 61 6e 69 73 6d 20 66 72 6f 6d 0a 20 20  echanism from.  
dad0: 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69 6e  SQLite, includin
dae0: 67 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c  g [sqlite3_enabl
daf0: 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e  e_load_extension
db00: 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
db10: 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  e3_load_extensio
db20: 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e  n()] interfaces.
db30: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
db40: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
db50: 4c 4f 43 41 4c 54 49 4d 45 7d 20 7b 0a 20 20 54  LOCALTIME} {.  T
db60: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
db70: 20 74 68 65 20 22 6c 6f 63 61 6c 74 69 6d 65 22   the "localtime"
db80: 20 6d 6f 64 69 66 69 65 72 20 66 72 6f 6d 20 74   modifier from t
db90: 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  he date and time
dba0: 0a 20 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54  .  functions.  T
dbb0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 73 6f  his option is so
dbc0: 6d 65 74 69 6d 65 73 20 75 73 65 66 75 6c 20 77  metimes useful w
dbd0: 68 65 6e 20 74 72 79 69 6e 67 20 74 6f 20 63 6f  hen trying to co
dbe0: 6d 70 69 6c 65 0a 20 20 74 68 65 20 64 61 74 65  mpile.  the date
dbf0: 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69   and time functi
dc00: 6f 6e 73 20 6f 6e 20 61 20 70 6c 61 74 66 6f 72  ons on a platfor
dc10: 6d 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20  m that does not 
dc20: 73 75 70 70 6f 72 74 20 74 68 65 0a 20 20 63 6f  support the.  co
dc30: 6e 63 65 70 74 20 6f 66 20 6c 6f 63 61 6c 20 74  ncept of local t
dc40: 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ime..}..COMPILE_
dc50: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
dc60: 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44 45 7d 20 7b  MIT_LOOKASIDE} {
dc70: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
dc80: 6d 69 74 73 20 74 68 65 20 5b 6c 6f 6f 6b 61 73  mits the [lookas
dc90: 69 64 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ide memory alloc
dca0: 61 74 6f 72 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ator]..}..COMPIL
dcb0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
dcc0: 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44 42 7d 20  _OMIT_MEMORYDB} 
dcd0: 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 69 73  {.  When this is
dce0: 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 6c 69   defined, the li
dcf0: 62 72 61 72 79 20 64 6f 65 73 20 6e 6f 74 20 72  brary does not r
dd00: 65 73 70 65 63 74 20 74 68 65 20 73 70 65 63 69  espect the speci
dd10: 61 6c 20 64 61 74 61 62 61 73 65 0a 20 20 6e 61  al database.  na
dd20: 6d 65 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 28 6e  me ":memory:" (n
dd30: 6f 72 6d 61 6c 6c 79 20 75 73 65 64 20 74 6f 20  ormally used to 
dd40: 63 72 65 61 74 65 20 61 6e 20 5b 69 6e 2d 6d 65  create an [in-me
dd50: 6d 6f 72 79 20 64 61 74 61 62 61 73 65 5d 29 2e  mory database]).
dd60: 20 49 66 20 0a 20 20 22 3a 6d 65 6d 6f 72 79 3a   If .  ":memory:
dd70: 22 20 69 73 20 70 61 73 73 65 64 20 74 6f 20 5b  " is passed to [
dd80: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c  sqlite3_open()],
dd90: 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36   [sqlite3_open16
dda0: 28 29 5d 2c 20 6f 72 0a 20 20 5b 73 71 6c 69 74  ()], or.  [sqlit
ddb0: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61  e3_open_v2()], a
ddc0: 20 66 69 6c 65 20 77 69 74 68 20 74 68 69 73 20   file with this 
ddd0: 6e 61 6d 65 20 77 69 6c 6c 20 62 65 20 0a 20 20  name will be .  
dde0: 6f 70 65 6e 65 64 20 6f 72 20 63 72 65 61 74 65  opened or create
ddf0: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
de00: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
de10: 54 5f 4f 52 5f 4f 50 54 49 4d 49 5a 41 54 49 4f  T_OR_OPTIMIZATIO
de20: 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  N} {.  This opti
de30: 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65 20  on disables the 
de40: 61 62 69 6c 69 74 79 20 6f 66 20 53 51 4c 69 74  ability of SQLit
de50: 65 20 74 6f 20 75 73 65 20 61 6e 20 69 6e 64 65  e to use an inde
de60: 78 20 74 6f 67 65 74 68 65 72 0a 20 20 77 69 74  x together.  wit
de70: 68 20 74 65 72 6d 73 20 6f 66 20 61 20 57 48 45  h terms of a WHE
de80: 52 45 20 63 6c 61 75 73 65 20 63 6f 6e 6e 65 63  RE clause connec
de90: 74 65 64 20 62 79 20 74 68 65 20 4f 52 20 6f 70  ted by the OR op
dea0: 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49  erator..}..COMPI
deb0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
dec0: 45 5f 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52 41  E_OMIT_PAGER_PRA
ded0: 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69  GMAS} {.  Defini
dee0: 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f  ng this option o
def0: 6d 69 74 73 20 70 72 61 67 6d 61 73 20 72 65 6c  mits pragmas rel
df00: 61 74 65 64 20 74 6f 20 74 68 65 20 70 61 67 65  ated to the page
df10: 72 20 73 75 62 73 79 73 74 65 6d 20 66 72 6f 6d  r subsystem from
df20: 20 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d   .  the build..}
df30: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
df40: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52   {SQLITE_OMIT_PR
df50: 41 47 4d 41 7d 20 7b 0a 20 20 54 68 69 73 20 6f  AGMA} {.  This o
df60: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
df70: 20 6f 6d 69 74 20 74 68 65 20 5b 50 52 41 47 4d   omit the [PRAGM
df80: 41 5d 20 63 6f 6d 6d 61 6e 64 0a 20 20 66 72 6f  A] command.  fro
df90: 6d 20 74 68 65 20 6c 69 62 72 61 72 79 2e 20 4e  m the library. N
dfa0: 6f 74 65 20 74 68 61 74 20 69 74 20 69 73 20 75  ote that it is u
dfb0: 73 65 66 75 6c 20 74 6f 20 64 65 66 69 6e 65 20  seful to define 
dfc0: 74 68 65 20 6d 61 63 72 6f 73 20 74 68 61 74 20  the macros that 
dfd0: 6f 6d 69 74 0a 20 20 73 70 65 63 69 66 69 63 20  omit.  specific 
dfe0: 70 72 61 67 6d 61 73 20 69 6e 20 61 64 64 69 74  pragmas in addit
dff0: 69 6f 6e 20 74 6f 20 74 68 69 73 2c 20 61 73 20  ion to this, as 
e000: 74 68 65 79 20 6d 61 79 20 61 6c 73 6f 20 72 65  they may also re
e010: 6d 6f 76 65 20 73 75 70 70 6f 72 74 69 6e 67 20  move supporting 
e020: 63 6f 64 65 0a 20 20 69 6e 20 6f 74 68 65 72 20  code.  in other 
e030: 73 75 62 2d 73 79 73 74 65 6d 73 2e 20 54 68 69  sub-systems. Thi
e040: 73 20 6d 61 63 72 6f 20 72 65 6d 6f 76 65 73 20  s macro removes 
e050: 74 68 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d  the [PRAGMA] com
e060: 6d 61 6e 64 20 6f 6e 6c 79 2e 0a 7d 0a 0a 43 4f  mand only..}..CO
e070: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
e080: 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 4f 47 52 45  LITE_OMIT_PROGRE
e090: 53 53 5f 43 41 4c 4c 42 41 43 4b 7d 20 7b 0a 20  SS_CALLBACK} {. 
e0a0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79   This option may
e0b0: 20 62 65 20 64 65 66 69 6e 65 64 20 74 6f 20 6f   be defined to o
e0c0: 6d 69 74 20 74 68 65 20 63 61 70 61 62 69 6c 69  mit the capabili
e0d0: 74 79 20 74 6f 20 69 73 73 75 65 20 22 70 72 6f  ty to issue "pro
e0e0: 67 72 65 73 73 22 20 0a 20 20 63 61 6c 6c 62 61  gress" .  callba
e0f0: 63 6b 73 20 64 75 72 69 6e 67 20 6c 6f 6e 67 2d  cks during long-
e100: 72 75 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61 74  running SQL stat
e110: 65 6d 65 6e 74 73 2e 20 54 68 65 20 0a 20 20 5b  ements. The .  [
e120: 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73  sqlite3_progress
e130: 5f 68 61 6e 64 6c 65 72 28 29 5d 0a 20 20 41 50  _handler()].  AP
e140: 49 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f  I function is no
e150: 74 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68 65  t present in the
e160: 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d   library..}..COM
e170: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
e180: 49 54 45 5f 4f 4d 49 54 5f 51 55 49 43 4b 42 41  ITE_OMIT_QUICKBA
e190: 4c 41 4e 43 45 7d 20 7b 0a 20 20 54 68 69 73 20  LANCE} {.  This 
e1a0: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6e 20  option omits an 
e1b0: 61 6c 74 65 72 6e 61 74 69 76 65 2c 20 66 61 73  alternative, fas
e1c0: 74 65 72 20 42 2d 54 72 65 65 20 62 61 6c 61 6e  ter B-Tree balan
e1d0: 63 69 6e 67 20 72 6f 75 74 69 6e 65 2e 0a 20 20  cing routine..  
e1e0: 55 73 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f  Using this optio
e1f0: 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20 73  n makes SQLite s
e200: 6c 69 67 68 74 6c 79 20 73 6d 61 6c 6c 65 72 20  lightly smaller 
e210: 61 74 20 74 68 65 20 65 78 70 65 6e 73 65 20 6f  at the expense o
e220: 66 0a 20 20 6d 61 6b 69 6e 67 20 69 74 20 72 75  f.  making it ru
e230: 6e 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f 77 65  n slightly slowe
e240: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
e250: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
e260: 54 5f 52 45 49 4e 44 45 58 7d 20 7b 0a 20 20 57  T_REINDEX} {.  W
e270: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
e280: 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20  is defined, the 
e290: 5b 52 45 49 4e 44 45 58 5d 0a 20 20 63 6f 6d 6d  [REINDEX].  comm
e2a0: 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75  and is not inclu
e2b0: 64 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61  ded in the libra
e2c0: 72 79 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20  ry..  Executing 
e2d0: 61 20 5b 52 45 49 4e 44 45 58 5d 20 73 74 61 74  a [REINDEX] stat
e2e0: 65 6d 65 6e 74 20 63 61 75 73 65 73 20 0a 20 20  ement causes .  
e2f0: 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d  a parse error..}
e300: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
e310: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43   {SQLITE_OMIT_SC
e320: 48 45 4d 41 5f 50 52 41 47 4d 41 53 7d 20 7b 0a  HEMA_PRAGMAS} {.
e330: 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20    Defining this 
e340: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61  option omits pra
e350: 67 6d 61 73 20 66 6f 72 20 71 75 65 72 79 69 6e  gmas for queryin
e360: 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73  g the database s
e370: 63 68 65 6d 61 20 66 72 6f 6d 20 0a 20 20 74 68  chema from .  th
e380: 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50  e build..}..COMP
e390: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
e3a0: 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 56  TE_OMIT_SCHEMA_V
e3b0: 45 52 53 49 4f 4e 5f 50 52 41 47 4d 41 53 7d 20  ERSION_PRAGMAS} 
e3c0: 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69  {.  Defining thi
e3d0: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70  s option omits p
e3e0: 72 61 67 6d 61 73 20 66 6f 72 20 71 75 65 72 79  ragmas for query
e3f0: 69 6e 67 20 61 6e 64 20 6d 6f 64 69 66 79 69 6e  ing and modifyin
e400: 67 20 74 68 65 20 0a 20 20 64 61 74 61 62 61 73  g the .  databas
e410: 65 20 73 63 68 65 6d 61 20 76 65 72 73 69 6f 6e  e schema version
e420: 20 61 6e 64 20 75 73 65 72 20 76 65 72 73 69 6f   and user versio
e430: 6e 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64  n from the build
e440: 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79 2c 20  . Specifically, 
e450: 74 68 65 20 0a 20 20 5b 73 63 68 65 6d 61 5f 76  the .  [schema_v
e460: 65 72 73 69 6f 6e 5d 20 61 6e 64 20 5b 75 73 65  ersion] and [use
e470: 72 5f 76 65 72 73 69 6f 6e 5d 20 50 52 41 47 4d  r_version] PRAGM
e480: 41 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a  As are omitted..
e490: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
e4a0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  N {SQLITE_OMIT_S
e4b0: 48 41 52 45 44 5f 43 41 43 48 45 7d 20 7b 0a 20  HARED_CACHE} {. 
e4c0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 62 75 69   This option bui
e4d0: 6c 64 73 20 53 51 4c 69 74 65 20 77 69 74 68 6f  lds SQLite witho
e4e0: 75 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 73  ut support for s
e4f0: 68 61 72 65 64 2d 63 61 63 68 65 20 6d 6f 64 65  hared-cache mode
e500: 2e 0a 20 20 54 68 65 20 5b 73 71 6c 69 74 65 33  ..  The [sqlite3
e510: 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63  _enable_shared_c
e520: 61 63 68 65 28 29 5d 20 69 73 20 6f 6d 69 74 74  ache()] is omitt
e530: 65 64 20 61 6c 6f 6e 67 20 77 69 74 68 20 61 20  ed along with a 
e540: 66 61 69 72 0a 20 20 61 6d 6f 75 6e 74 20 6f 66  fair.  amount of
e550: 20 6c 6f 67 69 63 20 77 69 74 68 69 6e 20 74 68   logic within th
e560: 65 20 42 2d 54 72 65 65 20 73 75 62 73 79 73 74  e B-Tree subsyst
e570: 65 6d 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  em associated wi
e580: 74 68 20 73 68 61 72 65 64 0a 20 20 63 61 63 68  th shared.  cach
e590: 65 20 6d 61 6e 61 67 65 6d 65 6e 74 2e 0a 7d 0a  e management..}.
e5a0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
e5b0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 55 42  {SQLITE_OMIT_SUB
e5c0: 51 55 45 52 59 7d 20 7b 0a 20 20 49 66 20 64 65  QUERY} {.  If de
e5d0: 66 69 6e 65 64 2c 20 73 75 70 70 6f 72 74 20 66  fined, support f
e5e0: 6f 72 20 73 75 62 2d 73 65 6c 65 63 74 73 20 61  or sub-selects a
e5f0: 6e 64 20 74 68 65 20 49 4e 28 29 20 6f 70 65 72  nd the IN() oper
e600: 61 74 6f 72 20 61 72 65 20 6f 6d 69 74 74 65 64  ator are omitted
e610: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
e620: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
e630: 5f 54 43 4c 5f 56 41 52 49 41 42 4c 45 7d 20 7b  _TCL_VARIABLE} {
e640: 0a 20 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f  .  If this macro
e650: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
e660: 6e 20 74 68 65 20 73 70 65 63 69 61 6c 20 22 24  n the special "$
e670: 3c 76 61 72 69 61 62 6c 65 2d 6e 61 6d 65 3e 22  <variable-name>"
e680: 20 73 79 6e 74 61 78 0a 20 20 75 73 65 64 20 74   syntax.  used t
e690: 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  o automatically 
e6a0: 62 69 6e 64 20 53 51 4c 20 76 61 72 69 61 62 6c  bind SQL variabl
e6b0: 65 73 20 74 6f 20 54 43 4c 20 76 61 72 69 61 62  es to TCL variab
e6c0: 6c 65 73 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a  les is omitted..
e6d0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
e6e0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54  N {SQLITE_OMIT_T
e6f0: 45 4d 50 44 42 7d 20 7b 0a 20 20 54 68 69 73 20  EMPDB} {.  This 
e700: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70  option omits sup
e710: 70 6f 72 74 20 66 6f 72 20 54 45 4d 50 20 6f 72  port for TEMP or
e720: 20 54 45 4d 50 4f 52 41 52 59 20 74 61 62 6c 65   TEMPORARY table
e730: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
e740: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
e750: 54 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54 68 69  T_TRACE} {.  Thi
e760: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73  s option omits s
e770: 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b  upport for the [
e780: 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65 28  sqlite3_profile(
e790: 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65  )] and.  [sqlite
e7a0: 33 5f 74 72 61 63 65 28 29 5d 20 69 6e 74 65 72  3_trace()] inter
e7b0: 66 61 63 65 73 20 61 6e 64 20 74 68 65 69 72 20  faces and their 
e7c0: 61 73 73 6f 63 69 61 74 65 64 20 6c 6f 67 69 63  associated logic
e7d0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
e7e0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
e7f0: 5f 54 52 49 47 47 45 52 7d 20 7b 0a 20 20 44 65  _TRIGGER} {.  De
e800: 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69  fining this opti
e810: 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74  on omits support
e820: 20 66 6f 72 20 54 52 49 47 47 45 52 20 6f 62 6a   for TRIGGER obj
e830: 65 63 74 73 2e 20 4e 65 69 74 68 65 72 20 74 68  ects. Neither th
e840: 65 20 0a 20 20 5b 43 52 45 41 54 45 20 54 52 49  e .  [CREATE TRI
e850: 47 47 45 52 5d 20 6f 72 20 5b 44 52 4f 50 20 54  GGER] or [DROP T
e860: 52 49 47 47 45 52 5d 0a 20 20 63 6f 6d 6d 61 6e  RIGGER].  comman
e870: 64 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65  ds are available
e880: 20 69 6e 20 74 68 69 73 20 63 61 73 65 2c 20 61   in this case, a
e890: 6e 64 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f  nd attempting to
e8a0: 20 65 78 65 63 75 74 65 0a 20 20 65 69 74 68 65   execute.  eithe
e8b0: 72 20 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e  r will result in
e8c0: 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a   a parse error..
e8d0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 6c    This option al
e8e0: 73 6f 20 64 69 73 61 62 6c 65 73 20 65 6e 66 6f  so disables enfo
e8f0: 72 63 65 6d 65 6e 74 20 6f 66 20 5b 66 6f 72 65  rcement of [fore
e900: 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69  ign key constrai
e910: 6e 74 73 5d 2c 0a 20 20 73 69 6e 63 65 20 74 68  nts],.  since th
e920: 65 20 63 6f 64 65 20 74 68 61 74 20 69 6d 70 6c  e code that impl
e930: 65 6d 65 6e 74 73 20 74 72 69 67 67 65 72 73 20  ements triggers 
e940: 61 6e 64 20 77 68 69 63 68 20 69 73 20 6f 6d 69  and which is omi
e950: 74 74 65 64 20 62 79 20 74 68 69 73 0a 20 20 6f  tted by this.  o
e960: 70 74 69 6f 6e 20 69 73 20 61 6c 73 6f 20 75 73  ption is also us
e970: 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20  ed to implement 
e980: 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63 74  [foreign key act
e990: 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ions]..}..COMPIL
e9a0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
e9b0: 5f 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f 4f  _OMIT_TRUNCATE_O
e9c0: 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20  PTIMIZATION} {. 
e9d0: 20 41 20 64 65 66 61 75 6c 74 20 62 75 69 6c 64   A default build
e9e0: 20 6f 66 20 53 51 4c 69 74 65 2c 20 69 66 20 61   of SQLite, if a
e9f0: 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65 6d   [DELETE] statem
ea00: 65 6e 74 20 68 61 73 20 6e 6f 20 57 48 45 52 45  ent has no WHERE
ea10: 20 63 6c 61 75 73 65 0a 20 20 61 6e 64 20 6f 70   clause.  and op
ea20: 65 72 61 74 65 73 20 6f 6e 20 61 20 74 61 62 6c  erates on a tabl
ea30: 65 20 77 69 74 68 20 6e 6f 20 74 72 69 67 67 65  e with no trigge
ea40: 72 73 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74  rs, an optimizat
ea50: 69 6f 6e 20 6f 63 63 75 72 73 20 74 68 61 74 0a  ion occurs that.
ea60: 20 20 63 61 75 73 65 73 20 74 68 65 20 44 45 4c    causes the DEL
ea70: 45 54 45 20 74 6f 20 6f 63 63 75 72 20 62 79 20  ETE to occur by 
ea80: 64 72 6f 70 70 69 6e 67 20 61 6e 64 20 72 65 63  dropping and rec
ea90: 72 65 61 74 69 6e 67 20 74 68 65 20 74 61 62 6c  reating the tabl
eaa0: 65 2e 20 20 0a 20 20 44 72 6f 70 70 69 6e 67 20  e.  .  Dropping 
eab0: 61 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20 61  and recreating a
eac0: 20 74 61 62 6c 65 20 69 73 20 75 73 75 61 6c 6c   table is usuall
ead0: 79 20 6d 75 63 68 20 66 61 73 74 65 72 20 74 68  y much faster th
eae0: 61 6e 20 64 65 6c 65 74 69 6e 67 0a 20 20 74 68  an deleting.  th
eaf0: 65 20 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74 20  e table content 
eb00: 72 6f 77 20 62 79 20 72 6f 77 2e 20 20 54 68 69  row by row.  Thi
eb10: 73 20 69 73 20 74 68 65 20 22 74 72 75 6e 63 61  s is the "trunca
eb20: 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 22  te optimization"
eb30: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
eb40: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
eb50: 5f 55 54 46 31 36 7d 20 7b 0a 20 20 54 68 69 73  _UTF16} {.  This
eb60: 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20 74   macro is used t
eb70: 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66  o omit support f
eb80: 6f 72 20 55 54 46 31 36 20 74 65 78 74 20 65 6e  or UTF16 text en
eb90: 63 6f 64 69 6e 67 2e 20 57 68 65 6e 20 74 68 69  coding. When thi
eba0: 73 20 69 73 0a 20 20 64 65 66 69 6e 65 64 20 61  s is.  defined a
ebb0: 6c 6c 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 73  ll API functions
ebc0: 20 74 68 61 74 20 72 65 74 75 72 6e 20 6f 72 20   that return or 
ebd0: 61 63 63 65 70 74 20 55 54 46 31 36 20 65 6e 63  accept UTF16 enc
ebe0: 6f 64 65 64 20 74 65 78 74 20 61 72 65 0a 20 20  oded text are.  
ebf0: 75 6e 61 76 61 69 6c 61 62 6c 65 2e 20 54 68 65  unavailable. The
ec00: 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e  se functions can
ec10: 20 62 65 20 69 64 65 6e 74 69 66 69 65 64 20 62   be identified b
ec20: 79 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20  y the fact that 
ec30: 74 68 65 79 20 65 6e 64 0a 20 20 77 69 74 68 20  they end.  with 
ec40: 27 31 36 27 2c 20 66 6f 72 20 65 78 61 6d 70 6c  '16', for exampl
ec50: 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  e [sqlite3_prepa
ec60: 72 65 31 36 28 29 5d 2c 20 5b 73 71 6c 69 74 65  re16()], [sqlite
ec70: 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28  3_column_text16(
ec80: 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65  )] and.  [sqlite
ec90: 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 29 5d  3_bind_text16()]
eca0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
ecb0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
ecc0: 5f 56 41 43 55 55 4d 7d 20 7b 0a 20 20 57 68 65  _VACUUM} {.  Whe
ecd0: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
ece0: 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 56   defined, the [V
ecf0: 41 43 55 55 4d 5d 0a 20 20 63 6f 6d 6d 61 6e 64  ACUUM].  command
ed00: 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64   is not included
ed10: 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e   in the library.
ed20: 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61 20 5b  .  Executing a [
ed30: 56 41 43 55 55 4d 5d 20 73 74 61 74 65 6d 65 6e  VACUUM] statemen
ed40: 74 20 63 61 75 73 65 73 20 0a 20 20 61 20 70 61  t causes .  a pa
ed50: 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f  rse error..}..CO
ed60: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
ed70: 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 45 57 7d 20  LITE_OMIT_VIEW} 
ed80: 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69  {.  Defining thi
ed90: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73  s option omits s
eda0: 75 70 70 6f 72 74 20 66 6f 72 20 56 49 45 57 20  upport for VIEW 
edb0: 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74 68 65 72  objects. Neither
edc0: 20 74 68 65 20 0a 20 20 5b 43 52 45 41 54 45 20   the .  [CREATE 
edd0: 56 49 45 57 5d 20 6e 6f 72 20 74 68 65 20 5b 44  VIEW] nor the [D
ede0: 52 4f 50 20 56 49 45 57 5d 0a 20 20 63 6f 6d 6d  ROP VIEW].  comm
edf0: 61 6e 64 73 20 61 72 65 20 61 76 61 69 6c 61 62  ands are availab
ee00: 6c 65 20 69 6e 20 74 68 69 73 20 63 61 73 65 2c  le in this case,
ee10: 20 61 6e 64 0a 20 20 61 74 74 65 6d 70 74 69 6e   and.  attemptin
ee20: 67 20 74 6f 20 65 78 65 63 75 74 65 20 65 69 74  g to execute eit
ee30: 68 65 72 20 77 69 6c 6c 20 72 65 73 75 6c 74 20  her will result 
ee40: 69 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f 72  in a parse error
ee50: 2e 0a 0a 20 20 57 41 52 4e 49 4e 47 3a 20 49 66  ...  WARNING: If
ee60: 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20 64   this macro is d
ee70: 65 66 69 6e 65 64 2c 20 69 74 20 77 69 6c 6c 20  efined, it will 
ee80: 6e 6f 74 20 62 65 20 70 6f 73 73 69 62 6c 65 20  not be possible 
ee90: 74 6f 20 6f 70 65 6e 20 61 20 64 61 74 61 62 61  to open a databa
eea0: 73 65 0a 20 20 66 6f 72 20 77 68 69 63 68 20 74  se.  for which t
eeb0: 68 65 20 73 63 68 65 6d 61 20 63 6f 6e 74 61 69  he schema contai
eec0: 6e 73 20 56 49 45 57 20 6f 62 6a 65 63 74 73 2e  ns VIEW objects.
eed0: 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54   .}..COMPILE_OPT
eee0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
eef0: 5f 56 49 52 54 55 41 4c 54 41 42 4c 45 7d 20 7b  _VIRTUALTABLE} {
ef00: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
ef10: 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72  mits support for
ef20: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 74   the [sqlite3_vt
ef30: 61 62 20 7c 20 56 69 72 74 75 61 6c 20 54 61 62  ab | Virtual Tab
ef40: 6c 65 5d 0a 20 20 6d 65 63 68 61 6e 69 73 6d 20  le].  mechanism 
ef50: 69 6e 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f  in SQLite..}..CO
ef60: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
ef70: 4c 49 54 45 5f 4f 4d 49 54 5f 57 41 4c 7d 20 7b  LITE_OMIT_WAL} {
ef80: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
ef90: 6d 69 74 73 20 74 68 65 20 22 5b 77 72 69 74 65  mits the "[write
efa0: 2d 61 68 65 61 64 20 6c 6f 67 5d 22 20 28 61 2e  -ahead log]" (a.
efb0: 6b 2e 61 2e 20 22 5b 57 41 4c 5d 22 29 20 63 61  k.a. "[WAL]") ca
efc0: 70 61 62 69 6c 69 74 79 2e 0a 7d 0a 0a 43 4f 4d  pability..}..COM
efd0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
efe0: 49 54 45 5f 4f 4d 49 54 5f 57 53 44 7d 20 7b 0a  ITE_OMIT_WSD} {.
eff0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 62 75    This option bu
f000: 69 6c 64 73 20 61 20 76 65 72 73 69 6f 6e 20 6f  ilds a version o
f010: 66 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62  f the SQLite lib
f020: 72 61 72 79 20 74 68 61 74 20 63 6f 6e 74 61 69  rary that contai
f030: 6e 73 20 6e 6f 0a 20 20 57 72 69 74 61 62 6c 65  ns no.  Writable
f040: 20 53 74 61 74 69 63 20 44 61 74 61 20 28 57 53   Static Data (WS
f050: 44 29 2e 20 20 57 53 44 20 69 73 20 67 6c 6f 62  D).  WSD is glob
f060: 61 6c 20 76 61 72 69 61 62 6c 65 73 20 61 6e 64  al variables and
f070: 2f 6f 72 20 73 74 61 74 69 63 0a 20 20 76 61 72  /or static.  var
f080: 69 61 62 6c 65 73 2e 20 20 53 6f 6d 65 20 70 6c  iables.  Some pl
f090: 61 74 66 6f 72 6d 73 20 64 6f 20 6e 6f 74 20 73  atforms do not s
f0a0: 75 70 70 6f 72 74 20 57 53 44 2c 20 61 6e 64 20  upport WSD, and 
f0b0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e  this option is n
f0c0: 65 63 65 73 73 61 72 79 0a 20 20 69 6e 20 6f 72  ecessary.  in or
f0d0: 64 65 72 20 66 6f 72 20 53 51 4c 69 74 65 20 74  der for SQLite t
f0e0: 6f 20 77 6f 72 6b 20 74 68 6f 73 65 20 70 6c 61  o work those pla
f0f0: 74 66 6f 72 6d 73 2e 20 20 0a 0a 20 20 55 6e 6c  tforms.  ..  Unl
f100: 69 6b 65 20 6f 74 68 65 72 20 4f 4d 49 54 20 6f  ike other OMIT o
f110: 70 74 69 6f 6e 73 20 77 68 69 63 68 20 6d 61 6b  ptions which mak
f120: 65 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62  e the SQLite lib
f130: 72 61 72 79 20 73 6d 61 6c 6c 65 72 2c 0a 20 20  rary smaller,.  
f140: 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 63 74 75  this option actu
f150: 61 6c 6c 79 20 69 6e 63 72 65 61 73 65 73 20 74  ally increases t
f160: 68 65 20 73 69 7a 65 20 6f 66 20 53 51 4c 69 74  he size of SQLit
f170: 65 20 61 6e 64 20 6d 61 6b 65 73 20 69 74 20 72  e and makes it r
f180: 75 6e 0a 20 20 61 20 6c 69 74 74 6c 65 20 73 6c  un.  a little sl
f190: 6f 77 65 72 2e 20 20 4f 6e 6c 79 20 75 73 65 20  ower.  Only use 
f1a0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 66 20 53  this option if S
f1b0: 51 4c 69 74 65 20 69 73 20 62 65 69 6e 67 20 62  QLite is being b
f1c0: 75 69 6c 74 20 66 6f 72 20 61 6e 0a 20 20 65 6d  uilt for an.  em
f1d0: 62 65 64 64 65 64 20 74 61 72 67 65 74 20 74 68  bedded target th
f1e0: 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70  at does not supp
f1f0: 6f 72 74 20 57 53 44 2e 0a 7d 0a 0a 43 4f 4d 50  ort WSD..}..COMP
f200: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
f210: 54 45 5f 4f 4d 49 54 5f 58 46 45 52 5f 4f 50 54  TE_OMIT_XFER_OPT
f220: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
f230: 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20  n omits support 
f240: 66 6f 72 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  for optimization
f250: 73 20 74 68 61 74 20 68 65 6c 70 20 73 74 61 74  s that help stat
f260: 65 6d 65 6e 74 73 0a 20 20 6f 66 20 74 68 65 20  ements.  of the 
f270: 66 6f 72 6d 20 22 49 4e 53 45 52 54 20 49 4e 54  form "INSERT INT
f280: 4f 20 2e 2e 2e 20 53 45 4c 45 43 54 20 2e 2e 2e  O ... SELECT ...
f290: 22 20 72 75 6e 20 66 61 73 74 65 72 2e 0a 7d 0a  " run faster..}.
f2a0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
f2b0: 7b 53 51 4c 49 54 45 5f 5a 45 52 4f 5f 4d 41 4c  {SQLITE_ZERO_MAL
f2c0: 4c 4f 43 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  LOC} {.  This op
f2d0: 74 69 6f 6e 20 6f 6d 69 74 73 20 62 6f 74 68 20  tion omits both 
f2e0: 74 68 65 20 5b 64 65 66 61 75 6c 74 20 6d 65 6d  the [default mem
f2f0: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 61  ory allocator] a
f300: 6e 64 20 74 68 65 0a 20 20 5b 64 65 62 75 67 67  nd the.  [debugg
f310: 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ing memory alloc
f320: 61 74 6f 72 5d 20 66 72 6f 6d 20 74 68 65 20 62  ator] from the b
f330: 75 69 6c 64 20 61 6e 64 20 73 75 62 73 74 69 74  uild and substit
f340: 75 74 65 73 20 61 20 73 74 75 62 0a 20 20 6d 65  utes a stub.  me
f350: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 74  mory allocator t
f360: 68 61 74 20 61 6c 77 61 79 73 20 66 61 69 6c 73  hat always fails
f370: 2e 20 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6e  .  SQLite will n
f380: 6f 74 20 72 75 6e 20 77 69 74 68 20 74 68 69 73  ot run with this
f390: 0a 20 20 73 74 75 62 20 6d 65 6d 6f 72 79 20 61  .  stub memory a
f3a0: 6c 6c 6f 63 61 74 6f 72 20 73 69 6e 63 65 20 69  llocator since i
f3b0: 74 20 77 69 6c 6c 20 62 65 20 75 6e 61 62 6c 65  t will be unable
f3c0: 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 6d 65 6d   to allocate mem
f3d0: 6f 72 79 2e 20 20 42 75 74 0a 20 20 74 68 69 73  ory.  But.  this
f3e0: 20 73 74 75 62 20 63 61 6e 20 62 65 20 72 65 70   stub can be rep
f3f0: 6c 61 63 65 64 20 61 74 20 73 74 61 72 74 2d 74  laced at start-t
f400: 69 6d 65 20 75 73 69 6e 67 0a 20 20 5b 73 71 6c  ime using.  [sql
f410: 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51  ite3_config]([SQ
f420: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c  LITE_CONFIG_MALL
f430: 4f 43 5d 2c 2e 2e 2e 29 20 6f 72 0a 20 20 5b 73  OC],...) or.  [s
f440: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b  qlite3_config]([
f450: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45  SQLITE_CONFIG_HE
f460: 41 50 5d 2c 2e 2e 2e 29 2e 0a 20 20 53 6f 20 74  AP],...)..  So t
f470: 68 65 20 6e 65 74 20 65 66 66 65 63 74 20 6f 66  he net effect of
f480: 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   this compile-ti
f490: 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 74 68 61  me option is tha
f4a0: 74 20 69 74 20 61 6c 6c 6f 77 73 20 53 51 4c 69  t it allows SQLi
f4b0: 74 65 0a 20 20 74 6f 20 62 65 20 63 6f 6d 70 69  te.  to be compi
f4c0: 6c 65 64 20 61 6e 64 20 6c 69 6e 6b 65 64 20 61  led and linked a
f4d0: 67 61 69 6e 73 74 20 61 20 73 79 73 74 65 6d 20  gainst a system 
f4e0: 6c 69 62 72 61 72 79 20 74 68 61 74 20 64 6f 65  library that doe
f4f0: 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 0a 20 20  s not support.  
f500: 6d 61 6c 6c 6f 63 28 29 2c 20 66 72 65 65 28 29  malloc(), free()
f510: 2c 20 61 6e 64 2f 6f 72 20 72 65 61 6c 6c 6f 63  , and/or realloc
f520: 28 29 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61  ()..}..</tcl>.<a
f530: 20 6e 61 6d 65 3d 22 64 65 62 75 67 6f 70 74 69   name="debugopti
f540: 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e  ons"></a>.<h2>1.
f550: 38 20 41 6e 61 6c 79 73 69 73 20 61 6e 64 20 44  8 Analysis and D
f560: 65 62 75 67 67 69 6e 67 20 4f 70 74 69 6f 6e 73  ebugging Options
f570: 3c 2f 68 32 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d  </h2>.<tcl>..COM
f580: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
f590: 49 54 45 5f 44 45 42 55 47 7d 20 7b 0a 20 20 54  ITE_DEBUG} {.  T
f5a0: 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65  he SQLite source
f5b0: 20 63 6f 64 65 20 63 6f 6e 74 61 69 6e 73 20 6c   code contains l
f5c0: 69 74 65 72 61 6c 6c 79 20 74 68 6f 75 73 61 6e  iterally thousan
f5d0: 64 73 20 6f 66 20 61 73 73 65 72 74 28 29 20 73  ds of assert() s
f5e0: 74 61 74 65 6d 65 6e 74 73 0a 20 20 75 73 65 64  tatements.  used
f5f0: 20 74 6f 20 76 65 72 69 66 79 20 69 6e 74 65 72   to verify inter
f600: 6e 61 6c 20 61 73 73 75 6d 70 74 69 6f 6e 73 20  nal assumptions 
f610: 61 6e 64 20 73 75 62 72 6f 75 74 69 6e 65 20 70  and subroutine p
f620: 72 65 63 6f 6e 64 69 74 69 6f 6e 73 20 61 6e 64  reconditions and
f630: 0a 20 20 70 6f 73 74 63 6f 6e 64 69 74 69 6f 6e  .  postcondition
f640: 73 2e 20 20 54 68 65 73 65 20 61 73 73 65 72 74  s.  These assert
f650: 28 29 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72  () statements ar
f660: 65 20 6e 6f 72 6d 61 6c 6c 79 20 74 75 72 6e 65  e normally turne
f670: 64 20 6f 66 66 0a 20 20 28 74 68 65 79 20 67 65  d off.  (they ge
f680: 6e 65 72 61 74 65 20 6e 6f 20 63 6f 64 65 29 20  nerate no code) 
f690: 73 69 6e 63 65 20 74 75 72 6e 69 6e 67 20 74 68  since turning th
f6a0: 65 6d 20 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69  em on makes SQLi
f6b0: 74 65 20 72 75 6e 20 61 70 70 72 6f 78 69 6d 61  te run approxima
f6c0: 74 65 6c 79 0a 20 20 74 68 72 65 65 20 74 69 6d  tely.  three tim
f6d0: 65 73 20 73 6c 6f 77 65 72 2e 20 20 42 75 74 20  es slower.  But 
f6e0: 66 6f 72 20 74 65 73 74 69 6e 67 20 61 6e 64 20  for testing and 
f6f0: 61 6e 61 6c 79 73 69 73 2c 20 69 74 20 69 73 20  analysis, it is 
f700: 75 73 65 66 75 6c 20 74 6f 20 74 75 72 6e 0a 20  useful to turn. 
f710: 20 74 68 65 20 61 73 73 65 72 74 28 29 20 73 74   the assert() st
f720: 61 74 65 6d 65 6e 74 73 20 6f 6e 2e 20 20 54 68  atements on.  Th
f730: 65 20 53 51 4c 49 54 45 5f 44 45 42 55 47 20 63  e SQLITE_DEBUG c
f740: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
f750: 6f 6e 20 64 6f 65 73 20 74 68 69 73 2e 0a 20 20  on does this..  
f760: 3c 70 3e 53 51 4c 49 54 45 5f 44 45 42 55 47 20  <p>SQLITE_DEBUG 
f770: 61 6c 73 6f 20 65 6e 61 62 6c 65 73 20 73 6f 6d  also enables som
f780: 65 20 6f 74 68 65 72 20 64 65 62 75 67 67 69 6e  e other debuggin
f790: 67 20 66 65 61 74 75 72 65 73 2c 20 73 75 63 68  g features, such
f7a0: 20 61 73 0a 20 20 73 70 65 63 69 61 6c 20 5b 50   as.  special [P
f7b0: 52 41 47 4d 41 5d 20 73 74 61 74 65 6d 65 6e 74  RAGMA] statement
f7c0: 73 20 74 68 61 74 20 74 75 72 6e 20 6f 6e 20 74  s that turn on t
f7d0: 72 61 63 69 6e 67 20 61 6e 64 20 6c 69 73 74 69  racing and listi
f7e0: 6e 67 20 66 65 61 74 75 72 65 73 0a 20 20 75 73  ng features.  us
f7f0: 65 64 20 66 6f 72 20 74 72 6f 75 62 6c 65 73 68  ed for troublesh
f800: 6f 6f 74 69 6e 67 20 61 6e 64 20 61 6e 61 6c 79  ooting and analy
f810: 73 69 73 20 6f 66 20 74 68 65 20 5b 56 44 42 45  sis of the [VDBE
f820: 5d 20 61 6e 64 20 63 6f 64 65 20 67 65 6e 65 72  ] and code gener
f830: 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ator..}..COMPILE
f840: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
f850: 4d 45 4d 44 45 42 55 47 7d 20 7b 0a 20 20 54 68  MEMDEBUG} {.  Th
f860: 65 20 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42 55  e SQLITE_MEMDEBU
f870: 47 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  G option causes 
f880: 61 6e 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 20  an instrumented 
f890: 0a 20 20 5b 64 65 62 75 67 67 69 6e 67 20 6d 65  .  [debugging me
f8a0: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 0a  mory allocator].
f8b0: 20 20 74 6f 20 62 65 20 75 73 65 64 20 61 73 20    to be used as 
f8c0: 74 68 65 20 64 65 66 61 75 6c 74 20 6d 65 6d 6f  the default memo
f8d0: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 77 69 74  ry allocator wit
f8e0: 68 69 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 65  hin SQLite.  The
f8f0: 0a 20 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 20  .  instrumented 
f900: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
f910: 20 63 68 65 63 6b 73 20 66 6f 72 20 6d 69 73 75   checks for misu
f920: 73 65 20 6f 66 20 64 79 6e 61 6d 69 63 61 6c 6c  se of dynamicall
f930: 79 20 61 6c 6c 6f 63 61 74 65 64 0a 20 20 6d 65  y allocated.  me
f940: 6d 6f 72 79 2e 20 20 45 78 61 6d 70 6c 65 73 20  mory.  Examples 
f950: 6f 66 20 6d 69 73 75 73 65 20 69 6e 63 6c 75 64  of misuse includ
f960: 65 20 75 73 69 6e 67 20 6d 65 6d 6f 72 79 20 61  e using memory a
f970: 66 74 65 72 20 69 74 20 69 73 20 66 72 65 65 64  fter it is freed
f980: 2c 0a 20 20 77 72 69 74 69 6e 67 20 6f 66 66 20  ,.  writing off 
f990: 74 68 65 20 65 6e 64 73 20 6f 66 20 61 20 6d 65  the ends of a me
f9a0: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c  mory allocation,
f9b0: 20 66 72 65 65 69 6e 67 20 6d 65 6d 6f 72 79 20   freeing memory 
f9c0: 6e 6f 74 20 70 72 65 76 69 6f 75 73 6c 79 0a 20  not previously. 
f9d0: 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74   obtained from t
f9e0: 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  he memory alloca
f9f0: 74 6f 72 2c 20 6f 72 20 66 61 69 6c 69 6e 67 20  tor, or failing 
fa00: 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 6e 65  to initialize ne
fa10: 77 6c 79 0a 20 20 61 6c 6c 6f 63 61 74 65 64 20  wly.  allocated 
fa20: 6d 65 6d 6f 72 79 2e 0a 7d 0a 0a 3c 2f 74 63 6c  memory..}..</tcl
fa30: 3e 0a 3c 61 20 6e 61 6d 65 3d 22 77 69 6e 33 32  >.<a name="win32
fa40: 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 68  options"></a>.<h
fa50: 32 3e 31 2e 39 20 57 69 6e 64 6f 77 73 2d 53 70  2>1.9 Windows-Sp
fa60: 65 63 69 66 69 63 20 4f 70 74 69 6f 6e 73 3c 2f  ecific Options</
fa70: 68 32 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d 50 49  h2>.<tcl>..COMPI
fa80: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
fa90: 45 5f 57 49 4e 33 32 5f 48 45 41 50 5f 43 52 45  E_WIN32_HEAP_CRE
faa0: 41 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ATE} {.  This op
fab0: 74 69 6f 6e 20 66 6f 72 63 65 73 20 74 68 65 20  tion forces the 
fac0: 57 69 6e 33 32 20 6e 61 74 69 76 65 20 6d 65 6d  Win32 native mem
fad0: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 77  ory allocator, w
fae0: 68 65 6e 20 65 6e 61 62 6c 65 64 2c 20 74 6f 0a  hen enabled, to.
faf0: 20 20 63 72 65 61 74 65 20 61 20 70 72 69 76 61    create a priva
fb00: 74 65 20 68 65 61 70 20 74 6f 20 68 6f 6c 64 20  te heap to hold 
fb10: 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  all memory alloc
fb20: 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  ations..}..COMPI
fb30: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
fb40: 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 5f 56  E_WIN32_MALLOC_V
fb50: 41 4c 49 44 41 54 45 7d 20 7b 0a 20 20 54 68 69  ALIDATE} {.  Thi
fb60: 73 20 6f 70 74 69 6f 6e 20 66 6f 72 63 65 73 20  s option forces 
fb70: 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65  the Win32 native
fb80: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
fb90: 72 2c 20 77 68 65 6e 20 65 6e 61 62 6c 65 64 2c  r, when enabled,
fba0: 20 74 6f 0a 20 20 6d 61 6b 65 20 73 74 72 61 74   to.  make strat
fbb0: 65 67 69 63 20 63 61 6c 6c 73 20 69 6e 74 6f 20  egic calls into 
fbc0: 74 68 65 20 48 65 61 70 56 61 6c 69 64 61 74 65  the HeapValidate
fbd0: 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 61  () function if a
fbe0: 73 73 65 72 74 28 29 20 69 73 20 61 6c 73 6f 0a  ssert() is also.
fbf0: 20 20 65 6e 61 62 6c 65 64 2e 0a 7d 0a 0a 3c 2f    enabled..}..</
fc00: 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 6c 69  tcl>.<a name="li
fc10: 6e 6b 61 67 65 22 3e 3c 2f 61 3e 0a 3c 68 32 3e  nkage"></a>.<h2>
fc20: 31 2e 31 30 20 43 6f 6d 70 69 6c 65 72 20 4c 69  1.10 Compiler Li
fc30: 6e 6b 61 67 65 20 43 6f 6e 74 72 6f 6c 3c 2f 68  nkage Control</h
fc40: 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f  2>..<p>The follo
fc50: 77 69 6e 67 20 6d 61 63 72 6f 73 20 73 70 65 63  wing macros spec
fc60: 69 66 79 0a 69 6e 74 65 72 66 61 63 65 20 6c 69  ify.interface li
fc70: 6e 6b 61 67 65 20 66 6f 72 20 63 65 72 74 61 69  nkage for certai
fc80: 6e 20 6b 69 6e 64 73 20 6f 66 20 53 51 4c 69 74  n kinds of SQLit
fc90: 65 20 62 75 69 6c 64 73 2e 20 20 54 68 65 20 4d  e builds.  The M
fca0: 61 6b 65 66 69 6c 65 73 20 77 69 6c 6c 20 6e 6f  akefiles will no
fcb0: 72 6d 61 6c 6c 79 0a 68 61 6e 64 6c 65 20 73 65  rmally.handle se
fcc0: 74 74 69 6e 67 20 74 68 65 73 65 20 6d 61 63 72  tting these macr
fcd0: 6f 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  os automatically
fce0: 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 20 64  .  Application d
fcf0: 65 76 65 6c 6f 70 65 72 73 20 73 68 6f 75 6c 64  evelopers should
fd00: 0a 6e 6f 74 20 6e 65 65 64 20 74 6f 20 77 6f 72  .not need to wor
fd10: 72 79 20 77 69 74 68 20 74 68 65 73 65 20 6d 61  ry with these ma
fd20: 63 72 6f 73 2e 20 20 54 68 65 20 66 6f 6c 6c 6f  cros.  The follo
fd30: 77 69 6e 67 20 64 6f 63 75 6d 65 6e 74 69 6f 6e  wing documention
fd40: 20 61 62 6f 75 65 20 74 68 65 73 65 20 0a 6d 61   aboue these .ma
fd50: 63 72 6f 73 20 69 73 20 69 6e 63 6c 75 64 65 64  cros is included
fd60: 20 63 6f 6d 70 6c 65 74 65 6e 65 73 73 2e 3c 2f   completeness.</
fd70: 70 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c  p>..<tcl>.COMPIL
fd80: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
fd90: 5f 41 50 49 7d 20 7b 0a 20 20 54 68 69 73 20 6d  _API} {.  This m
fda0: 61 63 72 6f 20 69 64 65 6e 74 69 66 69 65 73 20  acro identifies 
fdb0: 61 20 65 78 74 65 72 6e 61 6c 6c 79 20 76 69 73  a externally vis
fdc0: 69 62 6c 65 20 69 6e 74 65 72 66 61 63 65 20 66  ible interface f
fdd0: 6f 72 20 53 51 4c 69 74 65 2e 0a 20 20 54 68 69  or SQLite..  Thi
fde0: 73 20 6d 61 63 72 6f 20 69 73 20 73 6f 6d 65 74  s macro is somet
fdf0: 69 6d 65 73 20 73 65 74 20 74 6f 20 22 65 78 74  imes set to "ext
fe00: 65 72 6e 22 2e 20 20 42 75 74 20 74 68 65 20 64  ern".  But the d
fe10: 65 66 69 6e 69 74 69 6f 6e 20 69 73 0a 20 20 63  efinition is.  c
fe20: 6f 6d 70 69 6c 65 72 2d 73 70 65 63 69 66 69 63  ompiler-specific
fe30: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
fe40: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 41 50 49 43  ION {SQLITE_APIC
fe50: 41 4c 4c 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  ALL} {.  This ma
fe60: 63 72 6f 20 69 64 65 6e 74 69 66 69 65 73 20 74  cro identifies t
fe70: 68 65 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65  he calling conve
fe80: 6e 74 69 6f 6e 20 75 73 65 64 20 62 79 20 70 75  ntion used by pu
fe90: 62 6c 69 63 20 69 6e 74 65 72 66 61 63 65 0a 20  blic interface. 
fea0: 20 72 6f 75 74 69 6e 65 73 20 69 6e 20 53 51 4c   routines in SQL
feb0: 69 74 65 2e 20 20 54 68 69 73 20 6d 61 63 72 6f  ite.  This macro
fec0: 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 64 65 66   is normally def
fed0: 69 6e 65 64 20 74 6f 20 62 65 20 6e 6f 74 68 69  ined to be nothi
fee0: 6e 67 2c 0a 20 20 74 68 6f 75 67 68 20 6f 6e 20  ng,.  though on 
fef0: 57 69 6e 64 6f 77 73 20 62 75 69 6c 64 73 20 69  Windows builds i
ff00: 74 20 63 61 6e 20 73 6f 6d 65 74 69 6d 65 73 20  t can sometimes 
ff10: 62 65 20 73 65 74 20 74 6f 20 22 5f 5f 63 64 65  be set to "__cde
ff20: 63 6c 22 20 6f 72 20 22 5f 5f 73 74 64 63 61 6c  cl" or "__stdcal
ff30: 6c 22 2e 0a 20 20 54 68 65 20 22 5f 5f 63 64 65  l"..  The "__cde
ff40: 63 6c 22 20 73 65 74 74 69 6e 67 20 69 73 20 74  cl" setting is t
ff50: 68 65 20 64 65 66 61 75 6c 74 2c 20 62 75 74 20  he default, but 
ff60: 22 5f 5f 73 74 64 63 61 6c 6c 22 20 69 73 20 75  "__stdcall" is u
ff70: 73 65 64 20 77 68 65 6e 20 53 51 4c 69 74 65 0a  sed when SQLite.
ff80: 20 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f    is intended to
ff90: 20 62 65 20 63 6f 6d 70 69 6c 65 64 20 61 73 20   be compiled as 
ffa0: 61 20 57 69 6e 64 6f 77 73 20 73 79 73 74 65 6d  a Windows system
ffb0: 20 6c 69 62 72 61 72 79 2e 0a 20 20 3c 70 3e 0a   library..  <p>.
ffc0: 20 20 41 20 73 69 6e 67 6c 65 20 66 75 6e 63 74    A single funct
ffd0: 69 6f 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20  ion declaration 
ffe0: 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 6e  should contain n
fff0: 6f 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20  o more than one 
10000 6f 66 0a 20 20 74 68 65 20 66 6f 6c 6c 6f 77 69  of.  the followi
10010 6e 67 3a 20 20 5b 53 51 4c 49 54 45 5f 41 50 49  ng:  [SQLITE_API
10020 43 41 4c 4c 5d 2c 20 5b 53 51 4c 49 54 45 5f 43  CALL], [SQLITE_C
10030 41 4c 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49 54  ALLBACK], [SQLIT
10040 45 5f 43 44 45 43 4c 5d 2c 0a 20 20 6f 72 20 5b  E_CDECL],.  or [
10050 53 51 4c 49 54 45 5f 53 59 53 43 41 4c 4c 5d 2e  SQLITE_SYSCALL].
10060 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
10070 4f 4e 20 7b 53 51 4c 49 54 45 5f 43 41 4c 4c 42  ON {SQLITE_CALLB
10080 41 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  ACK} {.  This ma
10090 63 72 6f 20 73 70 65 63 69 66 69 65 73 20 74 68  cro specifies th
100a0 65 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e  e calling conven
100b0 74 69 6f 6e 20 75 73 65 64 20 62 79 20 63 61 6c  tion used by cal
100c0 6c 62 61 63 6b 20 70 6f 69 6e 74 65 72 73 0a 20  lback pointers. 
100d0 20 69 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 69   in SQLite.  Thi
100e0 73 20 6d 61 63 72 6f 20 69 73 20 6e 6f 72 6d 61  s macro is norma
100f0 6c 6c 79 20 64 65 66 69 6e 65 64 20 74 6f 20 62  lly defined to b
10100 65 20 6e 6f 74 68 69 6e 67 2c 20 74 68 6f 75 67  e nothing, thoug
10110 68 20 6f 6e 20 57 69 6e 64 6f 77 73 0a 20 20 62  h on Windows.  b
10120 75 69 6c 64 73 20 69 74 20 63 61 6e 20 73 6f 6d  uilds it can som
10130 65 74 69 6d 65 73 20 62 65 20 73 65 74 20 74 6f  etimes be set to
10140 20 22 5f 5f 63 64 65 63 6c 22 20 6f 72 20 22 5f   "__cdecl" or "_
10150 5f 73 74 64 63 61 6c 6c 22 2e 20 20 54 68 65 0a  _stdcall".  The.
10160 20 20 22 5f 5f 63 64 65 63 6c 22 20 73 65 74 74    "__cdecl" sett
10170 69 6e 67 20 69 73 20 74 68 65 20 64 65 66 61 75  ing is the defau
10180 6c 74 2c 20 62 75 74 20 22 5f 5f 73 74 64 63 61  lt, but "__stdca
10190 6c 6c 22 20 69 73 20 75 73 65 64 20 77 68 65 6e  ll" is used when
101a0 20 53 51 4c 69 74 65 0a 20 20 69 73 20 69 6e 74   SQLite.  is int
101b0 65 6e 64 65 64 20 74 6f 20 62 65 20 63 6f 6d 70  ended to be comp
101c0 69 6c 65 64 20 61 73 20 61 20 57 69 6e 64 6f 77  iled as a Window
101d0 73 20 73 79 73 74 65 6d 20 6c 69 62 72 61 72 79  s system library
101e0 2e 0a 20 20 3c 70 3e 0a 20 20 41 20 73 69 6e 67  ..  <p>.  A sing
101f0 6c 65 20 66 75 6e 63 74 69 6f 6e 20 64 65 63 6c  le function decl
10200 61 72 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 63  aration should c
10210 6f 6e 74 61 69 6e 20 6e 6f 20 6d 6f 72 65 20 74  ontain no more t
10220 68 61 6e 20 6f 6e 65 20 6f 66 0a 20 20 74 68 65  han one of.  the
10230 20 66 6f 6c 6c 6f 77 69 6e 67 3a 20 20 5b 53 51   following:  [SQ
10240 4c 49 54 45 5f 41 50 49 43 41 4c 4c 5d 2c 20 5b  LITE_APICALL], [
10250 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b 5d  SQLITE_CALLBACK]
10260 2c 20 5b 53 51 4c 49 54 45 5f 43 44 45 43 4c 5d  , [SQLITE_CDECL]
10270 2c 0a 20 20 6f 72 20 5b 53 51 4c 49 54 45 5f 53  ,.  or [SQLITE_S
10280 59 53 43 41 4c 4c 5d 2e 0a 7d 0a 0a 43 4f 4d 50  YSCALL]..}..COMP
10290 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
102a0 54 45 5f 43 44 45 43 4c 7d 20 7b 0a 20 20 54 68  TE_CDECL} {.  Th
102b0 69 73 20 6d 61 63 72 6f 20 73 70 65 63 69 66 69  is macro specifi
102c0 65 73 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 63  es the calling c
102d0 6f 6e 76 65 6e 74 69 6f 6e 20 75 73 65 64 20 62  onvention used b
102e0 79 20 76 61 72 61 72 67 73 20 69 6e 74 65 72 66  y varargs interf
102f0 61 63 65 0a 20 20 72 6f 75 74 69 6e 65 73 20 69  ace.  routines i
10300 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 69 73 20  n SQLite.  This 
10310 6d 61 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c  macro is normall
10320 79 20 64 65 66 69 6e 65 64 20 74 6f 20 62 65 20  y defined to be 
10330 6e 6f 74 68 69 6e 67 2c 0a 20 20 74 68 6f 75 67  nothing,.  thoug
10340 68 20 6f 6e 20 57 69 6e 64 6f 77 73 20 62 75 69  h on Windows bui
10350 6c 64 73 20 69 74 20 63 61 6e 20 73 6f 6d 65 74  lds it can somet
10360 69 6d 65 73 20 62 65 20 73 65 74 20 74 6f 20 22  imes be set to "
10370 5f 5f 63 64 65 63 6c 22 2e 20 20 54 68 69 73 0a  __cdecl".  This.
10380 20 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20    macro is used 
10390 6f 6e 20 76 61 72 61 72 67 73 20 72 6f 75 74 69  on varargs routi
103a0 6e 65 73 20 61 6e 64 20 73 6f 20 63 61 6e 6e 6f  nes and so canno
103b0 74 20 62 65 20 73 65 74 20 74 6f 20 22 5f 5f 73  t be set to "__s
103c0 74 64 63 61 6c 6c 22 0a 20 20 73 69 6e 63 65 20  tdcall".  since 
103d0 74 68 65 20 5f 5f 73 74 64 63 61 6c 6c 20 63 61  the __stdcall ca
103e0 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e  lling convention
103f0 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72   does not suppor
10400 74 20 76 61 72 61 72 67 73 20 66 75 6e 63 74 69  t varargs functi
10410 6f 6e 73 2e 0a 20 20 3c 70 3e 0a 20 20 41 20 73  ons..  <p>.  A s
10420 69 6e 67 6c 65 20 66 75 6e 63 74 69 6f 6e 20 64  ingle function d
10430 65 63 6c 61 72 61 74 69 6f 6e 20 73 68 6f 75 6c  eclaration shoul
10440 64 20 63 6f 6e 74 61 69 6e 20 6e 6f 20 6d 6f 72  d contain no mor
10450 65 20 74 68 61 6e 20 6f 6e 65 20 6f 66 0a 20 20  e than one of.  
10460 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a 20 20  the following:  
10470 5b 53 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c 5d  [SQLITE_APICALL]
10480 2c 20 5b 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41  , [SQLITE_CALLBA
10490 43 4b 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 44 45  CK], [SQLITE_CDE
104a0 43 4c 5d 2c 0a 20 20 6f 72 20 5b 53 51 4c 49 54  CL],.  or [SQLIT
104b0 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a 7d 0a 0a 43  E_SYSCALL]..}..C
104c0 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
104d0 51 4c 49 54 45 5f 53 59 53 43 41 4c 4c 7d 20 7b  QLITE_SYSCALL} {
104e0 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 64  .  This macro id
104f0 65 6e 74 69 66 69 65 73 20 74 68 65 20 63 61 6c  entifies the cal
10500 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20  ling convention 
10510 75 73 65 64 20 62 79 20 6f 70 65 72 61 74 69 6e  used by operatin
10520 67 20 73 79 73 74 65 6d 0a 20 20 69 6e 74 65 72  g system.  inter
10530 66 61 63 65 73 20 66 6f 72 20 74 61 72 67 65 74  faces for target
10540 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 66 6f   the platform fo
10550 72 20 61 6e 20 53 51 4c 69 74 65 20 62 75 69 6c  r an SQLite buil
10560 64 2e 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20  d..  This macro 
10570 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 64 65 66 69  is normally defi
10580 6e 65 64 20 74 6f 20 62 65 20 6e 6f 74 68 69 6e  ned to be nothin
10590 67 2c 20 74 68 6f 75 67 68 20 6f 6e 20 57 69 6e  g, though on Win
105a0 64 6f 77 73 0a 20 20 62 75 69 6c 64 73 20 69 74  dows.  builds it
105b0 20 63 61 6e 20 73 6f 6d 65 74 69 6d 65 73 20 62   can sometimes b
105c0 65 20 73 65 74 20 74 6f 20 22 5f 5f 73 74 64 63  e set to "__stdc
105d0 61 6c 6c 22 2e 0a 20 20 3c 70 3e 0a 20 20 41 20  all"..  <p>.  A 
105e0 73 69 6e 67 6c 65 20 66 75 6e 63 74 69 6f 6e 20  single function 
105f0 64 65 63 6c 61 72 61 74 69 6f 6e 20 73 68 6f 75  declaration shou
10600 6c 64 20 63 6f 6e 74 61 69 6e 20 6e 6f 20 6d 6f  ld contain no mo
10610 72 65 20 74 68 61 6e 20 6f 6e 65 20 6f 66 0a 20  re than one of. 
10620 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a 20   the following: 
10630 20 5b 53 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c   [SQLITE_APICALL
10640 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 41 4c 4c 42  ], [SQLITE_CALLB
10650 41 43 4b 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 44  ACK], [SQLITE_CD
10660 45 43 4c 5d 2c 0a 20 20 6f 72 20 5b 53 51 4c 49  ECL],.  or [SQLI
10670 54 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a 7d 0a 0a  TE_SYSCALL]..}..
10680 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
10690 53 51 4c 49 54 45 5f 54 43 4c 41 50 49 7d 20 7b  SQLITE_TCLAPI} {
106a0 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 70  .  This macro sp
106b0 65 63 69 66 69 65 73 20 74 68 65 20 63 61 6c 6c  ecifies the call
106c0 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 75  ing convention u
106d0 73 65 64 20 62 79 20 74 68 65 20 0a 20 20 5b 68  sed by the .  [h
106e0 74 74 70 3a 2f 2f 77 77 77 2e 74 63 6c 2e 74 6b  ttp://www.tcl.tk
106f0 20 7c 20 54 43 4c 5d 20 6c 69 62 72 61 72 79 20   | TCL] library 
10700 69 6e 74 65 72 66 61 63 65 20 72 6f 75 74 69 6e  interface routin
10710 65 73 2e 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  es..  This macro
10720 20 69 73 20 6e 6f 74 20 75 73 65 64 20 62 79 20   is not used by 
10730 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 2c  the SQLite core,
10740 20 62 75 74 20 6f 6e 6c 79 20 62 79 20 74 68 65   but only by the
10750 20 5b 54 43 4c 20 49 6e 74 65 72 66 61 63 65 5d   [TCL Interface]
10760 0a 20 20 61 6e 64 20 5b 54 43 4c 20 74 65 73 74  .  and [TCL test
10770 20 73 75 69 74 65 5d 2e 0a 20 20 54 68 69 73 20   suite]..  This 
10780 6d 61 63 72 6f 20 69 73 20 6e 6f 72 6d 61 6c 6c  macro is normall
10790 79 20 64 65 66 69 6e 65 64 20 74 6f 20 62 65 20  y defined to be 
107a0 6e 6f 74 68 69 6e 67 2c 0a 20 20 74 68 6f 75 67  nothing,.  thoug
107b0 68 20 6f 6e 20 57 69 6e 64 6f 77 73 20 62 75 69  h on Windows bui
107c0 6c 64 73 20 69 74 20 63 61 6e 20 73 6f 6d 65 74  lds it can somet
107d0 69 6d 65 73 20 62 65 20 73 65 74 20 74 6f 20 22  imes be set to "
107e0 5f 5f 63 64 65 63 6c 22 2e 20 20 54 68 69 73 0a  __cdecl".  This.
107f0 20 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20    macro is used 
10800 6f 6e 20 54 43 4c 20 6c 69 62 72 61 72 79 20 69  on TCL library i
10810 6e 74 65 72 66 61 63 65 20 72 6f 75 74 69 6e 65  nterface routine
10820 73 20 77 68 69 63 68 20 61 72 65 20 61 6c 77 61  s which are alwa
10830 79 73 20 63 6f 6d 70 69 6c 65 64 0a 20 20 61 73  ys compiled.  as
10840 20 5f 5f 63 64 65 63 6c 2c 20 65 76 65 6e 20 6f   __cdecl, even o
10850 6e 20 70 6c 61 74 66 6f 72 6d 73 20 74 68 61 74  n platforms that
10860 20 70 72 65 66 65 72 20 74 6f 20 75 73 65 20 5f   prefer to use _
10870 5f 73 74 64 63 61 6c 6c 2c 20 73 6f 20 74 68 69  _stdcall, so thi
10880 73 0a 20 20 6d 61 63 72 6f 20 73 68 6f 75 6c 64  s.  macro should
10890 20 6e 6f 74 20 62 65 20 73 65 74 20 74 6f 20 5f   not be set to _
108a0 5f 73 74 64 63 61 6c 6c 20 75 6e 6c 65 73 73 20  _stdcall unless 
108b0 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 61 73 20  the platform as 
108c0 61 20 63 75 73 74 6f 6d 0a 20 20 54 43 4c 20 6c  a custom.  TCL l
108d0 69 62 72 61 72 79 20 62 75 69 6c 64 20 74 68 61  ibrary build tha
108e0 74 20 73 75 70 70 6f 72 74 73 20 5f 5f 73 74 64  t supports __std
108f0 63 61 6c 6c 2e 0a 20 20 3c 70 3e 0a 20 20 54 68  call..  <p>.  Th
10900 69 73 20 6d 61 63 72 6f 20 6d 61 79 20 6e 6f 74  is macro may not
10910 20 62 65 20 75 73 65 64 20 69 6e 20 63 6f 6d 62   be used in comb
10920 69 6e 61 74 69 6f 6e 20 77 69 74 68 20 61 6e 79  ination with any
10930 20 6f 66 20 5b 53 51 4c 49 54 45 5f 41 50 49 43   of [SQLITE_APIC
10940 41 4c 4c 5d 2c 0a 20 20 5b 53 51 4c 49 54 45 5f  ALL],.  [SQLITE_
10950 43 41 4c 4c 42 41 43 4b 5d 2c 20 5b 53 51 4c 49  CALLBACK], [SQLI
10960 54 45 5f 43 44 45 43 4c 5d 2c 20 6f 72 20 5b 53  TE_CDECL], or [S
10970 51 4c 49 54 45 5f 53 59 53 43 41 4c 4c 5d 2e 0a  QLITE_SYSCALL]..
10980 7d 0a 0a 0a 3c 2f 74 63 6c 3e 0a                 }...</tcl>.