Documentation Source Text

Hex Artifact Content
Login

Artifact 8145499fd2325b5b802a0a8c2a7fdc805dbb759c:


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 65  ested parenthese
3030: 73 69 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  sis..}..COMPILE_
3040: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
3050: 4e 41 42 4c 45 5f 49 43 55 7d 20 7b 0a 20 20 54  NABLE_ICU} {.  T
3060: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
3070: 73 20 74 68 65 20 0a 20 20 5b 68 74 74 70 3a 2f  s the .  [http:/
3080: 2f 77 77 77 2e 69 63 75 2d 70 72 6f 6a 65 63 74  /www.icu-project
3090: 2e 6f 72 67 2f 20 7c 20 49 6e 74 65 72 6e 61 74  .org/ | Internat
30a0: 69 6f 6e 61 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73  ional Components
30b0: 20 66 6f 72 20 55 6e 69 63 6f 64 65 5d 0a 20 20   for Unicode].  
30c0: 6f 72 20 22 49 43 55 22 20 65 78 74 65 6e 73 69  or "ICU" extensi
30d0: 6f 6e 20 74 6f 20 53 51 4c 69 74 65 20 74 6f 20  on to SQLite to 
30e0: 62 65 20 61 64 64 65 64 20 74 6f 20 74 68 65 20  be added to the 
30f0: 62 75 69 6c 64 2e 20 20 0a 7d 0a 0a 43 4f 4d 50  build.  .}..COMP
3100: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
3110: 54 45 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43  TE_ENABLE_IOTRAC
3120: 45 7d 20 7b 0a 20 20 57 68 65 6e 20 62 6f 74 68  E} {.  When both
3130: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
3140: 20 61 6e 64 20 74 68 65 20 5b 43 6f 6d 6d 61 6e   and the [Comman
3150: 64 20 4c 69 6e 65 20 49 6e 74 65 72 66 61 63 65  d Line Interface
3160: 5d 20 28 43 4c 49 29 20 61 72 65 20 62 6f 74 68  ] (CLI) are both
3170: 20 0a 20 20 63 6f 6d 70 69 6c 65 64 20 77 69 74   .  compiled wit
3180: 68 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 74  h this option, t
3190: 68 65 6e 20 74 68 65 20 43 4c 49 20 70 72 6f 76  hen the CLI prov
31a0: 69 64 65 73 20 61 6e 20 65 78 74 72 61 20 63 6f  ides an extra co
31b0: 6d 6d 61 6e 64 0a 20 20 6e 61 6d 65 64 20 22 2e  mmand.  named ".
31c0: 69 6f 74 72 61 63 65 22 20 74 68 61 74 20 70 72  iotrace" that pr
31d0: 6f 76 69 64 65 73 20 61 20 6c 6f 77 2d 6c 65 76  ovides a low-lev
31e0: 65 6c 20 6c 6f 67 20 6f 66 20 49 2f 4f 20 61 63  el log of I/O ac
31f0: 74 69 76 69 74 79 2e 0a 20 20 54 68 69 73 20 6f  tivity..  This o
3200: 70 74 69 6f 6e 20 69 73 20 65 78 70 65 72 69 6d  ption is experim
3210: 65 6e 74 61 6c 20 61 6e 64 20 6d 61 79 20 62 65  ental and may be
3220: 20 64 69 73 63 6f 6e 74 69 6e 75 65 64 20 69 6e   discontinued in
3230: 20 61 20 66 75 74 75 72 65 20 72 65 6c 65 61 73   a future releas
3240: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
3250: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
3260: 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c  BLE_LOCKING_STYL
3270: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
3280: 6f 6e 20 65 6e 61 62 6c 65 73 20 61 64 64 69 74  on enables addit
3290: 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 69 6e 20 74  ional logic in t
32a0: 68 65 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20  he OS interface 
32b0: 6c 61 79 65 72 20 66 6f 72 0a 20 20 4d 61 63 20  layer for.  Mac 
32c0: 4f 53 20 58 2e 20 54 68 65 20 61 64 64 69 74 69  OS X. The additi
32d0: 6f 6e 61 6c 20 6c 6f 67 69 63 20 61 74 74 65 6d  onal logic attem
32e0: 70 74 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65  pts to determine
32f0: 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 68 65   the type of the
3300: 0a 20 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 69  .  underlying fi
3310: 6c 65 73 79 73 74 65 6d 20 61 6e 64 20 63 68 6f  lesystem and cho
3320: 6f 73 65 20 61 6e 64 20 61 6c 74 65 72 6e 61 74  ose and alternat
3330: 69 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61  ive locking stra
3340: 74 65 67 79 0a 20 20 74 68 61 74 20 77 6f 72 6b  tegy.  that work
3350: 73 20 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 20  s correctly for 
3360: 74 68 61 74 20 66 69 6c 65 73 79 73 74 65 6d 20  that filesystem 
3370: 74 79 70 65 2e 20 46 69 76 65 20 6c 6f 63 6b 69  type. Five locki
3380: 6e 67 20 73 74 72 61 74 65 67 69 65 73 20 0a 20  ng strategies . 
3390: 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3a 0a   are available:.
33a0: 0a 20 20 3c 75 6c 3e 0a 20 20 20 20 3c 6c 69 3e  .  <ul>.    <li>
33b0: 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73   POSIX locking s
33c0: 74 79 6c 65 2e 20 54 68 69 73 20 69 73 20 74 68  tyle. This is th
33d0: 65 20 64 65 66 61 75 6c 74 20 6c 6f 63 6b 69 6e  e default lockin
33e0: 67 20 73 74 79 6c 65 20 61 6e 64 20 74 68 65 0a  g style and the.
33f0: 20 20 20 20 20 20 20 20 20 73 74 79 6c 65 20 75           style u
3400: 73 65 64 20 62 79 20 6f 74 68 65 72 20 28 6e 6f  sed by other (no
3410: 6e 20 4d 61 63 20 4f 53 20 58 29 20 55 6e 69 78  n Mac OS X) Unix
3420: 65 73 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62  es. Locks are ob
3430: 74 61 69 6e 65 64 20 61 6e 64 20 0a 20 20 20 20  tained and .    
3440: 20 20 20 20 20 72 65 6c 65 61 73 65 64 20 75 73       released us
3450: 69 6e 67 20 74 68 65 20 66 63 6e 74 6c 28 29 20  ing the fcntl() 
3460: 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20  system call...  
3470: 20 20 3c 6c 69 3e 20 41 46 50 20 6c 6f 63 6b 69    <li> AFP locki
3480: 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c  ng style. This l
3490: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20  ocking style is 
34a0: 75 73 65 64 20 66 6f 72 20 6e 65 74 77 6f 72 6b  used for network
34b0: 20 66 69 6c 65 20 0a 20 20 20 20 20 20 20 20 20   file .         
34c0: 73 79 73 74 65 6d 73 20 74 68 61 74 20 75 73 65  systems that use
34d0: 20 74 68 65 20 41 46 50 20 28 41 70 70 6c 65 20   the AFP (Apple 
34e0: 46 69 6c 69 6e 67 20 50 72 6f 74 6f 63 6f 6c 29  Filing Protocol)
34f0: 20 70 72 6f 74 6f 63 6f 6c 2e 20 4c 6f 63 6b 73   protocol. Locks
3500: 0a 20 20 20 20 20 20 20 20 20 61 72 65 20 6f 62  .         are ob
3510: 74 61 69 6e 65 64 20 62 79 20 63 61 6c 6c 69 6e  tained by callin
3520: 67 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 75  g the library fu
3530: 6e 63 74 69 6f 6e 20 5f 41 46 50 46 53 53 65 74  nction _AFPFSSet
3540: 4c 6f 63 6b 28 29 2e 0a 0a 20 20 20 20 3c 6c 69  Lock()...    <li
3550: 3e 20 46 6c 6f 63 6b 20 6c 6f 63 6b 69 6e 67 20  > Flock locking 
3560: 73 74 79 6c 65 2e 20 54 68 69 73 20 69 73 20 75  style. This is u
3570: 73 65 64 20 66 6f 72 20 66 69 6c 65 2d 73 79 73  sed for file-sys
3580: 74 65 6d 73 20 74 68 61 74 20 64 6f 20 6e 6f 74  tems that do not
3590: 0a 20 20 20 20 20 20 20 20 20 73 75 70 70 6f 72  .         suppor
35a0: 74 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20  t POSIX locking 
35b0: 73 74 79 6c 65 2e 20 4c 6f 63 6b 73 20 61 72 65  style. Locks are
35c0: 20 6f 62 74 61 69 6e 65 64 20 61 6e 64 20 72 65   obtained and re
35d0: 6c 65 61 73 65 64 20 75 73 69 6e 67 0a 20 20 20  leased using.   
35e0: 20 20 20 20 20 20 74 68 65 20 66 6c 6f 63 6b 28        the flock(
35f0: 29 20 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a  ) system call...
3600: 20 20 20 20 3c 6c 69 3e 20 44 6f 74 2d 66 69 6c      <li> Dot-fil
3610: 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e  e locking style.
3620: 20 54 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74   This locking st
3630: 79 6c 65 20 69 73 20 75 73 65 64 20 77 68 65 6e  yle is used when
3640: 20 6e 65 69 74 68 65 72 0a 20 20 20 20 20 20 20   neither.       
3650: 20 20 66 6c 6f 63 6b 20 6e 6f 72 20 50 4f 53 49    flock nor POSI
3660: 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73  X locking styles
3670: 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 20 62   are supported b
3680: 79 20 74 68 65 20 66 69 6c 65 20 73 79 73 74 65  y the file syste
3690: 6d 2e 0a 20 20 20 20 20 20 20 20 20 44 61 74 61  m..         Data
36a0: 62 61 73 65 20 6c 6f 63 6b 73 20 61 72 65 20 6f  base locks are o
36b0: 62 74 61 69 6e 65 64 20 62 79 20 63 72 65 61 74  btained by creat
36c0: 69 6e 67 20 61 6e 64 20 65 6e 74 72 79 20 69 6e  ing and entry in
36d0: 20 74 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d   the file-system
36e0: 0a 20 20 20 20 20 20 20 20 20 61 74 20 61 20 77  .         at a w
36f0: 65 6c 6c 2d 6b 6e 6f 77 6e 20 6c 6f 63 61 74 69  ell-known locati
3700: 6f 6e 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74  on relative to t
3710: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
3720: 20 28 61 20 22 64 6f 74 2d 66 69 6c 65 22 29 0a   (a "dot-file").
3730: 20 20 20 20 20 20 20 20 20 61 6e 64 20 72 65 6c           and rel
3740: 69 6e 71 75 69 73 68 65 64 20 62 79 20 64 65 6c  inquished by del
3750: 65 74 69 6e 67 20 74 68 65 20 73 61 6d 65 20 66  eting the same f
3760: 69 6c 65 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 4e  ile...    <li> N
3770: 6f 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e  o locking style.
3780: 20 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20   If none of the 
3790: 61 62 6f 76 65 20 63 61 6e 20 62 65 20 73 75 70  above can be sup
37a0: 70 6f 72 74 65 64 2c 20 74 68 69 73 20 0a 20 20  ported, this .  
37b0: 20 20 20 20 20 20 20 6c 6f 63 6b 69 6e 67 20 73         locking s
37c0: 74 79 6c 65 20 69 73 20 75 73 65 64 2e 20 4e 6f  tyle is used. No
37d0: 20 64 61 74 61 62 61 73 65 20 6c 6f 63 6b 69 6e   database lockin
37e0: 67 20 6d 65 63 68 61 6e 69 73 6d 20 69 73 20 75  g mechanism is u
37f0: 73 65 64 2e 20 57 68 65 6e 0a 20 20 20 20 20 20  sed. When.      
3800: 20 20 20 74 68 69 73 20 73 79 73 74 65 6d 20 69     this system i
3810: 73 20 75 73 65 64 20 69 74 20 69 73 20 6e 6f 74  s used it is not
3820: 20 73 61 66 65 20 66 6f 72 20 61 20 73 69 6e 67   safe for a sing
3830: 6c 65 20 64 61 74 61 62 61 73 65 20 74 6f 20 62  le database to b
3840: 65 0a 20 20 20 20 20 20 20 20 20 61 63 63 65 73  e.         acces
3850: 73 65 64 20 62 79 20 6d 75 6c 74 69 70 6c 65 20  sed by multiple 
3860: 63 6c 69 65 6e 74 73 2e 0a 20 20 3c 2f 75 6c 3e  clients..  </ul>
3870: 0a 0a 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79  ..  Additionally
3880: 2c 20 66 69 76 65 20 65 78 74 72 61 20 56 46 53  , five extra VFS
3890: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
38a0: 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 61 73   are provided as
38b0: 20 77 65 6c 6c 20 61 73 20 74 68 65 0a 20 20 64   well as the.  d
38c0: 65 66 61 75 6c 74 2e 20 42 79 20 73 70 65 63 69  efault. By speci
38d0: 66 79 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65  fying one of the
38e0: 20 65 78 74 72 61 20 56 46 53 20 69 6d 70 6c 65   extra VFS imple
38f0: 6d 65 6e 74 61 74 69 6f 6e 73 20 0a 20 20 77 68  mentations .  wh
3900: 65 6e 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69  en calling [sqli
3910: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20  te3_open_v2()], 
3920: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  an application m
3930: 61 79 20 62 79 70 61 73 73 20 74 68 65 20 66 69  ay bypass the fi
3940: 6c 65 2d 73 79 73 74 65 6d 0a 20 20 64 65 74 65  le-system.  dete
3950: 63 74 69 6f 6e 20 6c 6f 67 69 63 20 61 6e 64 20  ction logic and 
3960: 65 78 70 6c 69 63 69 74 6c 79 20 73 65 6c 65 63  explicitly selec
3970: 74 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f  t one of the abo
3980: 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  ve locking style
3990: 73 2e 20 54 68 65 0a 20 20 66 69 76 65 20 65 78  s. The.  five ex
39a0: 74 72 61 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e  tra VFS implemen
39b0: 74 61 74 69 6f 6e 73 20 61 72 65 20 63 61 6c 6c  tations are call
39c0: 65 64 20 22 75 6e 69 78 2d 70 6f 73 69 78 22 2c  ed "unix-posix",
39d0: 20 22 75 6e 69 78 2d 61 66 70 22 2c 0a 20 20 22   "unix-afp",.  "
39e0: 75 6e 69 78 2d 66 6c 6f 63 6b 22 2c 20 22 75 6e  unix-flock", "un
39f0: 69 78 2d 64 6f 74 66 69 6c 65 22 20 61 6e 64 20  ix-dotfile" and 
3a00: 22 75 6e 69 78 2d 6e 6f 6e 65 22 2e 0a 7d 0a 0a  "unix-none"..}..
3a10: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
3a20: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45  SQLITE_ENABLE_ME
3a30: 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e 54 7d  MORY_MANAGEMENT}
3a40: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
3a50: 20 61 64 64 73 20 65 78 74 72 61 20 6c 6f 67 69   adds extra logi
3a60: 63 20 74 6f 20 53 51 4c 69 74 65 20 74 68 61 74  c to SQLite that
3a70: 20 61 6c 6c 6f 77 73 20 69 74 20 74 6f 20 72 65   allows it to re
3a80: 6c 65 61 73 65 20 75 6e 75 73 65 64 0a 20 20 6d  lease unused.  m
3a90: 65 6d 6f 72 79 20 75 70 6f 6e 20 72 65 71 75 65  emory upon reque
3aa0: 73 74 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  st.  This option
3ab0: 20 6d 75 73 74 20 62 65 20 65 6e 61 62 6c 65 64   must be enabled
3ac0: 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68   in order for th
3ad0: 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c  e.  [sqlite3_rel
3ae0: 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69  ease_memory()] i
3af0: 6e 74 65 72 66 61 63 65 20 74 6f 20 77 6f 72 6b  nterface to work
3b00: 2e 20 20 49 66 20 74 68 69 73 20 63 6f 6d 70 69  .  If this compi
3b10: 6c 65 2d 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e  le-time.  option
3b20: 20 69 73 20 6e 6f 74 20 75 73 65 64 2c 20 74 68   is not used, th
3b30: 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65 61  e [sqlite3_relea
3b40: 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74  se_memory()] int
3b50: 65 72 66 61 63 65 20 69 73 20 61 20 0a 20 20 6e  erface is a .  n
3b60: 6f 2d 6f 70 2e 20 20 53 69 6e 63 65 20 5b 73 71  o-op.  Since [sq
3b70: 6c 69 74 65 33 5f 73 6f 66 74 5f 68 65 61 70 5f  lite3_soft_heap_
3b80: 6c 69 6d 69 74 28 29 5d 20 64 65 70 65 6e 64 73  limit()] depends
3b90: 20 6f 6e 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72   on.  [sqlite3_r
3ba0: 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d  elease_memory()]
3bb0: 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  , this option is
3bc0: 20 61 6c 73 6f 20 6e 65 63 65 73 73 61 72 79 20   also necessary 
3bd0: 66 6f 72 0a 20 20 74 68 65 20 63 6f 72 72 65 63  for.  the correc
3be0: 74 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 5b  t operation of [
3bf0: 73 71 6c 69 74 65 33 5f 73 6f 66 74 5f 68 65 61  sqlite3_soft_hea
3c00: 70 5f 6c 69 6d 69 74 28 29 5d 2e 0a 7d 0a 0a 43  p_limit()]..}..C
3c10: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
3c20: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d  QLITE_ENABLE_MEM
3c30: 53 59 53 33 7d 20 7b 0a 20 20 54 68 69 73 20 6f  SYS3} {.  This o
3c40: 70 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 63  ption includes c
3c50: 6f 64 65 20 69 6e 20 53 51 4c 69 74 65 20 74 68  ode in SQLite th
3c60: 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e  at implements an
3c70: 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 20 20 6d   alternative.  m
3c80: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e  emory allocator.
3c90: 20 20 54 68 69 73 20 61 6c 74 65 72 6e 61 74 69    This alternati
3ca0: 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ve memory alloca
3cb0: 74 6f 72 20 69 73 20 6f 6e 6c 79 20 65 6e 67 61  tor is only enga
3cc0: 67 65 64 0a 20 20 77 68 65 6e 20 74 68 65 20 5b  ged.  when the [
3cd0: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45  SQLITE_CONFIG_HE
3ce0: 41 50 5d 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73  AP] option to [s
3cf0: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
3d00: 20 69 73 20 75 73 65 64 20 74 6f 0a 20 20 73 75   is used to.  su
3d10: 70 70 6c 79 20 61 20 6c 61 72 67 65 20 63 68 75  pply a large chu
3d20: 6e 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 66 72 6f  nk of memory fro
3d30: 6d 20 77 68 69 63 68 20 61 6c 6c 20 6d 65 6d 6f  m which all memo
3d40: 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61  ry allocations a
3d50: 72 65 0a 20 20 74 61 6b 65 6e 2e 0a 20 20 54 68  re.  taken..  Th
3d60: 65 20 4d 45 4d 53 59 53 33 20 6d 65 6d 6f 72 79  e MEMSYS3 memory
3d70: 20 61 6c 6c 6f 63 61 74 6f 72 20 75 73 65 73 20   allocator uses 
3d80: 61 20 68 79 62 72 69 64 20 61 6c 6c 6f 63 61 74  a hybrid allocat
3d90: 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 0a 20  ion algorithm . 
3da0: 20 70 61 74 74 65 72 6e 65 64 20 61 66 74 65 72   patterned after
3db0: 20 64 6c 6d 61 6c 6c 6f 63 28 29 2e 20 20 20 4f   dlmalloc().   O
3dc0: 6e 6c 79 20 6f 6e 65 20 6f 66 20 53 51 4c 49 54  nly one of SQLIT
3dd0: 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33  E_ENABLE_MEMSYS3
3de0: 20 61 6e 64 20 0a 20 20 53 51 4c 49 54 45 5f 45   and .  SQLITE_E
3df0: 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 35 20 6d 61  NABLE_MEMSYS5 ma
3e00: 79 20 62 65 20 65 6e 61 62 6c 65 64 20 61 74 20  y be enabled at 
3e10: 6f 6e 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  once..}..COMPILE
3e20: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
3e30: 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 35 7d 20  ENABLE_MEMSYS5} 
3e40: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
3e50: 69 6e 63 6c 75 64 65 73 20 63 6f 64 65 20 69 6e  includes code in
3e60: 20 53 51 4c 69 74 65 20 74 68 61 74 20 69 6d 70   SQLite that imp
3e70: 6c 65 6d 65 6e 74 73 20 61 6e 20 61 6c 74 65 72  lements an alter
3e80: 6e 61 74 69 76 65 0a 20 20 6d 65 6d 6f 72 79 20  native.  memory 
3e90: 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 54 68 69 73  allocator.  This
3ea0: 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6d 65 6d   alternative mem
3eb0: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  ory allocator is
3ec0: 20 6f 6e 6c 79 20 65 6e 67 61 67 65 64 0a 20 20   only engaged.  
3ed0: 77 68 65 6e 20 74 68 65 20 5b 53 51 4c 49 54 45  when the [SQLITE
3ee0: 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 20 6f 70  _CONFIG_HEAP] op
3ef0: 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33  tion to [sqlite3
3f00: 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73 20 75 73  _config()] is us
3f10: 65 64 20 74 6f 0a 20 20 73 75 70 70 6c 79 20 61  ed to.  supply a
3f20: 20 6c 61 72 67 65 20 63 68 75 6e 6b 20 6f 66 20   large chunk of 
3f30: 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 77 68 69 63  memory from whic
3f40: 68 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c  h all memory all
3f50: 6f 63 61 74 69 6f 6e 73 20 61 72 65 0a 20 20 74  ocations are.  t
3f60: 61 6b 65 6e 2e 0a 20 20 54 68 65 20 4d 45 4d 53  aken..  The MEMS
3f70: 59 53 35 20 6d 6f 64 75 6c 65 20 72 6f 75 6e 64  YS5 module round
3f80: 73 20 61 6c 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e  s all allocation
3f90: 73 20 75 70 20 74 6f 20 74 68 65 20 6e 65 78 74  s up to the next
3fa0: 20 70 6f 77 65 72 0a 20 20 6f 66 20 74 77 6f 20   power.  of two 
3fb0: 61 6e 64 20 75 73 65 73 20 61 20 66 69 72 73 74  and uses a first
3fc0: 2d 66 69 74 2c 20 62 75 64 64 79 2d 61 6c 6c 6f  -fit, buddy-allo
3fd0: 63 61 74 6f 72 20 61 6c 67 6f 72 69 74 68 6d 0a  cator algorithm.
3fe0: 20 20 74 68 61 74 20 70 72 6f 76 69 64 65 73 20    that provides 
3ff0: 73 74 72 6f 6e 67 20 67 75 61 72 61 6e 74 65 65  strong guarantee
4000: 73 20 61 67 61 69 6e 73 74 20 66 72 61 67 6d 65  s against fragme
4010: 6e 74 61 74 69 6f 6e 20 61 6e 64 20 62 72 65 61  ntation and brea
4020: 6b 64 6f 77 6e 0a 20 20 73 75 62 6a 65 63 74 20  kdown.  subject 
4030: 74 6f 20 63 65 72 74 61 69 6e 20 6f 70 65 72 61  to certain opera
4040: 74 69 6e 67 20 63 6f 6e 73 74 72 61 69 6e 74 73  ting constraints
4050: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
4060: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
4070: 4c 45 5f 52 54 52 45 45 7d 20 7b 0a 20 20 54 68  LE_RTREE} {.  Th
4080: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
4090: 20 53 51 4c 69 74 65 20 74 6f 20 69 6e 63 6c 75   SQLite to inclu
40a0: 64 65 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74  de support for t
40b0: 68 65 0a 20 20 5b 72 74 72 65 65 20 7c 20 52 2a  he.  [rtree | R*
40c0: 54 72 65 65 20 69 6e 64 65 78 20 65 78 74 65 6e  Tree index exten
40d0: 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  sion]..}..COMPIL
40e0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
40f0: 5f 45 4e 41 42 4c 45 5f 53 54 41 54 32 7d 20 7b  _ENABLE_STAT2} {
4100: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61  .  This option a
4110: 64 64 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c  dds additional l
4120: 6f 67 69 63 20 74 6f 20 74 68 65 20 5b 41 4e 41  ogic to the [ANA
4130: 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 61 6e  LYZE] command an
4140: 64 20 74 6f 0a 20 20 74 68 65 20 5b 71 75 65 72  d to.  the [quer
4150: 79 20 70 6c 61 6e 6e 65 72 5d 20 74 68 61 74 20  y planner] that 
4160: 63 61 6e 20 68 65 6c 70 20 53 51 4c 69 74 65 20  can help SQLite 
4170: 74 6f 20 63 68 6f 73 65 20 61 20 62 65 74 74 65  to chose a bette
4180: 72 20 71 75 65 72 79 20 70 6c 61 6e 0a 20 20 75  r query plan.  u
4190: 6e 64 65 72 20 63 65 72 74 61 69 6e 20 73 69 74  nder certain sit
41a0: 75 61 74 69 6f 6e 73 2e 20 20 54 68 65 20 5b 41  uations.  The [A
41b0: 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20  NALYZE] command 
41c0: 69 73 20 65 6e 68 61 6e 63 65 64 20 74 6f 20 63  is enhanced to c
41d0: 6f 6c 6c 65 63 74 0a 20 20 61 20 31 30 2d 73 61  ollect.  a 10-sa
41e0: 6d 70 6c 65 20 68 69 73 74 6f 67 72 61 6d 20 6f  mple histogram o
41f0: 66 20 74 68 65 20 64 61 74 61 20 69 6e 20 65 61  f the data in ea
4200: 63 68 20 69 6e 64 65 78 20 61 6e 64 20 73 74 6f  ch index and sto
4210: 72 65 20 74 68 61 74 20 68 69 73 74 6f 67 72 61  re that histogra
4220: 6d 0a 20 20 69 6e 20 74 68 65 20 3c 62 3e 73 71  m.  in the <b>sq
4230: 6c 69 74 65 5f 73 74 61 74 32 3c 2f 62 3e 20 74  lite_stat2</b> t
4240: 61 62 6c 65 2e 20 20 54 68 65 20 71 75 65 72 79  able.  The query
4250: 20 70 6c 61 6e 6e 65 72 20 77 69 6c 6c 20 74 68   planner will th
4260: 65 6e 20 75 73 65 20 74 68 65 0a 20 20 68 69 73  en use the.  his
4270: 74 6f 67 72 61 6d 20 64 61 74 61 20 74 6f 20 68  togram data to h
4280: 65 6c 70 20 69 74 20 65 73 74 69 6d 61 74 65 20  elp it estimate 
4290: 68 6f 77 20 6d 61 6e 79 20 72 6f 77 73 20 77 69  how many rows wi
42a0: 6c 6c 20 62 65 20 73 65 6c 65 63 74 65 64 20 62  ll be selected b
42b0: 79 20 61 0a 20 20 3c 61 20 68 72 65 66 3d 22 6f  y a.  <a href="o
42c0: 70 74 6f 76 65 72 76 69 65 77 2e 68 74 6d 6c 23  ptoverview.html#
42d0: 72 61 6e 67 65 71 75 65 72 79 22 3e 72 61 6e 67  rangequery">rang
42e0: 65 20 63 6f 6e 73 74 72 61 69 6e 74 3c 2f 61 3e  e constraint</a>
42f0: 20 69 6e 20 61 20 57 48 45 52 45 20 63 6c 61 75   in a WHERE clau
4300: 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  se..}..COMPILE_O
4310: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
4320: 41 42 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45  ABLE_UPDATE_DELE
4330: 54 45 5f 4c 49 4d 49 54 7d 20 7b 0a 20 20 54 68  TE_LIMIT} {.  Th
4340: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
4350: 73 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 4f 52  s an optional OR
4360: 44 45 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54  DER BY and LIMIT
4370: 20 63 6c 61 75 73 65 20 6f 6e 20 0a 20 20 5b 55   clause on .  [U
4380: 50 44 41 54 45 5d 20 61 6e 64 20 5b 44 45 4c 45  PDATE] and [DELE
4390: 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a  TE] statements..
43a0: 0a 20 20 3c 70 3e 49 66 20 74 68 69 73 20 6f 70  .  <p>If this op
43b0: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
43c0: 20 74 68 65 6e 20 69 74 20 6d 75 73 74 20 61 6c   then it must al
43d0: 73 6f 20 62 65 20 0a 20 20 64 65 66 69 6e 65 64  so be .  defined
43e0: 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20   when using the 
43f0: 27 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20  'lemon' tool to 
4400: 67 65 6e 65 72 61 74 65 20 61 20 70 61 72 73 65  generate a parse
4410: 2e 63 0a 20 20 66 69 6c 65 2e 20 42 65 63 61 75  .c.  file. Becau
4420: 73 65 20 6f 66 20 74 68 69 73 2c 20 74 68 69 73  se of this, this
4430: 20 6f 70 74 69 6f 6e 20 6d 61 79 20 6f 6e 6c 79   option may only
4440: 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 74 68   be used when th
4450: 65 20 6c 69 62 72 61 72 79 20 69 73 20 62 75 69  e library is bui
4460: 6c 74 0a 20 20 66 72 6f 6d 20 73 6f 75 72 63 65  lt.  from source
4470: 2c 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b  , not from the [
4480: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72  amalgamation] or
4490: 20 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63   from the collec
44a0: 74 69 6f 6e 20 6f 66 0a 20 20 70 72 65 2d 70 61  tion of.  pre-pa
44b0: 63 6b 61 67 65 64 20 43 20 66 69 6c 65 73 20 70  ckaged C files p
44c0: 72 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d  rovided for non-
44d0: 55 6e 69 78 20 6c 69 6b 65 20 70 6c 61 74 66 6f  Unix like platfo
44e0: 72 6d 73 20 6f 6e 20 74 68 65 20 77 65 62 73 69  rms on the websi
44f0: 74 65 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f  te..  </p>.}..CO
4500: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
4510: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4c 4f  LITE_ENABLE_UNLO
4520: 43 4b 5f 4e 4f 54 49 46 59 7d 20 7b 0a 20 20 54  CK_NOTIFY} {.  T
4530: 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c  his option enabl
4540: 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  es the [sqlite3_
4550: 75 6e 6c 6f 63 6b 5f 6e 6f 74 69 66 79 28 29 5d  unlock_notify()]
4560: 20 69 6e 74 65 72 66 61 63 65 20 61 6e 64 0a 20   interface and. 
4570: 20 69 74 73 20 61 73 73 6f 63 69 61 74 65 64 20   its associated 
4580: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20 20  functionality.  
4590: 53 65 65 20 74 68 65 20 64 6f 63 75 6d 65 6e 74  See the document
45a0: 61 74 69 6f 6e 20 74 69 74 6c 65 64 0a 20 20 5b  ation titled.  [
45b0: 55 73 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65  Using the SQLite
45c0: 20 55 6e 6c 6f 63 6b 20 4e 6f 74 69 66 69 63 61   Unlock Notifica
45d0: 74 69 6f 6e 20 46 65 61 74 75 72 65 5d 20 66 6f  tion Feature] fo
45e0: 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a 20 20 69  r additional.  i
45f0: 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d 0a 0a 43  nformation..}..C
4600: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
4610: 51 4c 49 54 45 5f 53 4f 55 4e 44 45 58 7d 20 7b  QLITE_SOUNDEX} {
4620: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65  .  This option e
4630: 6e 61 62 6c 65 73 20 74 68 65 20 5b 73 6f 75 6e  nables the [soun
4640: 64 65 78 28 29 20 53 51 4c 20 66 75 6e 63 74 69  dex() SQL functi
4650: 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  on]..}..COMPILE_
4660: 4f 50 54 49 4f 4e 20 7b 59 59 54 52 41 43 4b 4d  OPTION {YYTRACKM
4670: 41 58 53 54 41 43 4b 44 45 50 54 48 7d 20 7b 0a  AXSTACKDEPTH} {.
4680: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
4690: 75 73 65 73 20 74 68 65 20 4c 41 4c 52 28 31 29  uses the LALR(1)
46a0: 20 70 61 72 73 65 72 20 73 74 61 63 6b 20 64 65   parser stack de
46b0: 70 74 68 20 74 6f 20 62 65 20 74 72 61 63 6b 65  pth to be tracke
46c0: 64 0a 20 20 61 6e 64 20 72 65 70 6f 72 74 65 64  d.  and reported
46d0: 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69   using the [sqli
46e0: 74 65 33 5f 73 74 61 74 75 73 5d 28 5b 53 51 4c  te3_status]([SQL
46f0: 49 54 45 5f 53 54 41 54 55 53 5f 50 41 52 53 45  ITE_STATUS_PARSE
4700: 52 5f 53 54 41 43 4b 5d 2c 2e 2e 2e 29 0a 20 20  R_STACK],...).  
4710: 69 6e 74 65 72 66 61 63 65 2e 20 20 53 51 4c 69  interface.  SQLi
4720: 74 65 27 73 20 4c 41 4c 52 28 31 29 20 70 61 72  te's LALR(1) par
4730: 73 65 72 20 68 61 73 20 61 20 66 69 78 65 64 20  ser has a fixed 
4740: 73 74 61 63 6b 20 64 65 70 74 68 0a 20 20 28 64  stack depth.  (d
4750: 65 74 65 72 6d 69 6e 65 64 20 61 74 20 63 6f 6d  etermined at com
4760: 70 69 6c 65 2d 74 69 6d 65 20 75 73 69 6e 67 20  pile-time using 
4770: 74 68 65 20 5b 59 59 53 54 41 43 4b 44 45 50 54  the [YYSTACKDEPT
4780: 48 5d 20 6f 70 74 69 6f 6e 73 29 2e 0a 20 20 54  H] options)..  T
4790: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62  his option can b
47a0: 65 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 64  e used to help d
47b0: 65 74 65 72 6d 69 6e 65 20 69 66 20 61 6e 20 61  etermine if an a
47c0: 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 0a 20 20  pplication is.  
47d0: 67 65 74 74 69 6e 67 20 63 6c 6f 73 65 20 74 6f  getting close to
47e0: 20 65 78 63 65 65 64 69 6e 67 20 74 68 65 20 6d   exceeding the m
47f0: 61 78 69 6d 75 6d 20 4c 41 4c 52 28 31 29 20 73  aximum LALR(1) s
4800: 74 61 63 6b 20 64 65 70 74 68 2e 0a 7d 0a 3c 2f  tack depth..}.</
4810: 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 64  tcl>..<a name="d
4820: 69 73 61 62 6c 65 66 65 61 74 75 72 65 73 22 3e  isablefeatures">
4830: 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 35 20 4f 70 74  </a>.<h2>1.5 Opt
4840: 69 6f 6e 73 20 54 6f 20 44 69 73 61 62 6c 65 20  ions To Disable 
4850: 46 65 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c  Features Normall
4860: 79 20 54 75 72 6e 65 64 20 4f 6e 3c 2f 68 32 3e  y Turned On</h2>
4870: 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f  ..<tcl>.COMPILE_
4880: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
4890: 49 53 41 42 4c 45 5f 4c 46 53 7d 20 7b 0a 20 20  ISABLE_LFS} {.  
48a0: 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f  If this C-prepro
48b0: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20  cessor macro is 
48c0: 64 65 66 69 6e 65 64 2c 20 6c 61 72 67 65 20 66  defined, large f
48d0: 69 6c 65 20 73 75 70 70 6f 72 74 0a 20 20 69 73  ile support.  is
48e0: 20 64 69 73 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f   disabled..}..CO
48f0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
4900: 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 44 49 52  LITE_DISABLE_DIR
4910: 53 59 4e 43 7d 20 7b 0a 20 20 49 66 20 74 68 69  SYNC} {.  If thi
4920: 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72  s C-preprocessor
4930: 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65   macro is define
4940: 64 2c 20 64 69 72 65 63 74 6f 72 79 20 73 79 6e  d, directory syn
4950: 63 73 0a 20 20 61 72 65 20 64 69 73 61 62 6c 65  cs.  are disable
4960: 64 2e 20 20 53 51 4c 69 74 65 20 74 79 70 69 63  d.  SQLite typic
4970: 61 6c 6c 79 20 61 74 74 65 6d 70 74 73 20 74 6f  ally attempts to
4980: 20 73 79 6e 63 20 74 68 65 20 70 61 72 65 6e 74   sync the parent
4990: 0a 20 20 64 69 72 65 63 74 6f 72 79 20 77 68 65  .  directory whe
49a0: 6e 20 61 20 66 69 6c 65 20 69 73 20 64 65 6c 65  n a file is dele
49b0: 74 65 64 20 74 6f 20 65 6e 73 75 72 65 20 74 68  ted to ensure th
49c0: 65 20 64 69 72 65 63 74 6f 72 79 0a 20 20 65 6e  e directory.  en
49d0: 74 72 69 65 73 20 61 72 65 20 75 70 64 61 74 65  tries are update
49e0: 64 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 6f 6e  d immediately on
49f0: 20 64 69 73 6b 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a   disk..}.</tcl>.
4a00: 0a 3c 74 63 6c 3e 0a 20 20 68 64 5f 66 72 61 67  .<tcl>.  hd_frag
4a10: 6d 65 6e 74 20 22 6f 6d 69 74 66 65 61 74 75 72  ment "omitfeatur
4a20: 65 73 22 0a 20 20 68 64 5f 6b 65 79 77 6f 72 64  es".  hd_keyword
4a30: 73 20 22 6f 6d 69 74 66 65 61 74 75 72 65 73 22  s "omitfeatures"
4a40: 0a 3c 2f 74 63 6c 3e 0a 3c 68 32 3e 31 2e 36 20  .</tcl>.<h2>1.6 
4a50: 4f 70 74 69 6f 6e 73 20 54 6f 20 4f 6d 69 74 20  Options To Omit 
4a60: 46 65 61 74 75 72 65 73 3c 2f 68 32 3e 0a 0a 3c  Features</h2>..<
4a70: 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  p>The following 
4a80: 6f 70 74 69 6f 6e 73 20 63 61 6e 20 75 73 65 64  options can used
4a90: 20 74 6f 20 72 65 64 75 63 65 20 74 68 65 20 73   to reduce the s
4aa0: 69 7a 65 20 6f 66 20 74 68 65 20 63 6f 6d 70 69  ize of the compi
4ab0: 6c 65 64 0a 6c 69 62 72 61 72 79 20 62 79 20 6f  led.library by o
4ac0: 6d 69 74 74 69 6e 67 20 6f 70 74 69 6f 6e 61 6c  mitting optional
4ad0: 20 66 65 61 74 75 72 65 73 2e 20 54 68 69 73 20   features. This 
4ae0: 69 73 20 70 72 6f 62 61 62 6c 79 20 6f 6e 6c 79  is probably only
4af0: 20 75 73 65 66 75 6c 0a 69 6e 20 65 6d 62 65 64   useful.in embed
4b00: 64 65 64 20 73 79 73 74 65 6d 73 20 77 68 65 72  ded systems wher
4b10: 65 20 73 70 61 63 65 20 69 73 20 65 73 70 65 63  e space is espec
4b20: 69 61 6c 6c 79 20 74 69 67 68 74 2c 20 61 73 20  ially tight, as 
4b30: 65 76 65 6e 20 77 69 74 68 20 61 6c 6c 0a 66 65  even with all.fe
4b40: 61 74 75 72 65 73 20 69 6e 63 6c 75 64 65 64 20  atures included 
4b50: 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
4b60: 72 79 20 69 73 20 72 65 6c 61 74 69 76 65 6c 79  ry is relatively
4b70: 20 73 6d 61 6c 6c 2e 20 44 6f 6e 27 74 20 66 6f   small. Don't fo
4b80: 72 67 65 74 0a 74 6f 20 74 65 6c 6c 20 79 6f 75  rget.to tell you
4b90: 72 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70  r compiler to op
4ba0: 74 69 6d 69 7a 65 20 66 6f 72 20 62 69 6e 61 72  timize for binar
4bb0: 79 20 73 69 7a 65 21 20 28 74 68 65 20 2d 4f 73  y size! (the -Os
4bc0: 20 6f 70 74 69 6f 6e 20 69 66 0a 75 73 69 6e 67   option if.using
4bd0: 20 47 43 43 29 2e 20 20 54 65 6c 6c 69 6e 67 20   GCC).  Telling 
4be0: 79 6f 75 72 20 63 6f 6d 70 69 6c 65 72 20 74 6f  your compiler to
4bf0: 20 6f 70 74 69 6d 69 7a 65 20 66 6f 72 20 73 69   optimize for si
4c00: 7a 65 20 75 73 75 61 6c 6c 79 20 68 61 73 0a 61  ze usually has.a
4c10: 20 6d 75 63 68 20 6c 61 72 67 65 72 20 69 6d 70   much larger imp
4c20: 61 63 74 20 6f 6e 20 6c 69 62 72 61 72 79 20 66  act on library f
4c30: 6f 6f 74 70 72 69 6e 74 20 74 68 61 6e 20 65 6d  ootprint than em
4c40: 70 6c 6f 79 69 6e 67 20 61 6e 79 20 6f 66 20 74  ploying any of t
4c50: 68 65 73 65 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d  hese.compile-tim
4c60: 65 20 6f 70 74 69 6f 6e 73 2e 20 20 59 6f 75 20  e options.  You 
4c70: 73 68 6f 75 6c 64 20 61 6c 73 6f 20 76 65 72 69  should also veri
4c80: 66 79 20 74 68 61 74 20 0a 3c 61 20 68 72 65 66  fy that .<a href
4c90: 3d 22 23 64 65 62 75 67 6f 70 74 69 6f 6e 73 22  ="#debugoptions"
4ca0: 3e 64 65 62 75 67 67 69 6e 67 20 6f 70 74 69 6f  >debugging optio
4cb0: 6e 73 3c 2f 61 3e 20 61 72 65 20 64 69 73 61 62  ns</a> are disab
4cc0: 6c 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  led.</p>..<p>The
4cd0: 20 6d 61 63 72 6f 73 20 69 6e 20 74 68 69 73 20   macros in this 
4ce0: 73 65 63 74 69 6f 6e 20 64 6f 20 6e 6f 74 20 72  section do not r
4cf0: 65 71 75 69 72 65 20 76 61 6c 75 65 73 2e 20 54  equire values. T
4d00: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 0a 63 6f  he following .co
4d10: 6d 70 69 6c 61 74 69 6f 6e 20 73 77 69 74 63 68  mpilation switch
4d20: 65 73 20 61 6c 6c 20 68 61 76 65 20 74 68 65 20  es all have the 
4d30: 73 61 6d 65 20 65 66 66 65 63 74 3a 3c 62 72 3e  same effect:<br>
4d40: 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  .-DSQLITE_OMIT_A
4d50: 4c 54 45 52 54 41 42 4c 45 3c 62 72 3e 0a 2d 44  LTERTABLE<br>.-D
4d60: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45  SQLITE_OMIT_ALTE
4d70: 52 54 41 42 4c 45 3d 31 3c 62 72 3e 0a 2d 44 53  RTABLE=1<br>.-DS
4d80: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52  QLITE_OMIT_ALTER
4d90: 54 41 42 4c 45 3d 30 0a 3c 2f 70 3e 0a 0a 3c 70  TABLE=0.</p>..<p
4da0: 3e 49 66 20 61 6e 79 20 6f 66 20 74 68 65 73 65  >If any of these
4db0: 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 64 65 66   options are def
4dc0: 69 6e 65 64 2c 20 74 68 65 6e 20 74 68 65 20 73  ined, then the s
4dd0: 61 6d 65 20 73 65 74 20 6f 66 20 53 51 4c 49 54  ame set of SQLIT
4de0: 45 5f 4f 4d 49 54 5f 2a 0a 6f 70 74 69 6f 6e 73  E_OMIT_*.options
4df0: 20 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 64 65   must also be de
4e00: 66 69 6e 65 64 20 77 68 65 6e 20 75 73 69 6e 67  fined when using
4e10: 20 74 68 65 20 27 6c 65 6d 6f 6e 27 20 74 6f 6f   the 'lemon' too
4e20: 6c 20 74 6f 20 67 65 6e 65 72 61 74 65 20 74 68  l to generate th
4e30: 65 0a 70 61 72 73 65 2e 63 20 66 69 6c 65 20 61  e.parse.c file a
4e40: 6e 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 69 6e  nd when compilin
4e50: 67 20 74 68 65 20 27 6d 6b 6b 65 79 77 6f 72 64  g the 'mkkeyword
4e60: 68 61 73 68 27 20 74 6f 6f 6c 20 77 68 69 63 68  hash' tool which
4e70: 20 67 65 6e 65 72 61 74 65 73 20 0a 74 68 65 20   generates .the 
4e80: 6b 65 79 77 6f 72 64 68 61 73 68 2e 68 20 66 69  keywordhash.h fi
4e90: 6c 65 2e 0a 42 65 63 61 75 73 65 20 6f 66 20 74  le..Because of t
4ea0: 68 69 73 2c 20 74 68 65 73 65 20 6f 70 74 69 6f  his, these optio
4eb0: 6e 73 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75  ns may only be u
4ec0: 73 65 64 20 77 68 65 6e 20 74 68 65 20 6c 69 62  sed when the lib
4ed0: 72 61 72 79 20 69 73 20 62 75 69 6c 74 0a 66 72  rary is built.fr
4ee0: 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75  om canonical sou
4ef0: 72 63 65 2c 20 6e 6f 74 20 66 72 6f 6d 20 74 68  rce, not from th
4f00: 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d  e [amalgamation]
4f10: 20 6f 72 20 66 72 6f 6d 20 74 68 65 20 63 6f 6c   or from the col
4f20: 6c 65 63 74 69 6f 6e 20 6f 66 0a 70 72 65 2d 70  lection of.pre-p
4f30: 61 63 6b 61 67 65 64 20 43 20 66 69 6c 65 73 20  ackaged C files 
4f40: 70 72 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e  provided for non
4f50: 2d 55 6e 69 78 20 6c 69 6b 65 20 70 6c 61 74 66  -Unix like platf
4f60: 6f 72 6d 73 20 6f 6e 20 74 68 65 20 77 65 62 73  orms on the webs
4f70: 69 74 65 2e 0a 41 6e 79 20 53 51 4c 49 54 45 5f  ite..Any SQLITE_
4f80: 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 77  OMIT_* options w
4f90: 68 69 63 68 20 63 61 6e 20 62 65 20 75 73 65 64  hich can be used
4fa0: 20 64 69 72 65 63 74 6c 79 20 77 69 74 68 20 74   directly with t
4fb0: 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  he [amalgamation
4fc0: 5d 20 0a 61 72 65 20 6c 69 73 74 65 64 20 62 65  ] .are listed be
4fd0: 6c 6f 77 2c 20 68 6f 77 65 76 65 72 2c 20 74 68  low, however, th
4fe0: 65 20 77 61 72 6e 69 6e 67 73 20 69 6e 20 74 68  e warnings in th
4ff0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 72 61  e following para
5000: 67 72 61 70 68 20 73 68 6f 75 6c 64 20 62 65 20  graph should be 
5010: 6e 6f 74 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 62 6c  noted..</p>..<bl
5020: 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62 3e  ockquote>.<i><b>
5030: 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65 3a 3c  Important Note:<
5040: 2f 62 3e 20 54 68 65 20 53 51 4c 49 54 45 5f 4f  /b> The SQLITE_O
5050: 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 64 6f  MIT_* options do
5060: 20 6e 6f 74 20 77 6f 72 6b 20 77 69 74 68 20 74   not work with t
5070: 68 65 0a 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  he.[amalgamation
5080: 5d 20 6f 72 20 77 69 74 68 20 70 72 65 2d 70 61  ] or with pre-pa
5090: 63 6b 61 67 65 64 20 43 20 63 6f 64 65 20 66 69  ckaged C code fi
50a0: 6c 65 73 2e 20 20 53 51 4c 49 54 45 5f 4f 4d 49  les.  SQLITE_OMI
50b0: 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  T_* compile-time
50c0: 0a 6f 70 74 69 6f 6e 73 20 6f 6e 6c 79 20 77 6f  .options only wo
50d0: 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 77 68 65  rk correctly whe
50e0: 6e 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c  n SQLite is buil
50f0: 74 20 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c  t from canonical
5100: 20 73 6f 75 72 63 65 20 66 69 6c 65 73 2e 0a 3c   source files..<
5110: 2f 69 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  /i>.</blockquote
5120: 3e 0a 0a 0a 3c 70 3e 53 70 65 63 69 61 6c 20 76  >...<p>Special v
5130: 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 53  ersions of the S
5140: 51 4c 69 74 65 20 61 6d 61 6c 67 61 6d 61 74 69  QLite amalgamati
5150: 6f 6e 20 74 68 61 74 20 64 6f 20 77 6f 72 6b 20  on that do work 
5160: 77 69 74 68 20 61 0a 70 72 65 64 65 74 65 72 6d  with a.predeterm
5170: 69 6e 65 64 20 73 65 74 20 6f 66 20 53 51 4c 49  ined set of SQLI
5180: 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e  TE_OMIT_* option
5190: 73 20 63 61 6e 20 62 65 20 67 65 6e 65 72 61 74  s can be generat
51a0: 65 64 2e 20 20 54 6f 20 64 6f 20 73 6f 2c 0a 6d  ed.  To do so,.m
51b0: 61 6b 65 20 61 20 63 6f 70 79 20 6f 66 20 74 68  ake a copy of th
51c0: 65 20 4d 61 6b 65 66 69 6c 65 2e 6c 69 6e 75 78  e Makefile.linux
51d0: 2d 67 63 63 20 6d 61 6b 65 66 69 6c 65 20 74 65  -gcc makefile te
51e0: 6d 70 6c 61 74 65 20 69 6e 20 74 68 65 20 63 61  mplate in the ca
51f0: 6e 6f 6e 69 63 61 6c 0a 73 6f 75 72 63 65 20 63  nonical.source c
5200: 6f 64 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e  ode distribution
5210: 2e 20 20 43 68 61 6e 67 65 20 74 68 65 20 6e 61  .  Change the na
5220: 6d 65 20 6f 66 20 79 6f 75 72 20 63 6f 70 79 20  me of your copy 
5230: 74 6f 20 73 69 6d 70 6c 79 20 22 4d 61 6b 65 66  to simply "Makef
5240: 69 6c 65 22 2e 0a 54 68 65 6e 20 65 64 69 74 20  ile"..Then edit 
5250: 22 4d 61 6b 65 66 69 6c 65 22 20 74 6f 20 73 65  "Makefile" to se
5260: 74 20 75 70 20 61 70 70 72 6f 70 72 69 61 74 65  t up appropriate
5270: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
5280: 74 69 6f 6e 73 2e 20 20 54 68 65 6e 0a 74 79 70  tions.  Then.typ
5290: 65 3a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c  e:.<blockquote><
52a0: 74 74 3e 6d 61 6b 65 20 63 6c 65 61 6e 3b 20 6d  tt>make clean; m
52b0: 61 6b 65 20 73 71 6c 69 74 65 33 2e 63 3c 2f 74  ake sqlite3.c</t
52c0: 74 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  t></blockquote>.
52d0: 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20 22 73  The resulting "s
52e0: 71 6c 69 74 65 33 2e 63 22 20 61 6d 61 6c 67 61  qlite3.c" amalga
52f0: 6d 61 74 69 6f 6e 20 63 6f 64 65 20 66 69 6c 65  mation code file
5300: 20 28 61 6e 64 20 69 74 73 20 61 73 73 6f 63 69   (and its associ
5310: 61 74 65 64 0a 68 65 61 64 65 72 20 66 69 6c 65  ated.header file
5320: 20 22 73 71 6c 69 74 65 33 2e 68 22 29 20 63 61   "sqlite3.h") ca
5330: 6e 20 74 68 65 6e 20 62 65 20 6d 6f 76 65 64 20  n then be moved 
5340: 74 6f 20 61 20 6e 6f 6e 2d 75 6e 69 78 20 70 6c  to a non-unix pl
5350: 61 74 66 6f 72 6d 0a 66 6f 72 20 66 69 6e 61 6c  atform.for final
5360: 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 75 73 69   compilation usi
5370: 6e 67 20 61 20 6e 61 74 69 76 65 20 63 6f 6d 70  ng a native comp
5380: 69 6c 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6c  iler.</p>..<p>Al
5390: 6c 20 6f 66 20 74 68 65 20 53 51 4c 49 54 45 5f  l of the SQLITE_
53a0: 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 61  OMIT_* options a
53b0: 72 65 20 75 6e 73 75 70 70 6f 72 74 65 64 2e 3c  re unsupported.<
53c0: 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
53d0: 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61 6e  >.<i><b>Importan
53e0: 74 20 4e 6f 74 65 3a 3c 2f 62 3e 0a 54 68 65 20  t Note:</b>.The 
53f0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f  SQLITE_OMIT_* co
5400: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
5410: 6e 73 20 61 72 65 20 75 6e 73 75 70 70 6f 72 74  ns are unsupport
5420: 65 64 2e 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b 71  ed..</i></blockq
5430: 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20 53  uote>..<p>.The S
5440: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d  QLITE_OMIT_* com
5450: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
5460: 73 20 61 72 65 20 75 73 75 61 6c 6c 79 20 75 6e  s are usually un
5470: 74 65 73 74 65 64 20 61 6e 64 0a 61 72 65 20 61  tested and.are a
5480: 6c 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c 79 20  lmost certainly 
5490: 75 6e 74 65 73 74 65 64 20 69 6e 20 63 6f 6d 62  untested in comb
54a0: 69 6e 61 74 69 6f 6e 2e 0a 41 6e 79 20 6f 72 20  ination..Any or 
54b0: 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 6f 70 74  all of these opt
54c0: 69 6f 6e 73 20 6d 61 79 20 62 65 20 72 65 6d 6f  ions may be remo
54d0: 76 65 64 20 66 72 6f 6d 20 74 68 65 20 63 6f 64  ved from the cod
54e0: 65 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65  e in future rele
54f0: 61 73 65 73 0a 61 6e 64 20 77 69 74 68 6f 75 74  ases.and without
5500: 20 77 61 72 6e 69 6e 67 2e 20 20 46 6f 72 20 61   warning.  For a
5510: 6e 79 20 70 61 72 74 69 63 75 6c 61 72 20 72 65  ny particular re
5520: 6c 65 61 73 65 2c 20 73 6f 6d 65 20 6f 66 20 74  lease, some of t
5530: 68 65 73 65 0a 6f 70 74 69 6f 6e 73 20 6d 61 79  hese.options may
5540: 20 63 61 75 73 65 20 63 6f 6d 70 69 6c 65 2d 74   cause compile-t
5550: 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69 6d 65 20  ime or run-time 
5560: 66 61 69 6c 75 72 65 73 2c 20 70 61 72 74 69 63  failures, partic
5570: 75 6c 61 72 6c 79 0a 77 68 65 6e 20 75 73 65 64  ularly.when used
5580: 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20   in combination 
5590: 77 69 74 68 20 6f 74 68 65 72 20 6f 70 74 69 6f  with other optio
55a0: 6e 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 43  ns.</p>..<tcl>.C
55b0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
55c0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52  QLITE_OMIT_ALTER
55d0: 54 41 42 4c 45 7d 20 7b 0a 20 20 57 68 65 6e 20  TABLE} {.  When 
55e0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
55f0: 65 66 69 6e 65 64 2c 20 74 68 65 20 0a 20 20 5b  efined, the .  [
5600: 41 4c 54 45 52 20 54 41 42 4c 45 5d 20 63 6f 6d  ALTER TABLE] com
5610: 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c  mand is not incl
5620: 75 64 65 64 20 69 6e 20 74 68 65 20 0a 20 20 6c  uded in the .  l
5630: 69 62 72 61 72 79 2e 20 45 78 65 63 75 74 69 6e  ibrary. Executin
5640: 67 20 61 6e 20 5b 41 4c 54 45 52 20 54 41 42 4c  g an [ALTER TABL
5650: 45 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75  E] statement cau
5660: 73 65 73 20 61 20 70 61 72 73 65 20 65 72 72 6f  ses a parse erro
5670: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
5680: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
5690: 54 5f 41 4e 41 4c 59 5a 45 7d 20 7b 0a 20 20 57  T_ANALYZE} {.  W
56a0: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
56b0: 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20  is defined, the 
56c0: 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e  [ANALYZE] comman
56d0: 64 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f  d is omitted fro
56e0: 6d 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d  m.  the build..}
56f0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
5700: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 54   {SQLITE_OMIT_AT
5710: 54 41 43 48 7d 20 7b 0a 20 20 57 68 65 6e 20 74  TACH} {.  When t
5720: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
5730: 66 69 6e 65 64 2c 20 74 68 65 20 5b 41 54 54 41  fined, the [ATTA
5740: 43 48 5d 20 61 6e 64 20 5b 44 45 54 41 43 48 5d  CH] and [DETACH]
5750: 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 0a 20 20   commands are.  
5760: 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65  omitted from the
5770: 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49   build..}..COMPI
5780: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
5790: 45 5f 4f 4d 49 54 5f 41 55 54 48 4f 52 49 5a 41  E_OMIT_AUTHORIZA
57a0: 54 49 4f 4e 7d 20 7b 0a 20 20 44 65 66 69 6e 69  TION} {.  Defini
57b0: 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f  ng this option o
57c0: 6d 69 74 73 20 74 68 65 20 61 75 74 68 6f 72 69  mits the authori
57d0: 7a 61 74 69 6f 6e 20 63 61 6c 6c 62 61 63 6b 20  zation callback 
57e0: 66 65 61 74 75 72 65 20 66 72 6f 6d 20 74 68 65  feature from the
57f0: 0a 20 20 6c 69 62 72 61 72 79 2e 20 54 68 65 20  .  library. The 
5800: 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74  [sqlite3_set_aut
5810: 68 6f 72 69 7a 65 72 28 29 5d 20 41 50 49 20 66  horizer()] API f
5820: 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 70  unction is not p
5830: 72 65 73 65 6e 74 0a 20 20 69 6e 20 74 68 65 20  resent.  in the 
5840: 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50  library..}..COMP
5850: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
5860: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 43 52  TE_OMIT_AUTOINCR
5870: 45 4d 45 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20  EMENT} {.  This 
5880: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
5890: 6f 20 6f 6d 69 74 20 74 68 65 20 0a 20 20 5b 41  o omit the .  [A
58a0: 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d 20 66 75  UTOINCREMENT] fu
58b0: 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20 57 68 65  nctionality. Whe
58c0: 6e 20 74 68 69 73 20 0a 20 20 69 73 20 6d 61 63  n this .  is mac
58d0: 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 63  ro is defined, c
58e0: 6f 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65 64 20  olumns declared 
58f0: 61 73 20 0a 20 20 22 5b 49 4e 54 45 47 45 52 20  as .  "[INTEGER 
5900: 50 52 49 4d 41 52 59 20 4b 45 59 5d 20 41 55 54  PRIMARY KEY] AUT
5910: 4f 49 4e 43 52 45 4d 45 4e 54 22 0a 20 20 62 65  OINCREMENT".  be
5920: 68 61 76 65 20 69 6e 20 74 68 65 20 73 61 6d 65  have in the same
5930: 20 77 61 79 20 61 73 20 63 6f 6c 75 6d 6e 73 20   way as columns 
5940: 64 65 63 6c 61 72 65 64 20 61 73 20 22 5b 49 4e  declared as "[IN
5950: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
5960: 59 5d 22 20 77 68 65 6e 20 61 20 0a 20 20 4e 55  Y]" when a .  NU
5970: 4c 4c 20 69 73 20 69 6e 73 65 72 74 65 64 2e 20  LL is inserted. 
5980: 54 68 65 20 73 71 6c 69 74 65 5f 73 65 71 75 65  The sqlite_seque
5990: 6e 63 65 20 73 79 73 74 65 6d 20 74 61 62 6c 65  nce system table
59a0: 20 69 73 20 6e 65 69 74 68 65 72 20 63 72 65 61   is neither crea
59b0: 74 65 64 2c 20 6e 6f 72 0a 20 20 72 65 73 70 65  ted, nor.  respe
59c0: 63 74 65 64 20 69 66 20 69 74 20 61 6c 72 65 61  cted if it alrea
59d0: 64 79 20 65 78 69 73 74 73 2e 0a 7d 0a 0a 43 4f  dy exists..}..CO
59e0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
59f0: 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 4d 41  LITE_OMIT_AUTOMA
5a00: 54 49 43 5f 49 4e 44 45 58 7d 20 7b 0a 20 20 54  TIC_INDEX} {.  T
5a10: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
5a20: 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 0a  ed to omit the .
5a30: 20 20 5b 61 75 74 6f 6d 61 74 69 63 20 69 6e 64    [automatic ind
5a40: 65 78 69 6e 67 5d 20 66 75 6e 63 74 69 6f 6e 61  exing] functiona
5a50: 6c 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  lity..}..COMPILE
5a60: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
5a70: 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 7d 20 7b  OMIT_AUTOINIT} {
5a80: 0a 20 20 46 6f 72 20 62 61 63 6b 77 61 72 64 73  .  For backwards
5a90: 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77   compatibility w
5aa0: 69 74 68 20 6f 6c 64 65 72 20 76 65 72 73 69 6f  ith older versio
5ab0: 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 74 68 61  ns of SQLite tha
5ac0: 74 20 6c 61 63 6b 0a 20 20 74 68 65 20 5b 73 71  t lack.  the [sq
5ad0: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
5ae0: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2c 20 74  ()] interface, t
5af0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74  he [sqlite3_init
5b00: 69 61 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72 66  ialize()] interf
5b10: 61 63 65 0a 20 20 69 73 20 63 61 6c 6c 65 64 20  ace.  is called 
5b20: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 75 70  automatically up
5b30: 6f 6e 20 65 6e 74 72 79 20 74 6f 20 63 65 72 74  on entry to cert
5b40: 61 69 6e 20 6b 65 79 20 69 6e 74 65 72 66 61 63  ain key interfac
5b50: 65 73 20 73 75 63 68 20 61 73 0a 20 20 5b 73 71  es such as.  [sq
5b60: 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b  lite3_open()], [
5b70: 73 71 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69  sqlite3_vfs_regi
5b80: 73 74 65 72 28 29 5d 2c 20 61 6e 64 20 5b 73 71  ster()], and [sq
5b90: 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 29 5d  lite3_mprintf()]
5ba0: 2e 0a 20 20 54 68 65 20 6f 76 65 72 68 65 61 64  ..  The overhead
5bb0: 20 6f 66 20 69 6e 76 6f 6b 69 6e 67 20 5b 73 71   of invoking [sq
5bc0: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
5bd0: 28 29 5d 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ()] automaticall
5be0: 79 20 69 6e 20 74 68 69 73 0a 20 20 77 61 79 20  y in this.  way 
5bf0: 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64 20 62  may be omitted b
5c00: 79 20 62 75 69 6c 64 69 6e 67 20 53 51 4c 69 74  y building SQLit
5c10: 65 20 77 69 74 68 20 74 68 65 20 53 51 4c 49 54  e with the SQLIT
5c20: 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 0a  E_OMIT_AUTOINIT.
5c30: 20 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72    C-preprocessor
5c40: 20 6d 61 63 72 6f 2e 20 20 57 68 65 6e 20 62 75   macro.  When bu
5c50: 69 6c 74 20 75 73 69 6e 67 20 53 51 4c 49 54 45  ilt using SQLITE
5c60: 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 2c 20  _OMIT_AUTOINIT, 
5c70: 53 51 4c 69 74 65 0a 20 20 77 69 6c 6c 20 6e 6f  SQLite.  will no
5c80: 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  t automatically 
5c90: 69 6e 69 74 69 61 6c 69 7a 65 20 69 74 73 65 6c  initialize itsel
5ca0: 66 20 61 6e 64 20 74 68 65 20 61 70 70 6c 69 63  f and the applic
5cb0: 61 74 69 6f 6e 20 69 73 20 72 65 71 75 69 72 65  ation is require
5cc0: 64 0a 20 20 74 6f 20 69 6e 76 6f 6b 65 20 5b 73  d.  to invoke [s
5cd0: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
5ce0: 65 28 29 5d 20 64 69 72 65 63 74 6c 79 20 70 72  e()] directly pr
5cf0: 69 6f 72 20 74 6f 20 62 65 67 69 6e 6e 69 6e 67  ior to beginning
5d00: 20 75 73 65 20 6f 66 20 74 68 65 0a 20 20 53 51   use of the.  SQ
5d10: 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a  Lite library..}.
5d20: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
5d30: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54  {SQLITE_OMIT_AUT
5d40: 4f 56 41 43 55 55 4d 7d 20 7b 0a 20 20 49 66 20  OVACUUM} {.  If 
5d50: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
5d60: 65 66 69 6e 65 64 2c 20 74 68 65 20 6c 69 62 72  efined, the libr
5d70: 61 72 79 20 63 61 6e 6e 6f 74 20 63 72 65 61 74  ary cannot creat
5d80: 65 20 6f 72 20 77 72 69 74 65 20 74 6f 20 0a 20  e or write to . 
5d90: 20 64 61 74 61 62 61 73 65 73 20 74 68 61 74 20   databases that 
5da0: 73 75 70 70 6f 72 74 20 5b 61 75 74 6f 5f 76 61  support [auto_va
5db0: 63 75 75 6d 5d 2e 0a 20 20 45 78 65 63 75 74 69  cuum]..  Executi
5dc0: 6e 67 20 61 20 5b 50 52 41 47 4d 41 20 61 75 74  ng a [PRAGMA aut
5dd0: 6f 5f 76 61 63 75 75 6d 5d 20 73 74 61 74 65 6d  o_vacuum] statem
5de0: 65 6e 74 20 69 73 20 6e 6f 74 20 61 6e 20 65 72  ent is not an er
5df0: 72 6f 72 0a 20 20 28 73 69 6e 63 65 20 75 6e 6b  ror.  (since unk
5e00: 6e 6f 77 6e 20 50 52 41 47 4d 41 73 20 61 72 65  nown PRAGMAs are
5e10: 20 73 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65   silently ignore
5e20: 64 29 2c 20 62 75 74 20 64 6f 65 73 20 6e 6f 74  d), but does not
5e30: 20 72 65 74 75 72 6e 20 61 20 76 61 6c 75 65 0a   return a value.
5e40: 20 20 6f 72 20 6d 6f 64 69 66 79 20 74 68 65 20    or modify the 
5e50: 61 75 74 6f 2d 76 61 63 75 75 6d 20 66 6c 61 67  auto-vacuum flag
5e60: 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65   in the database
5e70: 20 66 69 6c 65 2e 20 49 66 20 61 20 64 61 74 61   file. If a data
5e80: 62 61 73 65 20 74 68 61 74 0a 20 20 73 75 70 70  base that.  supp
5e90: 6f 72 74 73 20 61 75 74 6f 2d 76 61 63 75 75 6d  orts auto-vacuum
5ea0: 20 69 73 20 6f 70 65 6e 65 64 20 62 79 20 61 20   is opened by a 
5eb0: 6c 69 62 72 61 72 79 20 63 6f 6d 70 69 6c 65 64  library compiled
5ec0: 20 77 69 74 68 20 74 68 69 73 20 6f 70 74 69 6f   with this optio
5ed0: 6e 2c 20 69 74 0a 20 20 69 73 20 61 75 74 6f 6d  n, it.  is autom
5ee0: 61 74 69 63 61 6c 6c 79 20 6f 70 65 6e 65 64 20  atically opened 
5ef0: 69 6e 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64  in read-only mod
5f00: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
5f10: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
5f20: 54 5f 42 45 54 57 45 45 4e 5f 4f 50 54 49 4d 49  T_BETWEEN_OPTIMI
5f30: 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73  ZATION} {.  This
5f40: 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73   option disables
5f50: 20 74 68 65 20 75 73 65 20 6f 66 20 69 6e 64 69   the use of indi
5f60: 63 65 73 20 77 69 74 68 20 57 48 45 52 45 20 63  ces with WHERE c
5f70: 6c 61 75 73 65 20 74 65 72 6d 73 0a 20 20 74 68  lause terms.  th
5f80: 61 74 20 65 6d 70 6c 6f 79 20 74 68 65 20 42 45  at employ the BE
5f90: 54 57 45 45 4e 20 6f 70 65 72 61 74 6f 72 2e 0a  TWEEN operator..
5fa0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
5fb0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42  N {SQLITE_OMIT_B
5fc0: 4c 4f 42 5f 4c 49 54 45 52 41 4c 7d 20 7b 0a 20  LOB_LITERAL} {. 
5fd0: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
5fe0: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 69 74  n is defined, it
5ff0: 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65   is not possible
6000: 20 74 6f 20 73 70 65 63 69 66 79 20 61 20 62 6c   to specify a bl
6010: 6f 62 20 69 6e 0a 20 20 61 6e 20 53 51 4c 20 73  ob in.  an SQL s
6020: 74 61 74 65 6d 65 6e 74 20 75 73 69 6e 67 20 74  tatement using t
6030: 68 65 20 58 27 41 42 43 44 27 20 73 79 6e 74 61  he X'ABCD' synta
6040: 78 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  x..}..COMPILE_OP
6050: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
6060: 54 5f 42 54 52 45 45 43 4f 55 4e 54 7d 20 7b 0a  T_BTREECOUNT} {.
6070: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
6080: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 61  on is defined, a
6090: 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74  n optimization t
60a0: 68 61 74 20 61 63 63 65 6c 65 72 61 74 65 73 20  hat accelerates 
60b0: 63 6f 75 6e 74 69 6e 67 0a 20 20 61 6c 6c 20 65  counting.  all e
60c0: 6e 74 69 72 65 73 20 69 6e 20 61 20 74 61 62 6c  ntires in a tabl
60d0: 65 20 28 69 6e 20 6f 74 68 65 72 20 77 6f 72 64  e (in other word
60e0: 73 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69  s, an optimizati
60f0: 6f 6e 20 74 68 61 74 20 68 65 6c 70 73 0a 20 20  on that helps.  
6100: 22 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29  "SELECT count(*)
6110: 20 46 52 4f 4d 20 74 61 62 6c 65 22 20 72 75 6e   FROM table" run
6120: 20 66 61 73 74 65 72 29 20 69 73 20 6f 6d 69 74   faster) is omit
6130: 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ted..}..COMPILE_
6140: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
6150: 4d 49 54 5f 42 55 49 4c 54 49 4e 5f 54 45 53 54  MIT_BUILTIN_TEST
6160: 7d 20 7b 0a 20 20 41 20 73 74 61 6e 64 61 72 64  } {.  A standard
6170: 20 53 51 4c 69 74 65 20 62 75 69 6c 64 20 69 6e   SQLite build in
6180: 63 6c 75 64 65 73 20 61 20 73 6d 61 6c 6c 20 61  cludes a small a
6190: 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 63  mount of logic c
61a0: 6f 6e 74 72 6f 6c 6c 65 64 0a 20 20 62 79 20 74  ontrolled.  by t
61b0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 65 73 74  he [sqlite3_test
61c0: 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 69 6e 74 65  _control()] inte
61d0: 72 66 61 63 65 20 74 68 61 74 20 69 73 20 75 73  rface that is us
61e0: 65 64 20 74 6f 20 65 78 65 72 63 69 73 65 0a 20  ed to exercise. 
61f0: 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 53 51   parts of the SQ
6200: 4c 69 74 65 20 63 6f 72 65 20 74 68 61 74 20 61  Lite core that a
6210: 72 65 20 64 69 66 66 69 63 75 6c 74 20 74 6f 20  re difficult to 
6220: 63 6f 6e 74 72 6f 6c 20 61 6e 64 20 6d 65 61 73  control and meas
6230: 75 72 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20  ure using.  the 
6240: 73 74 61 6e 64 61 72 64 20 41 50 49 2e 20 20 54  standard API.  T
6250: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
6260: 20 74 68 61 74 20 62 75 69 6c 74 2d 69 6e 20 74   that built-in t
6270: 65 73 74 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f  est logic..}..CO
6280: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
6290: 4c 49 54 45 5f 4f 4d 49 54 5f 43 41 53 54 7d 20  LITE_OMIT_CAST} 
62a0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
62b0: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
62c0: 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f   omit support fo
62d0: 72 20 74 68 65 20 43 41 53 54 20 6f 70 65 72 61  r the CAST opera
62e0: 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  tor..}..COMPILE_
62f0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
6300: 4d 49 54 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54  MIT_CHECK} {.  T
6310: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
6320: 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74  s SQLite to omit
6330: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 43 48 45   support for CHE
6340: 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a  CK constraints..
6350: 20 20 54 68 65 20 70 61 72 73 65 72 20 77 69 6c    The parser wil
6360: 6c 20 73 74 69 6c 6c 20 61 63 63 65 70 74 20 43  l still accept C
6370: 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73  HECK constraints
6380: 20 69 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   in SQL statemen
6390: 74 73 2c 0a 20 20 74 68 65 79 20 77 69 6c 6c 20  ts,.  they will 
63a0: 6a 75 73 74 20 6e 6f 74 20 62 65 20 65 6e 66 6f  just not be enfo
63b0: 72 63 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rced..}..COMPILE
63c0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
63d0: 4f 4d 49 54 5f 43 4f 4d 50 49 4c 45 4f 50 54 49  OMIT_COMPILEOPTI
63e0: 4f 4e 5f 44 49 41 47 53 7d 20 7b 0a 20 20 54 68  ON_DIAGS} {.  Th
63f0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
6400: 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 6f  d to omit the co
6410: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
6420: 6e 20 64 69 61 67 6e 6f 73 74 69 63 73 20 61 76  n diagnostics av
6430: 61 69 6c 61 62 6c 65 0a 20 20 69 6e 20 53 51 4c  ailable.  in SQL
6440: 69 74 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74  ite, including t
6450: 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70  he [sqlite3_comp
6460: 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29  ileoption_used()
6470: 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33  ] and.  [sqlite3
6480: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67  _compileoption_g
6490: 65 74 28 29 5d 20 43 2f 43 2b 2b 20 66 75 6e 63  et()] C/C++ func
64a0: 74 69 6f 6e 73 2c 20 74 68 65 0a 20 20 5b 73 71  tions, the.  [sq
64b0: 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  lite_compileopti
64c0: 6f 6e 5f 75 73 65 64 28 29 5d 20 61 6e 64 20 5b  on_used()] and [
64d0: 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70  sqlite_compileop
64e0: 74 69 6f 6e 5f 67 65 74 28 29 5d 20 53 51 4c 20  tion_get()] SQL 
64f0: 66 75 6e 63 74 69 6f 6e 73 2c 0a 20 20 61 6e 64  functions,.  and
6500: 20 74 68 65 20 5b 63 6f 6d 70 69 6c 65 5f 6f 70   the [compile_op
6510: 74 69 6f 6e 73 20 70 72 61 67 6d 61 5d 2e 0a 7d  tions pragma]..}
6520: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
6530: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f   {SQLITE_OMIT_CO
6540: 4d 50 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69 73  MPLETE} {.  This
6550: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74   option causes t
6560: 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70  he [sqlite3_comp
6570: 6c 65 74 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c  lete()] and [sql
6580: 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28  ite3_complete16(
6590: 29 5d 0a 20 20 69 6e 74 65 72 66 61 63 65 73 20  )].  interfaces 
65a0: 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d  to be omitted..}
65b0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
65c0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f   {SQLITE_OMIT_CO
65d0: 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 7d 20 7b  MPOUND_SELECT} {
65e0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
65f0: 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74  s used to omit t
6600: 68 65 20 63 6f 6d 70 6f 75 6e 64 20 5b 53 45 4c  he compound [SEL
6610: 45 43 54 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69  ECT] functionali
6620: 74 79 2e 20 0a 20 20 5b 53 45 4c 45 43 54 5d 20  ty. .  [SELECT] 
6630: 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20  statements that 
6640: 75 73 65 20 74 68 65 20 0a 20 20 55 4e 49 4f 4e  use the .  UNION
6650: 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54  , UNION ALL, INT
6660: 45 52 53 45 43 54 20 6f 72 20 45 58 43 45 50 54  ERSECT or EXCEPT
6670: 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54   compound SELECT
6680: 20 6f 70 65 72 61 74 6f 72 73 20 77 69 6c 6c 20   operators will 
6690: 0a 20 20 63 61 75 73 65 20 61 20 70 61 72 73 65  .  cause a parse
66a0: 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49   error..}..COMPI
66b0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
66c0: 45 5f 4f 4d 49 54 5f 43 4f 4e 46 4c 49 43 54 5f  E_OMIT_CONFLICT_
66d0: 43 4c 41 55 53 45 7d 20 7b 0a 20 20 49 6e 20 74  CLAUSE} {.  In t
66e0: 68 65 20 66 75 74 75 72 65 2c 20 74 68 69 73 20  he future, this 
66f0: 6f 70 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 75  option will be u
6700: 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20  sed to omit the 
6710: 0a 20 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d  .  [ON CONFLICT]
6720: 20 63 6c 61 75 73 65 20 66 72 6f 6d 20 74 68 65   clause from the
6730: 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d   library..}..COM
6740: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
6750: 49 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d  ITE_OMIT_DATETIM
6760: 45 5f 46 55 4e 43 53 7d 20 7b 0a 20 20 49 66 20  E_FUNCS} {.  If 
6770: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
6780: 65 66 69 6e 65 64 2c 20 53 51 4c 69 74 65 27 73  efined, SQLite's
6790: 20 62 75 69 6c 74 2d 69 6e 20 64 61 74 65 20 61   built-in date a
67a0: 6e 64 20 74 69 6d 65 20 6d 61 6e 69 70 75 6c 61  nd time manipula
67b0: 74 69 6f 6e 0a 20 20 66 75 6e 63 74 69 6f 6e 73  tion.  functions
67c0: 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 20 53 70   are omitted. Sp
67d0: 65 63 69 66 69 63 61 6c 6c 79 2c 20 74 68 65 20  ecifically, the 
67e0: 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 20 6a 75  SQL functions ju
67f0: 6c 69 61 6e 64 61 79 28 29 2c 20 64 61 74 65 28  lianday(), date(
6800: 29 2c 0a 20 20 74 69 6d 65 28 29 2c 20 64 61 74  ),.  time(), dat
6810: 65 74 69 6d 65 28 29 20 61 6e 64 20 73 74 72 66  etime() and strf
6820: 74 69 6d 65 28 29 20 61 72 65 20 6e 6f 74 20 61  time() are not a
6830: 76 61 69 6c 61 62 6c 65 2e 20 54 68 65 20 64 65  vailable. The de
6840: 66 61 75 6c 74 20 63 6f 6c 75 6d 6e 0a 20 20 76  fault column.  v
6850: 61 6c 75 65 73 20 43 55 52 52 45 4e 54 5f 54 49  alues CURRENT_TI
6860: 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54 45  ME, CURRENT_DATE
6870: 20 61 6e 64 20 43 55 52 52 45 4e 54 5f 44 41 54   and CURRENT_DAT
6880: 45 54 49 4d 45 20 61 72 65 20 73 74 69 6c 6c 20  ETIME are still 
6890: 61 76 61 69 6c 61 62 6c 65 2e 0a 7d 0a 0a 43 4f  available..}..CO
68a0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
68b0: 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 43 4c 54 59  LITE_OMIT_DECLTY
68c0: 50 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  PE} {.  This opt
68d0: 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74  ion causes SQLit
68e0: 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72  e to omit suppor
68f0: 74 20 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c  t for the.  [sql
6900: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
6910: 74 79 70 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c  type()] and [sql
6920: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
6930: 74 79 70 65 31 36 28 29 5d 0a 20 20 69 6e 74 65  type16()].  inte
6940: 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  rfaces..}..COMPI
6950: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
6960: 45 5f 4f 4d 49 54 5f 44 45 50 52 45 43 41 54 45  E_OMIT_DEPRECATE
6970: 44 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  D} {.  This opti
6980: 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65  on causes SQLite
6990: 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74   to omit support
69a0: 20 66 6f 72 20 69 6e 74 65 72 66 61 63 65 73 0a   for interfaces.
69b0: 20 20 6d 61 72 6b 65 64 20 61 73 20 64 65 70 72    marked as depr
69c0: 65 63 61 74 65 64 2e 20 20 54 68 69 73 20 69 6e  ecated.  This in
69d0: 63 6c 75 64 65 73 20 0a 20 20 5b 73 71 6c 69 74  cludes .  [sqlit
69e0: 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75  e3_aggregate_cou
69f0: 6e 74 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65  nt()],.  [sqlite
6a00: 33 5f 65 78 70 69 72 65 64 28 29 5d 2c 0a 20 20  3_expired()],.  
6a10: 5b 73 71 6c 69 74 65 33 5f 74 72 61 6e 73 66 65  [sqlite3_transfe
6a20: 72 5f 62 69 6e 64 69 6e 67 73 28 29 5d 2c 0a 20  r_bindings()],. 
6a30: 20 5b 73 71 6c 69 74 65 33 5f 67 6c 6f 62 61 6c   [sqlite3_global
6a40: 5f 72 65 63 6f 76 65 72 28 29 5d 2c 0a 20 20 5b  _recover()],.  [
6a50: 73 71 6c 69 74 65 33 5f 74 68 72 65 61 64 5f 63  sqlite3_thread_c
6a60: 6c 65 61 6e 75 70 28 29 5d 20 61 6e 64 0a 20 20  leanup()] and.  
6a70: 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f  [sqlite3_memory_
6a80: 61 6c 61 72 6d 28 29 5d 20 69 6e 74 65 72 66 61  alarm()] interfa
6a90: 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ces..}..COMPILE_
6aa0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
6ab0: 4d 49 54 5f 44 49 53 4b 49 4f 7d 20 7b 0a 20 20  MIT_DISKIO} {.  
6ac0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
6ad0: 73 20 61 6c 6c 20 73 75 70 70 6f 72 74 20 66 6f  s all support fo
6ae0: 72 20 77 72 69 74 69 6e 67 20 74 6f 20 74 68 65  r writing to the
6af0: 20 64 69 73 6b 20 61 6e 64 20 66 6f 72 63 65 73   disk and forces
6b00: 0a 20 20 64 61 74 61 62 61 73 65 73 20 74 6f 20  .  databases to 
6b10: 65 78 69 73 74 20 69 6e 20 6d 65 6d 6f 72 79 20  exist in memory 
6b20: 6f 6e 6c 79 2e 20 20 54 68 69 73 20 6f 70 74 69  only.  This opti
6b30: 6f 6e 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  on has not been 
6b40: 0a 20 20 6d 61 69 6e 74 61 69 6e 65 64 20 61 6e  .  maintained an
6b50: 64 20 70 72 6f 62 61 62 6c 79 20 64 6f 65 73 20  d probably does 
6b60: 6e 6f 74 20 77 6f 72 6b 20 77 69 74 68 20 6e 65  not work with ne
6b70: 77 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  wer versions of 
6b80: 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  SQLite..}..COMPI
6b90: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
6ba0: 45 5f 4f 4d 49 54 5f 45 58 50 4c 41 49 4e 7d 20  E_OMIT_EXPLAIN} 
6bb0: 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69  {.  Defining thi
6bc0: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
6bd0: 74 68 65 20 5b 45 58 50 4c 41 49 4e 5d 20 63 6f  the [EXPLAIN] co
6be0: 6d 6d 61 6e 64 20 74 6f 20 62 65 20 6f 6d 69 74  mmand to be omit
6bf0: 74 65 64 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c  ted from the.  l
6c00: 69 62 72 61 72 79 2e 20 41 74 74 65 6d 70 74 69  ibrary. Attempti
6c10: 6e 67 20 74 6f 20 65 78 65 63 75 74 65 20 61 6e  ng to execute an
6c20: 20 5b 45 58 50 4c 41 49 4e 5d 20 73 74 61 74 65   [EXPLAIN] state
6c30: 6d 65 6e 74 20 77 69 6c 6c 20 63 61 75 73 65 20  ment will cause 
6c40: 61 20 70 61 72 73 65 0a 20 20 65 72 72 6f 72 2e  a parse.  error.
6c50: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6c60: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
6c70: 46 4c 41 47 5f 50 52 41 47 4d 41 53 7d 20 7b 0a  FLAG_PRAGMAS} {.
6c80: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
6c90: 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
6ca0: 61 20 73 75 62 73 65 74 20 6f 66 20 5b 50 52 41  a subset of [PRA
6cb0: 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 73 20 74 68  GMA] commands th
6cc0: 61 74 0a 20 20 71 75 65 72 79 20 61 6e 64 20 73  at.  query and s
6cd0: 65 74 20 62 6f 6f 6c 65 61 6e 20 70 72 6f 70 65  et boolean prope
6ce0: 72 74 69 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  rties..}..COMPIL
6cf0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
6d00: 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50  _OMIT_FLOATING_P
6d10: 4f 49 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f  OINT} {.  This o
6d20: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
6d30: 20 6f 6d 69 74 20 66 6c 6f 61 74 69 6e 67 2d 70   omit floating-p
6d40: 6f 69 6e 74 20 6e 75 6d 62 65 72 20 73 75 70 70  oint number supp
6d50: 6f 72 74 20 66 72 6f 6d 20 74 68 65 20 53 51 4c  ort from the SQL
6d60: 69 74 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 57  ite.  library. W
6d70: 68 65 6e 20 73 70 65 63 69 66 69 65 64 2c 20 73  hen specified, s
6d80: 70 65 63 69 66 79 69 6e 67 20 61 20 66 6c 6f 61  pecifying a floa
6d90: 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65  ting point numbe
6da0: 72 20 61 73 20 61 20 6c 69 74 65 72 61 6c 20 0a  r as a literal .
6db0: 20 20 28 69 2e 65 2e 20 22 31 2e 30 31 22 29 20    (i.e. "1.01") 
6dc0: 72 65 73 75 6c 74 73 20 69 6e 20 61 20 70 61 72  results in a par
6dd0: 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20 3c 70 3e  se error...  <p>
6de0: 49 6e 20 74 68 65 20 66 75 74 75 72 65 2c 20 74  In the future, t
6df0: 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20 61  his option may a
6e00: 6c 73 6f 20 64 69 73 61 62 6c 65 20 6f 74 68 65  lso disable othe
6e10: 72 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  r floating point
6e20: 20 0a 20 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74   .  functionalit
6e30: 79 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 74  y, for example t
6e40: 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 75  he [sqlite3_resu
6e50: 6c 74 5f 64 6f 75 62 6c 65 28 29 5d 2c 20 0a 20  lt_double()], . 
6e60: 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64   [sqlite3_bind_d
6e70: 6f 75 62 6c 65 28 29 5d 2c 20 5b 73 71 6c 69 74  ouble()], [sqlit
6e80: 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28  e3_value_double(
6e90: 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65  )] and.  [sqlite
6ea0: 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28  3_column_double(
6eb0: 29 5d 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 73  )] API functions
6ec0: 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50  ..  </p>.}..COMP
6ed0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
6ee0: 54 45 5f 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f  TE_OMIT_FOREIGN_
6ef0: 4b 45 59 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  KEY} {.  If this
6f00: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
6f10: 65 64 2c 20 74 68 65 6e 20 5b 66 6f 72 65 69 67  ed, then [foreig
6f20: 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74  n key constraint
6f30: 5d 20 73 79 6e 74 61 78 20 69 73 0a 20 20 6e 6f  ] syntax is.  no
6f40: 74 20 72 65 63 6f 67 6e 69 7a 65 64 2e 0a 7d 0a  t recognized..}.
6f50: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
6f60: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 47 45 54  {SQLITE_OMIT_GET
6f70: 5f 54 41 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73  _TABLE} {.  This
6f80: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73   option causes s
6f90: 75 70 70 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69  upport for [sqli
6fa0: 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d  te3_get_table()]
6fb0: 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
6fc0: 66 72 65 65 5f 74 61 62 6c 65 28 29 5d 20 74 6f  free_table()] to
6fd0: 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a   be omitted..}..
6fe0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
6ff0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 43 52  SQLITE_OMIT_INCR
7000: 42 4c 4f 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f  BLOB} {.  This o
7010: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70  ption causes sup
7020: 70 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69 74 65  port for [sqlite
7030: 33 5f 62 6c 6f 62 20 7c 20 69 6e 63 72 65 6d 65  3_blob | increme
7040: 6e 74 61 6c 20 42 4c 4f 42 20 49 2f 4f 5d 0a 20  ntal BLOB I/O]. 
7050: 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a   to be omitted..
7060: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
7070: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49  N {SQLITE_OMIT_I
7080: 4e 54 45 47 52 49 54 59 5f 43 48 45 43 4b 7d 20  NTEGRITY_CHECK} 
7090: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
70a0: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
70b0: 72 20 74 68 65 20 5b 69 6e 74 65 67 72 69 74 79  r the [integrity
70c0: 5f 63 68 65 63 6b 20 70 72 61 67 6d 61 5d 2e 0a  _check pragma]..
70d0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
70e0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  N {SQLITE_OMIT_L
70f0: 49 4b 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e  IKE_OPTIMIZATION
7100: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
7110: 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 61  n disables the a
7120: 62 69 6c 69 74 79 20 6f 66 20 53 51 4c 69 74 65  bility of SQLite
7130: 20 74 6f 20 75 73 65 20 69 6e 64 69 63 65 73 20   to use indices 
7140: 74 6f 20 68 65 6c 70 0a 20 20 72 65 73 6f 6c 76  to help.  resolv
7150: 65 20 5b 4c 49 4b 45 5d 20 61 6e 64 20 5b 47 4c  e [LIKE] and [GL
7160: 4f 42 5d 20 6f 70 65 72 61 74 6f 72 73 20 69 6e  OB] operators in
7170: 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 2e   a WHERE clause.
7180: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
7190: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
71a0: 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e 7d 20  LOAD_EXTENSION} 
71b0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
71c0: 6f 6d 69 74 73 20 74 68 65 20 65 6e 74 69 72 65  omits the entire
71d0: 20 65 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69   extension loadi
71e0: 6e 67 20 6d 65 63 68 61 6e 69 73 6d 20 66 72 6f  ng mechanism fro
71f0: 6d 0a 20 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c  m.  SQLite, incl
7200: 75 64 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 65  uding [sqlite3_e
7210: 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e  nable_load_exten
7220: 73 69 6f 6e 28 29 5d 20 61 6e 64 0a 20 20 5b 73  sion()] and.  [s
7230: 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65  qlite3_load_exte
7240: 6e 73 69 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61  nsion()] interfa
7250: 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ces..}..COMPILE_
7260: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
7270: 4d 49 54 5f 4c 4f 43 41 4c 54 49 4d 45 7d 20 7b  MIT_LOCALTIME} {
7280: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
7290: 6d 69 74 73 20 74 68 65 20 22 6c 6f 63 61 6c 74  mits the "localt
72a0: 69 6d 65 22 20 6d 6f 64 69 66 69 65 72 20 66 72  ime" modifier fr
72b0: 6f 6d 20 74 68 65 20 64 61 74 65 20 61 6e 64 20  om the date and 
72c0: 74 69 6d 65 0a 20 20 66 75 6e 63 74 69 6f 6e 73  time.  functions
72d0: 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
72e0: 73 20 73 6f 6d 65 74 69 6d 65 73 20 75 73 65 66  s sometimes usef
72f0: 75 6c 20 77 68 65 6e 20 74 72 79 69 6e 67 20 74  ul when trying t
7300: 6f 20 63 6f 6d 70 69 6c 65 0a 20 20 74 68 65 20  o compile.  the 
7310: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75  date and time fu
7320: 6e 63 74 69 6f 6e 73 20 6f 6e 20 61 20 70 6c 61  nctions on a pla
7330: 74 66 6f 72 6d 20 74 68 61 74 20 64 6f 65 73 20  tform that does 
7340: 6e 6f 74 20 73 75 70 70 6f 72 74 20 74 68 65 0a  not support the.
7350: 20 20 63 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 63    concept of loc
7360: 61 6c 20 74 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50  al time..}..COMP
7370: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7380: 54 45 5f 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44  TE_OMIT_LOOKASID
7390: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
73a0: 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 5b 6c 6f  on omits the [lo
73b0: 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20 61  okaside memory a
73c0: 6c 6c 6f 63 61 74 6f 72 5d 2e 0a 7d 0a 0a 43 4f  llocator]..}..CO
73d0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
73e0: 4c 49 54 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59  LITE_OMIT_MEMORY
73f0: 44 42 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  DB} {.  When thi
7400: 73 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  s is defined, th
7410: 65 20 6c 69 62 72 61 72 79 20 64 6f 65 73 20 6e  e library does n
7420: 6f 74 20 72 65 73 70 65 63 74 20 74 68 65 20 73  ot respect the s
7430: 70 65 63 69 61 6c 20 64 61 74 61 62 61 73 65 0a  pecial database.
7440: 20 20 6e 61 6d 65 20 22 3a 6d 65 6d 6f 72 79 3a    name ":memory:
7450: 22 20 28 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64  " (normally used
7460: 20 74 6f 20 63 72 65 61 74 65 20 61 6e 20 5b 69   to create an [i
7470: 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73  n-memory databas
7480: 65 5d 29 2e 20 49 66 20 0a 20 20 22 3a 6d 65 6d  e]). If .  ":mem
7490: 6f 72 79 3a 22 20 69 73 20 70 61 73 73 65 64 20  ory:" is passed 
74a0: 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  to [sqlite3_open
74b0: 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70  ()], [sqlite3_op
74c0: 65 6e 31 36 28 29 5d 2c 20 6f 72 0a 20 20 5b 73  en16()], or.  [s
74d0: 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29  qlite3_open_v2()
74e0: 5d 2c 20 61 20 66 69 6c 65 20 77 69 74 68 20 74  ], a file with t
74f0: 68 69 73 20 6e 61 6d 65 20 77 69 6c 6c 20 62 65  his name will be
7500: 20 0a 20 20 6f 70 65 6e 65 64 20 6f 72 20 63 72   .  opened or cr
7510: 65 61 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  eated..}..COMPIL
7520: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7530: 5f 4f 4d 49 54 5f 4f 52 5f 4f 50 54 49 4d 49 5a  _OMIT_OR_OPTIMIZ
7540: 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20  ATION} {.  This 
7550: 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20  option disables 
7560: 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66 20 53  the ability of S
7570: 51 4c 69 74 65 20 74 6f 20 75 73 65 20 61 6e 20  QLite to use an 
7580: 69 6e 64 65 78 20 74 6f 67 65 74 68 65 72 0a 20  index together. 
7590: 20 77 69 74 68 20 74 65 72 6d 73 20 6f 66 20 61   with terms of a
75a0: 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63 6f   WHERE clause co
75b0: 6e 6e 65 63 74 65 64 20 62 79 20 74 68 65 20 4f  nnected by the O
75c0: 52 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43  R operator..}..C
75d0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
75e0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47 45 52  QLITE_OMIT_PAGER
75f0: 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65  _PRAGMAS} {.  De
7600: 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69  fining this opti
7610: 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d 61 73  on omits pragmas
7620: 20 72 65 6c 61 74 65 64 20 74 6f 20 74 68 65 20   related to the 
7630: 70 61 67 65 72 20 73 75 62 73 79 73 74 65 6d 20  pager subsystem 
7640: 66 72 6f 6d 20 0a 20 20 74 68 65 20 62 75 69 6c  from .  the buil
7650: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
7660: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
7670: 54 5f 50 52 41 47 4d 41 7d 20 7b 0a 20 20 54 68  T_PRAGMA} {.  Th
7680: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
7690: 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 5b 50  d to omit the [P
76a0: 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 0a 20  RAGMA] command. 
76b0: 20 66 72 6f 6d 20 74 68 65 20 6c 69 62 72 61 72   from the librar
76c0: 79 2e 20 4e 6f 74 65 20 74 68 61 74 20 69 74 20  y. Note that it 
76d0: 69 73 20 75 73 65 66 75 6c 20 74 6f 20 64 65 66  is useful to def
76e0: 69 6e 65 20 74 68 65 20 6d 61 63 72 6f 73 20 74  ine the macros t
76f0: 68 61 74 20 6f 6d 69 74 0a 20 20 73 70 65 63 69  hat omit.  speci
7700: 66 69 63 20 70 72 61 67 6d 61 73 20 69 6e 20 61  fic pragmas in a
7710: 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 69 73 2c  ddition to this,
7720: 20 61 73 20 74 68 65 79 20 6d 61 79 20 61 6c 73   as they may als
7730: 6f 20 72 65 6d 6f 76 65 20 73 75 70 70 6f 72 74  o remove support
7740: 69 6e 67 20 63 6f 64 65 0a 20 20 69 6e 20 6f 74  ing code.  in ot
7750: 68 65 72 20 73 75 62 2d 73 79 73 74 65 6d 73 2e  her sub-systems.
7760: 20 54 68 69 73 20 6d 61 63 72 6f 20 72 65 6d 6f   This macro remo
7770: 76 65 73 20 74 68 65 20 5b 50 52 41 47 4d 41 5d  ves the [PRAGMA]
7780: 20 63 6f 6d 6d 61 6e 64 20 6f 6e 6c 79 2e 0a 7d   command only..}
7790: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
77a0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52   {SQLITE_OMIT_PR
77b0: 4f 47 52 45 53 53 5f 43 41 4c 4c 42 41 43 4b 7d  OGRESS_CALLBACK}
77c0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
77d0: 20 6d 61 79 20 62 65 20 64 65 66 69 6e 65 64 20   may be defined 
77e0: 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 61 70 61  to omit the capa
77f0: 62 69 6c 69 74 79 20 74 6f 20 69 73 73 75 65 20  bility to issue 
7800: 22 70 72 6f 67 72 65 73 73 22 20 0a 20 20 63 61  "progress" .  ca
7810: 6c 6c 62 61 63 6b 73 20 64 75 72 69 6e 67 20 6c  llbacks during l
7820: 6f 6e 67 2d 72 75 6e 6e 69 6e 67 20 53 51 4c 20  ong-running SQL 
7830: 73 74 61 74 65 6d 65 6e 74 73 2e 20 54 68 65 20  statements. The 
7840: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f 67  .  [sqlite3_prog
7850: 72 65 73 73 5f 68 61 6e 64 6c 65 72 28 29 5d 0a  ress_handler()].
7860: 20 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 69    API function i
7870: 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 20 69 6e  s not present in
7880: 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a   the library..}.
7890: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
78a0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 51 55 49  {SQLITE_OMIT_QUI
78b0: 43 4b 42 41 4c 41 4e 43 45 7d 20 7b 0a 20 20 54  CKBALANCE} {.  T
78c0: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
78d0: 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 2c   an alternative,
78e0: 20 66 61 73 74 65 72 20 42 2d 54 72 65 65 20 62   faster B-Tree b
78f0: 61 6c 61 6e 63 69 6e 67 20 72 6f 75 74 69 6e 65  alancing routine
7900: 2e 0a 20 20 55 73 69 6e 67 20 74 68 69 73 20 6f  ..  Using this o
7910: 70 74 69 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69  ption makes SQLi
7920: 74 65 20 73 6c 69 67 68 74 6c 79 20 73 6d 61 6c  te slightly smal
7930: 6c 65 72 20 61 74 20 74 68 65 20 65 78 70 65 6e  ler at the expen
7940: 73 65 20 6f 66 0a 20 20 6d 61 6b 69 6e 67 20 69  se of.  making i
7950: 74 20 72 75 6e 20 73 6c 69 67 68 74 6c 79 20 73  t run slightly s
7960: 6c 6f 77 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  lower..}..COMPIL
7970: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7980: 5f 4f 4d 49 54 5f 52 45 49 4e 44 45 58 7d 20 7b  _OMIT_REINDEX} {
7990: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
79a0: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
79b0: 74 68 65 20 5b 52 45 49 4e 44 45 58 5d 0a 20 20  the [REINDEX].  
79c0: 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69  command is not i
79d0: 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6c  ncluded in the l
79e0: 69 62 72 61 72 79 2e 0a 20 20 45 78 65 63 75 74  ibrary..  Execut
79f0: 69 6e 67 20 61 20 5b 52 45 49 4e 44 45 58 5d 20  ing a [REINDEX] 
7a00: 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73  statement causes
7a10: 20 0a 20 20 61 20 70 61 72 73 65 20 65 72 72 6f   .  a parse erro
7a20: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
7a30: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
7a40: 54 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d 41 53  T_SCHEMA_PRAGMAS
7a50: 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74  } {.  Defining t
7a60: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
7a70: 20 70 72 61 67 6d 61 73 20 66 6f 72 20 71 75 65   pragmas for que
7a80: 72 79 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  rying the databa
7a90: 73 65 20 73 63 68 65 6d 61 20 66 72 6f 6d 20 0a  se schema from .
7aa0: 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a    the build..}..
7ab0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
7ac0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45  SQLITE_OMIT_SCHE
7ad0: 4d 41 5f 56 45 52 53 49 4f 4e 5f 50 52 41 47 4d  MA_VERSION_PRAGM
7ae0: 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67  AS} {.  Defining
7af0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   this option omi
7b00: 74 73 20 70 72 61 67 6d 61 73 20 66 6f 72 20 71  ts pragmas for q
7b10: 75 65 72 79 69 6e 67 20 61 6e 64 20 6d 6f 64 69  uerying and modi
7b20: 66 79 69 6e 67 20 74 68 65 20 0a 20 20 64 61 74  fying the .  dat
7b30: 61 62 61 73 65 20 73 63 68 65 6d 61 20 76 65 72  abase schema ver
7b40: 73 69 6f 6e 20 61 6e 64 20 75 73 65 72 20 76 65  sion and user ve
7b50: 72 73 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 62  rsion from the b
7b60: 75 69 6c 64 2e 20 53 70 65 63 69 66 69 63 61 6c  uild. Specifical
7b70: 6c 79 2c 20 74 68 65 20 0a 20 20 5b 73 63 68 65  ly, the .  [sche
7b80: 6d 61 5f 76 65 72 73 69 6f 6e 5d 20 61 6e 64 20  ma_version] and 
7b90: 5b 75 73 65 72 5f 76 65 72 73 69 6f 6e 5d 20 50  [user_version] P
7ba0: 52 41 47 4d 41 73 20 61 72 65 20 6f 6d 69 74 74  RAGMAs are omitt
7bb0: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
7bc0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
7bd0: 49 54 5f 53 48 41 52 45 44 5f 43 41 43 48 45 7d  IT_SHARED_CACHE}
7be0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
7bf0: 20 62 75 69 6c 64 73 20 53 51 4c 69 74 65 20 77   builds SQLite w
7c00: 69 74 68 6f 75 74 20 73 75 70 70 6f 72 74 20 66  ithout support f
7c10: 6f 72 20 73 68 61 72 65 64 2d 63 61 63 68 65 20  or shared-cache 
7c20: 6d 6f 64 65 2e 0a 20 20 54 68 65 20 5b 73 71 6c  mode..  The [sql
7c30: 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72  ite3_enable_shar
7c40: 65 64 5f 63 61 63 68 65 28 29 5d 20 69 73 20 6f  ed_cache()] is o
7c50: 6d 69 74 74 65 64 20 61 6c 6f 6e 67 20 77 69 74  mitted along wit
7c60: 68 20 61 20 66 61 69 72 0a 20 20 61 6d 6f 75 6e  h a fair.  amoun
7c70: 74 20 6f 66 20 6c 6f 67 69 63 20 77 69 74 68 69  t of logic withi
7c80: 6e 20 74 68 65 20 42 2d 54 72 65 65 20 73 75 62  n the B-Tree sub
7c90: 73 79 73 74 65 6d 20 61 73 73 6f 63 69 61 74 65  system associate
7ca0: 64 20 77 69 74 68 20 73 68 61 72 65 64 0a 20 20  d with shared.  
7cb0: 63 61 63 68 65 20 6d 61 6e 61 67 65 6d 65 6e 74  cache management
7cc0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
7cd0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
7ce0: 5f 53 55 42 51 55 45 52 59 7d 20 7b 0a 20 20 49  _SUBQUERY} {.  I
7cf0: 66 20 64 65 66 69 6e 65 64 2c 20 73 75 70 70 6f  f defined, suppo
7d00: 72 74 20 66 6f 72 20 73 75 62 2d 73 65 6c 65 63  rt for sub-selec
7d10: 74 73 20 61 6e 64 20 74 68 65 20 49 4e 28 29 20  ts and the IN() 
7d20: 6f 70 65 72 61 74 6f 72 20 61 72 65 20 6f 6d 69  operator are omi
7d30: 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tted..}..COMPILE
7d40: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7d50: 4f 4d 49 54 5f 54 43 4c 5f 56 41 52 49 41 42 4c  OMIT_TCL_VARIABL
7d60: 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6d  E} {.  If this m
7d70: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c  acro is defined,
7d80: 20 74 68 65 6e 20 74 68 65 20 73 70 65 63 69 61   then the specia
7d90: 6c 20 22 24 3c 76 61 72 69 61 62 6c 65 2d 6e 61  l "$<variable-na
7da0: 6d 65 3e 22 20 73 79 6e 74 61 78 0a 20 20 75 73  me>" syntax.  us
7db0: 65 64 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61  ed to automatica
7dc0: 6c 6c 79 20 62 69 6e 64 20 53 51 4c 20 76 61 72  lly bind SQL var
7dd0: 69 61 62 6c 65 73 20 74 6f 20 54 43 4c 20 76 61  iables to TCL va
7de0: 72 69 61 62 6c 65 73 20 69 73 20 6f 6d 69 74 74  riables is omitt
7df0: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
7e00: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
7e10: 49 54 5f 54 45 4d 50 44 42 7d 20 7b 0a 20 20 54  IT_TEMPDB} {.  T
7e20: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
7e30: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 54 45 4d   support for TEM
7e40: 50 20 6f 72 20 54 45 4d 50 4f 52 41 52 59 20 74  P or TEMPORARY t
7e50: 61 62 6c 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ables..}..COMPIL
7e60: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7e70: 5f 4f 4d 49 54 5f 54 52 41 43 45 7d 20 7b 0a 20  _OMIT_TRACE} {. 
7e80: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
7e90: 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74  ts support for t
7ea0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66  he [sqlite3_prof
7eb0: 69 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71  ile()] and.  [sq
7ec0: 6c 69 74 65 33 5f 74 72 61 63 65 28 29 5d 20 69  lite3_trace()] i
7ed0: 6e 74 65 72 66 61 63 65 73 20 61 6e 64 20 74 68  nterfaces and th
7ee0: 65 69 72 20 61 73 73 6f 63 69 61 74 65 64 20 6c  eir associated l
7ef0: 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ogic..}..COMPILE
7f00: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7f10: 4f 4d 49 54 5f 54 52 49 47 47 45 52 7d 20 7b 0a  OMIT_TRIGGER} {.
7f20: 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20    Defining this 
7f30: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70  option omits sup
7f40: 70 6f 72 74 20 66 6f 72 20 54 52 49 47 47 45 52  port for TRIGGER
7f50: 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74 68 65   objects. Neithe
7f60: 72 20 74 68 65 20 0a 20 20 5b 43 52 45 41 54 45  r the .  [CREATE
7f70: 20 54 52 49 47 47 45 52 5d 20 6f 72 20 5b 44 52   TRIGGER] or [DR
7f80: 4f 50 20 54 52 49 47 47 45 52 5d 0a 20 20 63 6f  OP TRIGGER].  co
7f90: 6d 6d 61 6e 64 73 20 61 72 65 20 61 76 61 69 6c  mmands are avail
7fa0: 61 62 6c 65 20 69 6e 20 74 68 69 73 20 63 61 73  able in this cas
7fb0: 65 2c 20 61 6e 64 20 61 74 74 65 6d 70 74 69 6e  e, and attemptin
7fc0: 67 20 74 6f 20 65 78 65 63 75 74 65 0a 20 20 65  g to execute.  e
7fd0: 69 74 68 65 72 20 77 69 6c 6c 20 72 65 73 75 6c  ither will resul
7fe0: 74 20 69 6e 20 61 20 70 61 72 73 65 20 65 72 72  t in a parse err
7ff0: 6f 72 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  or..  This optio
8000: 6e 20 61 6c 73 6f 20 64 69 73 61 62 6c 65 73 20  n also disables 
8010: 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20 5b  enforcement of [
8020: 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73  foreign key cons
8030: 74 72 61 69 6e 74 73 5d 2c 0a 20 20 73 69 6e 63  traints],.  sinc
8040: 65 20 74 68 65 20 63 6f 64 65 20 74 68 61 74 20  e the code that 
8050: 69 6d 70 6c 65 6d 65 6e 74 73 20 74 72 69 67 67  implements trigg
8060: 65 72 73 20 61 6e 64 20 77 68 69 63 68 20 69 73  ers and which is
8070: 20 6f 6d 69 74 74 65 64 20 62 79 20 74 68 69 73   omitted by this
8080: 0a 20 20 6f 70 74 69 6f 6e 20 69 73 20 61 6c 73  .  option is als
8090: 6f 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d  o used to implem
80a0: 65 6e 74 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79  ent [foreign key
80b0: 20 61 63 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f   actions]..}..CO
80c0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
80d0: 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 55 4e 43 41  LITE_OMIT_TRUNCA
80e0: 54 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d  TE_OPTIMIZATION}
80f0: 20 7b 0a 20 20 41 20 64 65 66 61 75 6c 74 20 62   {.  A default b
8100: 75 69 6c 64 20 6f 66 20 53 51 4c 69 74 65 2c 20  uild of SQLite, 
8110: 69 66 20 61 20 5b 44 45 4c 45 54 45 5d 20 73 74  if a [DELETE] st
8120: 61 74 65 6d 65 6e 74 20 68 61 73 20 6e 6f 20 57  atement has no W
8130: 48 45 52 45 20 63 6c 61 75 73 65 0a 20 20 61 6e  HERE clause.  an
8140: 64 20 6f 70 65 72 61 74 65 73 20 6f 6e 20 61 20  d operates on a 
8150: 74 61 62 6c 65 20 77 69 74 68 20 6e 6f 20 74 72  table with no tr
8160: 69 67 67 65 72 73 2c 20 61 6e 20 6f 70 74 69 6d  iggers, an optim
8170: 69 7a 61 74 69 6f 6e 20 6f 63 63 75 72 73 20 74  ization occurs t
8180: 68 61 74 0a 20 20 63 61 75 73 65 73 20 74 68 65  hat.  causes the
8190: 20 44 45 4c 45 54 45 20 74 6f 20 6f 63 63 75 72   DELETE to occur
81a0: 20 62 79 20 64 72 6f 70 70 69 6e 67 20 61 6e 64   by dropping and
81b0: 20 72 65 63 72 65 61 74 69 6e 67 20 74 68 65 20   recreating the 
81c0: 74 61 62 6c 65 2e 20 20 0a 20 20 44 72 6f 70 70  table.  .  Dropp
81d0: 69 6e 67 20 61 6e 64 20 72 65 63 72 65 61 74 69  ing and recreati
81e0: 6e 67 20 61 20 74 61 62 6c 65 20 69 73 20 75 73  ng a table is us
81f0: 75 61 6c 6c 79 20 6d 75 63 68 20 66 61 73 74 65  ually much faste
8200: 72 20 74 68 61 6e 20 64 65 6c 65 74 69 6e 67 0a  r than deleting.
8210: 20 20 74 68 65 20 74 61 62 6c 65 20 63 6f 6e 74    the table cont
8220: 65 6e 74 20 72 6f 77 20 62 79 20 72 6f 77 2e 20  ent row by row. 
8230: 20 54 68 69 73 20 69 73 20 74 68 65 20 22 74 72   This is the "tr
8240: 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74  uncate optimizat
8250: 69 6f 6e 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ion"..}..COMPILE
8260: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
8270: 4f 4d 49 54 5f 55 54 46 31 36 7d 20 7b 0a 20 20  OMIT_UTF16} {.  
8280: 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20 75 73  This macro is us
8290: 65 64 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f  ed to omit suppo
82a0: 72 74 20 66 6f 72 20 55 54 46 31 36 20 74 65 78  rt for UTF16 tex
82b0: 74 20 65 6e 63 6f 64 69 6e 67 2e 20 57 68 65 6e  t encoding. When
82c0: 20 74 68 69 73 20 69 73 0a 20 20 64 65 66 69 6e   this is.  defin
82d0: 65 64 20 61 6c 6c 20 41 50 49 20 66 75 6e 63 74  ed all API funct
82e0: 69 6f 6e 73 20 74 68 61 74 20 72 65 74 75 72 6e  ions that return
82f0: 20 6f 72 20 61 63 63 65 70 74 20 55 54 46 31 36   or accept UTF16
8300: 20 65 6e 63 6f 64 65 64 20 74 65 78 74 20 61 72   encoded text ar
8310: 65 0a 20 20 75 6e 61 76 61 69 6c 61 62 6c 65 2e  e.  unavailable.
8320: 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73   These functions
8330: 20 63 61 6e 20 62 65 20 69 64 65 6e 74 69 66 69   can be identifi
8340: 65 64 20 62 79 20 74 68 65 20 66 61 63 74 20 74  ed by the fact t
8350: 68 61 74 20 74 68 65 79 20 65 6e 64 0a 20 20 77  hat they end.  w
8360: 69 74 68 20 27 31 36 27 2c 20 66 6f 72 20 65 78  ith '16', for ex
8370: 61 6d 70 6c 65 20 5b 73 71 6c 69 74 65 33 5f 70  ample [sqlite3_p
8380: 72 65 70 61 72 65 31 36 28 29 5d 2c 20 5b 73 71  repare16()], [sq
8390: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
83a0: 74 31 36 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71  t16()] and.  [sq
83b0: 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
83c0: 36 28 29 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  6()]..}..COMPILE
83d0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
83e0: 4f 4d 49 54 5f 56 41 43 55 55 4d 7d 20 7b 0a 20  OMIT_VACUUM} {. 
83f0: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
8400: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  n is defined, th
8410: 65 20 5b 56 41 43 55 55 4d 5d 0a 20 20 63 6f 6d  e [VACUUM].  com
8420: 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c  mand is not incl
8430: 75 64 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72  uded in the libr
8440: 61 72 79 2e 0a 20 20 45 78 65 63 75 74 69 6e 67  ary..  Executing
8450: 20 61 20 5b 56 41 43 55 55 4d 5d 20 73 74 61 74   a [VACUUM] stat
8460: 65 6d 65 6e 74 20 63 61 75 73 65 73 20 0a 20 20  ement causes .  
8470: 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d  a parse error..}
8480: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8490: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49   {SQLITE_OMIT_VI
84a0: 45 57 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67  EW} {.  Defining
84b0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   this option omi
84c0: 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 56  ts support for V
84d0: 49 45 57 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69  IEW objects. Nei
84e0: 74 68 65 72 20 74 68 65 20 0a 20 20 5b 43 52 45  ther the .  [CRE
84f0: 41 54 45 20 56 49 45 57 5d 20 6e 6f 72 20 74 68  ATE VIEW] nor th
8500: 65 20 5b 44 52 4f 50 20 56 49 45 57 5d 0a 20 20  e [DROP VIEW].  
8510: 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61 76 61  commands are ava
8520: 69 6c 61 62 6c 65 20 69 6e 20 74 68 69 73 20 63  ilable in this c
8530: 61 73 65 2c 20 61 6e 64 0a 20 20 61 74 74 65 6d  ase, and.  attem
8540: 70 74 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65  pting to execute
8550: 20 65 69 74 68 65 72 20 77 69 6c 6c 20 72 65 73   either will res
8560: 75 6c 74 20 69 6e 20 61 20 70 61 72 73 65 20 65  ult in a parse e
8570: 72 72 6f 72 2e 0a 0a 20 20 57 41 52 4e 49 4e 47  rror...  WARNING
8580: 3a 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f 20  : If this macro 
8590: 69 73 20 64 65 66 69 6e 65 64 2c 20 69 74 20 77  is defined, it w
85a0: 69 6c 6c 20 6e 6f 74 20 62 65 20 70 6f 73 73 69  ill not be possi
85b0: 62 6c 65 20 74 6f 20 6f 70 65 6e 20 61 20 64 61  ble to open a da
85c0: 74 61 62 61 73 65 0a 20 20 66 6f 72 20 77 68 69  tabase.  for whi
85d0: 63 68 20 74 68 65 20 73 63 68 65 6d 61 20 63 6f  ch the schema co
85e0: 6e 74 61 69 6e 73 20 56 49 45 57 20 6f 62 6a 65  ntains VIEW obje
85f0: 63 74 73 2e 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  cts. .}..COMPILE
8600: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
8610: 4f 4d 49 54 5f 56 49 52 54 55 41 4c 54 41 42 4c  OMIT_VIRTUALTABL
8620: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
8630: 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74  on omits support
8640: 20 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74 65   for the [sqlite
8650: 33 5f 76 74 61 62 20 7c 20 56 69 72 74 75 61 6c  3_vtab | Virtual
8660: 20 54 61 62 6c 65 5d 0a 20 20 6d 65 63 68 61 6e   Table].  mechan
8670: 69 73 6d 20 69 6e 20 53 51 4c 69 74 65 2e 0a 7d  ism in SQLite..}
8680: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8690: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 41   {SQLITE_OMIT_WA
86a0: 4c 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  L} {.  This opti
86b0: 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 22 5b 77  on omits the "[w
86c0: 72 69 74 65 2d 61 68 65 61 64 20 6c 6f 67 5d 22  rite-ahead log]"
86d0: 20 28 61 2e 6b 2e 61 2e 20 22 5b 57 41 4c 5d 22   (a.k.a. "[WAL]"
86e0: 29 20 63 61 70 61 62 69 6c 69 74 79 2e 0a 7d 0a  ) capability..}.
86f0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
8700: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 53 44  {SQLITE_OMIT_WSD
8710: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
8720: 6e 73 20 62 75 69 6c 64 73 20 61 20 76 65 72 73  ns builds a vers
8730: 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74  ion of the SQLit
8740: 65 20 6c 69 62 72 61 72 79 20 74 68 61 74 20 63  e library that c
8750: 6f 6e 74 61 69 6e 73 20 6e 6f 0a 20 20 57 72 69  ontains no.  Wri
8760: 74 61 62 6c 65 20 53 74 61 74 69 63 20 44 61 74  table Static Dat
8770: 61 20 28 57 53 44 29 2e 20 20 57 53 44 20 69 73  a (WSD).  WSD is
8780: 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65   global variable
8790: 73 20 61 6e 64 2f 6f 72 20 73 74 61 74 69 63 0a  s and/or static.
87a0: 20 20 76 61 72 69 61 62 6c 65 73 2e 20 20 53 6f    variables.  So
87b0: 6d 65 20 70 6c 61 74 66 6f 72 6d 73 20 64 6f 20  me platforms do 
87c0: 6e 6f 74 20 73 75 70 70 6f 72 74 20 57 53 44 2c  not support WSD,
87d0: 20 61 6e 64 20 74 68 69 73 20 6f 70 74 69 6f 6e   and this option
87e0: 20 69 73 20 6e 65 63 65 73 73 61 72 79 0a 20 20   is necessary.  
87f0: 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 53 51 4c  in order for SQL
8800: 69 74 65 20 74 6f 20 77 6f 72 6b 20 74 68 6f 73  ite to work thos
8810: 65 20 70 6c 61 74 66 6f 72 6d 73 2e 20 20 0a 0a  e platforms.  ..
8820: 20 20 55 6e 6c 69 6b 65 20 6f 74 68 65 72 20 4f    Unlike other O
8830: 4d 49 54 20 6f 70 74 69 6f 6e 73 20 77 68 69 63  MIT options whic
8840: 68 20 6d 61 6b 65 20 74 68 65 20 53 51 4c 69 74  h make the SQLit
8850: 65 20 6c 69 62 72 61 72 79 20 73 6d 61 6c 6c 65  e library smalle
8860: 72 2c 0a 20 20 74 68 69 73 20 6f 70 74 69 6f 6e  r,.  this option
8870: 20 61 63 74 75 61 6c 6c 79 20 69 6e 63 72 65 61   actually increa
8880: 73 65 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20  ses the size of 
8890: 53 51 4c 69 74 65 20 61 6e 64 20 6d 61 6b 65 73  SQLite and makes
88a0: 20 69 74 20 72 75 6e 0a 20 20 61 20 6c 69 74 74   it run.  a litt
88b0: 6c 65 20 73 6c 6f 77 65 72 2e 20 20 4f 6e 6c 79  le slower.  Only
88c0: 20 75 73 65 20 74 68 69 73 20 6f 70 74 69 6f 6e   use this option
88d0: 20 69 66 20 53 51 4c 69 74 65 20 69 73 20 62 65   if SQLite is be
88e0: 69 6e 67 20 62 75 69 6c 74 20 66 6f 72 20 61 6e  ing built for an
88f0: 0a 20 20 65 6d 62 65 64 64 65 64 20 74 61 72 67  .  embedded targ
8900: 65 74 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74  et that does not
8910: 20 73 75 70 70 6f 72 74 20 57 53 44 2e 0a 7d 0a   support WSD..}.
8920: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
8930: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 58 46 45  {SQLITE_OMIT_XFE
8940: 52 5f 4f 50 54 7d 20 7b 0a 20 20 54 68 69 73 20  R_OPT} {.  This 
8950: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70  option omits sup
8960: 70 6f 72 74 20 66 6f 72 20 6f 70 74 69 6d 69 7a  port for optimiz
8970: 61 74 69 6f 6e 73 20 74 68 61 74 20 68 65 6c 70  ations that help
8980: 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 6f 66   statements.  of
8990: 20 74 68 65 20 66 6f 72 6d 20 22 49 4e 53 45 52   the form "INSER
89a0: 54 20 49 4e 54 4f 20 2e 2e 2e 20 53 45 4c 45 43  T INTO ... SELEC
89b0: 54 20 2e 2e 2e 22 20 72 75 6e 20 66 61 73 74 65  T ..." run faste
89c0: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
89d0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 5a 45 52  TION {SQLITE_ZER
89e0: 4f 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54 68  O_MALLOC} {.  Th
89f0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
8a00: 62 6f 74 68 20 74 68 65 20 5b 64 65 66 61 75 6c  both the [defaul
8a10: 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  t memory allocat
8a20: 6f 72 5d 20 61 6e 64 20 74 68 65 0a 20 20 5b 64  or] and the.  [d
8a30: 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79 20  ebugging memory 
8a40: 61 6c 6c 6f 63 61 74 6f 72 5d 20 66 72 6f 6d 20  allocator] from 
8a50: 74 68 65 20 62 75 69 6c 64 20 61 6e 64 20 73 75  the build and su
8a60: 62 73 74 69 74 75 74 65 73 20 61 20 73 74 75 62  bstitutes a stub
8a70: 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  .  memory alloca
8a80: 74 6f 72 20 74 68 61 74 20 61 6c 77 61 79 73 20  tor that always 
8a90: 66 61 69 6c 73 2e 20 20 53 51 4c 69 74 65 20 77  fails.  SQLite w
8aa0: 69 6c 6c 20 6e 6f 74 20 72 75 6e 20 77 69 74 68  ill not run with
8ab0: 20 74 68 69 73 0a 20 20 73 74 75 62 20 6d 65 6d   this.  stub mem
8ac0: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 73 69  ory allocator si
8ad0: 6e 63 65 20 69 74 20 77 69 6c 6c 20 62 65 20 75  nce it will be u
8ae0: 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74  nable to allocat
8af0: 65 20 6d 65 6d 6f 72 79 2e 20 20 42 75 74 0a 20  e memory.  But. 
8b00: 20 74 68 69 73 20 73 74 75 62 20 63 61 6e 20 62   this stub can b
8b10: 65 20 72 65 70 6c 61 63 65 64 20 61 74 20 73 74  e replaced at st
8b20: 61 72 74 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20  art-time using. 
8b30: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
8b40: 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ]([SQLITE_CONFIG
8b50: 5f 4d 41 4c 4c 4f 43 5d 2c 2e 2e 2e 29 20 6f 72  _MALLOC],...) or
8b60: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  .  [sqlite3_conf
8b70: 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ig]([SQLITE_CONF
8b80: 49 47 5f 48 45 41 50 5d 2c 2e 2e 2e 29 2e 0a 20  IG_HEAP],...).. 
8b90: 20 53 6f 20 74 68 65 20 6e 65 74 20 65 66 66 65   So the net effe
8ba0: 63 74 20 6f 66 20 74 68 69 73 20 63 6f 6d 70 69  ct of this compi
8bb0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
8bc0: 73 20 74 68 61 74 20 69 74 20 61 6c 6c 6f 77 73  s that it allows
8bd0: 20 53 51 4c 69 74 65 0a 20 20 74 6f 20 62 65 20   SQLite.  to be 
8be0: 63 6f 6d 70 69 6c 65 64 20 61 6e 64 20 6c 69 6e  compiled and lin
8bf0: 6b 65 64 20 61 67 61 69 6e 73 74 20 61 20 73 79  ked against a sy
8c00: 73 74 65 6d 20 6c 69 62 72 61 72 79 20 74 68 61  stem library tha
8c10: 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f  t does not suppo
8c20: 72 74 0a 20 20 6d 61 6c 6c 6f 63 28 29 2c 20 66  rt.  malloc(), f
8c30: 72 65 65 28 29 2c 20 61 6e 64 2f 6f 72 20 72 65  ree(), and/or re
8c40: 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 3c 2f 74 63  alloc()..}..</tc
8c50: 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 64 65 62 75  l>.<a name="debu
8c60: 67 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c  goptions"></a>.<
8c70: 68 32 3e 31 2e 37 20 41 6e 61 6c 79 73 69 73 20  h2>1.7 Analysis 
8c80: 61 6e 64 20 44 65 62 75 67 67 69 6e 67 20 4f 70  and Debugging Op
8c90: 74 69 6f 6e 73 3c 2f 68 32 3e 0a 3c 74 63 6c 3e  tions</h2>.<tcl>
8ca0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8cb0: 20 7b 53 51 4c 49 54 45 5f 44 45 42 55 47 7d 20   {SQLITE_DEBUG} 
8cc0: 7b 0a 20 20 54 68 65 20 53 51 4c 69 74 65 20 73  {.  The SQLite s
8cd0: 6f 75 72 63 65 20 63 6f 64 65 20 63 6f 6e 74 61  ource code conta
8ce0: 69 6e 73 20 6c 69 74 65 72 61 6c 6c 79 20 74 68  ins literally th
8cf0: 6f 75 73 61 6e 64 73 20 6f 66 20 61 73 73 65 72  ousands of asser
8d00: 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73 0a 20  t() statements. 
8d10: 20 75 73 65 64 20 74 6f 20 76 65 72 69 66 79 20   used to verify 
8d20: 69 6e 74 65 72 6e 61 6c 20 61 73 73 75 6d 70 74  internal assumpt
8d30: 69 6f 6e 73 20 61 6e 64 20 73 75 62 72 6f 75 74  ions and subrout
8d40: 69 6e 65 20 70 72 65 63 6f 6e 64 69 74 69 6f 6e  ine precondition
8d50: 73 20 61 6e 64 0a 20 20 70 6f 73 74 63 6f 6e 64  s and.  postcond
8d60: 69 74 69 6f 6e 73 2e 20 20 54 68 65 73 65 20 61  itions.  These a
8d70: 73 73 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e  ssert() statemen
8d80: 74 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20  ts are normally 
8d90: 74 75 72 6e 65 64 20 6f 66 66 0a 20 20 28 74 68  turned off.  (th
8da0: 65 79 20 67 65 6e 65 72 61 74 65 20 6e 6f 20 63  ey generate no c
8db0: 6f 64 65 29 20 73 69 6e 63 65 20 74 75 72 6e 69  ode) since turni
8dc0: 6e 67 20 74 68 65 6d 20 6f 6e 20 6d 61 6b 65 73  ng them on makes
8dd0: 20 53 51 4c 69 74 65 20 72 75 6e 20 61 70 70 72   SQLite run appr
8de0: 6f 78 69 6d 61 74 65 6c 79 0a 20 20 74 68 72 65  oximately.  thre
8df0: 65 20 74 69 6d 65 73 20 73 6c 6f 77 65 72 2e 20  e times slower. 
8e00: 20 42 75 74 20 66 6f 72 20 74 65 73 74 69 6e 67   But for testing
8e10: 20 61 6e 64 20 61 6e 61 6c 79 73 69 73 2c 20 69   and analysis, i
8e20: 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20 74  t is useful to t
8e30: 75 72 6e 0a 20 20 74 68 65 20 61 73 73 65 72 74  urn.  the assert
8e40: 28 29 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e  () statements on
8e50: 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 44 45  .  The SQLITE_DE
8e60: 42 55 47 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  BUG compile-time
8e70: 20 6f 70 74 69 6f 6e 20 64 6f 65 73 20 74 68 69   option does thi
8e80: 73 2e 0a 20 20 53 51 4c 49 54 45 5f 44 45 42 55  s..  SQLITE_DEBU
8e90: 47 20 61 6c 73 6f 20 74 75 72 6e 73 20 6f 6e 20  G also turns on 
8ea0: 73 6f 6d 65 20 6f 74 68 65 72 20 64 65 62 75 67  some other debug
8eb0: 67 69 6e 67 20 66 65 61 74 75 72 65 73 2e 0a 7d  ging features..}
8ec0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8ed0: 20 7b 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42 55   {SQLITE_MEMDEBU
8ee0: 47 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  G} {.  The SQLIT
8ef0: 45 5f 4d 45 4d 44 45 42 55 47 20 6f 70 74 69 6f  E_MEMDEBUG optio
8f00: 6e 20 63 61 75 73 65 73 20 61 6e 20 69 6e 73 74  n causes an inst
8f10: 72 75 6d 65 6e 74 65 64 20 0a 20 20 5b 64 65 62  rumented .  [deb
8f20: 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c  ugging memory al
8f30: 6c 6f 63 61 74 6f 72 5d 0a 20 20 74 6f 20 62 65  locator].  to be
8f40: 20 75 73 65 64 20 61 73 20 74 68 65 20 64 65 66   used as the def
8f50: 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ault memory allo
8f60: 63 61 74 6f 72 20 77 69 74 68 69 6e 20 53 51 4c  cator within SQL
8f70: 69 74 65 2e 20 20 54 68 65 0a 20 20 69 6e 73 74  ite.  The.  inst
8f80: 72 75 6d 65 6e 74 65 64 20 6d 65 6d 6f 72 79 20  rumented memory 
8f90: 61 6c 6c 6f 63 61 74 6f 72 20 63 68 65 63 6b 73  allocator checks
8fa0: 20 66 6f 72 20 6d 69 73 75 73 65 20 6f 66 20 64   for misuse of d
8fb0: 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c 6c 6f 63  ynamically alloc
8fc0: 61 74 65 64 0a 20 20 6d 65 6d 6f 72 79 2e 20 20  ated.  memory.  
8fd0: 45 78 61 6d 70 6c 65 73 20 6f 66 20 6d 69 73 75  Examples of misu
8fe0: 73 65 20 69 6e 63 6c 75 64 65 20 75 73 69 6e 67  se include using
8ff0: 20 6d 65 6d 6f 72 79 20 61 66 74 65 72 20 69 74   memory after it
9000: 20 69 73 20 66 72 65 65 64 2c 0a 20 20 77 72 69   is freed,.  wri
9010: 74 69 6e 67 20 6f 66 66 20 74 68 65 20 65 6e 64  ting off the end
9020: 73 20 6f 66 20 61 20 6d 65 6d 6f 72 79 20 61 6c  s of a memory al
9030: 6c 6f 63 61 74 69 6f 6e 2c 20 66 72 65 65 69 6e  location, freein
9040: 67 20 6d 65 6d 6f 72 79 20 6e 6f 74 20 70 72 65  g memory not pre
9050: 76 69 6f 75 73 6c 79 0a 20 20 6f 62 74 61 69 6e  viously.  obtain
9060: 65 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6d 6f  ed from the memo
9070: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 6f 72  ry allocator, or
9080: 20 66 61 69 6c 69 6e 67 20 74 6f 20 69 6e 69 74   failing to init
9090: 69 61 6c 69 7a 65 20 6e 65 77 6c 79 0a 20 20 61  ialize newly.  a
90a0: 6c 6c 6f 63 61 74 65 64 20 6d 65 6d 6f 72 79 2e  llocated memory.
90b0: 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a                 .}..</tcl>.