Documentation Source Text

Hex Artifact Content
Login

Artifact 815c84aff51ba8d4175270c557adaebdf072fd2f:


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 73 6d 61 6c 6c 65 72 20 63  g in.a smaller c
0180: 6f 6d 70 69 6c 65 64 20 6c 69 62 72 61 72 79 20  ompiled library 
0190: 73 69 7a 65 29 20 6f 72 20 74 6f 20 63 68 61 6e  size) or to chan
01a0: 67 65 20 74 68 65 0a 3c 61 20 68 72 65 66 3d 22  ge the.<a href="
01b0: 23 64 65 66 61 75 6c 74 73 22 3e 64 65 66 61 75  #defaults">defau
01c0: 6c 74 20 76 61 6c 75 65 73 3c 2f 61 3e 20 6f 66  lt values</a> of
01d0: 20 73 6f 6d 65 20 70 61 72 61 6d 65 74 65 72 73   some parameters
01e0: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 45 76 65 72  ..</p>..<p>.Ever
01f0: 79 20 65 66 66 6f 72 74 20 68 61 73 20 62 65 65  y effort has bee
0200: 6e 20 6d 61 64 65 20 74 6f 20 65 6e 73 75 72 65  n made to ensure
0210: 20 74 68 61 74 20 74 68 65 20 76 61 72 69 6f 75   that the variou
0220: 73 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 0a 6f  s combinations.o
0230: 66 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 70  f compilation op
0240: 74 69 6f 6e 73 20 77 6f 72 6b 20 68 61 72 6d 6f  tions work harmo
0250: 6e 69 6f 75 73 6c 79 20 61 6e 64 20 70 72 6f 64  niously and prod
0260: 75 63 65 20 61 20 77 6f 72 6b 69 6e 67 20 6c 69  uce a working li
0270: 62 72 61 72 79 2e 0a 4e 65 76 65 72 74 68 65 6c  brary..Neverthel
0280: 65 73 73 2c 20 69 74 20 69 73 20 73 74 72 6f 6e  ess, it is stron
0290: 67 6c 79 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20  gly recommended 
02a0: 74 68 61 74 20 74 68 65 20 53 51 4c 69 74 65 20  that the SQLite 
02b0: 74 65 73 74 2d 73 75 69 74 65 0a 62 65 20 65 78  test-suite.be ex
02c0: 65 63 75 74 65 64 20 74 6f 20 63 68 65 63 6b 20  ecuted to check 
02d0: 66 6f 72 20 65 72 72 6f 72 73 20 62 65 66 6f 72  for errors befor
02e0: 65 20 75 73 69 6e 67 20 61 6e 20 53 51 4c 69 74  e using an SQLit
02f0: 65 20 6c 69 62 72 61 72 79 20 62 75 69 6c 74 0a  e library built.
0300: 77 69 74 68 20 6e 6f 6e 2d 73 74 61 6e 64 61 72  with non-standar
0310: 64 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 70  d compilation op
0320: 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 3c 61 20 6e  tions..</p>.<a n
0330: 61 6d 65 3d 22 64 65 66 61 75 6c 74 73 22 3e 3c  ame="defaults"><
0340: 2f 61 3e 0a 3c 68 32 3e 31 2e 31 20 4f 70 74 69  /a>.<h2>1.1 Opti
0350: 6f 6e 73 20 54 6f 20 53 65 74 20 44 65 66 61 75  ons To Set Defau
0360: 6c 74 20 50 61 72 61 6d 65 74 65 72 20 56 61 6c  lt Parameter Val
0370: 75 65 73 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a  ues</h2>..<tcl>.
0380: 70 72 6f 63 20 43 4f 4d 50 49 4c 45 5f 4f 50 54  proc COMPILE_OPT
0390: 49 4f 4e 20 7b 6e 61 6d 65 20 74 65 78 74 7d 20  ION {name text} 
03a0: 7b 0a 20 20 69 66 20 7b 5b 72 65 67 65 78 70 20  {.  if {[regexp 
03b0: 7b 53 51 4c 49 54 45 5f 28 5b 41 2d 5a 30 2d 39  {SQLITE_([A-Z0-9
03c0: 5f 5d 2b 29 7d 20 24 6e 61 6d 65 20 61 6c 6c 20  _]+)} $name all 
03d0: 6c 61 62 65 6c 5d 7d 20 7b 0a 20 20 20 20 68 64  label]} {.    hd
03e0: 5f 66 72 61 67 6d 65 6e 74 20 5b 73 74 72 69 6e  _fragment [strin
03f0: 67 20 74 6f 6c 6f 77 65 72 20 24 6c 61 62 65 6c  g tolower $label
0400: 5d 0a 20 20 20 20 68 64 5f 6b 65 79 77 6f 72 64  ].    hd_keyword
0410: 73 20 24 61 6c 6c 0a 20 20 7d 0a 20 20 69 66 20  s $all.  }.  if 
0420: 7b 5b 72 65 67 65 78 70 20 7b 5e 59 59 28 5b 41  {[regexp {^YY([A
0430: 2d 5a 30 2d 39 5f 5d 2b 29 7d 20 24 6e 61 6d 65  -Z0-9_]+)} $name
0440: 20 61 6c 6c 20 6c 61 62 65 6c 5d 7d 20 7b 0a 20   all label]} {. 
0450: 20 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 5b     hd_fragment [
0460: 73 74 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 24  string tolower $
0470: 61 6c 6c 5d 0a 20 20 20 20 68 64 5f 6b 65 79 77  all].    hd_keyw
0480: 6f 72 64 73 20 24 61 6c 6c 0a 20 20 7d 0a 20 20  ords $all.  }.  
0490: 68 64 5f 70 75 74 73 20 3c 70 3e 3c 62 3e 24 6e  hd_puts <p><b>$n
04a0: 61 6d 65 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 72 65  ame</b></p>.  re
04b0: 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e 5c 5c 73  gsub -all "\n\\s
04c0: 2a 5c 6e 22 20 24 74 65 78 74 20 22 3c 2f 70 3e  *\n" $text "</p>
04d0: 5c 6e 5c 6e 3c 70 3e 22 20 74 65 78 74 0a 20 20  \n\n<p>" text.  
04e0: 68 64 5f 72 65 73 6f 6c 76 65 20 3c 62 6c 6f 63  hd_resolve <bloc
04f0: 6b 71 75 6f 74 65 3e 3c 70 3e 24 74 65 78 74 3c  kquote><p>$text<
0500: 2f 70 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  /p></blockquote>
0510: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
0520: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55  ON {SQLITE_DEFAU
0530: 4c 54 5f 41 55 54 4f 56 41 43 55 55 4d 3d 3c 69  LT_AUTOVACUUM=<i
0540: 3e 26 6c 74 3b 30 20 6f 72 20 31 20 6f 72 20 32  >&lt;0 or 1 or 2
0550: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
0560: 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d 69  is macro determi
0570: 6e 65 73 20 69 66 20 53 51 4c 69 74 65 20 63 72  nes if SQLite cr
0580: 65 61 74 65 73 20 64 61 74 61 62 61 73 65 73 20  eates databases 
0590: 77 69 74 68 20 74 68 65 20 0a 20 20 5b 61 75 74  with the .  [aut
05a0: 6f 5f 76 61 63 75 75 6d 5d 20 66 6c 61 67 20 73  o_vacuum] flag s
05b0: 65 74 20 62 79 20 64 65 66 61 75 6c 74 20 74 6f  et by default to
05c0: 20 4f 46 46 20 28 30 29 2c 20 46 55 4c 4c 20 28   OFF (0), FULL (
05d0: 31 29 2c 20 6f 72 0a 20 20 49 4e 43 52 45 4d 45  1), or.  INCREME
05e0: 4e 54 41 4c 20 28 32 29 2e 20 54 68 65 20 64 65  NTAL (2). The de
05f0: 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 30  fault value is 0
0600: 20 6d 65 61 6e 69 6e 67 20 74 68 61 74 20 64 61   meaning that da
0610: 74 61 62 61 73 65 73 0a 20 20 61 72 65 20 63 72  tabases.  are cr
0620: 65 61 74 65 64 20 77 69 74 68 20 61 75 74 6f 2d  eated with auto-
0630: 76 61 63 75 75 6d 20 74 75 72 6e 65 64 20 6f 66  vacuum turned of
0640: 66 2e 0a 20 20 49 6e 20 61 6e 79 20 63 61 73 65  f..  In any case
0650: 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   the compile-tim
0660: 65 20 64 65 66 61 75 6c 74 20 6d 61 79 20 62 65  e default may be
0670: 20 6f 76 65 72 72 69 64 64 65 6e 20 62 79 20 74   overridden by t
0680: 68 65 20 0a 20 20 5b 50 52 41 47 4d 41 20 61 75  he .  [PRAGMA au
0690: 74 6f 5f 76 61 63 75 75 6d 5d 20 63 6f 6d 6d 61  to_vacuum] comma
06a0: 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  nd..}..COMPILE_O
06b0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
06c0: 46 41 55 4c 54 5f 43 41 43 48 45 5f 53 49 5a 45  FAULT_CACHE_SIZE
06d0: 3d 3c 69 3e 26 6c 74 3b 70 61 67 65 73 26 67 74  =<i>&lt;pages&gt
06e0: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
06f0: 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 64  macro sets the d
0700: 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 74  efault size of t
0710: 68 65 20 70 61 67 65 2d 63 61 63 68 65 20 66 6f  he page-cache fo
0720: 72 20 65 61 63 68 20 61 74 74 61 63 68 65 64 0a  r each attached.
0730: 20 20 64 61 74 61 62 61 73 65 2c 20 69 6e 20 70    database, in p
0740: 61 67 65 73 2e 20 54 68 69 73 20 63 61 6e 20 62  ages. This can b
0750: 65 20 6f 76 65 72 72 69 64 64 65 6e 20 62 79 20  e overridden by 
0760: 74 68 65 20 0a 20 20 5b 50 52 41 47 4d 41 20 63  the .  [PRAGMA c
0770: 61 63 68 65 5f 73 69 7a 65 5d 20 63 6f 6d 6d 61  ache_size] comma
0780: 6e 64 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20  nd. The default 
0790: 76 61 6c 75 65 20 69 73 20 32 30 30 30 2e 0a 7d  value is 2000..}
07a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
07b0: 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   {SQLITE_DEFAULT
07c0: 5f 46 49 4c 45 5f 46 4f 52 4d 41 54 3d 3c 69 3e  _FILE_FORMAT=<i>
07d0: 26 6c 74 3b 31 20 6f 72 20 34 26 67 74 3b 3c 2f  &lt;1 or 4&gt;</
07e0: 69 3e 7d 20 7b 0a 20 20 54 68 65 20 64 65 66 61  i>} {.  The defa
07f0: 75 6c 74 20 73 63 68 65 6d 61 2d 6c 65 76 65 6c  ult schema-level
0800: 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 75 73 65   file format use
0810: 64 20 62 79 20 53 51 4c 69 74 65 20 77 68 65 6e  d by SQLite when
0820: 20 63 72 65 61 74 69 6e 67 0a 20 20 6e 65 77 20   creating.  new 
0830: 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 69  database files i
0840: 73 20 73 65 74 20 62 79 20 74 68 69 73 20 6d 61  s set by this ma
0850: 63 72 6f 2e 20 20 54 68 65 20 66 69 6c 65 20 66  cro.  The file f
0860: 6f 72 6d 61 74 73 20 61 72 65 20 61 6c 6c 0a 20  ormats are all. 
0870: 20 76 65 72 79 20 73 69 6d 69 6c 61 72 2e 20 20   very similar.  
0880: 54 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 62  The difference b
0890: 65 74 77 65 65 6e 20 66 6f 72 6d 61 74 73 20 31  etween formats 1
08a0: 20 61 6e 64 20 34 20 69 73 20 74 68 61 74 20 66   and 4 is that f
08b0: 6f 72 6d 61 74 0a 20 20 34 20 75 6e 64 65 72 73  ormat.  4 unders
08c0: 74 61 6e 64 73 20 64 65 73 63 65 6e 64 69 6e 67  tands descending
08d0: 20 69 6e 64 69 63 65 73 20 61 6e 64 20 68 61 73   indices and has
08e0: 20 61 20 74 69 67 68 74 65 72 20 65 6e 63 6f 64   a tighter encod
08f0: 69 6e 67 20 66 6f 72 0a 20 20 62 6f 6f 6c 65 61  ing for.  boolea
0900: 6e 20 76 61 6c 75 65 73 2e 0a 0a 20 20 53 51 4c  n values...  SQL
0910: 69 74 65 20 28 61 73 20 6f 66 20 5b 76 65 72 73  ite (as of [vers
0920: 69 6f 6e 20 33 2e 36 2e 30 5d 29 20 63 61 6e 20  ion 3.6.0]) can 
0930: 72 65 61 64 20 61 6e 64 20 77 72 69 74 65 20 61  read and write a
0940: 6e 79 20 66 69 6c 65 20 66 6f 72 6d 61 74 0a 20  ny file format. 
0950: 20 62 65 74 77 65 65 6e 20 31 20 61 6e 64 20 34   between 1 and 4
0960: 2e 20 20 42 75 74 20 6f 6c 64 65 72 20 76 65 72  .  But older ver
0970: 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20  sions of SQLite 
0980: 6d 69 67 68 74 20 6e 6f 74 20 62 65 20 61 62 6c  might not be abl
0990: 65 20 74 6f 0a 20 20 72 65 61 64 20 66 6f 72 6d  e to.  read form
09a0: 61 74 73 20 67 72 65 61 74 65 72 20 74 68 61 6e  ats greater than
09b0: 20 31 2e 20 20 53 6f 20 74 68 61 74 20 6f 6c 64   1.  So that old
09c0: 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  er versions of S
09d0: 51 4c 69 74 65 20 77 69 6c 6c 0a 20 20 62 65 20  QLite will.  be 
09e0: 61 62 6c 65 20 74 6f 20 72 65 61 64 20 61 6e 64  able to read and
09f0: 20 77 72 69 74 65 20 64 61 74 61 62 61 73 65 20   write database 
0a00: 66 69 6c 65 73 20 63 72 65 61 74 65 64 20 62 79  files created by
0a10: 20 6e 65 77 65 72 20 76 65 72 73 69 6f 6e 73 0a   newer versions.
0a20: 20 20 6f 66 20 53 51 4c 69 74 65 2c 20 74 68 65    of SQLite, the
0a30: 20 64 65 66 61 75 6c 74 20 66 69 6c 65 20 66 6f   default file fo
0a40: 72 6d 61 74 20 69 73 20 73 65 74 20 74 6f 20 31  rmat is set to 1
0a50: 20 66 6f 72 20 6d 61 78 69 6d 75 6d 0a 20 20 63   for maximum.  c
0a60: 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 0a 0a 20  ompatibility... 
0a70: 20 54 68 65 20 66 69 6c 65 20 66 6f 72 6d 61 74   The file format
0a80: 20 66 6f 72 20 61 20 6e 65 77 20 64 61 74 61 62   for a new datab
0a90: 61 73 65 20 63 61 6e 20 62 65 20 73 65 74 20 61  ase can be set a
0aa0: 74 20 72 75 6e 74 69 6d 65 20 75 73 69 6e 67 0a  t runtime using.
0ab0: 20 20 74 68 65 20 5b 50 52 41 47 4d 41 20 6c 65    the [PRAGMA le
0ac0: 67 61 63 79 5f 66 69 6c 65 5f 66 6f 72 6d 61 74  gacy_file_format
0ad0: 5d 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f  ] command..}..CO
0ae0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
0af0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4a 4f 55  LITE_DEFAULT_JOU
0b00: 52 4e 41 4c 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d  RNAL_SIZE_LIMIT=
0b10: 3c 69 3e 26 6c 74 3b 62 79 74 65 73 26 67 74 3b  <i>&lt;bytes&gt;
0b20: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  </i>} {.  This o
0b30: 70 74 69 6f 6e 20 73 65 74 73 20 74 68 65 20 73  ption sets the s
0b40: 69 7a 65 20 6c 69 6d 69 74 20 6f 6e 20 72 6f 6c  ize limit on rol
0b50: 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 66 69  lback journal fi
0b60: 6c 65 73 20 69 6e 0a 20 20 5b 6a 6f 75 72 6e 61  les in.  [journa
0b70: 6c 5f 6d 6f 64 65 20 70 72 61 67 6d 61 20 7c 20  l_mode pragma | 
0b80: 70 65 72 73 69 73 74 65 6e 74 20 6a 6f 75 72 6e  persistent journ
0b90: 61 6c 20 6d 6f 64 65 5d 2e 20 20 57 68 65 6e 20  al mode].  When 
0ba0: 74 68 69 73 20 0a 20 20 63 6f 6d 70 69 6c 65 2d  this .  compile-
0bb0: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 6f  time option is o
0bc0: 6d 69 74 74 65 64 20 74 68 65 72 65 20 69 73 20  mitted there is 
0bd0: 6e 6f 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f  no upper bound o
0be0: 6e 20 74 68 65 0a 20 20 73 69 7a 65 20 6f 66 20  n the.  size of 
0bf0: 74 68 65 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75  the rollback jou
0c00: 72 6e 61 6c 20 66 69 6c 65 2e 20 20 54 68 65 20  rnal file.  The 
0c10: 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 73 69 7a  journal file siz
0c20: 65 20 6c 69 6d 69 74 0a 20 20 63 61 6e 20 62 65  e limit.  can be
0c30: 20 63 68 61 6e 67 65 64 20 61 74 20 72 75 6e 2d   changed at run-
0c40: 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b  time using the [
0c50: 6a 6f 75 72 6e 61 6c 5f 73 69 7a 65 5f 6c 69 6d  journal_size_lim
0c60: 69 74 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43  it pragma]..}..C
0c70: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
0c80: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d 45  QLITE_DEFAULT_ME
0c90: 4d 53 54 41 54 55 53 3d 3c 69 3e 26 6c 74 3b 31  MSTATUS=<i>&lt;1
0ca0: 20 6f 72 20 30 26 67 74 3b 3c 2f 69 3e 7d 20 7b   or 0&gt;</i>} {
0cb0: 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
0cc0: 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69   used to determi
0cd0: 6e 65 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  ne whether or no
0ce0: 74 20 74 68 65 20 66 65 61 74 75 72 65 73 20 65  t the features e
0cf0: 6e 61 62 6c 65 64 20 61 6e 64 0a 20 20 64 69 73  nabled and.  dis
0d00: 61 62 6c 65 64 20 75 73 69 6e 67 20 74 68 65 20  abled using the 
0d10: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45  SQLITE_CONFIG_ME
0d20: 4d 53 54 41 54 55 53 20 61 72 67 75 6d 65 6e 74  MSTATUS argument
0d30: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e   to [sqlite3_con
0d40: 66 69 67 28 29 5d 0a 20 20 61 72 65 20 61 76 61  fig()].  are ava
0d50: 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61 75 6c  ilable by defaul
0d60: 74 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 76  t. The default v
0d70: 61 6c 75 65 20 69 73 20 31 20 28 5b 53 51 4c 49  alue is 1 ([SQLI
0d80: 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41  TE_CONFIG_MEMSTA
0d90: 54 55 53 5d 0a 20 20 72 65 6c 61 74 65 64 20 66  TUS].  related f
0da0: 65 61 74 75 72 65 73 20 65 6e 61 62 6c 65 64 29  eatures enabled)
0db0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
0dc0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41  ION {SQLITE_DEFA
0dd0: 55 4c 54 5f 50 41 47 45 5f 53 49 5a 45 3d 3c 69  ULT_PAGE_SIZE=<i
0de0: 3e 26 6c 74 3b 62 79 74 65 73 26 67 74 3b 3c 2f  >&lt;bytes&gt;</
0df0: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63  i>} {.  This mac
0e00: 72 6f 20 69 73 20 75 73 65 64 20 74 6f 20 73 65  ro is used to se
0e10: 74 20 74 68 65 20 64 65 66 61 75 6c 74 20 70 61  t the default pa
0e20: 67 65 2d 73 69 7a 65 20 75 73 65 64 20 77 68 65  ge-size used whe
0e30: 6e 20 61 0a 20 20 64 61 74 61 62 61 73 65 20 69  n a.  database i
0e40: 73 20 63 72 65 61 74 65 64 2e 20 54 68 65 20 76  s created. The v
0e50: 61 6c 75 65 20 61 73 73 69 67 6e 65 64 20 6d 75  alue assigned mu
0e60: 73 74 20 62 65 20 61 20 70 6f 77 65 72 20 6f 66  st be a power of
0e70: 20 32 2e 20 54 68 65 0a 20 20 64 65 66 61 75 6c   2. The.  defaul
0e80: 74 20 76 61 6c 75 65 20 69 73 20 31 30 32 34 2e  t value is 1024.
0e90: 20 54 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   The compile-tim
0ea0: 65 20 64 65 66 61 75 6c 74 20 6d 61 79 20 62 65  e default may be
0eb0: 20 6f 76 65 72 72 69 64 64 65 6e 20 61 74 20 0a   overridden at .
0ec0: 20 20 72 75 6e 74 69 6d 65 20 62 79 20 74 68 65    runtime by the
0ed0: 20 5b 50 52 41 47 4d 41 20 70 61 67 65 5f 73 69   [PRAGMA page_si
0ee0: 7a 65 5d 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a  ze] command..}..
0ef0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
0f00: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 54  SQLITE_DEFAULT_T
0f10: 45 4d 50 5f 43 41 43 48 45 5f 53 49 5a 45 3d 3c  EMP_CACHE_SIZE=<
0f20: 69 3e 26 6c 74 3b 70 61 67 65 73 26 67 74 3b 3c  i>&lt;pages&gt;<
0f30: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
0f40: 63 72 6f 20 73 65 74 73 20 74 68 65 20 64 65 66  cro sets the def
0f50: 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 74 68 65  ault size of the
0f60: 20 70 61 67 65 2d 63 61 63 68 65 20 66 6f 72 20   page-cache for 
0f70: 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 0a  temporary files.
0f80: 20 20 63 72 65 61 74 65 64 20 62 79 20 53 51 4c    created by SQL
0f90: 69 74 65 20 74 6f 20 73 74 6f 72 65 20 69 6e 74  ite to store int
0fa0: 65 72 6d 65 64 69 61 74 65 20 72 65 73 75 6c 74  ermediate result
0fb0: 73 2c 20 69 6e 20 70 61 67 65 73 2e 20 49 74 20  s, in pages. It 
0fc0: 64 6f 65 73 0a 20 20 6e 6f 74 20 61 66 66 65 63  does.  not affec
0fd0: 74 20 74 68 65 20 70 61 67 65 2d 63 61 63 68 65  t the page-cache
0fe0: 20 66 6f 72 20 74 68 65 20 74 65 6d 70 20 64 61   for the temp da
0ff0: 74 61 62 61 73 65 2c 20 77 68 65 72 65 20 74 61  tabase, where ta
1000: 62 6c 65 73 20 63 72 65 61 74 65 64 0a 20 20 75  bles created.  u
1010: 73 69 6e 67 20 5b 43 52 45 41 54 45 20 54 41 42  sing [CREATE TAB
1020: 4c 45 20 7c 20 43 52 45 41 54 45 20 54 45 4d 50  LE | CREATE TEMP
1030: 20 54 41 42 4c 45 5d 20 61 72 65 20 73 74 6f 72   TABLE] are stor
1040: 65 64 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20  ed. The default 
1050: 76 61 6c 75 65 0a 20 20 69 73 20 35 30 30 2e 0a  value.  is 500..
1060: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
1070: 4e 20 7b 59 59 53 54 41 43 4b 44 45 50 54 48 3d  N {YYSTACKDEPTH=
1080: 3c 69 3e 26 6c 74 3b 6d 61 78 5f 64 65 70 74 68  <i>&lt;max_depth
1090: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
10a0: 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68  is macro sets th
10b0: 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74 68 20  e maximum depth 
10c0: 6f 66 20 74 68 65 20 4c 41 4c 52 28 31 29 20 73  of the LALR(1) s
10d0: 74 61 63 6b 20 75 73 65 64 20 62 79 0a 20 20 74  tack used by.  t
10e0: 68 65 20 53 51 4c 20 70 61 72 73 65 72 20 77 69  he SQL parser wi
10f0: 74 68 69 6e 20 53 51 4c 69 74 65 2e 20 20 54 68  thin SQLite.  Th
1100: 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20  e default value 
1110: 69 73 20 31 30 30 2e 20 20 41 20 74 79 70 69 63  is 100.  A typic
1120: 61 6c 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e  al.  application
1130: 20 77 69 6c 6c 20 75 73 65 20 6c 65 73 73 20 74   will use less t
1140: 68 61 6e 20 61 62 6f 75 74 20 32 30 20 6c 65 76  han about 20 lev
1150: 65 6c 73 20 6f 66 20 74 68 65 20 73 74 61 63 6b  els of the stack
1160: 2e 0a 20 20 44 65 76 65 6c 6f 70 65 72 73 20 77  ..  Developers w
1170: 68 6f 73 65 20 61 70 70 6c 69 63 61 74 69 6f 6e  hose application
1180: 73 20 63 6f 6e 74 61 69 6e 20 53 51 4c 20 73 74  s contain SQL st
1190: 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 0a 20  atements that . 
11a0: 20 6e 65 65 64 20 6d 6f 72 65 20 74 68 61 6e 20   need more than 
11b0: 31 30 30 20 4c 41 4c 52 28 31 29 20 73 74 61 63  100 LALR(1) stac
11c0: 6b 20 65 6e 74 72 69 65 73 20 73 68 6f 75 6c 64  k entries should
11d0: 20 73 65 72 69 6f 75 73 6c 79 0a 20 20 63 6f 6e   seriously.  con
11e0: 73 69 64 65 72 20 72 65 66 61 63 74 6f 72 69 6e  sider refactorin
11f0: 67 20 74 68 65 69 72 20 53 51 4c 20 61 73 20 69  g their SQL as i
1200: 74 20 69 73 20 6c 69 6b 65 6c 79 20 74 6f 20 62  t is likely to b
1210: 65 20 77 65 6c 6c 20 62 65 79 6f 6e 64 0a 20 20  e well beyond.  
1220: 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66 20 61  the ability of a
1230: 6e 79 20 68 75 6d 61 6e 20 74 6f 20 63 6f 6d 70  ny human to comp
1240: 72 65 68 65 6e 64 2e 0a 7d 0a 3c 2f 74 63 6c 3e  rehend..}.</tcl>
1250: 0a 0a 3c 68 32 3e 31 2e 32 20 4f 70 74 69 6f 6e  ..<h2>1.2 Option
1260: 73 20 54 6f 20 53 65 74 20 53 69 7a 65 20 4c 69  s To Set Size Li
1270: 6d 69 74 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68  mits</h2>..<p>Th
1280: 65 72 65 20 61 72 65 20 63 6f 6d 70 69 6c 65 2d  ere are compile-
1290: 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 74 68 61  time options tha
12a0: 74 20 77 69 6c 6c 20 73 65 74 20 75 70 70 65 72  t will set upper
12b0: 20 62 6f 75 6e 64 73 0a 6f 6e 20 74 68 65 20 73   bounds.on the s
12c0: 69 7a 65 73 20 6f 66 20 76 61 72 69 6f 75 73 20  izes of various 
12d0: 73 74 72 75 63 74 75 72 65 73 20 69 6e 20 53 51  structures in SQ
12e0: 4c 69 74 65 2e 20 20 54 68 65 20 63 6f 6d 70 69  Lite.  The compi
12f0: 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e 73 20  le-time.options 
1300: 6e 6f 72 6d 61 6c 6c 79 20 73 65 74 20 61 20 68  normally set a h
1310: 61 72 64 20 75 70 70 65 72 20 62 6f 75 6e 64 20  ard upper bound 
1320: 74 68 61 74 20 63 61 6e 20 62 65 20 63 68 61 6e  that can be chan
1330: 67 65 64 0a 61 74 20 72 75 6e 2d 74 69 6d 65 20  ged.at run-time 
1340: 6f 6e 20 69 6e 64 69 76 69 64 75 61 6c 20 5b 64  on individual [d
1350: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
1360: 6f 6e 73 5d 20 75 73 69 6e 67 20 74 68 65 0a 5b  ons] using the.[
1370: 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d  sqlite3_limit()]
1380: 20 69 6e 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a   interface.</p>.
1390: 0a 3c 70 3e 54 68 65 20 63 6f 6d 70 69 6c 65 2d  .<p>The compile-
13a0: 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 66 6f 72  time options for
13b0: 20 73 65 74 74 69 6e 67 20 75 70 70 65 72 20 62   setting upper b
13c0: 6f 75 6e 64 73 20 61 72 65 0a 5b 6c 69 6d 69 74  ounds are.[limit
13d0: 73 20 7c 20 64 6f 63 75 6d 65 6e 74 65 64 20 73  s | documented s
13e0: 65 70 61 72 61 74 65 6c 79 5d 2e 20 20 54 68 65  eparately].  The
13f0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 73 20 61 20   following is a 
1400: 6c 69 73 74 20 6f 66 0a 74 68 65 20 61 76 61 69  list of.the avai
1410: 6c 61 62 6c 65 20 73 65 74 74 69 6e 67 73 3a 3c  lable settings:<
1420: 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 20 5b  /p>..<ul>.<li> [
1430: 53 51 4c 49 54 45 5f 4d 41 58 5f 41 54 54 41 43  SQLITE_MAX_ATTAC
1440: 48 45 44 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  HED]  </li>.<li>
1450: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c   [SQLITE_MAX_COL
1460: 55 4d 4e 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  UMN]  </li>.<li>
1470: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4d   [SQLITE_MAX_COM
1480: 50 4f 55 4e 44 5f 53 45 4c 45 43 54 5d 20 20 3c  POUND_SELECT]  <
1490: 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  /li>.<li> [SQLIT
14a0: 45 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48  E_MAX_EXPR_DEPTH
14b0: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
14c0: 51 4c 49 54 45 5f 4d 41 58 5f 46 55 4e 43 54 49  QLITE_MAX_FUNCTI
14d0: 4f 4e 5f 41 52 47 5d 20 20 3c 2f 6c 69 3e 0a 3c  ON_ARG]  </li>.<
14e0: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  li> [SQLITE_MAX_
14f0: 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c  LENGTH]  </li>.<
1500: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  li> [SQLITE_MAX_
1510: 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e  LIKE_PATTERN_LEN
1520: 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  GTH]  </li>.<li>
1530: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 50 41 47   [SQLITE_MAX_PAG
1540: 45 5f 43 4f 55 4e 54 5d 20 20 3c 2f 6c 69 3e 0a  E_COUNT]  </li>.
1550: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58  <li> [SQLITE_MAX
1560: 5f 50 41 47 45 5f 53 49 5a 45 5d 20 20 3c 2f 6c  _PAGE_SIZE]  </l
1570: 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  i>.<li> [SQLITE_
1580: 4d 41 58 5f 53 51 4c 5f 4c 45 4e 47 54 48 5d 20  MAX_SQL_LENGTH] 
1590: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
15a0: 49 54 45 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45  ITE_MAX_VARIABLE
15b0: 5f 4e 55 4d 42 45 52 5d 20 20 3c 2f 6c 69 3e 0a  _NUMBER]  </li>.
15c0: 3c 2f 75 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22  </ul>..<a name="
15d0: 63 6f 6e 74 72 6f 6c 66 65 61 74 75 72 65 73 22  controlfeatures"
15e0: 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 33 20 4f 70  ></a>.<h2>1.3 Op
15f0: 74 69 6f 6e 73 20 54 6f 20 43 6f 6e 74 72 6f 6c  tions To Control
1600: 20 4f 70 65 72 61 74 69 6e 67 20 43 68 61 72 61   Operating Chara
1610: 63 74 65 72 69 73 74 69 63 73 3c 2f 68 32 3e 0a  cteristics</h2>.
1620: 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f  .<tcl>.COMPILE_O
1630: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 43 41  PTION {SQLITE_CA
1640: 53 45 5f 53 45 4e 53 49 54 49 56 45 5f 4c 49 4b  SE_SENSITIVE_LIK
1650: 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f  E} {.  If this o
1660: 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e 74  ption is present
1670: 2c 20 74 68 65 6e 20 74 68 65 20 62 75 69 6c 74  , then the built
1680: 2d 69 6e 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61  -in [LIKE] opera
1690: 74 6f 72 20 77 69 6c 6c 20 62 65 0a 20 20 63 61  tor will be.  ca
16a0: 73 65 20 73 65 6e 73 69 74 69 76 65 2e 20 20 54  se sensitive.  T
16b0: 68 69 73 20 73 61 6d 65 20 65 66 66 65 63 74 20  his same effect 
16c0: 63 61 6e 20 62 65 20 61 63 68 69 65 76 65 64 20  can be achieved 
16d0: 61 74 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e  at run-time usin
16e0: 67 0a 20 20 74 68 65 20 5b 63 61 73 65 5f 73 65  g.  the [case_se
16f0: 6e 73 69 74 69 76 65 5f 6c 69 6b 65 20 70 72 61  nsitive_like pra
1700: 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  gma]..}..COMPILE
1710: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
1720: 48 41 56 45 5f 49 53 4e 41 4e 7d 20 7b 0a 20 20  HAVE_ISNAN} {.  
1730: 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  If this option i
1740: 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20  s present, then 
1750: 53 51 4c 69 74 65 20 77 69 6c 6c 20 75 73 65 20  SQLite will use 
1760: 74 68 65 20 69 73 6e 61 6e 28 29 20 66 75 6e 63  the isnan() func
1770: 74 69 6f 6e 20 66 72 6f 6d 0a 20 20 74 68 65 20  tion from.  the 
1780: 73 79 73 74 65 6d 20 6d 61 74 68 20 6c 69 62 72  system math libr
1790: 61 72 79 2e 20 20 57 69 74 68 6f 75 74 20 74 68  ary.  Without th
17a0: 69 73 20 6f 70 74 69 6f 6e 20 28 74 68 65 20 64  is option (the d
17b0: 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 29  efault behavior)
17c0: 0a 20 20 53 51 4c 69 74 65 20 75 73 65 73 20 69  .  SQLite uses i
17d0: 74 73 20 6f 77 6e 20 69 6e 74 65 72 6e 61 6c 20  ts own internal 
17e0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
17f0: 66 20 69 73 6e 61 6e 28 29 2e 20 20 53 51 4c 69  f isnan().  SQLi
1800: 74 65 20 75 73 65 73 0a 20 20 69 74 73 20 6f 77  te uses.  its ow
1810: 6e 20 69 6e 74 65 72 6e 61 6c 20 69 73 6e 61 6e  n internal isnan
1820: 28 29 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  () implementatio
1830: 6e 20 62 79 20 64 65 66 61 75 6c 74 20 62 65 63  n by default bec
1840: 61 75 73 65 20 6f 66 20 70 61 73 74 0a 20 20 70  ause of past.  p
1850: 72 6f 62 6c 65 6d 73 20 77 69 74 68 20 73 79 73  roblems with sys
1860: 74 65 6d 20 69 73 6e 61 6e 28 29 20 66 75 6e 63  tem isnan() func
1870: 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  tions..}..COMPIL
1880: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
1890: 5f 4f 53 5f 4f 54 48 45 52 3d 3c 69 3e 26 6c 74  _OS_OTHER=<i>&lt
18a0: 3b 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d  ;0 or 1&gt;</i>}
18b0: 20 7b 0a 20 20 54 68 65 20 6f 70 74 69 6f 6e 20   {.  The option 
18c0: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
18d0: 20 6f 6d 69 74 20 69 74 73 20 62 75 69 6c 74 2d   omit its built-
18e0: 69 6e 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  in operating sys
18f0: 74 65 6d 20 69 6e 74 65 72 66 61 63 65 73 0a 20  tem interfaces. 
1900: 20 66 6f 72 20 55 6e 69 78 2c 20 57 69 6e 64 6f   for Unix, Windo
1910: 77 73 2c 20 61 6e 64 20 4f 53 2f 32 2e 20 20 54  ws, and OS/2.  T
1920: 68 65 20 72 65 73 75 6c 74 69 6e 67 20 6c 69 62  he resulting lib
1930: 72 61 72 79 20 77 69 6c 6c 20 68 61 76 65 20 6e  rary will have n
1940: 6f 20 64 65 66 61 75 6c 74 0a 20 20 5b 73 71 6c  o default.  [sql
1950: 69 74 65 33 5f 76 66 73 20 7c 20 6f 70 65 72 61  ite3_vfs | opera
1960: 74 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74 65  ting system inte
1970: 72 66 61 63 65 5d 2e 20 20 41 70 70 6c 69 63 61  rface].  Applica
1980: 74 69 6f 6e 73 20 6d 75 73 74 20 75 73 65 0a 20  tions must use. 
1990: 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 72 65   [sqlite3_vfs_re
19a0: 67 69 73 74 65 72 28 29 5d 20 74 6f 20 72 65 67  gister()] to reg
19b0: 69 73 74 65 72 20 61 6e 20 61 70 70 72 6f 70 72  ister an appropr
19c0: 69 61 74 65 20 69 6e 74 65 72 66 61 63 65 20 62  iate interface b
19d0: 65 66 6f 72 65 0a 20 20 75 73 69 6e 67 20 53 51  efore.  using SQ
19e0: 4c 69 74 65 2e 20 20 41 70 70 6c 69 63 61 74 69  Lite.  Applicati
19f0: 6f 6e 73 20 6d 75 73 74 20 61 6c 73 6f 20 73 75  ons must also su
1a00: 70 70 6c 79 20 69 6d 70 6c 65 6d 65 6e 74 61 74  pply implementat
1a10: 69 6f 6e 73 20 66 6f 72 20 74 68 65 0a 20 20 5b  ions for the.  [
1a20: 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28  sqlite3_os_init(
1a30: 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  )] and [sqlite3_
1a40: 6f 73 5f 65 6e 64 28 29 5d 20 69 6e 74 65 72 66  os_end()] interf
1a50: 61 63 65 73 2e 20 20 54 68 65 20 75 73 75 61 6c  aces.  The usual
1a60: 20 70 72 61 63 74 69 63 65 0a 20 20 69 73 20 66   practice.  is f
1a70: 6f 72 20 74 68 65 20 73 75 70 70 6c 69 65 64 20  or the supplied 
1a80: 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74  [sqlite3_os_init
1a90: 28 29 5d 20 74 6f 20 69 6e 76 6f 6b 65 20 5b 73  ()] to invoke [s
1aa0: 71 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73  qlite3_vfs_regis
1ab0: 74 65 72 28 29 5d 2e 0a 20 20 53 51 4c 69 74 65  ter()]..  SQLite
1ac0: 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61   will automatica
1ad0: 6c 6c 79 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69  lly invoke [sqli
1ae0: 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 77  te3_os_init()] w
1af0: 68 65 6e 20 69 74 20 69 6e 69 74 69 61 6c 69 7a  hen it initializ
1b00: 65 73 2e 0a 0a 20 20 54 68 69 73 20 6f 70 74 69  es...  This opti
1b10: 6f 6e 20 69 73 20 74 79 70 69 63 61 6c 6c 79 20  on is typically 
1b20: 75 73 65 64 20 77 68 65 6e 20 62 75 69 6c 64 69  used when buildi
1b30: 6e 67 20 53 51 4c 69 74 65 20 66 6f 72 20 61 6e  ng SQLite for an
1b40: 20 65 6d 62 65 64 64 65 64 0a 20 20 70 6c 61 74   embedded.  plat
1b50: 66 6f 72 6d 20 77 69 74 68 20 61 20 63 75 73 74  form with a cust
1b60: 6f 6d 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  om operating sys
1b70: 74 65 6d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  tem..}..COMPILE_
1b80: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53  OPTION {SQLITE_S
1b90: 45 43 55 52 45 5f 44 45 4c 45 54 45 7d 20 7b 0a  ECURE_DELETE} {.
1ba0: 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74    This compile-t
1bb0: 69 6d 65 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67  ime option chang
1bc0: 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 73  es the default s
1bd0: 65 74 74 69 6e 67 20 6f 66 20 74 68 65 0a 20 20  etting of the.  
1be0: 5b 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 70  [secure_delete p
1bf0: 72 61 67 6d 61 5d 2e 20 20 57 68 65 6e 20 74 68  ragma].  When th
1c00: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 74  is option is not
1c10: 20 75 73 65 64 2c 20 73 65 63 75 72 65 5f 64 65   used, secure_de
1c20: 6c 65 74 65 20 64 65 66 61 75 6c 74 73 0a 20 20  lete defaults.  
1c30: 74 6f 20 6f 66 66 2e 20 20 57 68 65 6e 20 74 68  to off.  When th
1c40: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65  is option is pre
1c50: 73 65 6e 74 2c 20 73 65 63 75 72 65 5f 64 65 6c  sent, secure_del
1c60: 65 74 65 20 64 65 66 61 75 6c 74 73 20 74 6f 20  ete defaults to 
1c70: 6f 6e 2e 0a 0a 20 20 54 68 65 20 73 65 63 75 72  on...  The secur
1c80: 65 5f 64 65 6c 65 74 65 20 73 65 74 74 69 6e 67  e_delete setting
1c90: 20 63 61 75 73 65 73 20 64 65 6c 65 74 65 64 20   causes deleted 
1ca0: 63 6f 6e 74 65 6e 74 20 74 6f 20 62 65 20 6f 76  content to be ov
1cb0: 65 72 77 72 69 74 74 65 6e 20 77 69 74 68 0a 20  erwritten with. 
1cc0: 20 7a 65 72 6f 73 2e 20 20 54 68 65 72 65 20 69   zeros.  There i
1cd0: 73 20 61 20 73 6d 61 6c 6c 20 70 65 72 66 6f 72  s a small perfor
1ce0: 6d 61 6e 63 65 20 70 65 6e 61 6c 74 79 20 66 6f  mance penalty fo
1cf0: 72 20 74 68 69 73 20 73 69 6e 63 65 20 61 64 64  r this since add
1d00: 69 74 69 6f 6e 61 6c 20 49 2f 4f 0a 20 20 6d 75  itional I/O.  mu
1d10: 73 74 20 6f 63 63 75 72 2e 20 20 4f 6e 20 74 68  st occur.  On th
1d20: 65 20 6f 74 68 65 72 20 68 61 6e 64 2c 20 73 65  e other hand, se
1d30: 63 75 72 65 5f 64 65 6c 65 74 65 20 63 61 6e 20  cure_delete can 
1d40: 70 72 65 76 65 6e 74 20 73 65 6e 73 69 74 69 76  prevent sensitiv
1d50: 65 20 0a 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  e .  information
1d60: 20 66 72 6f 6d 20 6c 69 6e 67 65 72 69 6e 67 20   from lingering 
1d70: 69 6e 20 75 6e 75 73 65 64 20 70 61 72 74 73 20  in unused parts 
1d80: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
1d90: 66 69 6c 65 20 61 66 74 65 72 20 69 74 0a 20 20  file after it.  
1da0: 68 61 73 20 61 6c 6c 65 67 65 64 6c 79 20 62 65  has allegedly be
1db0: 65 6e 20 64 65 6c 65 74 65 64 2e 20 20 53 65 65  en deleted.  See
1dc0: 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69   the documentati
1dd0: 6f 6e 20 6f 6e 20 74 68 65 0a 20 20 5b 73 65 63  on on the.  [sec
1de0: 75 72 65 5f 64 65 6c 65 74 65 20 70 72 61 67 6d  ure_delete pragm
1df0: 61 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  a] for additiona
1e00: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d  l information..}
1e10: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1e20: 20 7b 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53   {SQLITE_THREADS
1e30: 41 46 45 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20  AFE=<i>&lt;0 or 
1e40: 31 20 6f 72 20 32 26 67 74 3b 3c 2f 69 3e 7d 20  1 or 2&gt;</i>} 
1e50: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
1e60: 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68 65 72  controls whether
1e70: 20 6f 72 20 6e 6f 74 20 63 6f 64 65 20 69 73 20   or not code is 
1e80: 69 6e 63 6c 75 64 65 64 20 69 6e 20 53 51 4c 69  included in SQLi
1e90: 74 65 20 74 6f 0a 20 20 65 6e 61 62 6c 65 20 69  te to.  enable i
1ea0: 74 20 74 6f 20 6f 70 65 72 61 74 65 20 73 61 66  t to operate saf
1eb0: 65 6c 79 20 69 6e 20 61 20 6d 75 6c 74 69 74 68  ely in a multith
1ec0: 72 65 61 64 65 64 20 65 6e 76 69 72 6f 6e 6d 65  readed environme
1ed0: 6e 74 2e 20 20 54 68 65 0a 20 20 64 65 66 61 75  nt.  The.  defau
1ee0: 6c 74 20 69 73 20 53 51 4c 49 54 45 5f 54 48 52  lt is SQLITE_THR
1ef0: 45 41 44 53 41 46 45 3d 31 20 77 68 69 63 68 20  EADSAFE=1 which 
1f00: 69 73 20 73 61 66 65 20 66 6f 72 20 75 73 65 20  is safe for use 
1f10: 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64  in a multithread
1f20: 65 64 0a 20 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  ed.  environment
1f30: 2e 20 20 57 68 65 6e 20 63 6f 6d 70 69 6c 65 64  .  When compiled
1f40: 20 77 69 74 68 20 53 51 4c 49 54 45 5f 54 48 52   with SQLITE_THR
1f50: 45 41 44 53 41 46 45 3d 30 20 61 6c 6c 20 6d 75  EADSAFE=0 all mu
1f60: 74 65 78 69 6e 67 20 63 6f 64 65 0a 20 20 69 73  texing code.  is
1f70: 20 6f 6d 69 74 74 65 64 20 61 6e 64 20 69 74 20   omitted and it 
1f80: 69 73 20 75 6e 73 61 66 65 20 74 6f 20 75 73 65  is unsafe to use
1f90: 20 53 51 4c 69 74 65 20 69 6e 20 61 20 6d 75 6c   SQLite in a mul
1fa0: 74 69 74 68 72 65 61 64 65 64 20 70 72 6f 67 72  tithreaded progr
1fb0: 61 6d 2e 0a 20 20 57 68 65 6e 20 63 6f 6d 70 69  am..  When compi
1fc0: 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54 45 5f  led with SQLITE_
1fd0: 54 48 52 45 41 44 53 41 46 45 3d 32 2c 20 53 51  THREADSAFE=2, SQ
1fe0: 4c 69 74 65 20 63 61 6e 20 62 65 20 75 73 65 64  Lite can be used
1ff0: 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61   in a multithrea
2000: 64 65 64 0a 20 20 70 72 6f 67 72 61 6d 20 73 6f  ded.  program so
2010: 20 6c 6f 6e 67 20 61 73 20 6e 6f 20 74 77 6f 20   long as no two 
2020: 74 68 72 65 61 64 73 20 61 74 74 65 6d 70 74 20  threads attempt 
2030: 74 6f 20 75 73 65 20 74 68 65 20 73 61 6d 65 0a  to use the same.
2040: 20 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e    [database conn
2050: 65 63 74 69 6f 6e 5d 20 61 74 20 74 68 65 20 73  ection] at the s
2060: 61 6d 65 20 74 69 6d 65 2e 0a 0a 20 20 54 6f 20  ame time...  To 
2070: 70 75 74 20 69 74 20 61 6e 6f 74 68 65 72 20 77  put it another w
2080: 61 79 2c 20 53 51 4c 49 54 45 5f 54 48 52 45 41  ay, SQLITE_THREA
2090: 44 53 41 46 45 3d 31 20 73 65 74 73 20 74 68 65  DSAFE=1 sets the
20a0: 20 64 65 66 61 75 6c 74 0a 20 20 5b 74 68 72 65   default.  [thre
20b0: 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53  ading mode] to S
20c0: 65 72 69 61 6c 69 7a 65 64 2e 20 20 53 51 4c 49  erialized.  SQLI
20d0: 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32 20  TE_THREADSAFE=2 
20e0: 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74  sets the default
20f0: 0a 20 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f  .  [threading mo
2100: 64 65 5d 20 74 6f 20 4d 75 6c 74 69 2d 74 68 72  de] to Multi-thr
2110: 65 61 64 65 64 2e 20 20 41 6e 64 20 53 51 4c 49  eaded.  And SQLI
2120: 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 20  TE_THREADSAFE=0 
2130: 73 65 74 73 20 74 68 65 0a 20 20 5b 74 68 72 65  sets the.  [thre
2140: 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53  ading mode] to S
2150: 69 6e 67 6c 65 2d 74 68 72 65 61 64 65 64 2e 0a  ingle-threaded..
2160: 0a 20 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20  .  The value of 
2170: 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
2180: 45 20 63 61 6e 20 62 65 20 64 65 74 65 72 6d 69  E can be determi
2190: 6e 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 0a  ned at run-time.
21a0: 20 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c    using the [sql
21b0: 69 74 65 33 5f 74 68 72 65 61 64 73 61 66 65 28  ite3_threadsafe(
21c0: 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a 0a 20  )] interface... 
21d0: 20 57 68 65 6e 20 53 51 4c 69 74 65 20 68 61 73   When SQLite has
21e0: 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77   been compiled w
21f0: 69 74 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41  ith SQLITE_THREA
2200: 44 53 41 46 45 3d 31 20 6f 72 0a 20 20 53 51 4c  DSAFE=1 or.  SQL
2210: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32  ITE_THREADSAFE=2
2220: 20 74 68 65 6e 20 74 68 65 20 5b 74 68 72 65 61   then the [threa
2230: 64 69 6e 67 20 6d 6f 64 65 5d 0a 20 20 63 61 6e  ding mode].  can
2240: 20 62 65 20 61 6c 74 65 72 65 64 20 61 74 20 72   be altered at r
2250: 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68  un-time using th
2260: 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  e [sqlite3_confi
2270: 67 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74  g()] interface t
2280: 6f 67 65 74 68 65 72 0a 20 20 77 69 74 68 20 6f  ogether.  with o
2290: 6e 65 20 6f 66 20 74 68 65 73 65 20 76 65 72 62  ne of these verb
22a0: 73 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69  s:..  <ul>.  <li
22b0: 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  >[SQLITE_CONFIG_
22c0: 53 49 4e 47 4c 45 54 48 52 45 41 44 5d 0a 20 20  SINGLETHREAD].  
22d0: 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  <li>[SQLITE_CONF
22e0: 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 5d 0a  IG_MULTITHREAD].
22f0: 20 20 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f    <li>[SQLITE_CO
2300: 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 5d  NFIG_SERIALIZED]
2310: 0a 20 20 3c 2f 75 6c 3e 0a 0a 20 20 54 68 65 20  .  </ul>..  The 
2320: 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d  [SQLITE_OPEN_NOM
2330: 55 54 45 58 5d 20 61 6e 64 0a 20 20 5b 53 51 4c  UTEX] and.  [SQL
2340: 49 54 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54  ITE_OPEN_FULLMUT
2350: 45 58 5d 20 66 6c 61 67 73 20 74 6f 20 5b 73 71  EX] flags to [sq
2360: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d  lite3_open_v2()]
2370: 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 75 73 65   can also be use
2380: 64 0a 20 20 74 6f 20 61 64 6a 75 73 74 20 74 68  d.  to adjust th
2390: 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64  e [threading mod
23a0: 65 5d 20 6f 66 20 69 6e 64 69 76 69 64 75 61 6c  e] of individual
23b0: 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
23c0: 63 74 69 6f 6e 73 5d 0a 20 20 61 74 20 72 75 6e  ctions].  at run
23d0: 2d 74 69 6d 65 2e 0a 0a 20 20 4e 6f 74 65 20 74  -time...  Note t
23e0: 68 61 74 20 77 68 65 6e 20 53 51 4c 69 74 65 20  hat when SQLite 
23f0: 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  is compiled with
2400: 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
2410: 46 45 3d 30 2c 20 74 68 65 20 63 6f 64 65 0a 20  FE=0, the code. 
2420: 20 74 6f 20 6d 61 6b 65 20 53 51 4c 69 74 65 20   to make SQLite 
2430: 74 68 72 65 61 64 73 61 66 65 20 69 73 20 6f 6d  threadsafe is om
2440: 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62  itted from the b
2450: 75 69 6c 64 2e 20 20 57 68 65 6e 20 74 68 69 73  uild.  When this
2460: 20 6f 63 63 75 72 73 2c 0a 20 20 69 74 20 69 73   occurs,.  it is
2470: 20 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 63   impossible to c
2480: 68 61 6e 67 65 20 74 68 65 20 5b 74 68 72 65 61  hange the [threa
2490: 64 69 6e 67 20 6d 6f 64 65 5d 20 61 74 20 73 74  ding mode] at st
24a0: 61 72 74 2d 74 69 6d 65 20 6f 72 20 72 75 6e 2d  art-time or run-
24b0: 74 69 6d 65 2e 0a 0a 20 20 53 65 65 20 74 68 65  time...  See the
24c0: 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
24d0: 5d 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  ] documentation 
24e0: 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69  for additional i
24f0: 6e 66 6f 72 6d 61 74 69 6f 6e 0a 20 20 6f 6e 20  nformation.  on 
2500: 61 73 70 65 63 74 73 20 6f 66 20 75 73 69 6e 67  aspects of using
2510: 20 53 51 4c 69 74 65 20 69 6e 20 61 20 6d 75 6c   SQLite in a mul
2520: 74 69 74 68 72 65 61 64 65 64 20 65 6e 76 69 72  tithreaded envir
2530: 6f 6e 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49  onment..}..COMPI
2540: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
2550: 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3d 3c 69 3e  E_TEMP_STORE=<i>
2560: 26 6c 74 3b 30 20 74 68 72 6f 75 67 68 20 33 26  &lt;0 through 3&
2570: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
2580: 73 20 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c  s option control
2590: 73 20 77 68 65 74 68 65 72 20 74 65 6d 70 6f 72  s whether tempor
25a0: 61 72 79 20 66 69 6c 65 73 20 61 72 65 20 73 74  ary files are st
25b0: 6f 72 65 64 20 6f 6e 20 64 69 73 6b 20 6f 72 0a  ored on disk or.
25c0: 20 20 69 6e 20 6d 65 6d 6f 72 79 2e 20 20 54 68    in memory.  Th
25d0: 65 20 6d 65 61 6e 69 6e 67 73 20 66 6f 72 20 76  e meanings for v
25e0: 61 72 69 6f 75 73 20 73 65 74 74 69 6e 67 73 20  arious settings 
25f0: 6f 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d  of this compile-
2600: 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 61 72  time.  option ar
2610: 65 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 0a 20  e as follows:.. 
2620: 20 3c 74 61 62 6c 65 20 63 65 6c 6c 70 61 64 64   <table cellpadd
2630: 69 6e 67 3d 22 32 22 20 62 6f 72 64 65 72 3d 22  ing="2" border="
2640: 31 22 3e 0a 20 20 3c 74 72 3e 3c 74 68 3e 53 51  1">.  <tr><th>SQ
2650: 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3c  LITE_TEMP_STORE<
2660: 2f 74 68 3e 3c 74 68 3e 4d 65 61 6e 69 6e 67 3c  /th><th>Meaning<
2670: 2f 74 68 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e  /th></tr>.  <tr>
2680: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
2690: 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77  r">0</td><td>Alw
26a0: 61 79 73 20 75 73 65 20 74 65 6d 70 6f 72 61 72  ays use temporar
26b0: 79 20 66 69 6c 65 73 3c 2f 74 64 3e 3c 2f 74 72  y files</td></tr
26c0: 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67  >.  <tr><td alig
26d0: 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64  n="center">1</td
26e0: 3e 3c 74 64 3e 55 73 65 20 66 69 6c 65 73 20 62  ><td>Use files b
26f0: 79 20 64 65 66 61 75 6c 74 20 62 75 74 20 61 6c  y default but al
2700: 6c 6f 77 20 74 68 65 0a 20 20 5b 50 52 41 47 4d  low the.  [PRAGM
2710: 41 20 74 65 6d 70 5f 73 74 6f 72 65 5d 20 63 6f  A temp_store] co
2720: 6d 6d 61 6e 64 20 74 6f 20 6f 76 65 72 72 69 64  mmand to overrid
2730: 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74  e</td></tr>.  <t
2740: 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  r><td align="cen
2750: 74 65 72 22 3e 32 3c 2f 74 64 3e 3c 74 64 3e 55  ter">2</td><td>U
2760: 73 65 20 6d 65 6d 6f 72 79 20 62 79 20 64 65 66  se memory by def
2770: 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f 77 20 74  ault but allow t
2780: 68 65 0a 20 20 5b 50 52 41 47 4d 41 20 74 65 6d  he.  [PRAGMA tem
2790: 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64  p_store] command
27a0: 20 74 6f 20 6f 76 65 72 72 69 64 65 3c 2f 74 64   to override</td
27b0: 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64  ></tr>.  <tr><td
27c0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
27d0: 33 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73  3</td><td>Always
27e0: 20 75 73 65 20 6d 65 6d 6f 72 79 3c 2f 74 64 3e   use memory</td>
27f0: 3c 2f 74 72 3e 0a 20 20 3c 2f 74 61 62 6c 65 3e  </tr>.  </table>
2800: 0a 0a 20 20 54 68 65 20 64 65 66 61 75 6c 74 20  ..  The default 
2810: 73 65 74 74 69 6e 67 20 69 73 20 31 2e 20 20 0a  setting is 1.  .
2820: 20 20 41 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66    Additional inf
2830: 6f 72 6d 61 74 69 6f 6e 20 63 61 6e 20 62 65 20  ormation can be 
2840: 66 6f 75 6e 64 20 69 6e 20 5b 74 65 6d 70 73 74  found in [tempst
2850: 6f 72 65 20 7c 20 74 65 6d 70 66 69 6c 65 73 2e  ore | tempfiles.
2860: 68 74 6d 6c 5d 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a  html]..}.</tcl>.
2870: 0a 3c 61 20 6e 61 6d 65 3d 22 65 6e 61 62 6c 65  .<a name="enable
2880: 66 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c  features"></a>.<
2890: 68 32 3e 31 2e 34 20 4f 70 74 69 6f 6e 73 20 54  h2>1.4 Options T
28a0: 6f 20 45 6e 61 62 6c 65 20 46 65 61 74 75 72 65  o Enable Feature
28b0: 73 20 4e 6f 72 6d 61 6c 6c 79 20 54 75 72 6e 65  s Normally Turne
28c0: 64 20 4f 66 66 3c 2f 68 32 3e 0a 0a 3c 74 63 6c  d Off</h2>..<tcl
28d0: 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  >.COMPILE_OPTION
28e0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
28f0: 41 54 4f 4d 49 43 5f 57 52 49 54 45 7d 20 7b 0a  ATOMIC_WRITE} {.
2900: 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70    If this C-prep
2910: 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69  rocessor macro i
2920: 73 20 64 65 66 69 6e 65 64 20 61 6e 64 20 69 66  s defined and if
2930: 20 74 68 65 0a 20 20 78 44 65 76 69 63 65 43 68   the.  xDeviceCh
2940: 61 72 61 63 74 65 72 69 73 74 69 63 73 20 6d 65  aracteristics me
2950: 74 68 6f 64 20 6f 66 20 5b 73 71 6c 69 74 65 33  thod of [sqlite3
2960: 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a  _io_methods] obj
2970: 65 63 74 20 66 6f 72 0a 20 20 61 20 64 61 74 61  ect for.  a data
2980: 62 61 73 65 20 66 69 6c 65 20 72 65 70 6f 72 74  base file report
2990: 73 20 28 76 69 61 20 6f 6e 65 20 6f 66 20 74 68  s (via one of th
29a0: 65 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  e [SQLITE_IOCAP_
29b0: 41 54 4f 4d 49 43 5d 20 62 69 74 73 29 0a 20 20  ATOMIC] bits).  
29c0: 74 68 61 74 20 74 68 65 20 66 69 6c 65 73 79 73  that the filesys
29d0: 74 65 6d 20 73 75 70 70 6f 72 74 73 20 61 74 6f  tem supports ato
29e0: 6d 69 63 20 77 72 69 74 65 73 20 61 6e 64 20 69  mic writes and i
29f0: 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a  f a transaction.
2a00: 20 20 69 6e 76 6f 6c 76 65 73 20 61 20 63 68 61    involves a cha
2a10: 6e 67 65 20 74 6f 20 6f 6e 6c 79 20 61 20 73 69  nge to only a si
2a20: 6e 67 6c 65 20 70 61 67 65 20 6f 66 20 74 68 65  ngle page of the
2a30: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2c 0a   database file,.
2a40: 20 20 74 68 65 6e 20 74 68 65 20 74 72 61 6e 73    then the trans
2a50: 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 73 20 77  action commits w
2a60: 69 74 68 20 6a 75 73 74 20 61 20 73 69 6e 67 6c  ith just a singl
2a70: 65 20 77 72 69 74 65 20 72 65 71 75 65 73 74 20  e write request 
2a80: 6f 66 0a 20 20 61 20 73 69 6e 67 6c 65 20 70 61  of.  a single pa
2a90: 67 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  ge of the databa
2aa0: 73 65 20 61 6e 64 20 6e 6f 20 72 6f 6c 6c 62 61  se and no rollba
2ab0: 63 6b 20 6a 6f 75 72 6e 61 6c 20 69 73 20 63 72  ck journal is cr
2ac0: 65 61 74 65 64 0a 20 20 6f 72 20 77 72 69 74 74  eated.  or writt
2ad0: 65 6e 2e 20 20 4f 6e 20 66 69 6c 65 73 79 73 74  en.  On filesyst
2ae0: 65 6d 73 20 74 68 61 74 20 73 75 70 70 6f 72 74  ems that support
2af0: 20 61 74 6f 6d 69 63 20 77 72 69 74 65 73 2c 20   atomic writes, 
2b00: 74 68 69 73 0a 20 20 6f 70 74 69 6d 69 7a 61 74  this.  optimizat
2b10: 69 6f 6e 20 63 61 6e 20 72 65 73 75 6c 74 20 69  ion can result i
2b20: 6e 20 73 69 67 6e 69 66 69 63 61 6e 74 20 73 70  n significant sp
2b30: 65 65 64 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73  eed improvements
2b40: 20 66 6f 72 0a 20 20 73 6d 61 6c 6c 20 75 70 64   for.  small upd
2b50: 61 74 65 73 2e 20 20 48 6f 77 65 76 65 72 2c 20  ates.  However, 
2b60: 66 65 77 20 66 69 6c 65 73 79 73 74 65 6d 73 20  few filesystems 
2b70: 73 75 70 70 6f 72 74 20 74 68 69 73 20 63 61 70  support this cap
2b80: 61 62 69 6c 69 74 79 0a 20 20 61 6e 64 20 74 68  ability.  and th
2b90: 65 20 63 6f 64 65 20 70 61 74 68 73 20 74 68 61  e code paths tha
2ba0: 74 20 63 68 65 63 6b 20 66 6f 72 20 74 68 69 73  t check for this
2bb0: 20 63 61 70 61 62 69 6c 69 74 79 20 73 6c 6f 77   capability slow
2bc0: 20 64 6f 77 6e 20 77 72 69 74 65 0a 20 20 70 65   down write.  pe
2bd0: 72 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 79 73  rformance on sys
2be0: 74 65 6d 73 20 74 68 61 74 20 6c 61 63 6b 20 61  tems that lack a
2bf0: 74 6f 6d 69 63 20 77 72 69 74 65 20 63 61 70 61  tomic write capa
2c00: 62 69 6c 69 74 79 2c 20 73 6f 20 74 68 69 73 0a  bility, so this.
2c10: 20 20 66 65 61 74 75 72 65 20 69 73 20 64 69 73    feature is dis
2c20: 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74  abled by default
2c30: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
2c40: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
2c50: 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44 41  LE_COLUMN_METADA
2c60: 54 41 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  TA} {.  When thi
2c70: 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72  s C-preprocessor
2c80: 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65   macro is define
2c90: 64 2c 20 53 51 4c 69 74 65 20 69 6e 63 6c 75 64  d, SQLite includ
2ca0: 65 73 20 73 6f 6d 65 0a 20 20 61 64 64 69 74 69  es some.  additi
2cb0: 6f 6e 61 6c 20 41 50 49 73 20 74 68 61 74 20 70  onal APIs that p
2cc0: 72 6f 76 69 64 65 20 63 6f 6e 76 65 6e 69 65 6e  rovide convenien
2cd0: 74 20 61 63 63 65 73 73 20 74 6f 20 6d 65 74 61  t access to meta
2ce0: 2d 64 61 74 61 20 61 62 6f 75 74 0a 20 20 74 61  -data about.  ta
2cf0: 62 6c 65 73 20 61 6e 64 20 71 75 65 72 69 65 73  bles and queries
2d00: 2e 20 20 54 68 65 20 41 50 49 73 20 74 68 61 74  .  The APIs that
2d10: 20 61 72 65 20 65 6e 61 62 6c 65 64 20 62 79 20   are enabled by 
2d20: 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 72 65 3a  this option are:
2d30: 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 20  ..  <ul>.  <li> 
2d40: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
2d50: 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 29 5d  database_name()]
2d60: 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73   </li>.  <li> [s
2d70: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61  qlite3_column_da
2d80: 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 29 5d  tabase_name16()]
2d90: 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73   </li>.  <li> [s
2da0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
2db0: 62 6c 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69  ble_name()] </li
2dc0: 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65  >.  <li> [sqlite
2dd0: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
2de0: 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20  ame16()] </li>. 
2df0: 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63   <li> [sqlite3_c
2e00: 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d  olumn_origin_nam
2e10: 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69  e()] </li>.  <li
2e20: 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  > [sqlite3_colum
2e30: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28  n_origin_name16(
2e40: 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20  )] </li>.  <li> 
2e50: 5b 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63  [sqlite3_table_c
2e60: 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 29  olumn_metadata()
2e70: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 2f 75 6c 3e 0a  ] </li>.  </ul>.
2e80: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
2e90: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
2ea0: 5f 46 54 53 33 7d 20 7b 0a 20 20 57 68 65 6e 20  _FTS3} {.  When 
2eb0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
2ec0: 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 61  efined in the [a
2ed0: 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76 65  malgamation], ve
2ee0: 72 73 69 6f 6e 20 33 0a 20 20 6f 66 20 74 68 65  rsion 3.  of the
2ef0: 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72 63   full-text searc
2f00: 68 20 65 6e 67 69 6e 65 20 69 73 20 61 64 64 65  h engine is adde
2f10: 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20 61  d to the build a
2f20: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a  utomatically..}.
2f30: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
2f40: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46  {SQLITE_ENABLE_F
2f50: 54 53 33 5f 50 41 52 45 4e 54 48 45 53 49 53 7d  TS3_PARENTHESIS}
2f60: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
2f70: 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20 71 75   modifies the qu
2f80: 65 72 79 20 70 61 74 74 65 72 6e 20 70 61 72 73  ery pattern pars
2f90: 65 72 20 69 6e 20 46 54 53 33 20 73 75 63 68 20  er in FTS3 such 
2fa0: 74 68 61 74 20 69 74 0a 20 20 73 75 70 70 6f 72  that it.  suppor
2fb0: 74 73 20 6f 70 65 72 61 74 6f 72 73 20 41 4e 44  ts operators AND
2fc0: 20 61 6e 64 20 4e 4f 54 20 28 69 6e 20 61 64 64   and NOT (in add
2fd0: 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 75 73 75  ition to the usu
2fe0: 61 6c 20 4f 52 20 61 6e 64 20 4e 45 41 52 29 0a  al OR and NEAR).
2ff0: 20 20 61 6e 64 20 61 6c 73 6f 20 61 6c 6c 6f 77    and also allow
3000: 73 20 71 75 65 72 79 20 65 78 70 72 65 73 73 69  s query expressi
3010: 6f 6e 73 20 74 6f 20 63 6f 6e 74 61 69 6e 20 6e  ons to contain n
3020: 65 73 74 65 64 20 70 61 72 65 6e 74 68 65 73 69  ested parenthesi
3030: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
3040: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
3050: 42 4c 45 5f 49 43 55 7d 20 7b 0a 20 20 54 68 69  BLE_ICU} {.  Thi
3060: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
3070: 74 68 65 20 0a 20 20 5b 68 74 74 70 3a 2f 2f 77  the .  [http://w
3080: 77 77 2e 69 63 75 2d 70 72 6f 6a 65 63 74 2e 6f  ww.icu-project.o
3090: 72 67 2f 20 7c 20 49 6e 74 65 72 6e 61 74 69 6f  rg/ | Internatio
30a0: 6e 61 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73 20 66  nal Components f
30b0: 6f 72 20 55 6e 69 63 6f 64 65 5d 0a 20 20 6f 72  or Unicode].  or
30c0: 20 22 49 43 55 22 20 65 78 74 65 6e 73 69 6f 6e   "ICU" extension
30d0: 20 74 6f 20 53 51 4c 69 74 65 20 74 6f 20 62 65   to SQLite to be
30e0: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75   added to the bu
30f0: 69 6c 64 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c  ild.  .}..COMPIL
3100: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
3110: 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43 45 7d  _ENABLE_IOTRACE}
3120: 20 7b 0a 20 20 57 68 65 6e 20 62 6f 74 68 20 74   {.  When both t
3130: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 61  he SQLite core a
3140: 6e 64 20 74 68 65 20 5b 43 6f 6d 6d 61 6e 64 20  nd the [Command 
3150: 4c 69 6e 65 20 49 6e 74 65 72 66 61 63 65 5d 20  Line Interface] 
3160: 28 43 4c 49 29 20 61 72 65 20 62 6f 74 68 20 0a  (CLI) are both .
3170: 20 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20    compiled with 
3180: 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 74 68 65  this option, the
3190: 6e 20 74 68 65 20 43 4c 49 20 70 72 6f 76 69 64  n the CLI provid
31a0: 65 73 20 61 6e 20 65 78 74 72 61 20 63 6f 6d 6d  es an extra comm
31b0: 61 6e 64 0a 20 20 6e 61 6d 65 64 20 22 2e 69 6f  and.  named ".io
31c0: 74 72 61 63 65 22 20 74 68 61 74 20 70 72 6f 76  trace" that prov
31d0: 69 64 65 73 20 61 20 6c 6f 77 2d 6c 65 76 65 6c  ides a low-level
31e0: 20 6c 6f 67 20 6f 66 20 49 2f 4f 20 61 63 74 69   log of I/O acti
31f0: 76 69 74 79 2e 0a 20 20 54 68 69 73 20 6f 70 74  vity..  This opt
3200: 69 6f 6e 20 69 73 20 65 78 70 65 72 69 6d 65 6e  ion is experimen
3210: 74 61 6c 20 61 6e 64 20 6d 61 79 20 62 65 20 64  tal and may be d
3220: 69 73 63 6f 6e 74 69 6e 75 65 64 20 69 6e 20 61  iscontinued in a
3230: 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 2e   future release.
3240: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3250: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
3260: 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 7d  E_LOCKING_STYLE}
3270: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
3280: 20 65 6e 61 62 6c 65 73 20 61 64 64 69 74 69 6f   enables additio
3290: 6e 61 6c 20 6c 6f 67 69 63 20 69 6e 20 74 68 65  nal logic in the
32a0: 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20 6c 61   OS interface la
32b0: 79 65 72 20 66 6f 72 0a 20 20 4d 61 63 20 4f 53  yer for.  Mac OS
32c0: 20 58 2e 20 54 68 65 20 61 64 64 69 74 69 6f 6e   X. The addition
32d0: 61 6c 20 6c 6f 67 69 63 20 61 74 74 65 6d 70 74  al logic attempt
32e0: 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74  s to determine t
32f0: 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 0a 20  he type of the. 
3300: 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 69 6c 65   underlying file
3310: 73 79 73 74 65 6d 20 61 6e 64 20 63 68 6f 6f 73  system and choos
3320: 65 20 61 6e 64 20 61 6c 74 65 72 6e 61 74 69 76  e and alternativ
3330: 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61 74 65  e locking strate
3340: 67 79 0a 20 20 74 68 61 74 20 77 6f 72 6b 73 20  gy.  that works 
3350: 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 20 74 68  correctly for th
3360: 61 74 20 66 69 6c 65 73 79 73 74 65 6d 20 74 79  at filesystem ty
3370: 70 65 2e 20 46 69 76 65 20 6c 6f 63 6b 69 6e 67  pe. Five locking
3380: 20 73 74 72 61 74 65 67 69 65 73 20 0a 20 20 61   strategies .  a
3390: 72 65 20 61 76 61 69 6c 61 62 6c 65 3a 0a 0a 20  re available:.. 
33a0: 20 3c 75 6c 3e 0a 20 20 20 20 3c 6c 69 3e 20 50   <ul>.    <li> P
33b0: 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79  OSIX locking sty
33c0: 6c 65 2e 20 54 68 69 73 20 69 73 20 74 68 65 20  le. This is the 
33d0: 64 65 66 61 75 6c 74 20 6c 6f 63 6b 69 6e 67 20  default locking 
33e0: 73 74 79 6c 65 20 61 6e 64 20 74 68 65 0a 20 20  style and the.  
33f0: 20 20 20 20 20 20 20 73 74 79 6c 65 20 75 73 65         style use
3400: 64 20 62 79 20 6f 74 68 65 72 20 28 6e 6f 6e 20  d by other (non 
3410: 4d 61 63 20 4f 53 20 58 29 20 55 6e 69 78 65 73  Mac OS X) Unixes
3420: 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61  . Locks are obta
3430: 69 6e 65 64 20 61 6e 64 20 0a 20 20 20 20 20 20  ined and .      
3440: 20 20 20 72 65 6c 65 61 73 65 64 20 75 73 69 6e     released usin
3450: 67 20 74 68 65 20 66 63 6e 74 6c 28 29 20 73 79  g the fcntl() sy
3460: 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20  stem call...    
3470: 3c 6c 69 3e 20 41 46 50 20 6c 6f 63 6b 69 6e 67  <li> AFP locking
3480: 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63   style. This loc
3490: 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73  king style is us
34a0: 65 64 20 66 6f 72 20 6e 65 74 77 6f 72 6b 20 66  ed for network f
34b0: 69 6c 65 20 0a 20 20 20 20 20 20 20 20 20 73 79  ile .         sy
34c0: 73 74 65 6d 73 20 74 68 61 74 20 75 73 65 20 74  stems that use t
34d0: 68 65 20 41 46 50 20 28 41 70 70 6c 65 20 46 69  he AFP (Apple Fi
34e0: 6c 69 6e 67 20 50 72 6f 74 6f 63 6f 6c 29 20 70  ling Protocol) p
34f0: 72 6f 74 6f 63 6f 6c 2e 20 4c 6f 63 6b 73 0a 20  rotocol. Locks. 
3500: 20 20 20 20 20 20 20 20 61 72 65 20 6f 62 74 61          are obta
3510: 69 6e 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 20  ined by calling 
3520: 74 68 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63  the library func
3530: 74 69 6f 6e 20 5f 41 46 50 46 53 53 65 74 4c 6f  tion _AFPFSSetLo
3540: 63 6b 28 29 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20  ck()...    <li> 
3550: 46 6c 6f 63 6b 20 6c 6f 63 6b 69 6e 67 20 73 74  Flock locking st
3560: 79 6c 65 2e 20 54 68 69 73 20 69 73 20 75 73 65  yle. This is use
3570: 64 20 66 6f 72 20 66 69 6c 65 2d 73 79 73 74 65  d for file-syste
3580: 6d 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 0a 20  ms that do not. 
3590: 20 20 20 20 20 20 20 20 73 75 70 70 6f 72 74 20          support 
35a0: 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74  POSIX locking st
35b0: 79 6c 65 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f  yle. Locks are o
35c0: 62 74 61 69 6e 65 64 20 61 6e 64 20 72 65 6c 65  btained and rele
35d0: 61 73 65 64 20 75 73 69 6e 67 0a 20 20 20 20 20  ased using.     
35e0: 20 20 20 20 74 68 65 20 66 6c 6f 63 6b 28 29 20      the flock() 
35f0: 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20  system call...  
3600: 20 20 3c 6c 69 3e 20 44 6f 74 2d 66 69 6c 65 20    <li> Dot-file 
3610: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54  locking style. T
3620: 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  his locking styl
3630: 65 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 6e  e is used when n
3640: 65 69 74 68 65 72 0a 20 20 20 20 20 20 20 20 20  either.         
3650: 66 6c 6f 63 6b 20 6e 6f 72 20 50 4f 53 49 58 20  flock nor POSIX 
3660: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73 20 61  locking styles a
3670: 72 65 20 73 75 70 70 6f 72 74 65 64 20 62 79 20  re supported by 
3680: 74 68 65 20 66 69 6c 65 20 73 79 73 74 65 6d 2e  the file system.
3690: 0a 20 20 20 20 20 20 20 20 20 44 61 74 61 62 61  .         Databa
36a0: 73 65 20 6c 6f 63 6b 73 20 61 72 65 20 6f 62 74  se locks are obt
36b0: 61 69 6e 65 64 20 62 79 20 63 72 65 61 74 69 6e  ained by creatin
36c0: 67 20 61 6e 64 20 65 6e 74 72 79 20 69 6e 20 74  g and entry in t
36d0: 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d 0a 20  he file-system. 
36e0: 20 20 20 20 20 20 20 20 61 74 20 61 20 77 65 6c          at a wel
36f0: 6c 2d 6b 6e 6f 77 6e 20 6c 6f 63 61 74 69 6f 6e  l-known location
3700: 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65   relative to the
3710: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 28   database file (
3720: 61 20 22 64 6f 74 2d 66 69 6c 65 22 29 0a 20 20  a "dot-file").  
3730: 20 20 20 20 20 20 20 61 6e 64 20 72 65 6c 69 6e         and relin
3740: 71 75 69 73 68 65 64 20 62 79 20 64 65 6c 65 74  quished by delet
3750: 69 6e 67 20 74 68 65 20 73 61 6d 65 20 66 69 6c  ing the same fil
3760: 65 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 4e 6f 20  e...    <li> No 
3770: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 49  locking style. I
3780: 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 61 62  f none of the ab
3790: 6f 76 65 20 63 61 6e 20 62 65 20 73 75 70 70 6f  ove can be suppo
37a0: 72 74 65 64 2c 20 74 68 69 73 20 0a 20 20 20 20  rted, this .    
37b0: 20 20 20 20 20 6c 6f 63 6b 69 6e 67 20 73 74 79       locking sty
37c0: 6c 65 20 69 73 20 75 73 65 64 2e 20 4e 6f 20 64  le is used. No d
37d0: 61 74 61 62 61 73 65 20 6c 6f 63 6b 69 6e 67 20  atabase locking 
37e0: 6d 65 63 68 61 6e 69 73 6d 20 69 73 20 75 73 65  mechanism is use
37f0: 64 2e 20 57 68 65 6e 0a 20 20 20 20 20 20 20 20  d. When.        
3800: 20 74 68 69 73 20 73 79 73 74 65 6d 20 69 73 20   this system is 
3810: 75 73 65 64 20 69 74 20 69 73 20 6e 6f 74 20 73  used it is not s
3820: 61 66 65 20 66 6f 72 20 61 20 73 69 6e 67 6c 65  afe for a single
3830: 20 64 61 74 61 62 61 73 65 20 74 6f 20 62 65 0a   database to be.
3840: 20 20 20 20 20 20 20 20 20 61 63 63 65 73 73 65           accesse
3850: 64 20 62 79 20 6d 75 6c 74 69 70 6c 65 20 63 6c  d by multiple cl
3860: 69 65 6e 74 73 2e 0a 20 20 3c 2f 75 6c 3e 0a 0a  ients..  </ul>..
3870: 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20    Additionally, 
3880: 66 69 76 65 20 65 78 74 72 61 20 56 46 53 20 69  five extra VFS i
3890: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 61  mplementations a
38a0: 72 65 20 70 72 6f 76 69 64 65 64 20 61 73 20 77  re provided as w
38b0: 65 6c 6c 20 61 73 20 74 68 65 0a 20 20 64 65 66  ell as the.  def
38c0: 61 75 6c 74 2e 20 42 79 20 73 70 65 63 69 66 79  ault. By specify
38d0: 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 20 65  ing one of the e
38e0: 78 74 72 61 20 56 46 53 20 69 6d 70 6c 65 6d 65  xtra VFS impleme
38f0: 6e 74 61 74 69 6f 6e 73 20 0a 20 20 77 68 65 6e  ntations .  when
3900: 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69 74 65   calling [sqlite
3910: 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61 6e  3_open_v2()], an
3920: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79   application may
3930: 20 62 79 70 61 73 73 20 74 68 65 20 66 69 6c 65   bypass the file
3940: 2d 73 79 73 74 65 6d 0a 20 20 64 65 74 65 63 74  -system.  detect
3950: 69 6f 6e 20 6c 6f 67 69 63 20 61 6e 64 20 65 78  ion logic and ex
3960: 70 6c 69 63 69 74 6c 79 20 73 65 6c 65 63 74 20  plicitly select 
3970: 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65  one of the above
3980: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73 2e   locking styles.
3990: 20 54 68 65 0a 20 20 66 69 76 65 20 65 78 74 72   The.  five extr
39a0: 61 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61  a VFS implementa
39b0: 74 69 6f 6e 73 20 61 72 65 20 63 61 6c 6c 65 64  tions are called
39c0: 20 22 75 6e 69 78 2d 70 6f 73 69 78 22 2c 20 22   "unix-posix", "
39d0: 75 6e 69 78 2d 61 66 70 22 2c 0a 20 20 22 75 6e  unix-afp",.  "un
39e0: 69 78 2d 66 6c 6f 63 6b 22 2c 20 22 75 6e 69 78  ix-flock", "unix
39f0: 2d 64 6f 74 66 69 6c 65 22 20 61 6e 64 20 22 75  -dotfile" and "u
3a00: 6e 69 78 2d 6e 6f 6e 65 22 2e 0a 7d 0a 0a 43 4f  nix-none"..}..CO
3a10: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
3a20: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 4f  LITE_ENABLE_MEMO
3a30: 52 59 5f 4d 41 4e 41 47 45 4d 45 4e 54 7d 20 7b  RY_MANAGEMENT} {
3a40: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61  .  This option a
3a50: 64 64 73 20 65 78 74 72 61 20 6c 6f 67 69 63 20  dds extra logic 
3a60: 74 6f 20 53 51 4c 69 74 65 20 74 68 61 74 20 61  to SQLite that a
3a70: 6c 6c 6f 77 73 20 69 74 20 74 6f 20 72 65 6c 65  llows it to rele
3a80: 61 73 65 20 75 6e 75 73 65 64 0a 20 20 6d 65 6d  ase unused.  mem
3a90: 6f 72 79 20 75 70 6f 6e 20 72 65 71 75 65 73 74  ory upon request
3aa0: 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d  .  This option m
3ab0: 75 73 74 20 62 65 20 65 6e 61 62 6c 65 64 20 69  ust be enabled i
3ac0: 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68 65 0a  n order for the.
3ad0: 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65 61    [sqlite3_relea
3ae0: 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74  se_memory()] int
3af0: 65 72 66 61 63 65 20 74 6f 20 77 6f 72 6b 2e 20  erface to work. 
3b00: 20 49 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65   If this compile
3b10: 2d 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 69  -time.  option i
3b20: 73 20 6e 6f 74 20 75 73 65 64 2c 20 74 68 65 20  s not used, the 
3b30: 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65  [sqlite3_release
3b40: 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74 65 72  _memory()] inter
3b50: 66 61 63 65 20 69 73 20 61 20 0a 20 20 6e 6f 2d  face is a .  no-
3b60: 6f 70 2e 20 20 53 69 6e 63 65 20 5b 73 71 6c 69  op.  Since [sqli
3b70: 74 65 33 5f 73 6f 66 74 5f 68 65 61 70 5f 6c 69  te3_soft_heap_li
3b80: 6d 69 74 28 29 5d 20 64 65 70 65 6e 64 73 20 6f  mit()] depends o
3b90: 6e 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c  n.  [sqlite3_rel
3ba0: 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 2c 20  ease_memory()], 
3bb0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 61  this option is a
3bc0: 6c 73 6f 20 6e 65 63 65 73 73 61 72 79 20 66 6f  lso necessary fo
3bd0: 72 0a 20 20 74 68 65 20 63 6f 72 72 65 63 74 20  r.  the correct 
3be0: 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 5b 73 71  operation of [sq
3bf0: 6c 69 74 65 33 5f 73 6f 66 74 5f 68 65 61 70 5f  lite3_soft_heap_
3c00: 6c 69 6d 69 74 28 29 5d 2e 0a 7d 0a 0a 43 4f 4d  limit()]..}..COM
3c10: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
3c20: 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59  ITE_ENABLE_MEMSY
3c30: 53 33 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  S3} {.  This opt
3c40: 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64  ion includes cod
3c50: 65 20 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74  e in SQLite that
3c60: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61   implements an a
3c70: 6c 74 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d  lternative.  mem
3c80: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20  ory allocator.  
3c90: 54 68 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65  This alternative
3ca0: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
3cb0: 72 20 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65  r is only engage
3cc0: 64 0a 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51  d.  when the [SQ
3cd0: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50  LITE_CONFIG_HEAP
3ce0: 5d 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c  ] option to [sql
3cf0: 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69  ite3_config()] i
3d00: 73 20 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70  s used to.  supp
3d10: 6c 79 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b  ly a large chunk
3d20: 20 6f 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20   of memory from 
3d30: 77 68 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79  which all memory
3d40: 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65   allocations are
3d50: 0a 20 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20  .  taken..  The 
3d60: 4d 45 4d 53 59 53 33 20 6d 65 6d 6f 72 79 20 61  MEMSYS3 memory a
3d70: 6c 6c 6f 63 61 74 6f 72 20 75 73 65 73 20 61 20  llocator uses a 
3d80: 68 79 62 72 69 64 20 61 6c 6c 6f 63 61 74 69 6f  hybrid allocatio
3d90: 6e 20 61 6c 67 6f 72 69 74 68 6d 20 0a 20 20 70  n algorithm .  p
3da0: 61 74 74 65 72 6e 65 64 20 61 66 74 65 72 20 64  atterned after d
3db0: 6c 6d 61 6c 6c 6f 63 28 29 2e 20 20 20 4f 6e 6c  lmalloc().   Onl
3dc0: 79 20 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f  y one of SQLITE_
3dd0: 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 20 61  ENABLE_MEMSYS3 a
3de0: 6e 64 20 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41  nd .  SQLITE_ENA
3df0: 42 4c 45 5f 4d 45 4d 53 59 53 35 20 6d 61 79 20  BLE_MEMSYS5 may 
3e00: 62 65 20 65 6e 61 62 6c 65 64 20 61 74 20 6f 6e  be enabled at on
3e10: 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ce..}..COMPILE_O
3e20: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
3e30: 41 42 4c 45 5f 4d 45 4d 53 59 53 35 7d 20 7b 0a  ABLE_MEMSYS5} {.
3e40: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e    This option in
3e50: 63 6c 75 64 65 73 20 63 6f 64 65 20 69 6e 20 53  cludes code in S
3e60: 51 4c 69 74 65 20 74 68 61 74 20 69 6d 70 6c 65  QLite that imple
3e70: 6d 65 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e 61  ments an alterna
3e80: 74 69 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c  tive.  memory al
3e90: 6c 6f 63 61 74 6f 72 2e 20 20 54 68 69 73 20 61  locator.  This a
3ea0: 6c 74 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72  lternative memor
3eb0: 79 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f  y allocator is o
3ec0: 6e 6c 79 20 65 6e 67 61 67 65 64 0a 20 20 77 68  nly engaged.  wh
3ed0: 65 6e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43  en the [SQLITE_C
3ee0: 4f 4e 46 49 47 5f 48 45 41 50 5d 20 6f 70 74 69  ONFIG_HEAP] opti
3ef0: 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  on to [sqlite3_c
3f00: 6f 6e 66 69 67 28 29 5d 20 69 73 20 75 73 65 64  onfig()] is used
3f10: 20 74 6f 0a 20 20 73 75 70 70 6c 79 20 61 20 6c   to.  supply a l
3f20: 61 72 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65  arge chunk of me
3f30: 6d 6f 72 79 20 66 72 6f 6d 20 77 68 69 63 68 20  mory from which 
3f40: 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  all memory alloc
3f50: 61 74 69 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b  ations are.  tak
3f60: 65 6e 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59 53  en..  The MEMSYS
3f70: 35 20 6d 6f 64 75 6c 65 20 72 6f 75 6e 64 73 20  5 module rounds 
3f80: 61 6c 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20  all allocations 
3f90: 75 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70  up to the next p
3fa0: 6f 77 65 72 0a 20 20 6f 66 20 74 77 6f 20 61 6e  ower.  of two an
3fb0: 64 20 75 73 65 73 20 61 20 66 69 72 73 74 2d 66  d uses a first-f
3fc0: 69 74 2c 20 62 75 64 64 79 2d 61 6c 6c 6f 63 61  it, buddy-alloca
3fd0: 74 6f 72 20 61 6c 67 6f 72 69 74 68 6d 0a 20 20  tor algorithm.  
3fe0: 74 68 61 74 20 70 72 6f 76 69 64 65 73 20 73 74  that provides st
3ff0: 72 6f 6e 67 20 67 75 61 72 61 6e 74 65 65 73 20  rong guarantees 
4000: 61 67 61 69 6e 73 74 20 66 72 61 67 6d 65 6e 74  against fragment
4010: 61 74 69 6f 6e 20 61 6e 64 20 62 72 65 61 6b 64  ation and breakd
4020: 6f 77 6e 0a 20 20 73 75 62 6a 65 63 74 20 74 6f  own.  subject to
4030: 20 63 65 72 74 61 69 6e 20 6f 70 65 72 61 74 69   certain operati
4040: 6e 67 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a  ng constraints..
4050: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
4060: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
4070: 5f 52 54 52 45 45 7d 20 7b 0a 20 20 54 68 69 73  _RTREE} {.  This
4080: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53   option causes S
4090: 51 4c 69 74 65 20 74 6f 20 69 6e 63 6c 75 64 65  QLite to include
40a0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
40b0: 0a 20 20 5b 72 74 72 65 65 20 7c 20 52 2a 54 72  .  [rtree | R*Tr
40c0: 65 65 20 69 6e 64 65 78 20 65 78 74 65 6e 73 69  ee index extensi
40d0: 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  on]..}..COMPILE_
40e0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
40f0: 4e 41 42 4c 45 5f 53 54 41 54 32 7d 20 7b 0a 20  NABLE_STAT2} {. 
4100: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64 64   This option add
4110: 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67  s additional log
4120: 69 63 20 74 6f 20 74 68 65 20 5b 41 4e 41 4c 59  ic to the [ANALY
4130: 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20  ZE] command and 
4140: 74 6f 0a 20 20 74 68 65 20 5b 71 75 65 72 79 20  to.  the [query 
4150: 70 6c 61 6e 6e 65 72 5d 20 74 68 61 74 20 63 61  planner] that ca
4160: 6e 20 68 65 6c 70 20 53 51 4c 69 74 65 20 74 6f  n help SQLite to
4170: 20 63 68 6f 73 65 20 61 20 62 65 74 74 65 72 20   chose a better 
4180: 71 75 65 72 79 20 70 6c 61 6e 0a 20 20 75 6e 64  query plan.  und
4190: 65 72 20 63 65 72 74 61 69 6e 20 73 69 74 75 61  er certain situa
41a0: 74 69 6f 6e 73 2e 20 20 54 68 65 20 5b 41 4e 41  tions.  The [ANA
41b0: 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73  LYZE] command is
41c0: 20 65 6e 68 61 6e 63 65 64 20 74 6f 20 63 6f 6c   enhanced to col
41d0: 6c 65 63 74 0a 20 20 61 20 31 30 2d 73 61 6d 70  lect.  a 10-samp
41e0: 6c 65 20 68 69 73 74 6f 67 72 61 6d 20 6f 66 20  le histogram of 
41f0: 74 68 65 20 64 61 74 61 20 69 6e 20 65 61 63 68  the data in each
4200: 20 69 6e 64 65 78 20 61 6e 64 20 73 74 6f 72 65   index and store
4210: 20 74 68 61 74 20 68 69 73 74 6f 67 72 61 6d 0a   that histogram.
4220: 20 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69    in the <b>sqli
4230: 74 65 5f 73 74 61 74 32 3c 2f 62 3e 20 74 61 62  te_stat2</b> tab
4240: 6c 65 2e 20 20 54 68 65 20 71 75 65 72 79 20 70  le.  The query p
4250: 6c 61 6e 6e 65 72 20 77 69 6c 6c 20 74 68 65 6e  lanner will then
4260: 20 75 73 65 20 74 68 65 0a 20 20 68 69 73 74 6f   use the.  histo
4270: 67 72 61 6d 20 64 61 74 61 20 74 6f 20 68 65 6c  gram data to hel
4280: 70 20 69 74 20 65 73 74 69 6d 61 74 65 20 68 6f  p it estimate ho
4290: 77 20 6d 61 6e 79 20 72 6f 77 73 20 77 69 6c 6c  w many rows will
42a0: 20 62 65 20 73 65 6c 65 63 74 65 64 20 62 79 20   be selected by 
42b0: 61 0a 20 20 3c 61 20 68 72 65 66 3d 22 6f 70 74  a.  <a href="opt
42c0: 6f 76 65 72 76 69 65 77 2e 68 74 6d 6c 23 72 61  overview.html#ra
42d0: 6e 67 65 71 75 65 72 79 22 3e 72 61 6e 67 65 20  ngequery">range 
42e0: 63 6f 6e 73 74 72 61 69 6e 74 3c 2f 61 3e 20 69  constraint</a> i
42f0: 6e 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65  n a WHERE clause
4300: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
4310: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
4320: 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45  LE_UPDATE_DELETE
4330: 5f 4c 49 4d 49 54 7d 20 7b 0a 20 20 54 68 69 73  _LIMIT} {.  This
4340: 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20   option enables 
4350: 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44 45  an optional ORDE
4360: 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20 63  R BY and LIMIT c
4370: 6c 61 75 73 65 20 6f 6e 20 0a 20 20 5b 55 50 44  lause on .  [UPD
4380: 41 54 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54 45  ATE] and [DELETE
4390: 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 0a 20  ] statements... 
43a0: 20 3c 70 3e 49 66 20 74 68 69 73 20 6f 70 74 69   <p>If this opti
43b0: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
43c0: 68 65 6e 20 69 74 20 6d 75 73 74 20 61 6c 73 6f  hen it must also
43d0: 20 62 65 20 0a 20 20 64 65 66 69 6e 65 64 20 77   be .  defined w
43e0: 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 27 6c  hen using the 'l
43f0: 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67 65  emon' tool to ge
4400: 6e 65 72 61 74 65 20 61 20 70 61 72 73 65 2e 63  nerate a parse.c
4410: 0a 20 20 66 69 6c 65 2e 20 42 65 63 61 75 73 65  .  file. Because
4420: 20 6f 66 20 74 68 69 73 2c 20 74 68 69 73 20 6f   of this, this o
4430: 70 74 69 6f 6e 20 6d 61 79 20 6f 6e 6c 79 20 62  ption may only b
4440: 65 20 75 73 65 64 20 77 68 65 6e 20 74 68 65 20  e used when the 
4450: 6c 69 62 72 61 72 79 20 69 73 20 62 75 69 6c 74  library is built
4460: 0a 20 20 66 72 6f 6d 20 73 6f 75 72 63 65 2c 20  .  from source, 
4470: 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d  not from the [am
4480: 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 66  algamation] or f
4490: 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74 69  rom the collecti
44a0: 6f 6e 20 6f 66 0a 20 20 70 72 65 2d 70 61 63 6b  on of.  pre-pack
44b0: 61 67 65 64 20 43 20 66 69 6c 65 73 20 70 72 6f  aged C files pro
44c0: 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d 55 6e  vided for non-Un
44d0: 69 78 20 6c 69 6b 65 20 70 6c 61 74 66 6f 72 6d  ix like platform
44e0: 73 20 6f 6e 20 74 68 65 20 77 65 62 73 69 74 65  s on the website
44f0: 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50  ..  </p>.}..COMP
4500: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
4510: 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4c 4f 43 4b  TE_ENABLE_UNLOCK
4520: 5f 4e 4f 54 49 46 59 7d 20 7b 0a 20 20 54 68 69  _NOTIFY} {.  Thi
4530: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
4540: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 75 6e   the [sqlite3_un
4550: 6c 6f 63 6b 5f 6e 6f 74 69 66 79 28 29 5d 20 69  lock_notify()] i
4560: 6e 74 65 72 66 61 63 65 20 61 6e 64 0a 20 20 69  nterface and.  i
4570: 74 73 20 61 73 73 6f 63 69 61 74 65 64 20 66 75  ts associated fu
4580: 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20 20 53 65  nctionality.  Se
4590: 65 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74  e the documentat
45a0: 69 6f 6e 20 74 69 74 6c 65 64 0a 20 20 5b 55 73  ion titled.  [Us
45b0: 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20 55  ing the SQLite U
45c0: 6e 6c 6f 63 6b 20 4e 6f 74 69 66 69 63 61 74 69  nlock Notificati
45d0: 6f 6e 20 46 65 61 74 75 72 65 5d 20 66 6f 72 20  on Feature] for 
45e0: 61 64 64 69 74 69 6f 6e 61 6c 0a 20 20 69 6e 66  additional.  inf
45f0: 6f 72 6d 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d  ormation..}..COM
4600: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
4610: 49 54 45 5f 53 4f 55 4e 44 45 58 7d 20 7b 0a 20  ITE_SOUNDEX} {. 
4620: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61   This option ena
4630: 62 6c 65 73 20 74 68 65 20 5b 73 6f 75 6e 64 65  bles the [sounde
4640: 78 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  x() SQL function
4650: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
4660: 54 49 4f 4e 20 7b 59 59 54 52 41 43 4b 4d 41 58  TION {YYTRACKMAX
4670: 53 54 41 43 4b 44 45 50 54 48 7d 20 7b 0a 20 20  STACKDEPTH} {.  
4680: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
4690: 65 73 20 74 68 65 20 4c 41 4c 52 28 31 29 20 70  es the LALR(1) p
46a0: 61 72 73 65 72 20 73 74 61 63 6b 20 64 65 70 74  arser stack dept
46b0: 68 20 74 6f 20 62 65 20 74 72 61 63 6b 65 64 0a  h to be tracked.
46c0: 20 20 61 6e 64 20 72 65 70 6f 72 74 65 64 20 75    and reported u
46d0: 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65  sing the [sqlite
46e0: 33 5f 73 74 61 74 75 73 5d 28 5b 53 51 4c 49 54  3_status]([SQLIT
46f0: 45 5f 53 54 41 54 55 53 5f 50 41 52 53 45 52 5f  E_STATUS_PARSER_
4700: 53 54 41 43 4b 5d 2c 2e 2e 2e 29 0a 20 20 69 6e  STACK],...).  in
4710: 74 65 72 66 61 63 65 2e 20 20 53 51 4c 69 74 65  terface.  SQLite
4720: 27 73 20 4c 41 4c 52 28 31 29 20 70 61 72 73 65  's LALR(1) parse
4730: 72 20 68 61 73 20 61 20 66 69 78 65 64 20 73 74  r has a fixed st
4740: 61 63 6b 20 64 65 70 74 68 0a 20 20 28 64 65 74  ack depth.  (det
4750: 65 72 6d 69 6e 65 64 20 61 74 20 63 6f 6d 70 69  ermined at compi
4760: 6c 65 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68  le-time using th
4770: 65 20 5b 59 59 53 54 41 43 4b 44 45 50 54 48 5d  e [YYSTACKDEPTH]
4780: 20 6f 70 74 69 6f 6e 73 29 2e 0a 20 20 54 68 69   options)..  Thi
4790: 73 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20  s option can be 
47a0: 75 73 65 64 20 74 6f 20 68 65 6c 70 20 64 65 74  used to help det
47b0: 65 72 6d 69 6e 65 20 69 66 20 61 6e 20 61 70 70  ermine if an app
47c0: 6c 69 63 61 74 69 6f 6e 20 69 73 0a 20 20 67 65  lication is.  ge
47d0: 74 74 69 6e 67 20 63 6c 6f 73 65 20 74 6f 20 65  tting close to e
47e0: 78 63 65 65 64 69 6e 67 20 74 68 65 20 6d 61 78  xceeding the max
47f0: 69 6d 75 6d 20 4c 41 4c 52 28 31 29 20 73 74 61  imum LALR(1) sta
4800: 63 6b 20 64 65 70 74 68 2e 0a 7d 0a 3c 2f 74 63  ck depth..}.</tc
4810: 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 64 69 73  l>..<a name="dis
4820: 61 62 6c 65 66 65 61 74 75 72 65 73 22 3e 3c 2f  ablefeatures"></
4830: 61 3e 0a 3c 68 32 3e 31 2e 35 20 4f 70 74 69 6f  a>.<h2>1.5 Optio
4840: 6e 73 20 54 6f 20 44 69 73 61 62 6c 65 20 46 65  ns To Disable Fe
4850: 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20  atures Normally 
4860: 54 75 72 6e 65 64 20 4f 6e 3c 2f 68 32 3e 0a 0a  Turned On</h2>..
4870: 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50  <tcl>.COMPILE_OP
4880: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53  TION {SQLITE_DIS
4890: 41 42 4c 45 5f 4c 46 53 7d 20 7b 0a 20 20 49 66  ABLE_LFS} {.  If
48a0: 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65   this C-preproce
48b0: 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65  ssor macro is de
48c0: 66 69 6e 65 64 2c 20 6c 61 72 67 65 20 66 69 6c  fined, large fil
48d0: 65 20 73 75 70 70 6f 72 74 0a 20 20 69 73 20 64  e support.  is d
48e0: 69 73 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  isabled..}..COMP
48f0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
4900: 54 45 5f 44 49 53 41 42 4c 45 5f 44 49 52 53 59  TE_DISABLE_DIRSY
4910: 4e 43 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  NC} {.  If this 
4920: 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C-preprocessor m
4930: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c  acro is defined,
4940: 20 64 69 72 65 63 74 6f 72 79 20 73 79 6e 63 73   directory syncs
4950: 0a 20 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e  .  are disabled.
4960: 20 20 53 51 4c 69 74 65 20 74 79 70 69 63 61 6c    SQLite typical
4970: 6c 79 20 61 74 74 65 6d 70 74 73 20 74 6f 20 73  ly attempts to s
4980: 79 6e 63 20 74 68 65 20 70 61 72 65 6e 74 0a 20  ync the parent. 
4990: 20 64 69 72 65 63 74 6f 72 79 20 77 68 65 6e 20   directory when 
49a0: 61 20 66 69 6c 65 20 69 73 20 64 65 6c 65 74 65  a file is delete
49b0: 64 20 74 6f 20 65 6e 73 75 72 65 20 74 68 65 20  d to ensure the 
49c0: 64 69 72 65 63 74 6f 72 79 0a 20 20 65 6e 74 72  directory.  entr
49d0: 69 65 73 20 61 72 65 20 75 70 64 61 74 65 64 20  ies are updated 
49e0: 69 6d 6d 65 64 69 61 74 65 6c 79 20 6f 6e 20 64  immediately on d
49f0: 69 73 6b 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  isk..}.</tcl>..<
4a00: 74 63 6c 3e 0a 20 20 68 64 5f 66 72 61 67 6d 65  tcl>.  hd_fragme
4a10: 6e 74 20 22 6f 6d 69 74 66 65 61 74 75 72 65 73  nt "omitfeatures
4a20: 22 0a 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20  ".  hd_keywords 
4a30: 22 6f 6d 69 74 66 65 61 74 75 72 65 73 22 0a 3c  "omitfeatures".<
4a40: 2f 74 63 6c 3e 0a 3c 68 32 3e 31 2e 36 20 4f 70  /tcl>.<h2>1.6 Op
4a50: 74 69 6f 6e 73 20 54 6f 20 4f 6d 69 74 20 46 65  tions To Omit Fe
4a60: 61 74 75 72 65 73 3c 2f 68 32 3e 0a 0a 3c 70 3e  atures</h2>..<p>
4a70: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70  The following op
4a80: 74 69 6f 6e 73 20 63 61 6e 20 75 73 65 64 20 74  tions can used t
4a90: 6f 20 72 65 64 75 63 65 20 74 68 65 20 73 69 7a  o reduce the siz
4aa0: 65 20 6f 66 20 74 68 65 20 63 6f 6d 70 69 6c 65  e of the compile
4ab0: 64 0a 6c 69 62 72 61 72 79 20 62 79 20 6f 6d 69  d.library by omi
4ac0: 74 74 69 6e 67 20 6f 70 74 69 6f 6e 61 6c 20 66  tting optional f
4ad0: 65 61 74 75 72 65 73 2e 20 54 68 69 73 20 69 73  eatures. This is
4ae0: 20 70 72 6f 62 61 62 6c 79 20 6f 6e 6c 79 20 75   probably only u
4af0: 73 65 66 75 6c 0a 69 6e 20 65 6d 62 65 64 64 65  seful.in embedde
4b00: 64 20 73 79 73 74 65 6d 73 20 77 68 65 72 65 20  d systems where 
4b10: 73 70 61 63 65 20 69 73 20 65 73 70 65 63 69 61  space is especia
4b20: 6c 6c 79 20 74 69 67 68 74 2c 20 61 73 20 65 76  lly tight, as ev
4b30: 65 6e 20 77 69 74 68 20 61 6c 6c 0a 66 65 61 74  en with all.feat
4b40: 75 72 65 73 20 69 6e 63 6c 75 64 65 64 20 74 68  ures included th
4b50: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
4b60: 20 69 73 20 72 65 6c 61 74 69 76 65 6c 79 20 73   is relatively s
4b70: 6d 61 6c 6c 2e 20 44 6f 6e 27 74 20 66 6f 72 67  mall. Don't forg
4b80: 65 74 0a 74 6f 20 74 65 6c 6c 20 79 6f 75 72 20  et.to tell your 
4b90: 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69  compiler to opti
4ba0: 6d 69 7a 65 20 66 6f 72 20 62 69 6e 61 72 79 20  mize for binary 
4bb0: 73 69 7a 65 21 20 28 74 68 65 20 2d 4f 73 20 6f  size! (the -Os o
4bc0: 70 74 69 6f 6e 20 69 66 0a 75 73 69 6e 67 20 47  ption if.using G
4bd0: 43 43 29 2e 20 20 54 65 6c 6c 69 6e 67 20 79 6f  CC).  Telling yo
4be0: 75 72 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f  ur compiler to o
4bf0: 70 74 69 6d 69 7a 65 20 66 6f 72 20 73 69 7a 65  ptimize for size
4c00: 20 75 73 75 61 6c 6c 79 20 68 61 73 0a 61 20 6d   usually has.a m
4c10: 75 63 68 20 6c 61 72 67 65 72 20 69 6d 70 61 63  uch larger impac
4c20: 74 20 6f 6e 20 6c 69 62 72 61 72 79 20 66 6f 6f  t on library foo
4c30: 74 70 72 69 6e 74 20 74 68 61 6e 20 65 6d 70 6c  tprint than empl
4c40: 6f 79 69 6e 67 20 61 6e 79 20 6f 66 20 74 68 65  oying any of the
4c50: 73 65 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  se.compile-time 
4c60: 6f 70 74 69 6f 6e 73 2e 20 20 59 6f 75 20 73 68  options.  You sh
4c70: 6f 75 6c 64 20 61 6c 73 6f 20 76 65 72 69 66 79  ould also verify
4c80: 20 74 68 61 74 20 0a 3c 61 20 68 72 65 66 3d 22   that .<a href="
4c90: 23 64 65 62 75 67 6f 70 74 69 6f 6e 73 22 3e 64  #debugoptions">d
4ca0: 65 62 75 67 67 69 6e 67 20 6f 70 74 69 6f 6e 73  ebugging options
4cb0: 3c 2f 61 3e 20 61 72 65 20 64 69 73 61 62 6c 65  </a> are disable
4cc0: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6d  d.</p>..<p>The m
4cd0: 61 63 72 6f 73 20 69 6e 20 74 68 69 73 20 73 65  acros in this se
4ce0: 63 74 69 6f 6e 20 64 6f 20 6e 6f 74 20 72 65 71  ction do not req
4cf0: 75 69 72 65 20 76 61 6c 75 65 73 2e 20 54 68 65  uire values. The
4d00: 20 66 6f 6c 6c 6f 77 69 6e 67 20 0a 63 6f 6d 70   following .comp
4d10: 69 6c 61 74 69 6f 6e 20 73 77 69 74 63 68 65 73  ilation switches
4d20: 20 61 6c 6c 20 68 61 76 65 20 74 68 65 20 73 61   all have the sa
4d30: 6d 65 20 65 66 66 65 63 74 3a 3c 62 72 3e 0a 2d  me effect:<br>.-
4d40: 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54  DSQLITE_OMIT_ALT
4d50: 45 52 54 41 42 4c 45 3c 62 72 3e 0a 2d 44 53 51  ERTABLE<br>.-DSQ
4d60: 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54  LITE_OMIT_ALTERT
4d70: 41 42 4c 45 3d 31 3c 62 72 3e 0a 2d 44 53 51 4c  ABLE=1<br>.-DSQL
4d80: 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41  ITE_OMIT_ALTERTA
4d90: 42 4c 45 3d 30 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49  BLE=0.</p>..<p>I
4da0: 66 20 61 6e 79 20 6f 66 20 74 68 65 73 65 20 6f  f any of these o
4db0: 70 74 69 6f 6e 73 20 61 72 65 20 64 65 66 69 6e  ptions are defin
4dc0: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 73 61 6d  ed, then the sam
4dd0: 65 20 73 65 74 20 6f 66 20 53 51 4c 49 54 45 5f  e set of SQLITE_
4de0: 4f 4d 49 54 5f 2a 0a 6f 70 74 69 6f 6e 73 20 6d  OMIT_*.options m
4df0: 75 73 74 20 61 6c 73 6f 20 62 65 20 64 65 66 69  ust also be defi
4e00: 6e 65 64 20 77 68 65 6e 20 75 73 69 6e 67 20 74  ned when using t
4e10: 68 65 20 27 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20  he 'lemon' tool 
4e20: 74 6f 20 67 65 6e 65 72 61 74 65 20 74 68 65 0a  to generate the.
4e30: 70 61 72 73 65 2e 63 20 66 69 6c 65 20 61 6e 64  parse.c file and
4e40: 20 77 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 20   when compiling 
4e50: 74 68 65 20 27 6d 6b 6b 65 79 77 6f 72 64 68 61  the 'mkkeywordha
4e60: 73 68 27 20 74 6f 6f 6c 20 77 68 69 63 68 20 67  sh' tool which g
4e70: 65 6e 65 72 61 74 65 73 20 0a 74 68 65 20 6b 65  enerates .the ke
4e80: 79 77 6f 72 64 68 61 73 68 2e 68 20 66 69 6c 65  ywordhash.h file
4e90: 2e 0a 42 65 63 61 75 73 65 20 6f 66 20 74 68 69  ..Because of thi
4ea0: 73 2c 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73  s, these options
4eb0: 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65   may only be use
4ec0: 64 20 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61  d when the libra
4ed0: 72 79 20 69 73 20 62 75 69 6c 74 0a 66 72 6f 6d  ry is built.from
4ee0: 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75 72 63   canonical sourc
4ef0: 65 2c 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20  e, not from the 
4f00: 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f  [amalgamation] o
4f10: 72 20 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65  r from the colle
4f20: 63 74 69 6f 6e 20 6f 66 0a 70 72 65 2d 70 61 63  ction of.pre-pac
4f30: 6b 61 67 65 64 20 43 20 66 69 6c 65 73 20 70 72  kaged C files pr
4f40: 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d 55  ovided for non-U
4f50: 6e 69 78 20 6c 69 6b 65 20 70 6c 61 74 66 6f 72  nix like platfor
4f60: 6d 73 20 6f 6e 20 74 68 65 20 77 65 62 73 69 74  ms on the websit
4f70: 65 2e 0a 41 6e 79 20 53 51 4c 49 54 45 5f 4f 4d  e..Any SQLITE_OM
4f80: 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 77 68 69  IT_* options whi
4f90: 63 68 20 63 61 6e 20 62 65 20 75 73 65 64 20 64  ch can be used d
4fa0: 69 72 65 63 74 6c 79 20 77 69 74 68 20 74 68 65  irectly with the
4fb0: 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20   [amalgamation] 
4fc0: 0a 61 72 65 20 6c 69 73 74 65 64 20 62 65 6c 6f  .are listed belo
4fd0: 77 2c 20 68 6f 77 65 76 65 72 2c 20 74 68 65 20  w, however, the 
4fe0: 77 61 72 6e 69 6e 67 73 20 69 6e 20 74 68 65 20  warnings in the 
4ff0: 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 72 61 67 72  following paragr
5000: 61 70 68 20 73 68 6f 75 6c 64 20 62 65 20 6e 6f  aph should be no
5010: 74 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  ted..</p>..<bloc
5020: 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62 3e 49 6d  kquote>.<i><b>Im
5030: 70 6f 72 74 61 6e 74 20 4e 6f 74 65 3a 3c 2f 62  portant Note:</b
5040: 3e 20 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49  > The SQLITE_OMI
5050: 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 64 6f 20 6e  T_* options do n
5060: 6f 74 20 77 6f 72 6b 20 77 69 74 68 20 74 68 65  ot work with the
5070: 0a 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20  .[amalgamation] 
5080: 6f 72 20 77 69 74 68 20 70 72 65 2d 70 61 63 6b  or with pre-pack
5090: 61 67 65 64 20 43 20 63 6f 64 65 20 66 69 6c 65  aged C code file
50a0: 73 2e 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  s.  SQLITE_OMIT_
50b0: 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f  * compile-time.o
50c0: 70 74 69 6f 6e 73 20 6f 6e 6c 79 20 77 6f 72 6b  ptions only work
50d0: 20 63 6f 72 72 65 63 74 6c 79 20 77 68 65 6e 20   correctly when 
50e0: 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c 74 20  SQLite is built 
50f0: 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 73  from canonical s
5100: 6f 75 72 63 65 20 66 69 6c 65 73 2e 0a 3c 2f 69  ource files..</i
5110: 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >.</blockquote>.
5120: 0a 0a 3c 70 3e 53 70 65 63 69 61 6c 20 76 65 72  ..<p>Special ver
5130: 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 53 51 4c  sions of the SQL
5140: 69 74 65 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  ite amalgamation
5150: 20 74 68 61 74 20 64 6f 20 77 6f 72 6b 20 77 69   that do work wi
5160: 74 68 20 61 0a 70 72 65 64 65 74 65 72 6d 69 6e  th a.predetermin
5170: 65 64 20 73 65 74 20 6f 66 20 53 51 4c 49 54 45  ed set of SQLITE
5180: 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20  _OMIT_* options 
5190: 63 61 6e 20 62 65 20 67 65 6e 65 72 61 74 65 64  can be generated
51a0: 2e 20 20 54 6f 20 64 6f 20 73 6f 2c 0a 6d 61 6b  .  To do so,.mak
51b0: 65 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20  e a copy of the 
51c0: 4d 61 6b 65 66 69 6c 65 2e 6c 69 6e 75 78 2d 67  Makefile.linux-g
51d0: 63 63 20 6d 61 6b 65 66 69 6c 65 20 74 65 6d 70  cc makefile temp
51e0: 6c 61 74 65 20 69 6e 20 74 68 65 20 63 61 6e 6f  late in the cano
51f0: 6e 69 63 61 6c 0a 73 6f 75 72 63 65 20 63 6f 64  nical.source cod
5200: 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 2e 20  e distribution. 
5210: 20 43 68 61 6e 67 65 20 74 68 65 20 6e 61 6d 65   Change the name
5220: 20 6f 66 20 79 6f 75 72 20 63 6f 70 79 20 74 6f   of your copy to
5230: 20 73 69 6d 70 6c 79 20 22 4d 61 6b 65 66 69 6c   simply "Makefil
5240: 65 22 2e 0a 54 68 65 6e 20 65 64 69 74 20 22 4d  e"..Then edit "M
5250: 61 6b 65 66 69 6c 65 22 20 74 6f 20 73 65 74 20  akefile" to set 
5260: 75 70 20 61 70 70 72 6f 70 72 69 61 74 65 20 63  up appropriate c
5270: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
5280: 6f 6e 73 2e 20 20 54 68 65 6e 0a 74 79 70 65 3a  ons.  Then.type:
5290: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 74 74  .<blockquote><tt
52a0: 3e 6d 61 6b 65 20 63 6c 65 61 6e 3b 20 6d 61 6b  >make clean; mak
52b0: 65 20 73 71 6c 69 74 65 33 2e 63 3c 2f 74 74 3e  e sqlite3.c</tt>
52c0: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 54 68  </blockquote>.Th
52d0: 65 20 72 65 73 75 6c 74 69 6e 67 20 22 73 71 6c  e resulting "sql
52e0: 69 74 65 33 2e 63 22 20 61 6d 61 6c 67 61 6d 61  ite3.c" amalgama
52f0: 74 69 6f 6e 20 63 6f 64 65 20 66 69 6c 65 20 28  tion code file (
5300: 61 6e 64 20 69 74 73 20 61 73 73 6f 63 69 61 74  and its associat
5310: 65 64 0a 68 65 61 64 65 72 20 66 69 6c 65 20 22  ed.header file "
5320: 73 71 6c 69 74 65 33 2e 68 22 29 20 63 61 6e 20  sqlite3.h") can 
5330: 74 68 65 6e 20 62 65 20 6d 6f 76 65 64 20 74 6f  then be moved to
5340: 20 61 20 6e 6f 6e 2d 75 6e 69 78 20 70 6c 61 74   a non-unix plat
5350: 66 6f 72 6d 0a 66 6f 72 20 66 69 6e 61 6c 20 63  form.for final c
5360: 6f 6d 70 69 6c 61 74 69 6f 6e 20 75 73 69 6e 67  ompilation using
5370: 20 61 20 6e 61 74 69 76 65 20 63 6f 6d 70 69 6c   a native compil
5380: 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6c 6c 20  er.</p>..<p>All 
5390: 6f 66 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 4d  of the SQLITE_OM
53a0: 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 61 72 65  IT_* options are
53b0: 20 75 6e 73 75 70 70 6f 72 74 65 64 2e 3c 2f 70   unsupported.</p
53c0: 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >..<blockquote>.
53d0: 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61 6e 74 20  <i><b>Important 
53e0: 4e 6f 74 65 3a 3c 2f 62 3e 0a 54 68 65 20 53 51  Note:</b>.The SQ
53f0: 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70  LITE_OMIT_* comp
5400: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
5410: 20 61 72 65 20 75 6e 73 75 70 70 6f 72 74 65 64   are unsupported
5420: 2e 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b 71 75 6f  ..</i></blockquo
5430: 74 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20 53 51 4c  te>..<p>.The SQL
5440: 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69  ITE_OMIT_* compi
5450: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20  le-time options 
5460: 61 72 65 20 75 73 75 61 6c 6c 79 20 75 6e 74 65  are usually unte
5470: 73 74 65 64 20 61 6e 64 0a 61 72 65 20 61 6c 6d  sted and.are alm
5480: 6f 73 74 20 63 65 72 74 61 69 6e 6c 79 20 75 6e  ost certainly un
5490: 74 65 73 74 65 64 20 69 6e 20 63 6f 6d 62 69 6e  tested in combin
54a0: 61 74 69 6f 6e 2e 0a 41 6e 79 20 6f 72 20 61 6c  ation..Any or al
54b0: 6c 20 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f  l of these optio
54c0: 6e 73 20 6d 61 79 20 62 65 20 72 65 6d 6f 76 65  ns may be remove
54d0: 64 20 66 72 6f 6d 20 74 68 65 20 63 6f 64 65 20  d from the code 
54e0: 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61 73  in future releas
54f0: 65 73 0a 61 6e 64 20 77 69 74 68 6f 75 74 20 77  es.and without w
5500: 61 72 6e 69 6e 67 2e 20 20 46 6f 72 20 61 6e 79  arning.  For any
5510: 20 70 61 72 74 69 63 75 6c 61 72 20 72 65 6c 65   particular rele
5520: 61 73 65 2c 20 73 6f 6d 65 20 6f 66 20 74 68 65  ase, some of the
5530: 73 65 0a 6f 70 74 69 6f 6e 73 20 6d 61 79 20 63  se.options may c
5540: 61 75 73 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  ause compile-tim
5550: 65 20 6f 72 20 72 75 6e 2d 74 69 6d 65 20 66 61  e or run-time fa
5560: 69 6c 75 72 65 73 2c 20 70 61 72 74 69 63 75 6c  ilures, particul
5570: 61 72 6c 79 0a 77 68 65 6e 20 75 73 65 64 20 69  arly.when used i
5580: 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 77 69  n combination wi
5590: 74 68 20 6f 74 68 65 72 20 6f 70 74 69 6f 6e 73  th other options
55a0: 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d  .</p>..<tcl>.COM
55b0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
55c0: 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41  ITE_OMIT_ALTERTA
55d0: 42 4c 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  BLE} {.  When th
55e0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
55f0: 69 6e 65 64 2c 20 74 68 65 20 0a 20 20 5b 41 4c  ined, the .  [AL
5600: 54 45 52 20 54 41 42 4c 45 5d 20 63 6f 6d 6d 61  TER TABLE] comma
5610: 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64  nd is not includ
5620: 65 64 20 69 6e 20 74 68 65 20 0a 20 20 6c 69 62  ed in the .  lib
5630: 72 61 72 79 2e 20 45 78 65 63 75 74 69 6e 67 20  rary. Executing 
5640: 61 6e 20 5b 41 4c 54 45 52 20 54 41 42 4c 45 5d  an [ALTER TABLE]
5650: 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 65   statement cause
5660: 73 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e  s a parse error.
5670: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
5680: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
5690: 41 4e 41 4c 59 5a 45 7d 20 7b 0a 20 20 57 68 65  ANALYZE} {.  Whe
56a0: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
56b0: 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 41   defined, the [A
56c0: 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20  NALYZE] command 
56d0: 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 0a  is omitted from.
56e0: 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a    the build..}..
56f0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
5700: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 54 54 41  SQLITE_OMIT_ATTA
5710: 43 48 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  CH} {.  When thi
5720: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
5730: 6e 65 64 2c 20 74 68 65 20 5b 41 54 54 41 43 48  ned, the [ATTACH
5740: 5d 20 61 6e 64 20 5b 44 45 54 41 43 48 5d 20 63  ] and [DETACH] c
5750: 6f 6d 6d 61 6e 64 73 20 61 72 65 0a 20 20 6f 6d  ommands are.  om
5760: 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62  itted from the b
5770: 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  uild..}..COMPILE
5780: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
5790: 4f 4d 49 54 5f 41 55 54 48 4f 52 49 5a 41 54 49  OMIT_AUTHORIZATI
57a0: 4f 4e 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67  ON} {.  Defining
57b0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   this option omi
57c0: 74 73 20 74 68 65 20 61 75 74 68 6f 72 69 7a 61  ts the authoriza
57d0: 74 69 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 66 65  tion callback fe
57e0: 61 74 75 72 65 20 66 72 6f 6d 20 74 68 65 0a 20  ature from the. 
57f0: 20 6c 69 62 72 61 72 79 2e 20 54 68 65 20 5b 73   library. The [s
5800: 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f  qlite3_set_autho
5810: 72 69 7a 65 72 28 29 5d 20 41 50 49 20 66 75 6e  rizer()] API fun
5820: 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72 65  ction is not pre
5830: 73 65 6e 74 0a 20 20 69 6e 20 74 68 65 20 6c 69  sent.  in the li
5840: 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  brary..}..COMPIL
5850: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
5860: 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 43 52 45 4d  _OMIT_AUTOINCREM
5870: 45 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ENT} {.  This op
5880: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
5890: 6f 6d 69 74 20 74 68 65 20 0a 20 20 5b 41 55 54  omit the .  [AUT
58a0: 4f 49 4e 43 52 45 4d 45 4e 54 5d 20 66 75 6e 63  OINCREMENT] func
58b0: 74 69 6f 6e 61 6c 69 74 79 2e 20 57 68 65 6e 20  tionality. When 
58c0: 74 68 69 73 20 0a 20 20 69 73 20 6d 61 63 72 6f  this .  is macro
58d0: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 63 6f 6c   is defined, col
58e0: 75 6d 6e 73 20 64 65 63 6c 61 72 65 64 20 61 73  umns declared as
58f0: 20 0a 20 20 22 5b 49 4e 54 45 47 45 52 20 50 52   .  "[INTEGER PR
5900: 49 4d 41 52 59 20 4b 45 59 5d 20 41 55 54 4f 49  IMARY KEY] AUTOI
5910: 4e 43 52 45 4d 45 4e 54 22 0a 20 20 62 65 68 61  NCREMENT".  beha
5920: 76 65 20 69 6e 20 74 68 65 20 73 61 6d 65 20 77  ve in the same w
5930: 61 79 20 61 73 20 63 6f 6c 75 6d 6e 73 20 64 65  ay as columns de
5940: 63 6c 61 72 65 64 20 61 73 20 22 5b 49 4e 54 45  clared as "[INTE
5950: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 5d  GER PRIMARY KEY]
5960: 22 20 77 68 65 6e 20 61 20 0a 20 20 4e 55 4c 4c  " when a .  NULL
5970: 20 69 73 20 69 6e 73 65 72 74 65 64 2e 20 54 68   is inserted. Th
5980: 65 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63  e sqlite_sequenc
5990: 65 20 73 79 73 74 65 6d 20 74 61 62 6c 65 20 69  e system table i
59a0: 73 20 6e 65 69 74 68 65 72 20 63 72 65 61 74 65  s neither create
59b0: 64 2c 20 6e 6f 72 0a 20 20 72 65 73 70 65 63 74  d, nor.  respect
59c0: 65 64 20 69 66 20 69 74 20 61 6c 72 65 61 64 79  ed if it already
59d0: 20 65 78 69 73 74 73 2e 0a 7d 0a 0a 43 4f 4d 50   exists..}..COMP
59e0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
59f0: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 4d 41 54 49  TE_OMIT_AUTOMATI
5a00: 43 5f 49 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69  C_INDEX} {.  Thi
5a10: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
5a20: 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 0a 20 20   to omit the .  
5a30: 5b 61 75 74 6f 6d 61 74 69 63 20 69 6e 64 65 78  [automatic index
5a40: 69 6e 67 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69  ing] functionali
5a50: 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ty..}..COMPILE_O
5a60: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
5a70: 49 54 5f 41 55 54 4f 49 4e 49 54 7d 20 7b 0a 20  IT_AUTOINIT} {. 
5a80: 20 46 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63   For backwards c
5a90: 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74  ompatibility wit
5aa0: 68 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73  h older versions
5ab0: 20 6f 66 20 53 51 4c 69 74 65 20 74 68 61 74 20   of SQLite that 
5ac0: 6c 61 63 6b 0a 20 20 74 68 65 20 5b 73 71 6c 69  lack.  the [sqli
5ad0: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
5ae0: 5d 20 69 6e 74 65 72 66 61 63 65 2c 20 74 68 65  ] interface, the
5af0: 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61   [sqlite3_initia
5b00: 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72 66 61 63  lize()] interfac
5b10: 65 0a 20 20 69 73 20 63 61 6c 6c 65 64 20 61 75  e.  is called au
5b20: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 75 70 6f 6e  tomatically upon
5b30: 20 65 6e 74 72 79 20 74 6f 20 63 65 72 74 61 69   entry to certai
5b40: 6e 20 6b 65 79 20 69 6e 74 65 72 66 61 63 65 73  n key interfaces
5b50: 20 73 75 63 68 20 61 73 0a 20 20 5b 73 71 6c 69   such as.  [sqli
5b60: 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71  te3_open()], [sq
5b70: 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74  lite3_vfs_regist
5b80: 65 72 28 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69  er()], and [sqli
5b90: 74 65 33 5f 6d 70 72 69 6e 74 66 28 29 5d 2e 0a  te3_mprintf()]..
5ba0: 20 20 54 68 65 20 6f 76 65 72 68 65 61 64 20 6f    The overhead o
5bb0: 66 20 69 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c 69  f invoking [sqli
5bc0: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
5bd0: 5d 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  ] automatically 
5be0: 69 6e 20 74 68 69 73 0a 20 20 77 61 79 20 6d 61  in this.  way ma
5bf0: 79 20 62 65 20 6f 6d 69 74 74 65 64 20 62 79 20  y be omitted by 
5c00: 62 75 69 6c 64 69 6e 67 20 53 51 4c 69 74 65 20  building SQLite 
5c10: 77 69 74 68 20 74 68 65 20 53 51 4c 49 54 45 5f  with the SQLITE_
5c20: 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 0a 20 20  OMIT_AUTOINIT.  
5c30: 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C-preprocessor m
5c40: 61 63 72 6f 2e 20 20 57 68 65 6e 20 62 75 69 6c  acro.  When buil
5c50: 74 20 75 73 69 6e 67 20 53 51 4c 49 54 45 5f 4f  t using SQLITE_O
5c60: 4d 49 54 5f 41 55 54 4f 49 4e 49 54 2c 20 53 51  MIT_AUTOINIT, SQ
5c70: 4c 69 74 65 0a 20 20 77 69 6c 6c 20 6e 6f 74 20  Lite.  will not 
5c80: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e  automatically in
5c90: 69 74 69 61 6c 69 7a 65 20 69 74 73 65 6c 66 20  itialize itself 
5ca0: 61 6e 64 20 74 68 65 20 61 70 70 6c 69 63 61 74  and the applicat
5cb0: 69 6f 6e 20 69 73 20 72 65 71 75 69 72 65 64 0a  ion is required.
5cc0: 20 20 74 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c    to invoke [sql
5cd0: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
5ce0: 29 5d 20 64 69 72 65 63 74 6c 79 20 70 72 69 6f  )] directly prio
5cf0: 72 20 74 6f 20 62 65 67 69 6e 6e 69 6e 67 20 75  r to beginning u
5d00: 73 65 20 6f 66 20 74 68 65 0a 20 20 53 51 4c 69  se of the.  SQLi
5d10: 74 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43  te library..}..C
5d20: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
5d30: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 56  QLITE_OMIT_AUTOV
5d40: 41 43 55 55 4d 7d 20 7b 0a 20 20 49 66 20 74 68  ACUUM} {.  If th
5d50: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
5d60: 69 6e 65 64 2c 20 74 68 65 20 6c 69 62 72 61 72  ined, the librar
5d70: 79 20 63 61 6e 6e 6f 74 20 63 72 65 61 74 65 20  y cannot create 
5d80: 6f 72 20 77 72 69 74 65 20 74 6f 20 0a 20 20 64  or write to .  d
5d90: 61 74 61 62 61 73 65 73 20 74 68 61 74 20 73 75  atabases that su
5da0: 70 70 6f 72 74 20 5b 61 75 74 6f 5f 76 61 63 75  pport [auto_vacu
5db0: 75 6d 5d 2e 0a 20 20 45 78 65 63 75 74 69 6e 67  um]..  Executing
5dc0: 20 61 20 5b 50 52 41 47 4d 41 20 61 75 74 6f 5f   a [PRAGMA auto_
5dd0: 76 61 63 75 75 6d 5d 20 73 74 61 74 65 6d 65 6e  vacuum] statemen
5de0: 74 20 69 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f  t is not an erro
5df0: 72 0a 20 20 28 73 69 6e 63 65 20 75 6e 6b 6e 6f  r.  (since unkno
5e00: 77 6e 20 50 52 41 47 4d 41 73 20 61 72 65 20 73  wn PRAGMAs are s
5e10: 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65 64 29  ilently ignored)
5e20: 2c 20 62 75 74 20 64 6f 65 73 20 6e 6f 74 20 72  , but does not r
5e30: 65 74 75 72 6e 20 61 20 76 61 6c 75 65 0a 20 20  eturn a value.  
5e40: 6f 72 20 6d 6f 64 69 66 79 20 74 68 65 20 61 75  or modify the au
5e50: 74 6f 2d 76 61 63 75 75 6d 20 66 6c 61 67 20 69  to-vacuum flag i
5e60: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  n the database f
5e70: 69 6c 65 2e 20 49 66 20 61 20 64 61 74 61 62 61  ile. If a databa
5e80: 73 65 20 74 68 61 74 0a 20 20 73 75 70 70 6f 72  se that.  suppor
5e90: 74 73 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 69  ts auto-vacuum i
5ea0: 73 20 6f 70 65 6e 65 64 20 62 79 20 61 20 6c 69  s opened by a li
5eb0: 62 72 61 72 79 20 63 6f 6d 70 69 6c 65 64 20 77  brary compiled w
5ec0: 69 74 68 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c  ith this option,
5ed0: 20 69 74 0a 20 20 69 73 20 61 75 74 6f 6d 61 74   it.  is automat
5ee0: 69 63 61 6c 6c 79 20 6f 70 65 6e 65 64 20 69 6e  ically opened in
5ef0: 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64 65 2e   read-only mode.
5f00: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
5f10: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
5f20: 42 45 54 57 45 45 4e 5f 4f 50 54 49 4d 49 5a 41  BETWEEN_OPTIMIZA
5f30: 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TION} {.  This o
5f40: 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74  ption disables t
5f50: 68 65 20 75 73 65 20 6f 66 20 69 6e 64 69 63 65  he use of indice
5f60: 73 20 77 69 74 68 20 57 48 45 52 45 20 63 6c 61  s with WHERE cla
5f70: 75 73 65 20 74 65 72 6d 73 0a 20 20 74 68 61 74  use terms.  that
5f80: 20 65 6d 70 6c 6f 79 20 74 68 65 20 42 45 54 57   employ the BETW
5f90: 45 45 4e 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a  EEN operator..}.
5fa0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
5fb0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 4c 4f  {SQLITE_OMIT_BLO
5fc0: 42 5f 4c 49 54 45 52 41 4c 7d 20 7b 0a 20 20 57  B_LITERAL} {.  W
5fd0: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
5fe0: 69 73 20 64 65 66 69 6e 65 64 2c 20 69 74 20 69  is defined, it i
5ff0: 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74  s not possible t
6000: 6f 20 73 70 65 63 69 66 79 20 61 20 62 6c 6f 62  o specify a blob
6010: 20 69 6e 0a 20 20 61 6e 20 53 51 4c 20 73 74 61   in.  an SQL sta
6020: 74 65 6d 65 6e 74 20 75 73 69 6e 67 20 74 68 65  tement using the
6030: 20 58 27 41 42 43 44 27 20 73 79 6e 74 61 78 2e   X'ABCD' syntax.
6040: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6050: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
6060: 42 54 52 45 45 43 4f 55 4e 54 7d 20 7b 0a 20 20  BTREECOUNT} {.  
6070: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
6080: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 61 6e 20   is defined, an 
6090: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61  optimization tha
60a0: 74 20 61 63 63 65 6c 65 72 61 74 65 73 20 63 6f  t accelerates co
60b0: 75 6e 74 69 6e 67 0a 20 20 61 6c 6c 20 65 6e 74  unting.  all ent
60c0: 72 69 65 73 20 69 6e 20 61 20 74 61 62 6c 65 20  ries in a table 
60d0: 28 69 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c  (in other words,
60e0: 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e   an optimization
60f0: 20 74 68 61 74 20 68 65 6c 70 73 0a 20 20 22 53   that helps.  "S
6100: 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46  ELECT count(*) F
6110: 52 4f 4d 20 74 61 62 6c 65 22 20 72 75 6e 20 66  ROM table" run f
6120: 61 73 74 65 72 29 20 69 73 20 6f 6d 69 74 74 65  aster) is omitte
6130: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
6140: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
6150: 54 5f 42 55 49 4c 54 49 4e 5f 54 45 53 54 7d 20  T_BUILTIN_TEST} 
6160: 7b 0a 20 20 41 20 73 74 61 6e 64 61 72 64 20 53  {.  A standard S
6170: 51 4c 69 74 65 20 62 75 69 6c 64 20 69 6e 63 6c  QLite build incl
6180: 75 64 65 73 20 61 20 73 6d 61 6c 6c 20 61 6d 6f  udes a small amo
6190: 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 63 6f 6e  unt of logic con
61a0: 74 72 6f 6c 6c 65 64 0a 20 20 62 79 20 74 68 65  trolled.  by the
61b0: 20 5b 73 71 6c 69 74 65 33 5f 74 65 73 74 5f 63   [sqlite3_test_c
61c0: 6f 6e 74 72 6f 6c 28 29 5d 20 69 6e 74 65 72 66  ontrol()] interf
61d0: 61 63 65 20 74 68 61 74 20 69 73 20 75 73 65 64  ace that is used
61e0: 20 74 6f 20 65 78 65 72 63 69 73 65 0a 20 20 70   to exercise.  p
61f0: 61 72 74 73 20 6f 66 20 74 68 65 20 53 51 4c 69  arts of the SQLi
6200: 74 65 20 63 6f 72 65 20 74 68 61 74 20 61 72 65  te core that are
6210: 20 64 69 66 66 69 63 75 6c 74 20 74 6f 20 63 6f   difficult to co
6220: 6e 74 72 6f 6c 20 61 6e 64 20 6d 65 61 73 75 72  ntrol and measur
6230: 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20 73 74  e using.  the st
6240: 61 6e 64 61 72 64 20 41 50 49 2e 20 20 54 68 69  andard API.  Thi
6250: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74  s option omits t
6260: 68 61 74 20 62 75 69 6c 74 2d 69 6e 20 74 65 73  hat built-in tes
6270: 74 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50  t logic..}..COMP
6280: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
6290: 54 45 5f 4f 4d 49 54 5f 43 41 53 54 7d 20 7b 0a  TE_OMIT_CAST} {.
62a0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
62b0: 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f  uses SQLite to o
62c0: 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  mit support for 
62d0: 74 68 65 20 43 41 53 54 20 6f 70 65 72 61 74 6f  the CAST operato
62e0: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
62f0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
6300: 54 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69  T_CHECK} {.  Thi
6310: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
6320: 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73  SQLite to omit s
6330: 75 70 70 6f 72 74 20 66 6f 72 20 43 48 45 43 4b  upport for CHECK
6340: 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 20 20   constraints..  
6350: 54 68 65 20 70 61 72 73 65 72 20 77 69 6c 6c 20  The parser will 
6360: 73 74 69 6c 6c 20 61 63 63 65 70 74 20 43 48 45  still accept CHE
6370: 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 69  CK constraints i
6380: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  n SQL statements
6390: 2c 0a 20 20 74 68 65 79 20 77 69 6c 6c 20 6a 75  ,.  they will ju
63a0: 73 74 20 6e 6f 74 20 62 65 20 65 6e 66 6f 72 63  st not be enforc
63b0: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
63c0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
63d0: 49 54 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e  IT_COMPILEOPTION
63e0: 5f 44 49 41 47 53 7d 20 7b 0a 20 20 54 68 69 73  _DIAGS} {.  This
63f0: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
6400: 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70  to omit the comp
6410: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
6420: 64 69 61 67 6e 6f 73 74 69 63 73 20 61 76 61 69  diagnostics avai
6430: 6c 61 62 6c 65 0a 20 20 69 6e 20 53 51 4c 69 74  lable.  in SQLit
6440: 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65  e, including the
6450: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c   [sqlite3_compil
6460: 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20  eoption_used()] 
6470: 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  and.  [sqlite3_c
6480: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74  ompileoption_get
6490: 28 29 5d 20 43 2f 43 2b 2b 20 66 75 6e 63 74 69  ()] C/C++ functi
64a0: 6f 6e 73 2c 20 74 68 65 0a 20 20 5b 73 71 6c 69  ons, the.  [sqli
64b0: 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  te_compileoption
64c0: 5f 75 73 65 64 28 29 5d 20 61 6e 64 20 5b 73 71  _used()] and [sq
64d0: 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  lite_compileopti
64e0: 6f 6e 5f 67 65 74 28 29 5d 20 53 51 4c 20 66 75  on_get()] SQL fu
64f0: 6e 63 74 69 6f 6e 73 2c 0a 20 20 61 6e 64 20 74  nctions,.  and t
6500: 68 65 20 5b 63 6f 6d 70 69 6c 65 5f 6f 70 74 69  he [compile_opti
6510: 6f 6e 73 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a  ons pragma]..}..
6520: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
6530: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50  SQLITE_OMIT_COMP
6540: 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LETE} {.  This o
6550: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
6560: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65   [sqlite3_comple
6570: 74 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74  te()] and [sqlit
6580: 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 5d  e3_complete16()]
6590: 0a 20 20 69 6e 74 65 72 66 61 63 65 73 20 74 6f  .  interfaces to
65a0: 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a   be omitted..}..
65b0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
65c0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50  SQLITE_OMIT_COMP
65d0: 4f 55 4e 44 5f 53 45 4c 45 43 54 7d 20 7b 0a 20  OUND_SELECT} {. 
65e0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
65f0: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65  used to omit the
6600: 20 63 6f 6d 70 6f 75 6e 64 20 5b 53 45 4c 45 43   compound [SELEC
6610: 54 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  T] functionality
6620: 2e 20 0a 20 20 5b 53 45 4c 45 43 54 5d 20 73 74  . .  [SELECT] st
6630: 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 75 73  atements that us
6640: 65 20 74 68 65 20 0a 20 20 55 4e 49 4f 4e 2c 20  e the .  UNION, 
6650: 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52  UNION ALL, INTER
6660: 53 45 43 54 20 6f 72 20 45 58 43 45 50 54 20 63  SECT or EXCEPT c
6670: 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 6f  ompound SELECT o
6680: 70 65 72 61 74 6f 72 73 20 77 69 6c 6c 20 0a 20  perators will . 
6690: 20 63 61 75 73 65 20 61 20 70 61 72 73 65 20 65   cause a parse e
66a0: 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rror..}..COMPILE
66b0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
66c0: 4f 4d 49 54 5f 43 4f 4e 46 4c 49 43 54 5f 43 4c  OMIT_CONFLICT_CL
66d0: 41 55 53 45 7d 20 7b 0a 20 20 49 6e 20 74 68 65  AUSE} {.  In the
66e0: 20 66 75 74 75 72 65 2c 20 74 68 69 73 20 6f 70   future, this op
66f0: 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 75 73 65  tion will be use
6700: 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 0a 20  d to omit the . 
6710: 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 63   [ON CONFLICT] c
6720: 6c 61 75 73 65 20 66 72 6f 6d 20 74 68 65 20 6c  lause from the l
6730: 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49  ibrary..}..COMPI
6740: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
6750: 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f  E_OMIT_DATETIME_
6760: 46 55 4e 43 53 7d 20 7b 0a 20 20 49 66 20 74 68  FUNCS} {.  If th
6770: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
6780: 69 6e 65 64 2c 20 53 51 4c 69 74 65 27 73 20 62  ined, SQLite's b
6790: 75 69 6c 74 2d 69 6e 20 64 61 74 65 20 61 6e 64  uilt-in date and
67a0: 20 74 69 6d 65 20 6d 61 6e 69 70 75 6c 61 74 69   time manipulati
67b0: 6f 6e 0a 20 20 66 75 6e 63 74 69 6f 6e 73 20 61  on.  functions a
67c0: 72 65 20 6f 6d 69 74 74 65 64 2e 20 53 70 65 63  re omitted. Spec
67d0: 69 66 69 63 61 6c 6c 79 2c 20 74 68 65 20 53 51  ifically, the SQ
67e0: 4c 20 66 75 6e 63 74 69 6f 6e 73 20 6a 75 6c 69  L functions juli
67f0: 61 6e 64 61 79 28 29 2c 20 64 61 74 65 28 29 2c  anday(), date(),
6800: 0a 20 20 74 69 6d 65 28 29 2c 20 64 61 74 65 74  .  time(), datet
6810: 69 6d 65 28 29 20 61 6e 64 20 73 74 72 66 74 69  ime() and strfti
6820: 6d 65 28 29 20 61 72 65 20 6e 6f 74 20 61 76 61  me() are not ava
6830: 69 6c 61 62 6c 65 2e 20 54 68 65 20 64 65 66 61  ilable. The defa
6840: 75 6c 74 20 63 6f 6c 75 6d 6e 0a 20 20 76 61 6c  ult column.  val
6850: 75 65 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45  ues CURRENT_TIME
6860: 2c 20 43 55 52 52 45 4e 54 5f 44 41 54 45 20 61  , CURRENT_DATE a
6870: 6e 64 20 43 55 52 52 45 4e 54 5f 44 41 54 45 54  nd CURRENT_DATET
6880: 49 4d 45 20 61 72 65 20 73 74 69 6c 6c 20 61 76  IME are still av
6890: 61 69 6c 61 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50  ailable..}..COMP
68a0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
68b0: 54 45 5f 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45  TE_OMIT_DECLTYPE
68c0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
68d0: 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  n causes SQLite 
68e0: 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20  to omit support 
68f0: 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74  for the.  [sqlit
6900: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79  e3_column_declty
6910: 70 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74  pe()] and [sqlit
6920: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79  e3_column_declty
6930: 70 65 31 36 28 29 5d 0a 20 20 69 6e 74 65 72 66  pe16()].  interf
6940: 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  aces..}..COMPILE
6950: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
6960: 4f 4d 49 54 5f 44 45 50 52 45 43 41 54 45 44 7d  OMIT_DEPRECATED}
6970: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
6980: 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
6990: 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66  o omit support f
69a0: 6f 72 20 69 6e 74 65 72 66 61 63 65 73 0a 20 20  or interfaces.  
69b0: 6d 61 72 6b 65 64 20 61 73 20 64 65 70 72 65 63  marked as deprec
69c0: 61 74 65 64 2e 20 20 54 68 69 73 20 69 6e 63 6c  ated.  This incl
69d0: 75 64 65 73 20 0a 20 20 5b 73 71 6c 69 74 65 33  udes .  [sqlite3
69e0: 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74  _aggregate_count
69f0: 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f  ()],.  [sqlite3_
6a00: 65 78 70 69 72 65 64 28 29 5d 2c 0a 20 20 5b 73  expired()],.  [s
6a10: 71 6c 69 74 65 33 5f 74 72 61 6e 73 66 65 72 5f  qlite3_transfer_
6a20: 62 69 6e 64 69 6e 67 73 28 29 5d 2c 0a 20 20 5b  bindings()],.  [
6a30: 73 71 6c 69 74 65 33 5f 67 6c 6f 62 61 6c 5f 72  sqlite3_global_r
6a40: 65 63 6f 76 65 72 28 29 5d 2c 0a 20 20 5b 73 71  ecover()],.  [sq
6a50: 6c 69 74 65 33 5f 74 68 72 65 61 64 5f 63 6c 65  lite3_thread_cle
6a60: 61 6e 75 70 28 29 5d 20 61 6e 64 0a 20 20 5b 73  anup()] and.  [s
6a70: 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 61 6c  qlite3_memory_al
6a80: 61 72 6d 28 29 5d 20 69 6e 74 65 72 66 61 63 65  arm()] interface
6a90: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
6aa0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
6ab0: 54 5f 44 49 53 4b 49 4f 7d 20 7b 0a 20 20 54 68  T_DISKIO} {.  Th
6ac0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
6ad0: 61 6c 6c 20 73 75 70 70 6f 72 74 20 66 6f 72 20  all support for 
6ae0: 77 72 69 74 69 6e 67 20 74 6f 20 74 68 65 20 64  writing to the d
6af0: 69 73 6b 20 61 6e 64 20 66 6f 72 63 65 73 0a 20  isk and forces. 
6b00: 20 64 61 74 61 62 61 73 65 73 20 74 6f 20 65 78   databases to ex
6b10: 69 73 74 20 69 6e 20 6d 65 6d 6f 72 79 20 6f 6e  ist in memory on
6b20: 6c 79 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  ly.  This option
6b30: 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 0a 20   has not been . 
6b40: 20 6d 61 69 6e 74 61 69 6e 65 64 20 61 6e 64 20   maintained and 
6b50: 70 72 6f 62 61 62 6c 79 20 64 6f 65 73 20 6e 6f  probably does no
6b60: 74 20 77 6f 72 6b 20 77 69 74 68 20 6e 65 77 65  t work with newe
6b70: 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  r versions of SQ
6b80: 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  Lite..}..COMPILE
6b90: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
6ba0: 4f 4d 49 54 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a  OMIT_EXPLAIN} {.
6bb0: 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20    Defining this 
6bc0: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
6bd0: 65 20 5b 45 58 50 4c 41 49 4e 5d 20 63 6f 6d 6d  e [EXPLAIN] comm
6be0: 61 6e 64 20 74 6f 20 62 65 20 6f 6d 69 74 74 65  and to be omitte
6bf0: 64 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62  d from the.  lib
6c00: 72 61 72 79 2e 20 41 74 74 65 6d 70 74 69 6e 67  rary. Attempting
6c10: 20 74 6f 20 65 78 65 63 75 74 65 20 61 6e 20 5b   to execute an [
6c20: 45 58 50 4c 41 49 4e 5d 20 73 74 61 74 65 6d 65  EXPLAIN] stateme
6c30: 6e 74 20 77 69 6c 6c 20 63 61 75 73 65 20 61 20  nt will cause a 
6c40: 70 61 72 73 65 0a 20 20 65 72 72 6f 72 2e 0a 7d  parse.  error..}
6c50: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
6c60: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c   {SQLITE_OMIT_FL
6c70: 41 47 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20  AG_PRAGMAS} {.  
6c80: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
6c90: 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 61 20  s support for a 
6ca0: 73 75 62 73 65 74 20 6f 66 20 5b 50 52 41 47 4d  subset of [PRAGM
6cb0: 41 5d 20 63 6f 6d 6d 61 6e 64 73 20 74 68 61 74  A] commands that
6cc0: 0a 20 20 71 75 65 72 79 20 61 6e 64 20 73 65 74  .  query and set
6cd0: 20 62 6f 6f 6c 65 61 6e 20 70 72 6f 70 65 72 74   boolean propert
6ce0: 69 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ies..}..COMPILE_
6cf0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
6d00: 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f 49  MIT_FLOATING_POI
6d10: 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  NT} {.  This opt
6d20: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f  ion is used to o
6d30: 6d 69 74 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69  mit floating-poi
6d40: 6e 74 20 6e 75 6d 62 65 72 20 73 75 70 70 6f 72  nt number suppor
6d50: 74 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74  t from the SQLit
6d60: 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 57 68 65  e.  library. Whe
6d70: 6e 20 73 70 65 63 69 66 69 65 64 2c 20 73 70 65  n specified, spe
6d80: 63 69 66 79 69 6e 67 20 61 20 66 6c 6f 61 74 69  cifying a floati
6d90: 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 20  ng point number 
6da0: 61 73 20 61 20 6c 69 74 65 72 61 6c 20 0a 20 20  as a literal .  
6db0: 28 69 2e 65 2e 20 22 31 2e 30 31 22 29 20 72 65  (i.e. "1.01") re
6dc0: 73 75 6c 74 73 20 69 6e 20 61 20 70 61 72 73 65  sults in a parse
6dd0: 20 65 72 72 6f 72 2e 0a 0a 20 20 3c 70 3e 49 6e   error...  <p>In
6de0: 20 74 68 65 20 66 75 74 75 72 65 2c 20 74 68 69   the future, thi
6df0: 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20 61 6c 73  s option may als
6e00: 6f 20 64 69 73 61 62 6c 65 20 6f 74 68 65 72 20  o disable other 
6e10: 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 0a  floating point .
6e20: 20 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2c    functionality,
6e30: 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 74 68 65   for example the
6e40: 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74   [sqlite3_result
6e50: 5f 64 6f 75 62 6c 65 28 29 5d 2c 20 0a 20 20 5b  _double()], .  [
6e60: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75  sqlite3_bind_dou
6e70: 62 6c 65 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  ble()], [sqlite3
6e80: 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 29 5d  _value_double()]
6e90: 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
6ea0: 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 29 5d  column_double()]
6eb0: 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 2e 0a   API functions..
6ec0: 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c    </p>.}..COMPIL
6ed0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
6ee0: 5f 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f 4b 45  _OMIT_FOREIGN_KE
6ef0: 59 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f  Y} {.  If this o
6f00: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
6f10: 2c 20 74 68 65 6e 20 5b 66 6f 72 65 69 67 6e 20  , then [foreign 
6f20: 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 5d 20  key constraint] 
6f30: 73 79 6e 74 61 78 20 69 73 0a 20 20 6e 6f 74 20  syntax is.  not 
6f40: 72 65 63 6f 67 6e 69 7a 65 64 2e 0a 7d 0a 0a 43  recognized..}..C
6f50: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
6f60: 51 4c 49 54 45 5f 4f 4d 49 54 5f 47 45 54 5f 54  QLITE_OMIT_GET_T
6f70: 41 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  ABLE} {.  This o
6f80: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70  ption causes sup
6f90: 70 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69 74 65  port for [sqlite
6fa0: 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 61  3_get_table()] a
6fb0: 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 66 72  nd.  [sqlite3_fr
6fc0: 65 65 5f 74 61 62 6c 65 28 29 5d 20 74 6f 20 62  ee_table()] to b
6fd0: 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f  e omitted..}..CO
6fe0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
6ff0: 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c  LITE_OMIT_INCRBL
7000: 4f 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  OB} {.  This opt
7010: 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70 6f  ion causes suppo
7020: 72 74 20 66 6f 72 20 5b 73 71 6c 69 74 65 33 5f  rt for [sqlite3_
7030: 62 6c 6f 62 20 7c 20 69 6e 63 72 65 6d 65 6e 74  blob | increment
7040: 61 6c 20 42 4c 4f 42 20 49 2f 4f 5d 0a 20 20 74  al BLOB I/O].  t
7050: 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a  o be omitted..}.
7060: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
7070: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 54  {SQLITE_OMIT_INT
7080: 45 47 52 49 54 59 5f 43 48 45 43 4b 7d 20 7b 0a  EGRITY_CHECK} {.
7090: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
70a0: 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
70b0: 74 68 65 20 5b 69 6e 74 65 67 72 69 74 79 5f 63  the [integrity_c
70c0: 68 65 63 6b 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a  heck pragma]..}.
70d0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
70e0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 49 4b  {SQLITE_OMIT_LIK
70f0: 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20  E_OPTIMIZATION} 
7100: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
7110: 64 69 73 61 62 6c 65 73 20 74 68 65 20 61 62 69  disables the abi
7120: 6c 69 74 79 20 6f 66 20 53 51 4c 69 74 65 20 74  lity of SQLite t
7130: 6f 20 75 73 65 20 69 6e 64 69 63 65 73 20 74 6f  o use indices to
7140: 20 68 65 6c 70 0a 20 20 72 65 73 6f 6c 76 65 20   help.  resolve 
7150: 5b 4c 49 4b 45 5d 20 61 6e 64 20 5b 47 4c 4f 42  [LIKE] and [GLOB
7160: 5d 20 6f 70 65 72 61 74 6f 72 73 20 69 6e 20 61  ] operators in a
7170: 20 57 48 45 52 45 20 63 6c 61 75 73 65 2e 0a 7d   WHERE clause..}
7180: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
7190: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f   {SQLITE_OMIT_LO
71a0: 41 44 5f 45 58 54 45 4e 53 49 4f 4e 7d 20 7b 0a  AD_EXTENSION} {.
71b0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
71c0: 69 74 73 20 74 68 65 20 65 6e 74 69 72 65 20 65  its the entire e
71d0: 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67  xtension loading
71e0: 20 6d 65 63 68 61 6e 69 73 6d 20 66 72 6f 6d 0a   mechanism from.
71f0: 20 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75 64    SQLite, includ
7200: 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61  ing [sqlite3_ena
7210: 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  ble_load_extensi
7220: 6f 6e 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c  on()] and.  [sql
7230: 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73  ite3_load_extens
7240: 69 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ion()] interface
7250: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
7260: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
7270: 54 5f 4c 4f 43 41 4c 54 49 4d 45 7d 20 7b 0a 20  T_LOCALTIME} {. 
7280: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
7290: 74 73 20 74 68 65 20 22 6c 6f 63 61 6c 74 69 6d  ts the "localtim
72a0: 65 22 20 6d 6f 64 69 66 69 65 72 20 66 72 6f 6d  e" modifier from
72b0: 20 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69   the date and ti
72c0: 6d 65 0a 20 20 66 75 6e 63 74 69 6f 6e 73 2e 20  me.  functions. 
72d0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
72e0: 73 6f 6d 65 74 69 6d 65 73 20 75 73 65 66 75 6c  sometimes useful
72f0: 20 77 68 65 6e 20 74 72 79 69 6e 67 20 74 6f 20   when trying to 
7300: 63 6f 6d 70 69 6c 65 0a 20 20 74 68 65 20 64 61  compile.  the da
7310: 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63  te and time func
7320: 74 69 6f 6e 73 20 6f 6e 20 61 20 70 6c 61 74 66  tions on a platf
7330: 6f 72 6d 20 74 68 61 74 20 64 6f 65 73 20 6e 6f  orm that does no
7340: 74 20 73 75 70 70 6f 72 74 20 74 68 65 0a 20 20  t support the.  
7350: 63 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 63 61 6c  concept of local
7360: 20 74 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c   time..}..COMPIL
7370: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7380: 5f 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44 45 7d  _OMIT_LOOKASIDE}
7390: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
73a0: 20 6f 6d 69 74 73 20 74 68 65 20 5b 6c 6f 6f 6b   omits the [look
73b0: 61 73 69 64 65 20 6d 65 6d 6f 72 79 20 61 6c 6c  aside memory all
73c0: 6f 63 61 74 6f 72 5d 2e 0a 7d 0a 0a 43 4f 4d 50  ocator]..}..COMP
73d0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
73e0: 54 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44 42  TE_OMIT_MEMORYDB
73f0: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
7400: 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20  is defined, the 
7410: 6c 69 62 72 61 72 79 20 64 6f 65 73 20 6e 6f 74  library does not
7420: 20 72 65 73 70 65 63 74 20 74 68 65 20 73 70 65   respect the spe
7430: 63 69 61 6c 20 64 61 74 61 62 61 73 65 0a 20 20  cial database.  
7440: 6e 61 6d 65 20 22 3a 6d 65 6d 6f 72 79 3a 22 20  name ":memory:" 
7450: 28 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64 20 74  (normally used t
7460: 6f 20 63 72 65 61 74 65 20 61 6e 20 5b 69 6e 2d  o create an [in-
7470: 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 5d  memory database]
7480: 29 2e 20 49 66 20 0a 20 20 22 3a 6d 65 6d 6f 72  ). If .  ":memor
7490: 79 3a 22 20 69 73 20 70 61 73 73 65 64 20 74 6f  y:" is passed to
74a0: 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29   [sqlite3_open()
74b0: 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ], [sqlite3_open
74c0: 31 36 28 29 5d 2c 20 6f 72 0a 20 20 5b 73 71 6c  16()], or.  [sql
74d0: 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c  ite3_open_v2()],
74e0: 20 61 20 66 69 6c 65 20 77 69 74 68 20 74 68 69   a file with thi
74f0: 73 20 6e 61 6d 65 20 77 69 6c 6c 20 62 65 20 0a  s name will be .
7500: 20 20 6f 70 65 6e 65 64 20 6f 72 20 63 72 65 61    opened or crea
7510: 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ted..}..COMPILE_
7520: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
7530: 4d 49 54 5f 4f 52 5f 4f 50 54 49 4d 49 5a 41 54  MIT_OR_OPTIMIZAT
7540: 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ION} {.  This op
7550: 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68  tion disables th
7560: 65 20 61 62 69 6c 69 74 79 20 6f 66 20 53 51 4c  e ability of SQL
7570: 69 74 65 20 74 6f 20 75 73 65 20 61 6e 20 69 6e  ite to use an in
7580: 64 65 78 20 74 6f 67 65 74 68 65 72 0a 20 20 77  dex together.  w
7590: 69 74 68 20 74 65 72 6d 73 20 6f 66 20 61 20 57  ith terms of a W
75a0: 48 45 52 45 20 63 6c 61 75 73 65 20 63 6f 6e 6e  HERE clause conn
75b0: 65 63 74 65 64 20 62 79 20 74 68 65 20 4f 52 20  ected by the OR 
75c0: 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d  operator..}..COM
75d0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
75e0: 49 54 45 5f 4f 4d 49 54 5f 50 41 47 45 52 5f 50  ITE_OMIT_PAGER_P
75f0: 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69  RAGMAS} {.  Defi
7600: 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e  ning this option
7610: 20 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20 72   omits pragmas r
7620: 65 6c 61 74 65 64 20 74 6f 20 74 68 65 20 70 61  elated to the pa
7630: 67 65 72 20 73 75 62 73 79 73 74 65 6d 20 66 72  ger subsystem fr
7640: 6f 6d 20 0a 20 20 74 68 65 20 62 75 69 6c 64 2e  om .  the build.
7650: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
7660: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
7670: 50 52 41 47 4d 41 7d 20 7b 0a 20 20 54 68 69 73  PRAGMA} {.  This
7680: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
7690: 74 6f 20 6f 6d 69 74 20 74 68 65 20 5b 50 52 41  to omit the [PRA
76a0: 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 0a 20 20 66  GMA] command.  f
76b0: 72 6f 6d 20 74 68 65 20 6c 69 62 72 61 72 79 2e  rom the library.
76c0: 20 4e 6f 74 65 20 74 68 61 74 20 69 74 20 69 73   Note that it is
76d0: 20 75 73 65 66 75 6c 20 74 6f 20 64 65 66 69 6e   useful to defin
76e0: 65 20 74 68 65 20 6d 61 63 72 6f 73 20 74 68 61  e the macros tha
76f0: 74 20 6f 6d 69 74 0a 20 20 73 70 65 63 69 66 69  t omit.  specifi
7700: 63 20 70 72 61 67 6d 61 73 20 69 6e 20 61 64 64  c pragmas in add
7710: 69 74 69 6f 6e 20 74 6f 20 74 68 69 73 2c 20 61  ition to this, a
7720: 73 20 74 68 65 79 20 6d 61 79 20 61 6c 73 6f 20  s they may also 
7730: 72 65 6d 6f 76 65 20 73 75 70 70 6f 72 74 69 6e  remove supportin
7740: 67 20 63 6f 64 65 0a 20 20 69 6e 20 6f 74 68 65  g code.  in othe
7750: 72 20 73 75 62 2d 73 79 73 74 65 6d 73 2e 20 54  r sub-systems. T
7760: 68 69 73 20 6d 61 63 72 6f 20 72 65 6d 6f 76 65  his macro remove
7770: 73 20 74 68 65 20 5b 50 52 41 47 4d 41 5d 20 63  s the [PRAGMA] c
7780: 6f 6d 6d 61 6e 64 20 6f 6e 6c 79 2e 0a 7d 0a 0a  ommand only..}..
7790: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
77a0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 4f 47  SQLITE_OMIT_PROG
77b0: 52 45 53 53 5f 43 41 4c 4c 42 41 43 4b 7d 20 7b  RESS_CALLBACK} {
77c0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d  .  This option m
77d0: 61 79 20 62 65 20 64 65 66 69 6e 65 64 20 74 6f  ay be defined to
77e0: 20 6f 6d 69 74 20 74 68 65 20 63 61 70 61 62 69   omit the capabi
77f0: 6c 69 74 79 20 74 6f 20 69 73 73 75 65 20 22 70  lity to issue "p
7800: 72 6f 67 72 65 73 73 22 20 0a 20 20 63 61 6c 6c  rogress" .  call
7810: 62 61 63 6b 73 20 64 75 72 69 6e 67 20 6c 6f 6e  backs during lon
7820: 67 2d 72 75 6e 6e 69 6e 67 20 53 51 4c 20 73 74  g-running SQL st
7830: 61 74 65 6d 65 6e 74 73 2e 20 54 68 65 20 0a 20  atements. The . 
7840: 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65   [sqlite3_progre
7850: 73 73 5f 68 61 6e 64 6c 65 72 28 29 5d 0a 20 20  ss_handler()].  
7860: 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  API function is 
7870: 6e 6f 74 20 70 72 65 73 65 6e 74 20 69 6e 20 74  not present in t
7880: 68 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43  he library..}..C
7890: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
78a0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 51 55 49 43 4b  QLITE_OMIT_QUICK
78b0: 42 41 4c 41 4e 43 45 7d 20 7b 0a 20 20 54 68 69  BALANCE} {.  Thi
78c0: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61  s option omits a
78d0: 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 2c 20 66  n alternative, f
78e0: 61 73 74 65 72 20 42 2d 54 72 65 65 20 62 61 6c  aster B-Tree bal
78f0: 61 6e 63 69 6e 67 20 72 6f 75 74 69 6e 65 2e 0a  ancing routine..
7900: 20 20 55 73 69 6e 67 20 74 68 69 73 20 6f 70 74    Using this opt
7910: 69 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65  ion makes SQLite
7920: 20 73 6c 69 67 68 74 6c 79 20 73 6d 61 6c 6c 65   slightly smalle
7930: 72 20 61 74 20 74 68 65 20 65 78 70 65 6e 73 65  r at the expense
7940: 20 6f 66 0a 20 20 6d 61 6b 69 6e 67 20 69 74 20   of.  making it 
7950: 72 75 6e 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f  run slightly slo
7960: 77 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  wer..}..COMPILE_
7970: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
7980: 4d 49 54 5f 52 45 49 4e 44 45 58 7d 20 7b 0a 20  MIT_REINDEX} {. 
7990: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
79a0: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  n is defined, th
79b0: 65 20 5b 52 45 49 4e 44 45 58 5d 0a 20 20 63 6f  e [REINDEX].  co
79c0: 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63  mmand is not inc
79d0: 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6c 69 62  luded in the lib
79e0: 72 61 72 79 2e 0a 20 20 45 78 65 63 75 74 69 6e  rary..  Executin
79f0: 67 20 61 20 5b 52 45 49 4e 44 45 58 5d 20 73 74  g a [REINDEX] st
7a00: 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20 0a  atement causes .
7a10: 20 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e    a parse error.
7a20: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
7a30: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
7a40: 53 43 48 45 4d 41 5f 50 52 41 47 4d 41 53 7d 20  SCHEMA_PRAGMAS} 
7a50: 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69  {.  Defining thi
7a60: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70  s option omits p
7a70: 72 61 67 6d 61 73 20 66 6f 72 20 71 75 65 72 79  ragmas for query
7a80: 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65  ing the database
7a90: 20 73 63 68 65 6d 61 20 66 72 6f 6d 20 0a 20 20   schema from .  
7aa0: 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f  the build..}..CO
7ab0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
7ac0: 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41  LITE_OMIT_SCHEMA
7ad0: 5f 56 45 52 53 49 4f 4e 5f 50 52 41 47 4d 41 53  _VERSION_PRAGMAS
7ae0: 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74  } {.  Defining t
7af0: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
7b00: 20 70 72 61 67 6d 61 73 20 66 6f 72 20 71 75 65   pragmas for que
7b10: 72 79 69 6e 67 20 61 6e 64 20 6d 6f 64 69 66 79  rying and modify
7b20: 69 6e 67 20 74 68 65 20 0a 20 20 64 61 74 61 62  ing the .  datab
7b30: 61 73 65 20 73 63 68 65 6d 61 20 76 65 72 73 69  ase schema versi
7b40: 6f 6e 20 61 6e 64 20 75 73 65 72 20 76 65 72 73  on and user vers
7b50: 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 62 75 69  ion from the bui
7b60: 6c 64 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79  ld. Specifically
7b70: 2c 20 74 68 65 20 0a 20 20 5b 73 63 68 65 6d 61  , the .  [schema
7b80: 5f 76 65 72 73 69 6f 6e 5d 20 61 6e 64 20 5b 75  _version] and [u
7b90: 73 65 72 5f 76 65 72 73 69 6f 6e 5d 20 50 52 41  ser_version] PRA
7ba0: 47 4d 41 73 20 61 72 65 20 6f 6d 69 74 74 65 64  GMAs are omitted
7bb0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
7bc0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
7bd0: 5f 53 48 41 52 45 44 5f 43 41 43 48 45 7d 20 7b  _SHARED_CACHE} {
7be0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 62  .  This option b
7bf0: 75 69 6c 64 73 20 53 51 4c 69 74 65 20 77 69 74  uilds SQLite wit
7c00: 68 6f 75 74 20 73 75 70 70 6f 72 74 20 66 6f 72  hout support for
7c10: 20 73 68 61 72 65 64 2d 63 61 63 68 65 20 6d 6f   shared-cache mo
7c20: 64 65 2e 0a 20 20 54 68 65 20 5b 73 71 6c 69 74  de..  The [sqlit
7c30: 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64  e3_enable_shared
7c40: 5f 63 61 63 68 65 28 29 5d 20 69 73 20 6f 6d 69  _cache()] is omi
7c50: 74 74 65 64 20 61 6c 6f 6e 67 20 77 69 74 68 20  tted along with 
7c60: 61 20 66 61 69 72 0a 20 20 61 6d 6f 75 6e 74 20  a fair.  amount 
7c70: 6f 66 20 6c 6f 67 69 63 20 77 69 74 68 69 6e 20  of logic within 
7c80: 74 68 65 20 42 2d 54 72 65 65 20 73 75 62 73 79  the B-Tree subsy
7c90: 73 74 65 6d 20 61 73 73 6f 63 69 61 74 65 64 20  stem associated 
7ca0: 77 69 74 68 20 73 68 61 72 65 64 0a 20 20 63 61  with shared.  ca
7cb0: 63 68 65 20 6d 61 6e 61 67 65 6d 65 6e 74 2e 0a  che management..
7cc0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
7cd0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  N {SQLITE_OMIT_S
7ce0: 55 42 51 55 45 52 59 7d 20 7b 0a 20 20 49 66 20  UBQUERY} {.  If 
7cf0: 64 65 66 69 6e 65 64 2c 20 73 75 70 70 6f 72 74  defined, support
7d00: 20 66 6f 72 20 73 75 62 2d 73 65 6c 65 63 74 73   for sub-selects
7d10: 20 61 6e 64 20 74 68 65 20 49 4e 28 29 20 6f 70   and the IN() op
7d20: 65 72 61 74 6f 72 20 61 72 65 20 6f 6d 69 74 74  erator are omitt
7d30: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
7d40: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
7d50: 49 54 5f 54 43 4c 5f 56 41 52 49 41 42 4c 45 7d  IT_TCL_VARIABLE}
7d60: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6d 61 63   {.  If this mac
7d70: 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  ro is defined, t
7d80: 68 65 6e 20 74 68 65 20 73 70 65 63 69 61 6c 20  hen the special 
7d90: 22 24 3c 76 61 72 69 61 62 6c 65 2d 6e 61 6d 65  "$<variable-name
7da0: 3e 22 20 73 79 6e 74 61 78 0a 20 20 75 73 65 64  >" syntax.  used
7db0: 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   to automaticall
7dc0: 79 20 62 69 6e 64 20 53 51 4c 20 76 61 72 69 61  y bind SQL varia
7dd0: 62 6c 65 73 20 74 6f 20 54 43 4c 20 76 61 72 69  bles to TCL vari
7de0: 61 62 6c 65 73 20 69 73 20 6f 6d 69 74 74 65 64  ables is omitted
7df0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
7e00: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
7e10: 5f 54 45 4d 50 44 42 7d 20 7b 0a 20 20 54 68 69  _TEMPDB} {.  Thi
7e20: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73  s option omits s
7e30: 75 70 70 6f 72 74 20 66 6f 72 20 54 45 4d 50 20  upport for TEMP 
7e40: 6f 72 20 54 45 4d 50 4f 52 41 52 59 20 74 61 62  or TEMPORARY tab
7e50: 6c 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  les..}..COMPILE_
7e60: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
7e70: 4d 49 54 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54  MIT_TRACE} {.  T
7e80: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
7e90: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
7ea0: 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c   [sqlite3_profil
7eb0: 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69  e()] and.  [sqli
7ec0: 74 65 33 5f 74 72 61 63 65 28 29 5d 20 69 6e 74  te3_trace()] int
7ed0: 65 72 66 61 63 65 73 20 61 6e 64 20 74 68 65 69  erfaces and thei
7ee0: 72 20 61 73 73 6f 63 69 61 74 65 64 20 6c 6f 67  r associated log
7ef0: 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ic..}..COMPILE_O
7f00: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
7f10: 49 54 5f 54 52 49 47 47 45 52 7d 20 7b 0a 20 20  IT_TRIGGER} {.  
7f20: 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70  Defining this op
7f30: 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
7f40: 72 74 20 66 6f 72 20 54 52 49 47 47 45 52 20 6f  rt for TRIGGER o
7f50: 62 6a 65 63 74 73 2e 20 4e 65 69 74 68 65 72 20  bjects. Neither 
7f60: 74 68 65 20 0a 20 20 5b 43 52 45 41 54 45 20 54  the .  [CREATE T
7f70: 52 49 47 47 45 52 5d 20 6f 72 20 5b 44 52 4f 50  RIGGER] or [DROP
7f80: 20 54 52 49 47 47 45 52 5d 0a 20 20 63 6f 6d 6d   TRIGGER].  comm
7f90: 61 6e 64 73 20 61 72 65 20 61 76 61 69 6c 61 62  ands are availab
7fa0: 6c 65 20 69 6e 20 74 68 69 73 20 63 61 73 65 2c  le in this case,
7fb0: 20 61 6e 64 20 61 74 74 65 6d 70 74 69 6e 67 20   and attempting 
7fc0: 74 6f 20 65 78 65 63 75 74 65 0a 20 20 65 69 74  to execute.  eit
7fd0: 68 65 72 20 77 69 6c 6c 20 72 65 73 75 6c 74 20  her will result 
7fe0: 69 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f 72  in a parse error
7ff0: 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  ..  This option 
8000: 61 6c 73 6f 20 64 69 73 61 62 6c 65 73 20 65 6e  also disables en
8010: 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20 5b 66 6f  forcement of [fo
8020: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
8030: 61 69 6e 74 73 5d 2c 0a 20 20 73 69 6e 63 65 20  aints],.  since 
8040: 74 68 65 20 63 6f 64 65 20 74 68 61 74 20 69 6d  the code that im
8050: 70 6c 65 6d 65 6e 74 73 20 74 72 69 67 67 65 72  plements trigger
8060: 73 20 61 6e 64 20 77 68 69 63 68 20 69 73 20 6f  s and which is o
8070: 6d 69 74 74 65 64 20 62 79 20 74 68 69 73 0a 20  mitted by this. 
8080: 20 6f 70 74 69 6f 6e 20 69 73 20 61 6c 73 6f 20   option is also 
8090: 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e  used to implemen
80a0: 74 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 61  t [foreign key a
80b0: 63 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d 50  ctions]..}..COMP
80c0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
80d0: 54 45 5f 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45  TE_OMIT_TRUNCATE
80e0: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b  _OPTIMIZATION} {
80f0: 0a 20 20 41 20 64 65 66 61 75 6c 74 20 62 75 69  .  A default bui
8100: 6c 64 20 6f 66 20 53 51 4c 69 74 65 2c 20 69 66  ld of SQLite, if
8110: 20 61 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74   a [DELETE] stat
8120: 65 6d 65 6e 74 20 68 61 73 20 6e 6f 20 57 48 45  ement has no WHE
8130: 52 45 20 63 6c 61 75 73 65 0a 20 20 61 6e 64 20  RE clause.  and 
8140: 6f 70 65 72 61 74 65 73 20 6f 6e 20 61 20 74 61  operates on a ta
8150: 62 6c 65 20 77 69 74 68 20 6e 6f 20 74 72 69 67  ble with no trig
8160: 67 65 72 73 2c 20 61 6e 20 6f 70 74 69 6d 69 7a  gers, an optimiz
8170: 61 74 69 6f 6e 20 6f 63 63 75 72 73 20 74 68 61  ation occurs tha
8180: 74 0a 20 20 63 61 75 73 65 73 20 74 68 65 20 44  t.  causes the D
8190: 45 4c 45 54 45 20 74 6f 20 6f 63 63 75 72 20 62  ELETE to occur b
81a0: 79 20 64 72 6f 70 70 69 6e 67 20 61 6e 64 20 72  y dropping and r
81b0: 65 63 72 65 61 74 69 6e 67 20 74 68 65 20 74 61  ecreating the ta
81c0: 62 6c 65 2e 20 20 0a 20 20 44 72 6f 70 70 69 6e  ble.  .  Droppin
81d0: 67 20 61 6e 64 20 72 65 63 72 65 61 74 69 6e 67  g and recreating
81e0: 20 61 20 74 61 62 6c 65 20 69 73 20 75 73 75 61   a table is usua
81f0: 6c 6c 79 20 6d 75 63 68 20 66 61 73 74 65 72 20  lly much faster 
8200: 74 68 61 6e 20 64 65 6c 65 74 69 6e 67 0a 20 20  than deleting.  
8210: 74 68 65 20 74 61 62 6c 65 20 63 6f 6e 74 65 6e  the table conten
8220: 74 20 72 6f 77 20 62 79 20 72 6f 77 2e 20 20 54  t row by row.  T
8230: 68 69 73 20 69 73 20 74 68 65 20 22 74 72 75 6e  his is the "trun
8240: 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f  cate optimizatio
8250: 6e 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  n"..}..COMPILE_O
8260: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
8270: 49 54 5f 55 54 46 31 36 7d 20 7b 0a 20 20 54 68  IT_UTF16} {.  Th
8280: 69 73 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64  is macro is used
8290: 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74   to omit support
82a0: 20 66 6f 72 20 55 54 46 31 36 20 74 65 78 74 20   for UTF16 text 
82b0: 65 6e 63 6f 64 69 6e 67 2e 20 57 68 65 6e 20 74  encoding. When t
82c0: 68 69 73 20 69 73 0a 20 20 64 65 66 69 6e 65 64  his is.  defined
82d0: 20 61 6c 6c 20 41 50 49 20 66 75 6e 63 74 69 6f   all API functio
82e0: 6e 73 20 74 68 61 74 20 72 65 74 75 72 6e 20 6f  ns that return o
82f0: 72 20 61 63 63 65 70 74 20 55 54 46 31 36 20 65  r accept UTF16 e
8300: 6e 63 6f 64 65 64 20 74 65 78 74 20 61 72 65 0a  ncoded text are.
8310: 20 20 75 6e 61 76 61 69 6c 61 62 6c 65 2e 20 54    unavailable. T
8320: 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 63  hese functions c
8330: 61 6e 20 62 65 20 69 64 65 6e 74 69 66 69 65 64  an be identified
8340: 20 62 79 20 74 68 65 20 66 61 63 74 20 74 68 61   by the fact tha
8350: 74 20 74 68 65 79 20 65 6e 64 0a 20 20 77 69 74  t they end.  wit
8360: 68 20 27 31 36 27 2c 20 66 6f 72 20 65 78 61 6d  h '16', for exam
8370: 70 6c 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  ple [sqlite3_pre
8380: 70 61 72 65 31 36 28 29 5d 2c 20 5b 73 71 6c 69  pare16()], [sqli
8390: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31  te3_column_text1
83a0: 36 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69  6()] and.  [sqli
83b0: 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28  te3_bind_text16(
83c0: 29 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  )]..}..COMPILE_O
83d0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
83e0: 49 54 5f 56 41 43 55 55 4d 7d 20 7b 0a 20 20 57  IT_VACUUM} {.  W
83f0: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
8400: 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20  is defined, the 
8410: 5b 56 41 43 55 55 4d 5d 0a 20 20 63 6f 6d 6d 61  [VACUUM].  comma
8420: 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64  nd is not includ
8430: 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72  ed in the librar
8440: 79 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61  y..  Executing a
8450: 20 5b 56 41 43 55 55 4d 5d 20 73 74 61 74 65 6d   [VACUUM] statem
8460: 65 6e 74 20 63 61 75 73 65 73 20 0a 20 20 61 20  ent causes .  a 
8470: 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a  parse error..}..
8480: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
8490: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 45 57  SQLITE_OMIT_VIEW
84a0: 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74  } {.  Defining t
84b0: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
84c0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 56 49 45   support for VIE
84d0: 57 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74 68  W objects. Neith
84e0: 65 72 20 74 68 65 20 0a 20 20 5b 43 52 45 41 54  er the .  [CREAT
84f0: 45 20 56 49 45 57 5d 20 6e 6f 72 20 74 68 65 20  E VIEW] nor the 
8500: 5b 44 52 4f 50 20 56 49 45 57 5d 0a 20 20 63 6f  [DROP VIEW].  co
8510: 6d 6d 61 6e 64 73 20 61 72 65 20 61 76 61 69 6c  mmands are avail
8520: 61 62 6c 65 20 69 6e 20 74 68 69 73 20 63 61 73  able in this cas
8530: 65 2c 20 61 6e 64 0a 20 20 61 74 74 65 6d 70 74  e, and.  attempt
8540: 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65 20 65  ing to execute e
8550: 69 74 68 65 72 20 77 69 6c 6c 20 72 65 73 75 6c  ither will resul
8560: 74 20 69 6e 20 61 20 70 61 72 73 65 20 65 72 72  t in a parse err
8570: 6f 72 2e 0a 0a 20 20 57 41 52 4e 49 4e 47 3a 20  or...  WARNING: 
8580: 49 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73  If this macro is
8590: 20 64 65 66 69 6e 65 64 2c 20 69 74 20 77 69 6c   defined, it wil
85a0: 6c 20 6e 6f 74 20 62 65 20 70 6f 73 73 69 62 6c  l not be possibl
85b0: 65 20 74 6f 20 6f 70 65 6e 20 61 20 64 61 74 61  e to open a data
85c0: 62 61 73 65 0a 20 20 66 6f 72 20 77 68 69 63 68  base.  for which
85d0: 20 74 68 65 20 73 63 68 65 6d 61 20 63 6f 6e 74   the schema cont
85e0: 61 69 6e 73 20 56 49 45 57 20 6f 62 6a 65 63 74  ains VIEW object
85f0: 73 2e 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  s. .}..COMPILE_O
8600: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
8610: 49 54 5f 56 49 52 54 55 41 4c 54 41 42 4c 45 7d  IT_VIRTUALTABLE}
8620: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
8630: 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66   omits support f
8640: 6f 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  or the [sqlite3_
8650: 76 74 61 62 20 7c 20 56 69 72 74 75 61 6c 20 54  vtab | Virtual T
8660: 61 62 6c 65 5d 0a 20 20 6d 65 63 68 61 6e 69 73  able].  mechanis
8670: 6d 20 69 6e 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a  m in SQLite..}..
8680: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
8690: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 41 4c 7d  SQLITE_OMIT_WAL}
86a0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
86b0: 20 6f 6d 69 74 73 20 74 68 65 20 22 5b 77 72 69   omits the "[wri
86c0: 74 65 2d 61 68 65 61 64 20 6c 6f 67 5d 22 20 28  te-ahead log]" (
86d0: 61 2e 6b 2e 61 2e 20 22 5b 57 41 4c 5d 22 29 20  a.k.a. "[WAL]") 
86e0: 63 61 70 61 62 69 6c 69 74 79 2e 0a 7d 0a 0a 43  capability..}..C
86f0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8700: 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 53 44 7d 20  QLITE_OMIT_WSD} 
8710: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 73  {.  This options
8720: 20 62 75 69 6c 64 73 20 61 20 76 65 72 73 69 6f   builds a versio
8730: 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20  n of the SQLite 
8740: 6c 69 62 72 61 72 79 20 74 68 61 74 20 63 6f 6e  library that con
8750: 74 61 69 6e 73 20 6e 6f 0a 20 20 57 72 69 74 61  tains no.  Writa
8760: 62 6c 65 20 53 74 61 74 69 63 20 44 61 74 61 20  ble Static Data 
8770: 28 57 53 44 29 2e 20 20 57 53 44 20 69 73 20 67  (WSD).  WSD is g
8780: 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 73 20  lobal variables 
8790: 61 6e 64 2f 6f 72 20 73 74 61 74 69 63 0a 20 20  and/or static.  
87a0: 76 61 72 69 61 62 6c 65 73 2e 20 20 53 6f 6d 65  variables.  Some
87b0: 20 70 6c 61 74 66 6f 72 6d 73 20 64 6f 20 6e 6f   platforms do no
87c0: 74 20 73 75 70 70 6f 72 74 20 57 53 44 2c 20 61  t support WSD, a
87d0: 6e 64 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  nd this option i
87e0: 73 20 6e 65 63 65 73 73 61 72 79 0a 20 20 69 6e  s necessary.  in
87f0: 20 6f 72 64 65 72 20 66 6f 72 20 53 51 4c 69 74   order for SQLit
8800: 65 20 74 6f 20 77 6f 72 6b 20 74 68 6f 73 65 20  e to work those 
8810: 70 6c 61 74 66 6f 72 6d 73 2e 20 20 0a 0a 20 20  platforms.  ..  
8820: 55 6e 6c 69 6b 65 20 6f 74 68 65 72 20 4f 4d 49  Unlike other OMI
8830: 54 20 6f 70 74 69 6f 6e 73 20 77 68 69 63 68 20  T options which 
8840: 6d 61 6b 65 20 74 68 65 20 53 51 4c 69 74 65 20  make the SQLite 
8850: 6c 69 62 72 61 72 79 20 73 6d 61 6c 6c 65 72 2c  library smaller,
8860: 0a 20 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61  .  this option a
8870: 63 74 75 61 6c 6c 79 20 69 6e 63 72 65 61 73 65  ctually increase
8880: 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20 53 51  s the size of SQ
8890: 4c 69 74 65 20 61 6e 64 20 6d 61 6b 65 73 20 69  Lite and makes i
88a0: 74 20 72 75 6e 0a 20 20 61 20 6c 69 74 74 6c 65  t run.  a little
88b0: 20 73 6c 6f 77 65 72 2e 20 20 4f 6e 6c 79 20 75   slower.  Only u
88c0: 73 65 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  se this option i
88d0: 66 20 53 51 4c 69 74 65 20 69 73 20 62 65 69 6e  f SQLite is bein
88e0: 67 20 62 75 69 6c 74 20 66 6f 72 20 61 6e 0a 20  g built for an. 
88f0: 20 65 6d 62 65 64 64 65 64 20 74 61 72 67 65 74   embedded target
8900: 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73   that does not s
8910: 75 70 70 6f 72 74 20 57 53 44 2e 0a 7d 0a 0a 43  upport WSD..}..C
8920: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8930: 51 4c 49 54 45 5f 4f 4d 49 54 5f 58 46 45 52 5f  QLITE_OMIT_XFER_
8940: 4f 50 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  OPT} {.  This op
8950: 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
8960: 72 74 20 66 6f 72 20 6f 70 74 69 6d 69 7a 61 74  rt for optimizat
8970: 69 6f 6e 73 20 74 68 61 74 20 68 65 6c 70 20 73  ions that help s
8980: 74 61 74 65 6d 65 6e 74 73 0a 20 20 6f 66 20 74  tatements.  of t
8990: 68 65 20 66 6f 72 6d 20 22 49 4e 53 45 52 54 20  he form "INSERT 
89a0: 49 4e 54 4f 20 2e 2e 2e 20 53 45 4c 45 43 54 20  INTO ... SELECT 
89b0: 2e 2e 2e 22 20 72 75 6e 20 66 61 73 74 65 72 2e  ..." run faster.
89c0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
89d0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 5a 45 52 4f 5f  ON {SQLITE_ZERO_
89e0: 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54 68 69 73  MALLOC} {.  This
89f0: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 62 6f   option omits bo
8a00: 74 68 20 74 68 65 20 5b 64 65 66 61 75 6c 74 20  th the [default 
8a10: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
8a20: 5d 20 61 6e 64 20 74 68 65 0a 20 20 5b 64 65 62  ] and the.  [deb
8a30: 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c  ugging memory al
8a40: 6c 6f 63 61 74 6f 72 5d 20 66 72 6f 6d 20 74 68  locator] from th
8a50: 65 20 62 75 69 6c 64 20 61 6e 64 20 73 75 62 73  e build and subs
8a60: 74 69 74 75 74 65 73 20 61 20 73 74 75 62 0a 20  titutes a stub. 
8a70: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
8a80: 72 20 74 68 61 74 20 61 6c 77 61 79 73 20 66 61  r that always fa
8a90: 69 6c 73 2e 20 20 53 51 4c 69 74 65 20 77 69 6c  ils.  SQLite wil
8aa0: 6c 20 6e 6f 74 20 72 75 6e 20 77 69 74 68 20 74  l not run with t
8ab0: 68 69 73 0a 20 20 73 74 75 62 20 6d 65 6d 6f 72  his.  stub memor
8ac0: 79 20 61 6c 6c 6f 63 61 74 6f 72 20 73 69 6e 63  y allocator sinc
8ad0: 65 20 69 74 20 77 69 6c 6c 20 62 65 20 75 6e 61  e it will be una
8ae0: 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20  ble to allocate 
8af0: 6d 65 6d 6f 72 79 2e 20 20 42 75 74 0a 20 20 74  memory.  But.  t
8b00: 68 69 73 20 73 74 75 62 20 63 61 6e 20 62 65 20  his stub can be 
8b10: 72 65 70 6c 61 63 65 64 20 61 74 20 73 74 61 72  replaced at star
8b20: 74 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20 20 5b  t-time using.  [
8b30: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28  sqlite3_config](
8b40: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  [SQLITE_CONFIG_M
8b50: 41 4c 4c 4f 43 5d 2c 2e 2e 2e 29 20 6f 72 0a 20  ALLOC],...) or. 
8b60: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
8b70: 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ]([SQLITE_CONFIG
8b80: 5f 48 45 41 50 5d 2c 2e 2e 2e 29 2e 0a 20 20 53  _HEAP],...)..  S
8b90: 6f 20 74 68 65 20 6e 65 74 20 65 66 66 65 63 74  o the net effect
8ba0: 20 6f 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65   of this compile
8bb0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20  -time option is 
8bc0: 74 68 61 74 20 69 74 20 61 6c 6c 6f 77 73 20 53  that it allows S
8bd0: 51 4c 69 74 65 0a 20 20 74 6f 20 62 65 20 63 6f  QLite.  to be co
8be0: 6d 70 69 6c 65 64 20 61 6e 64 20 6c 69 6e 6b 65  mpiled and linke
8bf0: 64 20 61 67 61 69 6e 73 74 20 61 20 73 79 73 74  d against a syst
8c00: 65 6d 20 6c 69 62 72 61 72 79 20 74 68 61 74 20  em library that 
8c10: 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74  does not support
8c20: 0a 20 20 6d 61 6c 6c 6f 63 28 29 2c 20 66 72 65  .  malloc(), fre
8c30: 65 28 29 2c 20 61 6e 64 2f 6f 72 20 72 65 61 6c  e(), and/or real
8c40: 6c 6f 63 28 29 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e  loc()..}..</tcl>
8c50: 0a 3c 61 20 6e 61 6d 65 3d 22 64 65 62 75 67 6f  .<a name="debugo
8c60: 70 74 69 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 32  ptions"></a>.<h2
8c70: 3e 31 2e 37 20 41 6e 61 6c 79 73 69 73 20 61 6e  >1.7 Analysis an
8c80: 64 20 44 65 62 75 67 67 69 6e 67 20 4f 70 74 69  d Debugging Opti
8c90: 6f 6e 73 3c 2f 68 32 3e 0a 3c 74 63 6c 3e 0a 0a  ons</h2>.<tcl>..
8ca0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
8cb0: 53 51 4c 49 54 45 5f 44 45 42 55 47 7d 20 7b 0a  SQLITE_DEBUG} {.
8cc0: 20 20 54 68 65 20 53 51 4c 69 74 65 20 73 6f 75    The SQLite sou
8cd0: 72 63 65 20 63 6f 64 65 20 63 6f 6e 74 61 69 6e  rce code contain
8ce0: 73 20 6c 69 74 65 72 61 6c 6c 79 20 74 68 6f 75  s literally thou
8cf0: 73 61 6e 64 73 20 6f 66 20 61 73 73 65 72 74 28  sands of assert(
8d00: 29 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 75  ) statements.  u
8d10: 73 65 64 20 74 6f 20 76 65 72 69 66 79 20 69 6e  sed to verify in
8d20: 74 65 72 6e 61 6c 20 61 73 73 75 6d 70 74 69 6f  ternal assumptio
8d30: 6e 73 20 61 6e 64 20 73 75 62 72 6f 75 74 69 6e  ns and subroutin
8d40: 65 20 70 72 65 63 6f 6e 64 69 74 69 6f 6e 73 20  e preconditions 
8d50: 61 6e 64 0a 20 20 70 6f 73 74 63 6f 6e 64 69 74  and.  postcondit
8d60: 69 6f 6e 73 2e 20 20 54 68 65 73 65 20 61 73 73  ions.  These ass
8d70: 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73  ert() statements
8d80: 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 74 75   are normally tu
8d90: 72 6e 65 64 20 6f 66 66 0a 20 20 28 74 68 65 79  rned off.  (they
8da0: 20 67 65 6e 65 72 61 74 65 20 6e 6f 20 63 6f 64   generate no cod
8db0: 65 29 20 73 69 6e 63 65 20 74 75 72 6e 69 6e 67  e) since turning
8dc0: 20 74 68 65 6d 20 6f 6e 20 6d 61 6b 65 73 20 53   them on makes S
8dd0: 51 4c 69 74 65 20 72 75 6e 20 61 70 70 72 6f 78  QLite run approx
8de0: 69 6d 61 74 65 6c 79 0a 20 20 74 68 72 65 65 20  imately.  three 
8df0: 74 69 6d 65 73 20 73 6c 6f 77 65 72 2e 20 20 42  times slower.  B
8e00: 75 74 20 66 6f 72 20 74 65 73 74 69 6e 67 20 61  ut for testing a
8e10: 6e 64 20 61 6e 61 6c 79 73 69 73 2c 20 69 74 20  nd analysis, it 
8e20: 69 73 20 75 73 65 66 75 6c 20 74 6f 20 74 75 72  is useful to tur
8e30: 6e 0a 20 20 74 68 65 20 61 73 73 65 72 74 28 29  n.  the assert()
8e40: 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e 2e 20   statements on. 
8e50: 20 54 68 65 20 53 51 4c 49 54 45 5f 44 45 42 55   The SQLITE_DEBU
8e60: 47 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  G compile-time o
8e70: 70 74 69 6f 6e 20 64 6f 65 73 20 74 68 69 73 2e  ption does this.
8e80: 0a 20 20 53 51 4c 49 54 45 5f 44 45 42 55 47 20  .  SQLITE_DEBUG 
8e90: 61 6c 73 6f 20 74 75 72 6e 73 20 6f 6e 20 73 6f  also turns on so
8ea0: 6d 65 20 6f 74 68 65 72 20 64 65 62 75 67 67 69  me other debuggi
8eb0: 6e 67 20 66 65 61 74 75 72 65 73 2e 0a 7d 0a 0a  ng features..}..
8ec0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
8ed0: 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42 55 47 7d  SQLITE_MEMDEBUG}
8ee0: 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f   {.  The SQLITE_
8ef0: 4d 45 4d 44 45 42 55 47 20 6f 70 74 69 6f 6e 20  MEMDEBUG option 
8f00: 63 61 75 73 65 73 20 61 6e 20 69 6e 73 74 72 75  causes an instru
8f10: 6d 65 6e 74 65 64 20 0a 20 20 5b 64 65 62 75 67  mented .  [debug
8f20: 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ging memory allo
8f30: 63 61 74 6f 72 5d 0a 20 20 74 6f 20 62 65 20 75  cator].  to be u
8f40: 73 65 64 20 61 73 20 74 68 65 20 64 65 66 61 75  sed as the defau
8f50: 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  lt memory alloca
8f60: 74 6f 72 20 77 69 74 68 69 6e 20 53 51 4c 69 74  tor within SQLit
8f70: 65 2e 20 20 54 68 65 0a 20 20 69 6e 73 74 72 75  e.  The.  instru
8f80: 6d 65 6e 74 65 64 20 6d 65 6d 6f 72 79 20 61 6c  mented memory al
8f90: 6c 6f 63 61 74 6f 72 20 63 68 65 63 6b 73 20 66  locator checks f
8fa0: 6f 72 20 6d 69 73 75 73 65 20 6f 66 20 64 79 6e  or misuse of dyn
8fb0: 61 6d 69 63 61 6c 6c 79 20 61 6c 6c 6f 63 61 74  amically allocat
8fc0: 65 64 0a 20 20 6d 65 6d 6f 72 79 2e 20 20 45 78  ed.  memory.  Ex
8fd0: 61 6d 70 6c 65 73 20 6f 66 20 6d 69 73 75 73 65  amples of misuse
8fe0: 20 69 6e 63 6c 75 64 65 20 75 73 69 6e 67 20 6d   include using m
8ff0: 65 6d 6f 72 79 20 61 66 74 65 72 20 69 74 20 69  emory after it i
9000: 73 20 66 72 65 65 64 2c 0a 20 20 77 72 69 74 69  s freed,.  writi
9010: 6e 67 20 6f 66 66 20 74 68 65 20 65 6e 64 73 20  ng off the ends 
9020: 6f 66 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  of a memory allo
9030: 63 61 74 69 6f 6e 2c 20 66 72 65 65 69 6e 67 20  cation, freeing 
9040: 6d 65 6d 6f 72 79 20 6e 6f 74 20 70 72 65 76 69  memory not previ
9050: 6f 75 73 6c 79 0a 20 20 6f 62 74 61 69 6e 65 64  ously.  obtained
9060: 20 66 72 6f 6d 20 74 68 65 20 6d 65 6d 6f 72 79   from the memory
9070: 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 6f 72 20 66   allocator, or f
9080: 61 69 6c 69 6e 67 20 74 6f 20 69 6e 69 74 69 61  ailing to initia
9090: 6c 69 7a 65 20 6e 65 77 6c 79 0a 20 20 61 6c 6c  lize newly.  all
90a0: 6f 63 61 74 65 64 20 6d 65 6d 6f 72 79 2e 0a 7d  ocated memory..}
90b0: 0a 0a 3c 2f 74 63 6c 3e 0a                       ..</tcl>.